src/api/dg/dangerInfo/index.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/api/dg/dangerInfo/types.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/api/dg/dangerTotal/index.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/api/dg/dangerTotal/types.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/dg/danger/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/dg/danger/total.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
vite.config.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/dg/dangerInfo/index.ts
New file @@ -0,0 +1,76 @@ import request from '@/utils/request'; import { AxiosPromise } from 'axios'; import { DangerInfoVO, DangerInfoForm, DangerInfoQuery } from '@/api/dg/dangerInfo/types'; /** * 查询安全隐患信息列表 * @param query * @returns {*} */ export const listDangerInfo = (query?: DangerInfoQuery): AxiosPromise<DangerInfoVO[]> => { return request({ url: '/demo/dangerInfo/list', method: 'get', params: query }); }; /** * 查询安全隐患类型条件 * @param query * @returns {*} */ // export const dangerTypes = (): AxiosPromise<String[]> => { // return request({ // url: '/demo/dangerInfo/getDangerType', // method: 'get' // }); // }; /** * 查询安全隐患信息详细 * @param id */ export const getDangerInfo = (id: string | number): AxiosPromise<DangerInfoVO> => { return request({ url: '/demo/dangerInfo/' + id, method: 'get' }); }; /** * 新增安全隐患信息 * @param data */ export const addDangerInfo = (data: DangerInfoForm) => { return request({ url: '/demo/dangerInfo', method: 'post', data: data }); }; /** * 修改安全隐患信息 * @param data */ export const updateDangerInfo = (data: DangerInfoForm) => { return request({ url: '/demo/dangerInfo', method: 'put', data: data }); }; /** * 删除安全隐患信息 * @param id */ export const delDangerInfo = (id: string | number | Array<string | number>) => { return request({ url: '/demo/dangerInfo/' + id, method: 'delete' }); }; src/api/dg/dangerInfo/types.ts
New file @@ -0,0 +1,116 @@ export interface DangerInfoVO { /** * 编号 */ id: string | number; /** * 通报时间 */ notificationTime: string; /** * 隐患类型 */ dangerType: string; /** * 责任单位 */ accountabilityUnit: string; /** * 整改时限 */ rectificationTimeLimit: string; /** * 完成情况 */ performance: string; /** * 启用状态 1启用 2未启用 */ status: number; } export interface DangerInfoForm extends BaseEntity { /** * 编号 */ id?: string | number; /** * 通报时间 */ notificationTime?: string; /** * 隐患类型 */ dangerType?: string; /** * 责任单位 */ accountabilityUnit?: string; /** * 整改时限 */ rectificationTimeLimit?: string; /** * 完成情况 */ performance?: string; /** * 启用状态 1启用 2未启用 */ status?: number; } export interface DangerInfoQuery extends PageQuery { /** * 通报时间 */ notificationTime?: string; /** * 隐患类型 */ dangerType?: string; /** * 责任单位 */ accountabilityUnit?: string; /** * 整改时限 */ rectificationTimeLimit?: string; /** * 完成情况 */ performance?: string; /** * 启用状态 1启用 2未启用 */ status?: number; /** * 日期范围参数 */ params?: any; } src/api/dg/dangerTotal/index.ts
New file @@ -0,0 +1,63 @@ import request from '@/utils/request'; import { AxiosPromise } from 'axios'; import { DangerTotalVO, DangerTotalForm, DangerTotalQuery } from '@/api/demo/dangerTotal/types'; /** * 查询安全隐患统计列表 * @param query * @returns {*} */ export const listDangerTotal = (query?: DangerTotalQuery): AxiosPromise<DangerTotalVO[]> => { return request({ url: '/demo/dangerTotal/list', method: 'get', params: query }); }; /** * 查询安全隐患统计详细 * @param id */ export const getDangerTotal = (id: string | number): AxiosPromise<DangerTotalVO> => { return request({ url: '/demo/dangerTotal/' + id, method: 'get' }); }; /** * 新增安全隐患统计 * @param data */ export const addDangerTotal = (data: DangerTotalForm) => { return request({ url: '/demo/dangerTotal', method: 'post', data: data }); }; /** * 修改安全隐患统计 * @param data */ export const updateDangerTotal = (data: DangerTotalForm) => { return request({ url: '/demo/dangerTotal', method: 'put', data: data }); }; /** * 删除安全隐患统计 * @param id */ export const delDangerTotal = (id: string | number | Array<string | number>) => { return request({ url: '/demo/dangerTotal/' + id, method: 'delete' }); }; src/api/dg/dangerTotal/types.ts
New file @@ -0,0 +1,131 @@ export interface DangerTotalVO { /** * 编号 */ id: string | number; /** * 镇街名称 */ townStreetName: string; /** * 年度/月度 1年度 2月度 */ period: number; /** * 周期 */ periodDate: string; /** * 发现安全隐患 */ findSecurityRisks: number; /** * 下发通知书 */ issueNotice: number; /** * 处置安全隐患 */ dealWithSecurityRisks: number; /** * 启用状态 1启用 2未启用 */ status: number; } export interface DangerTotalForm extends BaseEntity { /** * 编号 */ id?: string | number; /** * 镇街名称 */ townStreetName?: string; /** * 年度/月度 1年度 2月度 */ period?: number; /** * 周期 */ periodDate?: string; /** * 发现安全隐患 */ findSecurityRisks?: number; /** * 下发通知书 */ issueNotice?: number; /** * 处置安全隐患 */ dealWithSecurityRisks?: number; /** * 启用状态 1启用 2未启用 */ status?: number; } export interface DangerTotalQuery extends PageQuery { /** * 镇街名称 */ townStreetName?: string; /** * 年度/月度 1年度 2月度 */ period?: number; /** * 周期 */ periodDate?: string; /** * 发现安全隐患 */ findSecurityRisks?: number; /** * 下发通知书 */ issueNotice?: number; /** * 处置安全隐患 */ dealWithSecurityRisks?: number; /** * 启用状态 1启用 2未启用 */ status?: number; /** * 日期范围参数 */ params?: any; } src/views/dg/danger/index.vue
New file @@ -0,0 +1,351 @@ <template> <div class="p-2"> <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick"> <el-tab-pane label="安全隐患" name="first"></el-tab-pane> <el-tab-pane label="隐患统计" name="second"></el-tab-pane> </el-tabs> <div v-show="activeName=='first'"> <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave"> <div class="search" v-show="showSearch"> <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px"> <el-form-item label="隐患类型" prop="notificationTime"> <el-select v-model="queryParams.dangerType" placeholder="请选择" clearable style="width: 240px" @keyup.enter="handleQuery" > <el-option v-for="item in dangerTypes" :key="item.dangerType" :label="item.dangerType" :value="item.dangerType"/> </el-select> </el-form-item> <el-form-item label="责任单位" prop="accountabilityUnit"> <el-input v-model="queryParams.accountabilityUnit" placeholder="请输入责任单位" clearable style="width: 240px" @keyup.enter="handleQuery" /> </el-form-item> <el-form-item label="状态" prop="status"> <el-select v-model="queryParams.status" placeholder="请选择" clearable style="width: 240px" @keyup.enter="handleQuery" > <el-option key="1" label="已启用" value="1" /> <el-option key="2" label="已禁用" value="2" /> </el-select> </el-form-item> <el-form-item> <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> <el-button icon="Refresh" @click="resetQuery">重置</el-button> </el-form-item> </el-form> </div> </transition> <el-card shadow="never"> <template #header> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['demo:dangerInfo:add']">新增</el-button> </el-col> <el-col :span="1.5"> <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['demo:dangerInfo:edit']">修改</el-button> </el-col> <el-col :span="1.5"> <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['demo:dangerInfo:remove']">删除</el-button> </el-col> <el-col :span="1.5"> <el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['demo:dangerInfo:export']">导出</el-button> </el-col> <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> </el-row> </template> <el-table v-loading="loading" :data="dangerInfoList" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55" align="center" /> <el-table-column label="序号" align="center" type="index" v-if="true" width="60" /> <el-table-column label="通报时间" align="center" prop="notificationTime" /> <el-table-column label="隐患类型" align="center" prop="dangerType" /> <el-table-column label="责任单位" align="center" prop="accountabilityUnit" /> <el-table-column label="整改时限" align="center" prop="rectificationTimeLimit" /> <el-table-column label="完成情况" align="center" prop="performance" /> <el-table-column label="状态" align="center" prop="status"> <template #default="scope"> <span v-show="scope.row['status'] == 1">已启用</span> <span v-show="scope.row['status'] == 2" style="color: rgba(227, 70,101);">已禁用</span> </template> </el-table-column> <el-table-column label="创建时间" align="center" prop="createTime" /> <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template #default="scope"> <el-tooltip content="修改" placement="top"> <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['demo:dangerInfo:edit']"></el-button> </el-tooltip> <el-tooltip content="删除" placement="top"> <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['demo:dangerInfo:remove']"></el-button> </el-tooltip> </template> </el-table-column> </el-table> <pagination v-show="total>0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" /> </el-card> <!-- 添加或修改安全隐患信息对话框 --> <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body> <el-form ref="dangerInfoFormRef" :model="form" :rules="rules" label-width="80px"> <el-form-item label="通报时间" prop="notificationTime"> <el-date-picker v-model="form.notificationTime" type="date" value-format="YYYY-MM-DD" placeholder="请选择通报时间" /> </el-form-item> <el-form-item label="隐患类型" prop="dangerType"> <el-input v-model="form.dangerType" placeholder="请输入隐患类型" /> </el-form-item> <el-form-item label="责任单位" prop="accountabilityUnit"> <el-input v-model="form.accountabilityUnit" placeholder="请输入责任单位" /> </el-form-item> <el-form-item label="整改时限" prop="rectificationTimeLimit"> <el-date-picker v-model="form.rectificationTimeLimit" type="date" value-format="YYYY-MM-DD" placeholder="请选择整改时限" /> </el-form-item> <el-form-item label="完成情况" prop="performance"> <el-input v-model="form.performance" placeholder="请输入完成情况" /> </el-form-item> <el-form-item label="状态" prop="status"> <el-select v-model="form.status" placeholder="请选择"> <el-option key="1" label="已启用" :value="1" /> <el-option key="2" label="已禁用" :value="2" /> </el-select> </el-form-item> <el-upload label="上传图片" v-model:file-list="fileList" action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15" list-type="picture-card" :on-preview="handlePictureCardPreview" :on-remove="handleRemove" > <el-icon><Plus /></el-icon> </el-upload> <el-dialog v-model="dialogVisible"> <img w-full :src="dialogImageUrl" alt="Preview Image" /> </el-dialog> </el-form> <template #footer> <div class="dialog-footer"> <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button> <el-button @click="cancel">取 消</el-button> </div> </template> </el-dialog> </div> <div v-show="activeName=='second'"> 2 </div> </div> </template> <script setup name="DangerInfo" lang="ts"> import { listDangerInfo, getDangerInfo, delDangerInfo, addDangerInfo, updateDangerInfo } from '@/api/dg/dangerInfo'; import { DangerInfoVO, DangerInfoQuery, DangerInfoForm } from '@/api/dg/dangerInfo/types'; import type { TabsPaneContext, UploadProps, UploadUserFile } from "element-plus"; const fileList = ref<UploadUserFile[]>([]) const dialogImageUrl = ref('') const dialogVisible = ref(false) const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => { console.log(uploadFile, uploadFiles) } const handlePictureCardPreview: UploadProps['onPreview'] = (uploadFile) => { dialogImageUrl.value = uploadFile.url! dialogVisible.value = true } const activeName = ref('first') const handleClick = (tab: TabsPaneContext) => { tab.props.label } const { proxy } = getCurrentInstance() as ComponentInternalInstance; const activeIndex = ref('1') const activeIndex2 = ref('1') const handleSelect = (key: string, keyPath: string[]) => { console.log(key, keyPath) } const dangerInfoList = ref<DangerInfoVO[]>([]); const buttonLoading = ref(false); const loading = ref(true); const showSearch = ref(true); const ids = ref<Array<string | number>>([]); const single = ref(true); const multiple = ref(true); const total = ref(0); const queryFormRef = ref<ElFormInstance>(); const dangerInfoFormRef = ref<ElFormInstance>(); const dialog = reactive<DialogOption>({ visible: false, title: '' }); const dangerTypes = [ { dangerType: '道路隐患' }]; const initFormData: DangerInfoForm = { id: undefined, notificationTime: undefined, dangerType: undefined, accountabilityUnit: undefined, rectificationTimeLimit: undefined, performance: undefined, status: 1, } const data = reactive<PageData<DangerInfoForm, DangerInfoQuery>>({ form: {...initFormData}, queryParams: { pageNum: 1, pageSize: 10, notificationTime: undefined, dangerType: undefined, accountabilityUnit: undefined, rectificationTimeLimit: undefined, performance: undefined, status: undefined, params: { } }, rules: { id: [ { required: true, message: "编号不能为空", trigger: "blur" } ], notificationTime: [ { required: true, message: "通报时间不能为空", trigger: "blur" } ], dangerType: [ { required: true, message: "隐患类型不能为空", trigger: "change" } ], accountabilityUnit: [ { required: true, message: "责任单位不能为空", trigger: "blur" } ], rectificationTimeLimit: [ { required: true, message: "整改时限不能为空", trigger: "blur" } ], performance: [ { required: true, message: "完成情况不能为空", trigger: "blur" } ], status: [ { required: true, message: "启用状态 1启用 2未启用不能为空", trigger: "change" } ], periodName: [ { required: true, message: "周期不能为空", trigger: "blur" } ], periodYear: [ { required: true, message: "周期年不能为空", trigger: "blur" } ], periodMonth: [ { required: true, message: "周期月不能为空", trigger: "blur" } ] } }); const { queryParams, form, rules } = toRefs(data); /** 查询安全隐患信息列表 */ const getList = async () => { loading.value = true; const res = await listDangerInfo(queryParams.value); dangerInfoList.value = res.rows; total.value = res.total; loading.value = false; } /** 查询安全隐患类型查询条件 */ const getDangerTypes = async () => { // dangerTypes.value = await getDangerTypes(); } /** 取消按钮 */ const cancel = () => { reset(); dialog.visible = false; } /** 表单重置 */ const reset = () => { form.value = {...initFormData}; dangerInfoFormRef.value?.resetFields(); } /** 搜索按钮操作 */ const handleQuery = () => { queryParams.value.pageNum = 1; getList(); } /** 重置按钮操作 */ const resetQuery = () => { queryFormRef.value?.resetFields(); handleQuery(); } /** 多选框选中数据 */ const handleSelectionChange = (selection: DangerInfoVO[]) => { ids.value = selection.map(item => item.id); single.value = selection.length != 1; multiple.value = !selection.length; } /** 新增按钮操作 */ const handleAdd = () => { reset(); dialog.visible = true; dialog.title = "添加安全隐患信息"; } /** 修改按钮操作 */ const handleUpdate = async (row?: DangerInfoVO) => { reset(); const _id = row?.id || ids.value[0] const res = await getDangerInfo(_id); Object.assign(form.value, res.data); dialog.visible = true; dialog.title = "修改安全隐患信息"; } /** 提交按钮 */ const submitForm = () => { dangerInfoFormRef.value?.validate(async (valid: boolean) => { if (valid) { buttonLoading.value = true; if (form.value.id) { await updateDangerInfo(form.value).finally(() => buttonLoading.value = false); } else { await addDangerInfo(form.value).finally(() => buttonLoading.value = false); } proxy?.$modal.msgSuccess("修改成功"); dialog.visible = false; await getList(); } }); } /** 删除按钮操作 */ const handleDelete = async (row?: DangerInfoVO) => { if(row?.status == 1) { proxy?.$modal.msgWarning("当前为已启用状态,不支持删除"); return; } const _ids = row?.id || ids.value; await proxy?.$modal.confirm('是否确认删除安全隐患信息编号为"' + _ids + '"的数据项?').finally(() => loading.value = false); await delDangerInfo(_ids); proxy?.$modal.msgSuccess("删除成功"); await getList(); } /** 导出按钮操作 */ const handleExport = () => { proxy?.download('demo/dangerInfo/export', { ...queryParams.value }, `dangerInfo_${new Date().getTime()}.xlsx`) } onMounted(() => { getList(); getDangerTypes(); }); </script> src/views/dg/danger/total.vue
New file @@ -0,0 +1,311 @@ <template> <div class="p-2"> <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave"> <div class="search" v-show="showSearch"> <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px"> <el-form-item label="镇街名称" prop="townStreetName"> <el-input v-model="queryParams.townStreetName" placeholder="请输入镇街名称" clearable style="width: 240px" @keyup.enter="handleQuery" /> </el-form-item> <el-form-item label="统计周期" prop="periodDate"> <el-input v-model="queryParams.periodDate" placeholder="请输入统计周期" clearable style="width: 240px" @keyup.enter="handleQuery" /> </el-form-item> <el-form-item label="状态" prop="status"> <el-select v-model="queryParams.status" placeholder="请选择" clearable style="width: 240px" @keyup.enter="handleQuery" > <el-option key="1" label="已启用" value="1" /> <el-option key="2" label="已禁用" value="2" /> </el-select> </el-form-item> <el-form-item> <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> <el-button icon="Refresh" @click="resetQuery">重置</el-button> </el-form-item> </el-form> </div> </transition> <el-card shadow="never"> <template #header> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['demo:dangerTotal:add']">新增</el-button> </el-col> <el-col :span="1.5"> <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['demo:dangerTotal:edit']">修改</el-button> </el-col> <el-col :span="1.5"> <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['demo:dangerTotal:remove']">删除</el-button> </el-col> <el-col :span="1.5"> <el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['demo:dangerTotal:export']">导出</el-button> </el-col> <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> </el-row> </template> <el-table v-loading="loading" :data="dangerTotalList" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55" align="center" /> <el-table-column label="序号" align="center" type="index" v-if="true" width="60" /> <el-table-column label="镇街名称" align="center" prop="townStreetName" /> <el-table-column label="统计周期" align="center" prop="periodDate" /> <el-table-column label="发现安全隐患" align="center" prop="findSecurityRisks" /> <el-table-column label="下发通知书" align="center" prop="issueNotice" /> <el-table-column label="处置安全隐患" align="center" prop="dealWithSecurityRisks" /> <el-table-column label="状态" align="center" prop="status"> <template #default="scope"> <span v-show="scope.row['status'] == 1">已启用</span> <span v-show="scope.row['status'] == 2" style="color: rgba(227, 70,101);">已禁用</span> </template> </el-table-column> <el-table-column label="创建时间" align="center" prop="createTime" /> <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template #default="scope"> <el-tooltip content="修改" placement="top"> <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['demo:dangerTotal:edit']"></el-button> </el-tooltip> <el-tooltip content="删除" placement="top"> <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['demo:dangerTotal:remove']"></el-button> </el-tooltip> </template> </el-table-column> </el-table> <pagination v-show="total>0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" /> </el-card> <!-- 添加或修改安全隐患统计对话框 --> <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body> <el-form ref="dangerTotalFormRef" :model="form" :rules="rules" label-width="80px"> <el-form-item label="镇街名称" prop="townStreetName" label-width="100"> <!-- <el-input v-model="form.townStreetName" placeholder="请输入镇街名称" /> --> <el-select v-model="form.townStreetName" placeholder="请选择" clearable style="width: 240px" @keyup.enter="handleQuery" > <el-option v-for="item in townStreetNames" :key="item.townStreetName" :label="item.townStreetName" :value="item.townStreetName"/> </el-select> </el-form-item> <el-form-item label="统计周期" prop="periodDate" label-width="100"> <el-select v-model="form.period" placeholder="请选择" style="width: 100px;"> <el-option key="1" label="年度" :value="1" /> <el-option key="2" label="月度" :value="2" /> </el-select> <el-date-picker v-model="form.periodDate" :type="pickerType" :value-format="pickerFormat" placeholder="请选择统计周期" /> </el-form-item> <el-form-item label="发现隐患" prop="findSecurityRisks" label-width="100"> <el-input v-model="form.findSecurityRisks" placeholder="请输入发现安全隐患" /> </el-form-item> <el-form-item label="下发通知书" prop="issueNotice" label-width="100"> <el-input v-model="form.issueNotice" placeholder="请输入下发通知书" /> </el-form-item> <el-form-item label="处置隐患" prop="dealWithSecurityRisks" label-width="100"> <el-input v-model="form.dealWithSecurityRisks" placeholder="请输入处置安全隐患" /> </el-form-item> <el-form-item label="状态" prop="status" label-width="100"> <el-select v-model="form.status" placeholder="请选择"> <el-option key="1" label="已启用" :value="1" /> <el-option key="2" label="已禁用" :value="2" /> </el-select> </el-form-item> </el-form> <template #footer> <div class="dialog-footer"> <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button> <el-button @click="cancel">取 消</el-button> </div> </template> </el-dialog> </div> </template> <script setup name="DangerTotal" lang="ts"> import { listDangerTotal, getDangerTotal, delDangerTotal, addDangerTotal, updateDangerTotal } from '@/api/dg/dangerTotal'; import { DangerTotalVO, DangerTotalQuery, DangerTotalForm } from '@/api/dg/dangerTotal/types'; const { proxy } = getCurrentInstance() as ComponentInternalInstance; const dangerTotalList = ref<DangerTotalVO[]>([]); const buttonLoading = ref(false); const loading = ref(true); const showSearch = ref(true); const ids = ref<Array<string | number>>([]); const single = ref(true); const multiple = ref(true); const total = ref(0); const queryFormRef = ref<ElFormInstance>(); const dangerTotalFormRef = ref<ElFormInstance>(); const dialog = reactive<DialogOption>({ visible: false, title: '' }); const townStreetNames = [ { townStreetName: '幸福街道', }, { townStreetName: '银杏街道' }]; const initFormData: DangerTotalForm = { id: undefined, townStreetName: undefined, period: 1, periodDate: undefined, findSecurityRisks: undefined, issueNotice: undefined, dealWithSecurityRisks: undefined, status: undefined } const data = reactive<PageData<DangerTotalForm, DangerTotalQuery>>({ form: {...initFormData}, queryParams: { pageNum: 1, pageSize: 10, townStreetName: undefined, period: undefined, periodDate: undefined, findSecurityRisks: undefined, issueNotice: undefined, dealWithSecurityRisks: undefined, status: undefined, params: { } }, rules: { id: [ { required: true, message: "编号不能为空", trigger: "blur" } ], townStreetName: [ { required: true, message: "镇街名称不能为空", trigger: "blur" } ], period: [ { required: true, message: "年度/月度 1年度 2月度不能为空", trigger: "blur" } ], periodDate: [ { required: true, message: "周期不能为空", trigger: "blur" } ], findSecurityRisks: [ { required: true, message: "发现安全隐患不能为空", trigger: "blur" } ], issueNotice: [ { required: true, message: "下发通知书不能为空", trigger: "blur" } ], dealWithSecurityRisks: [ { required: true, message: "处置安全隐患不能为空", trigger: "blur" } ], status: [ { required: true, message: "启用状态 1启用 2未启用不能为空", trigger: "change" } ] } }); const { queryParams, form, rules } = toRefs(data); /** 查询安全隐患统计列表 */ const getList = async () => { loading.value = true; const res = await listDangerTotal(queryParams.value); dangerTotalList.value = res.rows; total.value = res.total; loading.value = false; } /** 取消按钮 */ const cancel = () => { reset(); dialog.visible = false; } /** 表单重置 */ const reset = () => { form.value = {...initFormData}; dangerTotalFormRef.value?.resetFields(); } /** 搜索按钮操作 */ const handleQuery = () => { queryParams.value.pageNum = 1; getList(); } /** 重置按钮操作 */ const resetQuery = () => { queryFormRef.value?.resetFields(); handleQuery(); } /** 多选框选中数据 */ const handleSelectionChange = (selection: DangerTotalVO[]) => { ids.value = selection.map(item => item.id); single.value = selection.length != 1; multiple.value = !selection.length; } /** 新增按钮操作 */ const handleAdd = () => { reset(); dialog.visible = true; dialog.title = "添加安全隐患统计"; } /** 修改按钮操作 */ const handleUpdate = async (row?: DangerTotalVO) => { reset(); const _id = row?.id || ids.value[0] const res = await getDangerTotal(_id); Object.assign(form.value, res.data); dialog.visible = true; dialog.title = "修改安全隐患统计"; } /** 提交按钮 */ const submitForm = () => { dangerTotalFormRef.value?.validate(async (valid: boolean) => { if (valid) { buttonLoading.value = true; if (form.value.id) { await updateDangerTotal(form.value).finally(() => buttonLoading.value = false); } else { await addDangerTotal(form.value).finally(() => buttonLoading.value = false); } proxy?.$modal.msgSuccess("修改成功"); dialog.visible = false; await getList(); } }); } /** 删除按钮操作 */ const handleDelete = async (row?: DangerTotalVO) => { const _ids = row?.id || ids.value; await proxy?.$modal.confirm('是否确认删除安全隐患统计编号为"' + _ids + '"的数据项?').finally(() => loading.value = false); await delDangerTotal(_ids); proxy?.$modal.msgSuccess("删除成功"); await getList(); } /** 导出按钮操作 */ const handleExport = () => { proxy?.download('demo/dangerTotal/export', { ...queryParams.value }, `dangerTotal_${new Date().getTime()}.xlsx`) } onMounted(() => { getList(); }); /** 周期年或月 */ const pickerType = computed(() => { return form.value.period === 1 ? 'year' : 'month'; }); const pickerFormat = computed(() => { return form.value.period === 1 ? 'YYYY' : 'YYYY-MM'; }); </script> vite.config.ts
@@ -26,8 +26,8 @@ open: true, proxy: { [env.VITE_APP_BASE_API]: { target: 'http://192.168.3.43:8080', // target: 'http://localhost:8080', // target: 'http://192.168.3.43:8080', target: 'http://localhost:8080', changeOrigin: true, rewrite: (path) => path.replace(new RegExp('^' + env.VITE_APP_BASE_API), '') }