😎1、屏蔽SassApi弃用提示 2、调整级联选择器配置选项写法,避免数据量大时造成卡顿 3、统一文件夹名称为小写打头 4、优化服务监控页面 5、升级依赖

This commit is contained in:
zuohuaijun 2024-09-19 16:47:03 +08:00
parent 32d021c6dc
commit 3832ef4206
10 changed files with 84 additions and 97 deletions

8
.gitignore vendored
View File

@ -18,10 +18,10 @@ bin-release/
# information for Eclipse / Flash Builder.
/Admin.NET/.vs
/Admin.NET/packages
/Admin.NET/Admin.NET.Web.Entry/wwwroot/Upload
/Admin.NET/Admin.NET.Web.Entry/wwwroot/Avatar
/Admin.NET/Admin.NET.Web.Entry/wwwroot/Signature
/Admin.NET/Admin.NET.Web.Entry/wwwroot/CodeGen
/Admin.NET/Admin.NET.Web.Entry/wwwroot/[Uu]pload
/Admin.NET/Admin.NET.Web.Entry/wwwroot/[Aa]vatar
/Admin.NET/Admin.NET.Web.Entry/wwwroot/[Ss]ignature
/Admin.NET/Admin.NET.Web.Entry/wwwroot/[Cc]odeGen
/Admin.NET/Admin.NET.Web.Entry/wwwroot/is-cache
/Admin.NET/Admin.NET.Web.Core/Admin.NET.Web.Core.csproj.user
/Admin.NET/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj.user

View File

@ -2,7 +2,7 @@
"name": "admin.net.pro",
"type": "module",
"version": "2.4.33",
"lastBuildTime": "2024.09.17",
"lastBuildTime": "2024.09.19",
"description": "Admin.NET 站在巨人肩膀上的 .NET 通用权限开发框架",
"author": "zuohuaijun",
"license": "MIT",
@ -86,7 +86,7 @@
"@types/sortablejs": "^1.15.8",
"@typescript-eslint/eslint-plugin": "^8.6.0",
"@typescript-eslint/parser": "^8.6.0",
"@vitejs/plugin-vue": "^5.1.3",
"@vitejs/plugin-vue": "^5.1.4",
"@vitejs/plugin-vue-jsx": "^4.0.1",
"@vue/compiler-sfc": "^3.5.6",
"code-inspector-plugin": "^0.16.1",
@ -96,8 +96,8 @@
"less": "^4.2.0",
"prettier": "^3.3.3",
"rollup-plugin-visualizer": "^5.12.0",
"sass": "^1.78.0",
"terser": "^5.32.0",
"sass": "^1.79.1",
"terser": "^5.33.0",
"typescript": "^5.6.2",
"vite": "^5.4.6",
"vite-plugin-cdn-import": "^1.0.1",

View File

