main
tamguo 7 years ago
parent 4c00b00bb9
commit 557bc54d23

@ -5,6 +5,7 @@ import java.math.BigDecimal;
import java.util.Date;
import com.baomidou.mybatisplus.annotations.KeySequence;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
/**
@ -16,6 +17,7 @@ import com.baomidou.mybatisplus.annotations.TableName;
public class SysCompanyEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private String companyCode;
private String areaCode;
private String companyName;
@ -31,7 +33,7 @@ public class SysCompanyEntity implements Serializable {
private Boolean treeLeaf;
private BigDecimal treeLevel;
private String treeNames;
private BigDecimal treeSort;
private String treeSort;
private String treeSorts;
private String updateBy;
private Date updateDate;
@ -144,11 +146,11 @@ public class SysCompanyEntity implements Serializable {
this.treeNames = treeNames;
}
public BigDecimal getTreeSort() {
public String getTreeSort() {
return this.treeSort;
}
public void setTreeSort(BigDecimal treeSort) {
public void setTreeSort(String treeSort) {
this.treeSort = treeSort;
}

@ -2,6 +2,7 @@ package com.tamguo.modules.sys.service;
import java.util.List;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.service.IService;
import com.tamguo.modules.sys.model.SysAreaEntity;
import com.tamguo.modules.sys.model.condition.SysAreaCondition;
@ -10,4 +11,6 @@ public interface ISysAreaService extends IService<SysAreaEntity>{
List<SysAreaEntity> listData(SysAreaCondition condition);
JSONArray treeData(String excludeId);
}

@ -17,4 +17,7 @@ public interface ISysCompanyService extends IService<SysCompanyEntity>{
/** 根据ID查询公司*/
SysCompanyEntity selectByCode(String code);
/** 新建公司*/
void save(SysCompanyEntity company);
}

@ -1,10 +1,13 @@
package com.tamguo.modules.sys.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
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;
@ -22,4 +25,33 @@ public class SysAreaServiceImpl extends ServiceImpl<SysAreaMapper, SysAreaEntity
return sysAreaMapper.listData(condition);
}
@SuppressWarnings("unchecked")
@Override
public JSONArray treeData(String excludeId) {
List<SysAreaEntity> areaList = null;
if(StringUtils.isEmpty(excludeId)) {
areaList = sysAreaMapper.selectList(Condition.EMPTY);
}else {
areaList = sysAreaMapper.selectList(Condition.create().notLike("parent_codes", excludeId).ne("area_code", excludeId));
}
return turnZTreeData(areaList);
}
private JSONArray turnZTreeData(List<SysAreaEntity> areaList) {
if(areaList != null) {
JSONArray nodes = new JSONArray();
for(int i=0 ; i<areaList.size() ; i++) {
JSONObject node = new JSONObject();
SysAreaEntity area = areaList.get(i);
node.put("name", area.getAreaName());
node.put("id", area.getId());
node.put("pId", area.getParentCode());
node.put("title", area.getAreaName());
nodes.add(node);
}
return nodes;
}
return null;
}
}

