From 692685949aa35bb2764566ef437bb7535113c6f2 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期四, 03 四月 2025 17:30:09 +0800
Subject: [PATCH] feat: init

---
 src/views/EnterpriseInfo/components/EnterpriseDeclareRecordView.vue |  116 ++++++++++++++
 src/views/EnterpriseInfo/EnterpriseInfoDetail.vue                   |   30 +++
 src/views/EnterpriseInfo/components/RewardGrantRecordView.vue       |  107 +++++++++++++
 src/views/EnterpriseInfo/components/EnterpriseBasicInfoView.vue     |   98 ++++++++++++
 src/views/EnterpriseInfo/components/RewardConsumeRecordView.vue     |  102 ++++++++++++
 5 files changed, 452 insertions(+), 1 deletions(-)

diff --git a/src/views/EnterpriseInfo/EnterpriseInfoDetail.vue b/src/views/EnterpriseInfo/EnterpriseInfoDetail.vue
index f6983da..67aa55e 100644
--- a/src/views/EnterpriseInfo/EnterpriseInfoDetail.vue
+++ b/src/views/EnterpriseInfo/EnterpriseInfoDetail.vue
@@ -1,11 +1,39 @@
 <template>
-  <div>EnterpriseInfoDetail</div>
+  <LoadingLayout>
+    <AppContainer>
+      <ProTabs v-model="state.tabType" hasBorder>
+        <ProTabPane lazy label="浼佷笟鍩烘湰淇℃伅" name="enterpriseBasicInfo">
+          <EnterpriseBasicInfoView></EnterpriseBasicInfoView>
+        </ProTabPane>
+        <ProTabPane lazy label="浼佷笟鐢虫姤璁板綍" name="enterpriseDeclareRecord">
+          <EnterpriseDeclareRecordView></EnterpriseDeclareRecordView>
+        </ProTabPane>
+        <ProTabPane lazy label="濂栧姳閲戝彂鏀捐褰�" name="rewardGrantRecord">
+          <RewardGrantRecordView></RewardGrantRecordView>
+        </ProTabPane>
+        <ProTabPane lazy label="濂栧姳閲戞秷璐硅褰�" name="rewardConsumeRecord">
+          <RewardConsumeRecordView></RewardConsumeRecordView>
+        </ProTabPane>
+      </ProTabs>
+    </AppContainer>
+  </LoadingLayout>
 </template>
 
 <script setup lang="ts">
+import { AppContainer, ProTabs, ProTabPane } from '@bole-core/components';
+import EnterpriseBasicInfoView from './components/EnterpriseBasicInfoView.vue';
+import EnterpriseDeclareRecordView from './components/EnterpriseDeclareRecordView.vue';
+import RewardGrantRecordView from './components/RewardGrantRecordView.vue';
+import RewardConsumeRecordView from './components/RewardConsumeRecordView.vue';
+
 defineOptions({
   name: 'EnterpriseInfoDetail',
 });
+
+const state = reactive({
+  loading: true,
+  tabType: 'enterpriseBasicInfo',
+});
 </script>
 
 <style lang="scss" scoped>