@ -95,9 +95,10 @@
<el-form-item label="父级菜单" prop="menuPid">
<el-cascader
:options="state.menuData"
:props="{ checkStrictly: true, emitPath: false, value: 'id', label: 'title' }"
:props="cascaderProps"
placeholder="请选择上级菜单"
:disabled="!state.ruleForm.generateMenu"
filterable
clearable
class="w100"
v-model="state.ruleForm.menuPid"
@ -217,6 +218,8 @@ const activeTab = ref('codeGen');
const templateTableRef = ref();
const multipleSelection = ref([] as any);
const templateTableData = ref([] as any);
//
const cascaderProps = { checkStrictly: true, emitPath: false, value: 'id', label: 'title' };
onMounted(async () => {
var resDb = await getAPI(SysCodeGenApi).apiSysCodeGenDatabaseListGet();

View File

@ -11,14 +11,7 @@
<el-row :gutter="10">
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
<el-form-item label="上级菜单">
<el-cascader
:options="props.menuData"
:props="{ checkStrictly: true, emitPath: false, value: 'id', label: 'title' }"
placeholder="请选择上级菜单"
clearable
class="w100"
v-model="state.ruleForm.pid"
>
<el-cascader :options="props.menuData" :props="cascaderProps" placeholder="请选择上级菜单" clearable filterable class="w100" v-model="state.ruleForm.pid">
<template #default="{ node, data }">
<span>{{ data.title }}</span>
<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
@ -165,6 +158,8 @@ const state = reactive({
isShowDialog: false,
ruleForm: {} as UpdateMenuInput,
});
//
const cascaderProps = { checkStrictly: true, emitPath: false, value: 'id', label: 'title' };
//
const getGlobalComponentSize = computed(() => {

View File

@ -11,14 +11,7 @@
<el-row :gutter="10">
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
<el-form-item label="上级机构">
<el-cascader
:options="props.orgData"
:props="{ checkStrictly: true, emitPath: false, value: 'id', label: 'name' }"
placeholder="请选择上级机构"
clearable
class="w100"
v-model="state.ruleForm.pid"
>
<el-cascader :options="props.orgData" :props="cascaderProps" placeholder="请选择上级机构" clearable filterable class="w100" v-model="state.ruleForm.pid">
<template #default="{ node, data }">
<span>{{ data.name }}</span>
<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
@ -96,6 +89,8 @@ const state = reactive({
ruleForm: {} as UpdateOrgInput,
orgTypeList: [] as any,
});
//
const cascaderProps = { checkStrictly: true, emitPath: false, value: 'id', label: 'name' };
//
onMounted(async () => {

View File

@ -13,7 +13,7 @@
<el-form-item label="上级名称">
<el-cascader
:options="regionData"
:props="{ checkStrictly: true, emitPath: false, value: 'id', label: 'name' }"
:props="cascaderProps"
placeholder="请选择上级名称"
clearable
class="w100"
@ -84,6 +84,8 @@ const state = reactive({
isShowDialog: false,
ruleForm: {} as UpdateRegionInput,
});
//
//const cascaderProps = { checkStrictly: true, emitPath: false, value: 'id', label: 'name' };
//
const openDialog = (row: any) => {

View File

@ -4,38 +4,40 @@
<el-col :md="12" :sm="24">
<el-card shadow="hover" header="系统信息">
<table class="sysInfo_table">
<tr>
<td class="sysInfo_td">主机名称</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.hostName }}</td>
</tr>
<tr>
<td class="sysInfo_td">操作系统</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.systemOs }}</td>
</tr>
<tr>
<td class="sysInfo_td">系统架构</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.osArchitecture }}</td>
</tr>
<tr>
<td class="sysInfo_td">CPU核数</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.processorCount }}</td>
</tr>
<tr>
<td class="sysInfo_td">运行时长</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.sysRunTime }}</td>
</tr>
<tr>
<td class="sysInfo_td">外网地址</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.remoteIp }}</td>
</tr>
<tr>
<td class="sysInfo_td">内网地址</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.localIp }}</td>
</tr>
<tr>
<td class="sysInfo_td">运行框架</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.frameworkDescription }}</td>
</tr>
<tbody>
<tr>
<td class="sysInfo_td">主机名称</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.hostName }}</td>
</tr>
<tr>
<td class="sysInfo_td">操作系统</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.systemOs }}</td>
</tr>
<tr>
<td class="sysInfo_td">系统架构</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.osArchitecture }}</td>
</tr>
<tr>
<td class="sysInfo_td">CPU核数</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.processorCount }}</td>
</tr>
<tr>
<td class="sysInfo_td">运行时长</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.sysRunTime }}</td>
</tr>
<tr>
<td class="sysInfo_td">外网地址</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.remoteIp }}</td>
</tr>
<tr>
<td class="sysInfo_td">内网地址</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.localIp }}</td>
</tr>
<tr>
<td class="sysInfo_td">运行框架</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.frameworkDescription }}</td>
</tr>
</tbody>
</table>
</el-card>
</el-col>
@ -76,26 +78,28 @@
<el-row>
<table class="sysInfo_table">
<tr>
<td class="sysInfo_td">启动时间</td>
<td class="sysInfo_td">{{ state.machineUseInfo.startTime }}</td>
</tr>
<tr>
<td class="sysInfo_td">运行时长</td>
<td class="sysInfo_td">{{ state.machineUseInfo.runTime }}</td>
</tr>
<tr>
<td class="sysInfo_td">网站目录</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.wwwroot }}</td>
</tr>
<tr>
<td class="sysInfo_td">开发环境</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.environment }}</td>
</tr>
<tr>
<td class="sysInfo_td">环境变量</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.stage }}</td>
</tr>
<tbody>
<tr>
<td class="sysInfo_td">启动时间</td>
<td class="sysInfo_td">{{ state.machineUseInfo.startTime }}</td>
</tr>
<tr>
<td class="sysInfo_td">运行时长</td>
<td class="sysInfo_td">{{ state.machineUseInfo.runTime }}</td>
</tr>
<tr>
<td class="sysInfo_td">网站目录</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.wwwroot }}</td>
</tr>
<tr>
<td class="sysInfo_td">开发环境</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.environment }}</td>
</tr>
<tr>
<td class="sysInfo_td">环境变量</td>
<td class="sysInfo_td">{{ state.machineBaseInfo.stage }}</td>
</tr>
</tbody>
</table>
</el-row>
</el-card>

