From 9e4d0196ba9570110cd4a10bc9693bc6ffa005ba Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期一, 29 十二月 2025 13:13:08 +0800
Subject: [PATCH] fix: 甲方小程序
---
apps/housekeepingMiniApp/src/subpackages/sercice/chooseSupplier/chooseSupplier.vue | 2
packages/services/apiV2/standardOrder.ts | 18 +
apps/housekeepingMiniApp/src/components/JobDetailContent/components/experienceView.vue | 61 +++++
apps/housekeepingMiniApp/src/subpackages/sercice/chooseSupplier/InnerPage.vue | 8
apps/housekeepingMiniApp/src/subpackages/sercice/EnterpriseEmployeeDetail/EnterpriseEmployeeDetail.config.ts | 3
apps/housekeepingMiniApp/src/components/JobDetailContent/components/CurriculumViewItem.vue | 55 ++++
apps/housekeepingMiniApp/src/subpackages/sercice/supplierDetail/supplierDetail.config.ts | 3
apps/housekeepingMiniApp/src/subpackages/sercice/EnterpriseEmployeeDetail/InnerPage.vue | 86 +++++++
apps/housekeepingMiniApp/src/subpackages/sercice/chooseEnterpriseEmployee/InnerPage.vue | 10
apps/housekeepingMiniApp/src/subpackages/sercice/supplierDetail/InnerPage.vue | 23 +
apps/housekeepingMiniApp/src/components/JobDetailContent/components/curriculumView.vue | 157 +++++++++++++
packages/services/apiV2/index.ts | 4
apps/housekeepingMiniApp/src/subpackages/sercice/addStandardOrder/InnerPage.vue | 18 +
apps/housekeepingMiniApp/src/subpackages/sercice/supplierDetail/supplierDetail.vue | 13 +
packages/services/apiV2/typings.d.ts | 60 +++++
packages/constants/apiEnum.ts | 2
apps/housekeepingMiniApp/src/components/JobDetailContent/JobDetailContent.vue | 148 ++++++++++++
apps/housekeepingMiniApp/src/app.config.ts | 2
apps/housekeepingMiniApp/src/constants/router.ts | 2
apps/housekeepingMiniApp/src/subpackages/sercice/EnterpriseEmployeeDetail/EnterpriseEmployeeDetail.vue | 13 +
20 files changed, 682 insertions(+), 6 deletions(-)
diff --git a/apps/housekeepingMiniApp/src/app.config.ts b/apps/housekeepingMiniApp/src/app.config.ts
index 8d628ee..208a520 100644
--- a/apps/housekeepingMiniApp/src/app.config.ts
+++ b/apps/housekeepingMiniApp/src/app.config.ts
@@ -96,6 +96,8 @@
'addStandardOrder/addStandardOrder',
'chooseSupplier/chooseSupplier',
'chooseEnterpriseEmployee/chooseEnterpriseEmployee',
+ 'EnterpriseEmployeeDetail/EnterpriseEmployeeDetail',
+ 'supplierDetail/supplierDetail',
],
},
{
diff --git a/apps/housekeepingMiniApp/src/components/JobDetailContent/JobDetailContent.vue b/apps/housekeepingMiniApp/src/components/JobDetailContent/JobDetailContent.vue
new file mode 100644
index 0000000..3a10cd7
--- /dev/null
+++ b/apps/housekeepingMiniApp/src/components/JobDetailContent/JobDetailContent.vue
@@ -0,0 +1,148 @@
+<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>
diff --git a/apps/housekeepingMiniApp/src/components/JobDetailContent/components/CurriculumViewItem.vue b/apps/housekeepingMiniApp/src/components/JobDetailContent/components/CurriculumViewItem.vue
new file mode 100644
index 0000000..4da3a13
--- /dev/null
+++ b/apps/housekeepingMiniApp/src/components/JobDetailContent/components/CurriculumViewItem.vue
@@ -0,0 +1,55 @@
+<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>
diff --git a/apps/housekeepingMiniApp/src/components/JobDetailContent/components/curriculumView.vue b/apps/housekeepingMiniApp/src/components/JobDetailContent/components/curriculumView.vue
new file mode 100644
index 0000000..e60bab7
--- /dev/null
+++ b/apps/housekeepingMiniApp/src/components/JobDetailContent/components/curriculumView.vue
@@ -0,0 +1,157 @@
+<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>
diff --git a/apps/housekeepingMiniApp/src/components/JobDetailContent/components/experienceView.vue b/apps/housekeepingMiniApp/src/components/JobDetailContent/components/experienceView.vue
new file mode 100644
index 0000000..970c589
--- /dev/null
+++ b/apps/housekeepingMiniApp/src/components/JobDetailContent/components/experienceView.vue
@@ -0,0 +1,61 @@
+<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>
diff --git a/apps/housekeepingMiniApp/src/constants/router.ts b/apps/housekeepingMiniApp/src/constants/router.ts
index cf7e7fc..2149e00 100644
--- a/apps/housekeepingMiniApp/src/constants/router.ts
+++ b/apps/housekeepingMiniApp/src/constants/router.ts
@@ -37,6 +37,8 @@
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',
}
diff --git a/apps/housekeepingMiniApp/src/subpackages/sercice/EnterpriseEmployeeDetail/EnterpriseEmployeeDetail.config.ts b/apps/housekeepingMiniApp/src/subpackages/sercice/EnterpriseEmployeeDetail/EnterpriseEmployeeDetail.config.ts
new file mode 100644
index 0000000..305fdb1
--- /dev/null
+++ b/apps/housekeepingMiniApp/src/subpackages/sercice/EnterpriseEmployeeDetail/EnterpriseEmployeeDetail.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+ disableScroll: true,
+});
diff --git a/apps/housekeepingMiniApp/src/subpackages/sercice/EnterpriseEmployeeDetail/EnterpriseEmployeeDetail.vue b/apps/housekeepingMiniApp/src/subpackages/sercice/EnterpriseEmployeeDetail/EnterpriseEmployeeDetail.vue
new file mode 100644
index 0000000..2fd34ca
--- /dev/null
+++ b/apps/housekeepingMiniApp/src/subpackages/sercice/EnterpriseEmployeeDetail/EnterpriseEmployeeDetail.vue
@@ -0,0 +1,13 @@
+<template>
+ <PageLayoutWithBg class="enterpriseEmployeeDetail-page-wrapper" title="鏈嶅姟浜哄憳璇︽儏">
+ <InnerPage />
+ </PageLayoutWithBg>
+</template>
+
+<script setup lang="ts">
+import InnerPage from './InnerPage.vue';
+
+defineOptions({
+ name: 'EnterpriseEmployeeDetail',
+});
+</script>
diff --git a/apps/housekeepingMiniApp/src/subpackages/sercice/EnterpriseEmployeeDetail/InnerPage.vue b/apps/housekeepingMiniApp/src/subpackages/sercice/EnterpriseEmployeeDetail/InnerPage.vue
new file mode 100644
index 0000000..c2278df
--- /dev/null
+++ b/apps/housekeepingMiniApp/src/subpackages/sercice/EnterpriseEmployeeDetail/InnerPage.vue
@@ -0,0 +1,86 @@
+<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>
diff --git a/apps/housekeepingMiniApp/src/subpackages/sercice/addStandardOrder/InnerPage.vue b/apps/housekeepingMiniApp/src/subpackages/sercice/addStandardOrder/InnerPage.vue
index 5732f29..96aa0a7 100644
--- a/apps/housekeepingMiniApp/src/subpackages/sercice/addStandardOrder/InnerPage.vue
+++ b/apps/housekeepingMiniApp/src/subpackages/sercice/addStandardOrder/InnerPage.vue
@@ -75,6 +75,19 @@
></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"
@@ -118,6 +131,7 @@
List,
ListItem,
ChooseInputWithDatePicker,
+ ChooseInputWithPicker,
} from '@12333/components';
import Taro from '@tarojs/taro';
import { RouterPath } from '@/constants';
@@ -125,7 +139,7 @@
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({
@@ -147,6 +161,7 @@
enterpriseEmployeeId: '',
enterpriseEmployeeName: '',
remark: '',
+ payAccess: EnumUserBankCardAccess.WeChatPay,
});
const nowDate = dayjs().toDate();
@@ -169,6 +184,7 @@
beginTime: [{ required: true, message: '璇烽�夋嫨鏈嶅姟寮�濮嬫椂闂�' }],
endTime: [{ required: true, message: '璇烽�夋嫨鏈嶅姟缁撴潫鏃堕棿' }],
enterpriseEmployeeId: [{ required: true, message: '璇烽�夋嫨鏈嶅姟鏈烘瀯' }],
+ payAccess: [{ required: true, message: '璇烽�夋嫨鏀粯閫氶亾' }],
});
const { isLoading, isError, detail, refetch } = useStandardServiceDetail({
diff --git a/apps/housekeepingMiniApp/src/subpackages/sercice/chooseEnterpriseEmployee/InnerPage.vue b/apps/housekeepingMiniApp/src/subpackages/sercice/chooseEnterpriseEmployee/InnerPage.vue
index 3967215..8faa252 100644
--- a/apps/housekeepingMiniApp/src/subpackages/sercice/chooseEnterpriseEmployee/InnerPage.vue
+++ b/apps/housekeepingMiniApp/src/subpackages/sercice/chooseEnterpriseEmployee/InnerPage.vue
@@ -16,7 +16,9 @@
: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>
@@ -70,4 +72,10 @@
} as SelectEnterpriseEmployeeEvent);
goBack(2);
}
+
+function goEnterpriseEmployeeDetail(item: API.GetStandardServiceServersQueryResultItem) {
+ Taro.navigateTo({
+ url: `${RouterPath.EnterpriseEmployeeDetail}?id=${item.id}&userId=${item.userId}`,
+ });
+}
</script>
diff --git a/apps/housekeepingMiniApp/src/subpackages/sercice/chooseSupplier/InnerPage.vue b/apps/housekeepingMiniApp/src/subpackages/sercice/chooseSupplier/InnerPage.vue
index 48fd7b5..2967878 100644
--- a/apps/housekeepingMiniApp/src/subpackages/sercice/chooseSupplier/InnerPage.vue
+++ b/apps/housekeepingMiniApp/src/subpackages/sercice/chooseSupplier/InnerPage.vue
@@ -12,7 +12,7 @@
: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>
@@ -69,4 +69,10 @@
},
});
}
+
+function goSupplierDetail(item: API.GetStandardServiceSupplierEnterprisesQueryResultItem) {
+ Taro.navigateTo({
+ url: `${RouterPath.supplierDetail}?id=${item.id}`,
+ });
+}
</script>
diff --git a/apps/housekeepingMiniApp/src/subpackages/sercice/chooseSupplier/chooseSupplier.vue b/apps/housekeepingMiniApp/src/subpackages/sercice/chooseSupplier/chooseSupplier.vue
index d77734f..2b68d48 100644
--- a/apps/housekeepingMiniApp/src/subpackages/sercice/chooseSupplier/chooseSupplier.vue
+++ b/apps/housekeepingMiniApp/src/subpackages/sercice/chooseSupplier/chooseSupplier.vue
@@ -1,5 +1,5 @@
<template>
- <PageLayoutWithBg class="addStandardOrder-page-wrapper" title="閫夋嫨鏈嶅姟鏈烘瀯">
+ <PageLayoutWithBg class="chooseSupplier-page-wrapper" title="閫夋嫨鏈嶅姟鏈烘瀯">
<InnerPage />
</PageLayoutWithBg>
</template>
diff --git a/apps/housekeepingMiniApp/src/subpackages/sercice/supplierDetail/InnerPage.vue b/apps/housekeepingMiniApp/src/subpackages/sercice/supplierDetail/InnerPage.vue
new file mode 100644
index 0000000..6877bde
--- /dev/null
+++ b/apps/housekeepingMiniApp/src/subpackages/sercice/supplierDetail/InnerPage.vue
@@ -0,0 +1,23 @@
+<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>
diff --git a/apps/housekeepingMiniApp/src/subpackages/sercice/supplierDetail/supplierDetail.config.ts b/apps/housekeepingMiniApp/src/subpackages/sercice/supplierDetail/supplierDetail.config.ts
new file mode 100644
index 0000000..305fdb1
--- /dev/null
+++ b/apps/housekeepingMiniApp/src/subpackages/sercice/supplierDetail/supplierDetail.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+ disableScroll: true,
+});
diff --git a/apps/housekeepingMiniApp/src/subpackages/sercice/supplierDetail/supplierDetail.vue b/apps/housekeepingMiniApp/src/subpackages/sercice/supplierDetail/supplierDetail.vue
new file mode 100644
index 0000000..177f728
--- /dev/null
+++ b/apps/housekeepingMiniApp/src/subpackages/sercice/supplierDetail/supplierDetail.vue
@@ -0,0 +1,13 @@
+<template>
+ <PageLayoutWithBg class="supplierDetail-page-wrapper" title="鏈嶅姟鏈烘瀯璇︽儏">
+ <InnerPage />
+ </PageLayoutWithBg>
+</template>
+
+<script setup lang="ts">
+import InnerPage from './InnerPage.vue';
+
+defineOptions({
+ name: 'supplierDetail',
+});
+</script>
diff --git a/packages/constants/apiEnum.ts b/packages/constants/apiEnum.ts
index d81c52a..69697f3 100644
--- a/packages/constants/apiEnum.ts
+++ b/packages/constants/apiEnum.ts
@@ -265,6 +265,8 @@
export enum EnumEnterpriseWalletTransactionType {
/**鍏呭�� */
Recharge = 10,
+ /**鏀跺叆 */
+ Income = 11,
/**杞处 */
Transfer = 20,
}
diff --git a/packages/services/apiV2/index.ts b/packages/services/apiV2/index.ts
index 10b88c6..aa4cd2f 100644
--- a/packages/services/apiV2/index.ts
+++ b/packages/services/apiV2/index.ts
@@ -9,13 +9,13 @@
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';
@@ -40,13 +40,13 @@
task,
enterpriseWallet,
ocrUtils,
+ standardOrder,
electronSign,
resource,
logRecords,
dictionary,
taskCheckReceive,
taskUser,
- standardOrder,
standardService,
userResume,
auth,
diff --git a/packages/services/apiV2/standardOrder.ts b/packages/services/apiV2/standardOrder.ts
index 22de738..a38f968 100644
--- a/packages/services/apiV2/standardOrder.ts
+++ b/packages/services/apiV2/standardOrder.ts
@@ -98,6 +98,24 @@
});
}
+/** 鏌ヨ鏍囧噯璁㈠崟缁撶畻璇︽儏 GET /api/flexjob/standardOrder/getStandardOrderSettlement */
+export async function getStandardOrderSettlement(
+ // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟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(
// 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
diff --git a/packages/services/apiV2/typings.d.ts b/packages/services/apiV2/typings.d.ts
index a623f2f..117a99a 100644
--- a/packages/services/apiV2/typings.d.ts
+++ b/packages/services/apiV2/typings.d.ts
@@ -408,6 +408,11 @@
scene?: EnumGetStandardOrdersQueryScene;
}
+ interface APIgetStandardOrderSettlementParams {
+ /** 璁㈠崟Id */
+ id?: string;
+ }
+
interface APIgetStandardServiceParams {
/** Id */
id?: string;
@@ -1222,6 +1227,8 @@
enum EnumEnterpriseWalletTransactionType {
/**鍏呭�� */
Recharge = 10,
+ /**鏀跺叆 */
+ Income = 11,
/**杞处 */
Transfer = 20,
}
@@ -3447,6 +3454,24 @@
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;
@@ -8228,6 +8253,38 @@
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;
/** 鍏抽敭瀛楋紙璁㈠崟鍙�/鏈嶅姟鍚嶏級 */
@@ -8245,6 +8302,7 @@
partAEnterpriseOrderStatus?: EnumGetStandardOrdersQueryPartAEnterpriseOrderStatus;
supplierEnterpriseOrderStatus?: EnumGetStandardOrdersQuerySupplierEnterpriseOrderStatus;
settlementStatus?: EnumStandardOrderSettlementStatus;
+ taskCheckReceiveStatus?: EnumTaskCheckReceiveStatus;
pageModel?: PagedListQueryPageModel;
}
@@ -8418,6 +8476,8 @@
id?: string;
/** 澶村儚 */
avatar?: string;
+ /** 鐢ㄦ埛ID */
+ userId?: string;
/** 濮撳悕 */
name?: string;
gender?: EnumUserGender;
--
Gitblit v1.10.0