src/api/inspectionManagement/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/inspectionManagement/components/formDia.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/inspectionManagement/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/inspectionManagement/index.js
@@ -25,6 +25,14 @@ data: query }) } // 定时巡检任务表删除 export function delTimingTask(query) { return request({ url: '/timingTask/delTimingTask', method: 'delete', data: query }) } // /inspectionTask/addOrEditInspectionTask // 巡检上传 @@ -34,4 +42,20 @@ method: 'post', data: query }) } // 定时巡检任务表查询 export function timingTaskList(query) { return request({ url: '/timingTask/list', method: 'get', params: query }) } // 定时巡检任务表新增修改 export function addOrEditTimingTask(query) { return request({ url: '/timingTask/addOrEditTimingTask', method: 'post', data: query }) } src/views/inspectionManagement/components/formDia.vue
@@ -10,20 +10,79 @@ </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="地点" prop="port"> <el-input v-model="form.port" placeholder="请输入地点" maxlength="30" /> <el-form-item label="地点" prop="inspectionLocation"> <el-input v-model="form.inspectionLocation" placeholder="请输入地点" maxlength="30" /> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="巡检人" prop="inspector"> <el-input v-model="form.inspector" placeholder="巡检人" maxlength="30" /> <el-select v-model="form.inspector" placeholder="请选择" multiple clearable> <el-option v-for="item in userList" :label="item.nickName" :value="item.userId" :key="item.userId"/> </el-select> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="备注" prop="remarks"> <el-input v-model="form.remarks" placeholder="请输入备注" type="textarea" /> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="任务频率" prop="frequencyType"> <el-select v-model="form.frequencyType" placeholder="请选择" clearable> <el-option label="每日" value="DAILY"/> <el-option label="每周" value="WEEKLY"/> <el-option label="每月" value="MONTHLY"/> <el-option label="季度" value="QUARTERLY"/> </el-select> </el-form-item> </el-col> <el-col :span="12" v-if="form.frequencyType === 'DAILY' && form.frequencyType"> <el-form-item label="日期" prop="frequencyDetail"> <el-time-picker v-model="form.frequencyDetail" placeholder="选择时间" format="HH:mm" value-format="HH:mm" /> </el-form-item> </el-col> <el-col :span="12" v-if="form.frequencyType === 'WEEKLY' && form.frequencyType"> <el-form-item label="日期" prop="frequencyDetail"> <el-select v-model="form.week" placeholder="请选择" clearable style="width: 50%"> <el-option label="周一" value="MON"/> <el-option label="周二" value="TUE"/> <el-option label="周三" value="WED"/> <el-option label="周四" value="THU"/> <el-option label="周五" value="FRI"/> <el-option label="周六" value="SAT"/> <el-option label="周日" value="SUN"/> </el-select> <el-time-picker v-model="form.frequencyDetail" placeholder="选择时间" format="HH:mm" value-format="HH:mm" style="width: 50%"/> </el-form-item> </el-col> <el-col :span="12" v-if="form.frequencyType === 'MONTHLY' && form.frequencyType"> <el-form-item label="日期" prop="frequencyDetail"> <el-date-picker v-model="form.frequencyDetail" type="datetime" clearable placeholder="选择开始日期" format="DD,HH:mm" value-format="DD,HH:mm" /> </el-form-item> </el-col> <el-col :span="12" v-if="form.frequencyType === 'QUARTERLY' && form.frequencyType"> <el-form-item label="日期" prop="frequencyDetail"> <el-date-picker v-model="form.frequencyDetail" type="datetime" clearable placeholder="选择开始日期" format="MM,DD,HH:mm" value-format="MM,DD,HH:mm" /> </el-form-item> </el-col> </el-row> @@ -39,9 +98,10 @@ </template> <script setup> import {reactive, ref} from "vue"; import {reactive, ref, computed} from "vue"; import useUserStore from '@/store/modules/user' import {addOrEditInspectionTask} from "@/api/inspectionManagement/index.js"; import {addOrEditTimingTask} from "@/api/inspectionManagement/index.js"; import {userListAll} from "@/api/publicApi/index.js"; const { proxy } = getCurrentInstance() const emit = defineEmits() @@ -51,43 +111,66 @@ const data = reactive({ form: { taskName: '', port: '', inspectionLocation: '', inspector: '', inspectorIds: '', remarks: '', frequencyType: '', frequencyDetail: '', }, rules: { taskName: [{ required: true, message: "请输入任务名称", trigger: "blur" },], port: [{ required: true, message: "请输入地点", trigger: "blur" },], inspectionLocation: [{ required: true, message: "请输入地点", trigger: "blur" },], inspector: [{ required: true, message: "请输入巡检人", trigger: "blur" },], } }) const { form, rules } = toRefs(data) const userList = ref([]) // 打开弹框 const openDialog = async (type, row) => { dialogVisitable.value = true userListAll().then(res => { userList.value = res.data }) if (type === 'edit') { form.value = {...row} } } // 提交合并表单 const submitForm = () => { proxy.$refs["formRef"].validate(valid => { if (valid) { addOrEditInspectionTask(form.value).then(() => { cancel() proxy.$modal.msgSuccess('提交成功') }) } }) } // 关闭合并表单 const cancel = () => { proxy.resetForm("formRef") dialogVisitable.value = false emit('closeDia') } const selectedDateTime = ref(null) // 计算星期几 const dayOfWeek = computed(() => { if (!selectedDateTime.value) return '' const date = new Date(selectedDateTime.value) const dayIndex = date.getDay() const weekDays = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'] return weekDays[dayIndex] }) // 提交合并表单 const submitForm = () => { proxy.$refs["formRef"].validate(valid => { if (valid) { form.value.inspectorIds = form.value.inspector.join(',') if (form.value.frequencyType === 'WEEKLY') { form.value.frequencyDetail = form.value.week + ',' + form.value.frequencyDetail } addOrEditTimingTask(form.value).then(() => { cancel() proxy.$modal.msgSuccess('提交成功') }) } }) } defineExpose({ openDialog }) </script> src/views/inspectionManagement/index.vue
@@ -1,7 +1,7 @@ <template> <div class="app-container"> <el-form :inline="true" :model="queryParams" class="search-form"> <el-form-item label="供应商名称"> <el-form-item label="时间"> <el-input v-model="queryParams.supplierName" placeholder="请输入" @@ -9,7 +9,7 @@ :style="{ width: '100%' }" /> </el-form-item> <el-form-item label="煤种"> <el-form-item label="设备名称"> <el-input v-model="queryParams.coal" placeholder="请输入" @@ -36,12 +36,20 @@ :name="tab.name" /> </el-tabs> <!-- 操作按钮区 --> <el-space v-if="tabName !== 'qrCodeScanRecord'"> <el-button type="primary" :icon="Plus" @click="handleAdd">新建</el-button> <el-button type="danger" :icon="Delete" @click="handleDelete">删除</el-button> <!-- <el-button type="info" plain :icon="Download">导出</el-button> --> </el-space> <div style="display: flex;flex-direction: row;justify-content: space-between;" v-if="tabName === 'task'"> <el-radio-group v-model="activeRadio" @change="radioChange"> <el-radio-button v-for="tab in radios" :key="tab.name" :label="tab.label" :value="tab.name"/> </el-radio-group> <!-- 操作按钮区 --> <el-space v-if="activeRadio !== 'task'"> <el-button type="primary" :icon="Plus" @click="handleAdd">新建</el-button> <el-button type="danger" :icon="Delete" @click="handleDelete">删除</el-button> <!-- <el-button type="info" plain :icon="Download">导出</el-button> --> </el-space> </div> <div> <div> <ETable :loading="tableLoading" @@ -55,9 +63,9 @@ :operations="operationsArr" @edit="handleAdd" @viewFile="viewFile" v-if="tabName !== 'qrCodeScanRecord'" v-if="tabName === 'task'" ></ETable> <el-table ref="table" :data="tableData" height="480" v-loading="tableLoading" border v-else style="width: 100%;height: calc(100vh - 27em)"> <el-table ref="table" :data="tableData" height="480" v-loading="tableLoading" border v-else style="width: 100%;height: calc(100vh - 25em)"> <el-table-column label="序号" type="index" width="60" align="center" /> <el-table-column prop="deviceName" label="设备名称" :show-overflow-tooltip="true"> <template #default="scope"> @@ -103,7 +111,12 @@ import ETable from "@/components/Table/ETable.vue"; import FormDia from "@/views/inspectionManagement/components/formDia.vue"; import QrCodeDia from "@/views/inspectionManagement/components/qrCodeDia.vue"; import {delInspectionTask, inspectionTaskList} from "@/api/inspectionManagement/index.js"; import { delInspectionTask, delTimingTask, inspectionTaskList, timingTaskList } from "@/api/inspectionManagement/index.js"; import ViewFiles from "@/views/inspectionManagement/components/viewFiles.vue"; import {delQrCode, qrCodeList, qrCodeScanRecordList} from "@/api/inspectionUpload/index.js"; import ViewQrCodeFiles from "@/views/inspectionManagement/components/viewQrCodeFiles.vue"; @@ -122,9 +135,15 @@ const tabName = ref("task"); // 标签页数据 const tabs = reactive([ { name: "task", label: "任务下发" }, { name: "qrCode", label: "二维码管理" }, { name: "task", label: "生产巡检" }, { name: "qrCodeScanRecord", label: "现场巡检记录" }, ]); // 单选框 const activeRadio = ref("taskManage"); const radios = reactive([ { name: "taskManage", label: "定时任务管理" }, { name: "task", label: "定时任务记录" }, { name: "qrCode", label: "二维码管理" }, ]); // 表格 const selectedRows = ref([]); @@ -140,6 +159,8 @@ { prop: "port", label: "地点", minWidth: 120 }, { prop: "remarks", label: "备注", minWidth: 150 }, { prop: "inspector", label: "执行巡检人", minWidth: 150 }, { prop: "inspector", label: "频次", minWidth: 150 }, { prop: "inspector", label: "开始日期", minWidth: 150 }, { prop: "registrant", label: "登记人", minWidth: 100 }, { prop: "createTime", label: "登记日期", minWidth: 100 }, ]); @@ -151,21 +172,24 @@ ]); onMounted(() => { handleTabClick({ props: { name: "task" } }); radioChange('taskManage'); }); // 标签页点击 const handleTabClick = (tab) => { tabName.value = tab.props.name; tableData.value = []; if (tabName.value === "task") { tableColumns.value = columns.value; operationsArr.value = ['edit', 'viewFile'] } else { tableColumns.value = columns1.value; operationsArr.value = ['edit'] } getList(); }; const radioChange = (value) => { if (value !== "task") { tableColumns.value = columns.value; operationsArr.value = ['edit'] } else { tableColumns.value = columns1.value; operationsArr.value = ['viewFile'] } getList(); } // 点击查询 const handleQuery = () => { pageNum.value = 1 @@ -174,18 +198,26 @@ } const getList = () => { tableLoading.value = true; if (tabName.value === "task") { inspectionTaskList({...queryParams, size: pageSize.value, current: pageNum.value}).then(res => { tableLoading.value = false; tableData.value = res.data.records; total.value = res.data.total; }) } else if (tabName.value === "qrCode") { qrCodeList({...queryParams, size: pageSize.value, current: pageNum.value}).then(res => { tableLoading.value = false; tableData.value = res.data.records; total.value = res.data.total; }) if (tabName.value === 'task') { if (activeRadio.value === "task") { inspectionTaskList({...queryParams, size: pageSize.value, current: pageNum.value}).then(res => { tableLoading.value = false; tableData.value = res.data.records; total.value = res.data.total; }) } else if (activeRadio.value === "qrCode") { qrCodeList({...queryParams, size: pageSize.value, current: pageNum.value}).then(res => { tableLoading.value = false; tableData.value = res.data.records; total.value = res.data.total; }) } else { timingTaskList({...queryParams, size: pageSize.value, current: pageNum.value}).then(res => { tableLoading.value = false; tableData.value = res.data.records; total.value = res.data.total; }) } } else { qrCodeScanRecordList({size: pageSize.value, current: pageNum.value}).then(res => { tableLoading.value = false; @@ -193,6 +225,7 @@ total.value = res.data.total; }) } }; // 重置查询 @@ -209,10 +242,12 @@ const handleAdd = (row) => { const type = row === undefined ? 'add' : 'edit' nextTick(() => { if (tabName.value === "task") { formDia.value?.openDialog(type, row) } else if (tabName.value === "qrCode") { qrCodeDia.value?.openDialog(type, row) if (tabName.value === 'task') { if (activeRadio.value === "taskManage") { formDia.value?.openDialog(type, row) } else if (activeRadio.value === "qrCode") { qrCodeDia.value?.openDialog(type, row) } } else { viewQrCodeFiles.value?.openDialog(row) } @@ -232,8 +267,8 @@ } const deleteIds = selectedRows.value.map(item => item.id); proxy.$modal.confirm('是否确认删除所选数据项?').then(function() { if (tabName.value === "task") { return delInspectionTask(deleteIds) if (activeRadio.value === "taskManage") { return delTimingTask(deleteIds) } else { return delQrCode(deleteIds) }