From eb9a06ed1a51ae12b32c498896d1f75f6d3477ed Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期二, 01 四月 2025 16:08:31 +0800
Subject: [PATCH] fix: bug

---
 src/views/Home/Home.vue |  292 ++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 172 insertions(+), 120 deletions(-)

diff --git a/src/views/Home/Home.vue b/src/views/Home/Home.vue
index 6f780af..0512c24 100644
--- a/src/views/Home/Home.vue
+++ b/src/views/Home/Home.vue
@@ -17,16 +17,7 @@
           </QueryFilterItem>
           <QueryFilterItem>
             <FieldRadio
-              v-model="extraParamState.onJobFlag"
-              :value-enum="OnJobFlagEnumText"
-              buttonStyle
-              showAllBtn
-              @change="getList()"
-            />
-          </QueryFilterItem>
-          <QueryFilterItem>
-            <FieldRadio
-              v-model="extraParamState.insuranceType"
+              v-model="extraParamState.insurancePeriod"
               :value-enum="insuranceTypeText"
               buttonStyle
               showAllBtn
@@ -34,8 +25,17 @@
             />
           </QueryFilterItem>
           <QueryFilterItem>
+            <FieldRadio
+              v-model="extraParamState.status"
+              :value-enum="InsurancePolicyStatusEnumText"
+              buttonStyle
+              showAllBtn
+              @change="getList()"
+            />
+          </QueryFilterItem>
+          <QueryFilterItem>
             <SearchInput
-              v-model="extraParamState.keyword"
+              v-model="extraParamState.condition"
               style="width: 260px"
               placeholder="鍗曚綅/淇濆崟鍙�/鍙備繚鏈烘瀯"
               @on-click-search="getList"
@@ -44,23 +44,16 @@
           </QueryFilterItem>
         </template>
         <template #btn>
-          <el-button
-            @click="handleDownload()"
-            icon="Download"
-            type="primary"
-            style="margin-right: 10px"
-            link
+          <el-button @click="handleDownload()" type="primary" style="margin-right: 10px" link
             >妯℃澘涓嬭浇</el-button
           >
 
-          <el-button @click="handleUpload()" icon="Upload" type="primary" style="margin-right: 10px"
+          <el-button @click="handleUpload()" type="primary" style="margin-right: 10px"
             >瀵煎叆</el-button
           >
 
-          <el-button @click="downloadInsureOrder()" type="primary" icon="Download" link
-            >瀵煎嚭淇濆崟鍒楄〃</el-button
-          >
-          <el-button @click="downloadInsurePerson()" icon="Download" type="primary" link
+          <el-button @click="getInsurancePageExport()" type="primary" link>瀵煎嚭淇濆崟鍒楄〃</el-button>
+          <el-button @click="getInsuranceStaffPageExport()" type="primary" link
             >瀵煎嚭鍦ㄤ繚浜哄憳</el-button
           >
         </template>
@@ -92,27 +85,24 @@
   useTable,
   useFormDialog,
   FieldDatePicker,
-  BlFileUpload,
   defineOperationBtns,
   UploadUserFile,
-  XLSXUtils,
   SearchInput,
   FieldRadio,
+  XLSXUtils,
 } from '@bole-core/components';
 import * as insuranceOrderServices from '@/services/api/InsuranceOrder';
 import { Message, OrderInputType, downloadFileByUrl } from '@bole-core/core';
 import { columns } from './constants';
 import UploadInsurePersonDialog from './components/UploadInsurePersonDialog.vue';
 import UploadStampFileDialog from './components/UploadStampFileDialog.vue';
-import { toThousand, format, downloadFile, setOSSLink } from '@/utils';
-import { omit } from 'lodash';
+import { format, downloadFile, setOSSLink, toThousand, convertApi2FormUrl } from '@/utils';
 import { ModelValueType } from 'element-plus';
-import { useQueryClient } from '@tanstack/vue-query';
 import {
   InsuranceOrderTempPath,
-  JYBInsuranceOrderTempPath,
-  OnJobFlagEnumText,
   insuranceTypeText,
+  InsurancePolicyStatusEnumText,
+  InsurancePolicyStatusEnum,
 } from '@/constants';
 import dayjs from 'dayjs';
 import _ from 'lodash';
