master
wangbing 5 years ago
parent d5c0d98dab
commit 21a3dfb390

@ -233,6 +233,7 @@ public class SpringBootCallable implements Callable {
freeMarkerManager.outputTemp(new File(system.getAbsolutePath(), "AuthAjax.java"), option + "/java/action/ajax/system/AuthAjax.java", ctx); freeMarkerManager.outputTemp(new File(system.getAbsolutePath(), "AuthAjax.java"), option + "/java/action/ajax/system/AuthAjax.java", ctx);
freeMarkerManager.outputTemp(new File(system.getAbsolutePath(), "DictAjax.java"), option + "/java/action/ajax/system/DictAjax.java", ctx); freeMarkerManager.outputTemp(new File(system.getAbsolutePath(), "DictAjax.java"), option + "/java/action/ajax/system/DictAjax.java", ctx);
freeMarkerManager.outputTemp(new File(system.getAbsolutePath(), "DictItemAjax.java"), option + "/java/action/ajax/system/DictItemAjax.java", ctx); freeMarkerManager.outputTemp(new File(system.getAbsolutePath(), "DictItemAjax.java"), option + "/java/action/ajax/system/DictItemAjax.java", ctx);
freeMarkerManager.outputTemp(new File(system.getAbsolutePath(), "FileAjax.java"), option + "/java/action/ajax/system/FileAjax.java", ctx);
for (Module module : project.getModules()) { for (Module module : project.getModules()) {
@ -870,6 +871,7 @@ public class SpringBootCallable implements Callable {
ctx.put("author", project.getProjectAuthor()); ctx.put("author", project.getProjectAuthor());
ctx.put("date", new Date()); ctx.put("date", new Date());
ctx.put("table", table); ctx.put("table", table);
ctx.put("module", module.getName());
ctx.put("fields", table.getFields()); ctx.put("fields", table.getFields());
freeMarkerManager.outputTemp(new File(module.getAbsolutePath(), table.getFName() + ".ftl"), option + "/resources/templates/screen/module/mgr.ftl", ctx); freeMarkerManager.outputTemp(new File(module.getAbsolutePath(), table.getFName() + ".ftl"), option + "/resources/templates/screen/module/mgr.ftl", ctx);
} }

@ -278,6 +278,7 @@ public class GlobalController implements ErrorController {
if (methodC == null) { if (methodC == null) {
BaseResponse baseResponse = new BaseResponse(); BaseResponse baseResponse = new BaseResponse();
baseResponse.addError(ErrorType.BUSINESS_ERROR, "未找到对应的方法!"); baseResponse.addError(ErrorType.BUSINESS_ERROR, "未找到对应的方法!");
return baseResponse;
} }
Parameter[] parameters = methodC.getParameters(); Parameter[] parameters = methodC.getParameters();

@ -60,4 +60,47 @@ public class ${table.getCName()}Ajax{
return ${table.getFName()}Manager.getAll(request, LocalData.getToken()); return ${table.getFName()}Manager.getAll(request, LocalData.getToken());
} }
</#if> </#if>
<#if table.getHtml()>
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;
}
}
public Object imports(MultipartFile file) {
BaseResponse baseResponse = new BaseResponse();
try {
byte[] bytes = file.getBytes();
WSheet<DictCreateRequest> sheet = new WSheet<>(bytes, DictCreateRequest.class);
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);
} else {
return baseResponse;
}
} catch (IOException e) {
baseResponse.addError(ErrorType.BUSINESS_ERROR, "上传文件出错");
} catch (TemplateNotMatchException | ReadErrorException e) {
baseResponse.addError(ErrorType.BUSINESS_ERROR, e.getMessage());
}
return baseResponse;
}
</#if>
} }

@ -82,7 +82,7 @@ public class DictAjax {
byte[] sheetBytes = sheet.getBytes(true); byte[] sheetBytes = sheet.getBytes(true);
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", URLEncoder.encode(sheet.getName() + ".xlsx","utf-8")); headers.setContentDispositionFormData("attachment", URLEncoder.encode(sheet.getName() + "-err.xlsx","utf-8"));
return new ResponseEntity<>(sheetBytes, headers, HttpStatus.OK); return new ResponseEntity<>(sheetBytes, headers, HttpStatus.OK);
} else { } else {
return baseResponse; return baseResponse;

@ -1,39 +1,93 @@
package ${basePackage}.action.ajax.system; package ${basePackage}.action.ajax.system;
import org.springframework.beans.factory.annotation.Autowired;
import ${basePackage}.frame.auth.LocalData; import ${basePackage}.frame.auth.LocalData;
import ${basePackage}.frame.excel.WSheet;
import ${basePackage}.frame.utils.MapperUtil; import ${basePackage}.frame.utils.MapperUtil;
import ${basePackage}.module.system.mgr.DictItemManager; import ${basePackage}.module.system.mgr.DictItemManager;
import ${basePackage}.module.system.req.*; import ${basePackage}.module.system.req.*;
import ${basePackage}.module.system.rsp.*; import ${basePackage}.module.system.rsp.*;
import ${basePackage}.frame.base.BaseResponse;
import ${basePackage}.frame.base.ErrorType;
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 java.io.IOException;
import java.net.URLEncoder;
public class DictItemAjax { public class DictItemAjax {
@Autowired @Autowired
private DictItemManager dictManager; private DictItemManager dictManager;
public DictItemCreateResponse create(String jsonParam) { public DictItemCreateResponse create(TreeNode jsonParam) {
DictItemCreateRequest request = MapperUtil.toJava(jsonParam, DictItemCreateRequest.class); DictItemCreateRequest request = MapperUtil.toJava(jsonParam, DictItemCreateRequest.class);
return dictManager.create(request, LocalData.getToken()); return dictManager.create(request, LocalData.getToken());
} }
public DictItemDeleteResponse delete(String jsonParam) { public DictItemDeleteResponse delete(TreeNode jsonParam) {
DictItemDeleteRequest request = MapperUtil.toJava(jsonParam, DictItemDeleteRequest.class); DictItemDeleteRequest request = MapperUtil.toJava(jsonParam, DictItemDeleteRequest.class);
return dictManager.delete(request, LocalData.getToken()); return dictManager.delete(request, LocalData.getToken());
} }
public DictItemUpdateResponse update(String jsonParam) { public DictItemUpdateResponse update(TreeNode jsonParam) {
DictItemUpdateRequest request = MapperUtil.toJava(jsonParam, DictItemUpdateRequest.class); DictItemUpdateRequest request = MapperUtil.toJava(jsonParam, DictItemUpdateRequest.class);
return dictManager.update(request, LocalData.getToken()); return dictManager.update(request, LocalData.getToken());
} }
public DictItemFindResponse find(String jsonParam) { public DictItemFindResponse find(TreeNode jsonParam) {
DictItemFindRequest request = MapperUtil.toJava(jsonParam, DictItemFindRequest.class); DictItemFindRequest request = MapperUtil.toJava(jsonParam, DictItemFindRequest.class);
return dictManager.find(request, LocalData.getToken()); return dictManager.find(request, LocalData.getToken());
} }
public DictItemGetResponse get(String jsonParam) { public DictItemGetResponse get(TreeNode jsonParam) {
DictItemGetRequest request = MapperUtil.toJava(jsonParam, DictItemGetRequest.class); DictItemGetRequest request = MapperUtil.toJava(jsonParam, DictItemGetRequest.class);
return dictManager.get(request, LocalData.getToken()); return dictManager.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;
}
}
public Object imports(MultipartFile file) {
BaseResponse baseResponse = new BaseResponse();
try {
byte[] bytes = file.getBytes();
WSheet<DictItemCreateRequest> sheet = new WSheet<>(bytes, DictItemCreateRequest.class);
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);
} else {
return baseResponse;
}
} catch (IOException e) {
baseResponse.addError(ErrorType.BUSINESS_ERROR, "上传文件出错");
} catch (TemplateNotMatchException | ReadErrorException e) {
baseResponse.addError(ErrorType.BUSINESS_ERROR, e.getMessage());
}
return baseResponse;
}
} }

