wupengfei
12 小时以前 a5e34f46123b7169dc38a0c6657ab4f1ac479558
Merge branch 'master' into dev-1.1.2
1个文件已添加
8个文件已修改
165 ■■■■ 已修改文件
package.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pnpm-lock.yaml 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/apiEnum.ts 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/index.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/typings.d.ts 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/LoggerRecord/index.ts 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/request/index.ts 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ServiceChargeManage/ServiceChargeManage.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ServiceChargeManage/components/EditAccountInfoDialog.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json
@@ -20,7 +20,7 @@
    "@bole-12333/chat-kit": "latest",
    "@bole-12333/customer-chat": "latest",
    "@bole-core/components": "^1.3.17",
    "@bole-core/core": "^1.0.7",
    "@bole-core/core": "^1.0.8",
    "@bole-core/pretty-layout": "latest",
    "@bole-core/sass-utils": "latest",
    "@bole-core/theme": "latest",
@@ -62,6 +62,7 @@
    "semver": "^7.6.3",
    "senin-help": "latest",
    "senin-vue": "latest",
    "senior-request": "1.0.10",
    "sortablejs": "1.15.0",
    "tim-js-sdk": "^2.27.5",
    "trtc-js-sdk": "^4.15.19",
pnpm-lock.yaml
@@ -15,19 +15,19 @@
dependencies:
  '@bole-12333/chat-kit':
    specifier: latest
    version: 1.0.1(@tencentcloud/chat-uikit-engine@2.5.5)(lodash@4.17.21)(vue@3.5.11)
    version: 1.0.1(@tencentcloud/chat-uikit-engine@2.5.6)(lodash@4.17.21)(vue@3.5.11)
  '@bole-12333/customer-chat':
    specifier: latest
    version: 1.0.3(@bole-12333/chat-kit@1.0.1)(@tiptap/core@2.1.13)(@tiptap/extension-document@2.1.13)(@tiptap/extension-image@2.1.13)(@tiptap/extension-mention@2.1.13)(@tiptap/extension-paragraph@2.1.13)(@tiptap/extension-placeholder@2.1.13)(@tiptap/extension-text@2.1.13)(@tiptap/pm@2.1.13)(@tiptap/suggestion@2.1.13)(dayjs@1.11.6)(vue@3.5.11)
  '@bole-core/components':
    specifier: ^1.3.17
    version: 1.3.17(@bole-core/core@1.0.7)(@bole-core/sass-utils@0.0.1)(@element-plus/icons-vue@2.3.1)(@tanstack/vue-query@4.37.1)(@videojs-player/vue@1.0.0)(@vueuse/core@11.1.0)(@vueuse/shared@11.1.0)(dayjs@1.11.6)(element-plus@2.11.2)(lodash@4.17.21)(mitt@3.0.0)(senin-help@1.0.5)(senin-vue@1.0.4)(video.js@7.20.3)(vue-component-type-helpers@2.1.6)(vue@3.5.11)
    version: 1.3.17(@bole-core/core@1.0.8)(@bole-core/sass-utils@0.0.1)(@element-plus/icons-vue@2.3.1)(@tanstack/vue-query@4.37.1)(@videojs-player/vue@1.0.0)(@vueuse/core@11.1.0)(@vueuse/shared@11.1.0)(dayjs@1.11.6)(element-plus@2.11.2)(lodash@4.17.21)(mitt@3.0.0)(senin-help@1.0.5)(senin-vue@1.0.4)(video.js@7.20.3)(vue-component-type-helpers@2.1.6)(vue@3.5.11)
  '@bole-core/core':
    specifier: ^1.0.7
    version: 1.0.7(@ywwlmm/openapi@0.0.3)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.11.2)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.1)(vue-router@4.4.5)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5)
    specifier: ^1.0.8
    version: 1.0.8(@ywwlmm/openapi@0.0.3)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.11.2)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.10)(vue-router@4.4.5)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5)
  '@bole-core/pretty-layout':
    specifier: latest
    version: 1.2.0(@bole-core/core@1.0.7)(@bole-core/sass-utils@0.0.1)(@element-plus/icons-vue@2.3.1)(@vueuse/core@11.1.0)(element-plus@2.11.2)(fuse.js@6.6.2)(lottie-web@5.10.2)(path-browserify@1.0.1)(path-to-regexp@6.2.1)(pinia@2.2.4)(vue-router@4.4.5)(vue@3.5.11)
    version: 1.2.0(@bole-core/core@1.0.8)(@bole-core/sass-utils@0.0.1)(@element-plus/icons-vue@2.3.1)(@vueuse/core@11.1.0)(element-plus@2.11.2)(fuse.js@6.6.2)(lottie-web@5.10.2)(path-browserify@1.0.1)(path-to-regexp@6.2.1)(pinia@2.2.4)(vue-router@4.4.5)(vue@3.5.11)
  '@bole-core/sass-utils':
    specifier: latest
    version: 0.0.1(element-plus@2.11.2)
