12个文件已修改
17个文件已添加
5个文件已删除
| | |
| | | "scene": null |
| | | }, |
| | | { |
| | | "name": "公司详情", |
| | | "pathName": "subpackages/task/companyDetail/companyDetail", |
| | | "query": "id=c4cfe028-23e7-0be8-ee56-3a11e3743b9d", |
| | | "launchMode": "default", |
| | | "scene": null |
| | | }, |
| | | { |
| | | "name": "任务详情", |
| | | "pathName": "subpackages/task/taskDetail/taskDetail", |
| | | "query": "id=c4cfe028-23e7-0be8-ee56-3a11e3743b9d", |
| | | "launchMode": "default", |
| | | "scene": null |
| | | }, |
| | | { |
| | | "name": "", |
| | | "pathName": "pages/mine/index", |
| | | "query": "", |
| | | "launchMode": "default", |
| | | "scene": null |
| | | }, |
| | | { |
| | | "name": "", |
| | | "pathName": "subpackages/mine/mineCurriculumVitae/mineCurriculumVitae", |
| | | "pathName": "subpackages/mine/mineCertificateAddOrEdit/mineCertificateAddOrEdit", |
| | | "query": "", |
| | | "launchMode": "default", |
| | | "scene": null |
| | |
| | | 'mineAgreementSignDetail/mineAgreementSignDetail', |
| | | 'mineCurriculumVitae/mineCurriculumVitae', |
| | | 'editMineInfo/editMineInfo', |
| | | 'mineJobIntention/mineJobIntention', |
| | | 'mineWorkExperience/mineWorkExperience', |
| | | 'mineCertificate/mineCertificate', |
| | | 'mineCertificateAddOrEdit/mineCertificateAddOrEdit', |
| | | 'mineDetailedInfo/mineDetailedInfo', |
| | | 'setting/setting', |
| | | ], |
| | | }, |
| | |
| | | export * from './tabBar'; |
| | | export * from './router'; |
| | | export * from './img'; |
| | | export * from './task'; |
| | |
| | | mineAgreementSignDetail = '/subpackages/mine/mineAgreementSignDetail/mineAgreementSignDetail', |
| | | mineCurriculumVitae = '/subpackages/mine/mineCurriculumVitae/mineCurriculumVitae', |
| | | editMineInfo = '/subpackages/mine/editMineInfo/editMineInfo', |
| | | mineJobIntention = '/subpackages/mine/mineJobIntention/mineJobIntention', |
| | | mineWorkExperience = '/subpackages/mine/mineWorkExperience/mineWorkExperience', |
| | | mineCertificate = '/subpackages/mine/mineCertificate/mineCertificate', |
| | | mineCertificateAddOrEdit = '/subpackages/mine/mineCertificateAddOrEdit/mineCertificateAddOrEdit', |
| | | mineDetailedInfo = '/subpackages/mine/mineDetailedInfo/mineDetailedInfo', |
| | | setting = '/subpackages/mine/setting/setting', |
| | | } |
New file |
| | |
| | | export enum TaskStatus { |
| | | All = 0, |
| | | WaitSign = 10, |
| | | Effect = 20, |
| | | Terminated = 30, |
| | | } |
| | | |
| | | export const TaskStatusText = { |
| | | [TaskStatus.All]: '全部', |
| | | [TaskStatus.WaitSign]: '待签约', |
| | | [TaskStatus.Effect]: '生效中', |
| | | [TaskStatus.Terminated]: '已终止', |
| | | }; |
| | | |
| | | export const TaskStatusColor = { |
| | | [TaskStatus.WaitSign]: '#FF7D00', |
| | | [TaskStatus.Effect]: '#3A71FF', |
| | | [TaskStatus.Terminated]: '#9FA4AC', |
| | | }; |
| | |
| | | <template> |
| | | <ContentScrollView :paddingH="false"> |
| | | <nut-form :model-value="form" ref="formRef" :rules="rules"> |
| | | <nut-form-item label="姓名:" prop="name"> |
| | | <nut-form-item label="头像:" class="bole-form-item" prop="avatarUrl"> |
| | | <Uploader v-model:file-list="form.avatarUrl" :maximum="1" class="bole-uploader"> </Uploader> |
| | | </nut-form-item> |
| | | <nut-form-item label="姓名:" class="bole-form-item" prop="name"> |
| | | <nut-input v-model.trim="form.name" placeholder="请输入企业名称" /> |
| | | </nut-form-item> |
| | | <nut-form-item label="手机号:" prop="phone" required> |
| | | <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"> |
| | | <ChooseInputWithPicker |
| | | v-model="form.gender" |
| | | placeholder="请选择身份" |
| | | :value-enum="MineHireTypeText" |
| | | :value-enum="TaskStatusText" |
| | | /> |
| | | </nut-form-item> |
| | | <nut-form-item label="学历:" class="bole-form-item" prop="gender"> |
| | | <ChooseInputWithPicker |
| | | v-model="form.gender" |
| | | placeholder="请选择学历" |
| | | :value-enum="TaskStatusText" |
| | | /> |
| | | </nut-form-item> |
| | | <nut-form-item label="常驻城市:" class="bole-form-item" prop="gender"> |
| | | <ChooseInputWithPicker |
| | | v-model="form.gender" |
| | | placeholder="请选择常驻城市" |
| | | :value-enum="TaskStatusText" |
| | | /> |
| | | </nut-form-item> |
| | | </nut-form> |
| | |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { useUserStore } from '@/stores/modules/user'; |
| | | import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; |
| | | import { ChooseInputWithPicker } from '@12333/components'; |
| | | import { MineHireTypeText, MineHireType } from './constants'; |
| | | import { TaskStatusText, TaskStatus } from '@/constants'; |
| | | import { convertApi2FormUrlOnlyOne } from '@12333/utils'; |
| | | import { useUser } from '@/hooks'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const userStore = useUserStore(); |
| | | const { userDetail } = useUser(); |
| | | |
| | | const form = reactive({ |
| | | avatarUrl: convertApi2FormUrlOnlyOne(userDetail.value?.originalAvatarUrl), |
| | | name: '', |
| | | phone: '', |
| | | gender: MineHireType.All, |
| | | gender: TaskStatus.All, |
| | | }); |
| | | |
| | | const rules = reactive<FormRules>({ |
| | |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | |
| | | .task-card-actions-text { |
| | | font-size: 24px; |
| | | line-height: 42px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <PageLayout class="index-page-wrapper" :title="'编辑个人信息'"> |
| | | <PageLayout class="index-page-wrapper" :title="'编辑个人信息'" has-border> |
| | | <InnerPage></InnerPage> |
| | | </PageLayout> |
| | | </template> |
| | |
| | | title-gutter="12" |
| | | title-scroll |
| | | > |
| | | <ProTabPane :title="`全部`" :pane-key="MineAgreementSignType.All"></ProTabPane> |
| | | <ProTabPane :title="`待签约`" :pane-key="MineAgreementSignType.WaitSign"></ProTabPane> |
| | | <ProTabPane :title="`生效中`" :pane-key="MineAgreementSignType.Effect"></ProTabPane> |
| | | <ProTabPane :title="`已终止`" :pane-key="MineAgreementSignType.Terminated"></ProTabPane> |
| | | <ProTabPane :title="`全部`" :pane-key="0"></ProTabPane> |
| | | <ProTabPane :title="`待签约`" :pane-key="10"></ProTabPane> |
| | | <ProTabPane :title="`生效中`" :pane-key="20"></ProTabPane> |
| | | <ProTabPane :title="`已终止`" :pane-key="30"></ProTabPane> |
| | | </ProTabs> |
| | | <InfiniteLoading |
| | | scrollViewClassName="common-infinite-scroll-list home-list" |
| | |
| | | <template #renderItem="{ item }"> |
| | | <MineAgreementSignCard @click="goDetail"> |
| | | <template #actions> |
| | | <div class="task-card-actions-text" :style="{ color: MineAgreementSignTypeColor[10] }"> |
| | | {{ MineAgreementSignTypeText[10] }} |
| | | <div class="task-card-actions-text" :style="{ color: TaskStatusColor[10] }"> |
| | | {{ TaskStatusText[10] }} |
| | | </div> |
| | | </template> |
| | | </MineAgreementSignCard> |
| | |
| | | <script setup lang="ts"> |
| | | import { MineAgreementSignCard, ProTabs, ProTabPane } from '@12333/components'; |
| | | import { useUserStore } from '@/stores/modules/user'; |
| | | import { |
| | | MineAgreementSignType, |
| | | MineAgreementSignTypeColor, |
| | | MineAgreementSignTypeText, |
| | | } from './constants'; |
| | | import { TaskStatusText, TaskStatusColor, TaskStatus } from '@/constants'; |
| | | import { useInfiniteLoading } from '@12333/hooks'; |
| | | import { OrderInputType } from '@12333/constants'; |
| | | import * as orderServices from '@12333/services/api/Order'; |
| | |
| | | }); |
| | | |
| | | const queryState = reactive({ |
| | | mineAgreementSignType: MineAgreementSignType.All, |
| | | mineAgreementSignType: TaskStatus.All, |
| | | }); |
| | | |
| | | const userStore = useUserStore(); |
| | |
| | | rows: 20, |
| | | page: pageParam, |
| | | orderInput: [ |
| | | queryState.mineAgreementSignType === MineAgreementSignType.All |
| | | queryState.mineAgreementSignType === TaskStatus.All |
| | | ? { property: 'isRecommend', order: OrderInputType.Desc } |
| | | : { property: 'lastShelfTime', order: OrderInputType.Desc }, |
| | | ], |
New file |
| | |
| | | <template> |
| | | <ContentScrollView :paddingH="false"> |
| | | <List> |
| | | <ListItem title="健康证" @click="handleEdit"> </ListItem> |
| | | <ListItem title="健康证" @click="handleEdit"> </ListItem> |
| | | <ListItem title="健康证" @click="handleEdit"> </ListItem> |
| | | <ListItem title="健康证" @click="handleEdit"> </ListItem> |
| | | <ListItem title="健康证" @click="handleEdit"> </ListItem> |
| | | <ListItem title="健康证" @click="handleEdit"> </ListItem> |
| | | </List> |
| | | </ContentScrollView> |
| | | <PageFooter> |
| | | <PageFooterBtn type="primary" @click="handleAdd">添加证书</PageFooterBtn> |
| | | </PageFooter> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { useUser } from '@/hooks'; |
| | | import { List, ListItem } from '@12333/components'; |
| | | import Taro from '@tarojs/taro'; |
| | | import { RouterPath } from '@/constants'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const { userDetail } = useUser(); |
| | | |
| | | const form = reactive({ |
| | | workYear: '', |
| | | }); |
| | | |
| | | function handleAdd() { |
| | | Taro.navigateTo({ |
| | | url: RouterPath.mineCertificateAddOrEdit, |
| | | }); |
| | | } |
| | | function handleEdit() {} |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | </style> |
New file |
| | |
| | | export default definePageConfig({ |
| | | disableScroll: true, |
| | | }); |
New file |
| | |
| | | <template> |
| | | <PageLayout class="index-page-wrapper" :title="'资格证书'" has-border> |
| | | <InnerPage></InnerPage> |
| | | </PageLayout> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import InnerPage from './InnerPage.vue'; |
| | | |
| | | defineOptions({ |
| | | name: 'mineCertificate', |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <ContentScrollView :paddingH="false"> |
| | | <nut-form :model-value="form" ref="formRef" :rules="rules"> |
| | | <nut-form-item label="证书类型:" class="bole-form-item" prop="type"> |
| | | <ChooseInputWithPicker |
| | | v-model="form.type" |
| | | placeholder="请选择证书类型" |
| | | :value-enum="TaskStatusText" |
| | | /> |
| | | </nut-form-item> |
| | | <nut-form-item label="证书编号:" class="bole-form-item" prop="certificateNumber"> |
| | | <nut-input v-model="form.certificateNumber" type="number" placeholder="请输入"> </nut-input> |
| | | </nut-form-item> |
| | | <nut-form-item label="开始日期:" class="bole-form-item" prop="startDate"> |
| | | <ChooseInputWithDatePicker v-model="form.startDate"></ChooseInputWithDatePicker> |
| | | </nut-form-item> |
| | | <nut-form-item label="结束日期:" class="bole-form-item" prop="endDate"> |
| | | <ChooseInputWithDatePicker v-model="form.endDate"></ChooseInputWithDatePicker> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="永久证书:" |
| | | class="bole-form-item permanent-certificate" |
| | | prop="isPermanentCertificate" |
| | | > |
| | | <nut-switch v-model="form.isPermanentCertificate" /> |
| | | </nut-form-item> |
| | | <nut-form-item label="发证单位:" class="bole-form-item" prop="certificateNumber"> |
| | | <nut-input v-model="form.certificateNumber" placeholder="请输入"> </nut-input> |
| | | </nut-form-item> |
| | | <div class="certificate-upload"> |
| | | <div class="certificate-upload-title">上传证书</div> |
| | | <nut-form-item |
| | | label="证书正面照片(请确保证书号、头像照片等清晰可见)" |
| | | class="bole-form-item" |
| | | prop="photo" |
| | | label-position="top" |
| | | > |
| | | <Uploader v-model:file-list="form.photo" :maximum="1" class="bole-uploader"> </Uploader> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="证书反面照片(或其他有内容页)" |
| | | class="bole-form-item" |
| | | prop="photo" |
| | | label-position="top" |
| | | > |
| | | <Uploader v-model:file-list="form.photo" :maximum="1" class="bole-uploader"> </Uploader> |
| | | </nut-form-item> |
| | | </div> |
| | | </nut-form> |
| | | </ContentScrollView> |
| | | <PageFooter> |
| | | <PageFooterBtn type="primary" @click="handleConfirm">保存</PageFooterBtn> |
| | | </PageFooter> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { useUser } from '@/hooks'; |
| | | import { ChooseInputWithPicker, ChooseInputWithDatePicker } from '@12333/components'; |
| | | import { TaskStatusText, TaskStatus } from '@/constants'; |
| | | import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const { userDetail } = useUser(); |
| | | |
| | | const form = reactive({ |
| | | type: TaskStatus.All, |
| | | certificateNumber: '', |
| | | startDate: '', |
| | | endDate: '', |
| | | isPermanentCertificate: false, |
| | | photo: [], |
| | | }); |
| | | |
| | | const rules = reactive<FormRules>({ |
| | | type: [{ required: true, message: '请输入手机号' }], |
| | | startDate: [{ required: true, message: '请选择开始日期' }], |
| | | endDate: [{ required: true, message: '请选择结束日期' }], |
| | | photo: [{ required: true, message: '请上传证书正面照' }], |
| | | }); |
| | | const formRef = ref<any>(null); |
| | | function handleConfirm() { |
| | | if (!formRef.value) return; |
| | | formRef.value.validate().then(({ valid, errors }: any) => { |
| | | if (valid) { |
| | | confirm(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | function confirm() {} |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | |
| | | .nut-form .nut-cell.bole-form-item:not(.alignTop), |
| | | page .nut-form .nut-cell.bole-form-item:not(.alignTop) { |
| | | align-items: flex-start !important; |
| | | } |
| | | |
| | | .permanent-certificate { |
| | | --nut-form-item-body-slots-text-align: right; |
| | | } |
| | | |
| | | .certificate-upload { |
| | | .certificate-upload-title { |
| | | font-size: 28px; |
| | | padding: 26px 32px 0; |
| | | } |
| | | |
| | | .nut-form-item__label { |
| | | padding-right: 0; |
| | | font-size: 24px; |
| | | width: 98%; |
| | | } |
| | | } |
| | | </style> |
New file |
| | |
| | | export default definePageConfig({ |
| | | disableScroll: true, |
| | | }); |
New file |
| | |
| | | <template> |
| | | <PageLayout class="index-page-wrapper" :title="'资格证书'" has-border> |
| | | <InnerPage></InnerPage> |
| | | </PageLayout> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import InnerPage from './InnerPage.vue'; |
| | | |
| | | defineOptions({ |
| | | name: 'mineCertificateAddOrEdit', |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | </style> |
| | |
| | | color: boleGetCssVar('text-color', 'regular'); |
| | | } |
| | | } |
| | | |
| | | .task-card-actions-text { |
| | | font-size: 24px; |
| | | line-height: 42px; |
| | | color: #9fa4ac; |
| | | } |
| | | </style> |
| | |
| | | <div class="mine-curriculum-intention-content"> |
| | | <div class="mine-curriculum-intention-title"> |
| | | <div class="mine-curriculum-intention-title-text">求职意向</div> |
| | | <div class="mine-curriculum-intention-title-edit"> |
| | | <div class="mine-curriculum-intention-title-edit" @click="goMineJobIntention"> |
| | | 编辑 |
| | | <img :src="IconArrow" class="mine-curriculum-intention-title-edit-icon" /> |
| | | </div> |
| | |
| | | </MineAgreementSignDetailItem> |
| | | </div> |
| | | |
| | | <ListItem title="资格证书"> |
| | | <ListItem title="资格证书" @click="goMineCertificate"> |
| | | <template #extra> |
| | | <div class="mine-curriculum-intention-enit-btn">编辑</div> |
| | | </template> |
| | | </ListItem> |
| | | <ListItem title="工作经验"> |
| | | <ListItem title="工作经验" @click="goMineWorkExperience"> |
| | | <template #extra> |
| | | <div class="mine-curriculum-intention-enit-btn">编辑</div> |
| | | </template> |
| | | </ListItem> |
| | | <ListItem title="详细信息" class="mine-curriculum-intention-detail"> |
| | | <ListItem |
| | | title="详细信息" |
| | | class="mine-curriculum-intention-detail" |
| | | @click="goMineDetailedInfo" |
| | | > |
| | | <template #extra> |
| | | <div class="mine-curriculum-intention-enit-btn">编辑</div> |
| | | </template> |
| | |
| | | const userStore = useUserStore(); |
| | | const isLogin = useIsLogin(); |
| | | |
| | | function goEditMineInfo() { |
| | | function goPage(routeName: string) { |
| | | Taro.navigateTo({ |
| | | url: RouterPath.editMineInfo, |
| | | url: routeName, |
| | | }); |
| | | } |
| | | function goEditMineInfo() { |
| | | goPage(RouterPath.editMineInfo); |
| | | } |
| | | function goMineJobIntention() { |
| | | goPage(RouterPath.mineJobIntention); |
| | | } |
| | | function goMineDetailedInfo() { |
| | | goPage(RouterPath.mineDetailedInfo); |
| | | } |
| | | function goMineWorkExperience() { |
| | | goPage(RouterPath.mineWorkExperience); |
| | | } |
| | | function goMineCertificate() { |
| | | goPage(RouterPath.mineCertificate); |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
New file |
| | |
| | | <template> |
| | | <ContentScrollView :paddingH="false"> |
| | | <nut-form :model-value="form" ref="formRef"> |
| | | <nut-form-item label="身高:" class="bole-form-item" prop="height"> |
| | | <NumberInput v-model="form.height" placeholder="请输入"> |
| | | <template #right>cm</template> |
| | | </NumberInput> |
| | | </nut-form-item> |
| | | <nut-form-item label="体重:" class="bole-form-item" prop="weight"> |
| | | <NumberInput v-model="form.weight" placeholder="请输入"> |
| | | <template #right>kg</template> |
| | | </NumberInput> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="个人生活照(单张照片不超过5m,最多不超过6张):" |
| | | class="bole-form-item person-photo" |
| | | prop="photo" |
| | | label-position="top" |
| | | > |
| | | <Uploader v-model:file-list="form.photo" :maximum="6" class="bole-uploader"> </Uploader> |
| | | </nut-form-item> |
| | | </nut-form> |
| | | </ContentScrollView> |
| | | <PageFooter> |
| | | <PageFooterBtn type="primary" @click="handleConfirm">保存</PageFooterBtn> |
| | | </PageFooter> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { useUser } from '@/hooks'; |
| | | import { NumberInput } from '@12333/components'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const { userDetail } = useUser(); |
| | | |
| | | const form = reactive({ |
| | | height: '', |
| | | weight: '', |
| | | photo: [], |
| | | }); |
| | | |
| | | function handleConfirm() {} |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | |
| | | .person-photo { |
| | | .nut-form-item__label { |
| | | padding-right: 0; |
| | | } |
| | | } |
| | | |
| | | .nut-form .nut-cell.bole-form-item:not(.alignTop), |
| | | page .nut-form .nut-cell.bole-form-item:not(.alignTop) { |
| | | align-items: flex-start !important; |
| | | } |
| | | </style> |
New file |
| | |
| | | export default definePageConfig({ |
| | | disableScroll: true, |
| | | }); |
New file |
| | |
| | | <template> |
| | | <PageLayout class="index-page-wrapper" :title="'详细信息'" has-border> |
| | | <InnerPage></InnerPage> |
| | | </PageLayout> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import InnerPage from './InnerPage.vue'; |
| | | |
| | | defineOptions({ |
| | | name: 'mineDetailedInfo', |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | </style> |
| | |
| | | title-gutter="12" |
| | | title-scroll |
| | | > |
| | | <ProTabPane :title="`全部`" :pane-key="MineHireType.All"></ProTabPane> |
| | | <ProTabPane :title="`进行中`" :pane-key="MineHireType.InProgress"></ProTabPane> |
| | | <ProTabPane :title="`待验收`" :pane-key="MineHireType.WaitCheck"></ProTabPane> |
| | | <ProTabPane :title="`已完成`" :pane-key="MineHireType.Finished"></ProTabPane> |
| | | <ProTabPane :title="`全部`" :pane-key="0"></ProTabPane> |
| | | <ProTabPane :title="`进行中`" :pane-key="10"></ProTabPane> |
| | | <ProTabPane :title="`待验收`" :pane-key="20"></ProTabPane> |
| | | <ProTabPane :title="`已完成`" :pane-key="30"></ProTabPane> |
| | | </ProTabs> |
| | | <InfiniteLoading |
| | | scrollViewClassName="common-infinite-scroll-list home-list" |
| | |
| | | <template #renderItem="{ item }"> |
| | | <TaskCard> |
| | | <template #actions> |
| | | <div class="task-card-actions-text" :style="{ color: MineHireTypeColor[10] }"> |
| | | {{ MineHireTypeText[10] }} |
| | | <div class="task-card-actions-text" :style="{ color: TaskStatusColor[10] }"> |
| | | {{ TaskStatusText[10] }} |
| | | </div> |
| | | </template> |
| | | </TaskCard> |
| | |
| | | <script setup lang="ts"> |
| | | import { TaskCard, ProTabs, ProTabPane } from '@12333/components'; |
| | | import { useUserStore } from '@/stores/modules/user'; |
| | | import { MineHireType, MineHireTypeColor, MineHireTypeText } from './constants'; |
| | | import { TaskStatusText, TaskStatusColor, TaskStatus } from '@/constants'; |
| | | import { useInfiniteLoading } from '@12333/hooks'; |
| | | import { OrderInputType } from '@12333/constants'; |
| | | import * as orderServices from '@12333/services/api/Order'; |
| | |
| | | }); |
| | | |
| | | const queryState = reactive({ |
| | | mineHireType: MineHireType.All, |
| | | mineHireType: TaskStatus.All, |
| | | }); |
| | | |
| | | const userStore = useUserStore(); |
| | |
| | | rows: 20, |
| | | page: pageParam, |
| | | orderInput: [ |
| | | queryState.mineHireType === MineHireType.All |
| | | queryState.mineHireType === TaskStatus.All |
| | | ? { property: 'isRecommend', order: OrderInputType.Desc } |
| | | : { property: 'lastShelfTime', order: OrderInputType.Desc }, |
| | | ], |
New file |
| | |
| | | <template> |
| | | <ContentScrollView :paddingH="false"> |
| | | <nut-form :model-value="form" ref="formRef" :rules="rules"> |
| | | <nut-form-item label="期望岗位:" class="bole-form-item" prop="job"> |
| | | <ChooseInputWithPicker |
| | | v-model="form.job" |
| | | placeholder="请选择期望岗位" |
| | | :value-enum="TaskStatusText" |
| | | /> |
| | | </nut-form-item> |
| | | <nut-form-item label="空闲时间:" class="bole-form-item" prop="job"> |
| | | <ChooseInputWithPicker |
| | | v-model="form.job" |
| | | placeholder="请选择空闲时间" |
| | | :value-enum="TaskStatusText" |
| | | /> |
| | | </nut-form-item> |
| | | <nut-form-item label="求职状态:" class="bole-form-item" prop="job"> |
| | | <ChooseInputWithPicker |
| | | v-model="form.job" |
| | | placeholder="请选择求职状态" |
| | | :value-enum="TaskStatusText" |
| | | /> |
| | | </nut-form-item> |
| | | </nut-form> |
| | | </ContentScrollView> |
| | | <PageFooter> |
| | | <PageFooterBtn type="primary" @click="handleConfirm">保存</PageFooterBtn> |
| | | </PageFooter> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; |
| | | import { ChooseInputWithPicker } from '@12333/components'; |
| | | import { TaskStatusText, TaskStatus } from '@/constants'; |
| | | import { useUser } from '@/hooks'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const { userDetail } = useUser(); |
| | | |
| | | const form = reactive({ |
| | | job: TaskStatus.All, |
| | | }); |
| | | |
| | | const rules = reactive<FormRules>({ |
| | | job: [{ required: true, message: '请选择' }], |
| | | }); |
| | | const formRef = ref<any>(null); |
| | | function handleConfirm() { |
| | | if (!formRef.value) return; |
| | | formRef.value.validate().then(({ valid, errors }: any) => { |
| | | if (valid) { |
| | | confirm(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | function confirm() {} |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | </style> |
New file |
| | |
| | | export default definePageConfig({ |
| | | disableScroll: true, |
| | | }); |
New file |
| | |
| | | <template> |
| | | <PageLayout class="index-page-wrapper" :title="'求职意向'" has-border> |
| | | <InnerPage></InnerPage> |
| | | </PageLayout> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import InnerPage from './InnerPage.vue'; |
| | | |
| | | defineOptions({ |
| | | name: 'mineJobIntention', |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | </style> |
| | |
| | | title-gutter="12" |
| | | title-scroll |
| | | > |
| | | <ProTabPane :title="`全部`" :pane-key="MineSignType.All"></ProTabPane> |
| | | <ProTabPane :title="`待确认`" :pane-key="MineSignType.WaitConfirm"></ProTabPane> |
| | | <ProTabPane :title="`待签约`" :pane-key="MineSignType.WaitSign"></ProTabPane> |
| | | <ProTabPane :title="`全部`" :pane-key="0"></ProTabPane> |
| | | <ProTabPane :title="`待确认`" :pane-key="10"></ProTabPane> |
| | | <ProTabPane :title="`待签约`" :pane-key="20"></ProTabPane> |
| | | </ProTabs> |
| | | <InfiniteLoading |
| | | scrollViewClassName="common-infinite-scroll-list home-list" |
| | |
| | | <template #renderItem="{ item }"> |
| | | <TaskCard> |
| | | <template #actions> |
| | | <div class="task-card-actions-text" :style="{ color: MineSignTypeColor[10] }"> |
| | | {{ MineSignTypeText[10] }} |
| | | <div class="task-card-actions-text" :style="{ color: TaskStatusColor[10] }"> |
| | | {{ TaskStatusText[10] }} |
| | | </div> |
| | | </template> |
| | | </TaskCard> |
| | |
| | | <script setup lang="ts"> |
| | | import { TaskCard, ProTabs, ProTabPane } from '@12333/components'; |
| | | import { useUserStore } from '@/stores/modules/user'; |
| | | import { MineSignType, MineSignTypeColor, MineSignTypeText } from './constants'; |
| | | import { TaskStatusText, TaskStatusColor, TaskStatus } from '@/constants'; |
| | | import { useInfiniteLoading } from '@12333/hooks'; |
| | | import { OrderInputType } from '@12333/constants'; |
| | | import * as orderServices from '@12333/services/api/Order'; |
| | |
| | | }); |
| | | |
| | | const queryState = reactive({ |
| | | mineSignType: MineSignType.All, |
| | | mineSignType: TaskStatus.All, |
| | | }); |
| | | |
| | | const userStore = useUserStore(); |
| | |
| | | rows: 20, |
| | | page: pageParam, |
| | | orderInput: [ |
| | | queryState.mineSignType === MineSignType.All |
| | | queryState.mineSignType === TaskStatus.All |
| | | ? { property: 'isRecommend', order: OrderInputType.Desc } |
| | | : { property: 'lastShelfTime', order: OrderInputType.Desc }, |
| | | ], |
New file |
| | |
| | | <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> |
| | | <nut-form-item label="工作经验:" class="bole-form-item" prop="workYear"> |
| | | <nut-input v-model="form.workYear" type="textarea" placeholder="请输入"> </nut-input> |
| | | </nut-form-item> |
| | | </nut-form> |
| | | </ContentScrollView> |
| | | <PageFooter> |
| | | <PageFooterBtn type="primary" @click="handleConfirm">保存</PageFooterBtn> |
| | | </PageFooter> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { useUser } from '@/hooks'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const { userDetail } = useUser(); |
| | | |
| | | const form = reactive({ |
| | | workYear: '', |
| | | }); |
| | | |
| | | function handleConfirm() {} |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | </style> |
New file |
| | |
| | | export default definePageConfig({ |
| | | disableScroll: true, |
| | | }); |
New file |
| | |
| | | <template> |
| | | <PageLayout class="index-page-wrapper" :title="'工作经验'" has-border> |
| | | <InnerPage></InnerPage> |
| | | </PageLayout> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import InnerPage from './InnerPage.vue'; |
| | | |
| | | defineOptions({ |
| | | name: 'mineWorkExperience', |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <ChooseInput :modelValue="modelValue" @click="handleOpen()"></ChooseInput> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import ChooseInput from './ChooseInput.vue'; |
| | | import { Popup, DatePicker } from '@nutui/nutui-taro'; |
| | | import { Portal } from 'senin-mini/components'; |
| | | import { h } from 'vue'; |
| | | import dayjs from 'dayjs'; |
| | | |
| | | defineOptions({ |
| | | name: 'ChooseInputWithDatePicker', |
| | | }); |
| | | |
| | | type Props = { |
| | | modelValue: string | number; |
| | | }; |
| | | |
| | | const props = withDefaults(defineProps<Props>(), {}); |
| | | |
| | | const emit = defineEmits<{ |
| | | (e: 'update:modelValue', val: string | number): void; |
| | | }>(); |
| | | |
| | | function handleOpen() { |
| | | const _modelValue = [props.modelValue]; |
| | | Portal.add((key) => { |
| | | return h( |
| | | Portal.Container, |
| | | { keyNumber: key, delayOpen: true }, |
| | | { |
| | | default: ({ open, onClose }) => |
| | | h( |
| | | Popup, |
| | | { |
| | | visible: open.value, |
| | | 'onUpdate:visible': (value) => !value && onClose(), |
| | | position: 'bottom', |
| | | }, |
| | | { |
| | | default: () => |
| | | h(DatePicker, { |
| | | modelValue: _modelValue, |
| | | onCancel: onClose, |
| | | onConfirm: ({ selectedValue }) => { |
| | | console.log('selectedValue: ', selectedValue); |
| | | emit('update:modelValue', dayjs(selectedValue).format('YYYY-MM-DD')); |
| | | onClose(); |
| | | }, |
| | | }), |
| | | } |
| | | ), |
| | | } |
| | | ); |
| | | }); |
| | | } |
| | | </script> |
| | |
| | | export { default as ListItem } from './List/ListItem.vue'; |
| | | export { default as NumberInput } from './Input/NumberInput.vue'; |
| | | export { default as ChooseInputWithPicker } from './Input/ChooseInputWithPicker.vue'; |
| | | export { default as ChooseInputWithDatePicker } from './Input/ChooseInputWithDatePicker.vue'; |
| | | export { default as ChooseInputWithAreaPicker } from './Input/ChooseInputWithAreaPicker.vue'; |
| | | export { default as ChooseInputWithAreaSheet } from './Input/ChooseInputWithAreaSheet.vue'; |
| | | export { default as PreviewImage } from './Image/PreviewImage.vue'; |