| src/components/Dialog/FormDialog.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/personnelManagement/monthlyStatistics/components/auditDia.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/personnelManagement/monthlyStatistics/components/formDia.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/personnelManagement/monthlyStatistics/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/personnelManagement/socialSecuritySet/components/formDia.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/components/Dialog/FormDialog.vue
@@ -8,6 +8,9 @@ <slot></slot> <template #footer> <div class="dialog-footer"> <!-- èªå®ä¹æé®ææ§½ --> <slot name="footer"> <!-- é»è®¤æé® --> <el-button v-if="showConfirm" type="primary" @@ -16,6 +19,7 @@ 确认 </el-button> <el-button @click="handleCancel">åæ¶</el-button> </slot> </div> </template> </el-dialog> src/views/personnelManagement/monthlyStatistics/components/auditDia.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,216 @@ <template> <FormDialog v-model="dialogVisible" title="å·¥èµå®¡æ ¸" width="900px" @close="handleClose" > <!-- å·¥èµè¡¨åºç¡ä¿¡æ¯ --> <el-card shadow="never" style="margin-bottom: 16px;"> <template #header> <span>å·¥èµè¡¨ä¿¡æ¯</span> </template> <el-descriptions :column="3" border> <el-descriptions-item label="å·¥èµä¸»é¢">{{ auditData?.salaryTitle || '-' }}</el-descriptions-item> <el-descriptions-item label="å·¥èµæä»½">{{ auditData?.salaryMonth || '-' }}</el-descriptions-item> <el-descriptions-item label="å·¥èµæ»é¢">Â¥ {{ formatMoney(auditData?.totalSalary) }}</el-descriptions-item> <el-descriptions-item label="æ¯ä»é¶è¡">{{ auditData?.payBank || '-' }}</el-descriptions-item> <el-descriptions-item label="å®¡æ ¸äºº">{{ auditData?.auditUserName || '-' }}</el-descriptions-item> <el-descriptions-item label="夿³¨">{{ auditData?.remark || '-' }}</el-descriptions-item> </el-descriptions> </el-card> <!-- åå·¥å·¥èµæç» --> <el-card shadow="never" style="margin-bottom: 16px;"> <template #header> <span>åå·¥å·¥èµæç»</span> </template> <div v-if="!employeeList || employeeList.length === 0" style="text-align: center; padding: 20px; color: #909399;"> <div>ææ åå·¥å·¥èµæç»æ°æ®</div> <div style="font-size: 12px; margin-top: 5px;">åå·¥æç»æ°æ®éè¦å¨å·¥èµè¡¨çææç¼è¾æ¶æä¼ä¿å</div> </div> <div v-else> <el-table :data="employeeList" border max-height="300" style="width: 100%"> <el-table-column prop="staffName" label="åå·¥å§å" width="100" /> <el-table-column prop="deptName" label="é¨é¨" width="120" /> <el-table-column prop="basicSalary" label="åºæ¬å·¥èµ" width="100" align="right"> <template #default="{ row }">Â¥ {{ formatMoney(row.basicSalary) }}</template> </el-table-column> <el-table-column prop="pieceSalary" label="计件工èµ" width="100" align="right"> <template #default="{ row }">Â¥ {{ formatMoney(row.pieceSalary) }}</template> </el-table-column> <el-table-column prop="hourlySalary" label="计æ¶å·¥èµ" width="100" align="right"> <template #default="{ row }">Â¥ {{ formatMoney(row.hourlySalary) }}</template> </el-table-column> <el-table-column prop="otherIncome" label="å ¶ä»æ¶å ¥" width="100" align="right"> <template #default="{ row }">Â¥ {{ formatMoney(row.otherIncome) }}</template> </el-table-column> <el-table-column prop="socialPersonal" label="社ä¿ä¸ªäºº" width="100" align="right"> <template #default="{ row }">Â¥ {{ formatMoney(row.socialPersonal) }}</template> </el-table-column> <el-table-column prop="fundPersonal" label="å ¬ç§¯é个人" width="120" align="right"> <template #default="{ row }">Â¥ {{ formatMoney(row.fundPersonal) }}</template> </el-table-column> <el-table-column prop="salaryTax" label="å·¥èµä¸ªç¨" width="100" align="right"> <template #default="{ row }">Â¥ {{ formatMoney(row.salaryTax) }}</template> </el-table-column> <el-table-column prop="netSalary" label="å®åå·¥èµ" width="100" align="right" fixed="right"> <template #default="{ row }">Â¥ {{ formatMoney(row.netSalary) }}</template> </el-table-column> </el-table> <div style="margin-top: 10px; text-align: right; font-weight: bold;"> å·¥èµæ»é¢ï¼Â¥ {{ formatMoney(totalSalary) }} </div> </div> </el-card> <!-- å®¡æ ¸æä½ --> <el-form label-position="top"> <el-form-item label="å®¡æ ¸ç»æ" required> <el-radio-group v-model="auditResult"> <el-radio :value="4">éè¿</el-radio> <el-radio :value="2">ä¸éè¿</el-radio> </el-radio-group> </el-form-item> </el-form> <template #footer> <el-button type="primary" :loading="loading" @click="handleConfirm"> ç¡®å® </el-button> <el-button @click="handleClose">åæ¶</el-button> </template> </FormDialog> </template> <script setup> import { ref, computed, reactive, toRefs, getCurrentInstance, watch } from "vue"; import { ElMessage } from "element-plus"; import Cookies from "js-cookie"; import FormDialog from "@/components/Dialog/FormDialog.vue"; import { staffSalaryMainUpdate } from "@/api/personnelManagement/staffSalaryMain.js"; const emit = defineEmits(["update:modelValue", "close", "success"]); const props = defineProps({ modelValue: { type: Boolean, default: false }, row: { type: Object, default: () => ({}) }, }); const { proxy } = getCurrentInstance(); const dialogVisible = computed({ get: () => props.modelValue, set: (val) => emit("update:modelValue", val), }); const loading = ref(false); const auditResult = ref(4); // é»è®¤éè¿ const auditData = ref({}); const employeeList = ref([]); // çå¬rowæ°æ®åå watch(() => props.row, (newRow) => { if (newRow && Object.keys(newRow).length > 0) { loadAuditData(newRow); } }, { immediate: true }); // æ ¼å¼åéé¢ const formatMoney = (value) => { const num = Number(value) || 0; return num.toFixed(2); }; // 计ç®å·¥èµæ»é¢ const totalSalary = computed(() => { return employeeList.value.reduce((sum, e) => { const salary = Number(e.netSalary) || 0; return sum + salary; }, 0); }); // å è½½å®¡æ ¸æ°æ® const loadAuditData = (row) => { auditData.value = row || {}; auditResult.value = 4; // é»è®¤éæ©éè¿ // å è½½åå·¥å·¥èµæç»æ°æ® if (row?.staffSalaryDetailList && Array.isArray(row.staffSalaryDetailList)) { employeeList.value = row.staffSalaryDetailList.map((e) => ({ staffName: e.staffName ?? "", deptName: e.deptName ?? "", basicSalary: Number(e.basicSalary) || 0, pieceSalary: Number(e.pieceSalary) || 0, hourlySalary: Number(e.hourlySalary) || 0, otherIncome: Number(e.otherIncome) || 0, socialPersonal: Number(e.socialPersonal) || 0, fundPersonal: Number(e.fundPersonal) || 0, salaryTax: Number(e.salaryTax) || 0, netSalary: Number(e.netSalary) || 0, })); } else { console.log('æ²¡ææ¾å°åå·¥æç»æ°æ®'); employeeList.value = []; } }; // æå¼å¼¹çª const openDialog = (row) => { loadAuditData(row); dialogVisible.value = true; }; // å ³éå¼¹çª const handleClose = () => { dialogVisible.value = false; emit("close"); }; // ç¡®è®¤å®¡æ ¸ const handleConfirm = () => { try { const row = auditData.value; if (!row?.id) { ElMessage.warning("æ°æ®å¼å¸¸ï¼è¯·éè¯"); return; } const username = Cookies.get("username") || ""; const userIdRaw = Cookies.get("userId"); const auditUserId = userIdRaw ? Number(userIdRaw) : undefined; // æå»ºå®¡æ ¸æ°æ® const submitData = { id: row.id, status: Number(auditResult.value) === 2 ? 2 : 4, // 2=ä¸éè¿ 4=éè¿(å¾ åæ¾) auditUserId, auditUserName: username, }; loading.value = true; staffSalaryMainUpdate(submitData) .then(() => { ElMessage.success("å®¡æ ¸æå"); dialogVisible.value = false; emit("success"); }) .catch((error) => { console.error('å®¡æ ¸å¤±è´¥:', error) }) .finally(() => { loading.value = false; }); } catch (error) { console.error('å®¡æ ¸å¤çå¼å¸¸:', error); loading.value = false; } }; defineExpose({ openDialog }); </script> <style scoped> :deep(.el-descriptions__label) { width: 100px; } </style> src/views/personnelManagement/monthlyStatistics/components/formDia.vue
@@ -4,9 +4,12 @@ :title="operationType === 'add' ? 'æ°å»ºå·¥èµè¡¨' : 'ç¼è¾å·¥èµè¡¨'" width="90%" @close="closeDia" @confirm="submitForm" @cancel="closeDia" > <template #footer> <el-button type="info" @click="saveDraft">ä¿åè稿</el-button> <el-button type="primary" @click="submitForm">确认æäº¤</el-button> <el-button @click="closeDia">åæ¶</el-button> </template> <div class="form-dia-body"> <!-- åºç¡èµæ --> <el-card class="form-card" shadow="never"> @@ -34,7 +37,6 @@ placeholder="è¯·éæ©" clearable multiple collapse-tags collapse-tags-tooltip style="width: 100%" > @@ -89,6 +91,24 @@ </el-select> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="å®¡æ ¸äºº" prop="auditUserId"> <el-select v-model="form.auditUserId" placeholder="è¯·éæ©å®¡æ ¸äºº" clearable filterable style="width: 100%" > <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> </el-card> @@ -96,10 +116,7 @@ <!-- æä½æé® --> <div class="toolbar"> <el-button type="primary" @click="handleGenerate">çæå·¥èµè¡¨</el-button> <el-button @click="handleExport">导åº</el-button> <el-button @click="handleImport">å¯¼å ¥</el-button> <el-button @click="handleClear">æ¸ ç©º</el-button> <el-button @click="openAddPerson">æ°å¢äººå</el-button> <el-button @click="handleBatchDelete">å é¤</el-button> <el-button @click="handleTaxForm">个ç¨è¡¨</el-button> </div> @@ -182,6 +199,70 @@ /> </template> </el-table-column> <el-table-column label="å ¶ä»æ¯åº" minWidth="110"> <template #default="{ row }"> <el-input v-model.number="row.otherDeduct" type="number" placeholder="0" size="small" @input="row.otherDeduct = parseNum(row.otherDeduct)" /> </template> </el-table-column> <el-table-column label="å·¥èµä¸ªç¨" minWidth="110"> <template #default="{ row }"> <el-input v-model.number="row.salaryTax" type="number" placeholder="0" size="small" @input="row.salaryTax = parseNum(row.salaryTax)" /> </template> </el-table-column> <el-table-column label="åºåå·¥èµ" minWidth="110"> <template #default="{ row }"> <el-input v-model.number="row.grossSalary" type="number" placeholder="0" size="small" @input="row.grossSalary = parseNum(row.grossSalary)" /> </template> </el-table-column> <el-table-column label="åºæ£å·¥èµ" minWidth="110"> <template #default="{ row }"> <el-input v-model.number="row.deductSalary" type="number" placeholder="0" size="small" @input="row.deductSalary = parseNum(row.deductSalary)" /> </template> </el-table-column> <el-table-column label="å®åå·¥èµ" minWidth="110"> <template #default="{ row }"> <el-input v-model.number="row.netSalary" type="number" placeholder="0" size="small" @input="row.netSalary = parseNum(row.netSalary)" /> </template> </el-table-column> <el-table-column label="夿³¨" minWidth="120"> <template #default="{ row }"> <el-input v-model="row.remark" placeholder="请è¾å ¥" size="small" /> </template> </el-table-column> <el-table-column label="æä½" width="80" align="center" fixed="right"> <template #default="{ row }"> <el-button type="primary" link @click="removeEmployee(row)">å é¤</el-button> @@ -189,6 +270,10 @@ </el-table-column> </el-table> <div v-if="!employeeList.length" class="table-empty">ææ æ°æ®</div> <div v-else class="salary-total"> <span class="total-label">å·¥èµæ»é¢ï¼</span> <span class="total-value">Â¥ {{ totalSalary.toFixed(2) }}</span> </div> </div> </div> @@ -262,6 +347,8 @@ staffSalaryMainUpdate, staffSalaryMainCalculateSalary, } from "@/api/personnelManagement/staffSalaryMain.js"; import { userListNoPageByTenantId } from "@/api/system/user.js"; const emit = defineEmits(["update:modelValue", "close"]); const props = defineProps({ @@ -287,6 +374,7 @@ const employeeList = ref([]); const selectedEmployees = ref([]); const bankOptions = ref([]); const userList = ref([]); const taxTableData = ref([ { level: 1, range: "ä¸è¶ è¿36000å ", rate: 3, quickDeduction: 0 }, { level: 2, range: "è¶ è¿36000-144000å ", rate: 10, quickDeduction: 2520 }, @@ -312,14 +400,28 @@ salaryMonth: "", remark: "", payBank: "", auditUserId: undefined, }, rules: { salaryTitle: [{ required: true, message: "请è¾å ¥å·¥èµä¸»é¢", trigger: "blur" }], deptIds: [{ required: true, message: "è¯·éæ©é¨é¨", trigger: "change" }], salaryMonth: [{ required: true, message: "è¯·éæ©å·¥èµæä»½", trigger: "change" }], auditUserId: [{ required: true, message: "è¯·éæ©å®¡æ ¸äºº", trigger: "change" }], }, }); const { form, rules } = toRefs(data); // 计ç®å·¥èµæ»é¢ï¼ææåå·¥å®åå·¥èµä¹åï¼ const totalSalary = computed(() => { return employeeList.value.reduce((sum, e) => sum + parseNum(e.netSalary), 0); }); // æ ¹æ®å®¡æ ¸äººIDè·åå®¡æ ¸äººåç§° const auditUserName = computed(() => { if (!form.value.auditUserId) return ""; const user = userList.value.find(u => u.userId === form.value.auditUserId); return user ? user.nickName : ""; }); const loadBankOptions = () => { return bankList().then((res) => { @@ -327,6 +429,12 @@ bankOptions.value = list .map((b) => (b?.bankName == null ? "" : String(b.bankName).trim())) .filter((v) => v !== ""); }); }; const loadUserList = () => { return userListNoPageByTenantId().then((res) => { userList.value = res.data || []; }); }; @@ -389,6 +497,7 @@ nextTick(() => { loadDeptOptions(); loadBankOptions(); loadUserList(); employeeList.value = []; Object.assign(form.value, { id: undefined, @@ -397,6 +506,7 @@ salaryMonth: "", remark: "", payBank: "", auditUserId: undefined, }); // ç¼è¾ï¼å表页已è¿åä¸»è¡¨åæ®µï¼è¿éåªååæ¾ï¼æç»ç±âçæå·¥èµè¡¨/计ç®å·¥èµâå¾å°ï¼ if (type === "edit" && row?.id) { @@ -409,6 +519,30 @@ form.value.salaryMonth = row.salaryMonth ?? ""; form.value.remark = row.remark ?? ""; form.value.payBank = row.payBank ?? ""; form.value.auditUserId = row.auditUserId ?? undefined; // 妿æåå·¥æç»æ°æ®ï¼ç´æ¥åæ¾ if (row.staffSalaryDetailList && row.staffSalaryDetailList.length > 0) { employeeList.value = row.staffSalaryDetailList.map((e) => ({ staffOnJobId: e.staffOnJobId ?? e.staffId ?? e.id, id: 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), otherIncome: parseNum(e.otherIncome), socialPersonal: parseNum(e.socialPersonal), fundPersonal: parseNum(e.fundPersonal), otherDeduct: parseNum(e.otherDeduct), salaryTax: parseNum(e.salaryTax), grossSalary: parseNum(e.grossSalary), deductSalary: parseNum(e.deductSalary), netSalary: parseNum(e.netSalary), remark: e.remark ?? "", })); } } }); }; @@ -522,14 +656,6 @@ }); }; const handleExport = () => { proxy.$modal.msgInfo("导åºåè½é对æ¥å端"); }; const handleImport = () => { proxy.$modal.msgInfo("å¯¼å ¥åè½é对æ¥å端"); }; const handleClear = () => { proxy.$modal.confirm("ç¡®å®æ¸ 空å½ååå·¥å表åï¼").then(() => { employeeList.value = []; @@ -543,6 +669,18 @@ const submitForm = () => { formRef.value?.validate((valid) => { if (!valid) return; saveData(3); // 确认æäº¤ï¼ç¶æä¸º3ï¼å¾ å®¡æ ¸ï¼ }); }; const saveDraft = () => { formRef.value?.validate((valid) => { if (!valid) return; saveData(1); // ä¿åè稿ï¼ç¶æä¸º1ï¼èç¨¿ï¼ }); }; const saveData = (status) => { const payload = { id: form.value.id, salaryTitle: form.value.salaryTitle, @@ -550,6 +688,9 @@ salaryMonth: form.value.salaryMonth, remark: form.value.remark, payBank: form.value.payBank, auditUserId: form.value.auditUserId, auditUserName: auditUserName.value, totalSalary: totalSalary.value, staffSalaryDetailList: employeeList.value.map((e) => ({ staffOnJobId: e.staffOnJobId ?? e.staffId ?? e.id, staffName: e.staffName, @@ -570,17 +711,16 @@ })), }; if (props.operationType === "add") { staffSalaryMainAdd({ ...payload, status: 1 }).then(() => { proxy.$modal.msgSuccess("æ°å¢æå"); staffSalaryMainAdd({ ...payload, status }).then(() => { proxy.$modal.msgSuccess(status === 1 ? "è稿ä¿åæå" : "æäº¤æå"); closeDia(); }); } else { staffSalaryMainUpdate(payload).then(() => { proxy.$modal.msgSuccess("ä¿®æ¹æå"); staffSalaryMainUpdate({ ...payload, status }).then(() => { proxy.$modal.msgSuccess(status === 1 ? "è稿ä¿åæå" : "æäº¤æå"); closeDia(); }); } }); }; const closeDia = () => { @@ -644,4 +784,21 @@ .dialog-footer { text-align: right; } .salary-total { margin-top: 16px; padding: 12px 16px; background-color: #f5f7fa; border-radius: 4px; text-align: right; font-size: 16px; } .salary-total .total-label { color: #606266; margin-right: 8px; } .salary-total .total-value { color: #f56c6c; font-weight: bold; font-size: 18px; } </style> src/views/personnelManagement/monthlyStatistics/index.vue
@@ -4,7 +4,7 @@ <div> <span class="search_title">主é¢ï¼</span> <el-input v-model="searchForm.title" v-model="searchForm.salaryTitle" style="width: 240px" placeholder="请è¾å ¥ä¸»é¢" clearable @@ -81,28 +81,18 @@ </el-form-item> </el-form> <template #footer> <el-button @click="issueDialogVisible = false">åæ¶</el-button> <el-button type="primary" :loading="issueLoading" @click="confirmIssue"> ç¡®å® </el-button> <el-button @click="issueDialogVisible = false">åæ¶</el-button> </template> </el-dialog> <el-dialog v-model="auditDialogVisible" title="å·¥èµå®¡æ ¸" width="720px"> <el-form label-position="top"> <el-form-item label="å®¡æ ¸ç»æ" required> <el-radio-group v-model="auditForm.result"> <el-radio :value="4">éè¿</el-radio> <el-radio :value="2">ä¸éè¿</el-radio> </el-radio-group> </el-form-item> </el-form> <template #footer> <el-button @click="auditDialogVisible = false">åæ¶</el-button> <el-button type="primary" :loading="auditLoading" @click="confirmAudit"> ç¡®å® </el-button> </template> </el-dialog> <audit-dia v-model="auditDialogVisible" :row="auditRow" @close="auditDialogVisible = false" @success="handleAuditSuccess" /> </div> </template> @@ -120,6 +110,7 @@ import Cookies from "js-cookie"; import FormDia from "./components/formDia.vue"; import BankSettingDia from "./components/bankSettingDia.vue"; import AuditDia from "./components/auditDia.vue"; import PIMTable from "@/components/PIMTable/PIMTable.vue"; import { bankList } from "@/api/personnelManagement/bank.js"; import { @@ -130,7 +121,7 @@ const data = reactive({ searchForm: { title: "", salaryTitle: "", status: "", salaryMonth: "", }, @@ -140,7 +131,22 @@ const tableColumn = ref([ { label: "å·¥èµä¸»é¢", prop: "salaryTitle", minWidth: 140 }, { label: "å·¥èµæä»½", prop: "salaryMonth", width: 120 }, { label: "ç¶æ", prop: "statusName", width: 110 }, { label: "ç¶æ", prop: "statusName", width: 110, dataType: "tag", formatType: (status) => { const statusMap = { "è稿": "info", "å®¡æ ¸æªéè¿": "danger", "å¾ å®¡æ ¸": "warning", "å¾ åæ¾": "primary", "已忾": "success" }; return statusMap[status] || "info"; } }, { label: "å·¥èµæ»é¢", prop: "totalSalary", width: 120 }, { label: "æ¯ä»é¶è¡", prop: "payBank", width: 120 }, { label: "å®¡æ ¸äºº", prop: "auditUserName", width: 110 }, @@ -155,19 +161,19 @@ { name: "ç¼è¾", type: "text", showHide: (row) => Number(row?.status) === 1 || Number(row?.status) === 2, disabled: (row) => Number(row?.status) !== 1 && Number(row?.status) !== 2, clickFun: (row) => openForm("edit", row), }, { name: "å®¡æ ¸", type: "text", showHide: (row) => Number(row?.status) === 3, disabled: (row) => Number(row?.status) !== 3, clickFun: (row) => openAudit(row), }, { name: "åæ¾", type: "text", showHide: (row) => Number(row?.status) === 4, disabled: (row) => Number(row?.status) !== 4, clickFun: (row) => openIssue(row), }, ], @@ -195,9 +201,8 @@ const issueRow = ref(null); const issueForm = reactive({ bank: "" }); const auditDialogVisible = ref(false); const auditLoading = ref(false); const auditRow = ref(null); const auditForm = reactive({ result: 4 }); // 4=éè¿(å¾ åæ¾) 2=ä¸éè¿ const auditDiaRef = ref(null); const issueBankOptions = computed(() => { const options = Array.isArray(bankSetting.value?.options) ? bankSetting.value.options : []; @@ -235,7 +240,7 @@ }; const handleReset = () => { searchForm.value.title = ""; searchForm.value.salaryTitle = ""; searchForm.value.status = ""; searchForm.value.salaryMonth = ""; page.current = 1; @@ -258,6 +263,7 @@ .then((res) => { tableLoading.value = false; const records = res.data?.records ?? res.data?.list ?? []; console.log('å表æ¥å£è¿åæ°æ®:', records); // å ¼å®¹åç«¯åæ®µï¼è¥æ¥å£ä»è¿åå°è´¦ç»æï¼å¯å¨æ¤åæ å° tableData.value = records.map((item) => ({ ...item, @@ -293,9 +299,16 @@ }; const openAudit = (row) => { console.log('æå¼å®¡æ ¸ï¼ä¼ å ¥çæ°æ®:', row); auditRow.value = row || null; auditForm.result = 4; auditDialogVisible.value = true; nextTick(() => { auditDiaRef.value?.openDialog(row); }); }; const handleAuditSuccess = () => { getList(); }; const openIssue = (row) => { @@ -309,31 +322,7 @@ issueDialogVisible.value = true; }; const confirmAudit = () => { const row = auditRow.value; if (!row?.id) { auditDialogVisible.value = false; return; } const username = Cookies.get("username") || ""; const userIdRaw = Cookies.get("userId"); const auditUserId = userIdRaw ? Number(userIdRaw) : undefined; auditLoading.value = true; staffSalaryMainUpdate({ id: row.id, status: Number(auditForm.result) === 2 ? 2 : 4, auditUserId, auditUserName: username, }) .then(() => { proxy?.$modal?.msgSuccess?.("å®¡æ ¸æå"); auditDialogVisible.value = false; getList(); }) .finally(() => { auditLoading.value = false; }); }; const confirmIssue = () => { const bank = issueForm.bank ? String(issueForm.bank).trim() : ""; src/views/personnelManagement/socialSecuritySet/components/formDia.vue
@@ -200,6 +200,7 @@ { label: "失ä¸ä¿é©", value: "失ä¸ä¿é©" }, { label: "工伤ä¿é©", value: "工伤ä¿é©" }, { label: "çè²ä¿é©", value: "çè²ä¿é©" }, { label: "å ¬ç§¯é", value: "å ¬ç§¯é" }, ]; const defaultBenefit = () => ({