wupengfei
2 天以前 e2cbcd64dd60014d82bd898ae51fd827e01e9c18
feat: 1.2.0.1
9个文件已修改
544 ■■■■ 已修改文件
apps/bMiniApp/project.private.config.json 90 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/payrollManage/payrollManage/InnerPage.vue 130 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/constants/apiEnum.ts 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/enterpriseWallet.ts 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/typings.d.ts 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/user.ts 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/project.private.config.json
@@ -1,44 +1,50 @@
{
  "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
  "projectname": "bMiniApp",
  "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": {
    "miniprogram": {
      "list": [
        {
          "name": "验收管理",
          "pathName": "subpackages/task/taskCheck/taskCheck",
          "query": "",
          "scene": null,
          "launchMode": "default"
        },
        {
          "name": "验收详情",
          "pathName": "subpackages/task/taskCheckDetail/taskCheckDetail",
          "query": "id=927b9898-1e9f-4aec-99aa-08ddf4e125c9&date=2025-10-19&checkReceiveStatus=10",
          "launchMode": "default",
          "scene": null
    "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
    "projectname": "bMiniApp",
    "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": {
        "miniprogram": {
            "list": [
                {
                    "name": "验收管理",
                    "pathName": "subpackages/task/taskCheck/taskCheck",
                    "query": "",
                    "launchMode": "default",
                    "scene": null
                },
                {
                    "name": "验收详情",
                    "pathName": "subpackages/task/taskCheckDetail/taskCheckDetail",
                    "query": "id=927b9898-1e9f-4aec-99aa-08ddf4e125c9&date=2025-10-19&checkReceiveStatus=10",
                    "launchMode": "default",
                    "scene": null
                },
                {
                    "name": "",
                    "pathName": "subpackages/payrollManage/payrollManageDetail/payrollManageDetail",
                    "query": "id=22201b25-b058-4774-808c-08de0d1eb0de&operatorToken=47358a9a-02a0-41ef-8da1-0366266af084",
                    "launchMode": "default",
                    "scene": null
                }
            ]
        }
      ]
    }
  },
  "libVersion": "3.9.3"
}
    },
    "libVersion": "3.9.3"
}
apps/bMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue
@@ -5,11 +5,13 @@
        <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 class="payroll-manage-detail-card-item-text">{{ totalWorkHours }}</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 class="payroll-manage-detail-card-item-text">
              {{ `¥${toThousand(settlementAmount)}` }}
            </div>
          </div>
          <slot name="actions"></slot>
        </div>
@@ -21,6 +23,7 @@
<script setup lang="ts">
import { FlexJobTopView } from '@12333/components';
import { EnumUserGender } from '@12333/constants';
import { toThousand } from '@12333/utils';
defineOptions({
  name: 'PayrollManageDetailCard',
@@ -31,7 +34,8 @@
  name?: string;
  gender?: EnumUserGender;
  isReal?: boolean;
  contactPhoneNumber?: string;
  totalWorkHours: number;
  settlementAmount?: number;
};
const props = withDefaults(defineProps<Props>(), {});
apps/bMiniApp/src/subpackages/payrollManage/payrollManage/InnerPage.vue
@@ -1,6 +1,6 @@
<template>
  <ProTabs
    v-model="queryMenuState.status"
    v-model="queryState.paymentStatus"
    name="task-tab"
    :showPaneContent="false"
    class="task-tabs"
@@ -8,74 +8,136 @@
    title-gutter="8"
    title-scroll
  >
    <ProTabPane :title="`待审核(${waitAssignCount})`" :pane-key="EnumTaskStatus.Wait"></ProTabPane>
    <ProTabPane
      :title="`已审核(${completedAssignCount})`"
      :pane-key="EnumTaskStatus.Complete"
      :title="`待审核(${waitAuditCount})`"
      :pane-key="GetSettlementTasksQueryPaymentStatus.WaitAudit"
    ></ProTabPane>
    <ProTabPane
      :title="`已发放(${completedAssignCount})`"
      :pane-key="EnumTaskStatus.Complete"
      :title="`已审核(${completedAuditCount})`"
      :pane-key="GetSettlementTasksQueryPaymentStatus.CompletedAudit"
    ></ProTabPane>
    <ProTabPane
      :title="`已发放(${completedReleaseCount})`"
      :pane-key="GetSettlementTasksQueryPaymentStatus.CompletedRelease"
    ></ProTabPane>
  </ProTabs>
  <InfiniteLoading
    scrollViewClassName="common-infinite-scroll-list"
    v-bind="infiniteLoadingProps"
    :key="queryMenuState.status"
    :key="queryState.paymentStatus"
  >
    <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)"
        :title="item.code"
        :funds="item.settlementAmount"
        :item="dayjs(item.settlementTime).format('YYYY-MM-DD HH:mm:ss')"
        @click="openPassword(item)"
      >
      </IncomeDetailListItem>
    </template>
  </InfiniteLoading>
  <nut-short-password
    v-model="form.password"
    v-model:visible="form.passwordVisible"
    @focus="form.showKeyboard = true"
    tips="请输入操作密码"
    desc="明细需输入操作密码才能查看"
    :length="6"
    @complete="complete"
  >
  </nut-short-password>
  <nut-number-keyboard
    v-model="form.password"
    v-model:visible="form.showKeyboard"
    @blur="form.showKeyboard = false"
  >
  </nut-number-keyboard>
