From fde27654b1b21a8d2c149d3d12f86c3c7314c091 Mon Sep 17 00:00:00 2001 From: lishenao <3065849776@qq.com> Date: 星期四, 03 七月 2025 15:00:11 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- src/views/basicData/supplierManage/index.vue | 6 src/views/basicData/product/index.vue | 5 src/views/personnelManagement/employeeRecord/components/formDia.vue | 2 src/views/qualityManagement/rawMaterialInspection/index.vue | 224 ++++++++ src/views/personnelManagement/contractManagement/index.vue | 6 src/views/equipmentManagement/ledger/Form.vue | 16 src/views/basicData/customerFile/index.vue | 4 src/views/equipmentManagement/upkeep/Form/MaintenanceForm.vue | 3 src/views/personnelManagement/contractManagement/components/formDia.vue | 2 src/views/inventoryManagement/receiptManagement/index.vue | 149 ++--- src/views/inventoryManagement/stockManagement/index.vue | 19 src/views/qualityManagement/metricMaintenance/index.vue | 176 +++++- src/views/equipmentManagement/ledger/index.vue | 172 +++-- src/views/inventoryManagement/dispatchLog/index.vue | 224 -------- src/views/personnelManagement/onboarding/index.vue | 6 src/views/equipmentManagement/upkeep/index.vue | 143 +++-- src/views/personnelManagement/onboarding/components/formDia.vue | 2 src/views/personnelManagement/employeeRecord/index.vue | 6 src/views/equipmentManagement/repair/Modal/RepairModal.vue | 9 src/views/equipmentManagement/repair/index.vue | 147 +++-- src/views/inventoryManagement/issueManagement/index.vue | 4 src/views/equipmentManagement/repair/Form/RepairForm.vue | 11 src/api/qualityManagement/metricMaintenance.js | 34 + src/views/qualityManagement/rawMaterialInspection/components/filesDia.vue | 11 src/views/personnelManagement/dimission/components/formDia.vue | 2 src/views/equipmentManagement/repair/Form/MaintainForm.vue | 3 src/views/qualityManagement/rawMaterialInspection/components/formDia.vue | 107 ++++ src/views/equipmentManagement/ledger/Modal.vue | 9 src/views/equipmentManagement/upkeep/Form/PlanForm.vue | 1 src/views/personnelManagement/dimission/index.vue | 6 30 files changed, 916 insertions(+), 593 deletions(-) diff --git a/src/api/qualityManagement/metricMaintenance.js b/src/api/qualityManagement/metricMaintenance.js new file mode 100644 index 0000000..8857387 --- /dev/null +++ b/src/api/qualityManagement/metricMaintenance.js @@ -0,0 +1,34 @@ +import request from '@/utils/request' + +// 鏌ヨ鎸囨爣鍒楄〃 +export function qualityTestStandardListPage(query) { + return request({ + url: '/quality/qualityTestStandard/listPage', + method: 'get', + params: query, + }) +} +// 鏂板鎸囨爣鍒楄〃 +export function qualityTestStandardAdd(query) { + return request({ + url: '/quality/qualityTestStandard/add', + method: 'post', + data: query, + }) +} +// 淇敼鎸囨爣鍒楄〃 +export function qualityTestStandardUpdate(query) { + return request({ + url: '/quality/qualityTestStandard/update', + method: 'post', + data: query, + }) +} +// 鍒犻櫎鎸囨爣鍒楄〃 +export function qualityTestStandardDel(query) { + return request({ + url: '/quality/qualityTestStandard/del', + method: 'delete', + data: query, + }) +} \ No newline at end of file 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..b6d9229 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("纭鍒犻櫎鎶ヤ慨鏁版嵁, 姝ゆ搷浣滀笉鍙��?", "璀﹀憡", { diff --git a/src/views/inventoryManagement/dispatchLog/index.vue b/src/views/inventoryManagement/dispatchLog/index.vue index 38475bd..1e56a3d 100644 --- a/src/views/inventoryManagement/dispatchLog/index.vue +++ b/src/views/inventoryManagement/dispatchLog/index.vue @@ -16,7 +16,7 @@ > </div> <div> - <el-button type="primary" @click="openForm('add')">鏂板</el-button> + <!-- <el-button type="primary" @click="openForm('add')">鏂板</el-button> --> <el-button @click="handleOut">瀵煎嚭</el-button> <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button> </div> @@ -75,18 +75,24 @@ <el-table-column label="鍚◣鍗曚环" prop="taxInclusiveUnitPrice" + label="鍚◣鍗曚环(鍏�)" + prop="entryDate" width="100" show-overflow-tooltip /> <el-table-column label="鍚◣鎬讳环" prop="taxInclusiveTotalPrice" + label="鍚◣鎬讳环(鍏�)" + prop="executionDate" width="100" show-overflow-tooltip /> <el-table-column label="绋庣巼" prop="taxRate" + label="绋庣巼(%)" + prop="executionDate" width="100" show-overflow-tooltip /> @@ -94,6 +100,9 @@ label="涓嶅惈绋庢�讳环" prop="taxExclusiveTotalPrice" width="100" + label="涓嶅惈绋庢�讳环(鍏�)" + prop="executionDate" + width="180" show-overflow-tooltip /> <el-table-column @@ -102,7 +111,7 @@ width="80" show-overflow-tooltip /> - <el-table-column + <!-- <el-table-column fixed="right" label="鎿嶄綔" min-width="60" @@ -117,7 +126,7 @@ >缂栬緫</el-button > </template> - </el-table-column> + </el-table-column> --> </el-table> <pagination v-show="total > 0" @@ -128,152 +137,6 @@ @pagination="paginationChange" /> </div> - <el-dialog - v-model="dialogFormVisible" - :title="operationType === 'add' ? '鏂板鍑哄簱' : '缂栬緫鍑哄簱'" - width="70%" - @close="closeDia" - > - <el-form - :model="form" - label-width="140px" - label-position="top" - :rules="rules" - ref="formRef" - > - <el-row :gutter="30"> - <el-col :span="12"> - <el-form-item label="渚涘簲鍟嗗悕绉帮細" prop="salesContractNo"> - <el-input - v-model="form.salesContractNo" - placeholder="璇疯緭鍏�" - clearable - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="浜у搧澶х被锛�" prop="salesman"> - <el-select v-model="form.salesman" placeholder="璇烽�夋嫨" clearable> - <el-option - v-for="item in userList" - :key="item.nickName" - :label="item.nickName" - :value="item.nickName" - /> - </el-select> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="30"> - <el-col :span="12"> - <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="customerContractNo"> - <el-input - v-model="form.customerContractNo" - placeholder="璇疯緭鍏�" - clearable - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="鍗曚綅锛�" prop="customerId"> - <el-input - v-model="form.customerContractNo" - placeholder="璇疯緭鍏�" - clearable - /> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="30"> - <el-col :span="12"> - <el-form-item label="鍑哄簱鏃堕棿锛�" prop="projectName"> - <el-date-picker - style="width: 100%" - v-model="form.entryDate" - value-format="YYYY-MM-DD" - format="YYYY-MM-DD" - type="date" - placeholder="璇烽�夋嫨" - clearable - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="鍑哄簱鏁伴噺锛�" prop="customerContractNo"> - <el-input - v-model="form.customerContractNo" - placeholder="璇疯緭鍏�" - clearable - /> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="30"> - <el-col :span="12"> - <el-form-item label="鍚◣鍗曚环锛�" prop="customerId"> - <el-input - v-model="form.customerContractNo" - placeholder="璇疯緭鍏�" - clearable - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="鍚◣鎬讳环锛�" prop="customerContractNo"> - <el-input - v-model="form.customerContractNo" - placeholder="璇疯緭鍏�" - clearable - /> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="30"> - <el-col :span="12"> - <el-form-item label="绋庣巼锛�" prop="customerId"> - <el-input - v-model="form.customerContractNo" - placeholder="璇疯緭鍏�" - clearable - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="涓嶅惈绋庢�讳环锛�" prop="entryDate"> - <el-input - v-model="form.customerContractNo" - placeholder="璇疯緭鍏�" - clearable - /> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="30"> - <el-col :span="12"> - <el-form-item label="鍑哄簱浜猴細" prop="entryPerson"> - <el-select - v-model="form.entryPerson" - placeholder="璇烽�夋嫨" - clearable - > - <el-option - v-for="item in userList" - :key="item.userId" - :label="item.nickName" - :value="item.userId" - /> - </el-select> - </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="closeDia">鍙栨秷</el-button> - </div> - </template> - </el-dialog> </div> </template> @@ -343,7 +206,7 @@ inboundQuantity: [{ required: true, message: '璇疯緭鍏ュ叆搴撴暟閲�', trigger: 'blur' }] }, }); -const { searchForm, form, rules } = toRefs(data); +const { searchForm } = toRefs(data); // 鏌ヨ鍒楄〃 /** 鎼滅储鎸夐挳鎿嶄綔 */ @@ -400,67 +263,6 @@ "taxInclusiveTotalPrice", "taxExclusiveTotalPrice", ]); -}; - -// 鎵撳紑寮规 -const openForm = async (type, row) => { - operationType.value = type; - form.value = {}; - productData.value = []; - let userLists = await userListNoPage(); - userList.value = userLists.data; - customerList().then((res) => { - customerOption.value = res; - }); - console.log("userStore.id", userStore.id); - form.value.entryPerson = userStore.id; - if (type === "edit") { - currentId.value = row.id; - getSalesLedgerWithProducts({ id: row.id, type: 1 }).then((res) => { - form.value = { ...res }; - form.value.entryPerson = Number(res.entryPerson); - productData.value = form.value.productData; - fileList.value = form.value.salesLedgerFiles; - }); - } - // let userAll = await userStore.getInfo() - // userList.value.forEach(element => { - // if(userAll.user.nickName === element.nickName && userAll.user.userName === element.userName) { - // form.value.entryPerson = userAll.user.userId // 璁剧疆榛樿涓氬姟鍛樹负褰撳墠鐢ㄦ埛 - // } - // }); - form.value.entryDate = getCurrentDate(); // 璁剧疆榛樿褰曞叆鏃ユ湡涓哄綋鍓嶆棩鏈� - dialogFormVisible.value = true; -}; - -// 鎻愪氦琛ㄥ崟 -const submitForm = () => { - proxy.$refs["formRef"].validate((valid) => { - if (valid) { - if (productData.value.length > 0) { - form.value.productData = proxy.HaveJson(productData.value); - } else { - proxy.$modal.msgWarning("璇锋坊鍔犱骇鍝佷俊鎭�"); - return; - } - let tempFileIds = []; - if (fileList.value.length > 0) { - tempFileIds = fileList.value.map((item) => item.tempId); - } - form.value.tempFileIds = tempFileIds; - form.value.type = 1; - addOrUpdateSalesLedger(form.value).then((res) => { - proxy.$modal.msgSuccess("鎻愪氦鎴愬姛"); - closeDia(); - getList(); - }); - } - }); -}; -// 鍏抽棴寮规 -const closeDia = () => { - proxy.resetForm("formRef"); - dialogFormVisible.value = false; }; // 瀵煎嚭 diff --git a/src/views/inventoryManagement/issueManagement/index.vue b/src/views/inventoryManagement/issueManagement/index.vue index e7b8d6a..e513a63 100644 --- a/src/views/inventoryManagement/issueManagement/index.vue +++ b/src/views/inventoryManagement/issueManagement/index.vue @@ -10,7 +10,7 @@ <div> <!-- <el-button type="primary" @click="openForm('add')">鏂板鍑哄簱</el-button> --> <el-button @click="handleOut">瀵煎嚭</el-button> - <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button> + <!-- <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button> --> </div> </div> <div class="table_list"> @@ -33,7 +33,7 @@ <el-table-column label="鍏ュ簱浜�" prop="nickName" width="80" show-overflow-tooltip /> <el-table-column fixed="right" label="鎿嶄綔" min-width="60" align="center"> <template #default="scope"> - <el-button link type="primary" size="small" @click="openForm(scope.row);">鍑哄簱</el-button> + <el-button link type="primary" size="small" @click="openForm(scope.row);">棰嗙敤</el-button> </template> </el-table-column> </el-table> diff --git a/src/views/inventoryManagement/receiptManagement/index.vue b/src/views/inventoryManagement/receiptManagement/index.vue index 56c25bf..7f877fa 100644 --- a/src/views/inventoryManagement/receiptManagement/index.vue +++ b/src/views/inventoryManagement/receiptManagement/index.vue @@ -40,98 +40,54 @@ <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper" :page="page.current" :limit="page.size" @pagination="paginationChange" /> </div> - <el-dialog v-model="dialogFormVisible" :title="operationType === 'add' ? '鏂板鍏ュ簱' : '缂栬緫鍏ュ簱'" width="70%" @close="closeDia"> <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef"> - <el-row :gutter="30"> - <el-col :span="12"> - <el-form-item label="浜у搧澶х被锛�" prop="productId"> - <el-select v-model="form.productId" placeholder="璇烽�夋嫨" clearable filterable @change="handleProductChange"> - <el-option v-for="item in productList" :key="item.id" :label="item.productName" - :value="item.id" /> - </el-select> + <el-form-item label="閲囪喘璁㈠崟鍙�" prop="salesContractNo"> + <el-input v-model="form.salesContractNo" placeholder="璇疯緭鍏�" clearable /> </el-form-item> - </el-col> - - <el-col :span="12"> - <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="productManageId"> - <el-select v-model="form.productModelId" placeholder="璇峰厛閫夋嫨浜у搧澶х被" clearable filterable :disabled="!form.productId" - @change="handleModelChange"> - <el-option v-for="item in productModelList" :key="item.id" :label="item.model" - :value="item.id" /> - </el-select> - </el-form-item> - </el-col> - </el-row> - - <el-row :gutter="30"> - <el-col :span="12"> - <el-form-item label="渚涘簲鍟嗗悕绉帮細" prop="salesContractNo"> - <el-select v-model="form.supplierId" placeholder="璇烽�夋嫨" clearable> - <el-option v-for="item in supplierLists" :key="item.id" :label="item.supplierName" - :value="item.id" /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="鍗曚綅锛�" prop="customerId"> - <el-input v-model="form.unit" placeholder="璇疯緭鍏�" clearable /> - </el-form-item> - </el-col> - </el-row> - - <el-row :gutter="30"> - <el-col :span="12"> - <el-form-item label="鍏ュ簱鏃堕棿锛�" prop="projectName"> - <el-date-picker style="width: 100%" v-model="form.inboundTime" value-format="YYYY-MM-DD" format="YYYY-MM-DD" - type="date" placeholder="璇烽�夋嫨" clearable /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="鍏ュ簱鎵规锛�" prop="entryPerson"> - <el-input v-model="form.inboundBatch" placeholder="璇疯緭鍏�" clearable /> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="30"> - <el-col :span="12"> - <el-form-item label="鍏ュ簱鏁伴噺锛�" prop="customerContractNo"> - <el-input v-model="form.inboundQuantity" placeholder="璇疯緭鍏�" clearable /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="鍚◣鍗曚环锛�" prop="customerId"> - <el-input v-model="form.taxInclusiveUnitPrice" placeholder="璇疯緭鍏�" clearable /> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="30"> - <el-col :span="12"> - <el-form-item label="鍚◣鎬讳环锛�" prop="customerContractNo"> - <el-input v-model="form.taxInclusiveTotalPrice" placeholder="璇疯緭鍏�" clearable /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="绋庣巼锛�" prop="customerId"> - <el-input v-model="form.taxRate" placeholder="璇疯緭鍏�" clearable /> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="30"> - <el-col :span="12"> - <el-form-item label="涓嶅惈绋庢�讳环锛�" prop="entryDate"> - <el-input v-model="form.taxExclusiveTotalPrice" placeholder="璇疯緭鍏�" clearable /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="鍏ュ簱浜猴細" prop="entryPerson"> - <el-select v-model="form.nickName" placeholder="璇烽�夋嫨" clearable> - <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId" /> - </el-select> - </el-form-item> - </el-col> - </el-row> + <el-table + :data="productData" + border + @selection-change="productSelected" + > + <el-table-column align="center" type="selection" width="55" /> + <el-table-column + align="center" + label="搴忓彿" + type="index" + width="60" + /> + <el-table-column label="浜у搧澶х被" prop="productCategory" /> + <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" /> + <el-table-column label="鍗曚綅" prop="unit" width="70" /> + <el-table-column label="閲囪喘鏁伴噺" prop="quantity" width="100" /> + <el-table-column label="寰呭叆搴撴暟閲�" prop="quantity0" width="100" /> + <el-table-column label="鏈鍏ュ簱鏁伴噺" prop="quantityStock" width="120"> + <template #default="scope"> + <el-input v-model="scope.row.quantityStock" type="number" :min="0" :max="scope.row.quantity0" /> + </template> + </el-table-column> + <el-table-column label="绋庣巼(%)" prop="taxRate" width="120" /> + <el-table-column + label="鍚◣鍗曚环(鍏�)" + prop="taxInclusiveUnitPrice" + :formatter="formattedNumber" + width="150" + /> + <el-table-column + label="鍚◣鎬讳环(鍏�)" + prop="taxInclusiveTotalPrice" + :formatter="formattedNumber" + width="150" + /> + <el-table-column + label="涓嶅惈绋庢�讳环(鍏�)" + prop="taxExclusiveTotalPrice" + :formatter="formattedNumber" + width="150" + /> + </el-table> </el-form> <template #footer> <div class="dialog-footer"> @@ -160,7 +116,6 @@ import {modelListPage, productTreeList} from "@/api/basicData/product.js"; const userStore = useUserStore() const { proxy } = getCurrentInstance() - const tableData = ref([]) const selectedRows = ref([]) const userList = ref([]) @@ -177,7 +132,6 @@ size: 100, }) const total = ref(0) -// const fileList = ref([]) // 鐢ㄦ埛淇℃伅琛ㄥ崟寮规鏁版嵁 const operationType = ref('') @@ -228,7 +182,6 @@ taxRate: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], } }) - const { searchForm, form, rules } = toRefs(data) // 鏌ヨ鍒楄〃 @@ -237,13 +190,11 @@ page.current = 1 getList() } - const paginationChange = (obj) => { page.current = obj.page; page.size = obj.limit; getList() } - const getList = () => { tableLoading.value = true getStockInPage({ ...searchForm.value, ...page }).then(res => { @@ -289,7 +240,10 @@ } finally { loadingProducts.value = false; } + return null; // 娌℃湁鎵惧埌鑺傜偣锛岃繑鍥瀗ull }; +// 琛ㄦ牸閫夋嫨鏁版嵁 +const handleSelectionChange = (selection) => { // 鍔犺浇瑙勬牸鍨嬪彿鍒楄〃 const loadProductModels = async (productId) => { @@ -517,6 +471,15 @@ const day = String(today.getDate()).padStart(2, '0'); return `${year}-${month}-${day}`; } + +const productSelectedRows = ref([]) +const productSelected = (selectedRows) => { + productSelectedRows.value = selectedRows; +}; + +const formattedNumber = (row, column, cellValue) => { + return parseFloat(cellValue).toFixed(2); +}; onMounted(() => { getList() }) diff --git a/src/views/inventoryManagement/stockManagement/index.vue b/src/views/inventoryManagement/stockManagement/index.vue index 452f945..53680f6 100644 --- a/src/views/inventoryManagement/stockManagement/index.vue +++ b/src/views/inventoryManagement/stockManagement/index.vue @@ -8,7 +8,7 @@ <el-button type="primary" @click="handleQuery" style="margin-left: 10px">鎼滅储</el-button> </div> <div> - <el-button type="primary" @click="openForm('add')">鏂板</el-button> + <!-- <el-button type="primary" @click="openForm('add')">鏂板</el-button> --> <el-button @click="handleOut">瀵煎嚭</el-button> <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button> </div> @@ -81,49 +81,40 @@ type="date" placeholder="璇烽�夋嫨" clearable /> </el-form-item> </el-col> - <el-col :span="12"> <el-form-item label="鍏ュ簱鏃堕棿锛�" prop="projectName"> <el-date-picker style="width: 100%" v-model="form.inboundTime" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="date" placeholder="璇烽�夋嫨" clearable /> </el-form-item> </el-col> - </el-row> <el-row :gutter="30"> - <el-col :span="12"> - <el-form-item label="搴撳瓨鏁伴噺锛�" prop="customerContractNo"> - <el-input v-model="form.stockQuantity" placeholder="璇疯緭鍏�" clearable /> - </el-form-item> - </el-col> <el-col :span="12"> <el-form-item label="鍚◣鍗曚环锛�" prop="customerId"> <el-input v-model="form.taxInclusiveUnitPrice" placeholder="璇疯緭鍏�" clearable /> </el-form-item> </el-col> - - </el-row> - <el-row :gutter="30"> <el-col :span="12"> <el-form-item label="鍚◣鎬讳环锛�" prop="customerContractNo"> <el-input v-model="form.taxInclusiveTotalPrice" placeholder="璇疯緭鍏�" clearable /> </el-form-item> </el-col> + </el-row> + <el-row :gutter="30"> <el-col :span="12"> <el-form-item label="绋庣巼锛�" prop="customerId"> <el-input v-model="form.taxRate" placeholder="璇疯緭鍏�" clearable /> </el-form-item> </el-col> - - </el-row> - <el-row :gutter="30"> <el-col :span="12"> <el-form-item label="涓嶅惈绋庢�讳环锛�" prop="entryDate"> <el-input v-model="form.taxExclusiveTotalPrice" placeholder="璇疯緭鍏�" clearable /> </el-form-item> </el-col> + </el-row> + <el-row :gutter="30"> <el-col :span="12"> <el-form-item label="鍑哄簱浜猴細" prop="entryPerson"> diff --git a/src/views/personnelManagement/contractManagement/components/formDia.vue b/src/views/personnelManagement/contractManagement/components/formDia.vue index 71675a3..6538273 100644 --- a/src/views/personnelManagement/contractManagement/components/formDia.vue +++ b/src/views/personnelManagement/contractManagement/components/formDia.vue @@ -26,7 +26,7 @@ import {ref} from "vue"; import {staffOnJobInfo} from "@/api/personnelManagement/employeeRecord.js"; const { proxy } = getCurrentInstance() -const emit = defineEmits(['confirm']) +const emit = defineEmits(['close']) const dialogFormVisible = ref(false); const operationType = ref('') diff --git a/src/views/personnelManagement/contractManagement/index.vue b/src/views/personnelManagement/contractManagement/index.vue index f1fe264..623d675 100644 --- a/src/views/personnelManagement/contractManagement/index.vue +++ b/src/views/personnelManagement/contractManagement/index.vue @@ -31,7 +31,7 @@ @selection-change="handleSelectionChange" :tableLoading="tableLoading" @pagination="pagination" - :total="total" + :total="page.total" ></PIMTable> </div> <form-dia ref="formDia" @close="handleQuery"></form-dia> @@ -164,8 +164,8 @@ const page = reactive({ current: 1, size: 100, + total: 0, }); -const total = ref(0); const formDia = ref() const { proxy } = getCurrentInstance() @@ -185,7 +185,7 @@ staffOnJobListPage({...page, ...searchForm.value,}).then(res => { tableLoading.value = false; tableData.value = res.data.records - total.value = res.data.total; + page.total = res.data.total; }).catch(err => { tableLoading.value = false; }) diff --git a/src/views/personnelManagement/dimission/components/formDia.vue b/src/views/personnelManagement/dimission/components/formDia.vue index 6b481df..dc96e2f 100644 --- a/src/views/personnelManagement/dimission/components/formDia.vue +++ b/src/views/personnelManagement/dimission/components/formDia.vue @@ -137,7 +137,7 @@ import {ref} from "vue"; import {getStaffJoinInfo, staffJoinAdd, staffJoinUpdate} from "@/api/personnelManagement/onboarding.js"; const { proxy } = getCurrentInstance() -const emit = defineEmits(['confirm']) +const emit = defineEmits(['close']) const dialogFormVisible = ref(false); const operationType = ref('') diff --git a/src/views/personnelManagement/dimission/index.vue b/src/views/personnelManagement/dimission/index.vue index ae4c531..ccf43da 100644 --- a/src/views/personnelManagement/dimission/index.vue +++ b/src/views/personnelManagement/dimission/index.vue @@ -31,7 +31,7 @@ @selection-change="handleSelectionChange" :tableLoading="tableLoading" @pagination="pagination" - :total="total" + :total="page.total" ></PIMTable> </div> <form-dia ref="formDia" @close="handleQuery"></form-dia> @@ -163,8 +163,8 @@ const page = reactive({ current: 1, size: 100, + total: 0, }); -const total = ref(0); const formDia = ref() const { proxy } = getCurrentInstance() @@ -184,7 +184,7 @@ staffJoinListPage({...page, ...searchForm.value, staffState: 0}).then(res => { tableLoading.value = false; tableData.value = res.data.records - total.value = res.data.total; + page.total = res.data.total; }).catch(err => { tableLoading.value = false; }) diff --git a/src/views/personnelManagement/employeeRecord/components/formDia.vue b/src/views/personnelManagement/employeeRecord/components/formDia.vue index 71675a3..6538273 100644 --- a/src/views/personnelManagement/employeeRecord/components/formDia.vue +++ b/src/views/personnelManagement/employeeRecord/components/formDia.vue @@ -26,7 +26,7 @@ import {ref} from "vue"; import {staffOnJobInfo} from "@/api/personnelManagement/employeeRecord.js"; const { proxy } = getCurrentInstance() -const emit = defineEmits(['confirm']) +const emit = defineEmits(['close']) const dialogFormVisible = ref(false); const operationType = ref('') diff --git a/src/views/personnelManagement/employeeRecord/index.vue b/src/views/personnelManagement/employeeRecord/index.vue index af2dca8..f1e04db 100644 --- a/src/views/personnelManagement/employeeRecord/index.vue +++ b/src/views/personnelManagement/employeeRecord/index.vue @@ -31,7 +31,7 @@ @selection-change="handleSelectionChange" :tableLoading="tableLoading" @pagination="pagination" - :total="total" + :total="page.total" ></PIMTable> </div> <form-dia ref="formDia" @close="handleQuery"></form-dia> @@ -164,8 +164,8 @@ const page = reactive({ current: 1, size: 100, + total: 0 }); -const total = ref(0); const formDia = ref() const { proxy } = getCurrentInstance() @@ -185,7 +185,7 @@ staffOnJobListPage({...page, ...searchForm.value, staffState: 1}).then(res => { tableLoading.value = false; tableData.value = res.data.records - total.value = res.data.total; + page.total = res.data.total; }).catch(err => { tableLoading.value = false; }) diff --git a/src/views/personnelManagement/onboarding/components/formDia.vue b/src/views/personnelManagement/onboarding/components/formDia.vue index ba9dd6f..4a7dd77 100644 --- a/src/views/personnelManagement/onboarding/components/formDia.vue +++ b/src/views/personnelManagement/onboarding/components/formDia.vue @@ -137,7 +137,7 @@ import {ref} from "vue"; import {getStaffJoinInfo, staffJoinAdd, staffJoinUpdate} from "@/api/personnelManagement/onboarding.js"; const { proxy } = getCurrentInstance() -const emit = defineEmits(['confirm']) +const emit = defineEmits(['close']) const dialogFormVisible = ref(false); const operationType = ref('') diff --git a/src/views/personnelManagement/onboarding/index.vue b/src/views/personnelManagement/onboarding/index.vue index 88cbed1..f7ddc71 100644 --- a/src/views/personnelManagement/onboarding/index.vue +++ b/src/views/personnelManagement/onboarding/index.vue @@ -31,7 +31,7 @@ @selection-change="handleSelectionChange" :tableLoading="tableLoading" @pagination="pagination" - :total="total" + :total="page.total" ></PIMTable> </div> <form-dia ref="formDia" @close="handleQuery"></form-dia> @@ -164,8 +164,8 @@ const page = reactive({ current: 1, size: 100, + total: 0, }); -const total = ref(0); const formDia = ref() const { proxy } = getCurrentInstance() @@ -185,7 +185,7 @@ staffJoinListPage({...page, ...searchForm.value, staffState: 1}).then(res => { tableLoading.value = false; tableData.value = res.data.records - total.value = res.data.total; + page.total = res.data.total; }).catch(err => { tableLoading.value = false; }) diff --git a/src/views/qualityManagement/metricMaintenance/index.vue b/src/views/qualityManagement/metricMaintenance/index.vue index 1c2b207..bdc672d 100644 --- a/src/views/qualityManagement/metricMaintenance/index.vue +++ b/src/views/qualityManagement/metricMaintenance/index.vue @@ -51,7 +51,7 @@ <el-button type="primary" @click="openModelDia('add')"> 鏂板妫�娴嬫寚鏍� </el-button> - <ImportExcel @uploadSuccess="getModelList" /> + <el-button @click="handleOut">瀵煎嚭</el-button> <el-button type="danger" @click="handleDelete" @@ -70,18 +70,88 @@ @selection-change="handleSelectionChange" :tableLoading="tableLoading" @pagination="pagination" - :total="total" + :total="page.total" ></PIMTable> </div> + <el-dialog + v-model="modelDia" + title="妫�娴嬫寚鏍�" + width="400px" + @close="closeModelDia" + > + <el-form + :model="modelForm" + label-width="140px" + label-position="top" + :rules="modelRules" + ref="modelFormRef" + > + <el-row> + <el-col :span="24"> + <el-form-item label="鎸囨爣锛�" prop="parameterItem"> + <el-input + v-model="modelForm.parameterItem" + placeholder="璇疯緭鍏ユ寚鏍�" + clearable + /> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="24"> + <el-form-item label="鍗曚綅锛�" prop="unit"> + <el-input + v-model="modelForm.unit" + placeholder="璇疯緭鍏ュ崟浣�" + clearable + /> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="24"> + <el-form-item label="鏍囧噯鍊硷細" prop="standardValue"> + <el-input + v-model="modelForm.standardValue" + placeholder="璇疯緭鍏ユ爣鍑嗗��" + clearable + /> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="24"> + <el-form-item label="鍐呮帶鍊硷細" prop="controlValue"> + <el-input + v-model="modelForm.controlValue" + placeholder="璇疯緭鍏ュ唴鎺у��" + clearable + /> + </el-form-item> + </el-col> + </el-row> + </el-form> + <template #footer> + <div class="dialog-footer"> + <el-button type="primary" @click="submitModelForm">纭</el-button> + <el-button @click="closeModelDia">鍙栨秷</el-button> + </div> + </template> + </el-dialog> </div> </template> <script setup> import {ref} from "vue"; -import {delProductModel, modelListPage, productTreeList} from "@/api/basicData/product.js"; +import {addOrEditProductModel, delProductModel, modelListPage, productTreeList} from "@/api/basicData/product.js"; import ImportExcel from "@/views/basicData/product/ImportExcel/index.vue"; import {ElMessageBox} from "element-plus"; - +import { + qualityTestStandardAdd, qualityTestStandardDel, + qualityTestStandardListPage, + qualityTestStandardUpdate +} from "@/api/qualityManagement/metricMaintenance.js"; +const { proxy } = getCurrentInstance(); // 鏍� const search = ref(""); const treeLoad = ref(false); @@ -92,15 +162,14 @@ // 鎸囨爣琛ㄦ牸 const tableData = ref([]); const tableLoading = ref(false); -const total = ref(0); const page = reactive({ current: 1, size: 10, }); const tableColumn = ref([ { - label: "瑙勬牸鍨嬪彿", - prop: "model", + label: "鎸囨爣", + prop: "parameterItem", }, { label: "鍗曚綅", @@ -108,11 +177,11 @@ }, { label: "鏍囧噯鍊�", - prop: "unit", + prop: "standardValue", }, { label: "鍐呮帶鍊�", - prop: "unit", + prop: "controlValue", }, { dataType: "action", @@ -129,41 +198,38 @@ ], }, ]); +const selectedRows = ref([]); // 鎸囨爣寮规 const modelDia = ref(false); const modelOperationType = ref(""); const data = reactive({ - form: { - productName: "", - }, - rules: { - productName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], - }, modelForm: { - model: "", + parameterItem: "", unit: "", + standardValue: "", + controlValue: "", }, modelRules: { - model: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + parameterItem: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], unit: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + standardValue: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + controlValue: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], }, }); -const { form, rules, modelForm, modelRules } = toRefs(data); +const { modelForm, modelRules } = toRefs(data); // 鏌ヨ浜у搧鏍� const getProductTreeList = () => { treeLoad.value = true; - productTreeList() - .then((res) => { - list.value = res; - list.value.forEach((a) => { - expandedKeys.value.push(a.label); - }); - treeLoad.value = false; - }) - .catch((err) => { - treeLoad.value = false; - }); + productTreeList().then((res) => { + list.value = res; + list.value.forEach((a) => { + expandedKeys.value.push(a.label); + }); + treeLoad.value = false; + }).catch((err) => { + treeLoad.value = false; + }); }; // 杩囨护浜у搧鏍� const searchFilter = () => { @@ -188,14 +254,13 @@ }; const getModelList = () => { tableLoading.value = true; - modelListPage({ - id: currentId.value, + qualityTestStandardListPage({ + productId: currentId.value, current: page.current, size: page.size, }).then((res) => { - console.log("res", res); - tableData.value = res.records; - total.value = res.total; + tableData.value = res.data.records; + page.total = res.data.total; tableLoading.value = false; }); }; @@ -246,6 +311,20 @@ modelForm.value = { ...data }; } }; +// 瀵煎嚭 +const handleOut = () => { + ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", { + confirmButtonText: "纭", + cancelButtonText: "鍙栨秷", + type: "warning", + }) + .then(() => { + proxy.download("/quality/qualityTestStandard/export", {}, "妫�娴嬫寚鏍�.xlsx"); + }) + .catch(() => { + proxy.$modal.msg("宸插彇娑�"); + }); +}; // 鍒犻櫎鎸囨爣 const handleDelete = () => { let ids = []; @@ -261,7 +340,7 @@ type: "warning", }).then(() => { tableLoading.value = true; - delProductModel(ids).then((res) => { + qualityTestStandardDel(ids).then((res) => { proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛"); getModelList(); }).finally(() => { @@ -271,6 +350,33 @@ proxy.$modal.msg("宸插彇娑�"); }); }; + +// 鎻愪氦瑙勬牸鍨嬪彿淇敼 +const submitModelForm = () => { + proxy.$refs.modelFormRef.validate((valid) => { + if (valid) { + modelForm.value.productId = Number(currentId.value); + if(modelOperationType.value === 'add') { + qualityTestStandardAdd(modelForm.value).then((res) => { + proxy.$modal.msgSuccess("鎻愪氦鎴愬姛"); + closeModelDia(); + getModelList(); + }); + } else { + qualityTestStandardUpdate(modelForm.value).then((res) => { + proxy.$modal.msgSuccess("鎻愪氦鎴愬姛"); + closeModelDia(); + getModelList(); + }); + } + } + }); +}; +// 鍏抽棴鍨嬪彿寮规 +const closeModelDia = () => { + proxy.$refs.modelFormRef.resetFields(); + modelDia.value = false; +}; getProductTreeList(); </script> diff --git a/src/views/qualityManagement/rawMaterialInspection/components/filesDia.vue b/src/views/qualityManagement/rawMaterialInspection/components/filesDia.vue new file mode 100644 index 0000000..e573db8 --- /dev/null +++ b/src/views/qualityManagement/rawMaterialInspection/components/filesDia.vue @@ -0,0 +1,11 @@ +<template> + <div></div> +</template> + +<script setup> + +</script> + +<style scoped> + +</style> \ No newline at end of file diff --git a/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue b/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue new file mode 100644 index 0000000..5d2bcbc --- /dev/null +++ b/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue @@ -0,0 +1,107 @@ +<template> + <div> + <el-dialog + v-model="dialogFormVisible" + :title="operationType === 'add' ? '鏂板鍏ヨ亴' : '缂栬緫浜哄憳'" + width="70%" + @close="closeDia" + > + <PIMTable + rowKey="id" + :column="tableColumn" + :tableData="tableData" + :tableLoading="tableLoading" + height="600" + > + <template #slot="{ row }"> + <el-input v-model="row.staffName" clearable/> + </template> + </PIMTable> + <template #footer> + <div class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭</el-button> + <el-button @click="closeDia">鍙栨秷</el-button> + </div> + </template> + </el-dialog> + </div> +</template> + +<script setup> +import {ref} from "vue"; +import {getStaffJoinInfo, staffJoinAdd, staffJoinUpdate} from "@/api/personnelManagement/onboarding.js"; +import {Search} from "@element-plus/icons-vue"; +const { proxy } = getCurrentInstance() +const emit = defineEmits(['close']) + +const dialogFormVisible = ref(false); +const operationType = ref('') +const tableColumn = ref([ + { + label: "鎸囨爣", + prop: "contractTerm", + }, + { + label: "鍗曚綅", + prop: "contractStartTime", + }, + { + label: "鏍囧噯鍊�", + prop: "contractEndTime", + }, + { + label: "鍐呮帶鍊�", + prop: "contractEndTime", + }, + { + label: "妫�楠屽��", + prop: "contractEndTime", + dataType: 'slot', + slot: 'slot', + }, +]); +const tableData = ref([]); +const tableLoading = ref(false); + +// 鎵撳紑寮规 +const openDialog = (type, row) => { + operationType.value = type; + dialogFormVisible.value = true; + if (operationType.value === 'edit') { + getStaffJoinInfo(row.id).then(res => { + // tableData.value = res.data + }) + } +} +// 鎻愪氦浜у搧琛ㄥ崟 +const submitForm = () => { + proxy.$refs.formRef.validate(valid => { + if (valid) { + form.value.staffState = 0 + if (operationType.value === "add") { + staffJoinAdd(form.value).then(res => { + proxy.$modal.msgSuccess("鎻愪氦鎴愬姛"); + closeDia(); + }) + } else { + staffJoinUpdate(form.value).then(res => { + proxy.$modal.msgSuccess("鎻愪氦鎴愬姛"); + closeDia(); + }) + } + } + }) +} +// 鍏抽棴寮规 +const closeDia = () => { + dialogFormVisible.value = false; + emit('close') +}; +defineExpose({ + openDialog, +}); +</script> + +<style scoped> + +</style> \ No newline at end of file diff --git a/src/views/qualityManagement/rawMaterialInspection/index.vue b/src/views/qualityManagement/rawMaterialInspection/index.vue new file mode 100644 index 0000000..29e52df --- /dev/null +++ b/src/views/qualityManagement/rawMaterialInspection/index.vue @@ -0,0 +1,224 @@ +<template> + <div class="app-container"> + <div class="search_form"> + <div> + <span class="search_title">濮撳悕锛�</span> + <el-input + v-model="searchForm.staffName" + style="width: 240px" + placeholder="璇疯緭鍏ュ鍚嶆悳绱�" + @change="handleQuery" + clearable + :prefix-icon="Search" + /> + <el-button type="primary" @click="handleQuery" style="margin-left: 10px" + >鎼滅储</el-button + > + </div> + <div> + <el-button type="primary" @click="openForm('add')">鏂板</el-button> + <el-button @click="handleOut">瀵煎嚭</el-button> + <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button> + </div> + </div> + <div class="table_list"> + <PIMTable + rowKey="id" + :column="tableColumn" + :tableData="tableData" + :page="page" + :isSelection="true" + @selection-change="handleSelectionChange" + :tableLoading="tableLoading" + @pagination="pagination" + :total="page.total" + ></PIMTable> + </div> + <form-dia ref="formDia" @close="handleQuery"></form-dia> + </div> +</template> + +<script setup> +import { Search } from "@element-plus/icons-vue"; +import {onMounted, ref} from "vue"; +import FormDia from "@/views/qualityManagement/rawMaterialInspection/components/formDia.vue"; +import {staffJoinDel, staffJoinListPage} from "@/api/personnelManagement/onboarding.js"; +import {ElMessageBox} from "element-plus"; + +const data = reactive({ + searchForm: { + staffName: "", + }, +}); +const { searchForm } = toRefs(data); +const tableColumn = ref([ + { + label: "妫�娴嬫棩鏈�", + prop: "staffNo", + }, + { + label: "渚涘簲鍟�", + prop: "staffName", + }, + { + label: "妫�楠屽憳", + prop: "sex", + }, + { + label: "浜у搧鍚嶇О", + prop: "nativePlace", + }, + { + label: "瑙勬牸鍨嬪彿", + prop: "nativePlace", + }, + { + label: "鍗曚綅", + prop: "nativePlace", + }, + { + label: "鏁伴噺", + prop: "contractStartTime", + width: 120 + }, + { + label: "妫�娴嬪崟浣�", + prop: "contractEndTime", + width: 120 + }, + { + label: "妫�娴嬬粨鏋�", + prop: "staffState", + dataType: "tag", + formatData: (params) => { + if (params == 0) { + return "绂昏亴"; + } else if (params == 1) { + return "鍦ㄨ亴"; + } else { + return null; + } + }, + formatType: (params) => { + if (params == 0) { + return "danger"; + } else if (params == 1) { + return "primary"; + } else { + return null; + } + }, + }, + { + dataType: "action", + label: "鎿嶄綔", + align: "center", + fixed: "right", + width: 160, + operation: [ + { + name: "鏂板妫�楠岃褰�", + type: "text", + clickFun: (row) => { + openForm("edit", row); + }, + }, + { + name: "闄勪欢", + type: "text", + clickFun: (row) => { + openForm("edit", row); + }, + }, + ], + }, +]); +const tableData = ref([]); +const selectedRows = ref([]); +const tableLoading = ref(false); +const page = reactive({ + current: 1, + size: 100, + total: 0 +}); +const formDia = ref() +const { proxy } = getCurrentInstance() + +// 鏌ヨ鍒楄〃 +/** 鎼滅储鎸夐挳鎿嶄綔 */ +const handleQuery = () => { + page.current = 1; + getList(); +}; +const pagination = (obj) => { + page.current = obj.page; + page.size = obj.limit; + getList(); +}; +const getList = () => { + tableLoading.value = true; + staffJoinListPage({...page, ...searchForm.value, staffState: 0}).then(res => { + tableLoading.value = false; + tableData.value = res.data.records + page.total = res.data.total; + console.log(page) + }).catch(err => { + tableLoading.value = false; + }) +}; +// 琛ㄦ牸閫夋嫨鏁版嵁 +const handleSelectionChange = (selection) => { + selectedRows.value = selection; +}; + +// 鎵撳紑寮规 +const openForm = (type, row) => { + nextTick(() => { + formDia.value?.openDialog(type, row) + }) +}; + +// 鍒犻櫎 +const handleDelete = () => { + let ids = []; + if (selectedRows.value.length > 0) { + ids = selectedRows.value.map((item) => item.id); + } else { + proxy.$modal.msgWarning("璇烽�夋嫨鏁版嵁"); + return; + } + ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�", "瀵煎嚭", { + confirmButtonText: "纭", + cancelButtonText: "鍙栨秷", + type: "warning", + }) + .then(() => { + staffJoinDel(ids).then((res) => { + proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛"); + getList(); + }); + }) + .catch(() => { + proxy.$modal.msg("宸插彇娑�"); + }); +}; +// 瀵煎嚭 +const handleOut = () => { + ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", { + confirmButtonText: "纭", + cancelButtonText: "鍙栨秷", + type: "warning", + }) + .then(() => { + proxy.download("/staff/staffJoinLeaveRecord/export", {staffState: 0}, "浜哄憳绂昏亴.xlsx"); + }) + .catch(() => { + proxy.$modal.msg("宸插彇娑�"); + }); +}; +onMounted(() => { + getList(); +}); +</script> + +<style scoped></style> -- Gitblit v1.9.3