| | |
| | | 'addStandardOrder/addStandardOrder', |
| | | 'chooseSupplier/chooseSupplier', |
| | | 'chooseEnterpriseEmployee/chooseEnterpriseEmployee', |
| | | 'EnterpriseEmployeeDetail/EnterpriseEmployeeDetail', |
| | | 'supplierDetail/supplierDetail', |
| | | ], |
| | | }, |
| | | { |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <ContentView style="background-color: transparent" class="job-detail-content"> |
| | | <FlexJobTopView |
| | | :avatar="avatar" |
| | | :name="name" |
| | | :age="age" |
| | | :isReal="isReal" |
| | | :gender="gender" |
| | | :personalIdentityContent="personalIdentityContent" |
| | | :educationalBackgroundContent="educationalBackgroundContent" |
| | | :taskCount="taskCount" |
| | | size="small" |
| | | class="job-detail-content-top" |
| | | /> |
| | | <div class="job-detail-content-contact-info"> |
| | | <div class="job-detail-content-contact-info-item"> |
| | | <div class="job-detail-content-contact-info-item-label">ææºå·ï¼</div> |
| | | <div class="job-detail-content-contact-info-item-text"> |
| | | {{ isCollapse ? contactPhoneNumber : 'ç«å³èç³»å坿¥ç' }} |
| | | </div> |
| | | </div> |
| | | <div class="job-detail-content-contact-info-item"> |
| | | <div class="job-detail-content-contact-info-item-label">身份è¯å·ï¼</div> |
| | | <div class="job-detail-content-contact-info-item-text"> |
| | | {{ isCollapse ? hiddenIDNumberForEnd4(identity) : 'ç«å³èç³»å坿¥ç' }} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </ContentView> |
| | | <div style="flex: 1; min-height: 0"> |
| | | <ProTabs |
| | | v-model="tab" |
| | | name="job-detail-content-tab" |
| | | :showSmile="false" |
| | | class="job-detail-content-tabs" |
| | | isTransparent |
| | | title-gutter="8" |
| | | fullHeight |
| | | > |
| | | <ProTabPane :title="`ç®å`" pane-key="1"> |
| | | <curriculumView |
| | | :userExpectJobs="userExpectJobs" |
| | | :freeTime="freeTime" |
| | | :jobSeekingStatus="jobSeekingStatus" |
| | | :userCredentials="userCredentials" |
| | | :workSeniority="workSeniority" |
| | | :workExperience="workExperience" |
| | | :photos="photos" |
| | | :height="height" |
| | | :weight="weight" |
| | | :shoeSize="shoeSize" |
| | | :videos="videos" |
| | | /> |
| | | </ProTabPane> |
| | | <ProTabPane :title="`ç»å`" pane-key="2"> |
| | | <experienceView :taskInfoUsers="taskInfoUsers" /> |
| | | </ProTabPane> |
| | | </ProTabs> |
| | | </div> |
| | | |
| | | <PageFooter> |
| | | <slot name="footer"></slot> |
| | | </PageFooter> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { FlexJobTopView, ProTabs, ProTabPane } from '@12333/components'; |
| | | import { hiddenIDNumberForEnd4 } from '@12333/utils'; |
| | | import curriculumView from './components/curriculumView.vue'; |
| | | import experienceView from './components/experienceView.vue'; |
| | | import { EnumUserGender } from '@12333/constants'; |
| | | |
| | | defineOptions({ |
| | | name: 'JobDetailContent', |
| | | }); |
| | | |
| | | type Props = { |
| | | isCollapse: boolean; |
| | | |
| | | avatar?: string; |
| | | name?: string; |
| | | gender?: EnumUserGender; |
| | | age?: number; |
| | | isReal?: boolean; |
| | | personalIdentityContent?: string; |
| | | educationalBackgroundContent?: string; |
| | | taskCount?: number; |
| | | contactPhoneNumber?: string; |
| | | identity?: string; |
| | | |
| | | userExpectJobs?: API.GetUserResumeQueryResultExpectJob[]; |
| | | freeTime?: API.EnumPersonalFreeTime; |
| | | jobSeekingStatus?: API.EnumPersonalJobSeekingStatus; |
| | | userCredentials?: API.GetUserResumeQueryResultCredential[]; |
| | | workSeniority?: string; |
| | | workExperience?: string; |
| | | photos?: string[]; |
| | | videos?: string[]; |
| | | /** èº«é« */ |
| | | height?: number; |
| | | /** ä½é */ |
| | | weight?: number; |
| | | shoeSize?: number; |
| | | |
| | | taskInfoUsers?: API.GetUserResumeQueryResultExperience[]; |
| | | }; |
| | | |
| | | const tab = ref('1'); |
| | | const props = withDefaults(defineProps<Props>(), {}); |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | |
| | | .job-detail-content-top { |
| | | margin-bottom: 20px; |
| | | } |
| | | |
| | | .job-detail-content-contact-info { |
| | | padding-left: 130px; |
| | | margin-bottom: 78px; |
| | | |
| | | .job-detail-content-contact-info-item { |
| | | display: flex; |
| | | align-items: center; |
| | | font-weight: 400; |
| | | font-size: 24px; |
| | | line-height: 28px; |
| | | margin-bottom: 22px; |
| | | |
| | | &:last-child { |
| | | margin-bottom: 0; |
| | | } |
| | | |
| | | .job-detail-content-contact-info-item-label { |
| | | color: boleGetCssVar('text-color', 'secondary'); |
| | | margin-right: 8px; |
| | | } |
| | | |
| | | .job-detail-content-contact-info-item-text { |
| | | color: boleGetCssVar('text-color', 'primary'); |
| | | flex: 1; |
| | | min-width: 0; |
| | | @include ellipsis; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="curriculum-list-item"> |
| | | <div class="curriculum-list-item-label" :style="{ width: props.labelWidth }"> |
| | | {{ props.label }} |
| | | </div> |
| | | <div class="curriculum-list-item-text"> |
| | | <slot>{{ props.text }}</slot> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | defineOptions({ |
| | | name: 'CurriculumViewItem', |
| | | }); |
| | | |
| | | type Props = { |
| | | label?: string; |
| | | text?: string; |
| | | labelWidth?: number | string; |
| | | }; |
| | | |
| | | const props = withDefaults(defineProps<Props>(), { |
| | | labelWidth: 'auto', |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | |
| | | .job-detail-content-tabs { |
| | | .curriculum-list-item { |
| | | display: flex; |
| | | margin-bottom: 14px; |
| | | font-weight: 400; |
| | | font-size: 24px; |
| | | line-height: 36px; |
| | | |
| | | &:last-child { |
| | | margin-bottom: 0; |
| | | } |
| | | |
| | | .curriculum-list-item-label { |
| | | color: boleGetCssVar('text-color', 'secondary'); |
| | | } |
| | | |
| | | .curriculum-list-item-text { |
| | | color: boleGetCssVar('text-color', 'primary'); |
| | | flex: 1; |
| | | min-width: 0; |
| | | @include ellipsis; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <ContentScrollView> |
| | | <Cell :show-title="false"> |
| | | <!-- <CellChunk title="æ±èæå"> |
| | | <div class="curriculum-list"> |
| | | <CurriculumViewItem label="ææå²ä½ï¼"> |
| | | <div class="curriculum-position-list"> |
| | | <div |
| | | v-for="userExpectJob in userExpectJobs" |
| | | :key="userExpectJob.expectJobCode" |
| | | class="curriculum-position-list-item" |
| | | > |
| | | {{ userExpectJob.expectJobContent }} |
| | | </div> |
| | | </div> |
| | | </CurriculumViewItem> |
| | | <CurriculumViewItem label="ç©ºé²æ¶é´ï¼" :text="EnumPersonalFreeTimeText[freeTime]"> |
| | | </CurriculumViewItem> |
| | | <CurriculumViewItem |
| | | label="æ±èç¶æï¼" |
| | | :text="EnumPersonalJobSeekingStatusText[jobSeekingStatus]" |
| | | > |
| | | </CurriculumViewItem> |
| | | </div> |
| | | </CellChunk> --> |
| | | <CellChunk title="èµæ ¼è¯ä¹¦" v-if="_userCredentials.length > 0"> |
| | | <nut-grid square :column-num="3" :border="false" :gutter="20" class="pro-img-grid"> |
| | | <nut-grid-item |
| | | v-for="(item, index) in _userCredentials" |
| | | :key="item" |
| | | class="pro-img-grid-item" |
| | | > |
| | | <div class="pro-img-grid-img-item"> |
| | | <PreviewImage :src="item" class="pro-img-grid-img" :urls="_userCredentials" /> |
| | | </div> |
| | | </nut-grid-item> |
| | | </nut-grid> |
| | | </CellChunk> |
| | | <CellChunk title="å·¥ä½ç»éª"> |
| | | <CurriculumViewItem label="å·¥ä½å¹´éï¼" :text="workSeniority"> </CurriculumViewItem> |
| | | <CurriculumViewItem label="å·¥ä½ç»éªï¼" :text="workExperience"> </CurriculumViewItem> |
| | | </CellChunk> |
| | | <CellChunk title="详ç»ä¿¡æ¯"> |
| | | <CurriculumViewItem |
| | | label="身é«ï¼" |
| | | :text="height && `${height} cm`" |
| | | :label-width="labelWidth" |
| | | ></CurriculumViewItem> |
| | | <CurriculumViewItem |
| | | label="ä½éï¼" |
| | | :text="weight && `${weight} kg`" |
| | | :label-width="labelWidth" |
| | | ></CurriculumViewItem> |
| | | <CurriculumViewItem |
| | | label="éç ï¼" |
| | | :text="shoeSize && `${shoeSize} ç `" |
| | | :label-width="labelWidth" |
| | | ></CurriculumViewItem> |
| | | <CurriculumViewItem label="个人ç
§çï¼"> |
| | | <nut-grid |
| | | square |
| | | :column-num="2" |
| | | :border="false" |
| | | :gutter="20" |
| | | v-if="_photos.length > 0" |
| | | class="pro-img-grid" |
| | | > |
| | | <nut-grid-item v-for="(item, index) in _photos" :key="item" class="pro-img-grid-item"> |
| | | <div class="pro-img-grid-img-item"> |
| | | <PreviewImage :src="item" class="pro-img-grid-img" :urls="_photos" /> |
| | | </div> |
| | | </nut-grid-item> |
| | | </nut-grid> |
| | | </CurriculumViewItem> |
| | | <CurriculumViewItem label="个人è§é¢ï¼"> |
| | | <nut-grid |
| | | square |
| | | :column-num="2" |
| | | :border="false" |
| | | :gutter="20" |
| | | v-if="_photos.length > 0" |
| | | class="pro-img-grid" |
| | | > |
| | | <nut-grid-item v-for="(item, index) in _videos" :key="item" class="pro-img-grid-item"> |
| | | <div class="pro-img-grid-img-item"> |
| | | <video class="pro-img-grid-img" :src="item" /> |
| | | </div> |
| | | </nut-grid-item> |
| | | </nut-grid> |
| | | </CurriculumViewItem> |
| | | </CellChunk> |
| | | </Cell> |
| | | </ContentScrollView> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import CurriculumViewItem from './CurriculumViewItem.vue'; |
| | | import { PreviewImage, Cell, CellChunk } from '@12333/components'; |
| | | import Taro from '@tarojs/taro'; |
| | | import { EnumPersonalFreeTimeText, EnumPersonalJobSeekingStatusText } from '@12333/constants'; |
| | | import { setOSSLink } from '@12333/utils'; |
| | | import { Video } from '@tarojs/components'; |
| | | |
| | | defineOptions({ |
| | | name: 'curriculumView', |
| | | }); |
| | | |
| | | type Props = { |
| | | userExpectJobs?: API.GetUserResumeQueryResultExpectJob[]; |
| | | freeTime?: API.EnumPersonalFreeTime; |
| | | jobSeekingStatus?: API.EnumPersonalJobSeekingStatus; |
| | | userCredentials?: API.GetUserResumeQueryResultCredential[]; |
| | | workSeniority?: string; |
| | | workExperience?: string; |
| | | photos?: string[]; |
| | | videos?: string[]; |
| | | /** èº«é« */ |
| | | height?: number; |
| | | /** ä½é */ |
| | | weight?: number; |
| | | shoeSize?: number; |
| | | }; |
| | | |
| | | const props = withDefaults(defineProps<Props>(), { |
| | | userExpectJobs: () => [], |
| | | userCredentials: () => [], |
| | | photos: () => [], |
| | | videos: () => [], |
| | | }); |
| | | |
| | | const _userCredentials = computed(() => props.userCredentials.map((x) => setOSSLink(x.img))); |
| | | const _photos = computed(() => props.photos.map((x) => setOSSLink(x))); |
| | | const _videos = computed(() => props.videos.map((x) => setOSSLink(x))); |
| | | |
| | | const labelWidth = Taro.pxTransform(120); |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | |
| | | .job-detail-content-tabs { |
| | | .curriculum-position-list { |
| | | width: 100%; |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | column-gap: 24px; |
| | | row-gap: 16px; |
| | | |
| | | .curriculum-position-list-item { |
| | | font-weight: 500; |
| | | font-size: 24px; |
| | | color: boleGetCssVar('color', 'warning'); |
| | | line-height: 36px; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <ContentScrollView> |
| | | <Cell title="å²ä½ç»å"> |
| | | <nut-steps |
| | | v-if="taskInfoUsers.length > 0" |
| | | direction="vertical" |
| | | progress-dot |
| | | :current="10000003" |
| | | class="job-detail-content-steps" |
| | | > |
| | | <nut-step |
| | | v-for="(taskInfoUser, index) in taskInfoUsers" |
| | | :key="index" |
| | | :title="dayjs(taskInfoUser.hireTime).format('YYYY.MM.DD')" |
| | | > |
| | | <template #content> |
| | | <p>å¨{{ taskInfoUser.enterpriseName }}ï¼</p> |
| | | <p>åè¿{{ taskInfoUser.name }}</p> |
| | | </template> |
| | | </nut-step> |
| | | </nut-steps> |
| | | <NoData v-else /> |
| | | </Cell> |
| | | </ContentScrollView> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import NoData from '../../NoData/NoData.vue'; |
| | | import dayjs from 'dayjs'; |
| | | import { Cell } from '@12333/components'; |
| | | |
| | | defineOptions({ |
| | | name: 'experienceView', |
| | | }); |
| | | |
| | | type Props = { |
| | | taskInfoUsers?: API.GetUserResumeQueryResultExperience[]; |
| | | }; |
| | | |
| | | const props = withDefaults(defineProps<Props>(), { |
| | | taskInfoUsers: () => [], |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | |
| | | .job-detail-content-tabs { |
| | | .job-detail-content-steps { |
| | | .nut-step-main { |
| | | margin-bottom: 40px; |
| | | } |
| | | |
| | | .nut-step:last-child { |
| | | .nut-step-main { |
| | | margin-bottom: 0; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | addStandardOrder = '/subpackages/sercice/addStandardOrder/addStandardOrder', |
| | | chooseSupplier = '/subpackages/sercice/chooseSupplier/chooseSupplier', |
| | | chooseEnterpriseEmployee = '/subpackages/sercice/chooseEnterpriseEmployee/chooseEnterpriseEmployee', |
| | | EnterpriseEmployeeDetail = '/subpackages/sercice/EnterpriseEmployeeDetail/EnterpriseEmployeeDetail', |
| | | supplierDetail = '/subpackages/sercice/supplierDetail/supplierDetail', |
| | | |
| | | extraPage = '/subpackages/extraPage/extraPage/extraPage', |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | export default definePageConfig({ |
| | | disableScroll: true, |
| | | }); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <PageLayoutWithBg class="enterpriseEmployeeDetail-page-wrapper" title="æå¡äººå详æ
"> |
| | | <InnerPage /> |
| | | </PageLayoutWithBg> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import InnerPage from './InnerPage.vue'; |
| | | |
| | | defineOptions({ |
| | | name: 'EnterpriseEmployeeDetail', |
| | | }); |
| | | </script> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch"> |
| | | <JobDetailContent |
| | | :avatar="userResumeInfo.avatar" |
| | | :name="userResumeInfo.name" |
| | | :age="userResumeInfo.age" |
| | | :isReal="userResumeInfo.isReal" |
| | | :gender="userResumeInfo.gender" |
| | | :personalIdentityContent="userResumeInfo.personalIdentityContent" |
| | | :educationalBackgroundContent="userResumeInfo.educationalBackgroundContent" |
| | | :taskCount="userResumeInfo.taskCount" |
| | | :contactPhoneNumber="userResumeInfo.contactPhoneNumber" |
| | | :identity="userResumeInfo.identity" |
| | | :isCollapse="isCollapse" |
| | | :userExpectJobs="userResumeInfo.userExpectJobs" |
| | | :freeTime="userResumeInfo.freeTime" |
| | | :jobSeekingStatus="userResumeInfo.jobSeekingStatus" |
| | | :userCredentials="userResumeInfo.userCredentials" |
| | | :workSeniority="userResumeInfo.workSeniority" |
| | | :workExperience="userResumeInfo.workExperience" |
| | | :photos="userResumeInfo.photos" |
| | | :height="userResumeInfo.height" |
| | | :weight="userResumeInfo.weight" |
| | | :shoeSize="userResumeInfo.shoeSize" |
| | | :videos="userResumeInfo.videos" |
| | | :taskInfoUsers="userResumeInfo.taskInfoUsers" |
| | | > |
| | | <template #footer> |
| | | <PageFooterAction |
| | | :icon="IconShare" |
| | | text="å享" |
| | | :isFlex="false" |
| | | openType="share" |
| | | ></PageFooterAction> |
| | | <!-- <PageFooterAction |
| | | :icon="userResumeInfo.isCollected ? IconAttentionActive : IconAttention" |
| | | text="æ¶è" |
| | | :isFlex="false" |
| | | @click="handleAttention" |
| | | ></PageFooterAction> --> |
| | | <PageFooterBtn type="primary" @click="handleContact">ç«å³èç³»</PageFooterBtn> |
| | | </template> |
| | | </JobDetailContent> |
| | | </LoadingLayout> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import Taro from '@tarojs/taro'; |
| | | import { useToggle } from 'senin-mini/hooks'; |
| | | import { Message } from '@12333/utils'; |
| | | import { useUserResume } from '@12333/hooks'; |
| | | import { useAccessLogin } from '@/hooks'; |
| | | import * as userResumeServices from '@12333/services/apiV2/userResume'; |
| | | import IconShare from '@/assets/flexJob/icon-share.png'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const router = Taro.useRouter(); |
| | | const enterpriseEmployeeId = router.params?.id ?? ''; |
| | | const userId = router.params?.userId ?? ''; |
| | | |
| | | const { isLoading, isError, userResumeInfo, refetch } = useUserResume({ |
| | | userId: userId, |
| | | }); |
| | | |
| | | const { isCollapse, toggle } = useToggle(); |
| | | |
| | | const handleContact = useAccessLogin(async () => { |
| | | try { |
| | | if (!isCollapse.value) { |
| | | await userResumeServices.contactUserResume({ id: userId }); |
| | | toggle(); |
| | | } else { |
| | | Taro.makePhoneCall({ |
| | | phoneNumber: userResumeInfo.value.contactPhoneNumber, |
| | | }); |
| | | } |
| | | } catch (error) {} |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | </style> |
| | |
| | | ></ChooseInputWithSuppliers> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="æ¯ä»éé:" |
| | | class="bole-form-item" |
| | | prop="payAccess" |
| | | label-width="90px" |
| | | required |
| | | > |
| | | <ChooseInputWithPicker |
| | | v-model="form.payAccess" |
| | | placeholder="è¯·éæ©æ¯ä»éé" |
| | | :value-enum="EnumUserBankCardAccessTextFormStandard" |
| | | /> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="夿³¨:" |
| | | class="bole-form-item alignTop" |
| | | prop="remark" |
| | |
| | | List, |
| | | ListItem, |
| | | ChooseInputWithDatePicker, |
| | | ChooseInputWithPicker, |
| | | } from '@12333/components'; |
| | | import Taro from '@tarojs/taro'; |
| | | import { RouterPath } from '@/constants'; |
| | |
| | | import * as standardOrderServices from '@12333/services/apiV2/standardOrder'; |
| | | import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; |
| | | import dayjs from 'dayjs'; |
| | | import { EnumUserBankCardAccess } from '@12333/constants'; |
| | | import { EnumUserBankCardAccess, EnumUserBankCardAccessTextFormStandard } from '@12333/constants'; |
| | | import { Message } from '@12333/utils'; |
| | | |
| | | defineOptions({ |
| | |
| | | enterpriseEmployeeId: '', |
| | | enterpriseEmployeeName: '', |
| | | remark: '', |
| | | payAccess: EnumUserBankCardAccess.WeChatPay, |
| | | }); |
| | | |
| | | const nowDate = dayjs().toDate(); |
| | |
| | | beginTime: [{ required: true, message: 'è¯·éæ©æå¡å¼å§æ¶é´' }], |
| | | endTime: [{ required: true, message: 'è¯·éæ©æå¡ç»ææ¶é´' }], |
| | | enterpriseEmployeeId: [{ required: true, message: 'è¯·éæ©æå¡æºæ' }], |
| | | payAccess: [{ required: true, message: 'è¯·éæ©æ¯ä»éé' }], |
| | | }); |
| | | |
| | | const { isLoading, isError, detail, refetch } = useStandardServiceDetail({ |
| | |
| | | :workExperience="item.workExperience" |
| | | > |
| | | <template #actions> |
| | | <nut-button type="primary" plain>æ¥ç详æ
</nut-button> |
| | | <nut-button type="primary" plain @click="goEnterpriseEmployeeDetail(item)" |
| | | >æ¥ç详æ
</nut-button |
| | | > |
| | | <nut-button type="primary" @click="handleChoose(item)">éæ©</nut-button> |
| | | </template> |
| | | </ChooseServerCard> |
| | |
| | | } as SelectEnterpriseEmployeeEvent); |
| | | goBack(2); |
| | | } |
| | | |
| | | function goEnterpriseEmployeeDetail(item: API.GetStandardServiceServersQueryResultItem) { |
| | | Taro.navigateTo({ |
| | | url: `${RouterPath.EnterpriseEmployeeDetail}?id=${item.id}&userId=${item.userId}`, |
| | | }); |
| | | } |
| | | </script> |
| | |
| | | :serviceCount="item.serviceCount" |
| | | > |
| | | <template #actions> |
| | | <nut-button type="primary" plain>æ¥ç详æ
</nut-button> |
| | | <nut-button type="primary" plain @click="goSupplierDetail(item)">æ¥ç详æ
</nut-button> |
| | | <nut-button type="primary" @click="goEnterpriseEmployee(item)">éæ©</nut-button> |
| | | </template> |
| | | </ChooseSupplierCard> |
| | |
| | | }, |
| | | }); |
| | | } |
| | | |
| | | function goSupplierDetail(item: API.GetStandardServiceSupplierEnterprisesQueryResultItem) { |
| | | Taro.navigateTo({ |
| | | url: `${RouterPath.supplierDetail}?id=${item.id}`, |
| | | }); |
| | | } |
| | | </script> |
| | |
| | | <template> |
| | | <PageLayoutWithBg class="addStandardOrder-page-wrapper" title="éæ©æå¡æºæ"> |
| | | <PageLayoutWithBg class="chooseSupplier-page-wrapper" title="éæ©æå¡æºæ"> |
| | | <InnerPage /> |
| | | </PageLayoutWithBg> |
| | | </template> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div></div> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import Taro from '@tarojs/taro'; |
| | | import CompanyDesc from '../components/CompanyDesc.vue'; |
| | | import CompanyTaskList from '../components/CompanyTaskList.vue'; |
| | | import CompanyInfo from '../components/CompanyInfo.vue'; |
| | | import { ProTabs, ProTabPane } from '@12333/components'; |
| | | import { useEnterpriseDetail } from '@12333/hooks'; |
| | | |
| | | defineOptions({ |
| | | name: 'InnerPage', |
| | | }); |
| | | |
| | | const router = Taro.useRouter(); |
| | | const enterpriseId = router.params?.id ?? ''; |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | </style> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | export default definePageConfig({ |
| | | disableScroll: true, |
| | | }); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <PageLayoutWithBg class="supplierDetail-page-wrapper" title="æå¡æºæè¯¦æ
"> |
| | | <InnerPage /> |
| | | </PageLayoutWithBg> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import InnerPage from './InnerPage.vue'; |
| | | |
| | | defineOptions({ |
| | | name: 'supplierDetail', |
| | | }); |
| | | </script> |
| | |
| | | export enum EnumEnterpriseWalletTransactionType { |
| | | /**å
å¼ */ |
| | | Recharge = 10, |
| | | /**æ¶å
¥ */ |
| | | Income = 11, |
| | | /**转账 */ |
| | | Transfer = 20, |
| | | } |
| | |
| | | import * as task from './task'; |
| | | import * as enterpriseWallet from './enterpriseWallet'; |
| | | import * as ocrUtils from './ocrUtils'; |
| | | import * as standardOrder from './standardOrder'; |
| | | import * as electronSign from './electronSign'; |
| | | import * as resource from './resource'; |
| | | import * as logRecords from './logRecords'; |
| | | import * as dictionary from './dictionary'; |
| | | import * as taskCheckReceive from './taskCheckReceive'; |
| | | import * as taskUser from './taskUser'; |
| | | import * as standardOrder from './standardOrder'; |
| | | import * as standardService from './standardService'; |
| | | import * as userResume from './userResume'; |
| | | import * as auth from './auth'; |
| | |
| | | task, |
| | | enterpriseWallet, |
| | | ocrUtils, |
| | | standardOrder, |
| | | electronSign, |
| | | resource, |
| | | logRecords, |
| | | dictionary, |
| | | taskCheckReceive, |
| | | taskUser, |
| | | standardOrder, |
| | | standardService, |
| | | userResume, |
| | | auth, |
| | |
| | | }); |
| | | } |
| | | |
| | | /** æ¥è¯¢æ å订åç»ç®è¯¦æ
GET /api/flexjob/standardOrder/getStandardOrderSettlement */ |
| | | export async function getStandardOrderSettlement( |
| | | // å å çæçParamç±»å (ébodyåæ°swaggeré»è®¤æ²¡æçæå¯¹è±¡) |
| | | params: API.APIgetStandardOrderSettlementParams, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<API.GetStandardOrderSettlementQueryResult>( |
| | | '/api/flexjob/standardOrder/getStandardOrderSettlement', |
| | | { |
| | | method: 'GET', |
| | | params: { |
| | | ...params, |
| | | }, |
| | | ...(options || {}), |
| | | } |
| | | ); |
| | | } |
| | | |
| | | /** æ¥è¯¢æ å订å详æ
GET /api/flexjob/standardOrder/getSureStandardOrder */ |
| | | export async function getSureStandardOrder( |
| | | // å å çæçParamç±»å (ébodyåæ°swaggeré»è®¤æ²¡æçæå¯¹è±¡) |
| | |
| | | scene?: EnumGetStandardOrdersQueryScene; |
| | | } |
| | | |
| | | interface APIgetStandardOrderSettlementParams { |
| | | /** 订åId */ |
| | | id?: string; |
| | | } |
| | | |
| | | interface APIgetStandardServiceParams { |
| | | /** Id */ |
| | | id?: string; |
| | |
| | | enum EnumEnterpriseWalletTransactionType { |
| | | /**å
å¼ */ |
| | | Recharge = 10, |
| | | /**æ¶å
¥ */ |
| | | Income = 11, |
| | | /**转账 */ |
| | | Transfer = 20, |
| | | } |
| | |
| | | timestamp?: number; |
| | | } |
| | | |
| | | interface FriendlyResultGetStandardOrderSettlementQueryResult { |
| | | /** è·è¸ªId */ |
| | | traceId?: string; |
| | | /** ç¶æç */ |
| | | code?: number; |
| | | /** é误ç */ |
| | | errorCode?: string; |
| | | data?: GetStandardOrderSettlementQueryResult; |
| | | /** æ§è¡æå */ |
| | | success?: boolean; |
| | | /** éè¯¯ä¿¡æ¯ */ |
| | | msg?: any; |
| | | /** éå æ°æ® */ |
| | | extras?: any; |
| | | /** æ¶é´æ³ */ |
| | | timestamp?: number; |
| | | } |
| | | |
| | | interface FriendlyResultGetStandardOrdersQueryResult { |
| | | /** è·è¸ªId */ |
| | | traceId?: string; |
| | |
| | | contactPhoneNumber?: string; |
| | | } |
| | | |
| | | interface GetStandardOrderSettlementQueryResult { |
| | | /** 订åId */ |
| | | id?: string; |
| | | /** 仿¬¾äººè´¦æ· */ |
| | | payerAccount?: string; |
| | | /** 仿¬¾äººåç§° */ |
| | | payerName?: string; |
| | | /** 仿¬¾äººå¼æ·è¡ */ |
| | | payerBank?: string; |
| | | /** 仿¬¾äººæ¯è¡ */ |
| | | payerBankBranch?: string; |
| | | /** æ¶æ¬¾äººå§å */ |
| | | receiveName?: string; |
| | | /** æ¶æ¬¾è´¦æ· */ |
| | | receiveAccount?: string; |
| | | /** æ¶æ¬¾äººå¼æ·è¡ */ |
| | | receiveBank?: string; |
| | | /** æ¶æ¬¾äººæ¯è¡ */ |
| | | receiveBankBranch?: string; |
| | | /** å¸ç§ */ |
| | | currency?: string; |
| | | /** å¸ç§ */ |
| | | currencyName?: string; |
| | | settlementStatus?: EnumStandardOrderSettlementStatus; |
| | | /** ç»ç®æ¶é´ */ |
| | | settlementTime?: string; |
| | | /** ç»ç®éé¢ */ |
| | | settlementAmount?: number; |
| | | /** çµåæ¶æ®ä¸è½½é¾æ¥ */ |
| | | ereceiptDownloadOssUrl?: string; |
| | | } |
| | | |
| | | interface GetStandardOrdersQuery { |
| | | scene?: EnumGetStandardOrdersQueryScene; |
| | | /** å
³é®åï¼è®¢åå·/æå¡åï¼ */ |
| | |
| | | partAEnterpriseOrderStatus?: EnumGetStandardOrdersQueryPartAEnterpriseOrderStatus; |
| | | supplierEnterpriseOrderStatus?: EnumGetStandardOrdersQuerySupplierEnterpriseOrderStatus; |
| | | settlementStatus?: EnumStandardOrderSettlementStatus; |
| | | taskCheckReceiveStatus?: EnumTaskCheckReceiveStatus; |
| | | pageModel?: PagedListQueryPageModel; |
| | | } |
| | | |
| | |
| | | id?: string; |
| | | /** 头å */ |
| | | avatar?: string; |
| | | /** ç¨æ·ID */ |
| | | userId?: string; |
| | | /** å§å */ |
| | | name?: string; |
| | | gender?: EnumUserGender; |