Browse Source

Merge remote-tracking branch 'ruoyi-cloud/master' into dev

# Conflicts:
#	README.md
#	pom.xml
#	ruoyi-api/pom.xml
#	ruoyi-api/ruoyi-api-system/pom.xml
#	ruoyi-auth/pom.xml
#	ruoyi-common/pom.xml
#	ruoyi-common/ruoyi-common-core/pom.xml
#	ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/annotation/Excel.java
#	ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/GlobalException.java
#	ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/ServiceException.java
#	ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/Convert.java
#	ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/poi/ExcelUtil.java
#	ruoyi-common/ruoyi-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
#	ruoyi-common/ruoyi-common-datascope/src/main/java/com/ruoyi/common/datascope/aspect/DataScopeAspect.java
#	ruoyi-common/ruoyi-common-excel/pom.xml
#	ruoyi-common/ruoyi-common-job/pom.xml
#	ruoyi-common/ruoyi-common-log/pom.xml
#	ruoyi-common/ruoyi-common-log/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
#	ruoyi-common/ruoyi-common-mybatis/pom.xml
#	ruoyi-common/ruoyi-common-redis/pom.xml
#	ruoyi-common/ruoyi-common-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
#	ruoyi-common/ruoyi-common-security/pom.xml
#	ruoyi-common/ruoyi-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
#	ruoyi-example/ruoyi-stream-mq/pom.xml
#	ruoyi-gateway/pom.xml
#	ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/KaptchaTextCreator.java
#	ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java
#	ruoyi-modules/pom.xml
#	ruoyi-modules/ruoyi-gen/pom.xml
#	ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/v3/index.vue.vm
#	ruoyi-modules/ruoyi-job/pom.xml
#	ruoyi-modules/ruoyi-system/pom.xml
#	ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
#	ruoyi-ui/package.json
#	ruoyi-ui/src/views/index.vue
#	ruoyi-ui/src/views/login.vue
#	ruoyi-ui/src/views/register.vue
#	ruoyi-visual/pom.xml
#	ruoyi-visual/ruoyi-monitor/pom.xml
疯狂的狮子li 4 years ago
parent
commit
8c4091af01

+ 1 - 0
pom.xml

@@ -416,3 +416,4 @@
     </pluginRepositories>
     </pluginRepositories>
 
 
 </project>
 </project>
+

+ 3 - 0
ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -0,0 +1,3 @@
+com.ruoyi.system.api.factory.RemoteUserFallbackFactory
+com.ruoyi.system.api.factory.RemoteLogFallbackFactory
+com.ruoyi.system.api.factory.RemoteFileFallbackFactory

+ 1 - 1
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/GlobalException.java

@@ -47,4 +47,4 @@ public class GlobalException extends RuntimeException {
         this.message = message;
         this.message = message;
         return this;
         return this;
     }
     }
-}
+}

+ 1 - 0
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/ServiceException.java

@@ -61,3 +61,4 @@ public final class ServiceException extends RuntimeException {
         return this;
         return this;
     }
     }
 }
 }
+

+ 1 - 0
ruoyi-common/ruoyi-common-datascope/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -0,0 +1 @@
+com.ruoyi.common.datascope.aspect.DataScopeAspect

+ 3 - 0
ruoyi-common/ruoyi-common-swagger/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -0,0 +1,3 @@
+com.ruoyi.common.swagger.config.SwaggerAutoConfiguration
+com.ruoyi.common.swagger.config.SwaggerWebConfiguration
+com.ruoyi.common.swagger.config.SwaggerBeanPostProcessor

+ 3 - 3
ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java

