From 04a8dacfa291441b55df5ff5ee14c4ba6ec8191d Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期二, 02 十二月 2025 15:33:03 +0800
Subject: [PATCH] fix: 谢绝

---
 packages/services/apiV2/syncDatabase.ts                                   |   15 --
 packages/hooks/index.ts                                                   |    1 
 apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue |   20 ++
 packages/hooks/dialog.ts                                                  |   84 ++++++++++++++
 packages/components/src/Task/TaskDetailView.vue                           |    7 +
 packages/services/apiV2/typings.d.ts                                      |   69 ++++-------
 apps/bMiniApp/src/styles/nut.scss                                         |   21 +++
 apps/cMiniApp/project.private.config.json                                 |    7 +
 packages/constants/apiEnum.ts                                             |   50 +++-----
 apps/bMiniApp/project.private.config.json                                 |   11 +
 apps/bMiniApp/src/subpackages/flexJob/components/RefuseDialog.vue         |   57 +++++++++
 11 files changed, 247 insertions(+), 95 deletions(-)

diff --git a/apps/bMiniApp/project.private.config.json b/apps/bMiniApp/project.private.config.json
index 212944a..0a5842a 100644
--- a/apps/bMiniApp/project.private.config.json
+++ b/apps/bMiniApp/project.private.config.json
@@ -23,11 +23,18 @@
         "miniprogram": {
             "list": [
                 {
+                    "name": "鐏靛伐璇︽儏",
+                    "pathName": "subpackages/flexJob/flexJobDetailFromTask/flexJobDetailFromTask",
+                    "query": "enterpriseEmployeeId=304f7e38-b973-478c-88aa-08ddf02e3176&id=ddecb887-8273-449b-6bcd-08de20009bf4&taskInfoId=ec3f301e-fa95-47a1-b8ee-08de1da3c153",
+                    "scene": null,
+                    "launchMode": "default"
+                },
+                {
                     "name": "寰呴獙鏀�-楠屾敹璇︽儏",
                     "pathName": "subpackages/task/taskHandleCheckDetail/taskHandleCheckDetail",
                     "query": "id=546401cc-c148-47d0-c647-08de1e75af01&date=2025-11-28&taskInfoId=5a22c18b-0b49-4540-6658-08de1da80d7c",
-                    "scene": null,
-                    "launchMode": "default"
+                    "launchMode": "default",
+                    "scene": null
                 },
                 {
                     "name": "鎶ュ悕鍒楄〃",
diff --git a/apps/bMiniApp/src/styles/nut.scss b/apps/bMiniApp/src/styles/nut.scss
index df1482f..3d3b4e1 100644
--- a/apps/bMiniApp/src/styles/nut.scss
+++ b/apps/bMiniApp/src/styles/nut.scss
@@ -195,4 +195,25 @@
       object-fit: cover;
     }
   }
+
+  .dialog-form-wrapper {
+    width: 600px;
+
+    .dialog-form-footer {
+      padding: 10px 20px;
+      text-align: center;
+
+      .nut-button--plain {
+        border-width: 1px;
+      }
+
+      .nut-button {
+        min-width: 100px;
+      }
+
+      .nut-button + .nut-button {
+        margin-left: 20px;
+      }
+    }
+  }
 }
