Browse Source

Merge branch 'dev-yiti1009' into test

test
jiangyy 3 years ago
parent
commit
28de8c8fe4
  1. 163
      src/views/modules/communityParty/article/index.vue
  2. 291
      src/views/modules/communityParty/heart/heartForm.vue
  3. 10
      src/views/modules/shequzhili/issue/cpts/issue-detail.vue
  4. 17
      src/views/modules/shequzhili/issue/cptsAudit/issue-info.vue

163
src/views/modules/communityParty/article/index.vue

@ -42,7 +42,7 @@
<template v-slot:listBtnbefore="{ item }"> <template v-slot:listBtnbefore="{ item }">
<el-button v-if="item.isTop == '1'" <el-button v-if="item.isTop == '1'"
@click="handleTopArticle(item,'cancel_top')" @click="handleCancleTopArticle(item,'cancel_top')"
type="text" type="text"
size="small" size="small"
style="color: #fe6252">取消置顶</el-button> style="color: #fe6252">取消置顶</el-button>
@ -67,6 +67,57 @@
@close="offlineShowed = false" @close="offlineShowed = false"
@afterOffline="handleOfflineSuccess"></offline> @afterOffline="handleOfflineSuccess"></offline>
</el-dialog> </el-dialog>
<el-dialog :visible.sync="showAddImage"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="上传封面图片"
width="650px"
top="5vh"
class="dialog-h"
@closed="showAddImage = false">
<div class="dialog-h-content scroll-h">
<!-- <span>请先上 传封面图片</span> -->
<el-form ref="ref_form"
:inline="true"
:model="formData"
class="div_form">
<div class="form_flex">
<div class="form_item">
<el-form-item label=""
prop="selImgUrl"
label-width="150px"
style="display: block">
<el-upload :headers="$getElUploadHeaders()"
:class="['avatar-uploader', { hide: hideUploadBtn }]"
ref="uploadPic"
:action="uploadUlr"
list-type="picture-card"
:on-exceed="exceedPic"
:before-upload="beforeAvatarUpload"
:on-remove="removePic"
:file-list="replayImgList"
:on-change="handleEditChange"
:on-success="handleSuccess"
:limit="1">
<span class="font-14">选择图片</span>
</el-upload>
</el-form-item>
</div>
</div>
</el-form>
</div>
<div class="div_btn">
<el-button size="small"
@click="showAddImage = false"> </el-button>
<el-button size="small"
type="primary"
@click="handleAddImage"> </el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -475,6 +526,15 @@ export default {
return true; return true;
}, },
}, },
formData: {},
showAddImage: false,
uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadvariedfile",
replayImgList: [],
hideUploadBtn: false,
selType: 'top',
selArticleId: '',
selImgUrl: ''
}; };
}, },
components: { basePage, offline }, components: { basePage, offline },
@ -491,24 +551,103 @@ export default {
this.$refs.offlineForm.initForm(item); this.$refs.offlineForm.initForm(item);
}, },
async handleAddImage () {
console.log('formData', this.formData)
this.topArticle()
},
async handleCancleTopArticle (item, type) {
this.selType = type
this.selArticleId = item.articleId
await this.topArticle()
},
async handleTopArticle (item, type) { async handleTopArticle (item, type) {
const url = "/gov/voice/article/topArticle"; this.selType = type
this.selArticleId = item.articleId
let hasImage = await this.isHasImage()
if (hasImage === 'refrsh') {
this.$message.error("请求失败,请重新尝试");
} else if (hasImage === 'no') {
// this.$message.info("");
this.showAddImage = true
} else {
await this.topArticle()
}
},
async isHasImage () {
const url = "/gov/voice/article/detailV2";
const { tableData } = this; const { tableData } = this;
const { data, code, msg } = await requestPost(url, { const { data, code, msg } = await requestPost(url, {
articleId: item.articleId, articleId: this.selArticleId,
type: type
}); });
if (code === 0) {
// this.formData = data
if (data.imgUrl) {
return 'has'
} else {
return 'no'
}
} else {
return 'refrsh'
}
},
async topArticle () {
const url = "/gov/voice/article/topArticle";
const { tableData } = this;
let params = {
articleId: this.selArticleId,
type: this.selType
}
if (this.selImgUrl) {
params.imgUrl = this.selImgUrl
}
const { data, code, msg } = await requestPost(url, params);
if (code === 0) { if (code === 0) {
this.$message.success("操作成功!"); this.$message.success("操作成功!");
this.showAddImage = false
this.$refs.basePage.refresh(); this.$refs.basePage.refresh();
} else { } else {
this.$message.success("操作失败!"); this.$message.success("操作失败!");
} }
}, },
removePic (file, fileList) {
this.selImgUrl = "";
this.replayImgList = [];
this.hideUploadBtn = fileList.length >= 1;
},
// 3
handleEditChange (file, fileList) {
this.hideUploadBtn = fileList.length >= 1;
},
exceedPic () {
this.$message.warning("只能上传1张封面图");
},
beforeAvatarUpload (file) {
const isJPG = file.type === "image/jpeg";
const isLt2M = file.size / 1024 / 1024 < 10;
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 10MB!");
}
return isLt2M;
},
handleSuccess (response, file, fileList) {
this.replayImgList.push(file);
this.selImgUrl = response.data.url;
},
handleOfflineSuccess () { handleOfflineSuccess () {
this.$refs.basePage.refresh(); this.$refs.basePage.refresh();
this.offlineShowed = false; this.offlineShowed = false;
@ -541,4 +680,18 @@ export default {
}; };
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped>
@import "@/assets/scss/modules/management/form-main.scss";
.avatar-uploader {
margin: 0 0 0 20px;
}
</style>
<style lang="scss">
.hide {
.el-upload--picture-card {
display: none !important;
}
}
</style>

291
src/views/modules/communityParty/heart/heartForm.vue

@ -1,59 +1,48 @@
<template> <template>
<div> <div>
<div class="dialog-h-content scroll-h"> <div class="dialog-h-content scroll-h">
<el-form <el-form ref="ref_form"
ref="ref_form"
:inline="true" :inline="true"
:model="formData" :model="formData"
:rules="dataRule" :rules="dataRule"
:disabled="formType === 'detail'" :disabled="formType === 'detail'"
class="div_form" class="div_form">
>
<div class="form_flex"> <div class="form_flex">
<div class="form_item"> <div class="form_item">
<el-form-item label="主办方" prop="sponsorId" label-width="150px"> <el-form-item label="主办方"
<el-cascader prop="sponsorId"
v-if="formData.richTextFlag || formType === 'add'" label-width="150px">
<el-cascader v-if="formData.richTextFlag || formType === 'add'"
class="item_width_6" class="item_width_6"
ref="myCascader" ref="myCascader"
v-model="agencyIdArray" v-model="agencyIdArray"
:options="orgOptions" :options="orgOptions"
:props="orgOptionProps" :props="orgOptionProps"
:show-all-levels="false" :show-all-levels="false"
@change="handleChangeAgency" @change="handleChangeAgency"></el-cascader>
></el-cascader> <el-input v-else
<el-input
v-else
class="item_width_6" class="item_width_6"
v-model="formData.sponsorName" v-model="formData.sponsorName"></el-input>
></el-input>
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="活动标题"
label="活动标题"
prop="title" prop="title"
label-width="150px" label-width="150px"
style="display: block" style="display: block">
> <el-input class="item_width_6"
<el-input
class="item_width_6"
type="textarea" type="textarea"
maxlength="50" maxlength="50"
show-word-limit show-word-limit
:rows="2" :rows="2"
placeholder="请输入活动标题,不超过50字" placeholder="请输入活动标题,不超过50字"
v-model="formData.title" v-model="formData.title"></el-input>
></el-input>
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="封面"
label="封面"
prop="coverPic" prop="coverPic"
label-width="150px" label-width="150px"
style="display: block" style="display: block">
> <el-upload :headers="$getElUploadHeaders()"
<el-upload
:headers="$getElUploadHeaders()"
:class="['avatar-uploader', { hide: hideUploadBtn }]" :class="['avatar-uploader', { hide: hideUploadBtn }]"
ref="uploadPic" ref="uploadPic"
:action="uploadUlr" :action="uploadUlr"
@ -64,216 +53,163 @@
:file-list="replayImgList" :file-list="replayImgList"
:on-change="handleEditChange" :on-change="handleEditChange"
:on-success="handleSuccess" :on-success="handleSuccess"
:limit="1" :limit="1">
>
<span class="font-14">选择图片</span> <span class="font-14">选择图片</span>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="活动时间"
label="活动时间"
label-width="150px" label-width="150px"
prop="actStartTime" prop="actStartTime">
> <el-date-picker v-model="formData.actStartTime"
<el-date-picker
v-model="formData.actStartTime"
class="list_item_width_3" class="list_item_width_3"
type="datetime" type="datetime"
value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm"
format="yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm"
placeholder="开始时间" placeholder="开始时间">
>
</el-date-picker> </el-date-picker>
<span class="data-tag"></span> <span class="data-tag"></span>
<el-date-picker <el-date-picker v-model="formData.actEndTime"
v-model="formData.actEndTime"
class="list_item_width_3 data-tag" class="list_item_width_3 data-tag"
type="datetime" type="datetime"
value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm"
format="yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm"
placeholder="结束时间" placeholder="结束时间">
>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="活动人数"
label="活动人数"
prop="actQuota" prop="actQuota"
style="display: block" style="display: block"
label-width="150px" label-width="150px">
> <el-input-number class="item_width_2"
<el-input-number
class="item_width_2"
:min="0" :min="0"
v-model="formData.actQuota" v-model="formData.actQuota"
label="活动人数" label="活动人数"></el-input-number>
></el-input-number>
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="活动积分"
label="活动积分"
prop="reward" prop="reward"
style="display: block" style="display: block"
label-width="150px" label-width="150px">
> <el-input-number class="item_width_2"
<el-input-number
class="item_width_2"
:min="0" :min="0"
v-model="formData.reward" v-model="formData.reward"
label="活动积分" label="活动积分"></el-input-number>
></el-input-number>
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="联系人"
label="联系人"
prop="sponsorContacts" prop="sponsorContacts"
label-width="150px" label-width="150px"
style="display: block" style="display: block">
> <el-input class="item_width_6"
<el-input
class="item_width_6"
maxlength="20" maxlength="20"
placeholder="请输入联系人" placeholder="请输入联系人"
v-model="formData.sponsorContacts" v-model="formData.sponsorContacts">
>
</el-input> </el-input>
</el-form-item> </el-form-item>
</div> </div>
<div class="form_item"> <div class="form_item">
<el-form-item <el-form-item label="联系电话"
label="联系电话"
prop="sponsorTel" prop="sponsorTel"
label-width="150px" label-width="150px"
style="display: block" style="display: block">
> <el-input class="item_width_6"
<el-input
class="item_width_6"
maxlength="20" maxlength="20"
placeholder="请输入联系电话" placeholder="请输入联系电话"
v-model="formData.sponsorTel" v-model="formData.sponsorTel">
>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="报名仅限志愿者"
label="报名仅限志愿者"
prop="volunteerLimit" prop="volunteerLimit"
label-width="150px" label-width="150px"
style="display: block" style="display: block">
>
<el-checkbox v-model="formData.volunteerLimit"></el-checkbox> <el-checkbox v-model="formData.volunteerLimit"></el-checkbox>
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="报名无需审核"
label="报名无需审核"
prop="auditSwitch" prop="auditSwitch"
label-width="150px" label-width="150px"
style="display: block" style="display: block">
>
<el-checkbox v-model="noauditSwitch"></el-checkbox> <el-checkbox v-model="noauditSwitch"></el-checkbox>
<span class="div-tooltip" <span class="div-tooltip">选中后报名参加活动人员可以直接审核通过</span>
>选中后报名参加活动人员可以直接审核通过</span
>
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="报名截止时间"
label="报名截止时间"
style="display: block" style="display: block"
prop="signUpEndTime" prop="signUpEndTime"
label-width="150px" label-width="150px">
> <el-date-picker class="item_width_2"
<el-date-picker
class="item_width_2"
v-model="formData.signUpEndTime" v-model="formData.signUpEndTime"
value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm"
format="yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm"
type="datetime" type="datetime"
placeholder="选择时间" placeholder="选择时间">
>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="报名条件"
label="报名条件"
prop="requirement" prop="requirement"
label-width="150px" label-width="150px"
style="display: block" style="display: block">
> <el-input class="item_width_6"
<el-input
class="item_width_6"
type="textarea" type="textarea"
maxlength="200" maxlength="200"
show-word-limit show-word-limit
:rows="7" :rows="7"
placeholder="请输入报名条件,不超过200字" placeholder="请输入报名条件,不超过200字"
v-model="formData.requirement" v-model="formData.requirement"></el-input>
></el-input>
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="签到时间"
label="签到时间"
label-width="150px" label-width="150px"
prop="signInStartTime" prop="signInStartTime">
> <el-date-picker v-model="formData.signInStartTime"
<el-date-picker
v-model="formData.signInStartTime"
class="list_item_width_3" class="list_item_width_3"
type="datetime" type="datetime"
value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm"
format="yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm"
placeholder="开始时间" placeholder="开始时间">
>
</el-date-picker> </el-date-picker>
<span class="data-tag"></span> <span class="data-tag"></span>
<el-date-picker <el-date-picker v-model="formData.signInEndTime"
v-model="formData.signInEndTime"
class="list_item_width_3 data-tag" class="list_item_width_3 data-tag"
type="datetime" type="datetime"
value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm"
format="yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm"
placeholder="结束时间" placeholder="结束时间">
>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="签到有效范围(米)"
label="签到有效范围(米)"
prop="signInRadius" prop="signInRadius"
style="display: block" style="display: block"
label-width="150px" label-width="150px">
> <el-input-number class="item_width_2"
<el-input-number
class="item_width_2"
:min="0" :min="0"
v-model="formData.signInRadius" v-model="formData.signInRadius"
label="签到有效范围" label="签到有效范围"></el-input-number>
></el-input-number>
</el-form-item> </el-form-item>
</div> </div>
</div> </div>
<div class="form_flex"> <div class="form_flex">
<div class="form_item"> <div class="form_item">
<el-form-item <el-form-item label="活动地点"
label="活动地点"
prop="actAddress" prop="actAddress"
label-width="150px" label-width="150px">
>
<div style="width: 400px"> <div style="width: 400px">
<el-input <el-input class="item_width_4"
class="item_width_4"
maxlength="100" maxlength="100"
style="width: 330px" style="width: 330px"
show-word-limit show-word-limit
placeholder="请输入所在地址" placeholder="请输入所在地址"
v-model="formData.actAddress" v-model="formData.actAddress">
>
</el-input> </el-input>
<el-button <el-button style="margin-left: 10px"
style="margin-left: 10px"
type="default" type="default"
size="small" size="small"
@click="handleSearchMapAct" @click="handleSearchMapAct">查询</el-button>
>查询</el-button <div id="map_act_id"
> class="div_map"></div>
<div id="map_act_id" class="div_map"></div>
<!-- <div style="margin-top: 10px"> <!-- <div style="margin-top: 10px">
<span>经度</span> <span>经度</span>
<el-input class="item_width_3" <el-input class="item_width_3"
@ -292,29 +228,23 @@
</el-form-item> </el-form-item>
</div> </div>
<div class="form_item"> <div class="form_item">
<el-form-item <el-form-item label="签到地点"
label="签到地点"
prop="signInAddress" prop="signInAddress"
label-width="150px" label-width="150px">
>
<div style="width: 400px"> <div style="width: 400px">
<el-input <el-input class="item_width_4"
class="item_width_4"
maxlength="100" maxlength="100"
style="width: 330px" style="width: 330px"
show-word-limit show-word-limit
placeholder="请输入所在地址" placeholder="请输入所在地址"
v-model="formData.signInAddress" v-model="formData.signInAddress">
>
</el-input> </el-input>
<el-button <el-button style="margin-left: 10px"
style="margin-left: 10px"
type="default" type="default"
size="small" size="small"
@click="handleSearchMapSignin" @click="handleSearchMapSignin">查询</el-button>
>查询</el-button <div id="map_signin_id"
> class="div_map"></div>
<div id="map_signin_id" class="div_map"></div>
<!-- <div style="margin-top: 10px"> <!-- <div style="margin-top: 10px">
<span>经度</span> <span>经度</span>
<el-input class="item_width_3" <el-input class="item_width_3"
@ -333,74 +263,67 @@
</el-form-item> </el-form-item>
</div> </div>
</div> </div>
<el-form-item <el-form-item label="活动详情"
label="活动详情"
prop="actContentHtml" prop="actContentHtml"
label-width="150px" label-width="150px"
style="display: block" style="display: block">
>
<div v-if="formData.richTextFlag || formType === 'add'"> <div v-if="formData.richTextFlag || formType === 'add'">
<Tinymce <Tinymce class="tinymce_view"
class="tinymce_view"
v-if="formType != 'detail'" v-if="formType != 'detail'"
v-model="formData.actContentHtml" v-model="formData.actContentHtml"
:height="250" :height="250"
style="width: 1000px" style="width: 1000px"
:customerId="customerId" :customerId="customerId"
placeholder="在这里输入文字" placeholder="在这里输入文字" />
/> <p v-else
<p v-else class="text_p" v-html="formData.actContentHtml"></p> class="text_p"
v-html="formData.actContentHtml"></p>
</div> </div>
<div class="div_content" v-else> <div class="div_content"
<div v-for="(item, index) in formData.actContent" :key="index"> v-else>
<div v-for="(item, index) in formData.actContent"
:key="index">
<div v-if="item.contentType === 'text'">{{ item.content }}</div> <div v-if="item.contentType === 'text'">{{ item.content }}</div>
<img <img v-if="item.contentType === 'img'"
v-if="item.contentType === 'img'"
class="img_icon" class="img_icon"
:src="item.content" :src="item.content" />
/>
</div> </div>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item <el-form-item v-if="formData.summaryFlag"
v-if="formData.summaryFlag"
label="活动回顾" label="活动回顾"
prop="summaryContentHtml" prop="summaryContentHtml"
label-width="150px" label-width="150px"
style="display: block" style="display: block">
>
<div v-if="formData.richTextFlag"> <div v-if="formData.richTextFlag">
<p class="text_p" v-html="formData.summaryContentHtml"></p> <p class="text_p"
v-html="formData.summaryContentHtml"></p>
</div> </div>
<div class="div_content" v-else> <div class="div_content"
<div v-for="(item, index) in formData.summaryContent" :key="index"> v-else>
<div v-for="(item, index) in formData.summaryContent"
:key="index">
<div v-if="item.contentType === 'text'">{{ item.content }}</div> <div v-if="item.contentType === 'text'">{{ item.content }}</div>
<img <img v-if="item.contentType === 'img'"
v-if="item.contentType === 'img'"
class="img_icon" class="img_icon"
:src="item.content" :src="item.content" />
/> <p v-if="item.contentType === 'rich_text'"
<p
v-if="item.contentType === 'rich_text'"
class="text_p" class="text_p"
v-html="item.content" v-html="item.content"></p>
></p>
</div> </div>
</div> </div>
</el-form-item> </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"
<el-button @click="handleCancle"> </el-button>
size="small" <el-button size="small"
v-if="formType != 'detail'" v-if="formType != 'detail'"
type="primary" type="primary"
:disabled="btnDisable" :disabled="btnDisable"
@click="handleComfirm" @click="handleComfirm"> </el-button>
> </el-button
>
</div> </div>
</div> </div>
</template> </template>

10
src/views/modules/shequzhili/issue/cpts/issue-detail.vue

@ -218,6 +218,7 @@ function iniData () {
issueInfo: {}, issueInfo: {},
showType: '', showType: '',
popSelIssueCate: [],
issueCate: [], issueCate: [],
cateOptions: [], cateOptions: [],
visibleCatePanel: false, visibleCatePanel: false,
@ -270,7 +271,7 @@ export default {
watch: { watch: {
selectedCateData (val) { selectedCateData (val) {
const { cateOptions } = this; const { cateOptions } = this;
this.issueCate = val this.popSelIssueCate = val
.filter((arr) => arr.length > 0) .filter((arr) => arr.length > 0)
.map((arr) => { .map((arr) => {
let ele1 = cateOptions.find((item) => item.id == arr[0]); let ele1 = cateOptions.find((item) => item.id == arr[0]);
@ -443,19 +444,20 @@ export default {
async updateIssueCate () { async updateIssueCate () {
const url = "/gov/issue/issuecategory/save"; const url = "/gov/issue/issuecategory/save";
const { issueCate } = this; const { popSelIssueCate } = this;
if (issueCate.length == 0) { if (popSelIssueCate.length == 0) {
return this.$message.error("分类不能为空"); return this.$message.error("分类不能为空");
} }
const { data, code, msg } = await requestPost(url, { const { data, code, msg } = await requestPost(url, {
issueId: this.issueId, issueId: this.issueId,
categoryList: issueCate, categoryList: popSelIssueCate,
}); });
if (code === 0) { if (code === 0) {
this.$message.success("更改成功"); this.$message.success("更改成功");
this.visibleCatePanel = false; this.visibleCatePanel = false;
this.issueCate = popSelIssueCate
this.getTagOptions(); this.getTagOptions();
} else { } else {
this.$message.error(msg); this.$message.error(msg);

17
src/views/modules/shequzhili/issue/cptsAudit/issue-info.vue

@ -64,15 +64,26 @@
<div class="detail-field">提交审核时间</div> <div class="detail-field">提交审核时间</div>
<div class="detail-value">{{ item.operateTime }}</div> <div class="detail-value">{{ item.operateTime }}</div>
</div> </div>
<div v-if="item.actionType==='rejected'" <div v-if="item.actionType==='rejected'">
class="detail"> <div class="detail">
<div class="detail-field">理由</div> <div class="detail-field">驳回时间</div>
<div class="detail-value">{{ item.operateTime }}</div>
</div>
<div class="detail">
<div class="detail-field">驳回人</div>
<div class="detail-value">{{ item.staffName }}</div>
</div>
<div class="detail">
<div class="detail-field">驳回理由</div>
<div class="detail-value">{{ item.reason }}</div> <div class="detail-value">{{ item.reason }}</div>
</div> </div>
</div> </div>
</div> </div>
</div>
</div> </div>
</div> </div>
</el-card> </el-card>

Loading…
Cancel
Save