@@ -39,9 +39,9 @@ public class ValidateCodeServiceImpl implements ValidateCodeService {
     @Override
     @Override
     public R<Map<String, Object>> createCaptcha() throws IOException, CaptchaException {
     public R<Map<String, Object>> createCaptcha() throws IOException, CaptchaException {
         Map<String, Object> ajax = new HashMap<>();
         Map<String, Object> ajax = new HashMap<>();
-        boolean captchaOnOff = captchaProperties.getEnabled();
-        ajax.put("captchaOnOff", captchaOnOff);
-        if (!captchaOnOff) {
+        boolean captchaEnabled = captchaProperties.getEnabled();
+        ajax.put("captchaEnabled", captchaEnabled);
+        if (!captchaEnabled) {
             return R.ok(ajax);
             return R.ok(ajax);
         }
         }
 
 

+ 4 - 4
ruoyi-modules/ruoyi-gen/src/main/resources/vm/vue/v3/index.vue.vm

@@ -492,8 +492,8 @@ function handleAdd() {
 function handleUpdate(row) {
 function handleUpdate(row) {
   loading.value = true
   loading.value = true
   reset();
   reset();
-  const ${pkColumn.javaField} = row.${pkColumn.javaField} || ids.value
-  get${BusinessName}(${pkColumn.javaField}).then(response => {
+  const _${pkColumn.javaField} = row.${pkColumn.javaField} || ids.value
+  get${BusinessName}(_${pkColumn.javaField}).then(response => {
     loading.value = false;
     loading.value = false;
     form.value = response.data;
     form.value = response.data;
 #foreach ($column in $columns)
 #foreach ($column in $columns)
@@ -545,10 +545,10 @@ function submitForm() {
 
 
 /** 删除按钮操作 */
 /** 删除按钮操作 */
 function handleDelete(row) {
 function handleDelete(row) {
-  const ${pkColumn.javaField}s = row.${pkColumn.javaField} || ids.value;
+  const _${pkColumn.javaField}s = row.${pkColumn.javaField} || ids.value;
   proxy.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + ${pkColumn.javaField}s + '"的数据项?').then(function() {
   proxy.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + ${pkColumn.javaField}s + '"的数据项?').then(function() {
     loading.value = true;
     loading.value = true;
-    return del${BusinessName}(${pkColumn.javaField}s);
+    return del${BusinessName}(_${pkColumn.javaField}s);
   }).then(() => {
   }).then(() => {
     loading.value = true;
     loading.value = true;
     getList();
     getList();

+ 29 - 1
ruoyi-ui/src/components/DictData/index.js

@@ -1,7 +1,23 @@
 import Vue from 'vue'
 import Vue from 'vue'
+import store from '@/store'
 import DataDict from '@/utils/dict'
 import DataDict from '@/utils/dict'
 import { getDicts as getDicts } from '@/api/system/dict/data'
 import { getDicts as getDicts } from '@/api/system/dict/data'
 
 
+function searchDictByKey(dict, key) {
+  if (key == null && key == "") {
+    return null
+  }
+  try {
+    for (let i = 0; i < dict.length; i++) {
+      if (dict[i].key == key) {
+        return dict[i].value
+      }
+    }
+  } catch (e) {
+    return null
+  }
+}
+
 function install() {
 function install() {
   Vue.use(DataDict, {
   Vue.use(DataDict, {
     metas: {
     metas: {
@@ -9,7 +25,19 @@ function install() {
         labelField: 'dictLabel',
         labelField: 'dictLabel',
         valueField: 'dictValue',
         valueField: 'dictValue',
         request(dictMeta) {
         request(dictMeta) {
-          return getDicts(dictMeta.type).then(res => res.data)
+          const storeDict = searchDictByKey(store.getters.dict, dictMeta.type)
+          if (storeDict) {
+            return new Promise(resolve => { resolve(storeDict) })
+          } else {
+            return new Promise((resolve, reject) => {
+              getDicts(dictMeta.type).then(res => {
+                store.dispatch('dict/setDict', { key: dictMeta.type, value: res.data })
+                resolve(res.data)
+              }).catch(error => {
+                reject(error)
+              })
+            })
+          }
         },
         },
       },
       },
     },
     },

+ 3 - 40
ruoyi-ui/src/components/RightPanel/index.vue

@@ -1,5 +1,5 @@
 <template>
 <template>
-  <div ref="rightPanel" :class="{show:show}" class="rightPanel-container">
+  <div ref="rightPanel" class="rightPanel-container">
     <div class="rightPanel-background" />
     <div class="rightPanel-background" />
     <div class="rightPanel">
     <div class="rightPanel">
       <div class="rightPanel-items">
       <div class="rightPanel-items">
@@ -10,18 +10,12 @@
 </template>
 </template>
 
 
 <script>
 <script>
-import { addClass, removeClass } from '@/utils'
-
 export default {
 export default {
   name: 'RightPanel',
   name: 'RightPanel',
   props: {
   props: {
     clickNotClose: {
     clickNotClose: {
       default: false,
       default: false,
       type: Boolean
       type: Boolean
-    },
-    buttonTop: {
-      default: 250,
-      type: Number
     }
     }
   },
   },
   computed: {
   computed: {
@@ -35,21 +29,13 @@ export default {
           value: val
           value: val
         })
         })
       }
       }
-    },
-    theme() {
-      return this.$store.state.settings.theme
-    },
+    }
   },
   },
   watch: {
   watch: {
     show(value) {
     show(value) {
       if (value && !this.clickNotClose) {
       if (value && !this.clickNotClose) {
         this.addEventClick()
         this.addEventClick()
       }
       }
-      if (value) {
-        addClass(document.body, 'showRightPanel')
-      } else {
-        removeClass(document.body, 'showRightPanel')
-      }
     }
     }
   },
   },
   mounted() {
   mounted() {
@@ -65,7 +51,7 @@ export default {
       window.addEventListener('click', this.closeSidebar)
       window.addEventListener('click', this.closeSidebar)
     },
     },
     closeSidebar(evt) {
     closeSidebar(evt) {
-      const parent = evt.target.closest('.rightPanel')
+      const parent = evt.target.closest('.el-drawer__body')
       if (!parent) {
       if (!parent) {
         this.show = false
         this.show = false
         window.removeEventListener('click', this.closeSidebar)
         window.removeEventListener('click', this.closeSidebar)
@@ -80,14 +66,6 @@ export default {
 }
 }
 </script>
 </script>
 
 
-<style>
-.showRightPanel {
-  overflow: hidden;
-  position: relative;
-  width: calc(100% - 15px);
-}
-</style>
-
 <style lang="scss" scoped>
 <style lang="scss" scoped>
 .rightPanel-background {
 .rightPanel-background {
   position: fixed;
   position: fixed;
@@ -113,21 +91,6 @@ export default {
   z-index: 40000;
   z-index: 40000;
 }
 }
 
 
-.show {
-  transition: all .3s cubic-bezier(.7, .3, .1, 1);
-
-  .rightPanel-background {
-    z-index: 20000;
-    opacity: 1;
-    width: 100%;
-    height: 100%;
-  }
-
-  .rightPanel {
-    transform: translate(0);
-  }
-}
-
 .handle-button {
 .handle-button {
   width: 48px;
   width: 48px;
   height: 48px;
   height: 48px;

+ 63 - 60
ruoyi-ui/src/layout/components/Settings/index.vue

@@ -1,78 +1,76 @@
 <template>
 <template>
-  <div class="drawer-container">
-    <div>
-      <div class="setting-drawer-content">
-        <div class="setting-drawer-title">
-          <h3 class="drawer-title">主题风格设置</h3>
-        </div>
-        <div class="setting-drawer-block-checbox">
-          <div class="setting-drawer-block-checbox-item" @click="handleTheme('theme-dark')">
-            <img src="@/assets/images/dark.svg" alt="dark">
-            <div v-if="sideTheme === 'theme-dark'" class="setting-drawer-block-checbox-selectIcon" style="display: block;">
-              <i aria-label="图标: check" class="anticon anticon-check">
-                <svg viewBox="64 64 896 896" data-icon="check" width="1em" height="1em" :fill="theme" aria-hidden="true"
-                     focusable="false" class="">
-                  <path
-                    d="M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"/>
-                </svg>
-              </i>
-            </div>
+  <el-drawer size="280px" :visible="visible" :with-header="false" :append-to-body="true" :show-close="false">
+    <div class="drawer-container">
+      <div>
+        <div class="setting-drawer-content">
+          <div class="setting-drawer-title">
+            <h3 class="drawer-title">主题风格设置</h3>
           </div>
           </div>
-          <div class="setting-drawer-block-checbox-item" @click="handleTheme('theme-light')">
-            <img src="@/assets/images/light.svg" alt="light">
-            <div v-if="sideTheme === 'theme-light'" class="setting-drawer-block-checbox-selectIcon" style="display: block;">
-              <i aria-label="图标: check" class="anticon anticon-check">
-                <svg viewBox="64 64 896 896" data-icon="check" width="1em" height="1em" :fill="theme" aria-hidden="true"
-                     focusable="false" class="">
-                  <path
-                    d="M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"/>
-                </svg>
-              </i>
+          <div class="setting-drawer-block-checbox">
+            <div class="setting-drawer-block-checbox-item" @click="handleTheme('theme-dark')">
+              <img src="@/assets/images/dark.svg" alt="dark">
+              <div v-if="sideTheme === 'theme-dark'" class="setting-drawer-block-checbox-selectIcon" style="display: block;">
+                <i aria-label="图标: check" class="anticon anticon-check">
+                  <svg viewBox="64 64 896 896" data-icon="check" width="1em" height="1em" :fill="theme" aria-hidden="true" focusable="false" class="">
+                    <path d="M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"/>
+                  </svg>
+                </i>
+              </div>
+            </div>
+            <div class="setting-drawer-block-checbox-item" @click="handleTheme('theme-light')">
+              <img src="@/assets/images/light.svg" alt="light">
+              <div v-if="sideTheme === 'theme-light'" class="setting-drawer-block-checbox-selectIcon" style="display: block;">
+                <i aria-label="图标: check" class="anticon anticon-check">
+                  <svg viewBox="64 64 896 896" data-icon="check" width="1em" height="1em" :fill="theme" aria-hidden="true" focusable="false" class="">
+                    <path d="M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"/>
+                  </svg>
+                </i>
+              </div>
             </div>
             </div>
           </div>
           </div>
-        </div>
 
 
-        <div class="drawer-item">
-          <span>主题颜色</span>
-          <theme-picker style="float: right;height: 26px;margin: -3px 8px 0 0;" @change="themeChange" />
+          <div class="drawer-item">
+            <span>主题颜色</span>
+            <theme-picker style="float: right;height: 26px;margin: -3px 8px 0 0;" @change="themeChange" />
+          </div>
         </div>
         </div>
-      </div>
 
 
-      <el-divider/>
+        <el-divider/>
 
 
-      <h3 class="drawer-title">系统布局配置</h3>
+        <h3 class="drawer-title">系统布局配置</h3>
       
       
-      <div class="drawer-item">
-        <span>开启 TopNav</span>
-        <el-switch v-model="topNav" class="drawer-switch" />
-      </div>
+        <div class="drawer-item">
+          <span>开启 TopNav</span>
+          <el-switch v-model="topNav" class="drawer-switch" />
+        </div>
 
 
-      <div class="drawer-item">
-        <span>开启 Tags-Views</span>
-        <el-switch v-model="tagsView" class="drawer-switch" />
-      </div>
+        <div class="drawer-item">
+          <span>开启 Tags-Views</span>
+          <el-switch v-model="tagsView" class="drawer-switch" />
+        </div>
 
 
-      <div class="drawer-item">
-        <span>固定 Header</span>
-        <el-switch v-model="fixedHeader" class="drawer-switch" />
-      </div>
+        <div class="drawer-item">
+          <span>固定 Header</span>
+          <el-switch v-model="fixedHeader" class="drawer-switch" />
+        </div>
 
 
-      <div class="drawer-item">
-        <span>显示 Logo</span>
-        <el-switch v-model="sidebarLogo" class="drawer-switch" />
-      </div>
+        <div class="drawer-item">
+          <span>显示 Logo</span>
+          <el-switch v-model="sidebarLogo" class="drawer-switch" />
+        </div>
 
 
-      <div class="drawer-item">
-        <span>动态标题</span>
-        <el-switch v-model="dynamicTitle" class="drawer-switch" />
-      </div>
+        <div class="drawer-item">
+          <span>动态标题</span>
+          <el-switch v-model="dynamicTitle" class="drawer-switch" />
+        </div>
 
 
-      <el-divider/>
+        <el-divider/>
 
 
-      <el-button size="small" type="primary" plain icon="el-icon-document-add" @click="saveSetting">保存配置</el-button>
-      <el-button size="small" plain icon="el-icon-refresh" @click="resetSetting">重置配置</el-button>
+        <el-button size="small" type="primary" plain icon="el-icon-document-add" @click="saveSetting">保存配置</el-button>
+        <el-button size="small" plain icon="el-icon-refresh" @click="resetSetting">重置配置</el-button>
+      </div>
     </div>
     </div>
-  </div>
+  </el-drawer>
 </template>
 </template>
 
 
 <script>
 <script>
@@ -87,6 +85,11 @@ export default {
     };
     };
   },
   },
   computed: {
   computed: {
+    visible: {
+      get() {
+        return this.$store.state.settings.showSettings
+      }
+    },
     fixedHeader: {
     fixedHeader: {
       get() {
       get() {
         return this.$store.state.settings.fixedHeader
         return this.$store.state.settings.fixedHeader
@@ -232,7 +235,7 @@ export default {
   }
   }
 
 
   .drawer-container {
   .drawer-container {
-    padding: 24px;
+    padding: 20px;
     font-size: 14px;
     font-size: 14px;
     line-height: 1.5;
     line-height: 1.5;
     word-wrap: break-word;
     word-wrap: break-word;

+ 1 - 0
ruoyi-ui/src/store/getters.js

@@ -2,6 +2,7 @@ const getters = {
   sidebar: state => state.app.sidebar,
   sidebar: state => state.app.sidebar,
   size: state => state.app.size,
   size: state => state.app.size,
   device: state => state.app.device,
   device: state => state.app.device,
+  dict: state => state.dict.dict,
   visitedViews: state => state.tagsView.visitedViews,
   visitedViews: state => state.tagsView.visitedViews,
   cachedViews: state => state.tagsView.cachedViews,
   cachedViews: state => state.tagsView.cachedViews,
   token: state => state.user.token,
   token: state => state.user.token,

+ 2 - 0
ruoyi-ui/src/store/index.js

@@ -1,6 +1,7 @@
 import Vue from 'vue'
 import Vue from 'vue'
 import Vuex from 'vuex'
 import Vuex from 'vuex'
 import app from './modules/app'
 import app from './modules/app'
+import dict from './modules/dict'
 import user from './modules/user'
 import user from './modules/user'
 import tagsView from './modules/tagsView'
 import tagsView from './modules/tagsView'
 import permission from './modules/permission'
 import permission from './modules/permission'
@@ -12,6 +13,7 @@ Vue.use(Vuex)
 const store = new Vuex.Store({
 const store = new Vuex.Store({
   modules: {
   modules: {
     app,
     app,
+    dict,
     user,
     user,
     tagsView,
     tagsView,
     permission,
     permission,

+ 50 - 0
ruoyi-ui/src/store/modules/dict.js

@@ -0,0 +1,50 @@
+const state = {
+  dict: new Array()
+}
+const mutations = {
+  SET_DICT: (state, { key, value }) => {
+    if (key !== null && key !== "") {
+      state.dict.push({
+        key: key,
+        value: value
+      })
+    }
+  },
+  REMOVE_DICT: (state, key) => {
+    try {
+      for (let i = 0; i < state.dict.length; i++) {
+        if (state.dict[i].key == key) {
+          state.dict.splice(i, i)
+          return true
+        }
+      }
+    } catch (e) {
+    }
+  },
+  CLEAN_DICT: (state) => {
+    state.dict = new Array()
+  }
+}
+
+const actions = {
+  // 设置字典
+  setDict({ commit }, data) {
+    commit('SET_DICT', data)
+  },
+  // 删除字典
+  removeDict({ commit }, key) {
+    commit('REMOVE_DICT', key)
+  },
+  // 清空字典
+  cleanDict({ commit }) {
+    commit('CLEAN_DICT')
+  }
+}
+
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions
+}
+

+ 5 - 5
ruoyi-ui/src/views/login.vue

@@ -23,7 +23,7 @@
           <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
           <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
         </el-input>
         </el-input>
       </el-form-item>
       </el-form-item>
-      <el-form-item prop="code" v-if="captchaOnOff">
+      <el-form-item prop="code" v-if="captchaEnabled">
         <el-input
         <el-input
           v-model="loginForm.code"
           v-model="loginForm.code"
           auto-complete="off"
           auto-complete="off"
@@ -89,7 +89,7 @@ export default {
       },
       },
       loading: false,
       loading: false,
       // 验证码开关
       // 验证码开关
-      captchaOnOff: true,
+      captchaEnabled: true,
       // 注册开关
       // 注册开关
       register: false,
       register: false,
       redirect: undefined
       redirect: undefined
@@ -110,8 +110,8 @@ export default {
   methods: {
   methods: {
     getCode() {
     getCode() {
       getCodeImg().then(res => {
       getCodeImg().then(res => {
-        this.captchaOnOff = res.data.captchaOnOff === undefined ? true : res.data.captchaOnOff;
-        if (this.captchaOnOff) {
+        this.captchaEnabled = res.data.captchaEnabled === undefined ? true : res.data.captchaEnabled;
+        if (this.captchaEnabled) {
           this.codeUrl = "data:image/gif;base64," + res.data.img;
           this.codeUrl = "data:image/gif;base64," + res.data.img;
           this.loginForm.uuid = res.data.uuid;
           this.loginForm.uuid = res.data.uuid;
         }
         }
@@ -144,7 +144,7 @@ export default {
             this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
             this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
           }).catch(() => {
           }).catch(() => {
             this.loading = false;
             this.loading = false;
-            if (this.captchaOnOff) {
+            if (this.captchaEnabled) {
               this.getCode();
               this.getCode();
             }
             }
           });
           });

+ 5 - 5
ruoyi-ui/src/views/register.vue

@@ -29,7 +29,7 @@
           <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
           <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
         </el-input>
         </el-input>
       </el-form-item>
       </el-form-item>
-      <el-form-item prop="code" v-if="captchaOnOff">
+      <el-form-item prop="code" v-if="captchaEnabled">
         <el-input
         <el-input
           v-model="registerForm.code"
           v-model="registerForm.code"
           auto-complete="off"
           auto-complete="off"
@@ -105,7 +105,7 @@ export default {
         code: [{ required: true, trigger: "change", message: "请输入验证码" }]
         code: [{ required: true, trigger: "change", message: "请输入验证码" }]
       },
       },
       loading: false,
       loading: false,
-      captchaOnOff: true
+      captchaEnabled: true
     };
     };
   },
   },
   created() {
   created() {
@@ -114,8 +114,8 @@ export default {
   methods: {
   methods: {
     getCode() {
     getCode() {
       getCodeImg().then(res => {
       getCodeImg().then(res => {
-        this.captchaOnOff = res.captchaOnOff === undefined ? true : res.captchaOnOff;
-        if (this.captchaOnOff) {
+        this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled;
+        if (this.captchaEnabled) {
           this.codeUrl = "data:image/gif;base64," + res.img;
           this.codeUrl = "data:image/gif;base64," + res.img;
           this.registerForm.uuid = res.uuid;
           this.registerForm.uuid = res.uuid;
         }
         }
@@ -135,7 +135,7 @@ export default {
             }).catch(() => {});
             }).catch(() => {});
           }).catch(() => {
           }).catch(() => {
             this.loading = false;
             this.loading = false;
-            if (this.captchaOnOff) {
+            if (this.captchaEnabled) {
               this.getCode();
               this.getCode();
             }
             }
           })
           })

+ 3 - 0
ruoyi-ui/src/views/system/dict/data.vue

@@ -364,12 +364,14 @@ export default {
         if (valid) {
         if (valid) {
           if (this.form.dictCode != undefined) {
           if (this.form.dictCode != undefined) {
             updateData(this.form).then(response => {
             updateData(this.form).then(response => {
+              this.$store.dispatch('dict/removeDict', this.queryParams.dictType);
               this.$modal.msgSuccess("修改成功");
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.open = false;
               this.getList();
               this.getList();
             });
             });
           } else {
           } else {
             addData(this.form).then(response => {
             addData(this.form).then(response => {
+              this.$store.dispatch('dict/removeDict', this.queryParams.dictType);
               this.$modal.msgSuccess("新增成功");
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.open = false;
               this.getList();
               this.getList();
@@ -386,6 +388,7 @@ export default {
       }).then(() => {
       }).then(() => {
         this.getList();
         this.getList();
         this.$modal.msgSuccess("删除成功");
         this.$modal.msgSuccess("删除成功");
+        this.$store.dispatch('dict/removeDict', this.queryParams.dictType);
       }).catch(() => {});
       }).catch(() => {});
     },
     },
     /** 导出按钮操作 */
     /** 导出按钮操作 */

+ 1 - 0
ruoyi-ui/src/views/system/dict/index.vue

@@ -339,6 +339,7 @@ export default {
     handleRefreshCache() {
     handleRefreshCache() {
       refreshCache().then(() => {
       refreshCache().then(() => {
         this.$modal.msgSuccess("刷新成功");
         this.$modal.msgSuccess("刷新成功");
+        this.$store.dispatch('dict/cleanDict');
       });
       });
     }
     }
   }
   }

+ 1 - 1
ruoyi-ui/src/views/system/user/profile/resetPwd.vue

@@ -7,7 +7,7 @@
       <el-input v-model="user.newPassword" placeholder="请输入新密码" type="password" show-password/>
       <el-input v-model="user.newPassword" placeholder="请输入新密码" type="password" show-password/>
     </el-form-item>
     </el-form-item>
     <el-form-item label="确认密码" prop="confirmPassword">
     <el-form-item label="确认密码" prop="confirmPassword">
-      <el-input v-model="user.confirmPassword" placeholder="请确认密码" type="password" show-password/>
+      <el-input v-model="user.confirmPassword" placeholder="请确认密码" type="password" show-password/>
     </el-form-item>
     </el-form-item>
     <el-form-item>
     <el-form-item>
       <el-button type="primary" size="mini" @click="submit">保存</el-button>
       <el-button type="primary" size="mini" @click="submit">保存</el-button>