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

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

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

Loading…
Cancel
Save