@@ -124,14 +114,11 @@
 const operationBtns = defineOperationBtns([
   {
     data: {
-      enCode: 'downloadBtn',
-      name: '淇濆崟涓嬭浇',
+      enCode: 'detailBtn',
+      name: '璇︽儏',
     },
     emits: {
-      onClick: (role) => handleDownloadOrderNo(role),
-    },
-    extraProps: {
-      hide: (row: API.InsuranceOrderListOutput) => !row.orderBillFile,
+      onClick: (role) => handleDetail(role),
     },
   },
   {
@@ -142,9 +129,9 @@
     emits: {
       onClick: (role) => handleBatch(role),
     },
-    // extraProps: {
-    //   hide: (row: API.InsuranceOrderListOutput) => !row.orderBillFile,
-    // },
+    extraProps: {
+      hide: (row: API.GetInsurancePageOutput) => row.status !== InsurancePolicyStatusEnum.Effecting,
+    },
   },
   {
     data: {
@@ -155,16 +142,21 @@
       onClick: (role) => handleUploadStampFile(role),
     },
     extraProps: {
-      hide: (row: API.InsuranceOrderListOutput) => !row.orderBillFile,
+      hide: (row: API.GetInsurancePageOutput) =>
+        row.status !== InsurancePolicyStatusEnum.WaitEffect,
     },
   },
   {
     data: {
-      enCode: 'detailBtn',
-      name: '璇︽儏',
+      enCode: 'downloadBtn',
+      name: '淇濆崟涓嬭浇',
     },
     emits: {
-      onClick: (role) => handleDetail(role),
+      onClick: (role) => handleDownloadInsureFile(role),
+    },
+    extraProps: {
+      hide: (row: API.GetInsurancePageOutput) =>
+        row.status === InsurancePolicyStatusEnum.WaitEffect,
     },
   },
 ]).filter(Boolean);
