From 588f577a14b2a51663d43f3bf2f303862d65b932 Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期一, 29 九月 2025 09:15:53 +0800 Subject: [PATCH] feat: 短信 --- src/views/TraceIdLogManage/DbAuditLogs.vue | 230 +++++ .eslintrc-auto-import.json | 5 src/services/api/typings.d.ts | 548 ++++++++++++- src/views/TraceIdLogManage/components/ThreeResourceLogsView.vue | 105 +- src/views/EnterpriseManage/components/WechatConfigureView.vue | 16 src/views/TraceIdLogManage/components/ResourceLogsView.vue | 106 +- src/views/TraceIdLogManage/components/JsonViewerDialog.vue | 31 src/constants/enterprise.ts | 5 src/services/api/enterpriseWallet.ts | 12 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 | 6 src/views/TraceIdLogManage/ThreeResourceLogs.vue | 281 +++++++ src/views/TraceIdLogManage/ResourceLogs.vue | 281 +++++++ src/services/api/electronSign.ts | 21 auto-imports.d.ts | 12 src/constants/apiEnum.ts | 76 + src/views/TraceIdLogManage/ExceptionLogs.vue | 185 ++++ src/services/api/logRecords.ts | 39 + src/services/api/ocrUtils.ts | 12 22 files changed, 2,006 insertions(+), 324 deletions(-) diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json index e20962f..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, @@ -39,6 +40,7 @@ "EnumDbAuditOperateText": true, "EnumElectronSignAccess": true, "EnumElectronSignAccessText": true, + "EnumElectronSignVerifyType": true, "EnumEnterpriseCostStatus": true, "EnumEnterpriseCostType": true, "EnumEnterpriseRealMethod": true, @@ -52,6 +54,7 @@ "EnumEnterpriseWalletSignStatusText": true, "EnumEnterpriseWalletTransactionType": true, "EnumGetEnterpriseEmployeesQuerySignContractStatus": true, + "EnumLogLevel": true, "EnumMenuType": true, "EnumMenuVisitLevel": true, "EnumOcrAccess": true, @@ -78,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 3399137..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'] @@ -41,6 +42,7 @@ const EnumDbAuditOperateText: typeof import('./src/constants/apiEnumText')['EnumDbAuditOperateText'] const EnumElectronSignAccess: typeof import('./src/constants/apiEnum')['EnumElectronSignAccess'] const EnumElectronSignAccessText: typeof import('./src/constants/electronSign')['EnumElectronSignAccessText'] + const EnumElectronSignVerifyType: typeof import('./src/constants/apiEnum')['EnumElectronSignVerifyType'] const EnumEnterpriseCostStatus: typeof import('./src/constants/apiEnum')['EnumEnterpriseCostStatus'] const EnumEnterpriseCostType: typeof import('./src/constants/apiEnum')['EnumEnterpriseCostType'] const EnumEnterpriseRealMethod: typeof import('./src/constants/apiEnum')['EnumEnterpriseRealMethod'] @@ -55,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'] @@ -82,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'] @@ -271,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, 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' + 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' @@ -339,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']> @@ -351,6 +357,7 @@ readonly EnumDbAuditOperateText: UnwrapRef<typeof import('./src/constants/apiEnumText')['EnumDbAuditOperateText']> readonly EnumElectronSignAccess: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumElectronSignAccess']> readonly EnumElectronSignAccessText: UnwrapRef<typeof import('./src/constants/electronSign')['EnumElectronSignAccessText']> + readonly EnumElectronSignVerifyType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumElectronSignVerifyType']> readonly EnumEnterpriseCostStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseCostStatus']> readonly EnumEnterpriseCostType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseCostType']> readonly EnumEnterpriseRealMethod: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseRealMethod']> @@ -364,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']> @@ -390,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 3407d01..e869b1b 100644 --- a/src/constants/apiEnum.ts +++ b/src/constants/apiEnum.ts @@ -19,6 +19,8 @@ PcWeb = 10, /**寰俊灏忕▼搴� */ Wxmp = 20, + /**H5鐧诲綍 */ + H5 = 30, } /** 缂栧彿鍦板潃鍦烘櫙 */ @@ -27,6 +29,14 @@ InviteElectronSign = 1, /**绛剧害鍦板潃 */ ElectronSignUrl = 10, +} + +/** 鎺у埗鍙版棩蹇楅�氶亾 */ +export enum EnumConsoleLogAccess { + /**鍚庣 */ + Back = 10, + /**鍓嶇 */ + Front = 20, } /** 鍚堝悓鍒剁増鐘舵�� */ @@ -77,6 +87,14 @@ BestSign = 10, /**鏀粯瀹濅俊浠荤 */ AlipaySign = 20, +} + +/** 鐢靛瓙绛炬牎楠岀被鍨� */ +export enum EnumElectronSignVerifyType { + /**鐭俊 */ + SMS = 10, + /**浜鸿劯 */ + Face = 20, } /** 浼佷笟鐢ㄩ噺鎵h垂鐘舵�� */ @@ -189,6 +207,22 @@ Pass = 30, } +/** 鏃ュ織绾у埆 */ +export enum EnumLogLevel { + /**璺熻釜 */ + Trace = 10, + /**璋冭瘯 */ + Debug = 20, + /**淇℃伅 */ + Information = 30, + /**璀﹀憡 */ + Warning = 40, + /**閿欒 */ + Error = 50, + /**涓ラ噸 */ + Critical = 60, +} + /** 鑿滃崟绫诲瀷 */ export enum EnumMenuType { /**鑿滃崟 */ @@ -217,6 +251,8 @@ export enum EnumOcrAccess { /**鐧惧害 */ Baidu = 10, + /**涓婁笂绛� */ + BestSign = 20, } /** 鍒嗛〉鍒楄〃鎺掑簭 */ @@ -309,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, } /** 璧勬簮璇锋眰鏂瑰紡 */ @@ -375,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 f12b706..be49de0 100644 --- a/src/constants/enterprise.ts +++ b/src/constants/enterprise.ts @@ -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/electronSign.ts b/src/services/api/electronSign.ts index abd2700..8b63a80 100644 --- a/src/services/api/electronSign.ts +++ b/src/services/api/electronSign.ts @@ -166,8 +166,6 @@ method: 'GET', params: { ...params, - request: undefined, - ...params['request'], }, ...(options || {}), } @@ -179,14 +177,17 @@ body: API.PersonalUserFaceRealCommand, options?: API.RequestConfig ) { - return request<string>('/api/user/electronSign/personalUserFaceReal', { - method: 'POST', - headers: { - 'Content-Type': 'application/json-patch+json', - }, - data: body, - ...(options || {}), - }); + return request<API.PersonalUserFaceRealCommandResult>( + '/api/user/electronSign/personalUserFaceReal', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json-patch+json', + }, + data: body, + ...(options || {}), + } + ); } /** 涓汉涓夎绱犲疄鍚嶈璇� POST /api/user/electronSign/personalUserIdentity3Real */ diff --git a/src/services/api/enterpriseWallet.ts b/src/services/api/enterpriseWallet.ts index dc65418..3ccb9f2 100644 --- a/src/services/api/enterpriseWallet.ts +++ b/src/services/api/enterpriseWallet.ts @@ -330,15 +330,3 @@ } ); } - -/** 娴嬭瘯闃块噷鏀粯 POST /api/user/enterpriseWallet/testAliPay */ -export async function testAliPay(body: API.TestAliPayCommand, options?: API.RequestConfig) { - return request<string>('/api/user/enterpriseWallet/testAliPay', { - method: 'POST', - headers: { - 'Content-Type': 'application/json-patch+json', - }, - data: body, - ...(options || {}), - }); -} diff --git a/src/services/api/index.ts b/src/services/api/index.ts index 2d2b182..c27a0d6 100644 --- a/src/services/api/index.ts +++ b/src/services/api/index.ts @@ -5,10 +5,12 @@ 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'; import * as resource from './resource'; +import * as logRecords from './logRecords'; import * as dictionary from './dictionary'; import * as enterpriseWallet from './enterpriseWallet'; import * as codeUrl from './codeUrl'; @@ -18,17 +20,18 @@ import * as taskCheckReceive from './taskCheckReceive'; import * as taskUser from './taskUser'; import * as menu from './menu'; -import * as logRecords from './logRecords'; import * as fileUtils from './fileUtils'; import * as syncDatabase from './syncDatabase'; export default { enterpriseEmployee, user, role, + sms, ocrUtils, task, enterprise, resource, + logRecords, dictionary, enterpriseWallet, codeUrl, @@ -38,7 +41,6 @@ taskCheckReceive, taskUser, menu, - logRecords, fileUtils, syncDatabase, }; 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/ocrUtils.ts b/src/services/api/ocrUtils.ts index 75d1669..c342ddd 100644 --- a/src/services/api/ocrUtils.ts +++ b/src/services/api/ocrUtils.ts @@ -2,6 +2,18 @@ // @ts-ignore import { request } from '@/utils/request'; +/** 鏌ヨ閾惰鍗¤瘑鍒� POST /api/common/ocrUtils/getBankOcr */ +export async function getBankOcr(body: API.GetBankOcrCommand, options?: API.RequestConfig) { + return request<API.GetBankOcrCommandResult>('/api/common/ocrUtils/getBankOcr', { + method: 'POST', + headers: { + 'Content-Type': 'application/json-patch+json', + }, + data: body, + ...(options || {}), + }); +} + /** 鏂囧瓧璇嗗埆韬唤璇佽儗闈� POST /api/common/ocrUtils/getIdentityBackOcr */ export async function getIdentityBackOcr( body: API.GetIdentityBackOcrCommand, 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 93aa633..80e7e2c 100644 --- a/src/services/api/typings.d.ts +++ b/src/services/api/typings.d.ts @@ -161,6 +161,8 @@ } interface APIgetPersonalUserBankCardParams { + /** 鐏靛伐Id */ + enterpriseEmployeeId?: string; /** 閫氶亾 */ access?: EnumUserBankCardAccess; } @@ -173,8 +175,8 @@ } interface APIgetPersonalUserRealResultParams { - /** 鏌ヨ涓汉瀹炲悕缁撴灉 */ - request?: GetPersonalUserRealResultQuery; + /** 鐏靛伐Id */ + enterpriseEmployeeId?: string; } interface APIgetPersonalUserTransactionParams { @@ -550,6 +552,8 @@ PcWeb = 10, /**寰俊灏忕▼搴� */ Wxmp = 20, + /**H5鐧诲綍 */ + H5 = 30, } enum EnumCodeUrlScene { @@ -557,6 +561,13 @@ InviteElectronSign = 1, /**绛剧害鍦板潃 */ ElectronSignUrl = 10, + } + + enum EnumConsoleLogAccess { + /**鍚庣 */ + Back = 10, + /**鍓嶇 */ + Front = 20, } enum EnumContractTemplateStatus { @@ -601,6 +612,13 @@ BestSign = 10, /**鏀粯瀹濅俊浠荤 */ AlipaySign = 20, + } + + enum EnumElectronSignVerifyType { + /**鐭俊 */ + SMS = 10, + /**浜鸿劯 */ + Face = 20, } enum EnumEnterpriseCostStatus { @@ -703,6 +721,21 @@ Pass = 30, } + enum EnumLogLevel { + /**璺熻釜 */ + Trace = 10, + /**璋冭瘯 */ + Debug = 20, + /**淇℃伅 */ + Information = 30, + /**璀﹀憡 */ + Warning = 40, + /**閿欒 */ + Error = 50, + /**涓ラ噸 */ + Critical = 60, + } + enum EnumMenuType { /**鑿滃崟 */ Menu = 10, @@ -728,6 +761,8 @@ enum EnumOcrAccess { /**鐧惧害 */ Baidu = 10, + /**涓婁笂绛� */ + BestSign = 20, } enum EnumPagedListOrder { @@ -812,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 { @@ -874,8 +911,23 @@ } enum EnumSmsAccess { + /**鏃� */ + None = 0, /**闃块噷浜戠煭淇� */ AliyunSms = 10, + /**璇氱珛涓� */ + ChengLiYe = 20, + } + + enum EnumSmsStatus { + /**寰呭彂閫� */ + Wait = 0, + /**鍙戦�佷腑 */ + InProcess = 10, + /**鍙戦�佹垚鍔� */ + Success = 20, + /**鍙戦�佸け璐� */ + Fail = 30, } enum EnumTaskCheckReceiveStatus { @@ -1112,6 +1164,24 @@ timestamp?: number; } + interface FriendlyResultGetBankOcrCommandResult { + /** 璺熻釜Id */ + traceId?: string; + /** 鐘舵�佺爜 */ + code?: number; + /** 閿欒鐮� */ + errorCode?: string; + data?: GetBankOcrCommandResult; + /** 鎵ц鎴愬姛 */ + success?: boolean; + /** 閿欒淇℃伅 */ + msg?: any; + /** 闄勫姞鏁版嵁 */ + extras?: any; + /** 鏃堕棿鎴� */ + timestamp?: number; + } + interface FriendlyResultGetCheckReceiveTaskQueryResult { /** 璺熻釜Id */ traceId?: string; @@ -1192,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; /** 閿欒淇℃伅 */ @@ -1858,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; /** 閿欒淇℃伅 */ @@ -2604,6 +2728,24 @@ timestamp?: number; } + interface FriendlyResultPersonalUserFaceRealCommandResult { + /** 璺熻釜Id */ + traceId?: string; + /** 鐘舵�佺爜 */ + code?: number; + /** 閿欒鐮� */ + errorCode?: string; + data?: PersonalUserFaceRealCommandResult; + /** 鎵ц鎴愬姛 */ + success?: boolean; + /** 閿欒淇℃伅 */ + msg?: any; + /** 闄勫姞鏁版嵁 */ + extras?: any; + /** 鏃堕棿鎴� */ + timestamp?: number; + } + interface FriendlyResultRechargeEnterpriseWalletCommandResult { /** 璺熻釜Id */ traceId?: string; @@ -2706,7 +2848,7 @@ } interface GetArrangeTaskUsersQueryResultItem { - /** 浠诲姟浜哄憳Id */ + /** 鐏靛伐Id */ id?: string; /** 澶村儚 */ avatar?: string; @@ -2737,6 +2879,21 @@ /** 宸ヤ綔缁忛獙 */ workExperience?: string; arrangeStatus?: EnumTaskUserArrangeStatus; + } + + interface GetBankOcrCommand { + access?: EnumOcrAccess; + /** 鍦烘櫙 */ + scene?: string; + /** 閾炬帴鍦板潃 */ + url?: string; + /** 鏄惁涓轰簯瀛樺偍鐩稿鍦板潃 */ + isOssUrl?: boolean; + } + + interface GetBankOcrCommandResult { + /** 鍗″彿 */ + number?: string; } interface GetCheckReceiveTaskQuery { @@ -2935,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; @@ -3010,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; } @@ -3028,6 +3246,10 @@ } interface GetDbAuditLogsQueryResultItem { + /** Id */ + id?: string; + /** 璺熻釜Id */ + traceId?: string; /** 琛ㄥ悕 */ tableName?: string; /** 涓婚敭 */ @@ -3037,7 +3259,7 @@ oldValues?: string; /** 鏂板�� */ newValues?: string; - createdUser?: GetResourceLogsQueryResultItemCreatedUser; + createdUser?: GetLogsQueryResultItemCreatedUser; /** 鍒涘缓鏃堕棿 */ createdTime?: string; } @@ -3202,6 +3424,8 @@ enterpriseId?: string; /** 鍏抽敭瀛� */ keywords?: string; + /** 閫氶亾 */ + accesses?: EnumElectronSignAccess[]; status?: EnumContractTemplateStatus; /** 瀹㈡埛涓婁紶鏃堕棿-璧峰 */ createdTimeBegin?: string; @@ -3558,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; } @@ -3576,6 +3806,10 @@ } interface GetExceptionLogsQueryResultItem { + /** Id */ + id?: string; + /** 璺熻釜Id */ + traceId?: string; /** 绫诲瀷 */ type?: string; /** 浠g爜 */ @@ -3584,7 +3818,7 @@ message?: string; /** 鍫嗘爤璺熻釜 */ stackTrace?: string; - createdUser?: GetResourceLogsQueryResultItemCreatedUser; + createdUser?: GetLogsQueryResultItemCreatedUser; /** 鍒涘缓鏃堕棿 */ createdTime?: string; } @@ -3635,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 { @@ -3965,6 +4213,8 @@ interface GetPersonalUserBankCardQueryResult { access?: EnumUserBankCardAccess; + /** 閾惰鍗$収鐗囧湴鍧� */ + bankImageUrl?: string; /** 閾惰鍗″彿 */ code?: string; /** 鎵�灞為摱琛� */ @@ -4111,9 +4361,9 @@ signContractTime?: string; } - type GetPersonalUserRealResultQuery = Record<string, any>; - interface GetPersonalUserRealResultQueryResult { + /** 鐢ㄦ埛Id */ + id?: string; /** 鏄惁瀹炲悕 */ isReal?: boolean; /** 瀹炲悕鏃堕棿 */ @@ -4298,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; } @@ -4318,6 +4583,8 @@ interface GetResourceLogsQueryResultItem { /** Id */ id?: string; + /** 璺熻釜Id */ + traceId?: string; method?: EnumResourceMethod; /** 鍩熷悕 */ domain?: string; @@ -4341,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 { @@ -4576,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 { @@ -4861,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; } @@ -4881,6 +5232,8 @@ interface GetThreeResourceLogsQueryResultItem { /** Id */ id?: string; + /** 璺熻釜Id */ + traceId?: string; method?: EnumResourceMethod; /** 鍩熷悕 */ domain?: string; @@ -4898,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 { @@ -4926,6 +5265,8 @@ exceptionLogs?: GetExceptionLogsQueryResultItem[]; /** 鏁版嵁搴撳璁℃棩蹇� */ dbAuditLogs?: GetDbAuditLogsQueryResultItem[]; + /** 鎺у埗鍙版棩蹇� */ + consoleLogs?: GetConsoleLogsQueryResultItem[]; } interface GetUserInfoRolesQueryResultItem { @@ -5389,9 +5730,16 @@ id?: string; /** 閭�绾︾煭淇$紪鍙凤紙浜岄�変竴锛� */ smsCode?: string; + /** 鍚堝悓妯℃澘Id锛堢绾﹀伐鍏锋椂浣跨敤锛� */ + contractTemplateId?: string; + /** 绛剧害鏍¢獙绫诲瀷 */ + verifyTypes?: EnumElectronSignVerifyType[]; + /** 绛剧害瀹屾垚鍚庤皟鏁村湴鍧� */ + returnUrl?: string; } interface PersonalUserElectronSignCommandResult { + userSignContractStatus?: EnumTaskUserSignContractStatus; /** 绛剧讲鍚堝悓鐭摼鎺� */ signContractShortUrl?: string; /** 绛剧讲鍚堝悓闀块摼鎺� */ @@ -5407,6 +5755,24 @@ identityImg: string; /** 韬唤璇佸浗寰介潰 */ identityBackImg: string; + /** 浜鸿劯璇嗗埆鎴愬姛璋冩暣椤甸潰 */ + faceRealCallbackUrl?: string; + } + + interface PersonalUserFaceRealCommandResult { + /** 鐢ㄦ埛Id */ + userId?: string; + /** 鐏靛伐Id */ + enterpriseEmployeeId?: string; + userSignContractStatus?: EnumTaskUserSignContractStatus; + /** 鏄惁瀹炲悕 */ + isReal?: boolean; + realMethod?: EnumUserRealMethod; + realStatus?: EnumPersonalUserRealStatus; + /** 鏄惁缁戝畾閾惰鍗� */ + isBindBankCard?: boolean; + /** 浜鸿劯璇嗗埆鍦板潃 */ + faceUrl?: string; } interface PersonalUserIdentity3RealCommand { @@ -5601,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; @@ -5725,7 +6107,11 @@ } interface SavePersonalUserBankCardCommand { + /** 鐏靛伐Id */ + enterpriseEmployeeId?: string; access?: EnumUserBankCardAccess; + /** 閾惰鍗$収鐗囧湴鍧� */ + bankImageUrl?: string; /** 閾惰鍗″彿 */ code?: string; /** 鎵�灞為摱琛� */ @@ -5754,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 { @@ -5986,6 +6395,10 @@ interface SetTaskUserArrangeCommand { /** 浠诲姟浜哄憳Id */ id?: string; + /** 浠诲姟Id */ + taskInfoId?: string; + /** 鐏靛伐Id */ + enterpriseEmployeeId?: string; arrangeStatus?: EnumTaskUserArrangeStatus; } @@ -6014,6 +6427,8 @@ ids?: string[]; status?: EnumUserStatus; } + + type SmsChengLiYeNotifyCommand = Record<string, any>; interface SmsLoginCommand { /** 鎵嬫満鍙风爜 */ @@ -6167,11 +6582,6 @@ status?: EnumUserStatus; /** 澶囨敞 */ remark?: string; - } - - interface TestAliPayCommand { - code?: string; - freezeNo?: string; } interface UpdatePhoneNumberVerifyCodeCommand { diff --git a/src/views/EnterpriseManage/components/WechatConfigureView.vue b/src/views/EnterpriseManage/components/WechatConfigureView.vue index e2fd7b3..92ed870 100644 --- a/src/views/EnterpriseManage/components/WechatConfigureView.vue +++ b/src/views/EnterpriseManage/components/WechatConfigureView.vue @@ -50,11 +50,7 @@ <ProFormSelect v-model="form.name" :valueEnum="[]" placeholder="璇烽�夋嫨涓讳綋绫诲瀷"> </ProFormSelect> </ProFormItemV2> - <ProFormItemV2 - label="鍟嗘埛绠�绉�:" - prop="name" - :checkRules="[{ type: 'phone', message: '璇疯緭鍏ュ晢鎴风畝绉�' }]" - > + <ProFormItemV2 label="鍟嗘埛绠�绉�:" prop="name" :checkRules="[{ message: '璇疯緭鍏ュ晢鎴风畝绉�' }]"> <ProFormText :maxlength="64" show-word-limit @@ -101,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> 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