master
wangbing 5 years ago
parent 40b05f6725
commit c98b653dd1

@ -224,32 +224,6 @@ public class GlobalController implements ErrorController {
return layout;
}
@RequestMapping("/upload")
@ResponseBody
public BaseResponse upload(HttpServletRequest request) {
FileUploadResponse fileUploadResponse = new FileUploadResponse();
MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
MultipartFile target = multipartHttpServletRequest.getFile("file");
String fileName = target.getOriginalFilename();
//========
//处理文件
//========
fileUploadResponse.setId(1L);
fileUploadResponse.setUrl("example.com\\img\\1.jpg");
fileUploadResponse.setDownloadUrl("example.com\\img\\1.jpg");
if (target != null) {
fileUploadResponse.addError(ErrorType.BUSINESS_ERROR, "文件上传成功,但未处理文件[" + fileName + "]!");
} else {
fileUploadResponse.addError(ErrorType.BUSINESS_ERROR, "文件上传失败!");
}
return fileUploadResponse;
}
@RequestMapping("/ajax/{module}/{target}/{method}")
@ResponseBody
public Object ajax(
@ -300,42 +274,23 @@ public class GlobalController implements ErrorController {
}
return methodC.invoke(ajax, arg);
} catch (BeansException e) {
e.printStackTrace();
BaseResponse baseResponse = new BaseResponse();
baseResponse.addError(ErrorType.BUSINESS_ERROR, "未找到对应的目标!");
return baseResponse;
} catch (IllegalAccessException e) {
e.printStackTrace();
BaseResponse baseResponse = new BaseResponse();
baseResponse.addError(ErrorType.BUSINESS_ERROR, "方法执必须公开!");
return baseResponse;
} catch (InvocationTargetException e) {
e.getTargetException().printStackTrace();
BaseResponse baseResponse = new BaseResponse();
baseResponse.addError(ErrorType.BUSINESS_ERROR, "方法执行错误[" + e.getTargetException().getMessage() + "]");
return baseResponse;
}
}
@RequestMapping("/download")
@ResponseBody
public ResponseEntity<byte[]> download(@RequestParam(value = "file", required = false) String file) throws IOException {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//========
//下载DEMO
//========
if (file == null) {
file = "test.txt";
headers.setContentDispositionFormData("attachment", new String(file.getBytes("UTF-8"), "iso-8859-1"));
return new ResponseEntity<byte[]>("test".getBytes(),
headers, HttpStatus.CREATED);
}
return new ResponseEntity<byte[]>(FileUtil.readFileToByteArray(new File(file)),
headers, HttpStatus.CREATED);
}
private static ConcurrentHashMap<String, SseEmitter> sseMap = new ConcurrentHashMap();
/**

@ -1,22 +1,25 @@
package ${basePackage}.action.ajax.${module};
import com.fasterxml.jackson.core.TreeNode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.multipart.MultipartFile;
import ${basePackage}.frame.excel.WSheet;
import ${basePackage}.frame.utils.LogUtil;
import ${basePackage}.frame.auth.LocalData;
import ${basePackage}.frame.base.ErrorType;
import ${basePackage}.frame.utils.MapperUtil;
import ${basePackage}.frame.base.BaseResponse;
import ${basePackage}.frame.utils.ResponseUtil;
import ${basePackage}.module.${module}.mgr.${table.getCName()}Manager;
import ${basePackage}.frame.utils.ValidationUtil;
import ${basePackage}.frame.excel.exception.ReadErrorException;
import ${basePackage}.frame.excel.exception.TemplateNotMatchException;
import ${basePackage}.module.${module}.ent.${table.getCName()};
import ${basePackage}.module.${module}.mgr.${table.getCName()}Manager;
import ${basePackage}.module.${module}.req.*;
import ${basePackage}.module.${module}.rsp.*;
import ${basePackage}.frame.base.BaseResponse;
import ${basePackage}.frame.base.ErrorType;
import ${basePackage}.frame.excel.WSheet;
import ${basePackage}.frame.excel.exception.ReadErrorException;
import ${basePackage}.frame.excel.exception.TemplateNotMatchException;
import com.fasterxml.jackson.core.TreeNode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
public class ${table.getCName()}Ajax{
@ -89,14 +92,22 @@ public class ${table.getCName()}Ajax{
public Object imports(MultipartFile file) {
BaseResponse baseResponse = new BaseResponse();
try {
WSheet<${table.getCName()}> sheet = new WSheet<>(file.getBytes(), ${table.getCName()}.class);
WSheet<${table.getCName()}> sheet = new WSheet<>(file.getBytes(), ${table.getCName()}.class, new WSheet.Validator<${table.getCName()}>() {
@Override
public List<String> validate(${table.getCName()} o) {
${table.getCName()}CreateRequest request = MapperUtil.map(o, ${table.getCName()}CreateRequest.class);
return ValidationUtil.validate(request);
}
});
if (sheet.hasError()) {
return ResponseUtil.apply(sheet.getBytes(), sheet.getName() + "-err.xlsx");
return ResponseUtil.apply(sheet.getBytes(), sheet.getName() + "-检查.xlsx");
} else {
return baseResponse;
}
} catch (IOException e) {
e.printStackTrace();
LogUtil.dumpException(e);
baseResponse.addError(ErrorType.BUSINESS_ERROR, "上传文件出错");
} catch (TemplateNotMatchException | ReadErrorException e) {
baseResponse.addError(ErrorType.BUSINESS_ERROR, e.getMessage());

@ -3,15 +3,16 @@ package ${basePackage}.action.ajax.system;
import com.fasterxml.jackson.core.TreeNode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.multipart.MultipartFile;
import ${basePackage}.frame.excel.WSheet;
import ${basePackage}.frame.utils.LogUtil;
import ${basePackage}.frame.auth.LocalData;
import ${basePackage}.frame.base.BaseResponse;
import ${basePackage}.frame.base.ErrorType;
import ${basePackage}.frame.excel.WSheet;
import ${basePackage}.frame.excel.exception.ReadErrorException;
import ${basePackage}.frame.excel.exception.TemplateNotMatchException;
import ${basePackage}.frame.utils.MapperUtil;
import ${basePackage}.frame.base.BaseResponse;
import ${basePackage}.frame.utils.ResponseUtil;
import ${basePackage}.frame.utils.ValidationUtil;
import ${basePackage}.frame.excel.exception.ReadErrorException;
import ${basePackage}.frame.excel.exception.TemplateNotMatchException;
import ${basePackage}.module.system.ent.Dict;
import ${basePackage}.module.system.mgr.DictManager;
import ${basePackage}.module.system.req.*;
@ -80,11 +81,13 @@ public class DictAjax {
});
if (sheet.hasError()) {
return ResponseUtil.apply(sheet.getBytes(true), sheet.getName() + "-err.xlsx");
return ResponseUtil.apply(sheet.getBytes(true), sheet.getName() + "-检查.xlsx");
} else {
return baseResponse;
}
} catch (IOException e) {
e.printStackTrace();
LogUtil.dumpException(e);
baseResponse.addError(ErrorType.BUSINESS_ERROR, "上传文件出错");
} catch (TemplateNotMatchException | ReadErrorException e) {
baseResponse.addError(ErrorType.BUSINESS_ERROR, e.getMessage());

@ -1,93 +1,92 @@
package ${basePackage}.action.ajax.system;
import ${basePackage}.frame.auth.LocalData;
import com.fasterxml.jackson.core.TreeNode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.multipart.MultipartFile;
import ${basePackage}.frame.excel.WSheet;
import ${basePackage}.frame.utils.LogUtil;
import ${basePackage}.frame.auth.LocalData;
import ${basePackage}.frame.base.ErrorType;
import ${basePackage}.frame.utils.MapperUtil;
import ${basePackage}.module.system.mgr.DictItemManager;
import ${basePackage}.module.system.req.*;
import ${basePackage}.module.system.rsp.*;
import ${basePackage}.frame.base.BaseResponse;
import ${basePackage}.frame.base.ErrorType;
import ${basePackage}.frame.utils.ResponseUtil;
import ${basePackage}.frame.utils.ValidationUtil;
import ${basePackage}.frame.excel.exception.ReadErrorException;
import ${basePackage}.frame.excel.exception.TemplateNotMatchException;
import org.springframework.web.multipart.MultipartFile;
import com.fasterxml.jackson.core.TreeNode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import ${basePackage}.module.system.ent.DictItem;
import ${basePackage}.module.system.mgr.DictItemManager;
import ${basePackage}.module.system.req.*;
import ${basePackage}.module.system.rsp.*;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.List;
public class DictItemAjax {
@Autowired
private DictItemManager dictManager;
private DictItemManager dictItemManager;
public DictItemCreateResponse create(TreeNode jsonParam) {
DictItemCreateRequest request = MapperUtil.toJava(jsonParam, DictItemCreateRequest.class);
return dictManager.create(request, LocalData.getToken());
return dictItemManager.create(request, LocalData.getToken());
}
public DictItemDeleteResponse delete(TreeNode jsonParam) {
DictItemDeleteRequest request = MapperUtil.toJava(jsonParam, DictItemDeleteRequest.class);
return dictManager.delete(request, LocalData.getToken());
return dictItemManager.delete(request, LocalData.getToken());
}
public DictItemUpdateResponse update(TreeNode jsonParam) {
DictItemUpdateRequest request = MapperUtil.toJava(jsonParam, DictItemUpdateRequest.class);
return dictManager.update(request, LocalData.getToken());
return dictItemManager.update(request, LocalData.getToken());
}
public DictItemFindResponse find(TreeNode jsonParam) {
DictItemFindRequest request = MapperUtil.toJava(jsonParam, DictItemFindRequest.class);
return dictManager.find(request, LocalData.getToken());
return dictItemManager.find(request, LocalData.getToken());
}
public DictItemGetResponse get(TreeNode jsonParam) {
DictItemGetRequest request = MapperUtil.toJava(jsonParam, DictItemGetRequest.class);
return dictManager.get(request, LocalData.getToken());
return dictItemManager.get(request, LocalData.getToken());
}
public Object template(){
try {
WSheet<DictItemCreateRequest> sheet = new WSheet<>(DictItemCreateRequest.class);
byte[] bytes = sheet.getBytes();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", URLEncoder.encode(sheet.getName() + ".xlsx","utf-8"));
return new ResponseEntity<>(bytes, headers, HttpStatus.OK);
} catch (IOException e) {
BaseResponse baseResponse = new BaseResponse();
baseResponse.addError(ErrorType.BUSINESS_ERROR, "");
return baseResponse;
return ResponseUtil.apply(new WSheet<>(DictItem.class));
}
public Object exports(TreeNode jsonParam) {
DictItemFindRequest request = MapperUtil.toJava(jsonParam, DictItemFindRequest.class);
DictItemFindResponse response = dictItemManager.find(request, LocalData.getToken());
if (response.hasError()) {
return response;
}
return ResponseUtil.apply(new WSheet<>(response.getResult()));
}
public Object imports(MultipartFile file) {
BaseResponse baseResponse = new BaseResponse();
try {
byte[] bytes = file.getBytes();
WSheet<DictItemCreateRequest> sheet = new WSheet<>(bytes, DictItemCreateRequest.class);
WSheet<DictItem> sheet = new WSheet<>(file.getBytes(), DictItem.class, new WSheet.Validator<DictItem>() {
@Override
public List<String> validate(DictItem o) {
DictItemCreateRequest request = MapperUtil.map(o, DictItemCreateRequest.class);
return ValidationUtil.validate(request);
}
});
if (sheet.hasError()) {
byte[] sheetBytes = sheet.getBytes(true);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", URLEncoder.encode(sheet.getName() + "-err.xlsx","utf-8"));
return new ResponseEntity<>(sheetBytes, headers, HttpStatus.OK);
return ResponseUtil.apply(sheet.getBytes(true), sheet.getName() + "-检查.xlsx");
} else {
return baseResponse;
}
} catch (IOException e) {
e.printStackTrace();
LogUtil.dumpException(e);
baseResponse.addError(ErrorType.BUSINESS_ERROR, "上传文件出错");
} catch (TemplateNotMatchException | ReadErrorException e) {
baseResponse.addError(ErrorType.BUSINESS_ERROR, e.getMessage());
}
return baseResponse;
}
}

@ -20,10 +20,10 @@ import java.util.concurrent.Executors;
*/
@Configuration
@EnableScheduling
@Profile("prod")
@Profile("dev")
public class TaskConfig implements SchedulingConfigurer {
@Scheduled(cron="0/30 * * * * ? ")
@Scheduled(cron="0/5 * * * * ? ")
public void task(){
// todo 自定实现的定时任务
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");

@ -19,24 +19,23 @@ public class WColumn implements Serializable {
/**
*
*/
private String name;
private String name = "";
/**
*
*/
private int cellWidth;
private int cellWidth = 8;
/**
*
*/
private boolean isRequired;
private boolean isRequired = false;
/**
*
*/
private String description;
private String description = "";
/**
*
*/
private Converter converter;
/**
* Field
*/
@ -45,21 +44,21 @@ public class WColumn implements Serializable {
* set
*/
private Method setMethod;
/**
* get
*/
private Method getMethod;
/**
* ExcelType
*/
private int cellType = 1;
public WColumn() {
this.name = "";
this.cellWidth = 1;
this.isRequired = false;
this.description = "";
}
public WColumn(String name) {
this.name = name;
this.cellWidth = 1;
this.isRequired = false;
this.description = "";
}
public String getName() {
@ -67,9 +66,6 @@ public class WColumn implements Serializable {
}
public void setName(String name) {
if (StringUtil.getByteLength(name) > cellWidth) {
cellWidth = StringUtil.getByteLength(name);
}
this.name = name;
}
@ -128,4 +124,12 @@ public class WColumn implements Serializable {
public void setSetMethod(Method setMethod) {
this.setMethod = setMethod;
}
public Method getGetMethod() {
return getMethod;
}
public void setGetMethod(Method getMethod) {
this.getMethod = getMethod;
}
}

@ -91,6 +91,9 @@ public class WSheet<T> implements Serializable, Cloneable {
Method set = ClassUtil.setMethod(field.getName(), clazz, field.getType());
WColumn.setSetMethod(set);
Method get = ClassUtil.getMethod(field.getName(), clazz);
WColumn.setGetMethod(get);
//获取列名称
if (!field.isAnnotationPresent(ColumnName.class)) {
WColumn.setName(field.getName());
@ -98,17 +101,13 @@ public class WSheet<T> implements Serializable, Cloneable {
ColumnName columnColumnName = field.getAnnotation(ColumnName.class);
WColumn.setName(columnColumnName.value());
WColumn.setCellWidth(columnColumnName.width());
WColumn.setRequired(columnColumnName.required());
}
//获取列填写说明或描述
if (field.isAnnotationPresent(ColumnDescription.class)) {
WColumn.setDescription(field.getAnnotation(ColumnDescription.class).value());
}
//列填写标志(是否必填)
if (field.isAnnotationPresent(NotNull.class)) {
WColumn.setRequired(true);
}
//获取列类型
if (field.isAnnotationPresent(${basePackage}.frame.excel.annotation.Converter.class)) {
${basePackage}.frame.excel.annotation.Converter converter = field.getAnnotation(${basePackage}.frame.excel.annotation.Converter.class);
@ -180,8 +179,7 @@ public class WSheet<T> implements Serializable, Cloneable {
if (column == null) {
continue;
}
Field field = column.getField();
Method method = ClassUtil.setMethod(field.getName(), t.getClass(), field.getType());
Method method = column.getGetMethod();
try {
Object value = method.invoke(t);
if (null == value) {

@ -9,23 +9,28 @@ import java.lang.annotation.*;
* @version 0.0.1
* @since 2017-01-01
*/
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.TYPE})
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ColumnName {
/**
*
*/
String value();
/**
*
*
* @return
*
*/
int width() default 8;
/**
* *
*/
boolean required() default false;
/**
*
*
* @return
*/
String dateFormat() default "yyyy-MM-dd";
}

@ -3,6 +3,11 @@ package ${basePackage}.module.${moduleName}.ent;
<#if table.has('Date')>
import java.util.Date;
</#if>
<#if table.getHtml()>
import ${basePackage}.frame.excel.annotation.ColumnDescription;
import ${basePackage}.frame.excel.annotation.ColumnName;
import ${basePackage}.frame.excel.annotation.SheetName;
</#if>
import ${basePackage}.frame.base.BaseEntity;
/**
@ -12,6 +17,9 @@ import ${basePackage}.frame.base.BaseEntity;
* @version 0.0.1
* @since ${date?string("yyyy-MM-dd")}
*/
<#if table.getHtml()>
@SheetName("${table.tableComment?default("")}")
</#if>
public class ${table.getCName()} extends BaseEntity {
<#list table.fields as field>
@ -19,6 +27,10 @@ public class ${table.getCName()} extends BaseEntity {
/**
* ${field.fieldName} - ${field.fieldComment?default("")}
*/
<#if table.getHtml()>
@ColumnName("${field.fieldComment?default("")}")
@ColumnDescription("")
</#if>
private ${field.fieldType.javaType()} ${field.getFName()};
</#if>
</#list>

@ -154,7 +154,6 @@
`LAST_UPDATE_BY` = ${r"#{"}token.userId},
`LAST_UPDATE_TIME` = sysdate()
</#if>
WHERE
<#if dataBase == 'ORACLE'>
"IS_DELETED" = 0

@ -37,7 +37,7 @@ public class Dict extends BaseEntity {
* VALID -
*/
@ColumnName("是否有效")
@ColumnDescription("true/false")
@ColumnDescription("Y/N,是/否")
private Boolean valid;
public String getDictName() {

@ -1,6 +1,9 @@
package ${basePackage}.module.system.ent;
import ${basePackage}.frame.base.BaseEntity;
import ${basePackage}.frame.excel.annotation.ColumnDescription;
import ${basePackage}.frame.excel.annotation.ColumnName;
import ${basePackage}.frame.excel.annotation.SheetName;
/**
* DICT_ITEM -
@ -9,27 +12,38 @@ import ${basePackage}.frame.base.BaseEntity;
* @version 0.0.1
* @since 2019-07-20
*/
@SheetName("字典项")
public class DictItem extends BaseEntity {
/**
* DICT_ID - ID
*/
@ColumnName("字典主键")
@ColumnDescription("字典主键一般为一窜数字,可通过字典查询页获取字典主键")
private Long dictId;
/**
* KEY - KEY
*/
@ColumnName("字典键")
@ColumnDescription("字典键一般使用数字或字母 01,02... A,B...")
private String key;
/**
* VALUE - VALUE
*/
@ColumnName("字典值")
@ColumnDescription("字典值一般是实际意思字符或文字\n 长度在(1-100)之间")
private String value;
/**
* SORT -
*/
@ColumnName("字典排序值")
@ColumnDescription("用于标识字典值排列顺序、必须为数字")
private Integer sort;
/**
* VALID -
*/
@ColumnName("是否有效")
@ColumnDescription("用于标识该字典值是否有效")
private Boolean valid;
public Long getDictId() {

@ -15,7 +15,7 @@ import java.util.List;
* DICT_ITEM -
*
* @author wangbing
* @date 2019-07-20
* @since 2019-07-20
*/
@Mapper
public interface DictItemMapper {

@ -97,7 +97,6 @@
UPDATE
<include refid="table"/>
SET
`DICT_ID` = ${r"#{"}request.dictId,jdbcType=BIGINT},
`KEY` = ${r"#{"}request.key,jdbcType=CHAR},
`VALUE` = ${r"#{"}request.value,jdbcType=VARCHAR},
`SORT` = ${r"#{"}request.sort,jdbcType=INTEGER},
@ -105,7 +104,6 @@
`ROW_VERSION` = `ROW_VERSION` + 1,
`LAST_UPDATE_BY` = ${r"#{"}token.userId},
`LAST_UPDATE_TIME` = sysdate()
WHERE
`IS_DELETED` = 0
AND `ID` = ${r"#{"}request.id}

@ -11,7 +11,7 @@ import java.util.List;
* DICT -
*
* @author wangbing
* @date 2019-07-20
* @since 2019-07-20
*/
@Mapper
public interface DictMapper {

@ -99,7 +99,6 @@
`ROW_VERSION` = `ROW_VERSION` + 1,
`LAST_UPDATE_BY` = ${r"#{"}token.userId},
`LAST_UPDATE_TIME` = sysdate()
WHERE
`IS_DELETED` = 0
AND `ID` = ${r"#{"}request.id}

@ -17,18 +17,19 @@ public class DictItemCreateRequest extends BaseRequest {
/**
* ID
*/
@NotNull(message = "字典主键不能为空")
private Long dictId;
/**
* KEY
*/
@Length(min = 0, max = 10, message = "字典KEY长度不合法(0-10)")
@Length(min = 1, max = 10, message = "字典KEY长度不合法(1-10)")
private String key;
/**
* VALUE
*/
@Length(min = 0, max = 100, message = "字典VALUE长度不合法(0-100)")
@Length(min = 1, max = 100, message = "字典VALUE长度不合法(1-100)")
private String value;
/**
@ -40,6 +41,7 @@ public class DictItemCreateRequest extends BaseRequest {
/**
*
*/
@NotNull(message = "是否有效不能为空")
private Boolean valid;
public Long getDictId() {

@ -20,11 +20,6 @@ public class DictItemUpdateRequest extends BaseUpdateRequest {
@NotNull(message = "主键不能为NULL")
private Long id;
/**
* ID
*/
private Long dictId;
/**
* KEY
*/
@ -40,11 +35,13 @@ public class DictItemUpdateRequest extends BaseUpdateRequest {
/**
*
*/
@NotNull(message = "字典项排序值不能为空")
private Integer sort;
/**
*
*/
@NotNull(message = "是否有效不能为空")
private Boolean valid;
public Long getId() {
@ -55,14 +52,6 @@ public class DictItemUpdateRequest extends BaseUpdateRequest {
this.id = id;
}
public Long getDictId() {
return this.dictId;
}
public void setDictId(Long dictId) {
this.dictId = dictId;
}
public String getKey() {
return this.key;
}

@ -169,13 +169,13 @@
},
upload: function (data) {
return upRequest({
url: "system/File/upload",
url: "ajax/system/File/upload",
data: data,
})
},
download: function (data) {
return downRequest({
url: "system/File/download",
url: "ajax/system/File/download",
data: JSON.stringify(data),
})
},
@ -228,7 +228,7 @@
})
},
exports: function (module, target, data) {
return upRequest({
return downRequest({
url: "/ajax/" + module + "/" + target + "/exports",
data: data,
})

@ -141,7 +141,7 @@
<el-divider></el-divider>
<p>ajax.login({}).then(function (response) {</p>
<p>this.$ajax.login({}).then(function (response) {</p>
<p style="text-indent: 2em;">if (response.errors.length > 0) {</p>
@ -173,7 +173,7 @@
<el-divider></el-divider>
<p>ajax.upload(req.file).then(function (response) {</p>
<p>this.$ajax.upload(req.file).then(function (response) {</p>
<p style="text-indent: 2em;">if (response.errors.length > 0) {</p>
@ -941,10 +941,10 @@
</style>
<script>
var app = new Vue({
mixins: [mixin],
el: "#app",
data: {
fileList: [],
form: {
field1: '',
field2: '',
@ -1028,7 +1028,7 @@
},
methods: {
doAjax: function () {
ajax.login({}).then(function (response) {
this.$ajax.login({}).then(function (response) {
if (response.errors.length > 0) {
this.e(response.errors[0].message);
} else {
@ -1053,7 +1053,7 @@
}
},
handleUpload: function (req) {
ajax.upload(req.file).then(function (response) {
this.$ajax.upload(req.file).then(function (response) {
if (response.errors.length > 0) {
req.onError();
this.e(response.errors[0].message);

@ -13,19 +13,19 @@
active-text-color="#ffd04b">
<el-submenu index="${tool.uuid()}" >
<template slot="title">
<i class="el-icon-setting"></i>
<i class="el-icon-monitor"></i>
<span slot="title">系统设置</span>
</template>
<el-menu-item index="${tool.uuid()}" @click="addTab({title: '字典管理', name: 'dict', url: '${r'${context}'}/system/dict.htm'})">字典管理</el-menu-item>
<el-menu-item index="${tool.uuid()}" class="el-icon-coin" @click="addTab({title: '字典管理', name: 'dict', url: '${r'${context}'}/system/dict.htm'})">字典管理</el-menu-item>
</el-submenu>
<#list modules as item>
<el-submenu index="${tool.uuid()}">
<template slot="title">
<i class="el-icon-time"></i>
<i class="el-icon-document-copy"></i>
<span slot="title">${item.moduleComment}</span>
</template>
<#list item.tables as table>
<el-menu-item index="${tool.uuid()}" @click="addTab({title: '${table.tableComment}', name: '${table.tableName}', url: '${r"${context}"}/${item.moduleName}/${table.getFName()}.htm'})">${table.tableComment}</el-menu-item>
<el-menu-item index="${tool.uuid()}" class="el-icon-tickets" @click="addTab({title: '${table.tableComment}', name: '${table.tableName}', url: '${r"${context}"}/${item.moduleName}/${table.getFName()}.htm'})">${table.tableComment}</el-menu-item>
</#list>
</el-submenu>
</#list>

Loading…
Cancel
Save

Powered by TurnKey Linux.