|  |  |  | 
|---|
|  |  |  | <template #content> | 
|---|
|  |  |  | <MineAgreementSignDetailItem | 
|---|
|  |  |  | label="协议编号" | 
|---|
|  |  |  | detail="QY1052511040446686047" | 
|---|
|  |  |  | :detail="detail?.contractCode" | 
|---|
|  |  |  | ></MineAgreementSignDetailItem> | 
|---|
|  |  |  | <MineAgreementSignDetailItem | 
|---|
|  |  |  | label="协议状态" | 
|---|
|  |  |  | detail="生效中/已终止" | 
|---|
|  |  |  | ></MineAgreementSignDetailItem> | 
|---|
|  |  |  | <MineAgreementSignDetailItem | 
|---|
|  |  |  | label="起始时间" | 
|---|
|  |  |  | detail="2024.05.20" | 
|---|
|  |  |  | ></MineAgreementSignDetailItem> | 
|---|
|  |  |  | <MineAgreementSignDetailItem | 
|---|
|  |  |  | label="终止时间" | 
|---|
|  |  |  | detail="2025.05.19" | 
|---|
|  |  |  | ></MineAgreementSignDetailItem> | 
|---|
|  |  |  | <MineAgreementSignDetailItem | 
|---|
|  |  |  | label="协议类型" | 
|---|
|  |  |  | detail="劳动合同" | 
|---|
|  |  |  | :detail="EnumTaskUserSignContractStatusSignText[detail?.userSignContractStatus]" | 
|---|
|  |  |  | ></MineAgreementSignDetailItem> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </MineAgreementSignDetailCard> | 
|---|
|  |  |  | 
|---|
|  |  |  | <template #content> | 
|---|
|  |  |  | <MineAgreementSignDetailItem | 
|---|
|  |  |  | label="员工姓名" | 
|---|
|  |  |  | detail="阳阳" | 
|---|
|  |  |  | :detail="detail?.name" | 
|---|
|  |  |  | ></MineAgreementSignDetailItem> | 
|---|
|  |  |  | <MineAgreementSignDetailItem | 
|---|
|  |  |  | label="证件类型" | 
|---|
|  |  |  | detail="居民身份证" | 
|---|
|  |  |  | :detail="detail?.identityType" | 
|---|
|  |  |  | ></MineAgreementSignDetailItem> | 
|---|
|  |  |  | <MineAgreementSignDetailItem | 
|---|
|  |  |  | label="证件号码" | 
|---|
|  |  |  | detail="622429199105261913" | 
|---|
|  |  |  | :detail="detail?.identity" | 
|---|
|  |  |  | ></MineAgreementSignDetailItem> | 
|---|
|  |  |  | <MineAgreementSignDetailItem label="岗位" detail="保洁"></MineAgreementSignDetailItem> | 
|---|
|  |  |  | <MineAgreementSignDetailItem | 
|---|
|  |  |  | label="签约时间" | 
|---|
|  |  |  | detail="2024.05.20" | 
|---|
|  |  |  | :detail="format(detail?.userSignContractTime, 'YYYY-MM-DD')" | 
|---|
|  |  |  | ></MineAgreementSignDetailItem> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </MineAgreementSignDetailCard> | 
|---|
|  |  |  | 
|---|
|  |  |  | <template #content> | 
|---|
|  |  |  | <MineAgreementSignDetailItem | 
|---|
|  |  |  | label="主体类型" | 
|---|
|  |  |  | detail="公司" | 
|---|
|  |  |  | :detail="detail?.enterpriseType" | 
|---|
|  |  |  | ></MineAgreementSignDetailItem> | 
|---|
|  |  |  | <MineAgreementSignDetailItem | 
|---|
|  |  |  | label="签约主体" | 
|---|
|  |  |  | detail="宁波人力无忧人力资源" | 
|---|
|  |  |  | :detail="detail?.enterpriseName" | 
|---|
|  |  |  | ></MineAgreementSignDetailItem> | 
|---|
|  |  |  | <MineAgreementSignDetailItem | 
|---|
|  |  |  | label="签约时间" | 
|---|
|  |  |  | detail="2024.05.20" | 
|---|
|  |  |  | :detail="format(detail?.enterpriseSignContractTime, 'YYYY-MM-DD')" | 
|---|
|  |  |  | ></MineAgreementSignDetailItem> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </MineAgreementSignDetailCard> | 
|---|
|  |  |  | 
|---|
|  |  |  | <template #content> | 
|---|
|  |  |  | <MineAgreementSignDetailItem label="协议内容"> | 
|---|
|  |  |  | <template #detail> | 
|---|
|  |  |  | <div class="detail-card-btn">查看协议</div> | 
|---|
|  |  |  | <div class="detail-card-btn" @click="checkAgreement">查看协议</div> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </MineAgreementSignDetailItem> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </MineAgreementSignDetailCard> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </ContentScrollView> | 
|---|
|  |  |  | <PageFooter> | 
|---|
|  |  |  | <PageFooter v-if="detail?.userSignContractStatus === EnumTaskUserSignContractStatus.Wait"> | 
|---|
|  |  |  | <PageFooterBtn type="primary" @click="goToSign">去签约</PageFooterBtn> | 
|---|
|  |  |  | </PageFooter> | 
|---|
|  |  |  | </LoadingLayout> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script setup lang="ts"> | 
|---|
|  |  |  | import { useUserStore } from '@/stores/modules/user'; | 
|---|
|  |  |  | import { useQuery } from '@tanstack/vue-query'; | 
|---|
|  |  |  | import MineAgreementSignDetailCard from './MineAgreementSignDetailCard.vue'; | 
|---|
|  |  |  | import MineAgreementSignDetailItem from './MineAgreementSignDetailItem.vue'; | 
|---|
|  |  |  | import * as enterpriseEmployeeServices from '@12333/services/apiV2/enterpriseEmployee'; | 
|---|
|  |  |  | import { | 
|---|
|  |  |  | EnumElectronSignAccess, | 
|---|
|  |  |  | EnumTaskUserSignContractStatus, | 
|---|
|  |  |  | EnumTaskUserSignContractStatusSignText, | 
|---|
|  |  |  | } from '@12333/constants'; | 
|---|
|  |  |  | import { format, hiddenPhone, Message, setOSSLink, openDocument } from '@12333/utils'; | 
|---|
|  |  |  | import Taro from '@tarojs/taro'; | 
|---|
|  |  |  | import _ from 'lodash'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | defineOptions({ | 
|---|
|  |  |  | name: 'InnerPage', | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const queryState = reactive({}); | 
|---|
|  |  |  | const { userDetail } = useUser(); | 
|---|
|  |  |  | const router = Taro.useRouter(); | 
|---|
|  |  |  | const options = Taro.getLaunchOptionsSync(); | 
|---|
|  |  |  | //灵工Id | 
|---|
|  |  |  | const id = router.params?.id; | 
|---|
|  |  |  | const code = router.params?.code || options?.query?.scene; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const userStore = useUserStore(); | 
|---|
|  |  |  | const { | 
|---|
|  |  |  | isLoading, | 
|---|
|  |  |  | isError, | 
|---|
|  |  |  | data: detail, | 
|---|
|  |  |  | refetch, | 
|---|
|  |  |  | } = useQuery({ | 
|---|
|  |  |  | queryKey: ['enterpriseEmployeeServices/getPersonalUserElectronSign', id, code], | 
|---|
|  |  |  | queryFn: async () => { | 
|---|
|  |  |  | return await enterpriseEmployeeServices.getPersonalUserElectronSign( | 
|---|
|  |  |  | { id: id, code: code }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | showLoading: false, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | placeholderData: () => ({} as API.GetPersonalUserElectronSignQueryResult), | 
|---|
|  |  |  | onSuccess(data) { | 
|---|
|  |  |  | // if (data.isExistTradeChatRecord) setTrue(); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const goToSign = useAccessReal(() => {}); | 
|---|
|  |  |  | function checkAgreement() { | 
|---|
|  |  |  | if (detail?.value?.userSignContractStatus === EnumTaskUserSignContractStatus.Wait) { | 
|---|
|  |  |  | goToSign(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if ( | 
|---|
|  |  |  | detail?.value?.userSignContractStatus === EnumTaskUserSignContractStatus.Stop || | 
|---|
|  |  |  | detail?.value?.userSignContractStatus === EnumTaskUserSignContractStatus.Pass | 
|---|
|  |  |  | ) { | 
|---|
|  |  |  | if (!detail?.value?.contractUrl) { | 
|---|
|  |  |  | Message.warning('协议无法查看,请稍后再试'); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | openDocument(setOSSLink(detail?.value?.contractUrl)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const goToSign = _.debounce( | 
|---|
|  |  |  | useAccessReal(async () => { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | let params: API.PersonalUserElectronSignCommand = { | 
|---|
|  |  |  | id: detail.value?.id, | 
|---|
|  |  |  | returnUrl: `${RouterPath.mineAgreementSignDetail}?id=${id}`, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | let res = await enterpriseEmployeeServices.personalUserElectronSign(params); | 
|---|
|  |  |  | if (res) { | 
|---|
|  |  |  | if (detail.value?.contractTemplateAccess === EnumElectronSignAccess.AlipaySign) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | await Message.confirm({ | 
|---|
|  |  |  | message: `签约短信已发送至您${hiddenPhone( | 
|---|
|  |  |  | detail.value?.contactPhoneNumber | 
|---|
|  |  |  | )}的手机,请及时查看并签约`, | 
|---|
|  |  |  | cancelText: '未收到短信', | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } catch (error) { | 
|---|
|  |  |  | goToSign(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | const encodedUrl = encodeURIComponent(res.signContractLongUrl); | 
|---|
|  |  |  | Taro.redirectTo({ url: `${RouterPath.extraPage}?url=${encodedUrl}` }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (error) {} | 
|---|
|  |  |  | }), | 
|---|
|  |  |  | 1000, | 
|---|
|  |  |  | { leading: true, trailing: true } | 
|---|
|  |  |  | ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Taro.useDidShow(() => { | 
|---|
|  |  |  | refetch(); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <style lang="scss"> | 
|---|