From 5952d34811ee82e797ef0070f84ff041381072a5 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期二, 10 三月 2026 17:52:40 +0800
Subject: [PATCH] 新增采购退货单增加费用等数据
---
src/views/personnelManagement/monthlyStatistics/components/auditDia.vue | 216 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 216 insertions(+), 0 deletions(-)
diff --git a/src/views/personnelManagement/monthlyStatistics/components/auditDia.vue b/src/views/personnelManagement/monthlyStatistics/components/auditDia.vue
new file mode 100644
index 0000000..48a41f0
--- /dev/null
+++ b/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>
\ No newline at end of file
--
Gitblit v1.9.3