</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';
import { GetSettlementTasksQueryPaymentStatus, EnumPagedListOrder } from '@12333/constants';
import * as taskServices from '@12333/services/apiV2/task';
import * as userServices from '@12333/services/apiV2/user';
import { useInfiniteLoading } from '@12333/hooks';
defineOptions({
  name: 'InnerPage',
});
const { queryMenuState, infiniteLoadingProps } = useTaskList({
  defaultQueryMenuState: {
    status: EnumTaskStatus.Wait,
const form = reactive({
  password: '',
  passwordVisible: false,
  showKeyboard: false,
  id: '',
});
const queryState = reactive({
  paymentStatus: GetSettlementTasksQueryPaymentStatus.WaitAudit,
});
const { infiniteLoadingProps, invalidateQueries } = useInfiniteLoading(
  ({ pageParam }) => {
    let params: API.GetSettlementTasksQuery = {
      pageModel: {
        rows: 20,
        page: pageParam,
        orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
      },
      paymentStatus: queryState.paymentStatus,
    };
    return taskServices.getSettlementTasks(params, {
      showLoading: false,
    });
  },
  {
    queryKey: ['taskServices/getSettlementTasks', queryState],
  }
);
const completedAuditCount = computed(() => {
  return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.completedAuditCount ?? 0;
});
const waitAuditCount = computed(() => {
  return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.waitAuditCount ?? 0;
});
const completedReleaseCount = computed(() => {
  return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.completedReleaseCount ?? 0;
});
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 openPassword(item: API.GetSettlementTasksQueryResultItem) {
  form.passwordVisible = true;
  form.id = item.id;
}
function goPayrollManageDetail(item: API.GetTaskInfosQueryResultItem) {
function complete(value: string) {
  form.passwordVisible = false;
  buildOperatorToken(value);
}
async function buildOperatorToken(value: string) {
  try {
    let params: API.BuildOperatorTokenCommand = {
      password: value,
    };
    let res = await userServices.buildOperatorToken(params);
    if (res) {
      goPayrollManageDetail(form.id, res.operatorToken);
    }
  } catch (error) {
    form.showKeyboard = false;
  }
}
async function goPayrollManageDetail(id: string, operatorToken: string) {
  Taro.navigateTo({
    url: `${RouterPath.payrollManageDetail}?id=${
      item.id
    }&date=${'Fri Oct 17 2025 18:49:01 GMT+0800'}`,
    url: `${RouterPath.payrollManageDetail}?id=${id}&operatorToken=${operatorToken}`,
  });
}
</script>
<style lang="scss">
@import '@/styles/common.scss';
.taskManage-page-wrapper {
  .dark-btn {
    margin-left: 12px;
  }
}
</style>
apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue
@@ -2,9 +2,48 @@
  <LoadingLayout>
    <ContentView>
      <div class="payroll-manage-detail-top">
        <div class="payroll-manage-detail-top-title"></div>
        <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 class="payroll-manage-detail-top-content-item">
            <div class="payroll-manage-detail-top-content-item-label">任务名称:</div>
            <div class="payroll-manage-detail-top-content-item-text">{{ form.name }}</div>
          </div>
          <div class="payroll-manage-detail-top-content-item">
            <div class="payroll-manage-detail-top-content-item-label">服务费金额:</div>
            <div class="payroll-manage-detail-top-content-item-text">
              {{ `${form.serviceFee ?? 0}${EnumBillingMethodText[form.billingMethod]}` }}
            </div>
          </div>
          <div class="payroll-manage-detail-top-content-item">
            <div class="payroll-manage-detail-top-content-item-label">结算人数:</div>
            <div class="payroll-manage-detail-top-content-item-text">
              {{ `${form.settlementCount ?? 0}人` }}
            </div>
          </div>
          <div class="payroll-manage-detail-top-content-item">
            <div class="payroll-manage-detail-top-content-item-label">结算金额:</div>
            <div class="payroll-manage-detail-top-content-item-text">
              {{ `${toThousand(form.settlementAmount ?? 0)}元` }}
            </div>
          </div>
          <div
            class="payroll-manage-detail-top-content-item"
            v-if="form.auditStatus !== EnumTaskSettlementAuditStatus.Wait"
          >
            <div class="payroll-manage-detail-top-content-item-label">审核时间:</div>
            <div class="payroll-manage-detail-top-content-item-text">
              {{ dayjs(form.auditTime).format('YYYY-MM-DD') }}
            </div>
          </div>
          <div
            class="payroll-manage-detail-top-content-item"
            v-if="form.settlementStatus === EnumTaskSettlementStatus.Completed"
          >
            <div class="payroll-manage-detail-top-content-item-label">结算时间:</div>
            <div class="payroll-manage-detail-top-content-item-text">
              {{ dayjs(form.settlementTime).format('YYYY-MM-DD') }}
            </div>
          </div>
        </div>
      </div>
      <ChunkTitle title="人员列表" />
@@ -19,22 +58,40 @@
          :name="item.name"
          :gender="item.gender"
          :isReal="item.isReal"
          :contactPhoneNumber="item.contactPhoneNumber"
          :checkReceiveStatus="item.checkReceiveStatus"
          :totalWorkHours="item.totalWorkHours"
          :settlementAmount="item.settlementAmount"
        />
      </template>
    </InfiniteLoading>
    <PageFooter v-if="form.">
      <PageFooterBtn type="primary" @click="auditTaskSettlement(EnumTaskSettlementAuditStatus.Pass)"
        >审核通过</PageFooterBtn
      >
      <PageFooterBtn
        type="primary"
        plain
        @click="auditTaskSettlement(EnumTaskSettlementAuditStatus.Fail)"
        >驳回</PageFooterBtn
      >
    </PageFooter>
  </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 * as taskUserServices from '@12333/services/apiV2/taskUser';
import * as taskServices from '@12333/services/apiV2/task';
import { useInfiniteLoading } from '@12333/hooks';
import {
  EnumBillingMethodText,
  EnumTaskSettlementAuditStatus,
  EnumTaskSettlementStatus,
} from '@12333/constants';
import PayrollManageDetailCard from '../components/PayrollManageDetailCard.vue';
import { EnumTaskCheckReceiveStatus } from '@12333/constants';
import { setOSSLink } from '@12333/utils';
import { Message, paginateList, setOSSLink, toThousand } from '@12333/utils';
import { useQuery } from '@tanstack/vue-query';
import dayjs from 'dayjs';
import { goBack } from '@/utils';
defineOptions({
  name: 'InnerPage',
@@ -42,27 +99,124 @@
const router = Taro.useRouter();
const id = router.params?.id ?? '';
const date = router.params?.date ?? '';
const checkReceiveStatus = Number(router.params?.checkReceiveStatus);
const operatorToken = router.params?.operatorToken ?? '';
const { infiniteLoadingProps } = useInfiniteLoading(
const form = reactive({
  name: '',
  serviceFee: 0,
  settlementCount: 0,
  settlementAmount: 0,
  settlementTime: '',
  auditTime: '',
  auditStatus: 0,
  billingMethod: 0,
  settlementStatus: 0,
});
const {
  isLoading,
  isError,
  data: detail,
  refetch,
} = useQuery({
  queryKey: ['taskUserServices/getSettlementTaskUsers', id, operatorToken],
  queryFn: async () => {
    let res = await taskUserServices.getSettlementTaskUsers(
      { id: id, operatorToken: operatorToken },
      {
        showLoading: false,
      }
    );
    if (res) {
      form.name = res.detail?.name;
      form.serviceFee = res.detail?.serviceFee;
      form.settlementCount = res.data?.length;
      form.settlementAmount = res.detail?.settlementAmount;
      form.settlementTime = res.detail?.settlementTime;
      form.auditTime = res.detail?.auditTime;
      form.auditStatus = res.detail?.auditStatus;
      form.settlementStatus = res.detail?.settlementStatus;
      form.billingMethod = res.detail?.billingMethod;
    }
    return res;
  },
  placeholderData: () => ({} as API.GetSettlementTaskUsersQueryResult),
});
const { infiniteLoadingProps, invalidateQueries } = 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,
    return Promise.resolve({
      pageModel: {
        rows: 20,
        page: pageParam,
        totalCount: detail.value?.data.length,
      },
      data: paginateList(detail.value?.data, pageParam, 20),
    });
  },
  {
    queryKey: ['taskCheckReceiveServices/getCheckReceiveTask'],
    enabled: computed(() => !!detail.value?.data),
  }
);
async function auditTaskSettlement(auditStatus: EnumTaskSettlementAuditStatus) {
  try {
    let params: API.AuditTaskSettlementCommand = {
      id: id,
      operatorToken: operatorToken,
      auditStatus: auditStatus,
    };
    let res = await taskServices.auditTaskSettlement(params);
    if (res) {
      Message.success('操作成功', {
        onClosed() {
          goBack();
        },
      });
    }
  } catch (error) {}
}
</script>
<style lang="scss">
@import '@/styles/common.scss';
.payrollManageDetail-page-wrapper {
  .payroll-manage-detail-top {
    padding: 24px 32px;
    margin-bottom: 24px;
    background-color: #fff;
    border-radius: 12px;
    .payroll-manage-detail-top-title {
      font-size: 32px;
      font-weight: bold;
      margin-bottom: 14px;
    }
    .payroll-manage-detail-top-content {
      .payroll-manage-detail-top-content-item {
        font-size: 24px;
        line-height: 40px;
        .payroll-manage-detail-top-content-item-label {
          display: inline-flex;
          color: boleGetCssVar('text-color', 'primary');
        }
        .payroll-manage-detail-top-content-item-text {
          display: inline-flex;
          color: boleGetCssVar('text-color', 'regular');
        }
      }
    }
  }
}
</style>
apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue
@@ -277,7 +277,6 @@
  ChooseInputWithCheckbox,
} from '@12333/components';
import { FormValidator, Message } from '@12333/utils';
import * as flexWorkerServices from '@12333/services/api/FlexWorker';
import * as taskServices from '@12333/services/apiV2/task';
import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types';
import Taro from '@tarojs/taro';
packages/constants/apiEnum.ts
@@ -819,6 +819,16 @@
  Completed = 20,
}
/** 发薪状态 */
export enum GetSettlementTasksQueryPaymentStatus {
  /**待审核 */
  WaitAudit = 10,
  /**已审核 */
  CompletedAudit = 20,
  /**已发放 */
  CompletedRelease = 30,
}
/** 我的报名列表-详情-按钮类型 */
export enum GetTaskInfoQueryResultApplyButton {
  /**待确认 */
packages/services/apiV2/enterpriseWallet.ts
@@ -195,6 +195,21 @@
  });
}
/** 导出企业余额详情 POST /api/user/enterpriseWallet/exportEnterpriseBalanceDetails */
export async function exportEnterpriseBalanceDetails(
  body: API.ExportEnterpriseBalanceDetailsCommand,
  options?: API.RequestConfig
) {
  return request<string>('/api/user/enterpriseWallet/exportEnterpriseBalanceDetails', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 支付宝通知回传 GET /api/user/enterpriseWallet/getAlipayNotify */
export async function getAlipayNotify(
  body: API.GetAlipayNotifyCommand,
@@ -493,18 +508,6 @@
      ...(options || {}),
    }
  );
}
/** 测试微信支付 POST /api/user/enterpriseWallet/testWeChatPay */
export async function testWeChatPay(body: API.TestWeChatPayCommand, options?: API.RequestConfig) {
  return request<boolean>('/api/user/enterpriseWallet/testWeChatPay', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 修改企业微信支付钱包结算账户 POST /api/user/enterpriseWallet/updateEnterpriseWeChatPayWalletBankAccountInfo */
packages/services/apiV2/typings.d.ts
@@ -241,8 +241,10 @@
  interface APIgetSettlementTaskUsersParams {
    /** 结算订单Id */
    id?: string;
    /** 结算通道 */
    settlementAccess?: EnumEnterpriseWalletAccess;
    /** 是否导入用户 */
    isImport?: boolean;
    /** 操作令牌 */
    operatorToken?: string;
  }
  interface APIgetTaskEnterpriseParams {
@@ -350,6 +352,8 @@
    auditStatus?: EnumTaskSettlementAuditStatus;
    /** 审核备注 */
    auditRemark?: string;
    /** 操作令牌 */
    operatorToken?: string;
  }
  interface BaiduOcrBusinessLicenseResultModel {
@@ -1331,6 +1335,15 @@
    VERIFY_FAIL = 1,
    /**验证中,商户可发起提现尝试 */
    VERIFYING = 2,
  }
  interface ExportEnterpriseBalanceDetailsCommand {
    /** 企业钱包Id */
    enterpriseWalletId?: string;
    /** 创建时间-起始 */
    createdTimeStart?: string;
    /** 创建时间-截止 */
    createdTimeEnd?: string;
  }
  interface ExportTaskCheckReceiveTaskUsersCommand {
@@ -3492,6 +3505,7 @@
    applyEndTime?: string;
    checkReceiveMethod?: EnumTaskCheckReceiveMethod;
    paymentMethod?: EnumTaskPaymentMethod;
    settlementAccess?: EnumEnterpriseWalletAccess;
    /** 任务描述 */
    description?: string;
    /** 任务地点名称 */
@@ -3544,6 +3558,7 @@
    applyEndTime?: string;
    checkReceiveMethod?: EnumTaskCheckReceiveMethod;
    paymentMethod?: EnumTaskPaymentMethod;
    settlementAccess?: EnumEnterpriseWalletAccess;
    /** 任务描述 */
    description?: string;
    /** 任务地点名称 */
@@ -4920,6 +4935,7 @@
    applyEndTime?: string;
    checkReceiveMethod?: EnumTaskCheckReceiveMethod;
    paymentMethod?: EnumTaskPaymentMethod;
    settlementAccess?: EnumEnterpriseWalletAccess;
    /** 任务描述 */
    description?: string;
    billingMethod?: EnumBillingMethod;
@@ -4969,6 +4985,7 @@
    applyEndTime?: string;
    checkReceiveMethod?: EnumTaskCheckReceiveMethod;
    paymentMethod?: EnumTaskPaymentMethod;
    settlementAccess?: EnumEnterpriseWalletAccess;
    /** 任务描述 */
    description?: string;
    billingMethod?: EnumBillingMethod;
@@ -5011,6 +5028,7 @@
    applyEndTime?: string;
    checkReceiveMethod?: EnumTaskCheckReceiveMethod;
    paymentMethod?: EnumTaskPaymentMethod;
    settlementAccess?: EnumEnterpriseWalletAccess;
    /** 任务描述 */
    description?: string;
    billingMethod?: EnumBillingMethod;
@@ -5617,6 +5635,7 @@
  interface GetSettlementTasksQuery {
    /** 关键字 */
    keywords?: string;
    paymentStatus?: GetSettlementTasksQueryPaymentStatus;
    settlementOrderStatus?: EnumTaskSettlementOrderStatus;
    settlementStatus?: EnumTaskSettlementStatus;
    checkReceiveStatus?: EnumTaskCheckReceiveStatus;
@@ -5627,7 +5646,17 @@
    pageModel?: PagedListQueryPageModel;
  }
  enum GetSettlementTasksQueryPaymentStatus {
    /**待审核 */
    WaitAudit = 10,
    /**已审核 */
    CompletedAudit = 20,
    /**已发放 */
    CompletedRelease = 30,
  }
  interface GetSettlementTasksQueryResult {
    objectData?: GetSettlementTasksQueryResultObjectData;
    pageModel?: PagedListQueryResultPageModel;
    /** 数据 */
    data?: GetSettlementTasksQueryResultItem[];
@@ -5659,6 +5688,16 @@
    settlementRemark?: string;
    /** 结算人数 */
    settlementUserCount?: number;
    auditStatus?: EnumTaskSettlementAuditStatus;
  }
  interface GetSettlementTasksQueryResultObjectData {
    /** 待审核 */
    waitAuditCount?: number;
    /** 已审核 */
    completedAuditCount?: number;
    /** 已发放 */
    completedReleaseCount?: number;
  }
  interface GetSettlementTaskUsersQueryResult {
@@ -5685,6 +5724,7 @@
    verifyWorkHours?: number;
    /** 超时服务费 */
    timeoutServiceFee?: number;
    settlementAccess?: EnumEnterpriseWalletAccess;
    settlementOrderStatus?: EnumTaskSettlementOrderStatus;
    /** 结算单名称 */
    settlementOrderName?: string;
@@ -5697,6 +5737,13 @@
    settlementStatus?: EnumTaskSettlementStatus;
    /** 结算时间 */
    settlementTime?: string;
    auditStatus?: EnumTaskSettlementAuditStatus;
    /** 审核备注 */
    auditRemark?: string;
    /** 审核时间 */
    auditTime?: string;
    /** 审核操作人 */
    auditOperator?: string;
    /** 备注 */
    settlementRemark?: string;
  }
@@ -5708,12 +5755,20 @@
    taskInfoUserId?: string;
    /** 用户信息Id */
    userId?: string;
    /** 头像 */
    avatar?: string;
    /** 姓名 */
    name?: string;
    /** 身份证号 */
    identity?: string;
    /** 手机号 */
    contactPhoneNumber?: string;
    gender?: EnumUserGender;
    /** 年龄 */
    age?: number;
    /** 是否实名 */
    isReal?: boolean;
    realMethod?: EnumUserRealMethod;
    /** 累计工时 */
    totalWorkHours?: number;
    /** 所属银行 */
@@ -5908,6 +5963,7 @@
    applyEndTime?: string;
    checkReceiveMethod?: EnumTaskCheckReceiveMethod;
    paymentMethod?: EnumTaskPaymentMethod;
    settlementAccess?: EnumEnterpriseWalletAccess;
    /** 任务描述 */
    description?: string;
    /** 创建时间 */
@@ -6041,6 +6097,7 @@
    applyEndTime?: string;
    checkReceiveMethod?: EnumTaskCheckReceiveMethod;
    paymentMethod?: EnumTaskPaymentMethod;
    settlementAccess?: EnumEnterpriseWalletAccess;
    /** 任务描述 */
    description?: string;
    releaseStatus?: EnumTaskReleaseStatus;
@@ -6860,6 +6917,13 @@
    id?: string;
  }
  interface ResetUserOperatorPasswordsCommand {
    /** Id */
    ids?: string[];
    /** 操作密码 */
    operatorPassword?: string;
  }
  interface ResetUserPasswordsCommand {
    /** Id */
    ids?: string[];
@@ -7246,7 +7310,7 @@
    /** 任务地点名称 */
    addressName: string;
    /** 任务地点详细地址 */
    addressDetail: string;
    addressDetail?: string;
    /** 经度 */
    longitude?: number;
    /** 纬度 */
@@ -7261,6 +7325,7 @@
    applyEndTime?: string;
    checkReceiveMethod?: EnumTaskCheckReceiveMethod;
    paymentMethod?: EnumTaskPaymentMethod;
    settlementAccess?: EnumEnterpriseWalletAccess;
    /** 任务描述 */
    description?: string;
    /** Id */
@@ -7734,8 +7799,6 @@
    /** 备注 */
    remark?: string;
  }
  type TestWeChatPayCommand = Record<string, any>;
  interface UpdateEnterpriseWeChatPayWalletBankAccountInfoCommand {
    /** 企业Id */
packages/services/apiV2/user.ts
@@ -191,6 +191,21 @@
  });
}
/** 重置用户操作密码 POST /api/user/user/resetUserOperatorPasswords */
export async function resetUserOperatorPasswords(
  body: API.ResetUserOperatorPasswordsCommand,
  options?: API.RequestConfig
) {
  return request<number>('/api/user/user/resetUserOperatorPasswords', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 重置用户密码 POST /api/user/user/resetUserPasswords */
export async function resetUserPasswords(
  body: API.ResetUserPasswordsCommand,