From c62745c757f758527136e62f1d9d8e576e7bd72f Mon Sep 17 00:00:00 2001
From: ZN <zhang_12370@163.com>
Date: 星期一, 09 三月 2026 10:42:20 +0800
Subject: [PATCH] Merge branch 'dev_New' of http://114.132.189.42:9002/r/product-inventory-management into dev_New
---
src/views/personnelManagement/monthlyStatistics/index.vue | 266 ++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 214 insertions(+), 52 deletions(-)
diff --git a/src/views/personnelManagement/monthlyStatistics/index.vue b/src/views/personnelManagement/monthlyStatistics/index.vue
index f576ad1..40d450b 100644
--- a/src/views/personnelManagement/monthlyStatistics/index.vue
+++ b/src/views/personnelManagement/monthlyStatistics/index.vue
@@ -10,20 +10,17 @@
clearable
@keyup.enter="handleQuery"
/>
- <span class="search_title ml10">鍗曟嵁鐘舵�侊細</span>
- <el-select
- v-model="searchForm.documentStatus"
- placeholder="璇烽�夋嫨鍗曟嵁鐘舵��"
- clearable
- style="width: 180px"
- >
- <el-option label="鑽夌" value="draft" />
- <el-option label="宸叉彁浜�" value="submitted" />
- <el-option label="宸插鏍�" value="approved" />
+ <span class="search_title ml10">鐘舵�侊細</span>
+ <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨鐘舵��" clearable style="width: 180px">
+ <el-option label="鑽夌" :value="1" />
+ <el-option label="瀹℃牳鏈�氳繃" :value="2" />
+ <el-option label="寰呭鏍�" :value="3" />
+ <el-option label="寰呭彂鏀�" :value="4" />
+ <el-option label="宸插彂鏀�" :value="5" />
</el-select>
<span class="search_title ml10">宸ヨ祫鏈堜唤锛�</span>
<el-date-picker
- v-model="searchForm.payMonth"
+ v-model="searchForm.salaryMonth"
type="month"
value-format="YYYY-MM"
format="YYYY-MM"
@@ -32,17 +29,6 @@
clearable
@change="handleQuery"
/>
- <span class="search_title ml10">瀹℃牳鐘舵�侊細</span>
- <el-select
- v-model="searchForm.approvalStatus"
- placeholder="璇烽�夋嫨瀹℃牳鐘舵��"
- clearable
- style="width: 180px"
- >
- <el-option label="寰呭鏍�" value="pending" />
- <el-option label="宸查�氳繃" value="passed" />
- <el-option label="宸查┏鍥�" value="rejected" />
- </el-select>
<el-button type="primary" @click="handleQuery" style="margin-left: 10px">
鎼滅储
</el-button>
@@ -53,6 +39,7 @@
<div style="margin-bottom: 10px">
<el-button type="primary" @click="openForm('add')">鏂板缓宸ヨ祫琛�</el-button>
<el-button @click="handleDelete">鍒犻櫎</el-button>
+ <el-button @click="openBankSetting">璁剧疆閾惰</el-button>
<el-button @click="handleExport">瀵煎嚭</el-button>
</div>
<PIMTable
@@ -74,12 +61,55 @@
ref="formDiaRef"
@close="handleQuery"
/>
+ <bank-setting-dia
+ v-model="bankDialogVisible"
+ ref="bankDiaRef"
+ @saved="handleBankSaved"
+ />
+ <el-dialog v-model="issueDialogVisible" title="宸ヨ祫鍙戞斁" width="720px">
+ <el-form label-position="top">
+ <el-form-item label="鍙戞斁閾惰" required>
+ <el-select
+ v-model="issueForm.bank"
+ placeholder="璇烽�夋嫨鍙戞斁閾惰"
+ clearable
+ filterable
+ style="width: 100%"
+ >
+ <el-option v-for="b in issueBankOptions" :key="b" :label="b" :value="b" />
+ </el-select>
+ </el-form-item>
+ </el-form>
+ <template #footer>
+ <el-button @click="issueDialogVisible = false">鍙栨秷</el-button>
+ <el-button type="primary" :loading="issueLoading" @click="confirmIssue">
+ 纭畾
+ </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>
</div>
</template>
<script setup>
import {
onMounted,
+ computed,
ref,
reactive,
toRefs,
@@ -87,44 +117,58 @@
nextTick,
} from "vue";
import { ElMessageBox } from "element-plus";
+import Cookies from "js-cookie";
import FormDia from "./components/formDia.vue";
+import BankSettingDia from "./components/bankSettingDia.vue";
import PIMTable from "@/components/PIMTable/PIMTable.vue";
+import { bankList } from "@/api/personnelManagement/bank.js";
import {
- monthlyStatisticsListPage,
- monthlyStatisticsDelete,
-} from "@/api/personnelManagement/monthlyStatistics.js";
+ staffSalaryMainListPage,
+ staffSalaryMainDelete,
+ staffSalaryMainUpdate,
+} from "@/api/personnelManagement/staffSalaryMain.js";
const data = reactive({
searchForm: {
title: "",
- documentStatus: "",
- payMonth: "",
- approvalStatus: "",
+ status: "",
+ salaryMonth: "",
},
});
const { searchForm } = toRefs(data);
const tableColumn = ref([
- { label: "宸ヨ祫涓婚", prop: "title", minWidth: 140 },
- { label: "宸ヨ祫鏈堜唤", prop: "payMonth", width: 120 },
- { label: "鍗曟嵁鐘舵��", prop: "documentStatusName", width: 100 },
- { label: "瀹℃牳鐘舵��", prop: "approvalStatusName", width: 100 },
- { label: "宸ヨ祫鎬婚", prop: "totalAmount", width: 120 },
- { label: "鏀粯閾惰", prop: "paymentBank", width: 120 },
- { label: "鍙戞斁鏃堕棿", prop: "issueTime", width: 160 },
- { label: "瀹℃壒浜哄憳", prop: "approver", width: 100 },
+ { label: "宸ヨ祫涓婚", prop: "salaryTitle", minWidth: 140 },
+ { label: "宸ヨ祫鏈堜唤", prop: "salaryMonth", width: 120 },
+ { label: "鐘舵��", prop: "statusName", width: 110 },
+ { label: "宸ヨ祫鎬婚", prop: "totalSalary", width: 120 },
+ { label: "鏀粯閾惰", prop: "payBank", width: 120 },
+ { label: "瀹℃牳浜�", prop: "auditUserName", width: 110 },
{ label: "澶囨敞", prop: "remark", minWidth: 120 },
{
dataType: "action",
label: "鎿嶄綔",
align: "center",
fixed: "right",
- width: 120,
+ width: 180,
operation: [
{
name: "缂栬緫",
type: "text",
+ showHide: (row) => Number(row?.status) === 1 || Number(row?.status) === 2,
clickFun: (row) => openForm("edit", row),
+ },
+ {
+ name: "瀹℃牳",
+ type: "text",
+ showHide: (row) => Number(row?.status) === 3,
+ clickFun: (row) => openAudit(row),
+ },
+ {
+ name: "鍙戞斁",
+ type: "text",
+ showHide: (row) => Number(row?.status) === 4,
+ clickFun: (row) => openIssue(row),
},
],
},
@@ -143,6 +187,47 @@
const operationType = ref("add");
const currentRow = ref({});
const { proxy } = getCurrentInstance();
+const bankSetting = ref({});
+const bankDialogVisible = ref(false);
+const bankDiaRef = ref(null);
+const issueDialogVisible = ref(false);
+const issueLoading = ref(false);
+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 issueBankOptions = computed(() => {
+ const options = Array.isArray(bankSetting.value?.options) ? bankSetting.value.options : [];
+ return options
+ .map((v) => (v == null ? "" : String(v).trim()))
+ .filter((v) => v !== "");
+});
+
+const statusName = (s) => {
+ const n = Number(s);
+ return (
+ {
+ 1: "鑽夌",
+ 2: "瀹℃牳鏈�氳繃",
+ 3: "寰呭鏍�",
+ 4: "寰呭彂鏀�",
+ 5: "宸插彂鏀�",
+ }[n] || "-"
+ );
+};
+
+const loadBankSetting = () => {
+ return bankList().then((res) => {
+ const list = Array.isArray(res?.data) ? res.data : [];
+ const options = list
+ .map((b) => (b?.bankName == null ? "" : String(b.bankName).trim()))
+ .filter((v) => v !== "");
+ bankSetting.value = { options, defaultBank: "" };
+ });
+};
const handleQuery = () => {
page.current = 1;
@@ -151,9 +236,8 @@
const handleReset = () => {
searchForm.value.title = "";
- searchForm.value.documentStatus = "";
- searchForm.value.payMonth = "";
- searchForm.value.approvalStatus = "";
+ searchForm.value.status = "";
+ searchForm.value.salaryMonth = "";
page.current = 1;
getList();
};
@@ -166,27 +250,25 @@
const getList = () => {
tableLoading.value = true;
- monthlyStatisticsListPage({
+ staffSalaryMainListPage({
...searchForm.value,
current: page.current,
size: page.size,
})
.then((res) => {
tableLoading.value = false;
- const records = res.data?.records ?? [];
+ const records = res.data?.records ?? res.data?.list ?? [];
// 鍏煎鍚庣瀛楁锛氳嫢鎺ュ彛浠嶈繑鍥炲彴璐︾粨鏋勶紝鍙湪姝ゅ仛鏄犲皠
tableData.value = records.map((item) => ({
...item,
- title: item.title ?? item.payDateStr ?? "-",
- payMonth: item.payMonth ?? item.payDateStr ?? item.payDate ?? "-",
- documentStatusName: item.documentStatusName ?? "-",
- approvalStatusName: item.approvalStatusName ?? "-",
- totalAmount: item.totalAmount ?? item.actualWages ?? "-",
- paymentBank: item.paymentBank ?? "-",
- issueTime: item.issueTime ?? item.createTime ?? "-",
- approver: item.approver ?? "-",
+ salaryTitle: item.salaryTitle ?? "-",
+ salaryMonth: item.salaryMonth ?? "-",
+ statusName: statusName(item.status),
+ totalSalary: item.totalSalary ?? "-",
+ payBank: (item.payBank == null ? "" : String(item.payBank).trim()) || "-",
+ auditUserName: item.auditUserName ?? "-",
}));
- page.total = res.data?.total ?? 0;
+ page.total = res.data?.total ?? res.data?.count ?? 0;
})
.catch(() => {
tableLoading.value = false;
@@ -206,6 +288,85 @@
});
};
+const openBankSetting = () => {
+ bankDialogVisible.value = true;
+};
+
+const openAudit = (row) => {
+ auditRow.value = row || null;
+ auditForm.result = 4;
+ auditDialogVisible.value = true;
+};
+
+const openIssue = (row) => {
+ if (!issueBankOptions.value?.length) {
+ proxy?.$modal?.msgWarning?.("璇峰厛鍦ㄢ�滆缃摱琛屸�濅腑缁存姢鍙戞斁閾惰閫夐」");
+ return;
+ }
+ issueRow.value = row || null;
+ const current = row?.payBank && row.payBank !== "-" ? String(row.payBank).trim() : "";
+ issueForm.bank = current;
+ 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() : "";
+ if (!bank) {
+ proxy?.$modal?.msgWarning?.("璇烽�夋嫨鍙戞斁閾惰");
+ return;
+ }
+ const row = issueRow.value;
+ if (!row?.id) {
+ issueDialogVisible.value = false;
+ return;
+ }
+ issueLoading.value = true;
+ staffSalaryMainUpdate({
+ id: row.id,
+ payBank: bank,
+ status: 5,
+ })
+ .then(() => {
+ proxy?.$modal?.msgSuccess?.("鍙戞斁鎴愬姛");
+ issueDialogVisible.value = false;
+ getList();
+ })
+ .finally(() => {
+ issueLoading.value = false;
+ });
+};
+
+const handleBankSaved = () => {
+ loadBankSetting();
+ getList();
+};
+
const handleDelete = () => {
if (!selectedRows.value?.length) {
proxy.$modal.msgWarning("璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁");
@@ -218,7 +379,7 @@
type: "warning",
})
.then(() => {
- monthlyStatisticsDelete(ids).then(() => {
+ staffSalaryMainDelete(ids).then(() => {
proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
getList();
});
@@ -235,6 +396,7 @@
};
onMounted(() => {
+ loadBankSetting();
getList();
});
</script>
--
Gitblit v1.9.3