From 507131cbff30df768441a2167d1c7396ba5ceea2 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期一, 29 十二月 2025 15:35:23 +0800
Subject: [PATCH] Merge branch 'master' of http://120.26.58.240:8888/r/flexJobMiniApp

---
 apps/bStandardMiniApp/ci/private.wxc47d6f255e7d0566.key                                                      |   27 +
 apps/housekeepingMiniApp/src/subpackages/sercice/chooseSupplier/chooseSupplier.vue                           |    2 
 apps/bStandardMiniApp/ci/upload.js                                                                           |    2 
 apps/housekeepingMiniApp/src/pages/mine/index.vue                                                            |    2 
 packages/services/apiV2/standardOrder.ts                                                                     |   18 +
 apps/housekeepingMiniApp/src/subpackages/mine/editAddress/InnerPage.vue                                      |    4 
 apps/housekeepingMiniApp/src/components/JobDetailContent/components/experienceView.vue                       |   61 ++++
 apps/housekeepingMiniApp/src/subpackages/sercice/EnterpriseEmployeeDetail/EnterpriseEmployeeDetail.config.ts |    3 
 packages/services/types.d.ts                                                                                 |   18 +
 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/login/authorization/authorization.vue                               |    4 
 apps/housekeepingMiniApp/src/subpackages/sercice/supplierDetail/InnerPage.vue                                |   23 +
 packages/services/apiV2/index.ts                                                                             |    4 
 apps/housekeepingMiniApp/src/subpackages/sercice/addStandardOrder/InnerPage.vue                              |   28 +
 packages/components/src/Sku/sku.ts                                                                           |    2 
 apps/housekeepingMiniApp/src/subpackages/sercice/serciceDetail/serciceDetail.vue                             |    6 
 apps/housekeepingMiniApp/src/subpackages/mine/mineReserveService/InnerPage.vue                               |    2 
 packages/constants/apiEnum.ts                                                                                |    2 
 apps/housekeepingMiniApp/src/components/JobDetailContent/JobDetailContent.vue                                |  148 ++++++++++
 packages/hooks/standardOrder.ts                                                                              |   15 
 apps/housekeepingMiniApp/src/subpackages/mine/personalInfo/InnerPage.vue                                     |    4 
 apps/housekeepingMiniApp/src/subpackages/sercice/chooseSupplier/InnerPage.vue                                |    8 
 apps/housekeepingMiniApp/src/utils/request/index.ts                                                          |    4 
 apps/housekeepingMiniApp/src/components/JobDetailContent/components/CurriculumViewItem.vue                   |   55 +++
 apps/housekeepingMiniApp/src/components/JobDetailContent/components/curriculumView.vue                       |  157 +++++++++++
 /dev/null                                                                                                    |   27 -
 apps/housekeepingMiniApp/src/subpackages/mine/addressManange/InnerPage.vue                                   |    2 
 apps/housekeepingMiniApp/src/subpackages/mine/setting/setting.vue                                            |    2 
 apps/housekeepingMiniApp/src/hooks/user.ts                                                                   |    2 
 package.json                                                                                                 |    4 
 apps/housekeepingMiniApp/src/subpackages/sercice/supplierDetail/supplierDetail.vue                           |   13 
 packages/services/apiV2/typings.d.ts                                                                         |   60 ++++
 apps/housekeepingMiniApp/src/stores/modules/user.ts                                                          |    3 
 apps/housekeepingMiniApp/src/app.config.ts                                                                   |    2 
 apps/housekeepingMiniApp/src/constants/router.ts                                                             |    2 
 apps/housekeepingMiniApp/src/subpackages/sercice/EnterpriseEmployeeDetail/EnterpriseEmployeeDetail.vue       |   13 
 38 files changed, 766 insertions(+), 62 deletions(-)

