master
wangbing 5 years ago
parent a4b8fc39a9
commit e59656b97b

@ -1,9 +1,9 @@
# 开发环境
server.port=80
server.port=8080
server.servlet.context-path=
spring.mvc.static-path-pattern=/static/**
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:/file-upload
spring.application.name=EXAMPLE-WEB
spring.application.name=DBTOOL
spring.main.banner-mode=CONSOLE
spring.devtools.restart.enabled=true
# 编码配置

@ -251,36 +251,31 @@ public class GlobalController implements ErrorController {
@RequestMapping("/ajax/{module}/{target}/{method}")
@ResponseBody
public BaseResponse ajax(@PathVariable String module, @PathVariable String target, @PathVariable String method, @RequestBody String param) {
BaseResponse baseResponse = null;
public Object ajax(@PathVariable String module, @PathVariable String target, @PathVariable String method, @RequestBody String param) {
try {
String beanClassName = (ActionConfig.AJAX_PREFIX + module + "/" + target).toLowerCase();
Object ajax = LocalData.getApplicationContext().getBean(beanClassName);
Class ajaxClass = ajax.getClass();
Method methodC = ajaxClass.getMethod(method, String.class);
Object invoke = methodC.invoke(ajax, param);
if (invoke instanceof BaseResponse) {
baseResponse = (BaseResponse) invoke;
} else {
baseResponse = new BaseResponse();
baseResponse.addError(ErrorType.BUSINESS_ERROR, "方法返回值错误!");
}
return methodC.invoke(ajax, "");
} catch (BeansException e) {
baseResponse = new BaseResponse();
BaseResponse baseResponse = new BaseResponse();
baseResponse.addError(ErrorType.BUSINESS_ERROR, "未找到对应的目标!");
return baseResponse;
} catch (NoSuchMethodException e) {
baseResponse = new BaseResponse();
BaseResponse baseResponse = new BaseResponse();
baseResponse.addError(ErrorType.BUSINESS_ERROR, "未找到对应的方法!");
return baseResponse;
} catch (IllegalAccessException e) {
baseResponse = new BaseResponse();
BaseResponse baseResponse = new BaseResponse();
baseResponse.addError(ErrorType.BUSINESS_ERROR, "方法执必须公开!");
return baseResponse;
} catch (InvocationTargetException e) {
baseResponse = new BaseResponse();
BaseResponse baseResponse = new BaseResponse();
baseResponse.addError(ErrorType.BUSINESS_ERROR, "方法执行错误!");
return baseResponse;
}
return baseResponse;
}
@RequestMapping("/download")

@ -1,11 +1,16 @@
package ${basePackage}.action.ajax.system;
import ${basePackage}.frame.auth.LocalData;
import ${basePackage}.frame.excel.WSheet;
import ${basePackage}.frame.utils.MapperUtil;
import ${basePackage}.module.system.mgr.DictManager;
import ${basePackage}.module.system.req.*;
import ${basePackage}.module.system.rsp.*;
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;
public class DictAjax {
@ -41,4 +46,13 @@ public class DictAjax {
DictLoadRequest request = MapperUtil.toJava(jsonParam, DictLoadRequest.class);
return dictManager.load(request, LocalData.getToken());
}
public ResponseEntity<byte[]> template(String jsonParam) throws IOException {
WSheet<DictCreateRequest> sheet = new WSheet<>(DictCreateRequest.class);
byte[] bytes = sheet.getBytes();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", new String((sheet.getName() + ".xlsx").getBytes("UTF-8"), "iso-8859-1"));
return new ResponseEntity<byte[]>(bytes, headers, HttpStatus.OK);
}
}

@ -1,8 +1,8 @@
package ${basePackage}.frame.excel;
import xyz.wbsite.frame.excel.converter.Converter;
import xyz.wbsite.frame.utils.StringUtil;
import ${basePackage}.frame.excel.converter.Converter;
import ${basePackage}.frame.utils.StringUtil;
import java.io.Serializable;
import java.lang.reflect.Field;

@ -1,14 +1,14 @@
package ${basePackage}.frame.excel;
import xyz.wbsite.frame.excel.style.DataCellStyle;
import xyz.wbsite.frame.excel.style.ErrorCellStyle;
import xyz.wbsite.frame.excel.style.HeadCellStyle;
import xyz.wbsite.frame.excel.style.RedFont;
import xyz.wbsite.frame.utils.ClassUtil;
import xyz.wbsite.frame.utils.StringUtil;
import xyz.wbsite.frame.utils.ValidationUtil;
import xyz.wbsite.frame.excel.annotation.*;
import xyz.wbsite.frame.excel.converter.*;
import ${basePackage}.frame.excel.style.DataCellStyle;
import ${basePackage}.frame.excel.style.ErrorCellStyle;
import ${basePackage}.frame.excel.style.HeadCellStyle;
import ${basePackage}.frame.excel.style.RedFont;
import ${basePackage}.frame.utils.ClassUtil;
import ${basePackage}.frame.utils.StringUtil;
import ${basePackage}.frame.utils.ValidationUtil;
import ${basePackage}.frame.excel.annotation.*;
import ${basePackage}.frame.excel.converter.*;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
@ -70,7 +70,7 @@ public class WSheet<T> implements Serializable, Cloneable {
this.setName(sheetName.value());
this.setFreezeFirst(sheetName.freezeFirst());
} else {
this.setName(clazz.getName());
this.setName(clazz.getSimpleName());
}
//是否关注父类属性
@ -102,11 +102,11 @@ public class WSheet<T> implements Serializable, Cloneable {
}
//获取列类型
if (field.isAnnotationPresent(xyz.wbsite.frame.excel.annotation.Converter.class)) {
xyz.wbsite.frame.excel.annotation.Converter converter = field.getAnnotation(xyz.wbsite.frame.excel.annotation.Converter.class);
if (field.isAnnotationPresent(${basePackage}.frame.excel.annotation.Converter.class)) {
${basePackage}.frame.excel.annotation.Converter converter = field.getAnnotation(${basePackage}.frame.excel.annotation.Converter.class);
Class target = converter.target();
try {
WColumn.setConverter((xyz.wbsite.frame.excel.converter.Converter) target.newInstance());
WColumn.setConverter((${basePackage}.frame.excel.converter.Converter) target.newInstance());
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
@ -349,7 +349,7 @@ public class WSheet<T> implements Serializable, Cloneable {
String value = WCell.getValue();
Method method = clazz.getMethod("set" + att, field.getType());
//获取转换器
xyz.wbsite.frame.excel.converter.Converter converter = column.getConverter();
${basePackage}.frame.excel.converter.Converter converter = column.getConverter();
method.invoke(object, converter.convert(value));
}
break;

@ -1,5 +1,4 @@
package xyz.wbsite.frame.utils;
package ${basePackage}.frame.utils;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

@ -1,4 +1,4 @@
package xyz.wbsite.frame.utils;
package ${basePackage}.frame.utils;
public class StringUtil {

@ -1,28 +1,47 @@
//创建axios实例
instance = axios.create({
jsonService = axios.create({
method: 'post',
timeout: 30000,
baseURL: '/ajax',
headers: {'Content-Type': 'application/json;charset=UTF-8'},
});
downloadService = axios.create({
method: 'post',
timeout: 30000,
baseURL: '/ajax',
responseType: 'blob',
headers: {'Content-Type': 'application/json;charset=UTF-8'},
});
uploadService = axios.create({
method: 'post',
timeout: 30000,
baseURL: '/ajax',
headers: {'Content-Type': 'multipart/form-data'},
onUploadProgress: function (progressEvent) {
var complete = (progressEvent.loaded / progressEvent.total * 100 | 0) + '%'
nav.tip.show("上传中(" + complete + ")")
},
});
// 添加请求拦截器
instance.interceptors.request.use(function (config) {
// 添加JSON请求拦截器
jsonService.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
nav.bar.show();
if (config.url == '/upload') {
nav.tip.show("上传中 ...");
} else {
nav.tip.show();
}
nav.tip.show();
return config;
}, function (error) {
return Promise.reject(error);
});
uploadService.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
nav.bar.show();
nav.tip.show("上传中 ...");
return config;
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
});
// 添加响应拦截器
instance.interceptors.response.use(function (response) {
// 添加JSON响应拦截器
jsonService.interceptors.response.use(function (response) {
// 对响应数据做点什么
nav.tip.close();
try {//确保服务器正确返回Json
@ -32,65 +51,107 @@ instance.interceptors.response.use(function (response) {
nav.bar.finish();
}catch (e){
nav.bar.error();
response.data = {errors: [{message: '服务器错误'}]};
response.data = {errors: [{message: '服务器响应错误'}]};
}
return response;
}, function (error) {
// 对响应错误做点什么,保准化返回结果
// 对响应错误做点什么,并返回错误结果
nav.tip.close();
nav.bar.error();
const rsp = {errors: []};
if (!error.response) {
rsp.errors.push({message: error.message});
} else {
switch (error.response.status) {
case 401:
rsp.errors.push({message: "未授权,请登录(401)"});
break
case 403:
rsp.errors.push({message: "拒绝访问(403)"});
break
case 404:
rsp.errors.push({message: "请求地址错误(404)"});
break
case 408:
rsp.errors.push({message: "请求超时(408)"});
break
case 500:
rsp.errors.push({message: "服务器内部错误(500)"});
break
case 501:
rsp.errors.push({message: "服务未实现(501)"});
break
default:
rsp.errors.push({message: "请求错误(" + error.response.status + ")"});
break
rsp.errors.push(handleError(error.response.status));
}
return Promise.reject(rsp);
});
// 添加Upload响应拦截器
uploadService.interceptors.response.use(function (response) {
// 对响应数据做点什么
nav.tip.close();
try {//确保服务器正确返回Json
if(response.data.errors.length > 0){
console.error(response.data.errors)
}
nav.bar.finish();
}catch (e){
nav.bar.error();
response.data = {errors: [{message: '服务器响应错误'}]};
}
return response;
}, function (error) {
// 对响应错误做点什么,并返回错误结果
nav.tip.close();
nav.bar.error();
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 handerResponse(){
}
function handleError(status){
switch (status) {
case 401:
return {message: "未授权,请登录(401)"};
case 403:
return {message: "拒绝访问(403)"};
case 404:
return {message: "请求地址错误(404)"};
case 408:
return {message: "请求超时(408)"};
case 500:
return {message: "服务器内部错误(500)"};
case 501:
return {message: "服务未实现(501)"};
default:
return {message: "请求错误(" + error.response.status + ")"};
}
}
jsonRequest = function (data) {
return instance.request(data)
return jsonService.request(data)
.then(function (response) {
return Promise.resolve(response.data);
}, function (response) {
return Promise.resolve(response);
})
};
fileRequest = function (config) {
return instance.request({
url: '/upload',
data: config.data,
headers: {'Content-Type': 'multipart/form-data'},
onUploadProgress: function (progressEvent) {
var complete = (progressEvent.loaded / progressEvent.total * 100 | 0) + '%'
nav.tip.show("上传中(" + complete + ")")
}
}).then(function (response) {
return Promise.resolve(response.data);
}, function (response) {
return Promise.resolve(response);
})
upRequest = function (data) {
data.url='/upload';
return uploadService.request(data)
.then(function (response) {
return Promise.resolve(response.data);
}, function (response) {
return Promise.resolve(response);
})
};
downRequest = function (data) {
return downloadService.request(data)
.then(function (response) {
if (!response.data) {
return Promise.resolve({errors: [{message: '下载错误'}]});
}
// 获取响应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', fileName)
document.body.appendChild(link)
link.click();
return Promise.resolve({errors: []});
}, function (response) {
return Promise.resolve(response);
})
};
window.ajax = {
authLogin: function (data) {
@ -102,7 +163,7 @@ window.ajax = {
fileUpload: function (file) {
var fd = new FormData();
fd.append("file", file);
return fileRequest({
return upRequest({
data: fd
})
},
@ -142,6 +203,12 @@ window.ajax = {
data: JSON.stringify(data),
})
},
dictTemplate: function (data) {
return downRequest({
url: "/system/Dict/template",
data: JSON.stringify(data),
})
},
dictItemCreate: function (data) {
return jsonRequest({
url: "/system/DictItem/create",

@ -59,7 +59,7 @@
<el-col :span="12">
<el-button-group style="float: right;">
<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="onAction(['template',''])"></el-button>
</el-tooltip>
<el-tooltip effect="dark" content="Excel导入" placement="bottom">
<el-button size="small" icon="el-icon-upload"></el-button>
@ -340,6 +340,13 @@
}.bind(this));
}.bind(this));
break;
case "template":
ajax.dictTemplate({}).then(function (response) {
if (response.errors.length > 0) {
nav.e(response.errors[0].message);
}
}.bind(this));
break
}
}
},

@ -24,8 +24,8 @@
<el-card class="box-card">
<el-row>
<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="onAction(['create',''])">新增</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">
@ -58,8 +58,18 @@
<el-col :span="12">
<el-button-group style="float: right;">
<el-button size="small" icon="el-icon-delete" @click="onBitchDelete"></el-button>
<el-button size="small" icon="el-icon-refresh" @click="onFind"></el-button>
<el-tooltip effect="dark" content="Excel模板下载" placement="bottom">
<el-button size="small" icon="el-icon-date"></el-button>
</el-tooltip>
<el-tooltip effect="dark" content="Excel导入" placement="bottom">
<el-button size="small" icon="el-icon-upload"></el-button>
</el-tooltip>
<el-tooltip effect="dark" content="批量删除" placement="bottom">
<el-button size="small" icon="el-icon-delete" @click="onBitchDelete"></el-button>
</el-tooltip>
<el-tooltip effect="dark" content="刷新" placement="bottom">
<el-button size="small" icon="el-icon-refresh" @click="onFind"></el-button>
</el-tooltip>
</el-button-group>
</el-col>
</el-row>
@ -131,12 +141,13 @@
</el-table>
<el-pagination
style="margin-top: 10px"
background
v-if="vm.totalCount > vm.pageSize"
style="margin-top: 10px"
@current-change="onPage"
:current-page="vm.pageNumber"
:page-size="vm.pageSize"
layout="total, prev, pager, next, jumper"
layout="total, sizes, prev, pager, next, jumper"
:total="vm.totalCount">
</el-pagination>
</el-card>

@ -28,6 +28,7 @@
<el-row>
<el-col :span="12">
<el-button type="success" size="small" icon="el-icon-plus" @click="onAction(['create',''])">新增</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">
@ -55,8 +56,18 @@
<el-col :span="12">
<el-button-group style="float: right;">
<el-button size="small" icon="el-icon-delete" @click="onBitchDelete"></el-button>
<el-button size="small" icon="el-icon-refresh" @click="onFind"></el-button>
<el-tooltip effect="dark" content="Excel模板下载" placement="bottom">
<el-button size="small" icon="el-icon-date"></el-button>
</el-tooltip>
<el-tooltip effect="dark" content="Excel导入" placement="bottom">
<el-button size="small" icon="el-icon-upload"></el-button>
</el-tooltip>
<el-tooltip effect="dark" content="批量删除" placement="bottom">
<el-button size="small" icon="el-icon-delete" @click="onBitchDelete"></el-button>
</el-tooltip>
<el-tooltip effect="dark" content="刷新" placement="bottom">
<el-button size="small" icon="el-icon-refresh" @click="onFind"></el-button>
</el-tooltip>
</el-button-group>
</el-col>
</el-row>
@ -126,11 +137,13 @@
</el-table>
<el-pagination
background
v-if="vm.totalCount > vm.pageSize"
style="margin-top: 10px"
@current-change="onPage"
:current-page="vm.pageNumber"
:page-size="vm.pageSize"
layout="total, prev, pager, next, jumper"
layout="total, sizes, prev, pager, next, jumper"
:total="vm.totalCount">
</el-pagination>
</el-card>

@ -1,381 +0,0 @@
<div id="app" v-cloak>
<el-card class="box-card">
<el-form :inline="true" :model="vm" ref="vm" label-width="90px">
<el-form-item label="用户名" prop="name">
<el-input v-model="vm.name" clearable size="small" placeholder="请输入用户名"></el-input>
</el-form-item>
<el-form-item label="年龄" prop="age">
<el-input v-model="vm.age" clearable size="small" placeholder="请输入年龄"></el-input>
</el-form-item>
<el-form-item label="性别" prop="sex">
<el-input v-model="vm.sex" clearable size="small" placeholder="请输入性别"></el-input>
</el-form-item>
<el-form-item label="头像" prop="tx">
<el-input v-model="vm.tx" clearable size="small" placeholder="请输入头像"></el-input>
</el-form-item>
<el-form-item label="QQ" prop="qq">
<el-input v-model="vm.qq" clearable size="small" placeholder="请输入QQ"></el-input>
</el-form-item>
<el-form-item label="微信、" prop="wx">
<el-input v-model="vm.wx" clearable size="small" placeholder="请输入微信、"></el-input>
</el-form-item>
<el-form-item label="微博" prop="wb">
<el-input v-model="vm.wb" clearable size="small" placeholder="请输入微博"></el-input>
</el-form-item>
<el-form-item label="个人主页" prop="personPage">
<el-input v-model="vm.personPage" clearable size="small" placeholder="请输入个人主页"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" size="small" icon="el-icon-search" @click="onSearch">搜索</el-button>
<el-button type="warning" size="small" icon="el-icon-refresh-left" @click="onReset('vm')">重置</el-button>
</el-form-item>
</el-form>
</el-card>
<el-card class="box-card">
<el-row>
<el-col :span="12">
<el-button type="success" size="small" icon="el-icon-plus" @click="onAction(['create',''])">新增
</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-form :model="form" :inline="true" :rules="formRules" ref="form" label-width="90px">
<el-form-item label="用户名" prop="name">
<el-input v-model="form.name" clearable size="small" placeholder="请输入用户名"></el-input>
</el-form-item>
<el-form-item label="年龄" prop="age">
<el-input v-model="form.age" clearable size="small" placeholder="请输入年龄"></el-input>
</el-form-item>
<el-form-item label="性别" prop="sex">
<el-input v-model="form.sex" clearable size="small" placeholder="请输入性别"></el-input>
</el-form-item>
<el-form-item label="头像" prop="tx">
<el-input v-model="form.tx" clearable size="small" placeholder="请输入头像"></el-input>
</el-form-item>
<el-form-item label="QQ" prop="qq">
<el-input v-model="form.qq" clearable size="small" placeholder="请输入QQ"></el-input>
</el-form-item>
<el-form-item label="微信、" prop="wx">
<el-input v-model="form.wx" clearable size="small" placeholder="请输入微信、"></el-input>
</el-form-item>
<el-form-item label="微博" prop="wb">
<el-input v-model="form.wb" clearable size="small" placeholder="请输入微博"></el-input>
</el-form-item>
<el-form-item label="个人主页" prop="personPage">
<el-input v-model="form.personPage" clearable size="small" placeholder="请输入个人主页"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="small" @click="form.dialog = false">取 消</el-button>
<el-button size="small" type="primary" @click="onAction(['save',''])">保存</el-button>
</span>
</el-dialog>
</el-col>
<el-col :span="12">
<el-button-group style="float: right;">
<el-button size="small" icon="el-icon-delete" @click="onBitchDelete"></el-button>
<el-button size="small" icon="el-icon-refresh" @click="onFind"></el-button>
</el-button-group>
</el-col>
</el-row>
<el-table
style="margin-top: 10px"
@selection-change="onSelectionChange"
empty-text="无数据"
:data="result"
size="mini"
style="width: 100%">
<el-table-column
align="center"
type="selection"
width="40">
</el-table-column>
<el-table-column
align="center"
prop="name"
label="用户名">
</el-table-column>
<el-table-column
align="center"
prop="age"
label="年龄">
</el-table-column>
<el-table-column
align="center"
prop="sex"
label="性别">
</el-table-column>
<el-table-column
align="center"
prop="tx"
label="头像">
</el-table-column>
<el-table-column
align="center"
prop="qq"
label="QQ">
</el-table-column>
<el-table-column
align="center"
prop="wx"
label="微信、">
</el-table-column>
<el-table-column
align="center"
prop="wb"
label="微博">
</el-table-column>
<el-table-column
align="center"
prop="personPage"
label="个人主页">
</el-table-column>
<el-table-column
align="center"
prop="createTime"
width="140"
label="创建时间">
</el-table-column>
<el-table-column
align="center"
fixed="right"
width="120"
label="操作">
<template slot-scope="scope">
<el-dropdown size="mini" split-button type="primary" @click="onAction(['edit',scope.row])"
@command="onAction">
<i class="el-icon-edit"></i>编辑
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="['delete',scope.row]" icon="el-icon-delete">删除
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<el-pagination
style="margin-top: 10px"
v-if="vm.totalCount > vm.pageSize"
@current-change="onPage"
:current-page="vm.pageNumber"
:page-size="vm.pageSize"
layout="total, prev, pager, next, jumper"
:total="vm.totalCount">
</el-pagination>
</el-card>
</div>
<style>
#app {
padding: 10px;
}
.box-card {
margin: 10px;
}
.form .el-dialog{
width: 700px;
}
.form .el-dialog .el-form-item__content {
width: 220px;
}
</style>
<script>
var app = new Vue({
el: "#app",
data: {
vm: {//条件及分页参数
name: "",
age: "",
sex: "",
tx: "",
qq: "",
wx: "",
wb: "",
personPage: "",
pageNumber: 1,
pageSize: 10,
totalCount: 0
},
form: {//待提交表单
title: "",
dialog: false,
id: '',
name: "",
age: "",
sex: "",
tx: "",
qq: "",
wx: "",
wb: "",
personPage: "",
rowVersion: ""
},
formRules: {
name: [
{min: 1, max: 10, message: '用户名长度在 1 到 10 个字符', trigger: 'blur'}
],
age: [
{min: 1, max: 50, message: '年龄长度在 1 到 50 个字符', trigger: 'blur'}
],
sex: [
{min: 1, max: 50, message: '性别长度在 1 到 50 个字符', trigger: 'blur'}
],
tx: [
{min: 1, max: 50, message: '头像长度在 1 到 50 个字符', trigger: 'blur'}
],
qq: [
{min: 1, max: 50, message: 'QQ长度在 1 到 50 个字符', trigger: 'blur'}
],
wx: [
{min: 1, max: 50, message: '微信、长度在 1 到 50 个字符', trigger: 'blur'}
],
wb: [
{min: 1, max: 50, message: '微博长度在 1 到 50 个字符', trigger: 'blur'}
],
personPage: [
{min: 1, max: 50, message: '个人主页长度在 1 到 50 个字符', trigger: 'blur'}
],
},
select: [],
result: [],
},
methods: {
onSearch: function () {
this.vm.pageNumber = 1;
this.onFind();
},
onReset: function (form) {
this.$refs[form].resetFields();
nav.w('重置成功');
},
onFind: function () {
ajax.user1Find(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.user1Delete({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 = "用户1新增";
this.form.dialog = true;
this.form.id = "";
this.form.name = "";
this.form.age = "";
this.form.sex = "";
this.form.tx = "";
this.form.qq = "";
this.form.wx = "";
this.form.wb = "";
this.form.personPage = "";
break;
case "save":
if (this.form.id) {
ajax.user1Update(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.user1Create(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":
this.form.title = "用户1编辑";
this.form.dialog = true;
this.form.id = item.id;
this.form.name = item.name;
this.form.age = item.age;
this.form.sex = item.sex;
this.form.tx = item.tx;
this.form.qq = item.qq;
this.form.wx = item.wx;
this.form.wb = item.wb;
this.form.personPage = item.personPage;
this.form.rowVersion = item.rowVersion;
break;
case "delete":
this.$confirm('将删除该项, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function () {
ajax.user1Delete({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;
}
},
},
created: function () {
},
mounted: function () {
this.onFind();
},
watch: {}
})
</script>
Loading…
Cancel
Save

Powered by TurnKey Linux.