web-zk-admin/src/views/marketing/tourismAct/addTourismAct.vue

570 lines
17 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.

<!--
* @Descripttion:
* @version:
* @Author: kBank
* @Date: 2023-02-23 15:59:57
-->
<template>
<div class="page">
<!-- <topBar v-if="topList.length > 0"
:topList="topList"
:moren="moren"></topBar> -->
<div class="topbox">
<div class="levelList_i"
:class="tabActive == item.id ? 'act' : ''"
v-for="(item, index) in topList"
:key="index"
@click.prevent="handleLink(item.id)">
{{ item.name }}
</div>
</div>
<!-- <div class="main_a"> -->
<div class="main">
<div v-show="tabActive==0">
<div class="tit">{{'基本信息'}}</div>
<div class="xian"></div>
<el-form :model="ruleForm"
:rules="rules"
ref="ruleForm"
label-width="auto"
class="demo-ruleForm">
<el-row>
<el-col :span="8">
<el-form-item :label="'活动名称'"
prop="actName">
<el-input clearable
v-model="ruleForm.actName"
:disabled="lookOver"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-form-item :label="'活动说明'"
prop="actExplain">
<!-- <el-input clearable
type="textarea"
v-model="ruleForm.actExplain"
:disabled="lookOver"></el-input> -->
<editor ref="sptwEditor"
:readOnly="lookOver"
v-model="ruleForm.actExplain"
:min-height="196"
:uploadUrl="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 class="flexed_l"
:disabled="lookOver"
@change="getCheckTit($event,1)"
v-model="ruleForm.checked1">{{ '注册等级' }}</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 class="flexed_l"
:disabled="lookOver"
@change="getCheckTit($event,2)"
v-model="ruleForm.checked2">{{'荣誉奖衔'}}</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 class="flexed_l"
:disabled="lookOver"
@change="getCheckTit($event,3)"
v-model="ruleForm.checked3">{{'权限中心'}}</el-checkbox>
<el-checkbox-group v-model="ruleForm.centerList"
:disabled="lookOver"
@change="getCheck">
<el-checkbox v-for="item in registList"
:key="item.value"
:label="item.value">{{ item.label }}</el-checkbox>
</el-checkbox-group>
</div> -->
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item :label="'活动时间'"
prop="ruleFormTime">
<el-date-picker :disabled="lookOver"
v-model="ruleForm.ruleFormTime"
@change="changeTime"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange"
:range-separator="'至'"
:start-placeholder="'开始日期'"
:end-placeholder="'结束日期'">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item :label="'展示时间'"
prop="ruleFormTime1">
<el-date-picker :disabled="lookOver"
v-model="ruleForm.ruleFormTime1"
@change="changeTime1"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange"
:range-separator="'至'"
:start-placeholder="'开始日期'"
:end-placeholder="'结束日期'">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<!-- <directUpdata v-show="tabActive==2"
ref="directUpdata"></directUpdata> -->
</div>
<div class="footer"
v-show="controlType!=4">
<el-button size="small"
class="cancelBtn"> {{ '取消' }}</el-button>
<el-button size="small"
@click="submit('ruleForm')"
class="sureBtn"> {{ '确认' }}</el-button>
</div>
<!-- </div> -->
</div>
</template>
<script>
import Editor from '@/components/Editor'
import * as api from '@/api/giftGoods.js'
import topBar from '@/components/topBar'
import ImageUpload from '@/components/ImageUpload'
// import directUpdata from '@/views/marketing/benefitsGift/directUpdata'
export default {
name: 'GiftGoodsList',
components: {
topBar,
ImageUpload,
// directUpdata,
Editor
},
data() {
return {
tabActive: 0,
topList: [
{
name: '基本信息',
id: 0,
},
],
uploadImgUrl: process.env.VUE_APP_BASE_API + '/system/upload',
ruleForm: {
checked1: false,
checked2: false,
checked3: false,
levelList: [],
realList: [],
centerList: [],
goalMemberConfigList: [],
ruleFormTime:[],
ruleFormTime1:[],
},
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: '',
repurchaseCouponsShowList: [],
controlType: '',
addData: {},
}
},
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).activityParam
this.agbrList = JSON.parse(this.$route.query.data).agbrList
this.getDetails1()
}
},
methods: {
getDetails() {
api
.tourismDetails({
pkId: this.pkId,
})
.then((res) => {
this.addData = res.data
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.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,
])
let arr1 = [],
arr2 = [],
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.directUpdata.getPage(
// this.addData.recommendUpgradeList || ''
// )
let that = this
setTimeout(() => {
that.getCheck()
}, 50)
})
},
getDetails1() {
this.$set(this.ruleForm, 'actName', this.addData.actName)
this.$set(
this.ruleForm,
'actExplain',
this.addData.actExplain
)
this.$set(this.ruleForm, 'actCover', this.addData.actCover)
this.$set(this.ruleForm, 'ruleFormTime', [
this.addData.actStartDate,
this.addData.actEndDate,
])
this.$set(this.ruleForm, 'ruleFormTime1', [
this.addData.disStartDate,
this.addData.disEndDate,
])
let arr1 = [],
arr2 = [],
arr3 = []
this.addData.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.directUpdata.getPage(this.addData.recommendUpgradeList || '')
let that = this
setTimeout(() => {
that.getCheck()
}, 500)
},
// 切换tab
handleLink(id) {
this.tabActive = id
},
// 单选
getCheck() {
let arr1 = []
let arr2 = []
let 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
})
},
submit() {
this.$refs['ruleForm'].validate((valid) => {
if (valid) {
let obj = Object.assign(
{},
{
controlType: this.controlType,
activityParam: this.ruleForm,
}
)
this.$router.push({
path: 'tourismActZxqc',
query: {
data: JSON.stringify(obj),
approvalBusiness: 735,
controlType:this.controlType
},
})
// let url = ''
// if (this.pkId) {
// url = api.activityUpdata
// } else {
// url = api.activitySave
// }
// url(obj).then((res) => {
// if (res.code == 200) {
// this.$message({
// message: res.msg,
// type: 'success',
// })
// this.$router.replace({
// path: 'giftGoodsList',
// })
// }
// })
}
})
},
},
}
</script>
<style lang="scss" scoped>
.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);
}
::v-deep .el-select {
width: 100%;
}
}
.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;
.thebtn1 {
background: #3181e5;
color: #ffffff;
padding: 9px 45px;
}
.thebtn2 {
background: #cccccc;
color: #ffffff;
padding: 9px 45px;
}
}
.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 5px 0;
display: flex;
// background: skyblue;
.levelList_i {
padding: 4px 15px;
margin-left: 20px;
position: relative;
cursor: pointer;
min-width: 88px;
// height: 28px;
border-radius: 17px;
border: 1px solid #cccccc;
font-size: 12px;
font-family: MicrosoftYaHei;
text-align: center;
// line-height: 28px;
}
.act {
color: #ffffff;
background: #c8161d;
}
}
::v-deep .el-form-item {
margin-bottom: 20px!important;
}
</style>