Procházet zdrojové kódy

Merge branch 'develop'

ly před 1 rokem
rodič
revize
a8225c3549
100 změnil soubory, kde provedl 736 přidání a 563 odebrání
  1. 10 2
      src/api/business/production/salary.js
  2. 3 3
      src/utils/zTool.js
  3. 1 0
      src/views/business/contracts/standardCpmpany/add.vue
  4. 1 0
      src/views/business/contracts/standardCpmpany/form.vue
  5. 1 0
      src/views/business/contracts/standardCpmpany/index.vue
  6. 1 0
      src/views/business/contracts/standardCpmpany/setEntrustDialog.vue
  7. 1 0
      src/views/business/contracts/standardCpmpany/setOneEntrustDialog.vue
  8. 1 0
      src/views/business/crm/AddCompanyDialog.vue
  9. 1 0
      src/views/business/crm/ZeroChangeDialog.vue
  10. 1 0
      src/views/business/crm/company/add.vue
  11. 1 0
      src/views/business/crm/company/export.vue
  12. 1 1
      src/views/business/crm/company/index.vue
  13. 1 0
      src/views/business/crm/dict/data.vue
  14. 1 1
      src/views/business/crm/dict/index.vue
  15. 2 2
      src/views/business/crm/order/form.vue
  16. 1 0
      src/views/business/crm/order/importExcelDialog.vue
  17. 1 0
      src/views/business/crm/order/index.vue
  18. 1 0
      src/views/business/crm/workorder/index.vue
  19. 1 0
      src/views/business/deduction/HousingFundViewDialog.vue
  20. 1 0
      src/views/business/deduction/MergeTaxViewDialog.vue
  21. 1 0
      src/views/business/deduction/SocialSecurityViewDialog.vue
  22. 1 0
      src/views/business/deduction/feedbackDialog.vue
  23. 1 0
      src/views/business/entrust/deposit/index.vue
  24. 1 1
      src/views/business/entrust/depositOfFactory/freeAmountDialog.vue
  25. 1 0
      src/views/business/entrust/depositOfFactory/index.vue
  26. 1 0
      src/views/business/entrust/entrustOrder/form.vue
  27. 1 1
      src/views/business/entrust/statementAccount/ChoiceMonthDialog.vue
  28. 1 0
      src/views/business/entrust/workOrder/currentMonth/export.vue
  29. 1 0
      src/views/business/entrust/workOrder/initMonthDialog.vue
  30. 1 0
      src/views/business/entrust/workOrder/setEntrustDialog.vue
  31. 1 0
      src/views/business/entrust/workOrderForFactory/initMonthDialog.vue
  32. 1 0
      src/views/business/entrust/workOrderForFactory/setEntrustDialog.vue
  33. 1 0
      src/views/business/financial/collection/form.vue
  34. 2 2
      src/views/business/financial/collection/index.vue
  35. 1 1
      src/views/business/financial/contract/form.vue
  36. 35 5
      src/views/business/financial/payment/form.vue
  37. 6 2
      src/views/business/financial/payment/index.vue
  38. 8 3
      src/views/business/housingFund/confirm/form.vue
  39. 1 0
      src/views/business/housingFund/confirm/view.vue
  40. 1 0
      src/views/business/housingFund/declare/form.vue
  41. 1 0
      src/views/business/housingFund/declare/index.vue
  42. 1 0
      src/views/business/housingFund/declare/view.vue
  43. 1 0
      src/views/business/housingFund/feedbackDialog.vue
  44. 1 0
      src/views/business/housingFund/fileListDialog.vue
  45. 1 1
      src/views/business/housingFund/memberDialog.vue
  46. 1 0
      src/views/business/production/IndividualIncomeTaxIs/FormDialog.vue
  47. 1 0
      src/views/business/production/IndividualIncomeTaxIs/MemberDialog.vue
  48. 1 1
      src/views/business/production/IndividualIncomeTaxIs/index.vue
  49. 1 0
      src/views/business/production/IndividualIncomeTaxIsZero/FormDialog.vue
  50. 1 0
      src/views/business/production/IndividualIncomeTaxIsZero/MemberDialog.vue
  51. 1 1
      src/views/business/production/IndividualIncomeTaxIsZero/index.vue
  52. 1 0
      src/views/business/production/accountAdjustment/index.vue
  53. 1 1
      src/views/business/production/archiveTicket/form.vue
  54. 1 1
      src/views/business/production/archiveTicket/index.vue
  55. 1 0
      src/views/business/production/archiveTicket/view.vue
  56. 1 0
      src/views/business/production/deduction/index.vue
  57. 1 1
      src/views/business/production/feedbackDialog.vue
  58. 1 0
      src/views/business/production/financialReportTax/FormDialog.vue
  59. 1 1
      src/views/business/production/financialReportTax/index.vue
  60. 1 0
      src/views/business/production/financialReportTaxIsZero/FormDialog.vue
  61. 1 0
      src/views/business/production/financialReportTaxIsZero/index.vue
  62. 1 0
      src/views/business/production/keepAccount/form.vue
  63. 1 1
      src/views/business/production/keepAccount/index.vue
  64. 1 0
      src/views/business/production/keepAccount/view.vue
  65. 1 0
      src/views/business/production/receiveTicket/form.vue
  66. 1 1
      src/views/business/production/receiveTicket/index.vue
  67. 1 1
      src/views/business/production/receiveTicket/view.vue
  68. 294 497
      src/views/business/production/salary/form.vue
  69. 1 0
      src/views/business/production/salary/importExcelDialog.vue
  70. 14 4
      src/views/business/production/salary/importExcelDialogCustomer.vue
  71. 1 1
      src/views/business/production/salary/index.vue
  72. 1 0
      src/views/business/production/salary/view.vue
  73. 15 5
      src/views/business/production/salaryZero/form.vue
  74. 1 0
      src/views/business/production/salaryZero/importExcelDialog.vue
  75. 237 0
      src/views/business/production/salaryZero/importExcelDialogCustomer.vue
  76. 2 2
      src/views/business/production/salaryZero/index.vue
  77. 1 0
      src/views/business/production/salaryZero/view.vue
  78. 1 0
      src/views/business/production/urgent/index.vue
  79. 8 3
      src/views/business/service/loop/housingFundForm.vue
  80. 1 0
      src/views/business/service/loop/housingFundView.vue
  81. 1 0
      src/views/business/service/loop/index.vue
  82. 1 1
      src/views/business/service/loop/keepAccountForm.vue
  83. 1 0
      src/views/business/service/loop/keepAccountView.vue
  84. 7 7
      src/views/business/service/loop/socialSecurityForm.vue
  85. 1 0
      src/views/business/service/loop/socialSecurityView.vue
  86. 1 0
      src/views/business/service/once/form.vue
  87. 1 0
      src/views/business/service/once/view.vue
  88. 1 0
      src/views/business/service/serviceForm.vue
  89. 8 3
      src/views/business/socialSecurity/confirm/form.vue
  90. 1 0
      src/views/business/socialSecurity/confirm/importExcelDialog.vue
  91. 1 1
      src/views/business/socialSecurity/confirm/view.vue
  92. 1 0
      src/views/business/socialSecurity/declare/form.vue
  93. 1 1
      src/views/business/socialSecurity/declare/index.vue
  94. 1 0
      src/views/business/socialSecurity/declare/view.vue
  95. 1 0
      src/views/business/socialSecurity/feedbackDialog.vue
  96. 1 0
      src/views/business/socialSecurity/fileListDialog.vue
  97. 1 1
      src/views/business/socialSecurity/memberDialog.vue
  98. 1 1
      src/views/dialog/DialogChannelChoice.vue
  99. 1 1
      src/views/dialog/DialogContractChoice.vue
  100. 1 1
      src/views/dialog/DialogCustomerChoice.vue

