😎1、增加表行记录查看组件 2、优化前端页面代码 3、升级依赖
This commit is contained in:
parent
1211d34770
commit
7efa9795d6
@ -56,7 +56,7 @@
|
||||
<PackageReference Include="SSH.NET" Version="2025.0.0" />
|
||||
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.6.5" />
|
||||
<PackageReference Include="System.Net.Http" Version="4.3.4" />
|
||||
<PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1254" />
|
||||
<PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1258" />
|
||||
<PackageReference Include="UAParser" Version="3.1.47" />
|
||||
<PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
|
||||
</ItemGroup>
|
||||
@ -76,9 +76,9 @@
|
||||
<PackageReference Include="AspNet.Security.OAuth.Gitee" Version="9.4.0" />
|
||||
<PackageReference Include="AspNet.Security.OAuth.Weixin" Version="9.4.0" />
|
||||
<PackageReference Include="Lazy.Captcha.Core" Version="2.1.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.5" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="9.0.5" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="9.0.5" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="9.0.6" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="9.0.6" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="9.0.6" />
|
||||
<PackageReference Include="Microsoft.PowerShell.SDK" Version="7.5.1" />
|
||||
<PackageReference Include="My.Extensions.Localization.Json" Version="3.4.0" />
|
||||
</ItemGroup>
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="IGeekFan.AspNetCore.Knife4jUI" Version="0.0.16" />
|
||||
<PackageReference Include="MQTTnet.AspNetCore" Version="5.0.1.1416" />
|
||||
<PackageReference Include="System.Security.Cryptography.Pkcs" Version="9.0.5" />
|
||||
<PackageReference Include="System.Security.Cryptography.Pkcs" Version="9.0.6" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@ -79,7 +79,7 @@
|
||||
"vue-router": "^4.5.1",
|
||||
"vue-signature-pad": "^3.0.2",
|
||||
"vue3-tree-org": "^4.2.2",
|
||||
"vxe-pc-ui": "^4.6.19",
|
||||
"vxe-pc-ui": "^4.6.20",
|
||||
"vxe-table": "^4.13.37",
|
||||
"xe-utils": "^3.7.5",
|
||||
"xlsx-js-style": "^1.2.0"
|
||||
|
||||
115
Web/src/components/table/viewRecord.vue
Normal file
115
Web/src/components/table/viewRecord.vue
Normal file
@ -0,0 +1,115 @@
|
||||
<template>
|
||||
<el-dialog v-model="state.dialogVisible" draggable :close-on-click-modal="false">
|
||||
<template #header>
|
||||
<div style="color: #fff">
|
||||
<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-View /> </el-icon>
|
||||
<span>{{ props.title }}</span>
|
||||
</div>
|
||||
</template>
|
||||
<el-descriptions :column="descColumn" border>
|
||||
<el-descriptions-item v-for="(item, key) in state.data" :key="key" :label="key" :width="state.descriptionsWidth">
|
||||
<template #label>
|
||||
<el-text v-if="String(key) === t('message.list.creator')">
|
||||
<el-icon><ele-UserFilled /></el-icon>
|
||||
{{ key }}
|
||||
</el-text>
|
||||
<el-text v-else-if="String(key) === t('message.list.createTime')">
|
||||
<el-icon><ele-Calendar /></el-icon>
|
||||
{{ key }}
|
||||
</el-text>
|
||||
<el-text v-else-if="String(key) === t('message.list.modifier')">
|
||||
<el-icon><ele-UserFilled /></el-icon>
|
||||
{{ key }}
|
||||
</el-text>
|
||||
<el-text v-else-if="String(key) === t('message.list.modifyTime')">
|
||||
<el-icon><ele-Calendar /></el-icon>
|
||||
{{ key }}
|
||||
</el-text>
|
||||
<el-text v-else-if="String(key) === t('message.list.remark')">
|
||||
<el-icon><ele-Tickets /></el-icon>
|
||||
{{ key }}
|
||||
</el-text>
|
||||
<el-text v-else>
|
||||
{{ key }}
|
||||
</el-text>
|
||||
</template>
|
||||
<template v-if="item === false || item === true">
|
||||
<span>{{ item === false ? '否' : '是' }}</span>
|
||||
</template>
|
||||
<span v-else>{{ item }}</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed, reactive, onMounted, onUnmounted } from 'vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
const { t } = useI18n();
|
||||
const props = defineProps({
|
||||
title: String,
|
||||
});
|
||||
|
||||
const state = reactive({
|
||||
dialogVisible: false,
|
||||
data: {} as any,
|
||||
windowWidth: window.innerWidth,
|
||||
descriptionsWidth: '',
|
||||
});
|
||||
|
||||
const handleResize = () => {
|
||||
state.windowWidth = window.innerWidth;
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
window.addEventListener('resize', handleResize);
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
window.removeEventListener('resize', handleResize);
|
||||
});
|
||||
|
||||
// 打开弹框
|
||||
const openDialog = (row: any, columns: any) => {
|
||||
state.data = {};
|
||||
state.dialogVisible = true;
|
||||
|
||||
// 先处理列数据
|
||||
const columnsData = columns.reduce((acc: any, item: any) => {
|
||||
if (item.field !== 'seq' && item.field !== 'record' && item.field !== 'buttons') {
|
||||
acc[item.title] = row[item.field];
|
||||
}
|
||||
return acc;
|
||||
}, {});
|
||||
|
||||
// 后合并固定字段(后者覆盖前者)
|
||||
const fixedFields = {
|
||||
创建者: row.createUserName,
|
||||
创建时间: row.createTime,
|
||||
修改者: row.updateUserName,
|
||||
修改时间: row.updateTime,
|
||||
...(row.remark && { 备注: row.remark }),
|
||||
};
|
||||
|
||||
state.data = { ...columnsData, ...fixedFields };
|
||||
};
|
||||
|
||||
// 计算列宽和个数
|
||||
const descColumn = computed(() => {
|
||||
if (state.windowWidth < 800) {
|
||||
state.descriptionsWidth = '50%';
|
||||
return 1;
|
||||
}
|
||||
if (state.windowWidth < 1000) {
|
||||
state.descriptionsWidth = '25%';
|
||||
return 2;
|
||||
}
|
||||
state.descriptionsWidth = '10%';
|
||||
return 3;
|
||||
});
|
||||
|
||||
defineExpose({
|
||||
openDialog,
|
||||
});
|
||||
</script>
|
||||
@ -7,6 +7,7 @@ export default {
|
||||
button: 'Button',
|
||||
query: 'Query',
|
||||
reset: 'Reset',
|
||||
view: 'view',
|
||||
add: 'Add',
|
||||
allExpand: 'Expand All',
|
||||
allFold: 'Collapse All',
|
||||
|
||||
@ -7,6 +7,7 @@ export default {
|
||||
button: '按钮',
|
||||
query: '查询',
|
||||
reset: '重置',
|
||||
view: '查看',
|
||||
add: '新增',
|
||||
allExpand: '全部展开',
|
||||
allFold: '全部折叠',
|
||||
|
||||
@ -57,7 +57,7 @@ import { reactive, ref } from 'vue';
|
||||
import { getAPI } from '/@/utils/axios-utils';
|
||||
import { SysDictTypeApi } from '/@/api-services/api';
|
||||
import { AccountTypeEnum, UpdateDictTypeInput } from '/@/api-services/models';
|
||||
import {useUserInfo} from "/@/stores/userInfo";
|
||||
import { useUserInfo } from '/@/stores/userInfo';
|
||||
|
||||
const props = defineProps({
|
||||
title: String,
|
||||
|
||||
@ -148,15 +148,7 @@ import ModifyRecord from '/@/components/table/modifyRecord.vue';
|
||||
|
||||
import { getAPI } from '/@/utils/axios-utils';
|
||||
import { SysDictTypeApi, SysDictDataApi } from '/@/api-services/api';
|
||||
import {
|
||||
SysDictType,
|
||||
PageDictTypeInput,
|
||||
SysDictData,
|
||||
PageDictDataInput,
|
||||
UpdateDictDataInput,
|
||||
AccountTypeEnum
|
||||
} from '/@/api-services/models';
|
||||
import {auth} from "/@/utils/authFunction";
|
||||
import { SysDictType, PageDictTypeInput, SysDictData, PageDictDataInput, UpdateDictDataInput, AccountTypeEnum } from '/@/api-services/models';
|
||||
|
||||
const userInfo = useUserInfo().userInfos;
|
||||
const xGridDictType = ref<VxeGridInstance>();
|
||||
|
||||
@ -145,12 +145,11 @@ import { ElMessageBox, ElMessage, UploadInstance } from 'element-plus';
|
||||
import { VxeGridInstance, VxeGridListeners, VxeGridPropTypes } from 'vxe-table';
|
||||
import { useVxeTable } from '/@/hooks/useVxeTableOptionsHook';
|
||||
import { Local } from '/@/utils/storage';
|
||||
import { downloadByUrl } from '/@/utils/download';
|
||||
|
||||
import { Splitpanes, Pane } from 'splitpanes';
|
||||
import 'splitpanes/dist/splitpanes.css';
|
||||
|
||||
import { downloadByUrl } from '/@/utils/download';
|
||||
|
||||
import VueOfficeDocx from '@vue-office/docx';
|
||||
import VueOfficeExcel from '@vue-office/excel';
|
||||
import VueOfficePdf from '@vue-office/pdf';
|
||||
|
||||
@ -80,6 +80,7 @@ import { ElMessageBox, ElMessage } from 'element-plus';
|
||||
import { VxeGridInstance, VxeGridListeners } from 'vxe-table';
|
||||
import { useVxeTable } from '/@/hooks/useVxeTableOptionsHook';
|
||||
import SvgIcon from '/@/components/svgIcon/index.vue';
|
||||
import { Hide } from '@element-plus/icons-vue';
|
||||
|
||||
import EditMenu from '/@/views/system/menu/component/editMenu.vue';
|
||||
import ModifyRecord from '/@/components/table/modifyRecord.vue';
|
||||
@ -87,7 +88,6 @@ import ModifyRecord from '/@/components/table/modifyRecord.vue';
|
||||
import { getAPI } from '/@/utils/axios-utils';
|
||||
import { SysMenuApi } from '/@/api-services/api';
|
||||
import { SysMenu, UpdateMenuInput } from '/@/api-services/models';
|
||||
import { Hide } from '@element-plus/icons-vue';
|
||||
|
||||
const xGrid = ref<VxeGridInstance>();
|
||||
const editMenuRef = ref<InstanceType<typeof EditMenu>>();
|
||||
|
||||
@ -76,6 +76,7 @@ import commonFunction from '/@/utils/commonFunction';
|
||||
import { VxeGridInstance, VxeGridListeners, VxeGridPropTypes } from 'vxe-table';
|
||||
import { useVxeTable } from '/@/hooks/useVxeTableOptionsHook';
|
||||
import { Local } from '/@/utils/storage';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
import EditNotice from '/@/views/system/notice/component/editNotice.vue';
|
||||
import ModifyRecord from '/@/components/table/modifyRecord.vue';
|
||||
@ -83,10 +84,8 @@ import ModifyRecord from '/@/components/table/modifyRecord.vue';
|
||||
import { getAPI } from '/@/utils/axios-utils';
|
||||
import { SysNoticeApi } from '/@/api-services/api';
|
||||
import { SysNotice, PageNoticeInput } from '/@/api-services/models';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
const i18n = useI18n();
|
||||
|
||||
const xGrid = ref<VxeGridInstance>();
|
||||
const editNoticeRef = ref<InstanceType<typeof EditNotice>>();
|
||||
const { removeHtml } = commonFunction();
|
||||
|
||||
@ -80,7 +80,6 @@ import { SysOnlineUser, PageOnlineUserInput } from '/@/api-services/models';
|
||||
const storesThemeConfig = useThemeConfig();
|
||||
const { themeConfig } = storeToRefs(storesThemeConfig);
|
||||
const { t } = useI18n();
|
||||
|
||||
const xGrid = ref<VxeGridInstance>();
|
||||
const sendMessageRef = ref<InstanceType<typeof SendMessage>>();
|
||||
const state = reactive({
|
||||
|
||||
@ -133,11 +133,11 @@
|
||||
<script lang="ts" setup name="sysPluginCore">
|
||||
import { onMounted, reactive, ref } from 'vue';
|
||||
import { ElMessageBox, ElMessage, UploadInstance } from 'element-plus';
|
||||
import { auth } from '/@/utils/authFunction';
|
||||
|
||||
import EditPlugin from './component/editPluginSetting.vue';
|
||||
import DetailsPluginDialog from './component/detailsPluginDialog.vue';
|
||||
|
||||
import { auth } from '/@/utils/authFunction';
|
||||
import { getAPI } from '/@/utils/axios-utils';
|
||||
import { SysPluginCoreApi } from '/@/api-plugins/pluginCore/api';
|
||||
import { SysPluginCore } from '/@/api-plugins/pluginCore/models';
|
||||
|
||||
@ -79,6 +79,7 @@ import { ElMessageBox, ElMessage } from 'element-plus';
|
||||
import { VxeGridInstance, VxeGridListeners, VxeGridPropTypes } from 'vxe-table';
|
||||
import { useVxeTable } from '/@/hooks/useVxeTableOptionsHook';
|
||||
import { Local } from '/@/utils/storage';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
import EditPos from '/@/views/system/pos/component/editPos.vue';
|
||||
import ModifyRecord from '/@/components/table/modifyRecord.vue';
|
||||
@ -86,10 +87,8 @@ import ModifyRecord from '/@/components/table/modifyRecord.vue';
|
||||
import { getAPI } from '/@/utils/axios-utils';
|
||||
import { SysPosApi } from '/@/api-services/api';
|
||||
import { PagePosOutput, PagePosInput, UpdatePosInput } from '/@/api-services/models';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
const i18n = useI18n();
|
||||
|
||||
const xGrid = ref<VxeGridInstance>();
|
||||
const editPosRef = ref<InstanceType<typeof EditPos>>();
|
||||
const state = reactive({
|
||||
|
||||
@ -106,6 +106,7 @@ import { ElMessageBox, ElMessage, ElButton } from 'element-plus';
|
||||
import { VxeGridInstance, VxeGridListeners, VxeGridPropTypes } from 'vxe-table';
|
||||
import { useVxeTable } from '/@/hooks/useVxeTableOptionsHook';
|
||||
import { Local } from '/@/utils/storage';
|
||||
|
||||
import EditTenant from '/@/views/system/tenant/component/editTenant.vue';
|
||||
import GrantMenu from '/@/views/system/tenant/component/grantMenu.vue';
|
||||
import GrantApi from '/@/views/system/role/component/grantApi.vue';
|
||||
|
||||
@ -110,6 +110,7 @@ import { Local } from '/@/utils/storage';
|
||||
import XEUtils from 'xe-utils';
|
||||
import { Splitpanes, Pane } from 'splitpanes';
|
||||
import 'splitpanes/dist/splitpanes.css';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
import OrgTree from '/@/views/system/org/component/orgTree.vue';
|
||||
import EditUser from '/@/views/system/user/component/editUser.vue';
|
||||
@ -118,10 +119,8 @@ import ModifyRecord from '/@/components/table/modifyRecord.vue';
|
||||
import { getAPI } from '/@/utils/axios-utils';
|
||||
import { SysUserApi, SysOrgApi } from '/@/api-services/api';
|
||||
import { SysOrg, PageTenantInput, UserOutput, UpdateUserInput } from '/@/api-services/models';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const xGrid = ref<VxeGridInstance>();
|
||||
// const treeRef = ref<InstanceType<typeof OrgTree>>();
|
||||
const editUserRef = ref<InstanceType<typeof EditUser>>();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user