From 80dd2bebbe3d204cc7833a4793aba67bba356b1d Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期一, 24 三月 2025 19:19:20 +0800
Subject: [PATCH] feat: 页面

---
 src/views/Home/components/InsureOrderInfoView.vue |  256 +++++++++++++++++++++++++++------------------------
 1 files changed, 136 insertions(+), 120 deletions(-)

diff --git a/src/views/Home/components/InsureOrderInfoView.vue b/src/views/Home/components/InsureOrderInfoView.vue
index fba6353..a8cf6e4 100644
--- a/src/views/Home/components/InsureOrderInfoView.vue
+++ b/src/views/Home/components/InsureOrderInfoView.vue
@@ -1,111 +1,110 @@
 <template>
-  <AppScrollContainer>
-    <ChunkCell title="">
-      <ProForm :model="detail" ref="formRef" label-width="120px" :is-read="true">
-        <ProFormCol>
-          <ProFormColItem :span="8">
-            <ProFormItemV2 label="淇濆崟鍙�:" prop="orderNo">
-              <ProFormText v-model.trim="detail.orderNo" />
-            </ProFormItemV2>
-          </ProFormColItem>
-          <ProFormColItem :span="8">
-            <ProFormItemV2 label="鐢熸晥鐘舵��:" prop="insuranceTypeCode">
-              <ProFormRadio v-model="detail.insuranceType" :value-enum="insuranceTypeText" />
-            </ProFormItemV2>
-          </ProFormColItem>
-        </ProFormCol>
-        <ProFormCol>
-          <ProFormColItem :span="8">
-            <ProFormItemV2 label="淇濋櫓璧锋湡:" prop="applyTime">
-              <ProFormDatePicker v-model.trim="detail.createTime" format="YYYY-MM-DD HH:mm" />
-            </ProFormItemV2>
-          </ProFormColItem>
-          <ProFormColItem :span="8">
-            <ProFormItemV2 label="淇濋櫓姝㈡湡:" prop="insuranceTypeCode">
-              <ProFormDatePicker v-model.trim="detail.createTime" format="YYYY-MM-DD HH:mm" />
-            </ProFormItemV2>
-          </ProFormColItem>
-          <ProFormColItem :span="8">
-            <ProFormItemV2 label="鎶曚繚鏂瑰紡:" prop="insureWay">
-              <ProFormRadio v-model="detail.insuranceType" :value-enum="insuranceTypeText" />
-            </ProFormItemV2>
-          </ProFormColItem>
-        </ProFormCol>
-        <ProFormCol>
-          <ProFormColItem :span="8">
-            <ProFormItemV2 label="鍙備繚鏈烘瀯:" prop="applyTime">
-              <ProFormText v-model.trim="detail.orderNo" />
-            </ProFormItemV2>
-          </ProFormColItem>
-          <ProFormColItem :span="8">
-            <ProFormItemV2 label="鎶曚繚鏂规:" prop="applyTime">
-              <ProFormText v-model.trim="detail.orderNo" />
-            </ProFormItemV2>
-          </ProFormColItem>
-          <ProFormColItem :span="8">
-            <ProFormItemV2 label="鎶曚繚浜烘暟:" prop="numberOfFailed">
-              <ProFormInputNumber v-model.trim="detail.incDecAmount" unit="浜�" />
-            </ProFormItemV2>
-          </ProFormColItem>
-        </ProFormCol>
-        <ProFormCol>
-          <ProFormColItem :span="8">
-            <ProFormItemV2 label="鎶曚繚浜�:" prop="companyName">
-              <ProFormText v-model.trim="detail.orderNo" />
-            </ProFormItemV2>
-          </ProFormColItem>
-          <ProFormColItem :span="8">
-            <ProFormItemV2 label="琚繚浜�:" prop="insuranceTypeCode">
-              <ProFormText v-model.trim="detail.orderNo" />
-            </ProFormItemV2>
-          </ProFormColItem>
-        </ProFormCol>
-      </ProForm>
-    </ChunkCell>
-    <ChunkCell title="浜哄憳淇℃伅">
-      <template #titleRight>
-        <el-button type="primary" @click="handleBatchChange">鎵规敼鐢宠</el-button>
-      </template>
-      <ProTableQueryFilterBar @on-reset="reset">
-        <template #query>
-          <QueryFilterItem>
-            <SearchInput
-              v-model="extraParamState.keyWord"
-              style="width: 300px"
-              placeholder="浜哄憳濮撳悕/韬唤璇佸彿/鎵嬫満鍙�"
-              @on-click-search="getBatchRefundInfoDetail"
-            >
-            </SearchInput>
-          </QueryFilterItem>
+  <LoadingLayout :loading="state.loading">
+    <AppScrollContainer>
+      <ChunkCell title="">
+        <ProForm :model="detail" ref="formRef" label-width="120px" :is-read="true">
+          <ProFormCol>
+            <ProFormColItem :span="8">
+              <ProFormItemV2 label="淇濆崟鍙�:" prop="orderNo">
+                <ProFormText v-model.trim="detail.orderNo" />
+              </ProFormItemV2>
+            </ProFormColItem>
+            <ProFormColItem :span="8">
+              <ProFormItemV2 label="鐢熸晥鐘舵��:" prop="insuranceTypeCode">
+                <ProFormRadio v-model="detail.insuranceType" :value-enum="insuranceTypeText" />
+              </ProFormItemV2>
+            </ProFormColItem>
+          </ProFormCol>
+          <ProFormCol>
+            <ProFormColItem :span="8">
+              <ProFormItemV2 label="淇濋櫓璧锋湡:" prop="applyTime">
+                <ProFormDatePicker v-model.trim="detail.createTime" format="YYYY-MM-DD HH:mm" />
+              </ProFormItemV2>
+            </ProFormColItem>
+            <ProFormColItem :span="8">
+              <ProFormItemV2 label="淇濋櫓姝㈡湡:" prop="insuranceTypeCode">
+                <ProFormDatePicker v-model.trim="detail.createTime" format="YYYY-MM-DD HH:mm" />
+              </ProFormItemV2>
+            </ProFormColItem>
+            <ProFormColItem :span="8">
+              <ProFormItemV2 label="鎶曚繚鏂瑰紡:" prop="insureWay">
+                <ProFormRadio v-model="detail.insuranceType" :value-enum="insuranceTypeText" />
+              </ProFormItemV2>
+            </ProFormColItem>
+          </ProFormCol>
+          <ProFormCol>
+            <ProFormColItem :span="8">
+              <ProFormItemV2 label="鍙備繚鏈烘瀯:" prop="insuredInstitution">
+                <ProFormRadio
+                  v-model="detail.insuredInstitution"
+                  :value-enum="InsuredInstitutionEnum"
+                />
+              </ProFormItemV2>
+            </ProFormColItem>
+            <ProFormColItem :span="8">
+              <ProFormItemV2 label="鎶曚繚鏂规:" prop="insuranceScheme">
+                <ProFormRadio v-model="detail.insuranceScheme" :value-enum="InsuranceSchemeEnum" />
+              </ProFormItemV2>
+            </ProFormColItem>
+            <ProFormColItem :span="8">
+              <ProFormItemV2 label="鎶曚繚浜烘暟:" prop="numberOfFailed">
+                <ProFormInputNumber v-model.trim="detail.incDecAmount" unit="浜�" />
+              </ProFormItemV2>
+            </ProFormColItem>
+          </ProFormCol>
+          <ProFormCol>
+            <ProFormColItem :span="8">
+              <ProFormItemV2 label="鎶曚繚浜�:" prop="companyName">
+                <ProFormText v-model.trim="detail.orderNo" />
+              </ProFormItemV2>
+            </ProFormColItem>
+            <ProFormColItem :span="8">
+              <ProFormItemV2 label="琚繚浜�:" prop="insuranceTypeCode">
+                <ProFormText v-model.trim="detail.orderNo" />
+              </ProFormItemV2>
+            </ProFormColItem>
+          </ProFormCol>
+        </ProForm>
+      </ChunkCell>
+      <ChunkCell title="浜哄憳淇℃伅">
+        <template #titleRight>
+          <el-button type="primary" @click="handleBatchChange">鎵规敼鐢宠</el-button>
         </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
