wupengfei
6 天以前 87af8eda59a2679cb1c9295012adda05b72cde85
feat: 任务
11个文件已修改
418 ■■■■ 已修改文件
.eslintrc-auto-import.json 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
auto-imports.d.ts 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/WeMap/WeMap.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/apiEnum.ts 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/task.ts 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/auth.ts 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/typings.d.ts 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/user.ts 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/TaskManage/TaskManageList.vue 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/TaskManage/components/TaskDetailView.vue 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
types/global.d.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.eslintrc-auto-import.json
@@ -5,6 +5,7 @@
    "AreaType": true,
    "AuthorizeType": true,
    "BooleanOptions": true,
    "CallingConventions": true,
    "CategoryCode": true,
    "CertificateTypeCodeEnum": true,
    "ChargeTypeEnum": true,
@@ -21,6 +22,8 @@
    "EnterpriseConfigureType": true,
    "EnterpriseConfigureTypeText": true,
    "EnumBillingMethod": true,
    "EnumBillingMethodText": true,
    "EnumBillingMethodUnitText": true,
    "EnumClientType": true,
    "EnumClientTypeText": true,
    "EnumMenuType": true,
@@ -37,6 +40,7 @@
    "EnumSettlementCycleText": true,
    "EnumSmsAccess": true,
    "EnumSmsAccessText": true,
    "EnumSmsTemplateType": true,
    "EnumTaskCheckReceiveStatus": true,
    "EnumTaskRecommendStatus": true,
    "EnumTaskRecommendStatusText": true,
@@ -46,10 +50,12 @@
    "EnumTaskStatus": true,
    "EnumTaskStatusText": true,
    "EnumUserGender": true,
    "EnumUserGenderText": true,
    "EnumUserInfoStatusText": true,
    "EnumUserStatus": true,
    "EnumUserType": true,
    "EnumUserTypeText": true,
    "EventAttributes": true,
    "ExtractDefaultPropTypes": true,
    "ExtractPropTypes": true,
    "ExtractPublicPropTypes": true,
@@ -58,6 +64,7 @@
    "FastColumnList": true,
    "FastDataButtonList": true,
    "FastPageButtonList": true,
    "FieldAttributes": true,
    "FlexEnterpriseCertificationStatus": true,
    "FlexEnterpriseCertificationStatusText": true,
    "FlexTaskWorkerHireEnum": true,
@@ -66,6 +73,7 @@
    "FlexWorkerEleSignEnumText": true,
    "Gender": true,
    "GenderText": true,
    "GenericParameterAttributes": true,
    "GlobalEvent": true,
    "GlobalEventContext": true,
    "GlobalEventListener": true,
@@ -73,9 +81,13 @@
    "InjectionKey": true,
    "IsConfiguredText": true,
    "IsRealText": true,
    "LayoutKind": true,
    "MaybeRef": true,
    "MaybeRefOrGetter": true,
    "MemberTypes": true,
    "MenuSvgIconMap": true,
    "MethodAttributes": true,
    "MethodImplAttributes": true,
    "ModuleColumns": true,
    "MyRegExp": true,
    "OSSBaseURL": true,
@@ -91,18 +103,24 @@
    "OssRich": true,
    "OssUser": true,
    "OssUserSign": true,
    "ParameterAttributes": true,
    "PropType": true,
    "PropertyAttributes": true,
    "Ref": true,
    "RoleClientType": true,
    "SecurityRuleSet": true,
    "Slot": true,
    "Slots": true,
    "SubModuleKey": true,
    "SubModuleTitle": true,
    "SubModuleType": true,
    "TaskCreationOptions": true,
    "TaskStatus": true,
    "ThemeColorItem": true,
    "ThemeColorName": true,
    "ThemeColors": true,
    "ThemeColorsType": true,
    "TypeAttributes": true,
    "UsePortraitTableColumnsItem": true,
    "UsePortraitTableOptions": true,
    "VNode": true,
auto-imports.d.ts
@@ -11,6 +11,7 @@
  const AreaType: typeof import('./src/constants/enum')['AreaType']
  const AuthorizeType: typeof import('./src/constants/enum')['AuthorizeType']
  const BooleanOptions: typeof import('./src/constants/enum')['BooleanOptions']
  const CallingConventions: typeof import('./src/constants/apiEnum')['CallingConventions']
  const CategoryCode: typeof import('./src/constants/dic')['CategoryCode']
  const CertificateTypeCodeEnum: typeof import('./src/constants/dic')['CertificateTypeCodeEnum']
  const CertificateTypeEnum: typeof import('./src/constants/dic')['CertificateTypeEnum']
@@ -28,6 +29,8 @@
  const EnterpriseConfigureType: typeof import('./src/constants/enterprise')['EnterpriseConfigureType']
  const EnterpriseConfigureTypeText: typeof import('./src/constants/enterprise')['EnterpriseConfigureTypeText']
  const EnumBillingMethod: typeof import('./src/constants/apiEnum')['EnumBillingMethod']
  const EnumBillingMethodText: typeof import('./src/constants/task')['EnumBillingMethodText']
  const EnumBillingMethodUnitText: typeof import('./src/constants/task')['EnumBillingMethodUnitText']
  const EnumClientType: typeof import('./src/constants/apiEnum')['EnumClientType']
  const EnumClientTypeText: typeof import('./src/constants/apiEnumText')['EnumClientTypeText']
  const EnumMenuType: typeof import('./src/constants/apiEnum')['EnumMenuType']
