文件
mashangyoujiu/Application/Retail/View/Plug/turntable_addtures.html

467 行
24 KiB
HTML
可执行文件

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

<!DOCTYPE html>
<html>
<!--[1.8.67]-->
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<link rel="stylesheet" href="__PUBLIC__/vue/element-ui.css">
<link rel="stylesheet" type="text/css" href="__PUBLIC__/Retail/css/myscroll.css"/>
<link rel="stylesheet" type="text/css" href="__PUBLIC__/vue/element-ui.css">
<link rel="stylesheet" href="__PUBLIC__/css/system-gallery.css?v=1.0.3">
<script src="__PUBLIC__/jquery/js/jquery-3.2.1.min.js"></script>
<script type="text/javascript" charset="utf-8" src="__PUBLIC__/vue/js/vue2.5.16.js"></script>
<script type="text/javascript" charset="utf-8" src="__PUBLIC__/vue/element-ui.js"></script>
<script charset="utf-8" src="__PUBLIC__/js/system-gallery.js?v=1.0.3"></script>
<title>添加大转盘</title>
<style>
[v-cloak] {
display: none;
}
body {
padding: 20px;
}
.el-upload--picture-card {
width: 100px;
height: 100px;
line-height: 100px;
}
.el-upload-list--picture-card .el-upload-list__item {
width: 100px;
height: 100px;
}
.el-dialog__wrapper {
z-index: 3000 !important;
}
.tips {
color: #999;
font-size: 12px;
}
.center {
margin-top: 30px;
margin-bottom: 50px;
text-align: center;
width: 100%;
}
.error-tips {
color: red;
font-size: 12px;
position: absolute;
top: 26px;
}
.item-center {
display: flex;
align-items: center;
}
.el-input.is-disabled .el-input__inner {
color: #aaa !important;
}
</style>
</head>
<body>
<div id="app" v-cloak>
<el-tabs type="border-card" style="margin-bottom: 20px;">
<el-tab-pane label="基本设置">
<el-form id="formSet" ref="form" :model="form" :rules="rules" label-width="170px">
<el-form-item prop="turntable_type" label="活动类型">
<el-radio-group :disabled="form.id>0?true:false" v-model="form.turntable_type">
<el-radio label="1" value="1">会员通知栏</el-radio>
<el-radio label="2" value="2">会员支付</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item prop="turntable_name" label="活动名称">
<el-input size="small" placeholder="请输入活动名称" type="text" v-model="form.turntable_name"></el-input>
</el-form-item>
<el-form-item prop="explain" label="活动说明">
<el-input size="small" placeholder="请输入活动说明" type="textarea" v-model="form.explain"></el-input>
</el-form-item>
<el-form-item prop="date" label="活动有效时间">
<el-date-picker
v-model="form.date"
type="datetimerange"
value-format="yyyy-MM-dd HH:mm:ss"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
size="small">
</el-date-picker>
</el-form-item>
<el-form-item prop="strategy" label="活动规则">
<el-input size="small" placeholder="请输入活动规则" type="textarea" v-model="form.strategy"></el-input>
</el-form-item>
<el-form-item prop="isshownum" label="显示奖品数量">
<el-radio-group :disabled="form.id>0?true:false" v-model="form.isshownum">
<el-radio label="1">显示</el-radio>
<el-radio label="2">不显示</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item prop="needmoney" label="消费满多少元可参与" v-if="form.turntable_type==2">
<el-input size="small" placeholder="请输入金额"
oninput="value=(this.value==parseInt(this.value * 100) / 100)?this.value:((parseInt(this.value * 100) / 100)?(parseInt(this.value * 100) / 100):'');"
type="text"
v-model="form.needmoney"></el-input>
</el-form-item>
<el-form-item prop="maxnum" label="每人最多领奖次数">
<el-input :disabled="form.id>0?true:false" size="small" placeholder="请输入次数(0为不限制)"
oninput="value=this.value.replace(/^\D/g,'')"
type="text"
v-model="form.maxnum"></el-input>
</el-form-item>
<el-form-item prop="daymaxnum" label="每人每天最多获奖次数">
<el-input :disabled="form.id>0?true:false" size="small" placeholder="请输入次数(0为不限制)"
oninput="value=this.value.replace(/^\D/g,'')"
type="text"
v-model="form.daymaxnum"></el-input>
</el-form-item>
<el-form-item prop="playnum" label="每人每天最多抽奖次数">
<el-input :disabled="form.id>0?true:false" size="small" placeholder="请输入次数(0为不限制)"
oninput="value=this.value.replace(/^\D/g,'')"
type="text"
v-model="form.playnum"></el-input>
</el-form-item>
<el-form-item prop="prizecode" label="奖品兑换码">
<el-input size="small" type="text" v-model="form.prizecode"></el-input>
<span class="tips">奖品有实物时会需要</span>
</el-form-item>
<el-form-item prop="copyright" label="版权信息">
<el-input size="small" type="textarea" v-model="form.copyright"></el-input>
<span class="tips">如果不填写,默认为商户名称</span>
</el-form-item>
<el-form-item label="按钮文字">
<el-input size="small" type="text" v-model="form.btn_word"></el-input>
<span class="tips">不填写表示不开启</span>
</el-form-item>
<el-form-item label="按钮链接">
<el-input size="small" type="text" v-model="form.link"></el-input>
<span class="tips">跳转的链接地址,如:http://www.baidu.com</span>
</el-form-item>
</el-form>
</el-tab-pane>
</el-tabs>
<el-tabs type="border-card" style="margin-bottom: 20px;">
<el-tab-pane label="奖品设置">
<el-tabs v-model="activeName" @tab-click="clickPrizeTab">
<template v-for="(item,index) in prizeList">
<el-tab-pane :key="index" :label="'奖品'+(index+1)" :name="''+index">
<el-form label-width="100px">
<el-form-item label="奖品类型">
<el-radio-group :disabled="form.id>0?true:false" v-model="item.type">
<el-radio label="1">实物</el-radio>
<el-radio label="2">积分</el-radio>
<el-radio label="3">余额</el-radio>
<el-radio label="5">谢谢惠顾(未中奖)</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="奖品名称">
<el-input :disabled="form.id>0?true:false" size="small" type="text"
v-model="item.prize_name"></el-input>
</el-form-item>
<el-form-item v-if="item.type==2" label="积分数量">
<el-input :disabled="form.id>0?true:false" size="small" placeholder="请输入积分数量(整数)"
oninput="value=this.value.replace(/^[0]|\D/g,'')"
type="text" v-model="item.integral"></el-input>
</el-form-item>
<el-form-item v-if="item.type==3" label="会员卡余额">
<el-input :disabled="form.id>0?true:false" size="small" placeholder="请输入金额"
oninput="value=(this.value==parseInt(this.value * 100) / 100)?this.value:((parseInt(this.value * 100) / 100)?(parseInt(this.value * 100) / 100):'');"
type="text" v-model="item.money"></el-input>
</el-form-item>
<el-form-item label="奖品数量">
<el-input :disabled="form.id>0?true:false" size="small" type="text"
oninput="value=this.value.replace(/^[0]|\D/g,'')"
v-model="item.prizenum"></el-input>
</el-form-item>
<el-form-item label="获奖概率">
<el-input :disabled="form.id>0?true:false" size="small" placeholder="取值 1~93"
type="text"
oninput="value=this.value.replace(/^[0]|\D/g,'')"
v-model="item.prob"></el-input>
<span v-if="item.prob&&item.prob<0" class="error-tips">概率值有误</span>
</el-form-item>
<el-form-item v-if="item.type==1" label="奖品图片">
<div class="item-center">
<choose-one-file :file-url.sync="item.prize_img"
:file-id.sync="item.prize_img_id"
:is-disabled="form.id>0?true:false"></choose-one-file>
</div>
</el-form-item>
<el-form-item label="奖品说明">
<el-input :disabled="form.id>0?true:false" size="small" type="textarea"
v-model="item.prizemsg"></el-input>
</el-form-item>
</el-form>
</el-tab-pane>
</template>
</el-tabs>
</el-tab-pane>
</el-tabs>
<div class="center">
<el-button type="primary" @click="submit('form')">提交</el-button>
</div>
</div>
</body>
<script type="text/javascript">
function verProb(prob) {
let new_prob = parseInt(prob);
if (prob == new_prob) {
if (prob <= 0 || prob > 93) {
return false;
}
return true;
} else {
return false;
}
}
var date = '{$turnTable["date"]}';
var app = new Vue({
el: '#app',
data: function () {
return {
activeName: '0',
prizeList: {$prizeList},
form: {
turntable_type: "{$turnTable['turntable_type']}",
turntable_name: "{$turnTable['turntable_name']}",
explain: "{$turnTable['explain']}",
date: date ? JSON.parse(date) : '',
strategy: "{$turnTable['strategy']}",
isshownum: "{$turnTable['isshownum']}",
needmoney: "{$turnTable['needmoney']}",
maxnum: "{$turnTable['maxnum']}",
daymaxnum: "{$turnTable['daymaxnum']}",
playnum: "{$turnTable['playnum']}",
copyright: "{$turnTable['copyright']}",
prizecode: "{$turnTable['prizecode']}",
btn_word: "{$turnTable['btn_word']}",
link: "{$turnTable['link']}",
id: `{$turnTable['id']}`
},
rules: {
turntable_type: [{message: '请选择活动类型', required: true, trigger: 'change'}],
turntable_name: [{message: '请输入活动名称', required: true, trigger: 'change'}],
explain: [{message: '请输入活动说明', required: true, trigger: 'change'}],
date: [{message: '请选择活动有效时间', required: true, trigger: 'change'}],
strategy: [{message: '请输入活动规则', required: true, trigger: 'change'}],
isshownum: [{message: '请选择是否显示奖品数量', required: true, trigger: 'change'}],
needmoney: [{message: '请输入正确的金额', required: true, trigger: 'change'}, {
validator: function (rule, value, callback) {
if (app.turntable_type == 2) {
var reg = /^[+]?\d*\.?\d{0,2}$/;
if (reg.test(value) == false) {
callback(new Error("请输入正确的金额"));
} else {
callback();
}
} else {
callback();
}
}, trigger: 'blur'
}],
maxnum: [{message: '请输入正确的次数', required: true, trigger: 'change'}, {
validator: function (rule, value, callback) {
var reg = /\d/;
if (reg.test(value) == false) {
callback(new Error("请输入正确的次数"));
} else {
callback();
}
}, trigger: 'blur'
}],
daymaxnum: [{message: '请输入正确的次数', required: true, trigger: 'change'}, {
validator: function (rule, value, callback) {
var reg = /\d/;
if (reg.test(value) == false) {
callback(new Error("请输入正确的次数"));
} else {
callback();
}
}, trigger: 'blur'
}],
playnum: [{message: '请输入正确的次数', required: true, trigger: 'change'}, {
validator: function (rule, value, callback) {
var reg = /\d/;
if (reg.test(value) == false) {
callback(new Error("请输入正确的次数"));
} else {
callback();
}
}, trigger: 'blur'
}],
copyright: [{message: '请填写版权信息', required: false, trigger: 'change'}],
prizecode: [{message: '请设置奖品兑换码', required: true, trigger: 'change'}, {
validator: function (rule, value, callback) {
if (value == '') {
for (var i = 0; i < app.prizeList.length; i++) {
if (app.prizeList[i].type == 1) {
callback(new Error("奖品中有实物,请设置奖品兑换码"));
return;
}
}
}
callback();
}, trigger: 'blur'
}],
btn_word: [{message: '请设置按钮文字', required: false, trigger: 'change'}],
link: [{message: '请设置按钮链接', required: false, trigger: 'change'}],
},
uploadImgIndex: 0,
}
},
methods: {
clickPrizeTab: function (e) {
// console.log(e)
},
inputProb: function (index, prob) {
var new_prob = Math.floor(prob * 100) / 100;
console.log(new_prob, prob, new_prob == prob);
if (prob != new_prob) {
this.$set(this.prizeList[index], 'prob', new_prob);
this.$forceUpdate();
console.log(this.prizeList);
}
},
submit: function (formName) {
var that = this;
this.$refs[formName].validate((valid) => {
if (valid) {
var prizeList = this.prizeList;
var prob = 0;
var formData = new FormData(document.getElementById('formSet'));
for (let i = 0; i < prizeList.length; i++) {
if (!prizeList[i].type) {
that.$message({
message: '奖品' + (i + 1) + '类型未选择',
type: 'error',
duration: 1300
});
return;
}
switch (prizeList[i].type) {
case '1':
if (!prizeList[i].prize_img) {
that.$message({
message: '奖品' + (i + 1) + '图片未上传',
type: 'error',
duration: 1300
});
return;
}
if (that.prizeList[i].img && that.prizeList[i].img.name) {
formData.append('prize_img_' + i, that.prizeList[i].img, that.prizeList[i].img.name);
}
break;
case '2':
if (!prizeList[i].integral) {
that.$message({
message: '奖品' + (i + 1) + '积分数量未填写',
type: 'error',
duration: 1500
});
return;
}
break;
case '3':
if (!prizeList[i].money) {
that.$message({
message: '奖品' + (i + 1) + '金额未填写',
type: 'error',
duration: 1300
});
return;
}
break;
}
if (!prizeList[i].prize_name) {
that.$message({
message: '奖品' + (i + 1) + '名称未填写',
type: 'error',
duration: 1300
})
return;
} else if (!prizeList[i].prizenum) {
that.$message({
message: '奖品' + (i + 1) + '数量未填写',
type: 'error',
duration: 1300
})
return;
} else if (!prizeList[i].prob) {
that.$message({
message: '奖品' + (i + 1) + '中奖概率未填写',
type: 'error',
duration: 1500
});
return;
} else if (!verProb(prizeList[i].prob)) {
that.$message({
message: '奖品' + (i + 1) + '中奖概率设置有误',
type: 'error',
duration: 2000
});
return;
}
prob += prizeList[i].prob * 1;
}
prob = Math.round(prob);
if (prob != 100) {
that.$message({
message: '奖品的中奖概率之和应为 100',
type: 'error'
});
return;
}
console.log(that.form);
console.log(that.prizeList);
for (var i in that.form) {
formData.append(i, that.form[i]);
}
formData.append('prizeList', JSON.stringify(prizeList));
that.$loading({
lock: true,
text: '请求中,请等待',
spinner: 'el-icon-loading',
background: 'rgba(255, 255, 255, 0.7)'
});
$.ajax({
url: "{:U('turntable_editad')}",
type: 'POST',
data: formData,
processData: false,// 告诉jQuery不要去设置Content-Type请求头
contentType: false,
dataType: "json",
success: function (res) {
that.$loading().close();
if (res.status == 1) {
that.$message({
message: res.msg,
type: 'success',
onClose: function () {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}
});
} else {
that.$message({
message: res.msg,
type: 'error'
})
}
}
})
}
});
}
}
})
</script>
</html>