diff --git a/src/views/EnterpriseInfo/components/EnterpriseBasicInfoView.vue b/src/views/EnterpriseInfo/components/EnterpriseBasicInfoView.vue
new file mode 100644
index 0000000..0a6ddea
--- /dev/null
+++ b/src/views/EnterpriseInfo/components/EnterpriseBasicInfoView.vue
@@ -0,0 +1,98 @@
+<template>
+  <LoadingLayout :loading="isLoading">
+    <AppContainer>
+      <PageFormLayout>
+        <ProForm :model="detail" ref="formRef" label-width="140px">
+          <ProFormCol>
+            <ProFormColItem :span="8">
+              <ProFormItemV2 label="浼佷笟鍚嶇О:" prop="serveName" mode="read">
+                <ProFormText v-model.trim="detail.categoryName" />
+              </ProFormItemV2>
+            </ProFormColItem>
+            <ProFormColItem :span="8">
+              <ProFormItemV2 label="缁熶竴绀句細淇$敤浠g爜:" prop="serveName" mode="read">
+                <ProFormText v-model.trim="detail.categoryName" />
+              </ProFormItemV2>
+            </ProFormColItem>
+            <ProFormColItem :span="8">
+              <ProFormItemV2 label="浼佷笟绫诲瀷:" prop="serveName" mode="read">
+                <ProFormText v-model.trim="detail.categoryName" />
+              </ProFormItemV2>
+            </ProFormColItem>
+          </ProFormCol>
+          <ProFormCol>
+            <ProFormColItem :span="8">
+              <ProFormItemV2 label="鎵�灞炲洯鍖�:" prop="serveName" mode="read">
+                <ProFormText v-model.trim="detail.categoryName" />
+              </ProFormItemV2>
+            </ProFormColItem>
+            <ProFormColItem :span="8">
+              <ProFormItemV2 label="鍥尯绫诲瀷:" prop="serveName" mode="read">
+                <ProFormText v-model.trim="detail.categoryName" />
+              </ProFormItemV2>
+            </ProFormColItem>
+          </ProFormCol>
+          <ProFormCol>
+            <ProFormColItem :span="8">
+              <ProFormItemV2 label="寮�鎴烽摱琛�:" prop="serveName" mode="read">
+                <ProFormText v-model.trim="detail.categoryName" />
+              </ProFormItemV2>
+            </ProFormColItem>
+            <ProFormColItem :span="8">
+              <ProFormItemV2 label="閾惰甯愬彿:" prop="serveName" mode="read">
+                <ProFormText v-model.trim="detail.categoryName" />
+              </ProFormItemV2>
+            </ProFormColItem>
+          </ProFormCol>
+          <ProFormCol>
+            <ProFormColItem :span="8">
+              <ProFormItemV2 label="钀ヤ笟鎵х収:" prop="serveName" mode="read">
+                <!-- <ProFormUpload v-model:file-url="detail.covers"></ProFormUpload> -->
+              </ProFormItemV2>
+            </ProFormColItem>
+          </ProFormCol>
+        </ProForm>
+      </PageFormLayout>
+    </AppContainer>
+  </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+  LoadingLayout,
+  AppContainer,
+  PageFormLayout,
+  ProForm,
+  ProFormCol,
+  ProFormColItem,
+  ProFormItemV2,
+  ProFormText,
+  ProFormUpload,
+} from '@bole-core/components';
+import { useQuery } from '@tanstack/vue-query';
+import * as informationServices from '@/services/api/Information';
+
+defineOptions({
+  name: 'EnterpriseBasicInfoView',
+});
+
+const route = useRoute();
+const id = route.params?.id as string;
+
+const { data: detail, isLoading } = useQuery({
+  queryKey: ['informationServices/getInformationShowDetail', id],
+  queryFn: async () => {
+    return await informationServices.getInformationShowDetail(
+      { id: id },
+      {
+        showLoading: false,
+      }
+    );
+  },
+  placeholderData: () => ({} as API.InformationShowDetailDto),
+});
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/views/EnterpriseInfo/components/EnterpriseDeclareRecordView.vue b/src/views/EnterpriseInfo/components/EnterpriseDeclareRecordView.vue
new file mode 100644
index 0000000..3c2cc91
--- /dev/null
+++ b/src/views/EnterpriseInfo/components/EnterpriseDeclareRecordView.vue
@@ -0,0 +1,116 @@
+<template>
+  <LoadingLayout :loading="state.loading">
+    <AppContainer>
+      <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
+      </ProTableV2>
+    </AppContainer>
+  </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import { AppContainer, useTable, ProTableV2, defineOperationBtns } from '@bole-core/components';
+import { OrderInputType } from '@bole-core/core';
+import * as informationServices from '@/services/api/Information';
+
+defineOptions({
+  name: 'EnterpriseDeclareRecordView',
+});
+
+const column: API.CustomModuleColumnDto[] = [
+  {
+    id: '1',
+    enCode: 'batchBillNo',
+    name: '鐢虫姤鎵规鍙�',
+  },
+  {
+    id: '2',
+    enCode: 'changeType',
+    name: '鐢虫姤鏃ユ湡',
+  },
+  {
+    id: '3',
+    enCode: 'creationTime',
+    name: '鍐呴儴瀹℃牳鏃ユ湡',
+  },
+  {
+    id: '4',
+    enCode: 'effectTime',
+    name: '鍐呴儴瀹℃牳缁撴灉',
+  },
+  {
+    id: '5',
+    enCode: 'insurePersonNumber',
+    name: '澶栭儴瀹℃牳鏃ユ湡',
+  },
+  {
+    id: '6',
+    enCode: 'orginInsurePersonNumber',
+    name: '澶栭儴瀹℃牳缁撴灉',
+  },
+];
+
+const operationBtns = defineOperationBtns([
+  {
+    data: {
+      enCode: 'detailBtn',
+      name: '璇︽儏',
+    },
+    emits: {
+      onClick: (role) => goDetail(role),
+    },
+  },
+]);
+
+const route = useRoute();
+const router = useRouter();
+const id = route.params.id as string;
+const BaseState = {
+  loading: true,
+};
+
+const state = reactive({ ...BaseState });
+
+const {
+  getDataSource: getList,
+  proTableProps,
+  paginationState,
+  extraParamState,
+  reset,
+} = useTable(
+  async ({ pageIndex, pageSize }, extraParamState) => {
+    try {
+      let params: API.GetInformationForManageInput = {
+        pageModel: {
+          rows: pageSize,
+          page: pageIndex,
+          orderInput: extraParamState.orderInput,
+        },
+      };
+      let res = await informationServices.getInformationForManage(params, {
+        showLoading: !state.loading,
+      });
+      return res;
+    } catch (error) {}
+  },
+  {
+    defaultExtraParams: {
+      orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
+    },
+  }
+);
+
+async function goDetail(row: API.InsureBatchBillDto) {
+  router.push({
+    name: '',
+  });
+}
+
+onMounted(async () => {
+  await getList();
+  state.loading = false;
+});
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/views/EnterpriseInfo/components/RewardConsumeRecordView.vue b/src/views/EnterpriseInfo/components/RewardConsumeRecordView.vue
new file mode 100644
index 0000000..54a8a7b
--- /dev/null
+++ b/src/views/EnterpriseInfo/components/RewardConsumeRecordView.vue
@@ -0,0 +1,102 @@
+<template>
+  <LoadingLayout :loading="state.loading">
+    <AppContainer>
+      <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
+      </ProTableV2>
+    </AppContainer>
+  </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import { AppContainer, useTable, ProTableV2, defineOperationBtns } from '@bole-core/components';
+import { OrderInputType } from '@bole-core/core';
+import * as informationServices from '@/services/api/Information';
+
+defineOptions({
+  name: 'RewardConsumeRecordView',
+});
+
+const column: API.CustomModuleColumnDto[] = [
+  {
+    id: '1',
+    enCode: 'batchBillNo',
+    name: '濂栧姳閲戞秷璐规棩鏈�',
+  },
+  {
+    id: '2',
+    enCode: 'changeType',
+    name: '娑堣垂绫诲瀷',
+  },
+  {
+    id: '3',
+    enCode: 'creationTime',
+    name: '娑堣垂閲戦',
+  },
+  {
+    id: '4',
+    enCode: 'effectTime',
+    name: '濂栧姳閲戜綑棰�',
+  },
+];
+
+const operationBtns = defineOperationBtns([
+  {
+    data: {
+      enCode: 'previewBtn',
+      name: '鏌ョ湅鍑瘉',
+    },
+    emits: {
+      onClick: (role) => handlePreview(role),
+    },
+  },
+]);
+
+const route = useRoute();
+const router = useRouter();
+const id = route.params.id as string;
+const BaseState = {
+  loading: true,
+};
+
+const state = reactive({ ...BaseState });
+
+const {
+  getDataSource: getList,
+  proTableProps,
+  paginationState,
+  extraParamState,
+  reset,
+} = useTable(
+  async ({ pageIndex, pageSize }, extraParamState) => {
+    try {
+      let params: API.GetInformationForManageInput = {
+        pageModel: {
+          rows: pageSize,
+          page: pageIndex,
+          orderInput: extraParamState.orderInput,
+        },
+      };
+      let res = await informationServices.getInformationForManage(params, {
+        showLoading: !state.loading,
+      });
+      return res;
+    } catch (error) {}
+  },
+  {
+    defaultExtraParams: {
+      orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
+    },
+  }
+);
+
+function handlePreview(row: API.InsureBatchBillDto) {}
+
+onMounted(async () => {
+  await getList();
+  state.loading = false;
+});
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/views/EnterpriseInfo/components/RewardGrantRecordView.vue b/src/views/EnterpriseInfo/components/RewardGrantRecordView.vue
new file mode 100644
index 0000000..b3e4419
--- /dev/null
+++ b/src/views/EnterpriseInfo/components/RewardGrantRecordView.vue
@@ -0,0 +1,107 @@
+<template>
+  <LoadingLayout :loading="state.loading">
+    <AppContainer>
+      <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
+      </ProTableV2>
+    </AppContainer>
+  </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import { AppContainer, useTable, ProTableV2, defineOperationBtns } from '@bole-core/components';
+import { OrderInputType } from '@bole-core/core';
+import * as informationServices from '@/services/api/Information';
+
+defineOptions({
+  name: 'RewardGrantRecordView',
+});
+
+const column: API.CustomModuleColumnDto[] = [
+  {
+    id: '1',
+    enCode: 'batchBillNo',
+    name: '鐢虫姤鎵规鍙�',
+  },
+  {
+    id: '2',
+    enCode: 'changeType',
+    name: '濂栧姳閲戝彂鏀炬棩鏈�',
+  },
+  {
+    id: '3',
+    enCode: 'creationTime',
+    name: '濂栧姳閲戝埌璐︽棩鏈�',
+  },
+  {
+    id: '4',
+    enCode: 'effectTime',
+    name: '鍙戞斁閲戦',
+  },
+  {
+    id: '5',
+    enCode: 'insurePersonNumber',
+    name: '鍒拌处纭缁撴灉',
+  },
+];
+
+const operationBtns = defineOperationBtns([
+  {
+    data: {
+      enCode: 'previewBtn',
+      name: '鏌ョ湅鍑瘉',
+    },
+    emits: {
+      onClick: (role) => handlePreview(role),
+    },
+  },
+]);
+
+const route = useRoute();
+const router = useRouter();
+const id = route.params.id as string;
+const BaseState = {
+  loading: true,
+};
+
+const state = reactive({ ...BaseState });
+
+const {
+  getDataSource: getList,
+  proTableProps,
+  paginationState,
+  extraParamState,
+  reset,
+} = useTable(
+  async ({ pageIndex, pageSize }, extraParamState) => {
+    try {
+      let params: API.GetInformationForManageInput = {
+        pageModel: {
+          rows: pageSize,
+          page: pageIndex,
+          orderInput: extraParamState.orderInput,
+        },
+      };
+      let res = await informationServices.getInformationForManage(params, {
+        showLoading: !state.loading,
+      });
+      return res;
+    } catch (error) {}
+  },
+  {
+    defaultExtraParams: {
+      orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
+    },
+  }
+);
+
+function handlePreview(row: API.InsureBatchBillDto) {}
+
+onMounted(async () => {
+  await getList();
+  state.loading = false;
+});
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>

--
Gitblit v1.9.1