@ -0,0 +1,54 @@
package ${basePackage}.action.ajax.system;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.multipart.MultipartFile;
import ${basePackage}.frame.base.BaseResponse;
import ${basePackage}.frame.base.ErrorType;
import ${basePackage}.frame.base.FileUploadResponse;
import javax.swing.tree.TreeNode;
import java.io.IOException;
import java.net.URLEncoder;
public class FileAjax {
public Object upload(MultipartFile file) {
FileUploadResponse fileUploadResponse = new FileUploadResponse();
String fileName = file.getOriginalFilename();
//========
// todo 处理文件
//========
fileUploadResponse.setId(1L);
fileUploadResponse.setUrl("example.com\\img\\1.jpg");
fileUploadResponse.setDownloadUrl("example.com\\img\\1.jpg");
if (file != null) {
fileUploadResponse.addError(ErrorType.BUSINESS_ERROR, "文件上传成功,但未处理文件[" + fileName + "]!");
} else {
fileUploadResponse.addError(ErrorType.BUSINESS_ERROR, "文件上传失败!");
}
return fileUploadResponse;
}
public Object download(TreeNode jsonParam) {
try {
//========
// todo 下载示例
//========
byte[] bytes = "test".getBytes();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", URLEncoder.encode("example.test", "utf-8"));
return new ResponseEntity<>(bytes, headers, HttpStatus.OK);
} catch (IOException e) {
BaseResponse baseResponse = new BaseResponse();
baseResponse.addError(ErrorType.BUSINESS_ERROR, "");
return baseResponse;
}
}
}

