已修改12个文件
已删除5个文件
已添加17个文件
| | |
| | | "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', |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | 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 }, |
| | | ], |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <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> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | export default definePageConfig({ |
| | | disableScroll: true, |
| | | }); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <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> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <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> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | export default definePageConfig({ |
| | | disableScroll: true, |
| | | }); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <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"> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <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> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | export default definePageConfig({ |
| | | disableScroll: true, |
| | | }); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <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 }, |
| | | ], |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <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> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | export default definePageConfig({ |
| | | disableScroll: true, |
| | | }); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <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 }, |
| | | ], |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <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> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | export default definePageConfig({ |
| | | disableScroll: true, |
| | | }); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <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> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <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'; |