| | |
| | | [FlexTaskCheckAcceptStatusEnum.Passed]: '验收通过', |
| | | [FlexTaskCheckAcceptStatusEnum.Refused]: '验收未通过', |
| | | }; |
| | | |
| | | export enum FlexWorkerEleSignEnum { |
| | | /** |
| | | * 待签约 |
| | | */ |
| | | WaitSign = 10, |
| | | /** |
| | | * 已签约 |
| | | */ |
| | | HasSign = 20, |
| | | /** |
| | | * 已解约 |
| | | */ |
| | | CancelSign = 30, |
| | | } |
| | | |
| | | export const FlexWorkerEleSignEnumText = { |
| | | [FlexWorkerEleSignEnum.WaitSign]: '待签约', |
| | | [FlexWorkerEleSignEnum.HasSign]: '已签约', |
| | | [FlexWorkerEleSignEnum.CancelSign]: '已解约', |
| | | }; |
| | |
| | | <ProRadio v-model="query.gender" :value-enum="GenderText" show-all-btn></ProRadio> |
| | | </QueryMenuItem> |
| | | <QueryMenuItem title="身份"> |
| | | <ProRadio v-model="query.gender" :value-enum="GenderText" show-all-btn></ProRadio> |
| | | <ProRadio v-model="query.gender" :value-enum="IdentityList" show-all-btn></ProRadio> |
| | | </QueryMenuItem> |
| | | <QueryMenuItem> |
| | | <template #title> |
| | |
| | | ></nut-range> |
| | | </QueryMenuItem> |
| | | <QueryMenuItem title="资格证书"> |
| | | <ProRadio v-model="query.gender" :value-enum="GenderText" show-all-btn></ProRadio> |
| | | <ProRadio v-model="query.gender" :value-enum="CertificateTypeList" show-all-btn></ProRadio> |
| | | </QueryMenuItem> |
| | | </div> |
| | | </QueryMenuView> |
| | |
| | | |
| | | <script setup lang="ts"> |
| | | import { QueryMenuView, QueryMenuItem, ProRadio } from '@12333/components'; |
| | | import { GenderText } from '@12333/constants'; |
| | | import { GenderText, SearchType } from '@12333/constants'; |
| | | import { useSearchSettingType } from '@12333/hooks'; |
| | | |
| | | defineOptions({ |
| | | name: 'HomeQueryMenuView', |
| | |
| | | |
| | | // const props = withDefaults(defineProps<Props>(), {}); |
| | | |
| | | const { searchSettingTypeList: CertificateTypeList } = useSearchSettingType({ |
| | | searchType: SearchType.CertificateType, |
| | | }); |
| | | const { searchSettingTypeList: IdentityList } = useSearchSettingType({ |
| | | searchType: SearchType.Identity, |
| | | }); |
| | | |
| | | const emit = defineEmits<{ |
| | | (e: 'reset'): void; |
| | | (e: 'close'): void; |
| | |
| | | :icon="IconAttentionActive" |
| | | text="收藏" |
| | | :isFlex="false" |
| | | @click="handleAttention" |
| | | ></PageFooterAction> |
| | | <PageFooterBtn type="primary" @click="toggle">立即联系</PageFooterBtn> |
| | | </template> |
| | |
| | | import IconAttention from '@/assets/flexJob/icon-attention-lg.png'; |
| | | import IconAttentionActive from '@/assets/flexJob/icon-attention-lg-active.png'; |
| | | import { useToggle } from 'senin-mini/hooks'; |
| | | import { Message } from '@12333/utils'; |
| | | |
| | | defineOptions({ |
| | | name: 'flexJobDetail', |
| | |
| | | }); |
| | | |
| | | const { isCollapse, toggle } = useToggle(); |
| | | |
| | | async function handleAttention() { |
| | | try { |
| | | let params: API.CollectFlexWorkerResumeInput = { |
| | | flexWorkerId: detail.value?.flexWorkerId, |
| | | userResumeId: detail.value?.userResumeId, |
| | | }; |
| | | let res = await flexWorkerServices.collectFlexWorkerResume(params); |
| | | if (res) { |
| | | Message.success('收藏成功'); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | |
| | | title-gutter="12" |
| | | title-scroll |
| | | > |
| | | <ProTabPane :title="`已签约`" :pane-key="TaskStatus.All"></ProTabPane> |
| | | <ProTabPane :title="`待签约`" :pane-key="TaskStatus.WaitSign"></ProTabPane> |
| | | <ProTabPane :title="`已解约`" :pane-key="TaskStatus.Effect"></ProTabPane> |
| | | <ProTabPane :title="`已签约`" :pane-key="FlexWorkerEleSignEnum.HasSign"></ProTabPane> |
| | | <ProTabPane :title="`待签约`" :pane-key="FlexWorkerEleSignEnum.WaitSign"></ProTabPane> |
| | | <ProTabPane :title="`已解约`" :pane-key="FlexWorkerEleSignEnum.CancelSign"></ProTabPane> |
| | | </ProTabs> |
| | | <InfiniteLoading |
| | | scrollViewClassName="common-infinite-scroll-list home-list" |
| | | v-bind="infiniteLoadingProps" |
| | | :key="queryState.mineHireType" |
| | | > |
| | | <template #renderItem="{ item }"> |
| | | <FlexJobCard :show-done-detail="false" :show-footer-left="false" @click="goDetail(item)"> |
| | | <template #footerRight> |
| | | <template v-if="Number(queryState.mineHireType) === TaskStatus.All"> |
| | | <template v-if="queryState.mineHireType === FlexWorkerEleSignEnum.HasSign"> |
| | | <nut-button |
| | | class="flexJobManage-card-plain-button" |
| | | type="default" |
| | |
| | | import { useInfiniteLoading } from '@12333/hooks'; |
| | | import { OrderInputType } from '@12333/constants'; |
| | | import * as flexWorkerServices from '@12333/services/api/FlexWorker'; |
| | | import { TaskStatus } from '@/constants/task'; |
| | | import { FlexWorkerEleSignEnum } from '@/constants/task'; |
| | | import Taro from '@tarojs/taro'; |
| | | |
| | | defineOptions({ |
| | |
| | | }); |
| | | |
| | | const queryState = reactive({ |
| | | mineHireType: TaskStatus.All, |
| | | mineHireType: FlexWorkerEleSignEnum.HasSign, |
| | | }); |
| | | |
| | | const { infiniteLoadingProps } = useInfiniteLoading( |
| | | ({ pageParam }) => { |
| | | let params: API.GetFlexTaskListInput = { |
| | | let params: API.GetFlexSignWorkerListInput = { |
| | | signStatus: queryState.mineHireType, |
| | | pageModel: { |
| | | rows: 20, |
| | | page: pageParam, |
| | |
| | | }, |
| | | }; |
| | | |
| | | return flexWorkerServices.getFlexTaskByArrange(params, { |
| | | return flexWorkerServices.getFlexSignWorkerList(params, { |
| | | showLoading: false, |
| | | }); |
| | | }, |
| | | { |
| | | queryKey: ['flexWorkerServices/getFlexTaskByArrange'], |
| | | queryKey: ['flexWorkerServices/getFlexSignWorkerList', queryState], |
| | | } |
| | | ); |
| | | |
| | | function goDetail(item: API.GetFlexTaskListOutput) { |
| | | function goDetail(item: API.GetNewestWorkerListOutput) { |
| | | Taro.navigateTo({ |
| | | url: `${RouterPath.flexJobDetailFromManage}?id=${item.taskId}`, |
| | | url: `${RouterPath.flexJobDetailFromManage}?userId=${item.userId}`, |
| | | }); |
| | | } |
| | | |
| | | function checkContract() {} |
| | | function handleUnContract() {} |
| | | function goSignContract(item: API.GetFlexTaskListOutput) { |
| | | function goSignContract(item: API.GetNewestWorkerListOutput) { |
| | | Taro.navigateTo({ |
| | | url: `${RouterPath.flexJobSign}`, |
| | | }); |
| | |
| | | <TaskDetailWelfareItem |
| | | v-for="item in detail.taskWeals" |
| | | :key="item.id" |
| | | :icon="setOSSLink(item.name)" |
| | | :icon="setOSSLink(item.imageUrl)" |
| | | :text="item.name" |
| | | /> |
| | | </div> |
| | |
| | | import { SalaryTimeTypeEnumUnit, FlexTaskSettleTypeEnumText } from '@/constants/task'; |
| | | import dayjs from 'dayjs'; |
| | | import { setOSSLink } from '@12333/utils'; |
| | | import { RectRight } from '@nutui/icons-vue-taro'; |
| | | |
| | | defineOptions({ |
| | | name: 'JobDetail', |
| | |
| | | isTransparent |
| | | title-gutter="12" |
| | | title-scroll |
| | | @change="invalidateQueries" |
| | | > |
| | | <ProTabPane |
| | | :title="`${ |
| | |
| | | }); |
| | | }, |
| | | { |
| | | queryKey: ['flexWorkerServices/getFlexTaskList'], |
| | | queryKey: ['flexWorkerServices/getFlexTaskList', queryState], |
| | | } |
| | | ); |
| | | |
| | |
| | | v-bind="infiniteLoadingProps" |
| | | > |
| | | <template #renderItem="{ item }"> |
| | | <FlexJobCard :show-footer-left="false"> </FlexJobCard> |
| | | <FlexJobCard |
| | | :show-footer-left="false" |
| | | :name="item.name" |
| | | :age="item.age" |
| | | :genderType="item.genderType" |
| | | :workExperience="item.workExperience" |
| | | :isRealName="item.isRealName" |
| | | :arrangeCount="item.arrangeCount" |
| | | :educationalLevel="item.educationalLevel" |
| | | @contact="handleContact" |
| | | > |
| | | </FlexJobCard> |
| | | </template> |
| | | </InfiniteLoading> |
| | | </template> |
| | |
| | | |
| | | const { infiniteLoadingProps } = useInfiniteLoading( |
| | | ({ pageParam }) => { |
| | | let params: API.GetFlexTaskListInput = { |
| | | let params: API.PageInput = { |
| | | pageModel: { |
| | | rows: 20, |
| | | page: pageParam, |
| | |
| | | }, |
| | | }; |
| | | |
| | | return flexWorkerServices.getFlexTaskByArrange(params, { |
| | | return flexWorkerServices.getUserContractRecordList(params, { |
| | | showLoading: false, |
| | | }); |
| | | }, |
| | | { |
| | | queryKey: ['flexWorkerServices/getFlexTaskByArrange'], |
| | | queryKey: ['flexWorkerServices/getUserContractRecordList'], |
| | | } |
| | | ); |
| | | |
| | | function handleContact() {} |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | |
| | | v-bind="infiniteLoadingProps" |
| | | > |
| | | <template #renderItem="{ item }"> |
| | | <FlexJobCard> </FlexJobCard> |
| | | <FlexJobCard |
| | | :name="item.name" |
| | | :age="item.age" |
| | | :genderType="item.genderType" |
| | | :workExperience="item.workExperience" |
| | | :isRealName="item.isRealName" |
| | | :arrangeCount="item.arrangeCount" |
| | | :educationalLevel="item.educationalLevel" |
| | | @contact="handleContact" |
| | | @cancel-collection="handleCancelCollection(item)" |
| | | > |
| | | </FlexJobCard> |
| | | </template> |
| | | </InfiniteLoading> |
| | | </template> |
| | |
| | | import { useInfiniteLoading } from '@12333/hooks'; |
| | | import { OrderInputType } from '@12333/constants'; |
| | | import * as flexWorkerServices from '@12333/services/api/FlexWorker'; |
| | | import { Message } from '@12333/utils'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | |
| | | |
| | | const userStore = useUserStore(); |
| | | |
| | | const { infiniteLoadingProps } = useInfiniteLoading( |
| | | const { infiniteLoadingProps, invalidateQueries } = useInfiniteLoading( |
| | | ({ pageParam }) => { |
| | | let params: API.GetFlexTaskListInput = { |
| | | let params: API.PageInput = { |
| | | pageModel: { |
| | | rows: 20, |
| | | page: pageParam, |
| | |
| | | }, |
| | | }; |
| | | |
| | | return flexWorkerServices.getFlexTaskByArrange(params, { |
| | | return flexWorkerServices.getWorkerResumeCollectList(params, { |
| | | showLoading: false, |
| | | }); |
| | | }, |
| | | { |
| | | queryKey: ['flexWorkerServices/getFlexTaskByArrange'], |
| | | queryKey: ['flexWorkerServices/getWorkerResumeCollectList'], |
| | | } |
| | | ); |
| | | |
| | | function handleContact() {} |
| | | async function handleCancelCollection(item: API.GetNewestWorkerListOutput) { |
| | | try { |
| | | let params: API.APIcancelUserResumeCollectParams = { |
| | | flexWorkerId: item.userId, |
| | | }; |
| | | let res = await flexWorkerServices.cancelUserResumeCollect(params); |
| | | if (res) { |
| | | Message.success('操作成功'); |
| | | invalidateQueries(); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | |
| | | <template> |
| | | <div class="searchbar-container"> |
| | | <div class="searchbar-container" v-if="showQueryState"> |
| | | <BlSearchbar |
| | | v-model.trim="searchValue" |
| | | placeholder="搜索姓名/身份证号" |
| | |
| | | :showFooterLeft="false" |
| | | > |
| | | <template #footerRight> |
| | | <nut-button type="primary" @click="handleArrange(item)">安排</nut-button> |
| | | <!-- <div class="batch-task-card-status">已安排</div> --> |
| | | <nut-button v-if="showQueryState" type="primary" @click="handleArrange(item)" |
| | | >安排</nut-button |
| | | > |
| | | <div v-else class="batch-task-card-status">已安排</div> |
| | | </template> |
| | | </FlexJobCard> |
| | | </template> |
| | |
| | | const searchValue = ref(''); |
| | | const router = Taro.useRouter(); |
| | | const taskId = router.params?.taskId ?? ''; |
| | | const status = router.params?.status ?? ''; |
| | | const queryState = reactive({ |
| | | searchValueTrim: '', |
| | | }); |
| | | |
| | | const showQueryState = computed(() => { |
| | | return status === 'arrange'; |
| | | }); |
| | | |
| | | const handleSearch = _.debounce(function () { |
| | | queryState.searchValueTrim = trim(searchValue.value); |
| | | }, 300); |
| | |
| | | |
| | | function goHandleTaskDetail(item: API.GetNewestWorkerListOutput) { |
| | | Taro.navigateTo({ |
| | | url: `${RouterPath.taskHandleCheckDetail}?userId=${item.userId}`, |
| | | url: `${RouterPath.taskHandleCheckDetail}?userId=${item.userId}&taskId=${taskId}`, |
| | | }); |
| | | } |
| | | </script> |
| | |
| | | <LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch"> |
| | | <ContentScrollView style="background-color: #fff"> |
| | | <div class="personal-info-wrapper"> |
| | | <TaskCheckPersonalView /> |
| | | <TaskCheckPersonalView |
| | | :avatarUrl="setOSSLink(detail.avatarUrl)" |
| | | :name="detail.name" |
| | | :isRealName="detail.isRealName" |
| | | :contactPhone="detail.contactPhone" |
| | | /> |
| | | </div> |
| | | <div class="taskCheckDetail-status-wrapper"> |
| | | <div class="taskCheckDetail-status-title">验收照片</div> |
| | | </div> |
| | | <div class="taskCheckDetail-time">2024.11.14 9:28:39</div> |
| | | <div class="taskCheckDetail-time"> |
| | | {{ dayjs(detail.appleCheckTime).format('YYYY.MM.DD HH:mm:ss') }} |
| | | </div> |
| | | <nut-grid |
| | | square |
| | | :column-num="3" |
| | |
| | | v-if="list.length > 0" |
| | | class="pro-img-grid" |
| | | > |
| | | <nut-grid-item v-for="(item, index) in list" :key="item" class="pro-img-grid-item"> |
| | | <nut-grid-item |
| | | v-for="(item, index) in detail.checkImageUrl" |
| | | :key="index" |
| | | class="pro-img-grid-item" |
| | | > |
| | | <div class="pro-img-grid-img-item"> |
| | | <PreviewImage :src="item" class="pro-img-grid-img" :urls="list" /> |
| | | </div> |
| | |
| | | import TaskCheckPersonalView from '../components/TaskCheckPersonalView.vue'; |
| | | import { PreviewImage } from '@12333/components'; |
| | | import { Colors } from '@12333/constants'; |
| | | import { setOSSLink } from '@12333/utils'; |
| | | import dayjs from 'dayjs'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const router = Taro.useRouter(); |
| | | const taskId = router.params?.id ?? ''; |
| | | const taskId = router.params?.taskId ?? ''; |
| | | const userId = router.params?.userId ?? ''; |
| | | |
| | | const { |
| | | isLoading, |
| | |
| | | } = useQuery({ |
| | | queryKey: ['flexWorkerServices/getOrdeForDetail', taskId], |
| | | queryFn: async () => { |
| | | return await flexWorkerServices.getOrdeForDetail( |
| | | { id: taskId }, |
| | | return await flexWorkerServices.getFlexTaskWorkerCheckContentDto( |
| | | { flexTaskId: taskId, flexWorkerId: userId }, |
| | | { |
| | | showLoading: false, |
| | | } |
| | | ); |
| | | }, |
| | | placeholderData: () => ({} as API.OrderInfoDto), |
| | | placeholderData: () => ({} as API.GetTaskWorkerCheckContentOutput), |
| | | }); |
| | | |
| | | const list = ref([ |
| | |
| | | type="primary" |
| | | :color="Colors.Info" |
| | | class="dark-btn" |
| | | @click="goSubmitTaskDetail(item)" |
| | | @click.stop="goBatchTaskList(item, 'detail')" |
| | | >详情</nut-button |
| | | > |
| | | <nut-button type="primary" v-else @click="goBatchTaskList(item)">人员安排</nut-button> |
| | | <nut-button type="primary" v-else @click.stop="goBatchTaskList(item, 'arrange')" |
| | | >人员安排</nut-button |
| | | > |
| | | </template> |
| | | </JobApplicationCard> |
| | | </template> |
| | |
| | | }); |
| | | } |
| | | |
| | | function goBatchTaskList(item: API.GetFlexTaskListOutput) { |
| | | function goBatchTaskList(item: API.GetFlexTaskListOutput, status: string) { |
| | | Taro.navigateTo({ |
| | | url: `${RouterPath.batchTaskList}?taskId=${item.taskId}`, |
| | | url: `${RouterPath.batchTaskList}?taskId=${item.taskId}&detail=${status}`, |
| | | }); |
| | | } |
| | | </script> |
| | |
| | | |
| | | function goTaskDetail(item: API.GetFlexTaskListOutput) { |
| | | Taro.navigateTo({ |
| | | url: `${RouterPath.taskDetail}?id=${item.id}`, |
| | | url: `${RouterPath.taskDetail}?id=${item.taskId}`, |
| | | }); |
| | | } |
| | | </script> |
| | |
| | | |
| | | Taro.useShareAppMessage((res) => { |
| | | return { |
| | | title: `${userDetail.value?.contacter}名片`, |
| | | // title: `${userDetail.value?.contacter}名片`, |
| | | // path: `${RouterPath.userHomePage}?userId=${userDetail.value?.userId}`, |
| | | imageUrl: userDetail.value?.avatarUrl, |
| | | // imageUrl: userDetail.value?.avatarUrl, |
| | | }; |
| | | }); |
| | | |
| | |
| | | // url: `${RouterPath.taskSubmitCheck}?id=${item.id}`, |
| | | // }); |
| | | Taro.navigateTo({ |
| | | url: `${RouterPath.taskCheckDetail}?id=${item.id}`, |
| | | url: `${RouterPath.taskCheckDetail}?id=${item.taskId}`, |
| | | }); |
| | | } |
| | | </script> |
| | |
| | | <nut-form-item label="手机号:" class="bole-form-item" prop="phone" required> |
| | | <nut-input v-model.trim="form.phone" placeholder="请输入手机号" type="text" /> |
| | | </nut-form-item> |
| | | <nut-form-item label="身份:" class="bole-form-item" prop="gender"> |
| | | <nut-form-item label="身份:" class="bole-form-item" prop="socialIdentity"> |
| | | <ChooseInputWithPicker |
| | | v-model="form.gender" |
| | | v-model="form.socialIdentity" |
| | | placeholder="请选择身份" |
| | | :value-enum="TaskStatusText" |
| | | :value-enum="IdentityTypeList" |
| | | /> |
| | | </nut-form-item> |
| | | <nut-form-item label="学历:" class="bole-form-item" prop="gender"> |
| | | <nut-form-item label="学历:" class="bole-form-item" prop="educationalLevel"> |
| | | <ChooseInputWithPicker |
| | | v-model="form.gender" |
| | | v-model="form.educationalLevel" |
| | | placeholder="请选择学历" |
| | | :value-enum="TaskStatusText" |
| | | :value-enum="EducationTypeList" |
| | | /> |
| | | </nut-form-item> |
| | | <nut-form-item label="常驻城市:" class="bole-form-item" prop="gender"> |
| | |
| | | import { TaskStatusText, TaskStatus } from '@/constants'; |
| | | import { convertApi2FormUrlOnlyOne } from '@12333/utils'; |
| | | import { useUser } from '@/hooks'; |
| | | import { useSearchSettingType } from '@12333/hooks'; |
| | | import { SearchType } from '@12333/constants'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const { userDetail } = useUser(); |
| | | const { searchSettingTypeList: EducationTypeList } = useSearchSettingType({ |
| | | searchType: SearchType.Education, |
| | | }); |
| | | const { searchSettingTypeList: IdentityTypeList } = useSearchSettingType({ |
| | | searchType: SearchType.Identity, |
| | | }); |
| | | |
| | | const form = reactive({ |
| | | avatarUrl: convertApi2FormUrlOnlyOne(userDetail.value?.originalAvatarUrl), |
| | | // avatarUrl: convertApi2FormUrlOnlyOne(userDetail.value?.originalAvatarUrl), |
| | | name: '', |
| | | phone: '', |
| | | gender: TaskStatus.All, |
| | | socialIdentity: '', |
| | | educationalLevel: '', |
| | | areaList: [] as number[], |
| | | }); |
| | | |
| | | const rules = reactive<FormRules>({ |
| | | phone: [{ required: true, message: '请输入手机号' }], |
| | | socialIdentity: [{ required: true, message: '请选择身份' }], |
| | | educationalLevel: [{ required: true, message: '请选择学历' }], |
| | | areaList: [{ required: true, message: '请选择常驻城市' }], |
| | | }); |
| | | const formRef = ref<any>(null); |
| | | function handleConfirm() { |
| | |
| | | import MineAgreementSignDetailItem from '../../mine/mineAgreementSignDetail/MineAgreementSignDetailItem.vue'; |
| | | import { List, ListItem, JobTagList } from '@12333/components'; |
| | | import { RouterPath } from '@/constants'; |
| | | import * as userResumeServices from '@12333/services/api/userResume'; |
| | | import IconArrow from '@/assets/setting/icon-arrow.png'; |
| | | import IconAuth from '@/assets/mine/icon-auth.png'; |
| | | import IconMale from '@/assets/mine/icon-male.png'; |
| | | import IconFemale from '@/assets/mine/icon-female.png'; |
| | | import IconPhone from '@/assets/mine/icon-phone.png'; |
| | | import Taro from '@tarojs/taro'; |
| | | import { useQuery } from '@tanstack/vue-query'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | |
| | | |
| | | const userStore = useUserStore(); |
| | | const isLogin = useIsLogin(); |
| | | const router = Taro.useRouter(); |
| | | |
| | | const taskId = router.params?.taskId; |
| | | |
| | | const { |
| | | isLoading, |
| | | isError, |
| | | data: detail, |
| | | refetch, |
| | | } = useQuery({ |
| | | queryKey: ['userResumeServices/getUserResume', taskId], |
| | | queryFn: async () => { |
| | | return await userResumeServices.getUserResume({ |
| | | showLoading: false, |
| | | }); |
| | | }, |
| | | placeholderData: () => ({} as API.MyResumeOutput), |
| | | onSuccess(data) {}, |
| | | }); |
| | | |
| | | function goPage(routeName: string) { |
| | | Taro.navigateTo({ |
| | |
| | | prop="photo" |
| | | label-position="top" |
| | | > |
| | | <Uploader v-model:file-list="form.photo" :maximum="6" class="bole-uploader"> </Uploader> |
| | | <Uploader v-model:file-list="form.lifeCircleImgUrlList" :maximum="6" class="bole-uploader"> |
| | | </Uploader> |
| | | </nut-form-item> |
| | | </nut-form> |
| | | </ContentScrollView> |
| | |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { useUser } from '@/hooks'; |
| | | import { goBack } from '@/utils'; |
| | | import { NumberInput } from '@12333/components'; |
| | | import * as userResumeServices from '@12333/services/api/userResume'; |
| | | import { convertApiPath2Url, Message } from '@12333/utils'; |
| | | import { FileItem } from '@nutui/nutui-taro/dist/types/__VUE/uploader/type'; |
| | | import { useQuery } from '@tanstack/vue-query'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const { userDetail } = useUser(); |
| | | const { |
| | | isLoading, |
| | | isError, |
| | | data: detail, |
| | | refetch, |
| | | } = useQuery({ |
| | | queryKey: ['userResumeServices/getUserResumeDetailInfo'], |
| | | queryFn: async () => { |
| | | return await userResumeServices.getUserResumeDetailInfo({ |
| | | showLoading: false, |
| | | }); |
| | | }, |
| | | placeholderData: () => ({} as API.UserResumeDetailInfoOutput), |
| | | onSuccess(data) { |
| | | form.height = data.height; |
| | | form.weight = data.weight; |
| | | form.lifeCircleImgUrlList = data.lifeCircleImgUrlList?.length |
| | | ? data.lifeCircleImgUrlList.map((x) => convertApiPath2Url(x)) |
| | | : []; |
| | | }, |
| | | }); |
| | | |
| | | const form = reactive({ |
| | | height: '', |
| | | weight: '', |
| | | photo: [], |
| | | lifeCircleImgUrlList: [] as FileItem[], |
| | | }); |
| | | |
| | | function handleConfirm() {} |
| | | async function handleConfirm() { |
| | | try { |
| | | let params: API.SaveUserResumeDetailInfoInput = { |
| | | weight: form.weight, |
| | | height: form.weight, |
| | | lifeCircleImgUrlList: form.lifeCircleImgUrlList?.length |
| | | ? form.lifeCircleImgUrlList.map((x) => x.url) |
| | | : [], |
| | | }; |
| | | let res = await userResumeServices.saveUserResumeDetailInfo(params); |
| | | if (res) { |
| | | Message.success('保存成功', { |
| | | onClosed() { |
| | | goBack(); |
| | | }, |
| | | }); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | |
| | | <template> |
| | | <ContentScrollView :paddingH="false"> |
| | | <nut-form :model-value="form" ref="formRef"> |
| | | <nut-form-item label="工作年限:" class="bole-form-item" prop="workYear"> |
| | | <nut-input v-model="form.workYear" placeholder="请输入"> </nut-input> |
| | | <nut-form-item label="工作年限:" class="bole-form-item" prop="workingSeniority"> |
| | | <nut-input v-model="form.workingSeniority" placeholder="请输入"> </nut-input> |
| | | </nut-form-item> |
| | | <nut-form-item label="工作经验:" class="bole-form-item" prop="workYear"> |
| | | <nut-input v-model="form.workYear" type="textarea" placeholder="请输入"> </nut-input> |
| | | <nut-form-item label="工作经验:" class="bole-form-item" prop="workExperience"> |
| | | <nut-input v-model="form.workExperience" type="textarea" placeholder="请输入"> </nut-input> |
| | | </nut-form-item> |
| | | </nut-form> |
| | | </ContentScrollView> |
| | |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { useUser } from '@/hooks'; |
| | | import { goBack } from '@/utils'; |
| | | import * as userResumeServices from '@12333/services/api/userResume'; |
| | | import { Message } from '@12333/utils'; |
| | | import { useQuery } from '@tanstack/vue-query'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const { userDetail } = useUser(); |
| | | |
| | | const form = reactive({ |
| | | workYear: '', |
| | | workingSeniority: '', |
| | | workExperience: '', |
| | | }); |
| | | |
| | | function handleConfirm() {} |
| | | const { |
| | | isLoading, |
| | | isError, |
| | | data: detail, |
| | | refetch, |
| | | } = useQuery({ |
| | | queryKey: ['userResumeServices/getUserResumeWorkExperience'], |
| | | queryFn: async () => { |
| | | return await userResumeServices.getUserResumeWorkExperience({ |
| | | showLoading: false, |
| | | }); |
| | | }, |
| | | placeholderData: () => ({} as API.UserResumeWorkExperienceOutput), |
| | | onSuccess(data) { |
| | | form.workingSeniority = data.workingSeniority; |
| | | form.workExperience = data.workExperience; |
| | | }, |
| | | }); |
| | | |
| | | async function handleConfirm() { |
| | | try { |
| | | let params: API.SaveUserResumeWorkExperienceInput = { |
| | | workingSeniority: form.workingSeniority, |
| | | workExperience: form.workExperience, |
| | | }; |
| | | let res = await userResumeServices.saveUserResumeWorkExperience(params); |
| | | if (res) { |
| | | Message.success('保存成功', { |
| | | onClosed() { |
| | | goBack(); |
| | | }, |
| | | }); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | |
| | | |
| | | <script setup lang="ts"> |
| | | import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; |
| | | import * as cooperationApplyServices from '@12333/services/api/CooperationApply'; |
| | | // import * as cooperationApplyServices from '@12333/services/api/CooperationApply'; |
| | | import { CooperateTypeText, CooperateApplyTypeEnum } from '@12333/constants'; |
| | | import { FormValidator, Message } from '@12333/utils'; |
| | | import Taro from '@tarojs/taro'; |
| | |
| | | |
| | | async function createPlatformCooperationApply() { |
| | | try { |
| | | let params: API.CreatePlatformCooperationApplyInput = { |
| | | title: CooperateTypeText.Complaint, |
| | | contact: form.contact, |
| | | contactPhone: form.contactPhone, |
| | | applyDescription: form.remark, |
| | | companyName: form.companyName, |
| | | applyType: CooperateApplyTypeEnum.Complaint, |
| | | }; |
| | | let res = await cooperationApplyServices.createPlatformCooperationApply(params); |
| | | if (res) { |
| | | await Message.confirm({ |
| | | message: '信息已提交,请耐心等待工作人员的联系', |
| | | }); |
| | | Taro.navigateBack({ |
| | | delta: 1, |
| | | }); |
| | | } |
| | | // let params: API.CreatePlatformCooperationApplyInput = { |
| | | // title: CooperateTypeText.Complaint, |
| | | // contact: form.contact, |
| | | // contactPhone: form.contactPhone, |
| | | // applyDescription: form.remark, |
| | | // companyName: form.companyName, |
| | | // applyType: CooperateApplyTypeEnum.Complaint, |
| | | // }; |
| | | // let res = await cooperationApplyServices.createPlatformCooperationApply(params); |
| | | // if (res) { |
| | | // await Message.confirm({ |
| | | // message: '信息已提交,请耐心等待工作人员的联系', |
| | | // }); |
| | | // Taro.navigateBack({ |
| | | // delta: 1, |
| | | // }); |
| | | // } |
| | | } catch (error) {} |
| | | } |
| | | </script> |
| | |
| | | <template> |
| | | <div class="flexJob-card-wrapper"> |
| | | <FlexJobTopView :name="name" :age="age" :genderType="genderType" /> |
| | | <FlexJobTopView |
| | | :name="name" |
| | | :age="age" |
| | | :genderType="genderType" |
| | | :isRealName="isRealName" |
| | | :arrangeCount="arrangeCount" |
| | | :educationalLevel="educationalLevel" |
| | | /> |
| | | <div class="flexJob-card-done-list"> |
| | | {{ workExperience }} |
| | | </div> |
| | |
| | | <div class="flexJob-card-footer-left-wrapper"> |
| | | <div class="flexJob-card-footer-left" v-if="showFooterLeft"> |
| | | <slot name="footerLeft"> |
| | | <div class="flexJob-card-footer-text">取消收藏</div> |
| | | <div class="flexJob-card-footer-text" @click.stop="emit('cancelCollection')"> |
| | | 取消收藏 |
| | | </div> |
| | | </slot> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="flexJob-card-footer-right" v-if="showFooterRight"> |
| | | <slot name="footerRight"> |
| | | <nut-button type="primary">立即联系</nut-button> |
| | | <nut-button type="primary" @click.stop="emit('contact')">立即联系</nut-button> |
| | | </slot> |
| | | </div> |
| | | </div> |
| | |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import IconMale from '@/assets/mine/icon-male.png'; |
| | | import IconFemale from '@/assets/mine/icon-female.png'; |
| | | import { CommonTaskCardProps } from './card'; |
| | | import FlexJobTopView from './FlexJobTopView.vue'; |
| | | import { Gender } from '@12333/constants'; |
| | |
| | | name?: string; |
| | | genderType?: Gender; |
| | | age?: number; |
| | | isRealName?: boolean; |
| | | educationalLevel?: string; |
| | | workExperience?: string; |
| | | arrangeCount?: number; |
| | |
| | | showFooterRight: true, |
| | | showDoneDetail: true, |
| | | }); |
| | | |
| | | const emit = defineEmits<{ |
| | | (e: 'cancelCollection'): void; |
| | | (e: 'contact'): void; |
| | | }>(); |
| | | </script> |
| | | |
| | | <style lang="scss"> |
New file |
| | |
| | | /* eslint-disable */ |
| | | // @ts-ignore |
| | | import { request } from '@/utils/request'; |
| | | |
| | | /** 获取任务详情 GET /api/FlexTask/GetFlexTaskDetail */ |
| | | export async function getFlexTaskDetail( |
| | | // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) |
| | | params: API.APIgetFlexTaskDetailParams, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<API.GetFlexTaskDetailForBackOutput>('/api/FlexTask/GetFlexTaskDetail', { |
| | | method: 'GET', |
| | | params: { |
| | | ...params, |
| | | }, |
| | | ...(options || {}), |
| | | }); |
| | | } |
| | | |
| | | /** 获取运营端任务管理列表 POST /api/FlexTask/GetFlexTaskList */ |
| | | export async function getFlexTaskList( |
| | | body: API.GetFlexTaskForBackInput, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<API.FlexTaskListOutputPageOutput>('/api/FlexTask/GetFlexTaskList', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | }); |
| | | } |
| | | |
| | | /** 获取报名详情 POST /api/FlexTask/GetFlexTaskWorkerList */ |
| | | export async function getFlexTaskWorkerList( |
| | | body: API.GetFlexTaskWorkerListInput, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<API.GetWorkerListForBackOutputPageOutput>('/api/FlexTask/GetFlexTaskWorkerList', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | }); |
| | | } |
| | | |
| | | /** 设置任务推荐状态 POST /api/FlexTask/SetFlexTaskReRecommendStatus */ |
| | | export async function setFlexTaskReRecommendStatus( |
| | | body: API.SetRecommendInput, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<number>('/api/FlexTask/SetFlexTaskReRecommendStatus', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | data: body, |
| | | ...(options || {}), |
| | | }); |
| | | } |
New file |
| | |
| | | /* eslint-disable */ |
| | | // @ts-ignore |
| | | import { request } from '@/utils/request'; |
| | | |
| | | /** 获取个人信息详情 GET /api/User/GetUserInfo */ |
| | | export async function getUserInfo(options?: API.RequestConfig) { |
| | | return request<API.UserDto>('/api/User/GetUserInfo', { |
| | | method: 'GET', |
| | | ...(options || {}), |
| | | }); |
| | | } |
| | |
| | | // @ts-ignore |
| | | import { request } from '@/utils/request'; |
| | | |
| | | /** 此处后端没有提供注释 GET /api/UserResume/GetUserResume */ |
| | | /** 根据用户获取简历 GET /api/UserResume/GetUserResume */ |
| | | export async function getUserResume(options?: API.RequestConfig) { |
| | | return request<API.MyResumeOutput>('/api/UserResume/GetUserResume', { |
| | | method: 'GET', |
| | |
| | | }); |
| | | } |
| | | |
| | | /** 此处后端没有提供注释 GET /api/UserResume/GetUserResumeCertificateDetailById */ |
| | | /** 根据认证id获取认证详情 GET /api/UserResume/GetUserResumeCertificateDetailById */ |
| | | export async function getUserResumeCertificateDetailById( |
| | | // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) |
| | | params: API.APIgetUserResumeCertificateDetailByIdParams, |
| | |
| | | ); |
| | | } |
| | | |
| | | /** 此处后端没有提供注释 GET /api/UserResume/GetUserResumeCertificateList */ |
| | | /** 根据用户ID获取用户认证信息 GET /api/UserResume/GetUserResumeCertificateList */ |
| | | export async function getUserResumeCertificateList(options?: API.RequestConfig) { |
| | | return request<API.UserResumeCertificateListOutput[]>( |
| | | '/api/UserResume/GetUserResumeCertificateList', |
| | |
| | | ); |
| | | } |
| | | |
| | | /** 此处后端没有提供注释 GET /api/UserResume/GetUserResumeDetailInfo */ |
| | | /** 获取用户简历详情 GET /api/UserResume/GetUserResumeDetailInfo */ |
| | | export async function getUserResumeDetailInfo(options?: API.RequestConfig) { |
| | | return request<API.UserResumeDetailInfoOutput>('/api/UserResume/GetUserResumeDetailInfo', { |
| | | method: 'GET', |
| | |
| | | }); |
| | | } |
| | | |
| | | /** 此处后端没有提供注释 GET /api/UserResume/GetUserResumeWorkExperience */ |
| | | /** 根据用户id获取用户工作经历 GET /api/UserResume/GetUserResumeWorkExperience */ |
| | | export async function getUserResumeWorkExperience(options?: API.RequestConfig) { |
| | | return request<API.UserResumeWorkExperienceOutput>( |
| | | '/api/UserResume/GetUserResumeWorkExperience', |
| | |
| | | ); |
| | | } |
| | | |
| | | /** 此处后端没有提供注释 POST /api/UserResume/SaveUserResumeBaseInfo */ |
| | | /** 保存简历的基础信息 POST /api/UserResume/SaveUserResumeBaseInfo */ |
| | | export async function saveUserResumeBaseInfo( |
| | | body: API.SaveUserResumeBaseInfoInput, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<any>('/api/UserResume/SaveUserResumeBaseInfo', { |
| | | return request<number>('/api/UserResume/SaveUserResumeBaseInfo', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | |
| | | }); |
| | | } |
| | | |
| | | /** 此处后端没有提供注释 POST /api/UserResume/SaveUserResumeCertificate */ |
| | | /** 保存用户的简历认证信息 POST /api/UserResume/SaveUserResumeCertificate */ |
| | | export async function saveUserResumeCertificate( |
| | | body: API.SaveUserResumeCertificateInput, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<any>('/api/UserResume/SaveUserResumeCertificate', { |
| | | return request<number>('/api/UserResume/SaveUserResumeCertificate', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | |
| | | }); |
| | | } |
| | | |
| | | /** 此处后端没有提供注释 POST /api/UserResume/SaveUserResumeDetailInfo */ |
| | | /** 保存简历详情 POST /api/UserResume/SaveUserResumeDetailInfo */ |
| | | export async function saveUserResumeDetailInfo( |
| | | body: API.SaveUserResumeDetailInfoInput, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<any>('/api/UserResume/SaveUserResumeDetailInfo', { |
| | | return request<number>('/api/UserResume/SaveUserResumeDetailInfo', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | |
| | | }); |
| | | } |
| | | |
| | | /** 此处后端没有提供注释 POST /api/UserResume/SaveUserResumeExpectationJob */ |
| | | /** 保存用户期望的岗位信息 POST /api/UserResume/SaveUserResumeExpectationJob */ |
| | | export async function saveUserResumeExpectationJob( |
| | | body: API.SaveUserResumeExpectationJobInput, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<any>('/api/UserResume/SaveUserResumeExpectationJob', { |
| | | return request<number>('/api/UserResume/SaveUserResumeExpectationJob', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | |
| | | }); |
| | | } |
| | | |
| | | /** 此处后端没有提供注释 POST /api/UserResume/SaveUserResumeWorkExperience */ |
| | | /** 保存用户工作经历 POST /api/UserResume/SaveUserResumeWorkExperience */ |
| | | export async function saveUserResumeWorkExperience( |
| | | body: API.SaveUserResumeWorkExperienceInput, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<any>('/api/UserResume/SaveUserResumeWorkExperience', { |
| | | return request<number>('/api/UserResume/SaveUserResumeWorkExperience', { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | |
| | | import * as Common from './Common'; |
| | | import * as Features from './Features'; |
| | | import * as FlexEnterprise from './FlexEnterprise'; |
| | | import * as FlexTask from './FlexTask'; |
| | | import * as FlexWorker from './FlexWorker'; |
| | | import * as IdentityRole from './IdentityRole'; |
| | | import * as IdentityUser from './IdentityUser'; |
| | |
| | | import * as Profile from './Profile'; |
| | | import * as SearchSetting from './SearchSetting'; |
| | | import * as Tenant from './Tenant'; |
| | | import * as User from './User'; |
| | | import * as UserResume from './UserResume'; |
| | | import * as Version from './Version'; |
| | | export default { |
| | |
| | | Common, |
| | | Features, |
| | | FlexEnterprise, |
| | | FlexTask, |
| | | FlexWorker, |
| | | IdentityRole, |
| | | IdentityUser, |
| | |
| | | Profile, |
| | | SearchSetting, |
| | | Tenant, |
| | | User, |
| | | UserResume, |
| | | Version, |
| | | }; |
| | |
| | | moduleId?: string; |
| | | } |
| | | |
| | | interface APIgetFlexTaskDetailParams { |
| | | id?: string; |
| | | } |
| | | |
| | | interface APIgetFlexTaskDtoParams { |
| | | id?: string; |
| | | } |
| | |
| | | id?: string; |
| | | aideType?: FlexTaskAideEnum; |
| | | name?: string; |
| | | imageUrl?: string; |
| | | } |
| | | |
| | | type FlexTaskAideEnum = 10 | 20; |
| | |
| | | type FlexTaskCheckAcceptStatusEnum = 10 | 20 | 30; |
| | | |
| | | type FlexTaskFeeTypeEnum = 10 | 20 | 30 | 40; |
| | | |
| | | interface FlexTaskListOutput { |
| | | taskId?: string; |
| | | /** 任务名称 */ |
| | | taskName?: string; |
| | | releaseStatus?: FlexTaskReleaseStatusEnum; |
| | | /** 安排状态 */ |
| | | arrangeStatus?: boolean; |
| | | /** 发布日期 */ |
| | | startDate?: string; |
| | | /** 结束日期 */ |
| | | endDate?: string; |
| | | feeType?: FlexTaskFeeTypeEnum; |
| | | settleType?: FlexTaskSettleTypeEnum; |
| | | settleStatus?: SettleStatusEnum; |
| | | /** 是否推荐 */ |
| | | isRecommend?: boolean; |
| | | /** 结算方式 */ |
| | | fee?: number; |
| | | /** 报名人数 */ |
| | | applyWorkerCount?: number; |
| | | /** 是否已完成验收 */ |
| | | isOverCheck?: boolean; |
| | | overCheckStatus?: OverCheckStatusEnum; |
| | | creationTime?: string; |
| | | } |
| | | |
| | | interface FlexTaskListOutputPageOutput { |
| | | pageModel?: Pagination; |
| | | objectData?: any; |
| | | data?: FlexTaskListOutput[]; |
| | | } |
| | | |
| | | type FlexTaskReleaseStatusEnum = 10 | 20; |
| | | |
| | |
| | | signStatus?: FlexWorkerEleSignEnum; |
| | | } |
| | | |
| | | interface GetFlexTaskDetailForBackOutput { |
| | | /** 任务Id */ |
| | | taskId?: string; |
| | | /** 任务名称 */ |
| | | taskName?: string; |
| | | isArrange?: boolean; |
| | | startDate?: string; |
| | | endDate?: string; |
| | | feeType?: FlexTaskFeeTypeEnum; |
| | | feeTypeName?: string; |
| | | settleType?: FlexTaskSettleTypeEnum; |
| | | /** 结算方式 */ |
| | | settleTypeName?: string; |
| | | /** 福利 */ |
| | | taskWeals?: FlexTaskAideDto[]; |
| | | /** 证书 */ |
| | | taskCerts?: FlexTaskAideDto[]; |
| | | /** 服务费 */ |
| | | fee?: number; |
| | | provinceId?: number; |
| | | cityId?: number; |
| | | areaId?: number; |
| | | /** 省 */ |
| | | provinceName?: string; |
| | | /** 市 */ |
| | | cityName?: string; |
| | | /** 区域 */ |
| | | areaName?: string; |
| | | /** 任务地点 */ |
| | | address?: string; |
| | | creationDate?: string; |
| | | /** 最小年龄 */ |
| | | minAge?: number; |
| | | /** 最大年龄 */ |
| | | maxAge?: number; |
| | | sexType?: GenderTypeEnum; |
| | | } |
| | | |
| | | interface GetFlexTaskDtoOutput { |
| | | taskId?: string; |
| | | taskName?: string; |
| | |
| | | minAge?: number; |
| | | maxAge?: number; |
| | | sexType?: GenderTypeEnum; |
| | | } |
| | | |
| | | interface GetFlexTaskForBackInput { |
| | | pageModel?: Pagination; |
| | | /** 任务名称 */ |
| | | taskName?: string; |
| | | /** 发布开始日期 */ |
| | | startBeginDate?: string; |
| | | /** 发布结束日期 */ |
| | | startEndDate?: string; |
| | | releaseStatus?: FlexTaskReleaseStatusEnum; |
| | | /** 是否推荐 */ |
| | | isRecommend?: boolean; |
| | | } |
| | | |
| | | interface GetFlexTaskListByStatusInput { |
| | |
| | | /** 任务Id */ |
| | | flexTaskId?: string; |
| | | checkAcceptStatus?: FlexTaskCheckAcceptStatusEnum; |
| | | } |
| | | |
| | | interface GetFlexTaskWorkerListInput { |
| | | pageModel?: Pagination; |
| | | flexTaskId?: string; |
| | | } |
| | | |
| | | interface GetFlexWorkerRecordOutput { |
| | |
| | | interface GetTypeSearchSettingListInput { |
| | | searchType: number; |
| | | belongType?: number; |
| | | } |
| | | |
| | | interface GetWorkerListForBackOutput { |
| | | userId?: string; |
| | | /** 姓名 */ |
| | | name?: string; |
| | | /** 身份证号码 */ |
| | | idNumber?: string; |
| | | /** 电话号码 */ |
| | | contactPhone?: string; |
| | | /** 年龄 */ |
| | | age?: number; |
| | | genderType?: GenderTypeEnum; |
| | | eduLevelName?: string; |
| | | hireStatus?: FlexTaskWorkerHireEnum; |
| | | } |
| | | |
| | | interface GetWorkerListForBackOutputPageOutput { |
| | | pageModel?: Pagination; |
| | | objectData?: any; |
| | | data?: GetWorkerListForBackOutput[]; |
| | | } |
| | | |
| | | interface IanaTimeZone { |
| | |
| | | resumeCertifiDetail?: UserResumeCertificateDetailOutput; |
| | | resumeDetailInfo?: UserResumeDetailInfoOutput; |
| | | resumeWorkExperience?: UserResumeWorkExperienceOutput; |
| | | /** 工作记录 */ |
| | | resumeWorkRecordList?: UserResumeWorkerRecordOutput[]; |
| | | } |
| | | |
| | |
| | | securityToken?: string; |
| | | requestId?: string; |
| | | } |
| | | |
| | | type OverCheckStatusEnum = 10 | 20 | -10; |
| | | |
| | | interface PageInput { |
| | | pageModel?: Pagination; |
| | |
| | | typeSimple?: string; |
| | | } |
| | | |
| | | interface RoleDto { |
| | | /** 角色Id */ |
| | | id?: string; |
| | | /** 角色名 */ |
| | | name?: string; |
| | | } |
| | | |
| | | interface SaveUserResumeBaseInfoInput { |
| | | name?: string; |
| | | socialIdentity?: string; |
| | |
| | | preViewData?: string; |
| | | } |
| | | |
| | | interface SetRecommendInput { |
| | | id?: string; |
| | | /** 是否推荐 */ |
| | | isRecommend?: boolean; |
| | | } |
| | | |
| | | interface SetRoleUserInput { |
| | | userId?: string[]; |
| | | roleId?: string; |
| | | } |
| | | |
| | | type SettleStatusEnum = 10 | 20 | -10; |
| | | |
| | | interface SetUserRoleInput { |
| | | userId?: string; |
| | |
| | | items?: UserData[]; |
| | | } |
| | | |
| | | interface UserResumeBaseInfoOutput { |
| | | interface UserDto { |
| | | /** 用户Id */ |
| | | id?: string; |
| | | /** 登录用户名(账号) */ |
| | | userName?: string; |
| | | /** 名称 */ |
| | | name?: string; |
| | | /** 用户手机号 */ |
| | | phoneNumber?: string; |
| | | /** 账户是否锁住(是否禁用) */ |
| | | isLocked?: boolean; |
| | | /** 角色信息 */ |
| | | roles?: RoleDto[]; |
| | | /** 备注 */ |
| | | remark?: string; |
| | | /** 组织架构公司id */ |
| | | companyOrgId?: string; |
| | | /** 组织架构部门id */ |
| | | departmentOrgId?: string; |
| | | } |
| | | |
| | | interface UserResumeBaseInfoOutput { |
| | | /** 姓名 */ |
| | | name?: string; |
| | | /** 电话号码 */ |
| | | phoneNumber?: string; |
| | | /** 头像 */ |
| | | avatarUrl?: string; |
| | | genderType?: GenderTypeEnum; |
| | | /** 年龄 */ |
| | | age?: number; |
| | | /** 上岗次数 */ |
| | | arrangeCount?: number; |
| | | /** 身份证号码 */ |
| | | idNumber?: string; |
| | | /** 身份 */ |
| | | socialIdentity?: string; |
| | | /** 身份名称 */ |
| | | socialIdentityName?: string; |
| | | /** 学历 */ |
| | | educationalLevel?: string; |
| | | /** 学历名称 */ |
| | | educationalLevelName?: string; |
| | | /** 常驻省份Code */ |
| | | residentProvinceCode?: number; |
| | | /** 常驻城市code */ |
| | | residentCityCode?: number; |
| | | /** 常驻省份名称 */ |
| | | residentProvinceName?: string; |
| | | /** 常驻城市名称 */ |
| | | residentCityName?: string; |
| | | } |
| | | |
| | | interface UserResumeCertificateDetailOutput { |
| | | /** 简历认证详情Id */ |
| | | id?: string; |
| | | /** 用户简历Id */ |
| | | userResumeId?: string; |
| | | /** 认证类别Id */ |
| | | certificateTypeId?: string; |
| | | /** 认证证件号默认身份证 */ |
| | | certificateNo?: string; |
| | | /** 证件开始时间 */ |
| | | beginTime?: string; |
| | | /** 证件结束时间 */ |
| | | endTime?: string; |
| | | /** 是否永久 */ |
| | | isPermanent?: boolean; |
| | | certificateUnit?: string; |
| | | /** 身份证正面 */ |
| | | certificateFrontImgUrl?: string; |
| | | /** 身份证反面 */ |
| | | certificateBackImgUrl?: string; |
| | | } |
| | | |
| | | interface UserResumeCertificateListOutput { |
| | | id?: string; |
| | | /** 证书Id */ |
| | | certificateTypeId?: string; |
| | | /** 证书名称 */ |
| | | certificateTypeName?: string; |
| | | /** 工作简历Id */ |
| | | userResumeId?: string; |
| | | } |
| | | |
| | | interface UserResumeDetailInfoOutput { |
| | | /** 身高 */ |
| | | height?: string; |
| | | /** 体重 */ |
| | | weight?: string; |
| | | /** 个人生活照 */ |
| | | lifeCircleImgUrlList?: string[]; |
| | | } |
| | | |
| | | interface UserResumeExpectationJobOutput { |
| | | /** 期望岗位列表 */ |
| | | jobIdList?: IdNameOutput[]; |
| | | freeTime?: UserResumeFreeTimeEnum; |
| | | jobSeekingStatus?: UserResumeJobSeekingStatusEnum; |
| | |
| | | type UserResumeJobSeekingStatusEnum = 1 | 2 | 3; |
| | | |
| | | interface UserResumeWorkerRecordOutput { |
| | | /** 工作时间 */ |
| | | workTime?: string; |
| | | /** 工作地点 */ |
| | | workAddress?: string; |
| | | /** 工作名称 */ |
| | | workName?: string; |
| | | } |
| | | |
| | | interface UserResumeWorkExperienceOutput { |
| | | /** 工作年限 */ |
| | | workingSeniority?: string; |
| | | /** 工作经验 */ |
| | | workExperience?: string; |
| | | } |
| | | |