ly 1 tahun lalu
induk
melakukan
0d4127acad

+ 9 - 0
src/api/business/production/salary.js

@@ -147,4 +147,13 @@ export function exportSalaryPdf(id) {
     },
     `工资表${new Date().getTime()}.pdf`
   )
+}
+
+// 删除工资
+export function delSalarys(ids) {
+  request.defaults.baseURL = '/ezhizao-yzbh-production'
+  return request({
+    url: '/business/salary/physical/' + ids,
+    method: 'delete'
+  })
 }

+ 9 - 2
src/views/business/production/IndividualIncomeTaxIsZero/FormDialog.vue

@@ -9,6 +9,7 @@
     @close="close"
     :close-on-click-modal = "false"
   >
+  <div v-loading="loading">
     <div>
       <div style="padding: 8px 24px 16px 24px">
         <el-form size="small" label-width="110px">
@@ -109,6 +110,7 @@
         保存</el-button
       >
     </div>
+  </div>
   </el-dialog>
 </template>
 
@@ -271,6 +273,7 @@ function handleSave() {
     proxy.$message.error("请上传凭证");
     return;
   }
+  loading.value = true
   emptyForm.value.files = fileList.value;
   emptyForm.value.year = year.value;
   emptyForm.value.month = month.value;
@@ -288,7 +291,9 @@ function handleSave() {
       .catch((err) => {
         proxy.$modal.$modalMsgError(err);
         console.log(err);
-      });
+      }).finally(() => {
+    loading.value = false
+  });
   } else {
     mainInfo.value.detail.status = 3;
     mainInfo.value.detail.fileName = emptyForm.value.fileName;
@@ -307,7 +312,9 @@ function handleSave() {
       .catch((err) => {
         proxy.$modal.$modalMsgError(err);
         console.log(err);
-      });
+      }).finally(() => {
+    loading.value = false
+  });
   }
 }
 

+ 500 - 634
src/views/business/production/financialReportTax/FormDialog.vue

@@ -1,258 +1,169 @@
 <template>
   <!-- 添加或修改菜单对话框 -->
-  <el-dialog
-    title="报税信息"
-    v-model="visible"
-    width="800px"
-    append-to-body
-    draggable
-    :close-on-click-modal="false"
-    @close="close"
-  >
-    <div>
-      <div style="padding: 8px 24px 16px 24px">
-        <el-form size="small" label-width="130px">
-          <el-row :gutter="30">
-            <el-col :span="12">
-              <el-form-item label="客户名称">
-                <div>{{ currentMember }}</div>
-              </el-form-item>
-            </el-col>
-
-            <el-col :span="12">
-              <el-form-item label="所属月份">
-                <div>{{ year }}-{{ month }}</div>
-              </el-form-item>
-            </el-col>
-
-            <el-col :span="12">
-              <el-form-item label="可弥补之前年度亏损">
-                <el-input-number
-                  v-if="editStatus && !isView"
-                  size="small"
-                  placeholder="可弥补之前年度亏损"
-                  v-model="emptyForm.previousAnnualLosses"
-                  style="width: 120%"
-                  :precision="2"
-                  :controls="false"
-                />
-                <div v-else>
-                  {{ rowNum(emptyForm.previousAnnualLosses ? null : 0.0) }}
-                  <el-button
-                    link
-                    type="primary"
-                    icon="Edit"
-                    size="small"
-                    style="margin-left: 20px"
-                    v-if="!isView"
-                    @click="editStatus = true"
-                  />
-                </div>
-                <template v-if="isView">
-                  <span>{{ rowNum(emptyForm.previousAnnualLosses) }}</span>
-                </template>
-              </el-form-item>
-            </el-col>
-
-            <el-col :span="24">
-              <el-divider />
-            </el-col>
-            <el-col :span="12">
-              <el-form-item label="增值税">
-                <el-input-number
-                  v-if="!isView"
-                  placeholder="增值税"
-                  v-model="emptyForm.valueAddedTax"
-                  style="
+  <el-dialog title="报税信息" v-model="visible" width="800px" append-to-body draggable :close-on-click-modal="false"
+    @close="close">
+    <div v-loading="loading">
+      <div>
+        <div style="padding: 8px 24px 16px 24px">
+          <el-form size="small" label-width="130px">
+            <el-row :gutter="30">
+              <el-col :span="12">
+                <el-form-item label="客户名称">
+                  <div>{{ currentMember }}</div>
+                </el-form-item>
+              </el-col>
+
+              <el-col :span="12">
+                <el-form-item label="所属月份">
+                  <div>{{ year }}-{{ month }}</div>
+                </el-form-item>
+              </el-col>
+
+              <el-col :span="12">
+                <el-form-item label="可弥补之前年度亏损">
+                  <el-input-number v-if="editStatus && !isView" size="small" placeholder="可弥补之前年度亏损"
+                    v-model="emptyForm.previousAnnualLosses" style="width: 120%" :precision="2" :controls="false" />
+                  <div v-else>
+                    {{ rowNum(emptyForm.previousAnnualLosses ? null : 0.0) }}
+                    <el-button link type="primary" icon="Edit" size="small" style="margin-left: 20px" v-if="!isView"
+                      @click="editStatus = true" />
+                  </div>
+                  <template v-if="isView">
+                    <span>{{ rowNum(emptyForm.previousAnnualLosses) }}</span>
+                  </template>
+                </el-form-item>
+              </el-col>
+
+              <el-col :span="24">
+                <el-divider />
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="增值税">
+                  <el-input-number v-if="!isView" placeholder="增值税" v-model="emptyForm.valueAddedTax" style="
                     display: flex;
                     align-items: center;
                     justify-content: center;
-                  "
-                  @change="taxChangeHandler"
-                  :controls="false"
-                  :precision="2"
-                />
-                <div v-else>{{ rowNum(emptyForm.valueAddedTax) }}</div>
-              </el-form-item>
-            </el-col>
-
-            <el-col :span="12">
-              <el-form-item label="城建税">
-                <el-input-number
-                  v-if="!isView"
-                  placeholder="城建税"
-                  v-model="emptyForm.cityConstructTax"
-                  style="
+                  " @change="taxChangeHandler" :controls="false" :precision="2" />
+                  <div v-else>{{ rowNum(emptyForm.valueAddedTax) }}</div>
+                </el-form-item>
+              </el-col>
+
+              <el-col :span="12">
+                <el-form-item label="城建税">
+                  <el-input-number v-if="!isView" placeholder="城建税" v-model="emptyForm.cityConstructTax" style="
                     display: flex;
                     align-items: center;
                     justify-content: center;
-                  "
-                  @change="taxChangeHandler"
-                  :controls="false"
-                  :precision="2"
-                />
-                <div v-else>{{ rowNum(emptyForm.cityConstructTax) }}</div>
-              </el-form-item>
-            </el-col>
-
-            <el-col :span="12">
-              <el-form-item label="教育费附加">
-                <el-input-number
-                  v-if="!isView"
-                  placeholder="教育费附加"
-                  v-model="emptyForm.additionsTaxOfEducation"
-                  style="
+                  " @change="taxChangeHandler" :controls="false" :precision="2" />
+                  <div v-else>{{ rowNum(emptyForm.cityConstructTax) }}</div>
+                </el-form-item>
+              </el-col>
+
+              <el-col :span="12">
+                <el-form-item label="教育费附加">
+                  <el-input-number v-if="!isView" placeholder="教育费附加" v-model="emptyForm.additionsTaxOfEducation" style="
                     display: flex;
                     align-items: center;
                     justify-content: center;
-                  "
-                  @change="taxChangeHandler"
-                  :precision="2"
-                  :controls="false"
-                />
-                <div v-else>
-                  {{ rowNum(emptyForm.additionsTaxOfEducation) }}
-                </div>
-              </el-form-item>
-            </el-col>
-
-            <el-col :span="12">
-              <el-form-item label="地方教育费附加">
-                <el-input-number
-                  v-if="!isView"
-                  placeholder="地方教育费附加"
-                  v-model="emptyForm.ladditionsTaxOfEducation"
-                  style="
+                  " @change="taxChangeHandler" :precision="2" :controls="false" />
+                  <div v-else>
+                    {{ rowNum(emptyForm.additionsTaxOfEducation) }}
+                  </div>
+                </el-form-item>
+              </el-col>
+
+              <el-col :span="12">
+                <el-form-item label="地方教育费附加">
+                  <el-input-number v-if="!isView" placeholder="地方教育费附加" v-model="emptyForm.ladditionsTaxOfEducation"
+                    style="
                     display: flex;
                     align-items: center;
                     justify-content: center;
-                  "
-                  @change="taxChangeHandler"
-                  :precision="2"
-                  :controls="false"
-                />
-                <div v-else>
-                  {{ rowNum(emptyForm.ladditionsTaxOfEducation) }}
-                </div>
-              </el-form-item>
-            </el-col>
-
-            <el-col :span="12">
-              <el-form-item label="企业所得税">
-                <el-input-number
-                  v-if="!isView"
-                  placeholder="企业所得税"
-                  v-model="emptyForm.businessIncomeTax"
-                  style="
+                  " @change="taxChangeHandler" :precision="2" :controls="false" />
+                  <div v-else>
+                    {{ rowNum(emptyForm.ladditionsTaxOfEducation) }}
+                  </div>
+                </el-form-item>
+              </el-col>
+
+              <el-col :span="12">
+                <el-form-item label="企业所得税">
+                  <el-input-number v-if="!isView" placeholder="企业所得税" v-model="emptyForm.businessIncomeTax" style="
                     display: flex;
                     align-items: center;
                     justify-content: center;
