From 89f387786da0e4383cf06ee162526db54971f9cf Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期四, 23 十月 2025 15:21:16 +0800
Subject: [PATCH] fix: s
---
src/views/Home/Home.vue | 410 +++++++++++++++++++---------------------------------------
1 files changed, 133 insertions(+), 277 deletions(-)
diff --git a/src/views/Home/Home.vue b/src/views/Home/Home.vue
index 5b201e5..b5419c2 100644
--- a/src/views/Home/Home.vue
+++ b/src/views/Home/Home.vue
@@ -1,308 +1,164 @@
<template>
- <LoadingLayout :loading="state.loading">
+ <LoadingLayout :loading="isLoading">
<AppContainer>
- <div class="home-top-view">
- <ProForm :mode="form">
- <ProFormItemV2 label="鎶ユ骞翠唤:">
- <ProFormDatePicker
- v-model="form.year"
- type="year"
- format="YYYY"
- value-format="YYYY"
- placeholder="鎶ユ骞翠唤"
- :disabled-date="disabledYear"
- ></ProFormDatePicker>
- </ProFormItemV2>
- <ProFormItemV2 label="鎶ユ鏈堜唤:">
- <ProFormDatePicker
- v-model="form.month"
- type="month"
- format="M"
- value-format="M"
- placeholder="鎶ユ鏈堜唤"
- ></ProFormDatePicker>
- </ProFormItemV2>
- <ProFormItemV2 label="鐞嗚禂娓犻亾:">
- <ProFormSelect
- v-model="form.claimChannel"
- placeholder="鐞嗚禂娓犻亾"
- :value-enum="insuranceClaimChannelListForSelect"
- clearable
- style="width: 100%"
+ <ChunkCell title="寰呭鐞�">
+ <div class="data-board-card-list">
+ <DataBoardCard title="鐢虫姤寰呭鏍�" :contentBetween="true">
+ <DataBoardCardPrice
+ :value="detail?.waitCheckEnterpriseNumber ?? 0"
+ :isInline="true"
+ :useThousand="false"
+ unit=""
/>
- </ProFormItemV2>
- <ProFormItemV2 label="鎶ユ鏁伴噺:">
- <div class="home-top-view-count">{{ claimCount ?? 0 }}浜�</div>
- </ProFormItemV2>
- </ProForm>
- <Chart />
- </div>
- <ProTableQueryFilterBar @on-reset="reset">
- <template #query>
- <QueryFilterItem>
- <FieldSelect
- v-model="extraParamState.claimChannel"
- placeholder="鐞嗚禂娓犻亾"
- :value-enum="insuranceClaimChannelListForSelect"
- clearable
- @change="getList()"
+ <el-button type="primary" link @click="goToAudit">鍘诲鏍�</el-button>
+ </DataBoardCard>
+ <DataBoardCard title="濂栧姳閲戝緟鐧昏" :contentBetween="true">
+ <DataBoardCardPrice
+ :isInline="true"
+ :value="detail?.waitForSettleRewardNumber ?? 0"
+ :useThousand="false"
+ unit=""
/>
- </QueryFilterItem>
- <QueryFilterItem>
- <FieldSelect
- v-model="extraParamState.claimResult"
- placeholder="鐞嗚禂缁撴灉"
- :value-enum="InsuranceClaimResultEnumText"
- clearable
- @change="getList()"
+ <el-button type="primary" link @click="goToGrant">鍘诲彂鏀�</el-button>
+ </DataBoardCard>
+ <DataBoardCard title="鎻愮幇寰呭鎵�" :contentBetween="true">
+ <DataBoardCardPrice
+ :isInline="true"
+ :value="detail?.waitForSettleRewardNumber ?? 0"
+ :useThousand="false"
+ unit=""
/>
- </QueryFilterItem>
- <QueryFilterItem>
- <SearchInput
- v-model="extraParamState.idNumber"
- style="width: 260px"
- placeholder="韬唤璇佸彿鐮�"
- :showSearchBtn="false"
- >
- </SearchInput>
- </QueryFilterItem>
- <QueryFilterItem>
- <SearchInput
- v-model="extraParamState.laborContractEnterprise"
- style="width: 260px"
- placeholder="鍔冲姩鍚堝悓鍏徃"
- :showSearchBtn="false"
- >
- </SearchInput>
- </QueryFilterItem>
- <QueryFilterItem>
- <SearchInput
- v-model="extraParamState.workEnterprise"
- style="width: 260px"
- placeholder="鐢ㄥ伐浼佷笟"
- @on-click-search="getList"
- >
- </SearchInput>
- </QueryFilterItem>
- </template>
- <template #btn>
- <el-button @click="handleExport()" icon="Download" type="primary">瀵煎嚭</el-button>
- <el-button @click="handleExportPic()" icon="Download" type="primary">瀵煎嚭鍥剧墖</el-button>
- </template>
- </ProTableQueryFilterBar>
- <ProTableV2 v-bind="proTableProps" :columns="HomeColumns" :operationBtns="operationBtns">
- </ProTableV2>
+ <el-button type="primary" link @click="goToWithdrawalApproval">鍘诲鎵�</el-button>
+ </DataBoardCard>
+ <DataBoardCard title="鍑鸿处寰呭鎵�" :contentBetween="true">
+ <DataBoardCardPrice
+ :isInline="true"
+ :value="detail?.waitForSettleRewardNumber ?? 0"
+ :useThousand="false"
+ unit=""
+ />
+ <el-button type="primary" link @click="goToRewardApplyTradeCheck">鍘诲鎵�</el-button>
+ </DataBoardCard>
+ <DataBoardCard title="璐㈠姟寰呭鏍�" :contentBetween="true">
+ <DataBoardCardPrice
+ :isInline="true"
+ :value="detail?.waitForSettleRewardNumber ?? 0"
+ :useThousand="false"
+ unit=""
+ />
+ <el-button type="primary" link @click="goToFinancialApproval">鍘诲鏍�</el-button>
+ </DataBoardCard>
+ </div>
+ </ChunkCell>
+ <ChunkCell title="鏁版嵁鐪嬫澘">
+ <div class="data-board-card-list">
+ <DataBoardCard title="绱宸插鏍镐紒涓�">
+ <DataBoardCardPrice
+ :value="detail?.accumulatedCheckEnterpriseNumber ?? 0"
+ :useThousand="false"
+ unit="瀹�"
+ />
+ </DataBoardCard>
+ <DataBoardCard title="绱宸插鏍搁�氳繃浼佷笟">
+ <DataBoardCardPrice
+ :value="detail?.accumulatedCheckPassEnterpriseNumber ?? 0"
+ :useThousand="false"
+ unit="瀹�"
+ />
+ </DataBoardCard>
+ <DataBoardCard title="绱鏈鏍搁�氳繃浼佷笟">
+ <DataBoardCardPrice
+ :value="detail?.accumulatedCheckRejectEnterpriseNumber ?? 0"
+ :useThousand="false"
+ unit="瀹�"
+ />
+ </DataBoardCard>
+ <DataBoardCard title="绱宸插彂鏀�">
+ <DataBoardCardPrice :value="detail?.accumulatedHasSettleRewardAmount ?? 0" unit="鍏�" />
+ </DataBoardCard>
+ <DataBoardCard title="绱寰呭彂鏀�">
+ <DataBoardCardPrice
+ :value="detail?.accumulatedWaitForSettleRewardAmount ?? 0"
+ unit="鍏�"
+ />
+ </DataBoardCard>
+ <DataBoardCard title="绱宸蹭娇鐢�">
+ <DataBoardCardPrice :value="detail?.accumulatedUsedRewardAmount ?? 0" unit="鍏�" />
+ </DataBoardCard>
+ </div>
+ </ChunkCell>
</AppContainer>
</LoadingLayout>
</template>
<script setup lang="ts">
-import {
- ProTableQueryFilterBar,
- OperationBtnType,
- ProTableV2,
- SearchInput,
- LoadingLayout,
- AppContainer,
- QueryFilterItem,
- useTable,
- defineOperationBtns,
- FieldSelect,
- ProForm,
- ProFormItemV2,
- ProFormSelect,
- ProFormDatePicker,
-} from '@bole-core/components';
-import { useInsuranceClaimChannelList, useGlobalEventContext } from '@/hooks';
-import * as insuranceClaimServices from '@/services/api/InsuranceClaim';
-import { Message, OrderInputType, downloadWithZip } from '@bole-core/core';
-import { HomeColumns } from './constants';
-import { downloadFile, setOSSLink, toThousand } from '@/utils';
-import dayjs from 'dayjs';
-import { useQuery } from '@tanstack/vue-query';
-import { useInsuranceClaimCount } from './hooks';
-import Chart from './components/Chart.vue';
-import { InsuranceClaimResultEnumText, InsuranceClaimResultEnum } from '@/constants';
+import { AppContainer, ChunkCell } from '@bole-core/components';
+import DataBoardCard from '@/components/DataBoardCard/DataBoardCard.vue';
+import DataBoardCardPrice from '@/components/DataBoardCard/DataBoardCardPrice.vue';
+import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
+import { useQuery, useQueryClient } from '@tanstack/vue-query';
defineOptions({
name: 'Home',
});
-const operationBtns = defineOperationBtns([
- {
- data: {
- enCode: 'checkBtn',
- name: '璇︽儏',
- },
- emits: {
- onClick: (role) => goDetail(role),
- },
- },
-]);
-
-const { insuranceClaimChannelListForSelect } = useInsuranceClaimChannelList();
-
-const eventContext = useGlobalEventContext();
-
-const BaseState = {
- loading: true,
-};
-
-const state = reactive({ ...BaseState });
-
-eventContext.addEvent('updateInsuranceClaim', () => {
- getList(paginationState.pageIndex);
-});
-
-onMounted(async () => {
- await getList();
- state.loading = false;
-});
-
-const {
- getDataSource: getList,
- proTableProps,
- paginationState,
- extraParamState,
- reset,
-} = useTable(
- async ({ pageIndex, pageSize }, extraParamState) => {
- try {
- let params = createParams(pageIndex, pageSize);
- let res = await insuranceClaimServices.getInsuranceClaimPage(params, {
- showLoading: !state.loading,
- });
- return res;
- } catch (error) {}
- },
- {
- defaultExtraParams: {
- orderInput: [{ property: 'createTime', order: OrderInputType.Desc }],
- claimChannel: '',
- laborContractEnterprise: '',
- workEnterprise: '',
- idNumber: '',
- claimResult: '' as any as InsuranceClaimResultEnum,
- },
- columnsRenderProps: {
- insuranceBeginTime: {
- type: 'date',
- format: 'YYYY/MM/DD',
- },
- insuranceEndTime: {
- type: 'date',
- format: 'YYYY/MM/DD',
- },
- reportedTime: {
- type: 'date',
- format: 'YYYY/MM/DD HH:mm:ss',
- },
- accidentTime: {
- type: 'date',
- format: 'YYYY/MM/DD HH:mm:ss',
- },
- lastModificationTime: {
- type: 'date',
- format: 'YYYY-MM-DD HH:mm:ss',
- },
- disabilityRatio: {
- formatter: (row: API.InsuranceClaimListOutput) =>
- row.disabilityRatio == null ? '' : row.disabilityRatio + '%',
- },
- downPaymentAmount: {
- type: 'money',
- formatter: (row: API.InsuranceClaimListOutput) =>
- row.downPaymentAmount == null ? '' : toThousand(row.downPaymentAmount),
- },
- claimResultTime: { type: 'date', format: 'YYYY-MM-DD' },
- claimResult: { type: 'enum', valueEnum: InsuranceClaimResultEnumText },
- },
- }
-);
-
-function createParams(pageIndex: number, pageSize: number) {
- let params: API.QueryInsuranceClaimPageInput = {
- pageModel: {
- rows: pageSize,
- page: pageIndex,
- orderInput: extraParamState.orderInput,
- },
- claimChannel: extraParamState.claimChannel,
- laborContractEnterprise: extraParamState.laborContractEnterprise,
- workEnterprise: extraParamState.workEnterprise,
- idNumber: extraParamState.idNumber,
- claimResult: extraParamState.claimResult,
- };
- return params;
-}
-
const router = useRouter();
-function goDetail(row: API.InsuranceClaimListOutput) {
+
+const { data: detail, isLoading } = useQuery({
+ queryKey: ['parkBountyApplyServices/getGoverDataBoard'],
+ queryFn: async () => {
+ return await parkBountyApplyServices.getGoverDataBoard({
+ showLoading: false,
+ });
+ },
+ placeholderData: () => ({} as API.GetGoverDataBoardOutput),
+});
+
+function goToAudit() {
router.push({
- name: 'InsuranceClaimDetail',
- params: {
- id: row.insuranceOrderId,
- },
- query: {
- backRouteName: 'Home',
- insuranceClaimId: row.id,
- },
+ name: 'MaterialReviewList',
+ });
+}
+function goToGrant() {
+ router.push({
+ name: 'RewardGrant',
});
}
-async function handleExport() {
- try {
- if (paginationState.total === 0) {
- Message.warnMessage('娌℃湁鏁版嵁鍙互瀵煎嚭鍝');
- return;
- }
- let params = createParams(paginationState.pageIndex, paginationState.pageSize);
- let res = await insuranceClaimServices.exportInsuranceClaimList(params, {
- responseType: 'blob',
- getResponse: true,
- });
- if (res) {
- downloadFile(res.data, `鐞嗚禂瀵煎嚭`, 'xlsx');
- }
- } catch (error) {}
+function goToWithdrawalApproval() {
+ router.push({
+ name: 'WithdrawalApproval',
+ });
}
-async function handleExportPic() {
- try {
- if (paginationState.total === 0) {
- Message.warnMessage('娌℃湁鏁版嵁鍙互瀵煎嚭鍝');
- return;
- }
- let params = createParams(paginationState.pageIndex, paginationState.pageSize);
- let res = await insuranceClaimServices.getInsuranceClaimAttachmentUrlList(params);
- if (res) {
- if (res.length && res.length > 0) {
- downloadWithZip(
- res.map((item) => ({ data: setOSSLink(item) })),
- '鐞嗚禂鍥剧墖瀵煎嚭'
- );
- } else {
- Message.errorMessage('鎶ユ鏁版嵁涓湭涓婁紶鍥剧墖锛�');
- }
- }
- } catch (error) {}
+function goToRewardApplyTradeCheck() {
+ router.push({
+ name: 'RewardApplyTradeCheck',
+ });
}
-const { form, claimCount, disabledYear } = useInsuranceClaimCount();
+function goToFinancialApproval() {
+ router.push({
+ name: 'FinancialApproval',
+ });
+}
+
+const queryClient = useQueryClient();
+
+onMounted(async () => {
+ await queryClient.ensureQueryData({
+ queryKey: ['parkBountyApplyServices/getGoverDataBoard'],
+ });
+});
</script>
<style lang="scss" scoped>
@use '@/style/common.scss' as *;
-.home-top-view {
- display: flex;
- padding: 20px boleGetCssVar('proTable', 'filter-bar-horizontal-padding') 0;
- border-bottom: 1px var(--el-border-color) var(--el-border-style);
- background-color: #ffffff;
-
- .home-top-view-count {
- font-size: 30px;
- font-weight: bold;
- }
+.data-board-card-list {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ grid-gap: 40px;
+ padding: 20px;
}
</style>
--
Gitblit v1.9.1