@ -1,9 +1,12 @@
package com.tamguo.modules.sys.service.impl;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import com.alibaba.fastjson.JSONArray;
@ -14,6 +17,7 @@ import com.tamguo.modules.sys.dao.SysCompanyMapper;
import com.tamguo.modules.sys.model.SysCompanyEntity;
import com.tamguo.modules.sys.model.condition.SysCompanyCondition;
import com.tamguo.modules.sys.service.ISysCompanyService;
import com.tamguo.modules.sys.utils.ShiroUtils;
@Service
public class SysCompanyServiceImpl extends ServiceImpl<SysCompanyMapper, SysCompanyEntity> implements ISysCompanyService {
@ -61,4 +65,40 @@ public class SysCompanyServiceImpl extends ServiceImpl<SysCompanyMapper, SysComp
return null;
}
@Transactional(readOnly=false)
@Override
public void save(SysCompanyEntity company) {
company.setCreateBy(ShiroUtils.getUserCode());
company.setCreateDate(new Date());
company.setUpdateBy(ShiroUtils.getUserCode());
company.setUpdateDate(new Date());
company.setCompanyCode(company.getViewCode());
if(StringUtils.isEmpty(company.getParentCode())) {
company.setParentCode("0,");
company.setParentCodes("0,");
company.setTreeSorts(company.getTreeSort());
company.setTreeNames(company.getCompanyCode() + ",");
company.setTreeLeaf(true);
company.setTreeLevel(new BigDecimal(0));
}else {
SysCompanyEntity condition = new SysCompanyEntity();
condition.setCompanyCode(company.getParentCode());
SysCompanyEntity parentCompany = sysCompanyMapper.selectOne(condition);
company.setTreeLeaf(true);
company.setTreeLevel(parentCompany.getTreeLevel().add(new BigDecimal(1)));
company.setParentCodes(parentCompany.getParentCodes() + parentCompany.getCompanyCode() + ",");
company.setTreeSorts(parentCompany.getTreeSorts() + parentCompany.getTreeSort() + ",");
company.setTreeNames(parentCompany.getTreeNames() + parentCompany.getCompanyName() + ",");
// 更新
parentCompany.setTreeLeaf(false);
parentCompany.setUpdateBy(ShiroUtils.getUserCode());
parentCompany.setUpdateDate(new Date());
sysCompanyMapper.updateById(parentCompany);
}
sysCompanyMapper.insert(company);
}
}

