后台:
添加服务逻辑的编辑 接口: 添加服务列表 添加服务详情 添加服务点赞、收藏
This commit is contained in:
@@ -14,147 +14,51 @@
|
||||
<div class="layui-form layui-card-header layuiadmin-card-header-auto">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">会员信息:</label>
|
||||
<div class="layui-input-inline" style="width: 200px;">
|
||||
<select name="keyword_type" id="keyword_type">
|
||||
<option value="id">会员ID</option>
|
||||
<option value="sn">会员编号</option>
|
||||
|
||||
<option value="nickname">会员昵称</option>
|
||||
<option value="mobile">会员手机号码</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width: 200px;">
|
||||
<input type="text" id="keyword" name="keyword" placeholder="请输入关键词" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">会员等级:</label>
|
||||
<div class="layui-input-inline">
|
||||
<select id="level" name="level" style="height:80px;width: 80px" >
|
||||
<option value="" selected>全部</option>
|
||||
<option value="0">无等级</option>
|
||||
{foreach $level_list as $item }
|
||||
<option value="{$item.id}">{$item.name}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">会员分组:</label>
|
||||
<div class="layui-input-inline">
|
||||
<select id="group_id" name="group_id" style="height:80px;width: 80px" >
|
||||
<option value="">全部</option>
|
||||
{foreach $group_list as $item }
|
||||
<option value="{$item.id}">{$item.name}</option>
|
||||
{/foreach}
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">消费金额:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" class="layui-input" name="total_amount_start" autocomplete="off">
|
||||
</div>
|
||||
<div class="layui-input-inline" style="margin-right: 5px;width: 10px;">
|
||||
<label class="layui-form-mid">-</label>
|
||||
</div>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" class="layui-input" name="total_amount_end" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">注册时间:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" class="layui-input" id="start_time" name="start_time" autocomplete="off">
|
||||
</div>
|
||||
<div class="layui-input-inline" style="margin-right: 5px;width: 10px;">
|
||||
<label class="layui-form-mid">-</label>
|
||||
</div>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" class="layui-input" id="end_time" name="end_time" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">登入时间:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" class="layui-input" id="start_times" name="start_times" autocomplete="off">
|
||||
</div>
|
||||
<div class="layui-input-inline" style="margin-right: 5px;width: 10px;">
|
||||
<label class="layui-form-mid">-</label>
|
||||
</div>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" class="layui-input" id="end_times" name="end_times" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="layui-inline">
|
||||
<button class="layui-btn layui-btn-sm layuiadmin-btn-user {$view_theme_color}" lay-submit lay-filter="user-search">查询</button>
|
||||
<button class="layui-btn layui-btn-sm layuiadmin-btn-user layui-btn-primary " lay-submit lay-filter="user-clear-search">清空查询</button>
|
||||
<button class="layui-btn layui-btn-sm layuiadmin-btn-user layui-btn-primary " lay-submit lay-filter="export-file">导出</button>
|
||||
<button class="layui-btn layui-btn-sm layuiadmin-btn-user {$view_theme_color}" data-type="send_coupon">添加</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="layui-card-body">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div style="padding-bottom: 10px;">
|
||||
<button class="layui-btn layui-btn-sm layuiadmin-btn-user {$view_theme_color}" data-type="send_coupon">发放优惠券</button>
|
||||
<button class="layui-btn layui-btn-sm layuiadmin-btn-user {$view_theme_color}" data-type="set_group">设置分组</button>
|
||||
|
||||
</div>
|
||||
|
||||
<table id="user-lists" lay-filter="user-lists"></table>
|
||||
|
||||
<script type="text/html" id="user-info">
|
||||
<img src="{{d.abs_avatar}}" style="height:80px;width: 80px;margin-right: 10px;" class="image-show">
|
||||
<div class="layui-input-inline" style="text-align:left;width: 240px">
|
||||
<p>会员编号:{{d.sn}}</p>
|
||||
<p style="width: 180px;text-overflow:ellipsis;overflow: hidden">昵称:{{d.nickname}}</p>
|
||||
<p>会员等级:{{d.level_name}}</p>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/html" id="referrer">
|
||||
{{# if(d.first_leader){}}
|
||||
<img src="{{d.referrer_avatar}}" style="height:80px;width: 80px;margin-right: 10px;" class="image-show">
|
||||
<div class="layui-input-inline" style="text-align:left;width: 240px">
|
||||
<p>编号:{{d.referrer_sn}}</p>
|
||||
<p>手机号码:{{d.referrer_mobile}}</p>
|
||||
<p style="width: 180px;text-overflow:ellipsis;overflow: hidden">昵称:{{d.referrer_nickname}}</p>
|
||||
<p>等级:{{d.referrer_level_name}}</p>
|
||||
</div>
|
||||
{{# }else{ }}
|
||||
-
|
||||
{{# } }}
|
||||
</script>
|
||||
<script type="text/html" id="account">
|
||||
<div class="layui-input-inline">
|
||||
<label>余额:{{d.user_money}}</label>
|
||||
<br/>
|
||||
<label>积分:{{d.user_integral}}</label>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/html" id="user-operation">
|
||||
<a class="layui-btn layui-btn-primary layui-btn-sm" lay-event="info">资料</a>
|
||||
<a class="layui-btn layui-btn-normal layui-btn-sm" lay-event="edit">编辑</a>
|
||||
<a class="layui-btn layui-btn-normal layui-btn-sm" id="adjust_user" lay-event="adjust_user">账户调整</a>
|
||||
<a class="layui-btn layui-btn-normal layui-btn-sm" id="staff" lay-event="staff">设置员工</a>
|
||||
<a class="layui-btn layui-btn-normal layui-btn-sm" lay-event="del">删除</a>
|
||||
</script>
|
||||
<script type="text/html" id="user-info">
|
||||
{{ d.title }}
|
||||
</script>
|
||||
<script type="text/html" id="referrer">
|
||||
{{ d.staff_name || '--' }}
|
||||
</script>
|
||||
<script type="text/html" id="account">
|
||||
{{ d.collection || 0 }}
|
||||
</script>
|
||||
<script type="text/html" id="status">
|
||||
{{# if(d.state == 1){ }}
|
||||
<span class="layui-badge layui-bg-green">显示</span>
|
||||
{{# } else { }}
|
||||
<span class="layui-badge layui-bg-gray">不显示</span>
|
||||
{{# } }}
|
||||
</script>
|
||||
<script type="text/html" id="img-templet">
|
||||
{{# if(d.img){ }}
|
||||
<img src="{{ d.img }}" alt="封面图" style="width: 60px; height: 60px; object-fit: cover; cursor: pointer;" class="image-show">
|
||||
{{# } else { }}
|
||||
<span>无图片</span>
|
||||
{{# } }}
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
@@ -257,41 +161,39 @@
|
||||
//事件
|
||||
var active = {
|
||||
send_coupon:function() { //发放优惠券
|
||||
var check_status = table.checkStatus('user-lists')
|
||||
,user_list = check_status.data; //得到选中的数据
|
||||
|
||||
//是否已选数据
|
||||
if(0 === user_list.length ){
|
||||
return layer.msg('请选择用户');
|
||||
}
|
||||
//获取所选id
|
||||
ids = [];
|
||||
for (var i in user_list){
|
||||
ids.push(user_list[i]['id']);
|
||||
}
|
||||
layer.open({
|
||||
type: 2
|
||||
,title: '发放优惠券'
|
||||
,content: '{:url("coupon/sendCouponList")}'
|
||||
,area: ['90%','90%']
|
||||
,btn: ['确定发放', '取消']
|
||||
,title: '添加'
|
||||
,content: '{:url("Moments/add")}'
|
||||
,area: ['55%', '80%']
|
||||
,btn: ['确定', '取消']
|
||||
,yes: function(index, layero){
|
||||
var iframeWindow = window['layui-layer-iframe'+ index]
|
||||
,submitID = 'send-submit'
|
||||
,submit = layero.find('iframe').contents().find('#'+ submitID);
|
||||
,submitID = 'user_group-submit'
|
||||
,submit = layero.find('iframe').contents().find("#add-user_group-submit");
|
||||
|
||||
//监听提交
|
||||
iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
|
||||
var coupon_list = window["layui-layer-iframe" + index].callbackdata();
|
||||
if(coupon_list.length === 0){
|
||||
return layer.msg('请选择优惠券');
|
||||
}
|
||||
coupon_ids = [];
|
||||
for (var i in coupon_list){
|
||||
coupon_ids.push(coupon_list[i]['id']);
|
||||
iframeWindow.layui.form.on('submit(add-user_group-submit)', function(data){
|
||||
var field = data.field;
|
||||
|
||||
// 手动收集图片数组字段,确保数据正确传递
|
||||
var goods_images = [];
|
||||
iframeWindow.$('input[name="goods_image[]"]').each(function(){
|
||||
var val = iframeWindow.$(this).val();
|
||||
if (val && val.trim() !== '') {
|
||||
goods_images.push(val.trim());
|
||||
}
|
||||
});
|
||||
|
||||
// 将图片数组添加到提交数据中
|
||||
if (goods_images.length > 0) {
|
||||
field['goods_image'] = goods_images;
|
||||
}
|
||||
|
||||
// 阻止表单默认提交,使用 AJAX 提交
|
||||
like.ajax({
|
||||
url:'{:url("coupon/sendCoupon")}',
|
||||
data:{coupon_ids:coupon_ids,user_ids:ids},
|
||||
url:'{:url("Moments/add")}',
|
||||
data:field,
|
||||
type:"post",
|
||||
success:function(res)
|
||||
{
|
||||
@@ -303,16 +205,31 @@
|
||||
, time: 1000
|
||||
});
|
||||
layer.close(index); //关闭弹层
|
||||
table.reload('goods_brand-lists'); //数据刷新
|
||||
table.reload('user-lists'); //数据刷新
|
||||
} else {
|
||||
// 验证失败,显示错误信息,但不关闭弹窗,保留已上传的图片
|
||||
layui.layer.msg(res.msg || '提交失败,请检查表单信息', {
|
||||
offset: '15px'
|
||||
, icon: 2
|
||||
, time: 2000
|
||||
});
|
||||
}
|
||||
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
// 请求失败,显示错误信息,但不关闭弹窗
|
||||
layui.layer.msg('提交失败:' + (xhr.responseJSON?.msg || error), {
|
||||
offset: '15px'
|
||||
, icon: 2
|
||||
, time: 2000
|
||||
});
|
||||
}
|
||||
});
|
||||
return false; // 阻止表单默认提交
|
||||
});
|
||||
|
||||
submit.trigger('click');
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
,set_group:function() { //设置分组
|
||||
var check_status = table.checkStatus('user-lists')
|
||||
@@ -389,19 +306,22 @@
|
||||
|
||||
//管理员管理
|
||||
table.render({
|
||||
id:'user-lists'
|
||||
id:'user-lists'
|
||||
,elem: '#user-lists'
|
||||
,url: '{:url("user/lists")}' //模拟接口
|
||||
,url: '{:url("moments/lists")}' //模拟接口
|
||||
,cols: [[
|
||||
{type: 'checkbox'}
|
||||
,{field: 'id', width: 80, title: 'ID', }
|
||||
,{field: 'avatar', title: '会员信息',width: 370,align: 'center', toolbar: '#user-info'}
|
||||
,{field: 'group_name', title: '跟踪分配',width: 100,}
|
||||
,{field: 'referrals', title: '推荐人信息',align: 'center',width: 300,toolbar: '#referrer'}
|
||||
,{field: 'total_order_amount', title: '消费金额',width: 90}
|
||||
,{field: 'money', title: '账户余额',width: 120,toolbar: '#account'}
|
||||
,{field: 'login_time', title: '最后登录时间',width: 160}
|
||||
,{fixed: 'right', title: '操作', width: 320,toolbar: '#user-operation'}
|
||||
{type: 'checkbox'}
|
||||
,{field: 'id', title: 'ID', }
|
||||
,{field: 'title', title: '标题',align: 'center', toolbar: '#user-info'}
|
||||
,{field: 'goods_name', title: '绑定商品',}
|
||||
,{field: 'staff_name', title: '绑定员工',align: 'center',toolbar: '#referrer'}
|
||||
,{field: 'img', title: '封面图', templet: '#img-templet'}
|
||||
,{field: 'collection', title: '收藏数量',toolbar: '#account'}
|
||||
,{field: 'like', title: '点赞数量'}
|
||||
,{field: 'page_views', title: '浏览量'}
|
||||
,{field: 'order_sn', title: '订单编号'}
|
||||
,{field: 'state', title: '状态',align: 'center',templet: '#status'}
|
||||
,{fixed: 'right', title: '操作', width: 360,toolbar: '#user-operation'}
|
||||
|
||||
]]
|
||||
,page:true
|
||||
@@ -434,22 +354,51 @@
|
||||
var moreShow = 0;
|
||||
//监听工具条
|
||||
table.on('tool(user-lists)', function(obj){
|
||||
if(obj.event === 'edit'){
|
||||
var id = obj.data.id;
|
||||
var data = obj.data;
|
||||
|
||||
// 查看详情
|
||||
if(obj.event === 'info'){
|
||||
var id = data.id;
|
||||
layer.open({
|
||||
type: 2
|
||||
,title: '编辑会员'
|
||||
,content: '{:url("user/edit")}?id='+id
|
||||
,title: '查看详情'
|
||||
,content: '{:url("moments/info")}?id='+id
|
||||
,area: ['90%','90%']
|
||||
,btn: ['返回']
|
||||
,yes: function(index){
|
||||
layer.close(index);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 编辑
|
||||
if(obj.event === 'edit'){
|
||||
var id = data.id;
|
||||
layer.open({
|
||||
type: 2
|
||||
,title: '编辑动态'
|
||||
,content: '{:url("moments/edit")}?id='+id
|
||||
,area: ['90%', '90%']
|
||||
,btn: ['确定', '取消']
|
||||
,yes: function(index, layero){
|
||||
var iframeWindow = window['layui-layer-iframe'+ index]
|
||||
,submit = layero.find('iframe').contents().find('#edit-submit');
|
||||
//监听提交
|
||||
iframeWindow.layui.form.on('submit(edit-submit)', function(data){
|
||||
var field = data.field;
|
||||
iframeWindow.layui.form.on('submit(edit-submit)', function(formData){
|
||||
var field = formData.field;
|
||||
|
||||
// 手动收集图片数组
|
||||
var goods_images = [];
|
||||
layero.find('iframe').contents().find('input[name="goods_image[]"]').each(function(){
|
||||
var imgVal = $(this).val();
|
||||
if (imgVal) {
|
||||
goods_images.push(imgVal);
|
||||
}
|
||||
});
|
||||
field.goods_image = goods_images;
|
||||
|
||||
$.ajax({
|
||||
url:'{:url("user/edit")}',
|
||||
url:'{:url("moments/edit")}',
|
||||
data:field,
|
||||
type:"post",
|
||||
success:function(res)
|
||||
@@ -475,8 +424,29 @@
|
||||
});
|
||||
submit.trigger('click');
|
||||
}
|
||||
})
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
// 删除
|
||||
if(obj.event === 'del'){
|
||||
var id = data.id;
|
||||
layer.confirm('确定要删除这条动态吗?', {icon: 3, title:'提示'}, function(index){
|
||||
$.ajax({
|
||||
url: '{:url("moments/del")}',
|
||||
type: 'post',
|
||||
data: {id: id},
|
||||
success: function(res){
|
||||
if(res.code == 1){
|
||||
layer.msg(res.msg, {icon: 1, time: 1000}, function(){
|
||||
table.reload('user-lists'); //数据刷新
|
||||
});
|
||||
} else {
|
||||
layer.msg(res.msg, {icon: 2, time: 1000});
|
||||
}
|
||||
layer.close(index);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
if(obj.event === 'staff'){
|
||||
@@ -494,103 +464,6 @@
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
if(obj.event === 'info'){
|
||||
var id = obj.data.id;
|
||||
layer.open({
|
||||
type: 2
|
||||
,title: '会员资料'
|
||||
,content: '{:url("user/info")}?id='+id
|
||||
,area: ['90%','90%']
|
||||
,btn: ['返回']
|
||||
})
|
||||
}
|
||||
if(obj.event === 'adjust_user'){
|
||||
var id = obj.data.id;
|
||||
layer.open({
|
||||
type: 2
|
||||
,title: '账户调整'
|
||||
,content: '{:url("user/adjustAccount")}?id='+id
|
||||
,area: ['90%', '90%']
|
||||
,btn: ['确定', '取消']
|
||||
,yes: function(index, layero){
|
||||
var iframeWindow = window['layui-layer-iframe'+ index]
|
||||
,submit = layero.find('iframe').contents().find('#adjust_user-submit');
|
||||
//监听提交
|
||||
iframeWindow.layui.form.on('submit(adjust_user-submit)', function(data){
|
||||
var field = data.field;
|
||||
$.ajax({
|
||||
url:'{:url("user/adjustAccount")}',
|
||||
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-lists'); //数据刷新
|
||||
}else{
|
||||
layer.msg(res.msg, {
|
||||
offset: '15px'
|
||||
, icon: 2
|
||||
, time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
submit.trigger('click');
|
||||
}
|
||||
})
|
||||
}
|
||||
if(obj.event === 'adjust_level'){
|
||||
var id = obj.data.id;
|
||||
layer.open({
|
||||
type: 2
|
||||
,title: '等级调整'
|
||||
,content: '{:url("user/adjustLevel")}?id='+id
|
||||
,area: ['90%', '90%']
|
||||
,btn: ['确定', '取消']
|
||||
,yes: function(index, layero){
|
||||
var iframeWindow = window['layui-layer-iframe'+ index]
|
||||
,submit = layero.find('iframe').contents().find('#adjust_level-submit');
|
||||
//监听提交
|
||||
iframeWindow.layui.form.on('submit(adjust_level-submit)', function(data){
|
||||
var field = data.field;
|
||||
$.ajax({
|
||||
url:'{:url("user/adjustLevel")}',
|
||||
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-lists'); //数据刷新
|
||||
}else{
|
||||
layer.msg(res.msg, {
|
||||
offset: '15px'
|
||||
, icon: 2
|
||||
, time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
submit.trigger('click');
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
Reference in New Issue
Block a user