@@ -44,6 +47,7 @@
  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 EnumSmsTemplateType: typeof import('./src/constants/apiEnum')['EnumSmsTemplateType']
  const EnumTaskCheckReceiveStatus: typeof import('./src/constants/apiEnum')['EnumTaskCheckReceiveStatus']
  const EnumTaskRecommendStatus: typeof import('./src/constants/apiEnum')['EnumTaskRecommendStatus']
  const EnumTaskRecommendStatusText: typeof import('./src/constants/task')['EnumTaskRecommendStatusText']
@@ -53,16 +57,19 @@
  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 EnumUserGenderText: typeof import('./src/constants/task')['EnumUserGenderText']
  const EnumUserInfoStatus: typeof import('./src/constants/apiEnum')['EnumUserInfoStatus']
  const EnumUserInfoStatusText: typeof import('./src/constants/user')['EnumUserInfoStatusText']
  const EnumUserStatus: typeof import('./src/constants/apiEnum')['EnumUserStatus']
  const EnumUserType: typeof import('./src/constants/apiEnum')['EnumUserType']
  const EnumUserTypeText: typeof import('./src/constants/apiEnumText')['EnumUserTypeText']
  const EnumWebApiMethod: typeof import('./src/constants/apiEnum')['EnumWebApiMethod']
  const EventAttributes: typeof import('./src/constants/apiEnum')['EventAttributes']
  const FastButtonMap: typeof import('./src/constants/module')['FastButtonMap']
  const FastColumnList: typeof import('./src/constants/module')['FastColumnList']
  const FastDataButtonList: typeof import('./src/constants/module')['FastDataButtonList']
  const FastPageButtonList: typeof import('./src/constants/module')['FastPageButtonList']
  const FieldAttributes: typeof import('./src/constants/apiEnum')['FieldAttributes']
  const FlexEnterpriseCertificationStatus: typeof import('./src/constants/enterprise')['FlexEnterpriseCertificationStatus']
  const FlexEnterpriseCertificationStatusText: typeof import('./src/constants/enterprise')['FlexEnterpriseCertificationStatusText']
  const FlexEnterpriseSettingStatus: typeof import('./src/constants/enterprise')['FlexEnterpriseSettingStatus']
@@ -75,12 +82,17 @@
  const FlexWorkerEleSignEnumText: typeof import('./src/constants/cPerson')['FlexWorkerEleSignEnumText']
  const Gender: typeof import('./src/constants/enum')['Gender']
  const GenderText: typeof import('./src/constants/enum')['GenderText']
  const GenericParameterAttributes: typeof import('./src/constants/apiEnum')['GenericParameterAttributes']
  const IdentityCodeEnum: typeof import('./src/constants/dic')['IdentityCodeEnum']
  const IsConfiguredText: typeof import('./src/constants/enterprise')['IsConfiguredText']
  const IsRealText: typeof import('./src/constants/enterprise')['IsRealText']
  const LayoutKind: typeof import('./src/constants/apiEnum')['LayoutKind']
  const MemberTypes: typeof import('./src/constants/apiEnum')['MemberTypes']
  const MenuSvgIconMap: typeof import('./src/constants/menu')['MenuSvgIconMap']
  const MessageChannelEnum: typeof import('./src/constants/enterprise')['MessageChannelEnum']
  const MessageChannelEnumText: typeof import('./src/constants/enterprise')['MessageChannelEnumText']
  const MethodAttributes: typeof import('./src/constants/apiEnum')['MethodAttributes']
  const MethodImplAttributes: typeof import('./src/constants/apiEnum')['MethodImplAttributes']
  const ModuleColumns: typeof import('./src/constants/module')['ModuleColumns']
  const MyRegExp: typeof import('./src/constants/regExp')['MyRegExp']
  const OSSBaseURL: typeof import('./src/constants/oss')['OSSBaseURL']