diff --git a/apps/bStandardMiniApp/ci/private.wx3669dd12a0915f7d.key b/apps/bStandardMiniApp/ci/private.wx3669dd12a0915f7d.key
deleted file mode 100644
index 484380b..0000000
--- a/apps/bStandardMiniApp/ci/private.wx3669dd12a0915f7d.key
+++ /dev/null
@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEowIBAAKCAQEAt7umJG8uX79rUR1PY3p6cUs1Op9iOdC88HomDSZkW12UumEz
-PoR4uQgSgd1JgPebHHnzXZYVPujPHV7wRbMlQ4qjdoJW3NjSpVpNfP6lt99BlrZV
-CUl4OMBTGuP1xEzqnyHuWSHTwKEHtuD0Ypg4E5yECbRrE1L5MbFD5A5be9OFHcIx
-6JJ6Enn7vhCpHP8nHgctRRf0tYjb+h9F9sn5/RTwWf3TJvvliaqq8cmIM3GhV+e8
-DfDHh911ZYC5mQmARr/Laj1IIUdGEZPK/AGz/MZx2ipto7FghETwxgXKVfaWIHub
-o4HVXjJxjtO12hH8DvLtkpHBFTsidhbAA+3rrQIDAQABAoIBABlEmEvIcpM+aw7j
-vghLTs2H71EZnFOhLmrQEa2bSw/5pbugJIEDjOq9fnYXrcUryEw5RUvomRFmyR0b
-8mVThttsFKD2ueVzeDy/V4rKJpZMAOQuPTGixgLgCE3ZbfJKNbYe332olkuWmc3/
-z/xDPOsNimcfRd6JebXo0BJsGw7DQ4yB242No85GkmFTjaPabOFahqJQz7+P4d41
-oq8h9fdskugtkG7OmhXT869ECjwyLHs+XtMVHCxH17wYjnqPJvuQGzLAeGFnUEzA
-ZHsgXsRdTBbCRbbLW95wDAmOk4G76wl58DWrgT/CQx49SwuT5xfpouM8aicYmyZf
-lepakYECgYEA32ERnryGEN3r9wbEtt3Fek8qFz+muvMaL8ILvXg4PON+N7TH1hbD
-e5elnfqwdndFDHD8WlTJvz6Y+ZMyaBpoRi52IB0CLUJbIZbCGVnhsnEvcmCbHHpd
-vHmPnVSjpia91h7D7Tl1WYBYn1DKvOymD16aAN8+prCkff2YEZRwY6ECgYEA0pBs
-+RmqfoKgAe9zvYwN/4ZsYbFFMtGGZ+C4s7sirbHCSF+qe2Qmx0RNqeNO/j5dIds4
-saM6FXRMWdpOsx0o5Qjj/d/b1g2Kh0PWvjrMMMmmRB/Su7qqOVYCFj6qdGMLvLNh
-r0cJE+cRRKpan8XUJWMnkK1Sqn9SqoVtCN+rjI0CgYAOpIZLKYCASovVPZRXiGIR
-im7v5zQ+vQDScJ3kZaUKGL+FV0xiNEvMJjytBmna2iakkiN4qGYxKyFL+uIrANAl
-CZaktEIYRWlD4mYG02WAFPtPPBXu3/aVDELlxU6U7aU0DAA75LBUlZ05lEo16C1a
-hJEDzZ6Fvr6Jo738KQbVAQKBgGx2FIvjmpz78CvPChFS+UrsFRvlUj2xC8iqSrnZ
-5S0PaYIaNRjGJ+tw1YhzHBd+TD7KS1PFPoAandGS0AMXPB9uCvKUwwppgzfVy+HF
-K7TdyhVBRy2II3LRSNXohajZ9AvJYsIElzp3Rb/W+ENghbyUbKbrgK9uUkif3eA6
-RoVpAoGBANhHCdaCjtshYptU5RUGDJfQP776IjIsYMDMPfy5D3ezrBmTFXywp5Vj
-MpallPlgIY5CLx4NEgKclNJRWaQqD5LllNOKxGw3pxWk5rgHCFF5pEpXmnSKLEUE
-V7ugDI6vPviJ8k1CQ5zSfhuEMnp19k0jRUTT7dVHjf5mcFVFlfH6
------END RSA PRIVATE KEY-----
diff --git a/apps/bStandardMiniApp/ci/private.wxc47d6f255e7d0566.key b/apps/bStandardMiniApp/ci/private.wxc47d6f255e7d0566.key
new file mode 100644
index 0000000..4352b49
--- /dev/null
+++ b/apps/bStandardMiniApp/ci/private.wxc47d6f255e7d0566.key
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpQIBAAKCAQEAy7wtgTQmuEPpJDRPu2rkSpOyf4OabpFFRbrdBdnhERLswO67
+P3DzxFhi9PkReA0nwr6D/UrkmKSCA/Jao7wIv7Md4ZVe3feKYMKGIGpZEBdVzZNG
+GplzpCYvkGpC+PO/cvnn+I7G4pMTq//A/XYV4MjlcIuZHbQKQ7Q+lGKv5rd3NsEA
+tpH2OmFmHWmSTu5wJuNjK3P44CgCdc+bGMb4ik3zX8VKRpDJ7JCNe0fKv0f1vnhP
+0yRZENT4ag3dkMF+H6cztMXiBJxxgz2RI7xWuyEHkJcMf5MGUxHTlFNpbw6K4RxC
++clGv0/qgV//tLmdq4ArfFQqnzTrAQhfHOUYdwIDAQABAoIBAQCAtnYZNpVvvJfC
+Y7orsbBg3UbcAIzEZcrZ7uBMHgZu/wHMMgbiYb3fwedi1SgQLF9+TVad437gYK4z
+SB2za8wrMEIkjnXMzeMClmKegBGcdOGkavLTQzcn8WgDWN7O4U+GmBPRmIJWCo1X
+ENEgUEYqKUGrBMbLWT9S3sDahi6TFxw2TH8nnOXPV5+p23A3t3hygsYyJ1Il/mLQ
+g3KCUTN63QB5Xo2ZP11ypC03eoO1pmx57m+f7Sq48AUxnBWZxTfDosmZsnbSDbjj
+va9zT5quImy7kn1PfbSgoDpSrSDqPVDwKITu5FUJU+ISlYElHeu7Ux2N3B0O3fvG
+ln5qec/hAoGBAPZ2uX41Pycoj7GJpS9AOm3Kl00nHZswKuT461Z/+DSaaQAorDiC
+bsDr5l/fNG57kywzKbC1DsJdcV9Fm16wTV6l0Y2dLuIZVeFINRQySK1exiF+yTXJ
+BoGHFjtls8j1Q/9PDsc7ok3n+i29qdiNv+odH8HdIrsQHjW2KojADBUbAoGBANOe
+N2gQ6qdsQUCf9yxntxmFp137Jwb4IN9ePB8qp06PHYpvqnMvtfb8QJ+NPPbpfuh0
+9MkfVzxK5430FqVsHzvJ5pUfgO+Ewi4V2F1hDEtrEFB0MUFrRWOXmGa5nsnbK/HN
+mRzsnZyICem8kQ6HHTYPCgTCU6vi6TwNl3GypCvVAoGBAITxn7cTU8B0oaX7gG3P
+cHT+ncSRP+gRAGJIXvFmz+TYEaFzTwqgWMuZs8etJ6Qc5lMmOevGjnKLYvcoHdni
+salHOpTv33U4g1mk0HTXdtqFz8wLjs+DYw4FZxmdD3Br1EToSSlw4mixpAJ+Vxqn
+w4iuMw4okW5kEFearrDbHulXAoGBALP6KfFOAeRmg5Cs/BE+HFGOhGu/wM+ClKKk
+iMmRAz4jJeKpWfQhLcdjfqqz+pecupyFa/Lpvs2+fvUSFXiXXnEBJCTL6GLNLED5
+v0ybz1MNOZDTYVjcHOW49prXX58Z0mQSkhgxfVK1uIicIVqTu1pQrBqkE3lqwSac
+AKNoZYwJAoGACHsuxgMHOZ0fe+IG3x1wIM2EDdvQtJJG5LspfBVczGliCZOwCGLi
+HRVxpTzzTYN/XTSNZYjkDL8S9i8R/BL8GHUzBrPDjrwpf1Mny/vIoeW4vlKKcGaf
+VcWFjh8LDO85zl1yvcEI1erFT9ZNHCF+qtpCTVuDdMPKozJUAPehkjA=
+-----END RSA PRIVATE KEY-----
diff --git a/apps/bStandardMiniApp/ci/upload.js b/apps/bStandardMiniApp/ci/upload.js
index 48063fb..e79cb1d 100644
--- a/apps/bStandardMiniApp/ci/upload.js
+++ b/apps/bStandardMiniApp/ci/upload.js
@@ -27,7 +27,7 @@
   return {
     weapp: {
       appid: config.appid,
-      privateKeyPath: `${projectPath}/ci/private.wx3669dd12a0915f7d.key`,
+      privateKeyPath: `${projectPath}/ci/private.wxc47d6f255e7d0566.key`,
       robot: robot,
       setting: {
         minify: false,
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/hooks/user.ts b/apps/housekeepingMiniApp/src/hooks/user.ts
index 8498fdb..ca88e1b 100644
--- a/apps/housekeepingMiniApp/src/hooks/user.ts
+++ b/apps/housekeepingMiniApp/src/hooks/user.ts
@@ -20,7 +20,7 @@
   });
 
   const displayName = computed(() =>
-    userDetail.value.enterpriseIsReal ? userDetail.value.enterpriseName : userDetail.value.name
+    userDetail.value?.enterpriseIsReal ? userDetail.value?.enterpriseName : userDetail.value?.name
   );
 
   return {
diff --git a/apps/housekeepingMiniApp/src/pages/mine/index.vue b/apps/housekeepingMiniApp/src/pages/mine/index.vue
index 98173c5..3f9743d 100644
--- a/apps/housekeepingMiniApp/src/pages/mine/index.vue
+++ b/apps/housekeepingMiniApp/src/pages/mine/index.vue
@@ -76,7 +76,7 @@
         <ListItem :icon="IconCollect" title="鏀惰棌澶�" @click="goMineCollectTask"></ListItem>
         <ListItem
           :icon="IconRecruit"
-          v-if="!userDetail.enterpriseIsReal"
+          v-if="!userDetail?.enterpriseIsReal"
           title="鍗囩骇浼佷笟鐗�"
           @click="goCompanyInfo"
         ></ListItem>
diff --git a/apps/housekeepingMiniApp/src/stores/modules/user.ts b/apps/housekeepingMiniApp/src/stores/modules/user.ts
index c320813..dafe7d2 100644
--- a/apps/housekeepingMiniApp/src/stores/modules/user.ts
+++ b/apps/housekeepingMiniApp/src/stores/modules/user.ts
@@ -107,8 +107,8 @@
             accessToken: wxMiniAppUserLoginRes.accessToken,
           });
           res.accessToken = bindRes.accessToken;
