From e030671ae98e7c52825b69b83d9aa0b3693026d8 Mon Sep 17 00:00:00 2001 From: dai <851733175@qq.com> Date: Fri, 1 Jul 2022 17:56:51 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=98=E6=9C=89=E5=BE=88=E9=95=BF=E8=B7=9D?= =?UTF-8?q?=E7=A6=BB=E6=89=8D=E8=83=BD=E7=BB=93=E6=9D=9F=EF=BC=8C=E8=BF=99?= =?UTF-8?q?=E4=B8=AA=E5=85=AC=E5=85=B1=E6=A8=A1=E6=9D=BF=E5=A4=8D=E6=9D=82?= =?UTF-8?q?=E5=BA=A6=E5=BE=88=E5=A4=A7=E5=95=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/communityParty/article/drafts.vue | 390 +++++++++++++----- .../modules/communityParty/article/index.vue | 96 ++++- src/views/modules/cpts/base/cpts/edit.vue | 92 ++++- src/views/modules/cpts/base/index.vue | 24 +- .../shequzhili/tuceng/anquan/xuncha/index.vue | 2 +- 5 files changed, 461 insertions(+), 143 deletions(-) diff --git a/src/views/modules/communityParty/article/drafts.vue b/src/views/modules/communityParty/article/drafts.vue index dbee3e59..36b4bdd6 100644 --- a/src/views/modules/communityParty/article/drafts.vue +++ b/src/views/modules/communityParty/article/drafts.vue @@ -1,6 +1,7 @@ diff --git a/src/views/modules/communityParty/article/index.vue b/src/views/modules/communityParty/article/index.vue index 323c9d02..e4ec2984 100644 --- a/src/views/modules/communityParty/article/index.vue +++ b/src/views/modules/communityParty/article/index.vue @@ -1,6 +1,7 @@ @@ -32,8 +48,10 @@ export default { data() { return { + draftBtnDisable: false, + searchParams: [ - { field: "活动标题", keyName: "title", type: "input" }, + { field: "文章标题", keyName: "title", type: "input" }, { field: "标签", keyName: "tagIds", @@ -119,7 +137,7 @@ export default { tableParams: [ { field: "序号", keyName: "", type: "no" }, - { field: "活动标题", keyName: "title", type: "text" }, + { field: "文章标题", keyName: "title", type: "text" }, { field: "标签", keyName: "tagNameList", @@ -132,8 +150,7 @@ export default { { field: "发布范围", keyName: "publishRangeDesc", - type: "array", - arrayDiv: "、", + type: "text", }, { field: "置顶", keyName: "isTopName", type: "text" }, ], @@ -200,7 +217,7 @@ export default { type: "cascader", value: [], supKeys: ["publishRangeDesc"], - supValues: [""], + supValues: [[]], optionUrl: "/gov/org/customeragency/agencygridtree", optionUrlParams: { agencyId: this.$store.state.user.agencyId, @@ -238,9 +255,9 @@ export default { that.fmData[item["keyName"]] = selectedFilterList.map( (a) => a.agencyId ); - that.fmData[item["supKeys"][0]] = selectedFilterList.map( - (a) => a.agencyName - ); + that.fmData[item["supKeys"][0]] = selectedFilterList + .map((a) => a.agencyName) + .join("、"); } else { } }, @@ -371,7 +388,42 @@ export default { inactiveValue: "0", }, ], + editFixedParams: { + type: "article", + }, editElseRules: {}, + editConfig: { + cookInfoFn(data) { + if (data.richTextFlag == "0") { + data.content = data.contentList + .map((item) => { + if (item.contentType == "text") { + return `

${item.content}

`; + } else if (item.contentType == "img") { + return ``; + } else if (item.contentType == "video") { + return ``; + } else if (item.contentType == "file") { + return `附件:${item.fileName}`; + } + }) + .join(" "); + } else { + data.content = data.contentList[0].content; + } + if (data.imgUrl) { + data.imgArr = [ + { + name: "封面", + url: data.imgUrl, + }, + ]; + data.imgUrlArr = [data.imgUrl]; + } + + return data; + }, + }, }; }, components: { basePage }, @@ -380,7 +432,31 @@ export default { async mounted() {}, - methods: {}, + methods: { + async handleClickDraft(fmData) { + let url = this.addUrl; + let params = { + ...fmData, + type: "draft", + }; + params = this.$refs.basePage.$refs.editForm.cookBeforeSubmit(params); + if (!params.title && !params.content) { + return this.$message.error("标题或内容不能为空"); + } + + const { data, code, msg } = await requestPost(url, params); + + if (code === 0) { + this.$message({ + type: "success", + message: "保存成功", + }); + this.$refs.basePage.handleClose(); + } else { + this.$message.error(msg); + } + }, + }, }; diff --git a/src/views/modules/cpts/base/cpts/edit.vue b/src/views/modules/cpts/base/cpts/edit.vue index c53aa894..933fc02d 100644 --- a/src/views/modules/cpts/base/cpts/edit.vue +++ b/src/views/modules/cpts/base/cpts/edit.vue @@ -14,7 +14,7 @@ @@ -348,6 +358,10 @@ export default { type: Object, default: () => ({}), }, + editConfig: { + type: Object, + default: () => ({}), + }, }, data() { @@ -430,6 +444,15 @@ export default { this.iniLoaded = true; }, + handleClickHtmlNode(e) { + //在判断事件目标节点的时候,考虑到兼容性应该统一转换成大写或小写进行判断 + if (e.target.localName.toLowerCase() === "a") { + // 通过判端目标节点以后,就能在这里对其进行操作啦。 + let url = e.target.getAttribute("src"); //获取a标签属性,我这里自定义了一个属性data-id并将id赋值给了该属性,如何需要获取click方法的参数,需要获取a标签的click属性,并手动解析获取里面的参数 + window.open(url); + } + }, + async getFmOptions(index, url, params, cookFn) { const { data, code, msg } = await requestPost(url, { ...params, @@ -630,8 +653,12 @@ export default { [idName]: formId, }; - const { data, code, msg } = await requestPost(url, params); + let { data, code, msg } = await requestPost(url, params); if (code === 0) { + const { editConfig } = this; + if (editConfig && typeof editConfig.cookInfoFn == "function") { + data = editConfig.cookInfoFn(data); + } this.fmData = { ...this.fmData, ...data, @@ -656,6 +683,7 @@ export default { window.open(src); }, + // 过滤文本 dormatHtml(content) { if ( content.startsWith( @@ -668,6 +696,15 @@ export default { return content; }, + cookBeforeSubmit(data) { + Object.keys(data).forEach((k) => { + if (typeof data[k] == "string") { + data[k] = this.dormatHtml(data[k]); + } + }); + return data; + }, + async handleComfirm() { this.btnDisable = true; setTimeout(() => { @@ -708,6 +745,8 @@ export default { // serviceType: this.fmData.serviceTypeArr.join(","), }; + params = this.cookBeforeSubmit(params); + if (this.formType === "add") { url = this.addUrl; } else { @@ -750,6 +789,10 @@ export default { } } + .item-show { + width: 225px; + } + .item-input { width: 225px; } @@ -776,14 +819,19 @@ export default { .item-rich-text { width: 600px; height: 450px; + img { + max-width: 100%; + } + .item-show { + width: 100%; + } } + .item-select, + .item-show, .item-input { width: 450px; } - .item-select { - width: 450px; - } .item-number { width: 225px; } diff --git a/src/views/modules/cpts/base/index.vue b/src/views/modules/cpts/base/index.vue index 61043b8a..5fef8acd 100644 --- a/src/views/modules/cpts/base/index.vue +++ b/src/views/modules/cpts/base/index.vue @@ -191,6 +191,7 @@ >