From eb0b661cb59ce88085e5f2a17d5ce42ac8739a0f Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期一, 29 九月 2025 10:01:30 +0800
Subject: [PATCH] feat: 日志
---
src/views/TraceIdLogManage/SmsLogs.vue | 236 ++++++++++++++++++++++++++
src/views/TraceIdLogManage/DbAuditLogs.vue | 1
.eslintrc-auto-import.json | 4
src/views/TraceIdLogManage/ConsoleLogs.vue | 221 ++++++++++++++++++++++++
auto-imports.d.ts | 8
src/constants/logs.ts | 27 +++
6 files changed, 496 insertions(+), 1 deletions(-)
diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json
index 0fb83b8..58b65b5 100644
--- a/.eslintrc-auto-import.json
+++ b/.eslintrc-auto-import.json
@@ -28,6 +28,7 @@
"EnumClientTypeText": true,
"EnumCodeUrlScene": true,
"EnumConsoleLogAccess": true,
+ "EnumConsoleLogAccessText": true,
"EnumContractTemplateStatus": true,
"EnumContractTemplateStatusText": true,
"EnumContractTemplateStatusTextForEnterpriseFilter": true,
@@ -55,6 +56,7 @@
"EnumEnterpriseWalletTransactionType": true,
"EnumGetEnterpriseEmployeesQuerySignContractStatus": true,
"EnumLogLevel": true,
+ "EnumLogLevelText": true,
"EnumMenuType": true,
"EnumMenuVisitLevel": true,
"EnumOcrAccess": true,
@@ -81,8 +83,10 @@
"EnumSettlementCycleText": true,
"EnumSmsAccess": true,
"EnumSmsAccessText": true,
+ "EnumSmsAccessTextUseInLogs": true,
"EnumSmsAccessTextUseInSms": true,
"EnumSmsStatus": true,
+ "EnumSmsStatusText": true,
"EnumTaskCheckReceiveStatus": true,
"EnumTaskCheckReceiveStatusText": true,
"EnumTaskRecommendStatus": true,
diff --git a/auto-imports.d.ts b/auto-imports.d.ts
index 9d158b2..2787dce 100644
--- a/auto-imports.d.ts
+++ b/auto-imports.d.ts
@@ -30,6 +30,7 @@
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 EnumConsoleLogAccessText: typeof import('./src/constants/logs')['EnumConsoleLogAccessText']
const EnumContractTemplateStatus: typeof import('./src/constants/apiEnum')['EnumContractTemplateStatus']
const EnumContractTemplateStatusText: typeof import('./src/constants/electronSign')['EnumContractTemplateStatusText']
const EnumContractTemplateStatusTextForEnterpriseFilter: typeof import('./src/constants/electronSign')['EnumContractTemplateStatusTextForEnterpriseFilter']
@@ -58,6 +59,7 @@
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 EnumLogLevelText: typeof import('./src/constants/logs')['EnumLogLevelText']
const EnumMenuType: typeof import('./src/constants/apiEnum')['EnumMenuType']
const EnumMenuVisitLevel: typeof import('./src/constants/apiEnum')['EnumMenuVisitLevel']
const EnumOcrAccess: typeof import('./src/constants/apiEnum')['EnumOcrAccess']
@@ -85,8 +87,10 @@
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 EnumSmsAccessTextUseInLogs: typeof import('./src/constants/logs')['EnumSmsAccessTextUseInLogs']
const EnumSmsAccessTextUseInSms: typeof import('./src/constants/enterprise')['EnumSmsAccessTextUseInSms']
const EnumSmsStatus: typeof import('./src/constants/apiEnum')['EnumSmsStatus']
+ const EnumSmsStatusText: typeof import('./src/constants/logs')['EnumSmsStatusText']
const EnumTaskCheckReceiveStatus: typeof import('./src/constants/apiEnum')['EnumTaskCheckReceiveStatus']
const EnumTaskCheckReceiveStatusText: typeof import('./src/constants/task')['EnumTaskCheckReceiveStatusText']
const EnumTaskRecommendStatus: typeof import('./src/constants/apiEnum')['EnumTaskRecommendStatus']
@@ -345,6 +349,7 @@
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 EnumConsoleLogAccessText: UnwrapRef<typeof import('./src/constants/logs')['EnumConsoleLogAccessText']>
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']>
@@ -372,6 +377,7 @@
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 EnumLogLevelText: UnwrapRef<typeof import('./src/constants/logs')['EnumLogLevelText']>
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']>
@@ -398,8 +404,10 @@
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 EnumSmsAccessTextUseInLogs: UnwrapRef<typeof import('./src/constants/logs')['EnumSmsAccessTextUseInLogs']>
readonly EnumSmsAccessTextUseInSms: UnwrapRef<typeof import('./src/constants/enterprise')['EnumSmsAccessTextUseInSms']>
readonly EnumSmsStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumSmsStatus']>
+ readonly EnumSmsStatusText: UnwrapRef<typeof import('./src/constants/logs')['EnumSmsStatusText']>
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/logs.ts b/src/constants/logs.ts
index 491e8ff..5558f67 100644
--- a/src/constants/logs.ts
+++ b/src/constants/logs.ts
@@ -5,3 +5,30 @@
[EnumResourceMethod.Put]: '淇敼',
[EnumResourceMethod.Delete]: '鍒犻櫎',
};
+
+export const EnumConsoleLogAccessText = {
+ [EnumConsoleLogAccess.Back]: '鍚庣',
+ [EnumConsoleLogAccess.Front]: '鍓嶇',
+};
+
+export const EnumSmsAccessTextUseInLogs = {
+ [EnumSmsAccess.None]: '鏃�',
+ [EnumSmsAccess.AliyunSms]: '闃块噷浜戠煭淇�',
+ [EnumSmsAccess.ChengLiYe]: '璇氱珛涓�',
+};
+
+export const EnumSmsStatusText = {
+ [EnumSmsStatus.Wait]: '寰呭彂閫�',
+ [EnumSmsStatus.InProcess]: '鍙戦�佷腑',
+ [EnumSmsStatus.Success]: '鍙戦�佹垚鍔�',
+ [EnumSmsStatus.Fail]: '鍙戦�佸け璐�',
+};
+
+export const EnumLogLevelText = {
+ [EnumLogLevel.Trace]: '璺熻釜',
+ [EnumLogLevel.Debug]: '璋冭瘯',
+ [EnumLogLevel.Information]: '淇℃伅',
+ [EnumLogLevel.Warning]: '璀﹀憡',
+ [EnumLogLevel.Error]: '閿欒',
+ [EnumLogLevel.Critical]: '涓ラ噸',
+};
diff --git a/src/views/TraceIdLogManage/ConsoleLogs.vue b/src/views/TraceIdLogManage/ConsoleLogs.vue
new file mode 100644
index 0000000..e76704a
--- /dev/null
+++ b/src/views/TraceIdLogManage/ConsoleLogs.vue
@@ -0,0 +1,221 @@
+<template>
+ <LoadingLayout :loading="state.loading">
+ <AppContainer>
+ <ProTableQueryFilterBar @on-reset="reset">
+ <template #query>
+ <QueryFilterItem tip-content="閫氶亾">
+ <FieldRadio
+ v-model="extraParamState.access"
+ :value-enum="EnumConsoleLogAccessText"
+ buttonStyle
+ showAllBtn
+ @change="getList()"
+ />
+ </QueryFilterItem>
+ <QueryFilterItem tip-content="绛夌骇">
+ <FieldRadio
+ v-model="extraParamState.level"
+ :value-enum="EnumLogLevelText"
+ buttonStyle
+ showAllBtn
+ @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.content"
+ style="width: 260px"
+ placeholder="鍐呭content"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.url"
+ style="width: 260px"
+ placeholder="閾炬帴鍦板潃url"
+ @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.ext"
+ style="width: 260px"
+ placeholder="鎵╁睍ext"
+ @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 { EnumConsoleLogAccessText, EnumLogLevelText } 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: 'ConsoleLogs',
+});
+
+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.GetConsoleLogsQuery = {
+ 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,
+ access: extraParamState.access,
+ level: extraParamState.level,
+ content: extraParamState.content,
+ url: extraParamState.url,
+ request: extraParamState.request,
+ ext: extraParamState.ext,
+ };
+ let res = await logRecordsServices.getConsoleLogs(params, {
+ showLoading: !state.loading,
+ });
+ return res;
+ } catch (error) {}
+ },
+ {
+ defaultExtraParams: {
+ createdUser: '',
+ traceId: '',
+ access: '' as any as EnumConsoleLogAccess,
+ level: '' as any as EnumLogLevel,
+ content: '',
+ url: '',
+ request: '',
+ ext: '',
+ createdTime: [] as unknown as ModelValueType,
+ orderInput: [{ property: 'createdTime', order: EnumPagedListOrder.Desc }],
+ },
+ columnsRenderProps: {
+ createdTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
+ access: { type: 'enum', valueEnum: EnumConsoleLogAccessText },
+ level: { type: 'enum', valueEnum: EnumLogLevelText },
+ },
+ }
+);
+
+const { dialogProps, handleAdd } = useFormDialog({
+ defaultFormParams: {
+ json: null,
+ },
+});
+
+function openDialog(row: API.GetConsoleLogsQueryResultItem) {
+ 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/DbAuditLogs.vue b/src/views/TraceIdLogManage/DbAuditLogs.vue
index 9b62f3a..bec5a5d 100644
--- a/src/views/TraceIdLogManage/DbAuditLogs.vue
+++ b/src/views/TraceIdLogManage/DbAuditLogs.vue
@@ -9,7 +9,6 @@
:value-enum="EnumDbAuditOperateText"
buttonStyle
showAllBtn
- :all-btn-value="null"
@change="getList()"
/>
</QueryFilterItem>
diff --git a/src/views/TraceIdLogManage/SmsLogs.vue b/src/views/TraceIdLogManage/SmsLogs.vue
new file mode 100644
index 0000000..e29e742
--- /dev/null
+++ b/src/views/TraceIdLogManage/SmsLogs.vue
@@ -0,0 +1,236 @@
+<template>
+ <LoadingLayout :loading="state.loading">
+ <AppContainer>
+ <ProTableQueryFilterBar @on-reset="reset">
+ <template #query>
+ <QueryFilterItem tip-content="閫氶亾">
+ <FieldRadio
+ v-model="extraParamState.access"
+ :value-enum="EnumSmsAccessTextUseInLogs"
+ buttonStyle
+ showAllBtn
+ @change="getList()"
+ />
+ </QueryFilterItem>
+ <QueryFilterItem tip-content="鏄惁浣跨敤">
+ <FieldRadio
+ v-model="extraParamState.isUsed"
+ :value-enum="[
+ { label: '鎴愬姛', value: true },
+ { label: '澶辫触', value: false },
+ ]"
+ buttonStyle
+ showAllBtn
+ :all-btn-value="null"
+ @change="getList()"
+ />
+ </QueryFilterItem>
+ <QueryFilterItem tip-content="鍙戦�佺姸鎬�">
+ <FieldRadio
+ v-model="extraParamState.status"
+ :value-enum="EnumSmsStatusText"
+ buttonStyle
+ showAllBtn
+ @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.phoneNumber"
+ style="width: 260px"
+ placeholder="鎵嬫満鍙风爜phoneNumber"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.templateCode"
+ style="width: 260px"
+ placeholder="妯℃澘浠g爜templateCode"
+ @on-click-search="getList()"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.templateParam"
+ style="width: 260px"
+ placeholder="妯℃澘鍙傛暟templateParam"
+ @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 { EnumSmsAccessTextUseInLogs, EnumSmsStatusText } 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: 'SmsLogs',
+});
+
+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.GetSmsLogsQuery = {
+ 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,
+ access: extraParamState.access,
+ phoneNumber: extraParamState.phoneNumber,
+ templateCode: extraParamState.templateCode,
+ templateParam: extraParamState.templateParam,
+ isUsed: extraParamState.isUsed,
+ status: extraParamState.status,
+ };
+ let res = await logRecordsServices.getSmsLogs(params, {
+ showLoading: !state.loading,
+ });
+ return res;
+ } catch (error) {}
+ },
+ {
+ defaultExtraParams: {
+ createdUser: '',
+ traceId: '',
+ access: '' as any as EnumSmsAccess,
+ phoneNumber: '',
+ templateCode: '',
+ templateParam: '',
+ isUsed: null as any as boolean,
+ status: '' as any as EnumSmsStatus,
+ createdTime: [] as unknown as ModelValueType,
+ orderInput: [{ property: 'createdTime', order: EnumPagedListOrder.Desc }],
+ },
+ columnsRenderProps: {
+ createdTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
+ expiry: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
+ access: { type: 'enum', valueEnum: EnumSmsAccessTextUseInLogs },
+ status: { type: 'enum', valueEnum: EnumSmsStatusText },
+ isUsed: {
+ formatter: (row: API.GetSmsLogsQueryResultItem) => {
+ return row.isUsed ? '鏄�' : '鍚�';
+ },
+ },
+ templateParam: {
+ formatter: (row: API.GetSmsLogsQueryResultItem) => {
+ return row.templateParam ? JSON.parse(row.templateParam).code : '';
+ },
+ },
+ },
+ }
+);
+
+const { dialogProps, handleAdd } = useFormDialog({
+ defaultFormParams: {
+ json: null,
+ },
+});
+
+function openDialog(row: API.GetSmsLogsQueryResultItem) {
+ handleAdd({
+ json: {
+ createdUser: JSON.parse(JSON.stringify(row.createdUser)),
+ },
+ });
+}
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
--
Gitblit v1.9.1