-          this.loginSuccess(res);
         }
+        this.loginSuccess(res);
         return res;
       } catch (error) {
         console.log('error3: ', error);
@@ -213,6 +213,7 @@
     },
 
     setUserInfoAction(info: API.LoginCommandCallback) {
+      console.log('info: ', info);
       this.userInfo = {
         ...this.userInfo,
         ...info,
diff --git a/apps/housekeepingMiniApp/src/subpackages/login/authorization/authorization.vue b/apps/housekeepingMiniApp/src/subpackages/login/authorization/authorization.vue
index 063085a..613959e 100644
--- a/apps/housekeepingMiniApp/src/subpackages/login/authorization/authorization.vue
+++ b/apps/housekeepingMiniApp/src/subpackages/login/authorization/authorization.vue
@@ -116,7 +116,9 @@
         type: AppLocalConfig.userType,
         enterpriseType: AppLocalConfig.enterpriseType,
       };
-      wxMiniAppUserLoginRes.value = await authServices.wxmpLogin(params);
+      wxMiniAppUserLoginRes.value = await authServices.wxmpLogin(params, {
+        getResponse: true,
+      });
       if (wxMiniAppUserLoginRes.value?.isBindPhoneNumber) {
         isAccount.value = true;
       }
diff --git a/apps/housekeepingMiniApp/src/subpackages/mine/addressManange/InnerPage.vue b/apps/housekeepingMiniApp/src/subpackages/mine/addressManange/InnerPage.vue
index 470a453..4acc89c 100644
--- a/apps/housekeepingMiniApp/src/subpackages/mine/addressManange/InnerPage.vue
+++ b/apps/housekeepingMiniApp/src/subpackages/mine/addressManange/InnerPage.vue
@@ -35,7 +35,7 @@
 
 const dataOptions = reactive({
   id: 'id',
-  addressDetail: 'addressDetail',
+  fullAddress: 'addressName',
   addressName: 'name',
   phone: 'contactPhoneNumber',
   defaultAddress: 'isDefault',
diff --git a/apps/housekeepingMiniApp/src/subpackages/mine/editAddress/InnerPage.vue b/apps/housekeepingMiniApp/src/subpackages/mine/editAddress/InnerPage.vue
index 03500ee..89f7951 100644
--- a/apps/housekeepingMiniApp/src/subpackages/mine/editAddress/InnerPage.vue
+++ b/apps/housekeepingMiniApp/src/subpackages/mine/editAddress/InnerPage.vue
@@ -1,7 +1,7 @@
 <template>
   <ContentScrollView :paddingH="false">
     <nut-form :model-value="form" ref="formRef" :rules="rules" label-position="top">
-      <nut-form-item label="濮撳悕:" class="bole-form-item" prop="name" required>
+      <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="contactPhoneNumber" required>
@@ -73,7 +73,7 @@
 });
 
 const rules = reactive<FormRules>({
-  name: [{ required: true, message: '璇疯緭鍏ュ鍚�' }],
+  // name: [{ required: true, message: '璇疯緭鍏ュ鍚�' }],
   contactPhoneNumber: [
     { required: true, message: '璇疯緭鍏ユ墜鏈哄彿' },
     { validator: FormValidator.validatorPhoneNumber, message: '璇疯緭鍏ユ纭殑鎵嬫満鍙�' },
diff --git a/apps/housekeepingMiniApp/src/subpackages/mine/mineReserveService/InnerPage.vue b/apps/housekeepingMiniApp/src/subpackages/mine/mineReserveService/InnerPage.vue
index c000fb8..979e0dc 100644
--- a/apps/housekeepingMiniApp/src/subpackages/mine/mineReserveService/InnerPage.vue
+++ b/apps/housekeepingMiniApp/src/subpackages/mine/mineReserveService/InnerPage.vue
@@ -75,7 +75,7 @@
 
 // onMounted(() => {
 //   standardOrderServices.checkPayStandardOrder({
-//     id: 'ca8c17a1-6c44-446e-2e88-08de443f2678',
+//     id: 'ac33ec5d-5972-45e0-63a5-08de46a118d9',
 //   });
 // });
 
diff --git a/apps/housekeepingMiniApp/src/subpackages/mine/personalInfo/InnerPage.vue b/apps/housekeepingMiniApp/src/subpackages/mine/personalInfo/InnerPage.vue
index 447f859..c6310a3 100644
--- a/apps/housekeepingMiniApp/src/subpackages/mine/personalInfo/InnerPage.vue
+++ b/apps/housekeepingMiniApp/src/subpackages/mine/personalInfo/InnerPage.vue
@@ -4,7 +4,7 @@
       <nut-form-item label="澶村儚:" class="bole-form-item" prop="avatar">
         <Uploader v-model:file-list="form.avatar" :maximum="1" class="bole-uploader"> </Uploader>
       </nut-form-item>
-      <nut-form-item label="濮撳悕:" class="bole-form-item" prop="name" required>
+      <nut-form-item label="濮撳悕:" class="bole-form-item" prop="name">
         <nut-input
           v-model.trim="form.name"
           placeholder="璇疯緭鍏ュ鍚�"
@@ -47,7 +47,7 @@
 });
 
 const rules = reactive<FormRules>({
-  name: [{ required: true, message: '璇疯緭鍏ュ鍚�' }],
+  // name: [{ required: true, message: '璇疯緭鍏ュ鍚�' }],
   contactPhoneNumber: [
     { required: true, message: '璇疯緭鍏ユ墜鏈哄彿' },
     { validator: FormValidator.validatorPhoneNumber, message: '璇疯緭鍏ユ纭殑鎵嬫満鍙�' },
diff --git a/apps/housekeepingMiniApp/src/subpackages/mine/setting/setting.vue b/apps/housekeepingMiniApp/src/subpackages/mine/setting/setting.vue
index cb75d8e..861999f 100644
--- a/apps/housekeepingMiniApp/src/subpackages/mine/setting/setting.vue
+++ b/apps/housekeepingMiniApp/src/subpackages/mine/setting/setting.vue
@@ -3,7 +3,7 @@
     <List>
       <ListItem
         title="鍏徃淇℃伅"
-        v-if="userDetail.enterpriseIsReal"
+        v-if="userDetail?.enterpriseIsReal"
         @click="goCompanyInfo"
       ></ListItem>
       <ListItem title="涓汉淇℃伅" v-else @click="goPersonalInfo"></ListItem>
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..c3eb447 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({
@@ -293,11 +309,13 @@
         paySign: res.paySign,
       });
       Message.success('鏀粯鎴愬姛');
-      Taro.redirectTo({
-        url: `${RouterPath.mineOrderDetail}?id=${orderId}`,
-      });
     }
-  } catch (error) {}
+  } catch (error) {
+  } finally {
+    Taro.redirectTo({
+      url: `${RouterPath.mineOrderDetail}?id=${orderId}`,
+    });
+  }
 }
 </script>
 
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/serciceDetail/serciceDetail.vue b/apps/housekeepingMiniApp/src/subpackages/sercice/serciceDetail/serciceDetail.vue
index 6911877..7f7375d 100644
--- a/apps/housekeepingMiniApp/src/subpackages/sercice/serciceDetail/serciceDetail.vue
+++ b/apps/housekeepingMiniApp/src/subpackages/sercice/serciceDetail/serciceDetail.vue
@@ -137,7 +137,7 @@
     ];
     skuState.goods = {
       skuId: SkuUtils.DefaultSkuSpecId,
-      price: toThousand(res.specs[0].price),
+      price: res.specs[0].price,
       imagePath: setOSSLink(res.files[0]),
       name: res.name,
     };
