mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 08:13:44 +08:00 
			
		
		
		
	Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
Conflicts: ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java ruoyi-generator/src/main/resources/vm/vue/index.vue.vm ruoyi-ui/package.json ruoyi-ui/src/main.js ruoyi-ui/src/views/monitor/job/index.vue ruoyi-ui/src/views/monitor/job/log.vue ruoyi-ui/src/views/monitor/logininfor/index.vue ruoyi-ui/src/views/monitor/operlog/index.vue ruoyi-ui/src/views/system/config/index.vue ruoyi-ui/src/views/system/dict/data.vue ruoyi-ui/src/views/system/dict/index.vue ruoyi-ui/src/views/system/post/index.vue ruoyi-ui/src/views/system/role/index.vue ruoyi-ui/src/views/system/user/index.vue ruoyi-ui/src/views/tool/build/index.vue ruoyi-ui/src/views/tool/gen/index.vue
This commit is contained in:
		@@ -35,6 +35,7 @@ public class FileUtils extends FileUtil
 | 
			
		||||
                .append(percentEncodedFileName);
 | 
			
		||||
 | 
			
		||||
        response.setHeader("Content-disposition", contentDispositionValue.toString());
 | 
			
		||||
        response.setHeader("download-filename", percentEncodedFileName);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,7 @@ import org.springframework.web.filter.CorsFilter;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * spring security配置
 | 
			
		||||
 *
 | 
			
		||||
 * 
 | 
			
		||||
 * @author ruoyi
 | 
			
		||||
 */
 | 
			
		||||
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
 | 
			
		||||
@@ -32,7 +32,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
 | 
			
		||||
     */
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private UserDetailsService userDetailsService;
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * 认证失败处理类
 | 
			
		||||
     */
 | 
			
		||||
@@ -50,7 +50,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
 | 
			
		||||
     */
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private JwtAuthenticationTokenFilter authenticationTokenFilter;
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * 跨域过滤器
 | 
			
		||||
     */
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,7 @@
 | 
			
		||||
    "core-js": "3.8.1",
 | 
			
		||||
    "echarts": "4.9.0",
 | 
			
		||||
    "element-ui": "2.15.5",
 | 
			
		||||
    "file-saver": "2.0.4",
 | 
			
		||||
    "file-saver": "2.0.5",
 | 
			
		||||
    "fuse.js": "6.4.3",
 | 
			
		||||
    "highlight.js": "9.18.5",
 | 
			
		||||
    "js-beautify": "1.13.0",
 | 
			
		||||
@@ -71,7 +71,7 @@
 | 
			
		||||
    "eslint-plugin-vue": "7.2.0",
 | 
			
		||||
    "lint-staged": "10.5.3",
 | 
			
		||||
    "runjs": "4.4.2",
 | 
			
		||||
    "sass": "1.32.0",
 | 
			
		||||
    "sass": "1.42.1",
 | 
			
		||||
    "sass-loader": "10.1.0",
 | 
			
		||||
    "script-ext-html-webpack-plugin": "2.1.5",
 | 
			
		||||
    "svg-sprite-loader": "5.1.1",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										48
									
								
								ruoyi-ui/src/plugins/download.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								ruoyi-ui/src/plugins/download.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
import { saveAs } from 'file-saver'
 | 
			
		||||
import axios from 'axios'
 | 
			
		||||
import { getToken } from '@/utils/auth'
 | 
			
		||||
 | 
			
		||||