-                  "
-                  @change="taxChangeHandler"
-                  :precision="2"
-                  :controls="false"
-                />
-                <div v-else>{{ rowNum(emptyForm.businessIncomeTax) }}</div>
-              </el-form-item>
-            </el-col>
-
-            <el-col :span="12">
-              <el-form-item label="印花税">
-                <el-input-number
-                  v-if="!isView"
-                  placeholder="印花税"
-                  v-model="emptyForm.stampTax"
-                  style="
+                  " @change="taxChangeHandler" :precision="2" :controls="false" />
+                  <div v-else>{{ rowNum(emptyForm.businessIncomeTax) }}</div>
+                </el-form-item>
+              </el-col>
+
+              <el-col :span="12">
+                <el-form-item label="印花税">
+                  <el-input-number v-if="!isView" placeholder="印花税" v-model="emptyForm.stampTax" style="
                     display: flex;
                     align-items: center;
                     justify-content: center;
-                  "
-                  @change="taxChangeHandler"
-                  :precision="2"
-                  :controls="false"
-                />
-                <div v-else>{{ rowNum(emptyForm.stampTax) }}</div>
-              </el-form-item>
-            </el-col>
-
-            <el-col :span="12">
-              <el-form-item label="文化事业建设税">
-                <el-input-number
-                  v-if="!isView"
-                  placeholder="文化事业建设税"
-                  v-model="emptyForm.culturalConstructTax"
-                  style="
+                  " @change="taxChangeHandler" :precision="2" :controls="false" />
+                  <div v-else>{{ rowNum(emptyForm.stampTax) }}</div>
+                </el-form-item>
+              </el-col>
+
+              <el-col :span="12">
+                <el-form-item label="文化事业建设税">
+                  <el-input-number v-if="!isView" placeholder="文化事业建设税" v-model="emptyForm.culturalConstructTax" style="
                     display: flex;
                     align-items: center;
                     justify-content: center;
-                  "
-                  @change="taxChangeHandler"
-                  :precision="2"
-                  :controls="false"
-                />
-                <div v-else>{{ rowNum(emptyForm.culturalConstructTax) }}</div>
-              </el-form-item>
-            </el-col>
-
-            <el-col :span="12">
-              <el-form-item label="消费税">
-                <el-input-number
-                  v-if="!isView"
-                  placeholder="消费税"
-                  v-model="emptyForm.excise"
-                  style="
+                  " @change="taxChangeHandler" :precision="2" :controls="false" />
+                  <div v-else>{{ rowNum(emptyForm.culturalConstructTax) }}</div>
+                </el-form-item>
+              </el-col>
+
+              <el-col :span="12">
+                <el-form-item label="消费税">
+                  <el-input-number v-if="!isView" placeholder="消费税" v-model="emptyForm.excise" style="
                     display: flex;
                     align-items: center;
                     justify-content: center;
-                  "
-                  @change="taxChangeHandler"
-                  :precision="2"
-                  :controls="false"
-                />
-                <div v-else>{{ rowNum(emptyForm.excise) }}</div>
-              </el-form-item>
-            </el-col>
-
-            <el-col :span="12">
-              <el-form-item label="合计">
-                <div v-if="emptyForm.sumTax != 0">
-                  {{ rowNum(emptyForm.sumTax) }}
-                </div>
-              </el-form-item>
-            </el-col>
-
-            <el-col :span="24">
-              <el-divider />
-            </el-col>
-
-            <el-col :span="12" v-if="!isView">
-              <el-form-item label="备注">
-                <el-input
-                  type="textarea"
-                  rows="2"
-                  maxlength="200"
-                  show-word-limit
-                  v-model="emptyForm.content"
-                />
-              </el-form-item>
-            </el-col>
-
-            <el-col :span="24">
-              <div class="details-btns-container">
-                <el-form-item label="凭证文件" prop="evidenceFile" required>
-                  <dragUpload :accept="accept" style="width:100%" @file="upload"
-                  v-if="emptyForm.evidenceFile == null || emptyForm.evidenceFile == ''" />
-                <img v-else style="height: 148px; width: 148px" :src="`${baseUrl}/${emptyForm.evidenceFile}`"
-                  class="avatar" @click="openEvidience('evidenceFile')" />
-                  <div v-if="!isView">
-                  <el-icon :size="20" v-if="emptyForm.evidenceFile !== '' ||emptyForm.evidenceFile == null " @click="emptyForm.evidenceFile = ''"
-                    class="delete-button" >
-                    <Delete />
-                  </el-icon>
-                  </div>
-                  <div v-else>
+                  " @change="taxChangeHandler" :precision="2" :controls="false" />
+                  <div v-else>{{ rowNum(emptyForm.excise) }}</div>
+                </el-form-item>
+              </el-col>
+
+              <el-col :span="12">
+                <el-form-item label="合计">
+                  <div v-if="emptyForm.sumTax != 0">
+                    {{ rowNum(emptyForm.sumTax) }}
                   </div>
-                  <!-- <el-upload
+                </el-form-item>
+              </el-col>
+
+              <el-col :span="24">
+                <el-divider />
+              </el-col>
+
+              <el-col :span="12" v-if="!isView">
+                <el-form-item label="备注">
+                  <el-input type="textarea" rows="2" maxlength="200" show-word-limit v-model="emptyForm.content" />
+                </el-form-item>
+              </el-col>
+
+              <el-col :span="24">
+                <div class="details-btns-container">
+                  <el-form-item label="凭证文件" prop="evidenceFile" required>
+                    <dragUpload :accept="accept" style="width:100%" @file="upload"
+                      v-if="emptyForm.evidenceFile == null || emptyForm.evidenceFile == ''" />
+                    <img v-else style="height: 148px; width: 148px" :src="`${baseUrl}/${emptyForm.evidenceFile}`"
+                      class="avatar" @click="openEvidience('evidenceFile')" />
+                    <div v-if="!isView">
+                      <el-icon :size="20" v-if="emptyForm.evidenceFile !== '' ||emptyForm.evidenceFile == null "
+                        @click="emptyForm.evidenceFile = ''" class="delete-button">
+                        <Delete />
+                      </el-icon>
+                    </div>
+                    <div v-else>
+                    </div>
+                    <!-- <el-upload
                     v-if="!isView"
                     action="#"
                     :http-request="upload"
@@ -283,440 +194,395 @@
                     class="avatar"
                     @click="openEvidience('evidenceFile')"
                   /> -->
-                </el-form-item>
-              </div>
-            </el-col>
-
-            <el-col :span="24" style="padding: 15px 15px 16px 15px">
-              <div class="details-btns-container">
-                <el-form-item label="报表文件" prop="reportFile" >
-                  <el-upload
-                    v-if="!isView"
-                    action="#"
-                    :http-request="uploadextFile"
-                    :with-credentials="true"
-                    :show-file-list="false"
-                    multiple
-                  >
-                    <el-button size="small" type="primary" icon="Upload"
-                      >点击上传</el-button
-                    >
-                  </el-upload>
-                </el-form-item>
-              </div>
-              <div class="details-body" style="height: 100px">
-                <el-table
-                  ref="filesTable"
-                  :data="reportFiles"
-                  size="small"
-                  height="100%"
-                  border
-                  header-row-class-name="list-header-row"
-                >
-                  <el-table-column
-                    label="文件名"
-                    prop="fileName"
-                    align="center"
-                  >
-                    <template #default="scope">
-                      <el-link
-                        :href="`${baseUrl}${scope.row.fileUrl}`"
-                        :underline="false"
-                        target="_blank"
-                        type="primary"
-                      >
-                        {{ scope.row.fileName }}
-                      </el-link>
-                    </template>
-                  </el-table-column>
-                  <el-table-column
-                    label="文件类型"
-                    prop="fileType"
-                    width="100"
-                    align="center"
-                  >
-                    <template #default="scope">
-                      <el-link :underline="false" target="_blank">
-                        {{ scope.row.fileType }}
-                      </el-link>
-                    </template>
-                  </el-table-column>
-                  <el-table-column
-                    v-if="!isView"
-                    label="操作"
-                    width="50"
-                    align="center"
-                  >
-                    <template #default="scope">
-                      <el-button
-                        size="small"
-                        link
-                        type="danger"
-                        @click="handleDelFile(scope.$index)"
-                        >删除</el-button
-                      >
-                    </template>
-                  </el-table-column>
-                </el-table>
-              </div>
-            </el-col>
-          </el-row>
-        </el-form>
+                  </el-form-item>
+                </div>
+              </el-col>
+
+              <el-col :span="24" style="padding: 15px 15px 16px 15px">
+                <div class="details-btns-container">
+                  <el-form-item label="报表文件" prop="reportFile">
+                    <el-upload v-if="!isView" action="#" :http-request="uploadextFile" :with-credentials="true"
+                      :show-file-list="false" multiple>
+                      <el-button size="small" type="primary" icon="Upload">点击上传</el-button>
+                    </el-upload>
+                  </el-form-item>
+                </div>
+                <div class="details-body" style="height: 100px">
+                  <el-table ref="filesTable" :data="reportFiles" size="small" height="100%" border
+                    header-row-class-name="list-header-row">
+                    <el-table-column label="文件名" prop="fileName" align="center">
+                      <template #default="scope">
+                        <el-link :href="`${baseUrl}${scope.row.fileUrl}`" :underline="false" target="_blank"
+                          type="primary">
+                          {{ scope.row.fileName }}
+                        </el-link>
+                      </template>
+                    </el-table-column>
+                    <el-table-column label="文件类型" prop="fileType" width="100" align="center">
+                      <template #default="scope">
+                        <el-link :underline="false" target="_blank">
+                          {{ scope.row.fileType }}
+                        </el-link>
+                      </template>
+                    </el-table-column>
+                    <el-table-column v-if="!isView" label="操作" width="50" align="center">
+                      <template #default="scope">
+                        <el-button size="small" link type="danger" @click="handleDelFile(scope.$index)">删除</el-button>
+                      </template>
+                    </el-table-column>
+                  </el-table>
+                </div>
+              </el-col>
+            </el-row>
+          </el-form>
+        </div>
+      </div>
+      <div class="form-btns-container" v-if="!isView" style="height: 40px">
+        <el-button size="small" icon="close" style="float: right; margin-left: 12px; margin-right: 12px"
+          @click="close">取消
+        </el-button>
+        <el-button type="primary" size="small" icon="Finished" @click="handleSave"
+          v-hasPermi="['business:financialReportTax:saveDetail']" style="float: right">
+          保存</el-button>
       </div>
