From 12ab8b03d9acb77848c4db9bb0451e77af60acb6 Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期五, 17 九月 2021 15:36:54 +0800 Subject: [PATCH] 使用vue-data-dict,简化数据字典使用 --- ruoyi-ui/src/views/monitor/job/log.vue | 31 - ruoyi-ui/src/views/system/role/index.vue | 22 ruoyi-ui/src/views/system/menu/index.vue | 37 +- ruoyi-ui/src/views/system/user/index.vue | 35 - ruoyi-ui/src/utils/dict/DictMeta.js | 38 ++ ruoyi-ui/src/views/system/dict/index.vue | 24 - ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java | 22 + ruoyi-ui/src/main.js | 3 ruoyi-ui/src/utils/dict/Dict.js | 82 +++++ ruoyi-ui/src/views/monitor/logininfor/index.vue | 16 ruoyi-ui/src/views/system/post/index.vue | 24 - ruoyi-ui/src/views/system/dict/data.vue | 24 - ruoyi-ui/src/views/system/role/selectUser.vue | 10 ruoyi-ui/src/utils/ruoyi.js | 20 + ruoyi-ui/src/views/system/role/authUser.vue | 8 ruoyi-ui/src/components/DictTag/index.vue | 20 ruoyi-ui/src/views/system/notice/index.vue | 39 +- ruoyi-generator/src/main/resources/vm/vue/index.vue.vm | 55 +-- ruoyi-ui/src/views/system/dept/index.vue | 24 - ruoyi-ui/src/views/monitor/job/index.vue | 47 +-- ruoyi-ui/src/views/monitor/operlog/index.vue | 33 - ruoyi-ui/src/views/system/config/index.vue | 24 - ruoyi-ui/src/utils/dict/DictConverter.js | 17 + ruoyi-ui/src/utils/dict/index.js | 33 ++ ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm | 55 +-- ruoyi-ui/src/utils/dict/DictOptions.js | 51 +++ ruoyi-ui/src/components/DictData/index.js | 21 + ruoyi-ui/src/utils/dict/DictData.js | 13 28 files changed, 503 insertions(+), 325 deletions(-) diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java index 6481057..2683ec8 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java @@ -58,6 +58,7 @@ velocityContext.put("permissionPrefix", getPermissionPrefix(moduleName, businessName)); velocityContext.put("columns", genTable.getColumns()); velocityContext.put("table", genTable); + velocityContext.put("dicts", getDicts(genTable)); setMenuVelocityContext(velocityContext, genTable); if (GenConstants.TPL_TREE.equals(tplCategory)) { @@ -261,6 +262,27 @@ } /** + * 根据列类型获取字典组 + * + * @param genTable 业务表对象 + * @return 返回字典组 + */ + public static String getDicts(GenTable genTable) + { + List<GenTableColumn> columns = genTable.getColumns(); + List<String> dicts = new ArrayList<String>(); + for (GenTableColumn column : columns) + { + if (!column.isSuperColumn() && StringUtils.isNotEmpty(column.getDictType()) && StringUtils.equalsAny( + column.getHtmlType(), new String[] { GenConstants.HTML_SELECT, GenConstants.HTML_RADIO })) + { + dicts.add("'" + column.getDictType() + "'"); + } + } + return StringUtils.join(dicts, ", "); + } + + /** * 获取权限前缀 * * @param moduleName 模块名称 diff --git a/ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm b/ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm index 51c447e..c2383c0 100644 --- a/ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm +++ b/ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm @@ -25,10 +25,10 @@ <el-form-item label="${comment}" prop="${column.javaField}"> <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable size="small"> <el-option - v-for="dict in ${column.javaField}Options" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" + v-for="dict in dict.type.${dictType}" + :key="dict.value" + :label="dict.label" + :value="dict.value" /> </el-select> </el-form-item> @@ -108,7 +108,7 @@ #elseif($column.list && "" != $column.dictType) <el-table-column label="${comment}" align="center" prop="${javaField}"> <template slot-scope="scope"> - <dict-tag :options="${javaField}Options" :value="scope.row.${javaField}"/> + <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.${javaField}"/> </template> </el-table-column> #elseif($column.list && "" != $javaField) @@ -184,10 +184,10 @@ <el-form-item label="${comment}" prop="${field}"> <el-select v-model="form.${field}" placeholder="请选择${comment}"> <el-option - v-for="dict in ${field}Options" - :key="dict.dictValue" - :label="dict.dictLabel" - #if($column.javaType == "Integer" || $column.javaType == "Long"):value="parseInt(dict.dictValue)"#else:value="dict.dictValue"#end + v-for="dict in dict.type.${dictType}" + :key="dict.value" + :label="dict.label" + #if($column.javaType == "Integer" || $column.javaType == "Long"):value="parseInt(dict.value)"#else:value="dict.value"#end ></el-option> </el-select> @@ -202,10 +202,10 @@ <el-form-item label="${comment}"> <el-checkbox-group v-model="form.${field}"> <el-checkbox - v-for="dict in ${field}Options" - :key="dict.dictValue" - :label="dict.dictValue"> - {{dict.dictLabel}} + v-for="dict in dict.type.${dictType}" + :key="dict.value" + :label="dict.value"> + {{dict.label}} </el-checkbox> </el-checkbox-group> </el-form-item> @@ -219,11 +219,11 @@ <el-form-item label="${comment}"> <el-radio-group v-model="form.${field}"> <el-radio - v-for="dict in ${field}Options" - :key="dict.dictValue" - #if($column.javaType == "Integer" || $column.javaType == "Long"):label="parseInt(dict.dictValue)"#else:label="dict.dictValue"#end + v-for="dict in dict.type.${dictType}" + :key="dict.value" + #if($column.javaType == "Integer" || $column.javaType == "Long"):label="parseInt(dict.value)"#else:label="dict.value"#end - >{{dict.dictLabel}}</el-radio> + >{{dict.label}}</el-radio> </el-radio-group> </el-form-item> #elseif($column.htmlType == "radio" && $dictType) @@ -265,6 +265,9 @@ export default { name: "${BusinessName}", +#if(${dicts} != '') + dicts: [${dicts}], +#end components: { Treeselect }, @@ -283,16 +286,7 @@ // 是否显示弹出层 open: false, #foreach ($column in $columns) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end -#if(${column.dictType} != '') - // $comment字典 - ${column.javaField}Options: [], -#elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN") +#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) // $comment时间范围 daterange${AttrName}: [], @@ -330,13 +324,6 @@ }, created() { this.getList(); -#foreach ($column in $columns) -#if(${column.dictType} != '') - this.getDicts("${column.dictType}").then(response => { - this.${column.javaField}Options = response.data; - }); -#end -#end }, methods: { /** 查询${functionName}列表 */ diff --git a/ruoyi-generator/src/main/resources/vm/vue/index.vue.vm b/ruoyi-generator/src/main/resources/vm/vue/index.vue.vm index 0086559..67d72b1 100644 --- a/ruoyi-generator/src/main/resources/vm/vue/index.vue.vm +++ b/ruoyi-generator/src/main/resources/vm/vue/index.vue.vm @@ -25,10 +25,10 @@ <el-form-item label="${comment}" prop="${column.javaField}"> <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable size="small"> <el-option - v-for="dict in ${column.javaField}Options" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" + v-for="dict in dict.type.${dictType}" + :key="dict.value" + :label="dict.label" + :value="dict.value" /> </el-select> </el-form-item> @@ -137,7 +137,7 @@ #elseif($column.list && "" != $column.dictType) <el-table-column label="${comment}" align="center" prop="${javaField}"> <template slot-scope="scope"> - <dict-tag :options="${javaField}Options" :value="scope.row.${javaField}"/> + <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.${javaField}"/> </template> </el-table-column> #elseif($column.list && "" != $javaField) @@ -206,10 +206,10 @@ <el-form-item label="${comment}" prop="${field}"> <el-select v-model="form.${field}" placeholder="请选择${comment}"> <el-option - v-for="dict in ${field}Options" - :key="dict.dictValue" - :label="dict.dictLabel" - #if($column.javaType == "Integer" || $column.javaType == "Long"):value="parseInt(dict.dictValue)"#else:value="dict.dictValue"#end + v-for="dict in dict.type.${dictType}" + :key="dict.value" + :label="dict.label" + #if($column.javaType == "Integer" || $column.javaType == "Long"):value="parseInt(dict.value)"#else:value="dict.value"#end ></el-option> </el-select> @@ -224,10 +224,10 @@ <el-form-item label="${comment}"> <el-checkbox-group v-model="form.${field}"> <el-checkbox - v-for="dict in ${field}Options" - :key="dict.dictValue" - :label="dict.dictValue"> - {{dict.dictLabel}} + v-for="dict in dict.type.${dictType}" + :key="dict.value" + :label="dict.value"> + {{dict.label}} </el-checkbox> </el-checkbox-group> </el-form-item> @@ -241,11 +241,11 @@ <el-form-item label="${comment}"> <el-radio-group v-model="form.${field}"> <el-radio - v-for="dict in ${field}Options" - :key="dict.dictValue" - #if($column.javaType == "Integer" || $column.javaType == "Long"):label="parseInt(dict.dictValue)"#else:label="dict.dictValue"#end + v-for="dict in dict.type.${dictType}" + :key="dict.value" + #if($column.javaType == "Integer" || $column.javaType == "Long"):label="parseInt(dict.value)"#else:label="dict.value"#end - >{{dict.dictLabel}}</el-radio> + >{{dict.label}}</el-radio> </el-radio-group> </el-form-item> #elseif($column.htmlType == "radio" && $dictType) @@ -317,6 +317,9 @@ export default { name: "${BusinessName}", +#if(${dicts} != '') + dicts: [${dicts}], +#end data() { return { // 遮罩层 @@ -348,16 +351,7 @@ // 是否显示弹出层 open: false, #foreach ($column in $columns) -#set($parentheseIndex=$column.columnComment.indexOf("(")) -#if($parentheseIndex != -1) -#set($comment=$column.columnComment.substring(0, $parentheseIndex)) -#else -#set($comment=$column.columnComment) -#end -#if(${column.dictType} != '') - // $comment字典 - ${column.javaField}Options: [], -#elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN") +#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) // $comment时间范围 daterange${AttrName}: [], @@ -397,13 +391,6 @@ }, created() { this.getList(); -#foreach ($column in $columns) -#if(${column.dictType} != '') - this.getDicts("${column.dictType}").then(response => { - this.${column.javaField}Options = response.data; - }); -#end -#end }, methods: { /** 查询${functionName}列表 */ diff --git a/ruoyi-ui/src/components/DictData/index.js b/ruoyi-ui/src/components/DictData/index.js new file mode 100644 index 0000000..24e3e9c --- /dev/null +++ b/ruoyi-ui/src/components/DictData/index.js @@ -0,0 +1,21 @@ +import Vue from 'vue' +import DataDict from '@/utils/dict' +import { getDicts as getDicts } from '@/api/system/dict/data' + +function install() { + Vue.use(DataDict, { + metas: { + '*': { + labelField: 'dictLabel', + valueField: 'dictValue', + request(dictMeta) { + return getDicts(dictMeta.type).then(res => res.data) + }, + }, + }, + }) +} + +export default { + install, +} \ No newline at end of file diff --git a/ruoyi-ui/src/components/DictTag/index.vue b/ruoyi-ui/src/components/DictTag/index.vue index b0484bc..4c196c4 100644 --- a/ruoyi-ui/src/components/DictTag/index.vue +++ b/ruoyi-ui/src/components/DictTag/index.vue @@ -1,23 +1,23 @@ <template> <div> <template v-for="(item, index) in options"> - <template v-if="values.includes(item.dictValue)"> + <template v-if="values.includes(item.value)"> <span - v-if="item.listClass == 'default' || item.listClass == ''" - :key="item.dictValue" + v-if="item.raw.listClass == 'default' || item.raw.listClass == ''" + :key="item.value" :index="index" - :class="item.cssClass" - >{{ item.dictLabel }}</span + :class="item.raw.cssClass" + >{{ item.label }}</span > <el-tag v-else :disable-transitions="true" - :key="item.dictValue" + :key="item.value" :index="index" - :type="item.listClass == 'primary' ? '' : item.listClass" - :class="item.cssClass" + :type="item.raw.listClass == 'primary' ? '' : item.raw.listClass" + :class="item.raw.cssClass" > - {{ item.dictLabel }} + {{ item.label }} </el-tag> </template> </template> @@ -49,4 +49,4 @@ .el-tag + .el-tag { margin-left: 10px; } -</style> +</style> \ No newline at end of file diff --git a/ruoyi-ui/src/main.js b/ruoyi-ui/src/main.js index 292cbb4..e055dd4 100644 --- a/ruoyi-ui/src/main.js +++ b/ruoyi-ui/src/main.js @@ -30,6 +30,8 @@ import DictTag from '@/components/DictTag' // 头部标签组件 import VueMeta from 'vue-meta' +// 字典数据组件 +import DictData from '@/components/DictData' // 全局方法挂载 Vue.prototype.getDicts = getDicts @@ -64,6 +66,7 @@ Vue.use(directive) Vue.use(VueMeta) +DictData.install() /** * If you don't want to use mock-server diff --git a/ruoyi-ui/src/utils/dict/Dict.js b/ruoyi-ui/src/utils/dict/Dict.js new file mode 100644 index 0000000..22db32f --- /dev/null +++ b/ruoyi-ui/src/utils/dict/Dict.js @@ -0,0 +1,82 @@ +import Vue from 'vue' +import { mergeRecursive } from "@/utils/ruoyi"; +import DictMeta from './DictMeta' +import DictData from './DictData' + +const DEFAULT_DICT_OPTIONS = { + types: [], +} + +/** + * @classdesc 字典 + * @property {Object} label 标签对象,内部属性名为字典类型名称 + * @property {Object} dict 字段数组,内部属性名为字典类型名称 + * @property {Array.<DictMeta>} _dictMetas 字典元数据数组 + */ +export default class Dict { + constructor() { + this.owner = null + this.label = {} + this.type = {} + } + + init(options) { + if (options instanceof Array) { + options = { types: options } + } + const opts = mergeRecursive(DEFAULT_DICT_OPTIONS, options) + if (opts.types === undefined) { + throw new Error('need dict types') + } + const ps = [] + this._dictMetas = opts.types.map(t => DictMeta.parse(t)) + this._dictMetas.forEach(dictMeta => { + const type = dictMeta.type + Vue.set(this.label, type, {}) + Vue.set(this.type, type, []) + if (dictMeta.lazy) { + return + } + ps.push(loadDict(this, dictMeta)) + }) + return Promise.all(ps) + } + + /** + * 重新加载字典 + * @param {String} type 字典类型 + */ + reloadDict(type) { + const dictMeta = this._dictMetas.find(e => e.type === type) + if (dictMeta === undefined) { + return Promise.reject(`the dict meta of ${type} was not found`) + } + return loadDict(this, dictMeta) + } +} + +/** + * 加载字典 + * @param {Dict} dict 字典 + * @param {DictMeta} dictMeta 字典元数据 + * @returns {Promise} + */ +function loadDict(dict, dictMeta) { + return dictMeta.request(dictMeta) + .then(response => { + const type = dictMeta.type + let dicts = dictMeta.responseConverter(response, dictMeta) + if (!(dicts instanceof Array)) { + console.error('the return of responseConverter must be Array.<DictData>') + dicts = [] + } else if (dicts.filter(d => d instanceof DictData).length !== dicts.length) { + console.error('the type of elements in dicts must be DictData') + dicts = [] + } + dict.type[type].splice(0, Number.MAX_SAFE_INTEGER, ...dicts) + dicts.forEach(d => { + Vue.set(dict.label[type], d.value, d.label) + }) + return dicts + }) +} diff --git a/ruoyi-ui/src/utils/dict/DictConverter.js b/ruoyi-ui/src/utils/dict/DictConverter.js new file mode 100644 index 0000000..576ff54 --- /dev/null +++ b/ruoyi-ui/src/utils/dict/DictConverter.js @@ -0,0 +1,17 @@ +import DictOptions from './DictOptions' +import DictData from './DictData' + +export default function(dict, dictMeta) { + const label = determineDictField(dict, dictMeta.labelField, ...DictOptions.DEFAULT_LABEL_FIELDS) + const value = determineDictField(dict, dictMeta.valueField, ...DictOptions.DEFAULT_VALUE_FIELDS) + return new DictData(dict[label], dict[value], dict) +} + +/** + * 确定字典字段 + * @param {DictData} dict + * @param {...String} fields + */ +function determineDictField(dict, ...fields) { + return fields.find(f => Object.prototype.hasOwnProperty.call(dict, f)) +} diff --git a/ruoyi-ui/src/utils/dict/DictData.js b/ruoyi-ui/src/utils/dict/DictData.js new file mode 100644 index 0000000..37a60d5 --- /dev/null +++ b/ruoyi-ui/src/utils/dict/DictData.js @@ -0,0 +1,13 @@ +/** + * @classdesc 字典数据 + * @property {String} label 标签 + * @property {*} value 标签 + * @property {Object} raw 原始数据 + */ +export default class DictData { + constructor(label, value, raw) { + this.label = label + this.value = value + this.raw = raw + } +} diff --git a/ruoyi-ui/src/utils/dict/DictMeta.js b/ruoyi-ui/src/utils/dict/DictMeta.js new file mode 100644 index 0000000..8ae6133 --- /dev/null +++ b/ruoyi-ui/src/utils/dict/DictMeta.js @@ -0,0 +1,38 @@ +import { mergeRecursive } from "@/utils/ruoyi"; +import DictOptions from './DictOptions' + +/** + * @classdesc 字典元数据 + * @property {String} type 类型 + * @property {Function} request 请求 + * @property {String} label 标签字段 + * @property {String} value 值字段 + */ +export default class DictMeta { + constructor(options) { + this.type = options.type + this.request = options.request, + this.responseConverter = options.responseConverter + this.labelField = options.labelField + this.valueField = options.valueField + this.lazy = options.lazy === true + } +} + + +/** + * 解析字典元数据 + * @param {Object} options + * @returns {DictMeta} + */ +DictMeta.parse= function(options) { + let opts = null + if (typeof options === 'string') { + opts = DictOptions.metas[options] || {} + opts.type = options + } else if (typeof options === 'object') { + opts = options + } + opts = mergeRecursive(DictOptions.metas['*'], opts) + return new DictMeta(opts) +} diff --git a/ruoyi-ui/src/utils/dict/DictOptions.js b/ruoyi-ui/src/utils/dict/DictOptions.js new file mode 100644 index 0000000..5e1cc41 --- /dev/null +++ b/ruoyi-ui/src/utils/dict/DictOptions.js @@ -0,0 +1,51 @@ +import { mergeRecursive } from "@/utils/ruoyi"; +import dictConverter from './DictConverter' + +export const options = { + metas: { + '*': { + /** + * 字典请求,方法签名为function(dictMeta: DictMeta): Promise + */ + request: (dictMeta) => { + console.log(`load dict ${dictMeta.type}`) + return Promise.resolve([]) + }, + /** + * 字典响应数据转换器,方法签名为function(response: Object, dictMeta: DictMeta): DictData + */ + responseConverter, + labelField: 'label', + valueField: 'value', + }, + }, + /** + * 默认标签字段 + */ + DEFAULT_LABEL_FIELDS: ['label', 'name', 'title'], + /** + * 默认值字段 + */ + DEFAULT_VALUE_FIELDS: ['value', 'id', 'uid', 'key'], +} + +/** + * 映射字典 + * @param {Object} response 字典数据 + * @param {DictMeta} dictMeta 字典元数据 + * @returns {DictData} + */ +function responseConverter(response, dictMeta) { + const dicts = response.content instanceof Array ? response.content : response + if (dicts === undefined) { + console.warn(`no dict data of "${dictMeta.type}" found in the response`) + return [] + } + return dicts.map(d => dictConverter(d, dictMeta)) +} + +export function mergeOptions(src) { + mergeRecursive(options, src) +} + +export default options diff --git a/ruoyi-ui/src/utils/dict/index.js b/ruoyi-ui/src/utils/dict/index.js new file mode 100644 index 0000000..66ddfef --- /dev/null +++ b/ruoyi-ui/src/utils/dict/index.js @@ -0,0 +1,33 @@ +import Dict from './Dict' +import { mergeOptions } from './DictOptions' + +export default function(Vue, options) { + mergeOptions(options) + Vue.mixin({ + data() { + if (this.$options.dicts === undefined || this.$options.dicts === null) { + return {} + } + const dict = new Dict() + dict.owner = this + return { + dict + } + }, + created() { + if (!(this.dict instanceof Dict)) { + return + } + options.onCreated && options.onCreated(this.dict) + this.dict.init(this.$options.dicts).then(() => { + options.onReady && options.onReady(this.dict) + this.$nextTick(() => { + this.$emit('dictReady', this.dict) + if (this.$options.methods && this.$options.methods.onDictReady instanceof Function) { + this.$options.methods.onDictReady.call(this, this.dict) + } + }) + }) + }, + }) +} diff --git a/ruoyi-ui/src/utils/ruoyi.js b/ruoyi-ui/src/utils/ruoyi.js index c136ed0..5669a43 100644 --- a/ruoyi-ui/src/utils/ruoyi.js +++ b/ruoyi-ui/src/utils/ruoyi.js @@ -72,8 +72,8 @@ export function selectDictLabel(datas, value) { var actions = []; Object.keys(datas).some((key) => { - if (datas[key].dictValue == ('' + value)) { - actions.push(datas[key].dictLabel); + if (datas[key].value == ('' + value)) { + actions.push(datas[key].label); return true; } }) @@ -122,6 +122,22 @@ return str; } +// 数据合并 +export function mergeRecursive(source, target) { + for (var p in target) { + try { + if (target[p].constructor == Object) { + source[p] = mergeRecursive(source[p], target[p]); + } else { + source[p] = target[p]; + } + } catch(e) { + source[p] = target[p]; + } + } + return source; +}; + /** * 构造树型结构数据 * @param {*} data 数据源 diff --git a/ruoyi-ui/src/views/monitor/job/index.vue b/ruoyi-ui/src/views/monitor/job/index.vue index 753309e..a8928b6 100644 --- a/ruoyi-ui/src/views/monitor/job/index.vue +++ b/ruoyi-ui/src/views/monitor/job/index.vue @@ -13,20 +13,20 @@ <el-form-item label="任务组名" prop="jobGroup"> <el-select v-model="queryParams.jobGroup" placeholder="请选择任务组名" clearable size="small"> <el-option - v-for="dict in jobGroupOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" + v-for="dict in dict.type.sys_job_group" + :key="dict.value" + :label="dict.label" + :value="dict.value" /> </el-select> </el-form-item> <el-form-item label="任务状态" prop="status"> <el-select v-model="queryParams.status" placeholder="请选择任务状态" clearable size="small"> <el-option - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" + v-for="dict in dict.type.sys_job_status" + :key="dict.value" + :label="dict.label" + :value="dict.value" /> </el-select> </el-form-item> @@ -99,7 +99,7 @@ <el-table-column label="任务名称" align="center" prop="jobName" :show-overflow-tooltip="true" /> <el-table-column label="任务组名" align="center" prop="jobGroup"> <template slot-scope="scope"> - <dict-tag :options="jobGroupOptions" :value="scope.row.jobGroup"/> + <dict-tag :options="dict.type.sys_job_group" :value="scope.row.jobGroup"/> </template> </el-table-column> <el-table-column label="调用目标字符串" align="center" prop="invokeTarget" :show-overflow-tooltip="true" /> @@ -168,10 +168,10 @@ <el-form-item label="任务分组" prop="jobGroup"> <el-select v-model="form.jobGroup" placeholder="请选择"> <el-option - v-for="dict in jobGroupOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" + v-for="dict in dict.type.sys_job_group" + :key="dict.value" + :label="dict.label" + :value="dict.value" ></el-option> </el-select> </el-form-item> @@ -225,10 +225,10 @@ <el-form-item label="状态"> <el-radio-group v-model="form.status"> <el-radio - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictValue" - >{{dict.dictLabel}}</el-radio> + v-for="dict in dict.type.sys_job_status" + :key="dict.value" + :label="dict.value" + >{{dict.label}}</el-radio> </el-radio-group> </el-form-item> </el-col> @@ -301,6 +301,7 @@ export default { components: { Crontab }, name: "Job", + dicts: ['sys_job_group', 'sys_job_status'], data() { return { // 遮罩层 @@ -329,10 +330,6 @@ openCron: false, // 传入的表达式 expression: "", - // 任务组名字典 - jobGroupOptions: [], - // 状态字典 - statusOptions: [], // 查询参数 queryParams: { pageNum: 1, @@ -359,12 +356,6 @@ }, created() { this.getList(); - this.getDicts("sys_job_group").then(response => { - this.jobGroupOptions = response.data; - }); - this.getDicts("sys_job_status").then(response => { - this.statusOptions = response.data; - }); }, methods: { /** 查询定时任务列表 */ @@ -378,7 +369,7 @@ }, // 任务组名字典翻译 jobGroupFormat(row, column) { - return this.selectDictLabel(this.jobGroupOptions, row.jobGroup); + return this.selectDictLabel(this.dict.type.sys_job_group, row.jobGroup); }, // 取消按钮 cancel() { diff --git a/ruoyi-ui/src/views/monitor/job/log.vue b/ruoyi-ui/src/views/monitor/job/log.vue index b55b011..c7ccaa8 100644 --- a/ruoyi-ui/src/views/monitor/job/log.vue +++ b/ruoyi-ui/src/views/monitor/job/log.vue @@ -20,10 +20,10 @@ style="width: 240px" > <el-option - v-for="dict in jobGroupOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" + v-for="dict in dict.type.sys_job_group" + :key="dict.value" + :label="dict.label" + :value="dict.value" /> </el-select> </el-form-item> @@ -36,10 +36,10 @@ style="width: 240px" > <el-option - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" + v-for="dict in dict.type.sys_common_status" + :key="dict.value" + :label="dict.label" + :value="dict.value" /> </el-select> </el-form-item> @@ -112,14 +112,14 @@ <el-table-column label="任务名称" align="center" prop="jobName" :show-overflow-tooltip="true" /> <el-table-column label="任务组名" align="center" prop="jobGroup" :show-overflow-tooltip="true"> <template slot-scope="scope"> - <dict-tag :options="jobGroupOptions" :value="scope.row.jobGroup"/> + <dict-tag :options="dict.type.sys_job_group" :value="scope.row.jobGroup"/> </template> </el-table-column> <el-table-column label="调用目标字符串" align="center" prop="invokeTarget" :show-overflow-tooltip="true" /> <el-table-column label="日志信息" align="center" prop="jobMessage" :show-overflow-tooltip="true" /> <el-table-column label="执行状态" align="center" prop="status"> <template slot-scope="scope"> - <dict-tag :options="statusOptions" :value="scope.row.status"/> + <dict-tag :options="dict.type.sys_common_status" :value="scope.row.status"/> </template> </el-table-column> <el-table-column label="执行时间" align="center" prop="createTime" width="180"> @@ -190,6 +190,7 @@ export default { name: "JobLog", + dicts: ['sys_common_status', 'sys_job_group'], data() { return { // 遮罩层 @@ -212,10 +213,6 @@ dateRange: [], // 表单参数 form: {}, - // 执行状态字典 - statusOptions: [], - // 任务组名字典 - jobGroupOptions: [], // 查询参数 queryParams: { pageNum: 1, @@ -237,12 +234,6 @@ } else { this.getList(); } - this.getDicts("sys_common_status").then(response => { - this.statusOptions = response.data; - }); - this.getDicts("sys_job_group").then(response => { - this.jobGroupOptions = response.data; - }); }, methods: { /** 查询调度日志列表 */ diff --git a/ruoyi-ui/src/views/monitor/logininfor/index.vue b/ruoyi-ui/src/views/monitor/logininfor/index.vue index 59df72c..06ace92 100644 --- a/ruoyi-ui/src/views/monitor/logininfor/index.vue +++ b/ruoyi-ui/src/views/monitor/logininfor/index.vue @@ -30,10 +30,10 @@ style="width: 240px" > <el-option - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" + v-for="dict in dict.type.sys_common_status" + :key="dict.value" + :label="dict.label" + :value="dict.value" /> </el-select> </el-form-item> @@ -101,7 +101,7 @@ <el-table-column label="操作系统" align="center" prop="os" /> <el-table-column label="登录状态" align="center" prop="status"> <template slot-scope="scope"> - <dict-tag :options="statusOptions" :value="scope.row.status"/> + <dict-tag :options="dict.type.sys_common_status" :value="scope.row.status"/> </template> </el-table-column> <el-table-column label="操作信息" align="center" prop="msg" /> @@ -127,6 +127,7 @@ export default { name: "Logininfor", + dicts: ['sys_common_status'], data() { return { // 遮罩层 @@ -143,8 +144,6 @@ total: 0, // 表格数据 list: [], - // 状态数据字典 - statusOptions: [], // 日期范围 dateRange: [], // 默认排序 @@ -161,9 +160,6 @@ }, created() { this.getList(); - this.getDicts("sys_common_status").then(response => { - this.statusOptions = response.data; - }); }, methods: { /** 查询登录日志列表 */ diff --git a/ruoyi-ui/src/views/monitor/operlog/index.vue b/ruoyi-ui/src/views/monitor/operlog/index.vue index 783908b..7fb42de 100644 --- a/ruoyi-ui/src/views/monitor/operlog/index.vue +++ b/ruoyi-ui/src/views/monitor/operlog/index.vue @@ -30,10 +30,10 @@ style="width: 240px" > <el-option - v-for="dict in typeOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" + v-for="dict in dict.type.sys_oper_type" + :key="dict.value" + :label="dict.label" + :value="dict.value" /> </el-select> </el-form-item> @@ -46,10 +46,10 @@ style="width: 240px" > <el-option - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" + v-for="dict in dict.type.sys_common_status" + :key="dict.value" + :label="dict.label" + :value="dict.value" /> </el-select> </el-form-item> @@ -113,7 +113,7 @@ <el-table-column label="系统模块" align="center" prop="title" /> <el-table-column label="操作类型" align="center" prop="businessType"> <template slot-scope="scope"> - <dict-tag :options="typeOptions" :value="scope.row.businessType"/> + <dict-tag :options="dict.type.sys_oper_type" :value="scope.row.businessType"/> </template> </el-table-column> <el-table-column label="请求方式" align="center" prop="requestMethod" /> @@ -122,7 +122,7 @@ <el-table-column label="操作地点" align="center" prop="operLocation" :show-overflow-tooltip="true" /> <el-table-column label="操作状态" align="center" prop="status"> <template slot-scope="scope"> - <dict-tag :options="statusOptions" :value="scope.row.status"/> + <dict-tag :options="dict.type.sys_common_status" :value="scope.row.status"/> </template> </el-table-column> <el-table-column label="操作日期" align="center" prop="operTime" sortable="custom" :sort-orders="['descending', 'ascending']" width="180"> @@ -200,6 +200,7 @@ export default { name: "Operlog", + dicts: ['sys_oper_type', 'sys_common_status'], data() { return { // 遮罩层 @@ -218,10 +219,6 @@ list: [], // 是否显示弹出层 open: false, - // 类型数据字典 - typeOptions: [], - // 类型数据字典 - statusOptions: [], // 日期范围 dateRange: [], // 默认排序 @@ -241,12 +238,6 @@ }, created() { this.getList(); - this.getDicts("sys_oper_type").then(response => { - this.typeOptions = response.data; - }); - this.getDicts("sys_common_status").then(response => { - this.statusOptions = response.data; - }); }, methods: { /** 查询登录日志 */ @@ -261,7 +252,7 @@ }, // 操作日志类型字典翻译 typeFormat(row, column) { - return this.selectDictLabel(this.typeOptions, row.businessType); + return this.selectDictLabel(this.dict.type.sys_oper_type, row.businessType); }, /** 搜索按钮操作 */ handleQuery() { diff --git a/ruoyi-ui/src/views/system/config/index.vue b/ruoyi-ui/src/views/system/config/index.vue index b8472a8..b86c8a0 100644 --- a/ruoyi-ui/src/views/system/config/index.vue +++ b/ruoyi-ui/src/views/system/config/index.vue @@ -24,10 +24,10 @@ <el-form-item label="系统内置" prop="configType"> <el-select v-model="queryParams.configType" placeholder="系统内置" clearable size="small"> <el-option - v-for="dict in typeOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" + v-for="dict in dict.type.sys_yes_no" + :key="dict.value" + :label="dict.label" + :value="dict.value" /> </el-select> </el-form-item> @@ -114,7 +114,7 @@ <el-table-column label="参数键值" align="center" prop="configValue" /> <el-table-column label="系统内置" align="center" prop="configType"> <template slot-scope="scope"> - <dict-tag :options="typeOptions" :value="scope.row.configType"/> + <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.configType"/> </template> </el-table-column> <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" /> @@ -166,10 +166,10 @@ <el-form-item label="系统内置" prop="configType"> <el-radio-group v-model="form.configType"> <el-radio - v-for="dict in typeOptions" - :key="dict.dictValue" - :label="dict.dictValue" - >{{dict.dictLabel}}</el-radio> + v-for="dict in dict.type.sys_yes_no" + :key="dict.value" + :label="dict.value" + >{{dict.label}}</el-radio> </el-radio-group> </el-form-item> <el-form-item label="备注" prop="remark"> @@ -189,6 +189,7 @@ export default { name: "Config", + dicts: ['sys_yes_no'], data() { return { // 遮罩层 @@ -211,8 +212,6 @@ title: "", // 是否显示弹出层 open: false, - // 类型数据字典 - typeOptions: [], // 日期范围 dateRange: [], // 查询参数 @@ -241,9 +240,6 @@ }, created() { this.getList(); - this.getDicts("sys_yes_no").then(response => { - this.typeOptions = response.data; - }); }, methods: { /** 查询参数列表 */ diff --git a/ruoyi-ui/src/views/system/dept/index.vue b/ruoyi-ui/src/views/system/dept/index.vue index 037c998..591ba75 100644 --- a/ruoyi-ui/src/views/system/dept/index.vue +++ b/ruoyi-ui/src/views/system/dept/index.vue @@ -13,10 +13,10 @@ <el-form-item label="状态" prop="status"> <el-select v-model="queryParams.status" placeholder="部门状态" clearable size="small"> <el-option - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" + v-for="dict in dict.type.sys_normal_disable" + :key="dict.value" + :label="dict.label" + :value="dict.value" /> </el-select> </el-form-item> @@ -61,7 +61,7 @@ <el-table-column prop="orderNum" label="排序" width="200"></el-table-column> <el-table-column prop="status" label="状态" width="100"> <template slot-scope="scope"> - <dict-tag :options="statusOptions" :value="scope.row.status"/> + <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/> </template> </el-table-column> <el-table-column label="创建时间" align="center" prop="createTime" width="200"> @@ -135,10 +135,10 @@ <el-form-item label="部门状态"> <el-radio-group v-model="form.status"> <el-radio - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictValue" - >{{dict.dictLabel}}</el-radio> + v-for="dict in dict.type.sys_normal_disable" + :key="dict.value" + :label="dict.value" + >{{dict.label}}</el-radio> </el-radio-group> </el-form-item> </el-col> @@ -159,6 +159,7 @@ export default { name: "Dept", + dicts: ['sys_normal_disable'], components: { Treeselect }, data() { return { @@ -180,8 +181,6 @@ refreshTable: true, // 是否展开 expand: false, - // 状态数据字典 - statusOptions: [], // 查询参数 queryParams: { deptName: undefined, @@ -219,9 +218,6 @@ }, created() { this.getList(); - this.getDicts("sys_normal_disable").then(response => { - this.statusOptions = response.data; - }); }, methods: { /** 查询部门列表 */ diff --git a/ruoyi-ui/src/views/system/dict/data.vue b/ruoyi-ui/src/views/system/dict/data.vue index aa3849a..908ec9a 100644 --- a/ruoyi-ui/src/views/system/dict/data.vue +++ b/ruoyi-ui/src/views/system/dict/data.vue @@ -23,10 +23,10 @@ <el-form-item label="状态" prop="status"> <el-select v-model="queryParams.status" placeholder="数据状态" clearable size="small"> <el-option - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" + v-for="dict in dict.type.sys_normal_disable" + :key="dict.value" + :label="dict.label" + :value="dict.value" /> </el-select> </el-form-item> @@ -96,7 +96,7 @@ <el-table-column label="字典排序" align="center" prop="dictSort" /> <el-table-column label="状态" align="center" prop="status"> <template slot-scope="scope"> - <dict-tag :options="statusOptions" :value="scope.row.status"/> + <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/> </template> </el-table-column> <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" /> @@ -164,10 +164,10 @@ <el-form-item label="状态" prop="status"> <el-radio-group v-model="form.status"> <el-radio - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictValue" - >{{dict.dictLabel}}</el-radio> + v-for="dict in dict.type.sys_normal_disable" + :key="dict.value" + :label="dict.value" + >{{dict.label}}</el-radio> </el-radio-group> </el-form-item> <el-form-item label="备注" prop="remark"> @@ -188,6 +188,7 @@ export default { name: "Data", + dicts: ['sys_normal_disable'], data() { return { // 遮罩层 @@ -239,8 +240,6 @@ label: "危险" } ], - // 状态数据字典 - statusOptions: [], // 类型数据字典 typeOptions: [], // 查询参数 @@ -271,9 +270,6 @@ const dictId = this.$route.params && this.$route.params.dictId; this.getType(dictId); this.getTypeList(); - this.getDicts("sys_normal_disable").then(response => { - this.statusOptions = response.data; - }); }, methods: { /** 查询字典类型详细 */ diff --git a/ruoyi-ui/src/views/system/dict/index.vue b/ruoyi-ui/src/views/system/dict/index.vue index 20cf5ce..3292731 100644 --- a/ruoyi-ui/src/views/system/dict/index.vue +++ b/ruoyi-ui/src/views/system/dict/index.vue @@ -30,10 +30,10 @@ style="width: 240px" > <el-option - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" + v-for="dict in dict.type.sys_normal_disable" + :key="dict.value" + :label="dict.label" + :value="dict.value" /> </el-select> </el-form-item> @@ -125,7 +125,7 @@ </el-table-column> <el-table-column label="状态" align="center" prop="status"> <template slot-scope="scope"> - <dict-tag :options="statusOptions" :value="scope.row.status"/> + <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/> </template> </el-table-column> <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" /> @@ -174,10 +174,10 @@ <el-form-item label="状态" prop="status"> <el-radio-group v-model="form.status"> <el-radio - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictValue" - >{{dict.dictLabel}}</el-radio> + v-for="dict in dict.type.sys_normal_disable" + :key="dict.value" + :label="dict.value" + >{{dict.label}}</el-radio> </el-radio-group> </el-form-item> <el-form-item label="备注" prop="remark"> @@ -197,6 +197,7 @@ export default { name: "Dict", + dicts: ['sys_normal_disable'], data() { return { // 遮罩层 @@ -219,8 +220,6 @@ title: "", // 是否显示弹出层 open: false, - // 状态数据字典 - statusOptions: [], // 日期范围 dateRange: [], // 查询参数 @@ -246,9 +245,6 @@ }, created() { this.getList(); - this.getDicts("sys_normal_disable").then(response => { - this.statusOptions = response.data; - }); }, methods: { /** 查询字典类型列表 */ diff --git a/ruoyi-ui/src/views/system/menu/index.vue b/ruoyi-ui/src/views/system/menu/index.vue index 0f4296c..d7d4c0f 100644 --- a/ruoyi-ui/src/views/system/menu/index.vue +++ b/ruoyi-ui/src/views/system/menu/index.vue @@ -13,10 +13,10 @@ <el-form-item label="状态" prop="status"> <el-select v-model="queryParams.status" placeholder="菜单状态" clearable size="small"> <el-option - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" + v-for="dict in dict.type.sys_normal_disable" + :key="dict.value" + :label="dict.label" + :value="dict.value" /> </el-select> </el-form-item> @@ -68,7 +68,7 @@ <el-table-column prop="component" label="组件路径" :show-overflow-tooltip="true"></el-table-column> <el-table-column prop="status" label="状态" width="80"> <template slot-scope="scope"> - <dict-tag :options="statusOptions" :value="scope.row.status"/> + <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/> </template> </el-table-column> <el-table-column label="创建时间" align="center" prop="createTime"> @@ -240,10 +240,10 @@ </span> <el-radio-group v-model="form.visible"> <el-radio - v-for="dict in visibleOptions" - :key="dict.dictValue" - :label="dict.dictValue" - >{{dict.dictLabel}}</el-radio> + v-for="dict in dict.type.sys_show_hide" + :key="dict.value" + :label="dict.value" + >{{dict.label}}</el-radio> </el-radio-group> </el-form-item> </el-col> @@ -257,10 +257,10 @@ </span> <el-radio-group v-model="form.status"> <el-radio - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictValue" - >{{dict.dictLabel}}</el-radio> + v-for="dict in dict.type.sys_normal_disable" + :key="dict.value" + :label="dict.value" + >{{dict.label}}</el-radio> </el-radio-group> </el-form-item> </el-col> @@ -282,6 +282,7 @@ export default { name: "Menu", + dicts: ['sys_show_hide', 'sys_normal_disable'], components: { Treeselect, IconSelect }, data() { return { @@ -301,10 +302,6 @@ isExpandAll: false, // 重新渲染表格状态 refreshTable: true, - // 显示状态数据字典 - visibleOptions: [], - // 菜单状态数据字典 - statusOptions: [], // 查询参数 queryParams: { menuName: undefined, @@ -328,12 +325,6 @@ }, created() { this.getList(); - this.getDicts("sys_show_hide").then(response => { - this.visibleOptions = response.data; - }); - this.getDicts("sys_normal_disable").then(response => { - this.statusOptions = response.data; - }); }, methods: { // 选择图标 diff --git a/ruoyi-ui/src/views/system/notice/index.vue b/ruoyi-ui/src/views/system/notice/index.vue index 7b4eb2d..9d0924f 100644 --- a/ruoyi-ui/src/views/system/notice/index.vue +++ b/ruoyi-ui/src/views/system/notice/index.vue @@ -22,10 +22,10 @@ <el-form-item label="类型" prop="noticeType"> <el-select v-model="queryParams.noticeType" placeholder="公告类型" clearable size="small"> <el-option - v-for="dict in typeOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" + v-for="dict in dict.type.sys_notice_type" + :key="dict.value" + :label="dict.label" + :value="dict.value" /> </el-select> </el-form-item> @@ -82,12 +82,12 @@ /> <el-table-column label="公告类型" align="center" prop="noticeType" width="100"> <template slot-scope="scope"> - <dict-tag :options="typeOptions" :value="scope.row.noticeType"/> + <dict-tag :options="dict.type.sys_notice_type" :value="scope.row.noticeType"/> </template> </el-table-column> <el-table-column label="状态" align="center" prop="status" width="100"> <template slot-scope="scope"> - <dict-tag :options="statusOptions" :value="scope.row.status"/> + <dict-tag :options="dict.type.sys_notice_status" :value="scope.row.status"/> </template> </el-table-column> <el-table-column label="创建者" align="center" prop="createBy" width="100" /> @@ -137,10 +137,10 @@ <el-form-item label="公告类型" prop="noticeType"> <el-select v-model="form.noticeType" placeholder="请选择"> <el-option - v-for="dict in typeOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" + v-for="dict in dict.type.sys_notice_type" + :key="dict.value" + :label="dict.label" + :value="dict.value" ></el-option> </el-select> </el-form-item> @@ -149,10 +149,10 @@ <el-form-item label="状态"> <el-radio-group v-model="form.status"> <el-radio - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictValue" - >{{dict.dictLabel}}</el-radio> + v-for="dict in dict.type.sys_notice_status" + :key="dict.value" + :label="dict.value" + >{{dict.label}}</el-radio> </el-radio-group> </el-form-item> </el-col> @@ -176,6 +176,7 @@ export default { name: "Notice", + dicts: ['sys_notice_status', 'sys_notice_type'], data() { return { // 遮罩层 @@ -196,10 +197,6 @@ title: "", // 是否显示弹出层 open: false, - // 类型数据字典 - statusOptions: [], - // 状态数据字典 - typeOptions: [], // 查询参数 queryParams: { pageNum: 1, @@ -223,12 +220,6 @@ }, created() { this.getList(); - this.getDicts("sys_notice_status").then(response => { - this.statusOptions = response.data; - }); - this.getDicts("sys_notice_type").then(response => { - this.typeOptions = response.data; - }); }, methods: { /** 查询公告列表 */ diff --git a/ruoyi-ui/src/views/system/post/index.vue b/ruoyi-ui/src/views/system/post/index.vue index 10eca78..fc86754 100644 --- a/ruoyi-ui/src/views/system/post/index.vue +++ b/ruoyi-ui/src/views/system/post/index.vue @@ -22,10 +22,10 @@ <el-form-item label="状态" prop="status"> <el-select v-model="queryParams.status" placeholder="岗位状态" clearable size="small"> <el-option - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" + v-for="dict in dict.type.sys_normal_disable" + :key="dict.value" + :label="dict.label" + :value="dict.value" /> </el-select> </el-form-item> @@ -90,7 +90,7 @@ <el-table-column label="岗位排序" align="center" prop="postSort" /> <el-table-column label="状态" align="center" prop="status"> <template slot-scope="scope"> - <dict-tag :options="statusOptions" :value="scope.row.status"/> + <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/> </template> </el-table-column> <el-table-column label="创建时间" align="center" prop="createTime" width="180"> @@ -141,10 +141,10 @@ <el-form-item label="岗位状态" prop="status"> <el-radio-group v-model="form.status"> <el-radio - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictValue" - >{{dict.dictLabel}}</el-radio> + v-for="dict in dict.type.sys_normal_disable" + :key="dict.value" + :label="dict.value" + >{{dict.label}}</el-radio> </el-radio-group> </el-form-item> <el-form-item label="备注" prop="remark"> @@ -164,6 +164,7 @@ export default { name: "Post", + dicts: ['sys_normal_disable'], data() { return { // 遮罩层 @@ -186,8 +187,6 @@ title: "", // 是否显示弹出层 open: false, - // 状态数据字典 - statusOptions: [], // 查询参数 queryParams: { pageNum: 1, @@ -214,9 +213,6 @@ }, created() { this.getList(); - this.getDicts("sys_normal_disable").then(response => { - this.statusOptions = response.data; - }); }, methods: { /** 查询岗位列表 */ diff --git a/ruoyi-ui/src/views/system/role/authUser.vue b/ruoyi-ui/src/views/system/role/authUser.vue index a65ccbf..661c369 100644 --- a/ruoyi-ui/src/views/system/role/authUser.vue +++ b/ruoyi-ui/src/views/system/role/authUser.vue @@ -69,7 +69,7 @@ <el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" /> <el-table-column label="状态" align="center" prop="status"> <template slot-scope="scope"> - <dict-tag :options="statusOptions" :value="scope.row.status"/> + <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/> </template> </el-table-column> <el-table-column label="创建时间" align="center" prop="createTime" width="180"> @@ -107,6 +107,7 @@ export default { name: "AuthUser", + dicts: ['sys_normal_disable'], components: { selectUser }, data() { return { @@ -122,8 +123,6 @@ total: 0, // 用户表格数据 userList: [], - // 状态数据字典 - statusOptions: [], // 查询参数 queryParams: { pageNum: 1, @@ -139,9 +138,6 @@ if (roleId) { this.queryParams.roleId = roleId; this.getList(); - this.getDicts("sys_normal_disable").then(response => { - this.statusOptions = response.data; - }); } }, methods: { diff --git a/ruoyi-ui/src/views/system/role/index.vue b/ruoyi-ui/src/views/system/role/index.vue index 27167c9..97a2f84 100644 --- a/ruoyi-ui/src/views/system/role/index.vue +++ b/ruoyi-ui/src/views/system/role/index.vue @@ -30,10 +30,10 @@ style="width: 240px" > <el-option - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" + v-for="dict in dict.type.sys_normal_disable" + :key="dict.value" + :label="dict.label" + :value="dict.value" /> </el-select> </el-form-item> @@ -183,10 +183,10 @@ <el-form-item label="状态"> <el-radio-group v-model="form.status"> <el-radio - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictValue" - >{{dict.dictLabel}}</el-radio> + v-for="dict in dict.type.sys_normal_disable" + :key="dict.value" + :label="dict.value" + >{{dict.label}}</el-radio> </el-radio-group> </el-form-item> <el-form-item label="菜单权限"> @@ -265,6 +265,7 @@ export default { name: "Role", + dicts: ['sys_normal_disable'], data() { return { // 遮罩层 @@ -295,8 +296,6 @@ deptNodeAll: false, // 日期范围 dateRange: [], - // 状态数据字典 - statusOptions: [], // 数据范围选项 dataScopeOptions: [ { @@ -354,9 +353,6 @@ }, created() { this.getList(); - this.getDicts("sys_normal_disable").then(response => { - this.statusOptions = response.data; - }); }, methods: { /** 查询角色列表 */ diff --git a/ruoyi-ui/src/views/system/role/selectUser.vue b/ruoyi-ui/src/views/system/role/selectUser.vue index 5a97095..3229462 100644 --- a/ruoyi-ui/src/views/system/role/selectUser.vue +++ b/ruoyi-ui/src/views/system/role/selectUser.vue @@ -34,7 +34,7 @@ <el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" /> <el-table-column label="状态" align="center" prop="status"> <template slot-scope="scope"> - <dict-tag :options="statusOptions" :value="scope.row.status"/> + <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/> </template> </el-table-column> <el-table-column label="创建时间" align="center" prop="createTime" width="180"> @@ -61,6 +61,7 @@ <script> import { unallocatedUserList, authUserSelectAll } from "@/api/system/role"; export default { + dicts: ['sys_normal_disable'], props: { // 角色编号 roleId: { @@ -77,8 +78,6 @@ total: 0, // 未授权用户数据 userList: [], - // 状态数据字典 - statusOptions: [], // 查询参数 queryParams: { pageNum: 1, @@ -88,11 +87,6 @@ phonenumber: undefined } }; - }, - created() { - this.getDicts("sys_normal_disable").then(response => { - this.statusOptions = response.data; - }); }, methods: { // 显示弹框 diff --git a/ruoyi-ui/src/views/system/user/index.vue b/ruoyi-ui/src/views/system/user/index.vue index 4607409..9dea91d 100644 --- a/ruoyi-ui/src/views/system/user/index.vue +++ b/ruoyi-ui/src/views/system/user/index.vue @@ -57,10 +57,10 @@ style="width: 240px" > <el-option - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" + v-for="dict in dict.type.sys_normal_disable" + :key="dict.value" + :label="dict.label" + :value="dict.value" /> </el-select> </el-form-item> @@ -251,10 +251,10 @@ <el-form-item label="用户性别"> <el-select v-model="form.sex" placeholder="请选择"> <el-option - v-for="dict in sexOptions" - :key="dict.dictValue" - :label="dict.dictLabel" - :value="dict.dictValue" + v-for="dict in dict.type.sys_user_sex" + :key="dict.value" + :label="dict.label" + :value="dict.value" ></el-option> </el-select> </el-form-item> @@ -263,10 +263,10 @@ <el-form-item label="状态"> <el-radio-group v-model="form.status"> <el-radio - v-for="dict in statusOptions" - :key="dict.dictValue" - :label="dict.dictValue" - >{{dict.dictLabel}}</el-radio> + v-for="dict in dict.type.sys_normal_disable" + :key="dict.value" + :label="dict.value" + >{{dict.label}}</el-radio> </el-radio-group> </el-form-item> </el-col> @@ -354,6 +354,7 @@ export default { name: "User", + dicts: ['sys_normal_disable', 'sys_user_sex'], components: { Treeselect }, data() { return { @@ -385,10 +386,6 @@ initPassword: undefined, // 日期范围 dateRange: [], - // 状态数据字典 - statusOptions: [], - // 性别状态字典 - sexOptions: [], // 岗位选项 postOptions: [], // 角色选项 @@ -472,12 +469,6 @@ created() { this.getList(); this.getTreeselect(); - this.getDicts("sys_normal_disable").then(response => { - this.statusOptions = response.data; - }); - this.getDicts("sys_user_sex").then(response => { - this.sexOptions = response.data; - }); this.getConfigKey("sys.user.initPassword").then(response => { this.initPassword = response.msg; }); -- Gitblit v1.9.2