Browse Source

完善社区活动

V4.3.3
李素 1 year ago
parent
commit
117e51c49f
  1. 144
      src/views/modules/communityParty/activity/index.vue
  2. 138
      src/views/modules/communityParty/activity/initiateActivity.vue
  3. 57
      src/views/modules/communityParty/activity/summDetails.vue
  4. 166
      src/views/modules/communityParty/comPromotion/event.vue

144
src/views/modules/communityParty/activity/index.vue

@ -100,7 +100,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" fixed="right" width="180" header-align="center" align="center" class="operate"> <el-table-column label="操作" fixed="right" width="230" header-align="center" align="center" class="operate">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" style="color:#1C6AFD;text-decoration: underline;" size="small" <el-button type="text" style="color:#1C6AFD;text-decoration: underline;" size="small"
@ -109,11 +109,20 @@
<el-button type="text" v-if="scope.row.status == 0" style="color:#1C6AFD;text-decoration: underline;" <el-button type="text" v-if="scope.row.status == 0" style="color:#1C6AFD;text-decoration: underline;"
size="small" @click="handleEdit(scope.row)">编辑</el-button> size="small" @click="handleEdit(scope.row)">编辑</el-button>
<el-button type="text" v-if="scope.row.status == 2" style="color:#1C6AFD;text-decoration: underline;" <!-- <el-button type="text" v-if="scope.row.status == 2 && scope.row.activityImgs === '' && scope.row.sumUp === ''" style="color:#1C6AFD;text-decoration: underline;"
size="small" @click="handleSumm(scope.row)">活动总结</el-button> -->
<el-button type="text" v-if="scope.row.status == 2 && scope.row.activityImgs == null && scope.row.sumUp == ''" style="color:#1C6AFD;text-decoration: underline;"
size="small" @click="handleSumm(scope.row)">活动总结</el-button> size="small" @click="handleSumm(scope.row)">活动总结</el-button>
<el-button v-if="scope.row.status == 2 || scope.row.status == 0" type="text" style="color:#D51010;text-decoration: underline;" <el-button v-if="scope.row.status == 2 || scope.row.status == 3" type="text"
size="small" @click="handleDelete(scope.row)">删除</el-button> style="color:#D51010;text-decoration: underline;" size="small"
@click="handleDelete(scope.row)">删除</el-button>
<el-button v-if="scope.row.status == 0" type="text"
style="color:#D51010;text-decoration: underline;" size="small"
@click="handleCancel(scope.row)">取消</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -175,7 +184,8 @@
statuslist: [ statuslist: [
{ value: 0, label: '未进行' }, { value: 0, label: '未进行' },
{ value: 1, label: '进行中' }, { value: 1, label: '进行中' },
{ value: 2, label: '已结束' } { value: 2, label: '已结束' },
{ value: 3, label: '已取消' }
], ],
typeList:[],// typeList:[],//
corganizerList:[],//list corganizerList:[],//list
@ -246,6 +256,8 @@
return '进行中'; return '进行中';
case 2: case 2:
return '已结束'; return '已结束';
case 3:
return '已取消';
default: default:
return ''; return '';
} }
@ -281,10 +293,40 @@
...this.formData, ...this.formData,
}; };
let { data, code, msg } = await requestPost(url, params); let { data, code, msg } = await requestPost(url, params);
if (code === 0) { if (code === 0) {
this.total = data.total this.total = data.total
this.tableData = data.list this.tableData = data.list
// console.log("datadatadata",this.tableData)
this.tableData.forEach((item) => {
const currentTime = new Date();
if (item.startTime > currentTime) {
if( item.status === 0 ){
return
}else{
item.status = 0
this.formData = item;
this.updatetow()
}
} else if (item.startTime < currentTime && item.endTime > currentTime) {
if( item.status === 1 ){
return
}else{
item.status = 1
this.formData = item;
this.updatetow()
}
} else {
if (item.status = 2) {
return
} else {
item.status = 2
this.formData = item;
this.updatetow()
}
}
});
} else { } else {
this.$message.error(msg) this.$message.error(msg)
} }
@ -355,7 +397,6 @@
} else { } else {
this.$message.error(msg) this.$message.error(msg)
} }
// console.log("饿",this.typeList)
}, },
diaClose () { diaClose () {
@ -375,7 +416,6 @@
this.detailShow = false this.detailShow = false
}, },
summDetailClose () { summDetailClose () {
// console.log('this.$refs.ref_detail')
// this.$refs.ref_detail.diaDestroy() // this.$refs.ref_detail.diaDestroy()
this.summShow = false this.summShow = false
}, },
@ -384,30 +424,31 @@
handleDetail (row) { handleDetail (row) {
this.detailShow = true this.detailShow = true
this.formTitle = '详情' this.formTitle = '详情'
console.log('rowmememmeme',row)
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.ref_detail.initForm(row) this.$refs.ref_detail.initForm(row)
// this.$refs.ref_form.initForm('detail', row.id) // this.$refs.ref_form.initForm('detail', row.id)
}) })
}, },
handleEdit (row) {
this.formTitle = '修改'
this.initShow = true
this.$nextTick(() => {
// this.$refs.ref_form.initForm('edit', row.id)
this.$refs.ref_form.initForm('edit', row)
})
},
handleSumm(row){ handleSumm(row){
this.summShow = true this.initShow = true
this.formTitle = '总结' this.formTitle = '总结'
// console.log('row',row)
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.ref_detail.initForm(row.id) this.$refs.ref_form.initForm('summary', row)
// this.$refs.ref_form.initForm('detail', row.id) activityImgs sumUp
}) })
this.communityActivityList()
}, },
// handleAdd () {
// this.formTitle = ''
// this.formShow = true
// this.$nextTick(() => {
// this.$refs.ref_form.initForm('add', null)
// })
// },
handleAdd () { handleAdd () {
this.formTitle = '活动记录' this.formTitle = '活动记录'
this.initShow = true this.initShow = true
@ -424,14 +465,6 @@
// this.$refs.ref_detail.initForm(row) // this.$refs.ref_detail.initForm(row)
}) })
}, },
handleEdit (row) {
this.formTitle = '修改'
this.initShow = true
this.$nextTick(() => {
// this.$refs.ref_form.initForm('edit', row.id)
this.$refs.ref_form.initForm('edit', row)
})
},
addFormCancle () { addFormCancle () {
this.formShow = false this.formShow = false
@ -469,6 +502,57 @@
}); });
}, },
async handleCancel(row) {
this.$confirm("确认取消?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.update(row)
})
.catch(err => {
// console.log("hehheheheh",row)
if (err == "cancel") {
}
});
},
async update(row) {
let url = '/actual/base/communityActivity/update'
this.formData = row
this.formData.status = 3
const { data, code, msg, internalMsg } = await requestPost(url, this.formData)
if (code === 0) {
this.$message({
type: 'success',
message: '操作成功'
})
} else if(internalMsg !== ''){
this.$message.error(internalMsg)
}else{
this.$message.error(msg)
}
this.resetSearch()
},
async updatetow(){
let url = '/actual/base/communityActivity/update'
const { data, code, msg, internalMsg } = await requestPost(url, this.formData)
if (code === 0) {
this.$message({
type: 'success',
// message: ''
})
} else if (internalMsg !== '') {
this.$message.error(internalMsg)
} else {
this.$message.error(msg)
}
this.resetSearch()
},
async deleteActivity (row) { async deleteActivity (row) {

138
src/views/modules/communityParty/activity/initiateActivity.vue

@ -2,75 +2,79 @@
<div> <div>
<div class="dialog-h-content scroll-h"> <div class="dialog-h-content scroll-h">
<el-form ref="ref_form" :inline="true" :model="formData" :rules="dataRule" :disabled="formType === 'detail'" <el-form ref="ref_form" :inline="true" :model="formData" :rules="dataRule" :disabled="formType === 'detail'"
class="form"> class="form">
<el-form-item label="活动类型" label-width="150px" prop="typeId"> <div v-if="summary">
<el-select class="item_width_1" v-model.trim="formData.typeId" placeholder="请选择" clearable> <el-form-item label="活动类型" label-width="150px" prop="typeId">
<el-option v-for="item in typeList" :key="item.typeName" :label="item.typeName" <el-select class="item_width_1" v-model.trim="formData.typeId" placeholder="请选择" clearable>
:value="item.id"> <el-option v-for="item in typeList" :key="item.typeName" :label="item.typeName"
</el-option> :value="item.id">
</el-select> </el-option>
</el-form-item> </el-select>
</el-form-item>
<el-form-item label="活动名称" prop="activityName" label-width="150px">
<el-input v-model.trim="formData.activityName" size="small" clearable placeholder="请输入活动名称" <el-form-item label="活动名称" prop="activityName" label-width="150px">
class="u-item-width-normal"></el-input> <el-input v-model.trim="formData.activityName" size="small" clearable placeholder="请输入活动名称"
</el-form-item> class="u-item-width-normal"></el-input>
</el-form-item>
<el-form-item label="活动时间" prop="startTime" label-width="130px">
<el-date-picker v-model.trim="timeRange" size="small" style="width: 260px;" type="daterange" <el-form-item label="活动时间" prop="startTime" label-width="130px">
value-format="yyyy-MM-dd HH:mm:ss" @change="handleTimeChange" range-separator="至" <el-date-picker v-model.trim="timeRange" size="small" style="width: 260px;" type="daterange"
start-placeholder="开始时间" end-placeholder="结束时间"> value-format="yyyy-MM-dd HH:mm:ss" @change="handleTimeChange" range-separator="至"
</el-date-picker> start-placeholder="开始时间" end-placeholder="结束时间">
</el-form-item> </el-date-picker>
</el-form-item>
<!-- <el-form-item label="协办方" prop="assistingParty" label-width="150px">
<!-- <el-form-item label="协办方" prop="assistingParty" label-width="150px">
<el-cascader v-model.trim="formData.assistingParty" :options="corganizerList" <el-cascader v-model.trim="formData.assistingParty" :options="corganizerList"
:props="{ label: 'label', value: 'name'}" clearable collapse-tags size="small" :props="{ label: 'label', value: 'name'}" clearable collapse-tags size="small"
class="u-item-width-normal"></el-cascader> class="u-item-width-normal"></el-cascader>
</el-form-item> --> </el-form-item> -->
<el-form-item label="协办方" prop="assistingParty" label-width="150px"> <el-form-item label="协办方" prop="assistingParty" label-width="150px">
<el-select class="u-item-width-normal" v-model.trim="formData.assistingParty" placeholder="请选择" <el-select class="u-item-width-normal" v-model.trim="formData.assistingParty" placeholder="请选择"
clearable> clearable>
<el-option v-for="item in corganizerList" :key="item.id" :label="item.label" :value="item.name" <el-option v-for="item in corganizerList" :key="item.id" :label="item.label"
class="u-item-width-normal"> :value="item.name" class="u-item-width-normal">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="活动封面图" label-width="140px" prop="coverPic">
<template>
<upload-image :defaultFileList="fileList" :limit="1" @change="onChangeFileList"></upload-image>
</template>
</el-form-item>
<el-form-item label="活动内容" prop="content" label-width="150px" style="display: block">
<div class="item_width_1">
<Tinymce class="tinymce_view " v-model.trim="formData.content" :height="250"
placeholder="请输入活动内容" />
<!-- <Tinymce class="tinymce_view " v-if="formType != 'detail'" v-model.trim="formData.content"
:height="250" placeholder="请输入活动内容" /> -->
<!-- <el-input type="textarea" autosize placeholder="请输入内容" v-model.trim="formData.content">
</el-input> -->
</div>
</el-form-item>
<el-form-item label="活动地点" prop="address" label-width="150px" style="display: block">
<div style="width: 500px">
<el-select v-model.trim="searchValue" filterable style="width: 500px" remote
:reserve-keyword="true" placeholder="请输入关键词" :remote-method="remoteMethod"
:loading="loading">
<el-option v-for="(item, index) in searchOptions" @click.native="handleClickKey(index)"
:key="item.value" :label="item.label" :value="item.value">
</el-option> </el-option>
</el-select> </el-select>
<div id="app_activity" class="div_map"></div> </el-form-item>
</div>
</el-form-item> <el-form-item label="活动封面图" label-width="140px" prop="coverPic">
<template>
<upload-image :defaultFileList="fileList" :limit="1"
@change="onChangeFileList"></upload-image>
</template>
</el-form-item>
<el-form-item label="活动内容" prop="content" label-width="150px" style="display: block">
<div class="item_width_1">
<Tinymce class="tinymce_view " v-model.trim="formData.content" :height="250"
placeholder="请输入活动内容" />
<!-- <Tinymce class="tinymce_view " v-if="formType != 'detail'" v-model.trim="formData.content"
:height="250" placeholder="请输入活动内容" /> -->
<!-- <el-input type="textarea" autosize placeholder="请输入内容" v-model.trim="formData.content">
</el-input> -->
</div>
</el-form-item>
<el-form-item label="线上报名" style="display: block" prop="peopleCount" label-width="150px"> <el-form-item label="活动地点" prop="address" label-width="150px" style="display: block">
<el-switch v-model="online" @change="handleOnlineRegistration"></el-switch> <div style="width: 500px">
</el-form-item> <el-select v-model.trim="searchValue" filterable style="width: 500px" remote
:reserve-keyword="true" placeholder="请输入关键词" :remote-method="remoteMethod"
:loading="loading">
<el-option v-for="(item, index) in searchOptions" @click.native="handleClickKey(index)"
:key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<div id="app_activity" class="div_map"></div>
</div>
</el-form-item>
<el-form-item label="线上报名" style="display: block" prop="peopleCount" label-width="150px">
<el-switch v-model="online" @change="handleOnlineRegistration"></el-switch>
</el-form-item>
</div>
<div v-if="records"> <div v-if="records">
<div v-if="!online"> <div v-if="!online">
@ -204,6 +208,7 @@ export default {
loading: false, loading: false,
timeRange: [], timeRange: [],
online: false, online: false,
summary:true,
btnDisable: false, btnDisable: false,
@ -247,7 +252,9 @@ export default {
// type, // type,
// url: res.data.url // url: res.data.url
// }); // });
// console.log('this.formData.activityImgs',res.data.url)
this.formData.activityImgs.push(res.data.url); this.formData.activityImgs.push(res.data.url);
} else { } else {
this.$message.error(res.msg); this.$message.error(res.msg);
} }
@ -407,7 +414,7 @@ export default {
}, },
async initForm(type, activityId) { async initForm(type, activityId) {
this.startLoading() this.startLoading()
// console.log("", type, activityId) console.log("啊实打实的", type, activityId)
this.$nextTick(() => { this.$nextTick(() => {
if (!map) { if (!map) {
@ -442,6 +449,12 @@ export default {
} }
}else if (type === 'records') { }else if (type === 'records') {
this.records = true this.records = true
}else if(type === 'summary'){
this.formData = activityId
this.formData.activityImgs = []
console.log("this.formData",this.formData)
this.records = true
this.summary = false
}else{ }else{
this.records = false this.records = false
} }
@ -554,7 +567,7 @@ export default {
}) })
}, },
async addActivity() { async addActivity() {
if (this.formType === 'edit') { if (this.formType === 'edit' || this.formType === 'summary') {
let url = '/actual/base/communityActivity/update' let url = '/actual/base/communityActivity/update'
const { data, code, msg } = await requestPost(url, this.formData) const { data, code, msg } = await requestPost(url, this.formData)
if (code === 0) { if (code === 0) {
@ -692,6 +705,7 @@ export default {
this.keyWords = '' this.keyWords = ''
this.online = false this.online = false
this.formType='' this.formType=''
this.summary=true
this.formData = { this.formData = {
id: "", id: "",
typeId: "", typeId: "",

57
src/views/modules/communityParty/activity/summDetails.vue

@ -2,41 +2,38 @@
<div> <div>
<div class="dialog-h-content scroll-h"> <div class="dialog-h-content scroll-h">
<el-form ref="ref_form" :inline="true" :model="formData" :rules="dataRule" <el-form ref="ref_form" :inline="true" :model="formData" :rules="dataRule" class="form">
class="form"> <el-form-item label="活动总结" prop="sumUp" label-width="150px" style="display: block">
<el-form-item label="活动总结" prop="sumUp" label-width="150px" style="display: block"> <div class="item_width_1">
<div class="item_width_1"> <el-input type="textarea" autosize placeholder="请输入内容" v-model.trim="formData.sumUp">
<el-input type="textarea" autosize placeholder="请输入内容" v-model.trim="formData.sumUp"> </el-input>
</el-input> </div>
</div> </el-form-item>
</el-form-item> <el-form-item label="活动照片" label-width="140px" prop="activityImgs">
<el-form-item label="活动照片" label-width="140px" prop="activityImgs"> <div>
<div> <el-upload :headers="$getElUploadHeaders()" class="avatar-uploader" :action="uploadUrl"
<el-upload :headers="$getElUploadHeaders()" class="avatar-uploader" :action="uploadUrl" :data="{ customerId: customerId }" :show-file-list="true" :file-list="formData.activityImgs"
:data="{ customerId: customerId }" :show-file-list="true" :on-preview="handleImgPreview" :on-success="handleImgSuccess" :on-remove="handleImgRemove"
:file-list="formData.activityImgs" :on-preview="handleImgPreview" :on-exceed="handleImgExceed" :before-upload="beforeImgUpload" list-type="picture-card"
:on-success="handleImgSuccess" :on-remove="handleImgRemove" :limit="3">
:on-exceed="handleImgExceed" :before-upload="beforeImgUpload" <i class="el-icon-plus avatar-uploader-icon"></i> 最多三张图片 </el-upload>
list-type="picture-card" :limit="3"> </div>
<i class="el-icon-plus avatar-uploader-icon"></i> 最多三张图片 </el-upload> <div>
</div> <div v-if="formData.activityImgs && formData.activityImgs.length > 0">
<div> <img v-for="(img, index) in formData.activityImgs" :key="index" :src="img" alt="照片"
<div v-if="formData.activityImgs && formData.activityImgs.length > 0"> style="width: 150px; margin-right: 10px;">
<img v-for="(img, index) in formData.activityImgs" :key="index" :src="img" </div>
alt="照片" style="width: 150px; margin-right: 10px;"> <div v-else>
</div> 暂无照片
<div v-else> </div>
暂无照片 </div>
</div> </el-form-item>
</div>
</el-form-item>
</el-form> </el-form>
</div> </div>
<div class="div_btn"> <div class="div_btn">
<el-button size="small" @click="handleCancle"> </el-button> <el-button size="small" @click="handleCancle"> </el-button>
<el-button size="small" type="primary" :disabled="btnDisable" <el-button size="small" type="primary" :disabled="btnDisable" @click="handleComfirm">
@click="handleComfirm">
</el-button> </el-button>
</div> </div>
</div> </div>

166
src/views/modules/communityParty/comPromotion/event.vue

@ -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;">&nbsp;</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;">&nbsp;</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;">&nbsp;</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;">&nbsp;</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;">&nbsp;</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;">&nbsp;</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;">&nbsp;</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;">&nbsp;</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…
Cancel
Save