ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java
@@ -109,7 +109,7 @@ * 缓存List数据 * * @param key 缓存的键值 * @param values 待缓存的List数据 * @param dataList 待缓存的List数据 * @return 缓存的对象 */ public <T> long setCacheList(final String key, final List<T> dataList) ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityUtils.java
@@ -238,7 +238,7 @@ /** * 获取上级菜单ID字段 * * @param options 生成其他选项 * @param paramsObj 生成其他选项 * @return 上级菜单ID字段 */ public static String getParentMenuId(JSONObject paramsObj) ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index-tree.vue.vm
@@ -151,6 +151,23 @@ ></el-option> </el-select> </el-form-item> #elseif($column.htmlType == "checkbox" && "" != $dictType) <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}} </el-checkbox> </el-checkbox-group> </el-form-item> #elseif($column.htmlType == "checkbox" && $dictType) <el-form-item label="${comment}"> <el-checkbox-group v-model="form.${field}"> <el-checkbox>请选择字典生成</el-checkbox> </el-checkbox-group> </el-form-item> #elseif($column.htmlType == "select" && $dictType) <el-form-item label="${comment}"> <el-select v-model="form.${field}" placeholder="请选择${comment}"> @@ -312,7 +329,7 @@ #end // $comment字典翻译 ${column.javaField}Format(row, column) { return this.selectDictLabel(this.${column.javaField}Options, row.${column.javaField}); return this.selectDictLabel#if($column.htmlType == "checkbox")s#end(this.${column.javaField}Options, row.${column.javaField}); }, #end #end @@ -327,6 +344,9 @@ #foreach ($column in $columns) #if($column.htmlType == "radio") $column.javaField: "0"#if($velocityCount != $columns.size()),#end #elseif($column.htmlType == "checkbox") $column.javaField: []#if($velocityCount != $columns.size()),#end #else $column.javaField: undefined#if($velocityCount != $columns.size()),#end @@ -361,6 +381,11 @@ } get${BusinessName}(row.${pkColumn.javaField}).then(response => { this.form = response.data; #foreach ($column in $columns) #if($column.htmlType == "checkbox") this.form.$column.javaField = this.form.${column.javaField}.split(","); #end #end this.open = true; this.title = "修改${functionName}"; }); @@ -369,6 +394,11 @@ submitForm: function() { this.#[[$]]#refs["form"].validate(valid => { if (valid) { #foreach ($column in $columns) #if($column.htmlType == "checkbox") this.form.$column.javaField = this.form.${column.javaField}.join(","); #end #end if (this.form.${pkColumn.javaField} != undefined) { update${BusinessName}(this.form).then(response => { if (response.code === 200) { ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/index.vue.vm
@@ -185,6 +185,23 @@ <el-option label="请选择字典生成" value="" /> </el-select> </el-form-item> #elseif($column.htmlType == "checkbox" && "" != $dictType) <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}} </el-checkbox> </el-checkbox-group> </el-form-item> #elseif($column.htmlType == "checkbox" && $dictType) <el-form-item label="${comment}"> <el-checkbox-group v-model="form.${field}"> <el-checkbox>请选择字典生成</el-checkbox> </el-checkbox-group> </el-form-item> #elseif($column.htmlType == "radio" && "" != $dictType) <el-form-item label="${comment}"> <el-radio-group v-model="form.${field}"> @@ -326,7 +343,7 @@ #end // $comment字典翻译 ${column.javaField}Format(row, column) { return this.selectDictLabel(this.${column.javaField}Options, row.${column.javaField}); return this.selectDictLabel#if($column.htmlType == "checkbox")s#end(this.${column.javaField}Options, row.${column.javaField}); }, #end #end @@ -341,6 +358,9 @@ #foreach ($column in $columns) #if($column.htmlType == "radio") $column.javaField: "0"#if($velocityCount != $columns.size()),#end #elseif($column.htmlType == "checkbox") $column.javaField: []#if($velocityCount != $columns.size()),#end #else $column.javaField: undefined#if($velocityCount != $columns.size()),#end @@ -378,6 +398,11 @@ const ${pkColumn.javaField} = row.${pkColumn.javaField} || this.ids get${BusinessName}(${pkColumn.javaField}).then(response => { this.form = response.data; #foreach ($column in $columns) #if($column.htmlType == "checkbox") this.form.$column.javaField = this.form.${column.javaField}.split(","); #end #end this.open = true; this.title = "修改${functionName}"; }); @@ -386,6 +411,11 @@ submitForm: function() { this.#[[$]]#refs["form"].validate(valid => { if (valid) { #foreach ($column in $columns) #if($column.htmlType == "checkbox") this.form.$column.javaField = this.form.${column.javaField}.join(","); #end #end if (this.form.${pkColumn.javaField} != undefined) { update${BusinessName}(this.form).then(response => { if (response.code === 200) { ruoyi-ui/src/main.js
@@ -19,7 +19,7 @@ import './permission' // permission control import { getDicts } from "@/api/system/dict/data"; import { getConfigKey } from "@/api/system/config"; import { parseTime, resetForm, addDateRange, selectDictLabel, handleTree } from "@/utils/ruoyi"; import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi"; import Pagination from "@/components/Pagination"; // 全局方法挂载 @@ -29,6 +29,7 @@ Vue.prototype.resetForm = resetForm Vue.prototype.addDateRange = addDateRange Vue.prototype.selectDictLabel = selectDictLabel Vue.prototype.selectDictLabels = selectDictLabels Vue.prototype.download = download Vue.prototype.handleTree = handleTree ruoyi-ui/src/utils/ruoyi.js
@@ -77,6 +77,21 @@ return actions.join(''); } // 回显数据字典(字符串数组) export function selectDictLabels(datas, value, separator) { var actions = []; var currentSeparator = undefined === separator ? "," : separator; var temp = value.split(currentSeparator); Object.keys(value.split(currentSeparator)).some((val) => { Object.keys(datas).some((key) => { if (datas[key].dictValue == ('' + temp[val])) { actions.push(datas[key].dictLabel + currentSeparator); } }) }) return actions.join('').substring(0, actions.join('').length - 1); } // 通用下载方法 export function download(fileName) { window.location.href = baseURL + "/common/download?fileName=" + encodeURI(fileName) + "&delete=" + true; @@ -98,10 +113,10 @@ // 转换字符串,undefined,null等转化为"" export function praseStrEmpty(str) { if (!str || str == "undefined" || str == "null") { return ""; } return str; if (!str || str == "undefined" || str == "null") { return ""; } return str; } /** @@ -120,17 +135,17 @@ //对源数据深度克隆 const cloneData = JSON.parse(JSON.stringify(data)) //循环所有项 const treeData = cloneData.filter(father => { let branchArr = cloneData.filter(child => { //返回每一项的子级数组 return father[id] === child[parentId] }); branchArr.length > 0 ? father.children = branchArr : ''; //返回第一层 return father[parentId] === rootId; const treeData = cloneData.filter(father => { let branchArr = cloneData.filter(child => { //返回每一项的子级数组 return father[id] === child[parentId] }); branchArr.length > 0 ? father.children = branchArr : ''; //返回第一层 return father[parentId] === rootId; }); return treeData != '' ? treeData : data; } } /** * 参数处理