From f5987541fae35e3bed09c5eb7ba3b5f8ab65aba9 Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期一, 21 七月 2025 17:50:02 +0800 Subject: [PATCH] 1.生产订单、生产派工、工序排产前端页面开发 --- src/views/system/role/index.vue | 5 src/views/basicData/supplierManage/index.vue | 2 src/views/productionManagement/operationScheduling/components/formDia.vue | 165 +++++++++ src/views/system/post/index.vue | 5 src/views/procurementManagement/invoiceEntry/index.vue | 4 src/views/salesManagement/receiptPaymentLedger/index.vue | 6 src/components/PIMTable/PIMTable.vue | 2 src/views/productionManagement/productionDispatching/components/formDia.vue | 165 +++++++++ src/views/productionManagement/productionDispatching/index.vue | 228 ++++++++++++ src/views/salesManagement/salesLedger/index.vue | 6 src/views/productionManagement/operationScheduling/index.vue | 227 ++++++++++++ src/views/monitor/operlog/index.vue | 5 src/views/monitor/server/index.vue | 5 src/views/system/menu/index.vue | 5 src/views/system/user/index.vue | 8 src/views/basicData/customerFile/index.vue | 6 src/views/system/role/authUser.vue | 5 src/views/productionManagement/productionOrder/index.vue | 182 ++++++++++ src/views/system/notice/index.vue | 5 src/views/system/dict/index.vue | 5 20 files changed, 1,020 insertions(+), 21 deletions(-) diff --git a/src/components/PIMTable/PIMTable.vue b/src/components/PIMTable/PIMTable.vue index fb472fb..955173d 100644 --- a/src/components/PIMTable/PIMTable.vue +++ b/src/components/PIMTable/PIMTable.vue @@ -301,7 +301,7 @@ }, rowKey: { type: String, - default: undefined, + default: 'id', }, page: { type: Object, diff --git a/src/views/basicData/customerFile/index.vue b/src/views/basicData/customerFile/index.vue index 385b895..a706616 100644 --- a/src/views/basicData/customerFile/index.vue +++ b/src/views/basicData/customerFile/index.vue @@ -231,7 +231,7 @@ </template> <script setup> -import { ref } from "vue"; +import {onMounted, ref} from "vue"; import { Search } from "@element-plus/icons-vue"; import { addCustomer, @@ -591,7 +591,9 @@ return `${year}-${month}-${day}`; } -getList(); +onMounted(() => { + getList(); +}); </script> <style scoped lang="scss"></style> diff --git a/src/views/basicData/supplierManage/index.vue b/src/views/basicData/supplierManage/index.vue index af76ab2..68c51d3 100644 --- a/src/views/basicData/supplierManage/index.vue +++ b/src/views/basicData/supplierManage/index.vue @@ -221,7 +221,7 @@ </template> <script setup> -import { ref } from "vue"; +import { onMounted, ref } from "vue"; import { Search } from "@element-plus/icons-vue"; import { delSupplier } from "@/api/basicData/supplierManageFile.js"; import { ElMessageBox } from "element-plus"; diff --git a/src/views/monitor/operlog/index.vue b/src/views/monitor/operlog/index.vue index dedc9c9..92f9c35 100644 --- a/src/views/monitor/operlog/index.vue +++ b/src/views/monitor/operlog/index.vue @@ -199,6 +199,7 @@ <script setup name="Operlog"> import { list, delOperlog, cleanOperlog } from "@/api/monitor/operlog" +import {onMounted} from "vue"; const { proxy } = getCurrentInstance() const { sys_oper_type, sys_common_status } = proxy.useDict("sys_oper_type","sys_common_status") @@ -306,5 +307,7 @@ }, `config_${new Date().getTime()}.xlsx`) } -getList() +onMounted(() => { + getList(); +}); </script> diff --git a/src/views/monitor/server/index.vue b/src/views/monitor/server/index.vue index 5eb7945..d9840ac 100644 --- a/src/views/monitor/server/index.vue +++ b/src/views/monitor/server/index.vue @@ -171,6 +171,7 @@ <script setup> import { getServer } from '@/api/monitor/server' +import {onMounted} from "vue"; const server = ref([]) const { proxy } = getCurrentInstance() @@ -183,5 +184,7 @@ }) } -getList() +onMounted(() => { + getList(); +}); </script> diff --git a/src/views/procurementManagement/invoiceEntry/index.vue b/src/views/procurementManagement/invoiceEntry/index.vue index 4fdf385..256377f 100644 --- a/src/views/procurementManagement/invoiceEntry/index.vue +++ b/src/views/procurementManagement/invoiceEntry/index.vue @@ -7,8 +7,8 @@ v-model="filters.supplierName" placeholder="璇疯緭鍏ュ悕绉版悳绱�" clearable - :prefix-icon="Search" - @change="handleQuery" + prefix-icon="Search" + @change="getTableData" /> </el-form-item> <el-form-item label="閲囪喘璁㈠崟鍙凤細"> diff --git a/src/views/productionManagement/operationScheduling/components/formDia.vue b/src/views/productionManagement/operationScheduling/components/formDia.vue new file mode 100644 index 0000000..9e5f1eb --- /dev/null +++ b/src/views/productionManagement/operationScheduling/components/formDia.vue @@ -0,0 +1,165 @@ +<template> + <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="staffNo"> + <el-input v-model="form.staffNo" placeholder="璇疯緭鍏�" clearable disabled/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="浜у搧澶х被锛�" prop="staffNo"> + <el-input v-model="form.staffNo" placeholder="璇疯緭鍏�" clearable disabled/> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="30"> + <el-col :span="12"> + <el-form-item label="鎬绘暟閲忥細" prop="staffNo"> + <el-input v-model="form.staffNo" placeholder="璇疯緭鍏�" clearable disabled/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鏈鎺掍骇鏁伴噺锛�" prop="staffNo"> + <el-input-number + v-model="form.ticketsNum" + placeholder="璇疯緭鍏�" + :min="0" + :step="0.1" + :precision="2" + clearable + style="width: 100%" + /> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="30"> + <el-col :span="12"> + <el-form-item label="鎺掍骇浜猴細" prop="staffName"> + <el-input v-model="form.staffName" placeholder="璇疯緭鍏�" clearable/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鎺掍骇鏃ユ湡锛�" prop="contractStartTime"> + <el-date-picker + v-model="form.contractStartTime" + type="date" + placeholder="璇烽�夋嫨鏃ユ湡" + value-format="YYYY-MM-DD" + format="YYYY-MM-DD" + clearable + style="width: 100%" + /> + </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> + +<script setup> +import {ref} from "vue"; +import {getStaffJoinInfo, staffJoinAdd, staffJoinUpdate} from "@/api/personnelManagement/onboarding.js"; +const { proxy } = getCurrentInstance() +const emit = defineEmits(['close']) + +const dialogFormVisible = ref(false); +const operationType = ref('') +const data = reactive({ + form: { + staffNo: "", + staffName: "", + sex: "", + nativePlace: "", + postJob: "", + adress: "", + firstStudy: "", + profession: "", + identityCard: "", + age: 0, + phone: "", + emergencyContact: "", + emergencyContactPhone: "", + contractTerm: 0, + contractStartTime: "", + contractEndTime: "", + staffState: "", + }, + rules: { + staffNo: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" },], + staffName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + sex: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + nativePlace: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + postJob: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + adress: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + firstStudy: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + profession: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + identityCard: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + age: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + phone: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + emergencyContact: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + emergencyContactPhone: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + contractTerm: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + contractStartTime: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + contractEndTime: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + }, +}); +const { form, rules } = toRefs(data); + +// 鎵撳紑寮规 +const openDialog = (type, row) => { + operationType.value = type; + dialogFormVisible.value = true; + if (operationType.value === 'edit') { + getStaffJoinInfo(row.id).then(res => { + form.value = {...res.data} + }) + } +} +// 鎻愪氦浜у搧琛ㄥ崟 +const submitForm = () => { + proxy.$refs.formRef.validate(valid => { + if (valid) { + form.value.staffState = 1 + 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 = () => { + proxy.resetForm("formRef"); + dialogFormVisible.value = false; + emit('close') +}; +defineExpose({ + openDialog, +}); +</script> + +<style scoped> + +</style> \ No newline at end of file diff --git a/src/views/productionManagement/operationScheduling/index.vue b/src/views/productionManagement/operationScheduling/index.vue new file mode 100644 index 0000000..ca4bae6 --- /dev/null +++ b/src/views/productionManagement/operationScheduling/index.vue @@ -0,0 +1,227 @@ +<template> + <div class="app-container"> + <div class="search_form"> + <el-form :model="searchForm" :inline="true"> + <el-form-item label="瀹㈡埛鍚嶇О:"> + <el-input v-model="searchForm.customerName" placeholder="璇疯緭鍏�" clearable prefix-icon="Search" + @change="handleQuery" /> + </el-form-item> + <el-form-item label="椤圭洰鍚嶇О:"> + <el-input v-model="searchForm.projectName" placeholder="璇疯緭鍏�" clearable prefix-icon="Search" + @change="handleQuery" /> + </el-form-item> + <el-form-item label="娲惧伐鏃ユ湡:"> + <el-date-picker v-model="searchForm.entryDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="daterange" + placeholder="璇烽�夋嫨" clearable @change="changeDaterange" /> + </el-form-item> + <el-form-item label="鐘舵��:"> + <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨鐘舵��" style="width: 140px" clearable> + <el-option label="宸叉帓浜�" :value="1"></el-option> + <el-option label="寰呮帓浜�" :value="0"></el-option> + </el-select> + </el-form-item> + <el-form-item> + <el-button type="primary" @click="handleQuery">鎼滅储</el-button> + </el-form-item> + </el-form> + </div> + <div class="table_list"> + <div style="text-align: right" class="mb10"> + <el-button type="primary" @click="openForm('add')">宸ュ簭鎺掍骇</el-button> + <el-button type="danger" @click="openForm('delete')" plain>鍙栨秷鎺掍骇</el-button> + </div> + <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 {onMounted, ref} from "vue"; +import FormDia from "@/views/productionManagement/productionDispatching/components/formDia.vue"; +import {staffJoinDel, staffJoinListPage} from "@/api/personnelManagement/onboarding.js"; +import {ElMessageBox} from "element-plus"; +import dayjs from "dayjs"; + +const data = reactive({ + searchForm: { + staffName: "", + status: 0, + entryDate: [ + dayjs().format("YYYY-MM-DD"), + dayjs().add(1, "day").format("YYYY-MM-DD"), + ], // 褰曞叆鏃ユ湡 + entryDateStart: dayjs().format("YYYY-MM-DD"), + entryDateEnd: dayjs().add(1, "day").format("YYYY-MM-DD"), + }, +}); +const { searchForm } = toRefs(data); +const tableColumn = ref([ + { + label: "褰曞叆鏃ユ湡", + prop: "staffNo", + }, + { + label: "鍚堝悓鍙�", + prop: "staffName", + }, + { + label: "瀹㈡埛鍚堝悓鍙�", + prop: "addressPhone", + width: 250, + }, + { + label: "瀹㈡埛鍚嶇О", + prop: "contactPerson", + }, + { + label: "椤圭洰鍚嶇О", + prop: "contactPhone", + width:150 + }, + { + label: "浜у搧澶х被", + prop: "basicBankAccount", + width: 220, + }, + { + label: "瑙勬牸鍨嬪彿", + prop: "bankAccount", + width: 220, + }, + { + label: "鍗曚綅", + prop: "bankCode", + width:220 + }, + { + label: "鏁伴噺", + prop: "maintainer", + }, + { + label: "鎺掍骇鏁伴噺", + prop: "maintenanceTime", + width: 100, + }, + { + label: "寰呮帓鏁伴噺", + prop: "maintenanceTime", + width: 100, + }, +]); +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 changeDaterange = (value) => { + if (value) { + searchForm.entryDateStart = dayjs(value[0]).format("YYYY-MM-DD"); + searchForm.entryDateEnd = dayjs(value[1]).format("YYYY-MM-DD"); + } else { + searchForm.entryDateStart = undefined; + searchForm.entryDateEnd = undefined; + } + handleQuery(); +}; +const pagination = (obj) => { + page.current = obj.page; + page.size = obj.limit; + getList(); +}; +const getList = () => { + tableLoading.value = true; + staffJoinListPage({...page, ...searchForm.value}).then(res => { + tableLoading.value = false; + tableData.value = res.data.records + page.total = res.data.total; + }).catch(err => { + tableLoading.value = false; + }) +}; +// 琛ㄦ牸閫夋嫨鏁版嵁 +const handleSelectionChange = (selection) => { + selectedRows.value = selection; +}; + +// 鎵撳紑寮规 +const openForm = (type, row) => { + if (selectedRows.value.length !== 1) { + proxy.$message.error("璇烽�夋嫨涓�鏉℃暟鎹�"); + return; + } + if (selectedRows.value[0].unPaymentAmountTotal == 0) { + proxy.$message.warning("鏃犻渶鍐嶄粯娆�"); + return; + } + 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: 1}, "浜哄憳鍏ヨ亴.xlsx"); + }) + .catch(() => { + proxy.$modal.msg("宸插彇娑�"); + }); +}; +onMounted(() => { + getList(); +}); +</script> + +<style scoped></style> diff --git a/src/views/productionManagement/productionDispatching/components/formDia.vue b/src/views/productionManagement/productionDispatching/components/formDia.vue new file mode 100644 index 0000000..9e5f1eb --- /dev/null +++ b/src/views/productionManagement/productionDispatching/components/formDia.vue @@ -0,0 +1,165 @@ +<template> + <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="staffNo"> + <el-input v-model="form.staffNo" placeholder="璇疯緭鍏�" clearable disabled/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="浜у搧澶х被锛�" prop="staffNo"> + <el-input v-model="form.staffNo" placeholder="璇疯緭鍏�" clearable disabled/> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="30"> + <el-col :span="12"> + <el-form-item label="鎬绘暟閲忥細" prop="staffNo"> + <el-input v-model="form.staffNo" placeholder="璇疯緭鍏�" clearable disabled/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鏈鎺掍骇鏁伴噺锛�" prop="staffNo"> + <el-input-number + v-model="form.ticketsNum" + placeholder="璇疯緭鍏�" + :min="0" + :step="0.1" + :precision="2" + clearable + style="width: 100%" + /> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="30"> + <el-col :span="12"> + <el-form-item label="鎺掍骇浜猴細" prop="staffName"> + <el-input v-model="form.staffName" placeholder="璇疯緭鍏�" clearable/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鎺掍骇鏃ユ湡锛�" prop="contractStartTime"> + <el-date-picker + v-model="form.contractStartTime" + type="date" + placeholder="璇烽�夋嫨鏃ユ湡" + value-format="YYYY-MM-DD" + format="YYYY-MM-DD" + clearable + style="width: 100%" + /> + </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> + +<script setup> +import {ref} from "vue"; +import {getStaffJoinInfo, staffJoinAdd, staffJoinUpdate} from "@/api/personnelManagement/onboarding.js"; +const { proxy } = getCurrentInstance() +const emit = defineEmits(['close']) + +const dialogFormVisible = ref(false); +const operationType = ref('') +const data = reactive({ + form: { + staffNo: "", + staffName: "", + sex: "", + nativePlace: "", + postJob: "", + adress: "", + firstStudy: "", + profession: "", + identityCard: "", + age: 0, + phone: "", + emergencyContact: "", + emergencyContactPhone: "", + contractTerm: 0, + contractStartTime: "", + contractEndTime: "", + staffState: "", + }, + rules: { + staffNo: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" },], + staffName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + sex: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + nativePlace: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + postJob: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + adress: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + firstStudy: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + profession: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + identityCard: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + age: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + phone: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + emergencyContact: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + emergencyContactPhone: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + contractTerm: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + contractStartTime: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + contractEndTime: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], + }, +}); +const { form, rules } = toRefs(data); + +// 鎵撳紑寮规 +const openDialog = (type, row) => { + operationType.value = type; + dialogFormVisible.value = true; + if (operationType.value === 'edit') { + getStaffJoinInfo(row.id).then(res => { + form.value = {...res.data} + }) + } +} +// 鎻愪氦浜у搧琛ㄥ崟 +const submitForm = () => { + proxy.$refs.formRef.validate(valid => { + if (valid) { + form.value.staffState = 1 + 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 = () => { + proxy.resetForm("formRef"); + dialogFormVisible.value = false; + emit('close') +}; +defineExpose({ + openDialog, +}); +</script> + +<style scoped> + +</style> \ No newline at end of file diff --git a/src/views/productionManagement/productionDispatching/index.vue b/src/views/productionManagement/productionDispatching/index.vue new file mode 100644 index 0000000..70a3de9 --- /dev/null +++ b/src/views/productionManagement/productionDispatching/index.vue @@ -0,0 +1,228 @@ +<template> + <div class="app-container"> + <div class="search_form"> + <div> + <span class="search_title">瀹㈡埛鍚嶇О锛�</span> + <el-input + v-model="searchForm.customerName" + style="width: 240px" + placeholder="璇疯緭鍏�" + @change="handleQuery" + clearable + prefix-icon="Search" + /> + <span class="search_title ml10">椤圭洰鍚嶇О锛�</span> + <el-input + v-model="searchForm.customerName" + style="width: 240px" + placeholder="璇疯緭鍏�" + @change="handleQuery" + clearable + prefix-icon="Search" + /> + <span class="search_title ml10">褰曞叆鏃ユ湡锛�</span> + <el-date-picker v-model="searchForm.entryDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="daterange" + placeholder="璇烽�夋嫨" clearable @change="changeDaterange" /> + <el-button type="primary" @click="handleQuery" style="margin-left: 10px" + >鎼滅储</el-button + > + </div> + <div> + <el-button type="primary" @click="openForm('add')">鐢熶骇娲惧伐</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 {onMounted, ref} from "vue"; +import FormDia from "@/views/productionManagement/productionDispatching/components/formDia.vue"; +import {staffJoinDel, staffJoinListPage} from "@/api/personnelManagement/onboarding.js"; +import {ElMessageBox} from "element-plus"; +import dayjs from "dayjs"; + +const data = reactive({ + searchForm: { + staffName: "", + entryDate: [ + dayjs().format("YYYY-MM-DD"), + dayjs().add(1, "day").format("YYYY-MM-DD"), + ], // 褰曞叆鏃ユ湡 + entryDateStart: dayjs().format("YYYY-MM-DD"), + entryDateEnd: dayjs().add(1, "day").format("YYYY-MM-DD"), + }, +}); +const { searchForm } = toRefs(data); +const tableColumn = ref([ + { + label: "褰曞叆鏃ユ湡", + prop: "staffNo", + }, + { + label: "鍚堝悓鍙�", + prop: "staffName", + }, + { + label: "瀹㈡埛鍚堝悓鍙�", + prop: "addressPhone", + width: 250, + }, + { + label: "瀹㈡埛鍚嶇О", + prop: "contactPerson", + }, + { + label: "椤圭洰鍚嶇О", + prop: "contactPhone", + width:150 + }, + { + label: "浜у搧澶х被", + prop: "basicBankAccount", + width: 220, + }, + { + label: "瑙勬牸鍨嬪彿", + prop: "bankAccount", + width: 220, + }, + { + label: "鍗曚綅", + prop: "bankCode", + width:220 + }, + { + label: "鏁伴噺", + prop: "maintainer", + }, + { + label: "鎺掍骇鏁伴噺", + prop: "maintenanceTime", + width: 100, + }, + { + label: "寰呮帓鏁伴噺", + prop: "maintenanceTime", + width: 100, + }, +]); +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 changeDaterange = (value) => { + if (value) { + searchForm.entryDateStart = dayjs(value[0]).format("YYYY-MM-DD"); + searchForm.entryDateEnd = dayjs(value[1]).format("YYYY-MM-DD"); + } else { + searchForm.entryDateStart = undefined; + searchForm.entryDateEnd = undefined; + } + handleQuery(); +}; +const pagination = (obj) => { + page.current = obj.page; + page.size = obj.limit; + getList(); +}; +const getList = () => { + tableLoading.value = true; + staffJoinListPage({...page, ...searchForm.value}).then(res => { + tableLoading.value = false; + tableData.value = res.data.records + page.total = res.data.total; + }).catch(err => { + tableLoading.value = false; + }) +}; +// 琛ㄦ牸閫夋嫨鏁版嵁 +const handleSelectionChange = (selection) => { + selectedRows.value = selection; +}; + +// 鎵撳紑寮规 +const openForm = (type, row) => { + if (selectedRows.value.length !== 1) { + proxy.$message.error("璇烽�夋嫨涓�鏉℃暟鎹�"); + return; + } + if (selectedRows.value[0].unPaymentAmountTotal == 0) { + proxy.$message.warning("鏃犻渶鍐嶄粯娆�"); + return; + } + 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: 1}, "浜哄憳鍏ヨ亴.xlsx"); + }) + .catch(() => { + proxy.$modal.msg("宸插彇娑�"); + }); +}; +onMounted(() => { + getList(); +}); +</script> + +<style scoped></style> diff --git a/src/views/productionManagement/productionOrder/index.vue b/src/views/productionManagement/productionOrder/index.vue new file mode 100644 index 0000000..87ca041 --- /dev/null +++ b/src/views/productionManagement/productionOrder/index.vue @@ -0,0 +1,182 @@ +<template> + <div class="app-container"> + <div class="search_form"> + <div> + <span class="search_title">瀹㈡埛鍚嶇О锛�</span> + <el-input + v-model="searchForm.customerName" + style="width: 240px" + placeholder="璇疯緭鍏�" + @change="handleQuery" + clearable + prefix-icon="Search" + /> + <span class="search_title ml10">椤圭洰鍚嶇О锛�</span> + <el-input + v-model="searchForm.customerName" + style="width: 240px" + placeholder="璇疯緭鍏�" + @change="handleQuery" + clearable + prefix-icon="Search" + /> + <span class="search_title ml10">褰曞叆鏃ユ湡锛�</span> + <el-date-picker v-model="searchForm.entryDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="daterange" + placeholder="璇烽�夋嫨" clearable @change="changeDaterange" /> + <el-button type="primary" @click="handleQuery" style="margin-left: 10px" + >鎼滅储</el-button + > + </div> + <div> + <el-button @click="handleOut">瀵煎嚭</el-button> + </div> + </div> + <div class="table_list"> + <PIMTable + rowKey="id" + :column="tableColumn" + :tableData="tableData" + :page="page" + :tableLoading="tableLoading" + @pagination="pagination" + ></PIMTable> + </div> + </div> +</template> + +<script setup> +import {onMounted, ref} from "vue"; +import { + listCustomer, +} from "@/api/basicData/customerFile.js"; +import { ElMessageBox } from "element-plus"; +import dayjs from "dayjs"; +const { proxy } = getCurrentInstance(); + +const tableColumn = ref([ + { + label: "褰曞叆鏃ユ湡", + prop: "customerName", + width: 120, + }, + { + label: "鍚堝悓鍙�", + prop: "taxpayerIdentificationNumber", + width: 220, + }, + { + label: "瀹㈡埛鍚堝悓鍙�", + prop: "addressPhone", + width: 250, + }, + { + label: "瀹㈡埛鍚嶇О", + prop: "contactPerson", + }, + { + label: "椤圭洰鍚嶇О", + prop: "contactPhone", + width:150 + }, + { + label: "浜у搧澶х被", + prop: "basicBankAccount", + width: 220, + }, + { + label: "瑙勬牸鍨嬪彿", + prop: "bankAccount", + width: 220, + }, + { + label: "鍗曚綅", + prop: "bankCode", + width:220 + }, + { + label: "鏁伴噺", + prop: "maintainer", + }, + { + label: "鎺掍骇鏁伴噺", + prop: "maintenanceTime", + width: 100, + }, + { + label: "瀹屽伐鏁伴噺", + prop: "maintenanceTime", + width: 100, + }, +]); +const tableData = ref([]); +const tableLoading = ref(false); +const page = reactive({ + current: 1, + size: 100, + total: 0, +}); + +const data = reactive({ + searchForm: { + customerName: "", + entryDate: [ + dayjs().format("YYYY-MM-DD"), + dayjs().add(1, "day").format("YYYY-MM-DD"), + ], // 褰曞叆鏃ユ湡 + entryDateStart: dayjs().format("YYYY-MM-DD"), + entryDateEnd: dayjs().add(1, "day").format("YYYY-MM-DD"), + }, +}); +const { searchForm } = toRefs(data); + +// 鏌ヨ鍒楄〃 +/** 鎼滅储鎸夐挳鎿嶄綔 */ +const handleQuery = () => { + page.current = 1; + getList(); +}; +const pagination = (obj) => { + page.current = obj.page; + page.size = obj.limit; + getList(); +}; +const changeDaterange = (value) => { + if (value) { + searchForm.entryDateStart = dayjs(value[0]).format("YYYY-MM-DD"); + searchForm.entryDateEnd = dayjs(value[1]).format("YYYY-MM-DD"); + } else { + searchForm.entryDateStart = undefined; + searchForm.entryDateEnd = undefined; + } + handleQuery(); +}; +const getList = () => { + tableLoading.value = true; + listCustomer({ ...searchForm.value, ...page }).then((res) => { + tableLoading.value = false; + tableData.value = res.records; + page.total = res.total; + }); +}; + +// 瀵煎嚭 +const handleOut = () => { + ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", { + confirmButtonText: "纭", + cancelButtonText: "鍙栨秷", + type: "warning", + }) + .then(() => { + proxy.download("/basic/customer/export", {}, "瀹㈡埛妗f.xlsx"); + }) + .catch(() => { + proxy.$modal.msg("宸插彇娑�"); + }); +}; + +onMounted(() => { + getList(); +}); +</script> + +<style scoped lang="scss"></style> diff --git a/src/views/salesManagement/receiptPaymentLedger/index.vue b/src/views/salesManagement/receiptPaymentLedger/index.vue index fc84583..2cec625 100644 --- a/src/views/salesManagement/receiptPaymentLedger/index.vue +++ b/src/views/salesManagement/receiptPaymentLedger/index.vue @@ -138,7 +138,7 @@ </template> <script setup> -import { ref } from "vue"; +import {onMounted, ref} from "vue"; import { invoiceLedgerSalesAccount } from "../../../api/salesManagement/invoiceLedger.js"; import { customerInteractions } from "../../../api/salesManagement/receiptPayment.js"; import Pagination from "../../../components/PIMTable/Pagination.vue"; @@ -259,7 +259,9 @@ receiptRecord.value = originReceiptRecord.value.slice(start, end); }; -getList(); +onMounted(() => { + getList(); +}); </script> <style scoped lang="scss"> diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue index f856f2d..1112213 100644 --- a/src/views/salesManagement/salesLedger/index.vue +++ b/src/views/salesManagement/salesLedger/index.vue @@ -299,7 +299,7 @@ <script setup> import { getToken } from "@/utils/auth"; import pagination from "@/components/PIMTable/Pagination.vue"; -import { ref } from "vue"; +import {onMounted, ref} from "vue"; import { ElMessageBox } from "element-plus"; import useUserStore from "@/store/modules/user"; import { userListNoPage } from "@/api/system/user.js"; @@ -981,7 +981,9 @@ }); } -getList(); +onMounted(() => { + getList(); +}); </script> <style scoped lang="scss"> diff --git a/src/views/system/dict/index.vue b/src/views/system/dict/index.vue index bd6ab65..6c67e1b 100644 --- a/src/views/system/dict/index.vue +++ b/src/views/system/dict/index.vue @@ -174,6 +174,7 @@ <script setup name="Dict"> import useDictStore from '@/store/modules/dict' import { listType, getType, delType, addType, updateType, refreshCache } from "@/api/system/dict/type" +import {onMounted} from "vue"; const { proxy } = getCurrentInstance() const { sys_normal_disable } = proxy.useDict("sys_normal_disable") @@ -319,5 +320,7 @@ }) } -getList() +onMounted(() => { + getList(); +}); </script> diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue index 78c49cf..bccb9e9 100644 --- a/src/views/system/menu/index.vue +++ b/src/views/system/menu/index.vue @@ -292,6 +292,7 @@ import { addMenu, delMenu, getMenu, listMenu, updateMenu } from "@/api/system/menu" import SvgIcon from "@/components/SvgIcon" import IconSelect from "@/components/IconSelect" +import {onMounted} from "vue"; const { proxy } = getCurrentInstance() const { sys_show_hide, sys_normal_disable } = proxy.useDict("sys_show_hide", "sys_normal_disable") @@ -448,5 +449,7 @@ }).catch(() => {}) } -getList() +onMounted(() => { + getList(); +}); </script> diff --git a/src/views/system/notice/index.vue b/src/views/system/notice/index.vue index 96dadcc..8043db0 100644 --- a/src/views/system/notice/index.vue +++ b/src/views/system/notice/index.vue @@ -160,6 +160,7 @@ <script setup name="Notice"> import { listNotice, getNotice, delNotice, addNotice, updateNotice } from "@/api/system/notice" +import {onMounted} from "vue"; const { proxy } = getCurrentInstance() const { sys_notice_status, sys_notice_type } = proxy.useDict("sys_notice_status", "sys_notice_type") @@ -288,5 +289,7 @@ }).catch(() => {}) } -getList() +onMounted(() => { + getList(); +}); </script> diff --git a/src/views/system/post/index.vue b/src/views/system/post/index.vue index 2608669..0e80652 100644 --- a/src/views/system/post/index.vue +++ b/src/views/system/post/index.vue @@ -146,6 +146,7 @@ <script setup name="Post"> import { listPost, addPost, delPost, getPost, updatePost } from "@/api/system/post" +import {onMounted} from "vue"; const { proxy } = getCurrentInstance() const { sys_normal_disable } = proxy.useDict("sys_normal_disable") @@ -283,5 +284,7 @@ }, `post_${new Date().getTime()}.xlsx`) } -getList() +onMounted(() => { + getList(); +}); </script> diff --git a/src/views/system/role/authUser.vue b/src/views/system/role/authUser.vue index 20be11c..a460f3c 100644 --- a/src/views/system/role/authUser.vue +++ b/src/views/system/role/authUser.vue @@ -94,6 +94,7 @@ <script setup name="AuthUser"> import selectUser from "./selectUser" import { allocatedUserList, authUserCancel, authUserCancelAll } from "@/api/system/role" +import {onMounted} from "vue"; const route = useRoute() const { proxy } = getCurrentInstance() @@ -175,5 +176,7 @@ }).catch(() => {}) } -getList() +onMounted(() => { + getList(); +}); </script> diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue index 0a52f44..d960674 100644 --- a/src/views/system/role/index.vue +++ b/src/views/system/role/index.vue @@ -244,6 +244,7 @@ <script setup name="Role"> import { addRole, changeRoleStatus, dataScope, delRole, getRole, listRole, updateRole, deptTreeSelect } from "@/api/system/role" import { roleMenuTreeselect, treeselect as menuTreeselect } from "@/api/system/menu" +import {onMounted} from "vue"; const router = useRouter() const { proxy } = getCurrentInstance() @@ -580,5 +581,7 @@ reset() } -getList() +onMounted(() => { + getList(); +}); </script> diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index 8363b68..8a7c05b 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -512,6 +512,7 @@ } from "@/api/system/user"; import { Splitpanes, Pane } from "splitpanes"; import "splitpanes/dist/splitpanes.css"; +import {onMounted} from "vue"; const router = useRouter(); const appStore = useAppStore(); @@ -893,7 +894,8 @@ } }); } - -getDeptTree(); -getList(); +onMounted(() => { + getDeptTree(); + getList(); +}); </script> -- Gitblit v1.9.3