diff --git a/apps/bMiniApp/src/subpackages/flexJob/components/RefuseDialog.vue b/apps/bMiniApp/src/subpackages/flexJob/components/RefuseDialog.vue
new file mode 100644
index 0000000..8cf6f9d
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/flexJob/components/RefuseDialog.vue
@@ -0,0 +1,57 @@
+<template>
+  <nut-popup v-model:visible="visible">
+    <div class="dialog-form-wrapper">
+      <nut-form :model-value="form" ref="formRef" label-position="top">
+        <nut-form-item
+          label="璋㈢粷鍘熷洜:"
+          class="bole-form-item alignTop"
+          prop="remark"
+          label-width="90px"
+        >
+          <nut-textarea v-model="form.remark" rows="4" placeholder="璇疯緭鍏ヨ阿缁濆師鍥�"> </nut-textarea>
+        </nut-form-item>
+      </nut-form>
+      <div class="dialog-form-footer">
+        <nut-button @click="visible = false" plain>鍙栨秷</nut-button>
+        <nut-button type="primary" @click="handleConfirm">纭</nut-button>
+      </div>
+    </div>
+  </nut-popup>
+</template>
+
+<script setup lang="ts">
+defineOptions({
+  name: 'RefuseDialog',
+});
+
+type Form = {
+  remark: string;
+};
+
+const form = defineModel<Form>('form');
+
+const visible = defineModel<boolean>();
+
+const emit = defineEmits<{
+  (e: 'onConfirm'): void;
+}>();
+
+const formRef = ref<any>(null);
+
+function handleConfirm() {
+  if (!formRef.value) return;
+  formRef.value.validate().then(({ valid, errors }: any) => {
+    if (valid) {
+      emit('onConfirm');
+    }
+  });
+}
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+
+.payroll-form-wrapper {
+  width: 600px;
+}
+</style>
diff --git a/apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue b/apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue
index 0f06f1f..c406a5f 100644
--- a/apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue
@@ -29,7 +29,7 @@
         <PageFooterBtn
           type="primary"
           plain
-          @click="setTaskUserHire(EnumTaskUserHireStatus.Refuse)"
+          @click="handleAdd()"
           v-if="taskUserHireStatusResult.hireStatus === EnumTaskUserHireStatus.Wait"
           >璋㈢粷</PageFooterBtn
         >
@@ -44,6 +44,7 @@
         >
       </template>
     </JobDetailContent>
+    <RefuseDialog v-bind="dialogProps" />
   </LoadingLayout>
 </template>
 
@@ -52,8 +53,9 @@
 import { useQuery } from '@tanstack/vue-query';
 import * as taskUserServices from '@12333/services/apiV2/taskUser';
 import { Message } from '@12333/utils';
-import { useUserResume } from '@12333/hooks';
+import { useUserResume, useFormDialog } from '@12333/hooks';
 import { EnumTaskUserHireStatus } from '@12333/constants';
+import RefuseDialog from '../components/RefuseDialog.vue';
 
 defineOptions({
   name: 'InnerPage',
@@ -81,11 +83,23 @@
   placeholderData: () => ({} as API.GetTaskUserHireStatusQueryResult),
 });
 
