文件
mashangyoujiu/Application/Retail/View/Mcoupon/addMcoupon.html

693 行
31 KiB
HTML
可执行文件

<html>
<!--[1.1.32]-->
<head>
<meta charset="UTF-8">
<title>优惠券管理</title>
<link rel="stylesheet" type="text/css" href="__PUBLIC__/layui/css/layui.css"/>
<script src="__PUBLIC__/jquery/js/jquery-3.2.1.min.js"></script>
<script src="__PUBLIC__/layui/layui.js"></script>
<style>
.lefttitle{
padding: 18px 60px 0 60px;
height: 46px;
line-height: 46px;
font-size: 16px;
color: #fff;
font-weight: bold;
text-align: center;
background: url(__PUBLIC__/Retail/Mcoupon/titlebar.png) no-repeat;
}
.leftbody{
-webkit-tap-highlight-color: transparent;
position: relative;
min-height: 180px;
background: -webkit-gradient(linear, 0 0, 0 100%, from(#fe314e), to(#fe6263));
background: -moz-linear-gradient(to bottom, #fe314e, #fe6263);
color: #fff;
margin-top: 20px;
}
.dot{
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 5px;
background: url(__PUBLIC__/Retail/Mcoupon/dot.png) repeat-x left bottom;
background-size: auto 5px;
}
.promote-card-name{
font-size: 18px;
line-height: 60px;
padding-left: 10px;
}
.js-share{
position: absolute;
right: 10px;
top: 15px;
width: 50px;
height: 30px;
line-height: 30px;
border: 1px solid #ffbabb;
border-color: rgba(255,255,255,0.5);
border-radius: 4px;
text-align: center;
cursor: pointer;
color:rgba(255,255,255,0.5)
}
.center{
text-align: center;
}
.promote-value{
font-size: 40px;
word-break: break-word;
}
.promote-limit{
line-height: 40px;
}
.font-size-14{
font-size: 12px;
}
.promote-desc {
/*display: none;*/
color: #333;
word-break: break-all;
}
.promote-desc .promote-desc-title {
padding: 10px 0 10px 20px;
}
.block-item {
position: relative;
display: block;
padding: 10px;
line-height: 1.5;
border: 0;
border-top: 2px solid #e5e5e5;
border-bottom: 2px solid #e5e5e5;
overflow: hidden;
}
.transparent-color{
color:rgba(255,255,255,0.5);
}
.couponshow{
padding-bottom: 40px;
width:320px;
box-shadow: 0px 0px 5px #3D4357;
position: fixed;
top:50px;
left:200px;
background-color: white;
}
.leftshow{
float: left;
margin-left: 200px;
margin-top: 50px;
}
.rightedit{
width:420px;
float: left;
margin-top: 50px;
margin-left: 20px;
box-shadow: 0px 0px 5px #3D4357;
padding: 10px;
box-sizing: border-box;
}
em.required {
font-size: 16px;
color: #f00;
}
.required {
margin-right: 2px;
vertical-align: middle;
}
.config-title {
font-size: 14px;
font-weight: bold;
line-height: 30px;
margin-bottom: 10px;
border-bottom: 1px solid #e8e8e8;
}
.add-on{
padding: 9px 15px;
line-height: 20px;
float: left;
display: block;
}
.vipgrade{
display: inline-block;
padding: 4px 18px 4px 8px;
margin: 6px;
border: 1px solid rgba(0,0,0,0.2);
position: relative;
}
.delthisitem{
position: absolute;
top:0px;
right: 0px;
}
.footer{
position: fixed;
bottom: 0;
left: 0;
float: left;
width:100%;
text-align: center;
margin-top: 50px;
box-shadow: 1px 1px 40px rgba(0,0,0,0.5);
padding: 20px 0px;
background-color: white;
}
</style>
</head>
<body>
<div id="app">
<div class="leftshow" style="width: 320px;">
<div class="couponshow">
<h1 class="lefttitle"><span>优惠券</span></h1>
<div class="leftbody">
<div class="clearfix" style="height:60px;">
<h2 class="promote-card-name" v-text="couponname"></h2>
<!--<p class="js-share">分享</p>-->
</div>
<p class="center promote-value">
<span class="promote-value-sign">
<span>¥</span>
<i v-text="couponmoney">12</i>
</span>
</p>
<p class="center font-size-14 promote-limit" v-text="couponlimit">
</p>
<p class="center font-size-14 transparent-color" v-text="canusedate">
</p>
<div class="dot"></div>
</div>
<div class="promote-desc">
<h2 class="font-size-14 c-gray-dark promote-desc-title">使用说明</h2>
<div class="block border-top-0">
<div class="block-item clearfix" style="min-height: 45px;box-sizing: border-box;">
<span class="js-desc-detail" v-html="showdetail" ></span>
</div>
</div>
</div>
</div>
</div>
<div class="rightedit" style="margin-bottom: 200px">
<div>
<div class="app-sidebar" style="margin-top: 0px;">
<div class="arrow"></div>
<div class="app-sidebar-inner js-sidebar-region"><div>
<form class="" novalidate="">
<h1 class="config-title">优惠券基础信息</h1>
<div class="layui-form-item">
<label class="layui-form-label"><em class="required">*</em>优惠券名称:</label>
<div class="layui-input-inline">
<input type="text" name="name" v-model.trim="name" maxlength="10" value="" class="layui-input" placeholder="最多支持10个字">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><em class="required">*</em>发放总量:</label>
<div class="layui-input-inline">
<input type="text" name="total" v-model="total" value="" class="layui-input">
</div>
<span class="add-on">张</span>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><em class="required">*</em>优惠券面额:</label>
<div class="layui-input-inline">
<input type="number" name="value" v-model="money" class="layui-input" value="">
</div>
<span class="add-on">元</span>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><em class="required">*</em>使用门槛:</label>
<span class="add-on">满</span>
<div class="layui-input-inline" style="width:80px;">
<input type="number" name="at_least" v-model="least" value="" class="layui-input" data-value-type="Number">
</div>
<span class="add-on">元可使用</span>
</div>
<h1 class="config-title">基本规则</h1>
<div class="layui-form-item">
<label class="layui-form-label"><em class="required">*</em>会员等级:</label>
<div class="layui-input-inline">
<select name="user_level" class="layui-input" v-model="user_level">
<option value="0" selected>所有会员等级 </option>
<volist name="gradeall" id="item">
<option value="{$item['id']}" >{$item['cardname']}</option>
</volist>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">已选会员:</label>
<div class="layui-input-inline">
<template v-for="item in gradeall">
<div class="vipgrade">
<span v-text="item.cardname"></span>
<i class="layui-icon delthisitem" v-if="item.id!=0" @click="delthisitem(item.id)">&#x1006</i>
</div>
</template>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><em class="required">*</em>可用门店:</label>
<div class="layui-input-inline">
<select name="user_level" class="layui-input" v-model="store">
<option value="0" selected>所有门店 </option>
<volist name="storelist" id="item">
<option value="{$item['id']}" >{$item['storetag']}</option>
</volist>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">已选门店:</label>
<div class="layui-input-inline">
<template v-for="item in storelist">
<div class="vipgrade">
<span v-text="item.storetag"></span>
<i class="layui-icon delthisitem" v-if="item.id!=0" @click="delthisstoreitem(item.id)">&#x1006</i>
</div>
</template>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><em class="required">*</em>有效期:</label>
<div class="layui-input-inline">
<div class="layui-form-item">
<label class="layui-form-label" style="width:100%;text-align: left" @click="coupontype=1">
<i class="layui-icon" style="font-size: 18px;color:#fe6263" v-if="coupontype==1">&#xe643</i>
<i class="layui-icon" style="font-size: 18px;color:#fe6263" v-if="coupontype!=1">&#xe63f</i>
<span>固定日期</span>
</label>
<label class="layui-form-label" style="width:100%;text-align: left" @click="coupontype=2">
<i class="layui-icon" style="font-size: 18px;color:#fe6263" v-if="coupontype==2">&#xe643</i>
<i class="layui-icon" style="font-size: 18px;color:#fe6263" v-if="coupontype!=2">&#xe63f</i>
<span>领到券当日开始</span>
</label>
<label class="layui-form-label" style="width:100%;text-align: left" @click="coupontype=3">
<i class="layui-icon" style="font-size: 18px;color:#fe6263" v-if="coupontype==3">&#xe643</i>
<i class="layui-icon" style="font-size: 18px;color:#fe6263" v-if="coupontype!=3">&#xe63f</i>
<span>领到券次日开始</span>
</label>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">
<span v-if="coupontype==1">固定日期</span>
<span v-if="coupontype==2">当日开始</span>
<span v-if="coupontype==3">次日开始</span>
</label>
<div class="layui-input-inline">
<div class="layui-input-inline" style="width:60px;" v-if="coupontype==3">
<input type="text" key="1" v-model="fixed_term" placeholder="" style="width:60px;" checked="" class="layui-input" >
</div>
<span class="add-on" v-if="coupontype==3">天内有效</span>
<div class="layui-input-inline" style="width:60px;" v-if="coupontype==2">
<input type="text" key="2" v-model="fixed_term" placeholder="" checked="" class="layui-input" >
</div>
<span class="add-on" v-if="coupontype==2">天内有效</span>
<div class="layui-input-inline" v-show="coupontype==1">
<input type="text" id="test1" key="3" @click="setstarttime($event)" v-model="starttime" placeholder="生效日期" class="layui-input" style="margin-bottom: 10px;">
<input type="text" id="test2" key="4" @click="setendtime($event)" v-model="endtime" placeholder="过期日期" class="layui-input" >
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">到期提醒:</label>
<div class="layui-input-inline" style="padding: 9px 15px;" @click="notice = (notice==1)?2:1">
<i class="layui-icon" style="font-size: 18px;color:#fe6263" v-if="notice==1">&#xe63f</i>
<i class="layui-icon" style="font-size: 18px;color:#fe6263" v-if="notice==2">&#xe643</i>
<span>到期前4天提醒一次</span>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" @click="showdetailmsg">使用说明:</label>
<div class="layui-input-inline">
<textarea name="description" v-model="detailmsg" wrap="hard" cols="200px;" @keyup.enter="formatSolution" class="layui-textarea" placeholder="填写活动的详细说明,支持换行;"></textarea>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div class="footer">
<button type="button" class="layui-btn" @click="submit">提交</button>
<button type="button" class="layui-btn" @click="cancel">取消</button>
</div>
</div>
</body>
<script type="text/javascript" src="__PUBLIC__/retails/js/vue.js"></script>
<script type="text/javascript">
var gradejson = JSON.parse('{$gradejson}',true);
var storejson = JSON.parse('{$storejson}',true);
// console.log(gradejson);
layui.use(['layer', 'laydate'], function () {
var layer = layui.layer;
var laydate = layui.laydate;
new Vue({
el: "#app",
data:function () {
return{
gradeall:[{
id:0,
cardname:"全部会员"
}],
storelist:[{
id:0,
storetag:"全部门店"
}],
name:"",
detailmsg:"",
showdetail:"",
coupontype:1,
total:"",
money:"",
least:"",
notice:1,
fixed_term:"",
starttime:"",
endtime:"",
user_level:0,
store:0,
limitnum:0,
allgradelevel:gradejson,
allstorelist:storejson,
couponmoney:'面额',
couponname:'优惠券名称',
couponlimit:'无限制',
canusedate:"未设置有效期",
usetiptitle:"",
}
},
methods: {
greet: function (event) {
// `this` 在方法里指向当前 Vue 实例
alert('Hello ' + this.name + '!')
// `event` 是原生 DOM 事件
if (event) {
alert(event.target.tagName)
}
},
formatSolution:function(s) {
},
setstarttime:function (event) {
// console.log(event.target.id);
// var id = "#"+event.target.id
// laydate.render({
// elem: id //指定元素
// });
},
setendtime:function (event) {
// console.log(event.target.id);
// var id = "#"+event.target.id
// laydate.render({
// elem: id //指定元素
// });
},
delthisitem:function (id) {
var gradeall = this.gradeall;
var find = false;
var index = 0;
for (var i=0;i<gradeall.length;i++){
if(gradeall[i]['id']==id){
find = true;
index = i;
break;
}
}
if(find){
this.gradeall.splice(i,1);
if(this.gradeall.length==0){
this.user_level = 0;
}
}
},
showdetailmsg:function () {
console.log(this.detailmsg);
},
delthisstoreitem:function (id) {
var storelist = this.storelist;
var find = false;
var index = 0;
for (var i=0;i<storelist.length;i++){
if(storelist[i]['id']==id){
find = true;
index = i;
break;
}
}
if(find){
this.storelist.splice(i,1);
if(this.storelist.length==0){
this.store = 0;
}
}
},
submit:function () {
var name = this.name; // 名称
if(!name){
layer.msg('优惠券名称不能为空',{time:1000})
return;
}
var coupontype = this.coupontype ;// 优惠券类型
var money = this.money ; // 优惠券面额
if(!money || money*1<0.01){
layer.msg('优惠券面额必须大于0.01元',{time:1000})
return;
}
var least = this.least ; // 限制
if(least*1<0.01){
layer.msg('使用门槛不得小于0.01元',{time:1000})
return;
}
var total = this.total ; // 总数
if(total*1<=0){
layer.msg('优惠券总数必须大于0',{time:1000})
return;
}
if(least*1 < money*1){
layer.msg('使用门槛不应当小于优惠券面额',{time:1000})
return;
}
var gradeall = this.gradeall; // 会员等级
var storelist = this.storelist; // 可用门店
var notice = this.notice; // 公众号提醒
var fixed_term = this.fixed_term; // 有效天数
var starttime = this.starttime; // 生效时间
var endtime = this.endtime ; // 过期时间
var detailmsg = this.showdetail; // 优惠券说明
var limitnum = this.limitnum; // 限制领取次数
$.ajax({
url:"{:U('createcoupon')}",
data:{
name:name,
coupontype:coupontype,
money:money,
least:least,
total:total,
gradeall:gradeall,
storelist:storelist,
notice:notice,
fixed_term:fixed_term,
starttime:starttime,
endtime:endtime,
detailmsg:detailmsg,
limitnum:limitnum
},
type:'post',
success:function (res) {
console.log(res);
if(res.status==1){
layer.msg(res.msg,{time:1500},function () {
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
parent.layer.close(index); //再执行关闭
})
}else{
layer.msg(res.msg,{time:1500})
}
},
error:function (error) {
layer.alert('请检查您的表单');
}
})
},
cancel:function () {
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
parent.layer.close(index); //再执行关闭
}
},
watch:{
detailmsg:function () {
this.showdetail = this.detailmsg.replace(/\s/g,'<br/>');
},
user_level:function (n,o) {
if(n==0){
this.gradeall = [{
id:0,
cardname:"全部会员"
}]
}else{
var gradeall = this.gradeall;
if(gradeall.length>0 && gradeall[0]['id']==0){
this.gradeall =[];
}
gradeall = this.gradeall;
var find = false;
for (var i=0;i<gradeall.length;i++){
if(gradeall[i]['id']==n){
find = true;
break
}
}
if(!find){
var item;
var allgradelevel = this.allgradelevel;
for (var i=0;i<allgradelevel.length;i++){
if(allgradelevel[i]['id']==n){
item = {
id:allgradelevel[i]['id'],
cardname:allgradelevel[i]['cardname']
}
find = true;
break
}
}
if(find){
console.log(123);
this.gradeall.push(item);
}
}
}
},
store:function (n,o) {
if(n==0){
this.storelist = [{
id:0,
storetag:"全部门店"
}]
}else{
var storelist = this.storelist;
if(storelist.length>0 && storelist[0]['id']==0){
this.storelist =[];
}
storelist = this.storelist;
var find = false;
for (var i=0;i<storelist.length;i++){
if(storelist[i]['id']==n){
find = true;
break
}
}
if(!find){
var item;
var allstorelist = this.allstorelist;
for (var i=0;i<allstorelist.length;i++){
if(allstorelist[i]['id']==n){
item = {
id:allstorelist[i]['id'],
storetag:allstorelist[i]['storetag']
}
find = true;
break
}
}
if(find){
console.log(123);
this.storelist.push(item);
}
}
}
},
money:function (n,o) {
if(!n){
this.couponmoney = '面额';
}else{
this.couponmoney = n;
}
},
name:function (n,o) {
if(!n){
this.couponname = '优惠券名称'
}else{
this.couponname = n ;
}
},
least:function (n,o) {
if(!n){
this.couponlimit = '无限制'
}else{
this.couponlimit = '消费满'+n+'元可使用'
}
},
coupontype:function (n,o) {
if(n==1){
var s = this.starttime?this.starttime:"开始日期";
var e = this.endtime?this.endtime:"结束日期";
this.canusedate = "有效期:"+s+" - " + e;
}else if(n==2){
var str = this.fixed_term?this.fixed_term:"N";
this.canusedate = "领取当日起"+str+"天内有效";
}else if(n==3){
var str = this.fixed_term?this.fixed_term:"N";
this.canusedate = "领取次日起"+str+"天内有效";
}
},
fixed_term:function (n,o) {
var str = n?n:"N";
if(this.coupontype==2){
this.canusedate = "领取当日起"+str+"天内有效";
}else if(this.coupontype==3){
this.canusedate = "领取次日起"+str+"天内有效";
}
},
starttime:function (n,o) {
if(this.coupontype==1){
var s = this.starttime?this.starttime:"开始日期";
var e = this.endtime?this.endtime:"结束日期";
this.canusedate = "有效期:"+s+" - " + e;
}
},
endtime:function (n,o) {
if(this.coupontype==1){
var s = this.starttime?this.starttime:"开始日期";
var e = this.endtime?this.endtime:"结束日期";
this.canusedate = "有效期:"+s+" - " + e;
}
}
},
mounted: function () {
// console.log(laydate)
var vm = this;
laydate.render({
elem: '#test1',
type:'datetime',
min: '{time}',
done: function(value) {
// this.date = value
vm.starttime = value;
}
})
laydate.render({
elem: '#test2',
type:'datetime',
min: '{time}',
done: function(value) {
// this.date = value
vm.endtime = value;
}
})
// console.log(this.allgradelevel);
}
})
})
</script>
</html>