@@ -148,6 +148,9 @@
  senin-vue:
    specifier: latest
    version: 1.0.4(@tanstack/vue-query@4.37.1)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.11.2)(file-saver@2.0.5)(lodash@4.17.21)(mitt@3.0.0)(semver@7.6.3)(senin-help@1.0.5)(vue@3.5.11)
  senior-request:
    specifier: 1.0.10
    version: 1.0.10(axios@1.7.7)
  sortablejs:
    specifier: 1.15.0
    version: 1.15.0
@@ -1847,14 +1850,14 @@
      '@babel/helper-validator-identifier': 7.25.9
    dev: false
  /@bole-12333/chat-kit@1.0.1(@tencentcloud/chat-uikit-engine@2.5.5)(lodash@4.17.21)(vue@3.5.11):
  /@bole-12333/chat-kit@1.0.1(@tencentcloud/chat-uikit-engine@2.5.6)(lodash@4.17.21)(vue@3.5.11):
    resolution: {integrity: sha512-yeSh4XLagaM+uNZRdcG49mhDJO3UbYEpIYZS4Lk303ROnTwxuZyuh5jkoflnCFwWN3Ib3AolfQy999oOqF012A==}
    peerDependencies:
      '@tencentcloud/chat-uikit-engine': '*'
      lodash: '*'
      vue: 3.5.11
    dependencies:
      '@tencentcloud/chat-uikit-engine': 2.5.5
      '@tencentcloud/chat-uikit-engine': 2.5.6
      lodash: 4.17.21
      vue: 3.5.11(typescript@4.8.4)
    dev: false
@@ -1875,7 +1878,7 @@
      dayjs: '*'
      vue: 3.5.11
    dependencies:
      '@bole-12333/chat-kit': 1.0.1(@tencentcloud/chat-uikit-engine@2.5.5)(lodash@4.17.21)(vue@3.5.11)
      '@bole-12333/chat-kit': 1.0.1(@tencentcloud/chat-uikit-engine@2.5.6)(lodash@4.17.21)(vue@3.5.11)
      '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
      '@tiptap/extension-document': 2.1.13(@tiptap/core@2.1.13)
      '@tiptap/extension-image': 2.1.13(@tiptap/core@2.1.13)
@@ -1889,7 +1892,7 @@
      vue: 3.5.11(typescript@4.8.4)
    dev: false
  /@bole-core/components@1.3.17(@bole-core/core@1.0.7)(@bole-core/sass-utils@0.0.1)(@element-plus/icons-vue@2.3.1)(@tanstack/vue-query@4.37.1)(@videojs-player/vue@1.0.0)(@vueuse/core@11.1.0)(@vueuse/shared@11.1.0)(dayjs@1.11.6)(element-plus@2.11.2)(lodash@4.17.21)(mitt@3.0.0)(senin-help@1.0.5)(senin-vue@1.0.4)(video.js@7.20.3)(vue-component-type-helpers@2.1.6)(vue@3.5.11):
  /@bole-core/components@1.3.17(@bole-core/core@1.0.8)(@bole-core/sass-utils@0.0.1)(@element-plus/icons-vue@2.3.1)(@tanstack/vue-query@4.37.1)(@videojs-player/vue@1.0.0)(@vueuse/core@11.1.0)(@vueuse/shared@11.1.0)(dayjs@1.11.6)(element-plus@2.11.2)(lodash@4.17.21)(mitt@3.0.0)(senin-help@1.0.5)(senin-vue@1.0.4)(video.js@7.20.3)(vue-component-type-helpers@2.1.6)(vue@3.5.11):
    resolution: {integrity: sha512-LNA8MDqa0hE6y4GG2YEn/F9Aj6kG2NfbE33/QJKrD+KhJULtt6v5bdsSTu10nUQFCqFwZtngYkMAcmDvU98bqw==}
    peerDependencies:
      '@bole-core/core': '*'
