wupengfei
4 天以前 d8346bcee41dc7012a8508532f64ada68d31ae23
apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue
@@ -25,6 +25,9 @@
            class="nut-input-text bole-input-text"
            placeholder="请输入服务费"
            :min="0"
            :max="999999999999"
            :precision="2"
            type="text"
          />
          <div class="form-input-unit">{{ BillingMethodEnumUnit[form.billingMethod] }}</div>
        </div>
@@ -36,11 +39,29 @@
        required
        label-width="90px"
      >
        <nut-radio-group v-model="form.settlementCycle" direction="horizontal">
        <nut-radio-group
          v-model="form.settlementCycle"
          direction="horizontal"
          @change="settleTypeChange"
        >
          <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="settlementDate"
        label-width="90px"
        required
        v-if="form.settlementCycle !== EnumSettlementCycle.Day"
      >
        <ChooseInputWithPicker
          v-model="form.settlementDate"
          placeholder="请设置结算日期"
          :value-enum="settlementDateList"
        />
      </nut-form-item>
      <nut-form-item label="福利:" class="bole-form-item" prop="benefits" label-width="90px">
        <ChooseInputWithCheckbox
@@ -62,14 +83,14 @@
            v-model.trim="form.ageMinLimit"
            class="nut-input-text bole-input-text"
            placeholder="请选择年龄范围"
            :min="1"
            :min="16"
          />
          <div class="form-input-separator">至</div>
          <NumberInput
            v-model.trim="form.ageMaxLimit"
            class="nut-input-text bole-input-text"
            placeholder="请选择年龄范围"
            :min="1"
            :min="16"
          />
        </div>
      </nut-form-item>
@@ -99,13 +120,18 @@
          placeholder="请选择资格证书"
        />
      </nut-form-item>
      <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> -->
      <nut-form-item
        label="任务地点"
        label-width="90px"
        class="bole-form-item"
        prop="weMapInfo"
        required
      >
        <ChooseLocationInput
          inputAlign="left"
          placeholder="请选择任务地点"
          v-model="form.weMapInfo"
        />
      </nut-form-item>
      <nut-form-item
        label="详细地址:"
@@ -125,12 +151,14 @@
        <ChooseInputWithDatePicker
          v-model="form.beginTime"
          :minDate="nowDate"
          placeholder="请选择任务开始日期"
        ></ChooseInputWithDatePicker>
      </nut-form-item>
      <nut-form-item label="任务结束日期:" class="bole-form-item" prop="endTime" label-width="90px">
        <ChooseInputWithDatePicker
          v-model="form.endTime"
          :minDate="nowDate"
          placeholder="请选择任务结束日期"
        ></ChooseInputWithDatePicker>
      </nut-form-item>
    </nut-form>
