From febd15c55dd6f81702f123b5ef5d2932c4a6760c Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期四, 03 七月 2025 11:37:05 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- src/views/equipmentManagement/upkeep/index.vue | 143 ++++++++------- src/views/basicData/supplierManage/index.vue | 6 src/views/basicData/product/index.vue | 5 src/views/equipmentManagement/repair/Modal/RepairModal.vue | 9 src/views/equipmentManagement/repair/index.vue | 147 ++++++++------- src/views/equipmentManagement/repair/Form/RepairForm.vue | 11 src/views/equipmentManagement/ledger/Form.vue | 16 + src/views/equipmentManagement/repair/Form/MaintainForm.vue | 3 src/views/basicData/customerFile/index.vue | 4 src/views/equipmentManagement/upkeep/Form/MaintenanceForm.vue | 3 src/views/equipmentManagement/ledger/Modal.vue | 9 src/views/equipmentManagement/ledger/index.vue | 172 +++++++++++-------- src/views/equipmentManagement/upkeep/Form/PlanForm.vue | 1 13 files changed, 307 insertions(+), 222 deletions(-) diff --git a/src/views/basicData/customerFile/index.vue b/src/views/basicData/customerFile/index.vue index c4fa332..89330c6 100644 --- a/src/views/basicData/customerFile/index.vue +++ b/src/views/basicData/customerFile/index.vue @@ -34,7 +34,6 @@ @selection-change="handleSelectionChange" :tableLoading="tableLoading" @pagination="pagination" - :total="total" ></PIMTable> </div> <el-dialog @@ -312,6 +311,7 @@ const page = reactive({ current: 1, size: 10, + total: 0, }); const total = ref(0); @@ -383,7 +383,7 @@ listCustomer({ ...searchForm.value, ...page }).then((res) => { tableLoading.value = false; tableData.value = res.records; - total.value = res.total; + page.total = res.total; }); }; // 琛ㄦ牸閫夋嫨鏁版嵁 diff --git a/src/views/basicData/product/index.vue b/src/views/basicData/product/index.vue index d71d7cb..b17be1f 100644 --- a/src/views/basicData/product/index.vue +++ b/src/views/basicData/product/index.vue @@ -97,7 +97,6 @@ @selection-change="handleSelectionChange" :tableLoading="tableLoading" @pagination="pagination" - :total="total" ></PIMTable> </div> <el-dialog v-model="productDia" title="浜у搧" width="400px"> @@ -227,11 +226,11 @@ const tableData = ref([]); const tableLoading = ref(false); const isShowButton = ref(false); -const total = ref(0); const selectedRows = ref([]); const page = reactive({ current: 1, size: 10, + total: 0, }); const data = reactive({ form: { @@ -388,7 +387,7 @@ }).then((res) => { console.log("res", res); tableData.value = res.records; - total.value = res.total; + page.total = res.total; tableLoading.value = false; }); }; diff --git a/src/views/basicData/supplierManage/index.vue b/src/views/basicData/supplierManage/index.vue index 5aaed78..1412e8e 100644 --- a/src/views/basicData/supplierManage/index.vue +++ b/src/views/basicData/supplierManage/index.vue @@ -35,8 +35,6 @@ :isSelection="true" @selection-change="handleSelectionChange" :tableLoading="tableLoading" - @pagination="pagination" - :total="total" ></PIMTable> </div> <el-dialog @@ -300,8 +298,8 @@ const page = reactive({ current: 1, size: 10, + total: 0, }); -const total = ref(0); // 鐢ㄦ埛淇℃伅琛ㄥ崟寮规鏁版嵁 const operationType = ref(""); @@ -359,7 +357,7 @@ listSupplier({ ...searchForm.value, ...page }).then((res) => { tableLoading.value = false; tableData.value = res.data.records; - total.value = res.data.total; + page.total = res.data.total; }); }; const upload = reactive({ diff --git a/src/views/equipmentManagement/ledger/Form.vue b/src/views/equipmentManagement/ledger/Form.vue index 4b5308b..cb9f7e3 100644 --- a/src/views/equipmentManagement/ledger/Form.vue +++ b/src/views/equipmentManagement/ledger/Form.vue @@ -37,7 +37,9 @@ v-model="form.taxIncludingPriceUnit" placeholder="璇疯緭鍏ュ惈绋庡崟浠�" type="number" + maxlength="10" @change="mathNum" + @input="handleNumberInput" /> </el-form-item> </el-col> @@ -170,8 +172,22 @@ } }; +const handleNumberInput = (value) => { + // 绉婚櫎鎵�鏈夐潪鏁板瓧瀛楃 + let num = value.replace(/[^\d]/g, ""); + + // 闄愬埗闀垮害涓�10 + if (num.length > 10) { + num = num.slice(0, 10); + } + + // 鏇存柊鍊� + form.taxIncludingPriceUnit = num; +}; + defineExpose({ form, loadForm, + resetForm, }); </script> diff --git a/src/views/equipmentManagement/ledger/Modal.vue b/src/views/equipmentManagement/ledger/Modal.vue index 7bfe46c..e9ed16a 100644 --- a/src/views/equipmentManagement/ledger/Modal.vue +++ b/src/views/equipmentManagement/ledger/Modal.vue @@ -1,5 +1,5 @@ <template> - <el-dialog :title="modalOptions.title" v-model="visible"> + <el-dialog :title="modalOptions.title" v-model="visible" @close="close"> <Form ref="formRef"></Form> <template #footer> <el-button @click="closeModal">{{ modalOptions.cancelText }}</el-button> @@ -41,12 +41,17 @@ if (code == 200) { emits("success"); ElMessage({ message: "鎿嶄綔鎴愬姛", type: "success" }); - closeModal(); + close(); } else { loading.value = false; } }; +const close = () => { + closeModal(); + formRef.value.resetForm(); +}; + const loadForm = async (id) => { openModal(id); await nextTick(); diff --git a/src/views/equipmentManagement/ledger/index.vue b/src/views/equipmentManagement/ledger/index.vue index 83c416e..fceba64 100644 --- a/src/views/equipmentManagement/ledger/index.vue +++ b/src/views/equipmentManagement/ledger/index.vue @@ -22,10 +22,19 @@ <div> <el-button type="primary" @click="add" icon="Plus"> 鏂板 </el-button> <el-button @click="handleOut" icon="download">瀵煎嚭</el-button> + <el-button + type="danger" + icon="Delete" + :disabled="multipleList.length <= 0" + @click="deleteRow(multipleList.map((item) => item.id))" + > + 鎵归噺鍒犻櫎 + </el-button> </div> </div> <PIMTable rowKey="id" + isSelection :column="columns" :tableData="dataList" :page="{ @@ -33,6 +42,8 @@ size: pagination.pageSize, total: pagination.total, }" + @selection-change="handleSelectionChange" + @pagination="changePage" > <template #operation="{ row }"> <el-button type="primary" text @click="edit(row.id)" icon="editPen"> @@ -55,7 +66,7 @@ <script setup> import { usePaginationApi } from "@/hooks/usePaginationApi"; -import { Search } from "@element-plus/icons-vue"; +// import { Search } from "@element-plus/icons-vue"; import { getLedgerPage, delLedger } from "@/api/equipmentManagement/ledger"; import { onMounted, getCurrentInstance } from "vue"; import Modal from "./Modal.vue"; @@ -65,80 +76,94 @@ name: "璁惧鍙拌处", }); +// 琛ㄦ牸澶氶�夋閫変腑椤� +const multipleList = ref([]); const { proxy } = getCurrentInstance(); const modalRef = ref(); -const { filters, columns, dataList, pagination, getTableData, resetFilters } = - usePaginationApi( - getLedgerPage, +const { + filters, + columns, + dataList, + pagination, + getTableData, + resetFilters, + onCurrentChange, +} = usePaginationApi( + getLedgerPage, + { + searchText: undefined, + }, + [ { - searchText: undefined, + label: "璁惧鍚嶇О", + align: "center", + prop: "deviceName", }, - [ - { - label: "璁惧鍚嶇О", - align: "center", - prop: "deviceName", - }, - { - label: "瑙勬牸鍨嬪彿", - align: "center", - prop: "deviceModel", - }, - { - label: "渚涘簲鍟�", - align: "center", - prop: "supplierName", - }, - { - label: "鍗曚綅", - align: "center", - prop: "unit", - }, - { - label: "鏁伴噺", - align: "center", - prop: "number", - }, - { - label: "鍚◣鍗曚环", - align: "center", - prop: "taxIncludingPriceUnit", - }, - { - label: "鍚◣鎬讳环", - align: "center", - prop: "taxIncludingPriceTotal", - }, - { - label: "绋庣巼", - align: "center", - prop: "taxRate", - }, - { - label: "涓嶅惈绋庢�讳环", - align: "center", - prop: "unTaxIncludingPriceTotal", - }, - { - label: "褰曞叆浜�", - align: "center", - prop: "createUser", - }, - { - label: "褰曞叆鏃ユ湡", - align: "center", - prop: "createTime", - }, - { - fixed: "right", - label: "鎿嶄綔", - dataType: "slot", - slot: "operation", - align: "center", - width: "200px", - }, - ] - ); + { + label: "瑙勬牸鍨嬪彿", + align: "center", + prop: "deviceModel", + }, + { + label: "渚涘簲鍟�", + align: "center", + prop: "supplierName", + }, + { + label: "鍗曚綅", + align: "center", + prop: "unit", + }, + { + label: "鏁伴噺", + align: "center", + prop: "number", + }, + { + label: "鍚◣鍗曚环", + align: "center", + prop: "taxIncludingPriceUnit", + }, + { + label: "鍚◣鎬讳环", + align: "center", + prop: "taxIncludingPriceTotal", + }, + { + label: "绋庣巼", + align: "center", + prop: "taxRate", + }, + { + label: "涓嶅惈绋庢�讳环", + align: "center", + prop: "unTaxIncludingPriceTotal", + }, + { + label: "褰曞叆浜�", + align: "center", + prop: "createUser", + }, + { + label: "褰曞叆鏃ユ湡", + align: "center", + prop: "createTime", + }, + { + fixed: "right", + label: "鎿嶄綔", + dataType: "slot", + slot: "operation", + align: "center", + width: "200px", + }, + ] +); + +// 澶氶�夊悗鍋氫粈涔� +const handleSelectionChange = (selectionList) => { + multipleList.value = selectionList; +}; const add = () => { modalRef.value.openModal(); @@ -146,7 +171,10 @@ const edit = (id) => { modalRef.value.loadForm(id); }; - +const changePage = ({ page }) => { + pagination.currentPage = page; + onCurrentChange(page); +}; const deleteRow = (id) => { ElMessageBox.confirm("姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ枃浠�, 鏄惁缁х画?", "鎻愮ず", { confirmButtonText: "纭畾", diff --git a/src/views/equipmentManagement/repair/Form/MaintainForm.vue b/src/views/equipmentManagement/repair/Form/MaintainForm.vue index 75e97dd..bbb25c1 100644 --- a/src/views/equipmentManagement/repair/Form/MaintainForm.vue +++ b/src/views/equipmentManagement/repair/Form/MaintainForm.vue @@ -40,7 +40,8 @@ form.maintenanceName = data.maintenanceName ?? userStore.nickName; form.maintenanceResult = data.maintenanceResult; form.maintenanceTime = - data.maintenanceTime ?? dayjs().format("YYYY-MM-DD HH:mm:ss"); + dayjs(data.maintenanceTime).format("YYYY-MM-DD HH:mm:ss") ?? + dayjs().format("YYYY-MM-DD HH:mm:ss"); }; const getForm = () => { diff --git a/src/views/equipmentManagement/repair/Form/RepairForm.vue b/src/views/equipmentManagement/repair/Form/RepairForm.vue index 6ded5fe..1fadde4 100644 --- a/src/views/equipmentManagement/repair/Form/RepairForm.vue +++ b/src/views/equipmentManagement/repair/Form/RepairForm.vue @@ -57,12 +57,13 @@ <script setup> import useFormData from "@/hooks/useFormData"; import { getDeviceLedger } from "@/api/equipmentManagement/ledger"; -import { onMounted } from "vue"; +import useUserStore from "@/store/modules/user"; defineOptions({ name: "璁惧鎶ヤ慨琛ㄥ崟", }); +const userStore = useUserStore(); const deviceOptions = ref([]); const loadDeviceName = async () => { @@ -75,7 +76,7 @@ deviceName: undefined, // 璁惧鍚嶇О deviceModel: undefined, // 瑙勬牸鍨嬪彿 repairTime: undefined, // 鎶ヤ慨鏃ユ湡 - repairName: undefined, // 鎶ヤ慨浜� + repairName: userStore.nickName, // 鎶ヤ慨浜� remark: undefined, // 鏁呴殰鐜拌薄 }); @@ -97,9 +98,9 @@ form.remark = data.remark; }; -onMounted(() => { - loadDeviceName(); -}); +// onMounted(() => { +// loadDeviceName(); +// }); defineExpose({ loadDeviceName, diff --git a/src/views/equipmentManagement/repair/Modal/RepairModal.vue b/src/views/equipmentManagement/repair/Modal/RepairModal.vue index 586960d..3aba5fe 100644 --- a/src/views/equipmentManagement/repair/Modal/RepairModal.vue +++ b/src/views/equipmentManagement/repair/Modal/RepairModal.vue @@ -51,10 +51,17 @@ loading.value = false; }; +const openAdd = async () => { + openModal(); + await nextTick(); + await repairFormRef.value.loadDeviceName(); +}; + const openEdit = async (id) => { const { data } = await getRepairById(id); openModal(id); await nextTick(); + await repairFormRef.value.loadDeviceName(); await repairFormRef.value.setForm(data); }; @@ -64,7 +71,7 @@ }; defineExpose({ - openModal, + openAdd, openEdit, }); </script> diff --git a/src/views/equipmentManagement/repair/index.vue b/src/views/equipmentManagement/repair/index.vue index 2e75914..d734e1d 100644 --- a/src/views/equipmentManagement/repair/index.vue +++ b/src/views/equipmentManagement/repair/index.vue @@ -15,14 +15,14 @@ <el-button type="success" icon="Van" @click="addRepair"> 鏂板鎶ヤ慨 </el-button> - <!-- <el-button + <el-button type="danger" icon="Delete" :disabled="multipleList.length <= 0" @click="delRepairByIds(multipleList.map((item) => item.id))" > 鎵归噺鍒犻櫎 - </el-button> --> + </el-button> </div> </div> <PIMTable @@ -36,6 +36,7 @@ total: pagination.total, }" @selection-change="handleSelectionChange" + @pagination="changePage" > <template #statusRef="{ row }"> <el-tag v-if="row.status === 1" type="success">瀹岀粨</el-tag> @@ -87,72 +88,79 @@ const multipleList = ref([]); // 琛ㄦ牸閽╁瓙 -const { filters, columns, dataList, pagination, getTableData, resetFilters } = - usePaginationApi( - getRepairPage, +const { + filters, + columns, + dataList, + pagination, + getTableData, + resetFilters, + onCurrentChange, +} = usePaginationApi( + getRepairPage, + { + searchText: undefined, + }, + [ { - searchText: undefined, + label: "璁惧鍚嶇О", + align: "center", + prop: "deviceName", }, - [ - { - label: "璁惧鍚嶇О", - align: "center", - prop: "deviceName", - }, - { - label: "瑙勬牸鍨嬪彿", - align: "center", - prop: "deviceModel", - }, - { - label: "鎶ヤ慨鏃ユ湡", - align: "center", - prop: "repairTime", - formatData: (cell) => dayjs(cell).format("YYYY-MM-DD"), - }, - { - label: "鎶ヤ慨浜�", - align: "center", - prop: "repairName", - }, - { - label: "鏁呴殰鐜拌薄", - align: "center", - prop: "remark", - }, - { - label: "缁翠慨浜�", - align: "center", - prop: "maintenanceName", - }, - { - label: "缁翠慨缁撴灉", - align: "center", - prop: "maintenanceResult", - }, - { - label: "缁翠慨鏃ユ湡", - align: "center", - prop: "maintenanceTime", - formatData: (cell) => (cell ? dayjs(cell).format("YYYY-MM-DD") : ""), - }, - { - label: "鐘舵��", - align: "center", - prop: "status", - dataType: "slot", - slot: "statusRef", - }, - { - fixed: "right", - label: "鎿嶄綔", - dataType: "slot", - slot: "operation", - align: "center", - width: "200px", - }, - ] - ); + { + label: "瑙勬牸鍨嬪彿", + align: "center", + prop: "deviceModel", + }, + { + label: "鎶ヤ慨鏃ユ湡", + align: "center", + prop: "repairTime", + formatData: (cell) => dayjs(cell).format("YYYY-MM-DD"), + }, + { + label: "鎶ヤ慨浜�", + align: "center", + prop: "repairName", + }, + { + label: "鏁呴殰鐜拌薄", + align: "center", + prop: "remark", + }, + { + label: "缁翠慨浜�", + align: "center", + prop: "maintenanceName", + }, + { + label: "缁翠慨缁撴灉", + align: "center", + prop: "maintenanceResult", + }, + { + label: "缁翠慨鏃ユ湡", + align: "center", + prop: "maintenanceTime", + formatData: (cell) => (cell ? dayjs(cell).format("YYYY-MM-DD") : ""), + }, + { + label: "鐘舵��", + align: "center", + prop: "status", + dataType: "slot", + slot: "statusRef", + }, + { + fixed: "right", + label: "鎿嶄綔", + dataType: "slot", + slot: "operation", + align: "center", + width: "200px", + }, + ] +); // 澶氶�夊悗鍋氫粈涔� const handleSelectionChange = (selectionList) => { @@ -161,7 +169,7 @@ // 鏂板鎶ヤ慨 const addRepair = () => { - repairModalRef.value.openModal(); + repairModalRef.value.openAdd(); }; // 缂栬緫鎶ヤ慨 @@ -175,6 +183,11 @@ maintainModalRef.value.open(row.id, row); }; +const changePage = ({ page }) => { + pagination.currentPage = page; + onCurrentChange(page); +}; + // 鍗曡鍒犻櫎 const delRepairByIds = async (ids) => { ElMessageBox.confirm("纭鍒犻櫎鎶ヤ慨鏁版嵁, 姝ゆ搷浣滀笉鍙��?", "璀﹀憡", { diff --git a/src/views/equipmentManagement/upkeep/Form/MaintenanceForm.vue b/src/views/equipmentManagement/upkeep/Form/MaintenanceForm.vue index 4ff0237..bc3db70 100644 --- a/src/views/equipmentManagement/upkeep/Form/MaintenanceForm.vue +++ b/src/views/equipmentManagement/upkeep/Form/MaintenanceForm.vue @@ -46,7 +46,8 @@ form.maintenanceActuallyName = data.maintenanceActuallyName ?? userStore.nickName; form.maintenanceActuallyTime = - data.maintenanceActuallyTime ?? dayjs().format("YYYY-MM-DD HH:mm:ss"); + dayjs(data.maintenanceActuallyTime).format("YYYY-MM-DD HH:mm:ss") ?? + dayjs().format("YYYY-MM-DD HH:mm:ss"); form.maintenanceResult = data.maintenanceResult; }; diff --git a/src/views/equipmentManagement/upkeep/Form/PlanForm.vue b/src/views/equipmentManagement/upkeep/Form/PlanForm.vue index a2bd2ce..1d94b68 100644 --- a/src/views/equipmentManagement/upkeep/Form/PlanForm.vue +++ b/src/views/equipmentManagement/upkeep/Form/PlanForm.vue @@ -39,6 +39,7 @@ import useFormData from "@/hooks/useFormData"; import { getDeviceLedger } from "@/api/equipmentManagement/ledger"; import { onMounted } from "vue"; +import dayjs from "dayjs"; defineOptions({ name: "璁″垝琛ㄥ崟", diff --git a/src/views/equipmentManagement/upkeep/index.vue b/src/views/equipmentManagement/upkeep/index.vue index 5d3dcd2..35bd51f 100644 --- a/src/views/equipmentManagement/upkeep/index.vue +++ b/src/views/equipmentManagement/upkeep/index.vue @@ -19,6 +19,7 @@ type="danger" icon="Delete" :disabled="multipleList.length <= 0" + @click="delRepairByIds(multipleList.map((item) => item.id))" > 鎵归噺鍒犻櫎 </el-button> @@ -35,6 +36,7 @@ total: pagination.total, }" @selection-change="handleSelectionChange" + @pagination="changePage" > <template #maintenanceResultRef="{ row }"> <el-tag v-if="row.maintenanceResult === 1" type="success"> @@ -100,70 +102,78 @@ }; // 琛ㄦ牸閽╁瓙 -const { filters, columns, dataList, pagination, getTableData, resetFilters } = - usePaginationApi(getUpkeepPage, {}, [ - { - label: "璁惧鍚嶇О", - align: "center", - prop: "deviceName", - }, - { - label: "瑙勬牸鍨嬪彿", - align: "center", - prop: "deviceModel", - }, - { - label: "璁″垝淇濆吇鏃ユ湡", - align: "center", - prop: "maintenancePlanTime", - formatData: (cell) => dayjs(cell).format("YYYY-MM-DD"), - }, - { - label: "褰曞叆浜�", - align: "center", - prop: "createUserName", - }, - { - label: "褰曞叆鏃ユ湡", - align: "center", - prop: "createTime", - formatData: (cell) => dayjs(cell).format("YYYY-MM-DD HH:mm:ss"), - width: 200, - }, - { - label: "瀹為檯淇濆吇浜�", - align: "center", - prop: "maintenanceActuallyName", - }, - { - label: "瀹為檯淇濆吇鏃ユ湡", - align: "center", - prop: "maintenanceActuallyTime", - formatData: (cell) => dayjs(cell).format("YYYY-MM-DD HH:mm:ss"), - }, - { - label: "淇濆吇缁撴灉", - align: "center", - prop: "maintenanceResult", - dataType: "slot", - slot: "maintenanceResultRef", - }, - { - label: "鐘舵��", - align: "center", - prop: "status", - dataType: "slot", - slot: "statusRef", - }, - { - fixed: "right", - label: "鎿嶄綔", - dataType: "slot", - slot: "operation", - align: "center", - width: "200px", - }, - ]); +const { + filters, + columns, + dataList, + pagination, + getTableData, + resetFilters, + onCurrentChange, +} = usePaginationApi(getUpkeepPage, {}, [ + { + label: "璁惧鍚嶇О", + align: "center", + prop: "deviceName", + }, + { + label: "瑙勬牸鍨嬪彿", + align: "center", + prop: "deviceModel", + }, + { + label: "璁″垝淇濆吇鏃ユ湡", + align: "center", + prop: "maintenancePlanTime", + formatData: (cell) => dayjs(cell).format("YYYY-MM-DD"), + }, + { + label: "褰曞叆浜�", + align: "center", + prop: "createUserName", + }, + { + label: "褰曞叆鏃ユ湡", + align: "center", + prop: "createTime", + formatData: (cell) => dayjs(cell).format("YYYY-MM-DD HH:mm:ss"), + width: 200, + }, + { + label: "瀹為檯淇濆吇浜�", + align: "center", + prop: "maintenanceActuallyName", + }, + { + label: "瀹為檯淇濆吇鏃ユ湡", + align: "center", + prop: "maintenanceActuallyTime", + formatData: (cell) => + cell ? dayjs(cell).format("YYYY-MM-DD HH:mm:ss") : "-", + }, + { + label: "淇濆吇缁撴灉", + align: "center", + prop: "maintenanceResult", + dataType: "slot", + slot: "maintenanceResultRef", + }, + { + label: "鐘舵��", + align: "center", + prop: "status", + dataType: "slot", + slot: "statusRef", + }, + { + fixed: "right", + label: "鎿嶄綔", + dataType: "slot", + slot: "operation", + align: "center", + width: "200px", + }, +]); // 鏂板淇濆吇 const addMaintain = () => { @@ -181,6 +191,11 @@ planModalRef.value.openEdit(id); }; +const changePage = ({ page }) => { + pagination.currentPage = page; + onCurrentChange(page); +}; + // 鍗曡鍒犻櫎 const delRepairByIds = async (ids) => { ElMessageBox.confirm("纭鍒犻櫎鎶ヤ慨鏁版嵁, 姝ゆ搷浣滀笉鍙��?", "璀﹀憡", { -- Gitblit v1.9.3