web-zk-admin/src/views/marketing/plantCommonweal/addCommonWeal.vue

652 lines
19 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="page">
<!-- <topBar v-if="topList.length > 0"
:topList="topList"
:moren="moren"></topBar> -->
<div class="topbox">
<div
v-for="(item, index) in topList"
:key="index"
class="levelList_i"
:class="tabActive == item.id ? 'act' : ''"
@click.prevent="handleLink(item.id)"
>
{{ item.name }}
</div>
</div>
<div class="main">
<div v-show="tabActive == 0">
<div class="tit">{{'基本信息'}}</div>
<div class="xian" />
<el-form
ref="ruleForm"
:model="ruleForm"
:rules="rules"
label-width="auto"
class="demo-ruleForm"
>
<el-row>
<el-col :span="12">
<el-form-item :label="'活动名称'" prop="actName">
<el-input
v-model="ruleForm.actName"
clearable
:disabled="lookOver"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item :label="'活动说明'" prop="actExplain">
<editor
ref="sptwEditor"
v-model="ruleForm.actExplain"
:disabled="lookOver"
:read-only="lookOver"
:min-height="196"
:upload-url="uploadImgUrl"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item :label="'活动封面'" prop="actCover">
<imageUpload v-model="ruleForm.actCover" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item :label="'目标用户群体'" required>
<div class="flexed">
<el-checkbox
v-model="ruleForm.checked1"
:disabled="lookOver"
class="flexed_l"
@change="getCheckTit($event, 1)"
>{{ '注册等级' }}</el-checkbox>
<el-checkbox-group
v-model="ruleForm.levelList"
:disabled="lookOver"
@change="getCheck"
>
<el-checkbox
v-for="item in gradeList"
:key="item.pkId"
:label="item.pkId"
>{{ item.gradeName }}</el-checkbox>
</el-checkbox-group>
</div>
<div class="flexed">
<el-checkbox
v-model="ruleForm.checked2"
:disabled="lookOver"
class="flexed_l"
@change="getCheckTit($event, 2)"
>{{'荣誉奖衔'}}</el-checkbox>
<el-checkbox-group
v-model="ruleForm.realList"
:disabled="lookOver"
@change="getCheck"
>
<el-checkbox
v-for="item in awardsList"
:key="item.pkId"
:label="item.pkId"
>{{ item.awardsName }}</el-checkbox>
</el-checkbox-group>
</div>
<div class="flexed">
<el-checkbox
v-model="ruleForm.checked3"
:disabled="lookOver"
class="flexed_l"
@change="getCheckTit($event, 3)"
>{{'权限中心'}}</el-checkbox>
<el-checkbox-group
v-model="ruleForm.centerList"
@change="getCheck"
>
<el-checkbox
v-for="item in registList"
:key="item.value"
:disabled="lookOver"
:label="item.value"
>{{ item.label }}</el-checkbox>
</el-checkbox-group>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4">
<el-form-item :label="'是否强弹'">
<el-radio-group v-model="ruleForm.isStrongAlert" :disabled="lookOver">
<el-radio :label="0">是</el-radio>
<el-radio :label="1">否</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item :label="'活动时间'" prop="ruleFormTime">
<el-date-picker
v-model="ruleForm.ruleFormTime"
:disabled="lookOver"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange"
:range-separator="'至'"
:start-placeholder="'开始日期'"
:end-placeholder="'结束日期'"
@change="changeTime"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item :label="'展示时间'" prop="ruleFormTime1">
<el-date-picker
v-model="ruleForm.ruleFormTime1"
:disabled="lookOver"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange"
:range-separator="'至'"
:start-placeholder="'开始日期'"
:end-placeholder="'结束日期'"
@change="changeTime1"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<newgiftRules v-show="tabActive == 1" ref="newgiftRules" />
</div>
<div class="footer" v-show="controlType!=4">
<el-button size="small" class="cancelBtn button-s" style="background: #F9F9F9" @click="cancelTap"> {{ '取消' }}</el-button>
<el-button
type="primary"
class="sureBtn button-s"
@click="submit('ruleForm')"
> {{ '确认' }}</el-button>
</div>
<!-- </div> -->
</div>
</template>
<script>
import * as api from '@/api/giftGoods.js'
import * as gif from '@/api/newgift.js'
import topBar from '@/components/topBar'
import ImageUpload from '@/components/ImageUpload'
import newgiftRules from '@/views/marketing/plantCommonweal/commonRoles.vue'
import Editor from '@/components/Editor/index.vue'
import {treeRulePickDetail, treeRulePickSave, treeRulePickUpdate} from '@/api/giftGoods.js'
export default {
name: 'NewgiftInfo',
components: {
Editor,
topBar,
ImageUpload,
newgiftRules
},
data() {
return {
uploadImgUrl: process.env.VUE_APP_BASE_API + '/system/upload',
// moren: "newgiftInfo",
topList: [
{
name: '基本信息',
id: 0
},
{
name: '规则设置',
id: 1
}
],
ruleForm: {
isStrongAlert: 0,
checked1: false,
checked2: false,
checked3: false,
levelList: [],
realList: [],
centerList: [],
addPlantCommonwealList: [],
treeRuleConfigList: []
},
rules: {
actName: [
{ required: true, message: '请输入活动名称', trigger: 'blur' }
],
actExplain: [
{ required: true, message: '请输入活动说明', trigger: 'blur' }
],
actCover: [
{ required: true, message: '请上传活动封面', trigger: 'change' }
],
goalMemberConfigList: [
{ required: true, message: '请选择目标用户群体', trigger: 'change' }
],
ruleFormTime: [
{ required: true, message: '请选择活动时间', trigger: 'change' }
],
ruleFormTime1: [
{ required: true, message: '请选择展示时间', trigger: 'change' }
]
},
lookOver: false,
gradeList: [],
awardsList: [],
registList: [],
pkId: '',
waresConfigParam: [],
tabActive: 0,
controlType: ''
}
},
mounted() {
this.getData()
// 1=新增,2=修改,3=删除4查看
if (
this.$route.query.controlType == 4 ||
this.$route.query.controlType == 3
) {
this.lookOver = true
} else {
this.lookOver = false
}
this.controlType = this.$route.query.controlType
this.pkId = this.$route.query.pkId || ''
if (this.pkId) {
this.getDetails()
}
if (this.$route.query.data) {
this.addData = JSON.parse(this.$route.query.data)
console.log('%c [ this.addData ]-276', 'font-size:13px; background:#ec9012; color:#ffd456;', this.addData)
this.getDetails1()
}
},
methods: {
cancelTap() {
this.$router.go(-1)
},
// 切换tab
handleLink(id) {
this.tabActive = id
// if (this.pkId) {
// this.$refs.newgiftRules.getPage(this.ruleForm)
// }
},
getDetails() {
treeRulePickDetail({
pkId: this.pkId
})
.then((res) => {
this.waresConfigParam = res.data.waresConfigParam
// this.ruleForm.treeRuleConfigList = res.data.treeRuleConfigList
// this.$set(this.ruleForm, 'treeRuleConfigList', res.data.treeRuleConfigList)
this.$set(this.ruleForm, 'actName', res.data.actName)
this.$set(this.ruleForm, 'actExplain', res.data.actExplain)
this.$set(this.ruleForm, 'actCover', res.data.actCover)
this.ruleForm.pkId = res.data.pkId
this.ruleForm.pkBaseId = res.data.pkBaseId
this.ruleForm.isStrongAlert = res.data.isStrongAlert
this.ruleForm.actStartDate = res.data.actStartDate
this.ruleForm.actEndDate = res.data.actEndDate
this.ruleForm.disStartDate = res.data.disStartDate
this.ruleForm.disEndDate = res.data.disEndDate
this.$set(this.ruleForm, 'ruleFormTime', [
res.data.actStartDate,
res.data.actEndDate
])
this.$set(this.ruleForm, 'ruleFormTime1', [
res.data.disStartDate,
res.data.disEndDate
])
const arr1 = []
const arr2 = []
const arr3 = []
res.data.goalMemberConfigList.forEach((item) => {
if (item.memberType == 1) {
arr1.push(item.pkLevel)
} else if (item.memberType == 2) {
arr2.push(item.pkLevel)
} else if (item.memberType == 3) {
arr3.push(item.pkLevel)
}
})
this.$set(this.ruleForm, 'levelList', arr1)
this.$set(this.ruleForm, 'realList', arr2)
this.$set(this.ruleForm, 'centerList', arr3)
this.$refs.newgiftRules.getPage(
res.data.treeRuleConfigList || ''
)
const that = this
setTimeout(() => {
that.getCheck()
}, 500)
})
},
getDetails1() {
this.$set(this.ruleForm, 'actName', this.addData.activityParam.actName)
this.$set(
this.ruleForm,
'actExplain',
this.addData.activityParam.actExplain
)
this.$set(this.ruleForm, 'actCover', this.addData.activityParam.actCover)
this.ruleForm.pkId = this.addData.activityParam.pkId
this.ruleForm.isStrongAlert = this.addData.activityParam.isStrongAlert
this.ruleForm.actStartDate = this.addData.activityParam.actStartDate
this.ruleForm.actEndDate = this.addData.activityParam.actEndDate
this.ruleForm.disStartDate = this.addData.activityParam.disStartDate
this.ruleForm.disEndDate = this.addData.activityParam.disEndDate
this.$set(this.ruleForm, 'ruleFormTime', [
this.addData.activityParam.actStartDate,
this.addData.activityParam.actEndDate,
])
this.$set(this.ruleForm, 'ruleFormTime1', [
this.addData.activityParam.disStartDate,
this.addData.activityParam.disEndDate,
])
let arr1 = [],
arr2 = [],
arr3 = []
this.addData.activityParam.goalMemberConfigList.forEach((item) => {
if (item.memberType == 1) {
arr1.push(item.pkLevel)
} else if (item.memberType == 2) {
arr2.push(item.pkLevel)
} else if (item.memberType == 3) {
arr3.push(item.pkLevel)
}
})
this.$set(this.ruleForm, 'levelList', arr1)
this.$set(this.ruleForm, 'realList', arr2)
this.$set(this.ruleForm, 'centerList', arr3)
this.$refs.newgiftRules.getPage(
this.addData.activityParam.treeRuleConfigList || ''
)
let that = this
setTimeout(() => {
that.getCheck()
}, 500)
},
// 单选
getCheck() {
const arr1 = []
const arr2 = []
const arr3 = []
// 等级
this.ruleForm.levelList.forEach((item) => {
arr1.push({
memberType: 1,
pkLevel: item
})
})
// 奖衔
this.ruleForm.realList.forEach((item) => {
arr2.push({
memberType: 2,
pkLevel: item
})
})
// 权限
this.ruleForm.centerList.forEach((item) => {
arr3.push({
memberType: 3,
pkLevel: item
})
})
this.ruleForm.goalMemberConfigList = [...arr1, ...arr2, ...arr3]
// 单选全选全取消
if (this.ruleForm.levelList.length == this.gradeList.length) {
this.ruleForm.checked1 = true
} else {
this.ruleForm.checked1 = false
}
if (this.ruleForm.realList.length == this.awardsList.length) {
this.ruleForm.checked2 = true
} else {
this.ruleForm.checked2 = false
}
if (this.ruleForm.centerList.length == this.registList.length) {
this.ruleForm.checked3 = true
} else {
this.ruleForm.checked3 = false
}
},
// 全选
getCheckTit(val, index) {
// 等级
if (index == 1 && val) {
this.ruleForm.levelList = this.gradeList.map((item) => {
return item.pkId
})
} else if (index == 1 && !val) {
this.ruleForm.levelList = []
}
// 奖衔
if (index == 2 && val) {
this.ruleForm.realList = this.awardsList.map((item) => {
return item.pkId
})
} else if (index == 2 && !val) {
this.ruleForm.realList = []
}
// 权限
if (index == 3 && val) {
this.ruleForm.centerList = this.registList.map((item) => {
return item.value
})
} else if (index == 3 && !val) {
this.ruleForm.centerList = []
}
this.getCheck()
},
changeTime(val) {
this.ruleForm.actStartDate = val[0]
this.ruleForm.actEndDate = val[1]
},
changeTime1(val) {
this.ruleForm.disStartDate = val[0]
this.ruleForm.disEndDate = val[1]
},
getData() {
api.awardsList().then((res) => {
this.awardsList = res.rows
})
api.gradeList().then((res) => {
this.gradeList = res.rows
})
api.registerPowerState().then((res) => {
this.registList = res.data
})
},
//判断值是否为空
isEmpty(v) {
switch (typeof v) {
case 'undefined':
return true;
case 'string':
if (v.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '').length == 0) return true;
break;
case 'boolean':
if (!v) return true;
break;
case 'number':
if (0 === v || isNaN(v)) return true;
break;
case 'object':
if (null === v || v.length === 0) return true;
for (var i in v) {
return false;
}
return true;
}
return false;
},
submit() {
this.$refs['ruleForm'].validate((valid) => {
if (valid) {
// treeRuleConfigList
let a = Object.assign({}, this.ruleForm, {
treeRuleConfigList: this.$refs.newgiftRules.allData,
})
let obj = Object.assign({
controlType: this.controlType,
activityParam: a,
})
if (this.controlType == 1) {
this.$router.push({
path: 'plantZxqc',
query: {
data: JSON.stringify(obj),
approvalBusiness: 732,
},
})
} else if (this.controlType == 2) {
this.$router.push({
path: 'plantZxqc',
query: {
data: JSON.stringify(obj),
approvalBusiness: 733,
},
})
} else if (this.controlType == 3) {
this.$router.push({
path: 'plantZxqc',
query: {
data: JSON.stringify(obj),
approvalBusiness: 734,
},
})
}
}
})
}
}
}
</script>
<style lang="scss" scoped>
.button-s{
width: 137px;
height: 38px;
}
.footer {
height: 68px;
background: #ffffff;
box-shadow: 0px -3px 20px 0px rgba(204, 204, 204, 0.5);
// margin: 0 20px;
display: flex;
justify-content: center;
align-items: center;
position: absolute;
bottom: 0px;
width: 100%;
.thebtn1 {
background: #3181e5;
color: #ffffff;
padding: 9px 45px;
}
.thebtn2 {
background: #cccccc;
color: #ffffff;
padding: 9px 45px;
}
}
.el-upload--picture-card{
min-width: 100px;
min-height: 100px;
}
.sureBtn{
background:#c8161d ;
border: none;
}
.cancelBtn{
}
.page {
padding: 20px;
background: #f9f9f9;
font-size: 14px;
.main_a {
height: calc(100vh - 144px);
display: flex;
flex-direction: column;
}
.main {
background: #ffffff;
border-radius: 8px;
// height: calc(100vh - 124px);
box-shadow: 0px 2px 20px 0px rgba(238, 238, 238, 0.5);
padding-bottom: 40px;
}
::v-deep .el-select {
width: 100%;
}
}
.tit {
font-size: 14px;
font-weight: bold;
color: #333333;
padding: 0 20px;
border-left: 5px solid #c8161d;
margin: 20px 0 10px 0;
}
.xian {
height: 1px;
background: rgba(0, 0, 0, 0.1);
}
.demo-ruleForm {
padding: 20px 0;
}
::v-deep .el-date-editor--datetimerange {
width: auto !important;
}
.flexed {
display: flex;
}
.flexed_l {
margin-right: 20px;
}
.topbox {
align-items: center;
padding: 0px 0 3px 0;
display: flex;
// background: skyblue;
.levelList_i {
margin-left: 20px;
position: relative;
cursor: pointer;
padding: 4px 15px;
// width: 88px;
// height: 34px;
border-radius: 17px;
border: 1px solid #cccccc;
font-size: 12px;
font-family: MicrosoftYaHei;
text-align: center;
// line-height: 34px;
}
.act {
color: #ffffff;
background: #c8161d;
}
}
::v-deep .el-form-item {
margin-bottom: 20px!important;
}
</style>