@ -13,6 +13,7 @@ import com.alibaba.fastjson.JSONArray;
import com.tamguo.modules.sys.model.SysCompanyEntity;
import com.tamguo.modules.sys.model.condition.SysCompanyCondition;
import com.tamguo.modules.sys.service.ISysCompanyService;
import com.tamguo.modules.sys.utils.ExceptionSupport;
import com.tamguo.modules.sys.utils.Result;
@Controller
@ -20,7 +21,7 @@ import com.tamguo.modules.sys.utils.Result;
public class CompanyController {
private final String COMPANY_INDEX_PAGE = "modules/sys/company/index";
private final String COMPANY_DETAIL_PAGE = "modules/sys/company/detail";
private final String COMPANY_DETAIL_PAGE = "modules/sys/company/add";
@Autowired
ISysCompanyService iSysCompanyService;
@ -30,10 +31,10 @@ public class CompanyController {
return COMPANY_INDEX_PAGE;
}
@RequestMapping(path="detail")
public ModelAndView detail(String id , ModelAndView model) {
@RequestMapping(path="add")
public ModelAndView add(String parentCode , ModelAndView model) {
model.setViewName(COMPANY_DETAIL_PAGE);
model.addObject("id", id);
model.addObject("company", iSysCompanyService.selectById(parentCode));
return model;
}
@ -54,4 +55,15 @@ public class CompanyController {
public JSONArray treeData(String excludeId) {
return iSysCompanyService.treeData(excludeId);
}
@RequestMapping(path="save")
@ResponseBody
public Result save(SysCompanyEntity company) {
try {
iSysCompanyService.save(company);
return Result.result(0, null, "公司【"+company.getCompanyName()+"】保存成功!");
} catch (Exception e) {
return ExceptionSupport.resolverResult("保存公司", this.getClass(), e);
}
}
}

@ -7,6 +7,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSONArray;
import com.tamguo.modules.sys.model.SysAreaEntity;
import com.tamguo.modules.sys.model.condition.SysAreaCondition;
import com.tamguo.modules.sys.service.ISysAreaService;
@ -33,4 +34,11 @@ public class SysAreaController {
return list;
}
@RequestMapping(path="treeData")
@ResponseBody
public JSONArray treeData(String excludeId) {
return iSysAreaService.treeData(excludeId);
}
}

@ -0,0 +1,423 @@
<!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-fire"></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/company/save'}" 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/company/treeData?excludeCode=">
<input id="parentCode" type="hidden" name="parentCode" th:value="${company == null} ? '' : ${company.companyCode}" class="isReset"/>
<input id="parentName" type="text" name="parentName" th:value="${company == null} ? '' : ${company.companyName}" 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="companyName" name="companyName" value="" maxlength="200" class="form-control required "/>
</div>
</div>
</div>
<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="hidden" id="isNewRecord" name="isNewRecord" value="true"/>
<input type="hidden" id="companyCode" name="companyCode" value=""/>
<input type="text" id="viewCode" name="viewCode" value="" maxlength="64" 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="fullName" name="fullName" value="" maxlength="200" class="form-control required "/>
</div>
</div>
</div>
<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" value="" maxlength="10" class="form-control required digits"/>
</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 hide">*</span> 归属区域:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<div class="input-group treeselect" id="areaDiv" data-url="sys/area/treeData?">
<input id="areaCode" type="hidden" name="area.areaCode" value="" class="isReset"/>
<input id="areaName" type="text" name="area.areaName" value=""
class="form-control " readonly="readonly"
/><span class="input-group-btn"><a id="areaButton" href="javascript:"
class="btn btn-default "><i class="fa fa-search"></i></a>
</span>
</div>
<script>
$("#areaButton,#areaName").click(function(){
if ($("#areaButton").hasClass("disabled")){
return true;
}
var options = {
type: 2,
maxmin: true,
shadeClose: true,
title: '区域选择',
area: ['300px', '400px'],
content: 'sys/treeselect',
contentFormData: {
url: $('#areaDiv').attr('data-url'),
checkbox: 'false',
expandLevel: '-1',
selectCodes: $("#areaCode").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++) {
if (nodes[i].level == 0 && nodes[i].isParent){
js.showMessage("不能选择根节点("+nodes[i].name+")请重新选择。");
return false;
}
if (nodes[i].isParent){
js.showMessage("不能选择父节点("+nodes[i].name+")请重新选择。");
return false;
}
var code = nodes[i]['false'=='true'?'value':'id'], name = nodes[i]['name'];
var pNode = nodes[i].getParentNode();
while(!!pNode) {
name = pNode.name + '/' + name;
pNode = pNode.getParentNode();
}
codes.push(code.replace(/^u_/g,''));
names.push(name.replace(/\([0-9]*\)/g,''));
break;
}
if(typeof treeselectCheck == 'function'){
if (!treeselectCheck('area', nodes)){
return false;
}
}
$("#areaCode").val(codes.join(',')).change();
$("#areaName").val(names.join(',')).change();
try { $('#areaCode,#areaName').valid(); }catch(e){}
if(typeof treeselectCallback == 'function'){
treeselectCallback('area', 'ok', index, layero, nodes);
}
}
};
options.btn.push('<i class="fa fa-eraser"></i> 清除');
options['btn'+options.btn.length] = function(index, layero){
$("#areaCode").val('').change();
$("#areaName").val('').change();
if(typeof treeselectCallback == 'function'){
treeselectCallback('area', '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('area', 'cancel', index, layero);
}
};
js.layer.open(options);
});
</script> </div>
</div>
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required hide">*</span> 包含机构:<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<div class="input-group treeselect" id="companyOfficeListDiv" data-url="sys/office/treeData?">
<input id="companyOfficeListCode" type="hidden" name="" value="" class="isReset"/>
<input id="companyOfficeListName" type="text" name="" value=""
class="form-control " readonly="readonly"
/><span class="input-group-btn"><a id="companyOfficeListButton" href="javascript:"
class="btn btn-default "><i class="fa fa-search"></i></a>
</span>
</div>
<script>
$("#companyOfficeListButton,#companyOfficeListName").click(function(){
if ($("#companyOfficeListButton").hasClass("disabled")){
return true;
}
var options = {
type: 2,
maxmin: true,
shadeClose: true,
title: '机构选择',
area: ['300px', '400px'],
content: ctx + 'sys/treeselect',
contentFormData: {
url: $('#companyOfficeListDiv').attr('data-url'),
checkbox: 'true',
expandLevel: '-1',
selectCodes: $("#companyOfficeListCode").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 ("true" == "true"){
nodes = win.tree.getCheckedNodes(true);
}else{
nodes = win.tree.getSelectedNodes();
}
for(var i=0; i<nodes.length; i++) {
if (nodes[i].isParent){
continue;
}
if (nodes[i].level == 0 && nodes[i].isParent){
js.showMessage("不能选择根节点("+nodes[i].name+")请重新选择。");
return false;
}
if (nodes[i].isParent){
js.showMessage("不能选择父节点("+nodes[i].name+")请重新选择。");
return false;
}
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,''));
}
if(typeof treeselectCheck == 'function'){
if (!treeselectCheck('companyOfficeList', nodes)){
return false;
}
}
$("#companyOfficeListCode").val(codes.join(',')).change();
$("#companyOfficeListName").val(names.join(',')).change();
try { $('#companyOfficeListCode,#companyOfficeListName').valid(); }catch(e){}
if(typeof treeselectCallback == 'function'){
treeselectCallback('companyOfficeList', 'ok', index, layero, nodes);
}
}
};
options.btn.push('<i class="fa fa-eraser"></i> 清除');
options['btn'+options.btn.length] = function(index, layero){
$("#companyOfficeListCode").val('').change();
$("#companyOfficeListName").val('').change();
if(typeof treeselectCallback == 'function'){
treeselectCallback('companyOfficeList', '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('companyOfficeList', 'cancel', index, layero);
}
};
js.layer.open(options);
});
</script><input type="hidden" id="companyOfficeListJson" name="companyOfficeListJson" value=""/>
</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-10">
<textarea id="remarks" name="remarks" rows="4" maxlength="500" class="form-control "></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){
var companyOfficeData = $('#companyOfficeListCode').val().split(',');
$("#companyOfficeListJson").val(JSON.stringify(companyOfficeData));
js.ajaxSubmitForm($(form), function(data){
js.showMessage(data.message);
if(data.code == 0){
js.closeCurrentTabPage(function(contentWindow){
contentWindow.$('#dataGrid').dataGrid('refreshTreeChildren',
$('#parentCode').val(), '');
});
}
}, "json");
}
});
$('#companyName').change(function(){
if ($('#fullName').val()==''){
$('#fullName').val($(this).val());
}
});
// 选择父级菜单回调方法
function treeselectCallback(id, act, index, layero){
if (id == 'parent' && (act == 'ok' || act == 'clear')){
// 创建并初始化下一个节点信息,如:排序号、默认值
$.get('/js/a/sys/company/createNextNode?parentCode='
+$('#parentCode').val(), function(data){
$('#treeSort').val(data.treeSort);
});
}
}
</script>

