Browse Source

党建声音文章

feature
dai 3 years ago
parent
commit
28c653677a
  1. 204
      src/views/modules/communityParty/article/index.vue
  2. 11
      src/views/modules/cpts/base/index.vue

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

@ -1,6 +1,7 @@
<template>
<div>
<base-page ref="basePage"
<base-page
ref="basePage"
:searchParams="searchParams"
:tableParams="tableParams"
:tableUrl="tableUrl"
@ -18,77 +19,99 @@
:editElseRules="editElseRules"
:editConfig="editConfig"
:editParamsDiv="5"
:editBtnName="(item) => (!item.latitude ? '待完善' : '修改')"
:editBtnName="(item) => '修改'"
:formBtnFixed="true"
idName="articleId">
idName="articleId"
>
<template v-slot:editOperateSup="{ id, formType, info }">
<el-button v-if="formType != 'watch'"
<el-button
v-if="formType == 'add'"
type="warning"
size="small"
:disabled="draftBtnDisable"
@click="handleClickDraft(info)">存草稿</el-button>
@click="handleClickDraft(info)"
>存草稿</el-button
>
</template>
<template v-slot:listBtnSup="{ item }">
<el-button v-if="
<el-button
v-if="
item.statusFlag == 'published' &&
item.agencyId == $store.state.user.agencyId
"
@click="handleOfflineShow(item)"
type="text"
size="small"
style="color: #666">下线</el-button>
style="color: #666"
>下线</el-button
>
</template>
<template v-slot:listBtnbefore="{ item }">
<el-button v-if="item.isTop == '1'"
@click="handleCancleTopArticle(item,'cancel_top')"
<el-button
v-if="item.isTop == '1'"
@click="handleCancleTopArticle(item, 'cancel_top')"
type="text"
size="small"
style="color: #fe6252">取消置顶</el-button>
<el-button v-else
@click="handleTopArticle(item,'top')"
style="color: #fe6252"
>取消置顶</el-button
>
<el-button
v-else
@click="handleTopArticle(item, 'top')"
type="text"
size="small"
style="color: #22c1c3">置顶</el-button>
style="color: #22c1c3"
>置顶</el-button
>
</template>
</base-page>
<el-dialog :visible.sync="offlineShowed"
<el-dialog
:visible.sync="offlineShowed"
:close-on-click-modal="false"
:close-on-press-escape="false"
title="下线"
width="850px"
top="5vh"
class="dialog-h"
@closed="offlineShowed = false">
<offline ref="offlineForm"
@closed="offlineShowed = false"
>
<offline
ref="offlineForm"
@close="offlineShowed = false"
@afterOffline="handleOfflineSuccess"></offline>
@afterOffline="handleOfflineSuccess"
></offline>
</el-dialog>
<el-dialog :visible.sync="showAddImage"
<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">
@closed="showAddImage = false"
>
<div class="dialog-h-content scroll-h">
<!-- <span>请先上 传封面图片</span> -->
<el-form ref="ref_form"
<el-form
ref="ref_form"
:inline="true"
:model="formData"
class="div_form">
class="div_form"
>
<div class="form_flex">
<div class="form_item">
<el-form-item label=""
<el-form-item
label=""
prop="selImgUrl"
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"
@ -99,23 +122,20 @@
:file-list="replayImgList"
:on-change="handleEditChange"
:on-success="handleSuccess"
:limit="1">
: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>
<el-button size="small" @click="showAddImage = false"> </el-button>
<el-button size="small" type="primary" @click="handleAddImage"
> </el-button
>
</div>
</el-dialog>
</div>
@ -132,7 +152,7 @@ import nextTick from "dai-js/tools/nextTick";
export default {
props: {},
data () {
data() {
return {
offlineShowed: false,
@ -148,7 +168,7 @@ export default {
optionUrl: "/gov/voice/tag/taglist",
optionUrlParams: {},
optionList: [],
optionCook (list) {
optionCook(list) {
return list.map((item) => ({
label: item.tagName,
value: item.tagId,
@ -189,12 +209,12 @@ export default {
children: "subAgencyList",
checkStrictly: true,
},
optionCook (obj) {
optionCook(obj) {
return [obj];
},
supKeys: ["publishRangeId", "publishRangeType"],
supValues: ["", ""],
handleChangeFn (vals, item) {
handleChangeFn(vals, item) {
const { optionList } = item;
if (vals.length > 0) {
item["supValues"][0] = vals[vals.length - 1];
@ -246,14 +266,14 @@ export default {
exportUrl: "",
addUrl: "/gov/voice/article/addOrSaveDraft",
editUrl: "",
editUrl: "/gov/voice/article/updateArticle",
infoUrl: "/gov/voice/article/detailV2",
delUrl: "",
editAuth (item) {
return false;
delUrl: "/gov/voice/article/delete批量",
editAuth(item) {
return item.statusFlagName == "已发布";
},
delAuth (item) {
return false;
delAuth(item) {
return item.statusFlagName == "已下线";
},
editParams: [
@ -283,7 +303,7 @@ export default {
uploadUrl: window.SITE_CONFIG["apiURL"] + "/oss/file/article/upload",
supKeys: ["imgUrlArr", "imgUrl"],
supValues: [() => [], ""],
beforeImgUpload (file, item, that) {
beforeImgUpload(file, item, that) {
console.log(file);
const isLt1M = file.size / 1024 / 1024 < 10;
const srcType = file.type;
@ -319,10 +339,10 @@ export default {
checkStrictly: false,
emitPath: false,
},
optionCook (obj) {
optionCook(obj) {
return [obj];
},
handleChangeFn (vals, item, that) {
handleChangeFn(vals, item, that) {
console.log("handleChangeFn", vals);
const { optionList } = item;
const optionPlaneList = collapse(optionList, "subAgencyList");
@ -363,7 +383,7 @@ export default {
type: "date",
value: dateFormat(new Date(), "yyyy-MM-dd"),
pickerOptions: {
disabledDate (time) {
disabledDate(time) {
return time.getTime() > Date.now();
},
},
@ -384,7 +404,7 @@ export default {
optionType: "group",
supKeys: ["publisherName", "publisherType"],
supValues: ["", ""],
optionCook (data) {
optionCook(data) {
let ret = [];
const { agencyDeptList, agencyGridList, agencyId, agencyName } =
data;
@ -426,7 +446,7 @@ export default {
}
return ret;
},
handleChangeFn (vals, item, that) {
handleChangeFn(vals, item, that) {
const { optionList } = item;
let opts = [];
optionList.forEach((g) => {
@ -454,7 +474,7 @@ export default {
optionUrl: "/gov/voice/tag/taglist",
optionUrlParams: {},
optionList: [],
optionCook (list) {
optionCook(list) {
return list.map((item) => ({
label: item.tagName,
value: item.tagName,
@ -487,7 +507,7 @@ export default {
editElseRules: {},
editConfig: {
confirmBtnName: "发布",
cookInfoFn (data) {
cookInfoFn(data) {
if (data.richTextFlag == "0") {
data.content = data.contentList
.map((item) => {
@ -518,7 +538,7 @@ export default {
return data;
},
beforeSubmit (formType, fmData, that) {
beforeSubmit(formType, fmData, that) {
if (fmData.isTop == "1" && !fmData.imgUrl) {
that.$message.error("请上传封面图片");
return false;
@ -532,109 +552,105 @@ export default {
uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadvariedfile",
replayImgList: [],
hideUploadBtn: false,
selType: 'top',
selArticleId: '',
selImgUrl: ''
selType: "top",
selArticleId: "",
selImgUrl: "",
};
},
components: { basePage, offline },
computed: {},
watch: {},
async mounted () { },
async mounted() {},
methods: {
async handleOfflineShow (item) {
async handleOfflineShow(item) {
console.log(item);
this.offlineShowed = true;
await nextTick(100);
this.$refs.offlineForm.initForm(item);
},
async handleAddImage () {
console.log('formData', this.formData)
this.topArticle()
async handleAddImage() {
console.log("formData", this.formData);
this.topArticle();
},
async handleCancleTopArticle (item, type) {
this.selType = type
this.selArticleId = item.articleId
await this.topArticle()
async handleCancleTopArticle(item, type) {
this.selType = type;
this.selArticleId = item.articleId;
await this.topArticle();
},
async handleTopArticle (item, type) {
async handleTopArticle(item, type) {
this.selType = type;
this.selArticleId = item.articleId;
this.selType = type
this.selArticleId = item.articleId
let hasImage = await this.isHasImage();
let hasImage = await this.isHasImage()
if (hasImage === 'refrsh') {
if (hasImage === "refrsh") {
this.$message.error("请求失败,请重新尝试");
} else if (hasImage === 'no') {
} else if (hasImage === "no") {
// this.$message.info("");
this.showAddImage = true
this.showAddImage = true;
} else {
await this.topArticle()
await this.topArticle();
}
},
async isHasImage () {
async isHasImage() {
const url = "/gov/voice/article/detailV2";
const { tableData } = this;
const { data, code, msg } = await requestPost(url, {
articleId: this.selArticleId,
});
if (code === 0) {
// this.formData = data
if (data.imgUrl) {
return 'has'
return "has";
} else {
return 'no'
return "no";
}
} else {
return 'refrsh'
return "refrsh";
}
},
async topArticle () {
async topArticle() {
const url = "/gov/voice/article/topArticle";
const { tableData } = this;
let params = {
articleId: this.selArticleId,
type: this.selType
}
type: this.selType,
};
if (this.selImgUrl) {
params.imgUrl = this.selImgUrl
params.imgUrl = this.selImgUrl;
}
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.$message.success("操作成功!");
this.showAddImage = false
this.showAddImage = false;
this.$refs.basePage.refresh();
} else {
this.$message.success("操作失败!");
}
},
removePic (file, fileList) {
removePic(file, fileList) {
this.selImgUrl = "";
this.replayImgList = [];
this.hideUploadBtn = fileList.length >= 1;
},
// 3
handleEditChange (file, fileList) {
handleEditChange(file, fileList) {
this.hideUploadBtn = fileList.length >= 1;
},
exceedPic () {
exceedPic() {
this.$message.warning("只能上传1张封面图");
},
beforeAvatarUpload (file) {
beforeAvatarUpload(file) {
const isJPG = file.type === "image/jpeg";
const isLt2M = file.size / 1024 / 1024 < 10;
@ -643,17 +659,17 @@ export default {
}
return isLt2M;
},
handleSuccess (response, file, fileList) {
handleSuccess(response, file, fileList) {
this.replayImgList.push(file);
this.selImgUrl = response.data.url;
},
handleOfflineSuccess () {
handleOfflineSuccess() {
this.$refs.basePage.refresh();
this.offlineShowed = false;
},
async handleClickDraft (fmData) {
async handleClickDraft(fmData) {
let url = this.addUrl;
let params = {
...fmData,

11
src/views/modules/cpts/base/index.vue

@ -720,13 +720,18 @@ export default {
const { tableData, idName } = this;
const idValue = tableData[rowIndex][idName];
let param = {
[idName]: idValue,
};
if (url.endsWith("/")) {
url += idValue;
}
if (url.endsWith("批量")) {
url = url.slice(0, -2);
param = [idValue];
}
const { data, code, msg } = await requestPost(url, {
[idName]: idValue,
});
const { data, code, msg } = await requestPost(url, param);
if (code === 0) {
this.$message.success("删除成功!");

Loading…
Cancel
Save