@@ -1909,7 +1912,7 @@
      vue: 3.5.11
      vue-component-type-helpers: ^2.1.6
    dependencies:
      '@bole-core/core': 1.0.7(@ywwlmm/openapi@0.0.3)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.11.2)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.1)(vue-router@4.4.5)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5)
      '@bole-core/core': 1.0.8(@ywwlmm/openapi@0.0.3)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.11.2)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.10)(vue-router@4.4.5)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5)
      '@bole-core/sass-utils': 0.0.1(element-plus@2.11.2)
      '@element-plus/icons-vue': 2.3.1(vue@3.5.11)
      '@tanstack/vue-query': 4.37.1(vue@3.5.11)
@@ -1927,8 +1930,8 @@
      vue-component-type-helpers: 2.1.6
    dev: false
  /@bole-core/core@1.0.7(@ywwlmm/openapi@0.0.3)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.11.2)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.1)(vue-router@4.4.5)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5):
    resolution: {integrity: sha512-VICs9m+qAaMvORNcaKSP1Gkr4thhxvwooh2hd7fBmkIYqDitOYmcssBsPno7jjp+5fuZYQ3LwHQ9Vl/whbTpCw==}
  /@bole-core/core@1.0.8(@ywwlmm/openapi@0.0.3)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.11.2)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.10)(vue-router@4.4.5)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5):
    resolution: {integrity: sha512-Hq/+GU2ck1PUIDdSpu1onIPRrzNhuhMSnxZeT/LSg0V9WVJ0SHEiMtHLWqbLFJPZYmFcgWuJNC4JamRMSTESVA==}
    peerDependencies:
      '@ywwlmm/openapi': '*'
      ali-oss: '*'
@@ -1952,14 +1955,14 @@
      file-saver: 2.0.5
      jszip: 3.10.1
      lodash: 4.17.21
      senior-request: 1.0.1(axios@1.7.7)
      senior-request: 1.0.10(axios@1.7.7)
      vue: 3.5.11(typescript@4.8.4)
      vue-router: 4.4.5(vue@3.5.11)
      xlsx: 0.18.5
      xlsx-style: 0.8.13(patch_hash=6ixwdxwh5a3amidwu6vee22jpi)
    dev: false
  /@bole-core/pretty-layout@1.2.0(@bole-core/core@1.0.7)(@bole-core/sass-utils@0.0.1)(@element-plus/icons-vue@2.3.1)(@vueuse/core@11.1.0)(element-plus@2.11.2)(fuse.js@6.6.2)(lottie-web@5.10.2)(path-browserify@1.0.1)(path-to-regexp@6.2.1)(pinia@2.2.4)(vue-router@4.4.5)(vue@3.5.11):
  /@bole-core/pretty-layout@1.2.0(@bole-core/core@1.0.8)(@bole-core/sass-utils@0.0.1)(@element-plus/icons-vue@2.3.1)(@vueuse/core@11.1.0)(element-plus@2.11.2)(fuse.js@6.6.2)(lottie-web@5.10.2)(path-browserify@1.0.1)(path-to-regexp@6.2.1)(pinia@2.2.4)(vue-router@4.4.5)(vue@3.5.11):
    resolution: {integrity: sha512-LvneMdMfGj6dpFR7voQd2F+v02P4zYHGP3BAWKcrTj8BMeWXRt08Sz7qBrhq1F8lidjqi7TCttQbx2cEV1qBEA==}
    peerDependencies:
      '@bole-core/core': '*'
@@ -1975,7 +1978,7 @@
      vue: 3.5.11
      vue-router: '*'
    dependencies:
      '@bole-core/core': 1.0.7(@ywwlmm/openapi@0.0.3)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.11.2)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.1)(vue-router@4.4.5)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5)
      '@bole-core/core': 1.0.8(@ywwlmm/openapi@0.0.3)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.11.2)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.10)(vue-router@4.4.5)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5)
      '@bole-core/sass-utils': 0.0.1(element-plus@2.11.2)
      '@element-plus/icons-vue': 2.3.1(vue@3.5.11)
      '@vueuse/core': 11.1.0(vue@3.5.11)
