From 2cc572c2a3c6efac102b141c574bceddbfc0d68e Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 09 三月 2026 16:18:10 +0800
Subject: [PATCH] 进销存系统升级 1.部署修改

---
 src/views/personnelManagement/monthlyStatistics/components/formDia.vue |   60 ++++++++++++++++++++++++++++++++----------------------------
 1 files changed, 32 insertions(+), 28 deletions(-)

diff --git a/src/views/personnelManagement/monthlyStatistics/components/formDia.vue b/src/views/personnelManagement/monthlyStatistics/components/formDia.vue
index eb6dea2..e3105d2 100644
--- a/src/views/personnelManagement/monthlyStatistics/components/formDia.vue
+++ b/src/views/personnelManagement/monthlyStatistics/components/formDia.vue
@@ -1,11 +1,11 @@
 <template>
-  <el-dialog
+  <FormDialog
     v-model="dialogVisible"
     :title="operationType === 'add' ? '鏂板缓宸ヨ祫琛�' : '缂栬緫宸ヨ祫琛�'"
     width="90%"
-    :close-on-click-modal="false"
-    destroy-on-close
     @close="closeDia"
+    @confirm="submitForm"
+    @cancel="closeDia"
   >
     <div class="form-dia-body">
       <!-- 鍩虹璧勬枡 -->
@@ -28,11 +28,14 @@
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="閫夋嫨閮ㄩ棬" prop="deptId">
+              <el-form-item label="閫夋嫨閮ㄩ棬" prop="deptIds">
                 <el-select
-                  v-model="form.deptId"
+                  v-model="form.deptIds"
                   placeholder="璇烽�夋嫨"
                   clearable
+                  multiple
+                  collapse-tags
+                  collapse-tags-tooltip
                   style="width: 100%"
                 >
                   <el-option
@@ -189,12 +192,7 @@
       </div>
     </div>
 
-    <template #footer>
-      <div class="dialog-footer">
-        <el-button @click="closeDia">鍙栨秷</el-button>
-        <el-button type="primary" @click="submitForm">纭畾</el-button>
-      </div>
-    </template>
+
 
     <!-- 鏂板浜哄憳寮圭獥 -->
     <el-dialog
@@ -249,12 +247,13 @@
         />
       </el-table>
     </el-dialog>
-  </el-dialog>
+  </FormDialog>
 </template>
 
 <script setup>
 import { ref, reactive, toRefs, computed, getCurrentInstance, nextTick } from "vue";
 import { ArrowUp } from "@element-plus/icons-vue";
+import FormDialog from "@/components/Dialog/FormDialog.vue";
 import { listDept } from "@/api/system/dept.js";
 import { staffOnJobList } from "@/api/personnelManagement/monthlyStatistics.js";
 import { bankList } from "@/api/personnelManagement/bank.js";
@@ -309,14 +308,14 @@
   form: {
     id: undefined,
     salaryTitle: "",
-    deptId: undefined,
+    deptIds: [],
     salaryMonth: "",
     remark: "",
     payBank: "",
   },
   rules: {
     salaryTitle: [{ required: true, message: "璇疯緭鍏ュ伐璧勪富棰�", trigger: "blur" }],
-    deptId: [{ required: true, message: "璇烽�夋嫨閮ㄩ棬", trigger: "change" }],
+    deptIds: [{ required: true, message: "璇烽�夋嫨閮ㄩ棬", trigger: "change" }],
     salaryMonth: [{ required: true, message: "璇烽�夋嫨宸ヨ祫鏈堜唤", trigger: "change" }],
   },
 });
@@ -394,7 +393,7 @@
     Object.assign(form.value, {
       id: undefined,
       salaryTitle: "",
-      deptId: undefined,
+      deptIds: [],
       salaryMonth: "",
       remark: "",
       payBank: "",
@@ -404,7 +403,9 @@
       form.value.id = row.id;
       form.value.salaryTitle = row.salaryTitle ?? "";
       // deptIds 鍚庣鏄瓧绗︿覆锛堝涓敤閫楀彿鍒嗛殧锛夛紱褰撳墠琛ㄥ崟浠嶆槸鍗曢�� deptId
-      form.value.deptId = row.deptIds ? Number(String(row.deptIds).split(",")[0]) : undefined;
+      form.value.deptIds = row.deptIds
+        ? String(row.deptIds).split(",").map((id) => Number(id.trim())).filter(Boolean)
+        : [];
       form.value.salaryMonth = row.salaryMonth ?? "";
       form.value.remark = row.remark ?? "";
       form.value.payBank = row.payBank ?? "";
@@ -480,7 +481,7 @@
 };
 
 const handleGenerate = () => {
-  if (!form.value.deptId) {
+  if (!form.value.deptIds?.length) {
     proxy.$modal.msgWarning("璇峰厛閫夋嫨閮ㄩ棬");
     return;
   }
@@ -488,14 +489,11 @@
     proxy.$modal.msgWarning("璇峰厛閫夋嫨宸ヨ祫鏈堜唤");
     return;
   }
-  if (!employeeList.value?.length) {
-    proxy.$modal.msgWarning("璇峰厛鏂板浜哄憳");
-    return;
-  }
-  const ids = employeeList.value
-    .map((e) => e.staffOnJobId ?? e.staffId ?? e.id)
-    .filter(Boolean);
-  staffSalaryMainCalculateSalary(ids).then((res) => {
+  const payload = {
+    ids: form.value.deptIds,
+    date: form.value.salaryMonth,
+  };
+  staffSalaryMainCalculateSalary(payload).then((res) => {
     const list = Array.isArray(res?.data) ? res.data : [];
     if (!list.length) {
       proxy.$modal.msgWarning("鏈绠楀埌宸ヨ祫鏁版嵁");
@@ -546,11 +544,17 @@
   formRef.value?.validate((valid) => {
     if (!valid) return;
     const payload = {
-      ...form.value,
-      deptIds: form.value.deptId ? String(form.value.deptId) : "",
-      detailList: employeeList.value.map((e) => ({
+      id: form.value.id,
+      salaryTitle: form.value.salaryTitle,
+      deptIds: form.value.deptIds?.length ? form.value.deptIds.join(",") : "",
+      salaryMonth: form.value.salaryMonth,
+      remark: form.value.remark,
+      payBank: form.value.payBank,
+      staffSalaryDetailList: employeeList.value.map((e) => ({
         staffOnJobId: e.staffOnJobId ?? e.staffId ?? e.id,
         staffName: e.staffName,
+        postName: e.postName ?? "",
+        deptName: e.deptName ?? "",
         basicSalary: parseNum(e.basicSalary),
         pieceSalary: parseNum(e.pieceSalary),
         hourlySalary: parseNum(e.hourlySalary),

--
Gitblit v1.9.3