-          >
-        </template>
-      </ProTableQueryFilterBar>
-      <ProTableV2
-        v-bind="proTableProps"
-        :columns="column"
-        :operationBtns="operationBtns"
-        :auto-height="false"
-        ref="proTable"
-        :tableProps="{
-          maxHeight: '400px',
-        }"
-      >
-      </ProTableV2>
-    </ChunkCell>
-    <ChangePersonInfoDialog v-bind="dialogProps"></ChangePersonInfoDialog>
-  </AppScrollContainer>
+        <ProTableQueryFilterBar @on-reset="reset">
+          <template #query>
+            <QueryFilterItem>
+              <SearchInput
+                v-model="extraParamState.keyWord"
+                style="width: 300px"
+                placeholder="濮撳悕/韬唤璇佸彿/鎵嬫満鍙�"
+                @on-click-search="getBatchRefundInfoDetail"
+              >
+              </SearchInput>
+            </QueryFilterItem>
+          </template>
+          <template #btn>
+            <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
+          v-bind="proTableProps"
+          :columns="column"
+          :operationBtns="operationBtns"
+          :auto-height="false"
+          ref="proTable"
+          :tableProps="{
+            maxHeight: '400px',
+          }"
+        >
+        </ProTableV2>
+      </ChunkCell>
+      <ChangePersonInfoDialog v-bind="dialogProps"></ChangePersonInfoDialog>
+    </AppScrollContainer>
+  </LoadingLayout>
 </template>
 
 <script setup lang="ts">