@@ -166,7 +166,7 @@
   });
 });
 
-async function handleAttention() {
+const handleAttention = useAccessLogin(async () => {
   try {
     let params: API.CollectionStandardServiceCommand = {
       ids: [id],
@@ -177,7 +177,7 @@
       refetch({ type: 'inactive' });
     }
   } catch (error) {}
-}
+});
 </script>
 
 <style lang="scss">
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..02a2b4a
--- /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/apps/housekeepingMiniApp/src/utils/request/index.ts b/apps/housekeepingMiniApp/src/utils/request/index.ts
index 2ebbed6..ac4f2bc 100644
--- a/apps/housekeepingMiniApp/src/utils/request/index.ts
+++ b/apps/housekeepingMiniApp/src/utils/request/index.ts
@@ -47,9 +47,9 @@
   REDIRECT = 9,
 }
 // 涓庡悗绔害瀹氱殑鍝嶅簲鏁版嵁鏍煎紡
-interface ResponseStructure {
+export interface ResponseStructure<TData = any> {
   success: boolean;
-  data: any;
+  data: TData;
   /**
    * http鐘舵�佸悧
    */
diff --git a/package.json b/package.json
index c1cdcd1..9614b79 100644
--- a/package.json
+++ b/package.json
@@ -29,6 +29,10 @@
     "UnderTakeClient:staging:build": "pnpm run -C apps/underTakeMiniApp build:weapp:staging:upload",
     "Housekeeping:build": "pnpm run -C apps/housekeepingMiniApp build:weapp:upload",
     "Housekeeping:staging:build": "pnpm run -C apps/housekeepingMiniApp build:weapp:staging:upload",
+    "CStandard:build": "pnpm run -C apps/cStandardMiniApp build:weapp:upload",
+    "CStandard:staging:build": "pnpm run -C apps/cStandardMiniApp build:weapp:staging:upload",
+    "BStandard:build": "pnpm run -C apps/bStandardMiniApp build:weapp:upload",
+    "BStandard:staging:build": "pnpm run -C apps/bStandardMiniApp build:weapp:staging:upload",
     "build:all": "pnpm run -r --parallel build:weapp:upload"
   },
   "browserslist": [
diff --git a/packages/components/src/Sku/sku.ts b/packages/components/src/Sku/sku.ts
index 23d2e2d..fc46abb 100644
--- a/packages/components/src/Sku/sku.ts
+++ b/packages/components/src/Sku/sku.ts
@@ -12,7 +12,7 @@
 
 export type Goods = {
   imagePath: string;
-  price: string;
+  price: number;
   skuId: string;
   name: string;
 };
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/hooks/standardOrder.ts b/packages/hooks/standardOrder.ts
index 987b48d..ecdb491 100644
--- a/packages/hooks/standardOrder.ts
+++ b/packages/hooks/standardOrder.ts
@@ -19,13 +19,13 @@
 
 export function useStandardServiceDetail({ id, onSuccess }: UseStandardServiceDetailOptions) {
   const { data, refetch, isLoading, isError } = useQuery({
-    queryKey: ['standardServiceServices/getStandardService', id],
+    queryKey: ['standardServiceServices/getOpenStandardService', id],
     queryFn: async () => {
       let params: API.APIgetStandardServiceParams = {
         id: unref(id),
       };
 
-      return await standardServiceServices.getStandardService(params, {
+      return await standardServiceServices.getOpenStandardService(params, {
         showLoading: false,
       });
     },
@@ -36,11 +36,12 @@
   });
 
   const minPrice = computed(() => {
-    if (!data.value?.specs?.length) {
-      return 0;
-    } else {
-      return Math.min(...data.value.specs.map((x) => x.price));
-    }
+    // if (!data.value?.specs?.length) {
+    //   return 0;
+    // } else {
+    //   return Math.min(...data.value.specs.map((x) => x.price));
+    // }
+    return data.value?.minSpecPrice ?? 0;
   });
 
   return {
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;
diff --git a/packages/services/types.d.ts b/packages/services/types.d.ts
index 930c5be..6fcdd5a 100644
--- a/packages/services/types.d.ts
+++ b/packages/services/types.d.ts
@@ -1,4 +1,22 @@
 
 declare module '@/utils/request' {
     export const request: IRequest;
+    export interface ResponseStructure<TData = any> {
+        success: boolean;
+        data: TData;
+        /**
+         * http鐘舵�佸悧
+         */
+        code?: number;
+        /**
+         * 閿欒鐮�
+         */
+        errorCode?: string;
+        /**
+         * 閿欒淇℃伅
+         */
+        msg?: string;
+        showType?: ErrorShowType;
+        traceId?: string;
+    }
 }
\ No newline at end of file

--
Gitblit v1.10.0