@ -1,666 +0,0 @@
<!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-fire"></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" action="/js/a/sys/company/save" 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">
<input id="parentCode" type="hidden" name="parentCode" v-model="company.parentCode" class="isReset" />
<input id="parentName" type="text" name="parentName" v-model="company.parentName" class="form-control" readonly="readonly" />
<span class="input-group-btn">
<a id="parentButton" @click="showCompanyDialog" href="javascript:" class="btn btn-default ">
<i class="fa fa-search"></i>
</a>
</span>
</div>
</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="name" name="name"
v-model="company.name" maxlength="200" class="form-control required " @change="changeCompanyName"/>
</div>
</div>
</div>
<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="code" name="code" v-model="company.id" maxlength="64" 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="fullName" name="fullName" v-model="company.fullName" maxlength="200" class="form-control required " />
</div>
</div>
</div>
<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" value="30"
maxlength="10" class="form-control required digits" />
</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 hide">*</span> 归属区域:<i
class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<div class="input-group treeselect" id="areaDiv"
data-url="/js/a/sys/area/treeData">
<input id="areaCode" type="hidden" name="area.areaCode"
value="" class="isReset" /> <input id="areaName" type="text"
name="area.areaName" value="" class="form-control "
readonly="readonly" /><span class="input-group-btn"><a
id="areaButton" href="javascript:" class="btn btn-default "><i
class="fa fa-search"></i></a> </span>
</div>
<script>
$("#areaButton,#areaName")
.click(
function() {
if ($(
"#areaButton")
.hasClass(
"disabled")) {
return true;
}
var options = {
type : 2,
maxmin : true,
shadeClose : true,
title : '区域选择',
area : [
'300px',
'400px' ],
content : '/js/tags/treeselect',
contentFormData : {
url : $(
'#areaDiv')
.attr(
'data-url'),
checkbox : 'false',
expandLevel : '-1',
selectCodes : $(
"#areaCode")
.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++) {
if (nodes[i].level == 0
&& nodes[i].isParent) {
js
.showMessage("不能选择根节点("
+ nodes[i].name
+ ")请重新选择。");
return false;
}
if (nodes[i].isParent) {
js
.showMessage("不能选择父节点("
+ nodes[i].name
+ ")请重新选择。");
return false;
}
var code = nodes[i]['false' == 'true' ? 'value'
: 'id'], name = nodes[i]['name'];
var pNode = nodes[i]
.getParentNode();
while (!!pNode) {
name = pNode.name
+ '/'
+ name;
pNode = pNode
.getParentNode();
}
codes
.push(code
.replace(
/^u_/g,
''));
names
.push(name
.replace(
/\([0-9]*\)/g,
''));
break;
}
if (typeof treeselectCheck == 'function') {
if (!treeselectCheck(
'area',
nodes)) {
return false;
}
}
$(
"#areaCode")
.val(
codes
.join(','))
.change();
$(
"#areaName")
.val(
names
.join(','))
.change();
try {
$(
'#areaCode,#areaName')
.valid();
} catch (e) {
}
if (typeof treeselectCallback == 'function') {
treeselectCallback(
'area',
'ok',
index,
layero,
nodes);
}
}
};
options.btn
.push('<i class="fa fa-eraser"></i> 清除');
options['btn'
+ options.btn.length] = function(
index,
layero) {
$(
"#areaCode")
.val(
'')
.change();
$(
"#areaName")
.val(
'')
.change();
if (typeof treeselectCallback == 'function') {
treeselectCallback(
'area',
'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(
'area',
'cancel',
index,
layero);
}
};
js.layer
.open(options);
});
</script>
</div>
</div>
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title=""> <span
class="required hide">*</span> 包含机构:<i
class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<div class="input-group treeselect" id="companyOfficeListDiv"
data-url="/js/a/sys/office/treeData">
<input id="companyOfficeListCode" type="hidden" name=""
value="" class="isReset" /> <input
id="companyOfficeListName" type="text" name="" value=""
class="form-control " readonly="readonly" /><span
class="input-group-btn"><a
id="companyOfficeListButton" href="javascript:"
class="btn btn-default "><i class="fa fa-search"></i></a> </span>
</div>
<script>
$(
"#companyOfficeListButton,#companyOfficeListName")
.click(
function() {
if ($(
"#companyOfficeListButton")
.hasClass(
"disabled")) {
return true;
}
var options = {
type : 2,
maxmin : true,
shadeClose : true,
title : '机构选择',
area : [
'300px',
'400px' ],
content : '/js/tags/treeselect',
contentFormData : {
url : $(
'#companyOfficeListDiv')
.attr(
'data-url'),
checkbox : 'true',
expandLevel : '-1',
selectCodes : $(
"#companyOfficeListCode")
.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 ("true" == "true") {
nodes = win.tree
.getCheckedNodes(true);
} else {
nodes = win.tree
.getSelectedNodes();
}
for (var i = 0; i < nodes.length; i++) {
if (nodes[i].isParent) {
continue;
}
if (nodes[i].level == 0
&& nodes[i].isParent) {
js
.showMessage("不能选择根节点("
+ nodes[i].name
+ ")请重新选择。");
return false;
}
if (nodes[i].isParent) {
js
.showMessage("不能选择父节点("
+ nodes[i].name
+ ")请重新选择。");
return false;
}
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,
''));
}
if (typeof treeselectCheck == 'function') {
if (!treeselectCheck(
'companyOfficeList',
nodes)) {
return false;
}
}
$(
"#companyOfficeListCode")
.val(
codes
.join(','))
.change();
$(
"#companyOfficeListName")
.val(
names
.join(','))
.change();
try {
$(
'#companyOfficeListCode,#companyOfficeListName')
.valid();
} catch (e) {
}
if (typeof treeselectCallback == 'function') {
treeselectCallback(
'companyOfficeList',
'ok',
index,
layero,
nodes);
}
}
};
options.btn
.push('<i class="fa fa-eraser"></i> 清除');
options['btn'
+ options.btn.length] = function(
index,
layero) {
$(
"#companyOfficeListCode")
.val(
'')
.change();
$(
"#companyOfficeListName")
.val(
'')
.change();
if (typeof treeselectCallback == 'function') {
treeselectCallback(
'companyOfficeList',
'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(
'companyOfficeList',
'cancel',
index,
layero);
}
};
js.layer
.open(options);
});
</script>
<input type="hidden" id="companyOfficeListJson"
name="companyOfficeListJson" value="" />
</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-10">
<textarea id="remarks" name="remarks" rows="4" maxlength="500"
class="form-control "></textarea>
</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" @click="submit()">
<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>
<!-- VUE -->
<script th:src="${setting.domain + 'vue/vue.min.js'}"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
var vm = new Vue({
el:'#inputForm',
data:{
company:{
}
},
methods: {
submit:function(){
$("#inputForm").validate({
submitHandler: function(form){
var companyOfficeData = $('#companyOfficeListCode').val().split(',');
$("#companyOfficeListJson").val(JSON.stringify(companyOfficeData));
js.ajaxSubmitForm($(form), function(data){
js.showMessage(data.message);
if(data.result == Global.TRUE){
js.closeCurrentTabPage(function(contentWindow){
contentWindow.$('#dataGrid').dataGrid('refreshTreeChildren',$('#parentCode').val(), 'SDJN');
});
}
}, "json");
}
});
},
getCompany:function(code){
axios.get(ctx + "sys/company/info/"+code).then(function(response){
vm.company = response.data.result;
})
},
changeCompanyName:function(){
if(vm.company.fullName == ''){
Vue.set(vm.company , 'fullName' , vm.company.name);
}
},
showCompanyDialog:function(){
if ($("#parentButton").hasClass("disabled")) {
return true;
}
var options = {
type : 2,
maxmin : true,
shadeClose : true,
title : '上级公司',
area : ['300px','400px' ],
content : ctx + 'sys/treeselect',
contentFormData : {
url : 'sys/company/treeData?excludeId=' + vm.company.id,
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;
}
}
vm.company.parentCode = codes.join(',');
vm.company.parentName = names.join(',');
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);
}
},
watch:{
}
});
var id = '[[${id}]]';
if(!/^(undefined|null|\s*)?$/.test(id)){
vm.getCompany(id);
}
</script>

