From 3c7cbba6d64ca8bf7b1307023072b505414f7d5d Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期二, 05 八月 2025 13:42:14 +0800
Subject: [PATCH] feat: 名片
---
apps/bMiniApp/src/subpackages/businessCard/businessCard/businessCard.vue | 17 +
apps/bMiniApp/src/subpackages/businessCard/businessCard/InnerPage.vue | 39 ++++
apps/bMiniApp/src/assets/businessCard/icon-company.png | 0
apps/bMiniApp/src/constants/router.ts | 3
apps/bMiniApp/src/subpackages/businessCard/components/BusinessCardDetailItem.vue | 42 ++++
apps/bMiniApp/src/assets/businessCard/icon-position.png | 0
apps/bMiniApp/src/subpackages/businessCard/businessCardEdit/businessCardEdit.vue | 17 +
apps/bMiniApp/src/assets/businessCard/icon-wechat.png | 0
apps/bMiniApp/project.private.config.json | 7
apps/bMiniApp/src/subpackages/businessCard/components/BusinessCardView.vue | 60 ++++++
apps/bMiniApp/src/app.config.ts | 4
apps/bMiniApp/src/subpackages/businessCard/businessCardEdit/InnerPage.vue | 137 +++++++++++++++
apps/bMiniApp/src/subpackages/businessCard/components/BusinessCardHolderView.vue | 65 +++++++
apps/bMiniApp/src/subpackages/businessCard/businessCard/businessCard.config.ts | 3
apps/bMiniApp/src/pages/mine/index.vue | 6
apps/bMiniApp/src/assets/businessCard/icon-address.png | 0
apps/bMiniApp/src/subpackages/businessCard/businessCardEdit/businessCardEdit.config.ts | 3
apps/bMiniApp/src/assets/businessCard/icon-email.png | 0
apps/bMiniApp/src/subpackages/businessCard/components/BusinessCardDetailInfoView.vue | 82 +++++++++
19 files changed, 484 insertions(+), 1 deletions(-)
diff --git a/apps/bMiniApp/project.private.config.json b/apps/bMiniApp/project.private.config.json
index 05123c7..34009f7 100644
--- a/apps/bMiniApp/project.private.config.json
+++ b/apps/bMiniApp/project.private.config.json
@@ -77,6 +77,13 @@
"query": "",
"launchMode": "default",
"scene": null
+ },
+ {
+ "name": "",
+ "pathName": "subpackages/businessCard/businessCard/businessCard",
+ "query": "",
+ "launchMode": "default",
+ "scene": null
}
]
}
diff --git a/apps/bMiniApp/src/app.config.ts b/apps/bMiniApp/src/app.config.ts
index 65805de..34f147c 100644
--- a/apps/bMiniApp/src/app.config.ts
+++ b/apps/bMiniApp/src/app.config.ts
@@ -75,6 +75,10 @@
],
},
{
+ root: 'subpackages/businessCard',
+ pages: ['businessCard/businessCard', 'businessCardEdit/businessCardEdit'],
+ },
+ {
root: 'subpackages/task',
pages: [
'publishTask/publishTask',
diff --git a/apps/bMiniApp/src/assets/businessCard/icon-address.png b/apps/bMiniApp/src/assets/businessCard/icon-address.png
new file mode 100644
index 0000000..a79999f
--- /dev/null
+++ b/apps/bMiniApp/src/assets/businessCard/icon-address.png
Binary files differ
diff --git a/apps/bMiniApp/src/assets/businessCard/icon-company.png b/apps/bMiniApp/src/assets/businessCard/icon-company.png
new file mode 100644
index 0000000..d584ad6
--- /dev/null
+++ b/apps/bMiniApp/src/assets/businessCard/icon-company.png
Binary files differ
diff --git a/apps/bMiniApp/src/assets/businessCard/icon-email.png b/apps/bMiniApp/src/assets/businessCard/icon-email.png
new file mode 100644
index 0000000..5c19060
--- /dev/null
+++ b/apps/bMiniApp/src/assets/businessCard/icon-email.png
Binary files differ
diff --git a/apps/bMiniApp/src/assets/businessCard/icon-position.png b/apps/bMiniApp/src/assets/businessCard/icon-position.png
new file mode 100644
index 0000000..2232e99
--- /dev/null
+++ b/apps/bMiniApp/src/assets/businessCard/icon-position.png
Binary files differ
diff --git a/apps/bMiniApp/src/assets/businessCard/icon-wechat.png b/apps/bMiniApp/src/assets/businessCard/icon-wechat.png
new file mode 100644
index 0000000..eaaa4a0
--- /dev/null
+++ b/apps/bMiniApp/src/assets/businessCard/icon-wechat.png
Binary files differ
diff --git a/apps/bMiniApp/src/constants/router.ts b/apps/bMiniApp/src/constants/router.ts
index 51db33e..489c816 100644
--- a/apps/bMiniApp/src/constants/router.ts
+++ b/apps/bMiniApp/src/constants/router.ts
@@ -33,6 +33,9 @@
mineFavorites = '/subpackages/mine/mineFavorites/mineFavorites',
mineContactRecord = '/subpackages/mine/mineContactRecord/mineContactRecord',
+ businessCard = '/subpackages/businessCard/businessCard/businessCard',
+ businessCardEdit = '/subpackages/businessCard/businessCardEdit/businessCardEdit',
+
publishTask = '/subpackages/task/publishTask/publishTask',
taskCheck = '/subpackages/task/taskCheck/taskCheck',
taskCheckDetail = '/subpackages/task/taskCheckDetail/taskCheckDetail',
diff --git a/apps/bMiniApp/src/pages/mine/index.vue b/apps/bMiniApp/src/pages/mine/index.vue
index 3dada20..0f60b4c 100644
--- a/apps/bMiniApp/src/pages/mine/index.vue
+++ b/apps/bMiniApp/src/pages/mine/index.vue
@@ -43,7 +43,7 @@
</div>
</template>
<div class="mine-business-card">
- <div class="mine-business-card-item">
+ <div class="mine-business-card-item" @click="goBusinessCard">
<img class="mine-business-card-item-icon" :src="IconBusinessCard" alt="" />
<div class="mine-business-card-item-text">鎴戠殑鐢靛瓙鍚嶇墖</div>
</div>
@@ -152,6 +152,10 @@
goPage(RouterPath.mineContactRecord);
}
+function goBusinessCard() {
+ goPage(RouterPath.businessCard);
+}
+
async function handleLoginout() {
try {
await Message.confirm({
diff --git a/apps/bMiniApp/src/subpackages/businessCard/businessCard/InnerPage.vue b/apps/bMiniApp/src/subpackages/businessCard/businessCard/InnerPage.vue
new file mode 100644
index 0000000..752d047
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/businessCard/businessCard/InnerPage.vue
@@ -0,0 +1,39 @@
+<template>
+ <ProTabs
+ v-model="businessCardType"
+ name="home-tab"
+ class="home-tabs"
+ isTransparent
+ title-gutter="12"
+ title-scroll
+ >
+ <ProTabPane :title="`鎴戠殑鍚嶇墖`" pane-key="1">
+ <BusinessCardView></BusinessCardView>
+ </ProTabPane>
+ <ProTabPane :title="`鎴戠殑鍚嶇墖澶筦" pane-key="2">
+ <BusinessCardHolderView></BusinessCardHolderView>
+ </ProTabPane>
+ </ProTabs>
+</template>
+
+<script setup lang="ts">
+import { ProTabs, ProTabPane } from '@12333/components';
+import BusinessCardView from '../components/BusinessCardView.vue';
+import BusinessCardHolderView from '../components/BusinessCardHolderView.vue';
+
+defineOptions({
+ name: 'InnerPage',
+});
+
+const businessCardType = ref('1');
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+
+.businessCard-page-wrapper {
+ .nut-tab-pane {
+ background-color: transparent;
+ }
+}
+</style>
diff --git a/apps/bMiniApp/src/subpackages/businessCard/businessCard/businessCard.config.ts b/apps/bMiniApp/src/subpackages/businessCard/businessCard/businessCard.config.ts
new file mode 100644
index 0000000..305fdb1
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/businessCard/businessCard/businessCard.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+ disableScroll: true,
+});
diff --git a/apps/bMiniApp/src/subpackages/businessCard/businessCard/businessCard.vue b/apps/bMiniApp/src/subpackages/businessCard/businessCard/businessCard.vue
new file mode 100644
index 0000000..e435389
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/businessCard/businessCard/businessCard.vue
@@ -0,0 +1,17 @@
+<template>
+ <PageLayoutWithBg class="businessCard-page-wrapper" :title="'鐢靛瓙鍚嶇墖'">
+ <InnerPage></InnerPage>
+ </PageLayoutWithBg>
+</template>
+
+<script setup lang="ts">
+import InnerPage from './InnerPage.vue';
+
+defineOptions({
+ name: 'businessCard',
+});
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+</style>
diff --git a/apps/bMiniApp/src/subpackages/businessCard/businessCardEdit/InnerPage.vue b/apps/bMiniApp/src/subpackages/businessCard/businessCardEdit/InnerPage.vue
new file mode 100644
index 0000000..d120841
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/businessCard/businessCardEdit/InnerPage.vue
@@ -0,0 +1,137 @@
+<template>
+ <ContentScrollView :paddingH="false">
+ <nut-form :model-value="form" ref="formRef" :rules="rules">
+ <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="form.name" placeholder="璇疯緭鍏ユ偍鐨勫鍚�"> </nut-input>
+ </nut-form-item>
+ <nut-form-item label="寰俊鍙�:" class="bole-form-item" prop="name">
+ <nut-input v-model="form.name" placeholder="璇疯緭鍏ユ偍鐨勫井淇″彿"> </nut-input>
+ </nut-form-item>
+ <nut-form-item label="鑱屼綅:" class="bole-form-item" prop="name">
+ <nut-input v-model="form.name" placeholder="璇疯緭鍏ユ偍鐨勮亴浣�"> </nut-input>
+ </nut-form-item>
+ <nut-form-item label="閭:" class="bole-form-item" prop="name">
+ <nut-input v-model="form.name" placeholder="璇疯緭鍏ユ偍鐨勯偖绠�"> </nut-input>
+ </nut-form-item>
+ <nut-form-item label="鍏徃鍚�:" class="bole-form-item" prop="name">
+ <nut-input v-model="form.name" placeholder="璇疯緭鍏ユ偍鐨勫叕鍙稿悕"> </nut-input>
+ </nut-form-item>
+ <nut-form-item label="鍏徃鎵�鍦ㄥ湴" class="bole-form-item" prop="areaList" required>
+ <ChooseInputWithAreaPicker
+ :columns="areaTreeList"
+ v-model="form.areaList"
+ placeholder="璇烽�夋嫨鎮ㄥ叕鍙哥殑鎵�鍦ㄥ湴"
+ ></ChooseInputWithAreaPicker>
+ </nut-form-item>
+ <nut-form-item label="鍏徃绠�浠�:" class="bole-form-item alignTop" prop="name">
+ <nut-textarea
+ placeholder="璇疯緭鍏ュ叕鍙哥畝浠�"
+ placeholderClass="bole-input-text-placeholder"
+ autoSize
+ class="bole-input-textarea"
+ v-model="form.name"
+ :max-length="500"
+ show-word-limit
+ >
+ </nut-textarea>
+ </nut-form-item>
+ </nut-form>
+ </ContentScrollView>
+ <PageFooter>
+ <PageFooterBtn type="primary" plain @click="handleCancel">鍙栨秷</PageFooterBtn>
+ <PageFooterBtn type="primary" @click="handleConfirm">纭</PageFooterBtn>
+ </PageFooter>
+</template>
+
+<script setup lang="ts">
+import { useUser } from '@/hooks';
+import { ChooseInputWithAreaPicker } from '@12333/components';
+import { FormValidator, Message } from '@12333/utils';
+import * as flexWorkerServices from '@12333/services/api/FlexWorker';
+import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types';
+import Taro from '@tarojs/taro';
+import { goBack } from '@/utils';
+import { useAllAreaList } from '@12333/hooks';
+import { useQuery } from '@tanstack/vue-query';
+
+defineOptions({
+ name: 'InnerPage',
+});
+
+const { userDetail } = useUser();
+const { areaTreeList } = useAllAreaList();
+const router = Taro.useRouter();
+const taskId = router.params?.taskId ?? '';
+
+const form = reactive({
+ avatarUrl: [],
+ name: '',
+ areaList: [] as number[],
+});
+
+const rules = reactive<FormRules>({
+ name: [{ required: true, message: '璇疯緭鍏ュ鍚�' }],
+
+ areaList: [
+ { required: true, message: '璇烽�夋嫨鍏徃鎵�鍦ㄥ湴', validator: FormValidator.validatorArray },
+ ],
+});
+
+const {
+ isLoading,
+ isError,
+ data: detail,
+ refetch,
+} = useQuery({
+ queryKey: ['flexWorkerServices/getFlexTaskDto', taskId],
+ queryFn: async () => {
+ return await flexWorkerServices.getFlexTaskDto(
+ { id: taskId },
+ {
+ showLoading: false,
+ }
+ );
+ },
+ placeholderData: () => ({} as API.GetFlexTaskDtoOutput),
+ onSuccess(data) {},
+});
+
+const formRef = ref<any>(null);
+function handleConfirm() {
+ if (!formRef.value) return;
+ formRef.value.validate().then(({ valid, errors }: any) => {
+ if (valid) {
+ confirm();
+ }
+ });
+}
+
+async function confirm() {
+ try {
+ let params: {};
+ let res = await flexWorkerServices.addEidtFlexTask(params);
+ if (res) {
+ Message.success('缂栬緫鎴愬姛', {
+ onClosed() {
+ goBack();
+ },
+ });
+ }
+ } catch (error) {}
+}
+
+function handleCancel() {
+ Taro.navigateBack();
+}
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+
+.businessCardEdit-page-wrapper {
+ //
+}
+</style>
diff --git a/apps/bMiniApp/src/subpackages/businessCard/businessCardEdit/businessCardEdit.config.ts b/apps/bMiniApp/src/subpackages/businessCard/businessCardEdit/businessCardEdit.config.ts
new file mode 100644
index 0000000..305fdb1
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/businessCard/businessCardEdit/businessCardEdit.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+ disableScroll: true,
+});
diff --git a/apps/bMiniApp/src/subpackages/businessCard/businessCardEdit/businessCardEdit.vue b/apps/bMiniApp/src/subpackages/businessCard/businessCardEdit/businessCardEdit.vue
new file mode 100644
index 0000000..2865c74
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/businessCard/businessCardEdit/businessCardEdit.vue
@@ -0,0 +1,17 @@
+<template>
+ <PageLayout class="businessCardEdit-page-wrapper" :title="'鐢靛瓙鍚嶇墖'" has-border>
+ <InnerPage></InnerPage>
+ </PageLayout>
+</template>
+
+<script setup lang="ts">
+import InnerPage from './InnerPage.vue';
+
+defineOptions({
+ name: 'businessCardEdit',
+});
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+</style>
diff --git a/apps/bMiniApp/src/subpackages/businessCard/components/BusinessCardDetailInfoView.vue b/apps/bMiniApp/src/subpackages/businessCard/components/BusinessCardDetailInfoView.vue
new file mode 100644
index 0000000..4b5c95d
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/businessCard/components/BusinessCardDetailInfoView.vue
@@ -0,0 +1,82 @@
+<template>
+ <ContentScrollView class="business-card-detail-info-wrapper">
+ <TaskCheckPersonalView :name="'1231231'" :contactPhone="'133'">
+ <template #actions>
+ <nut-button type="primary" @click="emit('edit')">缂栬緫</nut-button>
+ </template>
+ </TaskCheckPersonalView>
+ <div class="business-card-detail">
+ <BusinessCardDetailItem :icon="IconWechat" :value="`寰俊锛�${'13333333333'}`" />
+ <BusinessCardDetailItem :icon="IconPosition" :value="`鑱屼綅锛�${'缁忕悊'}`" />
+ <BusinessCardDetailItem :icon="IconEmail" :value="`閭锛�${'yangyang@123.com'}`" />
+ <BusinessCardDetailItem :icon="IconCompany" :value="`鍏徃锛�${'鏉窞浜哄姏鏃犲咖绉戞妧'}`" />
+ <BusinessCardDetailItem :icon="IconAddress" :value="`鍦板潃锛�${'鏉窞甯備笂鍩庡尯'}`" />
+ </div>
+ </ContentScrollView>
+ <div class="business-card-detail-company-intro">
+ <div class="business-card-detail-company-intro-title">鍏徃绠�浠�</div>
+ <div class="business-card-detail-company-intro-content">
+ {{
+ '鎴戞槸鍏徃鐨勪笟鍔$畝浠嬫垜鏄叕鍙哥殑涓氬姟绠�浠嬫垜鏄叕鍙哥殑涓氬姟绠� 浠嬫垜鏄叕鍙哥殑涓氬姟绠�浠嬫垜鏄叕鍙哥殑涓氬姟绠�浠嬫垜鏄叕鍙哥殑涓氬姟 绠�浠嬫垜鏄叕鍙哥殑涓氬姟绠�浠嬫垜鏄叕鍙哥殑涓氬姟绠�浠嬫垜鏄叕鍙哥殑涓� 鍔$畝浠嬫垜鏄叕鍙哥殑涓氬姟绠�浠嬫垜鏄叕鍙哥殑涓氬姟绠�浠�'
+ }}
+ </div>
+ </div>
+</template>
+
+<script setup lang="ts">
+import TaskCheckPersonalView from '../../task/components/TaskCheckPersonalView.vue';
+import BusinessCardDetailItem from './BusinessCardDetailItem.vue';
+import IconWechat from '@/assets/businessCard/icon-wechat.png';
+import IconPosition from '@/assets/businessCard/icon-position.png';
+import IconEmail from '@/assets/businessCard/icon-email.png';
+import IconCompany from '@/assets/businessCard/icon-company.png';
+import IconAddress from '@/assets/businessCard/icon-address.png';
+
+defineOptions({
+ name: 'BusinessCardDetailInfoView',
+});
+
+const emit = defineEmits<{
+ (e: 'edit'): void;
+}>();
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+
+.business-card-detail-info-wrapper {
+ background-color: #ffffff;
+ padding-top: 20px;
+
+ .flexJob-card-top-wrapper {
+ padding-top: 40px;
+ padding-bottom: 32px;
+ border-bottom: 1px solid #d9d9d9;
+ }
+
+ .business-card-detail {
+ padding: 20px 0 10px;
+ }
+}
+
+.business-card-detail-company-intro {
+ background-color: #ffffff;
+ margin-top: 30px;
+ padding: 30px 24px;
+
+ .business-card-detail-company-intro-title {
+ font-size: 28px;
+ line-height: 40px;
+ color: boleGetCssVar('text-color', 'primary');
+ font-weight: 600;
+ margin-bottom: 10px;
+ }
+
+ .business-card-detail-company-intro-content {
+ font-size: 24px;
+ line-height: 36px;
+ color: #4e5969;
+ font-weight: 400;
+ }
+}
+</style>
diff --git a/apps/bMiniApp/src/subpackages/businessCard/components/BusinessCardDetailItem.vue b/apps/bMiniApp/src/subpackages/businessCard/components/BusinessCardDetailItem.vue
new file mode 100644
index 0000000..4586ecd
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/businessCard/components/BusinessCardDetailItem.vue
@@ -0,0 +1,42 @@
+<template>
+ <div class="business-card-detail-item">
+ <img :src="icon" class="business-card-detail-item-icon" />
+ <div class="business-card-detail-item-value">{{ value }}</div>
+ </div>
+</template>
+
+<script setup lang="ts">
+defineOptions({
+ name: 'BusinessCardDetailItem',
+});
+
+type Props = {
+ icon?: string;
+ value?: string;
+};
+
+const props = withDefaults(defineProps<Props>(), {});
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+
+.business-card-detail-item {
+ margin-bottom: 24px;
+ display: flex;
+ align-items: center;
+
+ .business-card-detail-item-icon {
+ width: 32px;
+ height: 32px;
+ margin-right: 14px;
+ }
+
+ .business-card-detail-item-value {
+ font-weight: 400;
+ font-size: 24px;
+ color: #4e5969;
+ line-height: 36px;
+ }
+}
+</style>
diff --git a/apps/bMiniApp/src/subpackages/businessCard/components/BusinessCardHolderView.vue b/apps/bMiniApp/src/subpackages/businessCard/components/BusinessCardHolderView.vue
new file mode 100644
index 0000000..7072562
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/businessCard/components/BusinessCardHolderView.vue
@@ -0,0 +1,65 @@
+<template>
+ <InfiniteLoading scrollViewClassName="common-infinite-scroll-list" v-bind="infiniteLoadingProps">
+ <template #renderItem="{ item }">
+ <FlexJobCard
+ :name="item.name"
+ :age="item.age"
+ :genderType="item.genderType"
+ :workExperience="item.workExperience"
+ >
+ <template #footerLeft>
+ <div class="flexJob-card-footer-text">{{ FlexTaskWorkerHireEnum[item.hireStatus] }}</div>
+ </template>
+ <template #footerRight>
+ <nut-button type="primary" @click="handleDelete()">鍒犻櫎</nut-button>
+ <nut-button type="primary" @click="goForward()">杞彂</nut-button>
+ </template>
+ </FlexJobCard>
+ </template>
+ </InfiniteLoading>
+</template>
+
+<script setup lang="ts">
+import { OrderInputType } from '@12333/constants';
+import { RouterPath } from '@/constants';
+import { FlexTaskWorkerHireEnum } from '@12333/constants/task';
+import { useInfiniteLoading } from '@12333/hooks';
+import * as flexWorkerServices from '@12333/services/api/FlexWorker';
+import { FlexJobCard } from '@12333/components';
+import Taro from '@tarojs/taro';
+
+defineOptions({
+ name: 'BusinessCardHolderView',
+});
+
+const router = Taro.useRouter();
+const id = router.params?.id ?? '';
+
+const { infiniteLoadingProps } = useInfiniteLoading(
+ ({ pageParam }) => {
+ let params: API.GetFlexTaskWorkerApplyListInput = {
+ // flexTaskId: id,
+ pageModel: {
+ rows: 20,
+ page: pageParam,
+ orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
+ },
+ };
+
+ return flexWorkerServices.getFlexTaskWorkerApplyList(params, {
+ showLoading: false,
+ });
+ },
+ {
+ queryKey: ['flexWorkerServices/getFlexTaskWorkerApplyList'],
+ }
+);
+
+function handleDelete() {}
+
+function goForward() {}
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+</style>
diff --git a/apps/bMiniApp/src/subpackages/businessCard/components/BusinessCardView.vue b/apps/bMiniApp/src/subpackages/businessCard/components/BusinessCardView.vue
new file mode 100644
index 0000000..aa1186c
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/businessCard/components/BusinessCardView.vue
@@ -0,0 +1,60 @@
+<template>
+ <LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch">
+ <BusinessCardDetailInfoView @edit="goEditBusinessCard"></BusinessCardDetailInfoView>
+ <PageFooterBtn type="primary" class="business-card-btn">閫掑悕鐗�</PageFooterBtn>
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import { useQuery } from '@tanstack/vue-query';
+import Taro from '@tarojs/taro';
+import * as flexWorkerServices from '@12333/services/api/FlexWorker';
+import BusinessCardDetailInfoView from './BusinessCardDetailInfoView.vue';
+
+defineOptions({
+ name: 'BusinessCardView',
+});
+
+const router = Taro.useRouter();
+
+const id = router.params?.id;
+
+const {
+ isLoading,
+ isError,
+ data: detail,
+ refetch,
+} = useQuery({
+ queryKey: ['flexWorkerServices/getFlexTaskDto', id],
+ queryFn: async () => {
+ return await flexWorkerServices.getFlexTaskDto(
+ { id: id },
+ {
+ showLoading: false,
+ }
+ );
+ },
+ placeholderData: () => ({} as API.GetFlexTaskDtoOutput),
+ onSuccess(data) {},
+});
+
+function goEditBusinessCard() {
+ Taro.navigateTo({
+ url: `${RouterPath.businessCardEdit}?id=${id}`,
+ });
+}
+
+function handleBusinessCard() {}
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+
+.businessCard-page-wrapper {
+ .business-card-btn {
+ width: 100%;
+ margin: 40px auto 0;
+ font-size: 28px;
+ }
+}
+</style>
--
Gitblit v1.9.1