View File

@ -62,14 +62,7 @@
</el-divider>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="所属机构" prop="orgId" :rules="[{ required: true, message: '所属机构不能为空', trigger: 'blur' }]">
<el-cascader
:options="props.orgData"
:props="{ checkStrictly: true, emitPath: false, value: 'id', label: 'name', expandTrigger: 'hover' }"
placeholder="所属机构"
clearable
class="w100"
v-model="state.ruleForm.orgId"
>
<el-cascader :options="props.orgData" :props="cascaderProps" placeholder="所属机构" clearable filterable class="w100" v-model="state.ruleForm.orgId">
<template #default="{ node, data }">
<span>{{ data.name }}</span>
<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
@ -115,14 +108,7 @@
<el-button icon="ele-Delete" type="danger" circle plain size="small" @click="deleteExtOrgRow(k)" />
<span class="ml5">机构</span>
</template>
<el-cascader
:options="props.orgData"
:props="{ checkStrictly: true, emitPath: false, value: 'id', label: 'name', expandTrigger: 'hover' }"
placeholder="机构组织"
clearable
class="w100"
v-model="state.ruleForm.extOrgIdList[k].orgId"
>
<el-cascader :options="props.orgData" :props="cascaderProps" placeholder="机构组织" clearable filterable class="w100" v-model="state.ruleForm.extOrgIdList[k].orgId">
<template #default="{ node, data }">
<span>{{ data.name }}</span>
<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
@ -284,6 +270,8 @@ const state = reactive({
posData: [] as Array<PagePosOutput>, //
roleData: [] as Array<RoleOutput>, //
});
//
const cascaderProps = { checkStrictly: true, emitPath: false, value: 'id', label: 'name', expandTrigger: 'hover' };
//
onMounted(async () => {

View File

@ -58,8 +58,8 @@
<template #row_sex="{ row }">
<el-tag v-if="row.sex === 1" type="success"></el-tag>
<el-tag v-else-if="row.sex === 2" type="danger"></el-tag>
<el-tag v-else-if="row.sex === 0" type="info">未知的性别</el-tag>
<el-tag v-else-if="row.sex === 9" type="info">未说明的性别</el-tag>
<el-tag v-else-if="row.sex === 0" type="info">未知</el-tag>
<el-tag v-else-if="row.sex === 9" type="info">未说明</el-tag>
</template>
<template #row_accountType="{ row }">
<el-tag v-if="row.accountType === 888">系统管理员</el-tag>

View File

@ -96,7 +96,7 @@ const viteConfig = defineConfig((mode: ConfigEnv) => {
...(JSON.parse(env.VITE_OPEN_CDN) ? { external: buildConfig.external } : {}),
},
},
css: { preprocessorOptions: { css: { charset: false } } },
css: { preprocessorOptions: { css: { charset: false }, scss: { silenceDeprecations: ['legacy-js-api'] } } },
define: {
__VUE_I18N_LEGACY_API__: JSON.stringify(false),
__VUE_I18N_FULL_INSTALL__: JSON.stringify(false),