From 4e2b08ec7c558498592a1e9b32bae8016b0906ac Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期五, 08 八月 2025 10:54:10 +0800
Subject: [PATCH] fix: s

---
 apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue |  247 ++++++++++++++++++++++++++++---------------------
 1 files changed, 140 insertions(+), 107 deletions(-)

diff --git a/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue b/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue
index caf284e..8e810c9 100644
--- a/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue
@@ -1,32 +1,32 @@
 <template>
   <ContentScrollView :paddingH="false">
     <nut-form :model-value="form" ref="formRef" :rules="rules">
-      <nut-form-item label="浠诲姟鍚嶇О:" class="bole-form-item" prop="taskName" label-width="90px">
-        <nut-input v-model="form.taskName" placeholder="璇疯緭鍏ヤ换鍔″悕绉�"> </nut-input>
+      <nut-form-item label="浠诲姟鍚嶇О:" class="bole-form-item" prop="name" label-width="90px">
+        <nut-input v-model="form.name" placeholder="璇疯緭鍏ヤ换鍔″悕绉�"> </nut-input>
       </nut-form-item>
       <nut-form-item
         label="鏈嶅姟璐�:"
         class="bole-form-item alignTop"
-        prop="feeType"
+        prop="billingMethod"
         required
         label-width="90px"
         label-position="top"
       >
