wupengfei
1 天以前 fb243f3345c6f3ed7e7c8c2d98c39b5afc782b9a
Merge branch 'master' of http://120.26.58.240:8888/r/flexJobMiniApp
16个文件已添加
56个文件已修改
4203 ■■■■■ 已修改文件
apps/bMiniApp/.eslintrc-auto-import.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/CHANGELOG.md 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/auto-imports.d.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/package.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/project.config.json 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/project.private.config.json 96 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/app.config.ts 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/assets/workbenches/icon-payroll.png 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/components/JobDetailContent/JobDetailContent.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/components/JobDetailContent/components/curriculumView.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/components/Layout/PageLayout.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/constants/router.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/constants/tabBar.ts 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/hooks/router.ts 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/pages/workbenches/InnerPage.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/flexJobDetail.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/payrollManage/payrollManage/InnerPage.vue 147 ●●●●● 补丁 | 查看 | 原始文档 | 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 222 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/payrollManageDetail.config.ts 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/payrollManageDetail.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/components/TaskCheckHistoryCard.vue 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/components/TaskCheckPersonalView.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/constants/index.ts 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/taskUserSubmitCheckHistories/InnerPage.vue 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/taskUserSubmitCheckHistories/taskUserSubmitCheckHistories.config.ts 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/taskUserSubmitCheckHistories/taskUserSubmitCheckHistories.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/utils/page.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/.eslintrc-auto-import.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/CHANGELOG.md 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/auto-imports.d.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/package.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/project.config.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/project.private.config.json 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/components/Uploader/Uploader.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/constants/img.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/constants/tabBar.ts 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/hooks/router.ts 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/utils/page.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/Card/FlexJobTopView.vue 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/Input/ChooseInputWithDatePicker.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/Input/ChooseInputWithPicker.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/List/IncomeDetailListItem.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/constants/apiEnum.ts 240 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/constants/enterpriseWallet.ts 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/constants/enum.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/constants/index.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/constants/task.ts 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/hooks/task.ts 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/enterpriseWallet.ts 197 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/index.ts 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/settings.ts 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/sms.ts 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/task.ts 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/taskCheckReceive.ts 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/typings.d.ts 1983 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/user.ts 117 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/userWallet.ts 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/utils/LoggerRecord/index.ts 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/utils/file.ts 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
patches/@nutui__nutui-taro@4.3.13.patch 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pnpm-lock.yaml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/.eslintrc-auto-import.json
@@ -124,6 +124,7 @@
    "useAccessAuthentication": true,
    "DirectiveBinding": true,
    "MaybeRef": true,
    "MaybeRefOrGetter": true
    "MaybeRefOrGetter": true,
    "TabBarPageRouterList": true
  }
}
apps/bMiniApp/CHANGELOG.md
@@ -1,5 +1,37 @@
## [1.1.5](http://120.26.58.240:8888/r/flexJobMiniApp/compare/@12333/bMiniApp/v1.1.4...@12333/bMiniApp/v1.1.5) (2025-10-19)
### Bug Fixes
* 简历 ([a6d873f](http://120.26.58.240:8888/r/flexJobMiniApp/commits/a6d873f75b70ab5e1dc4a1e5fa610eddc7c9274e))
* 验收管理 ([6d85681](http://120.26.58.240:8888/r/flexJobMiniApp/commits/6d85681b282960f5b646d9ed53a4585b36063c69))
* 验收管理 ([50030f8](http://120.26.58.240:8888/r/flexJobMiniApp/commits/50030f826efe2e1dbf3b3fbcb50cff6ff94c1559))
* 验收管理 ([40ef0e2](http://120.26.58.240:8888/r/flexJobMiniApp/commits/40ef0e230f91d5ff0cb196fad95d1f9c2bdcec10))
* 验收管理 ([d33b55e](http://120.26.58.240:8888/r/flexJobMiniApp/commits/d33b55e5f1a22f77cb51c3da1a03a4fefccce71d))
* 验收管理 ([92b51e4](http://120.26.58.240:8888/r/flexJobMiniApp/commits/92b51e47eb0e53e1e8e13aa0f9135603e1bb03a0))
* bug ([82e6132](http://120.26.58.240:8888/r/flexJobMiniApp/commits/82e613291dbaca4bc0e9964b0111037a94a68918))
* bug ([73a4d14](http://120.26.58.240:8888/r/flexJobMiniApp/commits/73a4d1404ac13115388a9e712780e21b9b6e53b9))
* bug ([a5c9763](http://120.26.58.240:8888/r/flexJobMiniApp/commits/a5c976314d151c00dd66a3772aa3b793b81d31e8))
* bug ([5a681c9](http://120.26.58.240:8888/r/flexJobMiniApp/commits/5a681c9bd93a5a1ad1949fe07b47fc583b12ed61))
* bug ([f32357c](http://120.26.58.240:8888/r/flexJobMiniApp/commits/f32357c9f9a2c1e62ff8512d6cce65f4e65e7754))
* bug ([a69bf92](http://120.26.58.240:8888/r/flexJobMiniApp/commits/a69bf92c8907eb1fed227afb156ff0e1c5821c24))
* bug ([d2bf817](http://120.26.58.240:8888/r/flexJobMiniApp/commits/d2bf81782096dd51d1c995194bc134ecb11c680b))
### Features
* 1.2.0.1 ([6999f1f](http://120.26.58.240:8888/r/flexJobMiniApp/commits/6999f1f04fc3ce40359c156bf008c70ee19fabf8))
* 1.2.0.1 ([28a1ee0](http://120.26.58.240:8888/r/flexJobMiniApp/commits/28a1ee009fdeb6bbd71e8263be704e2988204e04))
* 1.2.0.1 ([ae51226](http://120.26.58.240:8888/r/flexJobMiniApp/commits/ae51226ce036e0201e94b60ffa92b92e893767ee))
* 1.2.0.1 ([4642e3d](http://120.26.58.240:8888/r/flexJobMiniApp/commits/4642e3d3f2ea62676d277fed9b6e25b202699e56))
* 1.2.0.1 ([41d26c8](http://120.26.58.240:8888/r/flexJobMiniApp/commits/41d26c8ef752828901f2b683d42d15c18542f3b7))
* 1.2.0.1 ([e2cbcd6](http://120.26.58.240:8888/r/flexJobMiniApp/commits/e2cbcd64dd60014d82bd898ae51fd827e01e9c18))
* 1.2.0.1 ([ff185cf](http://120.26.58.240:8888/r/flexJobMiniApp/commits/ff185cfb6950ad2d7472f83c2bbf3c0364cde1f7))
* 1.2.0.1 ([ab9a81a](http://120.26.58.240:8888/r/flexJobMiniApp/commits/ab9a81adf064bc1905dbcec39e97371c3e1d5c5d))
* 去除验证码登录 ([a8c9fa1](http://120.26.58.240:8888/r/flexJobMiniApp/commits/a8c9fa1d7dcb4beb01b1810372a0a7e02e9a0806))
## [1.1.4](http://120.26.58.240:8888/r/flexJobMiniApp/compare/@12333/bMiniApp/v1.1.2...@12333/bMiniApp/v1.1.4) (2025-10-15)
apps/bMiniApp/auto-imports.d.ts
@@ -32,6 +32,7 @@
  const OssAssets: typeof import('./src/constants/img')['OssAssets']
  const RouterPath: typeof import('./src/constants/router')['RouterPath']
  const TabBarPageRouter: typeof import('./src/constants/tabBar')['TabBarPageRouter']
  const TabBarPageRouterList: typeof import('./src/constants/tabBar')['TabBarPageRouterList']
  const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate']
  const computed: typeof import('vue')['computed']
  const createApp: typeof import('vue')['createApp']
@@ -139,6 +140,7 @@
    readonly OssAssets: UnwrapRef<typeof import('./src/constants/img')['OssAssets']>
    readonly RouterPath: UnwrapRef<typeof import('./src/constants/router')['RouterPath']>
    readonly TabBarPageRouter: UnwrapRef<typeof import('./src/constants/tabBar')['TabBarPageRouter']>
    readonly TabBarPageRouterList: UnwrapRef<typeof import('./src/constants/tabBar')['TabBarPageRouterList']>
    readonly acceptHMRUpdate: UnwrapRef<typeof import('pinia')['acceptHMRUpdate']>
    readonly computed: UnwrapRef<typeof import('vue')['computed']>
    readonly createApp: UnwrapRef<typeof import('vue')['createApp']>
apps/bMiniApp/package.json
@@ -1,6 +1,6 @@
{
  "name": "@12333/bMiniApp",
  "version": "1.1.4",
  "version": "1.1.5",
  "private": true,
  "description": "",
  "templateInfo": {
apps/bMiniApp/project.config.json
@@ -3,8 +3,8 @@
    "description": "",
    "setting": {
        "urlCheck": false,
        "es6": true,
        "enhance": true,
        "es6": false,
        "enhance": false,
        "postcss": false,
        "preloadBackgroundData": false,
        "minified": false,
@@ -37,7 +37,11 @@
        "showES6CompileOption": false,
        "useCompilerPlugins": false,
        "ignoreUploadUnusedFiles": true,
        "condition": false
        "condition": false,
        "compileWorklet": false,
        "localPlugins": false,
        "swc": false,
        "disableSWC": true
    },
    "compileType": "miniprogram",
    "editorSetting": {
@@ -46,11 +50,12 @@
    },
    "srcMiniprogramRoot": "dist/",
    "condition": {},
    "libVersion": "3.1.0",
    "libVersion": "3.9.3",
    "packOptions": {
        "ignore": [],
        "include": []
    },
    "appid": "wx3669dd12a0915f7d",
    "projectname": "bMiniApp"
    "projectname": "bMiniApp",
    "simulatorPluginLibVersion": {}
}
apps/bMiniApp/project.private.config.json
@@ -3,64 +3,29 @@
    "projectname": "bMiniApp",
    "setting": {
        "compileHotReLoad": true,
        "bigPackageSizeSupport": 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/flexJob/flexJobDetail/flexJobDetail",
                    "query": "userId=700a3a67-5da5-49d2-a65a-08ddd661238b",
                    "launchMode": "default",
                    "scene": null
                },
                {
                    "name": "灵工管理",
                    "pathName": "subpackages/flexJobManage/flexJobManage/flexJobManage",
                    "name": "发布任务",
                    "pathName": "subpackages/task/publishTask/publishTask",
                    "query": "",
                    "launchMode": "default",
                    "scene": null
                },
                {
                    "name": "应聘管理详情",
                    "pathName": "subpackages/jobApplicationManage/jobApplicationDetail/jobApplicationDetail",
                    "query": "taskId=04c75425-e783-4dbf-0f16-08ddd626b756",
                    "launchMode": "default",
                    "scene": null
                },
                {
                    "name": "设置",
                    "pathName": "subpackages/mine/setting/setting",
                    "query": "",
                    "launchMode": "default",
                    "scene": null
                },
                {
                    "name": "安排任务",
                    "pathName": "subpackages/task/batchTaskList/batchTaskList",
                    "query": "id=57a8f533-2a46-7a88-e008-3a1775810dd2",
                    "launchMode": "default",
                    "scene": null
                },
                {
                    "name": "任务管理",
                    "pathName": "subpackages/task/taskManage/taskManage",
                    "query": "",
                    "launchMode": "default",
                    "scene": null
                },
                {
                    "name": "验收人员详情",
                    "pathName": "subpackages/task/taskHandleCheckDetail/taskHandleCheckDetail",
                    "query": "id=57a8f533-2a46-7a88-e008-3a1775810dd2",
                    "launchMode": "default",
                    "scene": null
                },
                {
                    "name": "验收详情",
                    "pathName": "subpackages/task/taskCheckDetail/taskCheckDetail",
                    "query": "id=57a8f533-2a46-7a88-e008-3a1775810dd2",
                    "launchMode": "default",
                    "scene": null
                },
@@ -72,30 +37,9 @@
                    "scene": null
                },
                {
                    "name": "我的收藏",
                    "pathName": "subpackages/mine/mineFavorites/mineFavorites",
                    "query": "",
                    "launchMode": "default",
                    "scene": null
                },
                {
                    "name": "工作台",
                    "pathName": "pages/workbenches/workbenches",
                    "query": "",
                    "launchMode": "default",
                    "scene": null
                },
                {
                    "name": "发布招聘",
                    "pathName": "subpackages/task/publishTask/publishTask",
                    "query": "",
                    "launchMode": "default",
                    "scene": null
                },
                {
                    "name": "应聘管理",
                    "pathName": "subpackages/jobApplicationManage/jobApplicationManage/jobApplicationManage",
                    "query": "",
                    "name": "验收详情",
                    "pathName": "subpackages/task/taskCheckDetail/taskCheckDetail",
                    "query": "id=927b9898-1e9f-4aec-99aa-08ddf4e125c9&date=2025-10-19&checkReceiveStatus=10",
                    "launchMode": "default",
                    "scene": null
                }
apps/bMiniApp/src/app.config.ts
@@ -94,6 +94,7 @@
        'taskHandleCheckDetail/taskHandleCheckDetail',
        'taskManage/taskManage',
        'batchTaskList/batchTaskList',
        'taskUserSubmitCheckHistories/taskUserSubmitCheckHistories',
      ],
    },
    {
@@ -120,6 +121,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/components/JobDetailContent/JobDetailContent.vue
@@ -48,6 +48,7 @@
          :photos="photos"
          :height="height"
          :weight="weight"
          :videos="videos"
        />
      </ProTabPane>
      <ProTabPane :title="`经历`" pane-key="2">
@@ -93,6 +94,7 @@
  workSeniority?: string;
  workExperience?: string;
  photos?: string[];
  videos?: string[];
  /** 身高 */
  height?: number;
  /** 体重 */
apps/bMiniApp/src/components/JobDetailContent/components/curriculumView.vue
@@ -67,6 +67,22 @@
            </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>
@@ -78,6 +94,7 @@
import Taro from '@tarojs/taro';
import { EnumPersonalFreeTimeText, EnumPersonalJobSeekingStatusText } from '@12333/constants';
import { setOSSLink } from '@12333/utils';
import { Video } from '@tarojs/components';
defineOptions({
  name: 'curriculumView',
@@ -91,6 +108,7 @@
  workSeniority?: string;
  workExperience?: string;
  photos?: string[];
  videos?: string[];
  /** 身高 */
  height?: number;
  /** 体重 */
@@ -101,10 +119,12 @@
  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>
apps/bMiniApp/src/components/Layout/PageLayout.vue
@@ -44,7 +44,7 @@
import { commonNavigationBarProps } from '../NavigationBar/commonNavigationBar';
import { useSystemStore } from '@/stores/modules/system';
import Taro from '@tarojs/taro';
import { TabBarPageRouter } from '@/constants';
import { TabBarPageRouterList } from '@/constants';
import { useAuth } from '@/hooks';
import { Portal } from 'senin-mini/components';
import { usePickProps } from 'senin-mini/hooks';
@@ -89,7 +89,7 @@
const router = Taro.useRouter();
const pageHeightWithTabBar = computed(() =>
  Object.values(TabBarPageRouter).some((x) => x.toLowerCase() === router.path.toLowerCase())
  TabBarPageRouterList.some((x) => x.toLowerCase() === router.path.toLowerCase())
);
const navigationBarHeight = computed(
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',
@@ -47,6 +50,7 @@
  taskHandleCheckDetail = '/subpackages/task/taskHandleCheckDetail/taskHandleCheckDetail',
  taskManage = '/subpackages/task/taskManage/taskManage',
  batchTaskList = '/subpackages/task/batchTaskList/batchTaskList',
  taskUserSubmitCheckHistories = '/subpackages/task/taskUserSubmitCheckHistories/taskUserSubmitCheckHistories',
  jobApplicationManage = '/subpackages/jobApplicationManage/jobApplicationManage/jobApplicationManage',
  jobApplicationDetail = '/subpackages/jobApplicationManage/jobApplicationDetail/jobApplicationDetail',
apps/bMiniApp/src/constants/tabBar.ts
@@ -3,3 +3,9 @@
  Workbenches: '/pages/workbenches/workbenches',
  Mine: '/pages/mine/index',
};
export const TabBarPageRouterList = [
  TabBarPageRouter.Home,
  TabBarPageRouter.Workbenches,
  TabBarPageRouter.Mine,
];
apps/bMiniApp/src/hooks/router.ts
@@ -1,15 +1,21 @@
import Taro from '@tarojs/taro';
import { TabBarPageRouter } from '@/constants';
import { TabBarPageRouter, TabBarPageRouterList } from '@/constants';
import { useSystemStore } from '@/stores/modules/system';
import { httpLoggerRecord } from '@12333/utils';
export function useSwitchTab() {
  const systemStore = useSystemStore();
  const switchTab = (option: Taro.switchTab.Option) => {
    const index = Object.values(TabBarPageRouter).findIndex((x) => option.url.includes(x));
    const index = TabBarPageRouterList.findIndex((x) => option.url.includes(x));
    console.log('index: ', index);
    systemStore.setTabIndex(index);
    Taro.switchTab(option);
    Taro.switchTab(option).then(() => {
      systemStore.setTabIndex(index);
    });
    httpLoggerRecord.info({
      message: `[switchTab]`,
      args: [option, { index, TabBarPageRouter }],
    });
  };
  return switchTab;
}
apps/bMiniApp/src/pages/workbenches/InnerPage.vue
@@ -24,13 +24,22 @@
          />
          <TaskDetailWelfareItem
            :icon="IconTaskManage"
            text="任务管理"
            text="任务安排"
            @click="goPage(RouterPath.taskManage)"
          />
          <TaskDetailWelfareItem
            :icon="IconAcceptManage"
            text="验收管理"
            @click="goPage(RouterPath.taskCheck)"
          />
        </div>
      </CellChunk>
      <CellChunk title="发薪">
        <div class="workbenches-cell-list">
          <TaskDetailWelfareItem
            :icon="IconPayrollManage"
            text="发薪管理"
            @click="goPage(RouterPath.payrollManage)"
          />
        </div>
      </CellChunk>
@@ -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/flexJob/flexJobDetail/flexJobDetail.vue
@@ -22,6 +22,7 @@
        :photos="userResumeInfo.photos"
        :height="userResumeInfo.height"
        :weight="userResumeInfo.weight"
        :videos="userResumeInfo.videos"
        :taskInfoUsers="userResumeInfo.taskInfoUsers"
      >
        <template #footer>
apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue
@@ -20,6 +20,7 @@
      :photos="userResumeInfo.photos"
      :height="userResumeInfo.height"
      :weight="userResumeInfo.weight"
      :videos="userResumeInfo.videos"
      :taskInfoUsers="userResumeInfo.taskInfoUsers"
      :isCollapse="true"
    >
apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue
@@ -20,6 +20,7 @@
      :photos="userResumeInfo.photos"
      :height="userResumeInfo.height"
      :weight="userResumeInfo.weight"
      :videos="userResumeInfo.videos"
      :taskInfoUsers="userResumeInfo.taskInfoUsers"
      :isCollapse="true"
    >
apps/bMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue
New file
@@ -0,0 +1,78 @@
<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">{{ 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">
              {{ `¥${toThousand(settlementAmount)}` }}
            </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';
import { toThousand } from '@12333/utils';
defineOptions({
  name: 'PayrollManageDetailCard',
});
type Props = {
  avatar?: string;
  name?: string;
  gender?: EnumUserGender;
  isReal?: boolean;
  totalWorkHours: number;
  settlementAmount?: number;
};
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,147 @@
<template>
  <ProTabs
    v-model="queryState.paymentStatus"
    name="task-tab"
    :showPaneContent="false"
    class="task-tabs"
    isTransparent
    title-gutter="8"
    title-scroll
  >
    <ProTabPane
      :title="`待审核(${waitAuditCount})`"
      :pane-key="GetSettlementTasksQueryPaymentStatus.WaitAudit"
    ></ProTabPane>
    <ProTabPane
      :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="queryState.paymentStatus"
  >
    <template #renderItem="{ item }">
      <IncomeDetailListItem
        :title="item.code"
        :funds="item.settlementAmount"
        :item="item.settlementTime ? 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="请输入6位操作密码"
    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 { 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 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;
});
function openPassword(item: API.GetSettlementTasksQueryResultItem) {
  form.passwordVisible = true;
  form.showKeyboard = true;
  form.id = item.id;
}
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;
  } finally {
    form.password = '';
    form.showKeyboard = false;
  }
}
async function goPayrollManageDetail(id: string, operatorToken: string) {
  Taro.navigateTo({
    url: `${RouterPath.payrollManageDetail}?id=${id}&operatorToken=${operatorToken}`,
  });
}
</script>
<style lang="scss">
@import '@/styles/common.scss';
</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,222 @@
<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 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="人员列表" />
    </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"
          :totalWorkHours="item.totalWorkHours"
          :settlementAmount="item.settlementAmount"
        />
      </template>
    </InfiniteLoading>
    <PageFooter v-if="form.auditStatus === EnumTaskSettlementAuditStatus.Wait">
      <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 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 { Message, paginateList, setOSSLink, toThousand } from '@12333/utils';
import { useQuery } from '@tanstack/vue-query';
import dayjs from 'dayjs';
import { goBack } from '@/utils';
defineOptions({
  name: 'InnerPage',
});
const router = Taro.useRouter();
const id = router.params?.id ?? '';
const operatorToken = router.params?.operatorToken ?? '';
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,
      },
    };
    return Promise.resolve({
      pageModel: {
        rows: 20,
        page: pageParam,
        totalCount: detail.value?.data.length,
      },
      data: paginateList(detail.value?.data, pageParam, 20),
    });
  },
  {
    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/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/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue
@@ -9,15 +9,36 @@
      :contactPhoneNumber="contactPhoneNumber"
    >
      <template #actions>
        <nut-button
          v-if="checkReceiveStatus === EnumTaskCheckReceiveStatus.WaitCheckReceive"
          type="primary"
          class="task-check-card-phone-btn"
          >验收</nut-button
        >
        <div v-else class="task-check-card-phone-status" :style="{ color: Colors.Success }">
          {{ EnumTaskCheckReceiveStatusText[checkReceiveStatus] }}
        </div>
        <template v-if="checkReceiveMethod === EnumTaskCheckReceiveMethod.CheckIn">
          <nut-button
            v-if="!checkInTime"
            type="primary"
            class="task-check-card-phone-btn"
            @click.stop="emit('checkInOrOut', CheckInOrOutEventEnum.CheckIn)"
            >签到</nut-button
          >
          <nut-button
            v-else-if="!checkOutTime"
            type="primary"
            class="task-check-card-phone-btn"
            @click.stop="emit('checkInOrOut', CheckInOrOutEventEnum.CheckOut)"
            >签出</nut-button
          >
          <div v-else class="task-check-card-phone-status" :style="{ color: Colors.Success }">
            {{ EnumTaskCheckReceiveStatusText[checkReceiveStatus] }}
          </div>
        </template>
        <template v-else>
          <nut-button
            v-if="checkReceiveStatus === EnumTaskCheckReceiveStatus.WaitCheckReceive"
            type="primary"
            class="task-check-card-phone-btn"
            >验收</nut-button
          >
          <div v-else class="task-check-card-phone-status" :style="{ color: Colors.Success }">
            {{ EnumTaskCheckReceiveStatusText[checkReceiveStatus] }}
          </div>
        </template>
      </template>
    </TaskCheckPersonalView>
  </div>
@@ -30,7 +51,9 @@
  EnumUserGender,
  EnumTaskCheckReceiveStatus,
  EnumTaskCheckReceiveStatusText,
  EnumTaskCheckReceiveMethod,
} from '@12333/constants';
import { CheckInOrOutEventEnum } from '../constants';
defineOptions({
  name: 'TaskCheckCard',
@@ -43,12 +66,18 @@
  isReal?: boolean;
  contactPhoneNumber?: string;
  checkReceiveStatus?: EnumTaskCheckReceiveStatus;
  /** 签到时间 */
  checkInTime?: string;
  /** 签出时间 */
  checkOutTime?: string;
  checkReceiveMethod?: EnumTaskCheckReceiveMethod;
};
const props = withDefaults(defineProps<Props>(), {});
const emit = defineEmits<{
  (e: 'checkReceive'): void;
  (e: 'checkInOrOut', ev: CheckInOrOutEventEnum): void;
}>();
</script>
apps/bMiniApp/src/subpackages/task/components/TaskCheckHistoryCard.vue
New file
@@ -0,0 +1,80 @@
<template>
  <div class="task-check-card-wrapper">
    <TaskCheckPersonalView
      class="task-check-card-view"
      :avatar="avatar"
      :name="name"
      :gender="gender"
      :isReal="isReal"
      :contactPhoneNumber="contactPhoneNumber"
    >
      <template #time v-if="!!checkTime">
        {{ dayjs(checkTime).format('HH:mm') }}
      </template>
      <template #actions>
        <div
          class="task-check-card-phone-status"
          :style="{ color: EnumTaskUserSubmitCheckHistoryTypeColor[type] }"
        >
          {{ EnumTaskUserSubmitCheckHistoryTypeText[type] }}
        </div>
      </template>
    </TaskCheckPersonalView>
  </div>
</template>
<script setup lang="ts">
import dayjs from 'dayjs';
import TaskCheckPersonalView from './TaskCheckPersonalView.vue';
import {
  Colors,
  EnumUserGender,
  EnumTaskUserSubmitCheckHistoryType,
  EnumTaskUserSubmitCheckHistoryTypeText,
  EnumTaskUserSubmitCheckHistoryTypeColor,
} from '@12333/constants';
defineOptions({
  name: 'TaskCheckHistoryCard',
});
type Props = {
  avatar?: string;
  name?: string;
  gender?: EnumUserGender;
  isReal?: boolean;
  contactPhoneNumber?: string;
  type?: EnumTaskUserSubmitCheckHistoryType;
  checkTime?: string;
};
const props = withDefaults(defineProps<Props>(), {});
</script>
<style lang="scss">
@import '@/styles/common.scss';
.task-check-card-wrapper {
  background: #ffffff;
  border-radius: 12px;
  padding: 40px;
  padding-right: 26px;
  margin-bottom: 24px;
  &:last-child {
    margin-bottom: 0;
  }
  .task-check-card-view {
    .task-check-card-phone-container {
      margin-top: 0;
    }
  }
  .task-check-card-phone-status {
    font-size: 24px;
    height: 52px;
    line-height: 52px;
  }
}
</style>
apps/bMiniApp/src/subpackages/task/components/TaskCheckPersonalView.vue
@@ -1,5 +1,8 @@
<template>
  <FlexJobTopView :avatar="avatar" :name="name" :gender="gender" :isReal="isReal">
    <template #time>
      <slot name="time"></slot>
    </template>
    <template #detail>
      <div class="task-check-card-phone-container">
        <div class="task-check-card-phone-wrapper">
apps/bMiniApp/src/subpackages/task/constants/index.ts
New file
@@ -0,0 +1,6 @@
export enum CheckInOrOutEventEnum {
  /**签到 */
  CheckIn = 10,
  /**签出 */
  CheckOut = 20,
}
apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue
@@ -32,6 +32,51 @@
          <div class="form-input-unit">{{ BillingMethodEnumUnit[form.billingMethod] }}</div>
        </div>
      </nut-form-item>
      <template
        v-if="
          form.billingMethod === EnumBillingMethod.Hour ||
          form.billingMethod === EnumBillingMethod.Day
        "
      >
        <nut-form-item
          label="核定工时:"
          class="bole-form-item"
          prop="verifyWorkHours"
          label-width="90"
        >
          <div class="bole-form-input-wrapper">
            <NumberInput
              v-model.trim="form.verifyWorkHours"
              class="nut-input-text bole-input-text"
              placeholder="请输入核定工时"
              :min="0"
              :max="999999999999"
              :precision="2"
              type="text"
            />
            <div class="form-input-unit">{{ '小时/天' }}</div>
          </div>
        </nut-form-item>
        <nut-form-item
          label="超时服务费:"
          class="bole-form-item"
          prop="timeoutServiceFee"
          label-width="90"
        >
          <div class="bole-form-input-wrapper">
            <NumberInput
              v-model.trim="form.timeoutServiceFee"
              class="nut-input-text bole-input-text"
              placeholder="请输入超时服务费"
              :min="0"
              :max="999999999999"
              :precision="2"
              type="text"
            />
            <div class="form-input-unit">{{ '元/小时' }}</div>
          </div>
        </nut-form-item>
      </template>
      <nut-form-item
        label="结算方式:"
        class="bole-form-item"
@@ -134,13 +179,15 @@
        />
      </nut-form-item>
      <nut-form-item
        label="详细地址:"
        label="地点说明:"
        class="bole-form-item"
        prop="addressDetail"
        label-width="90px"
        required
      >
        <nut-input v-model="form.addressDetail" placeholder="请输入详细地址"> </nut-input>
        <nut-input v-model="form.addressDetail" placeholder="请输入地点说明"> </nut-input>
      </nut-form-item>
      <nut-form-item label="任务说明:" class="bole-form-item" prop="description" label-width="90px">
        <nut-textarea v-model="form.description" placeholder="请输入任务说明"> </nut-textarea>
      </nut-form-item>
      <nut-form-item
        label="任务开始日期:"
@@ -152,6 +199,7 @@
          v-model="form.beginTime"
          :minDate="nowDate"
          placeholder="请选择任务开始日期"
          @change="timeChange"
        ></ChooseInputWithDatePicker>
      </nut-form-item>
      <nut-form-item label="任务结束日期:" class="bole-form-item" prop="endTime" label-width="90px">
@@ -160,6 +208,59 @@
          :minDate="nowDate"
          placeholder="请选择任务结束日期"
        ></ChooseInputWithDatePicker>
      </nut-form-item>
      <nut-form-item
        label="报名开始日期:"
        class="bole-form-item"
        prop="applyBeginTime"
        label-width="90px"
      >
        <ChooseInputWithDatePicker
          v-model="form.applyBeginTime"
          :minDate="form.beginTime ? dayjs(form.beginTime).toDate() : nowDate"
          placeholder="请选择报名开始日期"
        ></ChooseInputWithDatePicker>
      </nut-form-item>
      <nut-form-item
        label="报名结束日期:"
        class="bole-form-item"
        prop="applyEndTime"
        label-width="90px"
      >
        <ChooseInputWithDatePicker
          v-model="form.applyEndTime"
          :minDate="form.beginTime ? dayjs(form.beginTime).toDate() : nowDate"
          placeholder="请选择报名结束日期"
        ></ChooseInputWithDatePicker>
      </nut-form-item>
      <nut-form-item
        label="验收方式:"
        class="bole-form-item"
        prop="checkReceiveMethod"
        label-width="90px"
      >
        <nut-radio-group v-model="form.checkReceiveMethod" direction="horizontal">
          <BlRadio
            :label="Number(key)"
            v-for="(val, key) in EnumTaskCheckReceiveMethodText"
            :key="key"
            >{{ val }}</BlRadio
          >
        </nut-radio-group>
      </nut-form-item>
      <nut-form-item
        label="结算方式:"
        class="bole-form-item"
        prop="settlementAccess"
        label-width="90px"
        required
      >
        <ChooseInputWithPicker
          v-model="form.settlementAccess"
          placeholder="请选择结算方式"
          :value-enum="settlementAccessList"
          :disabled="isEdit"
        />
      </nut-form-item>
    </nut-form>
  </ContentScrollView>
@@ -183,6 +284,10 @@
  EnumUserGenderTextOptions,
  EnumSettlementCycleDateWeekArray,
  EnumSettlementCycleDateMonthArray,
  EnumTaskCheckReceiveMethod,
  EnumTaskCheckReceiveMethodText,
  EnumEnterpriseWalletAccess,
  EnumEnterpriseWalletAccessText,
} from '@12333/constants';
import {
  ChooseInputWithPicker,
@@ -194,12 +299,15 @@
  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';
import { goBack } from '@/utils';
import { useAllAreaList, useDictionaryDataSelect } from '@12333/hooks';
import {
  useAllAreaList,
  useDictionaryDataSelect,
  useEnterpriseWalletAccessSelect,
} from '@12333/hooks';
import { useQuery } from '@tanstack/vue-query';
import dayjs from 'dayjs';
@@ -209,12 +317,20 @@
const { userDetail } = useUser();
const { findAreaNameFromCode } = useAllAreaList();
const { settlementAccessList } = useEnterpriseWalletAccessSelect();
const router = Taro.useRouter();
const taskId = router.params?.id ?? '';
const isEdit = !!taskId;
const isCopy = router.params?.isCopy === 'true';
const nowDate = dayjs().toDate();
const applyBeginTimeMinDate = computed(() => {
  return form.applyBeginTime
    ? dayjs(form.applyBeginTime).toDate()
    : form.beginTime
    ? dayjs(form.beginTime).toDate()
    : nowDate;
});
const { dictionaryDataList: WelfareTypeList } = useDictionaryDataSelect({
  categoryCode: CategoryCode.Welfare,
@@ -249,13 +365,22 @@
  weMapInfo: {} as WeMapModel,
  addressDetail: '',
  verifyWorkHours: null as number,
  timeoutServiceFee: null as number,
  description: '',
  checkReceiveMethod: EnumTaskCheckReceiveMethod.CheckIn,
  applyBeginTime: '',
  applyEndTime: '',
  settlementAccess: '' as any as EnumEnterpriseWalletAccess,
});
const rules = reactive<FormRules>({
  name: [{ required: true, message: '请输入任务名称' }],
  genderLimit: [{ required: true, message: '请选择性别要求' }],
  settlementCycleDate: [{ required: true, message: '请设置结算日期' }],
  addressDetail: [{ required: true, message: '请输入详细地址' }],
  settlementAccess: [{ required: true, message: '请选择结算方式' }],
  // addressDetail: [{ required: true, message: '请输入详细地址' }],
  billingMethod: [
    {
      required: true,
@@ -312,6 +437,34 @@
      },
    },
  ],
  applyBeginTime: [
    {
      required: true,
      message: '请选择报名开始日期',
      validator(value) {
        if (!value) return Promise.reject('请选择报名开始日期');
        if (dayjs(value).isBefore(dayjs(form.beginTime)))
          return Promise.reject('报名开始日期需大于任务开始日期');
        if (dayjs(value).isAfter(dayjs(form.endTime)))
          return Promise.reject('报名开始日期需小于任务结束日期');
        return Promise.resolve(true);
      },
    },
  ],
  applyEndTime: [
    {
      required: true,
      message: '请选择报名结束日期',
      validator(value) {
        if (!value) return Promise.reject('请选择报名结束日期');
        if (dayjs(value).isBefore(dayjs(form.applyBeginTime)))
          return Promise.reject('报名结束日期需大于报名开始日期');
        if (dayjs(value).isAfter(dayjs(form.endTime)))
          return Promise.reject('报名结束日期需小于任务结束日期');
        return Promise.resolve(true);
      },
    },
  ],
});
const {
@@ -354,6 +507,13 @@
      longitude: data.longitude,
      addressName: data.addressName,
    };
    form.description = data.description;
    form.verifyWorkHours = data.verifyWorkHours;
    form.timeoutServiceFee = data.timeoutServiceFee;
    form.checkReceiveMethod = data.checkReceiveMethod;
    form.applyBeginTime = dayjs(data.applyBeginTime).format('YYYY-MM-DD');
    form.applyEndTime = dayjs(data.applyEndTime).format('YYYY-MM-DD');
    form.settlementAccess = data.settlementAccess;
  },
});
@@ -388,6 +548,13 @@
      latitude: form.weMapInfo.latitude,
      beginTime: dayjs(form.beginTime).format('YYYY-MM-DD 00:00:00'),
      endTime: dayjs(form.endTime).format('YYYY-MM-DD 23:59:59'),
      description: form.description,
      verifyWorkHours: form.verifyWorkHours,
      timeoutServiceFee: form.timeoutServiceFee,
      checkReceiveMethod: form.checkReceiveMethod,
      applyBeginTime: dayjs(form.applyBeginTime).format('YYYY-MM-DD 00:00:00'),
      applyEndTime: dayjs(form.applyEndTime).format('YYYY-MM-DD 23:59:59'),
      settlementAccess: form.settlementAccess,
    };
    if (isEdit) {
      params.id = taskId;
@@ -406,6 +573,15 @@
  } catch (error) {}
}
function timeChange() {
  form.applyBeginTime = '';
  form.applyEndTime = '';
}
function applyTimeChange() {
  form.applyEndTime = '';
}
function settleTypeChange() {
  form.settlementDate = null as number;
}
apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue
@@ -36,8 +36,9 @@
<script setup lang="ts">
import { MyTaskCard, ProTabs, ProTabPane, Calendar } from '@12333/components';
import Taro from '@tarojs/taro';
import { EnumTaskCheckReceiveStatus } from '@12333/constants';
import { EnumTaskCheckReceiveStatus, EnumTaskCheckReceiveMethod } from '@12333/constants';
import { useCheckReceiveTasks } from '@12333/hooks';
import dayjs from 'dayjs';
defineOptions({
  name: 'InnerPage',
@@ -46,8 +47,21 @@
const { queryState, infiniteLoadingProps } = useCheckReceiveTasks();
function goSubmitTaskDetail(item: API.GetCheckReceiveTasksQueryResultItem) {
  Taro.navigateTo({
    url: `${RouterPath.taskCheckDetail}?id=${item.id}&date=${queryState.date}&checkReceiveStatus=${queryState.checkReceiveStatus}`,
  });
  if (
    item.checkReceiveMethod === EnumTaskCheckReceiveMethod.CheckIn &&
    dayjs(queryState.date).isBefore(dayjs(), 'day')
  ) {
    Taro.navigateTo({
      url: `${RouterPath.taskUserSubmitCheckHistories}?id=${item.id}&date=${dayjs(
        queryState.date
      ).format('YYYY-MM-DD')}`,
    });
  } else {
    Taro.navigateTo({
      url: `${RouterPath.taskCheckDetail}?id=${item.id}&date=${dayjs(queryState.date).format(
        'YYYY-MM-DD'
      )}&checkReceiveStatus=${queryState.checkReceiveStatus}`,
    });
  }
}
</script>
apps/bMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue
@@ -19,9 +19,13 @@
          :name="item.name"
          :gender="item.gender"
          :isReal="item.isReal"
          :checkInTime="item.checkInTime"
          :checkOutTime="item.checkOutTime"
          :contactPhoneNumber="item.contactPhoneNumber"
          :checkReceiveStatus="item.checkReceiveStatus"
          :checkReceiveMethod="detail?.checkReceiveMethod"
          @checkReceive="goTaskDetail(item)"
          @checkInOrOut="(ev) => checkReceiveTask(ev, item.id)"
        />
      </template>
    </InfiniteLoading>
@@ -34,9 +38,10 @@
import { useInfiniteLoading } from '@12333/hooks';
import TaskCheckCard from '../components/TaskCheckCard.vue';
import { MyTaskCard } from '@12333/components';
import { EnumTaskCheckReceiveStatus } from '@12333/constants';
import { setOSSLink } from '@12333/utils';
import { EnumTaskCheckReceiveMethod, EnumTaskCheckReceiveStatus } from '@12333/constants';
import { Message, setOSSLink } from '@12333/utils';
import dayjs from 'dayjs';
import { CheckInOrOutEventEnum } from '../constants';
defineOptions({
  name: 'InnerPage',
@@ -47,8 +52,10 @@
const date = router.params?.date ?? '';
const checkReceiveStatus = Number(router.params?.checkReceiveStatus);
const detail = ref<API.GetCheckReceiveTasksQueryResultItem>();
const { infiniteLoadingProps } = useInfiniteLoading(
  ({ pageParam }) => {
  async ({ pageParam }) => {
    let params: API.GetCheckReceiveTaskQuery = {
      pageModel: {
        rows: 20,
@@ -59,9 +66,11 @@
      checkReceiveStatus: checkReceiveStatus,
    };
    return taskCheckReceiveServices.getCheckReceiveTask(params, {
    let res = await taskCheckReceiveServices.getCheckReceiveTask(params, {
      showLoading: false,
    });
    detail.value = res.objectData;
    return res;
  },
  {
    queryKey: ['taskCheckReceiveServices/getCheckReceiveTask'],
@@ -69,18 +78,39 @@
);
function goTaskDetail(item: API.GetCheckReceiveTaskQueryResultItem) {
  if (item.checkReceiveStatus === EnumTaskCheckReceiveStatus.Completed) {
    Taro.navigateTo({
      url: `${RouterPath.taskCheckedDetail}?id=${item.id}`,
    });
  if (detail.value.checkReceiveMethod !== EnumTaskCheckReceiveMethod.CheckIn) {
    if (item.checkReceiveStatus === EnumTaskCheckReceiveStatus.Completed) {
      Taro.navigateTo({
        url: `${RouterPath.taskCheckedDetail}?id=${item.id}`,
      });
    }
    if (
      item.checkReceiveStatus === EnumTaskCheckReceiveStatus.WaitCheckReceive ||
      item.checkReceiveStatus === EnumTaskCheckReceiveStatus.WaitSubmit
    ) {
      Taro.navigateTo({
        url: `${RouterPath.taskHandleCheckDetail}?id=${item.id}&date=${date}`,
      });
    }
  }
  if (
    item.checkReceiveStatus === EnumTaskCheckReceiveStatus.WaitCheckReceive ||
    item.checkReceiveStatus === EnumTaskCheckReceiveStatus.WaitSubmit
  ) {
    Taro.navigateTo({
      url: `${RouterPath.taskHandleCheckDetail}?id=${item.id}&date=${date}`,
    });
  }
}
async function checkReceiveTask(ev: CheckInOrOutEventEnum, taskInfoUserId: string) {
  try {
    let params: API.CheckReceiveTaskCommand = {
      taskInfoUserId: taskInfoUserId,
      date: dayjs(date).format('YYYY-MM-DD'),
    };
    if (ev === CheckInOrOutEventEnum.CheckIn) {
      params.checkInTime = dayjs().format('YYYY-MM-DD HH:mm:ss');
    } else if (ev === CheckInOrOutEventEnum.CheckOut) {
      params.checkOutTime = dayjs().format('YYYY-MM-DD HH:mm:ss');
    }
    let res = await taskCheckReceiveServices.checkReceiveTask(params);
    if (res) {
      Message.success('提交成功');
      infiniteLoadingProps.value?.refetch?.();
    }
  } catch (error) {}
}
</script>
apps/bMiniApp/src/subpackages/task/taskUserSubmitCheckHistories/InnerPage.vue
New file
@@ -0,0 +1,106 @@
<template>
  <LoadingLayout>
    <ContentView>
      <ChunkTitle :title="title" />
    </ContentView>
    <ProTabs
      v-model="queryState.type"
      name="taskUserSubmitCheckHistories-tab"
      :showPaneContent="false"
      class="taskUserSubmitCheckHistories-tabs"
      isTransparent
      title-gutter="8"
      title-scroll
    >
      <ProTabPane :title="`全部`" :pane-key="0"></ProTabPane>
      <ProTabPane
        :title="EnumTaskUserSubmitCheckHistoryTypeText[EnumTaskUserSubmitCheckHistoryType.CheckIn]"
        :pane-key="EnumTaskUserSubmitCheckHistoryType.CheckIn"
      ></ProTabPane>
      <ProTabPane
        :title="EnumTaskUserSubmitCheckHistoryTypeText[EnumTaskUserSubmitCheckHistoryType.CheckOut]"
        :pane-key="EnumTaskUserSubmitCheckHistoryType.CheckOut"
      ></ProTabPane>
      <ProTabPane
        :title="
          EnumTaskUserSubmitCheckHistoryTypeText[EnumTaskUserSubmitCheckHistoryType.UnCheckIn]
        "
        :pane-key="EnumTaskUserSubmitCheckHistoryType.UnCheckIn"
      ></ProTabPane>
      <ProTabPane
        :title="
          EnumTaskUserSubmitCheckHistoryTypeText[EnumTaskUserSubmitCheckHistoryType.UnCheckOut]
        "
        :pane-key="EnumTaskUserSubmitCheckHistoryType.UnCheckOut"
      ></ProTabPane>
    </ProTabs>
    <InfiniteLoading
      scrollViewClassName="common-infinite-scroll-list"
      v-bind="infiniteLoadingProps"
    >
      <template #renderItem="{ item }">
        <TaskCheckHistoryCard
          :avatar="setOSSLink(item.avatar)"
          :name="item.name"
          :gender="item.gender"
          :isReal="item.isReal"
          :contactPhoneNumber="item.contactPhoneNumber"
          :type="item.type"
          :checkTime="item.checkTime"
        />
      </template>
    </InfiniteLoading>
  </LoadingLayout>
</template>
<script setup lang="ts">
import Taro from '@tarojs/taro';
import * as taskCheckReceiveServices from '@12333/services/apiV2/taskCheckReceive';
import { useInfiniteLoading } from '@12333/hooks';
import TaskCheckHistoryCard from '../components/TaskCheckHistoryCard.vue';
import { ProTabs, ProTabPane } from '@12333/components';
import {
  EnumTaskUserSubmitCheckHistoryTypeText,
  EnumTaskUserSubmitCheckHistoryTypeColor,
  EnumTaskUserSubmitCheckHistoryType,
  WeekCN,
} from '@12333/constants';
import { Message, 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 title = `${dayjs(date).format('YYYY年MM月DD日')} 星期${WeekCN[dayjs(date).day()]}`;
const queryState = reactive({
  type: 0 as any as EnumTaskUserSubmitCheckHistoryType,
});
const { infiniteLoadingProps } = useInfiniteLoading(
  async ({ pageParam }) => {
    let params: API.GetCheckReceiveTaskUserSubmitCheckHistoriesQuery = {
      pageModel: {
        rows: 20,
        page: pageParam,
      },
      taskInfoId: id,
      date: dayjs(date).format('YYYY-MM-DD'),
      type: queryState.type,
    };
    let res = await taskCheckReceiveServices.getCheckReceiveTaskUserSubmitCheckHistories(params, {
      showLoading: false,
    });
    return res;
  },
  {
    queryKey: ['taskCheckReceiveServices/getCheckReceiveTaskUserSubmitCheckHistories', queryState],
  }
);
</script>
apps/bMiniApp/src/subpackages/task/taskUserSubmitCheckHistories/taskUserSubmitCheckHistories.config.ts
New file
@@ -0,0 +1,3 @@
export default definePageConfig({
  disableScroll: true,
});
apps/bMiniApp/src/subpackages/task/taskUserSubmitCheckHistories/taskUserSubmitCheckHistories.vue
New file
@@ -0,0 +1,13 @@
<template>
  <PageLayoutWithBg class="taskUserSubmitCheckHistories-page-wrapper" title="验收详情">
    <InnerPage />
  </PageLayoutWithBg>
</template>
<script setup lang="ts">
import InnerPage from './InnerPage.vue';
defineOptions({
  name: 'taskUserSubmitCheckHistories',
});
</script>
apps/bMiniApp/src/utils/page.ts
@@ -1,4 +1,4 @@
import { TabBarPageRouter } from '@/constants';
import { TabBarPageRouterList } from '@/constants';
import Taro from '@tarojs/taro';
import { useSystemStoreWithOut } from '@/stores/modules/system';
@@ -11,7 +11,7 @@
    Taro.navigateBack({ delta: delta });
  } else {
    Taro.switchTab({
      url: Object.values(TabBarPageRouter)[systemStore.activeTab],
      url: TabBarPageRouterList[systemStore.activeTab],
    });
  }
}
apps/cMiniApp/.eslintrc-auto-import.json
@@ -110,6 +110,7 @@
    "DirectiveBinding": true,
    "MaybeRef": true,
    "MaybeRefOrGetter": true,
    "NODE_ENV": true
    "NODE_ENV": true,
    "TabBarPageRouterList": true
  }
}
apps/cMiniApp/CHANGELOG.md
@@ -1,5 +1,37 @@
## [1.1.5](http://120.26.58.240:8888/r/flexJobMiniApp/compare/@12333/cMiniApp/v1.1.4...@12333/cMiniApp/v1.1.5) (2025-10-19)
### Bug Fixes
* 简历 ([a6d873f](http://120.26.58.240:8888/r/flexJobMiniApp/commits/a6d873f75b70ab5e1dc4a1e5fa610eddc7c9274e))
* 验收管理 ([6d85681](http://120.26.58.240:8888/r/flexJobMiniApp/commits/6d85681b282960f5b646d9ed53a4585b36063c69))
* 验收管理 ([50030f8](http://120.26.58.240:8888/r/flexJobMiniApp/commits/50030f826efe2e1dbf3b3fbcb50cff6ff94c1559))
* 验收管理 ([40ef0e2](http://120.26.58.240:8888/r/flexJobMiniApp/commits/40ef0e230f91d5ff0cb196fad95d1f9c2bdcec10))
* 验收管理 ([d33b55e](http://120.26.58.240:8888/r/flexJobMiniApp/commits/d33b55e5f1a22f77cb51c3da1a03a4fefccce71d))
* 验收管理 ([92b51e4](http://120.26.58.240:8888/r/flexJobMiniApp/commits/92b51e47eb0e53e1e8e13aa0f9135603e1bb03a0))
* bug ([82e6132](http://120.26.58.240:8888/r/flexJobMiniApp/commits/82e613291dbaca4bc0e9964b0111037a94a68918))
* bug ([73a4d14](http://120.26.58.240:8888/r/flexJobMiniApp/commits/73a4d1404ac13115388a9e712780e21b9b6e53b9))
* bug ([a5c9763](http://120.26.58.240:8888/r/flexJobMiniApp/commits/a5c976314d151c00dd66a3772aa3b793b81d31e8))
* bug ([5a681c9](http://120.26.58.240:8888/r/flexJobMiniApp/commits/5a681c9bd93a5a1ad1949fe07b47fc583b12ed61))
* bug ([f32357c](http://120.26.58.240:8888/r/flexJobMiniApp/commits/f32357c9f9a2c1e62ff8512d6cce65f4e65e7754))
* bug ([a69bf92](http://120.26.58.240:8888/r/flexJobMiniApp/commits/a69bf92c8907eb1fed227afb156ff0e1c5821c24))
* bug ([d2bf817](http://120.26.58.240:8888/r/flexJobMiniApp/commits/d2bf81782096dd51d1c995194bc134ecb11c680b))
### Features
* 1.2.0.1 ([6999f1f](http://120.26.58.240:8888/r/flexJobMiniApp/commits/6999f1f04fc3ce40359c156bf008c70ee19fabf8))
* 1.2.0.1 ([28a1ee0](http://120.26.58.240:8888/r/flexJobMiniApp/commits/28a1ee009fdeb6bbd71e8263be704e2988204e04))
* 1.2.0.1 ([ae51226](http://120.26.58.240:8888/r/flexJobMiniApp/commits/ae51226ce036e0201e94b60ffa92b92e893767ee))
* 1.2.0.1 ([4642e3d](http://120.26.58.240:8888/r/flexJobMiniApp/commits/4642e3d3f2ea62676d277fed9b6e25b202699e56))
* 1.2.0.1 ([41d26c8](http://120.26.58.240:8888/r/flexJobMiniApp/commits/41d26c8ef752828901f2b683d42d15c18542f3b7))
* 1.2.0.1 ([e2cbcd6](http://120.26.58.240:8888/r/flexJobMiniApp/commits/e2cbcd64dd60014d82bd898ae51fd827e01e9c18))
* 1.2.0.1 ([ff185cf](http://120.26.58.240:8888/r/flexJobMiniApp/commits/ff185cfb6950ad2d7472f83c2bbf3c0364cde1f7))
* 1.2.0.1 ([ab9a81a](http://120.26.58.240:8888/r/flexJobMiniApp/commits/ab9a81adf064bc1905dbcec39e97371c3e1d5c5d))
* 去除验证码登录 ([a8c9fa1](http://120.26.58.240:8888/r/flexJobMiniApp/commits/a8c9fa1d7dcb4beb01b1810372a0a7e02e9a0806))
## [1.1.4](http://120.26.58.240:8888/r/flexJobMiniApp/compare/@12333/cMiniApp/v1.1.3...@12333/cMiniApp/v1.1.4) (2025-10-15)
apps/cMiniApp/auto-imports.d.ts
@@ -13,6 +13,7 @@
  const OssAssets: typeof import('./src/constants/img')['OssAssets']
  const RouterPath: typeof import('./src/constants/router')['RouterPath']
  const TabBarPageRouter: typeof import('./src/constants/tabBar')['TabBarPageRouter']
  const TabBarPageRouterList: typeof import('./src/constants/tabBar')['TabBarPageRouterList']
  const TaskStatus: typeof import('./src/constants/task')['TaskStatus']
  const TaskStatusColor: typeof import('./src/constants/task')['TaskStatusColor']
  const TaskStatusText: typeof import('./src/constants/task')['TaskStatusText']
@@ -129,6 +130,7 @@
    readonly OssAssets: UnwrapRef<typeof import('./src/constants/img')['OssAssets']>
    readonly RouterPath: UnwrapRef<typeof import('./src/constants/router')['RouterPath']>
    readonly TabBarPageRouter: UnwrapRef<typeof import('./src/constants/tabBar')['TabBarPageRouter']>
    readonly TabBarPageRouterList: UnwrapRef<typeof import('./src/constants/tabBar')['TabBarPageRouterList']>
    readonly TaskStatus: UnwrapRef<typeof import('./src/constants/task')['TaskStatus']>
    readonly TaskStatusColor: UnwrapRef<typeof import('./src/constants/task')['TaskStatusColor']>
    readonly TaskStatusText: UnwrapRef<typeof import('./src/constants/task')['TaskStatusText']>
apps/cMiniApp/package.json
@@ -1,6 +1,6 @@
{
  "name": "@12333/cMiniApp",
  "version": "1.1.4",
  "version": "1.1.5",
  "private": true,
  "description": "",
  "templateInfo": {
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,
@@ -56,5 +56,6 @@
        "include": []
    },
    "appid": "wxb9e0baf4f87aa0de",
    "simulatorPluginLibVersion": {}
    "simulatorPluginLibVersion": {},
    "projectname": "cMiniApp"
}
apps/cMiniApp/project.private.config.json
@@ -19,6 +19,18 @@
        "ignoreDevUnusedFiles": true,
        "useIsolateContext": true
    },
    "condition": {},
    "condition": {
        "miniprogram": {
            "list": [
                {
                    "name": "简历详细信息",
                    "pathName": "subpackages/curriculum/mineDetailedInfo/mineDetailedInfo",
                    "query": "",
                    "launchMode": "default",
                    "scene": null
                }
            ]
        }
    },
    "libVersion": "3.10.0"
}
apps/cMiniApp/src/components/Uploader/Uploader.vue
@@ -18,6 +18,9 @@
    <template #extra-img>
      <slot name="extra-img"></slot>
    </template>
    <template #item="{ item }">
      <slot name="item" :item="item"></slot>
    </template>
  </nut-uploader>
  <nut-uploader
    v-else
@@ -35,6 +38,9 @@
    <template #extra-img="extraImgProps">
      <slot name="extra-img" v-bind="extraImgProps"></slot>
    </template>
    <template #item="{ item }">
      <slot name="item" :item="item"></slot>
    </template>
  </nut-uploader>
</template>
apps/cMiniApp/src/constants/img.ts
@@ -7,6 +7,7 @@
  mine: {
    Bg: `${OssBasePath}/matchMakingMini/assets/mine/icon-bg.png`,
    IdBg: `${OssBasePath}/matchMakingMini/assets/mine/icon-id-bg.png`,
    UseResumeVideo: `${OssBasePath}/flexJobMini/temp/%E7%AE%80%E5%8E%86%E4%B8%AA%E4%BA%BA%E8%A7%86%E9%A2%91%E6%A8%A1%E6%9D%BF.mp4`,
  },
  setting: {
    ToggleBg: `${OssBasePath}/matchMakingMini/assets/setting/icon-toggle-bg.png`,
apps/cMiniApp/src/constants/tabBar.ts
@@ -3,3 +3,9 @@
  Task: '/pages/task/task',
  Mine: '/pages/mine/index',
};
export const TabBarPageRouterList = [
  TabBarPageRouter.Home,
  TabBarPageRouter.Task,
  TabBarPageRouter.Mine,
];
apps/cMiniApp/src/hooks/router.ts
@@ -1,15 +1,16 @@
import Taro from '@tarojs/taro';
import { TabBarPageRouter } from '@/constants';
import { TabBarPageRouter, TabBarPageRouterList } from '@/constants';
import { useSystemStore } from '@/stores/modules/system';
export function useSwitchTab() {
  const systemStore = useSystemStore();
  const switchTab = (option: Taro.switchTab.Option) => {
    const index = Object.values(TabBarPageRouter).findIndex((x) => option.url.includes(x));
    const index = TabBarPageRouterList.findIndex((x) => option.url.includes(x));
    console.log('index: ', index);
    systemStore.setTabIndex(index);
    Taro.switchTab(option);
    Taro.switchTab(option).then(() => {
      systemStore.setTabIndex(index);
    });
  };
  return switchTab;
}
apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue
@@ -14,10 +14,34 @@
      <nut-form-item
        label="个人生活照(单张照片不超过5m,最多不超过6张):"
        class="bole-form-item person-photo"
        prop="photo"
        prop="photos"
        label-position="top"
      >
        <Uploader v-model:file-list="form.photos" :maximum="6" class="bole-uploader"> </Uploader>
      </nut-form-item>
      <nut-form-item
        label="个人视频:"
        class="bole-form-item person-photo"
        prop="videos"
        label-position="top"
      >
        <Uploader
          v-model:file-list="form.videos"
          :maximum="1"
          class="bole-uploader"
          :media-type="['video']"
        >
          <template #item="{ item }">
            <video class="editor-video" :src="item.url" />
          </template>
          <template #upload-icon>
            <UploaderIcon color="#808080" />
          </template>
        </Uploader>
        <div class="video-demo">
          <div class="video-demo-title">视频模板</div>
          <video class="editor-video" :src="OssAssets.mine.UseResumeVideo" />
        </div>
      </nut-form-item>
    </nut-form>
  </ContentScrollView>
@@ -31,9 +55,11 @@
import { NumberInput } from '@12333/components';
import { useUpdateResume } from '@12333/hooks';
import * as userResumeServices from '@12333/services/apiV2/userResume';
import { convertApiPath2Url, Message } from '@12333/utils';
import { convertApiPath2Url, convertFormUrl2Api, Message } from '@12333/utils';
import { FileItem } from '@nutui/nutui-taro/dist/types/__VUE/uploader/type';
import { useQuery } from '@tanstack/vue-query';
import { Uploader as UploaderIcon } from '@nutui/icons-vue-taro';
import { OssAssets } from '@/constants';
defineOptions({
  name: 'InnerPage',
@@ -60,7 +86,8 @@
  onSuccess(data) {
    form.height = data.height;
    form.weight = data.weight;
    form.photos = data.photos?.length ? data.photos.map((x) => convertApiPath2Url(x)) : [];
    form.photos = data.photos?.length ? data.photos.map(convertApiPath2Url) : [];
    form.videos = data.videos?.length ? data.videos.map(convertApiPath2Url) : [];
  },
});
@@ -68,6 +95,7 @@
  height: 0,
  weight: 0,
  photos: [] as FileItem[],
  videos: [] as FileItem[],
});
async function handleConfirm() {
@@ -75,7 +103,8 @@
    let params: API.SaveUserResumeDetailCommand = {
      weight: form.weight,
      height: form.height,
      photos: form.photos?.length ? form.photos.map((x) => x.path) : [],
      photos: convertFormUrl2Api(form.photos),
      videos: convertFormUrl2Api(form.videos),
    };
    let res = await userResumeServices.saveUserResumeDetail(params);
    if (res) {
@@ -104,5 +133,16 @@
  page .nut-form .nut-cell.bole-form-item:not(.alignTop) {
    align-items: flex-start !important;
  }
  .editor-video {
    width: 200px;
    height: 200px;
  }
  .video-demo {
    .video-demo-title {
      margin: 12px 0;
    }
  }
}
</style>
apps/cMiniApp/src/utils/page.ts
@@ -1,4 +1,4 @@
import { TabBarPageRouter } from '@/constants';
import { TabBarPageRouterList } from '@/constants';
import Taro from '@tarojs/taro';
import { useSystemStoreWithOut } from '@/stores/modules/system';
@@ -11,7 +11,7 @@
    Taro.navigateBack({ delta: delta });
  } else {
    Taro.switchTab({
      url: Object.values(TabBarPageRouter)[systemStore.activeTab],
      url: TabBarPageRouterList[systemStore.activeTab],
    });
  }
}
package.json
@@ -53,6 +53,7 @@
    "postcss-html": "1.5.0",
    "prettier": "^2.7.1",
    "release-it": "^17.6.0",
    "rimraf": "^6.0.1",
    "stylelint": "^14.15.0",
    "stylelint-config-html": "^1.1.0",
    "stylelint-config-prettier": "^9.0.4",
packages/components/src/Card/FlexJobTopView.vue
@@ -7,17 +7,22 @@
    />
    <div class="flexJob-card-top-info">
      <div class="flexJob-card-top-info-item">
        <div class="flexJob-card-top-info-name">{{ name }}</div>
        <div class="flexJob-card-top-info-gender">
          <img
            v-if="gender === EnumUserGender.Male"
            :src="IconMale"
            class="flexJob-card-top-info-gender-icon"
          />
          <img v-else :src="IconFemale" class="flexJob-card-top-info-gender-icon" />
        <div class="flexJob-card-top-info-item-w">
          <div class="flexJob-card-top-info-name">{{ name }}</div>
          <div class="flexJob-card-top-info-gender">
            <img
              v-if="gender === EnumUserGender.Male"
              :src="IconMale"
              class="flexJob-card-top-info-gender-icon"
            />
            <img v-else :src="IconFemale" class="flexJob-card-top-info-gender-icon" />
          </div>
          <div class="flexJob-card-top-info-auth" :class="{ 'is-real-name': isReal }">
            {{ isReal ? '已实名' : '未实名' }}
          </div>
        </div>
        <div class="flexJob-card-top-info-auth" :class="{ 'is-real-name': isReal }">
          {{ isReal ? '已实名' : '未实名' }}
        <div class="flexJob-card-top-info-item-right">
          <slot name="time"></slot>
        </div>
      </div>
      <slot name="detail">
@@ -90,10 +95,23 @@
    flex: 1;
    min-width: 0;
    .flexJob-card-top-info-item-w {
      display: flex;
      align-items: center;
      flex: 1;
      min-width: 0;
    }
    .flexJob-card-top-info-item {
      display: flex;
      align-items: center;
      .flexJob-card-top-info-item-right {
        font-size: 28px;
        line-height: 34px;
        color: boleGetCssVar('text-color', 'secondary');
      }
      .flexJob-card-top-info-name {
        font-size: 34px;
        line-height: 34px;
packages/components/src/Input/ChooseInputWithDatePicker.vue
@@ -27,6 +27,7 @@
const emit = defineEmits<{
  (e: 'update:modelValue', val: string | number): void;
  (e: 'change'): void;
}>();
function handleOpen() {
@@ -55,6 +56,9 @@
                    emit('update:modelValue', dayjs(selectedValue.join('-')).format(props.format));
                    onClose();
                  },
                  onChange: () => {
                    emit('change');
                  },
                  minDate: props.minDate,
                }),
            }
packages/components/src/Input/ChooseInputWithPicker.vue
@@ -18,11 +18,13 @@
  enumValueKey?: string;
  valueEnum?: ValueEnum;
  modelValue: string | number;
  disabled?: boolean;
};
const props = withDefaults(defineProps<Props>(), {
  enumLabelKey: 'label',
  enumValueKey: 'value',
  disabled: false,
});
const emit = defineEmits<{
@@ -38,6 +40,9 @@
);
function handleOpen() {
  if (props.disabled) {
    return;
  }
  const _modelValue = [props.modelValue];
  Portal.add((key) => {
    return h(
packages/components/src/List/IncomeDetailListItem.vue
@@ -44,10 +44,12 @@
  padding: 0 boleGetCssVar('size', 'body-padding-h');
  .income-detail-list-item-inner {
    padding: 24px 0 18px;
    border-bottom: 1px solid #f6f6f6;
    display: flex;
    flex-direction: column;
    background: #ffffff;
    border-radius: 12px;
    padding: 40px;
    margin-bottom: 24px;
    &.border-none {
      border-bottom: none;
packages/constants/apiEnum.ts
@@ -11,6 +11,8 @@
  Hour = 30,
  /**计件 */
  Piece = 40,
  /**面议 */
  Face = 50,
}
/** 客户端类型 */
@@ -21,6 +23,8 @@
  Wxmp = 20,
  /**H5登录 */
  H5 = 30,
  /**接口 */
  Api = 40,
}
/** 编号地址场景 */
@@ -347,28 +351,34 @@
  CommonServerSyncDatabase = 8,
  /**短信工具 */
  CommonServerSmsUtils = 9,
  /**配置 */
  CommonServerSettings = 10,
  /**用户认证 */
  UserServerAuth = 10,
  UserServerAuth = 11,
  /**用户菜单 */
  UserServerMenu = 11,
  UserServerMenu = 12,
  /**用户资源 */
  UserServerResource = 12,
  UserServerResource = 13,
  /**用户角色 */
  UserServerRole = 13,
  UserServerRole = 14,
  /**用户信息 */
  UserServerUser = 14,
  UserServerUser = 15,
  /**用户钱包 */
  UserServerUserWallet = 16,
  /**电子签 */
  UserServerElectronSign = 15,
  UserServerElectronSign = 17,
  /**用户简历 */
  UserServerUserResume = 16,
  UserServerUserResume = 18,
  /**企业信息 */
  UserServerEnterprise = 17,
  UserServerEnterprise = 19,
  /**企业钱包 */
  UserServerEnterpriseWallet = 18,
  UserServerEnterpriseWallet = 20,
  /**灵工信息 */
  UserServerEnterpriseEmployee = 19,
  UserServerEnterpriseEmployee = 21,
  /**电子签 */
  ElectronSignServerElectronSign = 20,
  ElectronSignServerElectronSign = 22,
  /**电子签 */
  ToolServerSms = 23,
}
/** 资源请求方式 */
@@ -413,8 +423,12 @@
/** 短信通道 */
export enum EnumSmsAccess {
  /**无 */
  None = 0,
  /**阿里云短信 */
  AliyunSms = 10,
  /**诚立业 */
  ChengLiYe = 20,
}
/** 短信状态 */
@@ -429,6 +443,14 @@
  Fail = 30,
}
/** 任务验收方式 */
export enum EnumTaskCheckReceiveMethod {
  /**人工签到 */
  CheckIn = 10,
  /**自主提交 */
  Submit = 20,
}
/** 任务结算状态 */
export enum EnumTaskCheckReceiveStatus {
  /**待提交 */
@@ -437,6 +459,14 @@
  WaitCheckReceive = 20,
  /**已验收 */
  Completed = 30,
}
/** 任务发放方式 */
export enum EnumTaskPaymentMethod {
  /**直接发放 */
  Direct = 10,
  /**提现发放 */
  Withdraw = 20,
}
/** 任务推荐状态 */
@@ -453,6 +483,16 @@
  InProcess = 20,
  /**已停止 */
  Stopped = 100,
}
/** 任务结算审核状态 */
export enum EnumTaskSettlementAuditStatus {
  /**待审核 */
  Wait = 10,
  /**审核通过 */
  Pass = 20,
  /**驳回 */
  Fail = 30,
}
/** 任务结算单状态 */
@@ -515,15 +555,27 @@
  Stop = 50,
}
/** 任务人员提交信息签到记录类型 */
export enum EnumTaskUserSubmitCheckHistoryType {
  /**签到 */
  CheckIn = 10,
  /**签出 */
  CheckOut = 20,
  /**未到岗 */
  UnCheckIn = 30,
  /**未签出 */
  UnCheckOut = 40,
}
/** 任务验收状态 */
export enum EnumTaskUserSubmitCheckReceiveStatus {
  /**待提交 */
  WaitSubmit = 10,
  /**待验收 */
  WaitCheckReceive = 20,
  /**验收通过 */
  /**验收通过/已签到 */
  Success = 30,
  /**验收未通过 */
  /**验收未通过/未到岗 */
  Fail = 40,
}
@@ -597,6 +649,158 @@
  Fail = 50,
}
/** 微信支付-银行账户类型枚举 */
export enum EnumWeChatPayApplymentBankAccountType {
  /**对公银行账户 */
  BANK_ACCOUNT_TYPE_CORPORATE = 0,
  /**经营者个人银行卡(仅个体户可选择) */
  BANK_ACCOUNT_TYPE_PERSONAL = 1,
}
/** 微信支付-登记证书类型枚举 */
export enum EnumWeChatPayApplymentCertType {
  /**事业单位法人证书(主体为事业单位时选择) */
  CERTIFICATE_TYPE_2388 = 0,
  /**统一社会信用代码证书(主体为政府机关/社会组织时选择) */
  CERTIFICATE_TYPE_2389 = 1,
  /**社会团体法人登记证书(主体为社会组织时选择) */
  CERTIFICATE_TYPE_2394 = 2,
  /**民办非企业单位登记证书(主体为社会组织时选择) */
  CERTIFICATE_TYPE_2395 = 3,
  /**基金会法人登记证书(主体为社会组织时选择) */
  CERTIFICATE_TYPE_2396 = 4,
  /**执业许可证/执业证(主体为社会组织时选择) */
  CERTIFICATE_TYPE_2520 = 5,
  /**基层群众性自治组织特别法人统一社会信用代码证(主体为社会组织时选择) */
  CERTIFICATE_TYPE_2521 = 6,
  /**农村集体经济组织登记证(主体为社会组织时选择) */
  CERTIFICATE_TYPE_2522 = 7,
  /**宗教活动场所登记证(主体为社会组织时选择) */
  CERTIFICATE_TYPE_2399 = 8,
  /**政府部门下发的其他有效证明文件(主体为社会组织时选择) */
  CERTIFICATE_TYPE_2400 = 9,
}
/** 微信支付-超级管理员类型枚举 */
export enum EnumWeChatPayApplymentContactType {
  /**经营者/法定代表人 */
  LEGAL = 0,
  /**经办人(经商户授权办理微信支付业务的人员) */
  SUPER = 1,
}
/** 微信支付-金融机构类型枚举 */
export enum EnumWeChatPayApplymentFinanceType {
  /**银行业(适用于商业银行、政策性银行、农村合作银行、村镇银行、开发性金融机构等) */
  BANK_AGENT = 0,
  /**支付机构(适用于非银行类支付机构) */
  PAYMENT_AGENT = 1,
  /**保险业(适用于保险、保险中介、保险代理、保险经纪等保险类业务) */
  INSURANCE = 2,
  /**交易及结算类金融机构(适用于交易所、登记结算类机构、银行卡清算机构、资金清算中心等) */
  TRADE_AND_SETTLE = 3,
  /**其他金融机构(适用于财务公司、信托公司、金融资产管理公司、金融租赁公司、汽车金融公司、贷款公司、货币经纪公司、消费金融公司、证券业、金融控股公司、股票、期货、货币兑换、小额贷款公司、金融资产管理、担保公司、商业保理公司、典当行、融资租赁公司、财经咨询等其他金融业务) */
  OTHER = 4,
}
/** 微信支付-证件类型枚举 */
export enum EnumWeChatPayApplymentIdDocType {
  /**中国大陆居民 */
  IDENTIFICATION_TYPE_IDCARD = 0,
  /**其他国家或地区居民 */
  IDENTIFICATION_TYPE_OVERSEA_PASSPORT = 1,
  /**中国香港居民 */
  IDENTIFICATION_TYPE_HONGKONG_PASSPORT = 2,
  /**中国澳门居民 */
  IDENTIFICATION_TYPE_MACAO_PASSPORT = 3,
  /**中国台湾居民 */
  IDENTIFICATION_TYPE_TAIWAN_PASSPORT = 4,
  /**外国人居留证 */
  IDENTIFICATION_TYPE_FOREIGN_RESIDENT = 5,
  /**港澳居民证 */
  IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT = 6,
  /**台湾居民证 */
  IDENTIFICATION_TYPE_TAIWAN_RESIDENT = 7,
}
/** 微信支付-证件持有人类型枚举 */
export enum EnumWeChatPayApplymentIdHolderType {
  /**经营者/法定代表人 */
  LEGAL = 0,
  /**经办人(经商户授权办理微信支付业务的人员,授权范围包括但不限于签约,入驻过程需完成账户验证) */
  SUPER = 1,
}
/** 微信支付-经营场景类型枚举 */
export enum EnumWeChatPayApplymentSalesScenesType {
  /**线下场所 */
  SALES_SCENES_STORE = 0,
  /**服务号与公众号 */
  SALES_SCENES_MP = 1,
  /**小程序 */
  SALES_SCENES_MINI_PROGRAM = 2,
  /**互联网网站 */
  SALES_SCENES_WEB = 3,
  /**App */
  SALES_SCENES_APP = 4,
  /**企业微信 */
  SALES_SCENES_WEWORK = 5,
}
/** 微信支付申请单状态枚举 */
export enum EnumWeChatPayApplymentState {
  /**编辑中,提交申请发生错误导致,请尝试重新提交 */
  APPLYMENT_STATE_EDITTING = 0,
  /**审核中,申请单正在审核中,超级管理员用微信打开“签约链接”,完成绑定微信号后,申请单进度将通过微信公众号通知超级管理员,引导完成后续步骤 */
  APPLYMENT_STATE_AUDITING = 1,
  /**已驳回,请按照驳回原因修改申请资料,超级管理员用微信打开“签约链接”,完成绑定微信号,后续申请单进度将通过微信公众号通知超级管理员 */
  APPLYMENT_STATE_REJECTED = 2,
  /**待账户验证,请超级管理员使用微信打开返回的“签约链接”,根据页面指引完成账户验证 */
  APPLYMENT_STATE_TO_BE_CONFIRMED = 3,
  /**待签约,请超级管理员使用微信打开返回的“签约链接”,根据页面指引完成签约 */
  APPLYMENT_STATE_TO_BE_SIGNED = 4,
  /**开通权限中,系统开通相关权限中,请耐心等待 */
  APPLYMENT_STATE_SIGNING = 5,
  /**已完成,商户入驻申请已完成 */
  APPLYMENT_STATE_FINISHED = 6,
  /**已作废,申请单已被撤销 */
  APPLYMENT_STATE_CANCELED = 7,
}
/** 微信支付-主体类型枚举 */
export enum EnumWeChatPayApplymentSubjectType {
  /**个体户(营业执照上的主体类型一般为个体户、个体工商户、个体经营) */
  SUBJECT_TYPE_INDIVIDUAL = 0,
  /**企业(营业执照上的主体类型一般为有限公司、有限责任公司) */
  SUBJECT_TYPE_ENTERPRISE = 1,
  /**政府机关(包括各级、各类政府机关,如机关党委、税务、民政、人社、工商、商务、市监等) */
  SUBJECT_TYPE_GOVERNMENT = 2,
  /**事业单位(包括国内各类事业单位,如:医疗、教育、学校等单位) */
  SUBJECT_TYPE_INSTITUTIONS = 3,
  /**社会组织(包括社会团体、民办非企业、基金会、基层群众性自治组织、农村集体经济组织等组织) */
  SUBJECT_TYPE_OTHERS = 4,
}
/** 微信支付修改结算申请审核状态枚举 */
export enum EnumWeChatPaySettlementModifyVerifyResult {
  /**审核成功 */
  AUDIT_SUCCESS = 0,
  /**审核中 */
  AUDITING = 1,
  /**审核驳回 */
  AUDIT_FAIL = 2,
}
/** 微信支付结算账户验证结果枚举 */
export enum EnumWeChatPaySettlementVerifyResult {
  /**验证成功,该账户可正常发起提现 */
  VERIFY_SUCCESS = 0,
  /**验证失败,该账户无法发起提现,请检查修改 */
  VERIFY_FAIL = 1,
  /**验证中,商户可发起提现尝试 */
  VERIFYING = 2,
}
/** 我的报名分页列表-状态 */
export enum GetPersonalApplyTaskInfosQueryStatus {
  /**待确认 */
@@ -615,6 +819,16 @@
  Completed = 20,
}
/** 发薪状态 */
export enum GetSettlementTasksQueryPaymentStatus {
  /**待审核 */
  WaitAudit = 10,
  /**已审核 */
  CompletedAudit = 20,
  /**已发放 */
  CompletedRelease = 30,
}
/** 我的报名列表-详情-按钮类型 */
export enum GetTaskInfoQueryResultApplyButton {
  /**待确认 */
packages/constants/enterpriseWallet.ts
New file
@@ -0,0 +1,17 @@
import { EnumEnterpriseWalletAccess } from './apiEnum';
export const EnumEnterpriseWalletAccessTextOnlyAlipay = {
  [EnumEnterpriseWalletAccess.Alipay]: '支付宝',
};
export const EnumEnterpriseWalletAccessText = {
  [EnumEnterpriseWalletAccess.Alipay]: '支付宝',
  [EnumEnterpriseWalletAccess.PingAnPay]: '平安银行',
  [EnumEnterpriseWalletAccess.WeChatPay]: '微信',
};
export const EnumEnterpriseWalletAccessTextForSettle = {
  [EnumEnterpriseWalletAccess.Alipay]: '企业支付宝结算',
  [EnumEnterpriseWalletAccess.PingAnPay]: '平安银行结算',
  [EnumEnterpriseWalletAccess.WeChatPay]: '微信结算',
};
packages/constants/enum.ts
@@ -116,3 +116,5 @@
   */
  UserCertification = 10,
}
export const WeekCN = ['日', '一', '二', '三', '四', '五', '六'];
packages/constants/index.ts
@@ -14,3 +14,4 @@
export * from './task';
export * from './apiEnum';
export * from './enterpriseEmployee';
export * from './enterpriseWallet';
packages/constants/task.ts
@@ -13,6 +13,8 @@
  GetTaskInfoQueryResultHireButton,
  GetTaskInfoQueryResultApplyButton,
  EnumTaskUserSubmitCheckReceiveStatus,
  EnumTaskUserSubmitCheckHistoryType,
  EnumTaskCheckReceiveMethod,
} from './apiEnum';
export const EnumBillingMethodText = {
@@ -20,6 +22,7 @@
  [EnumBillingMethod.Day]: '按日',
  [EnumBillingMethod.Hour]: '按时',
  [EnumBillingMethod.Piece]: '计件',
  [EnumBillingMethod.Face]: '面议',
};
export const EnumUserGenderText = {
@@ -155,3 +158,22 @@
  [GetTaskInfoQueryResultApplyButton.WaitHire]: '待确认',
  [GetTaskInfoQueryResultApplyButton.WaitSignContract]: '去签约',
};
export const EnumTaskUserSubmitCheckHistoryTypeText = {
  [EnumTaskUserSubmitCheckHistoryType.CheckIn]: '签到',
  [EnumTaskUserSubmitCheckHistoryType.CheckOut]: '签出',
  [EnumTaskUserSubmitCheckHistoryType.UnCheckIn]: '未到岗',
  [EnumTaskUserSubmitCheckHistoryType.UnCheckOut]: '未签出',
};
export const EnumTaskUserSubmitCheckHistoryTypeColor = {
  [EnumTaskUserSubmitCheckHistoryType.CheckIn]: Colors.Success,
  [EnumTaskUserSubmitCheckHistoryType.CheckOut]: Colors.Success,
  [EnumTaskUserSubmitCheckHistoryType.UnCheckIn]: Colors.Danger,
  [EnumTaskUserSubmitCheckHistoryType.UnCheckOut]: Colors.Info,
};
export const EnumTaskCheckReceiveMethodText = {
  [EnumTaskCheckReceiveMethod.CheckIn]: '人工签到',
  [EnumTaskCheckReceiveMethod.Submit]: '自主提交',
};
packages/hooks/task.ts
@@ -1,5 +1,7 @@
import { useInfiniteLoading } from '@12333/hooks';
import { useQuery, useQueryClient } from '@tanstack/vue-query';
import {
  EnumEnterpriseWalletAccessTextForSettle,
  EnumPagedListOrder,
  EnumSettlementCycle,
  EnumTaskCheckReceiveStatus,
@@ -10,8 +12,9 @@
} from '@12333/constants';
import _ from 'lodash';
import { trim } from '@12333/utils';
import { MaybeRef, reactive, ref, unref } from 'vue';
import { computed, MaybeRef, reactive, ref, unref } from 'vue';
import * as taskServices from '@12333/services/apiV2/task';
import * as enterpriseWalletServices from '@12333/services/apiV2/enterpriseWallet';
import dayjs from 'dayjs';
import * as taskCheckReceiveServices from '@12333/services/apiV2/taskCheckReceive';
@@ -180,3 +183,31 @@
    infiniteLoadingProps,
  };
}
export function useEnterpriseWalletAccessSelect() {
  const { data } = useQuery({
    queryKey: ['enterpriseWalletServices/getEnterpriseWalletAccessSelect'],
    queryFn: () => {
      return enterpriseWalletServices.getEnterpriseWalletAccessSelect(
        {},
        {
          showLoading: false,
        }
      );
    },
    placeholderData: () => [] as API.SelectOptionGuidGetEnterpriseWalletAccessSelectQueryOption[],
  });
  const enterpriseWalletAccessSelect = computed(() => data.value?.map((x) => x.data));
  const settlementAccessList = computed(() => {
    return enterpriseWalletAccessSelect.value?.length > 0
      ? enterpriseWalletAccessSelect.value.map((x) => ({
          label: EnumEnterpriseWalletAccessTextForSettle[x.access],
          value: x.access,
        }))
      : [];
  });
  return { settlementAccessList };
}
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,
@@ -259,6 +274,24 @@
  );
}
/** 查询企业钱包余额 POST /api/user/enterpriseWallet/getEnterpriseWalletBalances */
export async function getEnterpriseWalletBalances(
  body: API.GetEnterpriseWalletBalancesQuery,
  options?: API.RequestConfig
) {
  return request<API.GetEnterpriseWalletBalancesQueryResult>(
    '/api/user/enterpriseWallet/getEnterpriseWalletBalances',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 查询支付宝资金二级商户KYB代进件单详情 GET /api/user/enterpriseWallet/getEnterpriseWalletExpandindirectOrder */
export async function getEnterpriseWalletExpandindirectOrder(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
@@ -295,6 +328,134 @@
  );
}
/** 查询企业微信支付钱包详情 GET /api/user/enterpriseWallet/getEnterpriseWeChatPayWallet */
export async function getEnterpriseWeChatPayWallet(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetEnterpriseWeChatPayWalletParams,
  options?: API.RequestConfig
) {
  return request<API.GetEnterpriseWeChatPayWalletQueryResult>(
    '/api/user/enterpriseWallet/getEnterpriseWeChatPayWallet',
    {
      method: 'GET',
      params: {
        ...params,
      },
      ...(options || {}),
    }
  );
}
/** 查询企业微信钱包地区 GET /api/user/enterpriseWallet/getEnterpriseWeChatPayWalletAreas */
export async function getEnterpriseWeChatPayWalletAreas(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetEnterpriseWeChatPayWalletAreasParams,
  options?: API.RequestConfig
) {
  return request<API.WeChatPayArea[]>(
    '/api/user/enterpriseWallet/getEnterpriseWeChatPayWalletAreas',
    {
      method: 'GET',
      params: {
        ...params,
      },
      ...(options || {}),
    }
  );
}
/** 查询企业微信支付银行账户更新信息 GET /api/user/enterpriseWallet/getEnterpriseWeChatPayWalletBankAccountUpdateInfo */
export async function getEnterpriseWeChatPayWalletBankAccountUpdateInfo(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetEnterpriseWeChatPayWalletBankAccountUpdateInfoParams,
  options?: API.RequestConfig
) {
  return request<API.GetEnterpriseWeChatPayWalletBankAccountUpdateInfoQueryResult>(
    '/api/user/enterpriseWallet/getEnterpriseWeChatPayWalletBankAccountUpdateInfo',
    {
      method: 'GET',
      params: {
        ...params,
      },
      ...(options || {}),
    }
  );
}
/** 查询企业微信支付钱包支行分页列表 POST /api/user/enterpriseWallet/getEnterpriseWeChatPayWalletBankBranches */
export async function getEnterpriseWeChatPayWalletBankBranches(
  body: API.GetEnterpriseWeChatPayWalletBankBranchesQuery,
  options?: API.RequestConfig
) {
  return request<API.GetEnterpriseWeChatPayWalletBankBranchesQueryResult>(
    '/api/user/enterpriseWallet/getEnterpriseWeChatPayWalletBankBranches',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 查询企业微信支付钱包银行城市列表 GET /api/user/enterpriseWallet/getEnterpriseWeChatPayWalletBankCities */
export async function getEnterpriseWeChatPayWalletBankCities(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetEnterpriseWeChatPayWalletBankCitiesParams,
  options?: API.RequestConfig
) {
  return request<API.GetEnterpriseWeChatPayWalletBankCitiesQueryItem[]>(
    '/api/user/enterpriseWallet/getEnterpriseWeChatPayWalletBankCities',
    {
      method: 'GET',
      params: {
        ...params,
      },
      ...(options || {}),
    }
  );
}
/** 查询企业微信支付钱包银行省份列表 GET /api/user/enterpriseWallet/getEnterpriseWeChatPayWalletBankProvinces */
export async function getEnterpriseWeChatPayWalletBankProvinces(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetEnterpriseWeChatPayWalletBankProvincesParams,
  options?: API.RequestConfig
) {
  return request<API.GetEnterpriseWeChatPayWalletBankProvincesQueryItem[]>(
    '/api/user/enterpriseWallet/getEnterpriseWeChatPayWalletBankProvinces',
    {
      method: 'GET',
      params: {
        ...params,
        request: undefined,
        ...params['request'],
      },
      ...(options || {}),
    }
  );
}
/** 查询企业微信支付钱包银行分页列表 POST /api/user/enterpriseWallet/getEnterpriseWeChatPayWalletBanks */
export async function getEnterpriseWeChatPayWalletBanks(
  body: API.GetEnterpriseWeChatPayWalletBanksQuery,
  options?: API.RequestConfig
) {
  return request<API.GetEnterpriseWeChatPayWalletBanksQueryResult>(
    '/api/user/enterpriseWallet/getEnterpriseWeChatPayWalletBanks',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 开通企业钱包 POST /api/user/enterpriseWallet/openEnterpriseWallet */
export async function openEnterpriseWallet(
  body: API.OpenEnterpriseWalletCommand,
@@ -313,6 +474,24 @@
  );
}
/** 开通企业微信钱包 POST /api/user/enterpriseWallet/openEnterpriseWeChatPayWallet */
export async function openEnterpriseWeChatPayWallet(
  body: API.OpenEnterpriseWeChatPayWalletCommand,
  options?: API.RequestConfig
) {
  return request<API.OpenEnterpriseWeChatPayWalletCommandResult>(
    '/api/user/enterpriseWallet/openEnterpriseWeChatPayWallet',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 企业钱包充值 POST /api/user/enterpriseWallet/rechargeEnterpriseWallet */
export async function rechargeEnterpriseWallet(
  body: API.RechargeEnterpriseWalletCommand,
@@ -330,3 +509,21 @@
    }
  );
}
/** 修改企业微信支付钱包结算账户 POST /api/user/enterpriseWallet/updateEnterpriseWeChatPayWalletBankAccountInfo */
export async function updateEnterpriseWeChatPayWalletBankAccountInfo(
  body: API.UpdateEnterpriseWeChatPayWalletBankAccountInfoCommand,
  options?: API.RequestConfig
) {
  return request<API.UpdateEnterpriseWeChatPayWalletBankAccountInfoCommandResult>(
    '/api/user/enterpriseWallet/updateEnterpriseWeChatPayWalletBankAccountInfo',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
packages/services/apiV2/index.ts
@@ -5,42 +5,46 @@
import * as enterpriseEmployee from './enterpriseEmployee';
import * as user from './user';
import * as role from './role';
import * as sms from './sms';
import * as enterpriseWallet from './enterpriseWallet';
import * as ocrUtils from './ocrUtils';
import * as task from './task';
import * as enterprise from './enterprise';
import * as resource from './resource';
import * as logRecords from './logRecords';
import * as resource from './resource';
import * as dictionary from './dictionary';
import * as enterpriseWallet from './enterpriseWallet';
import * as codeUrl from './codeUrl';
import * as electronSign from './electronSign';
import * as userResume from './userResume';
import * as auth from './auth';
import * as taskCheckReceive from './taskCheckReceive';
import * as taskUser from './taskUser';
import * as sms from './sms';
import * as settings from './settings';
import * as menu from './menu';
import * as userWallet from './userWallet';
import * as fileUtils from './fileUtils';
import * as syncDatabase from './syncDatabase';
export default {
  enterpriseEmployee,
  user,
  role,
  sms,
  enterpriseWallet,
  ocrUtils,
  task,
  enterprise,
  resource,
  logRecords,
  resource,
  dictionary,
  enterpriseWallet,
  codeUrl,
  electronSign,
  userResume,
  auth,
  taskCheckReceive,
  taskUser,
  sms,
  settings,
  menu,
  userWallet,
  fileUtils,
  syncDatabase,
};
packages/services/apiV2/settings.ts
New file
@@ -0,0 +1,20 @@
/* eslint-disable */
// @ts-ignore
import { request } from '@/utils/request';
/** 查询微信小程序配置信息 GET /api/common/settings/getWxmpSettings */
export async function getWxmpSettings(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetWxmpSettingsParams,
  options?: API.RequestConfig
) {
  return request<API.GetWxmpSettingsQueryResult>('/api/common/settings/getWxmpSettings', {
    method: 'GET',
    params: {
      ...params,
      request: undefined,
      ...params['request'],
    },
    ...(options || {}),
  });
}
packages/services/apiV2/sms.ts
@@ -26,6 +26,21 @@
  });
}
/** 阿里云短信平台回传通知 POST /api/common/sms/smsAliyunNotify */
export async function smsAliyunNotify(
  body: API.SmsAliyunNotifyCommandItem[],
  options?: API.RequestConfig
) {
  return request<API.SmsAliyunNotifyCommandResult>('/api/common/sms/smsAliyunNotify', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 诚立业短信平台回传通知 POST /api/common/sms/smsChengLiYeNotify */
export async function smsChengLiYeNotify(
  body: API.SmsChengLiYeNotifyCommand,
packages/services/apiV2/task.ts
@@ -2,6 +2,21 @@
// @ts-ignore
import { request } from '@/utils/request';
/** 审核任务结算 POST /api/flexjob/task/auditTaskSettlement */
export async function auditTaskSettlement(
  body: API.AuditTaskSettlementCommand,
  options?: API.RequestConfig
) {
  return request<string>('/api/flexjob/task/auditTaskSettlement', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 删除任务 DELETE /api/flexjob/task/deleteTaskInfo */
export async function deleteTaskInfo(body: API.DeleteTaskInfoCommand, options?: API.RequestConfig) {
  return request<number>('/api/flexjob/task/deleteTaskInfo', {
packages/services/apiV2/taskCheckReceive.ts
@@ -86,6 +86,24 @@
  );
}
/** 查询验收任务详情-签到签出记录 POST /api/flexjob/taskCheckReceive/getCheckReceiveTaskUserSubmitCheckHistories */
export async function getCheckReceiveTaskUserSubmitCheckHistories(
  body: API.GetCheckReceiveTaskUserSubmitCheckHistoriesQuery,
  options?: API.RequestConfig
) {
  return request<API.GetCheckReceiveTaskUserSubmitCheckHistoriesQueryResult>(
    '/api/flexjob/taskCheckReceive/getCheckReceiveTaskUserSubmitCheckHistories',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 查询验收详情 POST /api/flexjob/taskCheckReceive/getCheckReceiveTaskUserSubmits */
export async function getCheckReceiveTaskUserSubmits(
  body: API.GetCheckReceiveTaskUserSubmitsQuery,
packages/services/apiV2/typings.d.ts
@@ -134,6 +134,31 @@
    id?: string;
  }
  interface APIgetEnterpriseWeChatPayWalletAreasParams {
    /** 最大深度 */
    maxDeep?: number;
  }
  interface APIgetEnterpriseWeChatPayWalletBankAccountUpdateInfoParams {
    /** 企业Id */
    enterpriseId?: string;
  }
  interface APIgetEnterpriseWeChatPayWalletBankCitiesParams {
    /** 省份编码,唯一标识一个省份,用于查询该省份下的城市列表 */
    provinceCode: number;
  }
  interface APIgetEnterpriseWeChatPayWalletBankProvincesParams {
    /** 查询企业微信支付钱包银行省份列表 */
    request?: GetEnterpriseWeChatPayWalletBankProvincesQuery;
  }
  interface APIgetEnterpriseWeChatPayWalletParams {
    /** 企业Id */
    enterpriseId?: string;
  }
  interface APIgetFileUrlParams {
    /** 地址 */
    url?: string;
@@ -216,8 +241,10 @@
  interface APIgetSettlementTaskUsersParams {
    /** 结算订单Id */
    id?: string;
    /** 任务Id */
    taskInfoId?: string;
    /** 是否导入用户 */
    isImport?: boolean;
    /** 操作令牌 */
    operatorToken?: string;
  }
  interface APIgetTaskEnterpriseParams {
@@ -261,8 +288,15 @@
  interface APIgetUserInfoRolesParams {
    /** 用户Id */
    userInfoId?: string;
    /** 用户类型 */
    userType?: EnumUserType;
    /** 客户端类型 */
    clientType?: EnumClientType;
  }
  interface APIgetUserParams {
    /** 用户Id */
    id?: string;
  }
  interface APIgetUserResumeCredentialParams {
@@ -302,9 +336,24 @@
    request?: GetUserResumeWorkExperienceQuery;
  }
  interface APIgetWxmpSettingsParams {
    /** 查询微信小程序配置信息 */
    request?: GetWxmpSettingsQuery;
  }
  interface ApplyTaskCommand {
    /** 任务Id */
    ids?: string[];
  }
  interface AuditTaskSettlementCommand {
    /** 结算订单Id */
    id?: string;
    auditStatus?: EnumTaskSettlementAuditStatus;
    /** 审核备注 */
    auditRemark?: string;
    /** 操作令牌 */
    operatorToken?: string;
  }
  interface BaiduOcrBusinessLicenseResultModel {
@@ -336,6 +385,7 @@
  }
  interface BaiduOcrIdentityFrontResultModel {
    /** 姓名 */
    name?: string;
    /** 身份证号 */
    identity?: string;
@@ -359,6 +409,16 @@
    sessionKey: string;
  }
  interface BuildOperatorTokenCommand {
    /** 操作密码 */
    password?: string;
  }
  interface BuildOperatorTokenCommandResult {
    /** 操作令牌 */
    operatorToken?: string;
  }
  interface ChangePhoneNumberCommand {
    /** 手机号码 */
    phoneNumber: string;
@@ -378,9 +438,22 @@
  type CheckHealthQuery = Record<string, any>;
  interface CheckOperatorTokenCommand {
    /** 操作令牌 */
    operatorToken?: string;
  }
  interface CheckReceiveTaskCommand {
    /** 提交Id */
    id?: string;
    /** 任务人员Id */
    taskInfoUserId?: string;
    /** 日期 */
    date?: string;
    /** 签到时间 */
    checkInTime?: string;
    /** 签出时间 */
    checkOutTime?: string;
    checkReceiveStatus?: EnumTaskUserSubmitCheckReceiveStatus;
  }
@@ -456,6 +529,8 @@
  interface EditTaskSettlementOrderRosterCommand {
    /** 名单Id */
    id?: string;
    /** 累计工时 */
    totalWorkHours?: number;
    /** 结算金额 */
    settlementAmount: number;
    /** 实发金额 */
@@ -545,6 +620,8 @@
    Hour = 30,
    /**计件 */
    Piece = 40,
    /**面议 */
    Face = 50,
  }
  enum EnumClientType {
@@ -554,6 +631,8 @@
    Wxmp = 20,
    /**H5登录 */
    H5 = 30,
    /**接口 */
    Api = 40,
  }
  enum EnumCodeUrlScene {
@@ -849,28 +928,34 @@
    CommonServerSyncDatabase = 8,
    /**短信工具 */
    CommonServerSmsUtils = 9,
    /**配置 */
    CommonServerSettings = 10,
    /**用户认证 */
    UserServerAuth = 10,
    UserServerAuth = 11,
    /**用户菜单 */
    UserServerMenu = 11,
    UserServerMenu = 12,
    /**用户资源 */
    UserServerResource = 12,
    UserServerResource = 13,
    /**用户角色 */
    UserServerRole = 13,
    UserServerRole = 14,
    /**用户信息 */
    UserServerUser = 14,
    UserServerUser = 15,
    /**用户钱包 */
    UserServerUserWallet = 16,
    /**电子签 */
    UserServerElectronSign = 15,
    UserServerElectronSign = 17,
    /**用户简历 */
    UserServerUserResume = 16,
    UserServerUserResume = 18,
    /**企业信息 */
    UserServerEnterprise = 17,
    UserServerEnterprise = 19,
    /**企业钱包 */
    UserServerEnterpriseWallet = 18,
    UserServerEnterpriseWallet = 20,
    /**灵工信息 */
    UserServerEnterpriseEmployee = 19,
    UserServerEnterpriseEmployee = 21,
    /**电子签 */
    ElectronSignServerElectronSign = 20,
    ElectronSignServerElectronSign = 22,
    /**电子签 */
    ToolServerSms = 23,
  }
  enum EnumResourceMethod {
@@ -911,8 +996,12 @@
  }
  enum EnumSmsAccess {
    /**无 */
    None = 0,
    /**阿里云短信 */
    AliyunSms = 10,
    /**诚立业 */
    ChengLiYe = 20,
  }
  enum EnumSmsStatus {
@@ -926,6 +1015,13 @@
    Fail = 30,
  }
  enum EnumTaskCheckReceiveMethod {
    /**人工签到 */
    CheckIn = 10,
    /**自主提交 */
    Submit = 20,
  }
  enum EnumTaskCheckReceiveStatus {
    /**待提交 */
    WaitSubmit = 10,
@@ -933,6 +1029,13 @@
    WaitCheckReceive = 20,
    /**已验收 */
    Completed = 30,
  }
  enum EnumTaskPaymentMethod {
    /**直接发放 */
    Direct = 10,
    /**提现发放 */
    Withdraw = 20,
  }
  enum EnumTaskRecommendStatus {
@@ -947,6 +1050,15 @@
    InProcess = 20,
    /**已停止 */
    Stopped = 100,
  }
  enum EnumTaskSettlementAuditStatus {
    /**待审核 */
    Wait = 10,
    /**审核通过 */
    Pass = 20,
    /**驳回 */
    Fail = 30,
  }
  enum EnumTaskSettlementOrderStatus {
@@ -1003,14 +1115,25 @@
    Stop = 50,
  }
  enum EnumTaskUserSubmitCheckHistoryType {
    /**签到 */
    CheckIn = 10,
    /**签出 */
    CheckOut = 20,
    /**未到岗 */
    UnCheckIn = 30,
    /**未签出 */
    UnCheckOut = 40,
  }
  enum EnumTaskUserSubmitCheckReceiveStatus {
    /**待提交 */
    WaitSubmit = 10,
    /**待验收 */
    WaitCheckReceive = 20,
    /**验收通过 */
    /**验收通过/已签到 */
    Success = 30,
    /**验收未通过 */
    /**验收未通过/未到岗 */
    Fail = 40,
  }
@@ -1077,6 +1200,156 @@
    Fail = 50,
  }
  enum EnumWeChatPayApplymentBankAccountType {
    /**对公银行账户 */
    BANK_ACCOUNT_TYPE_CORPORATE = 0,
    /**经营者个人银行卡(仅个体户可选择) */
    BANK_ACCOUNT_TYPE_PERSONAL = 1,
  }
  enum EnumWeChatPayApplymentCertType {
    /**事业单位法人证书(主体为事业单位时选择) */
    CERTIFICATE_TYPE_2388 = 0,
    /**统一社会信用代码证书(主体为政府机关/社会组织时选择) */
    CERTIFICATE_TYPE_2389 = 1,
    /**社会团体法人登记证书(主体为社会组织时选择) */
    CERTIFICATE_TYPE_2394 = 2,
    /**民办非企业单位登记证书(主体为社会组织时选择) */
    CERTIFICATE_TYPE_2395 = 3,
    /**基金会法人登记证书(主体为社会组织时选择) */
    CERTIFICATE_TYPE_2396 = 4,
    /**执业许可证/执业证(主体为社会组织时选择) */
    CERTIFICATE_TYPE_2520 = 5,
    /**基层群众性自治组织特别法人统一社会信用代码证(主体为社会组织时选择) */
    CERTIFICATE_TYPE_2521 = 6,
    /**农村集体经济组织登记证(主体为社会组织时选择) */
    CERTIFICATE_TYPE_2522 = 7,
    /**宗教活动场所登记证(主体为社会组织时选择) */
    CERTIFICATE_TYPE_2399 = 8,
    /**政府部门下发的其他有效证明文件(主体为社会组织时选择) */
    CERTIFICATE_TYPE_2400 = 9,
  }
  enum EnumWeChatPayApplymentContactType {
    /**经营者/法定代表人 */
    LEGAL = 0,
    /**经办人(经商户授权办理微信支付业务的人员) */
    SUPER = 1,
  }
  enum EnumWeChatPayApplymentFinanceType {
    /**银行业(适用于商业银行、政策性银行、农村合作银行、村镇银行、开发性金融机构等) */
    BANK_AGENT = 0,
    /**支付机构(适用于非银行类支付机构) */
    PAYMENT_AGENT = 1,
    /**保险业(适用于保险、保险中介、保险代理、保险经纪等保险类业务) */
    INSURANCE = 2,
    /**交易及结算类金融机构(适用于交易所、登记结算类机构、银行卡清算机构、资金清算中心等) */
    TRADE_AND_SETTLE = 3,
    /**其他金融机构(适用于财务公司、信托公司、金融资产管理公司、金融租赁公司、汽车金融公司、贷款公司、货币经纪公司、消费金融公司、证券业、金融控股公司、股票、期货、货币兑换、小额贷款公司、金融资产管理、担保公司、商业保理公司、典当行、融资租赁公司、财经咨询等其他金融业务) */
    OTHER = 4,
  }
  enum EnumWeChatPayApplymentIdDocType {
    /**中国大陆居民 */
    IDENTIFICATION_TYPE_IDCARD = 0,
    /**其他国家或地区居民 */
    IDENTIFICATION_TYPE_OVERSEA_PASSPORT = 1,
    /**中国香港居民 */
    IDENTIFICATION_TYPE_HONGKONG_PASSPORT = 2,
    /**中国澳门居民 */
    IDENTIFICATION_TYPE_MACAO_PASSPORT = 3,
    /**中国台湾居民 */
    IDENTIFICATION_TYPE_TAIWAN_PASSPORT = 4,
    /**外国人居留证 */
    IDENTIFICATION_TYPE_FOREIGN_RESIDENT = 5,
    /**港澳居民证 */
    IDENTIFICATION_TYPE_HONGKONG_MACAO_RESIDENT = 6,
    /**台湾居民证 */
    IDENTIFICATION_TYPE_TAIWAN_RESIDENT = 7,
  }
  enum EnumWeChatPayApplymentIdHolderType {
    /**经营者/法定代表人 */
    LEGAL = 0,
    /**经办人(经商户授权办理微信支付业务的人员,授权范围包括但不限于签约,入驻过程需完成账户验证) */
    SUPER = 1,
  }
  enum EnumWeChatPayApplymentSalesScenesType {
    /**线下场所 */
    SALES_SCENES_STORE = 0,
    /**服务号与公众号 */
    SALES_SCENES_MP = 1,
    /**小程序 */
    SALES_SCENES_MINI_PROGRAM = 2,
    /**互联网网站 */
    SALES_SCENES_WEB = 3,
    /**App */
    SALES_SCENES_APP = 4,
    /**企业微信 */
    SALES_SCENES_WEWORK = 5,
  }
  enum EnumWeChatPayApplymentState {
    /**编辑中,提交申请发生错误导致,请尝试重新提交 */
    APPLYMENT_STATE_EDITTING = 0,
    /**审核中,申请单正在审核中,超级管理员用微信打开“签约链接”,完成绑定微信号后,申请单进度将通过微信公众号通知超级管理员,引导完成后续步骤 */
    APPLYMENT_STATE_AUDITING = 1,
    /**已驳回,请按照驳回原因修改申请资料,超级管理员用微信打开“签约链接”,完成绑定微信号,后续申请单进度将通过微信公众号通知超级管理员 */
    APPLYMENT_STATE_REJECTED = 2,
    /**待账户验证,请超级管理员使用微信打开返回的“签约链接”,根据页面指引完成账户验证 */
    APPLYMENT_STATE_TO_BE_CONFIRMED = 3,
    /**待签约,请超级管理员使用微信打开返回的“签约链接”,根据页面指引完成签约 */
    APPLYMENT_STATE_TO_BE_SIGNED = 4,
    /**开通权限中,系统开通相关权限中,请耐心等待 */
    APPLYMENT_STATE_SIGNING = 5,
    /**已完成,商户入驻申请已完成 */
    APPLYMENT_STATE_FINISHED = 6,
    /**已作废,申请单已被撤销 */
    APPLYMENT_STATE_CANCELED = 7,
  }
  enum EnumWeChatPayApplymentSubjectType {
    /**个体户(营业执照上的主体类型一般为个体户、个体工商户、个体经营) */
    SUBJECT_TYPE_INDIVIDUAL = 0,
    /**企业(营业执照上的主体类型一般为有限公司、有限责任公司) */
    SUBJECT_TYPE_ENTERPRISE = 1,
    /**政府机关(包括各级、各类政府机关,如机关党委、税务、民政、人社、工商、商务、市监等) */
    SUBJECT_TYPE_GOVERNMENT = 2,
    /**事业单位(包括国内各类事业单位,如:医疗、教育、学校等单位) */
    SUBJECT_TYPE_INSTITUTIONS = 3,
    /**社会组织(包括社会团体、民办非企业、基金会、基层群众性自治组织、农村集体经济组织等组织) */
    SUBJECT_TYPE_OTHERS = 4,
  }
  enum EnumWeChatPaySettlementModifyVerifyResult {
    /**审核成功 */
    AUDIT_SUCCESS = 0,
    /**审核中 */
    AUDITING = 1,
    /**审核驳回 */
    AUDIT_FAIL = 2,
  }
  enum EnumWeChatPaySettlementVerifyResult {
    /**验证成功,该账户可正常发起提现 */
    VERIFY_SUCCESS = 0,
    /**验证失败,该账户无法发起提现,请检查修改 */
    VERIFY_FAIL = 1,
    /**验证中,商户可发起提现尝试 */
    VERIFYING = 2,
  }
  interface ExportEnterpriseBalanceDetailsCommand {
    /** 企业钱包Id */
    enterpriseWalletId?: string;
    /** 创建时间-起始 */
    createdTimeStart?: string;
    /** 创建时间-截止 */
    createdTimeEnd?: string;
  }
  interface ExportTaskCheckReceiveTaskUsersCommand {
    /** 任务Id */
    id?: string;
@@ -1096,6 +1369,24 @@
    errorCode?: string;
    /** 数据 */
    data?: boolean;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultBuildOperatorTokenCommandResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: BuildOperatorTokenCommandResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -1204,6 +1495,24 @@
    /** 错误码 */
    errorCode?: string;
    data?: GetCheckReceiveTasksQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetCheckReceiveTaskUserSubmitCheckHistoriesQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetCheckReceiveTaskUserSubmitCheckHistoriesQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -1484,6 +1793,24 @@
    timestamp?: number;
  }
  interface FriendlyResultGetEnterpriseWalletBalancesQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetEnterpriseWalletBalancesQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetEnterpriseWalletExpandindirectOrderQueryResult {
    /** 跟踪Id */
    traceId?: string;
@@ -1528,6 +1855,78 @@
    /** 错误码 */
    errorCode?: string;
    data?: GetEnterpriseWalletTransactionQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetEnterpriseWeChatPayWalletBankAccountUpdateInfoQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetEnterpriseWeChatPayWalletBankAccountUpdateInfoQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetEnterpriseWeChatPayWalletBankBranchesQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetEnterpriseWeChatPayWalletBankBranchesQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetEnterpriseWeChatPayWalletBanksQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetEnterpriseWeChatPayWalletBanksQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetEnterpriseWeChatPayWalletQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetEnterpriseWeChatPayWalletQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -1618,6 +2017,24 @@
    /** 错误码 */
    errorCode?: string;
    data?: GetMenuQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetOperationUserInfosQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetOperationUserInfosQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -2114,6 +2531,24 @@
    timestamp?: number;
  }
  interface FriendlyResultGetUserQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetUserQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetUserResumeCredentialQueryResult {
    /** 跟踪Id */
    traceId?: string;
@@ -2230,6 +2665,24 @@
    /** 错误码 */
    errorCode?: string;
    data?: GetUserResumeWorkExperienceQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetWxmpSettingsQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetWxmpSettingsQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -2361,6 +2814,44 @@
    errorCode?: string;
    /** 数据 */
    data?: GetEnabledElectronSignSettingsQueryResultItem[];
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultListGetEnterpriseWeChatPayWalletBankCitiesQueryItem {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    /** 数据 */
    data?: GetEnterpriseWeChatPayWalletBankCitiesQueryItem[];
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultListGetEnterpriseWeChatPayWalletBankProvincesQueryItem {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    /** 数据 */
    data?: GetEnterpriseWeChatPayWalletBankProvincesQueryItem[];
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -2580,6 +3071,25 @@
    timestamp?: number;
  }
  interface FriendlyResultListWeChatPayArea {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    /** 数据 */
    data?: WeChatPayArea[];
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultLoginCommandCallback {
    /** 跟踪Id */
    traceId?: string;
@@ -2606,6 +3116,24 @@
    /** 错误码 */
    errorCode?: string;
    data?: OpenEnterpriseWalletCommandResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultOpenEnterpriseWeChatPayWalletCommandResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: OpenEnterpriseWeChatPayWalletCommandResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -2660,24 +3188,6 @@
    /** 错误码 */
    errorCode?: string;
    data?: PagedListQueryResultGetEnterprisesQueryResultItem;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultPagedListQueryResultGetOperationUserInfosQueryResultItem {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: PagedListQueryResultGetOperationUserInfosQueryResultItem;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -2760,6 +3270,24 @@
    timestamp?: number;
  }
  interface FriendlyResultSmsAliyunNotifyCommandResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: SmsAliyunNotifyCommandResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultString {
    /** 跟踪Id */
    traceId?: string;
@@ -2769,6 +3297,24 @@
    errorCode?: string;
    /** 数据 */
    data?: string;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultUpdateEnterpriseWeChatPayWalletBankAccountInfoCommandResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: UpdateEnterpriseWeChatPayWalletBankAccountInfoCommandResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -2929,6 +3475,12 @@
    /** 是否实名 */
    isReal?: boolean;
    realMethod?: EnumUserRealMethod;
    /** 签到时间 */
    checkInTime?: string;
    /** 签出时间 */
    checkOutTime?: string;
    /** 操作人 */
    operator?: string;
    /** 最近提交时间 */
    lastSubmitTime?: string;
    checkReceiveStatus?: EnumTaskCheckReceiveStatus;
@@ -2942,11 +3494,24 @@
    billingMethod?: EnumBillingMethod;
    /** 服务费 */
    serviceFee?: number;
    /** 核定工时 */
    verifyWorkHours?: number;
    /** 超时服务费 */
    timeoutServiceFee?: number;
    settlementCycle?: EnumSettlementCycle;
    /** 任务开始时间 */
    beginTime?: string;
    /** 任务结束时间 */
    endTime?: string;
    /** 报名开始时间 */
    applyBeginTime?: string;
    /** 报名结束时间 */
    applyEndTime?: string;
    checkReceiveMethod?: EnumTaskCheckReceiveMethod;
    paymentMethod?: EnumTaskPaymentMethod;
    settlementAccess?: EnumEnterpriseWalletAccess;
    /** 任务描述 */
    description?: string;
    /** 任务地点名称 */
    addressName?: string;
  }
@@ -2980,6 +3545,10 @@
    billingMethod?: EnumBillingMethod;
    /** 服务费 */
    serviceFee?: number;
    /** 核定工时 */
    verifyWorkHours?: number;
    /** 超时服务费 */
    timeoutServiceFee?: number;
    settlementCycle?: EnumSettlementCycle;
    /** 发布时间 */
    createdTime?: string;
@@ -2987,11 +3556,59 @@
    beginTime?: string;
    /** 任务结束时间 */
    endTime?: string;
    /** 报名开始时间 */
    applyBeginTime?: string;
    /** 报名结束时间 */
    applyEndTime?: string;
    checkReceiveMethod?: EnumTaskCheckReceiveMethod;
    paymentMethod?: EnumTaskPaymentMethod;
    settlementAccess?: EnumEnterpriseWalletAccess;
    /** 任务描述 */
    description?: string;
    /** 任务地点名称 */
    addressName?: string;
    checkReceiveStatus?: EnumTaskCheckReceiveStatus;
    /** 最近验收时间 */
    lastCheckReceiveTime?: string;
  }
  interface GetCheckReceiveTaskUserSubmitCheckHistoriesQuery {
    /** 任务Id */
    taskInfoId?: string;
    /** 日期 */
    date?: string;
    type?: EnumTaskUserSubmitCheckHistoryType;
    pageModel?: PagedListQueryPageModel;
  }
  interface GetCheckReceiveTaskUserSubmitCheckHistoriesQueryResult {
    pageModel?: PagedListQueryResultPageModel;
    /** 数据 */
    data?: GetCheckReceiveTaskUserSubmitCheckHistoriesQueryResultItem[];
  }
  interface GetCheckReceiveTaskUserSubmitCheckHistoriesQueryResultItem {
    /** 记录Id */
    id?: string;
    /** 头像 */
    avatar?: string;
    /** 姓名 */
    name?: string;
    /** 身份证号 */
    identity?: string;
    gender?: EnumUserGender;
    /** 年龄 */
    age?: number;
    /** 手机号 */
    contactPhoneNumber?: string;
    /** 是否实名 */
    isReal?: boolean;
    realMethod?: EnumUserRealMethod;
    /** 签到签出时间 */
    checkTime?: string;
    /** 操作人 */
    operator?: string;
    type?: EnumTaskUserSubmitCheckHistoryType;
  }
  interface GetCheckReceiveTaskUserSubmitQueryResult {
@@ -3027,6 +3644,12 @@
    id?: string;
    /** 验收时间 */
    date?: string;
    /** 签到时间 */
    checkInTime?: string;
    /** 签出时间 */
    checkOutTime?: string;
    /** 操作人 */
    operator?: string;
    /** 提交时间 */
    createdTime?: string;
    /** 验收照片 */
@@ -3680,6 +4303,34 @@
    access?: EnumEnterpriseWalletAccess;
  }
  interface GetEnterpriseWalletBalancesQuery {
    /** 关键字 */
    keywords?: string;
    pageModel?: PagedListQueryPageModel;
  }
  interface GetEnterpriseWalletBalancesQueryResult {
    pageModel?: PagedListQueryResultPageModel;
    /** 数据 */
    data?: GetEnterpriseWalletBalancesQueryResultItem[];
  }
  interface GetEnterpriseWalletBalancesQueryResultItem {
    /** 钱包Id */
    id?: string;
    /** 企业全称 */
    enterpriseName?: string;
    /** 统一社会信用代码 */
    societyCreditCode?: string;
    access?: EnumEnterpriseWalletAccess;
    /** 所属银行 */
    bank?: string;
    /** 账号 */
    identity?: string;
    /** 余额 */
    balance?: number;
  }
  interface GetEnterpriseWalletExpandindirectOrderQueryResult {
    /** 单号 */
    outBizNo?: string;
@@ -3775,6 +4426,199 @@
    /** 订单支付时间 */
    transDate?: string;
    transactionStatus?: EnumWalletTransactionStatus;
  }
  interface GetEnterpriseWeChatPayWalletBankAccountUpdateInfoQueryResult {
    /** 钱包Id */
    id?: string;
    modifySettlementVerifyResult?: EnumWeChatPaySettlementModifyVerifyResult;
    /** 修改结算账户审核驳回原因,审核成功时为空 */
    modifySettlementVerifyFailReason?: string;
    /** 修改结算账户审核结果更新时间,遵循rfc3339标准格式,例如:2015-05-20T13:29:35+08:00 */
    modifySettlementVerifyFinishTime?: string;
    /** 银行别名编码
银行别名的编码,查询支行接口仅支持需要填写支行的银行别名编码 */
    bank_alias_code?: string;
    /** 省份编码,唯一标识一个省份,用于查询该省份下的城市列表 */
    province_code?: number;
    /** 城市编码,唯一标识一座城市,用于结合银行别名编码查询支行列表 */
    city_code?: number;
    /** 银行别名,用于在前端展示全量银行名称供用户选择,如工商银行、深圳前海微众银行等共计4000多家银行的别名名称 */
    bank_alias?: string;
    /** 开户银行编码,用于在入驻、修改结算银行卡、企业付款等场景中填写所用银行卡对应的开户银行,其中非直连银行统一为 1099 */
    account_bank_code?: number;
    /** 是否需要填写支行,该开户银行是否需要传入对应的支行,需要请使用银行别名编码和城市编码查询选择具体的支行并传入(默认值为true)
如需查询城市编码,需要通过查询城市列表接口获取相应的城市编码信息 */
    need_bank_branch?: boolean;
    bank_account_type: EnumWeChatPayApplymentBankAccountType;
    /** 开户名称
1、选择“经营者个人银行卡”时,开户名称必须与“经营者证件姓名”一致;
2、选择“对公银行账户”时,开户名称必须与营业执照上的“商户名称”一致;
3、该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 */
    account_name: string;
    /** 开户银行
对私银行调用:查询支持个人业务的银行列表API
对公银行调用:查询支持对公业务的银行列表API */
    account_bank: string;
    /** 开户银行省市编码
该字段即将下线处理,无需传入
至少精确到市,详细参见省市区编号对照表
注:仅当省市区编号对照表中无对应的省市区编号时,可向上取该银行对应市级编号或省级编号。 */
    bank_address_code?: string;
    /** 开户银行银行号
1、根据开户银行查询接口中的“是否需要填写支行”判断是否需要填写。如为其他银行,开户银行全称(含支行)和开户银行联行号二选一;
2、详细需调用查询支行列表API查看查询结果。 */
    bank_branch_id?: string;
    /** 开户银行全称(含支行)
1、根据开户银行查询接口中的“是否需要填写支行”判断是否需要填写。如为其他银行,开户银行全称(含支行)和开户银行联行号二选一;
2、详细需调用查询支行列表API查看查询结果。 */
    bank_name?: string;
    /** 银行账号
1、数字,长度遵循系统支持的卡号长度要求表;
2、该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 */
    account_number: string;
  }
  interface GetEnterpriseWeChatPayWalletBankBranchesQuery {
    /** 银行别名编码
银行别名的编码,查询支行接口仅支持需要填写支行的银行别名编码 */
    bank_alias_code: string;
    /** 城市编码,唯一标识一座城市,用于结合银行别名编码查询支行列表 */
    city_code: number;
    pageModel?: PagedListQueryPageModel;
  }
  interface GetEnterpriseWeChatPayWalletBankBranchesQueryResult {
    pageModel?: PagedListQueryResultPageModel;
    /** 数据 */
    data?: GetEnterpriseWeChatPayWalletBankBranchesQueryResultItem[];
  }
  interface GetEnterpriseWeChatPayWalletBankBranchesQueryResultItem {
    /** 开户银行支行名称,用于开户银行为其他银行的情况下,在入驻、修改结算银行卡、企业付款等场景下填写结算银行卡信息 */
    bank_branch_name: string;
    /** 开户银行支行的联行号,用于开户银行为其他银行的情况下,在入驻、修改结算银行卡、企业付款等场景下填写结算银行卡信息 */
    bank_branch_id: string;
  }
  interface GetEnterpriseWeChatPayWalletBankCitiesQueryItem {
    /** 城市名称,必填 */
    city_name: string;
    /** 城市编码,唯一标识一座城市,用于结合银行别名编码查询支行列表,必填 */
    city_code: number;
  }
  type GetEnterpriseWeChatPayWalletBankProvincesQuery = Record<string, any>;
  interface GetEnterpriseWeChatPayWalletBankProvincesQueryItem {
    /** 省份名称,必填 */
    province_name: string;
    /** 省份编码,唯一标识一个省份,用于查询该省份下的城市列表,必填 */
    province_code: number;
  }
  interface GetEnterpriseWeChatPayWalletBanksQuery {
    bank_account_type: EnumWeChatPayApplymentBankAccountType;
    pageModel?: PagedListQueryPageModel;
  }
  interface GetEnterpriseWeChatPayWalletBanksQueryResult {
    pageModel?: PagedListQueryResultPageModel;
    /** 数据 */
    data?: GetEnterpriseWeChatPayWalletBanksQueryResultItem[];
  }
  interface GetEnterpriseWeChatPayWalletBanksQueryResultItem {
    /** 银行别名,用于在前端展示全量银行名称供用户选择,如工商银行、深圳前海微众银行等共计4000多家银行的别名名称 */
    bank_alias: string;
    /** 银行别名编码,用于在查询支行列表接口检索获取支行列表(仅开户银行为其他银行时需要查询支行) */
    bank_alias_code: string;
    /** 开户银行名称,用于在入驻、修改结算银行卡、企业付款等场景中填写所用银行卡对应的开户银行,其中非直连银行统一为其他银行 */
    account_bank: string;
    /** 开户银行编码,用于在入驻、修改结算银行卡、企业付款等场景中填写所用银行卡对应的开户银行,其中非直连银行统一为 1099 */
    account_bank_code: number;
    /** 是否需要填写支行,该开户银行是否需要传入对应的支行,需要请使用银行别名编码和城市编码查询选择具体的支行并传入(默认值为true)
如需查询城市编码,需要通过查询城市列表接口获取相应的城市编码信息 */
    need_bank_branch: boolean;
  }
  interface GetEnterpriseWeChatPayWalletQueryResult {
    /** 钱包Id */
    id?: string;
    bank_account_info: GetEnterpriseWeChatPayWalletQueryResultBankAccountInfo;
    /** 超级管理员签约链接
1、超级管理员用微信扫码,关注“微信支付商家助手”公众号后,公众号将自动发送签约消息;超管需点击消息,根据指引完成核对联系信息、账户验证、签约等操作;
2、超管完成核对联系信息,后续申请单进度可通过公众号自动通知超级管理员 */
    sign_url?: string;
    applyment_state?: EnumWeChatPayApplymentState;
    /** 申请状态描述 */
    applyment_state_msg?: string;
    /** 驳回原因详情,各项资料的审核情况,当申请状态为APPLYMENT_STATE_REJECTED时才返回 */
    audit_detail?: WeChatPayGetApplymentResponseAuditDetail[];
    settlementVerifyResult?: EnumWeChatPaySettlementVerifyResult;
    /** 验证失败原因,验证成功时为空 */
    settlementVerifyFailReason?: string;
    modifySettlementVerifyResult?: EnumWeChatPaySettlementModifyVerifyResult;
    /** 修改结算账户审核驳回原因,审核成功时为空 */
    modifySettlementVerifyFailReason?: string;
    /** 修改结算账户审核结果更新时间,遵循rfc3339标准格式,例如:2015-05-20T13:29:35+08:00 */
    modifySettlementVerifyFinishTime?: string;
    /** 余额 */
    balance?: number;
    /** 业务申请编号
1、只能由数字、字母或下划线组成,建议前缀为服务商商户号;
2、服务商自定义的唯一编号;
3、每个编号对应一个申请单,每个申请单审核通过后会生成一个微信支付商户号。 */
    business_code: string;
    contact_info: WeChatPayApplymentBodyParametersContactInfo;
    subject_info: WeChatPayApplymentBodyParametersSubjectInfo;
    business_info: WeChatPayApplymentBodyParametersBusinessInfo;
    settlement_info: WeChatPayApplymentBodyParametersSettlementInfo;
    addition_info?: WeChatPayApplymentBodyParametersAdditionInfo;
  }
  interface GetEnterpriseWeChatPayWalletQueryResultBankAccountInfo {
    /** 银行别名编码
银行别名的编码,查询支行接口仅支持需要填写支行的银行别名编码 */
    bank_alias_code?: string;
    /** 省份编码,唯一标识一个省份,用于查询该省份下的城市列表 */
    province_code?: number;
    /** 城市编码,唯一标识一座城市,用于结合银行别名编码查询支行列表 */
    city_code?: number;
    /** 银行别名,用于在前端展示全量银行名称供用户选择,如工商银行、深圳前海微众银行等共计4000多家银行的别名名称 */
    bank_alias?: string;
    /** 开户银行编码,用于在入驻、修改结算银行卡、企业付款等场景中填写所用银行卡对应的开户银行,其中非直连银行统一为 1099 */
    account_bank_code?: number;
    /** 是否需要填写支行,该开户银行是否需要传入对应的支行,需要请使用银行别名编码和城市编码查询选择具体的支行并传入(默认值为true)
如需查询城市编码,需要通过查询城市列表接口获取相应的城市编码信息 */
    need_bank_branch?: boolean;
    bank_account_type: EnumWeChatPayApplymentBankAccountType;
    /** 开户名称
1、选择“经营者个人银行卡”时,开户名称必须与“经营者证件姓名”一致;
2、选择“对公银行账户”时,开户名称必须与营业执照上的“商户名称”一致;
3、该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 */
    account_name: string;
    /** 开户银行
对私银行调用:查询支持个人业务的银行列表API
对公银行调用:查询支持对公业务的银行列表API */
    account_bank: string;
    /** 开户银行省市编码
该字段即将下线处理,无需传入
至少精确到市,详细参见省市区编号对照表
注:仅当省市区编号对照表中无对应的省市区编号时,可向上取该银行对应市级编号或省级编号。 */
    bank_address_code?: string;
    /** 开户银行银行号
1、根据开户银行查询接口中的“是否需要填写支行”判断是否需要填写。如为其他银行,开户银行全称(含支行)和开户银行联行号二选一;
2、详细需调用查询支行列表API查看查询结果。 */
    bank_branch_id?: string;
    /** 开户银行全称(含支行)
1、根据开户银行查询接口中的“是否需要填写支行”判断是否需要填写。如为其他银行,开户银行全称(含支行)和开户银行联行号二选一;
2、详细需调用查询支行列表API查看查询结果。 */
    bank_name?: string;
    /** 银行账号
1、数字,长度遵循系统支持的卡号长度要求表;
2、该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 */
    account_number: string;
  }
  interface GetExceptionLogsQuery {
@@ -4040,10 +4884,10 @@
    pageModel?: PagedListQueryPageModel;
  }
  interface GetOperationUserInfosQuery {
    /** 关键字 */
    keywords?: string;
    pageModel?: PagedListQueryPageModel;
  interface GetOperationUserInfosQueryResult {
    pageModel?: PagedListQueryResultPageModel;
    /** 数据 */
    data?: GetOperationUserInfosQueryResultItem[];
  }
  interface GetOperationUserInfosQueryResultItem {
@@ -4089,9 +4933,22 @@
    beginTime?: string;
    /** 任务结束时间 */
    endTime?: string;
    /** 报名开始时间 */
    applyBeginTime?: string;
    /** 报名结束时间 */
    applyEndTime?: string;
    checkReceiveMethod?: EnumTaskCheckReceiveMethod;
    paymentMethod?: EnumTaskPaymentMethod;
    settlementAccess?: EnumEnterpriseWalletAccess;
    /** 任务描述 */
    description?: string;
    billingMethod?: EnumBillingMethod;
    /** 服务费 */
    serviceFee?: number;
    /** 核定工时 */
    verifyWorkHours?: number;
    /** 超时服务费 */
    timeoutServiceFee?: number;
    settlementCycle?: EnumSettlementCycle;
    /** 福利 */
    benefits?: GetTaskInfoQueryResultBenefit[];
@@ -4126,9 +4983,22 @@
    beginTime?: string;
    /** 任务结束时间 */
    endTime?: string;
    /** 报名开始时间 */
    applyBeginTime?: string;
    /** 报名结束时间 */
    applyEndTime?: string;
    checkReceiveMethod?: EnumTaskCheckReceiveMethod;
    paymentMethod?: EnumTaskPaymentMethod;
    settlementAccess?: EnumEnterpriseWalletAccess;
    /** 任务描述 */
    description?: string;
    billingMethod?: EnumBillingMethod;
    /** 服务费 */
    serviceFee?: number;
    /** 核定工时 */
    verifyWorkHours?: number;
    /** 超时服务费 */
    timeoutServiceFee?: number;
    settlementCycle?: EnumSettlementCycle;
    /** 福利 */
    benefits?: GetTaskInfoQueryResultBenefit[];
@@ -4156,9 +5026,22 @@
    beginTime?: string;
    /** 任务结束时间 */
    endTime?: string;
    /** 报名开始时间 */
    applyBeginTime?: string;
    /** 报名结束时间 */
    applyEndTime?: string;
    checkReceiveMethod?: EnumTaskCheckReceiveMethod;
    paymentMethod?: EnumTaskPaymentMethod;
    settlementAccess?: EnumEnterpriseWalletAccess;
    /** 任务描述 */
    description?: string;
    billingMethod?: EnumBillingMethod;
    /** 服务费 */
    serviceFee?: number;
    /** 核定工时 */
    verifyWorkHours?: number;
    /** 超时服务费 */
    timeoutServiceFee?: number;
    settlementCycle?: EnumSettlementCycle;
    /** 福利 */
    benefits?: GetTaskInfoQueryResultBenefit[];
@@ -4418,6 +5301,8 @@
    receiveAccount?: string;
    /** 收款人名称 */
    receiveName?: string;
    /** 收款人身份证号 */
    receiveIdentity?: string;
    /** 收款人开户行 */
    receiveBank?: string;
    /** 收款人支行 */
@@ -4442,6 +5327,9 @@
  }
  interface GetPersonalUserTransactionsQuery {
    /** 关键字 */
    keywords?: string;
    transactionStatus?: EnumWalletTransactionStatus;
    /** 创建时间-起始 */
    createdTimeStart?: string;
    /** 创建时间-截止 */
@@ -4449,6 +5337,8 @@
    type?: EnumUserWalletTransactionType;
    /** 用户Id */
    userId?: string;
    /** 企业钱包Id */
    enterpriseWalletId?: string;
    pageModel?: PagedListQueryPageModel;
  }
@@ -4463,6 +5353,8 @@
    /** 收支Id */
    id?: string;
    type?: EnumUserWalletTransactionType;
    /** 订单号 */
    code?: string;
    /** 标题 */
    title?: string;
    /** 金额 */
@@ -4492,11 +5384,20 @@
    receiveAccount?: string;
    /** 收款人名称 */
    receiveName?: string;
    /** 手机号 */
    receiveContactPhoneNumber?: string;
    /** 收款人身份证号 */
    receiveIdentity?: string;
    transactionStatus?: EnumWalletTransactionStatus;
    /** 用途 */
    purpose?: string;
    /** 创建时间 */
    /** 创建时间/提现 */
    createdTime?: string;
    /** 交易时间 */
    /** 发放时间 */
    sendTime?: string;
    /** 电子收据下载链接 */
    ereceiptDownloadOssUrl?: string;
    /** 交易时间/到账时间 */
    transDate?: string;
  }
@@ -4505,6 +5406,23 @@
    sumIncome?: number;
    /** 总提现 */
    sumWithdraw?: number;
    enterpriseWallet?: GetPersonalUserTransactionsQueryResultObjectDataEnterpriseWallet;
  }
  interface GetPersonalUserTransactionsQueryResultObjectDataEnterpriseWallet {
    /** 钱包Id */
    id?: string;
    /** 企业全称 */
    enterpriseName?: string;
    /** 统一社会信用代码 */
    societyCreditCode?: string;
    access?: EnumEnterpriseWalletAccess;
    /** 所属银行 */
    bank?: string;
    /** 账号 */
    identity?: string;
    /** 余额 */
    balance?: number;
  }
  interface GetPersonalUserWalletBalancesQuery {
@@ -4721,6 +5639,7 @@
  interface GetSettlementTasksQuery {
    /** 关键字 */
    keywords?: string;
    paymentStatus?: GetSettlementTasksQueryPaymentStatus;
    settlementOrderStatus?: EnumTaskSettlementOrderStatus;
    settlementStatus?: EnumTaskSettlementStatus;
    checkReceiveStatus?: EnumTaskCheckReceiveStatus;
@@ -4731,7 +5650,17 @@
    pageModel?: PagedListQueryPageModel;
  }
  enum GetSettlementTasksQueryPaymentStatus {
    /**待审核 */
    WaitAudit = 10,
    /**已审核 */
    CompletedAudit = 20,
    /**已发放 */
    CompletedRelease = 30,
  }
  interface GetSettlementTasksQueryResult {
    objectData?: GetSettlementTasksQueryResultObjectData;
    pageModel?: PagedListQueryResultPageModel;
    /** 数据 */
    data?: GetSettlementTasksQueryResultItem[];
@@ -4763,6 +5692,16 @@
    settlementRemark?: string;
    /** 结算人数 */
    settlementUserCount?: number;
    auditStatus?: EnumTaskSettlementAuditStatus;
  }
  interface GetSettlementTasksQueryResultObjectData {
    /** 待审核 */
    waitAuditCount?: number;
    /** 已审核 */
    completedAuditCount?: number;
    /** 已发放 */
    completedReleaseCount?: number;
  }
  interface GetSettlementTaskUsersQueryResult {
@@ -4774,10 +5713,22 @@
  interface GetSettlementTaskUsersQueryResultDetail {
    /** 结算订单Id */
    id?: string;
    /** 校验验收起始日期 */
    checkReceiveBeginDate?: string;
    /** 校验验收截止日期 */
    checkReceiveEndDate?: string;
    /** 任务名称 */
    name?: string;
    /** 任务单号 */
    code?: string;
    billingMethod?: EnumBillingMethod;
    /** 服务费 */
    serviceFee?: number;
    /** 核定工时 */
    verifyWorkHours?: number;
    /** 超时服务费 */
    timeoutServiceFee?: number;
    settlementAccess?: EnumEnterpriseWalletAccess;
    settlementOrderStatus?: EnumTaskSettlementOrderStatus;
    /** 结算单名称 */
    settlementOrderName?: string;
@@ -4790,6 +5741,13 @@
    settlementStatus?: EnumTaskSettlementStatus;
    /** 结算时间 */
    settlementTime?: string;
    auditStatus?: EnumTaskSettlementAuditStatus;
    /** 审核备注 */
    auditRemark?: string;
    /** 审核时间 */
    auditTime?: string;
    /** 审核操作人 */
    auditOperator?: string;
    /** 备注 */
    settlementRemark?: string;
  }
@@ -4797,14 +5755,26 @@
  interface GetSettlementTaskUsersQueryResultItem {
    /** 结算名单Id */
    id?: string;
    /** 任务人员Id */
    taskInfoUserId?: string;
    /** 用户信息Id */
    userId?: string;
    /** 头像 */
    avatar?: string;
    /** 姓名 */
    name?: string;
    /** 身份证号 */
    identity?: string;
    /** 手机号 */
    contactPhoneNumber?: string;
    gender?: EnumUserGender;
    /** 年龄 */
    age?: number;
    /** 是否实名 */
    isReal?: boolean;
    realMethod?: EnumUserRealMethod;
    /** 累计工时 */
    totalWorkHours?: number;
    /** 所属银行 */
    bank?: string;
    /** 开户支行名称 */
@@ -4908,6 +5878,8 @@
    isDisabled?: boolean;
    /** 排序 */
    sort?: number;
    /** 签名名称 */
    signName?: string;
  }
  interface GetTaskEnterpriseQueryResult {
@@ -4953,6 +5925,10 @@
    billingMethod?: EnumBillingMethod;
    /** 服务费 */
    serviceFee?: number;
    /** 核定工时 */
    verifyWorkHours?: number;
    /** 超时服务费 */
    timeoutServiceFee?: number;
    settlementCycle?: EnumSettlementCycle;
    /** 结算日期 */
    settlementDate?: number;
@@ -4985,6 +5961,15 @@
    beginTime?: string;
    /** 任务结束时间 */
    endTime?: string;
    /** 报名开始时间 */
    applyBeginTime?: string;
    /** 报名结束时间 */
    applyEndTime?: string;
    checkReceiveMethod?: EnumTaskCheckReceiveMethod;
    paymentMethod?: EnumTaskPaymentMethod;
    settlementAccess?: EnumEnterpriseWalletAccess;
    /** 任务描述 */
    description?: string;
    /** 创建时间 */
    createdTime?: string;
    /** 是否已收藏 */
@@ -5077,6 +6062,10 @@
    billingMethod?: EnumBillingMethod;
    /** 服务费 */
    serviceFee?: number;
    /** 核定工时 */
    verifyWorkHours?: number;
    /** 超时服务费 */
    timeoutServiceFee?: number;
    settlementCycle?: EnumSettlementCycle;
    /** 福利 */
    benefits?: GetTaskInfoQueryResultBenefit[];
@@ -5106,6 +6095,15 @@
    beginTime?: string;
    /** 任务结束时间 */
    endTime?: string;
    /** 报名开始时间 */
    applyBeginTime?: string;
    /** 报名结束时间 */
    applyEndTime?: string;
    checkReceiveMethod?: EnumTaskCheckReceiveMethod;
    paymentMethod?: EnumTaskPaymentMethod;
    settlementAccess?: EnumEnterpriseWalletAccess;
    /** 任务描述 */
    description?: string;
    releaseStatus?: EnumTaskReleaseStatus;
    checkReceiveStatus?: EnumTaskCheckReceiveStatus;
    recommendStatus?: EnumTaskRecommendStatus;
@@ -5276,6 +6274,29 @@
    isChecked?: boolean;
  }
  interface GetUserQueryResult {
    /** 用户Id */
    id?: string;
    /** 姓名 */
    name?: string;
    /** 用户名 */
    userName?: string;
    /** 手机号 */
    phoneNumber?: string;
    /** 角色Id */
    roles?: GetUserQueryResultRole[];
    status?: EnumUserStatus;
    /** 备注 */
    remark?: string;
  }
  interface GetUserQueryResultRole {
    /** 角色Id */
    id?: string;
    /** 名称 */
    name?: string;
  }
  interface GetUserResumeCredentialQueryResult {
    /** 资格证书Id */
    id?: string;
@@ -5319,6 +6340,8 @@
    weight?: number;
    /** 生活照 */
    photos?: string[];
    /** 生活照 */
    videos?: string[];
  }
  type GetUserResumeJobSeekingQuery = Record<string, any>;
@@ -5418,6 +6441,8 @@
    weight?: number;
    /** 生活照 */
    photos?: string[];
    /** 生活照 */
    videos?: string[];
    /** 经历 */
    taskInfoUsers?: GetUserResumeQueryResultExperience[];
    /** 是否已收藏 */
@@ -5536,6 +6561,19 @@
    workExperience?: string;
  }
  interface GetUsersQuery {
    /** 关键字 */
    keywords?: string;
    pageModel?: PagedListQueryPageModel;
  }
  type GetWxmpSettingsQuery = Record<string, any>;
  interface GetWxmpSettingsQueryResult {
    /** 隐藏支付宝 */
    hiddenAlipay?: boolean;
  }
  interface ImportEnterpriseEmployeesCommand {
    /** Excel地址 */
    excelUrl?: string;
@@ -5609,6 +6647,8 @@
    bankBranch?: string;
    /** 收款账户 */
    receiveAccount?: string;
    /** 累计工时 */
    totalWorkHours?: number;
    /** 结算金额 */
    settlementAmount?: number;
    /** 实发金额 */
@@ -5654,6 +6694,80 @@
    signUrl?: string;
  }
  interface OpenEnterpriseWeChatPayWalletCommand {
    /** 企业Id */
    enterpriseId?: string;
    /** 业务申请编号
1、只能由数字、字母或下划线组成,建议前缀为服务商商户号;
2、服务商自定义的唯一编号;
3、每个编号对应一个申请单,每个申请单审核通过后会生成一个微信支付商户号。 */
    business_code: string;
    bank_account_info: OpenEnterpriseWeChatPayWalletCommandBankAccountInfo;
    contact_info: WeChatPayApplymentBodyParametersContactInfo;
    subject_info: WeChatPayApplymentBodyParametersSubjectInfo;
    business_info: WeChatPayApplymentBodyParametersBusinessInfo;
    settlement_info: WeChatPayApplymentBodyParametersSettlementInfo;
    addition_info?: WeChatPayApplymentBodyParametersAdditionInfo;
  }
  interface OpenEnterpriseWeChatPayWalletCommandBankAccountInfo {
    /** 银行别名编码
银行别名的编码,查询支行接口仅支持需要填写支行的银行别名编码 */
    bank_alias_code?: string;
    /** 省份编码,唯一标识一个省份,用于查询该省份下的城市列表 */
    province_code?: number;
    /** 城市编码,唯一标识一座城市,用于结合银行别名编码查询支行列表 */
    city_code?: number;
    /** 银行别名,用于在前端展示全量银行名称供用户选择,如工商银行、深圳前海微众银行等共计4000多家银行的别名名称 */
    bank_alias?: string;
    /** 开户银行编码,用于在入驻、修改结算银行卡、企业付款等场景中填写所用银行卡对应的开户银行,其中非直连银行统一为 1099 */
    account_bank_code?: number;
    /** 是否需要填写支行,该开户银行是否需要传入对应的支行,需要请使用银行别名编码和城市编码查询选择具体的支行并传入(默认值为true)
如需查询城市编码,需要通过查询城市列表接口获取相应的城市编码信息 */
    need_bank_branch?: boolean;
    bank_account_type: EnumWeChatPayApplymentBankAccountType;
    /** 开户名称
1、选择“经营者个人银行卡”时,开户名称必须与“经营者证件姓名”一致;
2、选择“对公银行账户”时,开户名称必须与营业执照上的“商户名称”一致;
3、该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 */
    account_name: string;
    /** 开户银行
对私银行调用:查询支持个人业务的银行列表API
对公银行调用:查询支持对公业务的银行列表API */
    account_bank: string;
    /** 开户银行省市编码
该字段即将下线处理,无需传入
至少精确到市,详细参见省市区编号对照表
注:仅当省市区编号对照表中无对应的省市区编号时,可向上取该银行对应市级编号或省级编号。 */
    bank_address_code?: string;
    /** 开户银行银行号
1、根据开户银行查询接口中的“是否需要填写支行”判断是否需要填写。如为其他银行,开户银行全称(含支行)和开户银行联行号二选一;
2、详细需调用查询支行列表API查看查询结果。 */
    bank_branch_id?: string;
    /** 开户银行全称(含支行)
1、根据开户银行查询接口中的“是否需要填写支行”判断是否需要填写。如为其他银行,开户银行全称(含支行)和开户银行联行号二选一;
2、详细需调用查询支行列表API查看查询结果。 */
    bank_name?: string;
    /** 银行账号
1、数字,长度遵循系统支持的卡号长度要求表;
2、该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 */
    account_number: string;
  }
  interface OpenEnterpriseWeChatPayWalletCommandResult {
    /** 钱包Id */
    id?: string;
    /** 超级管理员签约链接
1、超级管理员用微信扫码,关注“微信支付商家助手”公众号后,公众号将自动发送签约消息;超管需点击消息,根据指引完成核对联系信息、账户验证、签约等操作;
2、超管完成核对联系信息,后续申请单进度可通过公众号自动通知超级管理员 */
    sign_url?: string;
    applyment_state?: EnumWeChatPayApplymentState;
    /** 申请状态描述 */
    applyment_state_msg?: string;
    /** 驳回原因详情,各项资料的审核情况,当申请状态为APPLYMENT_STATE_REJECTED时才返回 */
    audit_detail?: WeChatPayGetApplymentResponseAuditDetail[];
  }
  interface PagedListQueryPageModel {
    /** 行数 */
    rows?: number;
@@ -5685,12 +6799,6 @@
    pageModel?: PagedListQueryResultPageModel;
    /** 数据 */
    data?: GetEnterprisesQueryResultItem[];
  }
  interface PagedListQueryResultGetOperationUserInfosQueryResultItem {
    pageModel?: PagedListQueryResultPageModel;
    /** 数据 */
    data?: GetOperationUserInfosQueryResultItem[];
  }
  interface PagedListQueryResultGetRolesQueryResultItem {
@@ -5811,6 +6919,20 @@
  interface ResendResourceCommand {
    /** 资源日志Id */
    id?: string;
  }
  interface ResetUserOperatorPasswordsCommand {
    /** Id */
    ids?: string[];
    /** 操作密码 */
    operatorPassword?: string;
  }
  interface ResetUserPasswordsCommand {
    /** Id */
    ids?: string[];
    /** 密码 */
    password?: string;
  }
  interface RevokeTaskSettlementOrderCommand {
@@ -6159,6 +7281,8 @@
    isDisabled?: boolean;
    /** 排序 */
    sort?: number;
    /** 签名名称 */
    signName?: string;
  }
  interface SaveTaskInfoCommand {
@@ -6167,6 +7291,10 @@
    billingMethod: EnumBillingMethod;
    /** 服务费 */
    serviceFee: number;
    /** 核定工时 */
    verifyWorkHours?: number;
    /** 超时服务费 */
    timeoutServiceFee?: number;
    settlementCycle: EnumSettlementCycle;
    /** 结算日期 */
    settlementDate: number;
@@ -6186,7 +7314,7 @@
    /** 任务地点名称 */
    addressName: string;
    /** 任务地点详细地址 */
    addressDetail: string;
    addressDetail?: string;
    /** 经度 */
    longitude?: number;
    /** 纬度 */
@@ -6195,6 +7323,35 @@
    beginTime: string;
    /** 任务结束时间 */
    endTime: string;
    /** 报名开始时间 */
    applyBeginTime?: string;
    /** 报名结束时间 */
    applyEndTime?: string;
    checkReceiveMethod?: EnumTaskCheckReceiveMethod;
    paymentMethod?: EnumTaskPaymentMethod;
    settlementAccess?: EnumEnterpriseWalletAccess;
    /** 任务描述 */
    description?: string;
    /** Id */
    id?: string;
  }
  interface SaveUserCommand {
    /** 姓名 */
    name?: string;
    /** 用户名 */
    userName?: string;
    /** 手机号 */
    phoneNumber?: string;
    /** 密码(选填 填了就改不填就不改) */
    password?: string;
    /** 操作密码(选填 填了就改不填就不改) */
    operatorPassword?: string;
    /** 角色Id */
    roleIds?: string[];
    status?: EnumUserStatus;
    /** 备注 */
    remark?: string;
    /** Id */
    id?: string;
  }
@@ -6227,6 +7384,8 @@
    weight?: number;
    /** 生活照 */
    photos?: string[];
    /** 个人视频 */
    videos?: string[];
  }
  interface SaveUserResumeJobSeekingCommand {
@@ -6258,6 +7417,22 @@
    workSeniority?: string;
    /** 工作经验 */
    workExperience?: string;
  }
  interface SaveUserWalletWithdrawCommand {
    access?: EnumUserBankCardAccess;
    /** 金额 */
    amount?: number;
    /** 收款人开户行 */
    receiveBank?: string;
    /** 收款人支行 */
    receiveBankBranch?: string;
    /** 收款人姓名 */
    receiveName?: string;
    /** 收款人身份证号 */
    receiveIdentity?: string;
    /** 收款账户 */
    receiveAccount?: string;
  }
  interface SelectOptionGuidGetDictionaryCategorySelectQueryOption {
@@ -6424,7 +7599,57 @@
    status?: EnumUserStatus;
  }
  type SmsChengLiYeNotifyCommand = Record<string, any>;
  interface SmsAliyunNotifyCommandItem {
    /** 转发给运营商的时间。 */
    send_time?: string;
    /** 收到运营商回执的时间。 */
    report_time?: string;
    /** 是否发送成功。 */
    success?: boolean;
    /** 错误码信息描述。 */
    err_msg?: string;
    /** 错误码。 */
    err_code?: string;
    /** 短信接收号码。 */
    phone_number?: string;
    /** 短信长度。 */
    sms_size?: string;
    /** 发送回执ID,即发送流水号。 */
    biz_id?: string;
    /** 调用发送短信SendSms接口时传的outId。 */
    out_id?: string;
  }
  interface SmsAliyunNotifyCommandResult {
    /** 回调码 */
    code?: number;
    /** 消息 */
    msg?: string;
  }
  interface SmsChengLiYeNotifyCommand {
    /** 状态码 */
    resultCode?: string;
    /** 状态码 */
    msgReports?: SmsChengLiYeNotifyCommandMsgReport[];
  }
  interface SmsChengLiYeNotifyCommandMsgReport {
    /** 用户名。提交时的用户名 */
    userName?: string;
    /** 提交返回的msgid */
    msgid?: number;
    /** 提交返回的seqid */
    seqid?: string;
    /** 手机号码 */
    mobile?: string;
    /** 手机号码发送状态码 */
    status?: string;
    /** 状态码描述 */
    statusDes?: string;
    /** 报告返回时间 */
    doneTime?: string;
  }
  interface SmsLoginCommand {
    /** 手机号码 */
@@ -6452,7 +7677,6 @@
  interface SureTaskSettlementCommand {
    /** 任务Id */
    taskInfoId?: string;
    settlementAccess?: EnumEnterpriseWalletAccess;
  }
  type SyncDatabaseCommand = Record<string, any>;
@@ -6580,6 +7804,62 @@
    remark?: string;
  }
  interface UpdateEnterpriseWeChatPayWalletBankAccountInfoCommand {
    /** 企业Id */
    enterpriseId?: string;
    /** 银行别名编码
银行别名的编码,查询支行接口仅支持需要填写支行的银行别名编码 */
    bank_alias_code?: string;
    /** 省份编码,唯一标识一个省份,用于查询该省份下的城市列表 */
    province_code?: number;
    /** 城市编码,唯一标识一座城市,用于结合银行别名编码查询支行列表 */
    city_code?: number;
    /** 银行别名,用于在前端展示全量银行名称供用户选择,如工商银行、深圳前海微众银行等共计4000多家银行的别名名称 */
    bank_alias?: string;
    /** 开户银行编码,用于在入驻、修改结算银行卡、企业付款等场景中填写所用银行卡对应的开户银行,其中非直连银行统一为 1099 */
    account_bank_code?: number;
    /** 是否需要填写支行,该开户银行是否需要传入对应的支行,需要请使用银行别名编码和城市编码查询选择具体的支行并传入(默认值为true)
如需查询城市编码,需要通过查询城市列表接口获取相应的城市编码信息 */
    need_bank_branch?: boolean;
    bank_account_type: EnumWeChatPayApplymentBankAccountType;
    /** 开户名称
1、选择“经营者个人银行卡”时,开户名称必须与“经营者证件姓名”一致;
2、选择“对公银行账户”时,开户名称必须与营业执照上的“商户名称”一致;
3、该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 */
    account_name: string;
    /** 开户银行
对私银行调用:查询支持个人业务的银行列表API
对公银行调用:查询支持对公业务的银行列表API */
    account_bank: string;
    /** 开户银行省市编码
该字段即将下线处理,无需传入
至少精确到市,详细参见省市区编号对照表
注:仅当省市区编号对照表中无对应的省市区编号时,可向上取该银行对应市级编号或省级编号。 */
    bank_address_code?: string;
    /** 开户银行银行号
1、根据开户银行查询接口中的“是否需要填写支行”判断是否需要填写。如为其他银行,开户银行全称(含支行)和开户银行联行号二选一;
2、详细需调用查询支行列表API查看查询结果。 */
    bank_branch_id?: string;
    /** 开户银行全称(含支行)
1、根据开户银行查询接口中的“是否需要填写支行”判断是否需要填写。如为其他银行,开户银行全称(含支行)和开户银行联行号二选一;
2、详细需调用查询支行列表API查看查询结果。 */
    bank_name?: string;
    /** 银行账号
1、数字,长度遵循系统支持的卡号长度要求表;
2、该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 */
    account_number: string;
  }
  interface UpdateEnterpriseWeChatPayWalletBankAccountInfoCommandResult {
    /** 钱包Id */
    id?: string;
    modifySettlementVerifyResult?: EnumWeChatPaySettlementModifyVerifyResult;
    /** 修改结算账户审核驳回原因,审核成功时为空 */
    modifySettlementVerifyFailReason?: string;
    /** 修改结算账户审核结果更新时间,遵循rfc3339标准格式,例如:2015-05-20T13:29:35+08:00 */
    modifySettlementVerifyFinishTime?: string;
  }
  interface UpdatePhoneNumberVerifyCodeCommand {
    /** 手机号码 */
    phoneNumber: string;
@@ -6590,6 +7870,613 @@
    url?: string;
  }
  interface WeChatPayApplymentBodyParametersAdditionInfo {
    /** 法定代表人开户承诺函
1、请上传法定代表人或负责人亲笔签署的开户承诺函扫描件(下载模板)。亲笔签名承诺函内容清晰可见,不得有涂污,破损,字迹不清晰现象;
2、请填写通过图片上传API预先上传图片生成好的MediaID 。 */
    legal_person_commitment?: string;
    /** 法定代表人开户意愿视频
1、建议法定代表人按如下话术录制“法定代表人开户意愿视频”:
我是#公司全称#的法定代表人(或负责人),特此证明本公司申请的商户号为我司真实意愿开立且用于XX业务(或XX服务)。我司现有业务符合法律法规及腾讯的相关规定。
2、支持上传20M内的视频,格式可为avi、wmv、mpeg、mp4、mov、mkv、flv、f4v、m4v、rmvb;
3、请填写通过视频上传API预先上传视频生成好的MediaID 。 */
    legal_person_video?: string;
    /** 补充材料
1、最多可上传5张照片;
2、请填写通过图片上传API预先上传图片生成好的MediaID。 */
    business_addition_pics?: string[];
    /** 补充说明
512字以内 */
    business_addition_msg?: string;
  }
  interface WeChatPayApplymentBodyParametersBusinessInfo {
    /** 商户简称
在支付完成页向买家展示,需与微信经营类目相关
1、请输入1-64个字符;
2、前后不能有空格、制表符、换行符;
3、不能仅含特殊字符;
4、仅能填写数字、英文字母、汉字及特殊字符;
5、仅支持utf-8格式;
6、简称要求
(1)不支持单纯以人名来命名,若为个体户经营,可用“个体户+经营者名称”或“经营者名称+业务”命名,如“个体户张三”或“张三餐饮店”;
(2)不支持无实际意义的文案,如“XX特约商户”、“800”、“XX客服电话XXX”。 */
    merchant_shortname: string;
    /** 客服电话
将在交易记录中向买家展示,请确保电话畅通以便平台回拨确认
1、前后不能有空格、制表符、换行符;
2、需满足以下任一条件;
11位数字的手机号码;
5-20位数字、连字符“-”、加号“+”。 */
    service_phone: string;
    sales_info: WeChatPayApplymentBodyParametersBusinessInfoSalesInfo;
  }
  interface WeChatPayApplymentBodyParametersBusinessInfoSalesInfo {
    /** 经营场景类型
1、请勾选实际售卖商品/提供服务场景(至少一项),以便为你开通需要的支付权限;
2、建议只勾选目前必须的场景,以便尽快通过入驻审核,其他支付权限可在入驻后再根据实际需要发起申请 */
    sales_scenes_type: EnumWeChatPayApplymentSalesScenesType[];
    biz_store_info?: WeChatPayApplymentBodyParametersBusinessInfoSalesInfoBizStoreInfo;
    mp_info?: WeChatPayApplymentBodyParametersBusinessInfoSalesInfoMpInfo;
    mini_program_info?: WeChatPayApplymentBodyParametersBusinessInfoSalesInfoMiniProgramInfo;
    app_info?: WeChatPayApplymentBodyParametersBusinessInfoSalesInfoAppInfo;
    web_info?: WeChatPayApplymentBodyParametersBusinessInfoSalesInfoWebInfo;
    wework_info?: WeChatPayApplymentBodyParametersBusinessInfoSalesInfoWeworkInfo;
  }
  interface WeChatPayApplymentBodyParametersBusinessInfoSalesInfoAppInfo {
    /** 服务商应用AppID
1、服务商应用AppID与商家应用AppID,二选一必填;
2、可填写当前服务商商户号已绑定的应用AppID。 */
    app_appid?: string;
    /** 商家应用AppID
1、服务商应用AppID与商家应用AppID,二选一必填;
2、可填写与商家主体一致且已认证的应用AppID,需是已认证的App;
3、审核通过后,系统将发起特约商家商户号与该AppID的绑定(即配置为sub_appid),服务商随后可在发起支付时选择传入该AppID,以完成支付,并获取sub_openid用于数据统计,营销等业务场景。 */
    app_sub_appid?: string;
    /** App截图
1、请提供APP首页截图、尾页截图、应用内截图、支付页截图各1张;
2、请填写通过图片上传API预先上传图片生成好的MediaID。 */
    app_pics: string[];
  }
  interface WeChatPayApplymentBodyParametersBusinessInfoSalesInfoBizStoreInfo {
    /** 线下场所名称
请填写门店名称
1、长度为1-50个字符;
2、前后不能有空格、制表符、换行符;
3、不能仅含数字、特殊字符;
4、仅能填写数字、英文字母、汉字及特殊字符;
5、仅支持utf-8格式。 */
    biz_store_name: string;
    /** 线下场所省市编码
1、只能由数字组成;
2、详细参见微信支付提供的省市对照表。 */
    biz_address_code: string;
    /** 线下场所地址
请填写详细的经营场所信息,如有多个场所,选择一个主要场所填写即可。
1、长度为4-512个字符;
2、前后不能有空格、制表符、换行符;
3、不能仅含数字、特殊字符;
4、仅能填写数字、英文字母、汉字及特殊字符;
5、仅支持utf-8格式。 */
    biz_store_address: string;
    /** 线下场所门头照片
1、请上传门头正面照片(要求门店招牌、门框完整、清晰、可辨识);若为停车场等无固定门头照片的经营场所,可上传岗亭/出入闸口。具体参考【指引文档】;
2、请填写通过图片上传API预先上传图片生成好的MediaID。 */
    store_entrance_pic: string[];
    /** 线下场所内部照片
1、请上传门店内部环境照片(可辨识经营内容)。若为停车场等无固定门头的经营场所,可上传停车场内部照片。具体参考【指引文档】;
2、请填写通过图片上传API预先上传图片生成好的MediaID。 */
    indoor_pic: string[];
    /** 线下场所对应的商家AppID
1、可填写与商家主体一致且已认证的服务号或公众号、小程序、APP的AppID,其中服务号或公众号AppID需是已认证的服务号、政府或媒体类型的公众号;
2、审核通过后,系统将额外为商家开通付款码支付、JSAPI支付的自有交易权限,并完成商家商户号与该AppID的绑定。 */
    biz_sub_appid?: string;
  }
  interface WeChatPayApplymentBodyParametersBusinessInfoSalesInfoMiniProgramInfo {
    /** 服务商小程序AppID
1、服务商小程序AppID与商家小程序AppID,二选一必填;
2、可填写当前服务商商户号已绑定的小程序AppID。 */
    mini_program_appid?: string;
    /** 商家小程序AppID
1、服务商小程序AppID与商家小程序AppID,二选一必填;
2、请填写已认证的小程序AppID;
3、完成进件后,系统发起特约商户号与该AppID的绑定(即配置为sub_appid可在发起支付时传入)
(1)若AppID主体与商家主体/服务商主体一致,则直接完成绑定;
(2)若AppID主体与商家主体/服务商主体不一致,则商户签约时显示《联合营运承诺函》,并且AppID的管理员需登录公众平台确认绑定意愿。 */
    mini_program_sub_appid?: string;
    /** 小程序截图
1、请提供展示商品/服务的页面截图/设计稿(最多5张),若小程序未建设完善或未上线 请务必提供;
2、请填写通过图片上传API预先上传图片生成好的MediaID。 */
    mini_program_pics?: string[];
  }
  interface WeChatPayApplymentBodyParametersBusinessInfoSalesInfoMpInfo {
    /** 服务商服务号或公众号AppID
1、服务商服务号或公众号AppID、商家服务号或公众号AppID,二选一必填;
2、可填写当前服务商商户号已绑定的服务号或公众号AppID。 */
    mp_appid?: string;
    /** 商家服务号或公众号AppID
1、服务商服务号或公众号AppID、商家服务号或公众号AppID,二选一必填;
2、可填写与商家主体一致且已认证的服务号或公众号AppID,需是已认证的服务号、政府或媒体类型的公众号;
3、审核通过后,系统将发起特约商家商户号与该AppID的绑定(即配置为sub_appid),服务商随后可在发起支付时选择传入该appid,以完成支付,并获取sub_openid用于数据统计,营销等业务场景。 */
    mp_sub_appid?: string;
    /** 服务号或公众号页面截图
1、请提供展示商品/服务的页面截图/设计稿(最多5张),若服务号或公众号未建设完善或未上线请务必提供;
2、请填写通过图片上传API预先上传图片生成好的MediaID。 */
    mp_pics: string[];
  }
  interface WeChatPayApplymentBodyParametersBusinessInfoSalesInfoWebInfo {
    /** 互联网网站域名
1、如为PC端商城、智能终端等场景,可上传官网链接;
2、网站域名需ICP备案,若备案主体与申请主体不同,请上传加盖公章的网站授权函。 */
    domain: string;
    /** 网站授权函
1、若备案主体与申请主体不同,请务必上传加盖公章的网站授权函.doc;
2、请填写通过图片上传API预先上传图片生成好的MediaID。 */
    web_authorisation?: string;
    /** 互联网网站对应的商家AppID
1、可填写已认证的服务号或公众号、小程序、APP的AppID,其中服务号或公众号AppID需是已认证的服务号、政府或媒体类型的公众号;
2、完成进件后,系统发起特约商户号与该AppID的绑定(即配置为sub_appid,可在发起支付时传入)
  (1)若APPID主体与商家主体一致,则直接完成绑定;
  (2)若APPID主体与商家主体不一致,则商户签约时显示《联合营运承诺函》,并且 AppID的管理员需登录公众平台确认绑定意愿;( 暂不支持绑定异主体的应用APPID)。 */
    web_appid?: string;
  }
  interface WeChatPayApplymentBodyParametersBusinessInfoSalesInfoWeworkInfo {
    /** 商家企业微信CorpID
1、可填写与商家主体一致且已认证的企业微信CorpID;
2、审核通过后,系统将为商家开通企业微信专区的自有交易权限,并完成商家商户号与该AppID的绑定,商家可自行发起交易。 */
    sub_corp_id: string;
    /** 企业微信页面截图
1、最多可上传5张照片;
2、请填写通过图片上传API预先上传图片生成好的MediaID。 */
    wework_pics: string[];
  }
  interface WeChatPayApplymentBodyParametersContactInfo {
    contact_type: EnumWeChatPayApplymentContactType;
    /** 超级管理员姓名
1、长度为2-100个字符;
2、前后不能有空格、制表符、换行符;
3、不能仅含数字、特殊字符;
4、仅能填写数字、英文字母、汉字及特殊字符。
该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 */
    contact_name: string;
    contact_id_doc_type?: EnumWeChatPayApplymentIdDocType;
    /** 超级管理员身份证件号码
1、当超级管理员类型是经办人时,请上传超级管理员证件号码;
2、可传身份证、来往内地通行证、来往大陆通行证、护照等证件号码,号码规范如下:
身份证(限中国大陆居民):17位数字+1位数字|X;
护照(限境外人士):4-15位 数字|字母|连字符;
中国香港居民--来往内地通行证:H/h开头+8或10位数字/字母;
中国澳门居民--来往内地通行证:M/m开头+8或10位数字/字母;
中国台湾居民--来往大陆通行证:8位数字或10位数字;
外国人居留证:15位 数字|字母;
台湾居民居住证/港澳居民居住证:17位数字+1位数字|X;
3、超级管理员签约时,校验微信号绑定的银行卡实名信息,是否与该证件号码一致;
4、该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 */
    contact_id_number?: string;
    /** 超级管理员证件正面照片
1、当超级管理员类型是经办人时,请上传超级管理员证件的正面照片;
2、若证件类型为身份证,请上传人像面照片;
3、正面拍摄、清晰、四角完整、无反光或遮挡;不得翻拍、截图、镜像、PS;
4、请上传彩色照片或彩色扫描件或复印件(需加盖公章鲜章),可添加“微信支付”相关水印(如微信支付认证),见【指引文档】;
5、可上传1张图片,请填写通过图片上传API预先上传图片生成好的MediaID。 */
    contact_id_doc_copy?: string;
    /** 超级管理员证件反面照片
1、当超级管理员类型是经办人时,请上传超级管理员证件的反面照片;
2、若证件类型为护照,无需上传反面照片;
3、正面拍摄、清晰、四角完整、无反光或遮挡;不得翻拍、截图、镜像、PS;
4、请上传彩色照片或彩色扫描件,复印件需加盖公章鲜章,可添加“微信支付”相关水印(如微信支付认证),见【指引文档】;
5、可上传1张图片,请填写通过图片上传API预先上传图片生成好的MediaID。 */
    contact_id_doc_copy_back?: string;
    /** 超级管理员证件有效期开始时间
1、当超级管理员类型是经办人时,请上传证件有效期开始时间;
2、请按照示例值填写,日期格式应满足合法的YYYY-MM-DD格式;
3、开始时间不能小于1900-01-01,开始时间不能大于等于当前日期。 */
    contact_period_begin?: string;
    /** 超级管理员证件有效期结束时间
1、当超级管理员类型是经办人时,请上传证件有效期结束时间;
2、请按照示例值填写,日期格式应满足合法的YYYY-MM-DD格式,若证件有效期为长期,请填写:长期;
3、结束时间大于开始时间。 */
    contact_period_end?: string;
    /** 业务办理授权函
该字段即将下线处理,无需传入
1、当超级管理员类型是经办人时,请上传业务办理授权函;
2、请参照示例图打印业务办理授权函,全部信息需打印,不支持手写商户信息,并加盖公章;
3、可上传1张图片,请填写通过图片上传API预先上传图片生成好的MediaID。 */
    business_authorization_letter?: string;
    /** 超级管理员微信OpenID
该字段选填,若上传为超级管理员签约时,会校验微信号是否与该微信OpenID一致 */
    openid?: string;
    /** 联系手机
1、前后不能有空格、制表符、换行符;
2、需满足以下任一条件:
11位数字的手机号码;
5-20位数字、连字符“-”、加号“+”;
3、用于接收微信支付的重要管理信息及日常操作验证码;
4、该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 */
    mobile_phone: string;
    /** 联系邮箱
1、用于接收微信支付的开户邮件及日常业务通知;
2、需要带@,遵循邮箱格式校验 ,该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 */
    contact_email: string;
  }
  interface WeChatPayApplymentBodyParametersSettlementInfo {
    /** 入驻结算规则ID
请选择结算规则ID,详细参见费率结算规则对照表 */
    settlement_id: string;
    /** 所属行业
填写指定行业名称,详细参见费率结算规则对照表 */
    qualification_type: string;
    /** 特殊资质图片
1、仅当商户选择了必需提交特殊资质的行业时,需要提供该项资料;若商户选择了无需特殊资质的行业,或未选择行业时,无需提交该项资料,详情查看《费率结算规则对照表》;
2、最多可上传5张照片,请填写通过图片上传API预先上传图片生成好的MediaID。 */
    qualifications?: string[];
    /** 优惠费率活动ID
选择指定活动ID,如果商户有意向报名优惠费率活动,该字段必填。详细参见《优惠费率活动对照表》 */
    activities_id?: string;
    /** 优惠费率活动值
根据优惠费率活动规则,由合作伙伴自定义填写,支持两个小数点,需在优惠费率活动ID指定费率范围内
(1)2023年7月17日-9月17日,各合作伙伴平台可选择只传入“活动费率值”,或分别传入“信用卡优惠活动费率值” 与 “非信用卡优惠活动费率值”,只传入“活动费率值”的情况下,平台将协助将申请单中的 “优惠活动费率值” 回填入新增的 “信用卡优惠活动费率值” 与 “非信用卡优惠活动费率值”中 ;
(2)2023年9月18日起,平台将不再提供如上兼容能力,届时仅能分别传入“信用卡优惠活动费率值” 与 “非信用卡优惠活动费率值”,否则接口将会报错。为避免影响正常进件,请在兼容期间完成相关调整。 */
    activities_rate?: string;
    /** 优惠费率活动补充材料
1、根据所选优惠费率活动,提供相关材料,详细参见《优惠费率活动对照表》;
2、最多可上传5张照片,请填写通过图片上传API预先上传图片生成好的MediaID。 */
    activities_additions?: string[];
    /** 非信用卡活动费率值
用户支付方式为借记卡时收取的手续费费率:
1、若填写了优惠费率活动ID,则该字段必填;
2、仅能填入2位以内小数,且在优惠费率活动ID指定费率范围内。 */
    debit_activities_rate?: string;
    /** 信用卡活动费率值
用户支付方式为信用卡时收取的手续费费率:
1、若填写了优惠费率活动ID,则该字段必填;
2、仅能填入2位以内小数,且在优惠费率活动ID指定费率范围内。 */
    credit_activities_rate?: string;
  }
  interface WeChatPayApplymentBodyParametersSubjectInfo {
    subject_type: EnumWeChatPayApplymentSubjectType;
    /** 是否是金融机构
选填,请根据申请主体的实际情况填写,可参考选择金融机构指引:
1、若商户主体是金融机构,则填写:true;
2、若商户主体不是金融机构,则填写:false。
若未传入将默认填写:false。 */
    finance_institution?: boolean;
    business_license_info?: WeChatPayApplymentBodyParametersSubjectInfoBusinessLicenseInfo;
    certificate_info?: WeChatPayApplymentBodyParametersSubjectInfoCertificateInfo;
    finance_institution_info?: WeChatPayApplymentBodyParametersSubjectInfoFinanceInstitutionInfo;
    identity_info: WeChatPayApplymentBodyParametersSubjectInfoIdentityInfo;
    /** 最终受益人信息列表(UBO)
1、主体类型个体户/社会组织/政府机关/事业单位时,无需填写
2、主体类型为企业时,按照下述要求填写
1)若经营者/法定代表人不是最终受益所有人,则需提填写受益所有人信息,最多上传4个。
2)若经营者/法定代表人是最终受益所有人之一,可在此填写其他受益所有人信息,最多上传3个。
根据国家相关法律法规,需要提供公司受益所有人信息,受益所有人需符合至少以下条件之一:
▪️直接或者间接拥有超过25%公司股权或者表决权的自然人。
▪️通过人事、财务等其他方式对公司进行控制的自然人。
▪️公司的高级管理人员,包括公司的经理、副经理、财务负责人、上市公司董事会秘书和公司章程规定的其他人员。 */
    ubo_info_list?: WeChatPayApplymentBodyParametersSubjectInfoUboInfo[];
  }
  interface WeChatPayApplymentBodyParametersSubjectInfoBusinessLicenseInfo {
    /** 营业执照照片
1、照片应正面拍摄、清晰、四角完整、无反光或遮挡;不得翻拍、截图、镜像、PS;
2、上传彩色照片、彩色扫描件,复印件需加盖公章鲜章;
3、水印仅限于微信支付业务相关;
4、指引与示例可参考【指引文档】;
5、可上传1张图片,请填写通过图片上传API预先上传图片生成好的MediaID。 */
    license_copy: string;
    /** 注册号/统一社会信用代码
1、主体为“个体工商户”时,请填写营业执照上的注册号/统一社会信用代码,格式需满足以下任一条件:
-15位数字;
-18位阿拉伯数字或大写英文字母(不得包含英文字母I/O/Z/S/V),并且以9开头。
2、主体为“企业”时,请填写营业执照上的注册号/统一社会信用代码,格式如下:
-18位阿拉伯数字或大写英文字母(不得包含英文字母I/O/Z/S/V),并且以9开头。 */
    license_number: string;
    /** 商户名称
1、长度为2-128个字符;
2、前后不能有空格、制表符、换行符;
3、不能仅含数字、特殊字符;
4、仅能填写数字、英文字母、汉字及特殊字符;
5、仅支持utf-8格式;
6、个体户证件为以下情况时,按照个体户XXX命名(XXX是营业执照经营人姓名):营业执照登记名称为空、仅含数字、仅含特殊字符、“无”、“无字号”;
7、个体户不能使用“企业”“公司”或“农民专业合作社”结尾。 */
    merchant_name: string;
    /** 个体户经营者/法定代表人姓名
请填写营业执照的经营者/法定代表人姓名
1、长度为2-100个字符;
2、前后不能有空格、制表符、换行符;
3、不能仅含特殊字符;
4、仅能填写数字、英文字母、汉字及特殊字符。 */
    legal_person: string;
    /** 注册地址
建议填写营业执照的注册地址,若该字段未填写,系统将会查询国家工商信息填入。需注意若工商信息查询不到,则会被审核驳回。
1、长度为4-128个字符;
2、前后不能有空格、制表符、换行符;
3、不能仅含数字、特殊字符;
4、仅能填写数字、英文字母、汉字及特殊字符;
5、仅支持utf-8格式。 */
    license_address?: string;
    /** 有效期限开始日期
建议填写营业执照的有效期限开始时间,若该字段未填写,系统将会查询国家工商信息填入。需注意若工商信息查询不到,则会被审核驳回。
1、日期格式应满足合法的YYYY-MM-DD格式;
2、开始时间不能小于1900-01-01;
3、开始时间不能大于等于当前日期。 */
    period_begin?: string;
    /** 有效期限结束日期
建议填写营业执照的有效期限结束时间,若该字段未填写,系统将会查询国家工商信息填入。需注意若工商信息查询不到,则会被审核驳回。
1、日期格式应满足合法的YYYY-MM-DD格式或长期;
2、结束时间需大于开始时间。 */
    period_end?: string;
  }
  interface WeChatPayApplymentBodyParametersSubjectInfoCertificateInfo {
    /** 登记证书照片
1、照片应正面拍摄、清晰、四角完整、无反光或遮挡;不得翻拍、截图、镜像、PS;
2、上传彩色照片、彩色扫描件,复印件需加盖公章鲜章;
3、水印仅限于微信支付业务相关;
4、指引与示例可参考【指引文档】;
5、请填写通过图片上传API预先上传图片生成好的MediaID。 */
    cert_copy: string;
    cert_type: EnumWeChatPayApplymentCertType;
    /** 证书号
请输入与所选证书类型相匹配且符合国家标准规范的证书号,其中除政府证明文件外,需满足18位阿拉伯数字或大写英文字母(不得包含英文字母I/O/Z/S/V) */
    cert_number: string;
    /** 商户名称
请填写登记证书上的商户名称
1、长度为2-128个字符;
2、前后不能有空格、制表符、换行符;
3、不能仅含数字、特殊字符;
4、仅能填写数字、英文字母、汉字及特殊字符;
5、仅支持utf-8格式。 */
    merchant_name: string;
    /** 注册地址
请填写登记证书的注册地址
1、长度为4-128个字符;
2、前后不能有空格、制表符、换行符;
3、不能仅含数字、特殊字符;
4、仅能填写数字、英文字母、汉字及特殊字符;
5、仅支持utf-8格式。 */
    company_address: string;
    /** 法定代表人
请填写登记证书上的法定代表人姓名
1、长度为2-100个字符;
2、前后不能有空格、制表符、换行符;
3、不能仅含特殊字符;
4、仅能填写数字、英文字母、汉字及特殊字符。 */
    legal_person: string;
    /** 有效期限开始日期
1、日期格式应满足合法的YYYY-MM-DD格式;
2、开始时间不能小于1900-01-01;
3、开始时间不能大于等于当前日期。 */
    period_begin: string;
    /** 有效期限结束日期
1、日期格式应满足合法的YYYY-MM-DD格式或长期;
2、结束时间需大于开始时间。 */
    period_end: string;
    /** 单位证明函照片
1、主体类型为政府机关、事业单位选传:
  (1)若上传,则审核通过后即可签约,无需汇款验证;
  (2)若未上传,则审核通过后,需汇款验证。
2、主体为个体户、企业、其他组织等,不需要上传本字段;
3、请参照示例图打印单位证明函,全部信息需打印,不支持手写商户信息,并加盖公章;
4、可上传1张图片,请填写通过图片上传API预先上传图片生成好的MediaID。 */
    certificate_letter_copy?: string;
  }
  interface WeChatPayApplymentBodyParametersSubjectInfoFinanceInstitutionInfo {
    finance_type: EnumWeChatPayApplymentFinanceType;
    /** 金融机构许可证图片
1、照片应正面拍摄、清晰、四角完整、无反光或遮挡;不得翻拍、截图、镜像、PS;
2、上传彩色照片、彩色扫描件,复印件需加盖公章鲜章;
3、水印仅限于微信支付业务相关;
4、根据所属金融机构类型的许可证要求提供,详情查看金融机构指引;
5、请提供为“申请商家主体”所属的许可证,可授权使用总公司/分公司的特殊资质;
6、最多可上传5张照片,请填写通过图片上传API预先上传图片生成好的MediaID。 */
    finance_license_pics: string[];
  }
  interface WeChatPayApplymentBodyParametersSubjectInfoIdentityInfo {
    id_holder_type?: EnumWeChatPayApplymentIdHolderType;
    id_doc_type?: EnumWeChatPayApplymentIdDocType;
    /** 法定代表人说明函
1、当证件持有人类型为经办人时,必须上传。其他情况,无需上传;
2、若因特殊情况,无法提供法定代表人证件时,请参照示例图打印法定代表人说明函,全部信息需打印,不支持手写商户信息,并加盖公章;
3、可上传1张图片,请填写通过图片上传API预先上传图片生成好的MediaID。 */
    authorize_letter_copy?: string;
    id_card_info?: WeChatPayApplymentBodyParametersSubjectInfoIdentityInfoIdCardInfo;
    id_doc_info?: WeChatPayApplymentBodyParametersSubjectInfoIdentityInfoIdDocInfo;
  }
  interface WeChatPayApplymentBodyParametersSubjectInfoIdentityInfoIdCardInfo {
    /** 身份证人像面照片
1、请上传个体户经营者/法定代表人的身份证人像面照片;
2、正面拍摄、清晰、四角完整、无反光或遮挡;不得翻拍、截图、镜像、PS;
3、请上传彩色照片or彩色扫描件,复印件需加盖公章鲜章,可添加“微信支付”相关水印(如微信支付认证),见【指引文档】;
4、可上传1张图片,请填写通过图片上传API预先上传图片生成好的MediaID。 */
    id_card_copy: string;
    /** 身份证国徽面照片
1、请上传个体户经营者/法定代表人的身份证国徽面照片;
2、正面拍摄、清晰、四角完整、无反光或遮挡;不得翻拍、截图、镜像、PS;
3、请上传彩色照片or彩色扫描件,复印件需加盖公章鲜章,可添加“微信支付”相关水印(如微信支付认证),见【指引文档】;
4、可上传1张图片,请填写通过图片上传API预先上传图片生成好的MediaID。 */
    id_card_national: string;
    /** 身份证姓名
1、请填写个体户经营者/法定代表人对应身份证的姓名;
2、长度为2-100个字符;
3、前后不能有空格、制表符、换行符;
4、不能仅含数字、特殊字符;
5、仅能填写数字、英文字母、汉字及特殊字符;
6、该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 */
    id_card_name: string;
    /** 身份证号码
1、请填写个体户经营者/法定代表人对应身份证的号码;
2、17位数字+1位数字|X ,该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 */
    id_card_number: string;
    /** 身份证居住地址
1、主体类型为企业时,需要填写。其他主体类型,无需上传;
2、请按照身份证住址填写,如广东省深圳市南山区xx路xx号xx室;
3、长度为4-128个字符;
4、前后不能有空格、制表符、换行符;
5、不能仅含数字、特殊字符;
6、仅能填写数字、英文字母、汉字及特殊字符;
7、仅支持utf-8格式;
8、 该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 */
    id_card_address?: string;
    /** 身份证有效期开始时间
1、日期格式应满足合法的YYYY-MM-DD格式;
2、开始时间不能小于1900-01-01;
3、开始时间不能大于等于当前日期。 */
    card_period_begin: string;
    /** 身份证有效期结束时间
1、日期格式应满足合法的YYYY-MM-DD格式或长期;
2、结束时间需大于开始时间。 */
    card_period_end: string;
  }
  interface WeChatPayApplymentBodyParametersSubjectInfoIdentityInfoIdDocInfo {
    /** 证件正面照片
1、证件类型不为“身份证”时,上传证件正面照片;
2、正面拍摄、清晰、四角完整、无反光或遮挡;不得翻拍、截图、镜像、PS;
3、请上传彩色照片or彩色扫描件,复印件需加盖公章鲜章,可添加“微信支付”相关水印(如微信支付认证),见【指引文档】;
4、可上传1张图片,请填写通过图片上传API预先上传图片生成好的MediaID。 */
    id_doc_copy: string;
    /** 证件反面照片
1、若证件类型为往来通行证、外国人居留证、港澳居住证、台湾居住证时,上传证件反面照片;
2、若证件类型为护照,无需上传反面照片;
3、正面拍摄、清晰、四角完整、无反光或遮挡;不得翻拍、截图、镜像、PS;
4、请上传彩色照片or彩色扫描件,复印件需加盖公章鲜章,可添加“微信支付”相关水印(如微信支付认证),见【指引文档】;
5、可上传1张图片,请填写通过图片上传API预先上传图片生成好的MediaID。 */
    id_doc_copy_back?: string;
    /** 证件姓名
1、请填写经营者/法定代表人的证件姓名;
2、长度为2-100个字符;
3、前后不能有空格、制表符、换行符;
4、不能仅含数字、特殊字符;
5、仅能填写数字、英文字母、汉字及特殊字符;
6、该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 */
    id_doc_name: string;
    /** 证件号码
1、请填写经营者/法定代表人的证件号码:
护照(限境外人士):4-15位 数字|字母|连字符;
中国香港居民--来往内地通行证:H/h开头+8或10位数字/字母;
中国澳门居民--来往内地通行证:M/m开头+8或10位数字/字母;
中国台湾居民--来往大陆通行证:8位数字或10位数字;
外国人居留证:15位 数字|字母;
台湾居民居住证/港澳居民居住证:17位数字+1位数字|X;
2、该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 */
    id_doc_number: string;
    /** 证件居住地址
1、主体类型为企业时,需要填写。其他主体类型,无需上传;
2、请按照身份证住址填写,如广东省深圳市南山区xx路xx号xx室;
3、长度为4-128个字符;
4、前后不能有空格、制表符、换行符;
5、不能仅含数字、特殊字符;
6、仅能填写数字、英文字母、汉字及特殊字符;
7、仅支持utf-8格式;
8、 该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 */
    id_doc_address?: string;
    /** 证件有效期开始时间
1、日期格式应满足合法的YYYY-MM-DD格式;
2、开始时间不能小于1900-01-01;
3、开始时间不能大于等于当前日期。 */
    doc_period_begin: string;
    /** 证件有效期结束时间
1、日期格式应满足合法的YYYY-MM-DD格式或长期;
2、结束时间需大于开始时间。 */
    doc_period_end: string;
  }
  interface WeChatPayApplymentBodyParametersSubjectInfoUboInfo {
    ubo_id_doc_type: EnumWeChatPayApplymentIdDocType;
    /** 证件正面照片
1、请上传受益人证件的正面照片;
2、若证件类型为身份证,请上传人像面照片;
3、正面拍摄、清晰、四角完整、无反光或遮挡;不得翻拍、截图、镜像、PS;
4、请上传彩色照片or彩色扫描件,复印件需加盖公章鲜章,可添加“微信支付”相关水印(如微信支付认证),见【指引文档】;
5、可上传1张图片,请填写通过图片上传API预先上传图片生成好的MediaID。 */
    ubo_id_doc_copy: string;
    /** 证件反面照片
1、请上传受益人证件的反面照片;
2、若证件类型为身份证,请上传国徽面照片;
3、若证件类型为护照,无需上传反面照片;
4、正面拍摄、清晰、四角完整、无反光或遮挡;不得翻拍、截图、镜像、PS;
5、请上传彩色照片or彩色扫描件,复印件需加盖公章鲜章,可添加“微信支付”相关水印(如微信支付认证),见【指引文档】;
6、可上传1张图片,请填写通过图片上传API预先上传图片生成好的MediaID。 */
    ubo_id_doc_copy_back?: string;
    /** 证件姓名
1、长度为2-100个字符;
2、前后不能有空格、制表符、换行符;
3、不能仅含数字、特殊字符;
4、仅能填写数字、英文字母、汉字及特殊字符;
5、该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 */
    ubo_id_doc_name: string;
    /** 证件号码
1、可传身份证、来往内地通行证、来往大陆通行证、护照等证件号码,号码规范如下:
身份证(限中国大陆居民):17位数字+1位数字|X;
护照(限境外人士):4-15位 数字|字母|连字符;
中国香港居民--来往内地通行证:H/h开头+8或10位数字/字母;
中国澳门居民--来往内地通行证:M/m开头+8或10位数字/字母;
中国台湾居民--来往大陆通行证:8位数字或10位数字;
外国人居留证:15位 数字|字母;
台湾居民居住证/港澳居民居住证:17位数字+1位数字|X。
2、该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 */
    ubo_id_doc_number: string;
    /** 证件居住地址
1、请按照身份证住址填写,如广东省深圳市南山区xx路xx号xx室;
2、长度为4-128个字符;
3、前后不能有空格、制表符、换行符;
4、不能仅含数字、特殊字符;
5、仅能填写数字、英文字母、汉字及特殊字符;
6、仅支持utf-8格式;
7、 该字段需要使用微信支付公钥加密(推荐),请参考获取微信支付公钥ID说明以及微信支付公钥加密敏感信息指引,也可以使用微信支付平台证书公钥加密,参考获取平台证书序列号、平台证书加密敏感信息指引。 */
    ubo_id_doc_address: string;
    /** 证件有效期开始时间
1、日期格式应满足合法的YYYY-MM-DD格式;
2、开始时间不能小于1900-01-01;
3、开始时间不能大于等于当前日期。 */
    ubo_period_begin: string;
    /** 证件有效期结束时间
1、日期格式应满足合法的YYYY-MM-DD格式或长期;
2、结束时间需大于开始时间。 */
    ubo_period_end: string;
  }
  interface WeChatPayArea {
    /** Id */
    id?: string;
    /** 省市编码 */
    areaCode?: string;
    /** 名称 */
    areaName?: string;
    /** 地区名称 */
    fullName?: string;
    /** 层级 */
    leyer?: number;
    /** 父级省市编码 */
    parentCode?: string;
    /** 子集 */
    children?: WeChatPayArea[];
  }
  interface WeChatPayGetApplymentResponseAuditDetail {
    /** 提交申请单的资料项字段名 */
    field: string;
    /** 提交申请单的资料项字段名称 */
    field_name: string;
    /** 提交资料项被驳回的原因 */
    reject_reason: string;
  }
  interface WxmpLoginCommand {
    /** 用户登录凭证 */
    code: string;
packages/services/apiV2/user.ts
@@ -2,6 +2,36 @@
// @ts-ignore
import { request } from '@/utils/request';
/** 生成操作令牌 POST /api/user/user/buildOperatorToken */
export async function buildOperatorToken(
  body: API.BuildOperatorTokenCommand,
  options?: API.RequestConfig
) {
  return request<API.BuildOperatorTokenCommandResult>('/api/user/user/buildOperatorToken', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 校验操作令牌 POST /api/user/user/checkOperatorToken */
export async function checkOperatorToken(
  body: API.CheckOperatorTokenCommand,
  options?: API.RequestConfig
) {
  return request<boolean>('/api/user/user/checkOperatorToken', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 删除用户银行卡信息 DELETE /api/user/user/deletePersonalUserBankCard */
export async function deletePersonalUserBankCard(
  body: API.DeletePersonalUserBankCardCommand,
@@ -15,24 +45,6 @@
    data: body,
    ...(options || {}),
  });
}
/** 查询运营端用户分页列表数据 POST /api/user/user/getOperationUserInfos */
export async function getOperationUserInfos(
  body: API.GetOperationUserInfosQuery,
  options?: API.RequestConfig
) {
  return request<API.PagedListQueryResultGetOperationUserInfosQueryResultItem>(
    '/api/user/user/getOperationUserInfos',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 查询个人用户银行卡信息 GET /api/user/user/getPersonalUserBankCard */
@@ -137,6 +149,21 @@
  );
}
/** 查询用户详情 GET /api/user/user/getUser */
export async function getUser(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetUserParams,
  options?: API.RequestConfig
) {
  return request<API.GetUserQueryResult>('/api/user/user/getUser', {
    method: 'GET',
    params: {
      ...params,
    },
    ...(options || {}),
  });
}
/** 查询用户角色列表 GET /api/user/user/getUserInfoRoles */
export async function getUserInfoRoles(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
@@ -152,6 +179,48 @@
  });
}
/** 查询用户分页列表数据 POST /api/user/user/getUsers */
export async function getUsers(body: API.GetUsersQuery, options?: API.RequestConfig) {
  return request<API.GetOperationUserInfosQueryResult>('/api/user/user/getUsers', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 重置用户操作密码 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,
  options?: API.RequestConfig
) {
  return request<number>('/api/user/user/resetUserPasswords', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 保存用户银行卡信息 POST /api/user/user/savePersonalUserBankCard */
export async function savePersonalUserBankCard(
  body: API.SavePersonalUserBankCardCommand,
@@ -167,6 +236,18 @@
  });
}
/** 保存用户 POST /api/user/user/saveUser */
export async function saveUser(body: API.SaveUserCommand, options?: API.RequestConfig) {
  return request<string>('/api/user/user/saveUser', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 发送绑定银行卡短信 POST /api/user/user/sendSavePersonalUserBankCardVerifyCode */
export async function sendSavePersonalUserBankCardVerifyCode(
  body: API.SendSavePersonalUserBankCardVerifyCodeCommand,
packages/services/apiV2/userWallet.ts
New file
@@ -0,0 +1,18 @@
/* eslint-disable */
// @ts-ignore
import { request } from '@/utils/request';
/** 用户提现 POST /api/user/userWallet/saveUserWalletWithdraw */
export async function saveUserWalletWithdraw(
  body: API.SaveUserWalletWithdrawCommand,
  options?: API.RequestConfig
) {
  return request<string>('/api/user/userWallet/saveUserWalletWithdraw', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
packages/utils/LoggerRecord/index.ts
@@ -55,7 +55,7 @@
  }
}
export const httpLoggerRecord = new HttpLoggerRecord({
const Options: LoggerRecordOptions = {
  moduleName: getUtilsConfig().appName,
  enableStorage: true,
  loggerStorageAdapter() {
@@ -71,4 +71,8 @@
  getPageUrl() {
    return Taro.getCurrentInstance()?.router?.path ?? '';
  },
});
};
export const defaultLoggerRecord = new LoggerRecord(Options);
export const httpLoggerRecord = new HttpLoggerRecord(Options);
packages/utils/file.ts
@@ -33,6 +33,17 @@
}
const imgReg = /\.(png|jpeg|jpg|webp|gif)$/i;
const videoReg = /\.(mp4|avi|mkv|wmv|flv|webm|m4v|3gp|mpeg|mpg|ts|vob|ogv|f4v)$/i;
function getFileType(path: string) {
  if (imgReg.test(path)) {
    return 'image';
  }
  if (videoReg.test(path)) {
    return 'video';
  }
  return '';
}
/**
 * 把api返回的路径转换为upload的路径
@@ -43,7 +54,7 @@
    path: urlOmitDomain(path),
    url: setOSSLink(path),
    status: 'success',
    type: imgReg.test(path) ? 'image' : '',
    type: getFileType(path),
    uid: _.uniqueId(),
  } as FileItem;
}
patches/@nutui__nutui-taro@4.3.13.patch
@@ -1,5 +1,5 @@
diff --git a/dist/packages/calendarcard/CalendarCard.js b/dist/packages/calendarcard/CalendarCard.js
index bc08a59cb856db4768fd3581eddf0e72f4cd8008..4daa1ba2d662d93987b0afc5b95b9eda45cffc5f 100644
index bc08a59cb856db4768fd3581eddf0e72f4cd8008..074fde97f3e0be9db0b37454f7491db7dbd74a8a 100644
--- a/dist/packages/calendarcard/CalendarCard.js
+++ b/dist/packages/calendarcard/CalendarCard.js
@@ -345,7 +345,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({
@@ -12,7 +12,7 @@
             change([day]);
           }
diff --git a/dist/packages/index.taro-V9Ta96_T.js b/dist/packages/index.taro-V9Ta96_T.js
index 0d9e8d05c1a1772895054623fb9e7bbe88bfa64c..6582e2bfb10ff8fe89bd333cf1d2704978e09982 100644
index 0d9e8d05c1a1772895054623fb9e7bbe88bfa64c..341cfdf5750ab97975b49c54d15711897522e06c 100644
--- a/dist/packages/index.taro-V9Ta96_T.js
+++ b/dist/packages/index.taro-V9Ta96_T.js
@@ -29,7 +29,7 @@ const popupProps = {
@@ -25,7 +25,7 @@
   duration: {
     type: [Number, String],
diff --git a/dist/packages/input/Input.js b/dist/packages/input/Input.js
index bbac0bb44b5ba6d4f50fbf9f90808c851092cb74..9de837d71563c5763127b8b5e852417cc8e155cd 100644
index bbac0bb44b5ba6d4f50fbf9f90808c851092cb74..9dd26d5b6ecf616025cc4bfdc03d91f3936e5feb 100644
--- a/dist/packages/input/Input.js
+++ b/dist/packages/input/Input.js
@@ -84,7 +84,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({
@@ -49,7 +49,7 @@
     });
     const styles = computed(() => {
diff --git a/dist/packages/radiogroup/RadioGroup.js b/dist/packages/radiogroup/RadioGroup.js
index 861a0214fe5d148b9af468d7ed5c9720eeef2f74..df2cee2988945755ab5c6b6929693c3e77924874 100644
index 861a0214fe5d148b9af468d7ed5c9720eeef2f74..66f565e4a7d5ef2fe55b8343ced72f783132ebba 100644
--- a/dist/packages/radiogroup/RadioGroup.js
+++ b/dist/packages/radiogroup/RadioGroup.js
@@ -17,7 +17,7 @@ var __spreadValues = (a, b) => {
@@ -82,7 +82,7 @@
       return openBlock(), createElementBlock("view", {
         class: normalizeClass(["nut-radio-group", `nut-radio-group--${_ctx.direction}`])
diff --git a/dist/packages/range/Range.js b/dist/packages/range/Range.js
index 688b67464e4d05dc37996941d941033cea83ee2c..626db4d9889059aa08e1fd675e2333539efc766e 100644
index 688b67464e4d05dc37996941d941033cea83ee2c..2af0df1dba70728acb6143bb0fe28e92ca604bb3 100644
--- a/dist/packages/range/Range.js
+++ b/dist/packages/range/Range.js
@@ -288,6 +288,7 @@ const _sfc_main = create({
@@ -94,7 +94,7 @@
       currentValue = props.modelValue;
       if (isRange(currentValue)) {
diff --git a/dist/packages/toast/Toast.js b/dist/packages/toast/Toast.js
index d9084afa94d8bc892f64cfca10eb098d2be4bcb0..ca2309339c0d8b2fca248081783c88c9fb57d2a2 100644
index d9084afa94d8bc892f64cfca10eb098d2be4bcb0..df36fde6fb4bfe4e88dcc6197f68cf2bf0564e81 100644
--- a/dist/packages/toast/Toast.js
+++ b/dist/packages/toast/Toast.js
@@ -102,6 +102,9 @@ const _sfc_main = create({
@@ -108,14 +108,31 @@
     );
     const hasIcon = computed(() => {
diff --git a/dist/packages/uploader/Uploader.js b/dist/packages/uploader/Uploader.js
index 77f3689a95eff13043ed2745aae193282b57f129..7144e12c5eb7dc98ed2ae224db6607a5b1d7428e 100644
index 77f3689a95eff13043ed2745aae193282b57f129..a12a7c3fa80d779716c66b25ec1e0156cd711c3e 100644
--- a/dist/packages/uploader/Uploader.js
+++ b/dist/packages/uploader/Uploader.js
@@ -569,6 +569,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
@@ -569,14 +569,17 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
               createVNode(_component_Failure)
             ])
           ], 8, _hoisted_6)) : createCommentVNode("", true),
+          renderSlot(_ctx.$slots, "extra-img",{ item: item }),
           createTextVNode(),
           (((_a = item == null ? void 0 : item.type) == null ? void 0 : _a.includes("image")) || ((_b = item == null ? void 0 : item.type) == null ? void 0 : _b.includes("video"))) && item.url ? (openBlock(), createElementBlock("img", {
             key: 2,
-          (((_a = item == null ? void 0 : item.type) == null ? void 0 : _a.includes("image")) || ((_b = item == null ? void 0 : item.type) == null ? void 0 : _b.includes("video"))) && item.url ? (openBlock(), createElementBlock("img", {
-            key: 2,
-            class: "nut-uploader__preview-img__c",
-            mode: _ctx.mode,
-            src: item.url,
-            onClick: ($event) => _ctx.fileItemClick(item)
-          }, null, 8, _hoisted_7)) : (openBlock(), createElementBlock("view", _hoisted_8, [
+          (((_a = item == null ? void 0 : item.type) == null ? void 0 : _a.includes("image")) || ((_b = item == null ? void 0 : item.type) == null ? void 0 : _b.includes("video"))) && item.url ? renderSlot(_ctx.$slots, "item", {item: item}, () => [
+              (openBlock(), createElementBlock("img", {
+                key: 2,
+                class: "nut-uploader__preview-img__c",
+                mode: _ctx.mode,
+                src: item.url,
+                onClick: ($event) => _ctx.fileItemClick(item)
+              }, null, 8, _hoisted_7))
+            ]) : (openBlock(), createElementBlock("view", _hoisted_8, [
             createElementVNode("view", {
               class: "nut-uploader__preview-img__file__name",
               onClick: ($event) => _ctx.fileItemClick(item)
pnpm-lock.yaml
@@ -9,7 +9,7 @@
patchedDependencies:
  '@nutui/nutui-taro@4.3.13':
    hash: vmznnescqrnd2gkemh3ltth2ym
    hash: bed3oxqszgaxivruhi4wkqxbjy
    path: patches/@nutui__nutui-taro@4.3.13.patch
importers:
@@ -154,7 +154,7 @@
        version: 0.0.9
      '@nutui/nutui-taro':
        specifier: 4.3.13
        version: 4.3.13(patch_hash=vmznnescqrnd2gkemh3ltth2ym)(unplugin-vue-components@0.27.4)(vue@3.5.12)
        version: 4.3.13(patch_hash=bed3oxqszgaxivruhi4wkqxbjy)(unplugin-vue-components@0.27.4)(vue@3.5.12)
      '@tanstack/vue-query':
        specifier: ^4.35.3
        version: 4.35.3(@vue/composition-api@1.7.2)(vue@3.5.12)
@@ -416,7 +416,7 @@
        version: 0.0.9
      '@nutui/nutui-taro':
        specifier: 4.3.13
        version: 4.3.13(patch_hash=vmznnescqrnd2gkemh3ltth2ym)(unplugin-vue-components@0.27.4)(vue@3.5.12)
        version: 4.3.13(patch_hash=bed3oxqszgaxivruhi4wkqxbjy)(unplugin-vue-components@0.27.4)(vue@3.5.12)
      '@tanstack/vue-query':
        specifier: ^4.35.3
        version: 4.35.3(@vue/composition-api@1.7.2)(vue@3.5.12)
@@ -6170,7 +6170,7 @@
    resolution: {integrity: sha512-10VYAtFC+o1X0anGs+y2PgF1NWMeLFz2JVMRw4BWLg6wbtVbYy9wukLxyGhZC6Yf6t39DcwaGVda8paV7K6/Ew==}
    dev: false
  /@nutui/nutui-taro@4.3.13(patch_hash=vmznnescqrnd2gkemh3ltth2ym)(unplugin-vue-components@0.27.4)(vue@3.5.12):
  /@nutui/nutui-taro@4.3.13(patch_hash=bed3oxqszgaxivruhi4wkqxbjy)(unplugin-vue-components@0.27.4)(vue@3.5.12):
    resolution: {integrity: sha512-+n8vVZAu92MUX6VEf6gO73Iz3JThjksdb6aSarvciCSydlWWdlQqZwYIGMTG4zOwDfCoQ3HfLa36zVaIJLSn3g==}
    peerDependencies:
      unplugin-vue-components: '>=0.25.1'
@@ -18543,7 +18543,7 @@
      vue: 3.5.12
    dependencies:
      '@nutui/icons-vue-taro': 0.0.9
      '@nutui/nutui-taro': 4.3.13(patch_hash=vmznnescqrnd2gkemh3ltth2ym)(unplugin-vue-components@0.27.4)(vue@3.5.12)
      '@nutui/nutui-taro': 4.3.13(patch_hash=bed3oxqszgaxivruhi4wkqxbjy)(unplugin-vue-components@0.27.4)(vue@3.5.12)
      '@tanstack/vue-query': 4.35.3(@vue/composition-api@1.7.2)(vue@3.5.12)
      '@tarojs/components': 3.6.20(postcss@8.4.19)(vue@3.5.12)
      '@tarojs/taro': 3.6.20(postcss@8.4.19)(vue@3.5.12)