From ee36747f2db9ac3a641e1cbaeb01f726ce9faa98 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期一, 24 三月 2025 16:02:28 +0800
Subject: [PATCH] feat: 页面
---
src/views/Home/BatchChange.vue | 29
src/views/Home/components/UploadInsurePersonDialog.vue | 1
src/views/InsuranceClaim/InsuranceClaim.vue | 4
src/views/Home/components/InsureOrderInfoView.vue | 62 +-
src/views/Home/InsuranceOrderDetail.vue | 1
src/constants/oss.ts | 2
src/constants/temp.ts | 11
src/views/Home/constants/index.ts | 6
src/views/Home/components/UploadStampFileDialog.vue | 1
src/views/Home/components/BatchDownsizingDialog.vue | 4
src/views/InsuranceClaim/InsuranceClaimDetail.vue | 582 -------------------------
src/views/Home/Home.vue | 40 -
src/views/InsuranceClaim/components/InsuranceClaimView.vue | 602 ++++++++++++++++++++++++++
13 files changed, 678 insertions(+), 667 deletions(-)
diff --git a/src/constants/oss.ts b/src/constants/oss.ts
index 91a3a78..47a1a06 100644
--- a/src/constants/oss.ts
+++ b/src/constants/oss.ts
@@ -4,7 +4,7 @@
export const OSSBaseURL = VITE_OSS_URL;
-const _basicPath = '12333/YeXing/';
+const _basicPath = '12333/JiangYouBao/';
export const OssHRSIE = _basicPath + 'HRSIE/';
diff --git a/src/constants/temp.ts b/src/constants/temp.ts
index b5aad98..3ceb08a 100644
--- a/src/constants/temp.ts
+++ b/src/constants/temp.ts
@@ -1,6 +1,9 @@
export const TempFolderPath =
- 'https://parkmanagement.oss-cn-hangzhou.aliyuncs.com/12333/YeXing/temp';
+ 'https://parkmanagement.oss-cn-hangzhou.aliyuncs.com/12333/JiangYouBao/temp';
-export const InsuranceOrderTempPath = `${TempFolderPath}/%E4%B9%9F%E8%A1%8C%E5%95%86%E4%BF%9D%E4%BA%BA%E5%91%98%E6%B8%85%E5%8D%95%E6%A8%A1%E6%9D%BF.xlsx`;
-
-export const JYBInsuranceOrderTempPath = `${TempFolderPath}/%E6%B1%9F%E4%BD%91%E4%BF%9D%E4%BA%BA%E5%91%98%E6%B8%85%E5%8D%95%E6%A8%A1%E6%9D%BF.xlsx`;
+// 瀵煎叆
+export const InsuranceOrderTempPath = `${TempFolderPath}/%E9%9B%87%E4%B8%BB%E4%BA%BA%E5%91%98%E6%B8%85%E5%8D%95.xlsx`;
+// 鍔犲噺浜�
+export const InsuranceAddOrReduceTempPath = `${TempFolderPath}/%E5%8A%A0%E5%87%8F%E4%BA%BA%E6%A8%A1%E6%9D%BF.xls`;
+// 鏇挎崲浜�
+export const InsuranceChangeTempPath = `${TempFolderPath}/%E6%9B%BF%E6%8D%A2%E4%BA%BA%E6%A8%A1%E6%9D%BF.xls`;
diff --git a/src/views/Home/BatchChange.vue b/src/views/Home/BatchChange.vue
index 3bda0ec..b1b8aef 100644
--- a/src/views/Home/BatchChange.vue
+++ b/src/views/Home/BatchChange.vue
@@ -35,7 +35,7 @@
>
<template #default>
<el-button type="primary">鍔犲噺浜�</el-button>
- <el-button link type="primary" @click.stop="handleTemplateDownload"
+ <el-button link type="primary" @click.stop="DownloadAddOrReducePersonTemplate"
>涓嬭浇妯℃澘</el-button
>
</template>
@@ -55,7 +55,7 @@
>
<template #default>
<el-button type="primary">鏇挎崲浜�</el-button>
- <el-button link type="primary" @click.stop="handleTemplateDownload"
+ <el-button link type="primary" @click.stop="downloadReplacePersonTemplate"
>涓嬭浇妯℃澘</el-button
>
</template>
@@ -81,7 +81,7 @@
>
</ProTableV2>
<div class="chuck-add-or-edit-actions">
- <el-button class="chuck-add-or-edit-actions" type="primary" @click="handleSubmit"
+ <el-button class="chuck-add-or-edit-actions btn" type="primary" @click="handleSubmit"
>鎻愪氦</el-button
>
</div>
@@ -97,25 +97,17 @@
ProForm,
ProFormItemV2,
ChunkCell,
- ProFormText,
- ProTableQueryFilterBar,
- QueryFilterItem,
- SearchInput,
ProFormCol,
ProFormColItem,
ProFormDatePicker,
- ProFormInputNumber,
useTable,
ProTableV2,
- ProFormRadio,
- FieldSelect,
- defineOperationBtns,
- useFormDialog,
ProFormUpload,
UploadUserFile,
} from '@bole-core/components';
import * as insuranceOrderServices from '@/services/api/InsuranceOrder';
-import { OrderInputType } from '@bole-core/core';
+import { downloadFileByUrl, OrderInputType } from '@bole-core/core';
+import { InsuranceAddOrReduceTempPath, InsuranceChangeTempPath } from '@/constants';
defineOptions({
name: 'BatchChange',
@@ -211,7 +203,12 @@
function handleClear() {}
function handleSubmit() {}
-function handleTemplateDownload() {}
+function DownloadAddOrReducePersonTemplate() {
+ downloadFileByUrl(InsuranceAddOrReduceTempPath, '鍔犲噺浜烘ā鏉�');
+}
+function downloadReplacePersonTemplate() {
+ downloadFileByUrl(InsuranceChangeTempPath, '鏇挎崲浜烘ā鏉�');
+}
onMounted(async () => {
await getBatchRefundInfoDetail();
@@ -223,6 +220,8 @@
@use '@/style/common.scss' as *;
.chuck-add-or-edit-actions {
- // margin-bottom: 20px;
+ &.btn {
+ margin-bottom: 20px;
+ }
}
</style>
diff --git a/src/views/Home/Home.vue b/src/views/Home/Home.vue
index f98ab8e..c2442aa 100644
--- a/src/views/Home/Home.vue
+++ b/src/views/Home/Home.vue
@@ -44,25 +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
- >
+ <el-button @click="downloadInsureOrder()" type="primary" link>瀵煎嚭淇濆崟鍒楄〃</el-button>
+ <el-button @click="downloadInsurePerson()" type="primary" link>瀵煎嚭鍦ㄤ繚浜哄憳</el-button>
</template>
</ProTableQueryFilterBar>
<ProTableV2
@@ -92,10 +83,8 @@
useTable,
useFormDialog,
FieldDatePicker,
- BlFileUpload,
defineOperationBtns,
UploadUserFile,
- XLSXUtils,
SearchInput,
FieldRadio,
} from '@bole-core/components';
@@ -104,16 +93,9 @@
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 } from '@/utils';
import { ModelValueType } from 'element-plus';
-import { useQueryClient } from '@tanstack/vue-query';
-import {
- InsuranceOrderTempPath,
- JYBInsuranceOrderTempPath,
- OnJobFlagEnumText,
- insuranceTypeText,
-} from '@/constants';
+import { InsuranceOrderTempPath, OnJobFlagEnumText, insuranceTypeText } from '@/constants';
import dayjs from 'dayjs';
import _ from 'lodash';
@@ -139,9 +121,9 @@
emits: {
onClick: (role) => handleBatch(role),
},
- extraProps: {
- hide: (row: API.InsuranceOrderListOutput) => !row.orderBillFile,
- },
+ // extraProps: {
+ // hide: (row: API.InsuranceOrderListOutput) => !row.orderBillFile,
+ // },
},
{
data: {
@@ -286,10 +268,10 @@
}
function handleDownload() {
- downloadFileByUrl(JYBInsuranceOrderTempPath, '淇濆崟瀵煎叆妯℃澘');
+ downloadFileByUrl(InsuranceOrderTempPath, '淇濆崟瀵煎叆妯℃澘');
}
-function handleRowStyle(data: { row: API.InsuranceOrderListOutput; rowIndex: number }) {
+function handleRowStyle(data: { row: API.InsuranceOrderListOutput }) {
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
diff --git a/src/views/Home/InsuranceOrderDetail.vue b/src/views/Home/InsuranceOrderDetail.vue
index e2c745b..5027481 100644
--- a/src/views/Home/InsuranceOrderDetail.vue
+++ b/src/views/Home/InsuranceOrderDetail.vue
@@ -28,7 +28,6 @@
}
const state = reactive({
- activeIndex: 1,
tabType: InsureOrderTabType.InsureOrderInfo,
});
</script>
diff --git a/src/views/Home/components/BatchDownsizingDialog.vue b/src/views/Home/components/BatchDownsizingDialog.vue
index 7d2a48a..39ebb2c 100644
--- a/src/views/Home/components/BatchDownsizingDialog.vue
+++ b/src/views/Home/components/BatchDownsizingDialog.vue
@@ -43,7 +43,7 @@
</template>
<script setup lang="ts">
-import { JYBInsuranceOrderTempPath } from '@/constants';
+import { InsuranceOrderTempPath } from '@/constants';
import {
ProDialog,
UploadUserFile,
@@ -121,6 +121,6 @@
}
function downloadImportEntryStaff() {
- downloadFileByUrl(JYBInsuranceOrderTempPath, '淇濆崟瀵煎叆妯℃澘');
+ downloadFileByUrl(InsuranceOrderTempPath, '淇濆崟瀵煎叆妯℃澘');
}
</script>
diff --git a/src/views/Home/components/InsureOrderInfoView.vue b/src/views/Home/components/InsureOrderInfoView.vue
index 57ab2cf..7656760 100644
--- a/src/views/Home/components/InsureOrderInfoView.vue
+++ b/src/views/Home/components/InsureOrderInfoView.vue
@@ -80,17 +80,11 @@
</QueryFilterItem>
</template>
<template #btn>
- <el-button @click="handleTemplateDownload()" icon="Download" type="primary"
- >妯℃澘涓嬭浇</el-button
- >
- <el-button @click="handleImport()" icon="Download" type="primary">瀵煎叆</el-button>
- <el-button @click="handleClear()" icon="Download" type="primary">娓呯┖鏁版嵁</el-button>
- <el-button @click="handleDownloadPerson()" icon="Download" type="primary"
- >浜哄憳娓呭崟涓嬭浇</el-button
- >
- <el-button @click="handleDownloadOrder()" icon="Download" type="primary"
- >淇濆崟涓嬭浇</el-button
- >
+ <el-button @click="handleTemplateDownload()" link type="primary">妯℃澘涓嬭浇</el-button>
+ <el-button @click="handleImport()" type="primary">瀵煎叆</el-button>
+ <el-button @click="handleClear()" type="primary">娓呯┖鏁版嵁</el-button>
+ <el-button @click="handleDownloadPerson()" type="primary">浜哄憳娓呭崟涓嬭浇</el-button>
+ <el-button @click="handleDownloadOrder()" type="primary">淇濆崟涓嬭浇</el-button>
</template>
</ProTableQueryFilterBar>
<ProTableV2
@@ -131,11 +125,11 @@
defineOperationBtns,
useFormDialog,
} from '@bole-core/components';
-import { insuranceTypeText } from '@/constants';
+import { InsuranceOrderTempPath, insuranceTypeText } from '@/constants';
import ChangePersonInfoDialog from './ChangePersonInfoDialog.vue';
import * as insuranceOrderServices from '@/services/api/InsuranceOrder';
import { useQuery, useQueryClient } from '@tanstack/vue-query';
-import { OrderInputType } from '@bole-core/core';
+import { downloadFileByUrl, OrderInputType } from '@bole-core/core';
defineOptions({
name: 'InsureOrderInfoView',
@@ -208,9 +202,9 @@
emits: {
onClick: (role) => handleChangeInfo(role),
},
- extraProps: {
- hide: (row: API.InsuranceOrderListOutput) => !row.orderBillFile,
- },
+ // extraProps: {
+ // hide: (row: API.InsuranceOrderListOutput) => !row.orderBillFile,
+ // },
},
{
data: {
@@ -218,11 +212,11 @@
name: '鐞嗚禂璇︽儏',
},
emits: {
- onClick: (role) => handleInsureClaimDetail(),
+ onClick: (role) => handleInsureClaimDetail(role),
},
- extraProps: {
- hide: (row: API.InsuranceOrderListOutput) => !row.orderBillFile,
- },
+ // extraProps: {
+ // hide: (row: API.InsuranceOrderListOutput) => !row.orderBillFile,
+ // },
},
]);
@@ -292,19 +286,21 @@
}
);
-function handleTemplateDownload() {}
+function handleTemplateDownload() {
+ downloadFileByUrl(InsuranceOrderTempPath, '浜哄憳淇℃伅妯℃澘');
+}
function handleClear() {}
function handleImport() {}
function handleDownloadPerson() {}
function handleDownloadOrder() {}
function handleBatchChange() {
- // router.push({
- // name: 'BatchChange',
- // params: {
- // id: id,
- // },
- // });
+ router.push({
+ name: 'BatchChange',
+ params: {
+ id: id,
+ },
+ });
}
const { dialogProps, handleEdit, editForm } = useFormDialog({
@@ -322,7 +318,17 @@
async function changeInfo() {}
-function handleInsureClaimDetail() {}
+function handleInsureClaimDetail(row: API.InsuranceOrderListOutput) {
+ router.push({
+ name: 'InsuranceClaimDetail',
+ params: {
+ id: row.id,
+ },
+ query: {
+ fromRoute: 'InsuranceOrderDetail',
+ },
+ });
+}
</script>
<style lang="scss" scoped>
diff --git a/src/views/Home/components/UploadInsurePersonDialog.vue b/src/views/Home/components/UploadInsurePersonDialog.vue
index 0473413..ba9bc53 100644
--- a/src/views/Home/components/UploadInsurePersonDialog.vue
+++ b/src/views/Home/components/UploadInsurePersonDialog.vue
@@ -6,6 +6,7 @@
draggable
bodyNoPaddingBottom
@close="onDialogClose"
+ width="600px"
>
<ProForm :model="innerForm" ref="dialogForm" label-width="120px">
<ProFormItemV2
diff --git a/src/views/Home/components/UploadStampFileDialog.vue b/src/views/Home/components/UploadStampFileDialog.vue
index 8de4354..9ff782f 100644
--- a/src/views/Home/components/UploadStampFileDialog.vue
+++ b/src/views/Home/components/UploadStampFileDialog.vue
@@ -6,6 +6,7 @@
draggable
bodyNoPaddingBottom
@close="onDialogClose"
+ width="600px"
>
<ProForm :model="innerForm" ref="dialogForm" label-width="120px">
<ProFormItemV2
diff --git a/src/views/Home/constants/index.ts b/src/views/Home/constants/index.ts
index 4e26fcb..51e1480 100644
--- a/src/views/Home/constants/index.ts
+++ b/src/views/Home/constants/index.ts
@@ -2,12 +2,6 @@
export const columns = defineColumns([
{
- id: '1',
- enCode: 'channel',
- name: '娓犻亾',
- width: 160,
- },
- {
id: '2',
enCode: 'channel',
name: '鎵规鍙�',
diff --git a/src/views/InsuranceClaim/InsuranceClaim.vue b/src/views/InsuranceClaim/InsuranceClaim.vue
index 52ed93a..99f3847 100644
--- a/src/views/InsuranceClaim/InsuranceClaim.vue
+++ b/src/views/InsuranceClaim/InsuranceClaim.vue
@@ -1,9 +1,9 @@
<template>
- <InsuranceClaimDetailView></InsuranceClaimDetailView>
+ <InsuranceClaimView></InsuranceClaimView>
</template>
<script setup lang="ts">
-import InsuranceClaimDetailView from './InsuranceClaimDetail.vue';
+import InsuranceClaimView from './components/InsuranceClaimView.vue';
defineOptions({
name: 'InsuranceClaim',
diff --git a/src/views/InsuranceClaim/InsuranceClaimDetail.vue b/src/views/InsuranceClaim/InsuranceClaimDetail.vue
index af72b53..c78ea3c 100644
--- a/src/views/InsuranceClaim/InsuranceClaimDetail.vue
+++ b/src/views/InsuranceClaim/InsuranceClaimDetail.vue
@@ -1,587 +1,11 @@
<template>
- <LoadingLayout :loading="isLoading">
- <AppScrollContainer>
- <ChunkCell title="鎶ユ淇℃伅">
- <ProForm :model="form" ref="formRef" label-width="120px">
- <ProFormCol>
- <ProFormColItem :span="6">
- <ProFormItemV2
- label="韬唤璇佸彿鐮�:"
- prop="idNumber"
- :check-rules="[{ message: '璇疯緭鍏ヨ韩浠借瘉鍙风爜', type: 'idCard' }]"
- >
- <ProFormText
- v-model.trim="form.idNumber"
- placeholder="璇疯緭鍏ヨ韩浠借瘉鍙风爜"
- @change="handleIdNumberChange"
- />
- </ProFormItemV2>
- </ProFormColItem>
- <ProFormColItem :span="6">
- <ProFormItemV2
- label="鎶ユ鏃堕棿:"
- prop="reportedTime"
- :check-rules="[{ message: '璇烽�夋嫨鎶ユ鏃堕棿' }]"
- >
- <ProFormDatePicker
- v-model="form.reportedTime"
- type="datetime"
- format="YYYY-MM-DD HH:mm:ss"
- value-format="YYYY-MM-DD HH:mm:ss"
- placeholder="璇烽�夋嫨鎶ユ鏃堕棿"
- :disabled-date="disabledReportedDate"
- @change="handleReportedTimeChange"
- :key="datePickerKey"
- ></ProFormDatePicker>
- </ProFormItemV2>
- </ProFormColItem>
- <ProFormColItem :span="6">
- <ProFormItemV2
- label="鑱旂郴鐢佃瘽:"
- prop="contactNumber"
- :check-rules="[{ message: '璇疯緭鍏ヨ仈绯荤數璇�', type: 'phone' }]"
- >
- <ProFormText v-model.trim="form.contactNumber" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" />
- </ProFormItemV2>
- </ProFormColItem>
- <ProFormColItem :span="6">
- <ProFormItemV2
- label="澶囩敤鑱旂郴鐢佃瘽:"
- prop="bakContactNumber"
- :check-rules="[{ message: '璇疯緭鍏ュ鐢ㄨ仈绯荤數璇�', type: 'phone', required: false }]"
- >
- <ProFormText
- v-model.trim="form.bakContactNumber"
- placeholder="璇疯緭鍏ュ鐢ㄨ仈绯荤數璇�"
- />
- </ProFormItemV2>
- </ProFormColItem>
- <ProFormColItem :span="6">
- <ProFormItemV2 label="濮撳悕:" prop="name" :check-rules="[{ message: '璇疯緭鍏ュ鍚�' }]">
- <ProFormText v-model.trim="form.name" placeholder="璇疯緭鍏ュ鍚�" :maxlength="30" />
- </ProFormItemV2>
- </ProFormColItem>
- </ProFormCol>
- </ProForm>
- </ChunkCell>
- <ChunkCell title="淇濆崟淇℃伅">
- <ProForm :model="form" ref="insuranceBaseFormRef" label-width="120px">
- <ProFormCol>
- <ProFormColItem :span="6">
- <ProFormItemV2
- label="鍙備繚鏈烘瀯:"
- prop="insuredInstitution"
- :check-rules="[{ message: '璇烽�夋嫨鍙備繚鏈烘瀯' }]"
- >
- <ProFormSelect
- placeholder="璇烽�夋嫨鍙備繚鏈烘瀯"
- :value-enum="InsuredInstitutionEnum"
- clearable
- v-model="form.insuredInstitution"
- ></ProFormSelect>
- </ProFormItemV2>
- </ProFormColItem>
- <ProFormColItem :span="6">
- <ProFormItemV2
- label="鎶曚繚鏂规:"
- prop="insuranceScheme"
- :check-rules="[{ message: '璇烽�夋嫨鎶曚繚鏂规' }]"
- >
- <ProFormSelect
- placeholder="璇烽�夋嫨鎶曚繚鏂规"
- :value-enum="InsuranceSchemeEnum"
- clearable
- v-model="form.insuranceScheme"
- ></ProFormSelect>
- </ProFormItemV2>
- </ProFormColItem>
- </ProFormCol>
- <ProFormMixinsItemContainer>
- <ProFormCol>
- <ProFormColItem :span="6">
- <ProFormItemV2 label="璧蜂繚鏃ユ湡:" prop="insuranceBeginTime" mode="read">
- <ProFormDatePicker
- v-model="form.insuranceBeginTime"
- type="date"
- value-format="YYYY-MM-DD"
- placeholder="璇烽�夋嫨璧蜂繚鏃ユ湡"
- ></ProFormDatePicker>
- </ProFormItemV2>
- </ProFormColItem>
- <ProFormColItem :span="6">
- <ProFormItemV2 label="鍔冲姩鍚堝悓鍗曚綅:" prop="laborContractEnterprise" mode="read">
- <ProFormText
- v-model.trim="form.laborContractEnterprise"
- placeholder="璇疯緭鍏ュ姵鍔ㄥ悎鍚屽崟浣�"
- />
- </ProFormItemV2>
- </ProFormColItem>
- <ProFormColItem :span="6">
- <ProFormItemV2 label="宸ョ:" prop="workType" mode="read">
- <ProFormText v-model.trim="form.workType" placeholder="璇疯緭鍏ュ伐绉�" />
- </ProFormItemV2>
- </ProFormColItem>
- </ProFormCol>
- </ProFormMixinsItemContainer>
- <ProFormMixinsItemContainer>
- <ProFormCol>
- <ProFormColItem :span="6">
- <ProFormItemV2 label="缁堜繚鏃ユ湡:" prop="insuranceEndTime" mode="read">
- <ProFormDatePicker
- v-model="form.insuranceEndTime"
- type="date"
- value-format="YYYY-MM-DD"
- placeholder="璇烽�夋嫨缁堜繚鏃ユ湡"
- ></ProFormDatePicker>
- </ProFormItemV2>
- </ProFormColItem>
- <ProFormColItem :span="6">
- <ProFormItemV2 label="瀹為檯宸ヤ綔鍗曚綅:" prop="workEnterprise" mode="read">
- <ProFormText
- v-model.trim="form.workEnterprise"
- placeholder="璇疯緭鍏ュ疄闄呭伐浣滃崟浣�"
- />
- </ProFormItemV2>
- </ProFormColItem>
- </ProFormCol>
- </ProFormMixinsItemContainer>
- </ProForm>
- </ChunkCell>
- <ChunkCell title="淇濆崟淇℃伅">
- <ProForm :model="form" ref="insuranceFormRef" label-width="120px">
- <ProFormCol>
- <ProFormColItem :span="6">
- <ProFormItemV2
- label="浜嬫晠绫诲瀷:"
- prop="accidentType"
- :check-rules="[{ message: '璇烽�夋嫨浜嬫晠绫诲瀷' }]"
- >
- <ProFormSelect
- placeholder="璇烽�夋嫨浜嬫晠绫诲瀷"
- :value-enum="AccidentTypeEnum"
- clearable
- v-model="form.accidentType"
- ></ProFormSelect>
- </ProFormItemV2>
- </ProFormColItem>
- <ProFormColItem :span="6">
- <ProFormItemV2
- label="浜嬫晠鍙戠敓鏃堕棿:"
- prop="accidentTime"
- :check-rules="[{ message: '璇烽�夋嫨浜嬫晠鍙戠敓鏃堕棿' }]"
- >
- <ProFormDatePicker
- v-model="form.accidentTime"
- type="datetime"
- format="YYYY-MM-DD HH:mm:ss"
- placeholder="璇烽�夋嫨浜嬫晠鍙戠敓鏃堕棿"
- ></ProFormDatePicker>
- </ProFormItemV2>
- </ProFormColItem>
- </ProFormCol>
- <ProFormCol>
- <ProFormColItem :span="6">
- <ProFormItemV2 label="浼ゆ畫姣斾緥:" prop="disabilityRatio">
- <ProFormInputNumber
- v-model="form.disabilityRatio"
- :controls="false"
- :min="0"
- :max="100"
- unit="%"
- ></ProFormInputNumber>
- </ProFormItemV2>
- </ProFormColItem>
- <ProFormColItem :span="18">
- <ProFormItemV2
- label="浜嬪彂鍦扮偣:"
- prop="accidentAddress"
- :check-rules="[{ message: '璇疯緭鍏ヤ簨鍙戝湴鐐�' }]"
- >
- <ProFormText
- v-model.trim="form.accidentAddress"
- placeholder="璇疯緭鍏ヤ簨鍙戝湴鐐�"
- :maxlength="100"
- />
- </ProFormItemV2>
- </ProFormColItem>
- </ProFormCol>
- <ProFormCol>
- <ProFormColItem :span="24">
- <ProFormItemV2
- label="浜嬫晠缁忚繃:"
- prop="accidentProcess"
- :check-rules="[{ message: '璇疯緭鍏ヤ簨鏁呯粡杩�' }]"
- >
- <ProFormTextArea
- v-model="form.accidentProcess"
- :rows="10"
- placeholder="璇疯緭鍏ヤ簨鏁呯粡杩�"
- :maxlength="500"
- show-word-limit
- ></ProFormTextArea>
- </ProFormItemV2>
- </ProFormColItem>
- </ProFormCol>
- <div class="attachments-wrapper">
- <div class="attachments">
- <ProFormItemV2 label="浼よ�呰韩浠借瘉鐓х墖锛堟鍙嶏級:">
- <div class="id-imgUrl-wrapper">
- <ProFormItemV2 prop="attachmentFrontIdCards" class="pro-form-item-label-hidden">
- <ProFormImageUpload
- v-model:file-url="form.attachmentFrontIdCards"
- :limitFileSize="10"
- btnText="韬唤璇佷汉鍍忛潰"
- :showTip="false"
- >
- </ProFormImageUpload>
- </ProFormItemV2>
- <ProFormItemV2 prop="attachmentBackIdCards" class="pro-form-item-label-hidden">
- <ProFormImageUpload
- v-model:file-url="form.attachmentBackIdCards"
- :limitFileSize="10"
- btnText="韬唤璇佸浗寰介潰"
- :showTip="false"
- >
- </ProFormImageUpload>
- </ProFormItemV2>
- </div>
- </ProFormItemV2>
- <ProFormItemV2 prop="attachmentSites" label="鍙椾激鍦哄湴:">
- <ProFormImageUpload
- v-model:file-url="form.attachmentSites"
- :limitFileSize="10"
- :showTip="false"
- >
- </ProFormImageUpload>
- </ProFormItemV2>
- <ProFormItemV2 prop="attachmentHandheldIdCards" label="浼よ�呮墜鎸佽韩浠借瘉鐓�:">
- <ProFormImageUpload
- v-model:file-url="form.attachmentHandheldIdCards"
- :limitFileSize="10"
- :showTip="false"
- >
- </ProFormImageUpload>
- </ProFormItemV2>
- <ProFormItemV2 prop="attachmentAreas" label="鍙椾激閮ㄤ綅:">
- <ProFormImageUpload
- v-model:file-url="form.attachmentAreas"
- :limitFileSize="10"
- :showTip="false"
- :limitFileCount="0"
- >
- </ProFormImageUpload>
- </ProFormItemV2>
- <ProFormItemV2 prop="attachmentCases" label="鐥呬緥鐓х墖:">
- <ProFormImageUpload
- v-model:file-url="form.attachmentCases"
- :limitFileSize="10"
- :showTip="false"
- :limitFileCount="0"
- >
- </ProFormImageUpload>
- </ProFormItemV2>
- </div>
- <ClaimPicDemoView />
- </div>
- <div class="chuck-add-or-edit-actions">
- <el-button @click="handleBack">鍏抽棴</el-button>
- <el-button type="primary" @click="handleSubmit">鎻愪氦</el-button>
- </div>
- </ProForm>
- </ChunkCell>
- <!-- <ChunkCell title="鐞嗚禂缁撴灉">
- <ProForm :model="form" ref="claimFormRef" label-width="120px">
- <ProFormCol>
- <ProFormColItem :span="6">
- <ProFormItemV2 label="鐞嗚禂缁撴灉:" prop="claimResult">
- <ProFormSelect
- placeholder="璇烽�夋嫨鐞嗚禂缁撴灉"
- :value-enum="InsuranceClaimResultEnumText"
- clearable
- v-model="form.claimResult"
- ></ProFormSelect>
- </ProFormItemV2>
- </ProFormColItem>
- <ProFormColItem :span="6">
- <ProFormItemV2 label="缁�/鎾ゆ鏃堕棿:" prop="claimResultTime">
- <ProFormDatePicker
- v-model="form.claimResultTime"
- type="datetime"
- format="YYYY-MM-DD"
- value-format="YYYY-MM-DD"
- placeholder="璇烽�夋嫨缁�/鎾ゆ鏃堕棿"
- ></ProFormDatePicker>
- </ProFormItemV2>
- </ProFormColItem>
- </ProFormCol>
- <ProFormItemV2 label="涓嬫閲戦:" prop="downPaymentAmount">
- <ProFormInputNumber
- v-model="form.downPaymentAmount"
- :controls="false"
- :min="0"
- :precision="2"
- ></ProFormInputNumber>
- </ProFormItemV2>
- <div class="chuck-add-or-edit-actions">
- <el-button @click="handleBack">鍏抽棴</el-button>
- <el-button type="primary" @click="handleSubmit">鎻愪氦</el-button>
- </div>
- </ProForm>
- </ChunkCell> -->
- </AppScrollContainer>
- <SelectOrderDialog v-bind="dialogProps" />
- </LoadingLayout>
+ <InsuranceClaimView :isDetail="true"></InsuranceClaimView>
</template>
<script setup lang="ts">
-import * as insuranceOrderServices from '@/services/api/InsuranceOrder';
-import * as insuranceClaimServices from '@/services/api/InsuranceClaim';
-import {
- ChunkCell,
- AppScrollContainer,
- LoadingLayout,
- ProForm,
- ProFormCol,
- ProFormColItem,
- ProFormText,
- ProFormDatePicker,
- ProFormSelect,
- ProFormImageUpload,
- ProFormTextArea,
- ProFormItemV2,
- ProFormMixinsItemContainer,
- ProFormInputNumber,
- useFormDialog,
-} from '@bole-core/components';
-import { FormInstance, DatePickerInstance } from 'element-plus';
-import { validateFormList, format } from '@/utils';
-import { convertFormToattAchments } from './utils';
-import {
- InsuredInstitutionEnum,
- InsuranceSchemeEnum,
- AccidentTypeEnum,
- InsuranceClaimAttachmentBusinessTypeEnum,
- InsuranceClaimResultEnumText,
-} from '@/constants';
-import { useRouteView } from '@/hooks';
-import { Message, BoleRegExp } from '@bole-core/core';
-import { useInsuranceClaimDetail, useInsuranceOrderListByOrderRelevance } from './hooks';
-import ClaimPicDemoView from './components/ClaimPicDemoView.vue';
-import SelectOrderDialog from './components/SelectOrderDialog.vue';
-import { useQueryClient } from '@tanstack/vue-query';
+import InsuranceClaimView from './components/InsuranceClaimView.vue';
defineOptions({
- name: 'InsuranceClaimDetail',
+ name: 'InsuranceClaim',
});
-
-const route = useRoute();
-const insuranceOrderId = (route.params.id as string) ?? '';
-const { closeViewPush } = useRouteView();
-
-const datePickerKey = ref(1);
-
-const { form, isLoading, claimDetail, disabledReportedDate, queryClaimDetailByOrderId, resetForm } =
- useInsuranceClaimDetail({
- insuranceOrderId,
- });
-
-// const { existedInsuranceOrderList } = useInsuranceOrderListByOrderRelevance({
-// params: computed(() => ({
-// idIdNumber: form.idNumber,
-// reportedTime: form.reportedTime,
-// })),
-// onSuccess(data) {
-// if (data.length == 1) {
-// // importInsuranceOrderData(data[0]);
-// form.insuranceOrderId = data[0].id;
-// } else if (data.length > 1) {
-// handleAdd({
-// insuranceOrderList: data,
-// });
-// }
-// },
-// });
-
-const { dialogProps, handleAdd, editForm } = useFormDialog({
- onConfirm: handleSelectedOrder,
- defaultFormParams: {
- insuranceOrderId: '',
- insuranceOrderList: [] as API.InsuranceOrderListOutput[],
- },
-});
-
-async function handleSelectedOrder() {
- try {
- datePickerKey.value += 1;
- resetForm();
- await nextTick();
- form.insuranceOrderId = editForm.insuranceOrderId;
- // let claimDetail = await queryClaimDetailByOrderId();
- // if (claimDetail) {
- // Message.errorMessage('璇ヤ繚鍗曞凡鐞嗚禂');
- // }
- } catch (error) {}
-}
-
-const queryClient = useQueryClient();
-
-async function ensureInsuranceOrderList() {
- try {
- if (BoleRegExp.RegIDCard.test(form.idNumber) && !!form.reportedTime) {
- let params: API.QueryInsuranceOrderListByOrderRelevanceInput = {
- idIdNumber: form.idNumber,
- reportedTime: form.reportedTime,
- };
- let existedInsuranceOrderList = await queryClient.ensureQueryData({
- queryKey: ['insuranceOrderServices/getInsuranceOrderListByOrderRelevance', params],
- queryFn: async () => {
- return await insuranceOrderServices.getInsuranceOrderListByOrderRelevance(params, {
- showLoading: false,
- });
- },
- });
- if (existedInsuranceOrderList.length == 1) {
- form.insuranceOrderId = existedInsuranceOrderList[0].id;
- } else if (existedInsuranceOrderList.length > 1) {
- handleAdd({
- insuranceOrderList: existedInsuranceOrderList,
- });
- } else {
- Message.errorMessage('鏈壘鍒板尮閰嶇殑淇濆崟淇℃伅');
- }
- }
-
- // return existedInsuranceOrderList;
- } catch (error) {}
-}
-
-function handleIdNumberChange() {
- ensureInsuranceOrderList();
-}
-
-function handleReportedTimeChange() {
- if (form.accidentTime === '') {
- form.accidentTime = form.reportedTime;
- }
- ensureInsuranceOrderList();
-}
-
-const formRef = ref<FormInstance>();
-const insuranceBaseFormRef = ref<FormInstance>();
-const insuranceFormRef = ref<FormInstance>();
-const claimFormRef = ref<FormInstance>();
-
-async function handleSubmit() {
- try {
- const valid = await validateFormList([
- formRef.value,
- insuranceBaseFormRef.value,
- insuranceFormRef.value,
- ]);
-
- if (valid) {
- addInsuranceClaim();
- }
- } catch (error) {}
-}
-
-async function addInsuranceClaim() {
- try {
- if (claimDetail.value === undefined) {
- Message.errorMessage('鏈壘鍒板尮閰嶇殑淇濆崟淇℃伅');
- return;
- }
- let params: API.AddInsuranceClaimInput = {
- channel: form.channel,
- name: form.name,
- idNumber: form.idNumber,
- workType: form.workType,
- laborContractEnterprise: form.laborContractEnterprise,
- workEnterprise: form.workEnterprise,
- insuranceBeginTime: format(form.insuranceBeginTime),
- insuranceEndTime: format(form.insuranceEndTime),
- insuredInstitution: form.insuredInstitution,
- insuranceScheme: form.insuranceScheme,
- onJobFlag: form.onJobFlag,
- gender: form.gender,
- age: form.age,
- premiumAmount: form.premiumAmount,
- incDecAmount: form.incDecAmount,
- insuranceOrderId: form.insuranceOrderId,
- reportedTime: format(form.reportedTime, 'YYYY-MM-DD HH:mm:ss'),
- contactNumber: form.contactNumber,
- bakContactNumber: form.bakContactNumber,
- accidentType: form.accidentType,
- accidentTime: format(form.accidentTime, 'YYYY-MM-DD HH:mm:ss'),
- // disabilityRatio: form.disabilityRatio,
- accidentAddress: form.accidentAddress,
- accidentProcess: form.accidentProcess,
- // claimResult: form.claimResult,
- // claimResultTime: form.claimResultTime,
- attachments: [
- ...convertFormToattAchments(
- form.attachmentFrontIdCards,
- InsuranceClaimAttachmentBusinessTypeEnum.InjuredIdCardImg
- ),
- ...convertFormToattAchments(
- form.attachmentBackIdCards,
- InsuranceClaimAttachmentBusinessTypeEnum.InjuredIdCardImg
- ),
- ...convertFormToattAchments(
- form.attachmentSites,
- InsuranceClaimAttachmentBusinessTypeEnum.InjurySiteImg
- ),
- ...convertFormToattAchments(
- form.attachmentHandheldIdCards,
- InsuranceClaimAttachmentBusinessTypeEnum.InjuredHandheldIdCardImg
- ),
- ...convertFormToattAchments(
- form.attachmentAreas,
- InsuranceClaimAttachmentBusinessTypeEnum.InjuredAreaImg
- ),
- ...convertFormToattAchments(
- form.attachmentCases,
- InsuranceClaimAttachmentBusinessTypeEnum.CasesImg
- ),
- ],
- };
- // if (form.downPaymentAmount) params.downPaymentAmount = form.downPaymentAmount;
- if (form.disabilityRatio) params.disabilityRatio = form.disabilityRatio;
- let res: number;
- // if (!!claimDetail.value) {
- // Message.errorMessage('璇ヤ繚鍗曞凡鐞嗚禂');
- // } else {
- res = await insuranceClaimServices.addInsuranceClaim(params);
- // }
- if (res) {
- Message.successMessage('鎿嶄綔鎴愬姛');
- handleBack();
- }
- } catch (error) {}
-}
-
-function handleBack() {
- closeViewPush(route, {
- name: 'Home',
- });
-}
</script>
-
-<style lang="scss" scoped>
-@use '@/style/common.scss' as *;
-
-.attachments-wrapper {
- position: relative;
- display: flex;
-
- .attachments {
- flex: 1;
- min-width: 0;
- }
-}
-
-.id-imgUrl-wrapper {
- display: flex;
- gap: 40px;
-}
-</style>
diff --git a/src/views/InsuranceClaim/components/InsuranceClaimView.vue b/src/views/InsuranceClaim/components/InsuranceClaimView.vue
new file mode 100644
index 0000000..22591b9
--- /dev/null
+++ b/src/views/InsuranceClaim/components/InsuranceClaimView.vue
@@ -0,0 +1,602 @@
+<template>
+ <LoadingLayout :loading="isLoading">
+ <AppScrollContainer>
+ <ChunkCell title="鎶ユ淇℃伅">
+ <ProForm :model="form" ref="formRef" label-width="120px" :is-read="isDetail">
+ <ProFormCol>
+ <ProFormColItem :span="6">
+ <ProFormItemV2
+ label="韬唤璇佸彿鐮�:"
+ prop="idNumber"
+ :check-rules="[{ message: '璇疯緭鍏ヨ韩浠借瘉鍙风爜', type: 'idCard' }]"
+ >
+ <ProFormText
+ v-model.trim="form.idNumber"
+ placeholder="璇疯緭鍏ヨ韩浠借瘉鍙风爜"
+ @change="handleIdNumberChange"
+ />
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="6">
+ <ProFormItemV2
+ label="鎶ユ鏃堕棿:"
+ prop="reportedTime"
+ :check-rules="[{ message: '璇烽�夋嫨鎶ユ鏃堕棿' }]"
+ >
+ <ProFormDatePicker
+ v-model="form.reportedTime"
+ type="datetime"
+ format="YYYY-MM-DD HH:mm:ss"
+ value-format="YYYY-MM-DD HH:mm:ss"
+ placeholder="璇烽�夋嫨鎶ユ鏃堕棿"
+ :disabled-date="disabledReportedDate"
+ @change="handleReportedTimeChange"
+ :key="datePickerKey"
+ ></ProFormDatePicker>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="6">
+ <ProFormItemV2
+ label="鑱旂郴鐢佃瘽:"
+ prop="contactNumber"
+ :check-rules="[{ message: '璇疯緭鍏ヨ仈绯荤數璇�', type: 'phone' }]"
+ >
+ <ProFormText v-model.trim="form.contactNumber" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" />
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="6">
+ <ProFormItemV2
+ label="澶囩敤鑱旂郴鐢佃瘽:"
+ prop="bakContactNumber"
+ :check-rules="[{ message: '璇疯緭鍏ュ鐢ㄨ仈绯荤數璇�', type: 'phone', required: false }]"
+ >
+ <ProFormText
+ v-model.trim="form.bakContactNumber"
+ placeholder="璇疯緭鍏ュ鐢ㄨ仈绯荤數璇�"
+ />
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="6">
+ <ProFormItemV2 label="濮撳悕:" prop="name" :check-rules="[{ message: '璇疯緭鍏ュ鍚�' }]">
+ <ProFormText v-model.trim="form.name" placeholder="璇疯緭鍏ュ鍚�" :maxlength="30" />
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="6">
+ <ProFormItemV2
+ label="淇濆崟鍙�:"
+ prop="name"
+ :check-rules="[{ message: '璇疯緭鍏ヤ繚鍗曞彿' }]"
+ >
+ <ProFormText v-model.trim="form.name" placeholder="璇疯緭鍏ヤ繚鍗曞彿" :maxlength="30" />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ </ProForm>
+ </ChunkCell>
+ <ChunkCell title="淇濆崟淇℃伅">
+ <ProForm :model="form" ref="insuranceBaseFormRef" label-width="120px" :is-read="isDetail">
+ <ProFormCol>
+ <ProFormColItem :span="6">
+ <ProFormItemV2
+ label="鍙備繚鏈烘瀯:"
+ prop="insuredInstitution"
+ :check-rules="[{ message: '璇烽�夋嫨鍙備繚鏈烘瀯' }]"
+ >
+ <ProFormSelect
+ placeholder="璇烽�夋嫨鍙備繚鏈烘瀯"
+ :value-enum="InsuredInstitutionEnum"
+ clearable
+ v-model="form.insuredInstitution"
+ ></ProFormSelect>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="6">
+ <ProFormItemV2
+ label="鎶曚繚鏂规:"
+ prop="insuranceScheme"
+ :check-rules="[{ message: '璇烽�夋嫨鎶曚繚鏂规' }]"
+ >
+ <ProFormSelect
+ placeholder="璇烽�夋嫨鎶曚繚鏂规"
+ :value-enum="InsuranceSchemeEnum"
+ clearable
+ v-model="form.insuranceScheme"
+ ></ProFormSelect>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormMixinsItemContainer>
+ <ProFormCol>
+ <ProFormColItem :span="6">
+ <ProFormItemV2 label="璧蜂繚鏃ユ湡:" prop="insuranceBeginTime" mode="read">
+ <ProFormDatePicker
+ v-model="form.insuranceBeginTime"
+ type="date"
+ value-format="YYYY-MM-DD"
+ placeholder="璇烽�夋嫨璧蜂繚鏃ユ湡"
+ ></ProFormDatePicker>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="6">
+ <ProFormItemV2 label="鎶曚繚浜�:" prop="laborContractEnterprise" mode="read">
+ <ProFormText
+ v-model.trim="form.laborContractEnterprise"
+ placeholder="璇疯緭鍏ユ姇淇濅汉"
+ />
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="6">
+ <ProFormItemV2 label="宸ョ:" prop="workType" mode="read">
+ <ProFormText v-model.trim="form.workType" placeholder="璇疯緭鍏ュ伐绉�" />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ </ProFormMixinsItemContainer>
+ <ProFormMixinsItemContainer>
+ <ProFormCol>
+ <ProFormColItem :span="6">
+ <ProFormItemV2 label="缁堜繚鏃ユ湡:" prop="insuranceEndTime" mode="read">
+ <ProFormDatePicker
+ v-model="form.insuranceEndTime"
+ type="date"
+ value-format="YYYY-MM-DD"
+ placeholder="璇烽�夋嫨缁堜繚鏃ユ湡"
+ ></ProFormDatePicker>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="6">
+ <ProFormItemV2 label="琚繚浜�:" prop="workEnterprise" mode="read">
+ <ProFormText v-model.trim="form.workEnterprise" placeholder="璇疯緭鍏ヨ淇濅汉" />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ </ProFormMixinsItemContainer>
+ </ProForm>
+ </ChunkCell>
+ <ChunkCell title="淇濆崟淇℃伅">
+ <ProForm :model="form" ref="insuranceFormRef" label-width="160px" :is-read="isDetail">
+ <ProFormCol>
+ <ProFormColItem :span="6">
+ <ProFormItemV2
+ label="浜嬫晠绫诲瀷:"
+ prop="accidentType"
+ :check-rules="[{ message: '璇烽�夋嫨浜嬫晠绫诲瀷' }]"
+ >
+ <ProFormSelect
+ placeholder="璇烽�夋嫨浜嬫晠绫诲瀷"
+ :value-enum="AccidentTypeEnum"
+ clearable
+ v-model="form.accidentType"
+ ></ProFormSelect>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="6">
+ <ProFormItemV2
+ label="浜嬫晠鍙戠敓鏃堕棿:"
+ prop="accidentTime"
+ :check-rules="[{ message: '璇烽�夋嫨浜嬫晠鍙戠敓鏃堕棿' }]"
+ >
+ <ProFormDatePicker
+ v-model="form.accidentTime"
+ type="datetime"
+ format="YYYY-MM-DD HH:mm:ss"
+ placeholder="璇烽�夋嫨浜嬫晠鍙戠敓鏃堕棿"
+ ></ProFormDatePicker>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="6">
+ <ProFormItemV2 label="浼ゆ畫姣斾緥:" prop="disabilityRatio">
+ <ProFormInputNumber
+ v-model="form.disabilityRatio"
+ :controls="false"
+ :min="0"
+ :max="100"
+ unit="%"
+ ></ProFormInputNumber>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="18">
+ <ProFormItemV2
+ label="浜嬪彂鍦扮偣:"
+ prop="accidentAddress"
+ :check-rules="[{ message: '璇疯緭鍏ヤ簨鍙戝湴鐐�' }]"
+ >
+ <ProFormText
+ v-model.trim="form.accidentAddress"
+ placeholder="璇疯緭鍏ヤ簨鍙戝湴鐐�"
+ :maxlength="100"
+ />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="24">
+ <ProFormItemV2
+ label="浜嬫晠缁忚繃:"
+ prop="accidentProcess"
+ :check-rules="[{ message: '璇疯緭鍏ヤ簨鏁呯粡杩�' }]"
+ >
+ <ProFormTextArea
+ v-model="form.accidentProcess"
+ :rows="10"
+ placeholder="璇疯緭鍏ヤ簨鏁呯粡杩�"
+ :maxlength="500"
+ show-word-limit
+ ></ProFormTextArea>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <div class="attachments-wrapper">
+ <div class="attachments">
+ <ProFormItemV2 label="浼よ�呰韩浠借瘉鐓х墖(姝e弽):">
+ <div class="id-imgUrl-wrapper">
+ <ProFormItemV2 prop="attachmentFrontIdCards" class="pro-form-item-label-hidden">
+ <ProFormImageUpload
+ v-model:file-url="form.attachmentFrontIdCards"
+ :limitFileSize="10"
+ btnText="韬唤璇佷汉鍍忛潰"
+ :showTip="false"
+ >
+ </ProFormImageUpload>
+ </ProFormItemV2>
+ <ProFormItemV2 prop="attachmentBackIdCards" class="pro-form-item-label-hidden">
+ <ProFormImageUpload
+ v-model:file-url="form.attachmentBackIdCards"
+ :limitFileSize="10"
+ btnText="韬唤璇佸浗寰介潰"
+ :showTip="false"
+ >
+ </ProFormImageUpload>
+ </ProFormItemV2>
+ </div>
+ </ProFormItemV2>
+ <ProFormItemV2 prop="attachmentSites" label="鍙椾激鍦哄湴:">
+ <ProFormImageUpload
+ v-model:file-url="form.attachmentSites"
+ :limitFileSize="10"
+ :showTip="false"
+ >
+ </ProFormImageUpload>
+ </ProFormItemV2>
+ <ProFormItemV2 prop="attachmentHandheldIdCards" label="浼よ�呮墜鎸佽韩浠借瘉鐓�:">
+ <ProFormImageUpload
+ v-model:file-url="form.attachmentHandheldIdCards"
+ :limitFileSize="10"
+ :showTip="false"
+ >
+ </ProFormImageUpload>
+ </ProFormItemV2>
+ <ProFormItemV2 prop="attachmentAreas" label="鍙椾激閮ㄤ綅:">
+ <ProFormImageUpload
+ v-model:file-url="form.attachmentAreas"
+ :limitFileSize="10"
+ :showTip="false"
+ :limitFileCount="0"
+ >
+ </ProFormImageUpload>
+ </ProFormItemV2>
+ <ProFormItemV2 prop="attachmentCases" label="鐥呬緥鐓х墖:">
+ <ProFormImageUpload
+ v-model:file-url="form.attachmentCases"
+ :limitFileSize="10"
+ :showTip="false"
+ :limitFileCount="0"
+ >
+ </ProFormImageUpload>
+ </ProFormItemV2>
+ </div>
+ <ClaimPicDemoView />
+ </div>
+ <div class="chuck-add-or-edit-actions">
+ <el-button @click="handleBack">鍏抽棴</el-button>
+ <el-button v-if="!isDetail" type="primary" @click="handleSubmit">鎻愪氦</el-button>
+ </div>
+ </ProForm>
+ </ChunkCell>
+ <!-- <ChunkCell title="鐞嗚禂缁撴灉">
+ <ProForm :model="form" ref="claimFormRef" label-width="120px">
+ <ProFormCol>
+ <ProFormColItem :span="6">
+ <ProFormItemV2 label="鐞嗚禂缁撴灉:" prop="claimResult">
+ <ProFormSelect
+ placeholder="璇烽�夋嫨鐞嗚禂缁撴灉"
+ :value-enum="InsuranceClaimResultEnumText"
+ clearable
+ v-model="form.claimResult"
+ ></ProFormSelect>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="6">
+ <ProFormItemV2 label="缁�/鎾ゆ鏃堕棿:" prop="claimResultTime">
+ <ProFormDatePicker
+ v-model="form.claimResultTime"
+ type="datetime"
+ format="YYYY-MM-DD"
+ value-format="YYYY-MM-DD"
+ placeholder="璇烽�夋嫨缁�/鎾ゆ鏃堕棿"
+ ></ProFormDatePicker>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormItemV2 label="涓嬫閲戦:" prop="downPaymentAmount">
+ <ProFormInputNumber
+ v-model="form.downPaymentAmount"
+ :controls="false"
+ :min="0"
+ :precision="2"
+ ></ProFormInputNumber>
+ </ProFormItemV2>
+ <div class="chuck-add-or-edit-actions">
+ <el-button @click="handleBack">鍏抽棴</el-button>
+ <el-button type="primary" @click="handleSubmit">鎻愪氦</el-button>
+ </div>
+ </ProForm>
+ </ChunkCell> -->
+ </AppScrollContainer>
+ <SelectOrderDialog v-bind="dialogProps" />
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import * as insuranceOrderServices from '@/services/api/InsuranceOrder';
+import * as insuranceClaimServices from '@/services/api/InsuranceClaim';
+import {
+ ChunkCell,
+ AppScrollContainer,
+ LoadingLayout,
+ ProForm,
+ ProFormCol,
+ ProFormColItem,
+ ProFormText,
+ ProFormDatePicker,
+ ProFormSelect,
+ ProFormImageUpload,
+ ProFormTextArea,
+ ProFormItemV2,
+ ProFormMixinsItemContainer,
+ ProFormInputNumber,
+ useFormDialog,
+} from '@bole-core/components';
+import { FormInstance, DatePickerInstance } from 'element-plus';
+import { validateFormList, format } from '@/utils';
+import {
+ InsuredInstitutionEnum,
+ InsuranceSchemeEnum,
+ AccidentTypeEnum,
+ InsuranceClaimAttachmentBusinessTypeEnum,
+ InsuranceClaimResultEnumText,
+} from '@/constants';
+import { useRouteView } from '@/hooks';
+import { Message, BoleRegExp } from '@bole-core/core';
+import ClaimPicDemoView from './ClaimPicDemoView.vue';
+import SelectOrderDialog from './SelectOrderDialog.vue';
+import { useQueryClient } from '@tanstack/vue-query';
+import { convertFormToattAchments } from '../utils';
+import { useInsuranceClaimDetail } from '../hooks';
+
+defineOptions({
+ name: 'InsuranceClaimDetail',
+});
+
+type Props = {
+ isDetail?: boolean;
+};
+
+const props = withDefaults(defineProps<Props>(), {
+ isDetail: false,
+});
+
+const route = useRoute();
+const insuranceOrderId = (route.params.id as string) ?? '';
+const fromRoute = route.query.fromRoute as string;
+const { closeViewPush } = useRouteView();
+
+const datePickerKey = ref(1);
+
+const { form, isLoading, claimDetail, disabledReportedDate, queryClaimDetailByOrderId, resetForm } =
+ useInsuranceClaimDetail({
+ insuranceOrderId,
+ });
+
+// const { existedInsuranceOrderList } = useInsuranceOrderListByOrderRelevance({
+// params: computed(() => ({
+// idIdNumber: form.idNumber,
+// reportedTime: form.reportedTime,
+// })),
+// onSuccess(data) {
+// if (data.length == 1) {
+// // importInsuranceOrderData(data[0]);
+// form.insuranceOrderId = data[0].id;
+// } else if (data.length > 1) {
+// handleAdd({
+// insuranceOrderList: data,
+// });
+// }
+// },
+// });
+
+const { dialogProps, handleAdd, editForm } = useFormDialog({
+ onConfirm: handleSelectedOrder,
+ defaultFormParams: {
+ insuranceOrderId: '',
+ insuranceOrderList: [] as API.InsuranceOrderListOutput[],
+ },
+});
+
+async function handleSelectedOrder() {
+ try {
+ datePickerKey.value += 1;
+ resetForm();
+ await nextTick();
+ form.insuranceOrderId = editForm.insuranceOrderId;
+ // let claimDetail = await queryClaimDetailByOrderId();
+ // if (claimDetail) {
+ // Message.errorMessage('璇ヤ繚鍗曞凡鐞嗚禂');
+ // }
+ } catch (error) {}
+}
+
+const queryClient = useQueryClient();
+
+async function ensureInsuranceOrderList() {
+ try {
+ if (BoleRegExp.RegIDCard.test(form.idNumber) && !!form.reportedTime) {
+ let params: API.QueryInsuranceOrderListByOrderRelevanceInput = {
+ idIdNumber: form.idNumber,
+ reportedTime: form.reportedTime,
+ };
+ let existedInsuranceOrderList = await queryClient.ensureQueryData({
+ queryKey: ['insuranceOrderServices/getInsuranceOrderListByOrderRelevance', params],
+ queryFn: async () => {
+ return await insuranceOrderServices.getInsuranceOrderListByOrderRelevance(params, {
+ showLoading: false,
+ });
+ },
+ });
+ if (existedInsuranceOrderList.length == 1) {
+ form.insuranceOrderId = existedInsuranceOrderList[0].id;
+ } else if (existedInsuranceOrderList.length > 1) {
+ handleAdd({
+ insuranceOrderList: existedInsuranceOrderList,
+ });
+ } else {
+ Message.errorMessage('鏈壘鍒板尮閰嶇殑淇濆崟淇℃伅');
+ }
+ }
+
+ // return existedInsuranceOrderList;
+ } catch (error) {}
+}
+
+function handleIdNumberChange() {
+ ensureInsuranceOrderList();
+}
+
+function handleReportedTimeChange() {
+ if (form.accidentTime === '') {
+ form.accidentTime = form.reportedTime;
+ }
+ ensureInsuranceOrderList();
+}
+
+const formRef = ref<FormInstance>();
+const insuranceBaseFormRef = ref<FormInstance>();
+const insuranceFormRef = ref<FormInstance>();
+const claimFormRef = ref<FormInstance>();
+
+async function handleSubmit() {
+ try {
+ const valid = await validateFormList([
+ formRef.value,
+ insuranceBaseFormRef.value,
+ insuranceFormRef.value,
+ ]);
+
+ if (valid) {
+ addInsuranceClaim();
+ }
+ } catch (error) {}
+}
+
+async function addInsuranceClaim() {
+ try {
+ if (claimDetail.value === undefined) {
+ Message.errorMessage('鏈壘鍒板尮閰嶇殑淇濆崟淇℃伅');
+ return;
+ }
+ let params: API.AddInsuranceClaimInput = {
+ channel: form.channel,
+ name: form.name,
+ idNumber: form.idNumber,
+ workType: form.workType,
+ laborContractEnterprise: form.laborContractEnterprise,
+ workEnterprise: form.workEnterprise,
+ insuranceBeginTime: format(form.insuranceBeginTime),
+ insuranceEndTime: format(form.insuranceEndTime),
+ insuredInstitution: form.insuredInstitution,
+ insuranceScheme: form.insuranceScheme,
+ onJobFlag: form.onJobFlag,
+ gender: form.gender,
+ age: form.age,
+ premiumAmount: form.premiumAmount,
+ incDecAmount: form.incDecAmount,
+ insuranceOrderId: form.insuranceOrderId,
+ reportedTime: format(form.reportedTime, 'YYYY-MM-DD HH:mm:ss'),
+ contactNumber: form.contactNumber,
+ bakContactNumber: form.bakContactNumber,
+ accidentType: form.accidentType,
+ accidentTime: format(form.accidentTime, 'YYYY-MM-DD HH:mm:ss'),
+ // disabilityRatio: form.disabilityRatio,
+ accidentAddress: form.accidentAddress,
+ accidentProcess: form.accidentProcess,
+ // claimResult: form.claimResult,
+ // claimResultTime: form.claimResultTime,
+ attachments: [
+ ...convertFormToattAchments(
+ form.attachmentFrontIdCards,
+ InsuranceClaimAttachmentBusinessTypeEnum.InjuredIdCardImg
+ ),
+ ...convertFormToattAchments(
+ form.attachmentBackIdCards,
+ InsuranceClaimAttachmentBusinessTypeEnum.InjuredIdCardImg
+ ),
+ ...convertFormToattAchments(
+ form.attachmentSites,
+ InsuranceClaimAttachmentBusinessTypeEnum.InjurySiteImg
+ ),
+ ...convertFormToattAchments(
+ form.attachmentHandheldIdCards,
+ InsuranceClaimAttachmentBusinessTypeEnum.InjuredHandheldIdCardImg
+ ),
+ ...convertFormToattAchments(
+ form.attachmentAreas,
+ InsuranceClaimAttachmentBusinessTypeEnum.InjuredAreaImg
+ ),
+ ...convertFormToattAchments(
+ form.attachmentCases,
+ InsuranceClaimAttachmentBusinessTypeEnum.CasesImg
+ ),
+ ],
+ };
+ // if (form.downPaymentAmount) params.downPaymentAmount = form.downPaymentAmount;
+ if (form.disabilityRatio) params.disabilityRatio = form.disabilityRatio;
+ let res: number;
+ // if (!!claimDetail.value) {
+ // Message.errorMessage('璇ヤ繚鍗曞凡鐞嗚禂');
+ // } else {
+ res = await insuranceClaimServices.addInsuranceClaim(params);
+ // }
+ if (res) {
+ Message.successMessage('鎿嶄綔鎴愬姛');
+ handleBack();
+ }
+ } catch (error) {}
+}
+
+function handleBack() {
+ closeViewPush(route, {
+ name: fromRoute ?? 'Home',
+ });
+}
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+
+.attachments-wrapper {
+ position: relative;
+ display: flex;
+
+ .attachments {
+ flex: 1;
+ min-width: 0;
+ }
+}
+
+.id-imgUrl-wrapper {
+ display: flex;
+ gap: 40px;
+}
+</style>
--
Gitblit v1.9.1