修改地区

main
tamguo 7 years ago
parent e72109b2bb
commit 61d026eb08

@ -18,6 +18,10 @@ import com.tamguo.modules.sys.model.enums.SysAreaStatusEnum;
@TableName(value="sys_area")
public class SysAreaEntity implements Serializable {
private static final long serialVersionUID = 1L;
public static final String ROOT_AREA_CODE = "0";
public static final String TREE_CODE_AREA_SEPARATE = ",";
public static final String TREE_NAME_AREA_SEPARATE = "/";
@TableId
private String areaCode;

@ -16,4 +16,7 @@ public interface ISysAreaService extends IService<SysAreaEntity>{
/** 保存地区*/
void save(SysAreaEntity area);
/** 修改地区*/
void update(SysAreaEntity area);
}

@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.tamguo.modules.sys.dao.SysAreaMapper;
import com.tamguo.modules.sys.model.SysAreaEntity;
import com.tamguo.modules.sys.model.SysOfficeEntity;
import com.tamguo.modules.sys.model.condition.SysAreaCondition;
import com.tamguo.modules.sys.model.enums.SysAreaStatusEnum;
import com.tamguo.modules.sys.service.ISysAreaService;
@ -79,21 +78,21 @@ public class SysAreaServiceImpl extends ServiceImpl<SysAreaMapper, SysAreaEntity
@SuppressWarnings("unchecked")
private SysAreaEntity handleTreeData(SysAreaEntity area) {
if(StringUtils.isEmpty(area.getParentCode())) {
area.setParentCode(SysOfficeEntity.ROOT_OFFICE_CODE);
area.setParentCodes(SysOfficeEntity.ROOT_OFFICE_CODE + SysOfficeEntity.TREE_CODE_OFFICE_SEPARATE);
area.setParentCode(SysAreaEntity.ROOT_AREA_CODE);
area.setParentCodes(SysAreaEntity.ROOT_AREA_CODE + SysAreaEntity.TREE_CODE_AREA_SEPARATE);
area.setTreeLeaf(true);
area.setTreeLevel(new BigDecimal(0));
area.setTreeNames(area.getAreaName());
area.setTreeSorts(area.getTreeSort().multiply(new BigDecimal(10000000)).toString() + SysOfficeEntity.TREE_CODE_OFFICE_SEPARATE);
area.setTreeSorts(area.getTreeSort().multiply(new BigDecimal(10000000)).toString() + SysAreaEntity.TREE_CODE_AREA_SEPARATE);
} else {
SysAreaEntity parentOffice = sysAreaMapper.selectById(area.getParentCode());
area.setParentCodes(parentOffice.getParentCodes() + parentOffice.getAreaCode() + SysOfficeEntity.TREE_CODE_OFFICE_SEPARATE);
area.setParentCodes(parentOffice.getParentCodes() + parentOffice.getAreaCode() + SysAreaEntity.TREE_CODE_AREA_SEPARATE);
area.setTreeLeaf(true);
area.setTreeLevel(parentOffice.getTreeLevel().add(new BigDecimal(1)));
area.setTreeNames(parentOffice.getTreeNames() + SysOfficeEntity.TREE_NAME_OFFICE_SEPARATE + parentOffice.getAreaName());
area.setTreeSorts(parentOffice.getTreeSorts() + area.getTreeSort().multiply(new BigDecimal(10000000)).toString() + SysOfficeEntity.TREE_CODE_OFFICE_SEPARATE);
area.setTreeNames(parentOffice.getTreeNames() + SysAreaEntity.TREE_CODE_AREA_SEPARATE + parentOffice.getAreaName());
area.setTreeSorts(parentOffice.getTreeSorts() + area.getTreeSort().multiply(new BigDecimal(10000000)).toString() + SysAreaEntity.TREE_CODE_AREA_SEPARATE);
if(parentOffice.getTreeLeaf()) {
parentOffice.setTreeLeaf(false);
@ -108,4 +107,32 @@ public class SysAreaServiceImpl extends ServiceImpl<SysAreaMapper, SysAreaEntity
}
return area;
}
@SuppressWarnings("unchecked")
@Transactional(readOnly=false)
@Override
public void update(SysAreaEntity area) {
SysAreaEntity entity = sysAreaMapper.selectById(area.getAreaCode());
String oldParentCode = entity.getParentCode();
entity.setUpdateBy(ShiroUtils.getUserCode());
entity.setUpdateDate(new Date());
entity.setParentCode(area.getParentCode());
entity.setAreaName(area.getAreaName());
entity.setAreaType(area.getAreaType());
entity.setTreeSort(area.getTreeSort());
entity.setRemarks(area.getRemarks());
this.handleTreeData(area);
sysAreaMapper.updateById(entity);
// 更新旧的节点
Integer count = sysAreaMapper.selectCount(Condition.create().eq("parent_code", oldParentCode).ne("area_code", oldParentCode));
if(count == 0) {
SysAreaEntity oldParentOffice = sysAreaMapper.selectById(oldParentCode);
oldParentOffice.setTreeLeaf(true);
sysAreaMapper.updateById(oldParentOffice);
}
}
}

@ -21,10 +21,10 @@ public class SysAreaController {
private final String AREA_INDEX_PAGE = "modules/sys/area/index";
private final String AREA_ADD_PAGE = "modules/sys/area/add";
private final String AREA_UPDATE_PAGE = "modules/sys/area/update";
@Autowired
private ISysAreaService iSysAreaService;
@RequestMapping(path="index")
public String index() {
@ -32,13 +32,22 @@ public class SysAreaController {
}
@RequestMapping(path="add")
@ResponseBody
public ModelAndView add(String parentCode , ModelAndView model) {
model.setViewName(AREA_ADD_PAGE);
model.addObject("parentArea", iSysAreaService.selectById(parentCode));
return model;
}
@RequestMapping(path="update")
public ModelAndView update(String areaCode , ModelAndView model) {
model.setViewName(AREA_UPDATE_PAGE);
SysAreaEntity area = iSysAreaService.selectById(areaCode);
SysAreaEntity parentArea = iSysAreaService.selectById(area.getParentCode());
model.addObject("area", area);
model.addObject("parentArea", parentArea);
return model;
}
@RequestMapping(path="save")
@ResponseBody
public Result save(SysAreaEntity area) {
@ -50,6 +59,17 @@ public class SysAreaController {
}
}
@RequestMapping(path="update",method=RequestMethod.POST)
@ResponseBody
public Result update(SysAreaEntity area) {
try {
iSysAreaService.update(area);
return Result.result(0, null, "修改【"+area.getAreaName()+"】地区成功!");
} catch (Exception e) {
return ExceptionSupport.resolverResult("修改地区", this.getClass(), e);
}
}
@RequestMapping(path="listData",method=RequestMethod.POST)
@ResponseBody
public List<SysAreaEntity> listData(SysAreaCondition condition) {

@ -94,7 +94,7 @@ $('#dataGrid').dataGrid({
{header:'更新时间', name:'updateDate', index:'a.update_date', width:150, align:"center"},
{header:'操作', name:'actions', width:130, sortable:false, title:false, formatter: function(val, obj, row, act){
var actions = [];
actions.push('<a href="/js/a/sys/area/form?areaCode='+row.areaCode+'" class="btnList" title="编辑区域"><i class="fa fa-pencil"></i></a>&nbsp;');
actions.push('<a href="sys/area/update?areaCode='+row.areaCode+'" class="btnList" title="编辑区域"><i class="fa fa-pencil"></i></a>&nbsp;');
if (row.status == Global.STATUS_NORMAL){
actions.push('<a href="/js/a/sys/area/disable?areaCode='+row.areaCode+'" class="btnList" title="停用区域" data-confirm="确认要停用该区域吗?"><i class="glyphicon glyphicon-ban-circle"></i></a>&nbsp;');
}

@ -0,0 +1,229 @@
<!DOCTYPE html><html><head><meta charset="utf-8"><meta content="webkit" name="renderer"/><meta http-equiv="X-UA-Compatible"
content="IE=edge"><meta name="keywords" content="PoweredByJeeSiteV4.0"/><meta http-equiv="Cache-Control"
content="no-cache, no-store, must-revalidate"/><meta name="description" content="PoweredByJeeSiteV4.0"/><meta
content="no-cache" http-equiv="Pragma"/><meta http-equiv="Expires" content="0"/><meta
content="width=device-width, initial-scale=1, user-scalable=1" name="viewport"/>
<title>行政区划 - JeeSite Demo</title>
<script th:src="${setting.domain + 'global.min.js'}"></script>
<script th:src="${setting.domain + 'jquery/jquery-1.12.4.min.js'}"></script>
<script th:src="${setting.domain + 'jquery/jquery-migrate-1.4.1.min.js'}"></script>
<!--[if lt IE 9]><script src="/js/static/common/h5fix.min.js"></script><![endif]-->
<link rel="stylesheet" th:href="${setting.domain + 'fonts/font-icons.min.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'bootstrap/css/bootstrap.min.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'select2/4.0/select2.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'icheck/1.0/minimal/grey.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'adminlte/css/AdminLTE.min.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'common/jeesite.css'}">
<link rel="stylesheet" th:href="${setting.domain + 'common/common.css'}">
</head><body class="hold-transition ">
<div class="wrapper"><div class="main-content">
<div class="box box-main">
<div class="box-header">
<div class="box-title">
<i class="fa icon-map"></i> 编辑区域
</div>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
</div>
</div>
<form id="inputForm" th:action="${setting.domain + 'sys/area/update'}" method="post" class="form-horizontal">
<div class="box-body">
<div class="form-unit">基本信息</div>
<div class="row">
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4">上级区域:</label>
<div class="col-sm-8">
<div class="input-group treeselect" id="parentDiv" data-url="sys/area/treeData?excludeCode=710000">
<input id="parentCode" type="hidden" name="parentCode" th:value="${parentArea == null} ? '' : ${parentArea.areaCode}" class="isReset"/>
<input id="parentName" type="text" name="parentName" th:value="${parentArea == null} ? '' : ${parentArea.areaName}" class="form-control " readonly="readonly"
/><span class="input-group-btn"><a id="parentButton" href="javascript:" class="btn btn-default "><i class="fa fa-search"></i></a>
</span>
</div>
<script>
$("#parentButton,#parentName").click(function(){
if ($("#parentButton").hasClass("disabled")){
return true;
}
var options = {
type: 2,
maxmin: true,
shadeClose: true,
title: '上级区域',
area: ['300px', '400px'],
content: 'sys/treeselect',
contentFormData: {
url: $('#parentDiv').attr('data-url'),
checkbox: 'false',
expandLevel: '-1',
selectCodes: $("#parentCode").val(),
isReturnValue: 'false'
},
success: function(layero, index){
if ($(js.layer.window).width() < 300
|| $(js.layer.window).height() < 400){
js.layer.full(index);
}
},
btn: ['<i class="fa fa-check"></i> 确定'],
btn1: function(index, layero){
var win = js.layer.iframeWindow(index);
win.$('#keyword').val('').change(); var codes = [], names = [], nodes;
if ("false" == "true"){
nodes = win.tree.getCheckedNodes(true);
}else{
nodes = win.tree.getSelectedNodes();
}
for(var i=0; i<nodes.length; i++) {
var code = nodes[i]['false'=='true'?'value':'id'], name = nodes[i]['name'];
codes.push(code.replace(/^u_/g,''));
names.push(name.replace(/\([0-9]*\)/g,''));
break;
}
if(typeof treeselectCheck == 'function'){
if (!treeselectCheck('parent', nodes)){
return false;
}
}
$("#parentCode").val(codes.join(',')).change();
$("#parentName").val(names.join(',')).change();
try { $('#parentCode,#parentName').valid(); }catch(e){}
if(typeof treeselectCallback == 'function'){
treeselectCallback('parent', 'ok', index, layero, nodes);
}
}
};
options.btn.push('<i class="fa fa-eraser"></i> 清除');
options['btn'+options.btn.length] = function(index, layero){
$("#parentCode").val('').change();
$("#parentName").val('').change();
if(typeof treeselectCallback == 'function'){
treeselectCallback('parent', 'clear', index, layero);
}
};
options.btn.push('<i class="fa fa-close"></i> 关闭');
options['btn'+options.btn.length] = function(index, layero){
if(typeof treeselectCallback == 'function'){
treeselectCallback('parent', 'cancel', index, layero);
}
};
js.layer.open(options);
});
</script> </div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required ">*</span> 区域代码:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<input type="text" id="areaCode" name="areaCode" th:value="${area.areaCode}" maxlength="100" readonly="true" class="form-control required abc"/>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required ">*</span> 区域名称:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<input type="text" id="areaName" name="areaName" th:value="${area.areaName}" maxlength="100" class="form-control required "/>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required ">*</span> 区域类型:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<span id="areaType" class="icheck">
<label><input type="radio" id="areaType1" name="areaType"
value="0" blankOption="true" class="form-control required" th:checked="${area.areaType == '0'} ? true : false"> 国家</label><label><input type="radio" id="areaType2" name="areaType"
value="1" blankOption="true" class="form-control required" th:checked="${area.areaType == '1'} ? true : false"> 省份直辖市</label><label><input type="radio" id="areaType3" name="areaType"
value="2" blankOption="true" class="form-control required" th:checked="${area.areaType == '2'} ? true : false"> 地市</label><label><input type="radio" id="areaType4" name="areaType"
value="3" blankOption="true" class="form-control required" th:checked="${area.areaType == '3'} ? true : false"> 区县</label></span>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required ">*</span> 排序号:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<input type="text" id="treeSort" name="treeSort" th:value="${area.treeSort}" maxlength="10" class="form-control required digits"/>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<div class="form-group">
<label class="control-label col-sm-2" title="">
<span class="required hide">*</span> 备注信息:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<textarea id="remarks" name="remarks" rows="4" maxlength="500" class="form-control " th:utext="${area.remarks}"></textarea>
</div>
</div>
</div>
</div>
</div>
<div class="box-footer">
<div class="row">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-sm btn-primary" id="btnSubmit"><i class="fa fa-check"></i> 保 存</button>&nbsp;
<button type="button" class="btn btn-sm btn-default" id="btnCancel" onclick="js.closeCurrentTabPage()"><i class="fa fa-reply-all"></i> 关 闭</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<a id="scroll-up" href="#" class="btn btn-sm"><i class="fa fa-angle-double-up"></i></a>
<script th:src="${setting.domain + 'bootstrap/js/bootstrap.min.js'}"></script>
<script th:src="${setting.domain + 'select2/4.0/select2.js'}"></script>
<script th:src="${setting.domain + 'select2/4.0/i18n/zh_CN.js'}"></script>
<script th:src="${setting.domain + 'layer/3.1/layer.js'}"></script>
<script th:src="${setting.domain + 'my97/WdatePicker.js'}"></script>
<script th:src="${setting.domain + 'jquery-validation/1.16/jquery.validate.js'}"></script>
<script th:src="${setting.domain + 'jquery-validation/1.16/localization/messages_zh_CN.js'}"></script>
<script th:src="${setting.domain + 'jquery-validation/1.16/jquery.validate.extend.js'}"></script>
<script th:src="${setting.domain + 'common/jeesite.js'}"></script>
<script th:src="${setting.domain + 'common/i18n/jeesite_zh_CN.js'}"></script>
<script th:src="${setting.domain + 'common/common.js'}"></script>
<script>
$("#inputForm").validate({
submitHandler: function(form){
js.ajaxSubmitForm($(form), function(data){
js.showMessage(data.message);
if(data.code == 0){
js.closeCurrentTabPage(function(contentWindow){
contentWindow.$('#dataGrid').dataGrid('refreshTreeChildren',
$('#parentCode').val(), '710000');
});
}
}, "json");
}
});
//选择父级菜单回调方法
function treeselectCallback(id, act, index, layero){
if (id == 'parent' && (act == 'ok' || act == 'clear')){
// 创建并初始化下一个节点信息,如:排序号、默认值
$.get('/js/a/sys/area/createNextNode?parentCode='
+$('#parentCode').val(), function(data){
$('#treeSort').val(data.treeSort);
});
}
}
</script>
Loading…
Cancel
Save