You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

243 lines
6.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div>
<xy-dialog :width="70" ref="dialog" type="form" :is-show.sync="isShow" :title="type === 'add' ? '新增攻略' : '编辑攻略'" :form="form" :rules="rules" @submit="submit">
<template v-slot:title>
<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-input v-model="form.title" placeholder="请填写标题" clearable style="width: 300px;"></el-input>
</div>
</div>
</template>
<template v-slot:subheading>
<div class="xy-table-item">
<div class="xy-table-item-label">
副标题:
</div>
<div class="xy-table-item-content">
<el-input v-model="form.subheading" placeholder="请填写副标题" clearable style="width: 300px;"></el-input>
</div>
</div>
</template>
<template v-slot:strategyTypeId>
<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 v-model="form.strategyTypeId" placeholder="请选择栏目">
<el-option v-for="item in strategyTypes" :label="item.name" :value="item.id"></el-option>
</el-select>
</div>
</div>
</template>
<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-switch v-model="form.state"></el-switch>
</div>
</div>
</template>
<template v-slot:content>
<div class="xy-table-item">
<div class="xy-table-item-label">
内容:
</div>
<div class="xy-table-item-content">
<tinymce ref="tinymce" :height="200" v-model="form.content" id='tinymce'></tinymce>
</div>
</div>
</template>
<template v-slot:coverPicture>
<div class="xy-table-item">
<div class="xy-table-item-label">
封面图:
</div>
<div class="xy-table-item-content">
<div v-if="form.coverPicture" style="position: relative;">
<img :src="form.coverPicture" class="avatar">
<Button
shape="circle"
icon="md-close"
type="error"
size="small"
class="img__delete"
@click="form.coverPicture = ''"></Button>
</div>
<el-upload
v-else
accept="picture"
:limit="1"
class="avatar-uploader"
list-type="picture-card"
:action="action"
:show-file-list="true"
:on-error="uploadFail"
:on-success="uploadSuccess"
:before-upload="uploadBefore">
<i class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</div>
</div>
</template>
<template v-slot:sortNumber>
<div class="xy-table-item">
<div class="xy-table-item-label">
排序:
</div>
<div class="xy-table-item-content">
<el-input-number :controls="false" :min="0" :precision="0" v-model="form.sortNumber" placeholder="请填写排序" clearable style="width: 300px;"></el-input-number>
</div>
</div>
</template>
<template v-slot:label>
<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 multiple v-model="form.label" placeholder="请选择标签">
<el-option v-for="item in labels" :label="item.value" :value="item.id"></el-option>
</el-select>
</div>
</div>
</template>
</xy-dialog>
</div>
</template>
<script>
import {index as typeIndex} from "@/api/strategyType"
import {getparameter} from '@/api/system/dictionary'
import tinymce from "@/components/Tinymce"
import { Message } from 'element-ui'
export default {
components:{
tinymce
},
data() {
return {
isShow:false,
type:'',
id:'',
action:`${process.env.VUE_APP_BASE_API}api/admin/upload-file`,
labels:[],
strategyTypes:[],
form:{
title:'',
subheading:'',
strategyTypeId:'',
state:true,
content:'',
coverPicture:'',
sortNumber:0,
label:''
},
rules:{
title:[
{required:true,message:'请填写标题'}
],
strategyTypeId:[
{required:true,message:'请选择类型'}
]
}
}
},
methods: {
//上传
uploadFail(err){
console.log(err)
},
uploadSuccess(response){
console.log(response)
this.form.coverPicture = response.url
},
uploadBefore(file){
if((file.size/1000) > 2024){
Message({
type:'warning',
message:'上传图片大小超过2M'
})
return false
}
},
async getLabel(){
const res = await getparameter({number:'strategyLabel'})
this.labels = res.detail
},
async getStrategyTypes(){
const res = await typeIndex()
this.strategyTypes = res.rows
console.log(this.strategyTypes)
},
submit(){
if(this.type === 'add'){
console.log(this.form)
}
}
},
watch:{
isShow(newVal){
if(newVal){
this.getStrategyTypes()
this.getLabel()
}else{
this.id = ''
this.type = ''
this.$refs['tinymce'].setContent(' ')
this.$refs['dialog'].reset()
}
}
}
}
</script>
<style scoped lang="scss">
</style>
<style>
.avatar-uploader .el-upload {
width: 120px;
height: 120px;
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
display: flex;
justify-content: center;
align-items: center;
}
.avatar-uploader .el-upload:hover {
border-color: #BF617C;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 120px;
height: 120px;
line-height: 120px;
text-align: center;
}
.avatar {
width: 120px;
display: block;
border-radius: 6px;
}
.img__delete{
transform: scale(0.7,0.7);
position: absolute;
top: 1px;
left: 4%;
}
</style>