ソースを参照

完善字典管理,优化页面显示效果

yanglzh 3 年 前
コミット
459bc47c08

+ 14 - 59
src/api/common/dict/data.ts

@@ -1,70 +1,25 @@
-import request from '/@/utils/request';
+import { get } from '/@/utils/request';
 import { ref, toRefs, ToRefs } from 'vue'
+
 // 根据字典类型查询字典数据信息
 export function getDicts(dictType: string, defaultValue?: string): Promise<any> {
-    let dv = defaultValue ?? ''
-    let params = {
-        dictType: dictType,
-        defaultValue: dv
-    }
-    return request({
-        url: '/common/dict/data/get',
-        method: 'get',
-        params: params
-    })
+  let dv = defaultValue ?? ''
+  return get('/common/dict/data/get', {
+    dictType: dictType,
+    defaultValue: dv
+  })
 }
 
 /**
  * 获取字典数据
  */
 export function useDict(...args: string[]): ToRefs<any> {
-    const res: any = ref({});
-    args.forEach((d: string) => {
-        res.value[d] = [];
-        getDicts(d).then(resp => {
-            res.value[d] = resp.data.values.map((p: any) => ({ label: p.value, value: p.key, isDefault: p.isDefault }))
-        })
-    })
-    return toRefs(res.value);
-}
-
-
-export function getDataList(query: Object) {
-    return request({
-        url: '/common/dict/data/list',
-        method: 'get',
-        params: query
-    })
-}
-
-export function getData(dictCode: number) {
-    return request({
-        url: '/common/dict/data/get',
-        method: 'get',
-        params: { dictCode }
-    })
-}
-
-export function addData(data: any) {
-    return request({
-        url: '/common/dict/data/add',
-        method: 'post',
-        data: data
-    })
-}
-
-export function editData(data: any) {
-    return request({
-        url: '/common/dict/data/edit',
-        method: 'put',
-        data: data
-    })
-}
-
-export function deleteData(ids: number[]) {
-    return request({
-        url: '/common/dict/data/delete',
-        method: 'delete',
-        data: { ids }
+  const res: any = ref({});
+  args.forEach((d: string) => {
+    res.value[d] = [];
+    getDicts(d).then(resp => {
+      res.value[d] = resp.data.values.map((p: any) => ({ label: p.value, value: p.key, isDefault: p.isDefault }))
     })
+  })
+  return toRefs(res.value);
 }

+ 2 - 2
src/views/system/dept/index.vue

@@ -33,8 +33,8 @@
         <el-table-column prop="deptName" label="部门名称" show-overflow-tooltip> </el-table-column>
         <el-table-column prop="status" label="部门状态" align="center" min-width="120">
           <template #default="scope">
-            <el-tag type="success" v-if="scope.row.status===1">启用</el-tag>
-            <el-tag type="info" v-else>禁用</el-tag>
+            <el-tag type="success" size="small" v-if="scope.row.status===1">启用</el-tag>
+            <el-tag type="info" size="small" v-else>禁用</el-tag>
           </template>
         </el-table-column>
         <el-table-column prop="orderNum" label="排序" align="center" min-width="120"></el-table-column>

+ 89 - 100
src/views/system/dict/component/editDicData.vue

@@ -1,7 +1,7 @@
 <template>
-	<div class="system-edit-dic-container">
-		<el-dialog :title="(ruleForm.dictCode!==0?'修改':'添加')+'字典'" v-model="isShowDialog" width="769px">
-			<el-form :model="ruleForm" ref="formRef" :rules="rules" size="default" label-width="90px">
+  <div class="system-edit-dic-container">
+    <el-dialog :title="(ruleForm.dictCode!==0?'修改':'添加')+'字典'" v-model="isShowDialog" width="769px">
+      <el-form :model="ruleForm" ref="formRef" :rules="rules" size="default" label-width="90px">
         <el-form-item label="字典类型">
           <el-input v-model="ruleForm.dictType" :disabled="true" />
         </el-form-item>
@@ -16,111 +16,100 @@
         </el-form-item>
 
         <el-form-item label="系统默认">
-          <el-switch v-model="ruleForm.isDefault"
-                     active-text="是"
-                     inactive-text="否"
-                     :active-value="1"
-                     :inactive-value="0"
-          ></el-switch>
+          <el-switch v-model="ruleForm.isDefault" active-text="是" inactive-text="否" :active-value="1" :inactive-value="0"></el-switch>
         </el-form-item>
 
         <el-form-item label="状态" prop="status">
           <el-radio-group v-model="ruleForm.status">
-            <el-radio :label="1" >启用</el-radio>
-            <el-radio :label="0" >禁用</el-radio>
+            <el-radio :label="1">启用</el-radio>
+            <el-radio :label="0">禁用</el-radio>
           </el-radio-group>
         </el-form-item>
         <el-form-item label="备注" prop="remark">
           <el-input v-model="ruleForm.remark" type="textarea" placeholder="请输入内容"></el-input>
         </el-form-item>
-			</el-form>
-			<template #footer>
-				<span class="dialog-footer">
-					<el-button @click="onCancel" size="default">取 消</el-button>
-					<el-button type="primary" @click="onSubmit" size="default">{{ruleForm.dictCode!==0?'修 改':'添 加'}}</el-button>
-				</span>
-			</template>
-		</el-dialog>
-	</div>
+      </el-form>
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button @click="onCancel" size="default">取 消</el-button>
+          <el-button type="primary" @click="onSubmit" size="default">{{ruleForm.dictCode!==0?'修 改':'添 加'}}</el-button>
+        </span>
+      </template>
+    </el-dialog>
+  </div>
 </template>
 
 <script lang="ts">
-import { reactive, toRefs, defineComponent,ref, unref } from 'vue';
-import {ElMessage} from "element-plus";
+import { reactive, toRefs, defineComponent, ref, unref } from 'vue';
+import { ElMessage } from 'element-plus';
 import api from '/@/api/system';
 interface RuleFormState {
-  dictCode: number;
-  dictLabel: string;
-  dictValue: string;
-  dictSort:number;
-  isDefault:number;
-  status:number;
-  remark:string;
-  dictType:string;
+	dictCode: number;
+	dictLabel: string;
+	dictValue: string;
+	dictSort: number;
+	isDefault: number;
+	status: number;
+	remark: string;
+	dictType: string;
 }
 interface DicState {
 	isShowDialog: boolean;
 	ruleForm: RuleFormState;
-  rules:{}
+	rules: {};
 }
 
 export default defineComponent({
 	name: 'systemEditDicData',
-  props:{
-    dictType:{
-      type:String,
-      default:()=>''
-    }
-  },
-	setup(prop,{emit}) {
-    const formRef = ref<HTMLElement | null>(null);
+	props: {
+		dictType: {
+			type: String,
+			default: () => '',
+		},
+	},
+	setup(prop, { emit }) {
+		const formRef = ref<HTMLElement | null>(null);
 		const state = reactive<DicState>({
 			isShowDialog: false,
 			ruleForm: {
-        dictCode: 0,
-        dictLabel: '',
-        dictValue: '',
-        dictSort: 0,
-        isDefault:0,
-        status: 1,
-        remark: '',
-        dictType:prop.dictType
+				dictCode: 0,
+				dictLabel: '',
+				dictValue: '',
+				dictSort: 0,
+				isDefault: 0,
+				status: 1,
+				remark: '',
+				dictType: prop.dictType,
+			},
+			rules: {
+				dictLabel: [{ required: true, message: '数据标签不能为空', trigger: 'blur' }],
+				dictValue: [{ required: true, message: '数据键值不能为空', trigger: 'blur' }],
+				dictSort: [{ required: true, message: '数据顺序不能为空', trigger: 'blur' }],
 			},
-      rules: {
-        dictLabel: [
-          { required: true, message: "数据标签不能为空", trigger: "blur" }
-        ],
-        dictValue: [
-          { required: true, message: "数据键值不能为空", trigger: "blur" }
-        ],
-        dictSort: [
-          { required: true, message: "数据顺序不能为空", trigger: "blur" }
-        ]
-      }
 		});
 		// 打开弹窗
-		const openDialog = (row: RuleFormState|null) => {
-      resetForm();
-      if (row){
-        api.dict.getData(row.dictCode).then((res:any)=>{
-          state.ruleForm = res.data.dict
-        })
-        state.ruleForm = row;
-      }
+		const openDialog = (row: RuleFormState | null) => {
+			resetForm();
+			if (row) {
+				api.dict.getData(row.dictCode).then((res: any) => {
+					state.ruleForm = res.data.dict;
+				});
+				state.ruleForm = row;
+			}
 			state.isShowDialog = true;
 		};
-    const resetForm = ()=>{
-      state.ruleForm = {
-        dictCode: 0,
-        dictLabel: '',
-        dictValue: '',
-        dictSort: 0,
-        isDefault:0,
-        status: 1,
-        remark: '',
-        dictType:prop.dictType
-      }
-    };
+		const resetForm = () => {
+			state.ruleForm = {
+				dictCode: 0,
+				dictLabel: '',
+				dictValue: '',
+				dictSort: 0,
+				isDefault: 0,
+				status: 1,
+				remark: '',
+				dictType: prop.dictType,
+			};
+		};
 		// 关闭弹窗
 		const closeDialog = () => {
 			state.isShowDialog = false;
@@ -131,34 +120,34 @@ export default defineComponent({
 		};
 		// 新增
 		const onSubmit = () => {
-      const formWrap = unref(formRef) as any;
-      if (!formWrap) return;
-      formWrap.validate((valid: boolean) => {
-        if (valid) {
-          if(state.ruleForm.dictCode!==0){
-            //修改
-            api.dict.editData(state.ruleForm).then(()=>{
-              ElMessage.success('字典数据修改成功');
-              closeDialog(); // 关闭弹窗
-              emit('dataList')
-            })
-          }else{
-            //添加
-            api.dict.addData(state.ruleForm).then(()=>{
-              ElMessage.success('字典数据添加成功');
-              closeDialog(); // 关闭弹窗
-              emit('dataList')
-            })
-          }
-        }
-      });
+			const formWrap = unref(formRef) as any;
+			if (!formWrap) return;
+			formWrap.validate((valid: boolean) => {
+				if (valid) {
+					if (state.ruleForm.dictCode !== 0) {
+						//修改
+						api.dict.editData(state.ruleForm).then(() => {
+							ElMessage.success('字典数据修改成功');
+							closeDialog(); // 关闭弹窗
+							emit('dataList');
+						});
+					} else {
+						//添加
+						api.dict.addData(state.ruleForm).then(() => {
+							ElMessage.success('字典数据添加成功');
+							closeDialog(); // 关闭弹窗
+							emit('dataList');
+						});
+					}
+				}
+			});
 		};
 		return {
 			openDialog,
 			closeDialog,
 			onCancel,
 			onSubmit,
-      formRef,
+			formRef,
 			...toRefs(state),
 		};
 	},

+ 10 - 16
src/views/system/dict/dataList.vue

@@ -23,12 +23,6 @@
               </el-icon>
               查询
             </el-button>
-            <el-button size="default" @click="resetQuery(queryRef)">
-              <el-icon>
-                <ele-Refresh />
-              </el-icon>
-              重置
-            </el-button>
             <el-button size="default" type="success" class="ml10" @click="onOpenAddDic">
               <el-icon>
                 <ele-FolderAdd />
@@ -46,22 +40,22 @@
       </div>
       <el-table :data="tableData.data" style="width: 100%" @selection-change="handleSelectionChange">
         <el-table-column type="selection" width="55" align="center" />
-        <el-table-column label="字典编码" align="center" prop="dictCode" />
+        <el-table-column label="字典编码" width="90"  align="center" prop="dictCode" />
         <el-table-column label="字典标签" align="center" prop="dictLabel" />
         <el-table-column label="字典键值" align="center" prop="dictValue" />
-        <el-table-column label="字典排序" align="center" prop="dictSort" />
+        <el-table-column label="字典排序" width="100" align="center" prop="dictSort" />
         <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
         <el-table-column label="创建时间" align="center" prop="createdAt" width="180" />
-        <el-table-column prop="status" label="字典状态" show-overflow-tooltip>
+        <el-table-column prop="status" label="字典状态" width="120" align="center">
           <template #default="scope">
-            <el-tag type="success" v-if="scope.row.status">启用</el-tag>
-            <el-tag type="info" v-else>禁用</el-tag>
+            <el-tag type="success" size="small" v-if="scope.row.status">启用</el-tag>
+            <el-tag type="info" size="small" v-else>禁用</el-tag>
           </template>
         </el-table-column>
-        <el-table-column label="操作" width="100">
+        <el-table-column label="操作" width="100" align="center">
           <template #default="scope">
-            <el-button size="small" type="text" @click="onOpenEditDic(scope.row)">修改</el-button>
-            <el-button size="small" type="text" @click="onRowDel(scope.row)">删除</el-button>
+            <el-button size="small" text type="warning" @click="onOpenEditDic(scope.row)">修改</el-button>
+            <el-button size="small" text type="danger" @click="onRowDel(scope.row)">删除</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -134,8 +128,8 @@ export default defineComponent({
 		};
 		const dataList = () => {
 			api.dict.getDataList(state.tableData.param).then((res: any) => {
-				state.tableData.data = res.data.list;
-				state.tableData.total = res.data.total;
+				state.tableData.data = res.list;
+				state.tableData.total = res.total;
 			});
 		};
 		// 打开新增字典弹窗

+ 2 - 2
src/views/system/org/index.vue

@@ -33,8 +33,8 @@
         <el-table-column prop="name" label="组织名称" show-overflow-tooltip> </el-table-column>
         <el-table-column prop="status" label="组织状态" align="center" min-width="120">
           <template #default="scope">
-            <el-tag type="success" v-if="scope.row.status===1">启用</el-tag>
-            <el-tag type="info" v-else>禁用</el-tag>
+            <el-tag type="success" size="small" v-if="scope.row.status===1">启用</el-tag>
+            <el-tag type="info" size="small" v-else>禁用</el-tag>
           </template>
         </el-table-column>
         <el-table-column prop="orderNum" label="排序" align="center" min-width="120"></el-table-column>

+ 2 - 2
src/views/system/post/index.vue

@@ -46,8 +46,8 @@
         <el-table-column prop="postSort" label="排序" width="60" align="center"></el-table-column>
         <el-table-column prop="status" label="岗位状态" width="120" align="center">
           <template #default="scope">
-            <el-tag type="success" v-if="scope.row.status===1">启用</el-tag>
-            <el-tag type="info" v-else>禁用</el-tag>
+            <el-tag type="success" size="small" v-if="scope.row.status===1">启用</el-tag>
+            <el-tag type="info" size="small" v-else>禁用</el-tag>
           </template>
         </el-table-column>
         <el-table-column prop="remark" label="岗位描述" show-overflow-tooltip></el-table-column>

+ 2 - 2
src/views/system/role/index.vue

@@ -36,8 +36,8 @@
         <el-table-column prop="listOrder" label="排序" width="60" align="center"></el-table-column>
         <el-table-column prop="status" label="角色状态" width="100" align="center">
           <template #default="scope">
-            <el-tag type="success" v-if="scope.row.status===1">启用</el-tag>
-            <el-tag type="info" v-else>禁用</el-tag>
+            <el-tag type="success" size="small" v-if="scope.row.status===1">启用</el-tag>
+            <el-tag type="info" size="small" v-else>禁用</el-tag>
           </template>
         </el-table-column>
         <el-table-column prop="createdAt" label="创建时间" width="170" align="center"></el-table-column>