Переглянути джерело

😁合并字典和字典值页面

zuohuaijun 2 роки тому
батько
коміт
bd183114ca

+ 0 - 226
Web/src/views/system/dict/component/dictDataDialog.vue

@@ -1,226 +0,0 @@
-<template>
-	<div class="sys-dictData-container">
-		<el-dialog v-model="state.isShowDialog" draggable :close-on-click-modal="false" width="980px">
-			<template #header>
-				<div style="color: #fff">
-					<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Edit /> </el-icon>
-					<span> 字典值列表 </span>
-				</div>
-			</template>
-			<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
-				<el-form :model="state.queryParams" ref="queryForm" :inline="true">
-					<el-form-item label="字典值">
-						<el-input v-model="state.queryParams.value" placeholder="字典值" />
-					</el-form-item>
-					<el-form-item label="编码">
-						<el-input v-model="state.queryParams.code" placeholder="编码" />
-					</el-form-item>
-					<el-form-item>
-						<el-button-group>
-							<el-button type="primary" icon="ele-Search" @click="handleQuery"> 查询 </el-button>
-							<el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
-						</el-button-group>
-					</el-form-item>
-					<el-form-item>
-						<el-button type="primary" icon="ele-Plus" @click="openAddDictData"> 新增 </el-button>
-					</el-form-item>
-				</el-form>
-			</el-card>
-
-			<el-card class="full-table" shadow="hover" style="margin-top: 8px">
-				<el-table :data="state.dictDataData" style="width: 100%" v-loading="state.loading" border>
-					<el-table-column type="index" label="序号" width="55" align="center" />
-					<el-table-column prop="value" label="字典值" header-align="center" min-width="100" show-overflow-tooltip>
-						<template #default="scope">
-							<el-tag :type="scope.row.tagType" :style="scope.row.styleSetting" :class="scope.row.classSetting">{{ scope.row.value }}</el-tag>
-						</template>
-					</el-table-column>
-					<el-table-column prop="code" label="编码" header-align="center" min-width="100" show-overflow-tooltip />
-					<el-table-column prop="status" label="状态" width="70" align="center" show-overflow-tooltip>
-						<template #default="scope">
-							<el-tag type="success" v-if="scope.row.status === 1">启用</el-tag>
-							<el-tag type="danger" v-else>禁用</el-tag>
-						</template>
-					</el-table-column>
-					<el-table-column prop="orderNo" label="排序" width="70" align="center" show-overflow-tooltip />
-					<el-table-column prop="extData" label="拓展数据" width="90" align="center">
-						<template #default="scope">
-							<el-tag type="warning" v-if="scope.row.extData == null || scope.row.extData == ''">空</el-tag>
-							<el-tag type="success" v-else>有值</el-tag>
-						</template>
-					</el-table-column>
-					<el-table-column label="修改记录" width="100" align="center" show-overflow-tooltip>
-						<template #default="scope">
-							<el-popover placement="bottom" width="280" trigger="hover">
-								<template #reference>
-									<el-text type="primary">
-										<el-icon><ele-InfoFilled /></el-icon>详情
-									</el-text>
-								</template>
-								<el-descriptions direction="vertical" :column="2" border>
-									<el-descriptions-item width="140">
-										<template #label>
-											<el-text>
-												<el-icon><ele-UserFilled /></el-icon>创建者
-											</el-text>
-										</template>
-										<el-tag>{{ scope.row.createUserName ?? '无' }}</el-tag>
-									</el-descriptions-item>
-									<el-descriptions-item>
-										<template #label>
-											<el-text>
-												<el-icon><ele-Calendar /></el-icon>创建时间
-											</el-text>
-										</template>
-										<el-tag>{{ scope.row.createTime ?? '无' }}</el-tag>
-									</el-descriptions-item>
-									<el-descriptions-item>
-										<template #label>
-											<el-text>
-												<el-icon><ele-UserFilled /></el-icon>修改者
-											</el-text>
-										</template>
-										<el-tag>{{ scope.row.updateUserName ?? '无' }}</el-tag>
-									</el-descriptions-item>
-									<el-descriptions-item>
-										<template #label>
-											<el-text>
-												<el-icon><Calendar /></el-icon>修改时间
-											</el-text>
-										</template>
-										<el-tag>{{ scope.row.updateTime ?? '无' }}</el-tag>
-									</el-descriptions-item>
-									<el-descriptions-item>
-										<template #label>
-											<el-text>
-												<el-icon><ele-Tickets /></el-icon>备注
-											</el-text>
-										</template>
-										{{ scope.row.remark }}
-									</el-descriptions-item>
-								</el-descriptions>
-							</el-popover>
-						</template>
-					</el-table-column>
-					<el-table-column label="操作" width="140" fixed="right" align="center" show-overflow-tooltip>
-						<template #default="scope">
-							<el-button icon="ele-Edit" size="small" text type="primary" @click="openEditDictData(scope.row)"> 编辑 </el-button>
-							<el-button icon="ele-Delete" size="small" text type="danger" @click="delDictData(scope.row)"> 删除 </el-button>
-						</template>
-					</el-table-column>
-				</el-table>
-				<el-pagination
-					v-model:currentPage="state.tableParams.page"
-					v-model:page-size="state.tableParams.pageSize"
-					:total="state.tableParams.total"
-					:page-sizes="[10, 20, 50, 100]"
-					small
-					background
-					@size-change="handleSizeChange"
-					@current-change="handleCurrentChange"
-					layout="total, sizes, prev, pager, next, jumper"
-				/>
-			</el-card>
-		</el-dialog>
-
-		<EditDictData ref="editDictDataRef" :title="state.editDictDataTitle" :dictTypeId="state.queryParams.dictTypeId" @handleQuery="handleQuery" />
-	</div>
-</template>
-
-<script lang="ts" setup name="sysDictData">
-import { onMounted, reactive, ref } from 'vue';
-import { ElMessageBox, ElMessage } from 'element-plus';
-import EditDictData from '/@/views/system/dict/component/editDictData.vue';
-
-import { getAPI } from '/@/utils/axios-utils';
-import { SysDictDataApi } from '/@/api-services/api';
-import { SysDictData } from '/@/api-services/models';
-
-const editDictDataRef = ref();
-const state = reactive({
-	isShowDialog: false,
-	loading: false,
-	dictDataData: [] as Array<SysDictData>,
-	queryParams: {
-		value: undefined,
-		code: undefined,
-		dictTypeId: 0, // 字典类型Id
-	},
-	tableParams: {
-		page: 1,
-		pageSize: 20,
-		total: 0 as any,
-	},
-	editDictDataTitle: '',
-});
-
-onMounted(async () => {
-	handleQuery();
-});
-
-// 打开弹窗
-const openDialog = async (row: any) => {
-	state.queryParams.dictTypeId = row.id;
-	handleQuery();
-	state.isShowDialog = true;
-};
-
-// 查询操作
-const handleQuery = async () => {
-	state.loading = true;
-	let params = Object.assign(state.queryParams, state.tableParams);
-	var res = await getAPI(SysDictDataApi).apiSysDictDataPagePost(params);
-	state.dictDataData = res.data.result?.items ?? [];
-	state.tableParams.total = res.data.result?.total;
-	state.loading = false;
-};
-
-// 重置操作
-const resetQuery = () => {
-	state.queryParams.value = undefined;
-	state.queryParams.code = undefined;
-	handleQuery();
-};
-
-// 打开新增页面
-const openAddDictData = () => {
-	state.editDictDataTitle = '添加字典值';
-	editDictDataRef.value.openDialog({ status: 1, orderNo: 100, dictTypeId: state.queryParams.dictTypeId });
-};
-
-// 打开编辑页面
-const openEditDictData = (row: any) => {
-	state.editDictDataTitle = '编辑字典值';
-	editDictDataRef.value.openDialog(row);
-};
-
-// 删除
-const delDictData = (row: any) => {
-	ElMessageBox.confirm(`确定删除字典值:【${row.value}】?`, '提示', {
-		confirmButtonText: '确定',
-		cancelButtonText: '取消',
-		type: 'warning',
-	})
-		.then(async () => {
-			await getAPI(SysDictDataApi).apiSysDictDataDeletePost({ id: row.id });
-			handleQuery();
-			ElMessage.success('删除成功');
-		})
-		.catch(() => {});
-};
-
-// 改变页面容量
-const handleSizeChange = (val: number) => {
-	state.tableParams.pageSize = val;
-	handleQuery();
-};
-
-// 改变页码序号
-const handleCurrentChange = (val: number) => {
-	state.tableParams.page = val;
-	handleQuery();
-};
-
-// 导出对象
-defineExpose({ openDialog });
-</script>