@@ -153,6 +181,8 @@
  EnumSettlementCycleText,
  BillingMethodEnumUnit,
  EnumUserGenderTextOptions,
  EnumSettlementCycleDateWeekArray,
  EnumSettlementCycleDateMonthArray,
} from '@12333/constants';
import {
  ChooseInputWithPicker,
@@ -180,10 +210,9 @@
const { userDetail } = useUser();
const { findAreaNameFromCode } = useAllAreaList();
const router = Taro.useRouter();
const taskId = router.params?.taskId ?? '';
const taskId = router.params?.id ?? '';
const isEdit = !!taskId;
const isCopy = router.params?.isCopy === 'true';
console.log('isCopy: ', router.params?.isCopy);
const nowDate = dayjs().toDate();
@@ -194,20 +223,29 @@
  categoryCode: CategoryCode.CertificateType,
});
const settlementDateList = computed(() => {
  if (form.settlementCycle === EnumSettlementCycle.Month) {
    return EnumSettlementCycleDateMonthArray;
  }
  if (form.settlementCycle === EnumSettlementCycle.Week) {
    return EnumSettlementCycleDateWeekArray;
  }
  return [];
});
const form = reactive({
  name: '',
  billingMethod: EnumBillingMethod.Month,
  billingMethod: EnumBillingMethod.Day,
  serviceFee: '' as any as number,
  settlementCycle: EnumSettlementCycle.Month,
  settlementCycle: EnumSettlementCycle.Day,
  benefits: [] as string[],
  ageMinLimit: 0,
  ageMaxLimit: 0,
  ageMinLimit: '' as any as number,
  ageMaxLimit: '' as any as number,
  genderLimit: 0 as any as EnumUserGender,
  credentialLimits: [] as string[],
  // address: '',
  beginTime: '',
  endTime: '',
  // areaList: [] as number[],
  settlementDate: null as number,
  weMapInfo: {} as WeMapModel,
  addressDetail: '',
@@ -216,24 +254,36 @@
const rules = reactive<FormRules>({
  name: [{ required: true, message: '请输入任务名称' }],
  genderLimit: [{ required: true, message: '请选择性别要求' }],
  settlementCycleDate: [{ required: true, message: '请设置结算日期' }],
  addressDetail: [{ required: true, message: '请输入详细地址' }],
  billingMethod: [
    {
      required: true,
      message: '请选择收费方式',
      validator: () => {
        if (!form.billingMethod) {
          return Promise.reject('请选择服务费类型');
        }
        if (!form.serviceFee) {
          return Promise.reject('请输入服务费');
        }
        return Promise.resolve(true);
      },
    },
  ],
  weMapInfo: [
    { required: true, message: '请设置工作地点', validator: FormValidator.validatorWeMap },
  ],
  // areaList: [
  //   { required: true, message: '请添加工作地点', validator: FormValidator.validatorArray },
  // ],
  ageMinLimit: [
    {
      required: true,
      message: '请输入年龄要求',
      validator: () => {
        if (!form.ageMinLimit) {
        if (!form.ageMinLimit && form.ageMinLimit > 0) {
          return Promise.reject('请输入年龄要求');
        }
        if (!form.ageMaxLimit) {
        if (!form.ageMaxLimit && form.ageMaxLimit > 0) {
          return Promise.reject('请输入年龄要求');
        }
        if (Number(form.ageMaxLimit) <= Number(form.ageMinLimit)) {
@@ -256,7 +306,8 @@
      message: '请选择结束日期',
      validator(value) {
        if (!value) return Promise.reject('请选择结束日期');
        if (value <= form.beginTime) return Promise.reject('结束日期不能小于开始日期');
        if (dayjs(value).isBefore(dayjs(form.beginTime)))
          return Promise.reject('结束日期需大于开始日期');
        return Promise.resolve(true);
      },
    },
@@ -285,13 +336,14 @@
    form.billingMethod = data.billingMethod;
    form.serviceFee = data.serviceFee;
    form.settlementCycle = data.settlementCycle;
    form.settlementDate = data.settlementDate;
    form.benefits = (data.benefits ?? []).map((item) => item.benefitCode);
    form.ageMinLimit = data.ageMinLimit;
    form.ageMaxLimit = data.ageMaxLimit;
    form.genderLimit = data.genderLimit;
    form.credentialLimits = (data.credentialLimits ?? []).map((item) => item.typeCode);
    form.beginTime = dayjs(data.beginTime).format('YYYY-MM-DD 00:00:00');
    form.endTime = dayjs(data.endTime).format('YYYY-MM-DD 23:59:59');
    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: data.provinceContent,
@@ -322,6 +374,7 @@
      billingMethod: form.billingMethod,
      serviceFee: form.serviceFee,
      settlementCycle: form.settlementCycle,
      settlementDate: form.settlementDate ? form.settlementDate : 0,
      benefits: form.benefits,
      ageMinLimit: form.ageMinLimit,
      ageMaxLimit: form.ageMaxLimit,
@@ -344,7 +397,7 @@
    }
    let res = await taskServices.saveTaskInfo(params);
    if (res) {
      Message.success(isEdit ? '编辑成功' : '发布成功', {
      Message.success(isEdit && !isCopy ? '编辑成功' : '发布成功', {
        onClosed() {
          goBack();
        },
@@ -353,6 +406,10 @@
  } catch (error) {}
}
function settleTypeChange() {
  form.settlementDate = null as number;
}
function handleCancel() {
  goBack();
}