-    </div>
-    <div class="form-btns-container" v-if="!isView" style="height: 40px">
-      <el-button
-        size="small"
-        icon="close"
-        style="float: right; margin-left: 12px; margin-right: 12px"
-        @click="close"
-        >取消
-      </el-button>
-      <el-button
-        type="primary"
-        size="small"
-        icon="Finished"
-        @click="handleSave"
-        v-hasPermi="['business:financialReportTax:saveDetail']"
-        style="float: right"
-      >
-        保存</el-button
-      >
     </div>
   </el-dialog>
 </template>
 
 
 <script setup>
-import { rowNum } from "@/utils/index";
-const { proxy } = getCurrentInstance();
-/** 父组件传参 */
-const props = defineProps({
-  getList: {
-    type: Function,
-    default: () => {},
-  },
-});
-const { getList } = toRefs(props);
-/** 字典数组区 */
-const { develop_type } = proxy.useDict("develop_type");
-/** 表单抽屉 页变量 */
-const title = ref("");
-const loading = ref(false);
-const multiple = ref(true);
-const visible = ref(false);
-const editStatus = ref(false);
-const isFullscreen = ref(false);
-const addDetailNum = ref(1);
-const isAdd = ref(false);
-const isView = ref(false);
-const mainInfo = ref({});
-const monthInfo = ref({});
-const currentMember = ref({});
-const year = ref({});
-const month = ref({});
-const cities = ref([]);
-const districts = ref([]);
-const files = ref([]);
-const reportFiles = ref([]);
-const tenantId = ref(0);
-
-const sourceCategories = ref([]);
-
-const addType = ref(1);
-
-const emptyForm = ref({
-  id: null,
-  originalFileName: "",
-  fileName: "",
-  financialReportTaxId: null,
-  companyId: null,
-  year: null,
-  month: null,
-  files: [],
-  reportFiles: [],
-  workOrderId: null,
-});
-
-const data = reactive({
-  form: {},
-});
-
-watch(addType, (value) => {
-  switch (value) {
-    case "1":
-      break;
-    case "2":
-      break;
-    default:
-      break;
-  }
-});
+  import { rowNum } from "@/utils/index";
+  const { proxy } = getCurrentInstance();
+  /** 父组件传参 */
+  const props = defineProps({
+    getList: {
+      type: Function,
+      default: () => { },
+    },
+  });
+  const { getList } = toRefs(props);
+  /** 字典数组区 */
+  const { develop_type } = proxy.useDict("develop_type");
+  /** 表单抽屉 页变量 */
+  const title = ref("");
+  const loading = ref(false);
+  const multiple = ref(true);
+  const visible = ref(false);
+  const editStatus = ref(false);
+  const isFullscreen = ref(false);
+  const addDetailNum = ref(1);
+  const isAdd = ref(false);
+  const isView = ref(false);
+  const mainInfo = ref({});
+  const monthInfo = ref({});
+  const currentMember = ref({});
+  const year = ref({});
+  const month = ref({});
+  const cities = ref([]);
+  const districts = ref([]);
+  const files = ref([]);
+  const reportFiles = ref([]);
+  const tenantId = ref(0);
+
+  const sourceCategories = ref([]);
+
+  const addType = ref(1);
+
+  const emptyForm = ref({
+    id: null,
+    originalFileName: "",
+    fileName: "",
+    financialReportTaxId: null,
+    companyId: null,
+    year: null,
+    month: null,
+    files: [],
+    reportFiles: [],
+    workOrderId: null,
+  });
+
+  const data = reactive({
+    form: {},
+  });
+
+  watch(addType, (value) => {
+    switch (value) {
+      case "1":
+        break;
+      case "2":
+        break;
+      default:
+        break;
+    }
+  });
 
-import { saveDetail, updateTax, getTax } from "@/api/business/production/tax";
-import { uploadFile } from "@/api/tool/file";
+  import { saveDetail, updateTax, getTax } from "@/api/business/production/tax";
+  import { uploadFile } from "@/api/tool/file";
   import dragUpload from "@/components/dragUpload"