@@ -3745,8 +3748,8 @@
      '@tencentcloud/tui-core': 2.5.1
    dev: false
  /@tencentcloud/chat-uikit-engine@2.5.5:
    resolution: {integrity: sha512-WWFmtpRwNXgtRXWgb0mhzeigFGZimMbgvi1fVmu9sY5+RtF9RiayC/ESokaMVs591l7mcZf4/BXCQNtUi3eZiQ==}
  /@tencentcloud/chat-uikit-engine@2.5.6:
    resolution: {integrity: sha512-hzGkruR3j5S/9hx7HfGBWvHAZ7FZqpkl5LEz0z9sVm3faG/IaBkeTCjPmvN9kGIdDIan8Jn6mhVW57EEx7E8UQ==}
    dependencies:
      '@tencentcloud/chat': 3.5.9
      tim-profanity-filter-plugin: 1.1.0
@@ -3769,7 +3772,7 @@
      '@tencentcloud/call-uikit-vue': 4.0.9
      '@tencentcloud/call-uikit-vue2': 4.0.9
      '@tencentcloud/call-uikit-vue2.6': 4.0.9(vue@3.5.11)
      '@tencentcloud/chat-uikit-engine': 2.5.5
      '@tencentcloud/chat-uikit-engine': 2.5.6
      '@tencentcloud/tui-core': 2.5.1
      '@tencentcloud/tui-customer-service-plugin': 2.2.6(@tencentcloud/tui-core@2.5.1)(vue@3.5.11)
      '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
@@ -13711,8 +13714,8 @@
      vue: 3.5.11(typescript@4.8.4)
    dev: false
  /senior-request@1.0.1(axios@1.7.7):
    resolution: {integrity: sha512-2S3B+7ZUuM91aOZLnZBIFiCsaJsH51ZlwUOW7TEhW9gmKymePcYRk9N6PV5dINoHBaZkpAm4LdQuKpHZoDJzWw==}
  /senior-request@1.0.10(axios@1.7.7):
    resolution: {integrity: sha512-qHJaP7SrxK+YpiThJII2QXy+nXcjC5liNJizFsAEoFoLQ+eVBSA4hTC/nIC+WD7PEuboFOZCiriCm6KKJbMQBA==}
    peerDependencies:
      axios: '*'
    dependencies:
src/constants/apiEnum.ts
@@ -439,6 +439,18 @@
  Fail = 30,
}
/** 短信状态 */
export enum EnumSmsStatus {
  /**待发送 */
  Wait = 0,
  /**发送中 */
  InProcess = 10,
  /**发送成功 */
  Success = 20,
  /**发送失败 */
  Fail = 30,
}
/** 任务结算状态 */
export enum EnumTaskCheckReceiveStatus {
  /**待提交 */
src/services/api/index.ts
@@ -5,6 +5,7 @@
import * as enterpriseEmployee from './enterpriseEmployee';
import * as user from './user';
import * as role from './role';
import * as sms from './sms';
import * as ocrUtils from './ocrUtils';
import * as task from './task';
import * as enterprise from './enterprise';
@@ -27,6 +28,7 @@
  enterpriseEmployee,
  user,
  role,
  sms,
  ocrUtils,
  task,
  enterprise,
src/services/api/typings.d.ts
@@ -962,6 +962,17 @@
    Fail = 30,
  }
  enum EnumSmsStatus {
    /**待发送 */
    Wait = 0,
    /**发送中 */
    InProcess = 10,
    /**发送成功 */
    Success = 20,
    /**发送失败 */
    Fail = 30,
  }
  enum EnumTaskCheckReceiveStatus {
    /**待提交 */
    WaitSubmit = 10,
src/utils/LoggerRecord/index.ts
New file
@@ -0,0 +1,58 @@
import * as logRecordsServices from '@/services/api/logRecords';
import config from '@config/config';
import { LoggerRecord, LogOptions, LoggerRecordOptions, LoggerRecordLevel } from 'senior-request';
type HttpLogOptions = {
  httpParams?: Omit<API.SaveFrontConsoleLogCommand, 'level' | 'content'>;
} & LogOptions;
class HttpLoggerRecord extends LoggerRecord<HttpLogOptions> {
  constructor(options: LoggerRecordOptions = {}) {
    super(options);
  }
  convertLogLevel(level: LoggerRecordLevel): EnumLogLevel {
    switch (level) {
      case 'debug':
        return EnumLogLevel.Debug;
      case 'info':
        return EnumLogLevel.Information;
      case 'warn':
        return EnumLogLevel.Warning;
      case 'error':
        return EnumLogLevel.Error;
      case 'log':
        return EnumLogLevel.Trace;
      default:
        return EnumLogLevel.Debug;
    }
  }
  log(level: LoggerRecordLevel, options: HttpLogOptions): void {
    const httpUrl = options?.httpParams?.url ?? '';
    if (httpUrl.toLowerCase().includes('saveFrontConsoleLog'.toLowerCase())) return;
    const args = [...(options.args || []), options.httpParams].filter(Boolean);
    super.log(level, {
      ...options,
      args: args,
    });
    let params: API.SaveFrontConsoleLogCommand = {
      /** 跟踪Id */
      traceId: options.httpParams?.traceId,
      level: this.convertLogLevel(level),
      /** 内容 */
      content: `[${this.config.moduleName}] ${options.message}`,
      /** 堆栈跟踪 */
      stackTrace: options.httpParams?.stackTrace,
      /** 链接地址 */
      url: options.httpParams?.url,
      ext: JSON.stringify(args),
    };
    logRecordsServices.saveFrontConsoleLog(params, { showLoading: false, skipErrorHandler: true });
  }
}
export const httpLoggerRecord = new HttpLoggerRecord({
  moduleName: config.title,
  enableStorage: true,
});
src/utils/request/index.ts
@@ -7,6 +7,7 @@
import { ElLoading as Loading, ElNotification } from 'element-plus';
import { router } from '@/router';
import { Message, tokenIsExpired } from '@/utils';
import { httpLoggerRecord } from '../LoggerRecord';
// 加载环境变量 VITE_PROXY_DOMAIN(开发环境)  VITE_PROXY_DOMAIN_REAL(打包后的线上环境)
const { VITE_PROXY_DOMAIN, VITE_PROXY_DOMAIN_REAL, DEV } = loadEnv();
@@ -67,6 +68,7 @@
   */
  msg?: string;
  showType?: ErrorShowType;
  traceId?: string;
}
interface ErrorResponse {
@@ -107,6 +109,19 @@
    // 错误接收及处理
    errorHandler: (error, opts) => {
      console.log('error: ', error);
      const url = opts.url ?? '';
      httpLoggerRecord.error({
        message: `[${url}] 请求错误`,
        httpParams: {
          url: url,
          //@ts-ignore
          traceId: error?.info?.traceId,
          stackTrace: error.stack,
        },
        args: [{ data: opts.data, params: opts.params, headers: opts.headers }],
      });
      if (opts?.skipErrorHandler) throw error;
      if (opts?.customErrorHandler) {
@@ -182,6 +197,14 @@
          NProgress.start();
        }
        httpLoggerRecord.info({
          message: `[${$config.url}] 请求开始`,
          httpParams: {
            url: $config.url,
          },
          args: [{ data: $config.data, params: $config.params, headers: $config.headers }],
        });
        const userStore = useUserStoreHook();
        const userInfo = userStore.userInfo;
@@ -224,6 +247,15 @@
      (response) => {
        const $config = response.config as IRequestOptions;
        httpLoggerRecord.info({
          message: `[${$config.url}] 请求结束`,
          httpParams: {
            url: $config.url,
            traceId: response.data?.traceId,
          },
          args: [{ data: $config.data, params: $config.params, headers: $config.headers }],
        });
        const { needNProcess, getResponse = false } = $config;
        // 关闭进度条动画
src/views/ServiceChargeManage/ServiceChargeManage.vue
@@ -88,7 +88,7 @@
      </ProTableV2>
    </AppContainer>
    <UploadStatementDialog v-bind="dialogProps" />
    <SettleDetailDialog v-bind="dialogSettleProps" />
    <!-- <SettleDetailDialog v-bind="dialogSettleProps" /> -->
    <RechargeEnterpriseWalletDialog v-bind="dialogRechargeProps" />
  </LoadingLayout>
</template>
src/views/ServiceChargeManage/components/EditAccountInfoDialog.vue
@@ -21,7 +21,7 @@
      <ProFormItemV2
        label="收款账户:"
        prop="receiveAccount"
        :check-rules="[{ message: '请输入收款账户' }]"
        :check-rules="[{ message: '请输入收款账户', type: 'bankCard' }]"
      >
        <ProFormText placeholder="请输入收款账户" v-model.trim="form.receiveAccount"></ProFormText>
      </ProFormItemV2>