+ 2 - 2
Web/src/views/system/dict/component/editDictData.vue

@@ -55,12 +55,12 @@
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
 						<el-form-item label="备注">
-							<el-input v-model="state.ruleForm.remark" placeholder="请输入备注内容" clearable type="textarea" rows="6" />
+							<el-input v-model="state.ruleForm.remark" placeholder="请输入备注内容" clearable type="textarea" />
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
 						<el-form-item label="拓展数据">
-							<el-input v-model="state.ruleForm.extData" placeholder="请输入拓展数据" clearable type="textarea" rows="12" />
+							<el-input v-model="state.ruleForm.extData" placeholder="请输入拓展数据" clearable type="textarea" rows="6" />
 						</el-form-item>
 					</el-col>
 				</el-row>

+ 58 - 48
Web/src/views/system/dict/index.vue

@@ -1,28 +1,29 @@
 <template>
 	<div class="sys-dict-container">
-		<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
-			<el-form :model="state.queryDictTypeParams" ref="queryForm" :inline="true">
-				<el-form-item label="字典名称">
-					<el-input v-model="state.queryDictTypeParams.name" placeholder="字典名称" clearable />
-				</el-form-item>
-				<el-form-item label="字典编码">
-					<el-input v-model="state.queryDictTypeParams.code" placeholder="字典编码" clearable />
-				</el-form-item>
-				<el-form-item>
-					<el-button-group>
-						<el-button type="primary" icon="ele-Search" @click="handleDictTypeQuery" v-auth="'sysDictType:page'"> 查询 </el-button>
-						<el-button icon="ele-Refresh" @click="resetDictTypeQuery"> 重置 </el-button>
-					</el-button-group>
-				</el-form-item>
-				<el-form-item>
-					<el-button type="primary" icon="ele-Plus" @click="openAddDictType" v-auth="'sysDictType:add'"> 新增 </el-button>
-				</el-form-item>
-			</el-form>
-		</el-card>
-
 		<el-row :gutter="8" style="width: 100%">
 			<el-col :span="12" :xs="24">
