<template>
|
<div ref="container">
|
<a-modal
|
:title="title"
|
:width="1200"
|
:visible="visible"
|
:confirmLoading="confirmLoading"
|
:getContainer="() => $refs.container"
|
:maskStyle="{'top':'93px','left':'154px'}"
|
:wrapClassName="wrapClassNameInfo()"
|
:mask="isDesktop()"
|
:maskClosable="false"
|
@ok="handleOk"
|
@cancel="handleCancel"
|
cancelText="取消"
|
okText="保存"
|
style="top:10%;height: 80%;">
|
<a-spin :spinning="confirmLoading">
|
<a-form :form="form" id="cloudContentModal">
|
<a-row class="form-row" :gutter="24">
|
<a-col :span="12">
|
<a-form-item label="标题" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-input placeholder="请输入标题" v-decorator="['title', validatorRules.title]" />
|
</a-form-item>
|
</a-col>
|
<a-col :span="12">
|
<a-form-item label="内容类型" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-select placeholder="请选择内容类型" v-decorator="['type', validatorRules.type]">
|
<a-select-option value="privacy_policy">隐私政策</a-select-option>
|
<a-select-option value="user_guide">用户指南</a-select-option>
|
</a-select>
|
</a-form-item>
|
</a-col>
|
<a-col :span="12">
|
<a-form-item label="版本号" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-input placeholder="请输入版本号" v-decorator="['version', validatorRules.version]" />
|
</a-form-item>
|
</a-col>
|
<a-col :span="12">
|
<a-form-item label="状态" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-radio-group v-decorator="['status', {initialValue: 0}]">
|
<a-radio :value="0">草稿</a-radio>
|
<a-radio :value="1">发布</a-radio>
|
</a-radio-group>
|
</a-form-item>
|
</a-col>
|
<a-col :span="24">
|
<a-form-item label="内容" :labelCol="{span: 2}" :wrapperCol="{span: 22}">
|
<editor v-decorator="['content', validatorRules.content]" :height="400" />
|
</a-form-item>
|
</a-col>
|
</a-row>
|
</a-form>
|
</a-spin>
|
</a-modal>
|
</div>
|
</template>
|
|
<script>
|
import { mixinDevice } from '@/utils/mixin'
|
import Editor from '@/components/Editor'
|
import pick from 'lodash.pick'
|
|
export default {
|
name: "CloudContentModal",
|
mixins: [mixinDevice],
|
components: {
|
Editor
|
},
|
data () {
|
return {
|
title: "操作",
|
visible: false,
|
model: {},
|
labelCol: {
|
xs: { span: 24 },
|
sm: { span: 5 },
|
},
|
wrapperCol: {
|
xs: { span: 24 },
|
sm: { span: 16 },
|
},
|
confirmLoading: false,
|
form: this.$form.createForm(this),
|
validatorRules: {
|
title: {
|
rules: [{ required: true, message: '请输入标题!' }]
|
},
|
type: {
|
rules: [{ required: true, message: '请选择内容类型!' }]
|
},
|
version: {
|
rules: [{ required: true, message: '请输入版本号!' }]
|
},
|
content: {
|
rules: [{ required: true, message: '请输入内容!' }]
|
}
|
}
|
}
|
},
|
methods: {
|
add () {
|
this.edit({})
|
},
|
edit (record) {
|
this.form.resetFields()
|
this.model = Object.assign({}, record)
|
this.visible = true
|
this.$nextTick(() => {
|
this.form.setFieldsValue(pick(this.model,'title', 'type', 'version', 'content', 'status'))
|
})
|
},
|
close () {
|
this.$emit('close')
|
this.visible = false
|
},
|
handleOk () {
|
const that = this
|
this.form.validateFields((err, values) => {
|
if (!err) {
|
that.confirmLoading = true
|
let formData = Object.assign(this.model, values)
|
let obj
|
if(!this.model.id){
|
obj = this.$http.post('/cloudContent', formData)
|
}else{
|
obj = this.$http.put('/cloudContent', formData)
|
}
|
obj.then((res)=>{
|
if(res.code === 200){
|
that.$message.success(res.msg)
|
that.$emit('ok')
|
}else{
|
that.$message.warning(res.msg)
|
}
|
}).finally(() => {
|
that.confirmLoading = false
|
that.close()
|
})
|
}
|
})
|
},
|
handleCancel () {
|
this.close()
|
}
|
}
|
}
|
</script>
|
|
<style lang="less" scoped>
|
.form-row {
|
padding: 0 24px;
|
}
|
</style>
|