@@ -190,7 +182,7 @@
   async ({ pageIndex, pageSize }, extraParamState) => {
     try {
       let params = createParams(pageIndex, pageSize);
-      let res = await insuranceOrderServices.getInsuranceOrderPage(params, {
+      let res = await insuranceOrderServices.getInsurancePage(params, {
         showLoading: !state.loading,
       });
       return res;
@@ -198,92 +190,123 @@
   },
   {
     defaultExtraParams: {
-      orderInput: [{ property: 'createTime', order: OrderInputType.Desc }],
+      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
       creationDate: [] as unknown as ModelValueType,
-      keyword: '',
-      onJobFlag: '',
-      insuranceType: '',
+      condition: '',
+      status: '' as any as InsurancePolicyStatusEnum,
+      insurancePeriod: '',
     },
     columnsRenderProps: {
-      createTime: {
-        type: 'date',
-        format: 'YYYY/MM/DD',
+      status: { type: 'enum', valueEnum: InsurancePolicyStatusEnumText },
+      insurancePeriod: { type: 'enum', valueEnum: insuranceTypeText },
+      creationTime: { type: 'date', format: 'YYYY-MM-DD' },
+      effectStartTime: { type: 'date', format: 'YYYY-MM-DD' },
+      effectEndTime: { type: 'date', format: 'YYYY-MM-DD' },
+      sumInsured: {
+        type: 'money',
+        formatter: (row: API.GetInsurancePageOutput) =>
+          row.sumInsured == null ? '' : toThousand(row.sumInsured),
       },
-      insuranceBeginTime: {
-        type: 'date',
-        format: 'YYYY/MM/DD',
-      },
-      insuranceEndTime: {
-        type: 'date',
-        format: 'YYYY/MM/DD',
+      amount: {
+        type: 'money',
+        formatter: (row: API.GetInsurancePageOutput) =>
+          row.amount == null ? '' : toThousand(row.amount),
       },
     },
-    showSummary: true,
-    summaryPropertys: [
-      {
-        property: 'table-operation',
-        valueKey: 'totalAmount',
-        formatter: (v) => `锟�${toThousand(v)}`,
-      },
-    ],
   }
 );
 
 function createParams(pageIndex: number, pageSize: number) {
-  let params: API.QueryInsuranceOrderPageInput = {
+  let params: API.GetInsurancePageInput = {
     pageModel: {
       rows: pageSize,
       page: pageIndex,
       orderInput: extraParamState.orderInput,
     },
-    beginCreationTime: format(extraParamState.creationDate?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
-    endCreationTime: format(extraParamState.creationDate?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
-    condition: extraParamState.keyword,
-    onJobFlag: extraParamState.onJobFlag,
-    insuranceType: extraParamState.insuranceType,
+    importStartDateTime: format(extraParamState.creationDate?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+    importEndDateTime: format(extraParamState.creationDate?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+    condition: extraParamState.condition,
+    insurancePeriod: extraParamState.insurancePeriod,
+    status: extraParamState.status,
   };
   return params;
 }
 
-const { dialogProps, handleAdd, editForm } = useFormDialog({
-  onConfirm: uploadInsurePerson,
+const { dialogProps, handleAdd, editForm, dialogState } = useFormDialog({
+  onConfirm: checkInrancesSerialNumStatus,
   defaultFormParams: {
-    orderNo: '',
+    serialNum: '',
     url: [] as UploadUserFile[],
   },
+  closeAfterConfirm: false,
 });
+
+async function checkInrancesSerialNumStatus() {
+  try {
+    let params: API.APIimportInsStaffToListParams = {
+      serialNum: editForm.serialNum,
+      url: editForm.url?.[0]?.path,
+    };
+    let res = await insuranceOrderServices.checkInrancesSerialNumStatus(params);
+    if (res === InsurancePolicyStatusEnum.Effecting) {
+      await Message.tipMessage('璇ユ壒娆′繚鍗曞凡鐢熸晥锛岃淇敼鎵规鍙峰悗閲嶆柊瀵煎叆');
+    } else if (res === InsurancePolicyStatusEnum.OutTimeEffect) {
+      await Message.tipMessage('璇ユ壒娆′繚鍗曞凡澶辨晥锛岃淇敼鎵规鍙峰悗閲嶆柊瀵煎叆');
+    } else if (res === InsurancePolicyStatusEnum.WaitEffect) {
+      await Message.tipMessage('瀛樺湪鐩稿悓鐨勬壒娆″彿锛屾槸鍚﹁鐩栵紵');
+      importInsStaffToList();
+    } else {
+      importInsStaffToList();
+    }
+  } catch (error) {}
+}
+
+async function importInsStaffToList() {
+  try {
+    let params: API.APIimportInsStaffToListParams = {
+      serialNum: editForm.serialNum,
+      url: editForm.url?.[0]?.path,
+    };
+    let res = await insuranceOrderServices.importInsStaffToList(params);
+    if (res.length > 0) {
+      await Message.tipMessage('瀛樺湪閿欒鏁版嵁锛屾槸鍚﹀鍑猴紵');
+      XLSXUtils.exportToXLSX({
+        workbookDataList: res,
+        fileName: '閿欒浜哄憳鍚嶅崟',
+        workbookHeaderMap: {
+          name: '闆囧憳濮撳悕',
+          sex: '鎬у埆',
+          certType: '璇佷欢绫诲瀷',
+          certNo: '璇佷欢鍙风爜',
+          jobName: '闆囧憳宸ョ',
+          useEmploer: '鐢ㄥ伐鍗曚綅',
+          address: '鐢ㄥ伐鍦扮偣',
+          note: '澶囨敞',
+        },
+      });
+    }
+    dialogState.dialogVisible = false;
+    getList(paginationState.pageIndex);
+  } catch (error) {}
+}
 
 function handleUpload() {
   handleAdd({
-    orderNo: '',
+    serialNum: `${dayjs().format('YYYYMMDD')}${_.random(0, 9999).toString().padStart(4, '0')}`,
     url: [] as UploadUserFile[],
   });
 }
 
-async function uploadInsurePerson() {
-  try {
-    let params = {
-      orderNo: editForm.orderNo,
-      url: editForm.url?.[0]?.path,
-    };
-    // let res = await insuranceOrderServices.uploadStampFile(params);
-    // if (res) {
-    //   Message.successMessage('涓婁紶鎴愬姛');
-    //   getList(paginationState.pageIndex);
-    // }
-  } catch (error) {}
-}
-
 const router = useRouter();
 
-async function handleExport() {
+async function getInsurancePageExport() {
   try {
     if (paginationState.total === 0) {
       Message.warnMessage('娌℃湁鏁版嵁鍙互瀵煎嚭鍝');
       return;
     }
     let params = createParams(paginationState.pageIndex, paginationState.pageSize);
-    let res = await insuranceOrderServices.exportInsuranceOrderList(params, {
+    let res = await insuranceOrderServices.getInsurancePageExport(params, {
       responseType: 'blob',
       getResponse: true,
     });
@@ -293,14 +316,31 @@
   } catch (error) {}
 }
 
-function handleDownload() {
-  downloadFileByUrl(JYBInsuranceOrderTempPath, '淇濆崟瀵煎叆妯℃澘');
+async function getInsuranceStaffPageExport() {
+  try {
+    if (paginationState.total === 0) {
+      Message.warnMessage('娌℃湁鏁版嵁鍙互瀵煎嚭鍝');
+      return;
+    }
+    let params = createParams(paginationState.pageIndex, paginationState.pageSize);
+    let res = await insuranceOrderServices.getInsuranceStaffPageExport(params, {
+      responseType: 'blob',
+      getResponse: true,
+    });
+    if (res) {
+      downloadFile(res.data, `鍦ㄤ繚浜哄憳瀵煎嚭`, 'xlsx');
+    }
+  } catch (error) {}
 }
 
-function handleRowStyle(data: { row: API.InsuranceOrderListOutput; rowIndex: number }) {
+function handleDownload() {
+  downloadFileByUrl(InsuranceOrderTempPath, '淇濆崟瀵煎叆妯℃澘');
+}
+
+function handleRowStyle(data: { row: API.GetInsurancePageOutput }) {
   if (
-    dayjs(dayjs(data.row?.insuranceEndTime).format('YYYY-MM-DD')).diff(dayjs(), 'day') >= 0 &&
-    dayjs(dayjs(data.row?.insuranceEndTime).format('YYYY-MM-DD')).diff(dayjs(), 'day') < 6
+    dayjs(dayjs(data.row?.effectEndTime).format('YYYY-MM-DD')).diff(dayjs(), 'day') >= 0 &&
+    dayjs(dayjs(data.row?.effectEndTime).format('YYYY-MM-DD')).diff(dayjs(), 'day') < 6
   ) {
     return {
       color: '#ff0000',
@@ -313,39 +353,48 @@
   handleEdit: handleStampFileEdit,
   editForm: stampFileForm,
 } = useFormDialog({
-  onConfirm: uploadStampFile,
+  onConfirm: uploadInsuranceStampFiles,
   defaultFormParams: {
     id: '',
     url: [] as UploadUserFile[],
   },
 });
 
-function handleUploadStampFile(row: API.InsuranceOrderListOutput) {
-  handleStampFileEdit({
-    id: row.id,
-    url: [] as UploadUserFile[],
-  });
-}
-
-async function uploadStampFile() {
+async function handleUploadStampFile(row: API.GetInsurancePageOutput) {
   try {
-    let params = {
-      id: stampFileForm.id,
-      url: stampFileForm.url?.[0]?.path,
-    };
-    // let res = await insuranceOrderServices.uploadStampFile(params);
-    // if (res) {
-    //   Message.successMessage('涓婁紶鎴愬姛');
-    //   getList(paginationState.pageIndex);
-    // }
+    const url = await getInsurancePolicyStampFiles(row.id);
+    handleStampFileEdit({
+      id: row.id,
+      url: url.map((x) => convertApi2FormUrl(x)) ?? [],
+    });
   } catch (error) {}
 }
 
-function handleDownloadOrderNo(row: API.InsuranceOrderListOutput) {
-  downloadFileByUrl(setOSSLink(row.orderBillFile));
+async function uploadInsuranceStampFiles() {
+  try {
+    let params: API.UploadInsuranceStampFilesInput = {
+      insurancePolicyId: stampFileForm.id,
+      listFiles: stampFileForm.url?.map((x) => x.path) ?? [],
+    };
+    let res = await insuranceOrderServices.uploadInsuranceStampFiles(params);
+    if (res) {
+      Message.successMessage('涓婁紶鎴愬姛');
+      getList(paginationState.pageIndex);
+    }
+  } catch (error) {}
 }
 
-function handleDetail(row: API.InsuranceOrderListOutput) {
+async function getInsurancePolicyStampFiles(id: string) {
+  try {
+    return await insuranceOrderServices.getInsurancePolicyStampFiles({ id: id });
+  } catch (error) {}
+}
+
+function handleDownloadInsureFile(row: API.GetInsurancePageOutput) {
+  downloadFileByUrl(setOSSLink(row.insureBillUrl));
+}
+
+function handleDetail(row: API.GetInsurancePageOutput) {
   router.push({
     name: 'InsuranceOrderDetail',
     params: {
@@ -353,14 +402,17 @@
     },
   });
 }
-function handleBatch(row: API.InsuranceOrderListOutput) {
+function handleBatch(row: API.GetInsurancePageOutput) {
   router.push({
     name: 'BatchChange',
     params: {
       id: row.id,
     },
+    query: {
+      insurerName: row.insurerName ?? '',
+      insureBillNo: row.insureBillNo ?? '',
+      effectEndTime: row.effectEndTime ?? '',
+    },
   });
 }
-function downloadInsureOrder() {}
-function downloadInsurePerson() {}
 </script>

--
Gitblit v1.9.1