wupengfei
4 天以前 ab9a81adf064bc1905dbcec39e97371c3e1d5c5d
feat: 1.2.0.1
8个文件已添加
5个文件已修改
321 ■■■■■ 已修改文件
apps/bMiniApp/src/app.config.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/assets/workbenches/icon-payroll.png 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/constants/router.ts 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/pages/workbenches/InnerPage.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/payrollManage/payrollManage/InnerPage.vue 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/payrollManage/payrollManage/payrollManage.config.ts 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/payrollManage/payrollManage/payrollManage.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/payrollManageDetail.config.ts 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/payrollManageDetail.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/project.config.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/project.private.config.json 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/app.config.ts
@@ -120,6 +120,10 @@
      ],
    },
    {
      root: 'subpackages/payrollManage',
      pages: ['payrollManage/payrollManage', 'payrollManageDetail/payrollManageDetail'],
    },
    {
      root: 'subpackages/extraPage',
      pages: ['extraPage/extraPage'],
    },
apps/bMiniApp/src/assets/workbenches/icon-payroll.png
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',
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({
apps/bMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue
New file
@@ -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>
apps/bMiniApp/src/subpackages/payrollManage/payrollManage/InnerPage.vue
New file
@@ -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>
apps/bMiniApp/src/subpackages/payrollManage/payrollManage/payrollManage.config.ts
New file
@@ -0,0 +1,3 @@
export default definePageConfig({
  disableScroll: true,
});
apps/bMiniApp/src/subpackages/payrollManage/payrollManage/payrollManage.vue
New file
@@ -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>
apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue
New file
@@ -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>
apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/payrollManageDetail.config.ts
New file
@@ -0,0 +1,3 @@
export default definePageConfig({
  disableScroll: true,
});
apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/payrollManageDetail.vue
New file
@@ -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>
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,
apps/cMiniApp/project.private.config.json
@@ -1,25 +1,24 @@
{
  "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档: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 中的相同字段。项目的改动优先同步到此文件中。详见文档: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"
}