@@ -96,15 +108,21 @@
  const OssRich: typeof import('./src/constants/oss')['OssRich']
  const OssUser: typeof import('./src/constants/oss')['OssUser']
  const OssUserSign: typeof import('./src/constants/oss')['OssUserSign']
  const ParameterAttributes: typeof import('./src/constants/apiEnum')['ParameterAttributes']
  const PropertyAttributes: typeof import('./src/constants/apiEnum')['PropertyAttributes']
  const RoleClientType: typeof import('./src/constants/role')['RoleClientType']
  const SearchType: typeof import('./src/constants/dic')['SearchType']
  const SearchTypeText: typeof import('./src/constants/dic')['SearchTypeText']
  const SecurityRuleSet: typeof import('./src/constants/apiEnum')['SecurityRuleSet']
  const SignChannelEnum: typeof import('./src/constants/enterprise')['SignChannelEnum']
  const SignChannelEnumText: typeof import('./src/constants/enterprise')['SignChannelEnumText']
  const SubModuleKey: typeof import('./src/constants/module')['SubModuleKey']
  const SubModuleTitle: typeof import('./src/constants/module')['SubModuleTitle']
  const SubModuleType: typeof import('./src/constants/module')['SubModuleType']
  const TaskCreationOptions: typeof import('./src/constants/apiEnum')['TaskCreationOptions']
  const TaskStatus: typeof import('./src/constants/apiEnum')['TaskStatus']
  const ThemeColors: typeof import('./src/constants/theme')['ThemeColors']
  const TypeAttributes: typeof import('./src/constants/apiEnum')['TypeAttributes']
  const VerifyStatus: typeof import('./src/constants/enterprise')['VerifyStatus']
  const VerifyStatusColor: typeof import('./src/constants/enterprise')['VerifyStatusColor']
  const VerifyStatusText: typeof import('./src/constants/enterprise')['VerifyStatusText']
