| src/api/equipmentManagement/upkeep.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/equipmentManagement/inspectionManagement/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/equipmentManagement/upkeep/Form/PlanForm.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/equipmentManagement/upkeep/Modal/formDia.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/equipmentManagement/upkeep/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/inventoryManagement/dispatchLog/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/procurementManagement/invoiceEntry/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/procurementManagement/paymentEntry/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/salesManagement/invoiceRegistration/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/salesManagement/receiptPayment/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/salesManagement/salesLedger/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/equipmentManagement/upkeep.js
@@ -70,3 +70,35 @@ method: "delete", }); }; // æ·»å 设å¤ä¿å »å®æ¶ä»»å¡ export const deviceMaintenanceTaskAdd = (params) => { return request({ url: '/deviceMaintenanceTask/add', method: "post", data: params, }); }; // ä¿®æ¹è®¾å¤ä¿å »å®æ¶ä»»å¡ export const deviceMaintenanceTaskEdit = (params) => { return request({ url: '/deviceMaintenanceTask/update', method: "post", data: params, }); }; // 设å¤ä¿å »å®æ¶ä»»å¡å表 export const deviceMaintenanceTaskList = (params) => { return request({ url: '/deviceMaintenanceTask/listPage', method: "get", params: params, }); }; // 设å¤ä¿å »å®æ¶ä»»å¡å表 export const deviceMaintenanceTaskDel = (params) => { return request({ url: '/deviceMaintenanceTask/delete', method: "delete", data: params, }); }; src/views/equipmentManagement/inspectionManagement/index.vue
@@ -129,12 +129,12 @@ prop: "frequencyType", label: "颿¬¡", minWidth: 150, formatter: (_, __, val) => ({ formatData: (cell) => ({ DAILY: "æ¯æ¥", WEEKLY: "æ¯å¨", MONTHLY: "æ¯æ", QUARTERLY: "å£åº¦" }[val] || "") }[cell] || "") }, { prop: "frequencyDetail", src/views/equipmentManagement/upkeep/Form/PlanForm.vue
@@ -36,7 +36,7 @@ <el-option v-for="item in userList" :key="item.userId" :label="item.userName" :label="item.nickName" :value="item.userId" /> </el-select> src/views/equipmentManagement/upkeep/Modal/formDia.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,296 @@ <template> <div> <el-dialog :title="operationType === 'add' ? 'æ°å¢ä¿å »ä»»å¡' : 'ç¼è¾ä¿å »ä»»å¡'" v-model="dialogVisitable" width="800px" @close="cancel"> <el-form ref="formRef" :model="form" :rules="rules" label-width="120px"> <el-row> <el-col :span="12"> <el-form-item label="设å¤åç§°" prop="taskId"> <el-select v-model="form.taskId" @change="setDeviceModel" filterable> <el-option v-for="(item, index) in deviceOptions" :key="index" :label="item.deviceName" :value="item.id" ></el-option> </el-select> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="è§æ ¼åå·"> <el-input v-model="form.deviceModel" placeholder="请è¾å ¥è§æ ¼åå·" disabled /> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="å½å ¥äºº" prop="inspector"> <el-select v-model="form.inspector" filterable default-first-option :reserve-keyword="false" placeholder="è¯·éæ©" 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="registrationDate"> <el-date-picker v-model="form.registrationDate" type="date" placeholder="éæ©ç»è®°æ¥æ" format="YYYY-MM-DD" value-format="YYYY-MM-DD" style="width: 100%" /> </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.time" 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> <el-row> <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-form> <template #footer> <div class="dialog-footer"> <el-button type="primary" @click="submitForm">ä¿å</el-button> <el-button @click="cancel">åæ¶</el-button> </div> </template> </el-dialog> </div> </template> <script setup> import { reactive, ref, getCurrentInstance, toRefs } from "vue"; import {userListNoPageByTenantId} from "@/api/system/user.js"; import { getDeviceLedger } from "@/api/equipmentManagement/ledger"; import { deviceMaintenanceTaskAdd, deviceMaintenanceTaskEdit } from "@/api/equipmentManagement/upkeep"; const { proxy } = getCurrentInstance() const emit = defineEmits() const dialogVisitable = ref(false); const operationType = ref('add'); const deviceOptions = ref([]); const data = reactive({ form: { taskId: undefined, taskName: undefined, // å½å ¥äººï¼åéä¸ä¸ªç¨æ· id inspector: undefined, remarks: '', frequencyType: '', frequencyDetail: '', week: '', time: '', deviceModel: undefined, // è§æ ¼åå· registrationDate: '' }, rules: { taskId: [{ required: true, message: "è¯·éæ©è®¾å¤", trigger: "change" },], inspector: [{ required: true, message: "è¯·éæ©å½å ¥äºº", trigger: "blur" },], registrationDate: [{ required: true, message: "è¯·éæ©ç»è®°æ¶é´", trigger: "change" }] } }) const { form, rules } = toRefs(data) const userList = ref([]) const loadDeviceName = async () => { const { data } = await getDeviceLedger(); deviceOptions.value = data; }; // éæ©è®¾å¤æ¶ï¼å填设å¤åç§°(taskName)åè§æ ¼åå·(deviceModel) const setDeviceModel = (id) => { const option = deviceOptions.value.find((item) => item.id === id); if (option) { form.value.taskId = option.id; form.value.taskName = option.deviceName; form.value.deviceModel = option.deviceModel; } } // æå¼å¼¹æ¡ const openDialog = async (type, row) => { dialogVisitable.value = true operationType.value = type // é置表å resetForm(); // å è½½ç¨æ·å表 userListNoPageByTenantId().then((res) => { userList.value = res.data; }); // å 载设å¤å表 await loadDeviceName(); if (type === 'edit' && row) { form.value = { ...row } // ç¼è¾æ¶ç¨æ¥å£è¿åç registrantId åæ¾å½å ¥äºº if (row.registrantId) { form.value.inspector = row.registrantId } // 妿æè®¾å¤IDï¼èªå¨è®¾ç½®è®¾å¤ä¿¡æ¯ if (form.value.taskId) { setDeviceModel(form.value.taskId); } } } // å ³éå¯¹è¯æ¡ const cancel = () => { resetForm() dialogVisitable.value = false emit('closeDia') } // é置表å彿° const resetForm = () => { if (proxy.$refs.formRef) { proxy.$refs.formRef.resetFields() } // éç½®è¡¨åæ°æ®ç¡®ä¿è®¾å¤ä¿¡æ¯æ£ç¡®éç½® form.value = { taskId: undefined, taskName: undefined, inspector: undefined, inspector: undefined, remarks: '', frequencyType: '', frequencyDetail: '', week: '', time: '', deviceModel: undefined, registrationDate: '' } } // æäº¤è¡¨å const submitForm = () => { proxy.$refs["formRef"].validate(async valid => { if (valid) { try { const payload = { ...form.value } // ä¸åååç«¯ä¼ ä¿å »äººå段ï¼ä» ä½¿ç¨æ¥å£è¦æ±ç registrant / registrantId // æ ¹æ®éæ©çâå½å ¥äººâ设置 registrant / registrantId if (payload.inspector) { const selectedUser = userList.value.find( (u) => String(u.userId) === String(payload.inspector) ) if (selectedUser) { payload.registrantId = selectedUser.userId payload.registrant = selectedUser.nickName } } delete payload.inspector delete payload.inspectorIds if (payload.frequencyType === 'WEEKLY') { let frequencyDetail = '' frequencyDetail = payload.week + ',' + payload.time payload.frequencyDetail = frequencyDetail } // å½å ¥æ¥æï¼ç´æ¥ä½¿ç¨è¡¨åéç registrationDate åæ®µ // ä¸äºé»è®¤ç¶æå段 if (payload.status === undefined || payload.status === null || payload.status === '') { payload.status = '0' // é»è®¤ç¶æï¼å¯æå®é æä¸¾è°æ´ } payload.active = true payload.deleted = 0 if (operationType.value === 'edit') { await deviceMaintenanceTaskEdit(payload) } else { await deviceMaintenanceTaskAdd(payload) } cancel() proxy.$modal.msgSuccess('æäº¤æå') } catch (error) { proxy.$modal.msgError('æäº¤å¤±è´¥ï¼è¯·éè¯') } } }) } defineExpose({ openDialog }) </script> <style scoped> </style> src/views/equipmentManagement/upkeep/index.vue
@@ -1,5 +1,91 @@ <template> <div class="app-container"> <el-tabs v-model="activeTab" @tab-change="handleTabChange"> <!-- 宿¶ä»»å¡ç®¡çtab --> <el-tab-pane label="宿¶ä»»å¡ç®¡ç" name="scheduled"> <div class="search_form"> <el-form :model="scheduledFilters" :inline="true"> <el-form-item label="ä»»å¡åç§°"> <el-input v-model="scheduledFilters.taskName" style="width: 240px" placeholder="请è¾å ¥ä»»å¡åç§°" clearable :prefix-icon="Search" @change="getScheduledTableData" /> </el-form-item> <el-form-item label="ä»»å¡ç¶æ"> <el-select v-model="scheduledFilters.status" placeholder="è¯·éæ©ä»»å¡ç¶æ" clearable style="width: 200px"> <el-option label="å¯ç¨" value="1" /> <el-option label="åç¨" value="0" /> </el-select> </el-form-item> <el-form-item> <el-button type="primary" @click="getScheduledTableData">æç´¢</el-button> <el-button @click="resetScheduledFilters">éç½®</el-button> </el-form-item> </el-form> </div> <div class="table_list"> <div class="actions"> <el-text class="mx-1" size="large">宿¶ä»»å¡ç®¡ç</el-text> <div> <el-button type="primary" icon="Plus" @click="addScheduledTask"> æ°å¢ä»»å¡ </el-button> <el-button type="danger" icon="Delete" :disabled="scheduledMultipleList.length <= 0" @click="delScheduledTaskByIds(scheduledMultipleList.map((item) => item.id))" > æ¹éå é¤ </el-button> </div> </div> <PIMTable rowKey="id" isSelection :column="scheduledColumns" :tableData="scheduledDataList" :page="{ current: scheduledPagination.currentPage, size: scheduledPagination.pageSize, total: scheduledPagination.total, }" @selection-change="handleScheduledSelectionChange" @pagination="changeScheduledPage" > <template #statusRef="{ row }"> <el-tag v-if="row.status === 1" type="success">å¯ç¨</el-tag> <el-tag v-if="row.status === 0" type="danger">åç¨</el-tag> </template> <template #operation="{ row }"> <el-button type="primary" text icon="editPen" @click="editScheduledTask(row)" > ç¼è¾ </el-button> <el-button type="danger" text icon="delete" @click="delScheduledTaskByIds(row.id)" > å é¤ </el-button> </template> </PIMTable> </div> </el-tab-pane> <!-- ä»»å¡è®°å½tabï¼å设å¤ä¿å »é¡µé¢ï¼ --> <el-tab-pane label="ä»»å¡è®°å½" name="record"> <div class="search_form"> <el-form :model="filters" :inline="true"> <el-form-item label="设å¤åç§°"> <el-input @@ -44,9 +130,10 @@ <el-button @click="resetFilters">éç½®</el-button> </el-form-item> </el-form> </div> <div class="table_list"> <div class="actions"> <el-text class="mx-1" size="large">设å¤ä¿å »</el-text> <el-text class="mx-1" size="large">ä»»å¡è®°å½</el-text> <div> <el-button type="primary" @@ -87,12 +174,6 @@ > <template #maintenanceResultRef="{ row }"> <div>{{ row.maintenanceResult || '-' }}</div> <!-- <el-tag v-if="row.maintenanceResult === 1" type="success"> å®å¥½ </el-tag> <el-tag v-if="row.maintenanceResult === 0" type="danger"> ç»´ä¿® </el-tag> --> </template> <template #statusRef="{ row }"> <el-tag v-if="row.status === 2" type="danger">失败</el-tag> @@ -119,54 +200,125 @@ </template> </PIMTable> </div> </el-tab-pane> </el-tabs> <PlanModal ref="planModalRef" @ok="getTableData" /> <MaintenanceModal ref="maintainModalRef" @ok="getTableData" /> <FormDia ref="formDiaRef" @closeDia="getScheduledTableData" /> </div> </template> <script setup> import { usePaginationApi } from "@/hooks/usePaginationApi"; import { getUpkeepPage, delUpkeep } from "@/api/equipmentManagement/upkeep"; import { onMounted, getCurrentInstance } from "vue"; import PlanModal from "./Modal/PlanModal.vue"; import MaintenanceModal from "./Modal/MaintenanceModal.vue"; import dayjs from "dayjs"; import { ElMessageBox, ElMessage } from "element-plus"; import { ref, onMounted, reactive, getCurrentInstance, nextTick } from 'vue' import { Search } from '@element-plus/icons-vue' import { ElMessage, ElMessageBox } from 'element-plus' import PlanModal from './Modal/PlanModal.vue' import MaintenanceModal from './Modal/MaintenanceModal.vue' import FormDia from './Modal/formDia.vue' import { getUpkeepPage, delUpkeep, deviceMaintenanceTaskList, deviceMaintenanceTaskDel, } from '@/api/equipmentManagement/upkeep' import dayjs from 'dayjs' defineOptions({ name: "设å¤ä¿å »", }); const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance(); // Tabç¸å ³ const activeTab = ref('scheduled') // 计åå¼¹çªæ§å¶å¨ const planModalRef = ref(); const planModalRef = ref() // ä¿å »å¼¹çªæ§å¶å¨ const maintainModalRef = ref(); const maintainModalRef = ref() // 宿¶ä»»å¡å¼¹çªæ§å¶å¨ const formDiaRef = ref() // è¡¨æ ¼å¤éæ¡éä¸é¡¹ const multipleList = ref([]); // ä»»å¡è®°å½tabï¼å设å¤ä¿å »é¡µé¢ï¼ç¸å ³åé const filters = reactive({ deviceName: '', maintenancePlanTime: '', maintenanceActuallyTime: '', maintenanceActuallyName: '', }) // å¤éååä»ä¹ const handleSelectionChange = (selectionList) => { multipleList.value = selectionList; const dataList = ref([]) const pagination = reactive({ currentPage: 1, pageSize: 10, total: 0, }) const multipleList = ref([]) // 宿¶ä»»å¡ç®¡çtabç¸å ³åé const scheduledFilters = reactive({ taskName: '', status: '', }) const scheduledDataList = ref([]) const scheduledPagination = reactive({ currentPage: 1, pageSize: 10, total: 0, }) const scheduledMultipleList = ref([]) // 宿¶ä»»å¡ç®¡çè¡¨æ ¼åé ç½® const scheduledColumns = ref([ { prop: "taskName", label: "设å¤åç§°"}, { label: "è§æ ¼åå·", prop: "deviceModel", }, { prop: "frequencyType", label: "颿¬¡", minWidth: 150, // PIMTable 使ç¨çæ¯ formatDataï¼è䏿¯ Element-Plus ç formatter formatData: (cell) => ({ DAILY: "æ¯æ¥", WEEKLY: "æ¯å¨", MONTHLY: "æ¯æ", QUARTERLY: "å£åº¦" }[cell] || "") }, { prop: "frequencyDetail", label: "å¼å§æ¥æä¸æ¶é´", minWidth: 150, // åæ ·æ¹ç¨ formatDataï¼PIMTable å é¨ä¼æåå æ ¼å¼ä¼ è¿æ¥ formatData: (cell) => { if (typeof cell !== 'string') return ''; let val = cell; const replacements = { MON: 'å¨ä¸', TUE: 'å¨äº', WED: 'å¨ä¸', THU: 'å¨å', FRI: 'å¨äº', SAT: 'å¨å ', SUN: '卿¥' }; // ä½¿ç¨æ£å䏿¬¡æ§æ¿æ¢ææå¹é 项 return val.replace(/MON|TUE|WED|THU|FRI|SAT|SUN/g, match => replacements[match]); } }, { prop: "registrant", label: "ç»è®°äºº", minWidth: 100 }, { prop: "registrationDate", label: "ç»è®°æ¥æ", minWidth: 100 }, { fixed: "right", label: "æä½", dataType: "slot", slot: "operation", align: "center", width: "200px", }, ]) // è¡¨æ ¼é©å const { filters, columns, dataList, pagination, getTableData, resetFilters, onCurrentChange, } = usePaginationApi(getUpkeepPage, { deviceName: undefined, maintenancePlanTime: undefined, maintenanceActuallyTime: undefined, maintenanceActuallyName: undefined, }, [ // ä»»å¡è®°å½è¡¨æ ¼åé ç½®ï¼å设å¤ä¿å »è¡¨æ ¼åï¼ const columns = ref([ { label: "设å¤åç§°", align: "center", @@ -229,78 +381,187 @@ align: "center", width: "200px", }, ]); // type == 1å®é ä¿å »æ¶é´ 2计åä¿å »æ¶é´ const handleDateChange = (value,type) => { filters.maintenanceActuallyTimeReq = null filters.maintenancePlanTimeReq = null if(type === 1){ if (value) { filters.maintenanceActuallyTimeReq = dayjs(value).format("YYYY-MM-DD"); } }else{ if (value) { filters.maintenancePlanTimeReq = dayjs(value).format("YYYY-MM-DD"); ]) // Tab忢å¤ç const handleTabChange = (tabName) => { if (tabName === 'record') { getTableData() } else if (tabName === 'scheduled') { getScheduledTableData() } } getTableData(); }; // æ°å¢ä¿å » const addMaintain = () => { const row = multipleList.value[0]; maintainModalRef.value.open(row.id, row); }; // æ°å¢è®¡å const addPlan = () => { planModalRef.value.openModal(); }; // ç¼è¾è®¡å const editPlan = (id) => { planModalRef.value.openEdit(id); }; const changePage = ({ page, limit }) => { pagination.currentPage = page; pagination.pageSize = limit; onCurrentChange(page); }; // åè¡å é¤ const delRepairByIds = async (ids) => { ElMessageBox.confirm("确认å 餿¥ä¿®æ°æ®, æ¤æä½ä¸å¯é?", "è¦å", { confirmButtonText: "ç¡®å®", cancelButtonText: "åæ¶", type: "warning", }).then(async () => { const { code } = await delUpkeep(ids); // 宿¶ä»»å¡ç®¡çç¸å ³æ¹æ³ const getScheduledTableData = async () => { try { const params = { current: scheduledPagination.currentPage, size: scheduledPagination.pageSize, taskName: scheduledFilters.taskName || undefined, status: scheduledFilters.status || undefined, } const { code, data } = await deviceMaintenanceTaskList(params) if (code === 200) { ElMessage.success("å 餿å"); getTableData(); scheduledDataList.value = data?.records || [] scheduledPagination.total = data?.total || 0 } }); }; } catch (error) { ElMessage.error('è·å宿¶ä»»å¡å表失败') } } // å¯¼åº const resetScheduledFilters = () => { scheduledFilters.taskName = '' scheduledFilters.status = '' getScheduledTableData() } const handleScheduledSelectionChange = (selection) => { scheduledMultipleList.value = selection } const changeScheduledPage = (page) => { scheduledPagination.currentPage = page.current scheduledPagination.pageSize = page.size getScheduledTableData() } const addScheduledTask = () => { nextTick(() => { formDiaRef.value?.openDialog('add'); }); } const editScheduledTask = (row) => { if (row) { nextTick(() => { formDiaRef.value?.openDialog('edit', row); }); } } const delScheduledTaskByIds = async (ids) => { try { await ElMessageBox.confirm('ç¡®å®å é¤éä¸ç宿¶ä»»å¡åï¼', 'æç¤º', { type: 'warning', }) const payload = Array.isArray(ids) ? ids : [ids] await deviceMaintenanceTaskDel(payload) ElMessage.success('å é¤å®æ¶ä»»å¡æå') getScheduledTableData() } catch (error) { // ç¨æ·åæ¶å é¤ } } const handleScheduledOut = () => { ElMessage.info('导åºå®æ¶ä»»å¡åè½å¾ å®ç°') } // ä»»å¡è®°å½ç¸å ³æ¹æ³ï¼å设å¤ä¿å »é¡µé¢æ¹æ³ï¼ const getTableData = async () => { try { const params = { current: pagination.currentPage, size: pagination.pageSize, deviceName: filters.deviceName || undefined, maintenancePlanTime: filters.maintenancePlanTime ? dayjs(filters.maintenancePlanTime).format('YYYY-MM-DD') : undefined, maintenanceActuallyTime: filters.maintenanceActuallyTime ? dayjs(filters.maintenanceActuallyTime).format('YYYY-MM-DD') : undefined, maintenanceActuallyName: filters.maintenanceActuallyName || undefined, } const { code, data } = await getUpkeepPage(params) if (code === 200) { dataList.value = data.records pagination.total = data.total } } catch (error) { console.log(error); } } const resetFilters = () => { filters.deviceName = '' filters.maintenancePlanTime = '' filters.maintenanceActuallyTime = '' filters.maintenanceActuallyName = '' getTableData() } const handleSelectionChange = (selection) => { multipleList.value = selection } const changePage = (page) => { pagination.currentPage = page.current pagination.pageSize = page.size getTableData() } const addMaintain = () => { const row = multipleList.value[0] maintainModalRef.value.open(row.id, row) } const addPlan = () => { planModalRef.value.openModal() } const editPlan = (id) => { planModalRef.value.openEdit(id) } const delRepairByIds = async (ids) => { try { await ElMessageBox.confirm('确认å é¤ä¿å »æ°æ®, æ¤æä½ä¸å¯é?', 'è¦å', { confirmButtonText: 'ç¡®å®', cancelButtonText: 'åæ¶', type: 'warning', }) const { code } = await delUpkeep(ids) if (code === 200) { ElMessage.success('å 餿å') getTableData() } } catch (error) { // ç¨æ·åæ¶å é¤ } } const handleOut = () => { ElMessageBox.confirm("éä¸çå 容å°è¢«å¯¼åºï¼æ¯å¦ç¡®è®¤å¯¼åºï¼", "导åº", { confirmButtonText: "确认", cancelButtonText: "åæ¶", type: "warning", ElMessageBox.confirm('éä¸çå 容å°è¢«å¯¼åºï¼æ¯å¦ç¡®è®¤å¯¼åºï¼', '导åº', { confirmButtonText: '确认', cancelButtonText: 'åæ¶', type: 'warning', }) .then(() => { proxy.download("/device/maintenance/export", {}, "设å¤ä¿å ».xlsx"); proxy.download('/device/maintenance/export', {}, '设å¤ä¿å ».xlsx') }) .catch(() => { ElMessage.info("已忶"); }); }; ElMessage.info('已忶') }) } const handleDateChange = (date, type) => { if (type === 1) { filters.maintenanceActuallyTime = date ? dayjs(date).format('YYYY-MM-DD') : '' } else { filters.maintenancePlanTime = date ? dayjs(date).format('YYYY-MM-DD') : '' } getTableData() } onMounted(() => { getTableData(); }); // æ ¹æ®é»è®¤æ¿æ´»ç Tab è°ç¨å¯¹åºçæ¥è¯¢æ¥å£ if (activeTab.value === 'scheduled') { getScheduledTableData() } else { getTableData() } }) </script> <style lang="scss" scoped> @@ -313,3 +574,8 @@ margin-bottom: 10px; } </style> src/views/inventoryManagement/dispatchLog/index.vue
@@ -219,7 +219,7 @@ <div class="delivery-note"> <div class="header"> <div class="company-name">æµ·å·å¼å¿é£åæéå ¬å¸</div> <div class="document-title">é¶å®åè´§å</div> <div class="document-title">åè´§å</div> </div> <div class="info-section"> @@ -662,7 +662,7 @@ <div class="delivery-note"> <div class="header"> <div class="company-name">æµ·å·å¼å¿é£åæéå ¬å¸</div> <div class="document-title">é¶å®åè´§å</div> <div class="document-title">åè´§å</div> </div> <div class="info-section"> src/views/procurementManagement/invoiceEntry/index.vue
@@ -40,7 +40,7 @@ <div> <el-button @click="handleExport" style="margin-right: 10px">导åº</el-button> <el-button type="primary" @click="handleAdd('add')"> æ°å¢ç»è®° æ¥ç¥¨ç»è®° </el-button> <!-- <el-button type="danger" plain @click="handleDelete">å é¤</el-button>--> </div> src/views/procurementManagement/paymentEntry/index.vue
@@ -29,7 +29,7 @@ <el-form-item style="float: right; margin-right: unset"> <el-button @click="handleExport" style="margin-right: 10px">导åº</el-button> <el-button type="primary" @click="openForm('add')"> æ°å¢ä»æ¬¾ 仿¬¾ç»è®° </el-button> <!-- <el-button type="danger" plain @click="handleDelete">--> <!-- å é¤--> src/views/salesManagement/invoiceRegistration/index.vue
@@ -31,7 +31,7 @@ <div></div> <div> <el-button type="primary" @click="openForm" style="margin-bottom: 8px"> æ°å¢ç»è®° å¼ç¥¨ç»è®° </el-button> </div> </div> src/views/salesManagement/receiptPayment/index.vue
@@ -32,7 +32,7 @@ <div></div> <div> <el-button type="primary" @click="openForm('add')"> æ°å¢å款 忬¾ç»è®° </el-button> <el-button icon="Download" @click="handleOut"> å¯¼åº </el-button> </div> src/views/salesManagement/salesLedger/index.vue
@@ -57,6 +57,15 @@ <el-table-column label="ååéé¢(å )" prop="contractAmount" width="220" show-overflow-tooltip :formatter="formattedNumber" /> <el-table-column label="å½å ¥äºº" prop="entryPersonName" width="100" show-overflow-tooltip /> <el-table-column label="çäº§ç¶æ" prop="productionStatus" width="100" show-overflow-tooltip > <template #default="scope"> <div> <el-tag v-if="scope.row.productionStatus === '已宿'" type="success">已宿</el-tag> <el-tag v-if="scope.row.productionStatus === 'ç产ä¸'" type="warning">ç产ä¸</el-tag> <el-tag v-if="scope.row.productionStatus === 'æªå¼å§'" type="danger">æªå¼å§</el-tag> </div> </template> </el-table-column> <el-table-column label="å货车ç" prop="shippingCarNumber" width="120" show-overflow-tooltip> <template #default="scope"> <div> @@ -310,7 +319,7 @@ <div class="delivery-note"> <div class="header"> <div class="company-name">æµ·å·å¼å¿é£åæéå ¬å¸</div> <div class="document-title">é¶å®åè´§å</div> <div class="document-title">åè´§å</div> </div> <div class="info-section"> @@ -1172,7 +1181,7 @@ <div class="delivery-note"> <div class="header"> <div class="company-name">æµ·å·å¼å¿é£åæéå ¬å¸</div> <div class="document-title">é¶å®åè´§å</div> <div class="document-title">åè´§å</div> </div> <div class="info-section">