From ce190a7e169e6e632a89a952ec94f0a308ccf724 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期三, 24 九月 2025 15:09:26 +0800
Subject: [PATCH] feat: 页面
---
src/views/EnterpriseManage/components/ConfigureDialog.vue | 10
.eslintrc-auto-import.json | 2
src/services/api/typings.d.ts | 162 ++++++++++
src/views/TraceIdLogManage/components/ThreeResourceLogsView.vue | 82 +++++
src/views/EnterpriseManage/components/WechatConfigureView.vue | 173 +++++++++++
src/views/TraceIdLogManage/components/ResourceLogsView.vue | 105 +++++++
src/constants/enterprise.ts | 5
src/services/api/enterpriseWallet.ts | 20 +
pnpm-lock.yaml | 26 +
src/views/TraceIdLogManage/TraceIdLogManageList.vue | 84 +++++
src/views/TraceIdLogManage/components/DbAuditLogsView.vue | 66 ++++
src/views/TraceIdLogManage/components/ExceptionLogsView.vue | 52 +++
package.json | 1
auto-imports.d.ts | 6
src/constants/logs.ts | 7
src/constants/apiEnum.ts | 12
src/constants/index.ts | 1
src/services/api/logRecords.ts | 18 +
src/services/api/user.ts | 32 ++
19 files changed, 842 insertions(+), 22 deletions(-)
diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json
index 27c2f1d..651a1ab 100644
--- a/.eslintrc-auto-import.json
+++ b/.eslintrc-auto-import.json
@@ -66,6 +66,7 @@
"EnumRealAccessText": true,
"EnumResourceController": true,
"EnumResourceMethod": true,
+ "EnumResourceMethodText": true,
"EnumRoleWebApiDataPower": true,
"EnumRoleWebApiDataPowerText": true,
"EnumRoleWebApiDataPowerTextForFilter": true,
@@ -93,6 +94,7 @@
"EnumTaskUserSignContractStatus": true,
"EnumTaskUserSignContractStatusText": true,
"EnumTaskUserSubmitCheckReceiveStatus": true,
+ "EnumUserBankCardAccess": true,
"EnumUserGender": true,
"EnumUserGenderText": true,
"EnumUserGenderTextForPerson": true,
diff --git a/auto-imports.d.ts b/auto-imports.d.ts
index a2503d3..f51352d 100644
--- a/auto-imports.d.ts
+++ b/auto-imports.d.ts
@@ -69,6 +69,7 @@
const EnumRealAccessText: typeof import('./src/constants/enterprise')['EnumRealAccessText']
const EnumResourceController: typeof import('./src/constants/apiEnum')['EnumResourceController']
const EnumResourceMethod: typeof import('./src/constants/apiEnum')['EnumResourceMethod']
+ const EnumResourceMethodText: typeof import('./src/constants/logs')['EnumResourceMethodText']
const EnumRoleWebApiDataPower: typeof import('./src/constants/apiEnum')['EnumRoleWebApiDataPower']
const EnumRoleWebApiDataPowerText: typeof import('./src/constants/apiEnumText')['EnumRoleWebApiDataPowerText']
const EnumRoleWebApiDataPowerTextForFilter: typeof import('./src/constants/apiEnumText')['EnumRoleWebApiDataPowerTextForFilter']
@@ -97,6 +98,7 @@
const EnumTaskUserSignContractStatus: typeof import('./src/constants/apiEnum')['EnumTaskUserSignContractStatus']
const EnumTaskUserSignContractStatusText: typeof import('./src/constants/enterpriseEmployee')['EnumTaskUserSignContractStatusText']
const EnumTaskUserSubmitCheckReceiveStatus: typeof import('./src/constants/apiEnum')['EnumTaskUserSubmitCheckReceiveStatus']
+ const EnumUserBankCardAccess: typeof import('./src/constants/apiEnum')['EnumUserBankCardAccess']
const EnumUserGender: typeof import('./src/constants/apiEnum')['EnumUserGender']
const EnumUserGenderText: typeof import('./src/constants/task')['EnumUserGenderText']
const EnumUserGenderTextForPerson: typeof import('./src/constants/task')['EnumUserGenderTextForPerson']
@@ -268,7 +270,7 @@
export type { Component, Slot, Slots, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
import('vue')
// @ts-ignore
- export type { EnumBillingMethod, EnumClientType, EnumCodeUrlScene, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseRealMethod, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionType, EnumGetEnterpriseEmployeesQuerySignContractStatus, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementOrderStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckReceiveStatus, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, EnumUserWalletTransactionType, EnumWalletTransactionStatus, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, SettlementReceiveStatus, EnumBillingMethod, EnumClientType, EnumCodeUrlScene, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseRealMethod, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionType, EnumGetEnterpriseEmployeesQuerySignContractStatus, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementOrderStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckReceiveStatus, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, EnumUserWalletTransactionType, EnumWalletTransactionStatus, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, SettlementReceiveStatus } from './src/constants/apiEnum'
+ export type { EnumBillingMethod, EnumClientType, EnumCodeUrlScene, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseRealMethod, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionType, EnumGetEnterpriseEmployeesQuerySignContractStatus, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementOrderStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckReceiveStatus, EnumUserBankCardAccess, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, EnumUserWalletTransactionType, EnumWalletTransactionStatus, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, SettlementReceiveStatus, EnumBillingMethod, EnumClientType, EnumCodeUrlScene, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseRealMethod, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionType, EnumGetEnterpriseEmployeesQuerySignContractStatus, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementOrderStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckReceiveStatus, EnumUserBankCardAccess, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, EnumUserWalletTransactionType, EnumWalletTransactionStatus, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, SettlementReceiveStatus } from './src/constants/apiEnum'
import('./src/constants/apiEnum')
// @ts-ignore
export type { FlexWorkerEleSignEnum, FlexTaskWorkerHireEnum, FlexWorkerEleSignEnum, FlexTaskWorkerHireEnum } from './src/constants/cPerson'
@@ -375,6 +377,7 @@
readonly EnumRealAccessText: UnwrapRef<typeof import('./src/constants/enterprise')['EnumRealAccessText']>
readonly EnumResourceController: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumResourceController']>
readonly EnumResourceMethod: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumResourceMethod']>
+ readonly EnumResourceMethodText: UnwrapRef<typeof import('./src/constants/logs')['EnumResourceMethodText']>
readonly EnumRoleWebApiDataPower: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumRoleWebApiDataPower']>
readonly EnumRoleWebApiDataPowerText: UnwrapRef<typeof import('./src/constants/apiEnumText')['EnumRoleWebApiDataPowerText']>
readonly EnumRoleWebApiDataPowerTextForFilter: UnwrapRef<typeof import('./src/constants/apiEnumText')['EnumRoleWebApiDataPowerTextForFilter']>
@@ -402,6 +405,7 @@
readonly EnumTaskUserSignContractStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskUserSignContractStatus']>
readonly EnumTaskUserSignContractStatusText: UnwrapRef<typeof import('./src/constants/enterpriseEmployee')['EnumTaskUserSignContractStatusText']>
readonly EnumTaskUserSubmitCheckReceiveStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskUserSubmitCheckReceiveStatus']>
+ readonly EnumUserBankCardAccess: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserBankCardAccess']>
readonly EnumUserGender: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserGender']>
readonly EnumUserGenderText: UnwrapRef<typeof import('./src/constants/task')['EnumUserGenderText']>
readonly EnumUserGenderTextForPerson: UnwrapRef<typeof import('./src/constants/task')['EnumUserGenderTextForPerson']>
diff --git a/package.json b/package.json
index 8a1f328..f1a0151 100644
--- a/package.json
+++ b/package.json
@@ -77,6 +77,7 @@
"vue": "3.5.11",
"vue-component-type-helpers": "^2.1.6",
"vue-echarts": "^7.0.3",
+ "vue-json-viewer": "^3.0.4",
"vue-router": "^4.4.5",
"vue-types": "^5.1.3",
"xlsx": "0.18.5",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 8a8f54f..68a9f92 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -15,7 +15,7 @@
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)
@@ -184,6 +184,9 @@
vue-echarts:
specifier: ^7.0.3
version: 7.0.3(echarts@5.5.1)(vue@3.5.11)
+ vue-json-viewer:
+ specifier: ^3.0.4
+ version: 3.0.4(vue@3.5.11)
vue-router:
specifier: ^4.4.5
version: 4.4.5(vue@3.5.11)
@@ -1853,14 +1856,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.6.4)
dev: false
@@ -1881,7 +1884,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)
@@ -3786,8 +3789,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
@@ -3810,7 +3813,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)
@@ -17110,6 +17113,15 @@
- supports-color
dev: true
+ /vue-json-viewer@3.0.4(vue@3.5.11):
+ resolution: {integrity: sha512-pnC080rTub6YjccthVSNQod2z9Sl5IUUq46srXtn6rxwhW8QM4rlYn+CTSLFKXWfw+N3xv77Cioxw7B4XUKIbQ==}
+ peerDependencies:
+ vue: 3.5.11
+ dependencies:
+ clipboard: 2.0.11
+ vue: 3.5.11(typescript@4.6.4)
+ dev: false
+
/vue-router@4.4.5(vue@3.5.11):
resolution: {integrity: sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==}
peerDependencies:
diff --git a/src/constants/apiEnum.ts b/src/constants/apiEnum.ts
index 2a81620..3407d01 100644
--- a/src/constants/apiEnum.ts
+++ b/src/constants/apiEnum.ts
@@ -109,6 +109,8 @@
Alipay = 10,
/**骞冲畨閾惰 */
PingAnPay = 20,
+ /**寰俊 */
+ WeChatPay = 30,
}
/** 浼佷笟閽卞寘浠h繘浠跺崟闄勪欢绫诲瀷 */
@@ -475,6 +477,16 @@
Fail = 40,
}
+/** 鐢ㄦ埛閾惰鍗¢�氶亾 */
+export enum EnumUserBankCardAccess {
+ /**閾惰鍗� */
+ Bank = 1,
+ /**鏀粯瀹� */
+ AliPay = 10,
+ /**寰俊 */
+ WeChatPay = 20,
+}
+
/** 鐢ㄦ埛鎬у埆 */
export enum EnumUserGender {
/**鐢� */
diff --git a/src/constants/enterprise.ts b/src/constants/enterprise.ts
index 167088d..efc3d0b 100644
--- a/src/constants/enterprise.ts
+++ b/src/constants/enterprise.ts
@@ -20,6 +20,10 @@
* 鐭俊閫氶亾閰嶇疆
*/
ShortMessage = 4,
+ // /**
+ // * 寰俊鏀粯閰嶇疆
+ // */
+ // Wechat = 5,
}
export const EnterpriseConfigureTypeText = {
@@ -27,6 +31,7 @@
[EnterpriseConfigureType.AliPay]: '鏀粯瀹濋厤缃�',
[EnterpriseConfigureType.Electronic]: '鐢靛瓙绛鹃厤缃�',
[EnterpriseConfigureType.ShortMessage]: '鐭俊閫氶亾閰嶇疆',
+ // [EnterpriseConfigureType.Wechat]: '寰俊鏀粯閰嶇疆',
};
export enum VerifyStatus {
diff --git a/src/constants/index.ts b/src/constants/index.ts
index fb702a3..564c7e7 100644
--- a/src/constants/index.ts
+++ b/src/constants/index.ts
@@ -21,3 +21,4 @@
export * from './electronSign';
export * from './enterpriseWallet';
export * from './finance';
+export * from './logs';
diff --git a/src/constants/logs.ts b/src/constants/logs.ts
new file mode 100644
index 0000000..491e8ff
--- /dev/null
+++ b/src/constants/logs.ts
@@ -0,0 +1,7 @@
+export const EnumResourceMethodText = {
+ [EnumResourceMethod.None]: '鏃�',
+ [EnumResourceMethod.Get]: '鏌ヨ',
+ [EnumResourceMethod.Post]: '鎻愪氦',
+ [EnumResourceMethod.Put]: '淇敼',
+ [EnumResourceMethod.Delete]: '鍒犻櫎',
+};
diff --git a/src/services/api/enterpriseWallet.ts b/src/services/api/enterpriseWallet.ts
index a71c0c5..dc65418 100644
--- a/src/services/api/enterpriseWallet.ts
+++ b/src/services/api/enterpriseWallet.ts
@@ -239,6 +239,26 @@
);
}
+/** 鏌ヨ宸茬绾︿紒涓氶挶鍖呴�氶亾閫夋嫨鍣ㄦ暟鎹� GET /api/user/enterpriseWallet/getEnterpriseWalletAccessSelect */
+export async function getEnterpriseWalletAccessSelect(
+ // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+ params: API.APIgetEnterpriseWalletAccessSelectParams,
+ options?: API.RequestConfig
+) {
+ return request<API.SelectOptionGuidGetEnterpriseWalletAccessSelectQueryOption[]>(
+ '/api/user/enterpriseWallet/getEnterpriseWalletAccessSelect',
+ {
+ method: 'GET',
+ params: {
+ ...params,
+ request: undefined,
+ ...params['request'],
+ },
+ ...(options || {}),
+ }
+ );
+}
+
/** 鏌ヨ鏀粯瀹濊祫閲戜簩绾у晢鎴稫YB浠h繘浠跺崟璇︽儏 GET /api/user/enterpriseWallet/getEnterpriseWalletExpandindirectOrder */
export async function getEnterpriseWalletExpandindirectOrder(
// 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
diff --git a/src/services/api/logRecords.ts b/src/services/api/logRecords.ts
index ed70d74..0cb3919 100644
--- a/src/services/api/logRecords.ts
+++ b/src/services/api/logRecords.ts
@@ -41,6 +41,24 @@
});
}
+/** 绗笁鏂硅祫婧愭棩蹇楀垎椤靛垪琛ㄦ煡璇� POST /api/common/logRecords/getThreeResourceLogs */
+export async function getThreeResourceLogs(
+ body: API.GetThreeResourceLogsQuery,
+ options?: API.RequestConfig
+) {
+ return request<API.GetThreeResourceLogsQueryResult>(
+ '/api/common/logRecords/getThreeResourceLogs',
+ {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ }
+ );
+}
+
/** 璺熻釜Id鏃ュ織鏌ヨ GET /api/common/logRecords/getTraceIdLog */
export async function getTraceIdLog(
// 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts
index 737d081..93aa633 100644
--- a/src/services/api/typings.d.ts
+++ b/src/services/api/typings.d.ts
@@ -112,6 +112,11 @@
id?: string;
}
+ interface APIgetEnterpriseWalletAccessSelectParams {
+ /** 鏌ヨ宸茬绾︿紒涓氶挶鍖呴�氶亾閫夋嫨鍣ㄦ暟鎹� */
+ request?: GetEnterpriseWalletAccessSelectQuery;
+ }
+
interface APIgetEnterpriseWalletExpandindirectOrderParams {
/** 浼佷笟Id */
enterpriseId?: string;
@@ -156,8 +161,8 @@
}
interface APIgetPersonalUserBankCardParams {
- /** 鏌ヨ涓汉鐢ㄦ埛閾惰鍗′俊鎭� */
- request?: GetPersonalUserBankCardQuery;
+ /** 閫氶亾 */
+ access?: EnumUserBankCardAccess;
}
interface APIgetPersonalUserElectronSignParams {
@@ -412,6 +417,10 @@
ids: string[];
}
+ interface DeletePersonalUserBankCardCommand {
+ access?: EnumUserBankCardAccess;
+ }
+
interface DeleteRoleCommand {
ids: string[];
}
@@ -620,6 +629,8 @@
Alipay = 10,
/**骞冲畨閾惰 */
PingAnPay = 20,
+ /**寰俊 */
+ WeChatPay = 30,
}
enum EnumEnterpriseWalletExpandindirectOrderFileType {
@@ -953,6 +964,15 @@
Success = 30,
/**楠屾敹鏈�氳繃 */
Fail = 40,
+ }
+
+ enum EnumUserBankCardAccess {
+ /**閾惰鍗� */
+ Bank = 1,
+ /**鏀粯瀹� */
+ AliPay = 10,
+ /**寰俊 */
+ WeChatPay = 20,
}
enum EnumUserGender {
@@ -1938,6 +1958,24 @@
timestamp?: number;
}
+ interface FriendlyResultGetThreeResourceLogsQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetThreeResourceLogsQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
interface FriendlyResultGetTraceIdLogQueryResult {
/** 璺熻釜Id */
traceId?: string;
@@ -2355,6 +2393,25 @@
errorCode?: string;
/** 鏁版嵁 */
data?: SelectOptionGuidGetEnterpriseContractTemplateSelectQueryOption[];
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
+ interface FriendlyResultListSelectOptionGuidGetEnterpriseWalletAccessSelectQueryOption {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ /** 鏁版嵁 */
+ data?: SelectOptionGuidGetEnterpriseWalletAccessSelectQueryOption[];
/** 鎵ц鎴愬姛 */
success?: boolean;
/** 閿欒淇℃伅 */
@@ -2980,8 +3037,6 @@
oldValues?: string;
/** 鏂板�� */
newValues?: string;
- /** 鎿嶄綔浜篒d */
- createdUserId?: string;
createdUser?: GetResourceLogsQueryResultItemCreatedUser;
/** 鍒涘缓鏃堕棿 */
createdTime?: string;
@@ -3397,6 +3452,14 @@
isConfigured?: boolean;
}
+ type GetEnterpriseWalletAccessSelectQuery = Record<string, any>;
+
+ interface GetEnterpriseWalletAccessSelectQueryOption {
+ /** Id */
+ id?: string;
+ access?: EnumEnterpriseWalletAccess;
+ }
+
interface GetEnterpriseWalletExpandindirectOrderQueryResult {
/** 鍗曞彿 */
outBizNo?: string;
@@ -3521,8 +3584,6 @@
message?: string;
/** 鍫嗘爤璺熻釜 */
stackTrace?: string;
- /** 鎿嶄綔浜篒d */
- createdUserId?: string;
createdUser?: GetResourceLogsQueryResultItemCreatedUser;
/** 鍒涘缓鏃堕棿 */
createdTime?: string;
@@ -3880,6 +3941,8 @@
avatar?: string;
/** 濮撳悕 */
name?: string;
+ /** 韬唤璇佸彿 */
+ identity?: string;
/** 鎵嬫満鍙� */
contactPhoneNumber?: string;
/** 鏄惁瀹炲悕 */
@@ -3896,12 +3959,12 @@
hireRefuseTaskCount?: number;
/** 浣欓 */
balance?: number;
+ /** 宸茬粦瀹氱殑閾惰鍗¢�氶亾 */
+ bankCardAAccesses?: EnumUserBankCardAccess[];
}
- type GetPersonalUserBankCardQuery = Record<string, any>;
-
interface GetPersonalUserBankCardQueryResult {
- access?: EnumEnterpriseWalletAccess;
+ access?: EnumUserBankCardAccess;
/** 閾惰鍗″彿 */
code?: string;
/** 鎵�灞為摱琛� */
@@ -4278,8 +4341,6 @@
consoleLogs?: string;
/** 鑰楁椂姣鏁� */
elapsedMilliseconds?: number;
- /** 鎿嶄綔浜篒d */
- createdUserId?: string;
createdUser?: GetResourceLogsQueryResultItemCreatedUser;
/** 鍒涘缓鏃堕棿 */
createdTime?: string;
@@ -4487,6 +4548,8 @@
interface GetSettlementTaskUsersQueryResultItem {
/** 缁撶畻鍚嶅崟Id */
id?: string;
+ /** 鐢ㄦ埛淇℃伅Id */
+ userId?: string;
/** 濮撳悕 */
name?: string;
/** 韬唤璇佸彿 */
@@ -4797,9 +4860,68 @@
hireStatus?: EnumTaskUserHireStatus;
}
+ interface GetThreeResourceLogsQuery {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鍏抽敭瀛� */
+ keywords?: string;
+ /** 鍒涘缓鏃堕棿-璧峰 */
+ createdTimeBegin?: string;
+ /** 鍒涘缓鏃堕棿-鎴 */
+ createdTimeEnd?: string;
+ pageModel?: PagedListQueryPageModel;
+ }
+
+ interface GetThreeResourceLogsQueryResult {
+ pageModel?: PagedListQueryResultPageModel;
+ /** 鏁版嵁 */
+ data?: GetThreeResourceLogsQueryResultItem[];
+ }
+
+ interface GetThreeResourceLogsQueryResultItem {
+ /** Id */
+ id?: string;
+ method?: EnumResourceMethod;
+ /** 鍩熷悕 */
+ domain?: string;
+ /** 鍦板潃 */
+ path?: string;
+ /** 璇锋眰澶� */
+ requestHeaders?: string;
+ /** 璇锋眰鍙傛暟 */
+ request?: string;
+ /** 璇锋眰澶� */
+ responseHeaders?: string;
+ /** 鍝嶅簲缁撴灉 */
+ response?: string;
+ /** 鏄惁鎴愬姛 */
+ isSuccess?: boolean;
+ /** 鑰楁椂姣鏁� */
+ elapsedMilliseconds?: number;
+ createdUser?: GetThreeResourceLogsQueryResultItemCreatedUser;
+ /** 鍒涘缓鏃堕棿 */
+ createdTime?: string;
+ }
+
+ interface GetThreeResourceLogsQueryResultItemCreatedUser {
+ /** Id */
+ id?: string;
+ type?: EnumUserType;
+ /** 濮撳悕 */
+ name?: string;
+ /** 鐢ㄦ埛鍚� */
+ userName?: string;
+ /** 浼佷笟Id */
+ enterpriseId?: string;
+ /** 浼佷笟鍏ㄧО */
+ enterpriseName?: string;
+ }
+
interface GetTraceIdLogQueryResult {
/** 璧勬簮鏃ュ織 */
resourceLogs?: GetResourceLogsQueryResultItem[];
+ /** 绗笁鏂硅祫婧愭棩蹇� */
+ threeResourceLogs?: GetThreeResourceLogsQueryResultItem[];
/** 寮傚父鏃ュ織 */
exceptionLogs?: GetExceptionLogsQueryResultItem[];
/** 鏁版嵁搴撳璁℃棩蹇� */
@@ -5603,7 +5725,7 @@
}
interface SavePersonalUserBankCardCommand {
- access?: EnumEnterpriseWalletAccess;
+ access?: EnumUserBankCardAccess;
/** 閾惰鍗″彿 */
code?: string;
/** 鎵�灞為摱琛� */
@@ -5612,6 +5734,8 @@
bankBranch?: string;
/** 閾惰棰勭暀鎵嬫満鍙� */
phoneNumber?: string;
+ /** 楠岃瘉鐮� */
+ verifyCode?: string;
}
interface SaveRoleCommand {
@@ -5747,6 +5871,14 @@
data?: GetEnterpriseContractTemplateSelectQueryOption;
}
+ interface SelectOptionGuidGetEnterpriseWalletAccessSelectQueryOption {
+ /** 鍊� */
+ value?: string;
+ /** 鏍囩 */
+ label?: string;
+ data?: GetEnterpriseWalletAccessSelectQueryOption;
+ }
+
interface SelectOptionGuidGetTaskSelectQueryOption {
/** 鍊� */
value?: string;
@@ -5782,6 +5914,11 @@
phoneNumber: string;
/** 韬唤璇佸彿 */
identity: string;
+ }
+
+ interface SendSavePersonalUserBankCardVerifyCodeCommand {
+ /** 鎵嬫満鍙风爜 */
+ phoneNumber: string;
}
interface SetDictionaryDataIsDisabledCommand {
@@ -5904,6 +6041,7 @@
interface SureTaskSettlementCommand {
/** 浠诲姟Id */
taskInfoId?: string;
+ settlementAccess?: EnumEnterpriseWalletAccess;
}
type SyncDatabaseCommand = Record<string, any>;
diff --git a/src/services/api/user.ts b/src/services/api/user.ts
index d06c228..10561c9 100644
--- a/src/services/api/user.ts
+++ b/src/services/api/user.ts
@@ -2,6 +2,21 @@
// @ts-ignore
import { request } from '@/utils/request';
+/** 鍒犻櫎鐢ㄦ埛閾惰鍗′俊鎭� DELETE /api/user/user/deletePersonalUserBankCard */
+export async function deletePersonalUserBankCard(
+ body: API.DeletePersonalUserBankCardCommand,
+ options?: API.RequestConfig
+) {
+ return request<number>('/api/user/user/deletePersonalUserBankCard', {
+ method: 'DELETE',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
/** 鏌ヨ杩愯惀绔敤鎴峰垎椤靛垪琛ㄦ暟鎹� POST /api/user/user/getOperationUserInfos */
export async function getOperationUserInfos(
body: API.GetOperationUserInfosQuery,
@@ -30,8 +45,6 @@
method: 'GET',
params: {
...params,
- request: undefined,
- ...params['request'],
},
...(options || {}),
});
@@ -154,6 +167,21 @@
});
}
+/** 鍙戦�佺粦瀹氶摱琛屽崱鐭俊 POST /api/user/user/sendSavePersonalUserBankCardVerifyCode */
+export async function sendSavePersonalUserBankCardVerifyCode(
+ body: API.SendSavePersonalUserBankCardVerifyCodeCommand,
+ options?: API.RequestConfig
+) {
+ return request<string>('/api/user/user/sendSavePersonalUserBankCardVerifyCode', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
/** 璁剧疆鐢ㄦ埛淇℃伅瑙掕壊 PUT /api/user/user/setUserInfoRoles */
export async function setUserInfoRoles(
body: API.SetUserInfoRolesCommand,
diff --git a/src/views/EnterpriseManage/components/ConfigureDialog.vue b/src/views/EnterpriseManage/components/ConfigureDialog.vue
index e96bea7..ad4c081 100644
--- a/src/views/EnterpriseManage/components/ConfigureDialog.vue
+++ b/src/views/EnterpriseManage/components/ConfigureDialog.vue
@@ -13,6 +13,9 @@
<el-tab-pane lazy :name="EnterpriseConfigureType.AliPay">
<AliPayConfigureView :id="form.id" ref="aliPayConfigureViewRef" />
</el-tab-pane>
+ <!-- <el-tab-pane lazy :name="EnterpriseConfigureType.Wechat">
+ <WechatConfigureView :id="form.id" ref="wechatConfigureViewRef" />
+ </el-tab-pane> -->
<el-tab-pane lazy :name="EnterpriseConfigureType.Electronic">
<ElectronicConfigureView :id="form.id" ref="electronicConfigureViewRef" />
</el-tab-pane>
@@ -36,6 +39,7 @@
import AliPayConfigureView from './AliPayConfigureView.vue';
import ElectronicConfigureView from './ElectronicConfigureView.vue';
import ShortMessageConfigureView from './ShortMessageConfigureView.vue';
+import WechatConfigureView from './WechatConfigureView.vue';
defineOptions({
name: 'ConfigureDialog',
@@ -65,6 +69,9 @@
'shortMessageConfigureViewRef'
);
+const wechatConfigureViewRef =
+ useTemplateRef<InstanceType<typeof WechatConfigureView>>('wechatConfigureViewRef');
+
function onDialogClose() {
// if (!dialogForm.value) return;
// dialogForm.value.resetFields();
@@ -81,6 +88,9 @@
} else if (form.value.enterpriseConfigureType === EnterpriseConfigureType.ShortMessage) {
res = await shortMessageConfigureViewRef.value?.onConfirm?.();
}
+ // else if (form.value.enterpriseConfigureType === EnterpriseConfigureType.Wechat) {
+ // res = await wechatConfigureViewRef.value?.onConfirm?.();
+ // }
if (res) {
emit('onConfirm');
}
diff --git a/src/views/EnterpriseManage/components/WechatConfigureView.vue b/src/views/EnterpriseManage/components/WechatConfigureView.vue
new file mode 100644
index 0000000..24c7f4d
--- /dev/null
+++ b/src/views/EnterpriseManage/components/WechatConfigureView.vue
@@ -0,0 +1,173 @@
+<template>
+ <LoadingLayout :loading="isLoading">
+ <ProForm :model="form" ref="dialogForm" label-width="120px">
+ <ProFormItemV2
+ label="鑱旂郴浜哄鍚�:"
+ prop="name"
+ :checkRules="[{ message: '璇疯緭鍏ヨ仈绯讳汉濮撳悕' }]"
+ >
+ <ProFormText v-model.trim="form.name" placeholder="璇疯緭鍏ヨ仈绯讳汉濮撳悕"> </ProFormText>
+ </ProFormItemV2>
+ <ProFormItemV2
+ label="鑱旂郴浜虹被鍨�:"
+ prop="name"
+ :checkRules="[{ message: '璇烽�夋嫨鑱旂郴浜虹被鍨�' }]"
+ >
+ <ProFormRadio v-model.trim="form.name" :value-enum="[]" button-style />
+ </ProFormItemV2>
+ <ProFormItemV2
+ label="鎵嬫満鍙�:"
+ prop="name"
+ :checkRules="[{ type: 'phone', message: '璇疯緭鍏ユ墜鏈哄彿' }]"
+ >
+ <ProFormText v-model.trim="form.name" placeholder="璇疯緭鍏ユ墜鏈哄彿" />
+ </ProFormItemV2>
+ <ProFormItemV2
+ label="鐢靛瓙閭:"
+ prop="name"
+ :checkRules="[{ type: 'email', message: '璇疯緭鍏ョ數瀛愰偖绠�' }]"
+ >
+ <ProFormText v-model.trim="form.name" placeholder="璇疯緭鍏ョ數瀛愰偖绠�" />
+ </ProFormItemV2>
+ <ProFormItemV2 label="涓讳綋绫诲瀷:" prop="name" :checkRules="[{ message: '璇烽�夋嫨涓讳綋绫诲瀷' }]">
+ <ProFormSelect v-model="form.name" :valueEnum="[]" placeholder="璇烽�夋嫨涓讳綋绫诲瀷">
+ </ProFormSelect>
+ </ProFormItemV2>
+ <ProFormItemV2
+ label="鍟嗘埛绠�绉�:"
+ prop="name"
+ :checkRules="[{ type: 'phone', message: '璇疯緭鍏ュ晢鎴风畝绉�' }]"
+ >
+ <ProFormText :maxlength="64" v-model.trim="form.name" placeholder="璇疯緭鍏ュ晢鎴风畝绉�" />
+ </ProFormItemV2>
+ <ProFormItemV2
+ label="瀹㈡湇鐢佃瘽:"
+ prop="name"
+ :checkRules="[{ type: 'tel', message: '璇疯緭鍏ュ鏈嶇數璇�' }]"
+ >
+ <ProFormText v-model.trim="form.name" placeholder="璇疯緭鍏ュ鏈嶇數璇�" />
+ </ProFormItemV2>
+ <ProFormItemV2 label="缁忚惀鍦烘櫙:" prop="name" :checkRules="[{ message: '璇烽�夋嫨缁忚惀鍦烘櫙' }]">
+ <ProFormSelect v-model="form.name" :valueEnum="[]" placeholder="璇烽�夋嫨缁忚惀鍦烘櫙">
+ </ProFormSelect>
+ </ProFormItemV2>
+ <ProFormItemV2
+ label="鍏ラ┗缁撶畻ID:"
+ prop="name"
+ :checkRules="[{ message: '璇疯緭鍏ュ叆椹荤粨绠桰D' }]"
+ >
+ <div style="display: flex; width: 100%">
+ <ProFormText v-model.trim="form.name" placeholder="璇疯緭鍏ュ叆椹荤粨绠桰D" />
+ <el-button style="margin-left: 10px" type="primary" link @click="openOuterSettleRule"
+ >璐圭巼缁撶畻瑙勫垯瀵圭収琛�</el-button
+ >
+ </div>
+ </ProFormItemV2>
+ <ProFormItemV2
+ label="鐗规畩璧勮川鐓х墖:"
+ prop="url"
+ :check-rules="[{ type: 'upload', message: '璇蜂笂浼犵壒娈婅祫璐ㄧ収鐗�' }]"
+ >
+ <ProFormUpload
+ v-model:file-url="form.url"
+ :limit="5"
+ :limitFileSize="10"
+ accept="png,jpg,jpeg,pdf"
+ ></ProFormUpload>
+ </ProFormItemV2>
+ <ProFormItemV2 label="缁撶畻璐︽埛:" prop="name" :checkRules="[{ message: '璇烽�夋嫨缁撶畻璐︽埛' }]">
+ <ProFormSelect v-model="form.name" :valueEnum="[]" placeholder="璇烽�夋嫨缁撶畻璐︽埛">
+ </ProFormSelect>
+ </ProFormItemV2>
+ <ProFormItemV2
+ label="寮�鎴烽摱琛�:"
+ prop="name"
+ :checkRules="[{ type: 'phone', message: '璇疯緭鍏ュ紑鎴烽摱琛�' }]"
+ >
+ <ProFormText :maxlength="64" v-model.trim="form.name" placeholder="璇疯緭鍏ュ紑鎴烽摱琛�" />
+ </ProFormItemV2>
+ <ProFormItemV2
+ label="閾惰璐﹀彿:"
+ prop="name"
+ :checkRules="[{ type: 'tel', message: '璇疯緭鍏ラ摱琛岃处鍙�' }]"
+ >
+ <ProFormText v-model.trim="form.name" placeholder="璇疯緭鍏ラ摱琛岃处鍙�" />
+ </ProFormItemV2>
+ </ProForm>
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import { FormInstance } from 'element-plus';
+import {
+ ProForm,
+ ProFormItemV2,
+ ProFormText,
+ LoadingLayout,
+ UploadUserFile,
+ ProFormSelect,
+ ProFormUpload,
+ useFormDialog,
+ ProFormRadio,
+} from '@bole-core/components';
+import * as enterpriseWalletServices from '@/services/api/enterpriseWallet';
+import { useQuery } from '@tanstack/vue-query';
+import { convertWalletApiToFiles, convertWalletFilesToApi } from '@/utils';
+
+defineOptions({
+ name: 'WechatConfigureView',
+});
+
+type Props = {
+ id: string;
+};
+
+const props = withDefaults(defineProps<Props>(), {});
+
+const dialogForm = ref<FormInstance>();
+
+const form = reactive({
+ name: '',
+ url: [] as UploadUserFile[],
+});
+
+const { isLoading, refetch } = useQuery({
+ queryKey: [
+ 'enterpriseWalletServices/getEnterpriseWallet',
+ props.id,
+ EnumEnterpriseWalletAccess.Alipay,
+ ],
+ queryFn: async (ctx) => {
+ return await enterpriseWalletServices.getEnterpriseWallet({
+ enterpriseId: props.id,
+ access: EnumEnterpriseWalletAccess.Alipay,
+ });
+ },
+ onSuccess(data) {
+ form.name = data.name;
+ form.url = convertWalletApiToFiles(
+ data.files,
+ EnumEnterpriseWalletExpandindirectOrderFileType.Scene
+ );
+ },
+});
+
+function openOuterSettleRule() {
+ window.open('https://kf.qq.com/faq/220228IJb2UV220228uEjU3Q.html', '_blank');
+}
+
+async function enterpriseWalletExpandindirectCreate() {
+ try {
+ if (!dialogForm.value) return;
+ const valid = await dialogForm.value.validate();
+ if (!valid) return;
+ let params: API.EnterpriseWalletExpandindirectCreateCommand = {};
+ let res = await enterpriseWalletServices.enterpriseWalletExpandindirectCreate(params);
+ return res;
+ } catch (error) {}
+}
+
+defineExpose({
+ onConfirm: enterpriseWalletExpandindirectCreate,
+});
+</script>
diff --git a/src/views/TraceIdLogManage/TraceIdLogManageList.vue b/src/views/TraceIdLogManage/TraceIdLogManageList.vue
new file mode 100644
index 0000000..e70f0f8
--- /dev/null
+++ b/src/views/TraceIdLogManage/TraceIdLogManageList.vue
@@ -0,0 +1,84 @@
+<template>
+ <LoadingLayout :loading="isLoading">
+ <AppContainer>
+ <ProTableQueryFilterBar :show-reset-btn="false">
+ <template #query>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="state.traceId"
+ style="width: 260px"
+ placeholder="traceID"
+ @on-click-search="refetch"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ </template>
+ </ProTableQueryFilterBar>
+ <ProTabs v-model="state.tabType" hasBorder>
+ <ProTabPane lazy label="璧勬簮鏃ュ織" name="resourceLogs">
+ <ResourceLogsView
+ :resourceLogs="detail.resourceLogs"
+ @resend="refetch"
+ ></ResourceLogsView>
+ </ProTabPane>
+ <ProTabPane lazy label="绗笁鏂硅祫婧愭棩蹇�" name="threeResourceLogs">
+ <ThreeResourceLogsView
+ :threeResourceLogs="detail.threeResourceLogs"
+ ></ThreeResourceLogsView>
+ </ProTabPane>
+ <ProTabPane lazy label="寮傚父鏃ュ織" name="exceptionLogs">
+ <ExceptionLogsView :exceptionLogs="detail.exceptionLogs"></ExceptionLogsView>
+ </ProTabPane>
+ <ProTabPane lazy label="鏁版嵁搴撳璁℃棩蹇�" name="dbAuditLogs">
+ <DbAuditLogsView :dbAuditLogs="detail.dbAuditLogs"></DbAuditLogsView>
+ </ProTabPane>
+ </ProTabs>
+ </AppContainer>
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+ ProTableQueryFilterBar,
+ SearchInput,
+ LoadingLayout,
+ AppContainer,
+ QueryFilterItem,
+ ProTabs,
+ ProTabPane,
+} from '@bole-core/components';
+import * as logRecordsServices from '@/services/api/logRecords';
+import { useQuery } from '@tanstack/vue-query';
+import ResourceLogsView from './components/ResourceLogsView.vue';
+import ThreeResourceLogsView from './components/ThreeResourceLogsView.vue';
+import ExceptionLogsView from './components/ExceptionLogsView.vue';
+import DbAuditLogsView from './components/DbAuditLogsView.vue';
+
+defineOptions({
+ name: 'TraceIdLogManageList',
+});
+
+const BaseState = {
+ traceId: '',
+ tabType: 'resourceLogs',
+};
+
+const state = reactive({ ...BaseState });
+
+const {
+ isLoading,
+ data: detail,
+ refetch,
+} = useQuery({
+ queryKey: ['logRecordsServices/getTraceIdLog', state.traceId],
+ queryFn: async () => {
+ return await logRecordsServices.getTraceIdLog({ traceId: state.traceId });
+ },
+ placeholderData: () => ({} as API.GetTraceIdLogQueryResult),
+ enabled: computed(() => !!state.traceId),
+});
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/views/TraceIdLogManage/components/DbAuditLogsView.vue b/src/views/TraceIdLogManage/components/DbAuditLogsView.vue
new file mode 100644
index 0000000..af3d68d
--- /dev/null
+++ b/src/views/TraceIdLogManage/components/DbAuditLogsView.vue
@@ -0,0 +1,66 @@
+<template>
+ <el-collapse v-model="activeName" accordion>
+ <el-collapse-item
+ v-for="item in dbAuditLogs"
+ :key="item.createdTime"
+ name="1"
+ style="overflow: auto; max-height: 600px"
+ >
+ <ProForm :model="item" is-read>
+ <ProFormItemV2 label="tableName:">
+ {{ item.tableName }}
+ </ProFormItemV2>
+ <ProFormItemV2 label="primaryKey:">{{ item.primaryKey }} </ProFormItemV2>
+ <ProFormItemV2 label="operate:"> {{ EnumDbAuditOperateText[item.operate] }}</ProFormItemV2>
+ <ProFormItemV2 label="oldValues:" label-position="top">
+ <json-viewer
+ :copyable="true"
+ :boxed="true"
+ :value="JSON.parse(item.oldValues)"
+ ></json-viewer>
+ </ProFormItemV2>
+ <ProFormItemV2 label="newValues:" label-position="top">
+ <json-viewer
+ :copyable="true"
+ :boxed="true"
+ :value="JSON.parse(item.newValues)"
+ ></json-viewer>
+ </ProFormItemV2>
+ <ProFormItemV2 label="createdUser:">
+ <json-viewer
+ :copyable="true"
+ :boxed="true"
+ :value="JSON.parse(JSON.stringify(item.createdUser))"
+ ></json-viewer>
+ </ProFormItemV2>
+ <ProFormItemV2 label="createdTime:">
+ {{ format(item.createdTime, 'YYYY-MM-DD HH:mm:ss') }}</ProFormItemV2
+ >
+ </ProForm>
+ </el-collapse-item>
+ </el-collapse>
+</template>
+
+<script setup lang="ts">
+import { ProForm, ProFormItemV2 } from '@bole-core/components';
+import { EnumDbAuditOperateText } from '@/constants';
+import JsonViewer from 'vue-json-viewer';
+
+import { format } from '@/utils';
+
+defineOptions({
+ name: 'DbAuditLogsView',
+});
+
+type Props = {
+ dbAuditLogs: API.GetDbAuditLogsQueryResultItem[];
+};
+const activeName = ref('1');
+const props = withDefaults(defineProps<Props>(), {
+ dbAuditLogs: () => [] as API.GetDbAuditLogsQueryResultItem[],
+});
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/views/TraceIdLogManage/components/ExceptionLogsView.vue b/src/views/TraceIdLogManage/components/ExceptionLogsView.vue
new file mode 100644
index 0000000..fe1d91d
--- /dev/null
+++ b/src/views/TraceIdLogManage/components/ExceptionLogsView.vue
@@ -0,0 +1,52 @@
+<template>
+ <el-collapse v-model="activeName" accordion>
+ <el-collapse-item
+ v-for="item in exceptionLogs"
+ :key="item.createdTime"
+ name="1"
+ style="overflow: auto; max-height: 600px"
+ >
+ <ProForm :model="item" is-read>
+ <ProFormItemV2 label="type:">
+ {{ item.type }}
+ </ProFormItemV2>
+ <ProFormItemV2 label="code:">{{ item.code }} </ProFormItemV2>
+ <ProFormItemV2 label="message:"> {{ item.message }}</ProFormItemV2>
+ <ProFormItemV2 label="stackTrace:"> {{ item.stackTrace }}</ProFormItemV2>
+ <ProFormItemV2 label="createdUser:">
+ <json-viewer
+ :copyable="true"
+ :boxed="true"
+ :value="JSON.parse(JSON.stringify(item.createdUser))"
+ ></json-viewer>
+ </ProFormItemV2>
+ <ProFormItemV2 label="createdTime:">
+ {{ format(item.createdTime, 'YYYY-MM-DD HH:mm:ss') }}</ProFormItemV2
+ >
+ </ProForm>
+ </el-collapse-item>
+ </el-collapse>
+</template>
+
+<script setup lang="ts">
+import { ProForm, ProFormItemV2 } from '@bole-core/components';
+import JsonViewer from 'vue-json-viewer';
+
+import { format } from '@/utils';
+
+defineOptions({
+ name: 'ExceptionLogsView',
+});
+
+type Props = {
+ exceptionLogs: API.GetExceptionLogsQueryResultItem[];
+};
+const activeName = ref('1');
+const props = withDefaults(defineProps<Props>(), {
+ exceptionLogs: () => [] as API.GetExceptionLogsQueryResultItem[],
+});
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/views/TraceIdLogManage/components/ResourceLogsView.vue b/src/views/TraceIdLogManage/components/ResourceLogsView.vue
new file mode 100644
index 0000000..e5f4f6d
--- /dev/null
+++ b/src/views/TraceIdLogManage/components/ResourceLogsView.vue
@@ -0,0 +1,105 @@
+<template>
+ <el-collapse v-model="activeName" accordion>
+ <el-collapse-item
+ v-for="item in resourceLogs"
+ :key="item.id"
+ name="1"
+ style="overflow: auto; max-height: 600px"
+ >
+ <template #title>
+ <el-button type="primary" @click="resend(item.id)" link>閲嶆柊鍙戦��</el-button>
+ </template>
+ <ProForm :model="item" is-read style="padding: 0 20px">
+ <ProFormItemV2 label="method:">
+ {{ EnumResourceMethodText[item.method] }}
+ </ProFormItemV2>
+ <ProFormItemV2 label="domain:">{{ item.domain }} </ProFormItemV2>
+ <ProFormItemV2 label="path:"> {{ item.path }}</ProFormItemV2>
+ <ProFormItemV2 label="requestHeaders:" label-position="top">
+ <json-viewer
+ :copyable="true"
+ :boxed="true"
+ :value="JSON.parse(item.requestHeaders)"
+ ></json-viewer>
+ </ProFormItemV2>
+ <ProFormItemV2 label="request:" label-position="top">
+ <json-viewer
+ :copyable="true"
+ :boxed="true"
+ :value="JSON.parse(item.request)"
+ ></json-viewer>
+ </ProFormItemV2>
+ <ProFormItemV2 label="responseHeaders:" label-position="top">
+ <json-viewer
+ :copyable="true"
+ :boxed="true"
+ :value="JSON.parse(item.responseHeaders)"
+ ></json-viewer>
+ </ProFormItemV2>
+ <ProFormItemV2 label="response:" label-position="top">
+ <json-viewer
+ :copyable="true"
+ :boxed="true"
+ :value="JSON.parse(item.response)"
+ ></json-viewer>
+ </ProFormItemV2>
+ <ProFormItemV2 label="isSuccess:"> {{ item.isSuccess ? '鏄�' : '鍚�' }}</ProFormItemV2>
+ <ProFormItemV2 label="clientIpAddress:"> {{ item.clientIpAddress }}</ProFormItemV2>
+ <ProFormItemV2 label="refererUrl:"> {{ item.refererUrl }}</ProFormItemV2>
+ <ProFormItemV2 label="consoleLogs:"> {{ item.consoleLogs }}</ProFormItemV2>
+ <ProFormItemV2 label="elapsedMilliseconds:"> {{ item.elapsedMilliseconds }}</ProFormItemV2>
+ <ProFormItemV2 label="createdUser:">
+ <json-viewer
+ :copyable="true"
+ :boxed="true"
+ :value="JSON.parse(JSON.stringify(item.createdUser))"
+ ></json-viewer>
+ </ProFormItemV2>
+ <ProFormItemV2 label="createdTime:">
+ {{ format(item.createdTime, 'YYYY-MM-DD HH:mm:ss') }}</ProFormItemV2
+ >
+ </ProForm>
+ </el-collapse-item>
+ </el-collapse>
+</template>
+
+<script setup lang="ts">
+import { ProForm, ProFormItemV2 } from '@bole-core/components';
+import { EnumResourceMethodText } from '@/constants';
+import JsonViewer from 'vue-json-viewer';
+import * as logRecordsServices from '@/services/api/logRecords';
+
+import { format } from '@/utils';
+import { Message } from '@bole-core/core';
+
+defineOptions({
+ name: 'ResourceLogsView',
+});
+
+type Props = {
+ resourceLogs: API.GetResourceLogsQueryResultItem[];
+};
+
+const activeName = ref('1');
+
+const props = withDefaults(defineProps<Props>(), {
+ resourceLogs: () => [] as API.GetResourceLogsQueryResultItem[],
+});
+
+const emit = defineEmits<{
+ (e: 'resend'): void;
+}>();
+
+async function resend(id: string) {
+ try {
+ let res = await logRecordsServices.resendResource({ id: id });
+ if (res) {
+ Message.successMessage('鎿嶄綔鎴愬姛');
+ }
+ } catch (error) {}
+}
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/views/TraceIdLogManage/components/ThreeResourceLogsView.vue b/src/views/TraceIdLogManage/components/ThreeResourceLogsView.vue
new file mode 100644
index 0000000..1d9dd8a
--- /dev/null
+++ b/src/views/TraceIdLogManage/components/ThreeResourceLogsView.vue
@@ -0,0 +1,82 @@
+<template>
+ <el-collapse v-model="activeName" accordion>
+ <el-collapse-item
+ v-for="item in threeResourceLogs"
+ :key="item.id"
+ name="1"
+ style="overflow: auto; max-height: 600px"
+ >
+ <ProForm :model="item" is-read>
+ <ProFormItemV2 label="method:">
+ {{ EnumResourceMethodText[item.method] }}
+ </ProFormItemV2>
+ <ProFormItemV2 label="domain:">{{ item.domain }} </ProFormItemV2>
+ <ProFormItemV2 label="path:"> {{ item.path }}</ProFormItemV2>
+ <ProFormItemV2 label="requestHeaders:" label-position="top">
+ <json-viewer
+ :copyable="true"
+ :boxed="true"
+ :value="JSON.parse(item.requestHeaders)"
+ ></json-viewer>
+ </ProFormItemV2>
+ <ProFormItemV2 label="request:" label-position="top">
+ <json-viewer
+ :copyable="true"
+ :boxed="true"
+ :value="JSON.parse(item.request)"
+ ></json-viewer>
+ </ProFormItemV2>
+ <ProFormItemV2 label="responseHeaders:" label-position="top">
+ <json-viewer
+ :copyable="true"
+ :boxed="true"
+ :value="JSON.parse(item.responseHeaders)"
+ ></json-viewer>
+ </ProFormItemV2>
+ <ProFormItemV2 label="response:" label-position="top">
+ <json-viewer
+ :copyable="true"
+ :boxed="true"
+ :value="JSON.parse(item.response)"
+ ></json-viewer>
+ </ProFormItemV2>
+ <ProFormItemV2 label="isSuccess:"> {{ item.isSuccess ? '鏄�' : '鍚�' }}</ProFormItemV2>
+ <ProFormItemV2 label="elapsedMilliseconds:"> {{ item.elapsedMilliseconds }}</ProFormItemV2>
+ <ProFormItemV2 label="createdUser:">
+ <json-viewer
+ :copyable="true"
+ :boxed="true"
+ :value="JSON.parse(JSON.stringify(item.createdUser))"
+ ></json-viewer>
+ </ProFormItemV2>
+ <ProFormItemV2 label="createdTime:">
+ {{ format(item.createdTime, 'YYYY-MM-DD HH:mm:ss') }}</ProFormItemV2
+ >
+ </ProForm>
+ </el-collapse-item>
+ </el-collapse>
+</template>
+
+<script setup lang="ts">
+import { ProForm, ProFormItemV2 } from '@bole-core/components';
+import { EnumResourceMethodText } from '@/constants';
+import JsonViewer from 'vue-json-viewer';
+
+import { format } from '@/utils';
+
+defineOptions({
+ name: 'ThreeResourceLogsView',
+});
+
+type Props = {
+ threeResourceLogs: API.GetThreeResourceLogsQueryResultItem[];
+};
+const activeName = ref('1');
+const props = withDefaults(defineProps<Props>(), {
+ threeResourceLogs: () => [] as API.GetThreeResourceLogsQueryResultItem[],
+});
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
--
Gitblit v1.9.1