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 @@
+ :editConfig="editConfig"
+ :editParamsDiv="5"
+ :infoAuth="() => false"
+ :formBtnFixed="true"
+ idName="draftId"
+ >
+
+ 存草稿
+
+
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 @@
-
-
-
+ class="item-rich-text"
+ >
+
+
+
@@ -196,7 +193,7 @@
:show-file-list="true"
:list-type="item.listType || 'picture'"
:limit="item.limit || 100"
- :file-list="item.showList"
+ :file-list="fmData[item.keyName]"
:on-success="(res, file) => handleImgSuccess(res, file, item)"
:on-remove="(res) => handleImgRemove(res, item)"
:before-upload="(file) => beforeImgUpload(file, item)"
@@ -260,9 +257,16 @@
@click="handleComfirm"
>确 定
+
确 定
+
@@ -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 @@
>
-
+
+
+
+ true,
+ },
editAuth: {
type: Function,
default: () => true,
@@ -360,6 +374,10 @@ export default {
type: Object,
default: () => ({}),
},
+ editConfig: {
+ type: Object,
+ default: () => ({}),
+ },
editFixedParams: {
type: Object,
default: () => ({}),
diff --git a/src/views/modules/shequzhili/tuceng/anquan/xuncha/index.vue b/src/views/modules/shequzhili/tuceng/anquan/xuncha/index.vue
index b3af3507..e67bcc55 100644
--- a/src/views/modules/shequzhili/tuceng/anquan/xuncha/index.vue
+++ b/src/views/modules/shequzhili/tuceng/anquan/xuncha/index.vue
@@ -21,7 +21,7 @@
:formBtnFixed="false"
idName="enterpriseId"
>
-
+