+ 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'

+ 3 - 3
src/utils/zTool.js

@@ -412,7 +412,7 @@ let zTool = {
 			// 在canvas上绘制原始图片
 			ctx.drawImage(image, 0, 0);
 			// 添加水印文本
-			ctx.font = '20px Arial';
+			ctx.font = '15px Arial';
 			ctx.fillStyle = 'rgb(228,233,229)';
 			const watermarkText = name; // 水印文本
 			const angle = 15 * Math.PI / 180; // 将15度转换为弧度
@@ -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();
 				// 将坐标系移动到水印的位置

+ 1 - 0
src/views/business/contracts/standardCpmpany/add.vue

@@ -6,6 +6,7 @@
     width="680px"
     append-to-body
     draggable
+    :close-on-click-modal = "false"
   >
     <el-form
       ref="companyRef"

+ 1 - 0
src/views/business/contracts/standardCpmpany/form.vue

@@ -6,6 +6,7 @@
     width="500px"
     append-to-body
     draggable
+    :close-on-click-modal = "false"
   >
     <el-form
       ref="details"

+ 1 - 0
src/views/business/contracts/standardCpmpany/index.vue

@@ -230,6 +230,7 @@
       width="500px"
       append-to-body
       draggable
+      :close-on-click-modal = "false"
     >
       <el-form ref="dictRef" :model="form" :rules="rules" label-width="100">
         <el-form-item :label="title" :prop="content">

+ 1 - 0
src/views/business/contracts/standardCpmpany/setEntrustDialog.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="cancel"
+    :close-on-click-modal = "false"
   >
     <el-form ref="dictRef" :model="form" label-width="100">
       <el-form-item label="起始月:">

+ 1 - 0
src/views/business/contracts/standardCpmpany/setOneEntrustDialog.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="cancel"
+    :close-on-click-modal = "false"
   >
     <el-form ref="dictRef" :model="form" label-width="100">
       <el-form-item label="客户:"> {{ company.name }} </el-form-item>

+ 1 - 0
src/views/business/crm/AddCompanyDialog.vue

@@ -6,6 +6,7 @@
     width="680px"
     append-to-body
     draggable
+    :close-on-click-modal = "false"
   >
     <el-form
       ref="companyRef"

+ 1 - 0
src/views/business/crm/ZeroChangeDialog.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="close"
+    :close-on-click-modal = "false"
   >
     <!-- 功能按钮 -->
     <div style="padding: 8px 24px 16px 24px">

+ 1 - 0
src/views/business/crm/company/add.vue

@@ -6,6 +6,7 @@
     width="680px"
     append-to-body
     draggable
+    :close-on-click-modal = "false"
   >
     <el-form
       ref="companyRef"

+ 1 - 0
src/views/business/crm/company/export.vue

@@ -6,6 +6,7 @@
       width="680px"
       append-to-body
       draggable
+      :close-on-click-modal = "false"
     >
       <el-form
         ref="companyRef"

+ 1 - 1
src/views/business/crm/company/index.vue

@@ -109,7 +109,7 @@
     <exportColumn ref="exportColumnRef"></exportColumn>
     <add ref="addRef" :get-list="getList"></add>
     <exports ref="exportRef" :get-list="getList"></exports>
-    <el-dialog :title="title" v-model="open" width="500px" append-to-body draggable @close="cancel">
+    <el-dialog :title="title" v-model="open" width="500px" append-to-body draggable @close="cancel" :close-on-click-modal = "false">
       <el-form ref="dictRef" :model="form" :rules="rules" label-width="100">
         <el-form-item :label="title" :prop="content">
           <el-autocomplete style="width: 100%" :fetch-suggestions="querySearchAsync" :trigger-on-focus="true"

+ 1 - 0
src/views/business/crm/dict/data.vue

@@ -178,6 +178,7 @@
       width="500px"
       append-to-body
       draggable
+      :close-on-click-modal = "false"
     >
       <el-form ref="dataRef" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="字典类型">

+ 1 - 1
src/views/business/crm/dict/index.vue

@@ -73,7 +73,7 @@
       @pagination="getList" />
 
     <!-- 添加或修改参数配置对话框 -->
-    <el-dialog :title="title" v-model="open" width="500px" append-to-body draggable>
+    <el-dialog :title="title" v-model="open" width="500px" append-to-body draggable :close-on-click-modal = "false">
       <el-form ref="dictRef" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="字典名称" prop="dictName">
           <el-input v-model="form.dictName" placeholder="请输入字典名称" />

+ 2 - 2
src/views/business/crm/order/form.vue

@@ -1119,6 +1119,7 @@
       width="500px"
       append-to-body
       draggable
+      :close-on-click-modal = "false"
     >
       <el-form ref="dictRef" :model="form" label-width="100">
         <el-form-item label="驳回原因" :prop="verifyRemark">
@@ -1244,6 +1245,7 @@ const props = defineProps({
 const { getList } = toRefs(props);
 /** 字典数组区 */
 const { virtual_address } = proxy.useDict("virtual_address");
+
 /** 表单抽屉 页变量 */
 const title = ref("");
 const loading = ref(false);
@@ -1337,7 +1339,6 @@ const { form, rules } = toRefs(data);
 function open(id) {
   reset();
   visible.value = true;
-  // console.log(virtual_address.value)
   if (id) {
     Promise.all([initTaskTypes(), listSource(), getOrder(id)]).then((res) => {
       loopTasks.value = res[0].data.loopTasks;
@@ -1351,7 +1352,6 @@ function open(id) {
       editStatus.value = false;
       title.value = "修改订单信息";
       initRegion();
-      
     });
     // getOrder(id).then(response => {
     // })

+ 1 - 0
src/views/business/crm/order/importExcelDialog.vue

@@ -6,6 +6,7 @@
     width="680px"
     append-to-body
     draggable
+    :close-on-click-modal = "false"
   >
     <el-form
       ref="menuRef"

+ 1 - 0
src/views/business/crm/order/index.vue

@@ -282,6 +282,7 @@
       append-to-body
       size="small"
       draggable
+      :close-on-click-modal = "false"
     >
       <el-form
         :model="queryParams"

+ 1 - 0
src/views/business/crm/workorder/index.vue

@@ -268,6 +268,7 @@
       append-to-body
       draggable
       @close="close"
+      :close-on-click-modal = "false"
     >
       <div style="padding: 8px 24px 16px 24px">
         <el-form size="small" label-width="100px">

+ 1 - 0
src/views/business/deduction/HousingFundViewDialog.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="close"
+    :close-on-click-modal = "false"
   >
     <!-- <div slot="title" class="dialog-title-container">
       <span class="title-label"><i class="el-icon-document" /> 工资信息</span>

+ 1 - 0
src/views/business/deduction/MergeTaxViewDialog.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="close"
+    :close-on-click-modal = "false"
   >
     <!-- 功能按钮 -->
     <div style="padding: 8px 24px 16px 24px">

+ 1 - 0
src/views/business/deduction/SocialSecurityViewDialog.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="close"
+    :close-on-click-modal = "false"
   >
     <!-- 功能按钮 -->
     <div style="padding: 8px 24px 16px 24px">

+ 1 - 0
src/views/business/deduction/feedbackDialog.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="cancel"
+    :close-on-click-modal = "false"
   >
     <el-form ref="dictRef" :model="form" label-width="100">
       <el-form-item label="失败类型:">

+ 1 - 0
src/views/business/entrust/deposit/index.vue

@@ -164,6 +164,7 @@
       append-to-body
       draggable
       @close="formCancel"
+      :close-on-click-modal = "false"
     >
       <el-form ref="dictRef" :model="form" label-width="100" size="small">
         <el-row :gutter="30">

+ 1 - 1
src/views/business/entrust/depositOfFactory/freeAmountDialog.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog title="存款审核" v-model="formOpen" width="500px" append-to-body draggable @close="cancel">
+  <el-dialog title="存款审核" v-model="formOpen" width="500px" append-to-body draggable @close="cancel" :close-on-click-modal = "false">
     <el-form ref="dictRef" :model="form" :rules="rules" label-width="100" size="small">
       <el-form-item label="赠送金额" :prop="freeAmount">
         <el-input-number placeholder="赠送金额" v-model="form.freeAmount" style="

+ 1 - 0
src/views/business/entrust/depositOfFactory/index.vue

@@ -134,6 +134,7 @@
       append-to-body
       draggable
       @close="formCancel"
+      :close-on-click-modal = "false"
     >
       <el-form ref="dictRef" :model="form" label-width="100" size="small">
         <el-row :gutter="30">

+ 1 - 0
src/views/business/entrust/entrustOrder/form.vue

@@ -5,6 +5,7 @@
     append-to-body
     draggable
     show-close
+    :close-on-click-modal = "false"
   >
     <template #header>
       <div class="dialog-title-container">

+ 1 - 1
src/views/business/entrust/statementAccount/ChoiceMonthDialog.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog title="设置当前工作月" v-model="formOpen" width="500px" append-to-body draggable @close="cancel">
+  <el-dialog title="设置当前工作月" v-model="formOpen" width="500px" append-to-body draggable @close="cancel" :close-on-click-modal = "false">
     <el-form ref="dictRef" :model="form" label-width="100" size="small">
       <el-form-item label="对账工作月:">
         <el-date-picker v-model="dateRange" value-format="YYYY-MM-DD" type="monthrange"

+ 1 - 0
src/views/business/entrust/workOrder/currentMonth/export.vue

@@ -6,6 +6,7 @@
       width="680px"
       append-to-body
       draggable
+      :close-on-click-modal = "false"
     >
       <el-form
         ref="companyRef"

+ 1 - 0
src/views/business/entrust/workOrder/initMonthDialog.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="cancel"
+    :close-on-click-modal = "false"
   >
     <el-form ref="dictRef" :model="form" label-width="100">
       <el-form-item label="当前工作月:">

+ 1 - 0
src/views/business/entrust/workOrder/setEntrustDialog.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="cancel"
+    :close-on-click-modal = "false"
   >
     <el-form ref="dictRef" :model="form" label-width="100">
       <el-form-item label="受委托方:">

+ 1 - 0
src/views/business/entrust/workOrderForFactory/initMonthDialog.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="cancel"
+    :close-on-click-modal = "false"
   >
     <el-form ref="dictRef" :model="form" label-width="100">
       <el-form-item label="当前工作月:">

+ 1 - 0
src/views/business/entrust/workOrderForFactory/setEntrustDialog.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="cancel"
+    :close-on-click-modal = "false"
   >
     <el-form ref="dictRef" :model="form" label-width="100">
       <el-form-item label="受委托方:">

+ 1 - 0
src/views/business/financial/collection/form.vue

@@ -501,6 +501,7 @@
       width="500px"
       append-to-body
       draggable
+      :close-on-click-modal = "false"
     >
       <el-form ref="dictRef" :model="form" label-width="100" size="small">
         <el-form-item label="审核状态">

+ 2 - 2
src/views/business/financial/collection/index.vue

@@ -188,12 +188,12 @@
       </el-table-column>
       <el-table-column
         v-if="getShowStatus(14)"
-        label="确认到账时间"
+        label="到账日期"
         prop="actuallyDate"
         align="center"
       >
         <template #default="scope">
-          {{ moment(scope.row.actuallyDate).format("YYYY-MM-DD") }}
+          {{ (scope.row.arriveDate) }}  {{scope.row.arriveTime}}
         </template>
       </el-table-column>
       <el-table-column

+ 1 - 1
src/views/business/financial/contract/form.vue

@@ -281,7 +281,7 @@
         </div>
       </div>
     </el-drawer>
-    <el-dialog title="驳回详情" v-model="rejectOpen" width="500px" append-to-body draggable>
+    <el-dialog title="驳回详情" v-model="rejectOpen" width="500px" append-to-body draggable :close-on-click-modal = "false">
       <el-form ref="dictRef" :model="form" label-width="100">
         <el-form-item label="驳回原因" :prop="verifyRemark">
           <el-input v-model.trim="form.verifyRemark" type="textarea" :rows="3" placeholder="请输入驳回原因" />

+ 35 - 5
src/views/business/financial/payment/form.vue

@@ -107,7 +107,7 @@
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="支出日期:" prop="formDate" required>
+              <el-form-item label="申请日期" prop="formDate" required>
                 <el-date-picker
                   v-if="editStatus"
                   style="width: 100%"
@@ -118,7 +118,7 @@
                   value-format="YYYY-MM-DD"
                   align="center"
                   type="date"
-                  placeholder="支出日期"
+                  placeholder="申请日期"
                 />
                 <span v-else>{{ form.formDate }}</span>
               </el-form-item>
@@ -197,7 +197,21 @@
                 >
               </el-form-item>
             </el-col>
-
+            <el-col :span="6">
+              <el-form-item label="收款账户开户银行:" label-width="120px">
+                <template v-if="editStatus">
+                  <el-input
+                    v-model.trim="form.bankNo"
+                    size="small"
+                    type="text"
+                    style="width: 100%"
+                    placeholder="收款账户开户银行"
+                    :clearable="true"
+                  />
+                </template>
+                <span v-else>{{ form.bankNo }}</span>
+              </el-form-item>
+            </el-col>
             <el-col :span="6">
               <el-form-item label="客户名称:" prop="companyName" required>
                 <el-autocomplete
@@ -229,7 +243,7 @@
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="合同:" required>
+              <el-form-item label="合同编号:" required>
                 <el-input
                   v-if="editStatus"
                   style="width: 100%"
@@ -289,6 +303,8 @@
                 <span>{{ form.verifyComment }}</span>
               </el-form-item>
             </el-col>
+                    
+        
             <el-col :span="12">
               <el-form-item label="备注:">
                 <el-input
@@ -347,6 +363,16 @@
                       <span>{{ rowNum(scope.row.amount) }}</span>
                     </template>
                   </el-table-column>
+                  <el-table-column
+                  label="已收款金额"
+                  prop="reallyAmount"
+                  width="100"
+                  align="center"
+                >
+                  <template #default="scope">
+                    <span>{{ rowNum(scope.row.reallyAmount) }}</span>
+                  </template>
+                </el-table-column>
                   <el-table-column
                     label="本次支出金额"
                     prop="paymentAmount"
@@ -378,7 +404,7 @@
                     </template>
                   </el-table-column>
                   <el-table-column
-                    label="已支金额"
+                    label="已支金额"
                     prop="payment"
                     width="100"
                     align="center"
@@ -467,6 +493,7 @@
       width="500px"
       append-to-body
       draggable
+      :close-on-click-modal = "false"
     >
       <el-form ref="dictRef" :model="rejectForm" label-width="100" size="small">
         <el-form-item label="审核状态">
@@ -1000,6 +1027,7 @@ function contractChoiceHandler() {
 }
 
 function contractChoiceHandle(info) {
+  form.value.details = []
   form.value.contractId = info.id;
   form.value.contractNo = info.contractNo;
   form.value.contractAmount = info.trueAmount;
@@ -1014,6 +1042,8 @@ function contractChoiceHandle(info) {
         taskTypeId: item.taskTypeId,
         amount: item.amount,
         taskTypeName: item.taskTypeName,
+        payment: item.payment,
+        reallyAmount:item.reallyAmount,
       };
       form.value.details.push(detail);
     });

+ 6 - 2
src/views/business/financial/payment/index.vue

@@ -45,6 +45,11 @@
           @keyup.enter="handleQuery"
         />
       </el-form-item>
+      <el-form-item prop="applierTime" label="审核时间:">
+        <el-date-picker v-model="queryParams.dateFilter" type="daterange" clearable format="YYYY - MM - DD "
+        value-format="YYYY-MM-DD" range-separator="至" start-placeholder="业务日期" end-placeholder="业务日期"
+        style="width: 100%;"></el-date-picker>
+      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="Search" @click="handleQuery"
           >搜索</el-button
@@ -87,7 +92,7 @@
       />
       <el-table-column
         v-if="getShowStatus(4)"
-        label="支出日期"
+        label="申请日期"
         prop="formDate"
         min-width="90"
         align="center"
@@ -129,7 +134,6 @@
         </template>
       </el-table-column>
       <el-table-column
-        v-if="getShowStatus(15)"
         label="审核日期"
         prop="verifyDate"
         width="150"

+ 8 - 3
src/views/business/housingFund/confirm/form.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog title="公积金人员信息" v-model="visible" width="80%" append-to-body draggable @close="close">
+  <el-dialog title="公积金人员信息" v-model="visible" width="80%" append-to-body draggable @close="close" :close-on-click-modal = "false">
     <!-- <div slot="title" class="dialog-title-container">
       <span class="title-label"><i class="el-icon-document" /> 工资信息</span>
       <i class="el-icon-close" @click="close" />
@@ -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) {

+ 1 - 0
src/views/business/housingFund/confirm/view.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="close"
+    :close-on-click-modal = "false"
   >
     <!-- 功能按钮 -->
     <div style="padding: 8px 24px 16px 24px">

+ 1 - 0
src/views/business/housingFund/declare/form.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="close"
+    :close-on-click-modal = "false"
   >
     <!-- 功能按钮 -->
     <div style="padding: 8px 24px 16px 24px">

+ 1 - 0
src/views/business/housingFund/declare/index.vue

@@ -251,6 +251,7 @@
       append-to-body
       size="small"
       draggable
+      :close-on-click-modal = "false"
     >
       <el-form
         :model="queryParams"

+ 1 - 0
src/views/business/housingFund/declare/view.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="close"
+    :close-on-click-modal = "false"
   >
     <!-- <div slot="title" class="dialog-title-container">
       <span class="title-label"><i class="el-icon-document" /> 工资信息</span>

+ 1 - 0
src/views/business/housingFund/feedbackDialog.vue

@@ -5,6 +5,7 @@
     width="500px"
     append-to-body
     draggable
+    :close-on-click-modal = "false"
     @close="cancel"
   >
     <el-form ref="dictRef" :model="form" label-width="100">

+ 1 - 0
src/views/business/housingFund/fileListDialog.vue

@@ -5,6 +5,7 @@
     :width="width"
     append-to-body
     draggable
+    :close-on-click-modal = "false"
     @close="close"
   >
     <!-- 功能按钮 -->

+ 1 - 1
src/views/business/housingFund/memberDialog.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog v-model="visible" width="900px" append-to-body draggable>
+  <el-dialog v-model="visible" width="900px" append-to-body draggable :close-on-click-modal = "false">
     <template #header>
       <div class="dialog-title-container">
         <span class="title-label" style="color: #fff">

+ 1 - 0
src/views/business/production/IndividualIncomeTaxIs/FormDialog.vue

@@ -7,6 +7,7 @@
     append-to-body
     draggable
     @close="close"
+    :close-on-click-modal = "false"
   >
     <div>
       <div style="padding: 8px 24px 16px 24px">

+ 1 - 0
src/views/business/production/IndividualIncomeTaxIs/MemberDialog.vue

@@ -6,6 +6,7 @@
     width="800px"
     append-to-body
     draggable
+    :close-on-click-modal = "false"
   >
     <div style="padding: 8px 24px 16px 24px">
       <el-form size="small" label-width="50px">

+ 1 - 1
src/views/business/production/IndividualIncomeTaxIs/index.vue

@@ -142,7 +142,7 @@
     <FormDialog ref="fromDialog" :get-list="getList"></FormDialog>
 
     <!-- 更多搜索弹窗 -->
-    <el-dialog title="更多搜索" v-model="moreSearch" width="620px" append-to-body size="small" draggable>
+    <el-dialog title="更多搜索" v-model="moreSearch" width="620px" append-to-body size="small" draggable :close-on-click-modal = "false">
       <el-form ref="dictRef" size="small" label-width="100">
         <el-row :gutter="20">
           <el-col :span="12">

+ 1 - 0
src/views/business/production/IndividualIncomeTaxIsZero/FormDialog.vue

@@ -7,6 +7,7 @@
     append-to-body
     draggable
     @close="close"
+    :close-on-click-modal = "false"
   >
     <div>
       <div style="padding: 8px 24px 16px 24px">

+ 1 - 0
src/views/business/production/IndividualIncomeTaxIsZero/MemberDialog.vue

@@ -6,6 +6,7 @@
     width="800px"
     append-to-body
     draggable
+    :close-on-click-modal = "false"
   >
     <div style="padding: 8px 24px 16px 24px">
       <el-form size="small" label-width="50px">

+ 1 - 1
src/views/business/production/IndividualIncomeTaxIsZero/index.vue

@@ -145,7 +145,7 @@
       <MemberDialog ref="memberDialog" :get-list="getList"></MemberDialog>
       <FormDialog ref="fromDialog" :get-list="getList"></FormDialog>
       <!-- 更多搜索弹窗 -->
-      <el-dialog title="更多搜索" v-model="moreSearch" width="620px" size="small" append-to-body draggable>
+      <el-dialog title="更多搜索" v-model="moreSearch" width="620px" size="small" append-to-body draggable :close-on-click-modal = "false">
         <el-form ref="dictRef" size="small" label-width="100">
           <el-row :gutter="20">
             <el-col :span="12">

+ 1 - 0
src/views/business/production/accountAdjustment/index.vue

@@ -187,6 +187,7 @@
       append-to-body
       draggable
       @close="formCancel"
+      :close-on-click-modal = "false"
     >
       <!-- 功能按钮 -->
       <div class="form-btns-container">

+ 1 - 1
src/views/business/production/archiveTicket/form.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog v-model="visible" :width="width" append-to-body draggable show-close>
+  <el-dialog v-model="visible" :width="width" append-to-body draggable show-close :close-on-click-modal = "false">
     <template #header>
       <div class="dialog-title-container">
         <span class="title-label" style="color: #fff">

+ 1 - 1
src/views/business/production/archiveTicket/index.vue

@@ -59,7 +59,7 @@
       </el-table-column>
     </el-table>
     <!-- <Deposit-form ref="DepositRef" :get-list="getList" /> -->
-    <el-dialog title="扣款信息" v-model="formOpen" width="500px" append-to-body draggable @close="formCancel">
+    <el-dialog title="扣款信息" v-model="formOpen" width="500px" append-to-body draggable @close="formCancel" :close-on-click-modal = "false">
       <el-form ref="dictRef" :model="form" label-width="100" size="small">
         <el-row :gutter="30">
           <el-col :span="24">

+ 1 - 0
src/views/business/production/archiveTicket/view.vue

@@ -5,6 +5,7 @@
     append-to-body
     draggable
     show-close
+    :close-on-click-modal = "false"
   >
     <template #header>
       <div class="dialog-title-container">

+ 1 - 0
src/views/business/production/deduction/index.vue

@@ -128,6 +128,7 @@
       append-to-body
       draggable
       @close="formCancel"
+      :close-on-click-modal = "false"
     >
       <el-form ref="dictRef" :model="form" label-width="100" size="small">
         <el-row :gutter="30">

+ 1 - 1
src/views/business/production/feedbackDialog.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog title="反馈信息" v-model="formOpen" width="500px" append-to-body draggable @close="cancel">
+  <el-dialog title="反馈信息" v-model="formOpen" width="500px" append-to-body draggable @close="cancel" :close-on-click-modal = "false">
     <el-form ref="dictRef" :model="form" label-width="100">
       <el-form-item :label="`${form.status === 4 ? '驳回原因' : '反馈信息'}:`">
         <el-input v-model="form.feedbackContent" type="textarea" maxlength="200" show-word-limit style="width: 100%" />

+ 1 - 0
src/views/business/production/financialReportTax/FormDialog.vue

@@ -8,6 +8,7 @@
     draggable
     :close-on-click-modal="false"
     @close="close"
+    :close-on-click-modal = "false"
   >
     <div>
       <div style="padding: 8px 24px 16px 24px">

+ 1 - 1
src/views/business/production/financialReportTax/index.vue

@@ -141,7 +141,7 @@
     <FormDialog ref="formDialog" :get-list="getList"></FormDialog>
 
     <!-- 更多搜索弹窗 -->
-    <el-dialog title="更多搜索" v-model="moreSearch" width="620px" append-to-body size="small" draggable>
+    <el-dialog title="更多搜索" v-model="moreSearch" width="620px" append-to-body size="small" draggable :close-on-click-modal = "false">
       <el-form ref="dictRef" size="small" label-width="100">
         <el-row :gutter="20">
           <el-col :span="12">

+ 1 - 0
src/views/business/production/financialReportTaxIsZero/FormDialog.vue

@@ -8,6 +8,7 @@
     draggable
     :close-on-click-modal="false"
     @close="close"
+    :close-on-click-modal = "false"
   >
     <div>
       <div style="padding: 8px 24px 16px 24px">

+ 1 - 0
src/views/business/production/financialReportTaxIsZero/index.vue

@@ -249,6 +249,7 @@
       append-to-body
       size="small"
       draggable
+      :close-on-click-modal = "false"
     >
       <el-form ref="dictRef" size="small" label-width="100">
         <el-row :gutter="20">

+ 1 - 0
src/views/business/production/keepAccount/form.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="close"
+    :close-on-click-modal = "false"
   >
     <!-- 功能按钮 -->
     <div style="padding: 8px 24px 16px 24px">

+ 1 - 1
src/views/business/production/keepAccount/index.vue

@@ -116,7 +116,7 @@
     <form-dialog ref="formDialogRef" :get-list="getList" />
     <view-dialog ref="viewDialogRef" :get-list="getList" />
     <!-- 更多搜索弹窗 -->
-    <el-dialog title="更多搜索" v-model="moreSearch" width="620px" append-to-body draggable>
+    <el-dialog title="更多搜索" v-model="moreSearch" width="620px" append-to-body draggable :close-on-click-modal = "false"> 
       <el-form :model="queryParams" ref="queryRef" size="small" label-width="100">
         <el-row :gutter="20">
           <el-col :span="12">

+ 1 - 0
src/views/business/production/keepAccount/view.vue

@@ -5,6 +5,7 @@
     :width="width"
     append-to-body
     draggable
+    :close-on-click-modal = "false"
     @close="close"
   >
     <!-- 功能按钮 -->

+ 1 - 0
src/views/business/production/receiveTicket/form.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="close"
+    :close-on-click-modal = "false"
   >
     <!-- <div slot="title" class="dialog-title-container">
       <span class="title-label"><i class="el-icon-document" /> 工资信息</span>

+ 1 - 1
src/views/business/production/receiveTicket/index.vue

@@ -118,7 +118,7 @@
     <form-dialog ref="formDialogRef" :get-list="getList" />
     <view-dialog ref="viewDialogRef" :get-list="getList" />
     <!-- 更多搜索弹窗 -->
-    <el-dialog title="更多搜索" v-model="moreSearch" width="620px" append-to-body draggable>
+    <el-dialog title="更多搜索" v-model="moreSearch" width="620px" append-to-body draggable :close-on-click-modal = "false">
       <el-form :model="queryParams" ref="queryRef" size="small" label-width="100">
         <el-row :gutter="20">
           <el-col :span="12">

+ 1 - 1
src/views/business/production/receiveTicket/view.vue

@@ -1,5 +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" :close-on-click-modal = "false">
     <!-- 功能按钮 -->
     <div style="padding: 8px 24px 16px 24px">
       <el-form size="small" label-width="100px" v-model="form">

+ 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" :close-on-click-modal = "false" >
     <!-- <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" v-bind="$attrs" @loadData ="loadData"/>
     <!-- <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;
   }

+ 1 - 0
src/views/business/production/salary/importExcelDialog.vue

@@ -6,6 +6,7 @@
     width="680px"
     append-to-body
     draggable
+    :close-on-click-modal = "false"
   >
     <el-form
       ref="menuRef"

+ 14 - 4
src/views/business/production/salary/importExcelDialogCustomer.vue

@@ -6,6 +6,7 @@
     width="680px"
     append-to-body
     draggable
+    :close-on-click-modal = "false"
   >
     <el-form
       ref="menuRef"
@@ -89,11 +90,12 @@
 
 
 <script setup>
-// import { exportSalaryTemplateNotCompany } from "@/api/business/production/salary";
+import { exportSalaryTemplateNotCompany } from "@/api/business/production/salary";
 import { getToken, getTenant } from "@/utils/auth";
 import useUserStore from "@/store/modules/user";
 import { deepClone } from "@/utils";
-
+import {  useAttrs } from "vue";
+const attrs = useAttrs();
 const { proxy } = getCurrentInstance();
 /** 父组件传参 */
 const props = defineProps({
@@ -101,8 +103,14 @@ const props = defineProps({
     type: String,
     default: () => {},
   },
+  loadData:{
+    type:Function,
+    default:()=>{}
+  }
 });
-const { companyId } = toRefs(props);
+const { companyId  } = toRefs(props);
+
+const emits = defineEmits(["loadData"]);
 /** 字典数组区 */
 /** 表单抽屉 页变量 */
 const fileList = ref([]);
@@ -198,7 +206,9 @@ const handleFileSuccess = (response, file, fileList) => {
     "导入结果",
     { dangerouslyUseHTMLString: true }
   );
-  // getList.value();
+  attrs.onGetList();
+  emits("loadData");
+
 };
 /** 提交上传文件 */
 function submitFileForm() {

+ 1 - 1
src/views/business/production/salary/index.vue

@@ -122,7 +122,7 @@
     <!-- 分页 -->
     <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
       v-model:limit="queryParams.pageSize" @pagination="getList" />
-    <form-dialog ref="formDialogRef" :get-list="getList" />
+    <form-dialog ref="formDialogRef" :get-list="getList"  @getList = "getList"/>
     <import-excel-dialog ref="importExcelDialogRef" :get-list="getList" />
     <view-dialog ref="viewDialogRef" :get-list="getList" />
     <!-- 更多搜索弹窗 -->

+ 1 - 0
src/views/business/production/salary/view.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="close"
+    :close-on-click-modal = "false"
   >
     <!-- 功能按钮 -->
     <div style="padding: 8px 24px 16px 24px">

+ 15 - 5
src/views/business/production/salaryZero/form.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="close"
+    :close-on-click-modal = "false"
   >
     <!-- <div slot="title" class="dialog-title-container">
       <span class="title-label"><i class="el-icon-document" /> 工资信息</span>
@@ -33,7 +34,7 @@
           <el-col :span="24" class="details-container">
             <!--操作按钮 开始-->
             <div class="details-head">
-              <div class="title">
+              <div class="title" style="margin-bottom: 10px;">
                 <i class="fa fa-th-list" aria-hidden="true" /> 人员信息
               </div>
               <el-button
@@ -44,6 +45,9 @@
               >
                 新增</el-button
               >
+              <el-button class="button-class" type="primary" icon="plus" size="small" @click="handleImport"
+              v-hasPermi="['business:salary:import']">
+              导入</el-button>
               <el-button
                 v-if="selections.length > 0"
                 type="danger"
@@ -53,7 +57,7 @@
                 >删除</el-button
               >
             </div>
-            <div class="details-body">
+            <div class="details-body" style="margin-top: 10px;">
               <div>
                 <el-table
                   ref="sourceTable"
@@ -412,6 +416,7 @@
         待确认</el-button
       >
     </div>
+    <import-excel-dialog-customer ref="importExcelDialogRef"  :companyId = "companyId" v-bind="$attrs" @loadData ="loadData"/>
     <!-- <feedback-dialog ref="feedbackDialogView" :parent="this" />
     <print-dialog ref="printDialog" :parent="this" /> -->
   </el-dialog>
@@ -423,13 +428,14 @@ import {
   updateDetail,
 } from "@/api/business/production/salaryZero";
 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,
@@ -479,7 +485,7 @@ const employeeEmptyData = {
 };
 
 const form = ref({});
-
+const  companyId = ref(null)
 const emptyForm = {
   details: [],
 };
@@ -487,6 +493,7 @@ const emptyForm = {
 function open(detail) {
   visible.value = true;
   form.value = detail;
+  companyId.value = detail.companyId
   console.log(form.value);
   loadData();
 }
@@ -510,7 +517,10 @@ function close() {
 function reset() {
   form.value = proxy.deepClone(emptyForm);
 }
-
+ //导入按钮操作
+ function handleImport() {
+    importExcelDialogRef.value.open();
+  }
 function printSalary() {}
 function exportSalary() {}
 

+ 1 - 0
src/views/business/production/salaryZero/importExcelDialog.vue

@@ -6,6 +6,7 @@
     width="680px"
     append-to-body
     draggable
+    :close-on-click-modal = "false"
   >
     <el-form
       ref="menuRef"

+ 237 - 0
src/views/business/production/salaryZero/importExcelDialogCustomer.vue

@@ -0,0 +1,237 @@
+<template>
+  <!-- 添加或修改菜单对话框 -->
+  <el-dialog
+    title="工资导入"
+    v-model="visible"
+    width="680px"
+    append-to-body
+    draggable
+    :close-on-click-modal = "false"
+  >
+    <el-form
+      ref="menuRef"
+      :model="form"
+      size="small"
+      :rules="rules"
+      label-width="100px"
+    >
+      <el-row>
+        <el-col :span="24">
+          <el-form-item label="选择导入月份" prop="year">
+            <el-date-picker
+              v-model="currentMonth"
+              type="month"
+              format="YYYY年MM月"
+              style="width: 150px"
+              :clearable="false"
+              value-format="YYYY-MM-01"
+              :disabled-date="disabledDateHandler"
+              @change="monthChangeHandler"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="24">
+          <el-form-item label="上传">
+            <el-upload
+              ref="uploadRef"
+              :limit="1"
+              accept=".xlsx, .xls"
+              :headers="upload.headers"
+              :action="upload.url + `?year=${year}&month=${month}&companyId=${companyId}`"
+              :fileList="fileList"
+              :before-upload="handleBeforeUpload"
+              :disabled="upload.isUploading"
+              :on-progress="handleFileUploadProgress"
+              :on-success="handleFileSuccess"
+              :auto-upload="false"
+              drag
+            >
+              <el-icon class="el-icon--upload">
+                <upload-filled />
+              </el-icon>
+              <div class="el-upload__text">
+                将文件拖到此处,或<em>点击上传</em>
+              </div>
+              <template #tip>
+                <div class="el-upload__tip text-center">
+                  <span
+                    >仅允许导入xls、xlsx格式文件。文件大小限制为&lt;50Mb</span
+                  >
+                  <el-link
+                    type="primary"
+                    :underline="false"
+                    style="font-size: 12px; vertical-align: baseline"
+                    @click="importTemplate"
+                    >下载模板</el-link
+                  >
+                </div>
+              </template>
+            </el-upload>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+    <template #footer>
+      <div class="dialog-footer">
+        <el-button
+          type="primary"
+          icon="Finished"
+          size="small"
+          @click="submitForm"
+          >确 定</el-button
+        >
+        <el-button icon="Close" size="small" @click="cancel">取 消</el-button>
+      </div>
+    </template>
+  </el-dialog>
+</template>
+
+
+<script setup>
+import { exportSalaryTemplateNotCompany } from "@/api/business/production/salary";
+import { getToken, getTenant } from "@/utils/auth";
+import useUserStore from "@/store/modules/user";
+import { deepClone } from "@/utils";
+import {  useAttrs } from "vue";
+const attrs = useAttrs();
+const { proxy } = getCurrentInstance();
+/** 父组件传参 */
+const props = defineProps({
+  companyId: {
+    type: String,
+    default: () => {},
+  },
+  loadData:{
+    type:Function,
+    default:()=>{}
+  }
+});
+const { companyId  } = toRefs(props);
+
+const emits = defineEmits(["loadData"]);
+/** 字典数组区 */
+/** 表单抽屉 页变量 */
+const fileList = ref([]);
+const visible = ref(false);
+const currentMonth = ref(proxy.moment().subtract("month").format("YYYY-MM-01"));
+const year = ref(proxy.moment().format("YYYY"));
+const month = ref(proxy.moment().format("MM"));
+
+const addType = ref(1);
+const webHost = import.meta.env.VITE_APP_BASE_API;
+
+const setHeaders = {
+  Authorization: getToken(),
+};
+
+const data = reactive({
+  form: {
+    year: proxy.moment().format("YYYY"),
+    month: proxy.moment().format("MM"),
+  },
+  followData: {},
+});
+const addComRef = ref(null);
+
+/*** 客户导入参数 */
+const upload = reactive({
+  // 是否禁用上传
+  isUploading: false,
+  // 设置上传的请求头部
+  headers: { Authorization: "Bearer " + getToken(), tenantId: getTenant() },
+  // 上传的地址
+  url: `/ezhizao-yzbh-production/business/salaryZero/importData`,
+});
+
+/** 查询对象 */
+const queryParams = ref({});
+
+const followQuery = ref({});
+const { form, rules, followData } = toRefs(data);
+
+/***********************  表单页方法 ****************************/
+
+/** 抽屉打开 */
+function open() {
+  // reset();
+  visible.value = true;
+}
+
+//下载模板
+const importTemplate = () => {
+  exportSalaryTemplateNotCompany();
+};
+
+function reset() {
+  // console.log(addComRef.value)
+  if (addComRef.value != null) addComRef.value.reset();
+}
+
+function cancel() {
+  visible.value = false;
+}
+
+function submitForm() {
+  submitFileForm();
+}
+
+function handleBeforeUpload(file) {
+  console.log(file);
+  if (
+    file.type !==
+      "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" &&
+    file.type !== "application/vnd.ms-excel"
+  ) {
+    proxy.$modal.msgError("请选择excel文件");
+    return false;
+  }
+  return true;
+}
+
+/**文件上传中处理 */
+const handleFileUploadProgress = (event, file, fileList) => {
+  upload.isUploading = true;
+};
+/** 文件上传成功处理 */
+const handleFileSuccess = (response, file, fileList) => {
+  upload.open = false;
+  upload.isUploading = false;
+  proxy.$refs["uploadRef"].handleRemove(file);
+  proxy.$alert(
+    "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
+      response.msg +
+      "</div>",
+    "导入结果",
+    { dangerouslyUseHTMLString: true }
+  );
+  attrs.onGetList();
+  emits("loadData");
+
+};
+/** 提交上传文件 */
+function submitFileForm() {
+  proxy.$refs["uploadRef"].submit();
+}
+
+function monthChangeHandler(arg) {
+  year.value = proxy.moment(arg).format("YYYY");
+  month.value = proxy.moment(arg).format("MM");
+}
+
+function disabledDateHandler(date) {
+  if (date <= proxy.moment().subtract("month")) {
+    return false;
+  } else {
+    return true;
+  }
+}
+
+// 暴露给父组件的方法
+defineExpose({
+  open,
+});
+</script>
+
+<style></style>

+ 2 - 2
src/views/business/production/salaryZero/index.vue

@@ -117,11 +117,11 @@
     <!-- 分页 -->
     <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
       v-model:limit="queryParams.pageSize" @pagination="getList" />
-    <form-dialog ref="formDialogRef" :get-list="getList" />
+    <form-dialog ref="formDialogRef" :get-list="getList" @getList = "getList"/>/>
     <view-dialog ref="viewDialogRef" :get-list="getList" />
     <import-excel-dialog ref="importExcelDialogRef" :get-list="getList" />
     <!-- 更多搜索弹窗 -->
-    <el-dialog title="更多搜索" v-model="moreSearch" width="620px" append-to-body draggable>
+    <el-dialog title="更多搜索" v-model="moreSearch" width="620px" append-to-body draggable :close-on-click-modal = "false">
       <el-form :model="queryParams" ref="queryRef" size="small" label-width="100">
         <el-row :gutter="20">
           <el-col :span="12">

+ 1 - 0
src/views/business/production/salaryZero/view.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="close"
+    :close-on-click-modal = "false"
   >
     <!-- 功能按钮 -->
     <div style="padding: 8px 24px 16px 24px">

+ 1 - 0
src/views/business/production/urgent/index.vue

@@ -187,6 +187,7 @@
       append-to-body
       draggable
       @close="formCancel"
+      :close-on-click-modal = "false"
     >
       <!-- 功能按钮 -->
       <div class="form-btns-container">

+ 8 - 3
src/views/business/service/loop/housingFundForm.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog title="公积金信息" v-model="visible" width="90%" append-to-body draggable @close="close" class="dialog-form">
+  <el-dialog title="公积金信息" v-model="visible" width="90%" append-to-body draggable @close="close" class="dialog-form" :close-on-click-modal = "false">
     <!-- 功能按钮 -->
     <div style="padding: 8px 24px 16px 24px">
       <el-form size="small" label-width="120px" v-model="form">
@@ -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) {

+ 1 - 0
src/views/business/service/loop/housingFundView.vue

@@ -7,6 +7,7 @@
     draggable
     @close="close"
     class="dialog-form"
+    :close-on-click-modal = "false"
   >
     <!-- 功能按钮 -->
     <div style="padding: 8px 24px 16px 24px">

+ 1 - 0
src/views/business/service/loop/index.vue

@@ -235,6 +235,7 @@
       width="500px"
       append-to-body
       draggable
+      :close-on-click-modal = "false"
     >
       <el-form ref="dictRef" :model="form" label-width="100">
         <el-row :gutter="30">

+ 1 - 1
src/views/business/service/loop/keepAccountForm.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog title="记账信息" v-model="visible" width="90%" append-to-body draggable @close="close" class="dialog-form">
+  <el-dialog title="记账信息" v-model="visible" width="90%" append-to-body draggable @close="close" class="dialog-form" :close-on-click-modal = "false">
     <!-- <div slot="title" class="dialog-title-container">
       <span class="title-label"><i class="el-icon-document" /> 工资信息</span>
       <i class="el-icon-close" @click="close" />

+ 1 - 0
src/views/business/service/loop/keepAccountView.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="close"
+    :close-on-click-modal = "false"
   >
     <!-- 功能按钮 -->
     <div style="padding: 8px 24px 16px 24px">

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

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog title="社保信息" v-model="visible" width="90%" append-to-body draggable @close="close" class="dialog-form">
+  <el-dialog title="社保信息" v-model="visible" width="90%" append-to-body draggable @close="close" class="dialog-form" :close-on-click-modal = "false">
     <!-- <div slot="title" class="dialog-title-container">
       <span class="title-label"><i class="el-icon-document" /> 工资信息</span>
       <i class="el-icon-close" @click="close" />
@@ -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) {

+ 1 - 0
src/views/business/service/loop/socialSecurityView.vue

@@ -7,6 +7,7 @@
     draggable
     @close="close"
     class="dialog-form"
+    :close-on-click-modal = "false"
   >
     <!-- 功能按钮 -->
     <div style="padding: 8px 24px 16px 24px">

+ 1 - 0
src/views/business/service/once/form.vue

@@ -7,6 +7,7 @@
     draggable
     @close="close"
     class="dialog-form"
+    :close-on-click-modal = "false"
   >
     <!-- 功能按钮 -->
     <div style="padding: 8px 24px 16px 24px">

+ 1 - 0
src/views/business/service/once/view.vue

@@ -7,6 +7,7 @@
     draggable
     @close="close"
     class="dialog-form"
+    :close-on-click-modal = "false"
   >
     <!-- 功能按钮 -->
     <div style="padding: 8px 24px 16px 24px">

+ 1 - 0
src/views/business/service/serviceForm.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="cancel"
+    :close-on-click-modal = "false"
   >
     <el-form ref="dictRef" :model="form" :rules="rules" label-width="100">
       <el-form-item :label="title" :prop="content">

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

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="close"
+    :close-on-click-modal = "false"
   >
     <!-- <div slot="title" class="dialog-title-container">
       <span class="title-label"><i class="el-icon-document" /> 工资信息</span>
@@ -515,7 +516,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 +819,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) {

+ 1 - 0
src/views/business/socialSecurity/confirm/importExcelDialog.vue

@@ -6,6 +6,7 @@
     width="680px"
     append-to-body
     draggable
+    :close-on-click-modal = "false"
   >
     <el-form
       ref="menuRef"

+ 1 - 1
src/views/business/socialSecurity/confirm/view.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog title="社保人员信息" v-model="visible" width="80%" append-to-body draggable @close="close">
+  <el-dialog title="社保人员信息" v-model="visible" width="80%" append-to-body draggable @close="close" :close-on-click-modal = "false">
     <!-- 功能按钮 -->
     <div style="padding: 8px 24px 16px 24px">
       <el-form size="small" label-width="100px" v-model="form">

+ 1 - 0
src/views/business/socialSecurity/declare/form.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="close"
+    :close-on-click-modal = "false"
   >
     <!-- <div slot="title" class="dialog-title-container">
       <span class="title-label"><i class="el-icon-document" /> 工资信息</span>

+ 1 - 1
src/views/business/socialSecurity/declare/index.vue

@@ -140,7 +140,7 @@
     <member-dialog ref="memeberDialogRef" :get-list="getList" />
     <FileListDialog ref="fileListDialogRef" :get-list="getList" />
     <!-- 更多搜索弹窗 -->
-    <el-dialog title="更多搜索" v-model="moreSearch" width="620px" append-to-body size="small" draggable>
+    <el-dialog title="更多搜索" v-model="moreSearch" width="620px" append-to-body size="small" draggable :close-on-click-modal = "false">
       <el-form :model="queryParams" ref="queryRef" size="small" label-width="100">
         <el-row :gutter="20">
           <el-col :span="12">

+ 1 - 0
src/views/business/socialSecurity/declare/view.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="close"
+    :close-on-click-modal = "false"
   >
     <!-- <div slot="title" class="dialog-title-container">
       <span class="title-label"><i class="el-icon-document" /> 工资信息</span>

+ 1 - 0
src/views/business/socialSecurity/feedbackDialog.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="cancel"
+    :close-on-click-modal = "false"
   >
     <el-form ref="dictRef" :model="form" label-width="100">
       <el-form-item label="驳回原因:">

+ 1 - 0
src/views/business/socialSecurity/fileListDialog.vue

@@ -6,6 +6,7 @@
     append-to-body
     draggable
     @close="close"
+    :close-on-click-modal = "false"
   >
     <!-- 功能按钮 -->
     <div style="padding: 8px 24px 16px 24px">

+ 1 - 1
src/views/business/socialSecurity/memberDialog.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog v-model="visible" width="70%" append-to-body draggable>
+  <el-dialog v-model="visible" width="70%" append-to-body draggable :close-on-click-modal = "false">
     <template #header>
       <div class="dialog-title-container">
         <span class="title-label" style="color: #fff">

+ 1 - 1
src/views/dialog/DialogChannelChoice.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog v-model="visible" width="680px" append-to-body draggable>
+  <el-dialog v-model="visible" width="680px" append-to-body draggable :close-on-click-modal = "false">
     <template #header>
       <div class="dialog-title-container">
         <span class="title-label" style="color: #fff"

+ 1 - 1
src/views/dialog/DialogContractChoice.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog v-model="visible" width="680px" append-to-body draggable>
+  <el-dialog v-model="visible" width="680px" append-to-body draggable :close-on-click-modal = "false">
     <template #header>
       <div class="dialog-title-container">
         <span class="title-label" style="color: white"><i class="el-icon-document" style="color: white" /> 合同选择</span>

+ 1 - 1
src/views/dialog/DialogCustomerChoice.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog v-model="visible" width="680px" append-to-body draggable>
+  <el-dialog v-model="visible" width="680px" append-to-body draggable :close-on-click-modal = "false">
     <template #header>
       <div class="dialog-title-container">
         <span class="title-label" style="color: #fff"

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů