master
wangbing 5 years ago
parent 619b0f55b4
commit 45169b489a

@ -85,6 +85,9 @@ public class ${table.getCName()}Ajax{
${table.getCName()}FindResponse response = ${table.getFName()}Manager.find(request, LocalData.getToken()); ${table.getCName()}FindResponse response = ${table.getFName()}Manager.find(request, LocalData.getToken());
if (response.hasError()) { if (response.hasError()) {
return response; return response;
} else if (response.getTotalCount() == 0) {
response.addError(ErrorType.BUSINESS_ERROR, "导出数据为空");
return response;
} }
return ResponseUtil.apply(new WSheet<>(response.getResult())); return ResponseUtil.apply(new WSheet<>(response.getResult()));
} }

@ -65,6 +65,9 @@ public class DictAjax {
DictFindResponse response = dictManager.find(request, LocalData.getToken()); DictFindResponse response = dictManager.find(request, LocalData.getToken());
if (response.hasError()) { if (response.hasError()) {
return response; return response;
} else if (response.getTotalCount() == 0) {
response.addError(ErrorType.BUSINESS_ERROR, "导出数据为空");
return response;
} }
return ResponseUtil.apply(new WSheet<>(response.getResult())); return ResponseUtil.apply(new WSheet<>(response.getResult()));
} }

@ -60,6 +60,9 @@ public class DictItemAjax {
DictItemFindResponse response = dictItemManager.find(request, LocalData.getToken()); DictItemFindResponse response = dictItemManager.find(request, LocalData.getToken());
if (response.hasError()) { if (response.hasError()) {
return response; return response;
} else if (response.getTotalCount() == 0) {
response.addError(ErrorType.BUSINESS_ERROR, "导出数据为空");
return response;
} }
return ResponseUtil.apply(new WSheet<>(response.getResult())); return ResponseUtil.apply(new WSheet<>(response.getResult()));
} }

@ -168,7 +168,7 @@ public class WSheet<T> implements Serializable, Cloneable {
*/ */
public WSheet(List<T> list) { public WSheet(List<T> list) {
if (list == null || list.size() == 0) { if (list == null || list.size() == 0) {
throw new RuntimeException("不允许传入空的列表"); throw new RuntimeException("导出数据为空");
} }
if (list.size() > 0) { if (list.size() > 0) {
List<WColumn> wColumns = initColumns(list.get(0).getClass()); List<WColumn> wColumns = initColumns(list.get(0).getClass());

@ -7,8 +7,11 @@ import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.*; import com.fasterxml.jackson.databind.*;
import org.dozer.DozerBeanMapper; import org.dozer.DozerBeanMapper;
import org.dozer.Mapper; import org.dozer.Mapper;
import ${basePackage}.frame.auth.LocalData;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.List; import java.util.List;
/** /**
@ -23,8 +26,16 @@ public class MapperUtil {
private static Mapper mapper; private static Mapper mapper;
static { static {
try {// 优先获取SpringBoot默认配置
om = LocalData.getBean(ObjectMapper.class);
} catch (Exception e) {
e.printStackTrace();
}
if (null == om) {
//初始化 //初始化
om = new ObjectMapper(); om = new ObjectMapper();
// 日期格式化
om.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
//序列化时忽略null属性 //序列化时忽略null属性
om.setSerializationInclusion(JsonInclude.Include.NON_NULL); om.setSerializationInclusion(JsonInclude.Include.NON_NULL);
//序列化时排序 //序列化时排序
@ -33,6 +44,7 @@ public class MapperUtil {
om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
//支持空类序列化时出错InvalidDefinitionException //支持空类序列化时出错InvalidDefinitionException
om.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); om.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
}
mapper = new DozerBeanMapper(); mapper = new DozerBeanMapper();
} }

@ -41,7 +41,7 @@ pagehelper.params=count=countSql
# jackson 相关配置 # jackson 相关配置
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8 spring.jackson.time-zone=GMT+8
spring.jackson.default-property-inclusion=use_defaults spring.jackson.default-property-inclusion=non_null
spring.jackson.mapper.sort-properties-alphabetically=true spring.jackson.mapper.sort-properties-alphabetically=true
spring.jackson.deserialization.fail-on-unknown-properties=false spring.jackson.deserialization.fail-on-unknown-properties=false
# freemarker # freemarker

@ -483,22 +483,23 @@
type: 'warning' type: 'warning'
}).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]; (function (obj) {
this.$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 {
for (var j = 0; j < this.select.length; j++) { for (var j = 0; j < this.select.length; j++) {
if (this.select[j].id == obj.id) { if (this.select[j].id === obj.id) {
this.select.splice(j, 1); this.select.splice(j, 1);
} }
} }
if (this.select.length == 0) { if (this.select.length === 0) {
this.s("删除成功") this.s("删除成功")
this.onFind(); this.onFind();
} }
} }
}.bind(this)) }.bind(this))
}.bind(this))(this.select[i]);
} }
}.bind(this)).catch(function (action) { }.bind(this)).catch(function (action) {

@ -16,7 +16,7 @@
<i class="el-icon-monitor"></i> <i class="el-icon-monitor"></i>
<span slot="title">系统设置</span> <span slot="title">系统设置</span>
</template> </template>
<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-menu-item index="${tool.uuid()}" @click="addTab({title: '字典管理', name: 'dict', url: '${r'${context}'}/system/dict.htm'})">字典管理</el-menu-item>
</el-submenu> </el-submenu>
<#list modules as item> <#list modules as item>
<el-submenu index="${tool.uuid()}"> <el-submenu index="${tool.uuid()}">
@ -25,7 +25,7 @@
<span slot="title">${item.moduleComment}</span> <span slot="title">${item.moduleComment}</span>
</template> </template>
<#list item.tables as table> <#list item.tables as table>
<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> <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>
</#list> </#list>
</el-submenu> </el-submenu>
</#list> </#list>
@ -121,6 +121,18 @@
border-right: solid 0 #e6e6e6; border-right: solid 0 #e6e6e6;
} }
.el-submenu__title{
height: 40px!important;
line-height: 40px!important;
}
.el-menu-item {
height: 40px!important;
line-height: 40px!important;
}
.el-menu--popup-right-start{
padding: 0px;
}
#main { #main {
height: 100%; height: 100%;
margin-left: 200px; margin-left: 200px;

@ -1,6 +1,6 @@
<div id="app" v-cloak> <div id="app" v-cloak>
<el-card class="box-card search"> <el-card class="box-card search">
<el-form :inline="true" :model="vm" ref="vm" label-width="90px"> <el-form :inline="true" :model="vm" ref="vm" label-position="left" label-width="90px">
<#list fields as item> <#list fields as item>
<#if item.isQuery> <#if item.isQuery>
<#if item.fieldType.javaType() =="Boolean"> <#if item.fieldType.javaType() =="Boolean">
@ -51,6 +51,8 @@
<el-date-picker <el-date-picker
size="small" size="small"
v-model="vm.${item.getFName()}" v-model="vm.${item.getFName()}"
format="yyyy-MM-dd HH:dd:ss"
value-format="yyyy-MM-dd HH:dd:ss"
type="datetime" type="datetime"
placeholder="选择日期时间"> placeholder="选择日期时间">
</el-date-picker> </el-date-picker>
@ -77,7 +79,7 @@
<el-button type="warning" size="small" icon="el-icon-download" @click="onExport">导出</el-button> <el-button type="warning" size="small" icon="el-icon-download" @click="onExport">导出</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-position="left" label-width="90px">
<#list fields as item> <#list fields as item>
<#if !item.isSystem> <#if !item.isSystem>
<#if item.fieldType.javaType() =="Boolean"> <#if item.fieldType.javaType() =="Boolean">
@ -128,6 +130,8 @@
<el-date-picker <el-date-picker
size="small" size="small"
v-model="form.${item.getFName()}" v-model="form.${item.getFName()}"
format="yyyy-MM-dd HH:dd:ss"
value-format="yyyy-MM-dd HH:dd:ss"
type="datetime" type="datetime"
placeholder="选择日期时间"> placeholder="选择日期时间">
</el-date-picker> </el-date-picker>

@ -1,6 +1,6 @@
<div id="app" v-cloak> <div id="app" v-cloak>
<el-card class="box-card search"> <el-card class="box-card search">
<el-form :inline="true" :model="vm" ref="vm" label-width="90px"> <el-form :inline="true" :model="vm" ref="vm" label-position="left" label-width="90px">
<el-form-item label="字典名称" prop="dictName"> <el-form-item label="字典名称" prop="dictName">
<el-input v-model="vm.dictName" clearable size="small" placeholder="请输入字典名称"></el-input> <el-input v-model="vm.dictName" clearable size="small" placeholder="请输入字典名称"></el-input>
</el-form-item> </el-form-item>
@ -28,7 +28,7 @@
<el-button type="warning" size="small" icon="el-icon-download" @click="onExport">导出</el-button> <el-button type="warning" size="small" icon="el-icon-download" @click="onExport">导出</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-position="left" label-width="90px">
<el-form-item label="字典名称" prop="dictName" required> <el-form-item label="字典名称" prop="dictName" required>
<el-input v-model="form.dictName" clearable size="small" placeholder="请输入字典名称"></el-input> <el-input v-model="form.dictName" clearable size="small" placeholder="请输入字典名称"></el-input>
</el-form-item> </el-form-item>

@ -1,6 +1,6 @@
<div id="app" v-cloak> <div id="app" v-cloak>
<el-card class="box-card search"> <el-card class="box-card search">
<el-form :inline="true" :model="vm" ref="vm" label-width="90px"> <el-form :inline="true" :model="vm" ref="vm" label-position="left" label-width="90px">
<el-form-item label="字典名称" prop="dictName"> <el-form-item label="字典名称" prop="dictName">
<el-input v-model="vm.dictName" clearable size="small" placeholder="请输入字典名称" readonly></el-input> <el-input v-model="vm.dictName" clearable size="small" placeholder="请输入字典名称" readonly></el-input>
</el-form-item> </el-form-item>
@ -31,18 +31,16 @@
<el-button type="warning" size="small" icon="el-icon-download" @click="onExport">导出</el-button> <el-button type="warning" size="small" icon="el-icon-download" @click="onExport">导出</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-position="left"
<el-form-item label="字典名称" prop="dictName"> label-width="90px">
<el-input v-model="form.dictName" clearable size="small" placeholder="请输入字典名称" readonly></el-input> <el-form-item label="字典键" prop="key">
</el-form-item>
<el-form-item label="字典键" prop="dictName">
<el-input v-model="form.key" clearable size="small" placeholder="请输入字典键"></el-input> <el-input v-model="form.key" clearable size="small" placeholder="请输入字典键"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="字典值" prop="dictCode"> <el-form-item label="字典值" prop="value">
<el-input v-model="form.value" clearable size="small" placeholder="请输入字典值"></el-input> <el-input v-model="form.value" clearable size="small" placeholder="请输入字典值"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="排序值" prop="dictCode"> <el-form-item label="排序值" prop="sort">
<el-input-number size="small" v-model="form.sort" :min="0" :max="10000" <el-input-number size="small" v-model="form.sort" :min="1" :max="10000"
label="描述文字"></el-input-number> label="描述文字"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="是否有效" prop="valid"> <el-form-item label="是否有效" prop="valid">
@ -190,10 +188,6 @@
rowVersion: "" rowVersion: ""
}, },
formRules: { formRules: {
dictName: [
{required: true, message: '字典名称不能为空', trigger: 'blur'},
{min: 1, max: 50, message: '字典名称长度在 1 到 50 个字符', trigger: 'blur'}
],
key: [ key: [
{required: true, message: '请输入字典名称', trigger: 'blur'}, {required: true, message: '请输入字典名称', trigger: 'blur'},
{min: 1, max: 50, message: '长度在 3 到 5 个字符', trigger: 'blur'} {min: 1, max: 50, message: '长度在 3 到 5 个字符', trigger: 'blur'}
@ -217,7 +211,7 @@
this.form.dictName = location.getParam("dictName"); this.form.dictName = location.getParam("dictName");
this.form.key = ''; this.form.key = '';
this.form.value = ''; this.form.value = '';
this.form.sort = this.vm.totalCount; this.form.sort = this.vm.totalCount + 1;
this.form.valid = true; this.form.valid = true;
}, },
onCommand: function (arg) { onCommand: function (arg) {

Loading…
Cancel
Save

Powered by TurnKey Linux.