From ab9a81adf064bc1905dbcec39e97371c3e1d5c5d Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期五, 17 十月 2025 19:46:08 +0800
Subject: [PATCH] feat: 1.2.0.1

---
 apps/bMiniApp/src/subpackages/payrollManage/payrollManage/InnerPage.vue                       |   81 +++++++++++++
 apps/bMiniApp/src/assets/workbenches/icon-payroll.png                                         |    0 
 apps/bMiniApp/src/constants/router.ts                                                         |    3 
 apps/bMiniApp/src/pages/workbenches/InnerPage.vue                                             |   10 +
 apps/bMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue            |   74 ++++++++++++
 apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/payrollManageDetail.vue       |   13 ++
 apps/bMiniApp/src/subpackages/payrollManage/payrollManage/payrollManage.config.ts             |    3 
 apps/cMiniApp/project.private.config.json                                                     |   45 +++---
 apps/bMiniApp/src/app.config.ts                                                               |    4 
 apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/payrollManageDetail.config.ts |    3 
 apps/cMiniApp/project.config.json                                                             |    4 
 apps/bMiniApp/src/subpackages/payrollManage/payrollManage/payrollManage.vue                   |   13 ++
 apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue                 |   68 +++++++++++
 13 files changed, 296 insertions(+), 25 deletions(-)

diff --git a/apps/bMiniApp/src/app.config.ts b/apps/bMiniApp/src/app.config.ts
index bb6a629..f142a92 100644
--- a/apps/bMiniApp/src/app.config.ts
+++ b/apps/bMiniApp/src/app.config.ts
@@ -120,6 +120,10 @@
       ],
     },
     {
+      root: 'subpackages/payrollManage',
+      pages: ['payrollManage/payrollManage', 'payrollManageDetail/payrollManageDetail'],
+    },
+    {
       root: 'subpackages/extraPage',
       pages: ['extraPage/extraPage'],
     },
diff --git a/apps/bMiniApp/src/assets/workbenches/icon-payroll.png b/apps/bMiniApp/src/assets/workbenches/icon-payroll.png
new file mode 100644
index 0000000..d4b7104
--- /dev/null
+++ b/apps/bMiniApp/src/assets/workbenches/icon-payroll.png
Binary files differ
diff --git a/apps/bMiniApp/src/constants/router.ts b/apps/bMiniApp/src/constants/router.ts
index e2db973..134f70d 100644
--- a/apps/bMiniApp/src/constants/router.ts
+++ b/apps/bMiniApp/src/constants/router.ts
@@ -24,6 +24,9 @@
   // cooperation = '/subpackages/setting/cooperation/cooperation',
   // faq = '/subpackages/setting/faq/faq',
 
+  payrollManage = '/subpackages/payrollManage/payrollManage/payrollManage',
+  payrollManageDetail = '/subpackages/payrollManage/payrollManageDetail/payrollManageDetail',
+
   authenticationHome = '/subpackages/authentication/authenticationHome/authenticationHome',
   authenticationResult = '/subpackages/authentication/authenticationResult/authenticationResult',
   authenticationFaRen = '/subpackages/authentication/authenticationFaRen/authenticationFaRen',
diff --git a/apps/bMiniApp/src/pages/workbenches/InnerPage.vue b/apps/bMiniApp/src/pages/workbenches/InnerPage.vue
index 5e34c03..b171f01 100644
--- a/apps/bMiniApp/src/pages/workbenches/InnerPage.vue
+++ b/apps/bMiniApp/src/pages/workbenches/InnerPage.vue
@@ -34,6 +34,15 @@
           />
         </div>
       </CellChunk>
+      <CellChunk title="鍙戣柂">
+        <div class="workbenches-cell-list">
+          <TaskDetailWelfareItem
+            :icon="IconPayrollManage"
+            text="鍙戣柂绠$悊"
+            @click="goPage(RouterPath.payrollManage)"
+          />
+        </div>
+      </CellChunk>
     </Cell>
   </ContentView>
 </template>
@@ -47,6 +56,7 @@
 import IconPersonManage from '@/assets/workbenches/icon-person-manage.png';
 import IconPublishTask from '@/assets/workbenches/icon-publish-task.png';
 import IconTaskManage from '@/assets/workbenches/icon-task-manage.png';