-				<el-card class="full-table" shadow="hover" style="margin-top: 8px">
+				<el-card class="full-table" shadow="hover" :body-style="{ paddingBottom: '20' }">
+					<template #header>
+						<el-icon><ele-Collection /></el-icon>字典
+					</template>
+					<el-form :model="state.queryDictTypeParams" ref="queryForm" :inline="true">
+						<el-form-item label="名称">
+							<el-input v-model="state.queryDictTypeParams.name" placeholder="字典名称" clearable />
+						</el-form-item>
+						<!-- <el-form-item label="字典编码">
+							<el-input v-model="state.queryDictTypeParams.code" placeholder="字典编码" clearable />
+						</el-form-item> -->
+						<el-form-item>
+							<el-button-group>
+								<el-button type="primary" icon="ele-Search" @click="handleDictTypeQuery" v-auth="'sysDictType:page'"> 查询 </el-button>
+								<el-button icon="ele-Refresh" @click="resetDictTypeQuery"> 重置 </el-button>
+							</el-button-group>
+						</el-form-item>
+						<el-form-item>
+							<el-button type="primary" icon="ele-Plus" @click="openAddDictType" v-auth="'sysDictType:add'"> 新增 </el-button>
+						</el-form-item>
+					</el-form>
+
 					<el-table :data="state.dictTypeData" style="width: 100%" v-loading="state.loading" border>
 						<el-table-column type="index" label="序号" width="55" align="center" />
 						<el-table-column prop="name" label="字典名称" header-align="center" show-overflow-tooltip />
@@ -87,11 +88,17 @@
 								</el-popover>
 							</template>
 						</el-table-column>
-						<el-table-column label="操作" width="200" fixed="right" align="center" show-overflow-tooltip>
+						<el-table-column label="操作" width="100" fixed="right" align="center" show-overflow-tooltip>
 							<template #default="scope">