@@ -219,7 +237,7 @@
  export type { Component, Slot, Slots, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
  import('vue')
  // @ts-ignore
  export type { EnumBillingMethod, EnumClientType, EnumMenuType, EnumMenuVisitLevel, EnumPagedListOrder, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumUserGender, EnumUserStatus, EnumUserType, EnumBillingMethod, EnumClientType, EnumMenuType, EnumMenuVisitLevel, EnumPagedListOrder, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumUserGender, EnumUserStatus, EnumUserType } from './src/constants/apiEnum'
  export type { CallingConventions, EnumBillingMethod, EnumClientType, EnumMenuType, EnumMenuVisitLevel, EnumPagedListOrder, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumSmsTemplateType, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumUserGender, EnumUserStatus, EnumUserType, EventAttributes, FieldAttributes, GenericParameterAttributes, LayoutKind, MemberTypes, MethodAttributes, MethodImplAttributes, ParameterAttributes, PropertyAttributes, SecurityRuleSet, TaskCreationOptions, TaskStatus, TypeAttributes, CallingConventions, EnumBillingMethod, EnumClientType, EnumMenuType, EnumMenuVisitLevel, EnumPagedListOrder, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumSmsTemplateType, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumUserGender, EnumUserStatus, EnumUserType, EventAttributes, FieldAttributes, GenericParameterAttributes, LayoutKind, MemberTypes, MethodAttributes, MethodImplAttributes, ParameterAttributes, PropertyAttributes, SecurityRuleSet, TaskCreationOptions, TaskStatus, TypeAttributes } from './src/constants/apiEnum'
  import('./src/constants/apiEnum')
  // @ts-ignore
  export type { FlexWorkerEleSignEnum, FlexTaskWorkerHireEnum, FlexWorkerEleSignEnum, FlexTaskWorkerHireEnum } from './src/constants/cPerson'
@@ -266,6 +284,7 @@
    readonly AreaType: UnwrapRef<typeof import('./src/constants/enum')['AreaType']>
    readonly AuthorizeType: UnwrapRef<typeof import('./src/constants/enum')['AuthorizeType']>
    readonly BooleanOptions: UnwrapRef<typeof import('./src/constants/enum')['BooleanOptions']>
    readonly CallingConventions: UnwrapRef<typeof import('./src/constants/apiEnum')['CallingConventions']>
    readonly CategoryCode: UnwrapRef<typeof import('./src/constants/dic')['CategoryCode']>
    readonly CertificateTypeCodeEnum: UnwrapRef<typeof import('./src/constants/dic')['CertificateTypeCodeEnum']>
    readonly ChargeTypeEnum: UnwrapRef<typeof import('./src/constants/enterprise')['ChargeTypeEnum']>
@@ -278,6 +297,8 @@
    readonly EnterpriseConfigureType: UnwrapRef<typeof import('./src/constants/enterprise')['EnterpriseConfigureType']>
    readonly EnterpriseConfigureTypeText: UnwrapRef<typeof import('./src/constants/enterprise')['EnterpriseConfigureTypeText']>
    readonly EnumBillingMethod: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumBillingMethod']>
    readonly EnumBillingMethodText: UnwrapRef<typeof import('./src/constants/task')['EnumBillingMethodText']>
    readonly EnumBillingMethodUnitText: UnwrapRef<typeof import('./src/constants/task')['EnumBillingMethodUnitText']>
    readonly EnumClientType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumClientType']>
    readonly EnumClientTypeText: UnwrapRef<typeof import('./src/constants/apiEnumText')['EnumClientTypeText']>
    readonly EnumMenuType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumMenuType']>
@@ -294,6 +315,7 @@
    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 EnumSmsTemplateType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumSmsTemplateType']>
    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']>
@@ -303,14 +325,17 @@
    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 EnumUserGenderText: UnwrapRef<typeof import('./src/constants/task')['EnumUserGenderText']>
    readonly EnumUserInfoStatusText: UnwrapRef<typeof import('./src/constants/user')['EnumUserInfoStatusText']>
    readonly EnumUserStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserStatus']>
    readonly EnumUserType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserType']>
    readonly EnumUserTypeText: UnwrapRef<typeof import('./src/constants/apiEnumText')['EnumUserTypeText']>
    readonly EventAttributes: UnwrapRef<typeof import('./src/constants/apiEnum')['EventAttributes']>
    readonly FastButtonMap: UnwrapRef<typeof import('./src/constants/module')['FastButtonMap']>
    readonly FastColumnList: UnwrapRef<typeof import('./src/constants/module')['FastColumnList']>
    readonly FastDataButtonList: UnwrapRef<typeof import('./src/constants/module')['FastDataButtonList']>
    readonly FastPageButtonList: UnwrapRef<typeof import('./src/constants/module')['FastPageButtonList']>
    readonly FieldAttributes: UnwrapRef<typeof import('./src/constants/apiEnum')['FieldAttributes']>
    readonly FlexEnterpriseCertificationStatus: UnwrapRef<typeof import('./src/constants/enterprise')['FlexEnterpriseCertificationStatus']>
    readonly FlexEnterpriseCertificationStatusText: UnwrapRef<typeof import('./src/constants/enterprise')['FlexEnterpriseCertificationStatusText']>
    readonly FlexTaskWorkerHireEnum: UnwrapRef<typeof import('./src/constants/cPerson')['FlexTaskWorkerHireEnum']>
@@ -319,10 +344,15 @@
    readonly FlexWorkerEleSignEnumText: UnwrapRef<typeof import('./src/constants/cPerson')['FlexWorkerEleSignEnumText']>
    readonly Gender: UnwrapRef<typeof import('./src/constants/enum')['Gender']>
    readonly GenderText: UnwrapRef<typeof import('./src/constants/enum')['GenderText']>
    readonly GenericParameterAttributes: UnwrapRef<typeof import('./src/constants/apiEnum')['GenericParameterAttributes']>
    readonly IdentityCodeEnum: UnwrapRef<typeof import('./src/constants/dic')['IdentityCodeEnum']>
    readonly IsConfiguredText: UnwrapRef<typeof import('./src/constants/enterprise')['IsConfiguredText']>
    readonly IsRealText: UnwrapRef<typeof import('./src/constants/enterprise')['IsRealText']>
    readonly LayoutKind: UnwrapRef<typeof import('./src/constants/apiEnum')['LayoutKind']>
    readonly MemberTypes: UnwrapRef<typeof import('./src/constants/apiEnum')['MemberTypes']>
    readonly MenuSvgIconMap: UnwrapRef<typeof import('./src/constants/menu')['MenuSvgIconMap']>
    readonly MethodAttributes: UnwrapRef<typeof import('./src/constants/apiEnum')['MethodAttributes']>
    readonly MethodImplAttributes: UnwrapRef<typeof import('./src/constants/apiEnum')['MethodImplAttributes']>
    readonly ModuleColumns: UnwrapRef<typeof import('./src/constants/module')['ModuleColumns']>
    readonly MyRegExp: UnwrapRef<typeof import('./src/constants/regExp')['MyRegExp']>
    readonly OSSBaseURL: UnwrapRef<typeof import('./src/constants/oss')['OSSBaseURL']>
@@ -338,11 +368,17 @@
    readonly OssRich: UnwrapRef<typeof import('./src/constants/oss')['OssRich']>
    readonly OssUser: UnwrapRef<typeof import('./src/constants/oss')['OssUser']>
    readonly OssUserSign: UnwrapRef<typeof import('./src/constants/oss')['OssUserSign']>
    readonly ParameterAttributes: UnwrapRef<typeof import('./src/constants/apiEnum')['ParameterAttributes']>
    readonly PropertyAttributes: UnwrapRef<typeof import('./src/constants/apiEnum')['PropertyAttributes']>
    readonly RoleClientType: UnwrapRef<typeof import('./src/constants/role')['RoleClientType']>
    readonly SecurityRuleSet: UnwrapRef<typeof import('./src/constants/apiEnum')['SecurityRuleSet']>
    readonly SubModuleKey: UnwrapRef<typeof import('./src/constants/module')['SubModuleKey']>
    readonly SubModuleTitle: UnwrapRef<typeof import('./src/constants/module')['SubModuleTitle']>
    readonly SubModuleType: UnwrapRef<typeof import('./src/constants/module')['SubModuleType']>
    readonly TaskCreationOptions: UnwrapRef<typeof import('./src/constants/apiEnum')['TaskCreationOptions']>
    readonly TaskStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['TaskStatus']>
    readonly ThemeColors: UnwrapRef<typeof import('./src/constants/theme')['ThemeColors']>
    readonly TypeAttributes: UnwrapRef<typeof import('./src/constants/apiEnum')['TypeAttributes']>
    readonly VerifyStatus: UnwrapRef<typeof import('./src/constants/enterprise')['VerifyStatus']>
    readonly VerifyStatusColor: UnwrapRef<typeof import('./src/constants/enterprise')['VerifyStatusColor']>
    readonly VerifyStatusText: UnwrapRef<typeof import('./src/constants/enterprise')['VerifyStatusText']>
@@ -451,4 +487,4 @@
    readonly watchPostEffect: UnwrapRef<typeof import('vue')['watchPostEffect']>
    readonly watchSyncEffect: UnwrapRef<typeof import('vue')['watchSyncEffect']>
  }
}
}
src/components/WeMap/WeMap.vue
@@ -13,7 +13,6 @@
<script setup lang="ts">
import { useAllAreaList } from '@/hooks';
import { Message } from '@bole-core/core';
import { loadEnv } from '@build/index';
import { useFormItem } from 'element-plus';
@@ -87,6 +86,7 @@
      cityCode: findAreaCodeFromName(cityName),
      countyCode: findAreaCodeFromName(countyName),
      address: loc.poiaddress,
      addressName: loc.name,
    });
    if (props.validateEvent) {
      formItem?.validate?.('change');
src/constants/apiEnum.ts
@@ -125,6 +125,20 @@
  AliyunSms = 10,
}
/** 短信模板类型 */
export enum EnumSmsTemplateType {
  /**登录 */
  Login = 0,
  /**注册 */
  Register = 1,
  /**修改密码 */
  UpdatePassword = 2,
  /**绑定手机号码 */
  BindPhoneNumber = 3,
  /**修改手机号码 */
  UpdatePhoneNumber = 4,
}
/** 任务结算状态 */
export enum EnumTaskCheckReceiveStatus {
  /**待验收 */
src/constants/task.ts
@@ -2,6 +2,7 @@
  [EnumTaskStatus.Wait]: '待安排',
  [EnumTaskStatus.Complete]: '已安排',
};
export const EnumSettlementCycleText = {
  [EnumSettlementCycle.Month]: '月结',
  [EnumSettlementCycle.Week]: '周结',
@@ -12,7 +13,27 @@
  [EnumTaskReleaseStatus.InProcess]: '发布中',
  [EnumTaskReleaseStatus.Stopped]: '已停止',
};
export const EnumTaskRecommendStatusText = {
  [EnumTaskRecommendStatus.No]: '未推荐',
  [EnumTaskRecommendStatus.Yes]: '已推荐',
};
export const EnumUserGenderText = {
  [EnumUserGender.Male]: '男性',
  [EnumUserGender.Female]: '女性',
};
export const EnumBillingMethodText = {
  [EnumBillingMethod.Month]: '按月',
  [EnumBillingMethod.Day]: '按日',
  [EnumBillingMethod.Hour]: '按时',
  [EnumBillingMethod.Piece]: '计件',
};
export const EnumBillingMethodUnitText = {
  [EnumBillingMethod.Month]: '元/月',
  [EnumBillingMethod.Day]: '元/日',
  [EnumBillingMethod.Hour]: '元/小时',
  [EnumBillingMethod.Piece]: '元/件',
};
src/services/api/auth.ts
@@ -62,3 +62,15 @@
    ...(options || {}),
  });
}
/** 发送验证码 POST /api/user/auth/sendVerifyCode */
export async function sendVerifyCode(body: API.SendVerifyCodeCommand, options?: API.RequestConfig) {
  return request<string>('/api/user/auth/sendVerifyCode', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
src/services/api/typings.d.ts
@@ -122,13 +122,6 @@
    ids: string[];
  }
  interface DictionaryDataQueryModel {
    /** 编号 */
    code?: string;
    /** 名称 */
    name?: string;
  }
  enum EnumBillingMethod {
    /**按月 */
    Month = 10,
@@ -240,6 +233,19 @@
  enum EnumSmsAccess {
    /**阿里云短信 */
    AliyunSms = 10,
  }
  enum EnumSmsTemplateType {
    /**登录 */
    Login = 0,
    /**注册 */
    Register = 1,
    /**修改密码 */
    UpdatePassword = 2,
    /**绑定手机号码 */
    BindPhoneNumber = 3,
    /**修改手机号码 */
    UpdatePhoneNumber = 4,
  }
  enum EnumTaskCheckReceiveStatus {
@@ -1159,26 +1165,30 @@
    serviceFee?: number;
    settlementCycle?: EnumSettlementCycle;
    /** 福利 */
    benefits?: DictionaryDataQueryModel[];
    benefits?: GetTaskInfoQueryResultBenefit[];
    /** 年龄范围最小 */
    ageMinLimit?: number;
    /** 年龄范围大 */
    ageMaxLimit?: number;
    genderLimit?: EnumUserGender;
    /** 资格证书类型 */
    credentialLimits?: DictionaryDataQueryModel[];
    credentialLimits?: GetTaskInfoQueryResultCredentialLimit[];
    /** 任务地点所属省份编号 */
    provinceCode?: string;
    /** 任务地点所属省份 */
    provinceName?: string;
    provinceContent?: string;
    /** 任务地点所属城市编号 */
    cityCode?: string;
    /** 任务地点所属城市 */
    cityName?: string;
    cityContent?: string;
    /** 任务地点名称 */
    addressName?: string;
    /** 任务地点详细地址 */
    addressDetail?: string;
    /** 经度 */
    longitude?: number;
    /** 纬度 */
    latitude?: number;
    /** 任务开始时间 */
    beginTime?: string;
    /** 任务结束时间 */
@@ -1189,12 +1199,28 @@
    isCollected?: boolean;
  }
  interface GetTaskInfoQueryResultBenefit {
    /** 福利编号 */
    benefitCode?: string;
    /** 福利 */
    benefitContent?: string;
  }
  interface GetTaskInfoQueryResultCredentialLimit {
    /** 证书类型编号 */
    typeCode?: string;
    /** 证书类型 */
    typeContent?: string;
  }
  interface GetTaskInfosQuery {
    pageModel?: PagedListQueryPageModel;
    /** 关键字(任务名称) */
    keywords?: string;
    /** 发布时间 */
    time?: string;
    /** 发布时间-开始 */
    beginTime?: string;
    /** 发布时间-结束 */
    endTime?: string;
    /** 任务地点所属城市编号 */
    cityCode?: string;
    settlementCycle?: EnumSettlementCycle;
@@ -1217,7 +1243,27 @@
    /** 服务费 */
    serviceFee?: number;
    settlementCycle?: EnumSettlementCycle;
    /** 福利 */
    benefits?: GetTaskInfoQueryResultBenefit[];
    genderLimit?: EnumUserGender;
    /** 资格证书类型 */
    credentialLimits?: GetTaskInfoQueryResultCredentialLimit[];
    /** 任务地点所属省份编号 */
    provinceCode?: string;
    /** 任务地点所属省份 */
    provinceContent?: string;
    /** 任务地点所属城市编号 */
    cityCode?: string;
    /** 任务地点所属城市 */
    cityContent?: string;
    /** 任务地点名称 */
    addressName?: string;
    /** 任务地点详细地址 */
    addressDetail?: string;
    /** 经度 */
    longitude?: number;
    /** 纬度 */
    latitude?: number;
    /** 报名人数 */
    userCount?: number;
    status?: EnumTaskStatus;
@@ -1594,6 +1640,12 @@
    data?: any;
  }
  interface SendVerifyCodeCommand {
    /** 手机号码 */
    phoneNumber?: string;
    templateCode?: EnumSmsTemplateType;
  }
  interface SetDictionaryDataIsDisabledCommand {
    ids?: string[];
    /** 是否已禁用 */
src/services/api/user.ts
@@ -35,6 +35,21 @@
  });
}
/** 查询用户简历 GET /api/user/user/getUserResume */
export async function getUserResume(
  // 叠加生成的Param类型 (非body参数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,
src/views/TaskManage/TaskManageList.vue
@@ -66,6 +66,8 @@
import { ModelValueType } from 'element-plus';
import * as taskServices from '@/services/api/task';
import { EnumTaskReleaseStatusText, EnumTaskRecommendStatusText } from '@/constants';
import { format } from '@/utils';
import { Message } from '@bole-core/core';
defineOptions({
  name: 'OperationManageList',
@@ -74,16 +76,16 @@
const operationBtnMap: Record<string, OperationBtnType> = {
  detailBtn: { emits: { onClick: (role) => goDetail(role) } },
  recommendBtn: {
    emits: { onClick: (role) => setAdvertiseOnShowStatus(role) },
    emits: { onClick: (role) => setTaskInfoRecommendStatus(role) },
    extraProps: {
      hide: (row) => row.status,
      hide: (row) => row.recommendStatus === EnumTaskRecommendStatus.Yes,
    },
  },
  cancelRecommendBtn: {
    emits: { onClick: (role) => setAdvertiseOnShowStatus(role) },
    emits: { onClick: (role) => setTaskInfoRecommendStatus(role) },
    props: { type: 'danger' },
    extraProps: {
      hide: (row) => !row.status,
      hide: (row) => row.recommendStatus === EnumTaskRecommendStatus.No,
    },
  },
};
@@ -122,7 +124,8 @@
        keywords: extraParamState.keywords,
        releaseStatus: extraParamState.releaseStatus,
        recommendStatus: extraParamState.recommendStatus,
        // time: extraParamState.time,
        beginTime: format(extraParamState.time?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
        endTime: format(extraParamState.time?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
      };
      let res = await taskServices.getTaskInfos(params, {
        showLoading: !state.loading,
@@ -142,8 +145,23 @@
  }
);
async function setAdvertiseOnShowStatus(row) {
async function setTaskInfoRecommendStatus(row: API.GetTaskInfosQueryResultItem) {
  try {
    await Message.tipMessage(
      `确认要${row.recommendStatus === EnumTaskRecommendStatus.Yes ? '取消' : '推荐'}吗?`
    );
    let params: API.SetTaskInfoRecommendStatusCommand = {
      ids: [row.id],
      recommendStatus:
        row.recommendStatus === EnumTaskRecommendStatus.Yes
          ? EnumTaskRecommendStatus.No
          : EnumTaskRecommendStatus.Yes,
    };
    let res = await taskServices.setTaskInfoRecommendStatus(params);
    if (res) {
      Message.successMessage('操作成功');
      getList(paginationState.pageIndex);
    }
  } catch (error) {}
}
src/views/TaskManage/components/TaskDetailView.vue
@@ -2,99 +2,119 @@
  <LoadingLayout :loading="isLoading">
    <AppContainer>
      <PageFormLayout>
        <ProForm :model="detail" ref="formRef" label-width="140px" is-read>
        <ProForm :model="form" ref="productFormRef" label-width="110px" is-read>
          <ProFormCol>
            <ProFormColItem :span="12">
              <ProFormItemV2 label="任务名称:" prop="name">
                <ProFormText v-model.trim="detail.enterpriseName" />
                <ProFormText v-model.trim="form.name" placeholder="请输入任务名称" />
              </ProFormItemV2>
            </ProFormColItem>
          </ProFormCol>
          <ProFormCol>
            <ProFormItemV2 label="服务费:" prop="salaryType">
              <RadioWithExtra
                v-model="detail.enterpriseName"
                :value-enum="[
                  { value: 1, text: '按月' },
                  { value: 2, text: '按日' },
                ]"
                enumLabelKey="text"
                enum-value-key="value"
                :showExtra="true"
              >
                <template #extra>
                  <ProFormInputNumber
                    :controls="false"
                    v-model="detail.enterpriseName"
                    :unit="detail.enterpriseName === '' ? '元/月' : '元/日'"
                  ></ProFormInputNumber>
                </template>
              </RadioWithExtra>
            </ProFormItemV2>
            <ProFormColItem :span="12">
              <ProFormItemV2 label="服务费:" prop="billingMethod">
                <RadioWithExtra
                  v-model="form.billingMethod"
                  :value-enum="EnumBillingMethodText"
                  :showExtra="true"
                  :button-style="false"
                >
                  <template #extra>
                    <ProFormInputNumber
                      :controls="false"
                      v-model="form.serviceFee"
                      placeholder="请输入"
                      :unit="EnumBillingMethodUnitText[form.billingMethod]"
                    ></ProFormInputNumber>
                  </template>
                </RadioWithExtra>
              </ProFormItemV2>
            </ProFormColItem>
          </ProFormCol>
          <ProFormCol>
            <ProFormColItem :span="12">
              <ProFormItemV2 label="结算方式:" prop="salaryType">
              <ProFormItemV2 label="结算方式:" prop="settlementCycle">
                <ProFormRadio
                  v-model="detail.enterpriseName"
                  :value-enum="[
                    { label: '月结', value: 1 },
                    { label: '日结', value: 2 },
                  ]"
                />
                  v-model="form.settlementCycle"
                  :value-enum="EnumSettlementCycleText"
                  :button-style="false"
                ></ProFormRadio>
              </ProFormItemV2>
            </ProFormColItem>
          </ProFormCol>
          <ProFormCol>
            <ProFormColItem :span="12">
              <ProFormItemV2 label="福利:" prop="salaryType">
                <ProFormRadio v-model="detail.enterpriseName" :value-enum="dictionaryDataList" />
              <ProFormItemV2 label="福利:" prop="benefits">
                <ProFormCheckbox
                  v-model="form.benefits"
                  :value-enum="welfareList"
                  enumLabelKey="name"
                  enum-value-key="code"
                ></ProFormCheckbox>
              </ProFormItemV2>
            </ProFormColItem>
          </ProFormCol>
          <ProFormCol>
            <ProFormColItem :span="12">
              <ProFormItemV2 label="年龄范围:" prop="ageRange">
                <ProFormInputNumber v-model="detail.enterpriseName"></ProFormInputNumber>
              <ProFormItemV2 label="年龄范围:" prop="ageRange" class="form-age-range">
                <ProFormInputNumber
                  :controls="false"
                  :min="0"
                  v-model="form.ageMinLimit"
                  placeholder="请输入"
                ></ProFormInputNumber>
                <div class="form-input-separator">至</div>
                <ProFormInputNumber
                  :controls="false"
                  :min="0"
                  v-model="form.ageMaxLimit"
                  placeholder="请输入"
                ></ProFormInputNumber>
              </ProFormItemV2>
            </ProFormColItem>
          </ProFormCol>
          <ProFormCol>
            <ProFormColItem :span="12">
              <ProFormItemV2 label="性别需求:" prop="salaryType">
              <ProFormItemV2 label="性别要求:" prop="genderLimit">
                <ProFormRadio
                  v-model="detail.enterpriseName"
                  :value-enum="[
                    { label: '男', value: 1 },
                    { label: '女', value: 2 },
                  ]"
                />
                  v-model="form.genderLimit"
                  :value-enum="EnumUserGenderText"
                  show-all-btn
                ></ProFormRadio>
              </ProFormItemV2>
            </ProFormColItem>
          </ProFormCol>
          <ProFormCol>
            <ProFormColItem :span="12">
              <ProFormItemV2 label="资格证书:" prop="salaryType">
                <ProFormRadio v-model="detail.enterpriseName" :value-enum="dictionaryDataList" />
              <ProFormItemV2 label="资格证书:" prop="credentialLimits">
                <ProFormCheckbox
                  v-model="form.credentialLimits"
                  :value-enum="certificateTypeList"
                  enumLabelKey="name"
                  enum-value-key="code"
                ></ProFormCheckbox>
              </ProFormItemV2>
            </ProFormColItem>
          </ProFormCol>
          <ProFormCol>
            <ProFormColItem :span="12">
              <ProFormItemV2 label="任务地点:" prop="areaList">
                <!-- <ProFromAddressSelectV2
                  v-model:areaList="detail.areaList"
                  areaListPlaceholder="请选择"
                  :layer="AreaType.Area"
                /> -->
              <ProFormItemV2 label="任务地点:" prop="weMapInfo">
                <WeMap v-model="form.weMapInfo" />
              </ProFormItemV2>
            </ProFormColItem>
          </ProFormCol>
          <ProFormCol>
            <ProFormColItem :span="12">
              <ProFormItemV2 label="任务时间:" prop="creationTime" mode="read">
              <ProFormItemV2 label="详细地址:" prop="addressDetail">
                <ProFormText v-model.trim="form.addressDetail" placeholder="请输入详细地址" />
              </ProFormItemV2>
            </ProFormColItem>
          </ProFormCol>
          <ProFormCol>
            <ProFormColItem :span="12">
              <ProFormItemV2 label="任务时间:" prop="time">
                <ProFormDatePicker
                  v-model="detail.enterpriseName"
                  v-model="form.time"
                  type="daterange"
                  range-separator="至"
                  start-placeholder="开始日期"
@@ -125,10 +145,18 @@
  ProFormInputNumber,
  ProFormRadio,
  ProFormDatePicker,
  ProFormCheckbox,
} from '@bole-core/components';
import { useQuery } from '@tanstack/vue-query';
import { AreaType } from '@/constants';
import * as enterpriseServices from '@/services/api/enterprise';
import * as taskServices from '@/services/api/task';
import {
  EnumUserGenderText,
  EnumBillingMethodText,
  EnumBillingMethodUnitText,
  EnumSettlementCycleText,
} from '@/constants';
import { ModelValueType } from 'element-plus';
import { format } from '@/utils';
defineOptions({
  name: 'TaskDetailView',
@@ -137,21 +165,64 @@
const route = useRoute();
const id = route.params?.id as string;
const { closeViewPush } = useRouteView();
const { dictionaryDataList } = useDictionaryDataSelect({
  categoryCode: computed(() => CategoryCode.Welfare),
const { dictionaryDataList: welfareList } = useDictionaryDataSelect({
  categoryCode: CategoryCode.Welfare,
});
const { dictionaryDataList: certificateTypeList } = useDictionaryDataSelect({
  categoryCode: CategoryCode.CertificateType,
});
const { data: detail, isLoading } = useQuery({
  queryKey: ['enterpriseServices/getEnterprise', id],
const form = reactive({
  name: '',
  billingMethod: '' as any as EnumBillingMethod,
  serviceFee: 0,
  settlementCycle: '' as any as EnumSettlementCycle,
  benefits: [] as string[],
  ageMinLimit: 0,
  ageMaxLimit: 0,
  genderLimit: '' as any as EnumUserGender,
  credentialLimits: [] as string[],
  time: [] as unknown as ModelValueType,
  weMapInfo: {} as WeMapModel,
  addressDetail: '',
});
const { isLoading } = useQuery({
  queryKey: ['taskServices/getTaskInfo', id],
  queryFn: async () => {
    return await enterpriseServices.getEnterprise(
    return await taskServices.getTaskInfo(
      { id: id },
      {
        showLoading: false,
      }
    );
  },
  placeholderData: () => ({} as API.GetEnterpriseQueryResult),
  placeholderData: () => ({} as API.GetTaskInfoQueryResult),
  onSuccess(data) {
    form.name = data.name;
    form.billingMethod = data.billingMethod;
    form.serviceFee = data.serviceFee;
    form.settlementCycle = data.settlementCycle;
    form.benefits = data.benefits?.map((x) => x.code) ?? [];
    form.ageMinLimit = data.ageMinLimit;
    form.ageMaxLimit = data.ageMaxLimit;
    form.genderLimit = data.genderLimit;
    form.credentialLimits = data.credentialLimits?.map((x) => x.code) ?? [];
    form.time = [
      format(data.beginTime, 'YYYY-MM-DD 00:00:00'),
      format(data.endTime, 'YYYY-MM-DD 23:59:59'),
    ];
    form.weMapInfo = {
      latitude: data.latitude,
      longitude: data.longitude,
      provinceName: data.provinceName,
      cityName: data.cityName,
      provinceCode: data.provinceCode,
      cityCode: data.cityCode,
      addressName: data.addressName,
    };
    form.addressDetail = data.addressDetail;
  },
  enabled: computed(() => !!id),
});
types/global.d.ts
@@ -141,6 +141,7 @@
    cityCode?: string;
    countyCode?: string;
    address?: string;
    addressName?: string;
  }
  interface CommonAnnexItem {