-        <nut-radio-group v-model="form.feeType" direction="horizontal">
-          <BlRadio :label="Number(key)" v-for="(val, key) in FlexTaskFeeTypeEnumText" :key="key">{{
+        <nut-radio-group v-model="form.billingMethod" direction="horizontal">
+          <BlRadio :label="Number(key)" v-for="(val, key) in EnumBillingMethodText" :key="key">{{
             val
           }}</BlRadio>
         </nut-radio-group>
       </nut-form-item>
-      <nut-form-item label=" " class="bole-form-item" prop="fee" label-width="0">
+      <nut-form-item label=" " class="bole-form-item" prop="serviceFee" label-width="0">
         <div class="bole-form-input-wrapper">
           <nut-input
-            v-model.trim="form.fee"
+            v-model.trim="form.serviceFee"
             class="nut-input-text bole-input-text"
             placeholder="璇疯緭鍏ユ湇鍔¤垂"
             type="text"
           />
-          <div class="form-input-unit">{{ SalaryTimeTypeEnumUnit[form.feeType] }}</div>
+          <div class="form-input-unit">{{ BillingMethodEnumUnit[form.billingMethod] }}</div>
         </div>
       </nut-form-item>
       <nut-form-item
@@ -36,18 +36,15 @@
         required
         label-width="90px"
       >
-        <nut-radio-group v-model="form.settleType" direction="horizontal">
-          <BlRadio
-            :label="Number(key)"
-            v-for="(val, key) in FlexTaskSettleTypeEnumText"
-            :key="key"
-            >{{ val }}</BlRadio
-          >
+        <nut-radio-group v-model="form.settlementCycle" direction="horizontal">
+          <BlRadio :label="Number(key)" v-for="(val, key) in EnumSettlementCycleText" :key="key">{{
+            val
+          }}</BlRadio>
         </nut-radio-group>
       </nut-form-item>
-      <nut-form-item label="绂忓埄:" class="bole-form-item" prop="settleType" label-width="90px">
+      <nut-form-item label="绂忓埄:" class="bole-form-item" prop="benefits" label-width="90px">
         <ChooseInputWithCheckbox
-          v-model="form.listAideIds"
+          v-model="form.benefits"
           title="璇烽�夋嫨绂忓埄"
           :columns="WelfareTypeList"
           placeholder="璇烽�夋嫨绂忓埄"
@@ -56,62 +53,79 @@
       <nut-form-item
         label="骞撮緞鑼冨洿:"
         class="bole-form-item"
-        prop="minAge"
+        prop="ageMinLimit"
         required
         label-width="90px"
       >
         <div class="bole-form-input-wrapper">
           <NumberInput
-            v-model.trim="form.minAge"
+            v-model.trim="form.ageMinLimit"
             class="nut-input-text bole-input-text"
             placeholder="璇烽�夋嫨骞撮緞鑼冨洿"
             :min="1"
           />
           <div class="form-input-separator">鑷�</div>
           <NumberInput
-            v-model.trim="form.maxAge"
+            v-model.trim="form.ageMaxLimit"
             class="nut-input-text bole-input-text"
             placeholder="璇烽�夋嫨骞撮緞鑼冨洿"
             :min="1"
           />
         </div>
       </nut-form-item>
-      <nut-form-item label="鎬у埆:" class="bole-form-item" prop="sexType" label-width="90px">
+      <nut-form-item
+        label="鎬у埆瑕佹眰:"
+        class="bole-form-item"
+        prop="genderLimit"
+        label-width="90px"
+        required
+      >
         <ChooseInputWithPicker
-          v-model="form.sexType"
+          v-model="form.genderLimit"
           placeholder="璇烽�夋嫨鎬у埆瑕佹眰"
-          :value-enum="GenderText"
+          :value-enum="EnumUserGenderText"
         />
       </nut-form-item>
-      <nut-form-item label="璧勬牸璇佷功:" class="bole-form-item" prop="settleType" label-width="90px">
+      <nut-form-item
+        label="璧勬牸璇佷功:"
+        class="bole-form-item"
+        prop="credentialLimits"
+        label-width="90px"
+      >
         <ChooseInputWithCheckbox
-          v-model="form.listCertionIds"
+          v-model="form.credentialLimits"
           title="璇烽�夋嫨璧勬牸璇佷功"
           :columns="CertificateTypeList"
           placeholder="璇烽�夋嫨璧勬牸璇佷功"
         />
       </nut-form-item>
-      <nut-form-item label="浠诲姟鍦扮偣" class="bole-form-item" prop="areaList" required>
-        <!-- <ChooseLocationInput placeholder="璇烽�夋嫨浠诲姟鎵�鍦ㄥ湴" v-model="form.weMapInfo" /> -->
-        <ChooseInputWithAreaPicker
+      <nut-form-item label="浠诲姟鍦扮偣" class="bole-form-item" prop="weMapInfo" required>
+        <ChooseLocationInput placeholder="璇烽�夋嫨浠诲姟鍦扮偣" v-model="form.weMapInfo" />
+        <!-- <ChooseInputWithAreaPicker
           :columns="areaTreeList"
           v-model="form.areaList"
           placeholder="璇烽�夋嫨鎵�鍦ㄥ湴鍖�"
-        ></ChooseInputWithAreaPicker>
+        ></ChooseInputWithAreaPicker> -->
       </nut-form-item>
-      <nut-form-item label="璇︾粏鍦板潃:" class="bole-form-item" prop="address" label-width="90px">
-        <nut-input v-model="form.address" placeholder="璇疯緭鍏ヨ缁嗗湴鍧�"> </nut-input>
+      <nut-form-item
+        label="璇︾粏鍦板潃:"
+        class="bole-form-item"
+        prop="addressDetail"
+        label-width="90px"
+        required
+      >
+        <nut-input v-model="form.addressDetail" placeholder="璇疯緭鍏ヨ缁嗗湴鍧�"> </nut-input>
       </nut-form-item>
       <nut-form-item
         label="浠诲姟寮�濮嬫棩鏈�:"
         class="bole-form-item"
-        prop="startDate"
+        prop="beginTime"
         label-width="90px"
       >
-        <ChooseInputWithDatePicker v-model="form.startDate"></ChooseInputWithDatePicker>
+        <ChooseInputWithDatePicker v-model="form.beginTime"></ChooseInputWithDatePicker>
       </nut-form-item>
-      <nut-form-item label="浠诲姟缁撴潫鏃ユ湡:" class="bole-form-item" prop="endDate" label-width="90px">
-        <ChooseInputWithDatePicker v-model="form.endDate"></ChooseInputWithDatePicker>
+      <nut-form-item label="浠诲姟缁撴潫鏃ユ湡:" class="bole-form-item" prop="endTime" label-width="90px">
+        <ChooseInputWithDatePicker v-model="form.endTime"></ChooseInputWithDatePicker>
       </nut-form-item>
     </nut-form>
   </ContentScrollView>
@@ -124,11 +138,14 @@
 <script setup lang="ts">
 import { useUser } from '@/hooks';
 import {
-  FlexTaskSettleTypeEnum,
-  FlexTaskSettleTypeEnumText,
-  FlexTaskFeeTypeEnum,
-  FlexTaskFeeTypeEnumText,
-  SalaryTimeTypeEnumUnit,
+  CategoryCode,
+  EnumBillingMethod,
+  EnumSettlementCycle,
+  EnumUserGender,
+  EnumBillingMethodText,
+  EnumUserGenderText,
+  EnumSettlementCycleText,
+  BillingMethodEnumUnit,
 } from '@12333/constants';
 import {
   ChooseInputWithPicker,
@@ -141,11 +158,11 @@
 } from '@12333/components';
 import { FormValidator, Message } from '@12333/utils';
 import * as flexWorkerServices from '@12333/services/api/FlexWorker';
+import * as taskServices from '@12333/services/apiV2/task';
 import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types';
 import Taro from '@tarojs/taro';
 import { goBack } from '@/utils';
-import { Gender, GenderText, SearchType } from '@12333/constants';
-import { useAllAreaList, useSearchSettingType } from '@12333/hooks';
+import { useAllAreaList, useDictionaryDataSelect } from '@12333/hooks';
 import { useQuery } from '@tanstack/vue-query';
 import dayjs from 'dayjs';
 
@@ -154,56 +171,63 @@
 });
 
 const { userDetail } = useUser();