@ -16,83 +16,13 @@
method: 'post', method: 'post',
timeout: 30000, timeout: 30000,
baseURL: '', baseURL: '',
responseType: 'blob',
headers: {'Content-Type': 'multipart/form-data'}, headers: {'Content-Type': 'multipart/form-data'},
onUploadProgress: function (progressEvent) { onUploadProgress: function (progressEvent) {
var complete = (progressEvent.loaded / progressEvent.total * 100 | 0) + '%' var complete = (progressEvent.loaded / progressEvent.total * 100 | 0) + '%'
app.tipShow("上传中(" + complete + ")") nav.tipShow("上传中(" + complete + ")")
}, },
}); });
// 添加JSON请求拦截器
jsonService.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
app.barShow();
app.tipShow();
return config;
}, function (error) {
return Promise.reject(error);
});
uploadService.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
app.barShow();
app.tipShow("上传中 ...");
return config;
}, function (error) {
return Promise.reject(error);
});
// 添加JSON响应拦截器
jsonService.interceptors.response.use(function (response) {
// 对响应数据做点什么
app.tipClose();
try {//确保服务器正确返回Json
if (response.data.errors.length > 0) {
console.error(response.data.errors)
}
app.barFinish();
} catch (e) {
app.barError();
response.data = {errors: [{message: '服务器响应错误'}]};
}
return response;
}, function (error) {
// 对响应错误做点什么,并返回错误结果
app.tipClose();
app.barError();
const rsp = {errors: []};
if (!error.response) {
rsp.errors.push({message: error.message});
} else {
rsp.errors.push(handleError(error.response.status));
}
return Promise.reject(rsp);
});
// 添加Upload响应拦截器
uploadService.interceptors.response.use(function (response) {
// 对响应数据做点什么
app.tipClose();
try {//确保服务器正确返回Json
if (response.data.errors.length > 0) {
console.error(response.data.errors)
}
app.barFinish();
} catch (e) {
app.barError();
response.data = {errors: [{message: '服务器响应错误'}]};
}
return response;
}, function (error) {
// 对响应错误做点什么,并返回错误结果
app.tipClose();
app.barError();
const rsp = {errors: []};
if (!error.response) {
rsp.errors.push({message: error.message});
} else {
rsp.errors.push(handleError(error.response.status));
}
return Promise.reject(rsp);
});
function handleError(status) { function handleError(status) {
switch (status) { switch (status) {
case 401: case 401:
@ -111,55 +41,144 @@
return {message: "请求错误(" + error.response.status + ")"}; return {message: "请求错误(" + error.response.status + ")"};
} }
} }
jsonRequest = function (data) { function jsonRequest(data) {
nav.barShow();
nav.tipShow();
return jsonService.request(data) return jsonService.request(data)
.then(function (response) { .then(function (response) {
nav.tipClose();
if (response.data.errors) {// 确保服务器正确返回Json
nav.barFinish();
} else {
response.data = {errors: [{message: '服务器响应错误'}]};
nav.barError();
}
return Promise.resolve(response.data); return Promise.resolve(response.data);
}, function (response) { }, function (error) {
return Promise.resolve(response); nav.tipClose();
nav.barError();
const rsp = {errors: []};
if (!error.response) {
rsp.errors.push({message: error.message});
} else {
rsp.errors.push(handleError(error.response.status));
}
return Promise.reject(rsp);
}) })
}; }
upRequest = function (data) { function upRequest(data) {
nav.barShow();
nav.tipShow("上传中...");
var fd = new FormData(); var fd = new FormData();
fd.append("file", data.data); fd.append("file", data.data);
data.data = fd; data.data = fd;
return uploadService.request(data) return uploadService.request(data)
.then(function (response) { .then(function (response) {
return Promise.resolve(response.data); nav.tipClose();
}, function (response) { if (!response.data) {
return Promise.resolve(response); nav.barError();
return Promise.resolve({errors: [{message: '下载错误'}]});
} else if ("application/json" == response.data.type) {
var reader = new FileReader();
reader.addEventListener("loadend", function () {
var rsp = JSON.parse(reader.result);
if (rsp.errors.length > 0) {
nav.barError();
nav.e(rsp.errors[0].message)
} else {
nav.barFinish();
}
});
reader.readAsText(response.data, "utf-8");
return Promise.resolve({errors: []});
} else {
nav.barFinish();
// 获取响应header中文件信息
var dis = response.headers['content-disposition'];
// 正则匹配文件名
var fileName = dis.match(/filename="(.*\..*)"/)[1];
// 模拟下载
var url = window.URL.createObjectURL(new Blob([response.data]));
var link = document.createElement('a')
link.style.display = 'none';
link.href = url;
link.setAttribute('download', decodeURIComponent(fileName))
document.body.appendChild(link)
link.click();
return Promise.resolve({errors: []});
}
}, function (error) {
nav.tipClose();
nav.barError();
const rsp = {errors: []};
if (!error.response) {
rsp.errors.push({message: error.message});
} else {
rsp.errors.push(handleError(error.response.status));
}
return Promise.reject(rsp);
}) })
}; };
downRequest = function (data) { function downRequest(data) {
nav.barShow();
return downloadService.request(data) return downloadService.request(data)
.then(function (response) { .then(function (response) {
if (!response.data) { if (!response.data) {
nav.barError();
return Promise.resolve({errors: [{message: '下载错误'}]}); return Promise.resolve({errors: [{message: '下载错误'}]});
} else if ("application/json" == response.data.type) {
var reader = new FileReader();
reader.addEventListener("loadend", function () {
var rsp = JSON.parse(reader.result);
if (rsp.errors.length > 0) {
nav.barError();
nav.e(rsp.errors[0].message)
} else {
nav.barFinish();
}
});
reader.readAsText(response.data, "utf-8");
return Promise.resolve({errors: []});
} else {
nav.barFinish();
// 获取响应header中文件信息
var dis = response.headers['content-disposition'];
// 正则匹配文件名
var fileName = dis.match(/filename="(.*\..*)"/)[1];
// 模拟下载
var url = window.URL.createObjectURL(new Blob([response.data]));
var link = document.createElement('a')
link.style.display = 'none';
link.href = url;
link.setAttribute('download', decodeURIComponent(fileName))
document.body.appendChild(link)
link.click();
return Promise.resolve({errors: []});
} }
// 获取响应header中文件信息
var dis = response.headers['content-disposition'];
// 正则匹配文件名
var fileName = dis.match(/filename="(.*\..*)"/)[1];
// 模拟下载
var url = window.URL.createObjectURL(new Blob([response.data]));
var link = document.createElement('a')
link.style.display = 'none';
link.href = url;
link.setAttribute('download', decodeURIComponent(fileName))
document.body.appendChild(link)
link.click();
return Promise.resolve({errors: []});
}, function (response) { }, function (response) {
return Promise.resolve(response); return Promise.resolve(handleError(response.response.status));
}) })
}; };
window.ajax = { // 定义共享异步请求对象
Vue.prototype.$ajax = {
login: function (data) { login: function (data) {
return jsonRequest({ return jsonRequest({
url: "system/Auth/login", url: "system/Auth/login",
data: JSON.stringify(data), data: JSON.stringify(data),
}) })
}, },
upload: function (data) {
return upRequest({
url: "system/File/upload",
data: data,
})
},
download: function (data) {
return downRequest({
url: "system/File/download",
data: JSON.stringify(data),
})
},
create: function (module, target, data) { create: function (module, target, data) {
return jsonRequest({ return jsonRequest({
url: module + "/" + target + "/create", url: module + "/" + target + "/create",
@ -214,15 +233,17 @@
data: data, data: data,
}) })
}, },
} };
var mixin = { var mixin = {
data: { data: {
activeIndex: 'home', activeIndex: 'home',
contextPath: '${contextPath?default("")}', contextPath: '${context?default("")}',
homePath: '${homePath?default("")}', homePath: '${home?default("")}',
loadingTip: '', loadingTip: '',
loadingBar: '', loadingBar: '',
isSubmit:false isSubmit: false,
result: [],
select: []
}, },
methods: { methods: {
tipShow: function (msg) { tipShow: function (msg) {
@ -384,22 +405,18 @@
this.select = select; this.select = select;
}, },
excelTemplate: function () { excelTemplate: function () {
ajax.template(this.module, this.target, {}).then(function (response) { this.$ajax.template(this.module, this.target, {});
if (response.errors.length > 0) {
this.e(response.errors[0].message);
}
}.bind(this));
}, },
excelSelect: function () { excelSelect: function () {
this.$refs['excel'].dispatchEvent(new MouseEvent('click')) this.$refs['excel'].dispatchEvent(new MouseEvent('click'))
}, },
excelImport: function (item) { excelImport: function (item) {
const file = item.target.files[0]; const file = item.target.files[0];
ajax.imports(this.module, this.target, file).then(function (response) { this.$ajax.imports(this.module, this.target, file).then(function (response) {
if (response.errors.length > 0) { if (response.errors.length > 0) {
this.e(response.errors[0].message); this.e(response.errors[0].message);
} else { } else {
this.i("文件导入成功!"); this.i("文件上传成功!");
} }
}.bind(this)) }.bind(this))
}, },
@ -407,7 +424,7 @@
this.$refs['form'].validate(function (valid) { this.$refs['form'].validate(function (valid) {
if (valid) { if (valid) {
if (this.form.id) { if (this.form.id) {
ajax.update(this.module, this.target, this.form).then(function (response) { this.$ajax.update(this.module, this.target, this.form).then(function (response) {
if (response.errors.length > 0) { if (response.errors.length > 0) {
nav.e(response.errors[0].message); nav.e(response.errors[0].message);
} else { } else {
@ -416,7 +433,7 @@
} }
}.bind(this)) }.bind(this))
} else { } else {
ajax.create(this.module, this.target, this.form).then(function (response) { this.$ajax.create(this.module, this.target, this.form).then(function (response) {
if (response.errors.length > 0) { if (response.errors.length > 0) {
nav.e(response.errors[0].message); nav.e(response.errors[0].message);
} else { } else {
@ -431,7 +448,7 @@
}.bind(this)); }.bind(this));
}, },
onFind: function () { onFind: function () {
ajax.find(this.module, this.target, this.vm).then(function (response) { this.$ajax.find(this.module, this.target, this.vm).then(function (response) {
if (response.errors.length > 0) { if (response.errors.length > 0) {
this.e(response.errors[0].message); this.e(response.errors[0].message);
} else { } else {
@ -446,7 +463,7 @@
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(function () { }).then(function () {
ajax.delete(this.module, this.target, {id: item.id}).then(function (response) { this.$ajax.delete(this.module, this.target, {id: item.id}).then(function (response) {
if (response.errors.length > 0) { if (response.errors.length > 0) {
this.e(response.errors[0].message); this.e(response.errors[0].message);
} else { } else {
@ -469,7 +486,7 @@
}).then(function () { }).then(function () {
for (var i = 0; i < this.select.length; i++) { for (var i = 0; i < this.select.length; i++) {
var obj = this.select[i]; var obj = this.select[i];
ajax.delete(this.module, this.target, {id: obj.id}).then(function (response) { this.$ajax.delete(this.module, this.target, {id: obj.id}).then(function (response) {
if (response.errors.length > 0) { if (response.errors.length > 0) {
this.e(response.errors[0].message); this.e(response.errors[0].message);
} else { } else {
@ -498,4 +515,8 @@
filters: {}, filters: {},
watch: {} watch: {}
} }
// 实例化工具
window.nav = new Vue({
mixins: [mixin]
})
</script> </script>

@ -7,7 +7,6 @@
<script src="${context}/static/dist/lib.min.js" type="text/javascript"></script> <script src="${context}/static/dist/lib.min.js" type="text/javascript"></script>
<script src="${context}/static/dist/mint-ui.min.js" type="text/javascript"></script> <script src="${context}/static/dist/mint-ui.min.js" type="text/javascript"></script>
<link href="${context}/static/dist/mint-ui.min.css" rel="stylesheet"/> <link href="${context}/static/dist/mint-ui.min.css" rel="stylesheet"/>
<script src="${context}/static/js/ajax.js" type="text/javascript"></script>
<link href="${context}/static/favicon.ico" rel="icon" type="image/x-icon"/> <link href="${context}/static/favicon.ico" rel="icon" type="image/x-icon"/>
<style> <style>
* { * {

@ -141,15 +141,15 @@
<el-divider></el-divider> <el-divider></el-divider>
<p>ajax.example({}).then(function (response) {</p> <p>ajax.login({}).then(function (response) {</p>
<p style="text-indent: 2em;">if (response.errors.length > 0) {</p> <p style="text-indent: 2em;">if (response.errors.length > 0) {</p>
<p style="text-indent: 4em;">nav.e(response.errors[0].message);</p> <p style="text-indent: 4em;">this.e(response.errors[0].message);</p>
<p style="text-indent: 2em;">} else {</p> <p style="text-indent: 2em;">} else {</p>
<p style="text-indent: 4em;">nav.i("Ajax调用成功!");</p> <p style="text-indent: 4em;">this.i("Ajax调用成功!");</p>
<p style="text-indent: 2em;">}</p> <p style="text-indent: 2em;">}</p>
@ -173,19 +173,19 @@
<el-divider></el-divider> <el-divider></el-divider>
<p>ajax.fileUpload(req.file).then(function (response) {</p> <p>ajax.upload(req.file).then(function (response) {</p>
<p style="text-indent: 2em;">if (response.errors.length > 0) {</p> <p style="text-indent: 2em;">if (response.errors.length > 0) {</p>
<p style="text-indent: 4em;">req.onError();</p> <p style="text-indent: 4em;">req.onError();</p>
<p style="text-indent: 4em;">nav.e(response.errors[0].message);</p> <p style="text-indent: 4em;">this.e(response.errors[0].message);</p>
<p style="text-indent: 2em;">} else {</p> <p style="text-indent: 2em;">} else {</p>
<p style="text-indent: 4em;">req.onSuccess();</p> <p style="text-indent: 4em;">req.onSuccess();</p>
<p style="text-indent: 4em;">nav.i("文件上传成功!");</p> <p style="text-indent: 4em;">this.i("文件上传成功!");</p>
<p style="text-indent: 2em;">}</p> <p style="text-indent: 2em;">}</p>
@ -217,21 +217,21 @@
<el-tab-pane label="自定义工具"> <el-tab-pane label="自定义工具">
<el-card class="box-card" style="width: 600px;margin: 20px"> <el-card class="box-card" style="width: 600px;margin: 20px">
<el-button type="primary" @click="this.nav.i('消息')">普通消息</el-button> <el-button type="primary" @click="i('消息')">普通消息</el-button>
<el-button type="primary" @click="this.nav.e('错误')">错误消息</el-button> <el-button type="primary" @click="e('错误')">错误消息</el-button>
<el-button type="primary" @click="this.nav.s('成功')">成功消息</el-button> <el-button type="primary" @click="s('成功')">成功消息</el-button>
<el-button type="primary" @click="this.nav.w('警告')">警告消息</el-button> <el-button type="primary" @click="w('警告')">警告消息</el-button>
</el-card> </el-card>
<el-card class="box-card" style="width: 600px;margin: 20px"> <el-card class="box-card" style="width: 600px;margin: 20px">
<el-button type="primary" @click="this.nav.tip.show('加载中')">加载提示框</el-button> <el-button type="primary" @click="tipShow('加载中')">加载提示框</el-button>
<el-button type="primary" @click="this.nav.tip.close()">关闭提示框</el-button> <el-button type="primary" @click="tipClose()">关闭提示框</el-button>
</el-card> </el-card>
<el-card class="box-card" style="width: 600px;margin: 20px"> <el-card class="box-card" style="width: 600px;margin: 20px">
<el-button type="primary" @click="this.nav.bar.show()">加载提示条</el-button> <el-button type="primary" @click="barShow()">加载提示条</el-button>
<el-button type="primary" @click="this.nav.bar.finish()">成功</el-button> <el-button type="primary" @click="barFinish()">成功</el-button>
<el-button type="primary" @click="this.nav.bar.error()">失败</el-button> <el-button type="primary" @click="barError()">失败</el-button>
</el-card> </el-card>
</el-tab-pane> </el-tab-pane>
@ -1028,19 +1028,18 @@
}, },
methods: { methods: {
doAjax: function () { doAjax: function () {
ajax.authLogin({}).then(function (response) { ajax.login({}).then(function (response) {
if (response.errors.length > 0) { if (response.errors.length > 0) {
nav.e(response.errors[0].message); this.e(response.errors[0].message);
} else { } else {
nav.i("Ajax调用成功!"); this.i("Ajax调用成功!");
} }
}) }.bind(this))
}, },
doPush: function () { doPush: function () {
if (window.EventSource) { if (window.EventSource) {
window.evtSource = new EventSource('http://localhost:8080/sse/1'); window.evtSource = new EventSource('http://localhost:8080/sse/1');
window.evtSource.addEventListener('message', function (e) { window.evtSource.addEventListener('message', function (e) {
console.log(e.data);
this.$notify.info({ this.$notify.info({
title: '消息', title: '消息',
message: "收到一条新的消息:" + e.data message: "收到一条新的消息:" + e.data
@ -1054,15 +1053,15 @@
} }
}, },
handleUpload: function (req) { handleUpload: function (req) {
ajax.fileUpload(req.file).then(function (response) { ajax.upload(req.file).then(function (response) {
if (response.errors.length > 0) { if (response.errors.length > 0) {
req.onError(); req.onError();
nav.e(response.errors[0].message); this.e(response.errors[0].message);
} else { } else {
req.onSuccess(); req.onSuccess();
nav.i("文件上传成功!"); this.i("文件上传成功!");
} }
}) }.bind(this))
}, },
submitForm: function (formName) { submitForm: function (formName) {
this.$refs[formName].validate(function (valid) { this.$refs[formName].validate(function (valid) {
@ -1072,13 +1071,13 @@
console.log('error submit!!'); console.log('error submit!!');
return false; return false;
} }
}); }.bind(this));
}, },
resetForm: function (formName) { resetForm: function (formName) {
this.$refs[formName].resetFields(); this.$refs[formName].resetFields();
}, },
handleEdit: function (index, row) { handleEdit: function (index, row) {
nav.i("编辑"); this.i("编辑");
}, },
showMessage: function () { showMessage: function () {

@ -16,7 +16,7 @@
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" style="width: 100%" :loading="$isSubmit" :disabled="$isSubmit" <el-button type="primary" style="width: 100%" :loading="isSubmit" :disabled="isSubmit"
@click="submitForm('form')">登录 @click="submitForm('form')">登录
</el-button> </el-button>
</el-form-item> </el-form-item>
@ -92,6 +92,7 @@
<script type="text/javascript"> <script type="text/javascript">
var app = new Vue({ var app = new Vue({
mixins: [mixin],
el: "#app", el: "#app",
data: { data: {
form: { form: {
@ -105,8 +106,7 @@
password: [ password: [
{required: true, message: '请输入密码', trigger: 'change'} {required: true, message: '请输入密码', trigger: 'change'}
], ],
}, }
$isSubmit: false
}, },
mounted: function () { mounted: function () {
@ -115,17 +115,17 @@
submitForm: function (formName) { submitForm: function (formName) {
this.$refs[formName].validate(function (valid) { this.$refs[formName].validate(function (valid) {
if (valid) { if (valid) {
this.$isSubmit = true; this.isSubmit = true;
ajax.login(this.form).then(function (response) { this.$ajax.login(this.form).then(function (response) {
this.$isSubmit = false; this.isSubmit = false;
if (response.errors.length > 0) { if (response.errors.length > 0) {
nav.e(response.errors[0].message); this.e(response.errors[0].message);
} else { } else {
nav.i("登录成功!", function () { this.i("登录成功!", function () {
location.href = "/" location.href = "/"
}); });
} }
}) }.bind(this))
} else { } else {
return false; return false;
} }

@ -18,7 +18,7 @@
<el-card class="box-card"> <el-card class="box-card">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-button type="success" size="small" icon="el-icon-plus" @click="onAction(['create',''])">新增 <el-button type="success" size="small" icon="el-icon-plus" @click="onCreate">新增
</el-button> </el-button>
<el-button type="warning" size="small" icon="el-icon-download">导出</el-button> <el-button type="warning" size="small" icon="el-icon-download">导出</el-button>
@ -34,7 +34,7 @@
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button size="small" @click="form.dialog = false">取 消</el-button> <el-button size="small" @click="form.dialog = false">取 消</el-button>
<el-button size="small" type="primary" @click="onAction(['save',''])">保存</el-button> <el-button size="small" type="primary" @click="onSave">保存</el-button>
</span> </span>
</el-dialog> </el-dialog>
</el-col> </el-col>
@ -42,14 +42,21 @@
<el-col :span="12"> <el-col :span="12">
<el-button-group style="float: right;"> <el-button-group style="float: right;">
<el-tooltip effect="dark" content="Excel模板下载" placement="bottom"> <el-tooltip effect="dark" content="Excel模板下载" placement="bottom">
<el-button size="small" icon="el-icon-date"></el-button> <el-button size="small" icon="el-icon-date" @click="excelTemplate"></el-button>
</el-tooltip> </el-tooltip>
<el-tooltip effect="dark" content="Excel导入" placement="bottom"> <el-tooltip effect="dark" content="Excel导入" placement="bottom">
<el-button size="small" icon="el-icon-upload2"></el-button> <el-button size="small" @click="excelSelect">
<i class="el-icon-upload2">
<input type="file" style="display: none" @change="excelImport($event)" ref="excel">
</i>
</el-button>
</el-tooltip> </el-tooltip>
<el-tooltip effect="dark" content="批量删除" placement="bottom"> <el-tooltip effect="dark" content="批量删除" placement="bottom">
<el-button size="small" icon="el-icon-delete" @click="onBitchDelete"></el-button> <el-button size="small" icon="el-icon-delete" @click="onBitchDelete"></el-button>
</el-tooltip> </el-tooltip>
<el-tooltip effect="dark" content="刷新" placement="bottom"> <el-tooltip effect="dark" content="刷新" placement="bottom">
<el-button size="small" icon="el-icon-refresh" @click="onFind"></el-button> <el-button size="small" icon="el-icon-refresh" @click="onFind"></el-button>
</el-tooltip> </el-tooltip>
@ -90,8 +97,8 @@
width="120" width="120"
label="操作"> label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-dropdown size="mini" split-button type="primary" @click="onAction(['edit',scope.row])" <el-dropdown size="mini" split-button type="primary" @click="onCommand(['edit',scope.row])"
@command="onAction"> @command="onCommand">
<i class="el-icon-edit"></i>编辑 <i class="el-icon-edit"></i>编辑
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="['delete',scope.row]" icon="el-icon-delete">删除 <el-dropdown-item :command="['delete',scope.row]" icon="el-icon-delete">删除
@ -133,8 +140,11 @@
</style> </style>
<script> <script>
var app = new Vue({ var app = new Vue({
mixins: [mixin],
el: "#app", el: "#app",
data: { data: {
module: '${module}',
target: '${table.getFName()}',
vm: {//条件及分页参数 vm: {//条件及分页参数
<#list fields as item> <#list fields as item>
<#if item.isQuery> <#if item.isQuery>
@ -143,7 +153,9 @@
</#list> </#list>
pageNumber: 1, pageNumber: 1,
pageSize: 10, pageSize: 10,
totalCount: 0 totalCount: 0,
sortKey:'CREATE_TIME',
sortType:'DESC'
}, },
form: {//待提交表单 form: {//待提交表单
title: "", title: "",
@ -169,98 +181,23 @@
], ],
</#if> </#if>
</#list> </#list>
}, }
select: [],
result: [],
}, },
methods: { methods: {
onSearch: function () { onCreate: function () {
this.vm.pageNumber = 1; this.form.title = "${table.tableComment?default("")}新增";
this.onFind(); this.form.dialog = true;
}, this.form.id = "";
onReset: function (form) {
this.$refs[form].resetFields();
nav.w('重置成功');
},
onFind: function () {
ajax.${table.getFName()}Find(this.vm).then(function (response) {
if (response.errors.length > 0) {
nav.e(response.errors[0].message);
} else {
this.result = response.result;
this.vm.totalCount = Number(response.totalCount);
}
}.bind(this))
},
onPage: function (pageNumber) {
this.vm.pageNumber = pageNumber;
this.onFind();
},
onBitchDelete: function () {
if (this.select.length === 0) {
nav.e("尚未选择数据列");
return;
}
this.$confirm('将删除所有选中项, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function () {
this.select.forEach(function (item) {
ajax.${table.getFName()}Delete({id: item.id}).then(function (response) {
if (response.errors.length > 0) {
nav.e(response.errors[0].message);
} else {
this.select.remove(item);
if (this.select.length===0){
nav.s("删除成功");
this.onFind();
}
}
}.bind(this))
}.bind(this))
}.bind(this)).catch(function (action) {
});
},
onSelectionChange: function (select) {
this.select = select;
},
onAction: function (arg) {
const action = arg[0];
const item = arg[1];
switch (action) {
case "create":
this.form.title = "${table.tableComment?default("")}新增";
this.form.dialog = true;
this.form.id = "";
<#list fields as item> <#list fields as item>
<#if !item.isSystem> <#if !item.isSystem>
this.form.${item.getFName()} = ""; this.form.${item.getFName()} = "";
</#if> </#if>
</#list> </#list>
break; },
case "save": onCommand: function (arg) {
if (this.form.id) { const action = arg[0];
ajax.${table.getFName()}Update(this.form).then(function (response) { const item = arg[1];
if (response.errors.length > 0) { switch (action) {
nav.e(response.errors[0].message);
} else {
this.onFind();
this.form.dialog = false;
}
}.bind(this))
} else {
ajax.${table.getFName()}Create(this.form).then(function (response) {
if (response.errors.length > 0) {
nav.e(response.errors[0].message);
} else {
this.onFind();
this.form.dialog = false;
}
}.bind(this))
}
break;
case "edit": case "edit":
this.form.title = "${table.tableComment?default("")}编辑"; this.form.title = "${table.tableComment?default("")}编辑";
this.form.dialog = true; this.form.dialog = true;
@ -273,31 +210,16 @@
this.form.rowVersion = item.rowVersion; this.form.rowVersion = item.rowVersion;
break; break;
case "delete": case "delete":
this.$confirm('将删除该项, 是否继续?', '提示', { this.onDelete(item);
confirmButtonText: '确定', break;
cancelButtonText: '取消', default:
type: 'warning' this.w("未找到对应的命令");
}).then(function () {
ajax.${table.getFName()}Delete({id: item.id}).then(function (response) {
if (response.errors.length > 0) {
nav.e(response.errors[0].message);
} else {
nav.s("删除成功")
this.onFind();
}
}.bind(this))
}.bind(this)).catch(function (action) {
});
break; break;
} }
}, },
}, },
created: function () {
},
mounted: function () { mounted: function () {
this.onFind(); this.onFind();
}, },
watch: {}
}) })
</script> </script>

@ -74,6 +74,7 @@
<el-tooltip effect="dark" content="批量删除" placement="bottom"> <el-tooltip effect="dark" content="批量删除" placement="bottom">
<el-button size="small" icon="el-icon-delete" @click="onBitchDelete"></el-button> <el-button size="small" icon="el-icon-delete" @click="onBitchDelete"></el-button>
</el-tooltip> </el-tooltip>
<el-tooltip effect="dark" content="刷新" placement="bottom"> <el-tooltip effect="dark" content="刷新" placement="bottom">
<el-button size="small" icon="el-icon-refresh" @click="onFind"></el-button> <el-button size="small" icon="el-icon-refresh" @click="onFind"></el-button>
</el-tooltip> </el-tooltip>
@ -134,8 +135,8 @@
width="120" width="120"
label="操作"> label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-dropdown size="mini" type="primary" split-button @command="onCommand" <el-dropdown size="mini" type="primary" split-button @click="onCommand(['view',scope.row])"
@click="onCommand(['view',scope.row])"> @command="onCommand">
<i class="el-icon-tickets"></i>查看 <i class="el-icon-tickets"></i>查看
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="['edit',scope.row]" icon="el-icon-edit">编辑</el-dropdown-item> <el-dropdown-item :command="['edit',scope.row]" icon="el-icon-edit">编辑</el-dropdown-item>
@ -191,7 +192,9 @@
valid: "", valid: "",
pageNumber: 1, pageNumber: 1,
pageSize: 10, pageSize: 10,
totalCount: 0 totalCount: 0,
sortKey:'CREATE_TIME',
sortType:'DESC'
}, },
select: [], select: [],
result: [], result: [],

@ -27,12 +27,13 @@
<el-card class="box-card"> <el-card class="box-card">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-button type="success" size="small" icon="el-icon-plus" @click="onAction(['create',''])">新增</el-button> <el-button type="success" size="small" icon="el-icon-plus" @click="onCreate(['create',''])">新增
</el-button>
<el-button type="warning" size="small" icon="el-icon-download">导出</el-button> <el-button type="warning" size="small" icon="el-icon-download">导出</el-button>
<el-dialog class="form" :title="form.title" :visible.sync="form.dialog"> <el-dialog class="form" :title="form.title" :visible.sync="form.dialog">
<el-form :model="form":inline="true" :rules="formRules" ref="form" label-width="90px"> <el-form :model="form" :inline="true" :rules="formRules" ref="form" label-width="90px">
<el-form-item label="字典键" prop="dictName"> <el-form-item label="字典键" prop="dictName">
<el-input size="small" v-model="form.key"></el-input> <el-input size="small" v-model="form.key"></el-input>
</el-form-item> </el-form-item>
@ -49,7 +50,7 @@
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button size="small" @click="form.dialog = false">取消</el-button> <el-button size="small" @click="form.dialog = false">取消</el-button>
<el-button size="small" type="primary" @click="onAction(['save',''])">保存</el-button> <el-button size="small" type="primary" @click="onSave">保存</el-button>
</span> </span>
</el-dialog> </el-dialog>
</el-col> </el-col>
@ -57,14 +58,21 @@
<el-col :span="12"> <el-col :span="12">
<el-button-group style="float: right;"> <el-button-group style="float: right;">
<el-tooltip effect="dark" content="Excel模板下载" placement="bottom"> <el-tooltip effect="dark" content="Excel模板下载" placement="bottom">
<el-button size="small" icon="el-icon-date"></el-button> <el-button size="small" icon="el-icon-date" @click="excelTemplate"></el-button>
</el-tooltip> </el-tooltip>
<el-tooltip effect="dark" content="Excel导入" placement="bottom"> <el-tooltip effect="dark" content="Excel导入" placement="bottom">
<el-button size="small" icon="el-icon-upload2"></el-button> <el-button size="small" @click="excelSelect">
<i class="el-icon-upload2">
<input type="file" style="display: none" @change="excelImport($event)" ref="excel">
</i>
</el-button>
</el-tooltip> </el-tooltip>
<el-tooltip effect="dark" content="批量删除" placement="bottom"> <el-tooltip effect="dark" content="批量删除" placement="bottom">
<el-button size="small" icon="el-icon-delete" @click="onBitchDelete"></el-button> <el-button size="small" icon="el-icon-delete" @click="onBitchDelete"></el-button>
</el-tooltip> </el-tooltip>
<el-tooltip effect="dark" content="刷新" placement="bottom"> <el-tooltip effect="dark" content="刷新" placement="bottom">
<el-button size="small" icon="el-icon-refresh" @click="onFind"></el-button> <el-button size="small" icon="el-icon-refresh" @click="onFind"></el-button>
</el-tooltip> </el-tooltip>
@ -124,8 +132,8 @@
width="120" width="120"
label="操作"> label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-dropdown size="mini" split-button type="primary" @click="onAction(['edit',scope.row])" <el-dropdown size="mini" split-button type="primary" @click="onCommand(['edit',scope.row])"
@command="onAction"> @command="onCommand">
<i class="el-icon-edit"></i>编辑 <i class="el-icon-edit"></i>编辑
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="['delete',scope.row]" icon="el-icon-delete">删除 <el-dropdown-item :command="['delete',scope.row]" icon="el-icon-delete">删除
@ -157,7 +165,7 @@
margin: 10px; margin: 10px;
} }
.form .el-dialog{ .form .el-dialog {
width: 700px; width: 700px;
} }
@ -168,8 +176,11 @@
</style> </style>
<script> <script>
var app = new Vue({ var app = new Vue({
mixins: [mixin],
el: "#app", el: "#app",
data: { data: {
module: 'system',
target: 'dictItem',
vm: { vm: {
id: '', id: '',
dictId: location.getParam("dictId"), dictId: location.getParam("dictId"),
@ -179,10 +190,10 @@
valid: '', valid: '',
pageNumber: 1, pageNumber: 1,
pageSize: 10, pageSize: 10,
totalCount: 0 totalCount: 0,
sortKey:'CREATE_TIME',
sortType:'DESC'
}, },
select: [],
result: [],
form: { form: {
title: "", title: "",
dialog: false, dialog: false,
@ -205,112 +216,28 @@
}, },
}, },
methods: { methods: {
onSearch: function () {
this.vm.pageNumber = 1;
this.onFind();
},
onReset: function (form) {
this.$refs[form].resetFields();
nav.w('重置成功');
},
onFind: function () {
ajax.dictItemFind(this.vm).then(function (response) {
if (response.errors.length > 0) {
nav.e(response.errors[0].message);
} else {
this.result = response.result;
this.vm.totalCount = Number(response.totalCount);
}
}.bind(this))
},
onPage: function (pageNumber) {
this.vm.pageNumber = pageNumber;
this.onFind();
},
onSelectionChange: function (select) {
this.select = select;
},
onBitchDelete: function () {
if (this.select.length == 0) {
nav.w("至少选中一项");
} else {
this.$confirm('将删除已选择的项, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function () {
for (var i = 0; i < this.select.length; i++) {
var obj = this.select[i];
ajax.dictItemDelete({id: obj.id}).then(function (response) {
if (response.errors.length > 0) {
nav.e(response.errors[0].message);
} else {
for (var j = 0; j < this.select.length; j++) {
if (this.select[j].id == obj.id) {
this.select.splice(j, 1);
}
}
if (this.select.length == 0) {
nav.s("删除成功")
this.onFind();
}
}
}.bind(this))
}
}.bind(this)).catch(function (action) {
});
}
},
getDict: function () { getDict: function () {
ajax.dictGet({id: location.getParam("dictId")}).then(function (response) { this.$ajax.get("system", "dict", {id: location.getParam("dictId")}).then(function (response) {
if (response.errors.length > 0) { if (response.errors.length > 0) {
nav.e(response.errors[0].message); this.e(response.errors[0].message);
} else { } else {
this.vm.dictName = response.dict.dictName; this.vm.dictName = response.dict.dictName;
} }
}.bind(this)) }.bind(this))
}, },
onAction: function (arg) { onCreate: function () {
const action = arg[0]; this.form.title = '新增字典项';
this.form.id = '';
this.form.key = '';
this.form.value = '';
this.form.sort = this.vm.totalCount;
this.form.valid = true;
this.form.dialog = true;
},
onCommand: function (arg) {
const cmd = arg[0];
const item = arg[1]; const item = arg[1];
switch (action) { switch (cmd) {
case "create":
this.form.title = '新增字典项';
this.form.id = '';
this.form.key = '';
this.form.value = '';
this.form.sort = this.vm.totalCount;
this.form.valid = true;
this.form.dialog = true;
break;
case "save":
this.$refs['form'].validate(function (valid) {
if (valid) {
if (this.form.id) {
ajax.dictItemUpdate(this.form).then(function (response) {
if (response.errors.length > 0) {
nav.e(response.errors[0].message);
} else {
this.onFind();
this.form.dialog = false;
}
}.bind(this))
} else {
ajax.dictItemCreate(this.form).then(function (response) {
if (response.errors.length > 0) {
nav.e(response.errors[0].message);
} else {
this.onFind();
this.form.dialog = false;
}
}.bind(this))
}
} else {
return false;
}
}.bind(this));
break;
case "edit": case "edit":
this.form.title = '编辑字典项'; this.form.title = '编辑字典项';
this.form.id = item.id; this.form.id = item.id;
@ -322,31 +249,17 @@
this.form.dialog = true; this.form.dialog = true;
break; break;
case "delete": case "delete":
this.$confirm('将删除该项, 是否继续?', '提示', { this.onDelete(item);
confirmButtonText: '确定', break;
cancelButtonText: '取消', default:
type: 'warning' this.w("未找到对应的命令");
}).then(function () {
ajax.dictItemDelete({id: item.id}).then(function (response) {
if (response.errors.length > 0) {
nav.e(response.errors[0].message);
} else {
nav.s("删除成功")
this.onFind();
}
}.bind(this));
}.bind(this));
break; break;
} }
} }
}, },
filters: {},
created: function () {
},
mounted: function () { mounted: function () {
this.getDict(); this.getDict();
this.onFind(); this.onFind();
}, }
watch: {}
}) })
</script> </script>

Loading…
Cancel
Save

Powered by TurnKey Linux.