6 changed files with 671 additions and 138 deletions
@ -1,80 +1,375 @@ |
|||||
<template> |
<template> |
||||
<el-form :model="formData" @submit.native.prevent="handleSubmit"> |
<div> |
||||
<el-form-item label="文章标题:" :label-width="formLabelWidth"> |
|
||||
<el-input v-model="formData.title" maxlength="50" required></el-input> |
<div class="dialog-h-content scroll-h"> |
||||
</el-form-item> |
<el-form ref="ref_form" :inline="true" :model="formData" :rules="dataRule" :disabled="formType === 'detail'" |
||||
<el-form-item label="封面图片:" :label-width="formLabelWidth"> |
class="form"> |
||||
<el-upload |
<el-form-item label="文章标题" prop="title" label-width="150px"> |
||||
action="#" |
<el-input v-model.trim="formData.title" size="small" clearable placeholder="请输入活动名称" |
||||
list-type="picture" |
class="u-item-width-normal"></el-input> |
||||
:on-change="handleFileUpload" |
</el-form-item> |
||||
:file-list="fileList" |
|
||||
> |
<el-form-item label="发布时间" label-width="140px" prop="releaseTime"> |
||||
<el-button size="small" type="primary">点击上传</el-button> |
<el-date-picker v-model.trim="formData.releaseTime" type="date" value-format="yyyy-MM-dd" |
||||
</el-upload> |
format="yyyy-MM-dd" placeholder="选择发布时间" style="width:280px"> |
||||
</el-form-item> |
</el-date-picker> |
||||
<el-form-item label="发布时间:" :label-width="formLabelWidth"> |
</el-form-item> |
||||
<el-date-picker v-model="formData.publishDate" type="date" placeholder="选择日期"></el-date-picker> |
|
||||
</el-form-item> |
<el-form-item label="文章标签" prop="tagId" label-width="150px"> |
||||
<el-form-item label="文章标签:" :label-width="formLabelWidth"> |
<el-select class="u-item-width-normal" v-model.trim="formData.tagId" placeholder="请选择" clearable> |
||||
<el-select v-model="formData.tags" placeholder="请选择"> |
<el-option v-for="item in adverTagList" :key="item.id" :label="item.tagName" :value="item.id" |
||||
<el-option |
class="u-item-width-normal"> |
||||
v-for="tag in availableTags" |
</el-option> |
||||
:key="tag" |
</el-select> |
||||
:label="tag" |
</el-form-item> |
||||
:value="tag" |
|
||||
></el-option> |
<el-form-item label="封面图片" label-width="140px" prop="coverPic"> |
||||
</el-select> |
<template> |
||||
</el-form-item> |
<upload-image :defaultFileList="fileList" :limit="1" @change="onChangeFileList"></upload-image> |
||||
<el-form-item label="内容:" :label-width="formLabelWidth"> |
</template> |
||||
<el-input type="textarea" v-model="formData.content" rows="10" required></el-input> |
</el-form-item> |
||||
</el-form-item> |
|
||||
<el-form-item> |
<el-form-item label="内容" prop="content" label-width="150px" style="display: block"> |
||||
<el-checkbox v-model="formData.homepageTop">首页置顶</el-checkbox> |
<div class="item_width_1"> |
||||
</el-form-item> |
<Tinymce class="tinymce_view " v-if="formType != 'detail'" v-model.trim="formData.content" |
||||
<el-form-item> |
:height="250" placeholder="在这里输入文字" /> |
||||
<el-checkbox v-model="formData.notification">消息推送</el-checkbox> |
</div> |
||||
</el-form-item> |
</el-form-item> |
||||
<el-form-item> |
|
||||
<el-button type="primary" @click="handleSubmit">发布</el-button> |
<el-form-item label="首页置顶" style="display: block" prop="peopleCount" label-width="150px"> |
||||
</el-form-item> |
<el-switch v-model="top" @change="handleOnlineRegistration"></el-switch> |
||||
</el-form> |
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="消息推送" label-width="140px"> |
||||
|
<el-checkbox-group v-model="formData.sendMsg"> |
||||
|
<el-checkbox true-label="1" false-label="0" label="是否通过公众号推送给社区居民"></el-checkbox> |
||||
|
</el-checkbox-group> |
||||
|
</el-form-item> |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
</el-form> |
||||
|
</div> |
||||
|
|
||||
|
<div class="div_btn"> |
||||
|
<el-button size="small" @click="handleCancle">取 消</el-button> |
||||
|
<el-button size="small" type="primary" :disabled="btnDisable" @click="handleComfirm">确 |
||||
|
定</el-button> |
||||
|
</div> |
||||
|
</div> |
||||
</template> |
</template> |
||||
|
|
||||
<script> |
<script> |
||||
|
import { mapGetters } from 'vuex' |
||||
|
import { Loading } from 'element-ui' // 引入Loading服务 |
||||
|
import { requestPost } from '@/js/dai/request' |
||||
|
import Tinymce from '@c/tinymce2/index.vue' |
||||
|
import daiMap from "@/utils/dai-map"; |
||||
|
import util from '@js/util.js'; |
||||
|
// import UploadImage from './upload-image.vue' |
||||
|
import UploadImage from '@/views/modules/plugins/rent/upload-image.vue' |
||||
|
|
||||
|
var map |
||||
|
var search |
||||
|
var markers |
||||
|
var infoWindowList |
||||
|
var geocoder // 新建一个正逆地址解析类 |
||||
|
|
||||
|
let loading // 加载动画 |
||||
export default { |
export default { |
||||
data() { |
data() { |
||||
return { |
let initFormData = () => { |
||||
formData: { |
let _form = { |
||||
title: '', |
title: "",//标题 |
||||
coverImage: null, |
content: "",//内容 |
||||
publishDate: '', |
tagId: "",//标签id |
||||
tags: '', |
coverPic: "",//封面图 |
||||
content: '', |
releaseTime: "",//发布时间 |
||||
homepageTop: false, |
sendMsg: 0,//是否推送 |
||||
notification: false |
top: 0,//是否置顶 |
||||
}, |
status: 0 //状态 |
||||
availableTags: ['标签1', '标签2', '标签3'], |
} |
||||
fileList: [], |
|
||||
formLabelWidth: '100px' |
return _form |
||||
}; |
} |
||||
|
return { |
||||
|
adverTagList:[], |
||||
|
|
||||
|
|
||||
|
|
||||
|
////// |
||||
|
top:false, |
||||
|
fileList: [],//封面图片 |
||||
|
activityImgs:[],//活动照片 |
||||
|
formType: 'add', //表单操作类型 add新增,edit编辑,records记录 |
||||
|
// records:false, |
||||
|
searchOptions: [], |
||||
|
searchValue: '', |
||||
|
resultList: [], |
||||
|
num: 0, |
||||
|
loading: false, |
||||
|
timeRange: [], |
||||
|
online: false, |
||||
|
|
||||
|
btnDisable: false, |
||||
|
|
||||
|
keyWords: '', |
||||
|
activityId: '', |
||||
|
formData: initFormData(), |
||||
|
serviceList: [], |
||||
|
// gridList: [], |
||||
|
agencyId: '', |
||||
|
|
||||
|
demandOptions: [], |
||||
|
uploadUrl: window.SITE_CONFIG['apiURL'] + '/oss/file/uploadqrcodeV2', |
||||
|
customerId: localStorage.getItem('customerId'), |
||||
|
|
||||
|
} |
||||
}, |
}, |
||||
|
components: { Tinymce, UploadImage }, |
||||
|
mounted() { |
||||
|
this.advertisingTag() |
||||
|
|
||||
|
}, |
||||
|
|
||||
methods: { |
methods: { |
||||
handleFileUpload(file, fileList) { |
async advertisingTag () { |
||||
this.fileList = fileList; |
const url = "/actual/base/advertisingTag/page" |
||||
this.formData.coverImage = file.raw; |
let params = { |
||||
}, |
pageSize: this.pageSize, |
||||
handleSubmit() { |
pageNo: this.pageNo, |
||||
console.log(this.formData); |
tagName: "", |
||||
this.$message.success('表单已提交'); |
status: "" |
||||
} |
} |
||||
|
const { data, code, msg,internalMsg } = await requestPost(url, params) |
||||
|
if (code === 0) { |
||||
|
this.adverTagList = data.list |
||||
|
} else if(internalMsg !== ''){ |
||||
|
this.$message.error(internalMsg) |
||||
|
}else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
///// |
||||
|
|
||||
|
handleOnlineRegistration(value) { |
||||
|
// console.log(value) |
||||
|
if (value) { |
||||
|
this.formData.top = 1; |
||||
|
} else { |
||||
|
this.formData.top = 0; |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
onChangeFileList(e) { |
||||
|
if (e.length > 0) { |
||||
|
let item = e[0]; |
||||
|
let ob = { |
||||
|
fileType: '0', |
||||
|
fileUrl: item.response.data.url |
||||
|
}; |
||||
|
this.fileList = [ob]; |
||||
|
this.formData.coverPic = ob.fileUrl; |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
async initForm(type, activityId) { |
||||
|
this.startLoading() |
||||
|
this.formType = type |
||||
|
// console.log("阿斯顿撒打算",type, activityId) |
||||
|
if (type === 'edit') { |
||||
|
this.formData = activityId |
||||
|
if (activityId.coverPic) { |
||||
|
let ob = { |
||||
|
fileType: '0', |
||||
|
fileUrl: activityId.coverPic |
||||
|
}; |
||||
|
this.fileList = [ob]; |
||||
|
this.formData.coverPic = ob.fileUrl; |
||||
|
if(this.formData.top == 1){ |
||||
|
this.top = true |
||||
|
} |
||||
|
} |
||||
|
// console.log("this.fileList",this.fileList) |
||||
|
}else if (type === 'records') { |
||||
|
this.records = true |
||||
|
} |
||||
|
|
||||
|
this.endLoading() |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
async handleComfirm() { |
||||
|
this.btnDisable = true |
||||
|
setTimeout(() => { |
||||
|
this.btnDisable = false |
||||
|
}, 10000) |
||||
|
|
||||
|
this.$refs['ref_form'].validate((valid, messageObj) => { |
||||
|
console.log("this.formData看看里面村的什么",this.formData) |
||||
|
if (!valid) { |
||||
|
app.util.validateRule(messageObj) |
||||
|
this.btnDisable = false |
||||
|
} else { |
||||
|
this.addActivity() |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
async addActivity() { |
||||
|
if (this.formType === 'edit') { |
||||
|
|
||||
|
let url = '/actual/base/communityPublicity/update' |
||||
|
const { data, code, msg } = await requestPost(url, this.formData) |
||||
|
if (code === 0) { |
||||
|
this.$message({ |
||||
|
type: 'success', |
||||
|
message: '操作成功' |
||||
|
}) |
||||
|
this.resetData() |
||||
|
this.$emit('dialogOk') |
||||
|
this.btnDisable = false |
||||
|
} else { |
||||
|
this.btnDisable = false |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}else{ |
||||
|
console.log("this.formData",this.formData) |
||||
|
let url = '/actual/base/communityPublicity/save' |
||||
|
const { data, code, msg } = await requestPost(url, this.formData) |
||||
|
if (code === 0) { |
||||
|
this.$message({ |
||||
|
type: 'success', |
||||
|
message: '操作成功' |
||||
|
}) |
||||
|
this.resetData() |
||||
|
this.$emit('dialogOk') |
||||
|
this.btnDisable = false |
||||
|
} else { |
||||
|
this.btnDisable = false |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
}, |
||||
|
|
||||
|
handleCancle() { |
||||
|
|
||||
|
this.resetData() |
||||
|
this.$emit('dialogCancle') |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
resetData() { |
||||
|
this.fileList = [] |
||||
|
this.top = false |
||||
|
this.formType = '' |
||||
|
this.formData = { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
// 开启加载动画 |
||||
|
startLoading() { |
||||
|
loading = Loading.service({ |
||||
|
lock: true, // 是否锁定 |
||||
|
text: '正在加载……', // 加载中需要显示的文字 |
||||
|
background: 'rgba(0,0,0,.7)' // 背景颜色 |
||||
|
}) |
||||
|
}, |
||||
|
// 结束加载动画 |
||||
|
endLoading() { |
||||
|
// clearTimeout(timer); |
||||
|
if (loading) { |
||||
|
loading.close() |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
dataRule() { |
||||
|
return { |
||||
|
title: [ |
||||
|
{ required: true, message: '文章标题不能为空', trigger: 'blur' } |
||||
|
], |
||||
|
coverPic:[ |
||||
|
{ required: true, message: '请选择封面图', trigger: 'blur' } |
||||
|
], |
||||
|
content: [ |
||||
|
{ required: true, message: '内容不能为空', trigger: 'blur' } |
||||
|
], |
||||
|
releaseTime: [ |
||||
|
{ required: true, message: '请选择发布时间', trigger: 'blur' } |
||||
|
], |
||||
|
tagId: [ |
||||
|
{ required: true, message: '请选择文章标签', trigger: 'blur' } |
||||
|
] |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
}, |
||||
|
props: { |
||||
|
// unitList: { |
||||
|
// type: Array, |
||||
|
// default: [] |
||||
|
// }, |
||||
|
// gridList: { |
||||
|
// type: Array, |
||||
|
// default: [] |
||||
|
// }, |
||||
} |
} |
||||
}; |
} |
||||
</script> |
</script> |
||||
|
|
||||
<style scoped> |
|
||||
.el-form { |
<style lang="scss" scoped> |
||||
max-width: 600px; |
@import "@/assets/scss/modules/visual/communityManageForm.scss"; |
||||
margin: auto; |
</style> |
||||
|
<style lang="scss" scoped> |
||||
|
.item_width_1 { |
||||
|
width: 560px; |
||||
|
|
||||
|
/deep/.tox .tox-dialog { |
||||
|
z-index: 20000; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.tinymce_view { |
||||
|
::v-deep .tox .tox-dialog { |
||||
|
z-index: 2000000000; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.div_map { |
||||
|
position: relative; |
||||
|
} |
||||
|
|
||||
|
.div_searchmap { |
||||
|
z-index: 5000; |
||||
|
position: absolute; |
||||
|
top: 5px; |
||||
|
left: 5px; |
||||
|
} |
||||
|
|
||||
|
.tinymce_view { |
||||
|
height: 400px; |
||||
|
overflow: auto; |
||||
|
} |
||||
|
|
||||
|
.text_p { |
||||
|
margin: 0; |
||||
|
padding: 0 10px; |
||||
|
border: 1px solid #d9d9d9; |
||||
|
border-radius: 5px; |
||||
|
|
||||
|
>p { |
||||
|
margin: 0; |
||||
|
} |
||||
} |
} |
||||
</style> |
</style> |
||||
@ -0,0 +1,166 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<div class="dialog-h-content scroll-h"> |
||||
|
<div v-if="initLoading" class="m-detail-main"> |
||||
|
<div class="m-info"> |
||||
|
|
||||
|
<div style="display: flex;"> |
||||
|
<div class="m-info-prop" style="flex: 0 0 50%;"> |
||||
|
<span class="u-info-title-2">文章标题: </span> |
||||
|
<span style="margin-right: 10px;"> </span> |
||||
|
<span>{{ formData.title || "--" }}</span> |
||||
|
</div> |
||||
|
<div class="m-info-prop" style="flex: 0 0 50%;"> |
||||
|
<span class="u-info-title-2">标签: </span> |
||||
|
<span style="margin-right: 10px;"> </span> |
||||
|
<span>{{ formData.tagId || "--" }}</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div style="display: flex;"> |
||||
|
<div class="m-info-prop" style="flex: 0 0 50%;"> |
||||
|
<span class="u-info-title-2">发布时间: </span> |
||||
|
<span style="margin-right: 10px;"> </span> |
||||
|
<span>{{ formData.releaseTime || "--" }}至<span>{{ formData.endTime || "--" }}</span></span> |
||||
|
</div> |
||||
|
<div class="m-info-prop" style="flex: 0 0 50%;"> |
||||
|
<span class="u-info-title-2">状态: </span> |
||||
|
<span style="margin-right: 10px;"> </span> |
||||
|
<span>{{ formData.status === 1 ? '已下线' : '已发布' || "--" }}</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
<div class="m-info-prop"> |
||||
|
<span class="u-info-title-2" style="display: inline-block;white-space: nowrap;">活动内容: </span> |
||||
|
<span style="margin-right: 10px;"> </span> |
||||
|
<!-- <span>{{ formData.content || "--" }}</span> --> |
||||
|
<p class="text_p" v-html="formData.content"></p> |
||||
|
</div> |
||||
|
|
||||
|
<div class="m-info-prop"> |
||||
|
<span class="u-info-title-2">是否置顶: </span> |
||||
|
<span style="margin-right: 10px;"> </span> |
||||
|
<el-switch :value="formData.top === 1 ? true : false" :disabled="true"></el-switch> |
||||
|
|
||||
|
</div> |
||||
|
<div class="m-info-prop"> |
||||
|
<span class="u-info-title-2"></span> |
||||
|
<div class="div_map"> |
||||
|
<div id="app_detail_unit"></div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="m-info-prop"> |
||||
|
<span class="u-info-title-2">点赞数: </span> |
||||
|
<span style="margin-right: 10px;"> </span> |
||||
|
<span>{{ formData.address || "--" }}</span> |
||||
|
</div> |
||||
|
|
||||
|
<div style="display: flex;"> |
||||
|
<div class="m-info-prop" style="flex: 0 0 50%;"> |
||||
|
<span class="u-info-title-2">转发数</span> |
||||
|
<span style="margin-right: 10px;"> </span> |
||||
|
<span>{{ formData.cutOffTime || "--" }}</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="m-detail-btn"> |
||||
|
<el-button size="small" @click="handleCancle">关 闭</el-button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { Loading } from "element-ui"; // 引入Loading服务 |
||||
|
import nextTick from "dai-js/tools/nextTick"; |
||||
|
import daiMap from "@/utils/dai-map"; |
||||
|
|
||||
|
var map; |
||||
|
var search; |
||||
|
var markers; |
||||
|
var infoWindowList; |
||||
|
var geocoder; // 新建一个正逆地址解析类 |
||||
|
|
||||
|
let loading; // 加载动画 |
||||
|
export default { |
||||
|
data() { |
||||
|
return { |
||||
|
formData: {}, |
||||
|
initLoading: false, |
||||
|
}; |
||||
|
}, |
||||
|
components: {}, |
||||
|
created() { }, |
||||
|
|
||||
|
mounted () { |
||||
|
}, |
||||
|
|
||||
|
methods: { |
||||
|
async activityType () { |
||||
|
const url = "/actual/base/activityType/page" |
||||
|
let params = { |
||||
|
// agencyId: this.agencyId |
||||
|
pageSize: 20, |
||||
|
pageNo: 1, |
||||
|
typeName: "", |
||||
|
enabled: 0 |
||||
|
} |
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
if (code === 0) { |
||||
|
this.typeList = data.list |
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
handleCancle() { |
||||
|
// this.diaDestroy(); |
||||
|
this.$emit("dialogCancle"); |
||||
|
}, |
||||
|
|
||||
|
diaDestroy() { |
||||
|
if (map) { |
||||
|
// map.destroy() |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
async initForm(row) { |
||||
|
this.startLoading(); |
||||
|
this.formData = JSON.parse(JSON.stringify(row)); |
||||
|
this.initLoading = true; |
||||
|
|
||||
|
this.endLoading(); |
||||
|
}, |
||||
|
|
||||
|
// 开启加载动画 |
||||
|
startLoading() { |
||||
|
loading = Loading.service({ |
||||
|
lock: true, // 是否锁定 |
||||
|
text: "正在加载……", // 加载中需要显示的文字 |
||||
|
background: "rgba(0,0,0,.7)", // 背景颜色 |
||||
|
}); |
||||
|
}, |
||||
|
// 结束加载动画 |
||||
|
endLoading() { |
||||
|
// clearTimeout(timer); |
||||
|
if (loading) { |
||||
|
loading.close(); |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
computed: {}, |
||||
|
props: {}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style lang="scss" scoped> |
||||
|
@import "@/assets/scss/modules/management/detail-main.scss"; |
||||
|
|
||||
|
// span { |
||||
|
// display: inline-block; |
||||
|
// white-space: nowrap; /* 避免换行 */ |
||||
|
// } |
||||
|
|
||||
|
</style> |
||||
|
<style scoped></style> |
||||
Loading…
Reference in new issue