-const { areaTreeList } = useAllAreaList();
+const { findAreaNameFromCode } = useAllAreaList();
 const router = Taro.useRouter();
 const taskId = router.params?.taskId ?? '';
 const isEdit = !!taskId;
 const isCopy = router.params?.isCopy === 'true';
 console.log('isCopy: ', router.params?.isCopy);
 
-const WelfareTypeList = ref([]);
-const CertificateTypeList = ref([]);
+const { dictionaryDataList: WelfareTypeList } = useDictionaryDataSelect({
+  categoryCode: CategoryCode.Welfare,
+});
+const { dictionaryDataList: CertificateTypeList } = useDictionaryDataSelect({
+  categoryCode: CategoryCode.CertificateType,
+});
 
 const form = reactive({
-  taskName: '',
-  feeType: FlexTaskFeeTypeEnum.OfMonth,
-  fee: 0,
-  settleType: FlexTaskSettleTypeEnum.OfMonth,
-  listAideIds: [] as string[],
-  minAge: 0,
-  maxAge: 0,
-  sexType: Gender.Male,
-  listCertionIds: [] as string[],
-  address: '',
-  startDate: '',
-  endDate: '',
-  areaList: [] as number[],
+  name: '',
+  billingMethod: EnumBillingMethod.Month,
+  serviceFee: '' as any as number,
+  settlementCycle: EnumSettlementCycle.Month,
+  benefits: [] as string[],
+  ageMinLimit: 0,
+  ageMaxLimit: 0,
+  genderLimit: '' as any as EnumUserGender,
+  credentialLimits: [] as string[],
+  // address: '',
+  beginTime: '',
+  endTime: '',
+  // areaList: [] as number[],
 
   weMapInfo: {} as WeMapModel,
+  addressDetail: '',
 });
 
 const rules = reactive<FormRules>({
-  taskName: [{ required: true, message: '璇疯緭鍏ヤ换鍔″悕绉�' }],
+  name: [{ required: true, message: '璇疯緭鍏ヤ换鍔″悕绉�' }],
+  genderLimit: [{ required: true, message: '璇烽�夋嫨鎬у埆瑕佹眰' }],
+  addressDetail: [{ required: true, message: '璇疯緭鍏ヨ缁嗗湴鍧�' }],
 
-  // weMapInfo: [
-  //   { required: true, message: '璇疯缃伐浣滃湴鐐�', validator: FormValidator.validatorWeMap },
-  // ],
-  areaList: [
-    { required: true, message: '娓呮坊鍔犲伐浣滃湴鐐�', validator: FormValidator.validatorArray },
+  weMapInfo: [
+    { required: true, message: '璇疯缃伐浣滃湴鐐�', validator: FormValidator.validatorWeMap },
   ],
+  // areaList: [
+  //   { required: true, message: '璇锋坊鍔犲伐浣滃湴鐐�', validator: FormValidator.validatorArray },
+  // ],
 
-  minAge: [
+  ageMinLimit: [
     {
       required: true,
       message: '璇疯緭鍏ュ勾榫勮姹�',
       validator: () => {
-        if (!form.minAge) {
+        if (!form.ageMinLimit) {
           return Promise.reject('璇疯緭鍏ュ勾榫勮姹�');
         }
-        if (!form.maxAge) {
+        if (!form.ageMaxLimit) {
           return Promise.reject('璇疯緭鍏ュ勾榫勮姹�');
         }
-        if (Number(form.maxAge) <= Number(form.minAge)) {
+        if (Number(form.ageMaxLimit) <= Number(form.ageMinLimit)) {
           return Promise.reject('鏈�澶у勾榫勪笉鑳藉皬浜庢渶灏忓勾榫�');
         }
         return Promise.resolve(true);
@@ -211,19 +235,19 @@
     },
   ],
 
-  startDate: [
+  beginTime: [
     {
       required: true,
       message: '璇烽�夋嫨寮�濮嬫棩鏈�',
     },
   ],
-  endDate: [
+  endTime: [
     {
       required: true,
       message: '璇烽�夋嫨缁撴潫鏃ユ湡',
       validator(value) {
         if (!value) return Promise.reject('璇烽�夋嫨缁撴潫鏃ユ湡');
-        if (value <= form.startDate) return Promise.reject('缁撴潫鏃ユ湡涓嶈兘灏忎簬寮�濮嬫棩鏈�');
+        if (value <= form.beginTime) return Promise.reject('缁撴潫鏃ユ湡涓嶈兘灏忎簬寮�濮嬫棩鏈�');
         return Promise.resolve(true);
       },
     },
@@ -236,32 +260,39 @@
   data: detail,
   refetch,
 } = useQuery({
-  queryKey: ['flexWorkerServices/getFlexTaskDto', taskId],
+  queryKey: ['taskServices/getTaskInfo', taskId],
   queryFn: async () => {
-    return await flexWorkerServices.getFlexTaskDto(
+    return await taskServices.getTaskInfo(
       { id: taskId },
       {
         showLoading: false,
       }
     );
   },
-  placeholderData: () => ({} as API.GetFlexTaskDtoOutput),
+  placeholderData: () => ({} as API.GetTaskInfoQueryResult),
   enabled: isEdit,
   onSuccess(data) {
-    form.taskName = data.taskName;
-    form.feeType = data.feeType;
-    form.fee = data.fee;
-    form.settleType = data.settleType;
-    form.listAideIds = data.taskWeals?.length > 0 ? data.taskWeals.map((item) => item.id) : [];
-    form.minAge = data.minAge;
-    form.maxAge = data.maxAge;
-    form.sexType = data.sexType;
-    form.listCertionIds = data.taskCerts?.length > 0 ? data.taskCerts.map((item) => item.id) : [];
-    form.address = data.address;
-    form.startDate = dayjs(data.startDate).format('YYYY-MM-DD');
-    form.endDate = dayjs(data.endDate).format('YYYY-MM-DD');
-    form.areaList = [data.provinceId, data.cityId, data.areaId];
-    form.address = data.address;
+    form.name = data.name;
+    form.billingMethod = data.billingMethod;
+    form.serviceFee = data.serviceFee;
+    form.settlementCycle = data.settlementCycle;
+    form.benefits = (data.benefits ?? []).map((item) => item.code);
+    form.ageMinLimit = data.ageMinLimit;
+    form.ageMaxLimit = data.ageMaxLimit;
+    form.genderLimit = data.genderLimit;
+    form.credentialLimits = (data.credentialLimits ?? []).map((item) => item.code);
+    form.beginTime = dayjs(data.beginTime).format('YYYY-MM-DD');
+    form.endTime = dayjs(data.endTime).format('YYYY-MM-DD');
+    form.addressDetail = data.addressDetail;
+    form.weMapInfo = {
+      provinceName: findAreaNameFromCode(data.provinceCode),
+      cityName: findAreaNameFromCode(data.cityCode),
+      provinceCode: data.provinceCode,
+      cityCode: data.cityCode,
+      latitude: data.latitude,
+      longitude: data.longitude,
+      addressName: data.addressName,
+    };
   },
 });
 
@@ -277,30 +308,32 @@
 
 async function confirm() {
   try {
-    let params: API.AddEidtFlexTaskInput = {
-      taskName: form.taskName,
-      feeType: form.feeType,
-      fee: form.fee,
-      settleType: form.settleType,
-      listAideIds: form.listAideIds,
-      minAge: form.minAge,
-      maxAge: form.maxAge,
-      sexType: form.sexType,
-      listCertionIds: form.listCertionIds,
-      address: form.address,
-      startDate: form.startDate,
-      endDate: form.endDate,
-      provinceId: form.areaList[0],
-      cityId: form.areaList[1],
-      areaId: form.areaList[2],
+    let params: API.SaveTaskInfoCommand = {
+      name: form.name,
+      billingMethod: form.billingMethod,
+      serviceFee: form.serviceFee,
+      settlementCycle: form.settlementCycle,
+      benefits: form.benefits,
+      ageMinLimit: form.ageMinLimit,
+      ageMaxLimit: form.ageMaxLimit,
+      genderLimit: form.genderLimit,
+      credentialLimits: form.credentialLimits,
+      provinceCode: form.weMapInfo.provinceCode,
+      cityCode: form.weMapInfo.cityCode,
+      addressName: form.weMapInfo.addressName,
+      addressDetail: form.addressDetail,
+      longitude: form.weMapInfo.longitude,
+      latitude: form.weMapInfo.latitude,
+      beginTime: form.beginTime,
+      endTime: form.endTime,
     };
     if (isEdit) {
-      params.taskId = taskId;
+      params.id = taskId;
     }
     if (isCopy) {
-      params.taskId = '';
+      params.id = '';
     }
-    let res = await flexWorkerServices.addEidtFlexTask(params);
+    let res = await taskServices.saveTaskInfo(params);
     if (res) {
       Message.success(isEdit ? '缂栬緫鎴愬姛' : '鍙戝竷鎴愬姛', {
         onClosed() {

--
Gitblit v1.9.1