From 76d07c0c336eafb918fba27450d63865baeb0642 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期一, 29 九月 2025 09:19:56 +0800
Subject: [PATCH] Merge branch 'master' into dev-1.1.2
---
src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue | 6
src/views/TraceIdLogManage/DbAuditLogs.vue | 230 ++++++
src/views/EnterpriseManage/components/ConfigureDialog.vue | 9
.eslintrc-auto-import.json | 4
src/services/api/typings.d.ts | 435 ++++++++++-
src/views/TraceIdLogManage/components/ThreeResourceLogsView.vue | 105 +-
src/views/EnterpriseManage/components/WechatConfigureView.vue | 51
src/views/TraceIdLogManage/components/ResourceLogsView.vue | 106 +-
src/views/TraceIdLogManage/components/JsonViewerDialog.vue | 31
src/constants/enterprise.ts | 15
src/views/System/SmsSettingManage.vue | 215 +++++
src/services/api/sms.ts | 42 +
src/views/TraceIdLogManage/components/DbAuditLogsView.vue | 75 -
src/views/TraceIdLogManage/components/ExceptionLogsView.vue | 27
src/services/api/index.ts | 2
src/views/TraceIdLogManage/ThreeResourceLogs.vue | 281 +++++++
src/views/TraceIdLogManage/ResourceLogs.vue | 281 +++++++
auto-imports.d.ts | 10
src/constants/apiEnum.ts | 64 +
src/views/TraceIdLogManage/ExceptionLogs.vue | 185 +++++
src/services/api/logRecords.ts | 39 +
21 files changed, 1,906 insertions(+), 307 deletions(-)
diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json
index 292270a..0fb83b8 100644
--- a/.eslintrc-auto-import.json
+++ b/.eslintrc-auto-import.json
@@ -27,6 +27,7 @@
"EnumClientType": true,
"EnumClientTypeText": true,
"EnumCodeUrlScene": true,
+ "EnumConsoleLogAccess": true,
"EnumContractTemplateStatus": true,
"EnumContractTemplateStatusText": true,
"EnumContractTemplateStatusTextForEnterpriseFilter": true,
@@ -53,6 +54,7 @@
"EnumEnterpriseWalletSignStatusText": true,
"EnumEnterpriseWalletTransactionType": true,
"EnumGetEnterpriseEmployeesQuerySignContractStatus": true,
+ "EnumLogLevel": true,
"EnumMenuType": true,
"EnumMenuVisitLevel": true,
"EnumOcrAccess": true,
@@ -79,6 +81,8 @@
"EnumSettlementCycleText": true,
"EnumSmsAccess": true,
"EnumSmsAccessText": true,
+ "EnumSmsAccessTextUseInSms": true,
+ "EnumSmsStatus": true,
"EnumTaskCheckReceiveStatus": true,
"EnumTaskCheckReceiveStatusText": true,
"EnumTaskRecommendStatus": true,
diff --git a/auto-imports.d.ts b/auto-imports.d.ts
index 4ee3e55..9d158b2 100644
--- a/auto-imports.d.ts
+++ b/auto-imports.d.ts
@@ -29,6 +29,7 @@
const EnumClientType: typeof import('./src/constants/apiEnum')['EnumClientType']
const EnumClientTypeText: typeof import('./src/constants/apiEnumText')['EnumClientTypeText']
const EnumCodeUrlScene: typeof import('./src/constants/apiEnum')['EnumCodeUrlScene']
+ const EnumConsoleLogAccess: typeof import('./src/constants/apiEnum')['EnumConsoleLogAccess']
const EnumContractTemplateStatus: typeof import('./src/constants/apiEnum')['EnumContractTemplateStatus']
const EnumContractTemplateStatusText: typeof import('./src/constants/electronSign')['EnumContractTemplateStatusText']
const EnumContractTemplateStatusTextForEnterpriseFilter: typeof import('./src/constants/electronSign')['EnumContractTemplateStatusTextForEnterpriseFilter']
@@ -56,6 +57,7 @@
const EnumEnterpriseWalletTransactionStatus: typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletTransactionStatus']
const EnumEnterpriseWalletTransactionType: typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletTransactionType']
const EnumGetEnterpriseEmployeesQuerySignContractStatus: typeof import('./src/constants/apiEnum')['EnumGetEnterpriseEmployeesQuerySignContractStatus']
+ const EnumLogLevel: typeof import('./src/constants/apiEnum')['EnumLogLevel']
const EnumMenuType: typeof import('./src/constants/apiEnum')['EnumMenuType']
const EnumMenuVisitLevel: typeof import('./src/constants/apiEnum')['EnumMenuVisitLevel']
const EnumOcrAccess: typeof import('./src/constants/apiEnum')['EnumOcrAccess']
@@ -83,6 +85,8 @@
const EnumSettlementCycleText: typeof import('./src/constants/task')['EnumSettlementCycleText']
const EnumSmsAccess: typeof import('./src/constants/apiEnum')['EnumSmsAccess']
const EnumSmsAccessText: typeof import('./src/constants/enterprise')['EnumSmsAccessText']
+ const EnumSmsAccessTextUseInSms: typeof import('./src/constants/enterprise')['EnumSmsAccessTextUseInSms']
+ const EnumSmsStatus: typeof import('./src/constants/apiEnum')['EnumSmsStatus']
const EnumTaskCheckReceiveStatus: typeof import('./src/constants/apiEnum')['EnumTaskCheckReceiveStatus']
const EnumTaskCheckReceiveStatusText: typeof import('./src/constants/task')['EnumTaskCheckReceiveStatusText']
const EnumTaskRecommendStatus: typeof import('./src/constants/apiEnum')['EnumTaskRecommendStatus']
@@ -272,7 +276,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, EnumElectronSignVerifyType, 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, EnumElectronSignVerifyType, 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'
+ export type { EnumBillingMethod, EnumClientType, EnumCodeUrlScene, EnumConsoleLogAccess, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumElectronSignVerifyType, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseRealMethod, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionType, EnumGetEnterpriseEmployeesQuerySignContractStatus, EnumLogLevel, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumSmsStatus, 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, EnumConsoleLogAccess, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumElectronSignVerifyType, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseRealMethod, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionType, EnumGetEnterpriseEmployeesQuerySignContractStatus, EnumLogLevel, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumSmsStatus, 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'
@@ -340,6 +344,7 @@
readonly EnumClientType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumClientType']>
readonly EnumClientTypeText: UnwrapRef<typeof import('./src/constants/apiEnumText')['EnumClientTypeText']>
readonly EnumCodeUrlScene: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumCodeUrlScene']>
+ readonly EnumConsoleLogAccess: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumConsoleLogAccess']>
readonly EnumContractTemplateStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumContractTemplateStatus']>
readonly EnumContractTemplateStatusText: UnwrapRef<typeof import('./src/constants/electronSign')['EnumContractTemplateStatusText']>
readonly EnumContractTemplateStatusTextForEnterpriseFilter: UnwrapRef<typeof import('./src/constants/electronSign')['EnumContractTemplateStatusTextForEnterpriseFilter']>
@@ -366,6 +371,7 @@
readonly EnumEnterpriseWalletSignStatusText: UnwrapRef<typeof import('./src/constants/enterprise')['EnumEnterpriseWalletSignStatusText']>
readonly EnumEnterpriseWalletTransactionType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletTransactionType']>
readonly EnumGetEnterpriseEmployeesQuerySignContractStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumGetEnterpriseEmployeesQuerySignContractStatus']>
+ readonly EnumLogLevel: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumLogLevel']>
readonly EnumMenuType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumMenuType']>
readonly EnumMenuVisitLevel: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumMenuVisitLevel']>
readonly EnumOcrAccess: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumOcrAccess']>
@@ -392,6 +398,8 @@
readonly EnumSettlementCycleText: UnwrapRef<typeof import('./src/constants/task')['EnumSettlementCycleText']>
readonly EnumSmsAccess: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumSmsAccess']>
readonly EnumSmsAccessText: UnwrapRef<typeof import('./src/constants/enterprise')['EnumSmsAccessText']>
+ readonly EnumSmsAccessTextUseInSms: UnwrapRef<typeof import('./src/constants/enterprise')['EnumSmsAccessTextUseInSms']>
+ readonly EnumSmsStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumSmsStatus']>
readonly EnumTaskCheckReceiveStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskCheckReceiveStatus']>
readonly EnumTaskCheckReceiveStatusText: UnwrapRef<typeof import('./src/constants/task')['EnumTaskCheckReceiveStatusText']>
readonly EnumTaskRecommendStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskRecommendStatus']>
diff --git a/src/constants/apiEnum.ts b/src/constants/apiEnum.ts
index 5e7d264..e869b1b 100644
--- a/src/constants/apiEnum.ts
+++ b/src/constants/apiEnum.ts
@@ -31,6 +31,14 @@
ElectronSignUrl = 10,
}
+/** 鎺у埗鍙版棩蹇楅�氶亾 */
+export enum EnumConsoleLogAccess {
+ /**鍚庣 */
+ Back = 10,
+ /**鍓嶇 */
+ Front = 20,
+}
+
/** 鍚堝悓鍒剁増鐘舵�� */
export enum EnumContractTemplateStatus {
/**寰呭埗鐗� */
@@ -199,6 +207,22 @@
Pass = 30,
}
+/** 鏃ュ織绾у埆 */
+export enum EnumLogLevel {
+ /**璺熻釜 */
+ Trace = 10,
+ /**璋冭瘯 */
+ Debug = 20,
+ /**淇℃伅 */
+ Information = 30,
+ /**璀﹀憡 */
+ Warning = 40,
+ /**閿欒 */
+ Error = 50,
+ /**涓ラ噸 */
+ Critical = 60,
+}
+
/** 鑿滃崟绫诲瀷 */
export enum EnumMenuType {
/**鑿滃崟 */
@@ -321,28 +345,30 @@
CommonServerLogRecords = 7,
/**鍚屾鏁版嵁搴� */
CommonServerSyncDatabase = 8,
+ /**鐭俊宸ュ叿 */
+ CommonServerSmsUtils = 9,
/**鐢ㄦ埛璁よ瘉 */
- UserServerAuth = 9,
+ UserServerAuth = 10,
/**鐢ㄦ埛鑿滃崟 */
- UserServerMenu = 10,
+ UserServerMenu = 11,
/**鐢ㄦ埛璧勬簮 */
- UserServerResource = 11,
+ UserServerResource = 12,
/**鐢ㄦ埛瑙掕壊 */
- UserServerRole = 12,
+ UserServerRole = 13,
/**鐢ㄦ埛淇℃伅 */
- UserServerUser = 13,
+ UserServerUser = 14,
/**鐢靛瓙绛� */
- UserServerElectronSign = 14,
+ UserServerElectronSign = 15,
/**鐢ㄦ埛绠�鍘� */
- UserServerUserResume = 15,
+ UserServerUserResume = 16,
/**浼佷笟淇℃伅 */
- UserServerEnterprise = 16,
+ UserServerEnterprise = 17,
/**浼佷笟閽卞寘 */
- UserServerEnterpriseWallet = 17,
+ UserServerEnterpriseWallet = 18,
/**鐏靛伐淇℃伅 */
- UserServerEnterpriseEmployee = 18,
+ UserServerEnterpriseEmployee = 19,
/**鐢靛瓙绛� */
- ElectronSignServerElectronSign = 19,
+ ElectronSignServerElectronSign = 20,
}
/** 璧勬簮璇锋眰鏂瑰紡 */
@@ -387,8 +413,24 @@
/** 鐭俊閫氶亾 */
export enum EnumSmsAccess {
+ /**鏃� */
+ None = 0,
/**闃块噷浜戠煭淇� */
AliyunSms = 10,
+ /**璇氱珛涓� */
+ ChengLiYe = 20,
+}
+
+/** 鐭俊鐘舵�� */
+export enum EnumSmsStatus {
+ /**寰呭彂閫� */
+ Wait = 0,
+ /**鍙戦�佷腑 */
+ InProcess = 10,
+ /**鍙戦�佹垚鍔� */
+ Success = 20,
+ /**鍙戦�佸け璐� */
+ Fail = 30,
}
/** 浠诲姟缁撶畻鐘舵�� */
diff --git a/src/constants/enterprise.ts b/src/constants/enterprise.ts
index efc3d0b..be49de0 100644
--- a/src/constants/enterprise.ts
+++ b/src/constants/enterprise.ts
@@ -20,10 +20,10 @@
* 鐭俊閫氶亾閰嶇疆
*/
ShortMessage = 4,
- // /**
- // * 寰俊鏀粯閰嶇疆
- // */
- // Wechat = 5,
+ /**
+ * 寰俊鏀粯閰嶇疆
+ */
+ Wechat = 5,
}
export const EnterpriseConfigureTypeText = {
@@ -31,7 +31,7 @@
[EnterpriseConfigureType.AliPay]: '鏀粯瀹濋厤缃�',
[EnterpriseConfigureType.Electronic]: '鐢靛瓙绛鹃厤缃�',
[EnterpriseConfigureType.ShortMessage]: '鐭俊閫氶亾閰嶇疆',
- // [EnterpriseConfigureType.Wechat]: '寰俊鏀粯閰嶇疆',
+ [EnterpriseConfigureType.Wechat]: '寰俊鏀粯閰嶇疆',
};
export enum VerifyStatus {
@@ -74,6 +74,11 @@
[EnumSmsAccess.AliyunSms]: '闃块噷浜�',
};
+export const EnumSmsAccessTextUseInSms = {
+ [EnumSmsAccess.AliyunSms]: '闃块噷浜�',
+ [EnumSmsAccess.ChengLiYe]: '璇氱珛涓�',
+};
+
export const EnumRealAccessText = {
[EnumRealAccess.BestSign]: '涓婁笂绛�',
[EnumRealAccess.AlipaySign]: '鏀粯瀹濅俊浠荤',
diff --git a/src/services/api/index.ts b/src/services/api/index.ts
index 99078ea..c27a0d6 100644
--- a/src/services/api/index.ts
+++ b/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';
@@ -25,6 +26,7 @@
enterpriseEmployee,
user,
role,
+ sms,
ocrUtils,
task,
enterprise,
diff --git a/src/services/api/logRecords.ts b/src/services/api/logRecords.ts
index 0cb3919..4780141 100644
--- a/src/services/api/logRecords.ts
+++ b/src/services/api/logRecords.ts
@@ -2,6 +2,18 @@
// @ts-ignore
import { request } from '@/utils/request';
+/** 鎺у埗鍙版棩蹇楀垎椤靛垪琛ㄦ煡璇� POST /api/common/logRecords/getConsoleLogs */
+export async function getConsoleLogs(body: API.GetConsoleLogsQuery, options?: API.RequestConfig) {
+ return request<API.GetConsoleLogsQueryResult>('/api/common/logRecords/getConsoleLogs', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
/** 鏌ヨ鏁版嵁搴撳璁℃棩蹇楀垎椤靛垪琛� POST /api/common/logRecords/getDbAuditLogs */
export async function getDbAuditLogs(body: API.GetDbAuditLogsQuery, options?: API.RequestConfig) {
return request<API.GetDbAuditLogsQueryResult>('/api/common/logRecords/getDbAuditLogs', {
@@ -32,6 +44,18 @@
/** 璧勬簮鏃ュ織鍒嗛〉鍒楄〃鏌ヨ POST /api/common/logRecords/getResourceLogs */
export async function getResourceLogs(body: API.GetResourceLogsQuery, options?: API.RequestConfig) {
return request<API.GetResourceLogsQueryResult>('/api/common/logRecords/getResourceLogs', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** 鏌ヨ鐭俊鏃ュ織 POST /api/common/logRecords/getSmsLogs */
+export async function getSmsLogs(body: API.GetSmsLogsQuery, options?: API.RequestConfig) {
+ return request<API.GetSmsLogsQueryResult>('/api/common/logRecords/getSmsLogs', {
method: 'POST',
headers: {
'Content-Type': 'application/json-patch+json',
@@ -85,3 +109,18 @@
...(options || {}),
});
}
+
+/** 淇濆瓨鍓嶇鏃ュ織 POST /api/common/logRecords/saveFrontConsoleLog */
+export async function saveFrontConsoleLog(
+ body: API.SaveFrontConsoleLogCommand,
+ options?: API.RequestConfig
+) {
+ return request<string>('/api/common/logRecords/saveFrontConsoleLog', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
diff --git a/src/services/api/sms.ts b/src/services/api/sms.ts
new file mode 100644
index 0000000..5a65279
--- /dev/null
+++ b/src/services/api/sms.ts
@@ -0,0 +1,42 @@
+/* eslint-disable */
+// @ts-ignore
+import { request } from '@/utils/request';
+
+/** 鏌ヨ鐭俊閰嶇疆 POST /api/common/sms/getSmsSetting */
+export async function getSmsSetting(body: API.GetSmsSettingQuery, options?: API.RequestConfig) {
+ return request<API.GetSmsSettingQueryResult>('/api/common/sms/getSmsSetting', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** 淇濆瓨鐭俊閰嶇疆 POST /api/common/sms/saveSmsSetting */
+export async function saveSmsSetting(body: API.SaveSmsSettingCommand, options?: API.RequestConfig) {
+ return request<string>('/api/common/sms/saveSmsSetting', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** 璇氱珛涓氱煭淇″钩鍙板洖浼犻�氱煡 POST /api/common/sms/smsChengLiYeNotify */
+export async function smsChengLiYeNotify(
+ body: API.SmsChengLiYeNotifyCommand,
+ options?: API.RequestConfig
+) {
+ return request<boolean>('/api/common/sms/smsChengLiYeNotify', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts
index 5623a46..80e7e2c 100644
--- a/src/services/api/typings.d.ts
+++ b/src/services/api/typings.d.ts
@@ -563,6 +563,13 @@
ElectronSignUrl = 10,
}
+ enum EnumConsoleLogAccess {
+ /**鍚庣 */
+ Back = 10,
+ /**鍓嶇 */
+ Front = 20,
+ }
+
enum EnumContractTemplateStatus {
/**寰呭埗鐗� */
Wait = 10,
@@ -714,6 +721,21 @@
Pass = 30,
}
+ enum EnumLogLevel {
+ /**璺熻釜 */
+ Trace = 10,
+ /**璋冭瘯 */
+ Debug = 20,
+ /**淇℃伅 */
+ Information = 30,
+ /**璀﹀憡 */
+ Warning = 40,
+ /**閿欒 */
+ Error = 50,
+ /**涓ラ噸 */
+ Critical = 60,
+ }
+
enum EnumMenuType {
/**鑿滃崟 */
Menu = 10,
@@ -825,28 +847,30 @@
CommonServerLogRecords = 7,
/**鍚屾鏁版嵁搴� */
CommonServerSyncDatabase = 8,
+ /**鐭俊宸ュ叿 */
+ CommonServerSmsUtils = 9,
/**鐢ㄦ埛璁よ瘉 */
- UserServerAuth = 9,
+ UserServerAuth = 10,
/**鐢ㄦ埛鑿滃崟 */
- UserServerMenu = 10,
+ UserServerMenu = 11,
/**鐢ㄦ埛璧勬簮 */
- UserServerResource = 11,
+ UserServerResource = 12,
/**鐢ㄦ埛瑙掕壊 */
- UserServerRole = 12,
+ UserServerRole = 13,
/**鐢ㄦ埛淇℃伅 */
- UserServerUser = 13,
+ UserServerUser = 14,
/**鐢靛瓙绛� */
- UserServerElectronSign = 14,
+ UserServerElectronSign = 15,
/**鐢ㄦ埛绠�鍘� */
- UserServerUserResume = 15,
+ UserServerUserResume = 16,
/**浼佷笟淇℃伅 */
- UserServerEnterprise = 16,
+ UserServerEnterprise = 17,
/**浼佷笟閽卞寘 */
- UserServerEnterpriseWallet = 17,
+ UserServerEnterpriseWallet = 18,
/**鐏靛伐淇℃伅 */
- UserServerEnterpriseEmployee = 18,
+ UserServerEnterpriseEmployee = 19,
/**鐢靛瓙绛� */
- ElectronSignServerElectronSign = 19,
+ ElectronSignServerElectronSign = 20,
}
enum EnumResourceMethod {
@@ -887,8 +911,23 @@
}
enum EnumSmsAccess {
+ /**鏃� */
+ None = 0,
/**闃块噷浜戠煭淇� */
AliyunSms = 10,
+ /**璇氱珛涓� */
+ ChengLiYe = 20,
+ }
+
+ enum EnumSmsStatus {
+ /**寰呭彂閫� */
+ Wait = 0,
+ /**鍙戦�佷腑 */
+ InProcess = 10,
+ /**鍙戦�佹垚鍔� */
+ Success = 20,
+ /**鍙戦�佸け璐� */
+ Fail = 30,
}
enum EnumTaskCheckReceiveStatus {
@@ -1223,6 +1262,24 @@
/** 閿欒鐮� */
errorCode?: string;
data?: GetCodeUrlQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
+ interface FriendlyResultGetConsoleLogsQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetConsoleLogsQueryResult;
/** 鎵ц鎴愬姛 */
success?: boolean;
/** 閿欒淇℃伅 */
@@ -1889,6 +1946,42 @@
/** 閿欒鐮� */
errorCode?: string;
data?: GetSettlementTaskUsersQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
+ interface FriendlyResultGetSmsLogsQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetSmsLogsQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
+ interface FriendlyResultGetSmsSettingQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetSmsSettingQueryResult;
/** 鎵ц鎴愬姛 */
success?: boolean;
/** 閿欒淇℃伅 */
@@ -2999,6 +3092,58 @@
paramValue5?: string;
}
+ interface GetConsoleLogsQuery {
+ access?: EnumConsoleLogAccess;
+ level?: EnumLogLevel;
+ /** 鍒涘缓鏃堕棿-璧峰 */
+ createdTimeBegin?: string;
+ /** 鍒涘缓鏃堕棿-鎴 */
+ createdTimeEnd?: string;
+ /** 鎿嶄綔浜� */
+ createdUser?: string;
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鍐呭 */
+ content?: string;
+ /** 閾炬帴鍦板潃 */
+ url?: string;
+ /** 浼犲弬 */
+ request?: string;
+ /** 鎵╁睍 */
+ ext?: string;
+ pageModel?: PagedListQueryPageModel;
+ }
+
+ interface GetConsoleLogsQueryResult {
+ pageModel?: PagedListQueryResultPageModel;
+ /** 鏁版嵁 */
+ data?: GetConsoleLogsQueryResultItem[];
+ }
+
+ interface GetConsoleLogsQueryResultItem {
+ /** Id */
+ id?: string;
+ /** 璺熻釜Id */
+ traceId?: string;
+ access?: EnumConsoleLogAccess;
+ level?: EnumLogLevel;
+ /** 鍐呭 */
+ content: string;
+ /** 鍫嗘爤璺熻釜 */
+ stackTrace?: string;
+ /** 閾炬帴鍦板潃 */
+ url?: string;
+ /** 浼犲弬 */
+ request?: string;
+ /** 鎵╁睍 */
+ ext?: string;
+ /** 瀹㈡埛IP鍦板潃 */
+ clientIpAddress?: string;
+ createdUser?: GetLogsQueryResultItemCreatedUser;
+ /** 鍒涘缓鏃堕棿 */
+ createdTime?: string;
+ }
+
interface GetContractTemplateEnterprisesQuery {
/** 鍏抽敭瀛� */
keywords?: string;
@@ -3074,14 +3219,23 @@
type GetCurrentLogierMenusQuery = Record<string, any>;
interface GetDbAuditLogsQuery {
- /** 璺熻釜Id */
- traceId?: string;
- /** 鍏抽敭瀛� */
- keywords?: string;
/** 鍒涘缓鏃堕棿-璧峰 */
createdTimeBegin?: string;
/** 鍒涘缓鏃堕棿-鎴 */
createdTimeEnd?: string;
+ /** 鎿嶄綔浜� */
+ createdUser?: string;
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 琛ㄥ悕 */
+ tableName?: string;
+ /** 涓婚敭 */
+ primaryKey?: string;
+ operate?: EnumDbAuditOperate;
+ /** 鏃у�� */
+ oldValues?: string;
+ /** 鏂板�� */
+ newValues?: string;
pageModel?: PagedListQueryPageModel;
}
@@ -3092,6 +3246,10 @@
}
interface GetDbAuditLogsQueryResultItem {
+ /** Id */
+ id?: string;
+ /** 璺熻釜Id */
+ traceId?: string;
/** 琛ㄥ悕 */
tableName?: string;
/** 涓婚敭 */
@@ -3101,7 +3259,7 @@
oldValues?: string;
/** 鏂板�� */
newValues?: string;
- createdUser?: GetResourceLogsQueryResultItemCreatedUser;
+ createdUser?: GetLogsQueryResultItemCreatedUser;
/** 鍒涘缓鏃堕棿 */
createdTime?: string;
}
@@ -3624,14 +3782,20 @@
}
interface GetExceptionLogsQuery {
- /** 璺熻釜Id */
- traceId?: string;
- /** 鍏抽敭瀛� */
- keywords?: string;
/** 鍒涘缓鏃堕棿-璧峰 */
createdTimeBegin?: string;
/** 鍒涘缓鏃堕棿-鎴 */
createdTimeEnd?: string;
+ /** 鎿嶄綔浜� */
+ createdUser?: string;
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 绫诲瀷 */
+ type?: string;
+ /** 浠g爜 */
+ code?: string;
+ /** 娑堟伅 */
+ message?: string;
pageModel?: PagedListQueryPageModel;
}
@@ -3642,6 +3806,10 @@
}
interface GetExceptionLogsQueryResultItem {
+ /** Id */
+ id?: string;
+ /** 璺熻釜Id */
+ traceId?: string;
/** 绫诲瀷 */
type?: string;
/** 浠g爜 */
@@ -3650,7 +3818,7 @@
message?: string;
/** 鍫嗘爤璺熻釜 */
stackTrace?: string;
- createdUser?: GetResourceLogsQueryResultItemCreatedUser;
+ createdUser?: GetLogsQueryResultItemCreatedUser;
/** 鍒涘缓鏃堕棿 */
createdTime?: string;
}
@@ -3701,6 +3869,20 @@
/** 鍦板潃 */
url?: string;
model?: BaiduOcrBusinessLicenseResultModel;
+ }
+
+ interface GetLogsQueryResultItemCreatedUser {
+ /** Id */
+ id?: string;
+ type?: EnumUserType;
+ /** 濮撳悕 */
+ name?: string;
+ /** 鐢ㄦ埛鍚� */
+ userName?: string;
+ /** 浼佷笟Id */
+ enterpriseId?: string;
+ /** 浼佷笟鍏ㄧО */
+ enterpriseName?: string;
}
interface GetMenuQueryResult {
@@ -4366,14 +4548,29 @@
}
interface GetResourceLogsQuery {
- /** 璺熻釜Id */
- traceId?: string;
- /** 鍏抽敭瀛� */
- keywords?: string;
/** 鍒涘缓鏃堕棿-璧峰 */
createdTimeBegin?: string;
/** 鍒涘缓鏃堕棿-鎴 */
createdTimeEnd?: string;
+ /** 鎿嶄綔浜� */
+ createdUser?: string;
+ /** 璺熻釜Id */
+ traceId?: string;
+ method?: EnumResourceMethod;
+ /** 鍩熷悕 */
+ domain?: string;
+ /** 鍦板潃 */
+ path?: string;
+ /** 璇锋眰鍙傛暟 */
+ request?: string;
+ /** 鍝嶅簲缁撴灉 */
+ response?: string;
+ /** 鏄惁鎴愬姛 */
+ isSuccess?: boolean;
+ /** 瀹㈡埛绔疘P鍦板潃 */
+ clientIpAddress?: string;
+ /** 鏈�灏忚�楁椂姣鏁� */
+ elapsedMillisecondsMin?: number;
pageModel?: PagedListQueryPageModel;
}
@@ -4386,6 +4583,8 @@
interface GetResourceLogsQueryResultItem {
/** Id */
id?: string;
+ /** 璺熻釜Id */
+ traceId?: string;
method?: EnumResourceMethod;
/** 鍩熷悕 */
domain?: string;
@@ -4409,23 +4608,9 @@
consoleLogs?: string;
/** 鑰楁椂姣鏁� */
elapsedMilliseconds?: number;
- createdUser?: GetResourceLogsQueryResultItemCreatedUser;
+ createdUser?: GetLogsQueryResultItemCreatedUser;
/** 鍒涘缓鏃堕棿 */
createdTime?: string;
- }
-
- interface GetResourceLogsQueryResultItemCreatedUser {
- /** Id */
- id?: string;
- type?: EnumUserType;
- /** 濮撳悕 */
- name?: string;
- /** 鐢ㄦ埛鍚� */
- userName?: string;
- /** 浼佷笟Id */
- enterpriseId?: string;
- /** 浼佷笟鍏ㄧО */
- enterpriseName?: string;
}
interface GetResourcesQueryResultItem {
@@ -4644,6 +4829,89 @@
createdTime?: string;
/** 鐢靛瓙鏀舵嵁涓嬭浇閾炬帴 */
ereceiptDownloadOssUrl?: string;
+ }
+
+ interface GetSmsLogsQuery {
+ /** 鍒涘缓鏃堕棿-璧峰 */
+ createdTimeBegin?: string;
+ /** 鍒涘缓鏃堕棿-鎴 */
+ createdTimeEnd?: string;
+ /** 鎿嶄綔浜� */
+ createdUser?: string;
+ /** 璺熻釜Id */
+ traceId?: string;
+ access?: EnumSmsAccess;
+ /** 鎵嬫満鍙风爜 */
+ phoneNumber?: string;
+ /** 妯℃澘浠g爜 */
+ templateCode?: string;
+ /** 妯℃澘鍙傛暟 */
+ templateParam?: string;
+ /** 鏄惁浣跨敤 */
+ isUsed?: boolean;
+ status?: EnumSmsStatus;
+ pageModel?: PagedListQueryPageModel;
+ }
+
+ interface GetSmsLogsQueryResult {
+ pageModel?: PagedListQueryResultPageModel;
+ /** 鏁版嵁 */
+ data?: GetSmsLogsQueryResultItem[];
+ }
+
+ interface GetSmsLogsQueryResultItem {
+ /** Id */
+ id?: string;
+ /** 璺熻釜Id */
+ traceId?: string;
+ access?: EnumSmsAccess;
+ /** 鎵嬫満鍙风爜 */
+ phoneNumber?: string;
+ /** 妯℃澘浠g爜 */
+ templateCode?: string;
+ /** 妯℃澘鍙傛暟 */
+ templateParam?: string;
+ /** 鏈夋晥鏈� */
+ expiry?: string;
+ /** 鏄惁浣跨敤 */
+ isUsed?: boolean;
+ status?: EnumSmsStatus;
+ /** 璇锋眰Id */
+ requestId?: string;
+ /** 鍥炰紶浠g爜 */
+ code?: string;
+ /** 鍥炰紶娑堟伅 */
+ message?: string;
+ /** 鎿嶄綔浜篒d */
+ createdUserId?: string;
+ createdUser?: GetLogsQueryResultItemCreatedUser;
+ /** 鍒涘缓鏃堕棿 */
+ createdTime?: string;
+ }
+
+ type GetSmsSettingQuery = Record<string, any>;
+
+ interface GetSmsSettingQueryResult {
+ /** 鏄惁绂佺敤 */
+ isDisabled?: boolean;
+ /** 甯﹀嚭鍙傛暟 */
+ withoutParams?: boolean;
+ /** 姣忓垎閽熸渶澶ф暟閲� */
+ minutelyMaxCount?: number;
+ /** 姣忓皬鏃舵渶澶ф暟閲� */
+ hourlyMaxCount?: number;
+ /** 姣忓ぉ鏈�澶ф暟閲� */
+ dailyMaxCount?: number;
+ /** 閫氶亾閰嶇疆 */
+ accesses?: GetSmsSettingQueryResultAccess[];
+ }
+
+ interface GetSmsSettingQueryResultAccess {
+ access?: EnumSmsAccess;
+ /** 鏄惁绂佺敤 */
+ isDisabled?: boolean;
+ /** 鎺掑簭 */
+ sort?: number;
}
interface GetTaskEnterpriseQueryResult {
@@ -4929,14 +5197,29 @@
}
interface GetThreeResourceLogsQuery {
- /** 璺熻釜Id */
- traceId?: string;
- /** 鍏抽敭瀛� */
- keywords?: string;
/** 鍒涘缓鏃堕棿-璧峰 */
createdTimeBegin?: string;
/** 鍒涘缓鏃堕棿-鎴 */
createdTimeEnd?: string;
+ /** 鎿嶄綔浜� */
+ createdUser?: string;
+ /** 璺熻釜Id */
+ traceId?: string;
+ method?: EnumResourceMethod;
+ /** 鍩熷悕 */
+ domain?: string;
+ /** 鍦板潃 */
+ path?: string;
+ /** 璇锋眰鍙傛暟 */
+ request?: string;
+ /** 鍝嶅簲缁撴灉 */
+ response?: string;
+ /** 鏄惁鎴愬姛 */
+ isSuccess?: boolean;
+ /** 瀹㈡埛绔疘P鍦板潃 */
+ clientIpAddress?: string;
+ /** 鏈�灏忚�楁椂姣鏁� */
+ elapsedMillisecondsMin?: number;
pageModel?: PagedListQueryPageModel;
}
@@ -4949,6 +5232,8 @@
interface GetThreeResourceLogsQueryResultItem {
/** Id */
id?: string;
+ /** 璺熻釜Id */
+ traceId?: string;
method?: EnumResourceMethod;
/** 鍩熷悕 */
domain?: string;
@@ -4966,23 +5251,9 @@
isSuccess?: boolean;
/** 鑰楁椂姣鏁� */
elapsedMilliseconds?: number;
- createdUser?: GetThreeResourceLogsQueryResultItemCreatedUser;
+ createdUser?: GetLogsQueryResultItemCreatedUser;
/** 鍒涘缓鏃堕棿 */
createdTime?: string;
- }
-
- interface GetThreeResourceLogsQueryResultItemCreatedUser {
- /** Id */
- id?: string;
- type?: EnumUserType;
- /** 濮撳悕 */
- name?: string;
- /** 鐢ㄦ埛鍚� */
- userName?: string;
- /** 浼佷笟Id */
- enterpriseId?: string;
- /** 浼佷笟鍏ㄧО */
- enterpriseName?: string;
}
interface GetTraceIdLogQueryResult {
@@ -4994,6 +5265,8 @@
exceptionLogs?: GetExceptionLogsQueryResultItem[];
/** 鏁版嵁搴撳璁℃棩蹇� */
dbAuditLogs?: GetDbAuditLogsQueryResultItem[];
+ /** 鎺у埗鍙版棩蹇� */
+ consoleLogs?: GetConsoleLogsQueryResultItem[];
}
interface GetUserInfoRolesQueryResultItem {
@@ -5466,6 +5739,7 @@
}
interface PersonalUserElectronSignCommandResult {
+ userSignContractStatus?: EnumTaskUserSignContractStatus;
/** 绛剧讲鍚堝悓鐭摼鎺� */
signContractShortUrl?: string;
/** 绛剧讲鍚堝悓闀块摼鎺� */
@@ -5495,6 +5769,8 @@
isReal?: boolean;
realMethod?: EnumUserRealMethod;
realStatus?: EnumPersonalUserRealStatus;
+ /** 鏄惁缁戝畾閾惰鍗� */
+ isBindBankCard?: boolean;
/** 浜鸿劯璇嗗埆鍦板潃 */
faceUrl?: string;
}
@@ -5691,6 +5967,22 @@
status?: EnumEnterpriseCostStatus;
}
+ interface SaveFrontConsoleLogCommand {
+ /** 璺熻釜Id */
+ traceId?: string;
+ level?: EnumLogLevel;
+ /** 鍐呭 */
+ content: string;
+ /** 鍫嗘爤璺熻釜 */
+ stackTrace?: string;
+ /** 閾炬帴鍦板潃 */
+ url?: string;
+ /** 浼犲弬 */
+ request?: string;
+ /** 鎵╁睍 */
+ ext?: string;
+ }
+
interface SaveMenuButtonCommand {
/** 鑿滃崟Id */
parentId?: string;
@@ -5848,6 +6140,29 @@
menuIds?: string[];
/** 璧勬簮 */
resources?: GetRoleQueryResultResource[];
+ }
+
+ interface SaveSmsSettingCommand {
+ /** 鏄惁绂佺敤 */
+ isDisabled?: boolean;
+ /** 甯﹀嚭鍙傛暟 */
+ withoutParams?: boolean;
+ /** 姣忓垎閽熸渶澶ф暟閲� */
+ minutelyMaxCount?: number;
+ /** 姣忓皬鏃舵渶澶ф暟閲� */
+ hourlyMaxCount?: number;
+ /** 姣忓ぉ鏈�澶ф暟閲� */
+ dailyMaxCount?: number;
+ /** 閫氶亾閰嶇疆 */
+ accesses?: SaveSmsSettingCommandAccess[];
+ }
+
+ interface SaveSmsSettingCommandAccess {
+ access?: EnumSmsAccess;
+ /** 鏄惁绂佺敤 */
+ isDisabled?: boolean;
+ /** 鎺掑簭 */
+ sort?: number;
}
interface SaveTaskInfoCommand {
@@ -6113,6 +6428,8 @@
status?: EnumUserStatus;
}
+ type SmsChengLiYeNotifyCommand = Record<string, any>;
+
interface SmsLoginCommand {
/** 鎵嬫満鍙风爜 */
phoneNumber?: string;
diff --git a/src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue b/src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue
index b5d4e92..d69605a 100644
--- a/src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue
+++ b/src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue
@@ -68,7 +68,7 @@
</ProFormItemV2>
</ProFormColItem>
<ProFormColItem :span="8">
- <ProFormItemV2 label="鎵�灞炶涓�:" prop="industryTypeId">
+ <ProFormItemV2 label="鎵�灞炶涓�:" prop="industryTypeCode">
<ProFormSelect
v-model="form.industryTypeCode"
placeholder="璇烽�夋嫨鎵�灞炶涓�"
@@ -248,8 +248,6 @@
password: '',
});
-console.log('form: ', form);
-
const { isLoading } = useQuery({
queryKey: ['enterpriseServices/getEnterprise', id],
queryFn: async () => {
@@ -266,7 +264,7 @@
form.legalPerson = data.legalPerson;
form.legalIdentity = data.legalIdentity;
form.societyCreditCode = data.societyCreditCode;
- form.industryTypeCode = data.industryTypeCode;
+ form.industryTypeCode = data.industryTypeCode ?? '';
form.mainBusiness = data.mainBusiness;
form.contacts = data.contacts;
form.contactPhoneNumber = data.contactPhoneNumber;
diff --git a/src/views/EnterpriseManage/components/ConfigureDialog.vue b/src/views/EnterpriseManage/components/ConfigureDialog.vue
index ad4c081..ae35d49 100644
--- a/src/views/EnterpriseManage/components/ConfigureDialog.vue
+++ b/src/views/EnterpriseManage/components/ConfigureDialog.vue
@@ -13,9 +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">
+ <el-tab-pane lazy :name="EnterpriseConfigureType.Wechat">
<WechatConfigureView :id="form.id" ref="wechatConfigureViewRef" />
- </el-tab-pane> -->
+ </el-tab-pane>
<el-tab-pane lazy :name="EnterpriseConfigureType.Electronic">
<ElectronicConfigureView :id="form.id" ref="electronicConfigureViewRef" />
</el-tab-pane>
@@ -87,10 +87,9 @@
res = await electronicConfigureViewRef.value?.onConfirm?.();
} else if (form.value.enterpriseConfigureType === EnterpriseConfigureType.ShortMessage) {
res = await shortMessageConfigureViewRef.value?.onConfirm?.();
+ } else if (form.value.enterpriseConfigureType === EnterpriseConfigureType.Wechat) {
+ res = await wechatConfigureViewRef.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
index 24c7f4d..92ed870 100644
--- a/src/views/EnterpriseManage/components/WechatConfigureView.vue
+++ b/src/views/EnterpriseManage/components/WechatConfigureView.vue
@@ -1,6 +1,6 @@
<template>
<LoadingLayout :loading="isLoading">
- <ProForm :model="form" ref="dialogForm" label-width="120px">
+ <ProForm :model="form" ref="dialogForm" label-width="130px">
<ProFormItemV2
label="鑱旂郴浜哄鍚�:"
prop="name"
@@ -14,6 +14,23 @@
:checkRules="[{ message: '璇烽�夋嫨鑱旂郴浜虹被鍨�' }]"
>
<ProFormRadio v-model.trim="form.name" :value-enum="[]" button-style />
+ </ProFormItemV2>
+ <ProFormItemV2
+ label="涓氬姟鍔炵悊鎺堟潈鍑�:"
+ prop="url"
+ :check-rules="[{ type: 'upload', message: '璇蜂笂浼犱笟鍔″姙鐞嗘巿鏉冨嚱' }]"
+ >
+ <div style="display: flex">
+ <ProFormUpload
+ v-model:file-url="form.url"
+ :limit="1"
+ :limitFileSize="10"
+ accept="png,jpg,jpeg,pdf"
+ ></ProFormUpload>
+ <el-button style="margin-left: 10px" type="primary" link @click="downloadTemplate"
+ >妯℃澘涓嬭浇</el-button
+ >
+ </div>
</ProFormItemV2>
<ProFormItemV2
label="鎵嬫満鍙�:"
@@ -33,12 +50,13 @@
<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 label="鍟嗘埛绠�绉�:" prop="name" :checkRules="[{ message: '璇疯緭鍏ュ晢鎴风畝绉�' }]">
+ <ProFormText
+ :maxlength="64"
+ show-word-limit
+ v-model.trim="form.name"
+ placeholder="璇疯緭鍏ュ晢鎴风畝绉�"
+ />
</ProFormItemV2>
<ProFormItemV2
label="瀹㈡湇鐢佃瘽:"
@@ -79,17 +97,13 @@
<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 label="寮�鎴烽摱琛�:" prop="name" :checkRules="[{ message: '璇疯緭鍏ュ紑鎴烽摱琛�' }]">
+ <ProFormText v-model.trim="form.name" placeholder="璇疯緭鍏ュ紑鎴烽摱琛�" />
</ProFormItemV2>
<ProFormItemV2
label="閾惰璐﹀彿:"
prop="name"
- :checkRules="[{ type: 'tel', message: '璇疯緭鍏ラ摱琛岃处鍙�' }]"
+ :checkRules="[{ message: '璇疯緭鍏ラ摱琛岃处鍙�', type: 'bankCard' }]"
>
<ProFormText v-model.trim="form.name" placeholder="璇疯緭鍏ラ摱琛岃处鍙�" />
</ProFormItemV2>
@@ -112,7 +126,7 @@
} from '@bole-core/components';
import * as enterpriseWalletServices from '@/services/api/enterpriseWallet';
import { useQuery } from '@tanstack/vue-query';
-import { convertWalletApiToFiles, convertWalletFilesToApi } from '@/utils';
+import { convertWalletApiToFiles, convertWalletFilesToApi, downloadFileByUrl } from '@/utils';
defineOptions({
name: 'WechatConfigureView',
@@ -167,6 +181,13 @@
} catch (error) {}
}
+function downloadTemplate() {
+ downloadFileByUrl(
+ 'https://parkmanagement.oss-cn-hangzhou.aliyuncs.com/FlexJob/temp/%E4%B8%9A%E5%8A%A1%E5%8A%9E%E7%90%86%E6%8E%88%E6%9D%83%E5%87%BD.png',
+ '涓氬姟鍔炵悊鎺堟潈鍑�'
+ );
+}
+
defineExpose({
onConfirm: enterpriseWalletExpandindirectCreate,
});
diff --git a/src/views/System/SmsSettingManage.vue b/src/views/System/SmsSettingManage.vue
new file mode 100644
index 0000000..08b5b50
--- /dev/null
+++ b/src/views/System/SmsSettingManage.vue
@@ -0,0 +1,215 @@
+<template>
+ <LoadingLayout :loading="isLoading">
+ <AppContainer>
+ <PageFormLayout>
+ <ProForm :model="form" ref="formRef" label-width="120px" :is-read="isRead">
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="鏄惁绂佺敤:" prop="isDisabled">
+ <ProFormRadio
+ v-model="form.isDisabled"
+ :value-enum="BooleanOptions"
+ :button-style="false"
+ ></ProFormRadio>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="甯﹀嚭鍙傛暟:" prop="withoutParams">
+ <ProFormRadio
+ v-model="form.withoutParams"
+ :value-enum="BooleanOptions"
+ :button-style="false"
+ ></ProFormRadio>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="姣忓垎閽熸渶澶ф暟閲�:" prop="minutelyMaxCount">
+ <ProFormInputNumber
+ :controls="false"
+ :min="0"
+ v-model="form.minutelyMaxCount"
+ placeholder="璇疯緭鍏�"
+ ></ProFormInputNumber>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="姣忓皬鏃舵渶澶ф暟閲�:" prop="hourlyMaxCount">
+ <ProFormInputNumber
+ :controls="false"
+ :min="0"
+ v-model="form.hourlyMaxCount"
+ placeholder="璇疯緭鍏�"
+ ></ProFormInputNumber>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="姣忓ぉ鏈�澶ф暟閲�:" prop="dailyMaxCount">
+ <ProFormInputNumber
+ :controls="false"
+ :min="0"
+ v-model="form.dailyMaxCount"
+ placeholder="璇疯緭鍏�"
+ ></ProFormInputNumber>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="閫氶亾閰嶇疆:" prop="accesses">
+ <div class="access-list">
+ <div class="access-item" v-for="(item, index) in form.accesses" :key="index">
+ <div class="access-item-label">
+ {{ EnumSmsAccessTextUseInSms[item.access] }}
+ </div>
+ <ProFormRadio
+ v-model="item.isDisabled"
+ :value-enum="BooleanOptions"
+ :button-style="false"
+ ></ProFormRadio>
+ <ProFormInputNumber
+ :controls="false"
+ :min="0"
+ v-model="item.sort"
+ placeholder="璇疯緭鍏�"
+ ></ProFormInputNumber>
+ </div>
+ </div>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ </ProForm>
+ <template #footer>
+ <el-button type="primary" v-if="isRead" @click="isRead = false">缂栬緫</el-button>
+ <el-button type="primary" v-else @click="handleConfirm">纭</el-button>
+ </template>
+ </PageFormLayout>
+ </AppContainer>
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+ LoadingLayout,
+ AppContainer,
+ PageFormLayout,
+ ProForm,
+ ProFormCol,
+ ProFormColItem,
+ ProFormItemV2,
+ ProFormInputNumber,
+ ProFormRadio,
+} from '@bole-core/components';
+import { useQuery } from '@tanstack/vue-query';
+import * as smsServices from '@/services/api/sms';
+import { BooleanOptions, EnumSmsAccessTextUseInSms } from '@/constants';
+import { FormInstance } from 'element-plus';
+import { Message } from '@bole-core/core';
+
+defineOptions({
+ name: 'SmsSettingManage',
+});
+
+const form = reactive({
+ isDisabled: false,
+ withoutParams: false,
+ minutelyMaxCount: 0,
+ hourlyMaxCount: 0,
+ dailyMaxCount: 0,
+ accesses: [] as API.SaveSmsSettingCommandAccess[],
+});
+
+const isRead = ref(true);
+
+const { isLoading } = useQuery({
+ queryKey: ['smsServices/getSmsSetting'],
+ queryFn: async () => {
+ return await smsServices.getSmsSetting(
+ {},
+ {
+ showLoading: false,
+ }
+ );
+ },
+ placeholderData: () => ({} as API.GetSmsSettingQueryResult),
+ onSuccess(data) {
+ form.isDisabled = data.isDisabled;
+ form.withoutParams = data.withoutParams;
+ form.minutelyMaxCount = data.minutelyMaxCount;
+ form.hourlyMaxCount = data.hourlyMaxCount;
+ form.dailyMaxCount = data.dailyMaxCount;
+ form.accesses = data.accesses;
+ },
+});
+
+const formRef = ref<FormInstance>();
+
+function handleConfirm() {
+ if (!formRef.value) return;
+ formRef.value.validate((valid) => {
+ if (valid) {
+ submit();
+ } else {
+ return;
+ }
+ });
+}
+
+async function submit() {
+ try {
+ let params: API.SaveSmsSettingCommand = {
+ isDisabled: form.isDisabled,
+ withoutParams: form.withoutParams,
+ minutelyMaxCount: form.minutelyMaxCount,
+ hourlyMaxCount: form.hourlyMaxCount,
+ dailyMaxCount: form.dailyMaxCount,
+ accesses: form.accesses,
+ };
+ let res = await smsServices.saveSmsSetting(params);
+ if (res) {
+ Message.successMessage('鎿嶄綔鎴愬姛');
+ isRead.value = true;
+ }
+ } catch (error) {}
+}
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+
+.access-list {
+ flex: 1;
+ min-width: 0;
+
+ :deep() {
+ .el-form-item__content {
+ flex-direction: column;
+ align-items: flex-start;
+ }
+ }
+}
+
+.access-item {
+ display: flex;
+ align-items: center;
+ margin-bottom: 10px;
+
+ .access-item-label {
+ margin-right: 20px;
+ word-break: keep-all;
+ }
+
+ :deep() {
+ .el-radio-group {
+ margin-right: 20px;
+ }
+ }
+}
+</style>
diff --git a/src/views/TraceIdLogManage/DbAuditLogs.vue b/src/views/TraceIdLogManage/DbAuditLogs.vue
new file mode 100644
index 0000000..9b62f3a
--- /dev/null
+++ b/src/views/TraceIdLogManage/DbAuditLogs.vue
@@ -0,0 +1,230 @@
+<template>
+ <LoadingLayout :loading="state.loading">
+ <AppContainer>
+ <ProTableQueryFilterBar @on-reset="reset">
+ <template #query>
+ <QueryFilterItem tip-content="鎿嶄綔">
+ <FieldRadio
+ v-model="extraParamState.operate"
+ :value-enum="EnumDbAuditOperateText"
+ buttonStyle
+ showAllBtn
+ :all-btn-value="null"
+ @change="getList()"
+ />
+ </QueryFilterItem>
+ <QueryFilterItem tip-content="鍒涘缓鏃堕棿">
+ <FieldDatePicker
+ v-model="extraParamState.createdTime"
+ type="daterange"
+ range-separator="~"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ clearable
+ @change="getList()"
+ ></FieldDatePicker>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.createdUser"
+ style="width: 260px"
+ placeholder="鎿嶄綔浜篶reatedUser"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.traceId"
+ style="width: 260px"
+ placeholder="璺熻釜Id(traceId)"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.tableName"
+ style="width: 260px"
+ placeholder="琛ㄥ悕tableName"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.primaryKey"
+ style="width: 260px"
+ placeholder="涓婚敭primaryKey"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.oldValues"
+ style="width: 260px"
+ placeholder="鏃у�紀ldValues"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.newValues"
+ style="width: 260px"
+ placeholder="鏂板�糿ewValues"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ </template>
+ </ProTableQueryFilterBar>
+ <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
+ <template #oldValues="{ row }">
+ <el-button
+ v-if="row.oldValues"
+ type="primary"
+ link
+ @click="handleAdd({ json: { oldValues: JSON.parse(row.oldValues) } })"
+ >鏌ョ湅</el-button
+ >
+ </template>
+ <template #newValues="{ row }">
+ <el-button
+ v-if="row.newValues"
+ type="primary"
+ link
+ @click="handleAdd({ json: { newValues: JSON.parse(row.newValues) } })"
+ >鏌ョ湅</el-button
+ >
+ </template>
+ <template #createdUser="{ row }">
+ <el-button
+ v-if="row.createdUser"
+ type="primary"
+ link
+ @click="
+ handleAdd({ json: { createdUser: JSON.parse(JSON.stringify(row.createdUser)) } })
+ "
+ >鏌ョ湅</el-button
+ >
+ </template>
+ </ProTableV2>
+ <JsonViewerDialog v-bind="dialogProps" />
+ </AppContainer>
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+ ProTableQueryFilterBar,
+ SearchInput,
+ LoadingLayout,
+ AppContainer,
+ QueryFilterItem,
+ useTable,
+ ProTableV2,
+ FieldRadio,
+ FieldDatePicker,
+ useFormDialog,
+} from '@bole-core/components';
+import { EnumDbAuditOperateText } from '@/constants';
+import * as logRecordsServices from '@/services/api/logRecords';
+import { ModelValueType } from 'element-plus';
+import { format } from '@/utils';
+import JsonViewerDialog from './components/JsonViewerDialog.vue';
+
+defineOptions({
+ name: 'DbAuditLogs',
+});
+
+const operationBtnMap: Record<string, OperationBtnType> = {
+ detailBtn: { emits: { onClick: (role) => openDialog(role) } },
+};
+
+const { column, operationBtns } = useAccess({
+ operationBtnMap,
+});
+
+const BaseState = {
+ loading: true,
+};
+
+const state = reactive({ ...BaseState });
+
+onMounted(async () => {
+ await getList();
+ state.loading = false;
+});
+
+const {
+ getDataSource: getList,
+ proTableProps,
+ paginationState,
+ extraParamState,
+ reset,
+} = useTable(
+ async ({ pageIndex, pageSize }, extraParamState) => {
+ try {
+ let params: API.GetDbAuditLogsQuery = {
+ pageModel: {
+ rows: pageSize,
+ page: pageIndex,
+ // orderInput: extraParamState.orderInput,
+ },
+ createdTimeBegin: format(extraParamState.createdTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+ createdTimeEnd: format(extraParamState.createdTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+ createdUser: extraParamState.createdUser,
+ traceId: extraParamState.traceId,
+ tableName: extraParamState.tableName,
+ primaryKey: extraParamState.primaryKey,
+ operate: extraParamState.operate,
+ oldValues: extraParamState.oldValues,
+ newValues: extraParamState.newValues,
+ };
+ let res = await logRecordsServices.getDbAuditLogs(params, {
+ showLoading: !state.loading,
+ });
+ return res;
+ } catch (error) {}
+ },
+ {
+ defaultExtraParams: {
+ createdUser: '',
+ traceId: '',
+ operate: '' as any as EnumDbAuditOperate,
+ tableName: '',
+ primaryKey: '',
+ oldValues: '',
+ newValues: '',
+ createdTime: [] as unknown as ModelValueType,
+ orderInput: [{ property: 'createdTime', order: EnumPagedListOrder.Desc }],
+ },
+ columnsRenderProps: {
+ createdTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
+ operate: { type: 'enum', valueEnum: EnumDbAuditOperateText },
+ },
+ }
+);
+
+const { dialogProps, handleAdd } = useFormDialog({
+ defaultFormParams: {
+ json: null,
+ },
+});
+
+function openDialog(row: API.GetDbAuditLogsQueryResultItem) {
+ handleAdd({
+ json: {
+ oldValues: JSON.parse(row.oldValues),
+ newValues: JSON.parse(row.newValues),
+ createdUser: JSON.parse(JSON.stringify(row.createdUser)),
+ },
+ });
+}
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/views/TraceIdLogManage/ExceptionLogs.vue b/src/views/TraceIdLogManage/ExceptionLogs.vue
new file mode 100644
index 0000000..b6e0c69
--- /dev/null
+++ b/src/views/TraceIdLogManage/ExceptionLogs.vue
@@ -0,0 +1,185 @@
+<template>
+ <LoadingLayout :loading="state.loading">
+ <AppContainer>
+ <ProTableQueryFilterBar @on-reset="reset">
+ <template #query>
+ <QueryFilterItem tip-content="鍒涘缓鏃堕棿">
+ <FieldDatePicker
+ v-model="extraParamState.createdTime"
+ type="daterange"
+ range-separator="~"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ clearable
+ @change="getList()"
+ ></FieldDatePicker>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.createdUser"
+ style="width: 260px"
+ placeholder="鎿嶄綔浜篶reatedUser"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.traceId"
+ style="width: 260px"
+ placeholder="璺熻釜Id(traceId)"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.type"
+ style="width: 260px"
+ placeholder="绫诲瀷type"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.code"
+ style="width: 260px"
+ placeholder="浠g爜code"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.message"
+ style="width: 260px"
+ placeholder="娑堟伅message"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ </template>
+ </ProTableQueryFilterBar>
+ <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
+ <template #createdUser="{ row }">
+ <el-button
+ v-if="row.createdUser"
+ type="primary"
+ link
+ @click="
+ handleAdd({ json: { createdUser: JSON.parse(JSON.stringify(row.createdUser)) } })
+ "
+ >鏌ョ湅</el-button
+ >
+ </template>
+ </ProTableV2>
+ <JsonViewerDialog v-bind="dialogProps" />
+ </AppContainer>
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+ ProTableQueryFilterBar,
+ SearchInput,
+ LoadingLayout,
+ AppContainer,
+ QueryFilterItem,
+ useTable,
+ ProTableV2,
+ FieldRadio,
+ FieldDatePicker,
+ useFormDialog,
+} from '@bole-core/components';
+import * as logRecordsServices from '@/services/api/logRecords';
+import { ModelValueType } from 'element-plus';
+import { format } from '@/utils';
+import JsonViewerDialog from './components/JsonViewerDialog.vue';
+
+defineOptions({
+ name: 'ExceptionLogs',
+});
+
+const operationBtnMap: Record<string, OperationBtnType> = {
+ detailBtn: { emits: { onClick: (role) => openDialog(role) } },
+};
+
+const { column, operationBtns } = useAccess({
+ operationBtnMap,
+});
+
+const BaseState = {
+ loading: true,
+};
+
+const state = reactive({ ...BaseState });
+
+onMounted(async () => {
+ await getList();
+ state.loading = false;
+});
+
+const {
+ getDataSource: getList,
+ proTableProps,
+ paginationState,
+ extraParamState,
+ reset,
+} = useTable(
+ async ({ pageIndex, pageSize }, extraParamState) => {
+ try {
+ let params: API.GetExceptionLogsQuery = {
+ pageModel: {
+ rows: pageSize,
+ page: pageIndex,
+ // orderInput: extraParamState.orderInput,
+ },
+ createdTimeBegin: format(extraParamState.createdTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+ createdTimeEnd: format(extraParamState.createdTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+ createdUser: extraParamState.createdUser,
+ traceId: extraParamState.traceId,
+ type: extraParamState.type,
+ code: extraParamState.code,
+ message: extraParamState.message,
+ };
+ let res = await logRecordsServices.getExceptionLogs(params, {
+ showLoading: !state.loading,
+ });
+ return res;
+ } catch (error) {}
+ },
+ {
+ defaultExtraParams: {
+ createdUser: '',
+ traceId: '',
+ type: '',
+ code: '',
+ message: '',
+ createdTime: [] as unknown as ModelValueType,
+ orderInput: [{ property: 'createdTime', order: EnumPagedListOrder.Desc }],
+ },
+ columnsRenderProps: {
+ createdTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
+ },
+ }
+);
+
+const { dialogProps, handleAdd } = useFormDialog({
+ defaultFormParams: {
+ json: null,
+ },
+});
+
+function openDialog(row: API.GetResourceLogsQueryResultItem) {
+ handleAdd({
+ json: {
+ createdUser: JSON.parse(JSON.stringify(row.createdUser)),
+ },
+ });
+}
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/views/TraceIdLogManage/ResourceLogs.vue b/src/views/TraceIdLogManage/ResourceLogs.vue
new file mode 100644
index 0000000..ff92f5e
--- /dev/null
+++ b/src/views/TraceIdLogManage/ResourceLogs.vue
@@ -0,0 +1,281 @@
+<template>
+ <LoadingLayout :loading="state.loading">
+ <AppContainer>
+ <ProTableQueryFilterBar @on-reset="reset">
+ <template #query>
+ <QueryFilterItem tip-content="鏄惁鎴愬姛">
+ <FieldRadio
+ v-model="extraParamState.isSuccess"
+ :value-enum="[
+ { label: '鎴愬姛', value: true },
+ { label: '澶辫触', value: false },
+ ]"
+ buttonStyle
+ showAllBtn
+ :all-btn-value="null"
+ @change="getList()"
+ />
+ </QueryFilterItem>
+ <QueryFilterItem tip-content="鍒涘缓鏃堕棿">
+ <FieldDatePicker
+ v-model="extraParamState.createdTime"
+ type="daterange"
+ range-separator="~"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ clearable
+ @change="getList()"
+ ></FieldDatePicker>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.createdUser"
+ style="width: 260px"
+ placeholder="鎿嶄綔浜篶reatedUser"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.traceId"
+ style="width: 260px"
+ placeholder="璺熻釜Id(traceId)"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.domain"
+ style="width: 260px"
+ placeholder="鍩熷悕domain"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.path"
+ style="width: 260px"
+ placeholder="鍦板潃path"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.request"
+ style="width: 260px"
+ placeholder="璇锋眰鍙傛暟request"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.response"
+ style="width: 260px"
+ placeholder="鍝嶅簲缁撴灉response"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.clientIpAddress"
+ style="width: 260px"
+ placeholder="瀹㈡埛绔疘P鍦板潃clientIpAddress"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.elapsedMillisecondsMin"
+ style="width: 260px"
+ placeholder="鏈�灏忚�楁椂姣鏁癳lapsedMillisecondsMin"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ </template>
+ </ProTableQueryFilterBar>
+ <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
+ <template #requestHeaders="{ row }">
+ <el-button
+ v-if="row.requestHeaders"
+ type="primary"
+ link
+ @click="handleAdd({ json: { requestHeaders: JSON.parse(row.requestHeaders) } })"
+ >鏌ョ湅</el-button
+ >
+ </template>
+ <template #request="{ row }">
+ <el-button
+ v-if="row.request"
+ type="primary"
+ link
+ @click="handleAdd({ json: { request: JSON.parse(row.request) } })"
+ >鏌ョ湅</el-button
+ >
+ </template>
+ <template #responseHeaders="{ row }">
+ <el-button
+ v-if="row.responseHeaders"
+ type="primary"
+ link
+ @click="handleAdd({ json: { responseHeaders: JSON.parse(row.responseHeaders) } })"
+ >鏌ョ湅</el-button
+ >
+ </template>
+ <template #response="{ row }">
+ <el-button
+ v-if="row.response"
+ type="primary"
+ link
+ @click="handleAdd({ json: { response: JSON.parse(row.response) } })"
+ >鏌ョ湅</el-button
+ >
+ </template>
+ <template #createdUser="{ row }">
+ <el-button
+ v-if="row.createdUser"
+ type="primary"
+ link
+ @click="
+ handleAdd({ json: { createdUser: JSON.parse(JSON.stringify(row.createdUser)) } })
+ "
+ >鏌ョ湅</el-button
+ >
+ </template>
+ </ProTableV2>
+ <JsonViewerDialog v-bind="dialogProps" />
+ </AppContainer>
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+ ProTableQueryFilterBar,
+ SearchInput,
+ LoadingLayout,
+ AppContainer,
+ QueryFilterItem,
+ useTable,
+ ProTableV2,
+ FieldRadio,
+ FieldDatePicker,
+ useFormDialog,
+} from '@bole-core/components';
+import * as logRecordsServices from '@/services/api/logRecords';
+import { ModelValueType } from 'element-plus';
+import { format } from '@/utils';
+import JsonViewerDialog from './components/JsonViewerDialog.vue';
+
+defineOptions({
+ name: 'ResourceLogs',
+});
+
+const operationBtnMap: Record<string, OperationBtnType> = {
+ detailBtn: { emits: { onClick: (role) => openDialog(role) } },
+};
+
+const { column, operationBtns } = useAccess({
+ operationBtnMap,
+});
+
+const BaseState = {
+ loading: true,
+};
+
+const state = reactive({ ...BaseState });
+
+onMounted(async () => {
+ await getList();
+ state.loading = false;
+});
+
+const {
+ getDataSource: getList,
+ proTableProps,
+ paginationState,
+ extraParamState,
+ reset,
+} = useTable(
+ async ({ pageIndex, pageSize }, extraParamState) => {
+ try {
+ let params: API.GetResourceLogsQuery = {
+ pageModel: {
+ rows: pageSize,
+ page: pageIndex,
+ // orderInput: extraParamState.orderInput,
+ },
+ createdUser: extraParamState.createdUser,
+ createdTimeBegin: format(extraParamState.createdTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+ createdTimeEnd: format(extraParamState.createdTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+ traceId: extraParamState.traceId,
+ method: extraParamState.method,
+ domain: extraParamState.domain,
+ path: extraParamState.path,
+ request: extraParamState.request,
+ response: extraParamState.response,
+ isSuccess: extraParamState.isSuccess,
+ clientIpAddress: extraParamState.clientIpAddress,
+ elapsedMillisecondsMin: extraParamState.elapsedMillisecondsMin,
+ };
+ let res = await logRecordsServices.getResourceLogs(params, {
+ showLoading: !state.loading,
+ });
+ return res;
+ } catch (error) {}
+ },
+ {
+ defaultExtraParams: {
+ createdUser: '',
+ traceId: '',
+ method: '' as any as EnumResourceMethod,
+ domain: '',
+ path: '',
+ request: '',
+ response: '',
+ isSuccess: null as any as boolean,
+ clientIpAddress: '',
+ elapsedMillisecondsMin: null,
+ createdTime: [] as unknown as ModelValueType,
+ orderInput: [{ property: 'createdTime', order: EnumPagedListOrder.Desc }],
+ },
+ columnsRenderProps: {
+ createdTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
+ method: { type: 'enum', valueEnum: EnumResourceMethodText },
+ isSuccess: {
+ formatter: (row: API.GetResourceLogsQueryResultItem) => {
+ return row.isSuccess ? '鏄�' : '鍚�';
+ },
+ },
+ },
+ }
+);
+
+const { dialogProps, handleAdd } = useFormDialog({
+ defaultFormParams: {
+ json: null,
+ },
+});
+
+function openDialog(row: API.GetResourceLogsQueryResultItem) {
+ handleAdd({
+ json: {
+ requestHeaders: JSON.parse(row.requestHeaders),
+ request: JSON.parse(row.request),
+ responseHeaders: JSON.parse(row.responseHeaders),
+ response: JSON.parse(row.response),
+ createdUser: JSON.parse(JSON.stringify(row.createdUser)),
+ },
+ });
+}
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/views/TraceIdLogManage/ThreeResourceLogs.vue b/src/views/TraceIdLogManage/ThreeResourceLogs.vue
new file mode 100644
index 0000000..0f2115a
--- /dev/null
+++ b/src/views/TraceIdLogManage/ThreeResourceLogs.vue
@@ -0,0 +1,281 @@
+<template>
+ <LoadingLayout :loading="state.loading">
+ <AppContainer>
+ <ProTableQueryFilterBar @on-reset="reset">
+ <template #query>
+ <QueryFilterItem tip-content="鏄惁鎴愬姛">
+ <FieldRadio
+ v-model="extraParamState.isSuccess"
+ :value-enum="[
+ { label: '鎴愬姛', value: true },
+ { label: '澶辫触', value: false },
+ ]"
+ buttonStyle
+ showAllBtn
+ :all-btn-value="null"
+ @change="getList()"
+ />
+ </QueryFilterItem>
+ <QueryFilterItem tip-content="鍒涘缓鏃堕棿">
+ <FieldDatePicker
+ v-model="extraParamState.createdTime"
+ type="daterange"
+ range-separator="~"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ clearable
+ @change="getList()"
+ ></FieldDatePicker>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.createdUser"
+ style="width: 260px"
+ placeholder="鎿嶄綔浜篶reatedUser"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.traceId"
+ style="width: 260px"
+ placeholder="璺熻釜Id(traceId)"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.domain"
+ style="width: 260px"
+ placeholder="鍩熷悕domain"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.path"
+ style="width: 260px"
+ placeholder="鍦板潃path"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.request"
+ style="width: 260px"
+ placeholder="璇锋眰鍙傛暟request"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.response"
+ style="width: 260px"
+ placeholder="鍝嶅簲缁撴灉response"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.clientIpAddress"
+ style="width: 260px"
+ placeholder="瀹㈡埛绔疘P鍦板潃clientIpAddress"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.elapsedMillisecondsMin"
+ style="width: 260px"
+ placeholder="鏈�灏忚�楁椂姣鏁癳lapsedMillisecondsMin"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ </template>
+ </ProTableQueryFilterBar>
+ <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
+ <template #requestHeaders="{ row }">
+ <el-button
+ v-if="row.requestHeaders"
+ type="primary"
+ link
+ @click="handleAdd({ json: { requestHeaders: JSON.parse(row.requestHeaders) } })"
+ >鏌ョ湅</el-button
+ >
+ </template>
+ <template #request="{ row }">
+ <el-button
+ v-if="row.request"
+ type="primary"
+ link
+ @click="handleAdd({ json: { request: JSON.parse(row.request) } })"
+ >鏌ョ湅</el-button
+ >
+ </template>
+ <template #responseHeaders="{ row }">
+ <el-button
+ v-if="row.responseHeaders"
+ type="primary"
+ link
+ @click="handleAdd({ json: { responseHeaders: JSON.parse(row.responseHeaders) } })"
+ >鏌ョ湅</el-button
+ >
+ </template>
+ <template #response="{ row }">
+ <el-button
+ v-if="row.response"
+ type="primary"
+ link
+ @click="handleAdd({ json: { response: JSON.parse(row.response) } })"
+ >鏌ョ湅</el-button
+ >
+ </template>
+ <template #createdUser="{ row }">
+ <el-button
+ v-if="row.createdUser"
+ type="primary"
+ link
+ @click="
+ handleAdd({ json: { createdUser: JSON.parse(JSON.stringify(row.createdUser)) } })
+ "
+ >鏌ョ湅</el-button
+ >
+ </template>
+ </ProTableV2>
+ <JsonViewerDialog v-bind="dialogProps" />
+ </AppContainer>
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+ ProTableQueryFilterBar,
+ SearchInput,
+ LoadingLayout,
+ AppContainer,
+ QueryFilterItem,
+ useTable,
+ ProTableV2,
+ FieldRadio,
+ FieldDatePicker,
+ useFormDialog,
+} from '@bole-core/components';
+import * as logRecordsServices from '@/services/api/logRecords';
+import { ModelValueType } from 'element-plus';
+import { format } from '@/utils';
+import JsonViewerDialog from './components/JsonViewerDialog.vue';
+
+defineOptions({
+ name: 'ThreeResourceLogs',
+});
+
+const operationBtnMap: Record<string, OperationBtnType> = {
+ detailBtn: { emits: { onClick: (role) => openDialog(role) } },
+};
+
+const { column, operationBtns } = useAccess({
+ operationBtnMap,
+});
+
+const BaseState = {
+ loading: true,
+};
+
+const state = reactive({ ...BaseState });
+
+onMounted(async () => {
+ await getList();
+ state.loading = false;
+});
+
+const {
+ getDataSource: getList,
+ proTableProps,
+ paginationState,
+ extraParamState,
+ reset,
+} = useTable(
+ async ({ pageIndex, pageSize }, extraParamState) => {
+ try {
+ let params: API.GetThreeResourceLogsQuery = {
+ pageModel: {
+ rows: pageSize,
+ page: pageIndex,
+ // orderInput: extraParamState.orderInput,
+ },
+ createdTimeBegin: format(extraParamState.createdTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+ createdTimeEnd: format(extraParamState.createdTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+ createdUser: extraParamState.createdUser,
+ traceId: extraParamState.traceId,
+ method: extraParamState.method,
+ domain: extraParamState.domain,
+ path: extraParamState.path,
+ request: extraParamState.request,
+ response: extraParamState.response,
+ isSuccess: extraParamState.isSuccess,
+ clientIpAddress: extraParamState.clientIpAddress,
+ elapsedMillisecondsMin: extraParamState.elapsedMillisecondsMin,
+ };
+ let res = await logRecordsServices.getThreeResourceLogs(params, {
+ showLoading: !state.loading,
+ });
+ return res;
+ } catch (error) {}
+ },
+ {
+ defaultExtraParams: {
+ createdUser: '',
+ traceId: '',
+ method: '' as any as EnumResourceMethod,
+ domain: '',
+ path: '',
+ request: '',
+ response: '',
+ isSuccess: null as any as boolean,
+ clientIpAddress: '',
+ elapsedMillisecondsMin: null,
+ createdTime: [] as unknown as ModelValueType,
+ orderInput: [{ property: 'createdTime', order: EnumPagedListOrder.Desc }],
+ },
+ columnsRenderProps: {
+ createdTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
+ method: { type: 'enum', valueEnum: EnumResourceMethodText },
+ isSuccess: {
+ formatter: (row: API.GetResourceLogsQueryResultItem) => {
+ return row.isSuccess ? '鏄�' : '鍚�';
+ },
+ },
+ },
+ }
+);
+
+const { dialogProps, handleAdd } = useFormDialog({
+ defaultFormParams: {
+ json: null,
+ },
+});
+
+function openDialog(row: API.GetResourceLogsQueryResultItem) {
+ handleAdd({
+ json: {
+ requestHeaders: JSON.parse(row.requestHeaders),
+ request: JSON.parse(row.request),
+ responseHeaders: JSON.parse(row.responseHeaders),
+ response: JSON.parse(row.response),
+ createdUser: JSON.parse(JSON.stringify(row.createdUser)),
+ },
+ });
+}
+</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
index 5d6f420..4521b6a 100644
--- a/src/views/TraceIdLogManage/components/DbAuditLogsView.vue
+++ b/src/views/TraceIdLogManage/components/DbAuditLogsView.vue
@@ -1,44 +1,4 @@
<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> -->
<AppContainer>
<ProTableV2
:columns="columns"
@@ -47,12 +7,18 @@
:column-render-map="columnsRenderProps"
>
<template #oldValues="{ row }">
- <el-button type="primary" link @click="handleAdd({ json: JSON.stringify(row.oldValues) })"
+ <el-button
+ type="primary"
+ link
+ @click="handleAdd({ json: { oldValues: JSON.parse(row.oldValues) } })"
>鏌ョ湅</el-button
>
</template>
<template #newValues="{ row }">
- <el-button type="primary" link @click="handleAdd({ json: JSON.stringify(row.newValues) })"
+ <el-button
+ type="primary"
+ link
+ @click="handleAdd({ json: { newValues: JSON.parse(row.newValues) } })"
>鏌ョ湅</el-button
>
</template>
@@ -60,7 +26,7 @@
<el-button
type="primary"
link
- @click="handleAdd({ json: JSON.parse(JSON.stringify(row.createdUser)) })"
+ @click="handleAdd({ json: { createdUser: JSON.parse(JSON.stringify(row.createdUser)) } })"
>鏌ョ湅</el-button
>
</template>
@@ -76,6 +42,7 @@
defineColumns,
ProTableV2Props,
useFormDialog,
+ defineOperationBtns,
} from '@bole-core/components';
import JsonViewerDialog from './JsonViewerDialog.vue';
@@ -107,6 +74,18 @@
}))
);
+const operationBtns = defineOperationBtns([
+ {
+ data: {
+ enCode: 'detailBtn',
+ name: '鏌ョ湅',
+ },
+ emits: {
+ onClick: (role) => openDialog(role),
+ },
+ },
+]);
+
const columnsRenderProps: ProTableV2Props['columnRenderMap'] = {
operate: { type: 'enum', valueEnum: EnumDbAuditOperateText },
createdTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
@@ -117,6 +96,16 @@
json: null,
},
});
+
+function openDialog(row: API.GetDbAuditLogsQueryResultItem) {
+ handleAdd({
+ json: {
+ oldValues: JSON.parse(row.oldValues),
+ newValues: JSON.parse(row.newValues),
+ createdUser: JSON.parse(JSON.stringify(row.createdUser)),
+ },
+ });
+}
</script>
<style lang="scss" scoped>
diff --git a/src/views/TraceIdLogManage/components/ExceptionLogsView.vue b/src/views/TraceIdLogManage/components/ExceptionLogsView.vue
index 1181afd..6625456 100644
--- a/src/views/TraceIdLogManage/components/ExceptionLogsView.vue
+++ b/src/views/TraceIdLogManage/components/ExceptionLogsView.vue
@@ -1,31 +1,4 @@
<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> -->
<AppContainer>
<ProTableV2
:columns="columns"
diff --git a/src/views/TraceIdLogManage/components/JsonViewerDialog.vue b/src/views/TraceIdLogManage/components/JsonViewerDialog.vue
index 013001b..5346c74 100644
--- a/src/views/TraceIdLogManage/components/JsonViewerDialog.vue
+++ b/src/views/TraceIdLogManage/components/JsonViewerDialog.vue
@@ -1,12 +1,23 @@
<template>
<ProDialog title="鏌ョ湅" v-model="visible" destroy-on-close draggable>
- <json-viewer
- :copyable="true"
- :boxed="true"
- :preview-mode="true"
- :value="form.json"
- expanded
- ></json-viewer>
+ <ProForm :model="form" ref="dialogForm" label-width="120px">
+ <ProFormItemV2
+ v-for="(item, index) in jsonList"
+ :label="`${item}锛歚"
+ :key="index"
+ prop="electronSignAccesses"
+ required
+ >
+ <json-viewer
+ :copyable="true"
+ :boxed="true"
+ :preview-mode="true"
+ :value="form.json?.[item]"
+ expanded
+ ></json-viewer>
+ </ProFormItemV2>
+ </ProForm>
+
<template #footer>
<span class="dialog-footer">
<el-button @click="emit('onCancel')">鍙� 娑�</el-button>
@@ -17,7 +28,7 @@
</template>
<script setup lang="ts">
-import { ProDialog } from '@bole-core/components';
+import { ProDialog, ProForm, ProFormItemV2 } from '@bole-core/components';
import JsonViewer from 'vue-json-viewer';
defineOptions({
@@ -37,6 +48,10 @@
const form = defineModel<Form>('form');
+const jsonList = computed(() => {
+ return Object.keys(form.value.json);
+});
+
const emit = defineEmits<{
(e: 'onConfirm'): void;
(e: 'onCancel'): void;
diff --git a/src/views/TraceIdLogManage/components/ResourceLogsView.vue b/src/views/TraceIdLogManage/components/ResourceLogsView.vue
index 1c2096b..f7b9f3c 100644
--- a/src/views/TraceIdLogManage/components/ResourceLogsView.vue
+++ b/src/views/TraceIdLogManage/components/ResourceLogsView.vue
@@ -1,66 +1,4 @@
<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> -->
<AppContainer>
<ProTableV2
:columns="columns"
@@ -70,22 +8,34 @@
:column-render-map="columnsRenderProps"
>
<template #requestHeaders="{ row }">
- <el-button type="primary" link @click="handleAdd({ json: JSON.parse(row.requestHeaders) })"
+ <el-button
+ type="primary"
+ link
+ @click="handleAdd({ json: { requestHeaders: JSON.parse(row.requestHeaders) } })"
>鏌ョ湅</el-button
>
</template>
<template #request="{ row }">
- <el-button type="primary" link @click="handleAdd({ json: JSON.parse(row.request) })"
+ <el-button
+ type="primary"
+ link
+ @click="handleAdd({ json: { request: JSON.parse(row.request) } })"
>鏌ョ湅</el-button
>
</template>
<template #responseHeaders="{ row }">
- <el-button type="primary" link @click="handleAdd({ json: JSON.parse(row.responseHeaders) })"
+ <el-button
+ type="primary"
+ link
+ @click="handleAdd({ json: { responseHeaders: JSON.parse(row.responseHeaders) } })"
>鏌ョ湅</el-button
>
</template>
<template #response="{ row }">
- <el-button type="primary" link @click="handleAdd({ json: JSON.parse(row.response) })"
+ <el-button
+ type="primary"
+ link
+ @click="handleAdd({ json: { response: JSON.parse(row.response) } })"
>鏌ョ湅</el-button
>
</template>
@@ -93,7 +43,7 @@
<el-button
type="primary"
link
- @click="handleAdd({ json: JSON.parse(JSON.stringify(row.createdUser)) })"
+ @click="handleAdd({ json: { createdUser: JSON.parse(JSON.stringify(row.createdUser)) } })"
>鏌ョ湅</el-button
>
</template>
@@ -115,6 +65,7 @@
import * as logRecordsServices from '@/services/api/logRecords';
import { Message } from '@bole-core/core';
import JsonViewerDialog from './JsonViewerDialog.vue';
+import { request } from 'http';
defineOptions({
name: 'ResourceLogsView',
@@ -155,6 +106,15 @@
const operationBtns = defineOperationBtns([
{
data: {
+ enCode: 'detailBtn',
+ name: '鏌ョ湅',
+ },
+ emits: {
+ onClick: (role) => openDialog(role),
+ },
+ },
+ {
+ data: {
enCode: 'reSendBtn',
name: '閲嶆柊鍙戦��',
},
@@ -189,6 +149,18 @@
}
} catch (error) {}
}
+
+function openDialog(row: API.GetResourceLogsQueryResultItem) {
+ handleAdd({
+ json: {
+ requestHeaders: row.requestHeaders,
+ request: row.request,
+ responseHeaders: row.responseHeaders,
+ response: row.response,
+ createdUser: JSON.stringify(row.createdUser),
+ },
+ });
+}
</script>
<style lang="scss" scoped>
diff --git a/src/views/TraceIdLogManage/components/ThreeResourceLogsView.vue b/src/views/TraceIdLogManage/components/ThreeResourceLogsView.vue
index e650493..333817d 100644
--- a/src/views/TraceIdLogManage/components/ThreeResourceLogsView.vue
+++ b/src/views/TraceIdLogManage/components/ThreeResourceLogsView.vue
@@ -1,84 +1,40 @@
<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> -->
<AppContainer>
<ProTableV2
:columns="columns"
- :show-pagination="false"
+ :operationBtns="operationBtns"
:table-data="threeResourceLogs"
:column-render-map="columnsRenderProps"
>
<template #requestHeaders="{ row }">
- <el-button type="primary" link @click="handleAdd({ json: JSON.parse(row.requestHeaders) })"
+ <el-button
+ type="primary"
+ link
+ @click="handleAdd({ json: { requestHeaders: JSON.parse(row.requestHeaders) } })"
>鏌ョ湅</el-button
>
</template>
<template #request="{ row }">
- <el-button type="primary" link @click="handleAdd({ json: JSON.parse(row.request) })"
+ <el-button
+ type="primary"
+ link
+ @click="handleAdd({ json: { request: JSON.parse(row.request) } })"
>鏌ョ湅</el-button
>
</template>
<template #responseHeaders="{ row }">
- <el-button type="primary" link @click="handleAdd({ json: JSON.parse(row.responseHeaders) })"
+ <el-button
+ type="primary"
+ link
+ @click="handleAdd({ json: { responseHeaders: JSON.parse(row.responseHeaders) } })"
>鏌ョ湅</el-button
>
</template>
<template #response="{ row }">
- <el-button type="primary" link @click="handleAdd({ json: JSON.parse(row.response) })"
+ <el-button
+ type="primary"
+ link
+ @click="handleAdd({ json: { response: JSON.parse(row.response) } })"
>鏌ョ湅</el-button
>
</template>
@@ -86,7 +42,7 @@
<el-button
type="primary"
link
- @click="handleAdd({ json: JSON.parse(JSON.stringify(row.createdUser)) })"
+ @click="handleAdd({ json: { createdUser: JSON.parse(JSON.stringify(row.createdUser)) } })"
>鏌ョ湅</el-button
>
</template>
@@ -102,6 +58,7 @@
defineColumns,
ProTableV2Props,
useFormDialog,
+ defineOperationBtns,
} from '@bole-core/components';
import { EnumResourceMethodText } from '@/constants';
import JsonViewerDialog from './JsonViewerDialog.vue';
@@ -138,6 +95,18 @@
}))
);
+const operationBtns = defineOperationBtns([
+ {
+ data: {
+ enCode: 'detailBtn',
+ name: '鏌ョ湅',
+ },
+ emits: {
+ onClick: (role) => openDialog(role),
+ },
+ },
+]);
+
const columnsRenderProps: ProTableV2Props['columnRenderMap'] = {
method: { type: 'enum', valueEnum: EnumResourceMethodText },
isSuccess: {
@@ -153,4 +122,16 @@
json: null,
},
});
+
+function openDialog(row: API.GetResourceLogsQueryResultItem) {
+ handleAdd({
+ json: {
+ requestHeaders: JSON.parse(row.requestHeaders),
+ request: JSON.parse(row.request),
+ responseHeaders: JSON.parse(row.responseHeaders),
+ response: JSON.parse(row.response),
+ createdUser: JSON.parse(JSON.stringify(row.createdUser)),
+ },
+ });
+}
</script>
--
Gitblit v1.9.1