first commit

This commit is contained in:
云泽网
2025-07-27 21:42:34 +08:00
commit c1cce5ccb4
2779 changed files with 340042 additions and 0 deletions
@@ -0,0 +1,170 @@
{layout name="layout2" /}
<style>
.layui-form-label {
color: #6a6f6c;
width: 100px;
}
.layui-input-block {
margin-left: 130px;
}
.tips{
color: red;
}
.goods-li {
float: left;
opacity: 1;
position: relative;
}
.goods-img {
width: 80px;
height: 80px;
padding: 4px;
}
.goods-img-del-x {
position: absolute;
z-index: 100;
top: -4px;
right: -2px;
width: 20px;
height: 20px;
font-size: 16px;
line-height: 16px;
color: #fff;
text-align: center;
cursor: pointer;
background: hsla(0, 0%, 60%, .6);
border-radius: 10px;
}
</style>
<div class="layui-form" lay-filter="layuiadmin-form-user_level" id="layuiadmin-form-user_level" style="padding: 20px 30px 0 0;">
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>等级名称:</label>
<div class="layui-input-inline">
<input type="text" name="name" lay-verify="required" lay-verType="tips" placeholder="请输入等级名称" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>成长值:</label>
<div class="layui-input-inline">
<input type="text" name="growth_value" lay-verify="required" lay-verType="tips" placeholder="请输入成长值" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>等级图标:</label>
<div class="layui-input-inline">
<div class="" style="height:80px;line-height:80px">
<input name="image" type="hidden" value="">
<div class="goods-img-add"></div>
</div>
<div class=" layui-form-mid layui-word-aux" style="white-space: nowrap">建议尺寸:100*100像素,jpgjpegpng图片类型</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>等级背景图:</label>
<div class="layui-input-inline">
<div class="" style="height:80px;line-height:80px">
<input name="background_image" type="hidden" value="">
<div class="goods-img-add"></div>
</div>
<div class=" layui-form-mid layui-word-aux" style="white-space: nowrap">建议尺寸:800*500像素,jpgjpegpng图片类型</div>
</div>
</div>
<!--等级折扣-->
<div class="layui-form-item">
<label class="layui-form-label">等级折扣:</label>
<div class="layui-input-inline">
<input type="number" name="discount" lay-verType="tips" autocomplete="off" class="layui-input">
<div class=" layui-form-mid layui-word-aux" style="white-space: nowrap">等级享受的折扣,填写0~10,例如7.5折表示100元商品只需支付75元。留空或者填0表示不打折。</div>
</div>
<div class="layui-form-mid" style="white-space: nowrap"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">等级权益:</label>
<div class="layui-input-block">
<select name="privilege" xm-select="privilege" xm-select-search="" xm-select-search-type="dl" xm-select-skin="normal">
{foreach $privilege_list as $val}
<option value="{$val.id}">{$val.name} </option>
{/foreach}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">等级说明:</label>
<div class="layui-input-block">
<textarea name="remark" placeholder="请输入等级说明" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item layui-hide">
<input type="button" lay-submit lay-filter="add-user_level-submit" id="add-user_level-submit" value="确认">
</div>
</div>
<style>
.layui-form-label {
width: 100px;
}
.layui-input-block {
margin-left: 130px;
}
</style>
<link rel="stylesheet" href="/static/plug/formSelects/formSelects-v4.css" />
<script src="/static/plug/formSelects/formSelects-v4.js" type="text/javascript" charset="utf-8"></script>
<script>
layui.config({
version:"{$front_version}",
base: '/static/plug/layui-admin/dist/layuiadmin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'form','like'], function(){
var $ = layui.$
,form = layui.form
,like = layui.like
,formSelects = layui.formSelects;
//上传图片
like.imageUpload('.goods-img-add', function (uri, element) {
if(uri.length>1){
layer.msg('最多最能选中1张图片');
return;
}
var html = '<div class="goods-li">\n' +
'<img class="goods-img" ' +
'src="' + uri[0] + '">' +
'<a class="goods-img-del-x" style="display: none">x</a>' +
'</div>';
element.prev().val(like.getUrlFileName(uri[0], '{$storageUrl}'));
element.parent().append(html);
element.css('display','none');
}, true);
//删除图片
$(document).on('click', '.goods-img-del-x', function () {
$(this).parent().siblings('input').val('');
$(this).parent().prev().css('display','block');
$(this).parent().remove();
});
//显示图片
$(document).on('click', '.goods-img', function () {
var image = $(this).attr('src');
like.showImg(image,600);
});
// 删除按钮的显示与隐藏
$(document).on('mouseover', '.goods-img', function () {
$(this).next().show();
});
$(document).on('mouseout', '.goods-img', function () {
$(this).next().hide();
});
$(document).on('mouseover', '.goods-img-del-x', function () {
$(this).show();
});
$(document).on('mouseout', '.goods-img-del-x', function () {
$(this).hide();
});
//三级联动
formSelects.value('privilege','');
})
</script>
@@ -0,0 +1,191 @@
{layout name="layout2" /}
<style>
.layui-form-label {
color: #6a6f6c;
width: 100px;
}
.layui-input-block {
margin-left: 130px;
}
.tips{
color: red;
}
.goods-li {
float: left;
opacity: 1;
position: relative;
}
.goods-img {
width: 80px;
height: 80px;
padding: 4px;
}
.goods-img-del-x {
position: absolute;
z-index: 100;
top: -4px;
right: -2px;
width: 20px;
height: 20px;
font-size: 16px;
line-height: 16px;
color: #fff;
text-align: center;
cursor: pointer;
background: hsla(0, 0%, 60%, .6);
border-radius: 10px;
}
</style>
<div class="layui-form" lay-filter="layuiadmin-form-user_level" id="layuiadmin-form-user_level" style="padding: 20px 30px 0 0;">
<input type="hidden" name="id" value="{$detail.id}">
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>等级名称:</label>
<div class="layui-input-inline">
<input type="text" name="name" value="{$detail.name}" lay-verify="required" lay-verType="tips" placeholder="请输入等级名称" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>成长值:</label>
<div class="layui-input-inline">
<input type="text" name="growth_value" value="{$detail.growth_value}" lay-verify="required" lay-verType="tips" placeholder="请输入成长值" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item ">
<label class="layui-form-label"><span class="tips">*</span>等级图标:</label>
<div class="layui-inline" >
<div class="" style="height:80px;line-height:80px">
<input name="image" type="hidden" value="{$detail.image}" >
{if !empty($detail.image)}
<div class="goods-img-add" style="display: none" ></div>
<div class="goods-li">
<img class="goods-img" src="{$detail.abs_image}">
<a class="goods-img-del-x" style="display: none">x</a>
</div>
{else}
<div class="goods-img-add" ></div>
{/if}
</div>
<div class=" layui-form-mid layui-word-aux" style="white-space: nowrap">建议尺寸:100*100像素,jpgjpegpng图片类型</div>
</div>
</div>
<div class="layui-form-item ">
<label class="layui-form-label"><span class="tips">*</span>等级背景图片:</label>
<div class="layui-inline" >
<div class="" style="height:80px;line-height:80px">
<input name="background_image" type="hidden" value="{$detail.background_image}" >
{if !empty($detail.background_image)}
<div class="goods-img-add" style="display: none" ></div>
<div class="goods-li">
<img class="goods-img" src="{$detail.abs_background_image}">
<a class="goods-img-del-x" style="display: none">x</a>
</div>
{else}
<div class="goods-img-add" ></div>
{/if}
</div>
<div class=" layui-form-mid layui-word-aux" style="white-space: nowrap">建议尺寸:800*500像素,jpgjpegpng图片类型</div>
</div>
</div>
<!--等级折扣-->
<div class="layui-form-item">
<label class="layui-form-label">等级折扣:</label>
<div class="layui-input-inline">
<input type="number" name="discount" value="{$detail.discount}" lay-verType="tips" autocomplete="off" class="layui-input">
<div class=" layui-form-mid layui-word-aux" style="white-space: nowrap">等级享受的折扣,填写0~10,例如7.5折表示100元商品只需支付75元。留空或者填0表示不打折。</div>
</div>
<div class="layui-form-mid" style="white-space: nowrap"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">等级权益:</label>
<div class="layui-input-block">
<select name="privilege" xm-select="privilege" xm-select-search="" xm-select-search-type="dl" xm-select-skin="normal">
{foreach $privilege_list as $val}
<option value="{$val.id}">{$val.name} </option>
{/foreach}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">等级说明:</label>
<div class="layui-input-block">
<textarea name="remark" placeholder="请输入等级说明" class="layui-textarea">{$detail.remark}</textarea>
</div>
</div>
<div class="layui-form-item layui-hide">
<input type="button" lay-submit lay-filter="edit-user_level-submit" id="edit-user_level-submit" value="确认">
</div>
</div>
<style>
.layui-form-label {
width: 100px;
}
.layui-input-block {
margin-left: 130px;
}
</style>
<link rel="stylesheet" href="/static/plug/formSelects/formSelects-v4.css" />
<script src="/static/plug/formSelects/formSelects-v4.js" type="text/javascript" charset="utf-8"></script>
<script>
layui.config({
version:"{$front_version}",
base: '/static/plug/layui-admin/dist/layuiadmin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'form','like'], function(){
var $ = layui.$
,form = layui.form
,like = layui.like
,formSelects = layui.formSelects,
select_id = [{$detail.privilege}];
//上传图片
like.imageUpload('.goods-img-add', function (uri, element) {
if(uri.length>1){
layer.msg('最多最能选中1张图片');
return;
}
var html = '<div class="goods-li">\n' +
'<img class="goods-img" ' +
'src="' + uri[0] + '">' +
'<a class="goods-img-del-x" style="display: none">x</a>' +
'</div>';
element.prev().val(like.getUrlFileName(uri[0], '{$storageUrl}'));
element.parent().append(html);
element.css('display','none');
}, true);
//删除图片
$(document).on('click', '.goods-img-del-x', function () {
$(this).parent().siblings('input').val('');
$(this).parent().prev().css('display','block');
$(this).parent().remove();
});
//显示图片
$(document).on('click', '.goods-img', function () {
var image = $(this).attr('src');
like.showImg(image,600);
});
// 删除按钮的显示与隐藏
$(document).on('mouseover', '.goods-img', function () {
$(this).next().show();
});
$(document).on('mouseout', '.goods-img', function () {
$(this).next().hide();
});
$(document).on('mouseover', '.goods-img-del-x', function () {
$(this).show();
});
$(document).on('mouseout', '.goods-img-del-x', function () {
$(this).hide();
});
//三级联动
formSelects.value('privilege',select_id);
})
</script>
@@ -0,0 +1,220 @@
{layout name="layout1" /}
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-card-body">
<div class="layui-collapse like-layui-collapse" lay-accordion="" style="border:1px dashed #c4c4c4">
<div class="layui-colla-item">
<h2 class="layui-colla-title like-layui-colla-title" style="background-color: #fff">操作提示</h2>
<div class="layui-colla-content layui-show">
<p>*会员根据设定好的等级成长值升级,等级成长值通过日常消费积累。</p>
<p>*删除会员等级时,会重新调整对应会员的等级,请谨慎操作。</p>
</div>
</div>
</div>
</div>
<div class="layui-tab layui-tab-card" lay-filter="tab-all">
<div class="layui-card">
<div class="layui-card-body">
<div style="padding-bottom: 10px;" class="add">
<button class="layui-btn layui-btn-sm layuiadmin-btn-user_level {$view_theme_color}" data-type="add">新增会员等级</button>
</div>
<table id="user_level-lists" lay-filter="user_level-lists"></table>
<script type="text/html" id="image">
<img src="{{d.image}}" style="height:auto;width: auto" class="image-show">
</script>
<script type="text/html" id="background">
<img src="{{d.background_image}}" style="height:auto;width: auto" class="image-show">
</script>
<script type="text/html" id="user_level-operation">
<a class="layui-btn layui-btn-normal layui-btn-sm" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-sm" lay-event="del">删除</a>
</script>
</div>
</div>
</div>
</div>
</div>
<style>
.layui-table-cell {
height: auto;
}
</style>
<script>
layui.config({
version:"{$front_version}",
base: '/static/plug/layui-admin/dist/layuiadmin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index','table','like','form'], function(){
var $ = layui.$
,form = layui.form
,table = layui.table
,like = layui.like
,element = layui.element;
//图片放大
$(document).on('click', '.image-show', function () {
var src = $(this).attr('src');
like.showImg(src,600);
});
$('.layui-btn.layuiadmin-btn-user_level').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
layui.define(['table', 'form'], function(exports){
var $ = layui.$
,table = layui.table
,form = layui.form;
//管理员管理
table.render({
id:'user_level-lists'
,elem: '#user_level-lists'
,url: '{:url("user_level/lists")}' //模拟接口
,cols: [[
{field: 'name', title: '等级名称',width:160}
,{field: 'growth_value',width:160, title: '成长值'}
,{field: 'icon',width:160, title: '等级图标',toolbar:'#image'}
,{field: 'background_image',width:160, title: '等级背景图片',toolbar:'#background'}
,{field: 'privilege_list',width:160, title: '等级权益'}
,{field: 'remark',width:160, title:'等级说明'}
,{fixed: 'right', title: '操作', width:160,align: 'center', toolbar: '#user_level-operation'}
]]
,page:true
,text: {none: '暂无数据!'}
,parseData: function(res){ //将原始数据解析成 table 组件所规定的数据
return {
"code":res.code,
"msg":res.msg,
"count": res.data.count, //解析数据长度
"data": res.data.list, //解析数据列表
};
}
,done: function(res, curr, count){
// 解决操作栏因为内容过多换行问题
$(".layui-table-main tr").each(function (index, val) {
$($(".layui-table-fixed-l .layui-table-body tbody tr")[index]).height($(val).height());
$($(".layui-table-fixed-r .layui-table-body tbody tr")[index]).height($(val).height());
});
}
});
});
//事件
var active = {
add: function(){
var index = layer.open({
type: 2
,title: '添加会员等级'
,content: '{:url("user_level/add")}'
,area: ['90%', '90%']
,btn: ['保存', '取消']
,maxmin: true
,yes: function(index, layero){
var iframeWindow = window['layui-layer-iframe'+ index]
,submitID = 'add-user_level-submit'
,submit = layero.find('iframe').contents().find('#'+ submitID);
//监听提交
iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
var field = data.field;
like.ajax({
url:'{:url("user_level/add")}',
data:field,
type:"post",
success:function(res)
{
if(res.code == 1)
{
layui.layer.msg(res.msg, {
offset: '15px'
, icon: 1
, time: 1000
});
layer.close(index); //关闭弹层
table.reload('user_level-lists'); //数据刷新
}
}
});
});
submit.trigger('click');
}
});
}
}
table.on('tool(user_level-lists)', function(obj) {
var id = obj.data.id;
if (obj.event === 'edit') {
var index = layer.open({
type: 2
, title: '编辑会员等级'
, content: '{:url("user_level/edit")}?id=' + id
, area: ['90%', '90%']
, btn: ['保存', '取消']
, maxmin: true
, yes: function (index, layero) {
var iframeWindow = window['layui-layer-iframe' + index]
, submitID = 'edit-user_level-submit'
, submit = layero.find('iframe').contents().find('#' + submitID);
//监听提交
iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
var field = data.field;
like.ajax({
url: '{:url("user_level/edit")}',
data: field,
type: "post",
success: function (res) {
if (res.code == 1) {
layui.layer.msg(res.msg, {
offset: '15px'
, icon: 1
, time: 1000
});
layer.close(index); //关闭弹层
table.reload('user_level-lists'); //数据刷新
}
}
});
});
submit.trigger('click');
}
});
}
if (obj.event === 'del') {
var name = obj.data.name;
layer.confirm('确定删除会员等级:<span style="color: red">' + name + '</span>' , function (index) {
like.ajax({
url: '{:url("user_level/del")}',
data: {id: id},
type: "post",
success: function (res) {
if (res.code == 1) {
layui.layer.msg(res.msg, {
offset: '15px'
, icon: 1
, time: 1000
});
layer.close(index); //关闭弹层
table.reload('user_level-lists'); //数据刷新
}
}
});
layer.close(index);
})
}
})
});
</script>