-// import { de } from "element-plus/es/locale";
-import { ref } from "vue";
-
-const baseUrl = import.meta.env.VITE_APP_BASE_API;
-
-const { form, rules } = toRefs(data);
-
-const followQuery = ref({});
-
-/***********************  表单页方法 ****************************/
-
-/** 抽屉打开 */
-function open(id, mainRow, monthItem) {
-  console.log("打开抽屉", id);
-  visible.value = true;
-  mainInfo.value = mainRow;
-  monthInfo.value = monthItem;
-  tenantId.value = mainRow.tenantId;
-  if (id == 0) {
-    isAdd.value = true;
-    isView.value = false;
-  } else if (id == null) {
-    isView.value = true;
-    emptyForm.value = mainRow.detail;
-  } else {
-    emptyForm.value = mainRow.detail;
-    isView.value = false;
-    isAdd.value = false;
+  // import { de } from "element-plus/es/locale";
+  import { ref } from "vue";
+
+  const baseUrl = import.meta.env.VITE_APP_BASE_API;
+
+  const { form, rules } = toRefs(data);
+
+  const followQuery = ref({});
+
+  /***********************  表单页方法 ****************************/
+
+  /** 抽屉打开 */
+  function open(id, mainRow, monthItem) {
+    console.log("打开抽屉", id);
+    visible.value = true;
+    mainInfo.value = mainRow;
+    monthInfo.value = monthItem;
+    tenantId.value = mainRow.tenantId;
+    if (id == 0) {
+      isAdd.value = true;
+      isView.value = false;
+    } else if (id == null) {
+      isView.value = true;
+      emptyForm.value = mainRow.detail;
+    } else {
+      emptyForm.value = mainRow.detail;
+      isView.value = false;
+      isAdd.value = false;
+    }
+
+    getTaxId(mainRow, id);
   }
 
-  getTaxId(mainRow, id);
-}
+  function getTaxId(mainRow, id) {
+    if (mainRow.detail != null) {
+      getTax(mainRow.detail.id).then((res) => {
+        if (res.code === 200) {
+          emptyForm.value = res.data;
 
-function getTaxId(mainRow, id) {
-  if (mainRow.detail != null) {
-    getTax(mainRow.detail.id).then((res) => {
-      if (res.code === 200) {
-        emptyForm.value = res.data;
+          reportFiles.value = emptyForm.value.reportFiles;
+          loadData(id);
+        }
+      });
+    } else {
+      loadData(id);
+    }
+  }
+
+  function openEvidience() {
+    window.open(`${baseUrl}${emptyForm.value.evidenceFile}`);
+  }
 
-        reportFiles.value = emptyForm.value.reportFiles;
-        loadData(id);
+  function loadData(id) {
+    month.value = monthInfo.value.month;
+    currentMember.value = mainInfo.value.companyName;
+    emptyForm.value.workOrderId = mainInfo.value.workOrderId;
+    year.value = monthInfo.value.year;
+    emptyForm.value.financialIndividualIncomeTaxId = mainInfo.value.id;
+    emptyForm.value.isZero = mainInfo.value.isZero;
+    emptyForm.value.financialReportTaxId = mainInfo.value.id;
+    emptyForm.value.workOrderId = mainInfo.value.workOrderId;
+    if (!isAdd.value) {
+      if (mainInfo.value.detail != null) {
+        emptyForm.value.evidenceFile = mainInfo.value.detail.evidenceFile;
       }
-    });
-  } else {
-    loadData(id);
+    }
+  }
+
+  /** 计算税额 */
+  function taxChangeHandler() {
+    let amount = 0;
+
+    amount +=
+      emptyForm.value.ladditionsTaxOfEducation == null
+        ? 0
+        : emptyForm.value.ladditionsTaxOfEducation;
+    amount +=
+      emptyForm.value.valueAddedTax == null ? 0 : emptyForm.value.valueAddedTax;
+    amount +=
+      emptyForm.value.cityConstructTax == null
+        ? 0
+        : emptyForm.value.cityConstructTax;
+    amount +=
+      emptyForm.value.additionsTaxOfEducation == null
+        ? 0
+        : emptyForm.value.additionsTaxOfEducation;
+    amount +=
+      emptyForm.value.businessIncomeTax == null
+        ? 0
+        : emptyForm.value.businessIncomeTax;
+    amount += emptyForm.value.stampTax == null ? 0 : emptyForm.value.stampTax;
+    amount +=
+      emptyForm.value.culturalConstructTax == null
+        ? 0
+        : emptyForm.value.culturalConstructTax;
+    amount += emptyForm.value.excise == null ? 0 : emptyForm.value.excise;
+    emptyForm.value.sumTax = amount;
   }
-}
-
-function openEvidience() {
-  window.open(`${baseUrl}${emptyForm.value.evidenceFile}`);
-}
-
-function loadData(id) {
-  month.value = monthInfo.value.month;
-  currentMember.value = mainInfo.value.companyName;
-  emptyForm.value.workOrderId = mainInfo.value.workOrderId;
-  year.value = monthInfo.value.year;
-  emptyForm.value.financialIndividualIncomeTaxId = mainInfo.value.id;
-  emptyForm.value.isZero = mainInfo.value.isZero;
-  emptyForm.value.financialReportTaxId = mainInfo.value.id;
-  emptyForm.value.workOrderId = mainInfo.value.workOrderId;
-  if (!isAdd.value) {
-    if (mainInfo.value.detail != null) {
-      emptyForm.value.evidenceFile = mainInfo.value.detail.evidenceFile;
+
+  function handleDelFile(index) {
+    reportFiles.value.splice(index, 1);
+  }
+
+  /**  保存 */
+  function handleSave() {
+    emptyForm.value.reportFiles = reportFiles;
+    if (
+      emptyForm.value.evidenceFile == null ||
+      emptyForm.value.evidenceFile === ""
+    ) {
+      proxy.$message.error("请上传凭证");
+      return;
+    }
+
+    emptyForm.value.files = files.value;
+    emptyForm.value.year = year.value;
+    emptyForm.value.month = month.value;
+
+    console.log("monthInfo", monthInfo.value);
+    console.log("month", month.value);
+    emptyForm.value.status = 3;
+    console.log("保存", emptyForm.value);
+    loading.value = true
+    if (isAdd.value) {
+      emptyForm.value.companyId = mainInfo.value.companyId;
+      console.log("新增", emptyForm.value);
+      saveDetail(emptyForm.value)
+        .then((res) => {
+          proxy.$modal.msgSuccess("保存成功!");
+          visible.value = false;
+
+          getList.value();
+        })
+        .catch((err) => {
+          proxy.$modal.$modalMsgError(err);
+          console.log(err);
+        }).finally(() => {
+          loading.value = false
+        });
+      getList.value();
+    } else {
+      mainInfo.value.detail.status = 3;
+      saveDetail(emptyForm.value)
+        .then((res) => {
+          console.log(res);
+          proxy.$modal.msgSuccess("保存成功!");
+          visible.value = false;
+
+          getList.value();
+        })
+        .catch((err) => {
+          proxy.$modal.$modalMsgError(err);
+          console.log(err);
+        }).finally(() => {
+          loading.value = false
+        });
     }
   }
-}
-
-/** 计算税额 */
-function taxChangeHandler() {
-  let amount = 0;
-
-  amount +=
-    emptyForm.value.ladditionsTaxOfEducation == null
-      ? 0
-      : emptyForm.value.ladditionsTaxOfEducation;
-  amount +=
-    emptyForm.value.valueAddedTax == null ? 0 : emptyForm.value.valueAddedTax;
-  amount +=
-    emptyForm.value.cityConstructTax == null
-      ? 0
-      : emptyForm.value.cityConstructTax;
-  amount +=
-    emptyForm.value.additionsTaxOfEducation == null
-      ? 0
-      : emptyForm.value.additionsTaxOfEducation;
-  amount +=
-    emptyForm.value.businessIncomeTax == null
-      ? 0
-      : emptyForm.value.businessIncomeTax;
-  amount += emptyForm.value.stampTax == null ? 0 : emptyForm.value.stampTax;
-  amount +=
-    emptyForm.value.culturalConstructTax == null
-      ? 0
-      : emptyForm.value.culturalConstructTax;
-  amount += emptyForm.value.excise == null ? 0 : emptyForm.value.excise;
-  emptyForm.value.sumTax = amount;
-}
-
-function handleDelFile(index) {
-  reportFiles.value.splice(index, 1);
-}
-
-/**  保存 */
-function handleSave() {
-  emptyForm.value.reportFiles = reportFiles;
-  if (
-    emptyForm.value.evidenceFile == null ||
-    emptyForm.value.evidenceFile === ""
-  ) {
-    proxy.$message.error("请上传凭证");
-    return;
+
+  function uploadextFile(param) {
+    const formData = new FormData();
+    formData.append("file", param.file);
+    uploadFile(formData).then((res) => {
+      if (res.code === 200) {
+        console.log(res);
+        const file = {};
+        file.fileType =
+          res.newFileName.split(".")[res.newFileName.split(".").length - 1];
+        file.fileName = res.newFileName;
+        file.fileUrl = res.fileName;
+        file.rawFileName = res.originalFilename;
+        file.fileSize = param.file.size;
+        file.tenantId = tenantId.value;
+        emptyForm.value.reportFile = file.fileUrl;
+        reportFiles.value.push(file);
+        console.log("文件", reportFiles.value);
+      }
+    });
   }
- 
-  emptyForm.value.files = files.value;
-  emptyForm.value.year = year.value;
-  emptyForm.value.month = month.value;
-
-  console.log("monthInfo", monthInfo.value);
-  console.log("month", month.value);
-  emptyForm.value.status = 3;
-  console.log("保存", emptyForm.value);
-
-  if (isAdd.value) {
-    emptyForm.value.companyId = mainInfo.value.companyId;
-    console.log("新增", emptyForm.value);
-    saveDetail(emptyForm.value)
-      .then((res) => {
-        proxy.$modal.msgSuccess("保存成功!");
-        visible.value = false;
-
-        getList.value();
-      })
-      .catch((err) => {
-        proxy.$modal.$modalMsgError(err);
-        console.log(err);
-      });
-    getList.value();
-  } else {
-    mainInfo.value.detail.status = 3;
-    saveDetail(emptyForm.value)
-      .then((res) => {
+
+  /** 文件上传 */
+  function upload(param) {
+    const formData = new FormData();
+    formData.append("file", param);
+    uploadFile(formData).then((res) => {
+      if (res.code === 200) {
         console.log(res);
-        proxy.$modal.msgSuccess("保存成功!");
-        visible.value = false;
-
-        getList.value();
-      })
-      .catch((err) => {
-        proxy.$modal.$modalMsgError(err);
-        console.log(err);
-      });
+        const file = {};
+        file.fileName = res.newFileName;
+        file.url = res.url;
+        file.originalFileName = res.originalFilename;
+        file.fileUrl = res.fileName;
+        files.value.push(file);
+        file.fileType = param.type;
+        file.fileSize = param.size;
+        emptyForm.value.evidenceFile = file.fileUrl;
+      }
+    });
   }
-}
 
-function uploadextFile(param) {
-  const formData = new FormData();
-  formData.append("file", param.file);
-  uploadFile(formData).then((res) => {
+  function uploadSuccess(res, field) {
     if (res.code === 200) {
-      console.log(res);
-      const file = {};
-      file.fileType =
-        res.newFileName.split(".")[res.newFileName.split(".").length - 1];
-      file.fileName = res.newFileName;
-      file.fileUrl = res.fileName;
-      file.rawFileName = res.originalFilename;
-      file.fileSize = param.file.size;
-      file.tenantId = tenantId.value;
-      emptyForm.value.reportFile = file.fileUrl;
-      reportFiles.value.push(file);
-      console.log("文件", reportFiles.value);
-    }
-  });
-}
+      form[field] = res.data.fileUrl;
+    } else proxy.$modal.msg.error("文件上传失败");
+  }
 
-/** 文件上传 */
-function upload(param) {
-  const formData = new FormData();
-  formData.append("file", param);
-  uploadFile(formData).then((res) => {
-    if (res.code === 200) {
-      console.log(res);
-      const file = {};
-      file.fileName = res.newFileName;
-      file.url = res.url;
-      file.originalFileName = res.originalFilename;
-      file.fileUrl = res.fileName;
-      files.value.push(file);
-      file.fileType = param.type;
-      file.fileSize = param.size;
-      emptyForm.value.evidenceFile = file.fileUrl;
-    }
-  });
-}
+  function reset() {
+    emptyForm.value = {
+      id: null,
+      originalFileName: "",
+      fileName: "",
+      financialReportTaxId: null,
+      companyId: null,
+      year: null,
+      month: null,
+      taxType: null,
+      isZero: null,
+      valueAddedTax: 0,
+      cityConstructTax: 0,
+      additionsTaxOfEducation: 0,
+      ladditionsTaxOfEducation: 0,
+      individualIncomeTax: 0,
+      businessIncomeTax: 0,
+      stampTax: 0,
+      culturalConstructTax: 0,
+      excise: 0,
+      sumTax: 0,
+      previousAnnualLosses: null,
+      status: null,
+      content: null,
+      verifyContent: null,
+      createTime: null,
+      creatorId: null,
+      updateTime: null,
+      updaterId: null,
+      deleted: null,
+      version: null,
+      evidenceFile: null,
+      reportFile: null,
+      verifierId: null,
+      files: [],
+      reportFiles: [],
+    };
+    handleDelFile();
+  }
 
-function uploadSuccess(res, field) {
-  if (res.code === 200) {
-    form[field] = res.data.fileUrl;
-  } else proxy.$modal.msg.error("文件上传失败");
-}
+  /** 关闭 */
+  function close() {
+    visible.value = false;
+    reset();
+  }
 
-function reset() {
-  emptyForm.value = {
-    id: null,
-    originalFileName: "",
-    fileName: "",
-    financialReportTaxId: null,
-    companyId: null,
-    year: null,
-    month: null,
-    taxType: null,
-    isZero: null,
-    valueAddedTax: 0,
-    cityConstructTax: 0,
-    additionsTaxOfEducation: 0,
-    ladditionsTaxOfEducation: 0,
-    individualIncomeTax: 0,
-    businessIncomeTax: 0,
-    stampTax: 0,
-    culturalConstructTax: 0,
-    excise: 0,
-    sumTax: 0,
-    previousAnnualLosses: null,
-    status: null,
-    content: null,
-    verifyContent: null,
-    createTime: null,
-    creatorId: null,
-    updateTime: null,
-    updaterId: null,
-    deleted: null,
-    version: null,
-    evidenceFile: null,
-    reportFile: null,
-    verifierId: null,
-    files: [],
-    reportFiles: [],
-  };
-  handleDelFile();
-}
-
-/** 关闭 */
-function close() {
-  visible.value = false;
-  reset();
-}
-
-function openEvidenceFile() {
-  window.open(`${baseUrl}${emptyForm.value.evidenceFile}`);
-}
-
-// 暴露给父组件的方法
-defineExpose({
-  open,
-});
+  function openEvidenceFile() {
+    window.open(`${baseUrl}${emptyForm.value.evidenceFile}`);
+  }
+
+  // 暴露给父组件的方法
+  defineExpose({
+    open,
+  });
 </script>
 
 <style scoped>
-
-.delete-button {
+  .delete-button {
     margin-left: 20px;
     cursor: pointer;
   }

+ 372 - 429
src/views/business/production/financialReportTaxIsZero/FormDialog.vue

@@ -1,62 +1,50 @@
 <template>
   <!-- 添加或修改菜单对话框 -->
-  <el-dialog
-    title="报税信息"
-    v-model="visible"
-    width="800px"
-    append-to-body
-    draggable
-    :close-on-click-modal="false"
-    @close="close"
-  >
-    <div>
-      <div style="padding: 8px 24px 16px 24px">
-        <el-form size="small" label-width="130px">
-          <el-row :gutter="30">
-            <el-col :span="12">
-              <el-form-item label="客户名称">
-                <div>{{ currentMember }}</div>
-              </el-form-item>
-            </el-col>
-
-            <el-col :span="12">
-              <el-form-item label="所属月份">
-                <div>{{ year }}-{{ month }}</div>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-divider />
-            </el-col>
-            <el-col :span="12">
-              <el-form-item label="备注">
-                <el-input
-                  v-if="!isView"
-                  type="textarea"
-                  rows="2"
-                  show-word-limit
-                  maxlength="200"
-                  v-model="emptyForm.content"
-                />
-                <span v-else>{{ emptyForm.content }}</span>
-              </el-form-item>
-            </el-col>
-
-            <el-col :span="24">
-              <div class="details-btns-container">
-                <el-form-item label="凭证文件" prop="evidenceFile" required>
-                  <dragUpload :accept="accept" style="width:100%" @file="upload"
-                  v-if="emptyForm.evidenceFile == null || emptyForm.evidenceFile == ''" />
-                <img v-else style="height: 148px; width: 148px" :src="`${baseUrl}/${emptyForm.evidenceFile}`"
-                  class="avatar" @click="openEvidience('evidenceFile')" />
-                  <div v-if="!isView">
-                    <el-icon :size="20" v-if="emptyForm.evidenceFile !== '' ||emptyForm.evidenceFile == null " @click="emptyForm.evidenceFile = ''"
-                    class="delete-button" >
-                    <Delete />
-                  </el-icon>
-                  </div>
-                  <div v-else>
-                  </div>
-                  <!-- <el-upload
+  <el-dialog title="报税信息" v-model="visible" width="800px" append-to-body draggable :close-on-click-modal="false"
+    @close="close">
+    <div v-loading="loading">
+      <div>
+        <div style="padding: 8px 24px 16px 24px">
+          <el-form size="small" label-width="130px">
+            <el-row :gutter="30">
+              <el-col :span="12">
+                <el-form-item label="客户名称">
+                  <div>{{ currentMember }}</div>
+                </el-form-item>
+              </el-col>
+
+              <el-col :span="12">
+                <el-form-item label="所属月份">
+                  <div>{{ year }}-{{ month }}</div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="24">
+                <el-divider />
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="备注">
+                  <el-input v-if="!isView" type="textarea" rows="2" show-word-limit maxlength="200"
+                    v-model="emptyForm.content" />
+                  <span v-else>{{ emptyForm.content }}</span>
+                </el-form-item>
+              </el-col>
+
+              <el-col :span="24">
+                <div class="details-btns-container">
+                  <el-form-item label="凭证文件" prop="evidenceFile" required>
+                    <dragUpload :accept="accept" style="width:100%" @file="upload"
+                      v-if="emptyForm.evidenceFile == null || emptyForm.evidenceFile == ''" />
+                    <img v-else style="height: 148px; width: 148px" :src="`${baseUrl}/${emptyForm.evidenceFile}`"
+                      class="avatar" @click="openEvidience('evidenceFile')" />
+                    <div v-if="!isView">
+                      <el-icon :size="20" v-if="emptyForm.evidenceFile !== '' ||emptyForm.evidenceFile == null "
+                        @click="emptyForm.evidenceFile = ''" class="delete-button">
+                        <Delete />
+                      </el-icon>
+                    </div>
+                    <div v-else>
+                    </div>
+                    <!-- <el-upload
                     v-if="!isView"
                     action="#"
                     :http-request="upload"
@@ -87,401 +75,356 @@
                     class="avatar"
                     @click="openEvidience('evidenceFile')"
                   /> -->
-                </el-form-item>
-              </div>
-            </el-col>
-
-            <el-col :span="24" style="padding: 15px 15px 16px 15px">
-              <div class="details-btns-container">
-                <el-form-item label="报表文件" prop="reportFile" >
-                  <el-upload
-                    v-if="!isView"
-                    action="#"
-                    :http-request="uploadextFile"
-                    :with-credentials="true"
-                    :show-file-list="false"
-                    multiple
-                  >
-                    <el-button size="small" type="primary" icon="Upload"
-                      >点击上传</el-button
-                    >
-                  </el-upload>
-                </el-form-item>
-              </div>
-              <div class="details-body" style="height: 100px">
-                <el-table
-                  ref="filesTable"
-                  :data="reportFiles"
-                  size="small"
-                  height="100%"
-                  border
-                  header-row-class-name="list-header-row"
-                >
-                  <el-table-column
-                    label="文件名"
-                    prop="fileName"
-                    align="center"
-                  >
-                    <template #default="scope">
-                      <el-link
-                        :href="`${baseUrl}${scope.row.fileUrl}`"
-                        :underline="false"
-                        target="_blank"
-                        type="primary"
-                      >
-                        {{ scope.row.fileName }}
-                      </el-link>
-                    </template>
-                  </el-table-column>
-                  <el-table-column
-                    label="文件类型"
-                    prop="fileType"
-                    width="100"
-                    align="center"
-                  >
-                    <template #default="scope">
-                      <el-link :underline="false" target="_blank">
-                        {{ scope.row.fileType }}
-                      </el-link>
-                    </template>
-                  </el-table-column>
-                  <el-table-column
-                    v-if="!isView"
-                    label="操作"
-                    width="50"
-                    align="center"
-                  >
-                    <template #default="scope">
-                      <el-button
-                        size="small"
-                        link
-                        type="danger"
-                        @click="handleDelFile(scope.$index)"
-                        >删除</el-button
-                      >
-                    </template>
-                  </el-table-column>
-                </el-table>
-              </div>
-            </el-col>
-          </el-row>
-        </el-form>
+                  </el-form-item>
+                </div>
+              </el-col>
+
+              <el-col :span="24" style="padding: 15px 15px 16px 15px">
+                <div class="details-btns-container">
+                  <el-form-item label="报表文件" prop="reportFile">
+                    <el-upload v-if="!isView" action="#" :http-request="uploadextFile" :with-credentials="true"
+                      :show-file-list="false" multiple>
+                      <el-button size="small" type="primary" icon="Upload">点击上传</el-button>
+                    </el-upload>
+                  </el-form-item>
+                </div>
+                <div class="details-body" style="height: 100px">
+                  <el-table ref="filesTable" :data="reportFiles" size="small" height="100%" border
+                    header-row-class-name="list-header-row">
+                    <el-table-column label="文件名" prop="fileName" align="center">
+                      <template #default="scope">
+                        <el-link :href="`${baseUrl}${scope.row.fileUrl}`" :underline="false" target="_blank"
+                          type="primary">
+                          {{ scope.row.fileName }}
+                        </el-link>
+                      </template>
+                    </el-table-column>
+                    <el-table-column label="文件类型" prop="fileType" width="100" align="center">
+                      <template #default="scope">
+                        <el-link :underline="false" target="_blank">
+                          {{ scope.row.fileType }}
+                        </el-link>
+                      </template>
+                    </el-table-column>
+                    <el-table-column v-if="!isView" label="操作" width="50" align="center">
+                      <template #default="scope">
+                        <el-button size="small" link type="danger" @click="handleDelFile(scope.$index)">删除</el-button>
+                      </template>
+                    </el-table-column>
+                  </el-table>
+                </div>
+              </el-col>
+            </el-row>
+          </el-form>
+        </div>
+      </div>
+      <div class="form-btns-container" v-if="!isView" style="height: 40px">
+        <el-button size="small" icon="close" style="float: right; margin-left: 12px; margin-right: 12px"
+          @click="close">取消
+        </el-button>
+        <el-button size="small" type="primary" style="float: right" icon="Finished" @click="handleSave">
+          保存</el-button>
       </div>
-    </div>
-    <div class="form-btns-container" v-if="!isView" style="height: 40px">
-      <el-button
-        size="small"
-        icon="close"
-        style="float: right; margin-left: 12px; margin-right: 12px"
-        @click="close"
-        >取消
-      </el-button>
-      <el-button
-        size="small"
-        type="primary"
-        style="float: right"
-        icon="Finished"
-        @click="handleSave"
-      >
-        保存</el-button
-      >
     </div>
   </el-dialog>
 </template>
 
 
 <script setup>
-const { proxy } = getCurrentInstance();
-/** 父组件传参 */
-const props = defineProps({
-  getList: {
-    type: Function,
-    default: () => {},
-  },
-});
-const { getList } = toRefs(props);
-/** 字典数组区 */
-const { develop_type } = proxy.useDict("develop_type");
-/** 表单抽屉 页变量 */
-const title = ref("");
-const loading = ref(false);
-const multiple = ref(true);
-const visible = ref(false);
-const editStatus = ref(false);
-const isFullscreen = ref(false);
-const addDetailNum = ref(1);
-const isAdd = ref(false);
-const isView = ref(false);
-const mainInfo = ref({});
-const monthInfo = ref({});
-const currentMember = ref({});
-const year = ref({});
-const month = ref({});
-const cities = ref([]);
-const districts = ref([]);
-const files = ref([]);
-const reportFiles = ref([]);
-const tenantId = ref(0);
-
-const sourceCategories = ref([]);
-
-const addType = ref(1);
-
-const emptyForm = ref({
-  id: null,
-  originalFileName: "",
-  fileName: "",
-  files: [],
-  reportFiles: [],
-});
-
-const data = reactive({
-  form: {},
-});
-
-watch(addType, (value) => {
-  switch (value) {
-    case "1":
-      break;
-    case "2":
-      break;
-    default:
-      break;
-  }
-});
-
-import {
-  saveDetail,
-  updateTax,
-  getTax,
-} from "@/api/business/production/taxIsZero";
-import { uploadFile } from "@/api/tool/file";
-// import { de } from "element-plus/es/locale";
-import { ref } from "vue";
+  const { proxy } = getCurrentInstance();
+  /** 父组件传参 */
+  const props = defineProps({
+    getList: {
+      type: Function,
+      default: () => { },
+    },
+  });
+  const { getList } = toRefs(props);
+  /** 字典数组区 */
+  const { develop_type } = proxy.useDict("develop_type");
+  /** 表单抽屉 页变量 */
+  const title = ref("");
+  const loading = ref(false);
+  const multiple = ref(true);
+  const visible = ref(false);
+  const editStatus = ref(false);
+  const isFullscreen = ref(false);
+  const addDetailNum = ref(1);
+  const isAdd = ref(false);
+  const isView = ref(false);
+  const mainInfo = ref({});
+  const monthInfo = ref({});
+  const currentMember = ref({});
+  const year = ref({});
+  const month = ref({});
+  const cities = ref([]);
+  const districts = ref([]);
+  const files = ref([]);
+  const reportFiles = ref([]);
+  const tenantId = ref(0);
+  const sourceCategories = ref([]);
+
+  const addType = ref(1);
+
+  const emptyForm = ref({
+    id: null,
+    originalFileName: "",
+    fileName: "",
+    files: [],
+    reportFiles: [],
+  });
+
+  const data = reactive({
+    form: {},
+  });
+
+  watch(addType, (value) => {
+    switch (value) {
+      case "1":
+        break;
+      case "2":
+        break;
+      default:
+        break;
+    }
+  });
+
+  import {
+    saveDetail,
+    updateTax,
+    getTax,
+  } from "@/api/business/production/taxIsZero";
+  import { uploadFile } from "@/api/tool/file";
+  // import { de } from "element-plus/es/locale";
+  import { ref } from "vue";
   import dragUpload from "@/components/dragUpload"
-const baseUrl = import.meta.env.VITE_APP_BASE_API;
-
-const { form, rules } = toRefs(data);
-
-const followQuery = ref({});
-
-/***********************  表单页方法 ****************************/
-
-/** 抽屉打开 */
-function open(id, mainRow, monthItem) {
-  console.log("打开抽屉", id);
-  visible.value = true;
-  mainInfo.value = mainRow;
-  monthInfo.value = monthItem;
-  tenantId.value = mainRow.tenantId;
-  console.log("打开form", mainRow);
-  if (id == 0) {
-    isAdd.value = true;
-    console.log("新增");
-    isView.value = false;
-  } else if (id == null) {
-    isView.value = true;
-    emptyForm.value = mainRow.detail;
-    console.log("查看", emptyForm);
-  } else {
-    emptyForm.value = mainRow.detail;
-    console.log("修改");
-    isView.value = false;
-    isAdd.value = false;
+  const baseUrl = import.meta.env.VITE_APP_BASE_API;
+
+  const { form, rules } = toRefs(data);
+
+  const followQuery = ref({});
+
+  /***********************  表单页方法 ****************************/
+
+  /** 抽屉打开 */
+  function open(id, mainRow, monthItem) {
+    console.log("打开抽屉", id);
+    visible.value = true;
+    mainInfo.value = mainRow;
+    monthInfo.value = monthItem;
+    tenantId.value = mainRow.tenantId;
+    console.log("打开form", mainRow);
+    if (id == 0) {
+      isAdd.value = true;
+      console.log("新增");
+      isView.value = false;
+    } else if (id == null) {
+      isView.value = true;
+      emptyForm.value = mainRow.detail;
+      console.log("查看", emptyForm);
+    } else {
+      emptyForm.value = mainRow.detail;
+      console.log("修改");
+      isView.value = false;
+      isAdd.value = false;
+    }
+
+    getTaxId(mainRow, id);
+  }
+
+  function getTaxId(mainRow, id) {
+    console.log("获取", mainRow);
+    if (mainRow.detail != null) {
+      getTax(mainRow.detail.id).then((res) => {
+        if (res.code === 200) {
+          console.log("查询成功");
+          emptyForm.value = res.data;
+          reportFiles.value = emptyForm.value.reportFiles;
+          loadData(id);
+        }
+      });
+    } else {
+      loadData(id);
+    }
   }
 
-  getTaxId(mainRow, id);
-}
+  function openEvidience() {
+    window.open(`${baseUrl}${emptyForm.value.evidenceFile}`);
+  }
 
-function getTaxId(mainRow, id) {
-  console.log("获取", mainRow);
-  if (mainRow.detail != null) {
-    getTax(mainRow.detail.id).then((res) => {
-      if (res.code === 200) {
-        console.log("查询成功");
-        emptyForm.value = res.data;
-        reportFiles.value = emptyForm.value.reportFiles;
-        loadData(id);
+  function loadData(id) {
+    month.value = monthInfo.value.month;
+    currentMember.value = mainInfo.value.companyName;
+    emptyForm.value.workOrderId = mainInfo.value.workOrderId;
+    year.value = monthInfo.value.year;
+    emptyForm.value.financialIndividualIncomeTaxId = mainInfo.value.id;
+    emptyForm.value.isZero = mainInfo.value.isZero;
+    emptyForm.value.financialReportTaxId = mainInfo.value.id;
+    emptyForm.value.workOrderId = mainInfo.value.workOrderId;
+    if (!isAdd.value) {
+      if (mainInfo.value.detail != null) {
+        emptyForm.value.evidenceFile = mainInfo.value.detail.evidenceFile;
       }
-    });
-  } else {
-    loadData(id);
+    }
+  }
+
+  /** 计算税额 */
+  function taxChangeHandler() {
+    let amount = 0;
+
+    amount +=
+      emptyForm.value.lAdditionsTaxOfEducation == null
+        ? 0
+        : emptyForm.value.lAdditionsTaxOfEducation;
+    amount +=
+      emptyForm.value.valueAddedTax == null ? 0 : emptyForm.value.valueAddedTax;
+    amount +=
+      emptyForm.value.cityConstructTax == null
+        ? 0
+        : emptyForm.value.cityConstructTax;
+    amount +=
+      emptyForm.value.additionsTaxOfEducation == null
+        ? 0
+        : emptyForm.value.additionsTaxOfEducation;
+    amount +=
+      emptyForm.value.businessIncomeTax == null
+        ? 0
+        : emptyForm.value.businessIncomeTax;
+    amount += emptyForm.value.stampTax == null ? 0 : emptyForm.value.stampTax;
+    amount +=
+      emptyForm.value.culturalConstructTax == null
+        ? 0
+        : emptyForm.value.culturalConstructTax;
+    amount += emptyForm.value.excise == null ? 0 : emptyForm.value.excise;
+    emptyForm.value.sumTax = amount;
   }
-}
-
-function openEvidience() {
-  window.open(`${baseUrl}${emptyForm.value.evidenceFile}`);
-}
-
-function loadData(id) {
-  month.value = monthInfo.value.month;
-  currentMember.value = mainInfo.value.companyName;
-  emptyForm.value.workOrderId = mainInfo.value.workOrderId;
-  year.value = monthInfo.value.year;
-  emptyForm.value.financialIndividualIncomeTaxId = mainInfo.value.id;
-  emptyForm.value.isZero = mainInfo.value.isZero;
-  emptyForm.value.financialReportTaxId = mainInfo.value.id;
-  emptyForm.value.workOrderId = mainInfo.value.workOrderId;
-  if (!isAdd.value) {
-    if (mainInfo.value.detail != null) {
-      emptyForm.value.evidenceFile = mainInfo.value.detail.evidenceFile;
+
+  function handleDelFile(index) {
+    reportFiles.value.splice(index, 1);
+  }
+  /**  保存 */
+  function handleSave() {
+    emptyForm.value.reportFiles = reportFiles;
+    if (
+      emptyForm.value.evidenceFile == null ||
+      emptyForm.value.evidenceFile === ""
+    ) {
+      proxy.$message.error("请上传凭证");
+      return;
+    }
+
+    emptyForm.value.files = files.value;
+    emptyForm.value.year = year.value;
+    emptyForm.value.month = month.value;
+
+    console.log("monthInfo", monthInfo.value);
+    console.log("month", month.value);
+    emptyForm.value.status = 3;
+    console.log("保存", emptyForm.value);
+    loading.value = true
+    if (isAdd.value) {
+      emptyForm.value.companyId = mainInfo.value.companyId;
+      console.log("新增", emptyForm.value);
+      saveDetail(emptyForm.value)
+        .then((res) => {
+          proxy.$modal.msgSuccess("保存成功!");
+          visible.value = false;
+
+          getList.value();
+        })
+        .catch((err) => {
+          proxy.$modal.$modalMsgError(err);
+          console.log(err);
+        }).finally(() => {
+          loading.value = false
+        });;
+      getList.value();
+    } else {
+      mainInfo.value.detail.status = 3;
+      saveDetail(emptyForm.value)
+        .then((res) => {
+          console.log(res);
+          proxy.$modal.msgSuccess("保存成功!");
+          visible.value = false;
+
+          getList.value();
+        })
+        .catch((err) => {
+          proxy.$modal.$modalMsgError(err);
+          console.log(err);
+        }).finally(() => {
+          loading.value = false
+        });;
     }
   }
-}
-
-/** 计算税额 */
-function taxChangeHandler() {
-  let amount = 0;
-
-  amount +=
-    emptyForm.value.lAdditionsTaxOfEducation == null
-      ? 0
-      : emptyForm.value.lAdditionsTaxOfEducation;
-  amount +=
-    emptyForm.value.valueAddedTax == null ? 0 : emptyForm.value.valueAddedTax;
-  amount +=
-    emptyForm.value.cityConstructTax == null
-      ? 0
-      : emptyForm.value.cityConstructTax;
-  amount +=
-    emptyForm.value.additionsTaxOfEducation == null
-      ? 0
-      : emptyForm.value.additionsTaxOfEducation;
-  amount +=
-    emptyForm.value.businessIncomeTax == null
-      ? 0
-      : emptyForm.value.businessIncomeTax;
-  amount += emptyForm.value.stampTax == null ? 0 : emptyForm.value.stampTax;
-  amount +=
-    emptyForm.value.culturalConstructTax == null
-      ? 0
-      : emptyForm.value.culturalConstructTax;
-  amount += emptyForm.value.excise == null ? 0 : emptyForm.value.excise;
-  emptyForm.value.sumTax = amount;
-}
-
-function handleDelFile(index) {
-  reportFiles.value.splice(index, 1);
-}
-/**  保存 */
-function handleSave() {
-  emptyForm.value.reportFiles = reportFiles;
-  if (
-    emptyForm.value.evidenceFile == null ||
-    emptyForm.value.evidenceFile === ""
-  ) {
-    proxy.$message.error("请上传凭证");
-    return;
+
+  function uploadextFile(param) {
+    const formData = new FormData();
+    formData.append("file", param.file);
+    uploadFile(formData).then((res) => {
+      if (res.code === 200) {
+        console.log(res);
+        const file = {};
+        file.fileType =
+          res.newFileName.split(".")[res.newFileName.split(".").length - 1];
+        file.fileName = res.newFileName;
+        file.fileUrl = res.fileName;
+        file.rawFileName = res.originalFilename;
+        // file.fileType = param.file.type;
+        file.fileSize = param.file.size;
+        file.tenantId = tenantId.value;
+        emptyForm.value.reportFile = file.fileUrl;
+        reportFiles.value.push(file);
+        console.log("文件", reportFiles.value);
+      }
+    });
   }
 
-  emptyForm.value.files = files.value;
-  emptyForm.value.year = year.value;
-  emptyForm.value.month = month.value;
-
-  console.log("monthInfo", monthInfo.value);
-  console.log("month", month.value);
-  emptyForm.value.status = 3;
-  console.log("保存", emptyForm.value);
-
-  if (isAdd.value) {
-    emptyForm.value.companyId = mainInfo.value.companyId;
-    console.log("新增", emptyForm.value);
-    saveDetail(emptyForm.value)
-      .then((res) => {
-        proxy.$modal.msgSuccess("保存成功!");
-        visible.value = false;
-
-        getList.value();
-      })
-      .catch((err) => {
-        proxy.$modal.$modalMsgError(err);
-        console.log(err);
-      });
-    getList.value();
-  } else {
-    mainInfo.value.detail.status = 3;
-    saveDetail(emptyForm.value)
-      .then((res) => {
+  /** 文件上传 */
+  function upload(param) {
+    const formData = new FormData();
+    formData.append("file", param);
+    uploadFile(formData).then((res) => {
+      if (res.code === 200) {
         console.log(res);
-        proxy.$modal.msgSuccess("保存成功!");
-        visible.value = false;
-
-        getList.value();
-      })
-      .catch((err) => {
-        proxy.$modal.$modalMsgError(err);
-        console.log(err);
-      });
+        const file = {};
+        file.fileName = res.newFileName;
+        file.url = res.url;
+        file.originalFileName = res.originalFilename;
+        file.fileUrl = res.fileName;
+        files.value.push(file);
+        file.fileType = param.type;
+        file.fileSize = param.size;
+        emptyForm.value.evidenceFile = file.fileUrl;
+      }
+    });
   }
-}
 
-function uploadextFile(param) {
-  const formData = new FormData();
-  formData.append("file", param.file);
-  uploadFile(formData).then((res) => {
+  function uploadSuccess(res, field) {
     if (res.code === 200) {
-      console.log(res);
-      const file = {};
-      file.fileType =
-        res.newFileName.split(".")[res.newFileName.split(".").length - 1];
-      file.fileName = res.newFileName;
-      file.fileUrl = res.fileName;
-      file.rawFileName = res.originalFilename;
-      // file.fileType = param.file.type;
-      file.fileSize = param.file.size;
-      file.tenantId = tenantId.value;
-      emptyForm.value.reportFile = file.fileUrl;
-      reportFiles.value.push(file);
-      console.log("文件", reportFiles.value);
-    }
-  });
-}
+      form[field] = res.data.fileUrl;
+    } else proxy.$modal.msg.error("文件上传失败");
+  }
 
-/** 文件上传 */
-function upload(param) {
-  const formData = new FormData();
-  formData.append("file", param);
-  uploadFile(formData).then((res) => {
-    if (res.code === 200) {
-      console.log(res);
-      const file = {};
-      file.fileName = res.newFileName;
-      file.url = res.url;
-      file.originalFileName = res.originalFilename;
-      file.fileUrl = res.fileName;
-      files.value.push(file);
-      file.fileType = param.type;
-      file.fileSize = param.size;
-      emptyForm.value.evidenceFile = file.fileUrl;
-    }
+  function reset() {
+    emptyForm.value = {};
+    handleDelFile();
+  }
+
+  /** 关闭 */
+  function close() {
+    visible.value = false;
+    reset();
+  }
+
+  function openEvidenceFile() {
+    window.open(`${baseUrl}${emptyForm.value.evidenceFile}`);
+  }
+
+  // 暴露给父组件的方法
+  defineExpose({
+    open,
   });
-}
-
-function uploadSuccess(res, field) {
-  if (res.code === 200) {
-    form[field] = res.data.fileUrl;
-  } else proxy.$modal.msg.error("文件上传失败");
-}
-
-function reset() {
-  emptyForm.value = {};
-  handleDelFile();
-}
-
-/** 关闭 */
-function close() {
-  visible.value = false;
-  reset();
-}
-
-function openEvidenceFile() {
-  window.open(`${baseUrl}${emptyForm.value.evidenceFile}`);
-}
-
-// 暴露给父组件的方法
-defineExpose({
-  open,
-});
 </script>
 
 <style scoped>

+ 14 - 3
src/views/business/production/keepAccount/form.vue

@@ -8,6 +8,7 @@
     @close="close"
     :close-on-click-modal = "false"
   >
+  <div v-loading="loading">
     <!-- 功能按钮 -->
     <div style="padding: 8px 24px 16px 24px">
       <el-form size="small" label-width="140px" v-model="form">
@@ -143,6 +144,7 @@
         >保存
       </el-button>
     </div>
+  </div>
   </el-dialog>
 </template>
 <script setup>
@@ -224,7 +226,7 @@ const employeeEmptyData = {
 };
 
 const form = ref({});
-
+const loading = ref(false)
 const emptyForm = {
   details: [],
 };
@@ -236,12 +238,15 @@ function open(detail) {
 }
 
 function loadData() {
+  loading.value = true
   Promise.all([getDetail(form.value)]).then((res) => {
     form.value = { ...proxy.deepClone(emptyForm), ...res[0].data };
     if (form.value.status === 3) {
       proxy.$modal.msgError("该收票信息已提交待审核");
       close();
     }
+  }).finally(() => {
+    loading.value = false
   });
 }
 
@@ -361,19 +366,25 @@ function handleSave() {
       const saveValue = proxy.deepClone(form.value);
       saveValue.status = 3;
       if (saveValue.id == null) {
+        loading.value = true
         saveDetail(saveValue).then((res) => {
           proxy.$modal.msgSuccess("保存成功");
           reset();
           close();
           getList.value();
-        });
+        }).finally(() => {
+          loading.value = false
+        });;
       } else {
+        loading.value = true
         updateDetail(saveValue).then((res) => {
           proxy.$modal.msgSuccess("保存成功");
           reset();
           close();
           getList.value();
-        });
+        }).finally(() => {
+          loading.value = false
+        });;
       }
     })
     .catch((err) => {

+ 15 - 4
src/views/business/production/receiveTicket/form.vue

@@ -8,6 +8,7 @@
     @close="close"
     :close-on-click-modal = "false"
   >
+  <div v-loading="loading">
     <!-- <div slot="title" class="dialog-title-container">
       <span class="title-label"><i class="el-icon-document" /> 工资信息</span>
       <i class="el-icon-close" @click="close" />
@@ -274,6 +275,7 @@
     </div>
     <!-- <feedback-dialog ref="feedbackDialogView" :parent="this" />
     <print-dialog ref="printDialog" :parent="this" /> -->
+    </div>
   </el-dialog>
 </template>
 <script setup>
@@ -354,7 +356,7 @@ const employeeEmptyData = {
   details: [],
   editStatus: true,
 };
-
+const loading = ref(false)
 const form = ref({});
 
 const emptyForm = {
@@ -368,6 +370,7 @@ function open(detail) {
 }
 
 function loadData() {
+  loading.value = true
   Promise.all([
     getDetail(form.value),
     getSalaryDetail({
@@ -382,7 +385,9 @@ function loadData() {
       proxy.$modal.msgError("该收票信息已提交待审核");
       close();
     }
-  });
+  }).finally(() => {
+    loading.value = false
+  });;
 }
 
 function close() {
@@ -507,19 +512,25 @@ function handleSave() {
       const saveValue = proxy.deepClone(form.value);
       saveValue.status = form.value.saveStatus === 1 ? 1 : 2;
       if (saveValue.id == null) {
+        loading.value = true
         saveDetail(saveValue).then((res) => {
           proxy.$modal.msgSuccess("保存成功");
           reset();
           close();
           getList.value();
-        });
+        }).finally(() => {
+          loading.value = false
+        });;
       } else {
+        loading.value = true
         updateDetail(saveValue).then((res) => {
           proxy.$modal.msgSuccess("保存成功");
           reset();
           close();
           getList.value();
-        });
+        }).finally(() => {
+          loading.value = false
+        });;
       }
     })
     .catch((err) => {

+ 251 - 245
src/views/business/production/salary/form.vue

@@ -103,8 +103,8 @@
                     <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>
@@ -149,8 +149,8 @@
                     <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>
@@ -214,269 +214,275 @@
   </el-dialog>
 </template>
 <script setup>
-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: () => { },
-  },
-});
+  import {
+    getDetail,
+    saveDetail,
+    updateDetail, delSalarys,
+  } 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 { getList } = toRefs(props);
-const total = ref(0);
-const loading = ref(false)
-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 { getList } = toRefs(props);
+  const total = ref(0);
+  const loading = ref(false)
+  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({});
+  const companyId = ref(null)
+  const emptyForm = {
+    details: [],
+  };
 
-function open(detail) {
-  visible.value = true;
-  form.value = detail;
-  companyId.value = detail.companyId
-  loadData();
-}
+  function open(detail) {
+    visible.value = true;
+    form.value = detail;
+    companyId.value = detail.companyId
+    loadData();
+  }
 
-function loadData() {
-  loading.value = true
-  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;
-        }
+  function loadData() {
+    loading.value = true
+    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();
-  }).finally(() => {
-    loading.value = false
-  });
-}
-
-function close() {
-  visible.value = false;
-  reset();
-}
+      if (form.value.status === 2 || form.value.status === 3) {
+        proxy.$modal.msgError("该工资信息已提交待审核");
+        close();
+      }
+      computeTotal();
+    }).finally(() => {
+      loading.value = false
+    });
+  }
 
-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(() => {
+        console.log(selections.value);
+        let ids = selections.value.map(item => { return item.id })
+        delSalarys(ids).then(() => {
+          proxy.$modal.msg("删除成功");
+      
+      })
+        form.value.details = form.value.details.filter(
+          (item) => selections.value.indexOf(item) === -1
+        );
+      })
+      .catch(() => {
+        proxy.$modal.msg("已取消删除");
+      });
+  }
+  //导入按钮操作
+  function handleImport() {
+    importExcelDialogRef.value.open();
+  }
 
-  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;
+      }
+      const values = data.map((item) => Number(item[column.property]));
 
-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;
-    }
-  }
-  proxy.$modal
-    .confirm("确认保存么?")
-    .then(() => {
-      const saveValue = proxy.deepClone(form.value);
-      saveValue.status = status;
-      if (saveValue.id == null) {
-        loading.value = true
-        saveDetail(saveValue).then((res) => {
-          proxy.$modal.msgSuccess("保存成功");
-          reset();
-          close();
-          getList.value();
-        }).finally(() => {
-          loading.value = false
-        });
+      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 {
-        loading.value = true
-        updateDetail(saveValue).then((res) => {
-          proxy.$modal.msgSuccess("保存成功");
-          reset();
-          close();
-          getList.value();
-        }).finally(() => {
-          loading.value = false
-        });
+        sums[index] = "";
       }
-    })
-    .catch((err) => {
-      proxy.$modal.msg("取消保存");
     });
-}
+    return sums;
+  }
 