-								<el-button icon="ele-Edit" size="small" text type="primary" @click="openEditDictType(scope.row)" v-auth="'sysDictType:update'"> 编辑 </el-button>
-								<el-button icon="ele-Memo" size="small" text type="primary" @click="openDictDataDialog(scope.row)" v-auth="'sysDictType:page'"> 字典 </el-button>
-								<el-button icon="ele-Delete" size="small" text type="danger" @click="delDictType(scope.row)" v-auth="'sysDictType:delete'"> 删除 </el-button>
+								<el-tooltip content="字典值">
+									<el-button icon="ele-Memo" size="small" text type="primary" @click="openDictDataDialog(scope.row)" v-auth="'sysDictType:page'"> </el-button>
+								</el-tooltip>
+								<el-tooltip content="编辑">
+									<el-button icon="ele-Edit" size="small" text type="primary" @click="openEditDictType(scope.row)" v-auth="'sysDictType:update'"> </el-button>
+								</el-tooltip>
+								<el-tooltip content="删除">
+									<el-button icon="ele-Delete" size="small" text type="danger" @click="delDictType(scope.row)" v-auth="'sysDictType:delete'"> </el-button>
+								</el-tooltip>
 							</template>
 						</el-table-column>
 					</el-table>
@@ -108,12 +115,16 @@
 					/>
 				</el-card>
 			</el-col>
+
 			<el-col :span="12" :xs="24">
-				<el-card shadow="hover" :body-style="{ paddingBottom: '0' }" style="margin-top: 8px">
+				<el-card class="full-table" shadow="hover" :body-style="{ paddingBottom: '20' }">
+					<template #header>
+						<el-icon><ele-Collection /></el-icon>字典值
+					</template>
 					<el-form :model="state.queryDictDataParams" ref="queryForm" :inline="true">
-						<el-form-item label="字典值">
+						<!-- <el-form-item label="字典值">
 							<el-input v-model="state.queryDictDataParams.value" placeholder="字典值" />
-						</el-form-item>
+						</el-form-item> -->
 						<el-form-item label="编码">
 							<el-input v-model="state.queryDictDataParams.code" placeholder="编码" />
 						</el-form-item>
@@ -127,16 +138,21 @@
 							<el-button type="primary" icon="ele-Plus" @click="openAddDictData"> 新增 </el-button>
 						</el-form-item>
 					</el-form>
-				</el-card>
-				<el-card class="full-table" shadow="hover" style="margin-top: 8px">
+
 					<el-table :data="state.dictDataData" style="width: 100%" v-loading="state.loading" border>
 						<el-table-column type="index" label="序号" width="55" align="center" />
-						<el-table-column prop="value" label="字典值" header-align="center" min-width="100" show-overflow-tooltip >
+						<el-table-column prop="value" label="字典值" header-align="center" min-width="100" show-overflow-tooltip>
 							<template #default="scope">
-								<el-tag :type="scope.row.tagType" :style="scope.row.styleSetting" :class="scope.row.classSetting" >{{ scope.row.value }}</el-tag>
+								<el-tag :type="scope.row.tagType" :style="scope.row.styleSetting" :class="scope.row.classSetting">{{ scope.row.value }}</el-tag>
 							</template>
 						</el-table-column>
 						<el-table-column prop="code" label="编码" header-align="center" min-width="100" show-overflow-tooltip />
+						<el-table-column prop="extData" label="拓展数据" width="90" align="center">
+							<template #default="scope">
+								<el-tag type="warning" v-if="scope.row.extData == null || scope.row.extData == ''">空</el-tag>
+								<el-tag type="success" v-else>有值</el-tag>
+							</template>
+						</el-table-column>
 						<el-table-column prop="status" label="状态" width="70" align="center" show-overflow-tooltip>
 							<template #default="scope">
 								<el-tag type="success" v-if="scope.row.status === 1">启用</el-tag>
@@ -144,12 +160,6 @@
 							</template>
 						</el-table-column>
 						<el-table-column prop="orderNo" label="排序" width="70" align="center" show-overflow-tooltip />
-						<el-table-column prop="extData" label="拓展数据" width="90" align="center">
-							<template #default="scope">
-								<el-tag type="warning" v-if="scope.row.extData == null || scope.row.extData == ''">空</el-tag>
-								<el-tag type="success" v-else>有值</el-tag>
-							</template>
-						</el-table-column>
 						<el-table-column label="修改记录" width="100" align="center" show-overflow-tooltip>
 							<template #default="scope">
 								<el-popover placement="bottom" width="280" trigger="hover">
@@ -203,10 +213,14 @@
 								</el-popover>
 							</template>
 						</el-table-column>
-						<el-table-column label="操作" width="140" fixed="right" align="center" show-overflow-tooltip>
+						<el-table-column label="操作" width="80" fixed="right" align="center" show-overflow-tooltip>
 							<template #default="scope">
