oil-station/fuintAdmin/src/views/integral/settings/index.vue
2024-09-19 08:50:24 +08:00

408 lines
10 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-conr">
<div class="tab-box">
<div class="f-box" v-for="(item,index) in tablist" :key="index" @click="activeindex=index" :class="{ 'active' :activeindex==index}">{{item.name}}</div>
</div>
<div class="cor">
<div class="bai-box" v-if="activeindex == 0">
<div class="qizhi">
<div class="left-icon">i</div>
<div>
<div class="bigsize">每日积分签到</div>
<div class="smallsize">签到规则为连续签到、如中途漏签一天将重置从第一天开始</div>
</div>
</div>
<el-form :model="dataForm" ref="dataForm" :rules="rules" size="small" :inline="true" label-width="100px">
<el-row :gutter="24">
<el-col :span="15">
<el-form-item label="签到功能" prop="signInFunction" >
<el-radio-group v-model="dataForm.signInFunction">
<el-radio :label='0'>启用</el-radio>
<el-radio :label='1'>禁用</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="15">
<el-form-item label="适用规则" prop="" >
<el-radio-group v-model="dataForm.u">
<el-radio :label='0'>不限制</el-radio>
<el-radio :label='1'>按签到周期</el-radio>
</el-radio-group>
</el-form-item>
<el-select v-model="value" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-col>
</el-row>
<div style="width: 100%; ">
<el-form-item style="width: 24%" v-for="(item,index) in dataForm.pointsObtained" :key="index" :prop="'pointsObtained' + index" :label="item.day">
<el-input v-model.number="item.integral" placeholder="">
<template slot="append">积分</template>
</el-input>
</el-form-item>
</div>
<el-form-item label="签到规则" prop="signInRules" >
<el-input :rows="3" style="width: 1600px;" type="textarea" v-model="dataForm.signInRules"></el-input>
</el-form-item>
</el-form>
<div style="width: 1600px; margin-top: 150px; display: flex;justify-content: center ">
<el-button type="primary" @click="submit" >保存</el-button>
</div>
</div>
<div class="bai-box" v-else>
<el-form :model="dataForm" ref="dataForm" :rules="rules" size="small" :inline="true" label-width="100px">
<el-form-item label="积分说明" prop="desc">
<el-input type="textarea" v-model="dataForm.pointsRules" style="width: 1600px"></el-input>
</el-form-item>
</el-form>
<div style="width: 1600px; margin-top: 150px; display: flex;justify-content: center ">
<el-button type="primary" @click="submit" >保存</el-button>
</div>
</div>
</div>
</div>
</template>
<script>
import {getSettingsApi,updateSettingsApi } from "@/api/integral/settings";
import editor from '@/components/Editor/index'
export default {
name: "index",
// components: {Editor},
data() {
var valiNumberPass = (rule, value, callback) => {//包含小数的数字
parseFloat(value).toFixed(2)
let reg = /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g;
if (value === '') {
callback(new Error('请输入内容'));
} else if (!reg.test(value)) {
callback(new Error('请输入数字'));
} else {
callback();
}
};
return {
tablist: [
{
name: '每日签到',
},
{
name: '积分规则',
},
],
activeindex: 0,
activeName: 'first',
rules:{
desc: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
refuelPointsRules:[
{ required: true, message: '请选择积分规则', trigger: 'change' }
],
refuelSceneType:[
{ required: true, message: '请选择场景类型', trigger: 'change' }
],
refuelAmountType:[
{ required: true, message: '请选择金额类型', trigger: 'change' }
],
refuelValueParticipation:[
{ required: true, message: '请选择储值参与', trigger: 'change' }
],
refuelSceneRules:[
{ required: true, message: '请选择场景规则', trigger: 'change' }
],
refuelFuelAmount: [
{ required: true, validator:valiNumberPass, trigger: "blur" }
],
refuelPoints: [
{ required: true, message: '输入积分', trigger: "blur" },
{ type: 'number', message: '积分必须为数字值'}
],
// amount:[
// {required: true,
// validator: (rule, value, callback) => this.valiNumberPass(rule, value, callback, 'amount'),
// trigger: 'blur'
// }
// ],
rechargeGive:[
{ required: true, message: '输入积分', trigger: "blur" },
{ type: 'number', message: '积分必须为数字值'}
],
// points: [
// { required: true}
// ],
},
dataForm: {
// 积分设置ID
id: null,
// 加油积分规则
refuelPointsRules: 0,
// 加油积分功能
refuelPointsFunction: 0,
// 加油场景类型
refuelSceneType: 0,
// 加油金额类型
refuelAmountType: 0,
// 加油储值参与
refuelValueParticipation: 0,
// 加油场景规则
refuelSceneRules: 0,
// 加油消费金额
refuelConsumptionAmount: '',
// 加油积分
refuelPoints: 0,
// 加油油品金额
refuelFuelAmount: 0.0,
// 加油油品升数
refuelFuelVolume: 0.0,
// 充值赠送
rechargeGive: 0,
// 邀请赠送
inviteGive: 0,
// 邀请赠送规则
inviteGiveRules: '',
// 签到功能
signInFunction: 0,
// 签到规则
signInRules: '',
// 签到获得
pointsObtained: [
{
day:'第1天获得',
integral:0,
},
{
day:'第2天获得',
integral:0,
},
{
day:'第3天获得',
integral:0,
},
{
day:'第4天获得',
integral:0,
},
{
day:'第5天获得',
integral:0,
},
{
day:'第6天获得',
integral:0,
},
{
day:'第7天获得',
integral:0,
},
{
day:'超8天获得',
integral:0,
}
],
// 积分规则
pointsRules: ''
},
options: [{
value: '选项1',
label: '黄金糕'
}, {
value: '选项2',
label: '双皮奶'
}, {
value: '选项3',
label: '蚵仔煎'
}, {
value: '选项4',
label: '龙须面'
}, {
value: '选项5',
label: '北京烤鸭'
}],
value: ''
}
},
created() {
this.getData()
},
methods: {
handleChildValue(value) {
console.log("vale",value)
this.dataForm.pointsRules = value
},
getData() {
let file = this.dataForm
file.pointsObtained = JSON.stringify(file.pointsObtained);
file.refuelConsumptionAmount = JSON.stringify(file.refuelConsumptionAmount);
getSettingsApi(this.dataForm).then(res=>{
this.dataForm = res.data
this.dataForm.pointsObtained = JSON.parse(this.dataForm.pointsObtained)
this.dataForm.refuelConsumptionAmount = JSON.parse(res.data.refuelConsumptionAmount)
})
},
submit() {
let file = this.dataForm
// console.log()
file.pointsObtained = JSON.stringify(file.pointsObtained);
file.refuelConsumptionAmount = JSON.stringify(file.refuelConsumptionAmount);
this.dataForm = {}
updateSettingsApi(file).then(res=>{
this.$modal.msgSuccess("添加成功");
this.dataForm = {}
res.data.pointsObtained = JSON.parse(res.data.pointsObtained)
res.data.refuelConsumptionAmount = JSON.parse(res.data.refuelConsumptionAmount)
this.dataForm = res.data
}).catch(res=>{
this.$modal.msgSuccess("添加失败");
})
// this.getData()
},
cancel() {},
handleClick(tab, event) {
console.log(tab, event);
}
},
valiNumberPass(rule, value, callback, fieldName) {
this.$nextTick(() => {
// 在这里进行自定义验证逻辑value 应该在这时候被正确设置
console.log(`Validating ${fieldName}:`, value);
});
},
}
</script>
<style scoped lang="scss">
.app-container{
width: 100%;
height: 100%;
background: #f6f8f9;
}
.conten-bottom{
box-sizing: border-box;
padding: 20px 20px;
display: flex;
flex-wrap: wrap;
}
.cardbox{
margin-right: 20px;
margin-bottom: 20px;
box-sizing: border-box;
padding: 10px;
border-radius: 10px;
width: 23%;
height: 150px;
background-size:40% 70%;
background-color: #f9f9f9;
border: 1px solid rgb(196, 196, 196)
}
.tab-box {
width: 100%;
background: #fff;
display: flex;
box-sizing: border-box;
padding: 0px 50px;
}
.f-box {
height: 40px;
color: #999999;
margin-right: 50px;
display: flex;
align-items: center;
}
.active {
color: #FF9655 !important;
border-bottom: 2px solid #FF9655 !important;
}
.container {
background: #F4F5F9;
box-sizing: border-box;
//padding: 20px;
}
.tabder-box {
width: 85%;
}
.cor{
box-sizing: border-box;
padding: 15px;
background: #f9f9f9;
}
.bai-box{
border-radius: 10px;
background: #fff;
box-sizing: border-box;
padding: 10px;
height: 85vh;
}
.qizhi{
width: 100%;
border-radius: 8px;
padding: 20px;
color: #FF9655;
font-size: 16px;
background: rgba(255,150,85,0.15);
align-items: center;
display: flex;
margin-bottom: 30px;
}
.left-icon{
width: 45px;
height: 45px;
border-radius: 50%;
background: #FF9655;
display: flex;
align-items: center;
justify-content: center;
color: #fff;
font-size: 40px;
font-weight: bold;
margin-right: 25px;
}
.bigsize{
font-size: 24px;
margin-bottom: 15px;
}
</style>