@@ -126,15 +125,19 @@
   useTable,
   ProTableV2,
   ProFormRadio,
-  FieldSelect,
   defineOperationBtns,
   useFormDialog,
 } from '@bole-core/components';
-import { insuranceTypeText } from '@/constants';
+import {
+  InsuranceOrderTempPath,
+  insuranceTypeText,
+  InsuredInstitutionEnum,
+  InsuranceSchemeEnum,
+} 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',
@@ -207,9 +210,9 @@
     emits: {
       onClick: (role) => handleChangeInfo(role),
     },
-    extraProps: {
-      hide: (row: API.InsuranceOrderListOutput) => !row.orderBillFile,
-    },
+    // extraProps: {
+    //   hide: (row: API.InsuranceOrderListOutput) => !row.orderBillFile,
+    // },
   },
   {
     data: {
@@ -217,11 +220,11 @@
       name: '鐞嗚禂璇︽儏',
     },
     emits: {
-      onClick: (role) => handleInsureClaimDetail(),
+      onClick: (role) => handleInsureClaimDetail(role),
     },
-    extraProps: {
-      hide: (row: API.InsuranceOrderListOutput) => !row.orderBillFile,
-    },
+    // extraProps: {
+    //   hide: (row: API.InsuranceOrderListOutput) => !row.orderBillFile,
+    // },
   },
 ]);
 
@@ -240,7 +243,7 @@
     return await insuranceOrderServices.getInsuranceOrderDetail(
       { id: id },
       {
-        showLoading: false,
+        showLoading: !state.loading,
       }
     );
   },
@@ -254,7 +257,8 @@
   await queryClient.ensureQueryData({
     queryKey: ['insuranceOrderServices/getInsuranceOrderDetail', id],
   });
-  getBatchRefundInfoDetail();
+  await getBatchRefundInfoDetail();
+  state.loading = false;
 });
 
 const {
@@ -290,7 +294,9 @@
   }
 );
 
-function handleTemplateDownload() {}
+function handleTemplateDownload() {
+  downloadFileByUrl(InsuranceOrderTempPath, '浜哄憳淇℃伅妯℃澘');
+}
 function handleClear() {}
 function handleImport() {}
 
@@ -320,7 +326,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>

--
Gitblit v1.9.1