Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue
Conflicts:
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/components/HeaderSearch/index.vue
ruoyi-ui/src/layout/components/TagsView/ScrollPane.vue
ruoyi-ui/src/utils/ruoyi.js
| | |
| | | <swagger.version>2.9.2</swagger.version>
|
| | | <kaptcha.version>2.3.2</kaptcha.version>
|
| | | <pagehelper.boot.version>1.2.5</pagehelper.boot.version>
|
| | | <fastjson.version>1.2.70</fastjson.version>
|
| | | <fastjson.version>1.2.73</fastjson.version>
|
| | | <oshi.version>3.9.1</oshi.version>
|
| | | <commons.io.version>2.5</commons.io.version>
|
| | | <commons.fileupload.version>1.3.3</commons.fileupload.version>
|
| | |
| | | import java.lang.annotation.Retention;
|
| | | import java.lang.annotation.RetentionPolicy;
|
| | | import java.lang.annotation.Target;
|
| | | import java.math.BigDecimal;
|
| | |
|
| | | /**
|
| | | * 自定义导出Excel数据注解
|
| | |
| | | public String dateFormat() default "";
|
| | |
|
| | | /**
|
| | | * 如果是字典类型,请设置字典的type值
|
| | | * 如果是字典类型,请设置字典的type值 (如: sys_user_sex)
|
| | | */
|
| | | public String dictType() default "";
|
| | |
|
| | |
| | | public String separator() default ",";
|
| | |
|
| | | /**
|
| | | * BigDecimal 精度 默认:-1(默认不开启BigDecimal格式化)
|
| | | */
|
| | | public int scale() default -1;
|
| | |
|
| | | /**
|
| | | * BigDecimal 舍入规则 默认:BigDecimal.ROUND_HALF_EVEN
|
| | | */
|
| | | public int roundingMode() default BigDecimal.ROUND_HALF_EVEN;
|
| | |
|
| | | /**
|
| | | * 导出类型(0数字 1字符串)
|
| | | */
|
| | | public ColumnType cellType() default ColumnType.STRING;
|
| | |
| | | import java.lang.reflect.Field;
|
| | | import java.lang.reflect.Method;
|
| | | import java.math.BigDecimal;
|
| | | import java.text.DecimalFormat;
|
| | | import java.util.ArrayList;
|
| | | import java.util.Arrays;
|
| | | import java.util.Comparator;
|
| | |
| | | {
|
| | | cell.setCellValue(convertByExp(Convert.toStr(value), readConverterExp, separator));
|
| | | }
|
| | | else if (StringUtils.isNotEmpty(dictType))
|
| | | else if (StringUtils.isNotEmpty(dictType) && StringUtils.isNotNull(value))
|
| | | {
|
| | | cell.setCellValue(convertDictByExp(Convert.toStr(value), dictType, separator));
|
| | | }
|
| | | else if (value instanceof BigDecimal && -1 != attr.scale())
|
| | | {
|
| | | cell.setCellValue((((BigDecimal) value).setScale(attr.scale(), attr.roundingMode())).toString());
|
| | | }
|
| | | else
|
| | | {
|
| | |
| | | }
|
| | | else
|
| | | {
|
| | | val = new BigDecimal(val.toString()); // 浮点格式处理
|
| | | if ((Double) val % 1 > 0)
|
| | | {
|
| | | val = new BigDecimal(val.toString());
|
| | | }
|
| | | else
|
| | | {
|
| | | val = new DecimalFormat("0").format(val);
|
| | | }
|
| | | }
|
| | | }
|
| | | else if (cell.getCellTypeEnum() == CellType.STRING)
|
| | |
| | | protected void configure(HttpSecurity httpSecurity) throws Exception |
| | | { |
| | | httpSecurity |
| | | // CRSF禁用,因为不使用session |
| | | // CSRF禁用,因为不使用session |
| | | .csrf().disable() |
| | | // 认证失败处理类 |
| | | .exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and() |
| | |
| | | v-hasPermi="['${moduleName}:${businessName}:add']"
|
| | | >新增</el-button>
|
| | | </el-col>
|
| | | <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
| | | <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
| | | </el-row>
|
| | |
|
| | | <el-table
|
| | |
| | | <el-input v-model="form.${field}" placeholder="请输入${comment}" />
|
| | | </el-form-item>
|
| | | #elseif($column.htmlType == "select" && "" != $dictType)
|
| | | <el-form-item label="${comment}">
|
| | | <el-form-item label="${comment}" prop="${field}">
|
| | | <el-select v-model="form.${field}" placeholder="请选择${comment}">
|
| | | <el-option
|
| | | v-for="dict in ${field}Options"
|
| | |
| | | </el-select>
|
| | | </el-form-item>
|
| | | #elseif($column.htmlType == "select" && $dictType)
|
| | | <el-form-item label="${comment}">
|
| | | <el-form-item label="${comment}" prop="${field}">
|
| | | <el-select v-model="form.${field}" placeholder="请选择${comment}">
|
| | | <el-option label="请选择字典生成" value="" />
|
| | | </el-select>
|
| | |
| | | #else
|
| | | #set($comment=$column.columnComment)
|
| | | #end
|
| | | #set($comment=$column.columnComment)
|
| | | $column.javaField: [
|
| | | { required: true, message: "$comment不能为空", trigger: "blur" }
|
| | | { required: true, message: "$comment不能为空", trigger: "#if($column.htmlType == "select")"change"#else"blur"#end" }
|
| | | ]#if($velocityCount != $columns.size()),#end
|
| | |
|
| | | #end
|
| | |
| | | <el-input v-model="form.${field}" placeholder="请输入${comment}" /> |
| | | </el-form-item> |
| | | #elseif($column.htmlType == "select" && "" != $dictType) |
| | | <el-form-item label="${comment}"> |
| | | <el-form-item label="${comment}" prop="${field}"> |
| | | <el-select v-model="form.${field}" placeholder="请选择${comment}"> |
| | | <el-option |
| | | v-for="dict in ${field}Options" |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | #elseif($column.htmlType == "select" && $dictType) |
| | | <el-form-item label="${comment}"> |
| | | <el-form-item label="${comment}" prop="${field}"> |
| | | <el-select v-model="form.${field}" placeholder="请选择${comment}"> |
| | | <el-option label="请选择字典生成" value="" /> |
| | | </el-select> |
| | |
| | | #else |
| | | #set($comment=$column.columnComment) |
| | | #end |
| | | #set($comment=$column.columnComment) |
| | | $column.javaField: [ |
| | | { required: true, message: "$comment不能为空", trigger: "blur" } |
| | | { required: true, message: "$comment不能为空", trigger: #if($column.htmlType == "select")"change"#else"blur"#end } |
| | | ]#if($velocityCount != $columns.size()),#end |
| | | |
| | | #end |
| | |
| | | "mockjs": "1.0.1-beta3", |
| | | "plop": "2.3.0", |
| | | "runjs": "4.3.2", |
| | | "sass": "1.26.10", |
| | | "node-sass": "4.14.1", |
| | | "sass-loader": "8.0.2", |
| | | "script-ext-html-webpack-plugin": "2.1.3", |
| | | "script-loader": "0.7.2", |
| | |
| | | display: inline-block; |
| | | vertical-align: middle; |
| | | |
| | | ::v-deep .el-input__inner { |
| | | /deep/ .el-input__inner { |
| | | border-radius: 0; |
| | | border: 0; |
| | | padding-left: 0; |
| | |
| | | position: relative; |
| | | overflow: hidden; |
| | | width: 100%; |
| | | ::v-deep { |
| | | /deep/ { |
| | | .el-scrollbar__bar { |
| | | bottom: 0px; |
| | | } |
| | |
| | | id = id || 'id' |
| | | parentId = parentId || 'parentId' |
| | | children = children || 'children' |
| | | rootId = rootId || 0 |
| | | rootId = rootId || Math.min.apply(Math, data.map(item => { return item[parentId] })) || 0 |
| | | //对源数据深度克隆 |
| | | const cloneData = JSON.parse(JSON.stringify(data)) |
| | | //循环所有项 |