-// 暴露给父组件的方法
-defineExpose({
-  open,
-});
+  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;
+      }
+    }
+    proxy.$modal
+      .confirm("确认保存么?")
+      .then(() => {
+        const saveValue = proxy.deepClone(form.value);
+        saveValue.status = status;
+        if (saveValue.id == null) {
+          loading.value = true
+          saveDetail(saveValue).then((res) => {
+            proxy.$modal.msgSuccess("保存成功");
+            reset();
+            close();
+            getList.value();
+          }).finally(() => {
+            loading.value = false
+          });
+        } else {
+          loading.value = true
+          updateDetail(saveValue).then((res) => {
+            proxy.$modal.msgSuccess("保存成功");
+            reset();
+            close();
+            getList.value();
+          }).finally(() => {
+            loading.value = false
+          });
+        }
+      })
+      .catch((err) => {
+        proxy.$modal.msg("取消保存");
+      });
+  }
+
+  // 暴露给父组件的方法
+  defineExpose({
+    open,
+  });
 </script>
 
 <style lang="scss" scoped>
-.button-class {
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
+  .button-class {
+    margin-top: 10px;
+    margin-bottom: 10px;
+  }
 </style>

File diff ditekan karena terlalu besar
+ 463 - 651
src/views/business/socialSecurity/confirm/form.vue


Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini