From da109a468d7065fb1a0201cc2a81fb189e3f62cd Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期五, 08 八月 2025 10:46:23 +0800
Subject: [PATCH] Merge branch 'master' of http://120.26.58.240:8888/r/flexJobAdmin

---
 src/constants/user.ts                                    |    4 
 types/global.d.ts                                        |    6 
 src/constants/task.ts                                    |   18 +++
 .eslintrc-auto-import.json                               |    4 
 src/services/api/typings.d.ts                            |   10 -
 src/views/Permission/OperationUserManage.vue             |   24 ++--
 src/views/TaskManage/components/SignDetailView.vue       |   31 +----
 src/views/TaskManage/components/SelltementDetailView.vue |   83 ++++++++++++++++
 auto-imports.d.ts                                        |   10 +
 src/constants/index.ts                                   |    1 
 src/views/TaskManage/TaskManageDetail.vue                |    4 
 src/services/api/user.ts                                 |   15 ---
 src/views/TaskManage/TaskManageList.vue                  |   39 +++----
 13 files changed, 162 insertions(+), 87 deletions(-)

diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json
index 3489e29..93803cd 100644
--- a/.eslintrc-auto-import.json
+++ b/.eslintrc-auto-import.json
@@ -34,13 +34,17 @@
     "EnumRoleWebApiDataPowerText": true,
     "EnumRoleWebApiDataPowerTextForFilter": true,
     "EnumSettlementCycle": true,
+    "EnumSettlementCycleText": true,
     "EnumSmsAccess": true,
     "EnumSmsAccessText": true,
     "EnumTaskCheckReceiveStatus": true,
     "EnumTaskRecommendStatus": true,
+    "EnumTaskRecommendStatusText": true,
     "EnumTaskReleaseStatus": true,
+    "EnumTaskReleaseStatusText": true,
     "EnumTaskSettlementStatus": true,
     "EnumTaskStatus": true,
+    "EnumTaskStatusText": true,
     "EnumUserGender": true,
     "EnumUserInfoStatusText": true,
     "EnumUserStatus": true,
diff --git a/auto-imports.d.ts b/auto-imports.d.ts
index c456bc8..263e64b 100644
--- a/auto-imports.d.ts
+++ b/auto-imports.d.ts
@@ -41,13 +41,17 @@
   const EnumRoleWebApiDataPowerText: typeof import('./src/constants/apiEnumText')['EnumRoleWebApiDataPowerText']
   const EnumRoleWebApiDataPowerTextForFilter: typeof import('./src/constants/apiEnumText')['EnumRoleWebApiDataPowerTextForFilter']
   const EnumSettlementCycle: typeof import('./src/constants/apiEnum')['EnumSettlementCycle']
+  const EnumSettlementCycleText: typeof import('./src/constants/task')['EnumSettlementCycleText']
   const EnumSmsAccess: typeof import('./src/constants/apiEnum')['EnumSmsAccess']
   const EnumSmsAccessText: typeof import('./src/constants/enterprise')['EnumSmsAccessText']
   const EnumTaskCheckReceiveStatus: typeof import('./src/constants/apiEnum')['EnumTaskCheckReceiveStatus']
   const EnumTaskRecommendStatus: typeof import('./src/constants/apiEnum')['EnumTaskRecommendStatus']
+  const EnumTaskRecommendStatusText: typeof import('./src/constants/task')['EnumTaskRecommendStatusText']
   const EnumTaskReleaseStatus: typeof import('./src/constants/apiEnum')['EnumTaskReleaseStatus']
+  const EnumTaskReleaseStatusText: typeof import('./src/constants/task')['EnumTaskReleaseStatusText']
   const EnumTaskSettlementStatus: typeof import('./src/constants/apiEnum')['EnumTaskSettlementStatus']
   const EnumTaskStatus: typeof import('./src/constants/apiEnum')['EnumTaskStatus']
+  const EnumTaskStatusText: typeof import('./src/constants/task')['EnumTaskStatusText']
   const EnumUserGender: typeof import('./src/constants/apiEnum')['EnumUserGender']
   const EnumUserInfoStatus: typeof import('./src/constants/apiEnum')['EnumUserInfoStatus']
   const EnumUserInfoStatusText: typeof import('./src/constants/user')['EnumUserInfoStatusText']
@@ -287,13 +291,17 @@
     readonly EnumRoleWebApiDataPowerText: UnwrapRef<typeof import('./src/constants/apiEnumText')['EnumRoleWebApiDataPowerText']>
     readonly EnumRoleWebApiDataPowerTextForFilter: UnwrapRef<typeof import('./src/constants/apiEnumText')['EnumRoleWebApiDataPowerTextForFilter']>
     readonly EnumSettlementCycle: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumSettlementCycle']>
+    readonly EnumSettlementCycleText: UnwrapRef<typeof import('./src/constants/task')['EnumSettlementCycleText']>
     readonly EnumSmsAccess: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumSmsAccess']>
     readonly EnumSmsAccessText: UnwrapRef<typeof import('./src/constants/enterprise')['EnumSmsAccessText']>
     readonly EnumTaskCheckReceiveStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskCheckReceiveStatus']>
     readonly EnumTaskRecommendStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskRecommendStatus']>
+    readonly EnumTaskRecommendStatusText: UnwrapRef<typeof import('./src/constants/task')['EnumTaskRecommendStatusText']>
     readonly EnumTaskReleaseStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskReleaseStatus']>
+    readonly EnumTaskReleaseStatusText: UnwrapRef<typeof import('./src/constants/task')['EnumTaskReleaseStatusText']>
     readonly EnumTaskSettlementStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskSettlementStatus']>
     readonly EnumTaskStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskStatus']>
+    readonly EnumTaskStatusText: UnwrapRef<typeof import('./src/constants/task')['EnumTaskStatusText']>
     readonly EnumUserGender: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserGender']>
     readonly EnumUserInfoStatusText: UnwrapRef<typeof import('./src/constants/user')['EnumUserInfoStatusText']>
     readonly EnumUserStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserStatus']>
@@ -443,4 +451,4 @@
     readonly watchPostEffect: UnwrapRef<typeof import('vue')['watchPostEffect']>
     readonly watchSyncEffect: UnwrapRef<typeof import('vue')['watchSyncEffect']>
   }
-}
\ No newline at end of file
+}
diff --git a/src/constants/index.ts b/src/constants/index.ts
index b179761..02c6032 100644
--- a/src/constants/index.ts
+++ b/src/constants/index.ts
@@ -16,3 +16,4 @@
 export * from './apiEnumText';
 export * from './user';
 export * from './dic';
+export * from './task';
diff --git a/src/constants/task.ts b/src/constants/task.ts
new file mode 100644
index 0000000..fa7fd95
--- /dev/null
+++ b/src/constants/task.ts
@@ -0,0 +1,18 @@
+export const EnumTaskStatusText = {
+  [EnumTaskStatus.Wait]: '寰呭畨鎺�',
+  [EnumTaskStatus.Complete]: '宸插畨鎺�',
+};
+export const EnumSettlementCycleText = {
+  [EnumSettlementCycle.Month]: '鏈堢粨',
+  [EnumSettlementCycle.Week]: '鍛ㄧ粨',
+  [EnumSettlementCycle.Day]: '鏃ョ粨',
+};
+
+export const EnumTaskReleaseStatusText = {
+  [EnumTaskReleaseStatus.InProcess]: '鍙戝竷涓�',
+  [EnumTaskReleaseStatus.Stopped]: '宸插仠姝�',
+};
+export const EnumTaskRecommendStatusText = {
+  [EnumTaskRecommendStatus.No]: '鏈帹鑽�',
+  [EnumTaskRecommendStatus.Yes]: '宸叉帹鑽�',
+};
diff --git a/src/constants/user.ts b/src/constants/user.ts
index 588b889..b0c901c 100644
--- a/src/constants/user.ts
+++ b/src/constants/user.ts
@@ -1,4 +1,4 @@
 export const EnumUserInfoStatusText = {
-  [EnumUserInfoStatus.Normal]: '姝e父',
-  [EnumUserInfoStatus.Disabled]: '绂佺敤',
+  [EnumUserStatus.Normal]: '姝e父',
+  [EnumUserStatus.Disabled]: '绂佺敤',
 };
diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts
index 98a7d82..bbbf1ab 100644
--- a/src/services/api/typings.d.ts
+++ b/src/services/api/typings.d.ts
@@ -1179,10 +1179,6 @@
     addressName?: string;
     /** 浠诲姟鍦扮偣璇︾粏鍦板潃 */
     addressDetail?: string;
-    /** 缁忓害 */
-    longitude?: number;
-    /** 绾害 */
-    latitude?: number;
     /** 浠诲姟寮�濮嬫椂闂� */
     beginTime?: string;
     /** 浠诲姟缁撴潫鏃堕棿 */
@@ -1197,10 +1193,8 @@
     pageModel?: PagedListQueryPageModel;
     /** 鍏抽敭瀛楋紙浠诲姟鍚嶇О锛� */
     keywords?: string;
-    /** 鍙戝竷鏃堕棿-寮�濮� */
-    beginTime?: string;
-    /** 鍙戝竷鏃堕棿-缁撴潫 */
-    endTime?: string;
+    /** 鍙戝竷鏃堕棿 */
+    time?: string;
     /** 浠诲姟鍦扮偣鎵�灞炲煄甯傜紪鍙� */
     cityCode?: string;
     settlementCycle?: EnumSettlementCycle;
diff --git a/src/services/api/user.ts b/src/services/api/user.ts
index a398d43..3d4e6e0 100644
--- a/src/services/api/user.ts
+++ b/src/services/api/user.ts
@@ -35,21 +35,6 @@
   });
 }
 
-/** 鏌ヨ鐢ㄦ埛绠�鍘� GET /api/user/user/getUserResume */
-export async function getUserResume(
-  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
-  params: API.APIgetUserResumeParams,
-  options?: API.RequestConfig
-) {
-  return request<API.GetUserResumeQueryResult>('/api/user/user/getUserResume', {
-    method: 'GET',
-    params: {
-      ...params,
-    },
-    ...(options || {}),
-  });
-}
-
 /** 璁剧疆鐢ㄦ埛淇℃伅瑙掕壊 PUT /api/user/user/setUserInfoRoles */
 export async function setUserInfoRoles(
   body: API.SetUserInfoRolesCommand,
diff --git a/src/views/Permission/OperationUserManage.vue b/src/views/Permission/OperationUserManage.vue
index c33d828..b66c8c3 100644
--- a/src/views/Permission/OperationUserManage.vue
+++ b/src/views/Permission/OperationUserManage.vue
@@ -24,8 +24,8 @@
             v-model="row.status"
             active-text="鍚敤"
             inactive-text="绂佺敤"
-            :active-value="EnumUserInfoStatus.Normal"
-            :inactive-value="EnumUserInfoStatus.Disabled"
+            :active-value="EnumUserStatus.Normal"
+            :inactive-value="EnumUserStatus.Disabled"
             :before-change="() => setStatus(row)"
           />
         </template>
@@ -50,9 +50,9 @@
 } from '@bole-core/components';
 import { useAccess } from '@/hooks';
 import { formatRoleName } from '@/utils';
-import * as userInfoServices from '@/services/api/userInfo';
+import * as userServices from '@/services/api/user';
 import { Message } from '@bole-core/core';
-import { EnumUserInfoStatus } from '@/constants';
+import { EnumUserStatus } from '@/constants';
 import SetOperationUserRoleDialog from './components/SetOperationUserRoleDialog.vue';
 
 defineOptions({
@@ -95,7 +95,7 @@
         },
         keywords: extraParamState.keywords,
       };
-      let res = await userInfoServices.getOperationUserInfos(params, {
+      let res = await userServices.getOperationUserInfos(params, {
         showLoading: !state.loading,
       });
       return res;
@@ -106,7 +106,7 @@
       keywords: '',
       orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
     },
-    queryKey: ['userInfoServices/getOperationUserInfos'],
+    queryKey: ['userServices/getOperationUserInfos'],
     columnsRenderProps: {},
   }
 );
@@ -114,16 +114,14 @@
 async function setStatus(row: API.GetOperationUserInfosQueryResultItem) {
   try {
     await Message.tipMessage(
-      `纭瑕�${row.status === EnumUserInfoStatus.Normal ? '绂佺敤' : '鍚敤'}璇ヨ处鍙峰悧锛焋
+      `纭瑕�${row.status === EnumUserStatus.Normal ? '绂佺敤' : '鍚敤'}璇ヨ处鍙峰悧锛焋
     );
     let params: API.SetUserInfoStatusCommand = {
       ids: [row.id],
       status:
-        row.status === EnumUserInfoStatus.Normal
-          ? EnumUserInfoStatus.Disabled
-          : EnumUserInfoStatus.Normal,
+        row.status === EnumUserStatus.Normal ? EnumUserStatus.Disabled : EnumUserStatus.Normal,
     };
-    let res = await userInfoServices.setUserInfoStatus(params);
+    let res = await userServices.setUserInfoStatus(params);
     return !!res;
   } catch (error) {}
 }
@@ -154,7 +152,7 @@
       userInfoId: editForm.userInfoId,
       roleIds: editForm.roleIds,
     };
-    let res = await userInfoServices.setUserInfoRoles(params);
+    let res = await userServices.setUserInfoRoles(params);
     if (res) {
       Message.successMessage('鎿嶄綔鎴愬姛');
       getList(paginationState.pageIndex);
@@ -168,7 +166,7 @@
       userInfoId: row.id,
       // clientType: row.clientType,
     };
-    let res = await userInfoServices.getUserInfoRoles(params);
+    let res = await userServices.getUserInfoRoles(params);
     return res;
   } catch (error) {}
 }
diff --git a/src/views/TaskManage/TaskManageDetail.vue b/src/views/TaskManage/TaskManageDetail.vue
index f664309..3dd88d4 100644
--- a/src/views/TaskManage/TaskManageDetail.vue
+++ b/src/views/TaskManage/TaskManageDetail.vue
@@ -8,6 +8,9 @@
         <ProTabPane lazy label="鎶ュ悕璇︽儏" name="sign">
           <SignDetailView></SignDetailView>
         </ProTabPane>
+        <ProTabPane lazy label="缁撶畻璇︽儏" name="settle">
+          <SelltementDetailView></SelltementDetailView>
+        </ProTabPane>
       </ProTabs>
     </AppContainer>
   </LoadingLayout>
@@ -17,6 +20,7 @@
 import { AppContainer, ProTabs, ProTabPane } from '@bole-core/components';
 import TaskDetailView from './components/TaskDetailView.vue';
 import SignDetailView from './components/SignDetailView.vue';
+import SelltementDetailView from './components/SelltementDetailView.vue';
 
 defineOptions({
   name: 'TaskManageDetail',
diff --git a/src/views/TaskManage/TaskManageList.vue b/src/views/TaskManage/TaskManageList.vue
index 1409251..b6433ff 100644
--- a/src/views/TaskManage/TaskManageList.vue
+++ b/src/views/TaskManage/TaskManageList.vue
@@ -5,11 +5,8 @@
         <template #query>
           <QueryFilterItem tip-content="鍙戝竷鐘舵��">
             <FieldRadio
-              v-model="extraParamState.status"
-              :value-enum="[
-                { value: true, label: '鍙戝竷涓�' },
-                { value: false, label: '宸插仠姝�' },
-              ]"
+              v-model="extraParamState.releaseStatus"
+              :value-enum="EnumTaskReleaseStatusText"
               buttonStyle
               showAllBtn
               @change="getList()"
@@ -17,11 +14,8 @@
           </QueryFilterItem>
           <QueryFilterItem tip-content="鎺ㄨ崘鐘舵��">
             <FieldRadio
-              v-model="extraParamState.status"
-              :value-enum="[
-                { value: true, label: '宸叉帹鑽�' },
-                { value: false, label: '鏈帹鑽�' },
-              ]"
+              v-model="extraParamState.recommendStatus"
+              :value-enum="EnumTaskRecommendStatusText"
               buttonStyle
               showAllBtn
               @change="getList()"
@@ -29,7 +23,7 @@
           </QueryFilterItem>
           <QueryFilterItem tip-content="鍙戝竷鏃堕棿">
             <FieldDatePicker
-              v-model="extraParamState.beginDate"
+              v-model="extraParamState.time"
               type="daterange"
               range-separator="~"
               start-placeholder="寮�濮嬫棩鏈�"
@@ -40,7 +34,7 @@
           </QueryFilterItem>
           <QueryFilterItem>
             <SearchInput
-              v-model="extraParamState.keyword"
+              v-model="extraParamState.keywords"
               style="width: 260px"
               placeholder="浠诲姟鍚嶇О"
               @on-click-search="getList"
@@ -70,7 +64,8 @@
 } from '@bole-core/components';
 import { useAccess } from '@/hooks';
 import { ModelValueType } from 'element-plus';
-import * as enterpriseServices from '@/services/api/enterprise';
+import * as taskServices from '@/services/api/task';
+import { EnumTaskReleaseStatusText, EnumTaskRecommendStatusText } from '@/constants';
 
 defineOptions({
   name: 'OperationManageList',
@@ -118,15 +113,18 @@
 } = useTable(
   async ({ pageIndex, pageSize }, extraParamState) => {
     try {
-      let params: API.GetEnterprisesQuery = {
+      let params: API.GetTaskInfosQuery = {
         pageModel: {
           rows: pageSize,
           page: pageIndex,
           orderInput: extraParamState.orderInput,
         },
-        // searchKeys: extraParamState.keyword,
+        keywords: extraParamState.keywords,
+        releaseStatus: extraParamState.releaseStatus,
+        recommendStatus: extraParamState.recommendStatus,
+        // time: extraParamState.time,
       };
-      let res = await enterpriseServices.getEnterprises(params, {
+      let res = await taskServices.getTaskInfos(params, {
         showLoading: !state.loading,
       });
       return res;
@@ -134,11 +132,10 @@
   },
   {
     defaultExtraParams: {
-      keyword: '',
-      pageType: '' as any as number,
-      status: '' as any as boolean,
-      beginDate: [] as unknown as ModelValueType,
-      endDate: [] as unknown as ModelValueType,
+      keywords: '',
+      releaseStatus: '' as any as EnumTaskReleaseStatus,
+      recommendStatus: '' as any as EnumTaskRecommendStatus,
+      time: [] as unknown as ModelValueType,
       orderInput: [{ property: 'id', order: EnumPagedListOrder.Asc }],
     },
     columnsRenderProps: {},
diff --git a/src/views/TaskManage/components/SelltementDetailView.vue b/src/views/TaskManage/components/SelltementDetailView.vue
new file mode 100644
index 0000000..58e1843
--- /dev/null
+++ b/src/views/TaskManage/components/SelltementDetailView.vue
@@ -0,0 +1,83 @@
+<template>
+  <LoadingLayout :loading="state.loading">
+    <AppContainer>
+      <ProTableV2
+        v-bind="proTableProps"
+        :columns="settleColumns"
+        :operationBtns="settleOperationBtns"
+      >
+      </ProTableV2>
+    </AppContainer>
+  </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import { ProTableV2, LoadingLayout, AppContainer, useTable } from '@bole-core/components';
+import { ModelValueType } from 'element-plus';
+import * as enterpriseServices from '@/services/api/enterprise';
+
+defineOptions({
+  name: 'SelltementDetailView',
+});
+
+const operationBtnMap: Record<string, OperationBtnType> = {
+  'settle-downloadBtn': { emits: { onClick: (role) => handleDownload(role) } },
+};
+
+const { checkSubModuleItemShow, column, operationBtns } = useAccess({
+  operationBtnMap,
+});
+
+const [settleColumns] = useGroupColumns(column, ['settle-']);
+const [settleOperationBtns] = useGroupOperationBtns(operationBtns, ['settle-']);
+
+const router = useRouter();
+const BaseState = {
+  loading: true,
+};
+
+const state = reactive({ ...BaseState });
+
+onMounted(async () => {
+  await getList();
+  state.loading = false;
+});
+
+const {
+  getDataSource: getList,
+  proTableProps,
+  paginationState,
+  extraParamState,
+  reset,
+} = useTable(
+  async ({ pageIndex, pageSize }, extraParamState) => {
+    try {
+      let params: API.GetEnterprisesQuery = {
+        pageModel: {
+          rows: pageSize,
+          page: pageIndex,
+          orderInput: extraParamState.orderInput,
+        },
+        // searchKeys: extraParamState.keyword,
+      };
+      let res = await enterpriseServices.getEnterprises(params, {
+        showLoading: !state.loading,
+      });
+      return res;
+    } catch (error) {}
+  },
+  {
+    defaultExtraParams: {
+      keyword: '',
+      pageType: '' as any as number,
+      status: '' as any as boolean,
+      beginDate: [] as unknown as ModelValueType,
+      endDate: [] as unknown as ModelValueType,
+      orderInput: [{ property: 'id', order: EnumPagedListOrder.Asc }],
+    },
+    columnsRenderProps: {},
+  }
+);
+
+function handleDownload(row) {}
+</script>
diff --git a/src/views/TaskManage/components/SignDetailView.vue b/src/views/TaskManage/components/SignDetailView.vue
index 8a59d91..7ef9a0f 100644
--- a/src/views/TaskManage/components/SignDetailView.vue
+++ b/src/views/TaskManage/components/SignDetailView.vue
@@ -1,21 +1,14 @@
 <template>
   <LoadingLayout :loading="state.loading">
     <AppContainer>
-      <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
+      <ProTableV2 v-bind="proTableProps" :columns="signColumns" :operationBtns="signOperationBtns">
       </ProTableV2>
     </AppContainer>
   </LoadingLayout>
 </template>
 
 <script setup lang="ts">
-import {
-  OperationBtnType,
-  ProTableV2,
-  LoadingLayout,
-  AppContainer,
-  useTable,
-} from '@bole-core/components';
-import { useAccess } from '@/hooks';
+import { ProTableV2, LoadingLayout, AppContainer, useTable } from '@bole-core/components';
 import { ModelValueType } from 'element-plus';
 import * as enterpriseServices from '@/services/api/enterprise';
 
@@ -24,25 +17,15 @@
 });
 
 const operationBtnMap: Record<string, OperationBtnType> = {
-  detailBtn: { emits: { onClick: (role) => goDetail(role) } },
-  recommendBtn: {
-    emits: { onClick: (role) => setAdvertiseOnShowStatus(role) },
-    extraProps: {
-      hide: (row) => row.status,
-    },
-  },
-  cancelRecommendBtn: {
-    emits: { onClick: (role) => setAdvertiseOnShowStatus(role) },
-    props: { type: 'danger' },
-    extraProps: {
-      hide: (row) => !row.status,
-    },
-  },
+  'sign-detailBtn': { emits: { onClick: (role) => goDetail(role) } },
 };
 
 const { checkSubModuleItemShow, column, operationBtns } = useAccess({
   operationBtnMap,
 });
+
+const [signColumns] = useGroupColumns(column, ['sign-']);
+const [signOperationBtns] = useGroupOperationBtns(operationBtns, ['sign-']);
 
 const router = useRouter();
 const BaseState = {
@@ -92,7 +75,7 @@
   }
 );
 
-async function setAdvertiseOnShowStatus(row) {
+async function handleRecommend(row) {
   try {
   } catch (error) {}
 }
diff --git a/types/global.d.ts b/types/global.d.ts
index 33ce661..b091bab 100644
--- a/types/global.d.ts
+++ b/types/global.d.ts
@@ -137,9 +137,9 @@
     provinceName?: string;
     cityName?: string;
     countyName?: string;
-    provinceCode?: number;
-    cityCode?: number;
-    countyCode?: number;
+    provinceCode?: string;
+    cityCode?: string;
+    countyCode?: string;
     address?: string;
   }
 

--
Gitblit v1.9.1