From 1c7d840ff66aecc10654e577f898cea0d0ba96ca Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期二, 04 一月 2022 09:45:33 +0800 Subject: [PATCH] Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev --- ruoyi-ui/src/utils/request.js | 43 +++ ruoyi-ui/src/components/ImagePreview/index.vue | 121 +++++---- ruoyi-ui/src/views/tool/gen/editTable.vue | 1 ruoyi-ui/src/utils/ruoyi.js | 325 ++++++++++++------------ ruoyi-ui/src/views/system/user/index.vue | 2 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java | 5 ruoyi-ui/src/api/system/user.js | 4 ruoyi-ui/src/components/Crontab/hour.vue | 228 ++++++++-------- 8 files changed, 395 insertions(+), 334 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java index c517b5d..5471baa 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java @@ -113,9 +113,10 @@ ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); ajax.put("posts", postService.selectPostAll()); if (StringUtils.isNotNull(userId)) { - ajax.put("user", userService.selectUserById(userId)); + SysUser sysUser = userService.selectUserById(userId); + ajax.put("user", sysUser); ajax.put("postIds", postService.selectPostListByUserId(userId)); - ajax.put("roleIds", roleService.selectRoleListByUserId(userId)); + ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList())); } return AjaxResult.success(ajax); } diff --git a/ruoyi-ui/src/api/system/user.js b/ruoyi-ui/src/api/system/user.js index 204c26e..4fd752b 100644 --- a/ruoyi-ui/src/api/system/user.js +++ b/ruoyi-ui/src/api/system/user.js @@ -1,5 +1,5 @@ import request from '@/utils/request' -import { praseStrEmpty } from "@/utils/ruoyi"; +import { parseStrEmpty } from "@/utils/ruoyi"; // 鏌ヨ鐢ㄦ埛鍒楄〃 export function listUser(query) { @@ -13,7 +13,7 @@ // 鏌ヨ鐢ㄦ埛璇︾粏 export function getUser(userId) { return request({ - url: '/system/user/' + praseStrEmpty(userId), + url: '/system/user/' + parseStrEmpty(userId), method: 'get' }) } diff --git a/ruoyi-ui/src/components/Crontab/hour.vue b/ruoyi-ui/src/components/Crontab/hour.vue index 29b8891..4b1f1fc 100644 --- a/ruoyi-ui/src/components/Crontab/hour.vue +++ b/ruoyi-ui/src/components/Crontab/hour.vue @@ -1,114 +1,114 @@ -<template> - <el-form size="small"> - <el-form-item> - <el-radio v-model='radioValue' :label="1"> - 灏忔椂锛屽厑璁哥殑閫氶厤绗, - * /] - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="2"> - 鍛ㄦ湡浠� - <el-input-number v-model='cycle01' :min="0" :max="22" /> - - <el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 1" :max="23" /> 灏忔椂 - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="3"> - 浠� - <el-input-number v-model='average01' :min="0" :max="22" /> 灏忔椂寮�濮嬶紝姣� - <el-input-number v-model='average02' :min="1" :max="23 - average01 || 0" /> 灏忔椂鎵ц涓�娆� - </el-radio> - </el-form-item> - - <el-form-item> - <el-radio v-model='radioValue' :label="4"> - 鎸囧畾 - <el-select clearable v-model="checkboxList" placeholder="鍙閫�" multiple style="width:100%"> - <el-option v-for="item in 60" :key="item" :value="item-1">{{item-1}}</el-option> - </el-select> - </el-radio> - </el-form-item> - </el-form> -</template> - -<script> -export default { - data() { - return { - radioValue: 1, - cycle01: 0, - cycle02: 1, - average01: 0, - average02: 1, - checkboxList: [], - checkNum: this.$options.propsData.check - } - }, - name: 'crontab-hour', - props: ['check', 'cron'], - methods: { - // 鍗曢�夋寜閽�煎彉鍖栨椂 - radioChange() { - switch (this.radioValue) { - case 1: - this.$emit('update', 'hour', '*') - break; - case 2: - this.$emit('update', 'hour', this.cycleTotal); - break; - case 3: - this.$emit('update', 'hour', this.averageTotal); - break; - case 4: - this.$emit('update', 'hour', this.checkboxString); - break; - } - }, - // 鍛ㄦ湡涓や釜鍊煎彉鍖栨椂 - cycleChange() { - if (this.radioValue == '2') { - this.$emit('update', 'hour', this.cycleTotal); - } - }, - // 骞冲潎涓や釜鍊煎彉鍖栨椂 - averageChange() { - if (this.radioValue == '3') { - this.$emit('update', 'hour', this.averageTotal); - } - }, - // checkbox鍊煎彉鍖栨椂 - checkboxChange() { - if (this.radioValue == '4') { - this.$emit('update', 'hour', this.checkboxString); - } - } - }, - watch: { - 'radioValue': 'radioChange', - 'cycleTotal': 'cycleChange', - 'averageTotal': 'averageChange', - 'checkboxString': 'checkboxChange' - }, - computed: { - // 璁$畻涓や釜鍛ㄦ湡鍊� - cycleTotal: function () { - const cycle01 = this.checkNum(this.cycle01, 0, 22) - const cycle02 = this.checkNum(this.cycle02, cycle01 ? cycle01 + 1 : 1, 23) - return cycle01 + '-' + cycle02; - }, - // 璁$畻骞冲潎鐢ㄥ埌鐨勫�� - averageTotal: function () { - const average01 = this.checkNum(this.average01, 0, 22) - const average02 = this.checkNum(this.average02, 1, 23 - average01 || 0) - return average01 + '/' + average02; - }, - // 璁$畻鍕鹃�夌殑checkbox鍊煎悎闆� - checkboxString: function () { - let str = this.checkboxList.join(); - return str == '' ? '*' : str; - } - } -} -</script> \ No newline at end of file +<template> + <el-form size="small"> + <el-form-item> + <el-radio v-model='radioValue' :label="1"> + 灏忔椂锛屽厑璁哥殑閫氶厤绗, - * /] + </el-radio> + </el-form-item> + + <el-form-item> + <el-radio v-model='radioValue' :label="2"> + 鍛ㄦ湡浠� + <el-input-number v-model='cycle01' :min="0" :max="22" /> - + <el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 1" :max="23" /> 灏忔椂 + </el-radio> + </el-form-item> + + <el-form-item> + <el-radio v-model='radioValue' :label="3"> + 浠� + <el-input-number v-model='average01' :min="0" :max="22" /> 灏忔椂寮�濮嬶紝姣� + <el-input-number v-model='average02' :min="1" :max="23 - average01 || 0" /> 灏忔椂鎵ц涓�娆� + </el-radio> + </el-form-item> + + <el-form-item> + <el-radio v-model='radioValue' :label="4"> + 鎸囧畾 + <el-select clearable v-model="checkboxList" placeholder="鍙閫�" multiple style="width:100%"> + <el-option v-for="item in 24" :key="item" :value="item-1">{{item-1}}</el-option> + </el-select> + </el-radio> + </el-form-item> + </el-form> +</template> + +<script> +export default { + data() { + return { + radioValue: 1, + cycle01: 0, + cycle02: 1, + average01: 0, + average02: 1, + checkboxList: [], + checkNum: this.$options.propsData.check + } + }, + name: 'crontab-hour', + props: ['check', 'cron'], + methods: { + // 鍗曢�夋寜閽�煎彉鍖栨椂 + radioChange() { + switch (this.radioValue) { + case 1: + this.$emit('update', 'hour', '*') + break; + case 2: + this.$emit('update', 'hour', this.cycleTotal); + break; + case 3: + this.$emit('update', 'hour', this.averageTotal); + break; + case 4: + this.$emit('update', 'hour', this.checkboxString); + break; + } + }, + // 鍛ㄦ湡涓や釜鍊煎彉鍖栨椂 + cycleChange() { + if (this.radioValue == '2') { + this.$emit('update', 'hour', this.cycleTotal); + } + }, + // 骞冲潎涓や釜鍊煎彉鍖栨椂 + averageChange() { + if (this.radioValue == '3') { + this.$emit('update', 'hour', this.averageTotal); + } + }, + // checkbox鍊煎彉鍖栨椂 + checkboxChange() { + if (this.radioValue == '4') { + this.$emit('update', 'hour', this.checkboxString); + } + } + }, + watch: { + 'radioValue': 'radioChange', + 'cycleTotal': 'cycleChange', + 'averageTotal': 'averageChange', + 'checkboxString': 'checkboxChange' + }, + computed: { + // 璁$畻涓や釜鍛ㄦ湡鍊� + cycleTotal: function () { + const cycle01 = this.checkNum(this.cycle01, 0, 22) + const cycle02 = this.checkNum(this.cycle02, cycle01 ? cycle01 + 1 : 1, 23) + return cycle01 + '-' + cycle02; + }, + // 璁$畻骞冲潎鐢ㄥ埌鐨勫�� + averageTotal: function () { + const average01 = this.checkNum(this.average01, 0, 22) + const average02 = this.checkNum(this.average02, 1, 23 - average01 || 0) + return average01 + '/' + average02; + }, + // 璁$畻鍕鹃�夌殑checkbox鍊煎悎闆� + checkboxString: function () { + let str = this.checkboxList.join(); + return str == '' ? '*' : str; + } + } +} +</script> diff --git a/ruoyi-ui/src/components/ImagePreview/index.vue b/ruoyi-ui/src/components/ImagePreview/index.vue index 44e27aa..743d8d5 100644 --- a/ruoyi-ui/src/components/ImagePreview/index.vue +++ b/ruoyi-ui/src/components/ImagePreview/index.vue @@ -1,67 +1,84 @@ <template> - <el-image :src="`${realSrc}`" fit="cover" :style="`width:${realWidth};height:${realHeight};`" :preview-src-list="[`${realSrc}`]"> - <div slot="error" class="image-slot"> - <i class="el-icon-picture-outline"></i> - </div> - </el-image> + <el-image + :src="`${realSrc}`" + fit="cover" + :style="`width:${realWidth};height:${realHeight};`" + :preview-src-list="realSrcList" + > + <div slot="error" class="image-slot"> + <i class="el-icon-picture-outline"></i> + </div> + </el-image> </template> <script> -import { isExternal } from '@/utils/validate' +import { isExternal } from "@/utils/validate"; export default { - name: 'ImagePreview', - props: { - src: { - type: String, - required: true - }, - width: { - type: [Number, String], - default: '' - }, - height: { - type: [Number, String], - default: '' - } + name: "ImagePreview", + props: { + src: { + type: String, + required: true }, - computed: { - realSrc() { - if (isExternal(this.src)) { - return this.src - } - return process.env.VUE_APP_BASE_API + this.src - }, - realWidth() { - return typeof this.width == 'string' ? this.width : `${this.width}px` - }, - realHeight() { - return typeof this.height == 'string' ? this.height : `${this.height}px` - } + width: { + type: [Number, String], + default: "" + }, + height: { + type: [Number, String], + default: "" } -} + }, + computed: { + realSrc() { + let real_src = this.src.split(",")[0]; + if (isExternal(real_src)) { + return real_src; + } + return process.env.VUE_APP_BASE_API + real_src; + }, + realSrcList() { + let real_src_list = this.src.split(","); + let srcList = []; + real_src_list.forEach(item => { + if (isExternal(item)) { + return srcList.push(item); + } + return srcList.push(process.env.VUE_APP_BASE_API + item); + }); + return srcList; + }, + realWidth() { + return typeof this.width == "string" ? this.width : `${this.width}px`; + }, + realHeight() { + return typeof this.height == "string" ? this.height : `${this.height}px`; + } + }, +}; </script> <style lang="scss" scoped> .el-image { - border-radius: 5px; - background-color: #ebeef5; - box-shadow: 0 0 5px 1px #ccc; - ::v-deep .el-image__inner { - transition: all 0.3s; - cursor: pointer; - &:hover { - transform: scale(1.2); - } + border-radius: 5px; + background-color: #ebeef5; + box-shadow: 0 0 5px 1px #ccc; + ::v-deep .el-image__inner { + transition: all 0.3s; + cursor: pointer; + &:hover { + transform: scale(1.2); } - ::v-deep .image-slot { - display: flex; - justify-content: center; - align-items: center; - width: 100%; - height: 100%; - color: #909399; - font-size: 30px; - } + } + ::v-deep .image-slot { + display: flex; + justify-content: center; + align-items: center; + width: 100%; + height: 100%; + color: #909399; + font-size: 30px; + } } </style> diff --git a/ruoyi-ui/src/utils/request.js b/ruoyi-ui/src/utils/request.js index a391757..f880199 100644 --- a/ruoyi-ui/src/utils/request.js +++ b/ruoyi-ui/src/utils/request.js @@ -4,9 +4,12 @@ import { getToken } from '@/utils/auth' import errorCode from '@/utils/errorCode' import { tansParams, blobValidate } from "@/utils/ruoyi"; +import cache from '@/plugins/cache' import { saveAs } from 'file-saver' let downloadLoadingInstance; +// 鏄惁鏄剧ず閲嶆柊鐧诲綍 +let isReloginShow; axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8' // 瀵瑰簲鍥介檯鍖栬祫婧愭枃浠跺悗缂� @@ -23,6 +26,8 @@ service.interceptors.request.use(config => { // 鏄惁闇�瑕佽缃� token const isToken = (config.headers || {}).isToken === false + // 鏄惁闇�瑕侀槻姝㈡暟鎹噸澶嶆彁浜� + const isRepeatSubmit = (config.headers || {}).repeatSubmit === false if (getToken() && !isToken) { config.headers['Authorization'] = 'Bearer ' + getToken() // 璁╂瘡涓姹傛惡甯﹁嚜瀹氫箟token 璇锋牴鎹疄闄呮儏鍐佃嚜琛屼慨鏀� } @@ -32,6 +37,29 @@ url = url.slice(0, -1); config.params = {}; config.url = url; + } + if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) { + const requestObj = { + url: config.url, + data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data, + time: new Date().getTime() + } + const sessionObj = cache.session.getJSON('sessionObj') + if (sessionObj === undefined || sessionObj === null || sessionObj === '') { + cache.session.setJSON('sessionObj', requestObj) + } else { + const s_url = sessionObj.url; // 璇锋眰鍦板潃 + const s_data = sessionObj.data; // 璇锋眰鏁版嵁 + const s_time = sessionObj.time; // 璇锋眰鏃堕棿 + const interval = 1000; // 闂撮殧鏃堕棿(ms)锛屽皬浜庢鏃堕棿瑙嗕负閲嶅鎻愪氦 + if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) { + const message = '鏁版嵁姝e湪澶勭悊锛岃鍕块噸澶嶆彁浜�'; + console.warn(`[${s_url}]: ` + message) + return Promise.reject(new Error(message)) + } else { + cache.session.setJSON('sessionObj', requestObj) + } + } } return config }, error => { @@ -50,16 +78,25 @@ return res.data } if (code === 401) { - MessageBox.confirm('鐧诲綍鐘舵�佸凡杩囨湡锛屾偍鍙互缁х画鐣欏湪璇ラ〉闈紝鎴栬�呴噸鏂扮櫥褰�', '绯荤粺鎻愮ず', { + if (!isReloginShow) { + isReloginShow = true; + MessageBox.confirm('鐧诲綍鐘舵�佸凡杩囨湡锛屾偍鍙互缁х画鐣欏湪璇ラ〉闈紝鎴栬�呴噸鏂扮櫥褰�', '绯荤粺鎻愮ず', { confirmButtonText: '閲嶆柊鐧诲綍', cancelButtonText: '鍙栨秷', type: 'warning' } ).then(() => { + isReloginShow = false; store.dispatch('LogOut').then(() => { - location.href = process.env.VUE_APP_CONTEXT_PATH + "index"; + // 濡傛灉鏄櫥褰曢〉闈笉闇�瑕侀噸鏂板姞杞� + if (window.location.hash.indexOf("#/login") != 0) { + location.href = process.env.VUE_APP_CONTEXT_PATH + "index"; + } }) - }).catch(() => {}); + }).catch(() => { + isReloginShow = false; + }); + } return Promise.reject('鏃犳晥鐨勪細璇濓紝鎴栬�呬細璇濆凡杩囨湡锛岃閲嶆柊鐧诲綍銆�') } else if (code === 500) { Message({ diff --git a/ruoyi-ui/src/utils/ruoyi.js b/ruoyi-ui/src/utils/ruoyi.js index 4cc5e24..8e3cb0c 100644 --- a/ruoyi-ui/src/utils/ruoyi.js +++ b/ruoyi-ui/src/utils/ruoyi.js @@ -1,3 +1,5 @@ + + /** * 閫氱敤js鏂规硶灏佽澶勭悊 * Copyright (c) 2019 ruoyi @@ -5,130 +7,133 @@ // 鏃ユ湡鏍煎紡鍖� export function parseTime(time, pattern) { - if (arguments.length === 0 || !time) { - return null - } - const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}' - let date - if (typeof time === 'object') { - date = time - } else { - if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) { - time = parseInt(time) - } else if (typeof time === 'string') { - time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm),''); - } - if ((typeof time === 'number') && (time.toString().length === 10)) { - time = time * 1000 - } - date = new Date(time) - } - const formatObj = { - y: date.getFullYear(), - m: date.getMonth() + 1, - d: date.getDate(), - h: date.getHours(), - i: date.getMinutes(), - s: date.getSeconds(), - a: date.getDay() - } - const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => { - let value = formatObj[key] - // Note: getDay() returns 0 on Sunday - if (key === 'a') { return ['鏃�', '涓�', '浜�', '涓�', '鍥�', '浜�', '鍏�'][value] } - if (result.length > 0 && value < 10) { - value = '0' + value - } - return value || 0 - }) - return time_str + if (arguments.length === 0 || !time) { + return null + } + const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}' + let date + if (typeof time === 'object') { + date = time + } else { + if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) { + time = parseInt(time) + } else if (typeof time === 'string') { + time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm), ''); + } + if ((typeof time === 'number') && (time.toString().length === 10)) { + time = time * 1000 + } + date = new Date(time) + } + const formatObj = { + y: date.getFullYear(), + m: date.getMonth() + 1, + d: date.getDate(), + h: date.getHours(), + i: date.getMinutes(), + s: date.getSeconds(), + a: date.getDay() + } + const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => { + let value = formatObj[key] + // Note: getDay() returns 0 on Sunday + if (key === 'a') { return ['鏃�', '涓�', '浜�', '涓�', '鍥�', '浜�', '鍏�'][value] } + if (result.length > 0 && value < 10) { + value = '0' + value + } + return value || 0 + }) + return time_str } // 琛ㄥ崟閲嶇疆 export function resetForm(refName) { - if (this.$refs[refName]) { - this.$refs[refName].resetFields(); - } + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } } // 娣诲姞鏃ユ湡鑼冨洿 export function addDateRange(params, dateRange, propName) { - let search = params; - search.params = typeof (search.params) === 'object' && search.params !== null && !Array.isArray(search.params) ? search.params : {}; - dateRange = Array.isArray(dateRange) ? dateRange : []; - if (typeof (propName) === 'undefined') { - search.params['beginTime'] = dateRange[0]; - search.params['endTime'] = dateRange[1]; - } else { - search.params['begin' + propName] = dateRange[0]; - search.params['end' + propName] = dateRange[1]; - } - return search; + let search = params; + search.params = typeof (search.params) === 'object' && search.params !== null && !Array.isArray(search.params) ? search.params : {}; + dateRange = Array.isArray(dateRange) ? dateRange : []; + if (typeof (propName) === 'undefined') { + search.params['beginTime'] = dateRange[0]; + search.params['endTime'] = dateRange[1]; + } else { + search.params['begin' + propName] = dateRange[0]; + search.params['end' + propName] = dateRange[1]; + } + return search; } -// 鍥炴樉鏁版嵁瀛楀吀 +// 鍥炴樉鏁版嵁瀛楀吀 export function selectDictLabel(datas, value) { - var actions = []; - Object.keys(datas).some((key) => { - if (datas[key].value == ('' + value)) { - actions.push(datas[key].label); - return true; - } - }) - return actions.join(''); + var actions = []; + Object.keys(datas).some((key) => { + if (datas[key].value == ('' + value)) { + actions.push(datas[key].label); + return true; + } + }) + 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].value == ('' + temp[val])) { - actions.push(datas[key].label + currentSeparator); - } - }) - }) - return actions.join('').substring(0, actions.join('').length - 1); + if(value === undefined) { + return ""; + } + 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].value == ('' + temp[val])) { + actions.push(datas[key].label + currentSeparator); + } + }) + }) + return actions.join('').substring(0, actions.join('').length - 1); } // 瀛楃涓叉牸寮忓寲(%s ) export function sprintf(str) { - var args = arguments, flag = true, i = 1; - str = str.replace(/%s/g, function () { - var arg = args[i++]; - if (typeof arg === 'undefined') { - flag = false; - return ''; - } - return arg; - }); - return flag ? str : ''; + var args = arguments, flag = true, i = 1; + str = str.replace(/%s/g, function () { + var arg = args[i++]; + if (typeof arg === 'undefined') { + flag = false; + return ''; + } + return arg; + }); + return flag ? str : ''; } // 杞崲瀛楃涓诧紝undefined,null绛夎浆鍖栦负"" -export function praseStrEmpty(str) { - if (!str || str == "undefined" || str == "null") { - return ""; - } - return str; +export function parseStrEmpty(str) { + if (!str || str == "undefined" || str == "null") { + return ""; + } + 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]; - } + 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; + } + return source; }; /** @@ -139,47 +144,47 @@ * @param {*} children 瀛╁瓙鑺傜偣瀛楁 榛樿 'children' */ export function handleTree(data, id, parentId, children) { - let config = { - id: id || 'id', - parentId: parentId || 'parentId', - childrenList: children || 'children' - }; + let config = { + id: id || 'id', + parentId: parentId || 'parentId', + childrenList: children || 'children' + }; - var childrenListMap = {}; - var nodeIds = {}; - var tree = []; + var childrenListMap = {}; + var nodeIds = {}; + var tree = []; - for (let d of data) { - let parentId = d[config.parentId]; - if (childrenListMap[parentId] == null) { - childrenListMap[parentId] = []; - } - nodeIds[d[config.id]] = d; - childrenListMap[parentId].push(d); - } + for (let d of data) { + let parentId = d[config.parentId]; + if (childrenListMap[parentId] == null) { + childrenListMap[parentId] = []; + } + nodeIds[d[config.id]] = d; + childrenListMap[parentId].push(d); + } - for (let d of data) { - let parentId = d[config.parentId]; - if (nodeIds[parentId] == null) { - tree.push(d); - } - } + for (let d of data) { + let parentId = d[config.parentId]; + if (nodeIds[parentId] == null) { + tree.push(d); + } + } - for (let t of tree) { - adaptToChildrenList(t); - } + for (let t of tree) { + adaptToChildrenList(t); + } - function adaptToChildrenList(o) { - if (childrenListMap[o[config.id]] !== null) { - o[config.childrenList] = childrenListMap[o[config.id]]; - } - if (o[config.childrenList]) { - for (let c of o[config.childrenList]) { - adaptToChildrenList(c); - } - } - } - return tree; + function adaptToChildrenList(o) { + if (childrenListMap[o[config.id]] !== null) { + o[config.childrenList] = childrenListMap[o[config.id]]; + } + if (o[config.childrenList]) { + for (let c of o[config.childrenList]) { + adaptToChildrenList(c); + } + } + } + return tree; } /** @@ -187,34 +192,34 @@ * @param {*} params 鍙傛暟 */ export function tansParams(params) { - let result = '' - for (const propName of Object.keys(params)) { - const value = params[propName]; - var part = encodeURIComponent(propName) + "="; - if (value !== null && typeof (value) !== "undefined") { - if (typeof value === 'object') { - for (const key of Object.keys(value)) { - if (value[key] !== null && typeof (value[key]) !== 'undefined') { - let params = propName + '[' + key + ']'; - var subPart = encodeURIComponent(params) + "="; - result += subPart + encodeURIComponent(value[key]) + "&"; - } - } - } else { - result += part + encodeURIComponent(value) + "&"; - } - } - } - return result + let result = '' + for (const propName of Object.keys(params)) { + const value = params[propName]; + var part = encodeURIComponent(propName) + "="; + if (value !== null && typeof (value) !== "undefined") { + if (typeof value === 'object') { + for (const key of Object.keys(value)) { + if (value[key] !== null && typeof (value[key]) !== 'undefined') { + let params = propName + '[' + key + ']'; + var subPart = encodeURIComponent(params) + "="; + result += subPart + encodeURIComponent(value[key]) + "&"; + } + } + } else { + result += part + encodeURIComponent(value) + "&"; + } + } + } + return result } // 楠岃瘉鏄惁涓篵lob鏍煎紡 export async function blobValidate(data) { - try { - const text = await data.text(); - JSON.parse(text); - return false; - } catch (error) { - return true; - } -} + try { + const text = await data.text(); + JSON.parse(text); + return false; + } catch (error) { + return true; + } +} \ No newline at end of file diff --git a/ruoyi-ui/src/views/system/user/index.vue b/ruoyi-ui/src/views/system/user/index.vue index 0eb8ddc..a66aac2 100644 --- a/ruoyi-ui/src/views/system/user/index.vue +++ b/ruoyi-ui/src/views/system/user/index.vue @@ -495,7 +495,7 @@ // 鑺傜偣鍗曞嚮浜嬩欢 handleNodeClick(data) { this.queryParams.deptId = data.id; - this.getList(); + this.handleQuery(); }, // 鐢ㄦ埛鐘舵�佷慨鏀� handleStatusChange(row) { diff --git a/ruoyi-ui/src/views/tool/gen/editTable.vue b/ruoyi-ui/src/views/tool/gen/editTable.vue index 2141772..8c67dc2 100644 --- a/ruoyi-ui/src/views/tool/gen/editTable.vue +++ b/ruoyi-ui/src/views/tool/gen/editTable.vue @@ -33,6 +33,7 @@ <el-option label="Double" value="Double" /> <el-option label="BigDecimal" value="BigDecimal" /> <el-option label="Date" value="Date" /> + <el-option label="Boolean" value="Boolean" /> </el-select> </template> </el-table-column> -- Gitblit v1.9.3