@ -28,7 +28,7 @@ content="width=device-width, initial-scale=1, user-scalable=1" name="viewport"/>
<a href="#" class="btn btn-default" id="btnRefreshTree" title="刷新"><i class="fa fa-refresh"></i> 刷新</a>
<a href="#" class="btn btn-default" id="btnExpandTreeNode" title="展开一级"><i class="fa fa-angle-double-down"></i> 展开</a>
<a href="#" class="btn btn-default" id="btnCollapseTreeNode" title="折叠全部"><i class="fa fa-angle-double-up"></i> 折叠</a>
<a th:href="${setting.domain + 'sys/company/detail'}" class="btn btn-default btnTool" title="新增公司"><i class="fa fa-plus"></i> 新增</a>
<a th:href="${setting.domain + 'sys/company/add'}" class="btn btn-default btnTool" title="新增公司"><i class="fa fa-plus"></i> 新增</a>
</div>
</div>
<div class="box-body">
@ -107,7 +107,7 @@ $('#dataGrid').dataGrid({
actions.push('<a href="/js/a/sys/company/enable?companyCode='+row.companyCode+'" class="btnList" title="启用公司" data-confirm="确认要启用该公司吗?"><i class="glyphicon glyphicon-ok-circle"></i></a>&nbsp;');
}
actions.push('<a href="/js/a/sys/company/delete?companyCode='+row.companyCode+'" class="btnList" title="删除公司" data-confirm="确认要删除该公司及所有子公司吗?" data-deltreenode="'+row.id+'"><i class="fa fa-trash-o"></i></a>&nbsp;');
actions.push('<a href="/js/a/sys/company/form?parentCode='+row.id+'" class="btnList" title="新增下级公司"><i class="fa fa-plus-square"></i></a>&nbsp;');
actions.push('<a href="sys/company/add?parentCode='+row.id+'" class="btnList" title="新增下级公司"><i class="fa fa-plus-square"></i></a>&nbsp;');
return actions.join('');
}}
],

Loading…
Cancel
Save