512 行
23 KiB
HTML
可执行文件
512 行
23 KiB
HTML
可执行文件
<html>
|
||
<!--[1.1.32]-->
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<title>优惠券管理</title>
|
||
<meta name="renderer" content="webkit">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||
<meta name="viewport"
|
||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||
<link rel="stylesheet" href="__PUBLIC__/layuiadmin/layui/css/layui.css" media="all">
|
||
<link rel="stylesheet" href="__PUBLIC__/layuiadmin/style/admin.css" media="all">
|
||
<link rel="stylesheet" type="text/css" href="__PUBLIC__/Retail/css/myscroll.css"/>
|
||
<style>
|
||
.vipgrade{
|
||
display: inline-block;
|
||
padding: 4px 18px 4px 8px;
|
||
margin: 6px;
|
||
border: 1px solid rgba(0,0,0,0.2);
|
||
position: relative;
|
||
font-size: 14px;
|
||
}
|
||
.vipgradetitle{
|
||
width:100%;
|
||
box-sizing: border-box;
|
||
padding: 4px 18px 4px 8px;
|
||
box-shadow: 0px 0px 1px rgba(0,0,0,0.1);
|
||
font-weight: bold;
|
||
}
|
||
span.layui-input{
|
||
border: none;
|
||
line-height:38px ;
|
||
}
|
||
.layui-form-label{
|
||
width: 140px;
|
||
}
|
||
.layui-card-body .layui-table{
|
||
margin: 0;
|
||
}
|
||
.layui-form-item{
|
||
margin-bottom: 0;
|
||
}
|
||
table{
|
||
table-layout:fixed;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div id="app">
|
||
<div class="layui-row layui-col-space15">
|
||
<div class="layui-col-sm12">
|
||
<div class="layui-card">
|
||
<div class="layui-card-body layuiadmin-card-list">
|
||
<form class="layui-form" action="" style="min-width: 1000px;" id="couponform">
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label">优惠券名称</label>
|
||
<div class="layui-input-inline">
|
||
<span class="layui-input">{$coupon['coupon_name']}</span>
|
||
</div>
|
||
<label class="layui-form-label">优惠券可用门店</label>
|
||
<div class="layui-input-inline" style="width:auto">
|
||
<volist name="coupon['storelist']" id="item">
|
||
<div class="vipgrade">{$item['storetag']}</div>
|
||
</volist>
|
||
</div>
|
||
</div>
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label">优惠券库存</label>
|
||
<div class="layui-input-inline">
|
||
<span class="layui-input">{$coupon['coupon_allnum']}张</span>
|
||
</div>
|
||
<label class="layui-form-label">优惠券剩余</label>
|
||
<div class="layui-input-inline">
|
||
<span class="layui-input">{$coupon['coupon_num']}张</span>
|
||
</div>
|
||
</div>
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label">优惠券使用门槛</label>
|
||
<div class="layui-input-inline">
|
||
<span class="layui-input">{$coupon['needmoney']}元</span>
|
||
</div>
|
||
<label class="layui-form-label">优惠券面额</label>
|
||
<div class="layui-input-inline">
|
||
<span class="layui-input">{$coupon['reducemoney']}元</span>
|
||
</div>
|
||
</div>
|
||
<div class="layui-form-mid layui-word-aux" style="margin-left: 110px;">
|
||
发放优惠券时,优先从序号小的发放,直到所选会员全部发放完毕,或优惠券全部发放(剩余库存为0)
|
||
</div>
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label">选择会员</label>
|
||
<div class="layui-input-inline">
|
||
<button type="button" class="layui-btn" @click="chooseVip(1)">选择会员</button>
|
||
</div>
|
||
</div>
|
||
<div class="layui-form-item">
|
||
<div class="layui-input-block">
|
||
<div class="layui-card">
|
||
<div class="layui-card-body">
|
||
<div style="padding-right: 8px;">
|
||
<table lay-filter="priceTag" class="layui-table">
|
||
<thead>
|
||
<tr>
|
||
<th style="width: 60px;">序号</th>
|
||
<th>姓名/昵称</th>
|
||
<th>手机号</th>
|
||
<th>实体卡</th>
|
||
<th>会员卡类型</th>
|
||
<th>余额</th>
|
||
<th>积分</th>
|
||
<th>操作</th>
|
||
</tr>
|
||
</thead>
|
||
</table>
|
||
</div>
|
||
<div style="height: 400px;overflow-y: scroll;">
|
||
<table lay-filter="priceTag" class="layui-table">
|
||
<tbody>
|
||
<template v-for="(item,index) in checkedVipArr">
|
||
<tr>
|
||
<td style="width: 60px;">{{index+1}}</td>
|
||
<td>
|
||
<div v-if="item['namenickname']" v-html="item['namenickname']"></div>
|
||
</td>
|
||
<td>
|
||
<div v-if="item['mobile_phone']">{{item['mobile_phone']}}</div>
|
||
</td>
|
||
<td>
|
||
<div v-if="item['card_key']">{{item['mobile_phone']}}</div>
|
||
</td>
|
||
<td>
|
||
<div v-if="item['grade']">{{item['grade']}}</div>
|
||
</td>
|
||
<td>
|
||
<div v-if="item['balance']">{{item['balance']}}</div>
|
||
</td>
|
||
<td>
|
||
<div v-if="item['integral']">{{item['integral']}}</div>
|
||
</td>
|
||
<td>
|
||
<div class="layui-btn layui-btn-xs" @click="delcheckedVipArr(index)">移除</div>
|
||
</td>
|
||
</tr>
|
||
</template>
|
||
<template v-if="!checkedVipArr || checkedVipArr.length==0">
|
||
<tr>
|
||
<td colspan="5" style="text-align: center">未选择</td>
|
||
</tr>
|
||
</template>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<hr>
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label"></label>
|
||
<div class="layui-input-inline" style="width:auto">
|
||
<button type="button" class="layui-btn" @click="confirmLaunch">发放</button>
|
||
<button type="button" class="layui-btn" @click="returnBack">返回</button>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="myModal" style="display: none;min-height: 700px;">
|
||
<div class="layui-card" style="padding: 15px;">
|
||
<div class="layui-card-body">
|
||
<form action="" class="layui-form" onsubmit="return false;">
|
||
<div class="layui-form-item">
|
||
<div class="layui-form-item" style="margin-bottom: 0px;">
|
||
<div class="layui-input-inline">
|
||
<input type="text" class="layui-input" placeholder="昵称/手机号/实体卡" id="mykeyword">
|
||
</div>
|
||
<div class="layui-input-inline">
|
||
<select name="goods_class_id" id="goods_class_id">
|
||
<option value="0">--所有门店会员--</option>
|
||
<volist name="list" id="vo">
|
||
<option value="{$vo['id']}">--{$vo['storetag']}--</option>
|
||
</volist>
|
||
</select>
|
||
</div>
|
||
<div class="layui-input-inline">
|
||
<select name="status" id="vipStatus">
|
||
<option value="0">--所有会员--</option>
|
||
<option value="1">--正常会员--</option>
|
||
<option value="3">--已冻结会员--</option>
|
||
<option value="4">--已挂失会员--</option>
|
||
</select>
|
||
</div>
|
||
<br/>
|
||
<div class="layui-input-inline" style="margin-top: 10px">
|
||
<select name="grade" id="grade" lay-filter="grade">
|
||
<option value="-1&-1" data-min="-1" data-max="-1" selected="selected">--所有等级--</option>
|
||
<volist name="gradeArr" id="vo">
|
||
<option value="{$vo['min']}&{$vo['max']}" data-min="{$vo['min']}" data-max="{$vo['max']}">--{$vo['cardname']}--</option>
|
||
</volist>
|
||
</select>
|
||
</div>
|
||
<div class="layui-input-inline" style="margin-top: 10px">
|
||
<button type="button" class="layui-btn" id="mysearch">查询</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
<hr>
|
||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||
<script type="text/html" id="toolbarDemo">
|
||
<div class="layui-btn-container">
|
||
<button class="layui-btn layui-btn-sm" type="button" lay-event="getCheckData">确定</button>
|
||
</div>
|
||
</script>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</body>
|
||
<script src="__PUBLIC__/layuiadmin/layui/layui.js"></script>
|
||
<script src="__PUBLIC__/login/js/vue2.5.16.js"></script>
|
||
<script type="text/javascript">
|
||
layui.config({
|
||
base: '__PUBLIC__/layuiadmin/' //静态资源所在路径
|
||
}).extend({
|
||
index: 'lib/index' //主入口模块
|
||
}).use(['form','layer','table'],function () {
|
||
// 返回
|
||
var layer = layui.layer;
|
||
var $ = layui.$;
|
||
$('#submitlaunchcoupon').click(function () {
|
||
layer.confirm('确定要投放优惠券吗?',function (cindex) {
|
||
layer.close(cindex);
|
||
var loadindex = layer.load(1); //换了种风格
|
||
$.ajax({
|
||
url:"{:U('Retail/Mcoupon/launchcoupon')}",
|
||
data:$('#couponform').serialize(),
|
||
type:"post",
|
||
success:function (res) {
|
||
// console.log(res)
|
||
layer.close(loadindex);
|
||
if(res.status==1){
|
||
layer.msg(res.msg,{time:1800},function () {
|
||
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
|
||
parent.layer.close(index); //再执行关闭
|
||
})
|
||
}else{
|
||
layer.msg(res.msg,{time:1800},function () {
|
||
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
|
||
parent.layer.close(index); //再执行关闭
|
||
})
|
||
}
|
||
},error:function (error) {
|
||
layer.alert('出错了:'+JSON.stringify(error),function () {
|
||
layer.close(loadindex);
|
||
});
|
||
}
|
||
})
|
||
})
|
||
})
|
||
|
||
var table = layui.table;
|
||
var layer = layui.layer;
|
||
var form = layui.form;
|
||
var app = new Vue({
|
||
el:"#app",
|
||
data:function(){
|
||
return{
|
||
chooseVipArr:[],
|
||
checkedVipArr:[],//新增的数据
|
||
}
|
||
},
|
||
methods:{
|
||
returnBack:function () {
|
||
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
|
||
parent.layer.close(index); //再执行关闭
|
||
},
|
||
chooseVip:function (num) {
|
||
if(num==1){
|
||
layer.open({
|
||
type: 1,
|
||
content: $('.myModal'),
|
||
title: "选择会员",
|
||
area: "80%",
|
||
btnAlign: 'c',
|
||
success:function () {
|
||
|
||
}
|
||
})
|
||
}
|
||
},
|
||
confirmLaunch:function () {
|
||
var checkedVipArr = this.checkedVipArr;
|
||
var length = checkedVipArr.length;
|
||
if(length==0){
|
||
layer.msg('请选择会员',{time:1500})
|
||
return ;
|
||
}
|
||
var ids = [];
|
||
for(var i=0;i<length;i++){
|
||
ids.push(checkedVipArr[i]['id']);
|
||
}
|
||
// console.log(ids,checkedVipArr);
|
||
var vm = this;
|
||
if(ids.length>0){
|
||
layer.confirm('确定要给选择的会员发放优惠券吗?',function () {
|
||
vm.doLaunch(ids);
|
||
})
|
||
}
|
||
},
|
||
doLaunch:function (arr) {
|
||
var ids = arr.join(',');
|
||
var load = layer.load(1);
|
||
var vm = this;
|
||
$.ajax({
|
||
url:"{:U('appointlaunchcoupon')}",
|
||
data:{
|
||
ids:ids,
|
||
id:"{$coupon['id']}"
|
||
},
|
||
type:"POST",
|
||
success:function (res) {
|
||
layer.close(load)
|
||
if(res.status==1){
|
||
layer.msg(res.msg,{time:1000},function () {
|
||
layer.closeAll()
|
||
vm.checkedVipArr=[];
|
||
table.reload('test');
|
||
});
|
||
|
||
}else{
|
||
res.msg = res.msg?res.msg:'发放失败';
|
||
layer.msg(res.msg,{time:1000},function () {
|
||
layer.closeAll()
|
||
});
|
||
}
|
||
},
|
||
error:function (error) {
|
||
layer.close(load)
|
||
layer.alert(JSON.stringify(error),function () {
|
||
layer.closeAll()
|
||
})
|
||
}
|
||
})
|
||
},
|
||
delcheckedVipArr:function (index) {
|
||
this.checkedVipArr.splice(index,1);
|
||
}
|
||
},
|
||
computed:{
|
||
waitarr:function () {
|
||
var arr = [];
|
||
var n = JSON.parse(JSON.stringify(this.checkedVipArr),true);
|
||
for(var i=0;i<n.length;i++){
|
||
var str = n[i]['id'];
|
||
arr[str] = n[i];
|
||
}
|
||
return arr;
|
||
}
|
||
},
|
||
watch:{
|
||
chooseVipArr:function (n,o) {
|
||
var vm = this;
|
||
if(n && n.length>0){
|
||
var waitarr = this.waitarr;
|
||
var checkedVipArr = this.checkedVipArr;
|
||
var hasaddarr = [];
|
||
var hasaddgoodsnameStr = '';
|
||
var canaddarr = [];
|
||
for(var i=0;i<n.length;i++){
|
||
var str = n[i]['id'];
|
||
if(waitarr[str]){
|
||
hasaddarr.push(n[i]);
|
||
if(n[i].goods_sku_id){
|
||
hasaddgoodsnameStr+= n[i]['goods_name']+'('+n[i]['sku_name']+'),';
|
||
}else{
|
||
hasaddgoodsnameStr+=n[i]['goods_name']+',';
|
||
}
|
||
}else{
|
||
canaddarr.push(n[i]);
|
||
}
|
||
}
|
||
checkedVipArr =checkedVipArr.concat(canaddarr);
|
||
this.checkedVipArr = checkedVipArr;
|
||
vm.chooseVipArr=[];
|
||
}
|
||
}
|
||
}
|
||
})
|
||
// 非规格商品选择框
|
||
//展示已知数据
|
||
table.render({
|
||
elem: '#test',
|
||
url: "{:U('VipBackstageRecharge/VipList')}",
|
||
toolbar: '#toolbarDemo',
|
||
defaultToolbar:['filter'],
|
||
cellMinWidth:120,
|
||
where:{
|
||
grademin:-1,
|
||
grademax:-1
|
||
},
|
||
cols: [
|
||
[{
|
||
type: 'checkbox'
|
||
}, {
|
||
field: 'index',
|
||
title: '序号',
|
||
width: 60
|
||
}, {
|
||
field: 'namenickname',
|
||
title: '姓名/昵称',
|
||
width: 180
|
||
}, {
|
||
field: 'mobile_phone',
|
||
title: '手机号',
|
||
width: 120
|
||
},{
|
||
field: 'card_key',
|
||
title: '实体卡',
|
||
width: 120
|
||
},{
|
||
field: 'birthday',
|
||
title: '生日',
|
||
width: 120,
|
||
hide:true
|
||
}, {
|
||
field: 'grade',
|
||
title: '会员卡类型',
|
||
width: 100
|
||
}, {
|
||
field: 'discount',
|
||
title: '折扣',
|
||
width: 100,
|
||
hide:true
|
||
}, {
|
||
field: 'balance',
|
||
title: '余额',
|
||
width: 100
|
||
}, {
|
||
field: 'integral',
|
||
title: '积分',
|
||
width: 100,
|
||
hide:true
|
||
}, {
|
||
field: 'storetag',
|
||
title: '激活门店',
|
||
hide:true
|
||
}, {
|
||
field: 'addtime',
|
||
title: '激活时间',
|
||
width:190,
|
||
hide:true
|
||
}, {
|
||
field: 'statusname',
|
||
title: '会员状态'
|
||
}
|
||
]
|
||
],
|
||
page: true
|
||
});
|
||
|
||
//头工具栏事件
|
||
table.on('toolbar(test)', function(obj){
|
||
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
|
||
switch(obj.event){
|
||
case 'getCheckData':
|
||
var data = checkStatus.data; //获取选中行数据
|
||
console.log(data);
|
||
if(data.length>0){
|
||
app.chooseVipArr = data;
|
||
layer.closeAll();
|
||
}else{
|
||
layer.msg('请选择会员',{time:1500})
|
||
}
|
||
break;
|
||
}
|
||
});
|
||
var keyword = "";
|
||
var grademin = -1;
|
||
var grademax = -1;
|
||
form.on('select(grade)', function(data){
|
||
var arr = data.value.split('&');
|
||
if(arr[0]){
|
||
grademin = arr[0];
|
||
}
|
||
if(arr[1]){
|
||
grademax = arr[1];
|
||
}
|
||
});
|
||
|
||
$('#mysearch').click(function () {
|
||
keyword = $('#mykeyword').val();
|
||
var cate = $('#goods_class_id').val();
|
||
var status = $('#vipStatus').val();
|
||
table.reload('test', {
|
||
page: {
|
||
curr: 1 //重新从第 1 页开始
|
||
}
|
||
, where: {
|
||
storeid: cate,
|
||
keyword: keyword,
|
||
status: status,
|
||
grademin:grademin,
|
||
grademax:grademax
|
||
}
|
||
});
|
||
})
|
||
})
|
||
</script>
|
||
</html>
|