dev2 #1

Open
panjunjie wants to merge 174 commits from dev2 into main
Showing only changes of commit 2acb439c9d - Show all commits

View File

@ -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="例如首刀金额为2050块钱的商品第一刀砍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) {