-async function setTaskUserHire(hireStatus: EnumTaskUserHireStatus) {
+const { dialogProps, handleAdd, editForm } = useFormDialog({
+  onConfirm: handleRefuse,
+  defaultFormParams: {
+    remark: '',
+  },
+});
+
+async function handleRefuse() {
+  setTaskUserHire(EnumTaskUserHireStatus.Refuse, editForm.remark);
+}
+
+async function setTaskUserHire(hireStatus: EnumTaskUserHireStatus, remark?: string) {
   try {
     let params: API.SetTaskUserHireCommand = {
       id: id,
       hireStatus: hireStatus,
+      hireRemark: remark,
     };
     let res = await taskUserServices.setTaskUserHire(params);
     if (res) {
diff --git a/apps/cMiniApp/project.private.config.json b/apps/cMiniApp/project.private.config.json
index 527d115..f5fcb61 100644
--- a/apps/cMiniApp/project.private.config.json
+++ b/apps/cMiniApp/project.private.config.json
@@ -23,6 +23,13 @@
         "miniprogram": {
             "list": [
                 {
+                    "name": "浠诲姟璇︽儏-璋㈢粷",
+                    "pathName": "subpackages/task/taskDetail/taskDetail",
+                    "query": "id=bbc3f370-5c4f-417e-1999-08de316fce01&from=sign",
+                    "scene": null,
+                    "launchMode": "default"
+                },
+                {
                     "name": "鏀跺叆璇︽儏",
                     "pathName": "subpackages/wallet/incomeDetailInfo/incomeDetailInfo",
                     "query": "id=7899c603-f237-4505-949d-08de234155c4",
diff --git a/packages/components/src/Task/TaskDetailView.vue b/packages/components/src/Task/TaskDetailView.vue
index 1ab8f87..1300dd0 100644
--- a/packages/components/src/Task/TaskDetailView.vue
+++ b/packages/components/src/Task/TaskDetailView.vue
@@ -31,6 +31,12 @@
       </div>
     </div>
   </Cell>
+  <Cell
+    title="璋㈢粷鍘熷洜"
+    v-if="detail?.hireRemark && detail.hireStatus === EnumTaskUserHireStatus.Refuse"
+  >
+    <div class="safe-cell-content">{{ detail?.hireRemark ?? '' }}</div>
+  </Cell>
   <Cell :show-title="false">
     <CellChunk title="绂忓埄淇℃伅">
       <div class="taskDetail-welfare-list">
@@ -85,6 +91,7 @@
   EnumSettlementCycleText,
   EnumTaskReleaseStatus,
   BillingMethodEnumUnit,
+  EnumTaskUserHireStatus,
 } from '@12333/constants';
 import { TaskUtils, toThousand, setOSSLink, Message } from '@12333/utils';
 import Taro from '@tarojs/taro';
diff --git a/packages/constants/apiEnum.ts b/packages/constants/apiEnum.ts
index 586337d..e0dff19 100644
--- a/packages/constants/apiEnum.ts
+++ b/packages/constants/apiEnum.ts
@@ -429,36 +429,38 @@
   CommonServerSmsUtils = 10,
   /**閰嶇疆 */
   CommonServerSettings = 11,
+  /**宸茶 */
+  CommonServerReadRecord = 12,
   /**鐢ㄦ埛璁よ瘉 */
-  UserServerAuth = 12,
+  UserServerAuth = 13,
   /**鐢ㄦ埛鑿滃崟 */
-  UserServerMenu = 13,
+  UserServerMenu = 14,
   /**鐢ㄦ埛璧勬簮 */
-  UserServerResource = 14,
+  UserServerResource = 15,
   /**鐢ㄦ埛瑙掕壊 */
-  UserServerRole = 15,
+  UserServerRole = 16,
   /**鐢ㄦ埛淇℃伅 */
-  UserServerUser = 16,
+  UserServerUser = 17,
   /**鐢ㄦ埛閽卞寘 */
-  UserServerUserWallet = 17,
+  UserServerUserWallet = 18,
   /**鐢靛瓙绛� */
-  UserServerElectronSign = 18,
+  UserServerElectronSign = 19,
   /**鐢ㄦ埛绠�鍘� */
-  UserServerUserResume = 19,
+  UserServerUserResume = 20,
   /**浼佷笟淇℃伅 */
-  UserServerEnterprise = 20,
+  UserServerEnterprise = 21,
   /**浼佷笟閽卞寘 */
-  UserServerEnterpriseWallet = 21,
+  UserServerEnterpriseWallet = 22,
   /**浼佷笟鍚堜綔閽卞寘 */
-  UserServerEnterpriseCooperationWallet = 22,
+  UserServerEnterpriseCooperationWallet = 23,
   /**鐏靛伐淇℃伅 */
-  UserServerEnterpriseEmployee = 23,
+  UserServerEnterpriseEmployee = 24,
   /**鐢靛瓙绛� */
-  ElectronSignServerElectronSign = 24,
+  ElectronSignServerElectronSign = 25,
   /**鐭俊 */
-  ToolServerSms = 25,
+  ToolServerSms = 26,
   /**灏忕▼搴� */
-  ToolServerWxmp = 26,
+  ToolServerWxmp = 27,
 }
 
 /** 璧勬簮璇锋眰鏂瑰紡 */
@@ -639,6 +641,8 @@
   Pass = 20,
   /**宸茶阿缁� */
   Refuse = 30,
+  /**宸插彇娑� */
+  Cancel = 40,
 }
 
 /** 浠诲姟鐢ㄦ埛绛剧害鐘舵�� */
@@ -895,22 +899,6 @@
   VERIFY_FAIL = 1,
   /**楠岃瘉涓紝鍟嗘埛鍙彂璧锋彁鐜板皾璇� */
   VERIFYING = 2,
-}
-
-/** 寰俊灏忕▼搴忚闃呮秷鎭ā鏉� */
-export enum EnumWxmpSubscribMessageTemplate {
-  /**鏀粯鎴愬姛鎻愰啋  缁撶畻瀹屾垚鍚庡悜鎵挎徑绔鐞嗗憳鎺ㄩ�� */
-  SettlementCompletedToSupplier = 0,
-  /**鎶ラ叕缁撶畻瀹℃牳缁撴灉閫氱煡  鐢叉柟缁撶畻纭鍚庡悜鎵挎徑绔鐞嗗憳鎺ㄩ�� */
-  SettlementAuditCompletedToSupplier = 1,
-  /**宸ヨ祫鍙戞斁閫氱煡  缁撶畻瀹屾垚鍚庡悜C绔汉鍛橀�氱煡 */
-  SettlementReceiveCompletedToUser = 2,
-  /**鎶ュ悕褰曠敤缁撴灉閫氱煡  琚綍鐢ㄥ悗鍚慍绔汉鍛橀�氱煡 */
-  HireCompletedToUser = 3,
-  /**鎺掔彮鎴愬姛閫氱煡  鎺掔彮鍚庡悜C绔汉鍛橀�氱煡 */
-  ArrangeCompletedToUser = 4,
-  /**娴嬭瘯 */
-  Test = 5,
 }
 
 /** 鎴戠殑鎶ュ悕鍒嗛〉鍒楄〃-鐘舵�� */
diff --git a/packages/hooks/dialog.ts b/packages/hooks/dialog.ts
new file mode 100644
index 0000000..51447c1
--- /dev/null
+++ b/packages/hooks/dialog.ts
@@ -0,0 +1,84 @@
+import { computed, reactive } from 'vue';
+import { cloneDeep } from 'lodash';
+
+type UseDialogOptions = {
+  onConfirm?: (...args: any) => Promise<any>;
+  closeAfterConfirm?: boolean;
+};
+
+export function useDialog(options: UseDialogOptions = {}) {
+  const { onConfirm, closeAfterConfirm = true } = options;
+
+  const dialogState = reactive({
+    dialogVisible: false,
+  });
+
+  function onUpdateModelValue(value: boolean) {
+    dialogState.dialogVisible = value;
+  }
+
+  async function handleConfirm(...args: any) {
+    await onConfirm?.(...args);
+    if (closeAfterConfirm) {
+      dialogState.dialogVisible = false;
+    }
+  }
+
+  const dialogProps = computed(() => ({
+    modelValue: dialogState.dialogVisible,
+    ['onUpdate:modelValue']: onUpdateModelValue,
+    onOnConfirm: handleConfirm,
+  }));
+
+  return {
+    dialogProps,
+    dialogState,
+  };
+}
+
+export type FormParams = {};
+
+type UseFormDialogOptions<TFormParams extends FormParams> = UseDialogOptions & {
+  defaultFormParams: TFormParams;
+};
+
+export function useFormDialog<TFormParams extends FormParams>(
+  options: UseFormDialogOptions<TFormParams>
+) {
+  const { onConfirm, closeAfterConfirm = true, defaultFormParams } = options;
+  const { dialogProps, dialogState } = useDialog({ onConfirm, closeAfterConfirm });
+
+  const editForm = reactive(cloneDeep(defaultFormParams));
+
+  function handleAdd(extraParams: Partial<TFormParams> = {}) {
+    Object.assign(editForm, cloneDeep(defaultFormParams), {
+      ...extraParams,
+    });
+    dialogState.dialogVisible = true;
+  }
+
+  function handleEdit(data: Omit<TFormParams, 'title'>) {
+    Object.assign(editForm, cloneDeep(defaultFormParams), {
+      ...data,
+    });
+    dialogState.dialogVisible = true;
+  }
+
+  function onUpdateForm(value: TFormParams) {
+    Object.assign(editForm, value);
+  }
+
+  const formDialogProps = computed(() => ({
+    ...dialogProps.value,
+    form: editForm,
+    ['onUpdate:form']: onUpdateForm,
+  }));
+
+  return {
+    dialogProps: formDialogProps,
+    dialogState,
+    editForm,
+    handleAdd,
+    handleEdit,
+  };
+}
diff --git a/packages/hooks/index.ts b/packages/hooks/index.ts
index d03ed55..942be90 100644
--- a/packages/hooks/index.ts
+++ b/packages/hooks/index.ts
@@ -9,3 +9,4 @@
 export * from './taskUser';
 export * from './user';
 export * from './payrollChange';
+export * from './dialog';
diff --git a/packages/services/apiV2/syncDatabase.ts b/packages/services/apiV2/syncDatabase.ts
index 2d526e7..b40e50d 100644
--- a/packages/services/apiV2/syncDatabase.ts
+++ b/packages/services/apiV2/syncDatabase.ts
@@ -2,21 +2,6 @@
 // @ts-ignore
 import { request } from '@/utils/request';
 
-/** 鍚屾鏁版嵁搴� POST /api/common/syncDatabase/sendWxmpSubscribMessage */
-export async function sendWxmpSubscribMessage(
-  body: API.SendWxmpSubscribMessageCommand,
-  options?: API.RequestConfig
-) {
-  return request<boolean>('/api/common/syncDatabase/sendWxmpSubscribMessage', {
-    method: 'POST',
-    headers: {
-      'Content-Type': 'application/json-patch+json',
-    },
-    data: body,
-    ...(options || {}),
-  });
-}
-
 /** 鍚屾鏁版嵁搴� POST /api/common/syncDatabase/syncDatabase */
 export async function syncDatabase(body: API.SyncDatabaseCommand, options?: API.RequestConfig) {
   return request<number>('/api/common/syncDatabase/syncDatabase', {
diff --git a/packages/services/apiV2/typings.d.ts b/packages/services/apiV2/typings.d.ts
index d58f216..49f6e1d 100644
--- a/packages/services/apiV2/typings.d.ts
+++ b/packages/services/apiV2/typings.d.ts
@@ -1172,36 +1172,38 @@
     CommonServerSmsUtils = 10,
     /**閰嶇疆 */
     CommonServerSettings = 11,
+    /**宸茶 */
+    CommonServerReadRecord = 12,
     /**鐢ㄦ埛璁よ瘉 */
-    UserServerAuth = 12,
+    UserServerAuth = 13,
     /**鐢ㄦ埛鑿滃崟 */
-    UserServerMenu = 13,
+    UserServerMenu = 14,
     /**鐢ㄦ埛璧勬簮 */
-    UserServerResource = 14,
+    UserServerResource = 15,
     /**鐢ㄦ埛瑙掕壊 */
-    UserServerRole = 15,
+    UserServerRole = 16,
     /**鐢ㄦ埛淇℃伅 */
-    UserServerUser = 16,
+    UserServerUser = 17,
     /**鐢ㄦ埛閽卞寘 */
-    UserServerUserWallet = 17,
+    UserServerUserWallet = 18,
     /**鐢靛瓙绛� */
-    UserServerElectronSign = 18,
+    UserServerElectronSign = 19,
     /**鐢ㄦ埛绠�鍘� */
-    UserServerUserResume = 19,
+    UserServerUserResume = 20,
     /**浼佷笟淇℃伅 */
-    UserServerEnterprise = 20,
+    UserServerEnterprise = 21,
     /**浼佷笟閽卞寘 */
-    UserServerEnterpriseWallet = 21,
+    UserServerEnterpriseWallet = 22,
     /**浼佷笟鍚堜綔閽卞寘 */
-    UserServerEnterpriseCooperationWallet = 22,
+    UserServerEnterpriseCooperationWallet = 23,
     /**鐏靛伐淇℃伅 */
-    UserServerEnterpriseEmployee = 23,
+    UserServerEnterpriseEmployee = 24,
     /**鐢靛瓙绛� */
-    ElectronSignServerElectronSign = 24,
+    ElectronSignServerElectronSign = 25,
     /**鐭俊 */
-    ToolServerSms = 25,
+    ToolServerSms = 26,
     /**灏忕▼搴� */
-    ToolServerWxmp = 26,
+    ToolServerWxmp = 27,
   }
 
   enum EnumResourceMethod {
@@ -1364,6 +1366,8 @@
     Pass = 20,
     /**宸茶阿缁� */
     Refuse = 30,
+    /**宸插彇娑� */
+    Cancel = 40,
   }
 
   enum EnumTaskUserSignContractStatus {
@@ -1599,21 +1603,6 @@
     VERIFY_FAIL = 1,
     /**楠岃瘉涓紝鍟嗘埛鍙彂璧锋彁鐜板皾璇� */
     VERIFYING = 2,
-  }
-
-  enum EnumWxmpSubscribMessageTemplate {
-    /**鏀粯鎴愬姛鎻愰啋  缁撶畻瀹屾垚鍚庡悜鎵挎徑绔鐞嗗憳鎺ㄩ�� */
-    SettlementCompletedToSupplier = 0,
-    /**鎶ラ叕缁撶畻瀹℃牳缁撴灉閫氱煡  鐢叉柟缁撶畻纭鍚庡悜鎵挎徑绔鐞嗗憳鎺ㄩ�� */
-    SettlementAuditCompletedToSupplier = 1,
-    /**宸ヨ祫鍙戞斁閫氱煡  缁撶畻瀹屾垚鍚庡悜C绔汉鍛橀�氱煡 */
-    SettlementReceiveCompletedToUser = 2,
-    /**鎶ュ悕褰曠敤缁撴灉閫氱煡  琚綍鐢ㄥ悗鍚慍绔汉鍛橀�氱煡 */
-    HireCompletedToUser = 3,
-    /**鎺掔彮鎴愬姛閫氱煡  鎺掔彮鍚庡悜C绔汉鍛橀�氱煡 */
-    ArrangeCompletedToUser = 4,
-    /**娴嬭瘯 */
-    Test = 5,
   }
 
   interface ExportEnterpriseBalanceDetailsCommand {
@@ -4183,6 +4172,8 @@
     /** 鏈�杩戦獙鏀舵椂闂� */
     lastCheckReceiveTime?: string;
     checkedStatus?: EnumGetCheckReceiveTasksQueryResultItemCheckStatus;
+    /** 浜哄憳鏁伴噺 */
+    arrangeUserCount?: number;
   }
 
   interface GetCheckReceiveTaskUserSubmitCheckHistoriesQuery {
@@ -6244,8 +6235,6 @@
     code?: string;
     /** 浠诲姟鍚嶇О */
     taskName?: string;
-    /** 浠诲姟鍗曞彿 */
-    taskCode?: string;
     /** 浼佷笟鍚嶇О */
     enterpriseName?: string;
     /** 缁撶畻鏃ユ湡 */
@@ -7060,6 +7049,8 @@
     status?: EnumTaskStatus;
     releaseStatus?: EnumTaskReleaseStatus;
     hireStatus?: EnumTaskUserHireStatus;
+    /** 褰曠敤澶囨敞 */
+    hireRemark?: string;
     /** 鐏靛伐Id */
     enterpriseEmployeeId?: string;
     applyButton?: GetTaskInfoQueryResultApplyButton;
@@ -8747,18 +8738,6 @@
     phoneNumber: string;
   }
 
-  interface SendWxmpSubscribMessageCommand {
-    /** 灏忕▼搴忕紪鍙� */
-    wxmpCode: string;
-    template: EnumWxmpSubscribMessageTemplate;
-    /** 鐐瑰嚮妯℃澘鍗$墖鍚庣殑璺宠浆椤甸潰锛屼粎闄愭湰灏忕▼搴忓唴鐨勯〉闈€�傛敮鎸佸甫鍙傛暟,锛堢ず渚媔ndex?foo=bar锛夈�傝瀛楁涓嶅~鍒欐ā鏉挎棤璺宠浆 */
-    page?: string;
-    /** 鎺ユ敹鑰咃紙鐢ㄦ埛锛夌殑 openid */
-    touser: string;
-    /** 妯℃澘鍐呭锛屾牸寮忓舰濡倇 "phrase3": { "value": "瀹℃牳閫氳繃" }, "name1": { "value": "璁㈤槄" }, "date2": { "value": "2019-12-25 09:42" } } */
-    data: any;
-  }
-
   interface SetDictionaryDataIsDisabledCommand {
     ids?: string[];
     /** 鏄惁宸茬鐢� */
@@ -8835,6 +8814,8 @@
     /** 浠诲姟浜哄憳Id */
     id?: string;
     hireStatus?: EnumTaskUserHireStatus;
+    /** 褰曠敤澶囨敞 */
+    hireRemark?: string;
   }
 
   enum SettlementReceiveStatus {

--
Gitblit v1.9.1