From d8b80bb0c09f35ca67091ec863baeb922d032844 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期一, 25 十二月 2023 13:59:01 +0800
Subject: [PATCH] #
---
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/TagService.java | 2
zy-asrs-common/src/main/java/com/zy/asrs/common/utils/TreeUtils.java | 24 ++
zy-asrs-common/src/main/java/com/zy/asrs/common/web/BaseController.java | 2
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Tag.java | 6
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Mat.java | 8
zy-asrs-wms/src/main/webapp/static/js/tag/tag.js | 50 +++-
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/TagServiceImpl.java | 5
zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MatController.java | 37 +++
zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/TagController.java | 28 +-
zy-asrs-wms/src/main/webapp/views/tag/tag.html | 412 +++++++++++++++++++++++++----------------
zy-asrs-common/src/main/java/com/zy/asrs/common/utils/MatExcelListener.java | 8
11 files changed, 371 insertions(+), 211 deletions(-)
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/utils/MatExcelListener.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/utils/MatExcelListener.java
index 5632f3c..231555a 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/utils/MatExcelListener.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/utils/MatExcelListener.java
@@ -27,12 +27,14 @@
private int total = 0;
private Long userId;
+ private Long hostId;
public MatExcelListener() {
}
- public MatExcelListener(Long userId) {
+ public MatExcelListener(Long userId, Long hostId) {
this.userId = userId;
+ this.hostId = hostId;
}
/**
@@ -64,7 +66,7 @@
if (!Cools.isEmpty(excel.getPriClass()) && !Cools.isEmpty(excel.getSecClass())) {
Tag priTag = tagService.getOne(new LambdaQueryWrapper<Tag>().eq(Tag::getName, excel.getPriClass()).eq(Tag::getLevel, 2));
if (priTag == null) {
- Tag top = tagService.getTop();
+ Tag top = tagService.getTop(hostId);
NodeUtils nodeUtils = new NodeUtils();
nodeUtils.executePath(top.getId());
priTag = new Tag(
@@ -124,7 +126,7 @@
}
tagId = secTag.getId();
} else {
- tagId = tagService.getTop().getId();
+ tagId = tagService.getTop(hostId).getId();
}
// 鍟嗗搧
Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, excel.getMatnr()));
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/utils/TreeUtils.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/utils/TreeUtils.java
index 12dd474..43a8b3f 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/utils/TreeUtils.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/utils/TreeUtils.java
@@ -24,10 +24,10 @@
/**
* 鑾峰彇鏍戝浘鏁版嵁缁撴瀯
*/
- @Cacheable(cacheNames="tagTree",key="#id")
- public ArrayList<Map> getTree(String id){
+ @Cacheable(cacheNames = "tagTree", key = "#id")
+ public ArrayList<Map> getTree(Long id, Long hostId) {
ArrayList<Map> result = new ArrayList<>();
- Tag tag = tagService.getById(id);
+ Tag tag = tagService.getOne(new LambdaQueryWrapper<Tag>().eq(Tag::getId, id).eq(Tag::getHostId, hostId));
// 涓昏妭鐐�
Map<String, Object> map = new HashMap<>();
map.put("title", tag.getName());
@@ -49,7 +49,7 @@
List<Tag> tags = tagService.list(
new LambdaQueryWrapper<Tag>()
.eq(Tag::getParentId, parent.getId())
- .eq(Tag::getStatus, "1"));
+ .eq(Tag::getStatus, 1));
for (Tag tag : tags) {
Map<String, Object> map = new HashMap<>();
map.put("title", tag.getName());
@@ -62,6 +62,22 @@
}
}
+ /**
+ * 閫掑綊鑾峰彇鑺傜偣浠ュ強瀛愯妭鐐规暟鎹�
+ */
+ public void getTagIdList(Long id, List<Long> nodes) {
+ if (!nodes.contains(id)) {
+ nodes.add(id);
+ }
+ List<Tag> tags = tagService.list(new LambdaQueryWrapper<Tag>().eq(Tag::getParentId, id).eq(Tag::getStatus, 1));
+ for (Tag tag : tags) {
+ if (!nodes.contains(tag.getId())) {
+ nodes.add(tag.getId());
+ }
+ getTagIdList(tag.getId(), nodes);
+ }
+ }
+
// -------------------------------------------------------------------------------------------------------
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/web/BaseController.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/web/BaseController.java
index da8a7f0..7a7572a 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/web/BaseController.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/web/BaseController.java
@@ -122,7 +122,7 @@
}
protected Tag getOriginTag(){
- return tagService.getTop();
+ return tagService.getTop(getHostId());
}
}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Mat.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Mat.java
index 68c3062..faca236 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Mat.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Mat.java
@@ -255,6 +255,12 @@
@ApiModelProperty(value= "澶囨敞")
private String memo;
+ /**
+ * 浠撳簱ID
+ */
+ @ApiModelProperty(value= "浠撳簱ID")
+ private Long hostId;
+
public Mat() {}
public Mat(String uuid, Long tagId, String matnr, String maktx, String name, String specs, String model, String color, String brand, String unit, Double price, String sku, Double units, String barcode, String origin, String manu, String manuDate, String itemNum, Double safeQty, Double weight, Double length, Double volume, String threeCode, String supp, String suppCode, Integer beBatch, String deadTime, Integer deadWarn, Integer source, Integer inspect, Integer danger, Integer status, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo) {
@@ -341,7 +347,7 @@
TagService tagService = SpringUtils.getBean(TagService.class);
Tag tag = tagService.getById(this.tagId);
if (!Cools.isEmpty(tag)){
- return String.valueOf(tag.getId());
+ return String.valueOf(tag.getName());
}
return null;
}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Tag.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Tag.java
index 2b2e16f..ee0ed79 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Tag.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Tag.java
@@ -145,6 +145,12 @@
@ApiModelProperty(value= "澶囨敞")
private String memo;
+ /**
+ * 浠撳簱ID
+ */
+ @ApiModelProperty(value= "浠撳簱ID")
+ private Long hostId;
+
public Tag() {}
public Tag(String uuid, String name, Long parentId, String parentName, String path, String pathName, Integer type, String leading, String img, String brief, Integer count, Integer level, Integer sort, Integer status, Date createTime, Long createBy, Date updateTime, Long updateBy, String memo) {
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/TagService.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/TagService.java
index 1ab1cba..7743937 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/TagService.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/TagService.java
@@ -5,6 +5,6 @@
public interface TagService extends IService<Tag> {
- Tag getTop();
+ Tag getTop(Long hostId);
}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/TagServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/TagServiceImpl.java
index 5ebfb62..25ac1a6 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/TagServiceImpl.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/TagServiceImpl.java
@@ -12,8 +12,8 @@
public class TagServiceImpl extends ServiceImpl<TagMapper, Tag> implements TagService {
@Override
- public synchronized Tag getTop() {
- Tag top = this.getOne(new LambdaQueryWrapper<Tag>().eq(Tag::getLevel, 1));
+ public synchronized Tag getTop(Long hostId) {
+ Tag top = this.getOne(new LambdaQueryWrapper<Tag>().eq(Tag::getLevel, 1).eq(Tag::getHostId, hostId));
if (top == null) {
top = new Tag();
top.setName("鍏ㄩ儴");
@@ -21,6 +21,7 @@
top.setLevel(1);
top.setStatus(1);
top.setSort(0);
+ top.setHostId(hostId);
Integer insert = this.baseMapper.insert(top);
if (insert == 0) {
throw new CoolException("鏈嶅姟鍣ㄥ紓甯�");
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MatController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MatController.java
index a38d839..3b95db1 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MatController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MatController.java
@@ -1,7 +1,9 @@
package com.zy.asrs.wms.controller;
+import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zy.asrs.common.utils.TreeUtils;
import com.zy.asrs.common.wms.entity.Mat;
import com.zy.asrs.common.wms.service.MatService;
import com.zy.asrs.framework.annotations.ManagerAuth;
@@ -10,6 +12,7 @@
import com.zy.asrs.framework.domain.KeyValueVo;
import com.zy.asrs.framework.common.DateUtils;
import com.zy.asrs.common.web.BaseController;
+import com.zy.asrs.framework.exception.CoolException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -20,6 +23,8 @@
@Autowired
private MatService matService;
+ @Autowired
+ private TreeUtils treeUtils;
@RequestMapping(value = "/mat/{id}/auth")
@ManagerAuth
@@ -32,8 +37,10 @@
public R page(@RequestParam(defaultValue = "1") Integer curr,
@RequestParam(defaultValue = "10") Integer limit,
@RequestParam(required = false) String condition,
- @RequestParam(required = false) String timeRange) {
+ @RequestParam(required = false) String timeRange,
+ @RequestParam Map<String, Object> param) {
LambdaQueryWrapper<Mat> wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(Mat::getHostId, getHostId());
if (!Cools.isEmpty(condition)) {
wrapper.like(Mat::getId, condition);
}
@@ -42,6 +49,19 @@
wrapper.ge(Mat::getCreateTime, DateUtils.convert(range[0]));
wrapper.le(Mat::getCreateTime, DateUtils.convert(range[1]));
}
+ Object tagId = param.get("tag_id");
+ ArrayList<Long> nodes = new ArrayList<>();
+ if (Cools.isEmpty(tagId)) {
+ tagId = getOriginTag().getId();
+ }
+ treeUtils.getTagIdList(Long.parseLong(tagId.toString()), nodes);
+ wrapper.in(Mat::getTagId, nodes);
+ if (!Cools.isEmpty(param.get("matnr"))) {
+ wrapper.eq(Mat::getMatnr, param.get("matnr"));
+ }
+ if (!Cools.isEmpty(param.get("maktx"))) {
+ wrapper.eq(Mat::getMaktx, param.get("maktx"));
+ }
return R.ok(matService.page(new Page<>(curr, limit), wrapper));
}
@@ -49,6 +69,7 @@
@RequestMapping(value = "/mat/add/auth")
@ManagerAuth
public R add(Mat mat) {
+ mat.setHostId(getHostId());
matService.save(mat);
return R.ok();
}
@@ -65,9 +86,15 @@
@RequestMapping(value = "/mat/delete/auth")
@ManagerAuth
- public R delete(@RequestParam(value="ids[]") Long[] ids){
- for (Long id : ids){
- matService.removeById(id);
+ public R delete(@RequestParam String param){
+ List<Mat> list = JSONArray.parseArray(param, Mat.class);
+ if (Cools.isEmpty(list)){
+ return R.error();
+ }
+ for (Mat entity : list){
+ if (!matService.remove(new LambdaQueryWrapper<>(entity))) {
+ throw new CoolException("鍒犻櫎澶辫触锛岃鑱旂郴绠$悊鍛�");
+ }
}
return R.ok();
}
@@ -77,6 +104,7 @@
public R query(String condition) {
LambdaQueryWrapper<Mat> wrapper = new LambdaQueryWrapper<>();
wrapper.like(Mat::getId, condition);
+ wrapper.eq(Mat::getHostId, getHostId());
Page<Mat> page = matService.page(new Page<>(0, 10), wrapper);
List<Map<String, Object>> result = new ArrayList<>();
for (Mat mat : page.getRecords()){
@@ -93,6 +121,7 @@
public R getDataKV(@RequestParam(required = false) String condition) {
List<KeyValueVo> vos = new ArrayList<>();
LambdaQueryWrapper<Mat> wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(Mat::getHostId, getHostId());
if (!Cools.isEmpty(condition)) {
wrapper.like(Mat::getId, condition);
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/TagController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/TagController.java
index 07169b2..b9527f6 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/TagController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/TagController.java
@@ -50,26 +50,24 @@
@RequestMapping(value = "/tag/page/auth")
@ManagerAuth
- public R page(@RequestParam(defaultValue = "1") Integer curr,
- @RequestParam(defaultValue = "10") Integer limit,
- @RequestParam(required = false) String condition,
- @RequestParam(required = false) String timeRange) {
+ public R page(@RequestParam(defaultValue = "1")Integer curr,
+ @RequestParam(defaultValue = "10")Integer limit,
+ @RequestParam(required = false)String orderByField,
+ @RequestParam(required = false)String orderByType,
+ @RequestParam Map<String, Object> param) {
+ Long hostId = getHostId();
LambdaQueryWrapper<Tag> wrapper = new LambdaQueryWrapper<>();
- if (!Cools.isEmpty(condition)) {
- wrapper.like(Tag::getId, condition);
- }
- if (!Cools.isEmpty(timeRange)) {
- String[] range = timeRange.split(RANGE_TIME_LINK);
- wrapper.ge(Tag::getCreateTime, DateUtils.convert(range[0]));
- wrapper.le(Tag::getCreateTime, DateUtils.convert(range[1]));
- }
- return R.ok(tagService.page(new Page<>(curr, limit), wrapper));
+ wrapper.eq(Tag::getHostId, hostId);
+ excludeTrash(param);
+ return R.parse("0-鎿嶄綔鎴愬姛").add(tagService.list(wrapper));
}
@RequestMapping(value = "/tag/add/auth")
@ManagerAuth
public R add(Tag tag) {
+ tag.setHostId(getHostId());
+ tag.setStatus(1);
tagService.save(tag);
return R.ok();
}
@@ -124,7 +122,7 @@
@PostMapping(value = "/tag/tree/auth")
@ManagerAuth
public R tree(@RequestParam(required = false, defaultValue = "") String condition) throws IOException, ClassNotFoundException {
- ArrayList<Map> tree = treeUtils.getTree(String.valueOf(getOriginTag().getId()));
+ ArrayList<Map> tree = treeUtils.getTree(getOriginTag().getId(), getHostId());
// 娣辨嫹璐�
List<Map> result = ListUtils.deepCopy(tree);
if (!Cools.isEmpty(condition)) {
@@ -206,7 +204,7 @@
@ManagerAuth(memo = "鍟嗗搧妗f鏁版嵁瀵煎叆")
@Transactional
public R matExcelImport(MultipartFile file) throws IOException {
- MatExcelListener listener = new MatExcelListener(getUserId());
+ MatExcelListener listener = new MatExcelListener(getUserId(), getHostId());
EasyExcel.read(file.getInputStream(), MatExcel.class, listener).sheet().doRead();
return R.ok("鎴愬姛鍚屾"+listener.getTotal()+"鏉″晢鍝佹暟鎹�");
}
diff --git a/zy-asrs-wms/src/main/webapp/static/js/tag/tag.js b/zy-asrs-wms/src/main/webapp/static/js/tag/tag.js
index b45a4f3..e3a8065 100644
--- a/zy-asrs-wms/src/main/webapp/static/js/tag/tag.js
+++ b/zy-asrs-wms/src/main/webapp/static/js/tag/tag.js
@@ -2,14 +2,14 @@
var pageCount = 0;
layui.config({
base: baseUrl + "/static/layui/lay/modules/"
-}).use(['table','laydate', 'form', 'admin', 'xmSelect'], function(){
- var table = layui.table;
+}).use(['treeTable','laydate', 'form', 'admin', 'xmSelect'], function(){
var $ = layui.jquery;
var layer = layui.layer;
var layDate = layui.laydate;
var form = layui.form;
var admin = layui.admin;
var xmSelect = layui.xmSelect;
+ var table = layui.treeTable;
// 鏁版嵁娓叉煋
tableIns = table.render({
@@ -24,28 +24,21 @@
height: 'full-120',
cols: [[
{type: 'checkbox'}
- ,{field: 'id', align: 'center',title: 'ID'}
- ,{field: 'uuid', align: 'center',title: '缂栧彿'}
- ,{field: 'name', align: 'center',title: '鍚嶇О'}
- ,{field: 'parentId', align: 'center',title: '鐖剁骇'}
- ,{field: 'parentName', align: 'center',title: '鐖剁骇鍚嶇О'}
- ,{field: 'path', align: 'center',title: '鍏宠仈璺緞'}
- ,{field: 'pathName', align: 'center',title: '鍏宠仈璺緞鍚�'}
+ ,{type: 'numbers'}
+ ,{field: 'name', align: 'left',title: '鍚嶇О', minWidth: 150}
+ // ,{field: 'uuid', align: 'center',title: '缂栧彿'}
,{field: 'type$', align: 'center',title: '绫诲瀷'}
,{field: 'leading', align: 'center',title: '璐熻矗浜�'}
- ,{field: 'img', align: 'center',title: '鍥剧墖'}
- ,{field: 'brief', align: 'center',title: '绠�瑕佹弿杩�'}
- ,{field: 'count', align: 'center',title: '鏁伴噺'}
- ,{field: 'level', align: 'center',title: '绛夌骇'}
+ ,{field: 'img', align: 'center',title: '鍥剧墖', hide: true}
+ // ,{field: 'brief', align: 'center',title: '绠�瑕佹弿杩�'}
+ // ,{field: 'count', align: 'center',title: '鏁伴噺'}
,{field: 'sort', align: 'center',title: '鎺掑簭'}
,{field: 'status$', align: 'center',title: '鐘舵��'}
- ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
- ,{field: 'createBy$', align: 'center',title: '娣诲姞浜哄憳'}
,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
- ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'}
- ,{field: 'memo', align: 'center',title: '澶囨敞'}
+ ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳', hide: true}
+ ,{field: 'memo', align: 'center',title: '澶囨敞', hide: true}
- ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
+ ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:150}
]],
request: {
pageName: 'curr',
@@ -166,6 +159,7 @@
form.val('detail', mData);
layDateRender(mData);
form.on('submit(editSubmit)', function (data) {
+ data.field.parentId = insXmSel.getValue('valueStr');
var loadIndex = layer.load(2);
$.ajax({
url: baseUrl+"/tag/"+(mData?'update':'add')+"/auth",
@@ -187,6 +181,26 @@
})
return false;
});
+ // 娓叉煋涓嬫媺鏍�
+ var insXmSel = xmSelect.render({
+ el: '#tagParentSel',
+ height: '250px',
+ data: tableIns.options.data,
+ initValue: mData ? [mData.parentId] : [],
+ model: {label: {type: 'text'}},
+ prop: {
+ name: 'name',
+ value: 'id'
+ },
+ radio: true,
+ clickClose: true,
+ tree: {
+ show: true,
+ indent: 15,
+ strict: false,
+ expandedKeys: false
+ }
+ });
$(layero).children('.layui-layer-content').css('overflow', 'visible');
layui.form.render('select');
}
diff --git a/zy-asrs-wms/src/main/webapp/views/tag/tag.html b/zy-asrs-wms/src/main/webapp/views/tag/tag.html
index c4a0524..5da7fc5 100644
--- a/zy-asrs-wms/src/main/webapp/views/tag/tag.html
+++ b/zy-asrs-wms/src/main/webapp/views/tag/tag.html
@@ -9,208 +9,296 @@
<link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
<link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
<link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <style>
+ #detail {
+ padding: 25px 30px 0 0;
+ }
+ .ew-tree-table-box {
+ height: 100%;
+ }
+ </style>
</head>
<body>
+<!-- 姝f枃寮�濮� -->
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-card-body">
- <div class="layui-form toolbar" id="search-box">
- <div class="layui-form-item">
- <div class="layui-inline">
- <div class="layui-input-inline">
- <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
- </div>
- </div>
- <div class="layui-inline" style="width: 300px">
- <div class="layui-input-inline">
- <input class="layui-input layui-laydate-range" name="timeRange" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
- </div>
- </div>
- <div class="layui-inline"> 
- <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
- <i class="layui-icon"></i>鎼滅储
- </button>
- <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
- <i class="layui-icon"></i>閲嶇疆
- </button>
- </div>
- </div>
- </div>
- <table class="layui-hide" id="tag" lay-filter="tag"></table>
+ <!-- 鏁版嵁琛ㄦ牸 -->
+ <table id="tag"></table>
</div>
</div>
</div>
-<script type="text/html" id="toolbar">
- <div class="layui-btn-container">
- <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
- <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
- <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
- </div>
-</script>
-
<script type="text/html" id="operate">
<a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
- <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
+ <a class="layui-btn layui-btn-danger layui-btn-xs btn-del" lay-event="del">鍒犻櫎</a>
</script>
-<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
-<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
-<script type="text/javascript" src="../../static/js/tag/tag.js" charset="utf-8"></script>
-</body>
<!-- 琛ㄥ崟寮圭獥 -->
<script type="text/html" id="editDialog">
- <div id="detail" lay-filter="detail" class="layui-form admin-form model-form">
+ <form id="detail" lay-filter="detail" class="layui-form">
<input name="id" type="hidden">
+ <input name="uuid" type="hidden">
+ <input name="path" type="hidden">
+ <input name="pathName" type="hidden">
+ <input name="img" type="hidden">
+ <input name="brief" type="hidden">
+ <input name="level" type="hidden">
+ <input name="count" type="hidden">
+ <input name="createTime$" type="hidden">
+ <input name="createBy" type="hidden">
+ <input name="updateTime$" type="hidden">
+ <input name="updateBy" type="hidden">
<div class="layui-row">
- <div class="layui-col-md12">
+
+ <div class="layui-col-md6">
+
<div class="layui-form-item">
- <label class="layui-form-label">缂栧彿: </label>
+ <label class="layui-form-label">涓婄骇鑿滃崟</label>
<div class="layui-input-block">
- <input class="layui-input" name="uuid" placeholder="璇疯緭鍏ョ紪鍙�">
+ <div id="tagParentSel" class="ew-xmselect-tree"></div>
</div>
</div>
+
<div class="layui-form-item">
- <label class="layui-form-label">鍚嶇О: </label>
+ <label class="layui-form-label">绫诲瀷</label>
<div class="layui-input-block">
- <input class="layui-input" name="name" placeholder="璇疯緭鍏ュ悕绉�">
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">鐖剁骇: </label>
- <div class="layui-input-block">
- <input class="layui-input" name="parentId" placeholder="璇疯緭鍏ョ埗绾�">
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">鐖剁骇鍚嶇О: </label>
- <div class="layui-input-block">
- <input class="layui-input" name="parentName" placeholder="璇疯緭鍏ョ埗绾у悕绉�">
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">鍏宠仈璺緞: </label>
- <div class="layui-input-block">
- <input class="layui-input" name="path" placeholder="璇疯緭鍏ュ叧鑱旇矾寰�">
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">鍏宠仈璺緞鍚�: </label>
- <div class="layui-input-block">
- <input class="layui-input" name="pathName" placeholder="璇疯緭鍏ュ叧鑱旇矾寰勫悕">
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">绫诲瀷: </label>
- <div class="layui-input-block">
- <select name="type">
+ <select name="type" lay-vertype="tips">
<option value="">璇烽�夋嫨绫诲瀷</option>
- <option value="1">鐩掕</option>
- <option value="2">琚嬭</option>
<option value="0">鍏朵粬</option>
</select>
</div>
</div>
+
<div class="layui-form-item">
- <label class="layui-form-label">璐熻矗浜�: </label>
+ <label class="layui-form-label">璐熻矗浜�</label>
<div class="layui-input-block">
- <input class="layui-input" name="leading" placeholder="璇疯緭鍏ヨ礋璐d汉">
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">鍥剧墖: </label>
- <div class="layui-input-block">
- <input class="layui-input" name="img" placeholder="璇疯緭鍏ュ浘鐗�">
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">绠�瑕佹弿杩�: </label>
- <div class="layui-input-block">
- <input class="layui-input" name="brief" placeholder="璇疯緭鍏ョ畝瑕佹弿杩�">
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">鏁伴噺: </label>
- <div class="layui-input-block">
- <input class="layui-input" name="count" placeholder="璇疯緭鍏ユ暟閲�">
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">绛夌骇: </label>
- <div class="layui-input-block">
- <input class="layui-input" name="level" placeholder="璇疯緭鍏ョ瓑绾�">
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">鎺掑簭: </label>
- <div class="layui-input-block">
- <input class="layui-input" name="sort" placeholder="璇疯緭鍏ユ帓搴�">
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">鐘舵��: </label>
- <div class="layui-input-block">
- <select name="status">
- <option value="">璇烽�夋嫨鐘舵��</option>
- <option value="1">姝e父</option>
- <option value="0">绂佺敤</option>
- </select>
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">娣诲姞鏃堕棿: </label>
- <div class="layui-input-block">
- <input class="layui-input" name="createTime" id="createTime$" placeholder="璇疯緭鍏ユ坊鍔犳椂闂�">
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">娣诲姞浜哄憳: </label>
- <div class="layui-input-block cool-auto-complete">
- <input class="layui-input" name="createBy" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" style="display: none">
- <input id="createBy$" name="createBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" onfocus=this.blur()>
- <div class="cool-auto-complete-window">
- <input class="cool-auto-complete-window-input" data-key="userQueryBycreateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
- <select class="cool-auto-complete-window-select" data-key="userQueryBycreateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
- </select>
- </div>
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">淇敼鏃堕棿: </label>
- <div class="layui-input-block">
- <input class="layui-input" name="updateTime" id="updateTime$" placeholder="璇疯緭鍏ヤ慨鏀规椂闂�">
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">淇敼浜哄憳: </label>
- <div class="layui-input-block cool-auto-complete">
- <input class="layui-input" name="updateBy" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" style="display: none">
- <input id="updateBy$" name="updateBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" onfocus=this.blur()>
- <div class="cool-auto-complete-window">
- <input class="cool-auto-complete-window-input" data-key="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
- <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
- </select>
- </div>
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">澶囨敞: </label>
- <div class="layui-input-block">
- <input class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�">
+ <input name="leading" placeholder="璇疯緭鍏ヨ礋璐d汉" class="layui-input">
</div>
</div>
- </div>
+ </div>
+
+ <div class="layui-col-md6">
+
+ <div class="layui-form-item">
+ <label class="layui-form-label layui-form-required">褰掔被鍚嶇О</label>
+ <div class="layui-input-block">
+ <input name="name" placeholder="璇疯緭鍏ュ綊绫诲悕绉�" class="layui-input" lay-vertype="tips" lay-verify="required" required="">
+ </div>
+ </div>
+
+ <div class="layui-form-item">
+ <label class="layui-form-label">鎺掑簭</label>
+ <div class="layui-input-block">
+ <input name="sort" placeholder="璇疯緭鍏ユ帓搴�" class="layui-input">
+ </div>
+ </div>
+
+ <div class="layui-form-item">
+ <label class="layui-form-label">澶囨敞</label>
+ <div class="layui-input-block">
+ <input name="memo" placeholder="璇疯緭鍏ュ娉�" class="layui-input">
+ </div>
+ </div>
+
+ </div>
</div>
<hr class="layui-bg-gray">
<div class="layui-form-item text-right">
<button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
<button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
</div>
- </div>
+ </form>
</script>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+
+<script>
+ layui.config({
+ base: baseUrl + "/static/layui/lay/modules/"
+ }).use(['form','treeTable', 'admin', 'xmSelect'], function() {
+ var $ = layui.jquery;
+ var layer = layui.layer;
+ var form = layui.form;
+ var admin = layui.admin;
+ var treeTable = layui.treeTable;
+ var xmSelect = layui.xmSelect;
+ var tbDataList = [];
+
+ var insTb = treeTable.render({
+ elem: '#tag',
+ url: baseUrl+'/tag/page/auth',
+ headers: {token: localStorage.getItem('token')},
+ height: 'full-200',
+ toolbar: ['<p>',
+ '<button lay-event="add" class="layui-btn layui-btn-sm icon-btn"><i class="layui-icon"></i>娣诲姞</button> ',
+ '<button lay-event="del" class="layui-btn layui-btn-sm layui-btn-danger icon-btn"><i class="layui-icon"></i>鍒犻櫎</button>',
+ '</p>'].join(''),
+ tree: {
+ iconIndex: 2, // 鎶樺彔鍥炬爣鏄剧ず鍦ㄧ鍑犲垪
+ isPidData: true, // 鏄惁鏄痠d銆乸id褰㈠紡鏁版嵁
+ idName: 'id', // id瀛楁鍚嶇О
+ pidName: 'parentId' // pid瀛楁鍚嶇О
+ },
+ cols: [[
+ {type: 'checkbox'}
+ ,{type: 'numbers'}
+ ,{field: 'name', align: 'left',title: '鍚嶇О', minWidth: 150}
+ // ,{field: 'uuid', align: 'center',title: '缂栧彿'}
+ ,{field: 'type$', align: 'center',title: '绫诲瀷'}
+ ,{field: 'leading', align: 'center',title: '璐熻矗浜�'}
+ ,{field: 'img', align: 'center',title: '鍥剧墖', hide: true}
+ // ,{field: 'brief', align: 'center',title: '绠�瑕佹弿杩�'}
+ // ,{field: 'count', align: 'center',title: '鏁伴噺'}
+ ,{field: 'sort', align: 'center',title: '鎺掑簭'}
+ ,{field: 'status$', align: 'center',title: '鐘舵��'}
+ ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
+ ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳', hide: true}
+ ,{field: 'memo', align: 'center',title: '澶囨敞', hide: true}
+
+ ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:150}
+ ]],
+ done: function (data) {
+ $('.ew-tree-table-box').css('height', '100%');
+ insTb.expandAll();
+ tbDataList = data;
+ }
+ });
+
+ /* 琛ㄦ牸澶村伐鍏锋爮鐐瑰嚮浜嬩欢 */
+ treeTable.on('toolbar(tag)', function (obj) {
+ if (obj.event === 'add') { // 娣诲姞
+ showEditModel();
+ } else if (obj.event === 'del') { // 鍒犻櫎
+ var checkRows = insTb.checkStatus();
+ if (checkRows.length === 0) {
+ layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+ return;
+ }
+ var ids = checkRows.map(function (d) {
+ if (!d.LAY_INDETERMINATE) {
+ return d.id;
+ } else {
+ return null;
+ }
+ });
+ doDel({ids: ids});
+ }
+ });
+
+ /* 琛ㄦ牸鎿嶄綔鍒楃偣鍑讳簨浠� */
+ treeTable.on('tool(tag)', function (obj) {
+ if (obj.event === 'edit') { // 淇敼
+ showEditModel(obj.data);
+ } else if (obj.event === 'del') { // 鍒犻櫎
+ doDel(obj);
+ }
+ });
+
+ /* 鏄剧ず琛ㄥ崟寮圭獥 */
+ function showEditModel(mData) {
+ admin.open({
+ type: 1,
+ area: '600px',
+ title: (mData ? '淇敼' : '娣诲姞') + '褰掔被',
+ content: $('#editDialog').html(),
+ success: function (layero, dIndex) {
+ // 鍥炴樉琛ㄥ崟鏁版嵁
+ form.val('detail', mData);
+ // 琛ㄥ崟鎻愪氦浜嬩欢
+ form.on('submit(editSubmit)', function (data) {
+ data.field.parentId = insXmSel.getValue('valueStr');
+ var loadIndex = layer.load(2);
+ $.ajax({
+ url: baseUrl+"/tag/"+(mData?'update':'add')+"/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: data.field,
+ method: 'POST',
+ success: function (res) {
+ layer.close(loadIndex);
+ if (res.code === 200){
+ layer.close(dIndex);
+ layer.msg(res.msg, {icon: 1});
+ insTb.refresh();
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ }else {
+ layer.msg(res.msg, {icon: 2});
+ }
+ }
+ })
+ return false;
+ });
+ // 娓叉煋涓嬫媺鏍�
+ console.log(mData)
+ var insXmSel = xmSelect.render({
+ el: '#tagParentSel',
+ height: '250px',
+ data: insTb.options.data,
+ initValue: mData ? [mData.parentId] : [],
+ model: {label: {type: 'text'}},
+ prop: {
+ name: 'name',
+ value: 'id'
+ },
+ radio: true,
+ clickClose: true,
+ tree: {
+ show: true,
+ indent: 15,
+ strict: false,
+ expandedKeys: false
+ }
+ });
+ // 寮圭獥涓嶅嚭鐜版粴鍔ㄦ潯
+ $(layero).children('.layui-layer-content').css('overflow', 'visible');
+ layui.form.render('select');
+ }
+ });
+ }
+
+ /* 鍒犻櫎 */
+ function doDel(obj) {
+ layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
+ skin: 'layui-layer-admin',
+ shade: .1
+ }, function (i) {
+ layer.close(i);
+ var loadIndex = layer.load(2);
+ var ids;
+ if (obj.data) {
+ ids = [];
+ ids[0] = obj.data.id;
+ } else {
+ ids = obj.ids;
+ }
+ $.ajax({
+ url: baseUrl+"/tag/delete/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: {ids: ids},
+ method: 'POST',
+ success: function (res) {
+ layer.close(loadIndex);
+ if (res.code === 200){
+ layer.msg(res.msg, {icon: 1});
+ insTb.refresh();
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ } else {
+ layer.msg(res.msg, {icon: 2});
+ }
+ }
+ })
+ });
+ }
+
+ });
+</script>
+</body>
</html>
--
Gitblit v1.9.1