-								<el-button icon="ele-Edit" size="small" text type="primary" @click="openEditDictData(scope.row)"> 编辑 </el-button>
-								<el-button icon="ele-Delete" size="small" text type="danger" @click="delDictData(scope.row)"> 删除 </el-button>
+								<el-tooltip content="编辑">
+									<el-button icon="ele-Edit" size="small" text type="primary" @click="openEditDictData(scope.row)"> </el-button>
+								</el-tooltip>
+								<el-tooltip content="删除">
+									<el-button icon="ele-Delete" size="small" text type="danger" @click="delDictData(scope.row)"> </el-button>
+								</el-tooltip>
 							</template>
 						</el-table-column>
 					</el-table>
@@ -227,7 +241,6 @@
 
 		<EditDictType ref="editDictTypeRef" :title="state.editDictTypeTitle" @handleQuery="handleDictTypeQuery" />
 		<EditDictData ref="editDictDataRef" :title="state.editDictDataTitle" @handleQuery="handleDictDataQuery" />
-		<!-- <DictDataDialog ref="dictDataDialogRef" /> -->
 	</div>
 </template>
 
@@ -237,15 +250,12 @@ import { ElMessageBox, ElMessage } from 'element-plus';
 import EditDictType from '/@/views/system/dict/component/editDictType.vue';
 import EditDictData from '/@/views/system/dict/component/editDictData.vue';
 
-// import DictDataDialog from '/@/views/system/dict/component/dictDataDialog.vue';
-
 import { getAPI } from '/@/utils/axios-utils';
 import { SysDictTypeApi, SysDictDataApi } from '/@/api-services/api';
 import { SysDictType, SysDictData } from '/@/api-services/models';
 
 const editDictTypeRef = ref<InstanceType<typeof EditDictType>>();
 const editDictDataRef = ref<InstanceType<typeof EditDictData>>();
-// const dictDataDialogRef = ref<InstanceType<typeof DictDataDialog>>();
 const state = reactive({
 	loading: false,
 	dictTypeData: [] as Array<SysDictType>,
@@ -260,7 +270,7 @@ const state = reactive({
 		total: 0 as any,
 	},
 	queryDictDataParams: {
-		name: undefined,
+		value: undefined,
 		code: undefined,
 		dictTypeId: 0, // 字典类型Id
 	},
@@ -306,7 +316,7 @@ const resetDictTypeQuery = () => {
 
 // 重置字典值操作
 const resetDictDataQuery = () => {
-	state.queryDictDataParams.name = undefined;
+	state.queryDictDataParams.value = undefined;
 	state.queryDictDataParams.code = undefined;
 	handleDictDataQuery();
 };
@@ -394,4 +404,4 @@ const handleDictDataCurrentChange = (val: number) => {
 	state.tableDictDataParams.page = val;
 	handleDictDataQuery();
 };
-</script>
+</script>

+ 2 - 2
docker/app/Configuration/App.json

@@ -43,7 +43,7 @@
     "PasswordStrengthValidation": "^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~@#$%\\*-\\+=:,\\\\?\\[\\]\\{}]).{6,16}$", // 密码强度验证正则表达式,必须须包含大小写字母、数字和特殊字符的组合,长度在6-16之间
     "PasswordStrengthValidationMsg": "密码必须包含大小写字母、数字和特殊字符的组合,长度在6-16之间", // 密码强度验证消息提示
     "CryptoType": "SM2", // 密码加密算法:MD5、SM2、SM4
-    "PublicKey": "0484c7466d950e120e5ece5dd85d0c90eaa85081a3a2bd7c57ae6dc822efccbd66620c67b0103fc8dd280e36c3b282977b722aaec3c56518edcebafb72c5a05312", // 公钥
-    "PrivateKey": "8edb615b1d48b8be188fc0f18ec08a41df50ea731fa28bf409e6552809e3a111" // 私钥
+    "PublicKey": "0484C7466D950E120E5ECE5DD85D0C90EAA85081A3A2BD7C57AE6DC822EFCCBD66620C67B0103FC8DD280E36C3B282977B722AAEC3C56518EDCEBAFB72C5A05312", // 公钥
+    "PrivateKey": "8EDB615B1D48B8BE188FC0F18EC08A41DF50EA731FA28BF409E6552809E3A111" // 私钥
   }
 }