初始上传

This commit is contained in:
2026-04-04 17:27:12 +08:00
parent 4d80d28eb4
commit b7e11774ee
11191 changed files with 1588469 additions and 0 deletions

View File

@@ -0,0 +1,153 @@
<style type="text/css">
.tree-line {
padding: 10px 0;
background: #ededed;
margin-bottom: 2px;
line-height: 1.8;
border: 1px solid #000;
}
.tree-line .layui-form {
padding-left: 10px !important;
}
.tree-line .layui-form-checkbox {
margin: 0 10px !important;
vertical-align: middle;
}
.group-tree-block .layui-table tbody tr:hover {
background-color: white;
}
</style>
<div class="layui-form form-wrap" lay-filter="save">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>角色名称:</label>
<div class="layui-input-block">
<input autocomplete="off" class="layui-input len-long" lay-verify="required" name="group_name" placeholder="请输入角色名称" required type="text">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">适用门店:</label>
<div class="layui-input-block">
<div class="layui-input-inline">
<select name="store_id" lay-filter="store_id">
{foreach $store_list as $val}
<option value="{$val.store_id}">{$val.store_name}</option>
{/foreach}
</select>
</div>
</div>
<div class="word-aux"><p>适用门店添加后无法修改,请慎重选择</p></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">描述:</label>
<div class="layui-input-block">
<textarea class="layui-textarea len-long" maxlength="150" name="desc" placeholder="请输入角色的相关描述"></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>设置权限:</label>
<div class="layui-input-block">
<div class="layui-input-inline group-tree-block" id="tree_box"></div>
</div>
</div>
<!-- 表单操作 -->
<div class="form-row">
<button class="layui-btn" lay-filter="save" lay-submit>保存</button>
<button class="layui-btn layui-btn-primary" onclick="backCashierUserGroup()">返回</button>
</div>
</div>
<script>
var all_tree_data = JSON.parse('{:json_encode($tree_data, JSON_UNESCAPED_UNICODE)}');
var tree_data = JSON.parse('{:json_encode($tree_data, JSON_UNESCAPED_UNICODE)}'),
form,
repeat_flag = false; //防重复标识
var store_list = {:json_encode($store_list)};
if(store_list.length > 0 && store_list[0].tree_data){
tree_data = store_list[0].tree_data;
}
layui.use('form', function () {
form = layui.form;
form.render();
form.on('select(store_id)', function (data){
let store_id = data.value;
store_list.forEach((item)=>{
if(item.store_id == store_id){
if(item.tree_data){
tree_data = ns.deepclone(item.tree_data);
}else{
tree_data = ns.deepclone(all_tree_data);
}
initTreeBox();
}
})
})
form.on('submit(save)', function (data) {
data.field.store_name = $("select[name=store_id] option:selected").text();
var obj = $("#tree_box input:checked"),
group_array = [];
for (var i = 0; i < obj.length; i++) {
group_array.push(obj.eq(i).val());
}
data.field.menu_array = group_array.toString();
if (repeat_flag) return;
repeat_flag = true;
$.ajax({
type: "POST",
dataType: "JSON",
url: ns.url("cashier://shop/user/addgroup"),
data: data.field,
success: function (res) {
repeat_flag = false;
if (res.code == 0) {
layer.confirm('添加成功', {
title: '操作提示',
btn: ['返回列表', '继续添加'],
closeBtn: 0,
yes: function (index, layero) {
location.hash = ns.hash("cashier://shop/user/group")
layer.close(index);
},
btn2: function (index, layero) {
listenerHash(); // 刷新页面
layer.close(index);
}
})
} else {
layer.msg(res.message);
}
}
});
});
form.verify({
title: function (value) {
if (value.length == 0) {
return '请输入角色名称';
}
}
});
});
function backCashierUserGroup() {
location.hash = ns.hash("cashier://shop/user/group");
}
</script>
<script src="SHOP_JS/tree.js?time=20250315"></script>

View File