+import IconPayrollManage from '@/assets/workbenches/icon-payroll.png';
 import { useAccessLogin } from '@/hooks';
 
 defineOptions({
diff --git a/apps/bMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue b/apps/bMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue
new file mode 100644
index 0000000..63ad84c
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue
@@ -0,0 +1,74 @@
+<template>
+  <div class="payroll-manage-detail-card-wrapper">
+    <FlexJobTopView :avatar="avatar" :name="name" :gender="gender" :isReal="isReal">
+      <template #detail>
+        <div class="payroll-manage-detail-card-container">
+          <div class="payroll-manage-detail-card-item">
+            <div class="payroll-manage-detail-card-item-label">宸ユ椂锛�</div>
+            <div class="payroll-manage-detail-card-item-text">{{ contactPhoneNumber }}</div>
+          </div>
+          <div class="payroll-manage-detail-card-item">
+            <div class="payroll-manage-detail-card-item-label">缁撶畻閲戦锛�</div>
+            <div class="payroll-manage-detail-card-item-text">{{ contactPhoneNumber }}</div>
+          </div>
+          <slot name="actions"></slot>
+        </div>
+      </template>
+    </FlexJobTopView>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { FlexJobTopView } from '@12333/components';
+import { EnumUserGender } from '@12333/constants';
+
+defineOptions({
+  name: 'PayrollManageDetailCard',
+});
+
+type Props = {
+  avatar?: string;
+  name?: string;
+  gender?: EnumUserGender;
+  isReal?: boolean;
+  contactPhoneNumber?: string;
+};
+
+const props = withDefaults(defineProps<Props>(), {});
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+
+.payroll-manage-detail-card-wrapper {
+  background: #ffffff;
+  border-radius: 12px;
+  padding: 40px;
+  padding-right: 26px;
+  margin-bottom: 24px;
+
+  .payroll-manage-detail-card-container {
+    display: flex;
+    flex-direction: column;
+    margin-top: 14px;
+
+    .payroll-manage-detail-card-item {
+      display: flex;
+      align-items: center;
+      font-weight: 400;
+      font-size: 24px;
+      line-height: 32px;
+      flex: 1;
+      min-width: 0;
+
+      .payroll-manage-detail-card-item-label {
+        color: boleGetCssVar('text-color', 'regular');
+      }
+
+      .payroll-manage-detail-card-item-text {
+        color: boleGetCssVar('text-color', 'secondary');
+      }
+    }
+  }
+}
+</style>
diff --git a/apps/bMiniApp/src/subpackages/payrollManage/payrollManage/InnerPage.vue b/apps/bMiniApp/src/subpackages/payrollManage/payrollManage/InnerPage.vue
new file mode 100644
index 0000000..3647a1d
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/payrollManage/payrollManage/InnerPage.vue
@@ -0,0 +1,81 @@
+<template>
+  <ProTabs
+    v-model="queryMenuState.status"
+    name="task-tab"
+    :showPaneContent="false"
+    class="task-tabs"
+    isTransparent
+    title-gutter="8"
+    title-scroll
+  >
+    <ProTabPane :title="`寰呭鏍�(${waitAssignCount})`" :pane-key="EnumTaskStatus.Wait"></ProTabPane>
+    <ProTabPane
+      :title="`宸插鏍�(${completedAssignCount})`"
+      :pane-key="EnumTaskStatus.Complete"
+    ></ProTabPane>
+    <ProTabPane
+      :title="`宸插彂鏀�(${completedAssignCount})`"
+      :pane-key="EnumTaskStatus.Complete"
+    ></ProTabPane>
+  </ProTabs>
+  <InfiniteLoading
+    scrollViewClassName="common-infinite-scroll-list"
+    v-bind="infiniteLoadingProps"
+    :key="queryMenuState.status"
+  >
+    <template #renderItem="{ item }">
+      <IncomeDetailListItem
+        :title="item.name"
+        :funds="100"
+        :item="dayjs(item.createdTime).format('YYYY-MM-DD HH:mm:ss')"
+        :value="`閽卞寘浣欓锛�${toThousand(item.serviceFee)}`"
+        @click="goPayrollManageDetail(item)"
+      >
+      </IncomeDetailListItem>
+    </template>
+  </InfiniteLoading>
+</template>
+
+<script setup lang="ts">
+import { ProTabs, ProTabPane, IncomeDetailListItem } from '@12333/components';
+import Taro from '@tarojs/taro';
+import dayjs from 'dayjs';
+import { toThousand } from '@12333/utils';
+import { EnumTaskStatus } from '@12333/constants';
+import { useTaskList } from '@12333/hooks';
+
+defineOptions({
+  name: 'InnerPage',
+});
+
+const { queryMenuState, infiniteLoadingProps } = useTaskList({
+  defaultQueryMenuState: {
+    status: EnumTaskStatus.Wait,
+  },
+});
+
+const completedAssignCount = computed(() => {
+  return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.completedAssignCount ?? 0;
+});
+const waitAssignCount = computed(() => {
+  return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.waitAssignCount ?? 0;
+});
+
+function goPayrollManageDetail(item: API.GetTaskInfosQueryResultItem) {
+  Taro.navigateTo({
+    url: `${RouterPath.payrollManageDetail}?id=${
+      item.id
+    }&date=${'Fri Oct 17 2025 18:49:01 GMT+0800'}`,
+  });
+}
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+
+.taskManage-page-wrapper {
+  .dark-btn {
+    margin-left: 12px;
+  }
+}
+</style>
diff --git a/apps/bMiniApp/src/subpackages/payrollManage/payrollManage/payrollManage.config.ts b/apps/bMiniApp/src/subpackages/payrollManage/payrollManage/payrollManage.config.ts
new file mode 100644
index 0000000..305fdb1
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/payrollManage/payrollManage/payrollManage.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+  disableScroll: true,
+});
diff --git a/apps/bMiniApp/src/subpackages/payrollManage/payrollManage/payrollManage.vue b/apps/bMiniApp/src/subpackages/payrollManage/payrollManage/payrollManage.vue
new file mode 100644
index 0000000..32e5fbc
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/payrollManage/payrollManage/payrollManage.vue
@@ -0,0 +1,13 @@
+<template>
+  <PageLayoutWithBg class="payrollManage-page-wrapper" title="鍙戣柂绠$悊">
+    <InnerPage />
+  </PageLayoutWithBg>
+</template>
+
+<script setup lang="ts">
+import InnerPage from './InnerPage.vue';
+
+defineOptions({
+  name: 'payrollManage',
+});
+</script>
diff --git a/apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue b/apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue
new file mode 100644
index 0000000..bdc50ab
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue
@@ -0,0 +1,68 @@
+<template>
+  <LoadingLayout>
+    <ContentView>
+      <div class="payroll-manage-detail-top">
+        <div class="payroll-manage-detail-top-title"></div>
+        <div class="payroll-manage-detail-top-content">
+          <div class="payroll-manage-detail-top-content-item"></div>
+        </div>
+      </div>
+      <ChunkTitle title="浜哄憳鍒楄〃" />
+    </ContentView>
+    <InfiniteLoading
+      scrollViewClassName="common-infinite-scroll-list"
+      v-bind="infiniteLoadingProps"
+    >
+      <template #renderItem="{ item }">
+        <PayrollManageDetailCard
+          :avatar="setOSSLink(item.avatar)"
+          :name="item.name"
+          :gender="item.gender"
+          :isReal="item.isReal"
+          :contactPhoneNumber="item.contactPhoneNumber"
+          :checkReceiveStatus="item.checkReceiveStatus"
+        />
+      </template>
+    </InfiniteLoading>
+  </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import Taro from '@tarojs/taro';
+import * as taskCheckReceiveServices from '@12333/services/apiV2/taskCheckReceive';
+import { useCheckReceiveTaskUserSubmits, useInfiniteLoading } from '@12333/hooks';
+import PayrollManageDetailCard from '../components/PayrollManageDetailCard.vue';
+import { EnumTaskCheckReceiveStatus } from '@12333/constants';
+import { setOSSLink } from '@12333/utils';
+import dayjs from 'dayjs';
+
+defineOptions({
+  name: 'InnerPage',
+});
+
+const router = Taro.useRouter();
+const id = router.params?.id ?? '';
+const date = router.params?.date ?? '';
+const checkReceiveStatus = Number(router.params?.checkReceiveStatus);
+
+const { infiniteLoadingProps } = useInfiniteLoading(
+  ({ pageParam }) => {
+    let params: API.GetCheckReceiveTaskQuery = {
+      pageModel: {
+        rows: 20,
+        page: pageParam,
+      },
+      taskInfoId: id,
+      date: dayjs(date).format('YYYY-MM-DD'),
+      checkReceiveStatus: 30,
+    };
+
+    return taskCheckReceiveServices.getCheckReceiveTask(params, {
+      showLoading: false,
+    });
+  },
+  {
+    queryKey: ['taskCheckReceiveServices/getCheckReceiveTask'],
+  }
+);
+</script>
diff --git a/apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/payrollManageDetail.config.ts b/apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/payrollManageDetail.config.ts
new file mode 100644
index 0000000..305fdb1
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/payrollManageDetail.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+  disableScroll: true,
+});
diff --git a/apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/payrollManageDetail.vue b/apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/payrollManageDetail.vue
new file mode 100644
index 0000000..b115fe0
--- /dev/null
+++ b/apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/payrollManageDetail.vue
@@ -0,0 +1,13 @@
+<template>
+  <PageLayoutWithBg class="payrollManageDetail-page-wrapper" title="鍙戣柂璇︽儏">
+    <InnerPage />
+  </PageLayoutWithBg>
+</template>
+
+<script setup lang="ts">
+import InnerPage from './InnerPage.vue';
+
+defineOptions({
+  name: 'payrollManageDetail',
+});
+</script>
diff --git a/apps/cMiniApp/project.config.json b/apps/cMiniApp/project.config.json
index a7a541b..df30bb2 100644
--- a/apps/cMiniApp/project.config.json
+++ b/apps/cMiniApp/project.config.json
@@ -3,8 +3,8 @@
     "description": "",
     "setting": {
         "urlCheck": false,
-        "es6": false,
-        "enhance": false,
+        "es6": true,
+        "enhance": true,
         "postcss": false,
         "preloadBackgroundData": false,
         "minified": false,
diff --git a/apps/cMiniApp/project.private.config.json b/apps/cMiniApp/project.private.config.json
index cafa2cd..25569bd 100644
--- a/apps/cMiniApp/project.private.config.json
+++ b/apps/cMiniApp/project.private.config.json
@@ -1,25 +1,24 @@
 {
-  "description": "椤圭洰绉佹湁閰嶇疆鏂囦欢銆傛鏂囦欢涓殑鍐呭灏嗚鐩� project.config.json 涓殑鐩稿悓瀛楁銆傞」鐩殑鏀瑰姩浼樺厛鍚屾鍒版鏂囦欢涓�傝瑙佹枃妗o細https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
-  "projectname": "cMiniApp",
-  "setting": {
-    "compileHotReLoad": true,
-    "bigPackageSizeSupport": true,
-    "urlCheck": false,
-    "coverView": true,
-    "lazyloadPlaceholderEnable": false,
-    "skylineRenderEnable": false,
-    "preloadBackgroundData": false,
-    "autoAudits": false,
-    "useApiHook": true,
-    "useApiHostProcess": true,
-    "showShadowRootInWxmlPanel": true,
-    "useStaticServer": false,
-    "useLanDebug": false,
-    "showES6CompileOption": false,
-    "checkInvalidKey": true,
-    "ignoreDevUnusedFiles": true,
-    "useIsolateContext": true
-  },
-  "condition": {},
-  "libVersion": "3.10.0"
+    "description": "椤圭洰绉佹湁閰嶇疆鏂囦欢銆傛鏂囦欢涓殑鍐呭灏嗚鐩� project.config.json 涓殑鐩稿悓瀛楁銆傞」鐩殑鏀瑰姩浼樺厛鍚屾鍒版鏂囦欢涓�傝瑙佹枃妗o細https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
+    "projectname": "cMiniApp",
+    "setting": {
+        "compileHotReLoad": true,
+        "bigPackageSizeSupport": true,
+        "urlCheck": false,
+        "coverView": true,
+        "lazyloadPlaceholderEnable": false,
+        "preloadBackgroundData": false,
+        "autoAudits": false,
+        "useApiHook": true,
+        "useApiHostProcess": true,
+        "showShadowRootInWxmlPanel": true,
+        "useStaticServer": false,
+        "useLanDebug": false,
+        "showES6CompileOption": false,
+        "checkInvalidKey": true,
+        "ignoreDevUnusedFiles": true,
+        "useIsolateContext": true
+    },
+    "condition": {},
+    "libVersion": "3.10.0"
 }
\ No newline at end of file

--
Gitblit v1.9.1