|
|
|
|
@ -1,6 +1,6 @@
|
|
|
|
|
<template>
|
|
|
|
|
<div>
|
|
|
|
|
<xy-dialog :is-show.sync="isShow" type="form" title="新增广告" :form="form" :rules="rules" @submit="submit">
|
|
|
|
|
<xy-dialog :is-show.sync="isShow" type="form" :title="type === 'add' ? '新增广告' : '编辑广告'" :form="form" :rules="rules" @submit="submit">
|
|
|
|
|
<template v-slot:name>
|
|
|
|
|
<div class="xy-table-item">
|
|
|
|
|
<div class="xy-table-item-label">
|
|
|
|
|
@ -17,7 +17,9 @@
|
|
|
|
|
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>类型:
|
|
|
|
|
</div>
|
|
|
|
|
<div class="xy-table-item-content">
|
|
|
|
|
<el-select clearable placeholder="请选择类型" v-model="form.type" style="width: 300px;"/>
|
|
|
|
|
<el-select clearable placeholder="请选择类型" v-model="form.type" style="width: 300px;">
|
|
|
|
|
<el-option v-for="item in types" :value="item.value" :key="item.value" :label="item.label"></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
@ -27,7 +29,9 @@
|
|
|
|
|
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>发布系统:
|
|
|
|
|
</div>
|
|
|
|
|
<div class="xy-table-item-content">
|
|
|
|
|
<el-select clearable placeholder="请选择发布系统" v-model="form.system" style="width: 300px;"/>
|
|
|
|
|
<el-select clearable placeholder="请选择发布系统" v-model="form.system" style="width: 300px;">
|
|
|
|
|
<el-option v-for="item in systems" :key="item.value" :value="item.value" :label="item.label"></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
@ -37,17 +41,21 @@
|
|
|
|
|
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>跳转方向:
|
|
|
|
|
</div>
|
|
|
|
|
<div class="xy-table-item-content">
|
|
|
|
|
<el-select clearable placeholder="请选择跳转方向" v-model="form.to" style="width: 300px;"/>
|
|
|
|
|
<el-select clearable placeholder="请选择跳转方向" v-model="form.to" style="width: 300px;">
|
|
|
|
|
<el-option v-for="item in toUrls" :key="item.value" :value="item.value" :label="item.label"></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<template v-slot:status>
|
|
|
|
|
<template v-slot:state>
|
|
|
|
|
<div class="xy-table-item">
|
|
|
|
|
<div class="xy-table-item-label">
|
|
|
|
|
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>状态:
|
|
|
|
|
</div>
|
|
|
|
|
<div class="xy-table-item-content">
|
|
|
|
|
<el-select clearable placeholder="请选择状态" v-model="form.status" style="width: 300px;"/>
|
|
|
|
|
<el-select clearable placeholder="请选择状态" v-model="form.state" style="width: 300px;">
|
|
|
|
|
<el-option v-for="item in states" :value="item.value" :label="item.label" :key="item.value"></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
@ -57,7 +65,7 @@
|
|
|
|
|
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>排序:
|
|
|
|
|
</div>
|
|
|
|
|
<div class="xy-table-item-content">
|
|
|
|
|
<el-select clearable placeholder="请选择排序" v-model="form.sort" style="width: 300px;"/>
|
|
|
|
|
<el-input clearable placeholder="请填写排序" v-model="form.sort" style="width: 300px;"/>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
@ -67,7 +75,16 @@
|
|
|
|
|
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>有效期:
|
|
|
|
|
</div>
|
|
|
|
|
<div class="xy-table-item-content">
|
|
|
|
|
<el-date-picker append-to-body clearable placeholder="请选择有效期" v-model="form.effectDate" style="width: 300px;"/>
|
|
|
|
|
<el-date-picker
|
|
|
|
|
:editable="false"
|
|
|
|
|
type="daterange"
|
|
|
|
|
append-to-body
|
|
|
|
|
clearable
|
|
|
|
|
placeholder="请选择有效期"
|
|
|
|
|
v-model="form.effectDate"
|
|
|
|
|
style="width: 300px;"
|
|
|
|
|
format="yyyy-MM-dd"
|
|
|
|
|
value-format="yyyy-MM-dd"/>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
@ -77,12 +94,16 @@
|
|
|
|
|
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>图片:
|
|
|
|
|
</div>
|
|
|
|
|
<div class="xy-table-item-content">
|
|
|
|
|
<img v-if="form.img" :src="form.img" class="avatar">
|
|
|
|
|
<el-upload
|
|
|
|
|
v-else
|
|
|
|
|
class="avatar-uploader"
|
|
|
|
|
action=" "
|
|
|
|
|
:show-file-list="false">
|
|
|
|
|
<img v-if="form.img" :src="form.img" class="avatar">
|
|
|
|
|
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
|
|
|
|
|
list-type="picture-card"
|
|
|
|
|
action="/api/admin/upload-file"
|
|
|
|
|
:show-file-list="false"
|
|
|
|
|
:on-error="uploadFail"
|
|
|
|
|
:on-success="uploadSuccess">
|
|
|
|
|
<i class="el-icon-plus avatar-uploader-icon"></i>
|
|
|
|
|
</el-upload>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
@ -92,33 +113,191 @@
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
import {store,show,update} from '@/api/ad'
|
|
|
|
|
import {getparameter} from '@/api/system/dictionary'
|
|
|
|
|
import { Message } from 'element-ui'
|
|
|
|
|
export default {
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
id:'',
|
|
|
|
|
type:'add',
|
|
|
|
|
isShow:false,
|
|
|
|
|
systems:[],
|
|
|
|
|
toUrls:[],
|
|
|
|
|
types:[{label:'首页轮播图',value:1}],
|
|
|
|
|
states:[
|
|
|
|
|
{
|
|
|
|
|
label:'禁用',
|
|
|
|
|
value:0
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
label:'启动',
|
|
|
|
|
value:1
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
form:{
|
|
|
|
|
name:'',
|
|
|
|
|
type:'',
|
|
|
|
|
system:'',
|
|
|
|
|
to:'',
|
|
|
|
|
status:'',
|
|
|
|
|
state:'',
|
|
|
|
|
sort:'',
|
|
|
|
|
effectDate:[],
|
|
|
|
|
img:''
|
|
|
|
|
},
|
|
|
|
|
rules:{
|
|
|
|
|
|
|
|
|
|
name:[
|
|
|
|
|
{required:true,message:"请填写活动名称"}
|
|
|
|
|
],
|
|
|
|
|
type:[
|
|
|
|
|
{required:true,message:"请选择类型"}
|
|
|
|
|
],
|
|
|
|
|
system:[
|
|
|
|
|
{required:true,message:"请选择发布系统"}
|
|
|
|
|
],
|
|
|
|
|
to:[
|
|
|
|
|
{required:true,message:"请选择跳转方向"}
|
|
|
|
|
],
|
|
|
|
|
state:[
|
|
|
|
|
{required:true,message:"请选择状态"}
|
|
|
|
|
],
|
|
|
|
|
sort:[
|
|
|
|
|
{required:true,message:"请填写排序"}
|
|
|
|
|
],
|
|
|
|
|
effectDate:[
|
|
|
|
|
{required:true,message:"请选择日期"}
|
|
|
|
|
],
|
|
|
|
|
img:[
|
|
|
|
|
{required:true,message:"请选择图片"}
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
//获取类型
|
|
|
|
|
async getSystem(){
|
|
|
|
|
let res = await getparameter({number:'system'})
|
|
|
|
|
this.systems = res.detail.map(item => {
|
|
|
|
|
return {
|
|
|
|
|
label:item.value,
|
|
|
|
|
value:item.id
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
async getToUrl(){
|
|
|
|
|
let res = await getparameter({number:'toUrl'})
|
|
|
|
|
this.toUrls = res.detail.map(item => {
|
|
|
|
|
return {
|
|
|
|
|
label:item.value,
|
|
|
|
|
value:item.id
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
//上传
|
|
|
|
|
uploadFail(err){
|
|
|
|
|
console.log(err)
|
|
|
|
|
},
|
|
|
|
|
uploadSuccess(response){
|
|
|
|
|
console.log(response)
|
|
|
|
|
this.form.img = response.url
|
|
|
|
|
},
|
|
|
|
|
submit(){
|
|
|
|
|
console.log(this.form)
|
|
|
|
|
|
|
|
|
|
if(this.type === 'add'){
|
|
|
|
|
store({
|
|
|
|
|
pic:this.form.img,
|
|
|
|
|
name:this.form.name,
|
|
|
|
|
action:this.form.to,
|
|
|
|
|
origin_system:this.form.system,
|
|
|
|
|
type:this.form.type,
|
|
|
|
|
sort:this.form.sort,
|
|
|
|
|
state:this.form.state,
|
|
|
|
|
valid_time_begin:this.form.effectDate[0],
|
|
|
|
|
valid_time_over:this.form.effectDate[1]
|
|
|
|
|
}).then(res => {
|
|
|
|
|
Message({
|
|
|
|
|
type:'success',
|
|
|
|
|
message:'添加广告成功'
|
|
|
|
|
})
|
|
|
|
|
this.isShow = false
|
|
|
|
|
this.$emit('refresh')
|
|
|
|
|
this.form = {
|
|
|
|
|
name:'',
|
|
|
|
|
type:'',
|
|
|
|
|
system:'',
|
|
|
|
|
to:'',
|
|
|
|
|
state:'',
|
|
|
|
|
sort:'',
|
|
|
|
|
effectDate:[],
|
|
|
|
|
img:''
|
|
|
|
|
}
|
|
|
|
|
this.id = ''
|
|
|
|
|
})
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if(this.type === 'editor'){
|
|
|
|
|
update({
|
|
|
|
|
id:this.id,
|
|
|
|
|
pic:this.form.img,
|
|
|
|
|
name:this.form.name,
|
|
|
|
|
action:this.form.to,
|
|
|
|
|
origin_system:this.form.system,
|
|
|
|
|
type:this.form.type,
|
|
|
|
|
sort:this.form.sort,
|
|
|
|
|
state:this.form.state,
|
|
|
|
|
valid_time_begin:this.form.effectDate[0],
|
|
|
|
|
valid_time_over:this.form.effectDate[1]
|
|
|
|
|
}).then(res => {
|
|
|
|
|
Message({
|
|
|
|
|
type:'success',
|
|
|
|
|
message:'编辑广告成功'
|
|
|
|
|
})
|
|
|
|
|
this.isShow = false
|
|
|
|
|
this.$emit('refresh')
|
|
|
|
|
this.form = {
|
|
|
|
|
name:'',
|
|
|
|
|
type:'',
|
|
|
|
|
system:'',
|
|
|
|
|
to:'',
|
|
|
|
|
state:'',
|
|
|
|
|
sort:'',
|
|
|
|
|
effectDate:[],
|
|
|
|
|
img:''
|
|
|
|
|
}
|
|
|
|
|
this.id = ''
|
|
|
|
|
})
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
//获取详情
|
|
|
|
|
async getDetailAd (){
|
|
|
|
|
const res = await show({id:this.id})
|
|
|
|
|
this.form.name = res?.name
|
|
|
|
|
this.form.state = res?.state
|
|
|
|
|
this.form.system = res?.origin_system
|
|
|
|
|
this.form.to = Number(res?.action)
|
|
|
|
|
this.form.sort = res?.sort
|
|
|
|
|
this.form.type = res?.type
|
|
|
|
|
this.form.img = res?.pic
|
|
|
|
|
this.form.effectDate = [res?.valid_time_begin,res?.valid_time_over]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
watch:{
|
|
|
|
|
isShow(val){
|
|
|
|
|
if(val){
|
|
|
|
|
this.getSystem()
|
|
|
|
|
this.getToUrl()
|
|
|
|
|
|
|
|
|
|
if(this.type === 'editor'){
|
|
|
|
|
this.getDetailAd()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
@ -138,14 +317,14 @@ export default {
|
|
|
|
|
.avatar-uploader-icon {
|
|
|
|
|
font-size: 28px;
|
|
|
|
|
color: #8c939d;
|
|
|
|
|
width: 128px;
|
|
|
|
|
height: 128px;
|
|
|
|
|
line-height: 128px;
|
|
|
|
|
width: 120px;
|
|
|
|
|
height: 120px;
|
|
|
|
|
line-height: 120px;
|
|
|
|
|
text-align: center;
|
|
|
|
|
}
|
|
|
|
|
.avatar {
|
|
|
|
|
width: 128px;
|
|
|
|
|
height: 128px;
|
|
|
|
|
width: 120px;
|
|
|
|
|
height: 120px;
|
|
|
|
|
display: block;
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|
|