const baseURL = process.env.VUE_APP_BASE_API
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  name(name, isDelete = true) {
 | 
			
		||||
    var url = baseURL + "/common/download?fileName=" + encodeURI(name) + "&delete=" + isDelete
 | 
			
		||||
    axios({
 | 
			
		||||
      method: 'get',
 | 
			
		||||
      url: url,
 | 
			
		||||
      responseType: 'blob',
 | 
			
		||||
      headers: { 'Authorization': 'Bearer ' + getToken() }
 | 
			
		||||
    }).then(res => {
 | 
			
		||||
      const blob = new Blob([res.data])
 | 
			
		||||
      this.saveAs(blob, decodeURI(res.headers['download-filename']))
 | 
			
		||||
    })
 | 
			
		||||
  },
 | 
			
		||||
  resource(resource) {
 | 
			
		||||
    var url = baseURL + "/common/download/resource?resource=" + encodeURI(resource);
 | 
			
		||||
    axios({
 | 
			
		||||
      method: 'get',
 | 
			
		||||
      url: url,
 | 
			
		||||
      responseType: 'blob',
 | 
			
		||||
      headers: { 'Authorization': 'Bearer ' + getToken() }
 | 
			
		||||
    }).then(res => {
 | 
			
		||||
      const blob = new Blob([res.data])
 | 
			
		||||
      this.saveAs(blob, decodeURI(res.headers['download-filename']))
 | 
			
		||||
    })
 | 
			
		||||
  },
 | 
			
		||||
  zip(url, name) {
 | 
			
		||||
    var url = baseURL + url
 | 
			
		||||
    axios({
 | 
			
		||||
      method: 'get',
 | 
			
		||||
      url: url,
 | 
			
		||||
      responseType: 'blob',
 | 
			
		||||
      headers: { 'Authorization': 'Bearer ' + getToken() }
 | 
			
		||||
    }).then(res => {
 | 
			
		||||
      const blob = new Blob([res.data], { type: 'application/zip' })
 | 
			
		||||
      this.saveAs(blob, name)
 | 
			
		||||
    })
 | 
			
		||||
  },
 | 
			
		||||
  saveAs(text, name, opts) {
 | 
			
		||||
    saveAs(text, name, opts);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
import cache from './cache'
 | 
			
		||||
import modal from './modal'
 | 
			
		||||
import download from './download'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  install(Vue) {
 | 
			
		||||
@@ -7,5 +8,7 @@ export default {
 | 
			
		||||
    Vue.prototype.$cache = cache
 | 
			
		||||
    // 模态框对象
 | 
			
		||||
    Vue.prototype.$modal = modal
 | 
			
		||||
    // 下载文件
 | 
			
		||||
    Vue.prototype.$download = download
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -3,8 +3,6 @@
 | 
			
		||||
 * Copyright (c) 2019 ruoyi
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
const baseURL = process.env.VUE_APP_BASE_API
 | 
			
		||||
 | 
			
		||||
// 日期格式化
 | 
			
		||||
export function parseTime(time, pattern) {
 | 
			
		||||
	if (arguments.length === 0 || !time) {
 | 
			
		||||
 
 | 
			
		||||
@@ -137,23 +137,13 @@
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import draggable from 'vuedraggable'
 | 
			
		||||
import { saveAs } from 'file-saver'
 | 
			
		||||
import beautifier from 'js-beautify'
 | 
			
		||||
import ClipboardJS from 'clipboard'
 | 
			
		||||
import render from '@/utils/generator/render'
 | 
			
		||||
import RightPanel from './RightPanel'
 | 
			
		||||
import {
 | 
			
		||||
  inputComponents,
 | 
			
		||||
  selectComponents,
 | 
			
		||||
  layoutComponents,
 | 
			
		||||
  formConf
 | 
			
		||||
} from '@/utils/generator/config'
 | 
			
		||||
import {
 | 
			
		||||
  exportDefault, beautifierConf, isNumberStr, titleCase
 | 
			
		||||
} from '@/utils/index'
 | 
			
		||||
import {
 | 
			
		||||
  makeUpHtml, vueTemplate, vueScript, cssStyle
 | 
			
		||||
} from '@/utils/generator/html'
 | 
			
		||||
import { inputComponents, selectComponents, layoutComponents, formConf } from '@/utils/generator/config'
 | 
			
		||||
import { beautifierConf, titleCase } from '@/utils/index'
 | 
			
		||||
import { makeUpHtml, vueTemplate, vueScript, cssStyle } from '@/utils/generator/html'
 | 
			
		||||
import { makeUpJs } from '@/utils/generator/js'
 | 
			
		||||
import { makeUpCss } from '@/utils/generator/css'
 | 
			
		||||
import drawingDefalut from '@/utils/generator/drawingDefalut'
 | 
			
		||||
@@ -161,7 +151,6 @@ import logo from '@/assets/logo/logo.png'
 | 
			
		||||
import CodeTypeDialog from './CodeTypeDialog'
 | 
			
		||||
import DraggableItem from './DraggableItem'
 | 
			
		||||
 | 
			
		||||
const emptyActiveData = { style: {}, autosize: {} }
 | 
			
		||||
let oldActiveId
 | 
			
		||||
let tempActiveData
 | 
			
		||||
 | 
			
		||||
@@ -287,7 +276,7 @@ export default {
 | 
			
		||||
    execDownload(data) {
 | 
			
		||||
      const codeStr = this.generateCode()
 | 
			
		||||
      const blob = new Blob([codeStr], { type: 'text/plain;charset=utf-8' })
 | 
			
		||||
      saveAs(blob, data.fileName)
 | 
			
		||||
      this.$download.saveAs(blob, data.fileName)
 | 
			
		||||
    },
 | 
			
		||||
    execCopy(data) {
 | 
			
		||||
      document.getElementById('copyNode').click()
 | 
			
		||||
 
 | 
			
		||||
@@ -270,7 +270,7 @@ export default {
 | 
			
		||||
          this.$modal.msgSuccess("成功生成到自定义路径:" + row.genPath);
 | 
			
		||||
        });
 | 
			
		||||
      } else {
 | 
			
		||||
        downLoadZip("/tool/gen/batchGenCode?tables=" + tableNames, "ruoyi");
 | 
			
		||||
        this.$download.zip("/tool/gen/batchGenCode?tables=" + tableNames, "ruoyi");
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    /** 同步数据库操作 */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user