ly пре 1 година
родитељ
комит
480eddd98d

+ 10 - 2
src/api/business/production/salary.js

@@ -43,8 +43,16 @@ export function exportSalaryTemplate() {
   )
 }
 
-
-
+// 下载工资模板
+export function exportSalaryTemplateNotCompany() {
+  request.defaults.baseURL = '/ezhizao-yzbh-production'
+  download(
+    "business/salary/exportSalaryTemplateNotCompany",
+    {
+    },
+    `工资导入模板_${new Date().getTime()}.xlsx`
+  )
+}
 // 新增工资
 export function addSalary(data) {
   request.defaults.baseURL = '/ezhizao-yzbh-production'

+ 2 - 2
src/utils/zTool.js

@@ -423,11 +423,11 @@ let zTool = {
 			// 遍历每行
 			for (let i = 0; i < 3; i++) {
 			  // 计算水印的y坐标
-			  const y = (i + 0.5) * partHeight; // 在每行的中间位置添加水印
+			  const y = (i + 0.2) * partHeight; // 在每行的中间位置添加水印
 			  // 遍历每个部分
 			  for (let j = 0; j < Math.ceil(canvas.width / rowWidth); j++) {
 				// 计算水印的x坐标
-				const x = (j + 0.5) * rowWidth; // 在每个部分的中间位置添加水印
+				const x = (j + 0.2) * rowWidth; // 在每个部分的中间位置添加水印
 				// 保存当前绘图环境状态
 				ctx.save();
 				// 将坐标系移动到水印的位置

+ 7 - 2
src/views/business/housingFund/confirm/form.vue

@@ -301,6 +301,7 @@
   } from "@/api/business/production/housingFundConfirm";
   import { uploadFile } from "@/api/tool/file";
   import { ref } from "vue";
+  import zTool from '@/utils/zTool'
   import { yesOrNo } from "@/utils/default";
   const { proxy } = getCurrentInstance();
   const visible = ref(false);
@@ -619,8 +620,12 @@
       this.$message.error("粘贴内容非图片");
       return;
     }
-    tempFile.value = file;
-    uploadIdImage2(tempFile, row, field)
+    zTool.addWatermark(file,"仅供公积金申报使用").then(watermarkedFile => {
+      tempFile.value = watermarkedFile
+      uploadIdImage2(tempFile, row, field)
+    })
+    // tempFile.value = file;
+    // uploadIdImage2(tempFile, row, field)
   }
 
   function uploadIdImage2(tempFile, row, field) {

+ 294 - 497
src/views/business/production/salary/form.vue

@@ -1,12 +1,5 @@
 <template>
-  <el-dialog
-    title="工资信息"
-    v-model="visible"
-    :width="width"
-    append-to-body
-    draggable
-    @close="close"
-  >
+  <el-dialog title="工资信息" v-model="visible" :width="width" append-to-body draggable @close="close">
     <!-- <div slot="title" class="dialog-title-container">
       <span class="title-label"><i class="el-icon-document" /> 工资信息</span>
       <i class="el-icon-close" @click="close" />
@@ -36,132 +29,61 @@
               <div class="title">
                 <i class="fa fa-th-list" aria-hidden="true" /> 人员信息
               </div>
-              <el-button class="button-class"
-                type="primary"
-                icon="plus"
-                size="small"
-                @click="handleEmployeeCreate"
-              >
-                新增</el-button
-              >
-              <el-button class="button-class"
-                v-if="selections.length > 0"
-                type="danger"
-                size="small"
-                icon="delete"
-                @click="handleEmployeeBatchDelete"
-              >
-                删除</el-button
-              >
+              <el-button class="button-class" type="primary" icon="plus" size="small" @click="handleEmployeeCreate">
+                新增</el-button>
+              <el-button class="button-class" type="primary" icon="plus" size="small" @click="handleImport"
+                v-hasPermi="['business:salary:import']">
+                导入</el-button>
+              <el-button class="button-class" v-if="selections.length > 0" type="danger" size="small" icon="delete"
+                @click="handleEmployeeBatchDelete">
+                删除</el-button>
             </div>
             <div class="details-body">
               <div>
-                <el-table
-                  ref="sourceTable"
-                  :data="form.details"
-                  size="small"
-                  max-height="490px"
-                  border
-                  header-align="center"
-                  show-summary
-                  :summary-method="getSummaries"
-                  highlight-current-row
-                  header-row-class-name="list-header-row"
-                  row-class-name="list-row"
-                  class="salary-table"
-                  @selection-change="handleCheckChange"
-                  @current-change="handleCurrentChange"
-                >
-                  <el-table-column
-                    type="selection"
-                    fixed="left"
-                    width="50"
-                    align="center"
-                  />
-                  <el-table-column
-                    type="index"
-                    label="序号"
-                    width="50"
-                    fixed="left"
-                    align="center"
-                  />
-                  <el-table-column
-                    label="员工姓名"
-                    fixed="left"
-                    width="80"
-                    align="center"
-                  >
+                <el-table ref="sourceTable" :data="form.details" size="small" max-height="490px" border
+                  header-align="center" show-summary :summary-method="getSummaries" highlight-current-row
+                  header-row-class-name="list-header-row" row-class-name="list-row" class="salary-table"
+                  @selection-change="handleCheckChange" @current-change="handleCurrentChange">
+                  <el-table-column type="selection" fixed="left" width="50" align="center" />
+                  <el-table-column type="index" label="序号" width="50" fixed="left" align="center" />
+                  <el-table-column label="员工姓名" fixed="left" width="80" align="center">
                     <template #default="scope">
                       <div>
-                        <el-input
-                          v-model="scope.row.employeeName"
-                          size="small"
-                          placeholder="员工姓名"
-                          style="width: 100%"
-                        />
+                        <el-input v-model="scope.row.employeeName" size="small" placeholder="员工姓名"
+                          style="width: 100%" />
                       </div>
-                      <span
-                        style="
+                      <span style="
                           color: red;
                           position: absolute;
                           z-index: 10;
                           top: 4px;
                           right: 12px;
-                        "
-                        >*</span
-                      >
+                        ">*</span>
                     </template>
                   </el-table-column>
                   <el-table-column label="身份证号" width="150" align="center">
                     <template #default="scope">
                       <div>
-                        <el-input
-                          v-model="scope.row.idCode"
-                          size="small"
-                          placeholder="身份证号"
-                          style="width: 100%"
-                        />
+                        <el-input v-model="scope.row.idCode" size="small" placeholder="身份证号" style="width: 100%" />
                       </div>
-                      <span
-                        style="
+                      <span style="
                           color: red;
                           position: absolute;
                           z-index: 10;
                           top: 4px;
                           right: 12px;
-                        "
-                        >*</span
-                      >
+                        ">*</span>
                     </template>
                   </el-table-column>
-                  <el-table-column
-                    label="应发工资"
-                    width="100"
-                    header-align="center"
-                    align="right"
-                    prop="planSalary"
-                  >
+                  <el-table-column label="应发工资" width="100" header-align="center" align="right" prop="planSalary">
                     <template #default="scope">
                       <div>
-                        <el-input-number
-                          v-model="scope.row.planSalary"
-                          size="small"
-                          placeholder="应发工资"
-                          :precision="2"
-                          :controls="false"
-                          style="width: 100%"
-                          @change="rowChangeSum(scope.row)"
-                        />
+                        <el-input-number v-model="scope.row.planSalary" size="small" placeholder="应发工资" :precision="2"
+                          :controls="false" style="width: 100%" @change="rowChangeSum(scope.row)" />
                       </div>
                     </template>
                   </el-table-column>
-                  <el-table-column
-                    label="实发工资"
-                    width="100"
-                    header-align="center"
-                    align="right"
-                    prop="actuallySalary"
-                  >
+                  <el-table-column label="实发工资" width="100" header-align="center" align="right" prop="actuallySalary">
                     <template #default="scope">
                       <div>
                         <!-- <el-input-number
@@ -176,187 +98,80 @@
                       </div>
                     </template>
                   </el-table-column>
-                  <el-table-column
-                    label="奖金及其他"
-                    width="100"
-                    header-align="center"
-                    align="right"
-                    prop="bonusAmount"
-                  >
+                  <el-table-column label="奖金及其他" width="100" header-align="center" align="right" prop="bonusAmount">
                     <template #default="scope">
                       <div>
-                        <el-input-number
-                          v-model="scope.row.bonusAmount"
-                          size="small"
-                          placeholder="奖金及其他"
-                          :precision="2"
-                          :controls="false"
-                          style="width: 100%"
-                          @change="rowChangeSum(scope.row)"
-                        />
+                        <el-input-number v-model="scope.row.bonusAmount" size="small" placeholder="奖金及其他" :precision="2"
+                          :controls="false" style="width: 100%" @change="rowChangeSum(scope.row)" />
                       </div>
                     </template>
                   </el-table-column>
                   <el-table-column label="社保" align="center">
-                    <el-table-column
-                      label="养老保险"
-                      width="85"
-                      header-align="center"
-                      align="right"
-                      prop="endowmentInsurance"
-                    >
+                    <el-table-column label="养老保险" width="85" header-align="center" align="right"
+                      prop="endowmentInsurance">
                       <template #default="scope">
                         <div>
-                          <el-input-number
-                            v-model="scope.row.endowmentInsurance"
-                            size="small"
-                            placeholder="养老保险"
-                            :precision="2"
-                            :controls="false"
-                            style="width: 100%"
-                            @change="rowChangeSum(scope.row)"
-                          />
+                          <el-input-number v-model="scope.row.endowmentInsurance" size="small" placeholder="养老保险"
+                            :precision="2" :controls="false" style="width: 100%" @change="rowChangeSum(scope.row)" />
                         </div>
                       </template>
                     </el-table-column>
-                    <el-table-column
-                      label="医疗保险"
-                      width="85"
-                      header-align="center"
-                      align="right"
-                      prop="medicalInsurance"
-                    >
+                    <el-table-column label="医疗保险" width="85" header-align="center" align="right"
+                      prop="medicalInsurance">
                       <template #default="scope">
                         <div>
-                          <el-input-number
-                            v-model="scope.row.medicalInsurance"
-                            size="small"
-                            placeholder="医疗保险"
-                            :precision="2"
-                            :controls="false"
-                            style="width: 100%"
-                            @change="rowChangeSum(scope.row)"
-                          />
+                          <el-input-number v-model="scope.row.medicalInsurance" size="small" placeholder="医疗保险"
+                            :precision="2" :controls="false" style="width: 100%" @change="rowChangeSum(scope.row)" />
                         </div>
                       </template>
                     </el-table-column>
-                    <el-table-column
-                      label="失业险"
-                      width="85"
-                      header-align="center"
-                      align="right"
-                      prop="unemploymentBenefit"
-                    >
+                    <el-table-column label="失业险" width="85" header-align="center" align="right"
+                      prop="unemploymentBenefit">
                       <template #default="scope">
                         <div>
-                          <el-input-number
-                            v-model="scope.row.unemploymentBenefit"
-                            size="small"
-                            placeholder="失业险"
-                            :precision="2"
-                            :controls="false"
-                            style="width: 100%"
-                            @change="rowChangeSum(scope.row)"
-                          />
+                          <el-input-number v-model="scope.row.unemploymentBenefit" size="small" placeholder="失业险"
+                            :precision="2" :controls="false" style="width: 100%" @change="rowChangeSum(scope.row)" />
                         </div>
                       </template>
                     </el-table-column>
-                    <el-table-column
-                      label="大病险"
-                      width="85"
-                      header-align="center"
-                      align="right"
-                      prop="seriousIllnessInsurance"
-                    >
+                    <el-table-column label="大病险" width="85" header-align="center" align="right"
+                      prop="seriousIllnessInsurance">
                       <template #default="scope">
                         <div>
-                          <el-input-number
-                            v-model="scope.row.seriousIllnessInsurance"
-                            size="small"
-                            placeholder="大病险"
-                            :precision="2"
-                            :controls="false"
-                            style="width: 100%"
-                            @change="rowChangeSum(scope.row)"
-                          />
+                          <el-input-number v-model="scope.row.seriousIllnessInsurance" size="small" placeholder="大病险"
+                            :precision="2" :controls="false" style="width: 100%" @change="rowChangeSum(scope.row)" />
                         </div>
                       </template>
                     </el-table-column>
                   </el-table-column>
-                  <el-table-column
-                    label="公积金"
-                    width="85"
-                    header-align="center"
-                    align="right"
-                    prop="housingFund"
-                  >
+                  <el-table-column label="公积金" width="85" header-align="center" align="right" prop="housingFund">
                     <template #default="scope">
                       <div>
-                        <el-input-number
-                          v-model="scope.row.housingFund"
-                          size="small"
-                          placeholder="住房公积金"
-                          :precision="2"
-                          :controls="false"
-                          style="width: 100%"
-                          @change="rowChangeSum(scope.row)"
-                        />
+                        <el-input-number v-model="scope.row.housingFund" size="small" placeholder="住房公积金" :precision="2"
+                          :controls="false" style="width: 100%" @change="rowChangeSum(scope.row)" />
                       </div>
                     </template>
                   </el-table-column>
-                  <el-table-column
-                    label="个税"
-                    header-align="center"
-                    align="right"
-                    width="85"
-                    prop="currentIndividualIncomeTax"
-                  >
+                  <el-table-column label="个税" header-align="center" align="right" width="85"
+                    prop="currentIndividualIncomeTax">
                     <template #default="scope">
                       <div>
-                        <el-input-number
-                          v-model="scope.row.currentIndividualIncomeTax"
-                          size="small"
-                          placeholder="个税"
-                          :precision="2"
-                          :controls="false"
-                          style="width: 100%"
-                          @change="rowChangeSum(scope.row)"
-                        />
-                      </div> </template
-                  ></el-table-column>
-                  <el-table-column
-                    label="其他扣款"
-                    width="85"
-                    header-align="center"
-                    align="right"
-                    prop="otherCut"
-                  >
+                        <el-input-number v-model="scope.row.currentIndividualIncomeTax" size="small" placeholder="个税"
+                          :precision="2" :controls="false" style="width: 100%" @change="rowChangeSum(scope.row)" />
+                      </div>
+                    </template></el-table-column>
+                  <el-table-column label="其他扣款" width="85" header-align="center" align="right" prop="otherCut">
                     <template #default="scope">
                       <div>
-                        <el-input-number
-                          v-model="scope.row.otherCut"
-                          size="small"
-                          placeholder="其他扣款"
-                          :precision="2"
-                          :controls="false"
-                          style="width: 100%"
-                          @change="rowChangeSum(scope.row)"
-                        />
+                        <el-input-number v-model="scope.row.otherCut" size="small" placeholder="其他扣款" :precision="2"
+                          :controls="false" style="width: 100%" @change="rowChangeSum(scope.row)" />
                       </div>
                     </template>
                   </el-table-column>
-                  <el-table-column
-                    label="备注"
-                    width="100"
-                    header-align="center"
-                  >
+                  <el-table-column label="备注" width="100" header-align="center">
                     <template #default="scope">
                       <div>
-                        <el-input
-                          v-model="scope.row.remark"
-                          size="small"
-                          placeholder="备注"
-                        />
+                        <el-input v-model="scope.row.remark" size="small" placeholder="备注" />
                       </div>
                     </template>
                   </el-table-column>
@@ -374,298 +189,280 @@
           </el-col>
           <el-col :span="24">
             <el-form-item label="备注">
-              <el-input
-                v-model.trim="form.content"
-                maxlength="200"
-                show-word-limit
-                type="textarea"
-                rows="2"
-              />
+              <el-input v-model.trim="form.content" maxlength="200" show-word-limit type="textarea" rows="2" />
             </el-form-item>
           </el-col>
         </el-row>
       </el-form>
     </div>
     <div class="form-btns-container" style="height: 40px">
-      <el-button
-        size="small"
-        style="float: right; margin-left: 12px; margin-right: 12px"
-        @click="close"
-        icon="close"
-      >
+      <el-button size="small" style="float: right; margin-left: 12px; margin-right: 12px" @click="close" icon="close">
         取消
       </el-button>
-      <el-button
-        type="primary"
-        size="small"
-        style="float: right"
-        icon="Finished"
-        @click="handleSave(2)"
-      >
-        保存</el-button
-      >
-      <el-button
-        type="warning"
-        size="small"
-        icon="Edit"
-        style="float: right"
-        @click="handleSave(1)"
-      >
-        待确认</el-button
-      >
+      <el-button type="primary" size="small" style="float: right" icon="Finished" @click="handleSave(2)">
+        保存</el-button>
+      <el-button type="warning" size="small" icon="Edit" style="float: right" @click="handleSave(1)">
+        待确认</el-button>
     </div>
+    <import-excel-dialog-customer ref="importExcelDialogRef"  :companyId = "companyId"/>
     <!-- <feedback-dialog ref="feedbackDialogView" :parent="this" />
     <print-dialog ref="printDialog" :parent="this" /> -->
   </el-dialog>
 </template>
 <script setup>
-import {
-  getDetail,
-  saveDetail,
-  updateDetail,
-} from "@/api/business/production/salary";
-import { rowNum, numberToCurrencyNo } from "@/utils/index";
-import { ref } from "vue";
-const { proxy } = getCurrentInstance();
-const visible = ref(false);
-const width = ref(1420);
-const selections = ref([]);
-const currentSource = ref(null);
+  import {
+    getDetail,
+    saveDetail,
+    updateDetail,
+  } from "@/api/business/production/salary";
+  import { rowNum, numberToCurrencyNo } from "@/utils/index";
+  import importExcelDialogCustomer from "./importExcelDialogCustomer.vue";
+  import { ref } from "vue";
+  const { proxy } = getCurrentInstance();
+  const visible = ref(false);
+  const width = ref(1420);
+  const selections = ref([]);
+  const currentSource = ref(null);
+  const importExcelDialogRef = ref(null);
+  const props = defineProps({
+    getList: {
+      type: Function,
+      default: () => { },
+    },
+  });
 
-const props = defineProps({
-  getList: {
-    type: Function,
-    default: () => {},
-  },
-});
+  const { getList } = toRefs(props);
+  const total = ref(0);
 
-const { getList } = toRefs(props);
-const total = ref(0);
+  const employeeEmptyData = {
+    id: null,
+    title: "",
+    remark: "",
+    employeeName: "",
+    departmentName: "",
+    idCode: "",
+    salaryAmount: "",
+    bonusAmount: "",
+    allowanceAmount: "",
+    subsidyAmount: "",
+    absenceCut: "",
+    planSalary: 0,
+    actuallySalary: 0,
+    endowmentInsurance: 0,
+    medicalInsurance: 0,
+    unemploymentBenefit: 0,
+    seriousIllnessInsurance: 0,
+    housingFund: 0,
+    otherCut: 0,
+    cumulativeIncome: 0,
+    cumulativeSpecialCut: 0,
+    cumulativeChildEduCut: 0,
+    cumulativeHouseLoanInterestCut: 0,
+    cumulativeHouseRentCut: 0,
+    cumulativeSupportElderCut: 0,
+    cumulativeContinuingEduCut: 0,
+    cumulativeBabyCareCut: 0,
+    sumSpecialCumulativeCut: 0,
+    cumulativeOtherCut: 0,
+    cumulativeIndividualIncomeTax: 0,
+    cumulativeHasPaidIit: 0,
+    currentIndividualIncomeTax: 0,
+    idiograph: "",
+    details: [],
+    editStatus: true,
+  };
 
-const employeeEmptyData = {
-  id: null,
-  title: "",
-  remark: "",
-  employeeName: "",
-  departmentName: "",
-  idCode: "",
-  salaryAmount: "",
-  bonusAmount: "",
-  allowanceAmount: "",
-  subsidyAmount: "",
-  absenceCut: "",
-  planSalary: 0,
-  actuallySalary: 0,
-  endowmentInsurance: 0,
-  medicalInsurance: 0,
-  unemploymentBenefit: 0,
-  seriousIllnessInsurance: 0,
-  housingFund: 0,
-  otherCut: 0,
-  cumulativeIncome: 0,
-  cumulativeSpecialCut: 0,
-  cumulativeChildEduCut: 0,
-  cumulativeHouseLoanInterestCut: 0,
-  cumulativeHouseRentCut: 0,
-  cumulativeSupportElderCut: 0,
-  cumulativeContinuingEduCut: 0,
-  cumulativeBabyCareCut: 0,
-  sumSpecialCumulativeCut: 0,
-  cumulativeOtherCut: 0,
-  cumulativeIndividualIncomeTax: 0,
-  cumulativeHasPaidIit: 0,
-  currentIndividualIncomeTax: 0,
-  idiograph: "",
-  details: [],
-  editStatus: true,
-};
+  const form = ref({});
+ const  companyId = ref(null)
+  const emptyForm = {
+    details: [],
+  };
 
-const form = ref({});
+  function open(detail) {
+    visible.value = true;
+    form.value = detail;
+    companyId.value = detail.companyId
+    loadData();
+  }
 
-const emptyForm = {
-  details: [],
-};
+  function loadData() {
+    getDetail(form.value).then((res) => {
+      form.value = { ...proxy.deepClone(emptyForm), ...res.data };
+      res.data.details.forEach(item => {
+        form.value.details.forEach(item2 => {
+          if (item.employeeName == item2.employeeName) {
+            item2.currentIndividualIncomeTax = item.individualIncomeTaxConfirm;
+          }
+        })
+      })
+      if (form.value.status === 2 || form.value.status === 3) {
+        proxy.$modal.msgError("该工资信息已提交待审核");
+        close();
+      }
+      computeTotal();
+    });
+  }
 
-function open(detail) {
-  visible.value = true;
-  form.value = detail;
-  loadData();
-}
+  function close() {
+    visible.value = false;
+    reset();
+  }
 
-function loadData() {
-  getDetail(form.value).then((res) => {
-    form.value = { ...proxy.deepClone(emptyForm), ...res.data };
-    res.data.details.forEach(item =>{
-      form.value.details.forEach(item2 =>{
-        if(item.employeeName == item2.employeeName ){
-          item2.currentIndividualIncomeTax = item.individualIncomeTaxConfirm;
-        }
-      })
-    })
-    if (form.value.status === 2 || form.value.status === 3) {
-      proxy.$modal.msgError("该工资信息已提交待审核");
-      close();
-    }
-    computeTotal();
-  });
-}
+  function reset() {
+    form.value = proxy.deepClone(emptyForm);
+  }
 
-function close() {
-  visible.value = false;
-  reset();
-}
+  function printSalary() { }
+  function exportSalary() { }
 
-function reset() {
-  form.value = proxy.deepClone(emptyForm);
-}
+  function handleCurrentChange(row) {
+    currentSource.value = row;
+  }
 
-function printSalary() {}
-function exportSalary() {}
+  function handleCheckChange(selection) {
+    selections.value = selection.map((item) => item);
+  }
 
-function handleCurrentChange(row) {
-  currentSource.value = row;
-}
+  function handleEmployeeCreate() {
+    // 此处必须进行深拷贝,否则添加的明细,将都指向了一个对象
+    const _newSource = JSON.parse(JSON.stringify(employeeEmptyData));
+    form.value.details.push(_newSource);
+    handleCurrentChange(_newSource);
+  }
 
-function handleCheckChange(selection) {
-  selections.value = selection.map((item) => item);
-}
+  function handleEmployeeBatchDelete() {
+    proxy.$modal
+      .confirm("确定删除?")
+      .then(() => {
+        form.value.details = form.value.details.filter(
+          (item) => selections.value.indexOf(item) === -1
+        );
+      })
+      .catch(() => {
+        proxy.$modal.msg("已取消删除");
+      });
+  }
+  //导入按钮操作
+  function handleImport() {
+    importExcelDialogRef.value.open();
+  }
 
-function handleEmployeeCreate() {
-  // 此处必须进行深拷贝,否则添加的明细,将都指向了一个对象
-  const _newSource = JSON.parse(JSON.stringify(employeeEmptyData));
-  form.value.details.push(_newSource);
-  handleCurrentChange(_newSource);
-}
+  function rowChangeSum(row) {
+    let actuallySalary = 0;
+    actuallySalary += row.planSalary == null ? 0 : row.planSalary;
+    actuallySalary += row.bonusAmount == null ? 0 : row.bonusAmount;
+    actuallySalary -= row.endowmentInsurance == null ? 0 : row.endowmentInsurance;
+    actuallySalary -= row.medicalInsurance == null ? 0 : row.medicalInsurance;
+    actuallySalary -=
+      row.unemploymentBenefit == null ? 0 : row.unemploymentBenefit;
+    actuallySalary -=
+      row.seriousIllnessInsurance == null ? 0 : row.seriousIllnessInsurance;
+    actuallySalary -= row.housingFund == null ? 0 : row.housingFund;
+    actuallySalary -=
+      row.currentIndividualIncomeTax == null ? 0 : row.currentIndividualIncomeTax;
+    actuallySalary -= row.otherCut == null ? 0 : row.otherCut;
 
-function handleEmployeeBatchDelete() {
-  proxy.$modal
-    .confirm("确定删除?")
-    .then(() => {
-      form.value.details = form.value.details.filter(
-        (item) => selections.value.indexOf(item) === -1
-      );
-    })
-    .catch(() => {
-      proxy.$modal.msg("已取消删除");
-    });
-}
+    row.actuallySalary = parseFloat(actuallySalary.toFixed(2));
+    computeTotal();
+  }
 
-function rowChangeSum(row) {
-  let actuallySalary = 0;
-  actuallySalary += row.planSalary == null ? 0 : row.planSalary;
-  actuallySalary += row.bonusAmount == null ? 0 : row.bonusAmount;
-  actuallySalary -= row.endowmentInsurance == null ? 0 : row.endowmentInsurance;
-  actuallySalary -= row.medicalInsurance == null ? 0 : row.medicalInsurance;
-  actuallySalary -=
-    row.unemploymentBenefit == null ? 0 : row.unemploymentBenefit;
-  actuallySalary -=
-    row.seriousIllnessInsurance == null ? 0 : row.seriousIllnessInsurance;
-  actuallySalary -= row.housingFund == null ? 0 : row.housingFund;
-  actuallySalary -=
-    row.currentIndividualIncomeTax == null ? 0 : row.currentIndividualIncomeTax;
-  actuallySalary -= row.otherCut == null ? 0 : row.otherCut;
+  function computeTotal() {
+    let totalSalay = 0;
+    form.value.details.forEach((l) => {
+      totalSalay += l.actuallySalary == null ? 0 : l.actuallySalary;
+    });
+    form.value.amount = totalSalay;
+  }
 
-  row.actuallySalary = parseFloat(actuallySalary.toFixed(2));
-  computeTotal();
-}
+  function getSummaries(param) {
+    const { columns, data } = param;
+    const sums = [];
+    columns.forEach((column, index) => {
+      if (index === 0) {
+        sums[index] = "合计";
+        return;
+      } else if (index === 1) {
+        sums[index] = "";
+        return;
+      }
+      const values = data.map((item) => Number(item[column.property]));
 
-function computeTotal() {
-  let totalSalay = 0;
-  form.value.details.forEach((l) => {
-    totalSalay += l.actuallySalary == null ? 0 : l.actuallySalary;
-  });
-  form.value.amount = totalSalay;
-}
+      if (!values.every((value) => isNaN(value))) {
+        sums[index] = values.reduce((prev, curr) => {
+          const value = Number(curr);
+          if (!isNaN(value)) {
+            return (Number(prev) + Number(curr)).toFixed(2);
+          } else {
+            return Number(prev).toFixed(2);
+          }
+        }, 0);
+        sums[index] = numberToCurrencyNo(sums[index]);
+      } else {
+        sums[index] = "";
+      }
+    });
+    return sums;
+  }
 
-function getSummaries(param) {
-  const { columns, data } = param;
-  const sums = [];
-  columns.forEach((column, index) => {
-    if (index === 0) {
-      sums[index] = "合计";
-      return;
-    } else if (index === 1) {
-      sums[index] = "";
-      return;
+  function handleSave(status) {
+    for (let i = 0; i < form.value.details.length; i++) {
+      const l = form.value.details[i];
+      // 数据校验
+      if (!l.employeeName) {
+        proxy.$modal.msgError(`第${i + 1}行员工姓名不能为空`);
+        return;
+      }
+      if (!l.idCode) {
+        proxy.$modal.msgError(`第${i + 1}行身份证号不能为空`);
+        return;
+      }
+      if (l.actuallySalary < 0) {
+        proxy.$modal.msgError(`第${i + 1}行实际工资不能为负`);
+        return;
+      }
+      // 正则表达式匹配身份证号的格式
+      const idRegExp =
+        /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X|x)$/;
+      const regExp = /^([a-zA-z]|[0-9]){5,17}$/;
+      if (!(regExp.test(l.idCode) || idRegExp.test(l.idCode))) {
+        proxy.$modal.msgError(`第${i + 1}行请输入正确的身份证号!`);
+        return;
+      }
     }
-    const values = data.map((item) => Number(item[column.property]));
-
-    if (!values.every((value) => isNaN(value))) {
-      sums[index] = values.reduce((prev, curr) => {
-        const value = Number(curr);
-        if (!isNaN(value)) {
-          return (Number(prev) + Number(curr)).toFixed(2);
+    proxy.$modal
+      .confirm("确认保存么?")
+      .then(() => {
+        const saveValue = proxy.deepClone(form.value);
+        saveValue.status = status;
+        if (saveValue.id == null) {
+          saveDetail(saveValue).then((res) => {
+            proxy.$modal.msgSuccess("保存成功");
+            reset();
+            close();
+            getList.value();
+          });
         } else {
-          return Number(prev).toFixed(2);
+          updateDetail(saveValue).then((res) => {
+            proxy.$modal.msgSuccess("保存成功");
+            reset();
+            close();
+            getList.value();
+          });
         }
-      }, 0);
-      sums[index] = numberToCurrencyNo(sums[index]);
-    } else {
-      sums[index] = "";
-    }
-  });
-  return sums;
-}
-
-function handleSave(status) {
-  for (let i = 0; i < form.value.details.length; i++) {
-    const l = form.value.details[i];
-    // 数据校验
-    if (!l.employeeName) {
-      proxy.$modal.msgError(`第${i + 1}行员工姓名不能为空`);
-      return;
-    }
-    if (!l.idCode) {
-      proxy.$modal.msgError(`第${i + 1}行身份证号不能为空`);
-      return;
-    }
-    if (l.actuallySalary < 0) {
-      proxy.$modal.msgError(`第${i + 1}行实际工资不能为负`);
-      return;
-    }
-    // 正则表达式匹配身份证号的格式
-    const idRegExp =
-      /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X|x)$/;
-    const regExp = /^([a-zA-z]|[0-9]){5,17}$/;
-    if (!(regExp.test(l.idCode) || idRegExp.test(l.idCode))) {
-      proxy.$modal.msgError(`第${i + 1}行请输入正确的身份证号!`);
-      return;
-    }
+      })
+      .catch((err) => {
+        proxy.$modal.msg("取消保存");
+      });
   }
-  proxy.$modal
-    .confirm("确认保存么?")
-    .then(() => {
-      const saveValue = proxy.deepClone(form.value);
-      saveValue.status = status;
-      if (saveValue.id == null) {
-        saveDetail(saveValue).then((res) => {
-          proxy.$modal.msgSuccess("保存成功");
-          reset();
-          close();
-          getList.value();
-        });
-      } else {
-        updateDetail(saveValue).then((res) => {
-          proxy.$modal.msgSuccess("保存成功");
-          reset();
-          close();
-          getList.value();
-        });
-      }
-    })
-    .catch((err) => {
-      proxy.$modal.msg("取消保存");
-    });
-}
 
-// 暴露给父组件的方法
-defineExpose({
-  open,
-});
+  // 暴露给父组件的方法
+  defineExpose({
+    open,
+  });
 </script>
 
 <style lang="scss" scoped>
-  .button-class{
+  .button-class {
     margin-top: 10px;
     margin-bottom: 10px;
   }

+ 7 - 2
src/views/business/service/loop/housingFundForm.vue

@@ -319,6 +319,7 @@
   import { rowNum, numberToCurrencyNo } from "@/utils/index";
   import { uploadFile } from "@/api/tool/file";
   import { ref } from "vue";
+  import zTool from '@/utils/zTool'
   const { proxy } = getCurrentInstance();
   const visible = ref(false);
   const baseUrl = import.meta.env.VITE_APP_BASE_API;
@@ -576,8 +577,12 @@
       this.$message.error("粘贴内容非图片");
       return;
     }
-    tempFile.value = file;
-    uploadIdImage2(tempFile, row, field)
+    zTool.addWatermark(file,"仅供公积金申报使用").then(watermarkedFile => {
+      tempFile.value = watermarkedFile
+      uploadIdImage2(tempFile, row, field)
+    })
+    // tempFile.value = file;
+    // uploadIdImage2(tempFile, row, field)
   }
 
   function uploadIdImage2(tempFile, row, field) {

+ 6 - 6
src/views/business/service/loop/socialSecurityForm.vue

@@ -623,12 +623,12 @@
       this.$message.error("粘贴内容非图片");
       return;
     }
-    // zTool.addWatermark(file,"仅供社保使用").then(watermarkedFile => {
-    //   tempFile.value = watermarkedFile
-    //   uploadIdImage2(tempFile, row, field)
-    // })
-    tempFile.value = file
-    uploadIdImage2(tempFile, row, field)
+    zTool.addWatermark(file,"仅供社保使用").then(watermarkedFile => {
+      tempFile.value = watermarkedFile
+      uploadIdImage2(tempFile, row, field)
+    })
+    // tempFile.value = file
+    // uploadIdImage2(tempFile, row, field)
   }
 
   function uploadIdImage2(tempFile, row, field) {

+ 7 - 3
src/views/business/socialSecurity/confirm/form.vue

@@ -515,7 +515,7 @@ import {
   checkEmployees,
 } from "@/api/business/production/socialSecurityConfirm";
 import { uploadFile } from "@/api/tool/file";
-
+import zTool from '@/utils/zTool'
 import { ref } from "vue";
 import { yesOrNo } from "@/utils/default";
 const { proxy } = getCurrentInstance();
@@ -818,8 +818,12 @@ function handlePaste(event, row, field) {
       this.$message.error("粘贴内容非图片");
       return;
     }
-    tempFile.value = file;
-    uploadIdImage2(tempFile, row, field)
+    zTool.addWatermark(file,"仅供社保使用").then(watermarkedFile => {
+      tempFile.value = watermarkedFile
+      uploadIdImage2(tempFile, row, field)
+    })
+    // tempFile.value = file;
+    // uploadIdImage2(tempFile, row, field)
   }
 
   function uploadIdImage2(tempFile, row, field) {