@@ -0,0 +1,122 @@
<style type="text/css">
.tree-line{padding:10px 0;background:#ededed;margin-bottom:2px;line-height: 1.8;}
.tree-line .layui-form{padding-left: 10px !important;}
.tree-line .layui-form-checkbox{margin:0 10px !important;vertical-align:middle;}
.group-tree-block .layui-table tbody tr:hover {background-color: white;}
</style>
<div class="layui-form form-wrap">
<div class="layui-form-item">
<label class="layui-form-label">创建用户:</label>
<div class="layui-input-inline">
{php}$create_user_data = json_decode($group_info['create_user_data'], true);{/php}
{:join(' -> ', array_column($create_user_data, 'name'))}
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>角色名称:</label>
<div class="layui-input-block">
<input name="group_name" type="text" lay-verify="required" class="layui-input len-long" placeholder="请输入角色名称" value="{$group_info.group_name}" autocomplete="off">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">适用门店:</label>
<div class="layui-input-block">
<div class="layui-input-inline">
{$group_info.store_name}
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">描述:</label>
<div class="layui-input-block">
<textarea name ="desc" class="layui-textarea len-long" placeholder="请输入角色的相关描述" maxlength="150">{$group_info.desc}</textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>设置权限:</label>
<div class="layui-input-block">
<div class="layui-input-inline group-tree-block" id="tree_box"></div>
</div>
</div>
<!-- 操作 -->
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
<button class="layui-btn layui-btn-primary" onclick="backCashierUserGroup()">返回</button>
</div>
<!-- 隐藏域 -->
<input name="group_id" type="text" class="layui-input layui-hide" value="{$group_id}">
</div>
<script>
var tree_data = JSON.parse('{:json_encode($tree_data, JSON_UNESCAPED_UNICODE)}'),
form,
repeat_flag = false;//防重复标识
layui.use('form', function() {
form = layui.form;
form.render();
form.on('submit(save)', function (data) {
var obj = $("#tree_box input:checked"),
group_array = [];
for (var i = 0; i < obj.length; i++) {
group_array.push(obj.eq(i).val());
}
data.field.menu_array = group_array.toString();
if (repeat_flag) return;
repeat_flag = true;
$.ajax({
type: "POST",
dataType: "JSON",
url: ns.url("cashier://shop/user/editgroup"),
data: data.field,
success: function (res) {
repeat_flag = false;
if (res.code == 0) {
layer.confirm('编辑成功', {
title:'操作提示',
btn: ['返回列表', '继续编辑'],
yes: function(index, layero) {
location.hash = ns.hash("cashier://shop/user/group")
layer.close(index);
},
btn2: function(index, layero) {
layer.close(index);
}
})
}else{
layer.msg(res.message);
}
}
});
});
form.verify({
title: function (value) {
if (value.length == 0) {
return '请输入角色名称';
}
}
});
});
function backCashierUserGroup() {
location.hash = ns.hash("cashier://shop/user/group");
}
</script>
<script src="SHOP_JS/tree.js"></script>

View File

@@ -0,0 +1,152 @@
<style>
.system-tag {padding: 3px 5px;font-size: 12px;border: 1px solid #ddd;color: #999;border-radius: 4px;margin-left: 3px;}
</style>
<!-- 搜索框 -->
<div class="single-filter-box">
<button class="layui-btn" onclick="add()">添加角色</button>
<div class="layui-form">
<div class="layui-input-inline">
<input type="text" name="search_keys" placeholder="请输入角色名称" autocomplete="off" class="layui-input">
<button type="button" class="layui-btn layui-btn-primary" lay-filter="search" lay-submit>
<i class="layui-icon">&#xe615;</i>
</button>
</div>
</div>
</div>
<!-- 列表 -->
<table id="group_list" lay-filter="group_list"></table>
<!-- 工具栏操作 -->
<script type="text/html" id="operation">
<div class="table-btn">
{{# if(d.keyword != ''){ }}
<span class="cursor">系统角色不可编辑</span>
{{# }else if(curr_user_group_ids.indexOf(d.group_id) > -1){ }}
<span class="cursor">所属角色不可编辑</span>
{{# }else{ }}
<a class="layui-btn" lay-event="edit">编辑</a>
<a class="layui-btn" lay-event="delete">删除</a>
{{# } }}
</div>
</script>
<script>
var curr_user_group_ids = {:json_encode($curr_user_group_ids)};
layui.use('form', function() {
var table,
form = layui.form,
repeat_flag = false; //防重复标识
form.render();
/**
* 加载表格
*/
table = new Table({
elem: '#group_list',
url: ns.url("cashier://shop/user/group"), //数据接口
cols: [
[{
field: 'group_name',
title: '角色名称',
width: '20%',
unresize: 'false',
templet: function (data) {
var h = data.group_name;
if (data.keyword) h += '<span class="system-tag">系统</span>'
return h;
}
}, {
field: 'desc',
title: '描述',
width: '40%',
unresize: 'false',
},{
field: 'store_name',
title: '适用门店',
width: '12%',
unresize: 'false',
},{
field: 'create_user_data',
title: '创建用户',
width: '8%',
unresize: 'false',
templet: function (data){
let create_user_data = JSON.parse(data.create_user_data);
if(create_user_data.length > 0){
return '<div class="text">'+create_user_data[create_user_data.length-1].name+'</div>';
}else{
return '';
}
}
}, {
title: '操作',
toolbar: '#operation',
unresize: 'false',
align:'right'
}]
]
});
/**
* 监听工具栏操作
*/
table.tool(function(obj) {
var data = obj.data;
switch (obj.event) {
case 'edit': //编辑
location.hash = ns.hash("cashier://shop/user/editGroup", {"group_id": data.group_id});
break;
case 'delete': //删除
deleteGroup(data.group_id);
break;
}
});
/**
* 删除
*/
function deleteGroup(group_id) {
layer.confirm('确定要删除该员工角色吗?', function(index) {
if (repeat_flag) return false;
repeat_flag = true;
layer.close(index);
$.ajax({
dataType: 'JSON',
type: 'POST',
url: ns.url("cashier://shop/user/deleteGroup"),
data: {group_id},
success: function(res) {
layer.msg(res.message);
repeat_flag = false;
if (res.code == 0) {
table.reload();
}
}
});
}, function () {
layer.close();
repeat_flag = false;
});
}
/**
* 搜索功能
*/
form.on('submit(search)', function(data) {
table.reload({
page: {
curr: 1
},
where: data.field
});
});
});
function add() {
location.hash = ns.hash("cashier://shop/user/addGroup");
}
</script>