dev2 #1
@ -7,7 +7,7 @@
|
||||
width="50%"
|
||||
@close="close"
|
||||
>
|
||||
<el-form ref="form" label-width="120px" :model="form" :rules="rules">
|
||||
<el-form ref="form" label-width="150px" :model="form" :rules="rules">
|
||||
<el-form-item :label="__('活动名称')" prop="activity_title">
|
||||
<el-input
|
||||
v-model="form.activity_title"
|
||||
@ -45,7 +45,7 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item :label="__('砍价商品')" prop="product_item_name">
|
||||
<el-form-item :label="__('砍价商品')" prop="product_item_name">
|
||||
<el-input
|
||||
v-model="form.product_item_name"
|
||||
clearable
|
||||
@ -80,9 +80,9 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item :label="__('砍价方式')" prop="cut_down_type">
|
||||
<el-radio v-model="form.cut_down_type" :label="1">
|
||||
<!-- <el-radio v-model="form.cut_down_type" :label="1">
|
||||
{{ __('固定价格') }}
|
||||
</el-radio>
|
||||
</el-radio> -->
|
||||
<el-radio v-model="form.cut_down_type" :label="2">
|
||||
{{ __('价格范围') }}
|
||||
</el-radio>
|
||||
@ -109,10 +109,106 @@
|
||||
v-model="form.cut_down_user_num"
|
||||
:label="__('砍价人数')"
|
||||
:max="10000000"
|
||||
:min="0"
|
||||
:min="2"
|
||||
/>
|
||||
<el-tooltip
|
||||
content="砍价成功的人数,例如设置为3人,一共要3个人砍价才能达到底价下单(默认最少为2)"
|
||||
placement="top"
|
||||
effect="dark"
|
||||
style="margin-left: 8px;"
|
||||
>
|
||||
<i class="el-icon-question" style="cursor: pointer; color: #909399; font-size: 14px;"></i>
|
||||
</el-tooltip>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.cut_down_type === 2"
|
||||
:label="__('助力好友砍价次数')"
|
||||
prop="user_cutprice_num"
|
||||
>
|
||||
<div style="display: flex; align-items: center;">
|
||||
<el-input-number
|
||||
v-model="form.user_cutprice_num"
|
||||
:label="__('助力好友砍价次数')"
|
||||
:max="10000000"
|
||||
:min="5"
|
||||
style="width: 200px;"
|
||||
/>
|
||||
<el-tooltip
|
||||
content="在活动期间每个人一共可以助力好友的人数(默认最少为5)"
|
||||
placement="top"
|
||||
effect="dark"
|
||||
style="margin-left: 8px;"
|
||||
>
|
||||
<i class="el-icon-question" style="cursor: pointer; color: #909399; font-size: 14px;"></i>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item :label="__('砍价第一刀')" prop="cut_first_type">
|
||||
<el-radio-group v-model="form.cut_first_type">
|
||||
<el-radio :label="1" >
|
||||
<span>{{ __('首刀比例') }}</span>
|
||||
<el-tooltip
|
||||
content="例如首刀比例为30%,100块钱的商品,第一刀砍30块"
|
||||
placement="top"
|
||||
effect="dark"
|
||||
>
|
||||
<i class="el-icon-question" style="margin-left: 5px; cursor: pointer;"></i>
|
||||
</el-tooltip>
|
||||
</el-radio>
|
||||
|
||||
<el-radio :label="2" style="margin-left: 20px;">
|
||||
<span>{{ __('首刀金额') }}</span>
|
||||
<el-tooltip
|
||||
content="例如首刀金额为20,50块钱的商品,第一刀砍20块"
|
||||
placement="top"
|
||||
effect="dark"
|
||||
>
|
||||
<i class="el-icon-question" style="margin-left: 5px; cursor: pointer;"></i>
|
||||
</el-tooltip>
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="首刀比例(单位-%)" size="normal" v-if='form.cut_first_type == 1'>
|
||||
<el-input v-model="form.cut_first_percent" placeholder="请输入首刀比例" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="首刀金额(单位/块)" size="normal" v-if='form.cut_first_type == 2'>
|
||||
<el-input v-model="form.cut_first_price " placeholder="请输入首刀金额" clearable />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
|
||||
<el-form ref="touzi" label-width="250px" :model="touzi" :rules="touziRules">
|
||||
<!-- 总标签 + 问号提示 -->
|
||||
<el-form-item label="砍价后投骰子的点数(单位-%)" class="total-label-item">
|
||||
<el-tooltip
|
||||
content="设置骰子不同点数对应的中奖比例,6个点数比例总和不能超过100%"
|
||||
placement="top"
|
||||
effect="dark"
|
||||
style="margin-left: 8px;"
|
||||
>
|
||||
<i class="el-icon-question" style="cursor: pointer; color: #909399; font-size: 14px;"></i>
|
||||
</el-tooltip>
|
||||
</el-form-item>
|
||||
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12" v-for="(item,index) in touzi.luckyList" :key="index">
|
||||
<div class="grid-content bg-purple">
|
||||
<el-form-item :label="`点数${item.doubleValue}`" prop="luckyList" :error="touziErrorMsg">
|
||||
<el-input
|
||||
v-model="item.probability"
|
||||
placeholder="请输入比例"
|
||||
type="number"
|
||||
clearable
|
||||
@blur="checkProbabilityTotal(null, null, ()=>{})"
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="close">{{ __('取消') }}</el-button>
|
||||
<el-button type="primary" @click="save">{{ __('确定') }}</el-button>
|
||||
@ -135,20 +231,42 @@
|
||||
form: {
|
||||
product_item_name: '',
|
||||
item_id: '',
|
||||
cut_down_type: 1,
|
||||
cut_down_type: 2,
|
||||
cut_down_user_num: 0,
|
||||
cut_down_fixed_price: '',
|
||||
activity_type_id: 1124,
|
||||
activity_starttime: '',
|
||||
activity_endtime: '',
|
||||
cut_hour:'',
|
||||
product_count:''
|
||||
diceObj:'',
|
||||
cut_first_type:1,
|
||||
product_count:'',
|
||||
user_cutprice_num:'',
|
||||
cut_first_percent:'',
|
||||
cut_first_price:'',
|
||||
},
|
||||
touzi:{
|
||||
luckyList:[
|
||||
{doubleValue:'1',probability:'45'},
|
||||
{doubleValue:'2',probability:'45'},
|
||||
{doubleValue:'3',probability:'2'},
|
||||
{doubleValue:'4',probability:'3'},
|
||||
{doubleValue:'5',probability:'2'},
|
||||
{doubleValue:"6",probability:'3'},
|
||||
],
|
||||
lottery_num:1
|
||||
},
|
||||
touziErrorMsg: '', // 骰子比例总和错误提示
|
||||
touziRules: {
|
||||
probabilityList: [
|
||||
{
|
||||
validator: this.checkProbabilityTotal,
|
||||
trigger: ['blur', 'submit']
|
||||
}
|
||||
]
|
||||
},
|
||||
title: '',
|
||||
dialogFormVisible: false,
|
||||
mounted() {
|
||||
this.$forceUpdate()
|
||||
},
|
||||
rules: {
|
||||
activity_title: [
|
||||
{ required: true, trigger: 'blur', message: this.__('活动标题') },
|
||||
@ -200,6 +318,9 @@
|
||||
},
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.$forceUpdate()
|
||||
},
|
||||
computed: {
|
||||
isReadOnly() {
|
||||
return this.form.activity_id !== undefined
|
||||
@ -239,22 +360,41 @@
|
||||
cut_down_type: row.activity_rule.cut_down_type,
|
||||
cut_down_user_num: row.activity_rule.cut_down_user_num,
|
||||
cut_hour:row.cut_hour,
|
||||
product_count:row.product_count
|
||||
product_count:row.product_count,
|
||||
user_cutprice_num:row.activity_rule.user_cutprice_num,
|
||||
cut_first_type:row.activity_rule.cut_first_type,//空初始化
|
||||
cut_first_percent:row.activity_rule.cut_first_percent,
|
||||
cut_first_price:row.activity_rule.cut_first_price,
|
||||
}
|
||||
let lucky_turn=row.lucky_turn
|
||||
this.tranformData(lucky_turn)
|
||||
}
|
||||
|
||||
this.dialogFormVisible = true
|
||||
},
|
||||
tranformData(lucky_turn){
|
||||
if(this.form.cut_first_percent){
|
||||
this.form.cut_first_type=1
|
||||
}else if(this.form.cut_first_price){
|
||||
this.form.cut_first_type=2
|
||||
}
|
||||
this.touzi=JSON.parse(lucky_turn)
|
||||
},
|
||||
close() {
|
||||
this.form = {
|
||||
product_item_name: '',
|
||||
item_id: '',
|
||||
cut_down_type: 1,
|
||||
cut_down_type: 2,
|
||||
cut_down_fixed_price: '',
|
||||
user_cutprice_num:5,
|
||||
activity_type_id: 1124,
|
||||
activity_starttime: '',
|
||||
cut_down_user_num: '',
|
||||
activity_endtime: '',
|
||||
cut_first_type:1,
|
||||
product_count:'',
|
||||
cut_first_percent:'',
|
||||
cut_first_price:'',
|
||||
}
|
||||
this.$refs['form'].resetFields()
|
||||
this.dialogFormVisible = false
|
||||
@ -262,7 +402,38 @@
|
||||
showItemTable() {
|
||||
this.$refs['productItemTable'].showTable()
|
||||
},
|
||||
save() {
|
||||
diceObjToStr(){
|
||||
this.form.diceObj = JSON.stringify(this.touzi);
|
||||
},
|
||||
checkProbabilityTotal(rule, value, callback) {
|
||||
// 计算所有输入框的数值总和
|
||||
const total = this.touzi.luckyList.reduce((sum, item) => {
|
||||
// 处理空值/非数字:空值按0算
|
||||
const num = Number(item.probability) || 0
|
||||
return sum + num
|
||||
}, 0)
|
||||
|
||||
// 校验逻辑
|
||||
if (total > 100) {
|
||||
this.touziErrorMsg = '6个点数比例总和不能超过100%'
|
||||
callback(new Error('6个点数比例总和不能超过100%'))
|
||||
} else if (total === 0) {
|
||||
this.touziErrorMsg = '请至少输入一个点数比例'
|
||||
callback(new Error('请至少输入一个点数比例'))
|
||||
} else {
|
||||
this.touziErrorMsg = '' // 清空错误提示
|
||||
callback() // 校验通过
|
||||
}
|
||||
},
|
||||
async save() {
|
||||
let touziValid = true
|
||||
try {
|
||||
await this.$refs['touzi'].validate()
|
||||
} catch (err) {
|
||||
touziValid = false
|
||||
}
|
||||
if (!touziValid) return
|
||||
this.diceObjToStr()
|
||||
this.$refs['form'].validate(async (valid) => {
|
||||
if (valid) {
|
||||
if (this.form.activity_id && this.form.activity_id != undefined) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user