@maketribe/ms-app 3.2.27 → 3.2.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/modules/cms/composables/part-extensions.js +6 -6
- package/dist/cjs/modules/cms/composables/part-extensions.js.map +1 -1
- package/dist/cjs/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js +20 -2
- package/dist/cjs/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js.map +1 -1
- package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +6 -6
- package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
- package/dist/cjs/modules/cms/pages/cms-contents/index.vue2.js +60 -58
- package/dist/cjs/modules/cms/pages/cms-contents/index.vue2.js.map +1 -1
- package/dist/esm/modules/cms/composables/part-extensions.js +6 -6
- package/dist/esm/modules/cms/composables/part-extensions.js.map +1 -1
- package/dist/esm/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js +20 -2
- package/dist/esm/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js.map +1 -1
- package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +6 -6
- package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
- package/dist/esm/modules/cms/pages/cms-contents/index.vue2.js +62 -60
- package/dist/esm/modules/cms/pages/cms-contents/index.vue2.js.map +1 -1
- package/dist/types/modules/cms/composables/part-extensions.d.ts +7 -3
- package/package.json +1 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const PartExtensionList =
|
|
4
|
-
const
|
|
5
|
-
return PartExtensionList
|
|
3
|
+
const PartExtensionList = [];
|
|
4
|
+
const usePartExtensionList = (partIdorName) => {
|
|
5
|
+
return PartExtensionList.filter((item) => item.key == partIdorName).map((item) => item.extension);
|
|
6
6
|
};
|
|
7
|
-
const registerPartExtension = (
|
|
8
|
-
PartExtensionList
|
|
7
|
+
const registerPartExtension = (partIdorName, ext) => {
|
|
8
|
+
PartExtensionList.push({ key: partIdorName, extension: ext });
|
|
9
9
|
};
|
|
10
10
|
exports.registerPartExtension = registerPartExtension;
|
|
11
|
-
exports.
|
|
11
|
+
exports.usePartExtensionList = usePartExtensionList;
|
|
12
12
|
//# sourceMappingURL=part-extensions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"part-extensions.js","sources":["../../../../../src/modules/cms/composables/part-extensions.ts"],"sourcesContent":["\r\nimport { type Component } from \"vue\"\r\n\r\n\r\nexport type PartExtension = {\r\n saveHandle?:Function,\r\n component:Component,\r\n save:Function\r\n}\r\n\r\nconst PartExtensionList:
|
|
1
|
+
{"version":3,"file":"part-extensions.js","sources":["../../../../../src/modules/cms/composables/part-extensions.ts"],"sourcesContent":["\r\nimport { type Component } from \"vue\"\r\n\r\n/**\r\n * 页面扩展\r\n */\r\nexport type PartExtension = {\r\n title?:\"\",\r\n saveHandle?:Function,\r\n component:Component,\r\n save:Function\r\n}\r\n\r\nconst PartExtensionList:Array<({key:string|number,extension:PartExtension})> = [];\r\n\r\n/**\r\n * 使用扩展\r\n * @param partId 或者栏目名称\r\n * @returns \r\n */\r\nexport const usePartExtensionList = (partIdorName:string|number):any=>{\r\n return PartExtensionList.filter(item=>item.key == partIdorName).map(item=>item.extension);\r\n}\r\n\r\n/**\r\n * 注册扩展\r\n * @param partId \r\n * @returns \r\n */\r\nexport const registerPartExtension = (partIdorName:string|number,ext:PartExtension)=>{\r\n PartExtensionList.push({ key:partIdorName,extension:ext })\r\n}\r\n"],"names":[],"mappings":";;AAaA,MAAM,oBAAyE,CAAA;AAOlE,MAAA,uBAAuB,CAAC,iBAAiC;AAC7D,SAAA,kBAAkB,OAAO,CAAA,SAAM,KAAK,OAAO,YAAY,EAAE,IAAI,CAAM,SAAA,KAAK,SAAS;AAC1F;AAOa,MAAA,wBAAwB,CAAC,cAA2B,QAAoB;AACnF,oBAAkB,KAAK,EAAE,KAAI,cAAa,WAAU,KAAK;AAC3D;;;"}
|
|
@@ -80,8 +80,26 @@ const _CmsAdContentsForm = class _CmsAdContentsForm extends (_b = dm.DataForm, _
|
|
|
80
80
|
await super.initialize();
|
|
81
81
|
this.setColumns([
|
|
82
82
|
// new FormColumn({ name: "adDefineId", label: "广告定义", required: true, visible: true }),
|
|
83
|
-
new dm.FormColumn({
|
|
84
|
-
|
|
83
|
+
new dm.FormColumn({
|
|
84
|
+
name: "title",
|
|
85
|
+
label: "标题",
|
|
86
|
+
required: true,
|
|
87
|
+
componentInfo: "MKFormInput",
|
|
88
|
+
componentProps: {
|
|
89
|
+
type: "textarea",
|
|
90
|
+
rows: 2
|
|
91
|
+
}
|
|
92
|
+
}),
|
|
93
|
+
new dm.FormColumn({
|
|
94
|
+
name: "desc",
|
|
95
|
+
label: "描述",
|
|
96
|
+
required: true,
|
|
97
|
+
componentInfo: "MKFormInput",
|
|
98
|
+
componentProps: {
|
|
99
|
+
type: "textarea",
|
|
100
|
+
rows: 5
|
|
101
|
+
}
|
|
102
|
+
}),
|
|
85
103
|
new dm.FormColumn({
|
|
86
104
|
name: "type",
|
|
87
105
|
label: "素材类型",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CmsAdContentsForm.js","sources":["../../../../../../src/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.ts"],"sourcesContent":["import { DataForm, DataFormOptions, FormColumn } from \"@maketribe/dm\";\r\nimport { ImageUploadContext, MaterialUploadContext } from \"../../../ms\";\r\nimport { DATA_MODEL_NAME } from \"../../../../constants\";\r\nimport { MODULE_NAME } from \"../../constants\";\r\n\r\nexport class CmsAdContentsForm extends DataForm {\r\n\tstatic [DATA_MODEL_NAME]: string = \"ad-content\";\r\n\tcutSise: string = \"\";\r\n\tconstructor(options: DataFormOptions & { cutSise?: string } = {}) {\r\n\t\tsuper({\r\n\t\t\tname: CmsAdContentsForm[DATA_MODEL_NAME],\r\n\t\t\tmoduleName: MODULE_NAME,\r\n\t\t\t...options,\r\n\t\t});\r\n\t\tconsole.log(options.cutSise)\r\n\t\tthis.cutSise = options.cutSise as string\r\n\t}\r\n\r\n\tchangeCutSise(cutSise: string) {\r\n\t\tthis.cutSise = cutSise\r\n\t}\r\n\r\n\tprotected async initialize() {\r\n\t\tawait super.initialize();\r\n\t\tthis.setColumns([\r\n\t\t\t// new FormColumn({ name: \"adDefineId\", label: \"广告定义\", required: true, visible: true }),\r\n\t\t\tnew FormColumn({
|
|
1
|
+
{"version":3,"file":"CmsAdContentsForm.js","sources":["../../../../../../src/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.ts"],"sourcesContent":["import { DataForm, DataFormOptions, FormColumn } from \"@maketribe/dm\";\r\nimport { ImageUploadContext, MaterialUploadContext } from \"../../../ms\";\r\nimport { DATA_MODEL_NAME } from \"../../../../constants\";\r\nimport { MODULE_NAME } from \"../../constants\";\r\n\r\nexport class CmsAdContentsForm extends DataForm {\r\n\tstatic [DATA_MODEL_NAME]: string = \"ad-content\";\r\n\tcutSise: string = \"\";\r\n\tconstructor(options: DataFormOptions & { cutSise?: string } = {}) {\r\n\t\tsuper({\r\n\t\t\tname: CmsAdContentsForm[DATA_MODEL_NAME],\r\n\t\t\tmoduleName: MODULE_NAME,\r\n\t\t\t...options,\r\n\t\t});\r\n\t\tconsole.log(options.cutSise)\r\n\t\tthis.cutSise = options.cutSise as string\r\n\t}\r\n\r\n\tchangeCutSise(cutSise: string) {\r\n\t\tthis.cutSise = cutSise\r\n\t}\r\n\r\n\tprotected async initialize() {\r\n\t\tawait super.initialize();\r\n\t\tthis.setColumns([\r\n\t\t\t// new FormColumn({ name: \"adDefineId\", label: \"广告定义\", required: true, visible: true }),\r\n\t\t\tnew FormColumn({\r\n\t\t\t\tname: \"title\", label: \"标题\", required: true, componentInfo: \"MKFormInput\",\r\n\t\t\t\tcomponentProps: {\r\n\t\t\t\t\ttype: \"textarea\",\r\n\t\t\t\t\trows: 2\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t\tnew FormColumn({\r\n\t\t\t\tname: \"desc\", label: \"描述\", required: true, componentInfo: \"MKFormInput\",\r\n\t\t\t\tcomponentProps: {\r\n\t\t\t\t\ttype: \"textarea\",\r\n\t\t\t\t\trows: 5\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t\tnew FormColumn({\r\n\t\t\t\tname: \"type\",\r\n\t\t\t\tlabel: \"素材类型\",\r\n\t\t\t\trequired: true,\r\n\t\t\t\tdefaultValue: 1,\r\n\t\t\t\tcomponentInfo: \"MKFormDataSelect\",\r\n\t\t\t\tcomponentProps: {\r\n\t\t\t\t\toptions: [\r\n\t\t\t\t\t\t{ value: 1, label: \"图片\" },\r\n\t\t\t\t\t\t{ value: 2, label: \"视频\" },\r\n\t\t\t\t\t],\r\n\t\t\t\t},\r\n\t\t\t}),\r\n\t\t\tnew FormColumn({\r\n\t\t\t\tname: \"path\",\r\n\t\t\t\tlabel: \"素材路径\",\r\n\t\t\t\trequired: true,\r\n\t\t\t\tcomponentInfo: \"MKFormImageUpload\",\r\n\t\t\t\tcomponentProps: {\r\n\t\t\t\t\tuploadContext: new ImageUploadContext(this.cutSise),\r\n\t\t\t\t},\r\n\t\t\t}),\r\n\t\t\tnew FormColumn({ name: \"link\", label: \"跳转链接\" }),\r\n\t\t]);\r\n\r\n\t\tthis.formItemValueChangeEvent.on((column) => {\r\n\t\t\tif (column.formItem.name == \"type\") {\r\n\t\t\t\tif (column.data.value == 1) {\r\n\t\t\t\t\tthis.getColumn(\"path\")!.componentInfo = \"MKFormImageUpload\"\r\n\t\t\t\t\tthis.getColumn(\"path\")!.componentProps.uploadContext =\r\n\t\t\t\t\t\tnew ImageUploadContext(this.cutSise);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.getColumn(\"path\")!.componentInfo = \"MKFormVideoUpload\"\r\n\t\t\t\t\tthis.getColumn(\"path\")!.componentProps.uploadContext =\r\n\t\t\t\t\t\tnew MaterialUploadContext({\r\n\t\t\t\t\t\t\tallowMaterialTypeValues: [2],\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n"],"names":["DataForm","DATA_MODEL_NAME","MODULE_NAME","FormColumn","ImageUploadContext","MaterialUploadContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,MAAM,qBAAN,MAAM,4BAA0BA,QAAAA,UAC9BC,eAAAA,iBAD8BD,IAAS;AAAA,EAG/C,YAAY,UAAkD,IAAI;AAC3D,UAAA;AAAA,MACL,MAAM,mBAAkBC,yBAAe;AAAA,MACvC,YAAYC,MAAA;AAAA,MACZ,GAAG;AAAA,IAAA,CACH;AANF,mCAAkB;AAOT,YAAA,IAAI,QAAQ,OAAO;AAC3B,SAAK,UAAU,QAAQ;AAAA,EACxB;AAAA,EAEA,cAAc,SAAiB;AAC9B,SAAK,UAAU;AAAA,EAChB;AAAA,EAEA,MAAgB,aAAa;AAC5B,UAAM,MAAM;AACZ,SAAK,WAAW;AAAA;AAAA,MAEf,IAAIC,cAAW;AAAA,QACd,MAAM;AAAA,QAAS,OAAO;AAAA,QAAM,UAAU;AAAA,QAAM,eAAe;AAAA,QAC3D,gBAAgB;AAAA,UACf,MAAM;AAAA,UACN,MAAM;AAAA,QACP;AAAA,MAAA,CACA;AAAA,MACD,IAAIA,cAAW;AAAA,QACd,MAAM;AAAA,QAAQ,OAAO;AAAA,QAAM,UAAU;AAAA,QAAM,eAAe;AAAA,QAC1D,gBAAgB;AAAA,UACf,MAAM;AAAA,UACN,MAAM;AAAA,QACP;AAAA,MAAA,CACA;AAAA,MACD,IAAIA,cAAW;AAAA,QACd,MAAM;AAAA,QACN,OAAO;AAAA,QACP,UAAU;AAAA,QACV,cAAc;AAAA,QACd,eAAe;AAAA,QACf,gBAAgB;AAAA,UACf,SAAS;AAAA,YACR,EAAE,OAAO,GAAG,OAAO,KAAK;AAAA,YACxB,EAAE,OAAO,GAAG,OAAO,KAAK;AAAA,UACzB;AAAA,QACD;AAAA,MAAA,CACA;AAAA,MACD,IAAIA,cAAW;AAAA,QACd,MAAM;AAAA,QACN,OAAO;AAAA,QACP,UAAU;AAAA,QACV,eAAe;AAAA,QACf,gBAAgB;AAAA,UACf,eAAe,IAAIC,QAAAA,mBAAmB,KAAK,OAAO;AAAA,QACnD;AAAA,MAAA,CACA;AAAA,MACD,IAAID,GAAAA,WAAW,EAAE,MAAM,QAAQ,OAAO,QAAQ;AAAA,IAAA,CAC9C;AAEI,SAAA,yBAAyB,GAAG,CAAC,WAAW;AACxC,UAAA,OAAO,SAAS,QAAQ,QAAQ;AAC/B,YAAA,OAAO,KAAK,SAAS,GAAG;AACtB,eAAA,UAAU,MAAM,EAAG,gBAAgB;AACnC,eAAA,UAAU,MAAM,EAAG,eAAe,gBACtC,IAAIC,QAAA,mBAAmB,KAAK,OAAO;AAAA,QAAA,OAC9B;AACD,eAAA,UAAU,MAAM,EAAG,gBAAgB;AACxC,eAAK,UAAU,MAAM,EAAG,eAAe,gBACtC,IAAIC,4CAAsB;AAAA,YACzB,yBAAyB,CAAC,CAAC;AAAA,UAAA,CAC3B;AAAA,QACH;AAAA,MACD;AAAA,IAAA,CACA;AAAA,EACF;AACD;AA3EC,cADY,oBACJJ,IAA2B;AAD7B,IAAM,oBAAN;;"}
|
|
@@ -147,6 +147,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
147
147
|
const showAdDefineHandle = async () => {
|
|
148
148
|
var _a;
|
|
149
149
|
await dm.Dialoger.dataFormDialog({
|
|
150
|
+
title: "设置素材显示尺寸",
|
|
150
151
|
dataForm: adDefineForm,
|
|
151
152
|
recId: (_a = partAdBanner.value) == null ? void 0 : _a.id
|
|
152
153
|
});
|
|
@@ -215,7 +216,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
215
216
|
onClick: ($event) => showAdContentHandle(item.id)
|
|
216
217
|
}, {
|
|
217
218
|
default: vue.withCtx(() => [
|
|
218
|
-
vue.createTextVNode("
|
|
219
|
+
vue.createTextVNode(" 编辑当前轮播素材 ")
|
|
219
220
|
]),
|
|
220
221
|
_: 2
|
|
221
222
|
}, 1032, ["icon", "onClick"]),
|
|
@@ -226,7 +227,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
226
227
|
onClick: _cache[0] || (_cache[0] = ($event) => showAdContentHandle(null))
|
|
227
228
|
}, {
|
|
228
229
|
default: vue.withCtx(() => [
|
|
229
|
-
vue.createTextVNode("
|
|
230
|
+
vue.createTextVNode(" 添加新轮播素材 ")
|
|
230
231
|
]),
|
|
231
232
|
_: 1
|
|
232
233
|
}, 8, ["icon"]),
|
|
@@ -237,7 +238,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
237
238
|
onClick: _cache[1] || (_cache[1] = ($event) => showAdDefineHandle())
|
|
238
239
|
}, {
|
|
239
240
|
default: vue.withCtx(() => [
|
|
240
|
-
vue.createTextVNode("
|
|
241
|
+
vue.createTextVNode(" 设置素材显示尺寸 ")
|
|
241
242
|
]),
|
|
242
243
|
_: 1
|
|
243
244
|
}, 8, ["icon"])
|
|
@@ -251,14 +252,13 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
251
252
|
_: 1
|
|
252
253
|
})) : (vue.openBlock(), vue.createBlock(_component_el_empty, {
|
|
253
254
|
key: 1,
|
|
254
|
-
description: "暂无轮播数据",
|
|
255
255
|
"image-size": 80,
|
|
256
256
|
style: { "height": "240px" }
|
|
257
257
|
}, {
|
|
258
258
|
description: vue.withCtx(() => [
|
|
259
259
|
vue.createVNode(_component_el_text, null, {
|
|
260
260
|
default: vue.withCtx(() => [
|
|
261
|
-
vue.createTextVNode("
|
|
261
|
+
vue.createTextVNode("暂无轮播素材数据")
|
|
262
262
|
]),
|
|
263
263
|
_: 1
|
|
264
264
|
}),
|
|
@@ -270,7 +270,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
270
270
|
onClick: _cache[2] || (_cache[2] = ($event) => showAdDefineHandle())
|
|
271
271
|
}, {
|
|
272
272
|
default: vue.withCtx(() => [
|
|
273
|
-
vue.createTextVNode("
|
|
273
|
+
vue.createTextVNode(" 设置素材显示尺寸 ")
|
|
274
274
|
]),
|
|
275
275
|
_: 1
|
|
276
276
|
}, 8, ["icon"]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"part-banner-edit.vue.js","sources":["../../../../../../../src/modules/cms/pages/cms-contents/components/part-banner-edit.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-part-banner__warp\" v-loading=\"loading\" v-if=\"cmsSettings.part.openBanner\">\r\n <el-carousel v-if=\"partAdBanner && partAdBanner.contents?.length\" :autoplay=\"false\" height=\"240px\" arrow=\"always\">\r\n <el-carousel-item v-for=\"item in partAdBanner.contents\" :key=\"item.id\">\r\n <div class=\"mk-cms-part-banner__list_item\">\r\n <div class=\"mk-cms-part-banner__list_content\">\r\n <el-image class=\"mk-cms-part-banner__list_content_img\" v-if=\"item.type == 1\" :src=\"item.path\" fit=\"cover\"\r\n tyle=\"width: 100%;height: 100%;\">\r\n <div slot=\"placeholder\" class=\"image-slot\">\r\n 加载中<span class=\"dot\">...</span>\r\n </div>\r\n </el-image>\r\n <video class=\"video\" v-if=\"item.type == 2\" :src=\"item.path\" style=\"width: 100%;height: 100%;\"\r\n controls></video>\r\n </div>\r\n <div class=\"mk-cms-part-banner__list_bottom\">\r\n <div class=\"mk-cms-part-banner__list_title\">{{ item.title }}</div>\r\n <div>{{ item.desc }}</div>\r\n </div>\r\n <div class=\"mk-cms-part-banner__list_action-mask\">\r\n <el-button type=\"primary\" style=\"margin-left: 10px;\" :icon=\"EditPen\" @click=\"showAdContentHandle(item.id)\">\r\n
|
|
1
|
+
{"version":3,"file":"part-banner-edit.vue.js","sources":["../../../../../../../src/modules/cms/pages/cms-contents/components/part-banner-edit.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-part-banner__warp\" v-loading=\"loading\" v-if=\"cmsSettings.part.openBanner\">\r\n <el-carousel v-if=\"partAdBanner && partAdBanner.contents?.length\" :autoplay=\"false\" height=\"240px\" arrow=\"always\">\r\n <el-carousel-item v-for=\"item in partAdBanner.contents\" :key=\"item.id\">\r\n <div class=\"mk-cms-part-banner__list_item\">\r\n <div class=\"mk-cms-part-banner__list_content\">\r\n <el-image class=\"mk-cms-part-banner__list_content_img\" v-if=\"item.type == 1\" :src=\"item.path\" fit=\"cover\"\r\n tyle=\"width: 100%;height: 100%;\">\r\n <div slot=\"placeholder\" class=\"image-slot\">\r\n 加载中<span class=\"dot\">...</span>\r\n </div>\r\n </el-image>\r\n <video class=\"video\" v-if=\"item.type == 2\" :src=\"item.path\" style=\"width: 100%;height: 100%;\"\r\n controls></video>\r\n </div>\r\n <div class=\"mk-cms-part-banner__list_bottom\">\r\n <div class=\"mk-cms-part-banner__list_title\">{{ item.title }}</div>\r\n <div>{{ item.desc }}</div>\r\n </div>\r\n <div class=\"mk-cms-part-banner__list_action-mask\">\r\n <el-button type=\"primary\" style=\"margin-left: 10px;\" :icon=\"EditPen\" @click=\"showAdContentHandle(item.id)\">\r\n 编辑当前轮播素材\r\n </el-button>\r\n <el-button type=\"primary\" style=\"margin-left: 10px;\" :icon=\"Plus\" @click=\"showAdContentHandle(null)\">\r\n 添加新轮播素材\r\n </el-button>\r\n <el-button type=\"primary\" style=\"margin-left: 10px;\" :icon=\"EditPen\" @click=\"showAdDefineHandle()\">\r\n 设置素材显示尺寸\r\n </el-button>\r\n </div>\r\n </div>\r\n </el-carousel-item>\r\n </el-carousel>\r\n <el-empty v-else :image-size=\"80\" style=\"height: 240px;\">\r\n <template #description>\r\n <el-text>暂无轮播素材数据</el-text>\r\n <el-button type=\"primary\" text style=\"margin-left: 10px;\" :icon=\"Plus\" @click=\"showAdDefineHandle()\">\r\n 设置素材显示尺寸\r\n </el-button>\r\n <el-button type=\"primary\" text style=\"margin-left: 10px;\" :icon=\"Plus\" @click=\"showAdContentHandle(null)\">\r\n 添加\r\n </el-button>\r\n </template>\r\n </el-empty>\r\n </div>\r\n</template>\r\n<script setup lang=\"ts\">\r\nimport { useCmsSettings } from \"../../../cms-settings\"\r\nimport { onMounted, reactive, ref, watch, defineProps } from \"vue\";\r\nimport { DataViewRequest, Where } from \"@maketribe/request\";\r\nimport { Dialoger, Messager } from \"@maketribe/dm\";\r\nimport { CmsAdContentsForm, CmsAdDefinesForm } from \"../../../dataviews\";\r\nimport { EditPen, ArrowDown, Delete, Plus } from \"@element-plus/icons-vue\"\r\n// 广告定义数据表\r\nconst adRequest = new DataViewRequest({ name: \"ad-define\", moduleName: \"cms\" });\r\n// cms 配置\r\nconst cmsSettings = useCmsSettings();\r\nconst props = defineProps({ partId: { type: String }, title: { type: String } })\r\n// 栏目广告\r\nconst partAdBanner = ref<any | null>(null);\r\nconst loading = ref(true);\r\nconst adContentForm = reactive<CmsAdContentsForm>(new CmsAdContentsForm({ cutSise: cmsSettings.part.bannerImageSize }))\r\nconst adDefineForm = reactive<CmsAdDefinesForm>(new CmsAdDefinesForm())\r\n\r\n// 内容添加之前监测广告是否存在不存在先添加广告\r\nadContentForm.beforeSubmitEvent.on(async ({ data }) => {\r\n if (partAdBanner.value) {\r\n data.adDefineId = partAdBanner.value.id as any;\r\n }\r\n else {\r\n try {\r\n\r\n const widthAndHeight = cmsSettings.part.bannerImageSize.split(\"*\");\r\n // 添加广告\r\n const result = await adRequest.add({ key: `part_${props.partId}`, desc: `${props.title}的Banner`, width: widthAndHeight[0], height: widthAndHeight[1] })\r\n\r\n if (result.data.code == 200) {\r\n partAdBanner.value = { id: result.data.data as string }\r\n data.adDefineId = result.data.data;\r\n }\r\n\r\n } catch (error) {\r\n Messager.error({ message: \"添加失败!\" });\r\n }\r\n }\r\n\r\n})\r\n\r\n//提交判断是否存在,判断更新还是添加\r\nadDefineForm.formatSubmitData = ((data) => {\r\n if (partAdBanner.value) {\r\n data.id = partAdBanner.value.id as any;\r\n } else {\r\n data.key = `part_${props.partId}`\r\n data.desc = `${props.title}的Banner`\r\n }\r\n return data\r\n})\r\n\r\n\r\n\r\n// 添加完成则刷新\r\nadContentForm.submittedEvent.on(() => {\r\n loadPartAdDefineData(props.partId)\r\n})\r\n//加完成则刷新\r\nadDefineForm.submittedEvent.on(() => {\r\n loadPartAdDefineData(props.partId)\r\n})\r\n\r\n//加载栏目广告\r\nconst loadPartAdDefineData = async (partId: any) => {\r\n\r\n try {\r\n\r\n loading.value = true;\r\n const where = new Where()\r\n where.addCondition(\"key\", \"=\", `part_${partId}`);\r\n // 加载广告定义\r\n partAdBanner.value = (await adRequest.query({\r\n data: {\r\n pn: 1,\r\n pc: 1000000,\r\n condition: where\r\n }\r\n })).data.data[0];\r\n if (partAdBanner.value?.width && partAdBanner.value?.width) {\r\n adContentForm.changeCutSise(`${partAdBanner.value.width}*${partAdBanner.value.height}`)\r\n }\r\n\r\n } catch (e) {\r\n console.error(e)\r\n } finally {\r\n loading.value = false;\r\n }\r\n}\r\n//显示栏目广告的编辑弹窗\r\nconst showAdContentHandle = async (id: any) => {\r\n await Dialoger.dataFormDialog({\r\n dataForm: adContentForm as CmsAdContentsForm,\r\n recId: id\r\n })\r\n}\r\n//显示栏目广告定义的编辑弹窗\r\nconst showAdDefineHandle = async () => {\r\n await Dialoger.dataFormDialog({\r\n title:\"设置素材显示尺寸\",\r\n dataForm: adDefineForm as CmsAdDefinesForm,\r\n recId: partAdBanner.value?.id\r\n })\r\n adDefineForm.getColumn(\"contents\")!.visible = false;\r\n adDefineForm.getColumn(\"key\")!.visible = false;\r\n adDefineForm.getColumn(\"desc\")!.visible = false;\r\n}\r\n\r\n// 组件挂载的时候\r\nonMounted(() => {\r\n watch(() => props.partId, id => {\r\n loadPartAdDefineData(id)\r\n }, { immediate: true })\r\n})\r\n\r\n</script>\r\n<style lang='scss'></style>\r\n"],"names":["DataViewRequest","cmsSettings","useCmsSettings","ref","reactive","CmsAdContentsForm","CmsAdDefinesForm","Messager","Where","Dialoger","onMounted","watch"],"mappings":"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"}
|
|
@@ -83,7 +83,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
83
83
|
const activeTabName = vue.ref("article-list");
|
|
84
84
|
const curSelectPartItem = vue.ref(null);
|
|
85
85
|
const partTreeRef = vue.ref(null);
|
|
86
|
-
const
|
|
86
|
+
const partExList = vue.ref([]);
|
|
87
87
|
const partDataForm = vue.reactive(new CmsContentManPartForm.CmsContentManPartForm());
|
|
88
88
|
partDataForm.init();
|
|
89
89
|
let beforeInitFormPart = null;
|
|
@@ -106,7 +106,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
106
106
|
activeTabName.value = "article-list";
|
|
107
107
|
}
|
|
108
108
|
router.replace({ name: "cms/contents", query: { pid: curSelectPartItem.value.id } });
|
|
109
|
-
|
|
109
|
+
partExList.value = partExtensions.usePartExtensionList(curSelectPartItem.value.id).concat(partExtensions.usePartExtensionList(curSelectPartItem.value.name));
|
|
110
110
|
}
|
|
111
111
|
};
|
|
112
112
|
const deletePartHandle = (item) => {
|
|
@@ -247,52 +247,53 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
247
247
|
curSelectPartItem.value ? (vue.openBlock(), vue.createBlock(_component_el_tabs, {
|
|
248
248
|
key: 0,
|
|
249
249
|
modelValue: activeTabName.value,
|
|
250
|
-
"onUpdate:modelValue": _cache[
|
|
250
|
+
"onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => activeTabName.value = $event),
|
|
251
251
|
class: "mk-cms-contents__body__right"
|
|
252
252
|
}, {
|
|
253
253
|
default: vue.withCtx(() => [
|
|
254
254
|
vue.createElementVNode("div", _hoisted_5, [
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
vue.
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
255
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(partExList.value, (ext, i) => {
|
|
256
|
+
return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
|
|
257
|
+
activeTabName.value == `part-ext${i}` && ext.save ? (vue.openBlock(), vue.createBlock(_component_el_button, {
|
|
258
|
+
key: 0,
|
|
259
|
+
type: "primary",
|
|
260
|
+
text: "",
|
|
261
|
+
onClick: ($event) => ext.save()
|
|
262
|
+
}, {
|
|
263
|
+
default: vue.withCtx(() => [
|
|
264
|
+
vue.createVNode(_component_MKSvgIcon, {
|
|
265
|
+
iconClass: "save",
|
|
266
|
+
style: { "margin-right": "5px" }
|
|
267
|
+
}),
|
|
268
|
+
vue.createTextVNode(" 保存" + vue.toDisplayString(ext.title), 1)
|
|
269
|
+
]),
|
|
270
|
+
_: 2
|
|
271
|
+
}, 1032, ["onClick"])) : vue.createCommentVNode("", true)
|
|
272
|
+
], 64);
|
|
273
|
+
}), 256)),
|
|
274
|
+
activeTabName.value == "part" || activeTabName.value == "part-content" ? (vue.openBlock(), vue.createBlock(_component_el_button, {
|
|
275
|
+
key: 0,
|
|
276
|
+
type: "primary",
|
|
277
|
+
text: "",
|
|
278
|
+
onClick: _cache[0] || (_cache[0] = ($event) => savePartHandle()),
|
|
279
|
+
disabled: !(partDataForm == null ? void 0 : partDataForm.isChanged)
|
|
280
|
+
}, {
|
|
281
|
+
default: vue.withCtx(() => [
|
|
282
|
+
vue.createVNode(_component_MKSvgIcon, {
|
|
283
|
+
iconClass: "save",
|
|
284
|
+
style: { "margin-right": "5px" }
|
|
285
|
+
}),
|
|
286
|
+
vue.createTextVNode(" 保存 ")
|
|
287
|
+
]),
|
|
288
|
+
_: 1
|
|
289
|
+
}, 8, ["disabled"])) : vue.createCommentVNode("", true),
|
|
290
|
+
vue.unref(CmsSettings).publish.mode == "static" && curSelectPartItem.value.coverTemplate || curSelectPartItem.value.listTemplate || curSelectPartItem.value.contentTemplate ? (vue.openBlock(), vue.createBlock(_component_el_dropdown, { key: 1 }, {
|
|
290
291
|
dropdown: vue.withCtx(() => [
|
|
291
292
|
vue.createVNode(_component_el_dropdown_menu, null, {
|
|
292
293
|
default: vue.withCtx(() => [
|
|
293
294
|
vue.unref(CmsSettings).publish.mode == "static" && curSelectPartItem.value.coverTemplate ? (vue.openBlock(), vue.createBlock(_component_el_dropdown_item, {
|
|
294
295
|
key: 0,
|
|
295
|
-
onClick: _cache[
|
|
296
|
+
onClick: _cache[1] || (_cache[1] = ($event) => vue.unref(CmsPartForm.CmsPartForm).openPreview(curSelectPartItem.value.id))
|
|
296
297
|
}, {
|
|
297
298
|
default: vue.withCtx(() => [
|
|
298
299
|
vue.createVNode(_component_MKSvgIcon, {
|
|
@@ -305,7 +306,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
305
306
|
})) : vue.createCommentVNode("", true),
|
|
306
307
|
curSelectPartItem.value.listTemplate ? (vue.openBlock(), vue.createBlock(_component_el_dropdown_item, {
|
|
307
308
|
key: 1,
|
|
308
|
-
onClick: _cache[
|
|
309
|
+
onClick: _cache[2] || (_cache[2] = ($event) => vue.unref(CmsPartForm.CmsPartForm).openPreview(curSelectPartItem.value.id, "1"))
|
|
309
310
|
}, {
|
|
310
311
|
default: vue.withCtx(() => [
|
|
311
312
|
vue.createVNode(_component_MKSvgIcon, {
|
|
@@ -317,7 +318,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
317
318
|
_: 1
|
|
318
319
|
})) : vue.createCommentVNode("", true),
|
|
319
320
|
vue.createVNode(_component_el_dropdown_item, {
|
|
320
|
-
onClick: _cache[
|
|
321
|
+
onClick: _cache[3] || (_cache[3] = ($event) => showPublish.value = true)
|
|
321
322
|
}, {
|
|
322
323
|
default: vue.withCtx(() => [
|
|
323
324
|
vue.createVNode(_component_MKSvgIcon, {
|
|
@@ -412,16 +413,17 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
412
413
|
})), [
|
|
413
414
|
[_directive_loading, partDataForm.loading]
|
|
414
415
|
]) : vue.createCommentVNode("", true),
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
416
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(partExList.value, (ext, i) => {
|
|
417
|
+
return vue.openBlock(), vue.createBlock(_component_el_tab_pane, {
|
|
418
|
+
label: ext.title || `页面扩展设置 ${i == 0 ? "" : i}`,
|
|
419
|
+
name: `part-ext${i}`
|
|
420
|
+
}, {
|
|
421
|
+
default: vue.withCtx(() => [
|
|
422
|
+
(vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(ext.component)))
|
|
423
|
+
]),
|
|
424
|
+
_: 2
|
|
425
|
+
}, 1032, ["label", "name"]);
|
|
426
|
+
}), 256))
|
|
425
427
|
]),
|
|
426
428
|
_: 1
|
|
427
429
|
}, 8, ["modelValue"])) : (vue.openBlock(), vue.createBlock(_component_el_empty, {
|
|
@@ -432,14 +434,14 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
432
434
|
]),
|
|
433
435
|
vue.createVNode(_component_el_dialog, {
|
|
434
436
|
modelValue: showPublish.value,
|
|
435
|
-
"onUpdate:modelValue": _cache[
|
|
437
|
+
"onUpdate:modelValue": _cache[11] || (_cache[11] = ($event) => showPublish.value = $event),
|
|
436
438
|
title: "栏目发布",
|
|
437
439
|
width: "475px",
|
|
438
440
|
"append-to-body": false
|
|
439
441
|
}, {
|
|
440
442
|
footer: vue.withCtx(() => [
|
|
441
443
|
vue.createVNode(_component_el_button, {
|
|
442
|
-
onClick: _cache[
|
|
444
|
+
onClick: _cache[10] || (_cache[10] = ($event) => showPublish.value = false)
|
|
443
445
|
}, {
|
|
444
446
|
default: vue.withCtx(() => [
|
|
445
447
|
vue.createTextVNode("取消")
|
|
@@ -464,7 +466,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
464
466
|
vue.createTextVNode(),
|
|
465
467
|
vue.createVNode(vue.unref(elementPlus.ElSwitch), {
|
|
466
468
|
modelValue: optionData.value.isPublishList,
|
|
467
|
-
"onUpdate:modelValue": _cache[
|
|
469
|
+
"onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => optionData.value.isPublishList = $event),
|
|
468
470
|
disabled: !curSelectPartItem.value.listTemplate
|
|
469
471
|
}, null, 8, ["modelValue", "disabled"])
|
|
470
472
|
]),
|
|
@@ -473,7 +475,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
473
475
|
vue.createTextVNode(),
|
|
474
476
|
vue.createVNode(vue.unref(elementPlus.ElSwitch), {
|
|
475
477
|
modelValue: optionData.value.isPublishCover,
|
|
476
|
-
"onUpdate:modelValue": _cache[
|
|
478
|
+
"onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => optionData.value.isPublishCover = $event),
|
|
477
479
|
disabled: !curSelectPartItem.value.coverTemplate
|
|
478
480
|
}, null, 8, ["modelValue", "disabled"])
|
|
479
481
|
]),
|
|
@@ -482,7 +484,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
482
484
|
vue.createTextVNode(),
|
|
483
485
|
vue.createVNode(vue.unref(elementPlus.ElSwitch), {
|
|
484
486
|
modelValue: optionData.value.isPublishContent,
|
|
485
|
-
"onUpdate:modelValue": _cache[
|
|
487
|
+
"onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => optionData.value.isPublishContent = $event),
|
|
486
488
|
disabled: !curSelectPartItem.value.contentTemplate
|
|
487
489
|
}, null, 8, ["modelValue", "disabled"])
|
|
488
490
|
]),
|
|
@@ -491,7 +493,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
491
493
|
vue.createTextVNode(),
|
|
492
494
|
vue.createVNode(vue.unref(elementPlus.ElSwitch), {
|
|
493
495
|
modelValue: optionData.value.isPublishAssets,
|
|
494
|
-
"onUpdate:modelValue": _cache[
|
|
496
|
+
"onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => optionData.value.isPublishAssets = $event)
|
|
495
497
|
}, null, 8, ["modelValue"])
|
|
496
498
|
]),
|
|
497
499
|
vue.createElementVNode("div", null, [
|
|
@@ -499,7 +501,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
499
501
|
vue.createTextVNode(),
|
|
500
502
|
vue.createVNode(vue.unref(elementPlus.ElSwitch), {
|
|
501
503
|
modelValue: optionData.value.isCompulsion,
|
|
502
|
-
"onUpdate:modelValue": _cache[
|
|
504
|
+
"onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => optionData.value.isCompulsion = $event)
|
|
503
505
|
}, null, 8, ["modelValue"])
|
|
504
506
|
])
|
|
505
507
|
])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue2.js","sources":["../../../../../../src/modules/cms/pages/cms-contents/index.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-contents__warp\" v-loading=\"loading\">\r\n <el-page-header style=\"background-color: #fff; padding: 10px\" :icon=\"null\">\r\n <template #title>\r\n <h3 style=\"color: var(--el-text-color-regular); margin-left: 10px\">\r\n <MKSvgIcon iconClass=\"richtext-outline\" style=\"margin-right: 5px\" />\r\n 内容管理\r\n </h3>\r\n </template>\r\n <template #extra>\r\n <div class=\"flex items-center\">\r\n <el-button-group>\r\n <el-button type=\"primary\" size=\"large\" text v-if=\"CmsSettings.publish.mode == 'static'\" @click=\"publishAllPartHandle\">\r\n <MKSvgIcon iconClass=\"Promotion\" style=\"margin-right: 10px\" />\r\n 整站发布\r\n </el-button>\r\n <el-button type=\"primary\" size=\"large\" text @click=\"showPartFormHandle\">\r\n <MKSvgIcon iconClass=\"Plus\" style=\"margin-right: 10px\" />\r\n 新增栏目\r\n </el-button>\r\n </el-button-group>\r\n </div>\r\n </template>\r\n </el-page-header>\r\n <div class=\"mk-cms-contents__body\">\r\n <MKPartTree class=\"mk-cms-contents__body__left\" @select=\"selectPartHandle\" @edit=\"editPartHandle\"\r\n @add=\"showPartFormHandle\" @deleteSuccessfully=\"deletePartHandle\" ref=\"partTreeRef\"\r\n :curSelectId=\"curSelectPartId\" />\r\n <el-tabs v-if=\"curSelectPartItem\" v-model=\"activeTabName\" class=\"mk-cms-contents__body__right\">\r\n <div class=\"mk-cms-contents__body__right__action\">\r\n\r\n <template v-if=\"partExt && activeTabName == 'part-ext'\">\r\n <el-button type=\"primary\" v-if=\"partExt.save\" text @click=\"partExt.save()\">\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 5px\" />\r\n 保存\r\n </el-button>\r\n </template>\r\n <template v-else>\r\n <el-button type=\"primary\" text @click=\"savePartHandle()\" :disabled=\"!partDataForm?.isChanged\"\r\n v-if=\"activeTabName != 'article-list'\">\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 5px\" />\r\n 保存\r\n </el-button>\r\n </template>\r\n <el-dropdown v-if=\"CmsSettings.publish.mode == 'static' && curSelectPartItem.coverTemplate || curSelectPartItem.listTemplate || curSelectPartItem.contentTemplate\">\r\n <span class=\"el-dropdown-link\">\r\n <el-button type=\"primary\" text>\r\n <MKSvgIcon iconClass=\"MoreFilled\" />\r\n </el-button>\r\n </span>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item @click=\"CmsPartForm.openPreview(curSelectPartItem.id)\" v-if=\"CmsSettings.publish.mode == 'static' && curSelectPartItem.coverTemplate\">\r\n <MKSvgIcon iconClass=\"View\" style=\"margin-left: 10px;\" />\r\n 预览封面\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"CmsPartForm.openPreview(curSelectPartItem.id,'1')\" v-if=\"curSelectPartItem.listTemplate\">\r\n <MKSvgIcon iconClass=\"View\" style=\"margin-left: 10px;\" />\r\n 预览列表\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"showPublish = true\">\r\n <MKSvgIcon iconClass=\"Promotion\" style=\"margin-left: 10px;\" />\r\n 发布当前栏目\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </div>\r\n <el-tab-pane label=\"文章列表\" name=\"article-list\" v-if=\"curSelectPartItem.contentTemplate\">\r\n <ArticleList v-if=\"activeTabName == 'article-list'\" :part=\"curSelectPartItem\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"栏目设置\" name=\"part\" v-loading=\"partDataForm.loading\">\r\n <PartInfo v-if=\"activeTabName == 'part'\" :part=\"curSelectPartItem\" ref=\"partInfoRef\"\r\n :partDataForm=\"partDataForm\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"页面内容\" name=\"part-content\" style=\"background-color: #f4f4f4\"\r\n v-if=\"curSelectPartItem.cmsPartTypeId != 1\" v-loading=\"partDataForm.loading\">\r\n <MKDocEditor v-if=\"activeTabName == 'part-content'\" :css=\"CmsSettings.part.doc.css\" :js=\"CmsSettings.part.doc.js\" :content=\"partDataForm.data?.content\"\r\n placeholder=\"从这里开始写正文...\" @change=\"EditorChangeHandle\">\r\n <template #before-extentions>\r\n <PartBannerEdit v-if=\"partDataForm.data?.id\" :partId=\"partDataForm.data?.id\" :title=\"partDataForm.data?.title\" />\r\n </template>\r\n </MKDocEditor>\r\n </el-tab-pane>\r\n <el-tab-pane v-if=\"partExt\" label=\"页面扩展设置\" name=\"part-ext\">\r\n <component :is=\"partExt.component\" />\r\n </el-tab-pane>\r\n \r\n </el-tabs>\r\n <el-empty v-else description=\"请选择栏目\" style=\"width: 100%\" />\r\n </div>\r\n <el-dialog v-model=\"showPublish\" title=\"栏目发布\" width=\"475px\" :append-to-body=\"false\">\r\n <div class=\"mk-cms-contents__publish\">\r\n <div><span>是否发布列表:</span> <el-switch v-model=\"optionData.isPublishList\"\r\n :disabled=\"!curSelectPartItem.listTemplate\" /></div>\r\n <div><span>是否发布封面:</span> <el-switch v-model=\"optionData.isPublishCover\"\r\n :disabled=\"!curSelectPartItem.coverTemplate\" /></div>\r\n <div><span>是否发布内容:</span> <el-switch v-model=\"optionData.isPublishContent\"\r\n :disabled=\"!curSelectPartItem.contentTemplate\" /></div>\r\n <div><span>是否发布资源:</span> <el-switch v-model=\"optionData.isPublishAssets\" /></div>\r\n <div><span>是否强制发布:</span> <el-switch v-model=\"optionData.isCompulsion\" /></div>\r\n </div>\r\n <template #footer>\r\n <el-button @click=\"showPublish = false\">取消</el-button>\r\n <el-button type=\"primary\" @click=\"publishPartHandle\" :loading=\"publishLoading\">确定</el-button>\r\n </template>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n<script setup lang=\"ts\" >\r\nimport { MKPartTree } from \"../../components\";\r\nimport ArticleList from \"./components/article-list.vue\";\r\nimport PartInfo from \"./components/part-info.vue\";\r\nimport PartBannerEdit from \"./components/part-banner-edit.vue\";\r\nimport { MKDocEditor } from \"../../../../components\";\r\nimport { reactive, ref, watch,watchEffect } from \"vue\";\r\nimport { Dialoger } from \"@maketribe/dm\";\r\nimport { CmsContentManPartForm,CmsPartForm, CmsPartMiniForm } from \"../../dataviews/cms-parts\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { usePartExtension, type PartExtension } from \"../../composables/part-extensions\"\r\nimport { ElSwitch } from \"element-plus\";\r\nimport { useCmsSettings } from \"../../cms-settings\"\r\n//路由 \r\nconst route = useRoute();\r\nconst router = useRouter();\r\n\r\n// 当前选中的栏目id\r\nconst curSelectPartId = ref<string>(route.query.pid as string)\r\nwatch(()=>route.query.pid,(v:any)=>{\r\n curSelectPartId.value = v \r\n},{ immediate:true });\r\n\r\n//栏目Mini表单\r\nconst partMiniForm = reactive<CmsPartMiniForm>(new CmsPartMiniForm());\r\n\r\n// cms 配置\r\nconst CmsSettings = useCmsSettings(true);\r\n\r\n//发布栏目时的配置\r\nconst showPublish = ref(false)\r\n\r\n//发布配置项\r\nconst optionData = ref({\r\n isPublishList: false,\r\n isPublishCover: false,\r\n isPublishContent: false,\r\n isPublishAssets: false,\r\n isCompulsion: true\r\n});\r\n\r\n//发布加载状态\r\nconst publishLoading = ref(false);\r\n\r\n// 数据加载状态\r\nconst loading = ref(false)\r\n\r\n// 激活的tab\r\nconst activeTabName = ref(\"article-list\");\r\n\r\n// 当前选中的菜单\r\nconst curSelectPartItem = ref(null as any);\r\n\r\n// 栏目树ref\r\nconst partTreeRef = ref(null);\r\n\r\n//栏目扩展\r\nconst partExt = ref<PartExtension>();\r\n\r\n//栏目数据\r\nconst partDataForm = reactive(new CmsContentManPartForm()) as CmsContentManPartForm;\r\n\r\n// 初始化表单\r\npartDataForm.init();\r\n\r\n// 切换tab 加载栏目表单数据\r\nlet beforeInitFormPart:any = null;\r\nwatchEffect(async ()=>{\r\n if((activeTabName.value == \"part\" || activeTabName.value == \"part-content\") && curSelectPartItem.value != beforeInitFormPart){\r\n try {\r\n beforeInitFormPart = curSelectPartItem.value;\r\n await partDataForm.editRecord(curSelectPartItem.value.id);\r\n } catch (error) {\r\n console.log(error)\r\n }\r\n }\r\n});\r\n\r\n// 选择栏目\r\nconst selectPartHandle = async (item: any) => {\r\n\r\n if (curSelectPartItem.value != item) {\r\n\r\n curSelectPartItem.value = item;\r\n\r\n if (!curSelectPartItem.value.contentTemplate) {\r\n activeTabName.value = \"part\";\r\n }\r\n else{\r\n activeTabName.value = \"article-list\";\r\n }\r\n router.replace({ name: 'cms/contents', query: { pid: curSelectPartItem.value.id } } as any)\r\n partExt.value = usePartExtension(curSelectPartItem.value.id);\r\n }\r\n};\r\n\r\n//删除栏目\r\nconst deletePartHandle = (item: any) => {\r\n if (item.id == curSelectPartItem.value.id) {\r\n curSelectPartItem.value = null;\r\n }\r\n};\r\n\r\n//编辑栏目\r\nconst editPartHandle = (item: any) => {\r\n curSelectPartItem.value = item;\r\n activeTabName.value = \"part\";\r\n};\r\n\r\n/**\r\n * 显示添加栏目表单\r\n */\r\nconst showPartFormHandle = async (item?: any) => {\r\n await Dialoger.dataFormDialog({\r\n dataForm: partMiniForm as CmsContentManPartForm,\r\n });\r\n\r\n if (item.id) {\r\n partMiniForm.addRecord({ parentId: item.id });\r\n }\r\n\r\n};\r\n\r\nwatch(showPublish, async (v) => {\r\n if(v){\r\n optionData.value.isPublishList = !!curSelectPartItem.value.listTemplate\r\n optionData.value.isPublishCover = !!curSelectPartItem.value.coverTemplate\r\n optionData.value.isPublishContent = !!curSelectPartItem.value.contentTemplate\r\n }\r\n})\r\n \r\n//监听表单完成事件\r\npartMiniForm.submittedEvent.on(({ response }:any) => {\r\n if(response.data.data){\r\n // 重置选中\r\n curSelectPartId.value = response.data.data;\r\n // 刷新完成直接选中\r\n (partTreeRef.value! as any).dataTree?.load();\r\n }\r\n \r\n});\r\n\r\n//栏目发布\r\nconst publishAllPartHandle = async () => {\r\n\r\n try {\r\n\r\n loading.value = true;\r\n \r\n await CmsPartForm.publishAll()\r\n } \r\n finally {\r\n loading.value = false;\r\n }\r\n\r\n}\r\nconst publishPartHandle = async () => {\r\n \r\n try {\r\n\r\n publishLoading.value = true\r\n\r\n await CmsPartForm.publish(curSelectPartItem.value.id,optionData.value);\r\n\r\n showPublish.value = false;\r\n\r\n } finally {\r\n publishLoading.value = false\r\n }\r\n}\r\n\r\n/**\r\n * 保存栏目信息\r\n */\r\nconst savePartHandle = async () => {\r\n curSelectPartItem.value = partDataForm.data;\r\n await partDataForm.submit();\r\n}\r\n\r\n/**\r\n * 更新编辑器内容\r\n * @param v 内容\r\n */\r\nconst EditorChangeHandle = (v: any) => {\r\n partDataForm.data.content = v\r\n}\r\n</script>\r\n"],"names":["useRoute","useRouter","ref","watch","reactive","CmsPartMiniForm","useCmsSettings","CmsContentManPartForm","watchEffect","usePartExtension","Dialoger","CmsPartForm"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2HA,UAAM,QAAQA,UAAAA;AACd,UAAM,SAASC,UAAAA;AAGf,UAAM,kBAAkBC,IAAA,IAAY,MAAM,MAAM,GAAa;AAC7DC,QAAAA,MAAM,MAAI,MAAM,MAAM,KAAI,CAAC,MAAQ;AACjC,sBAAgB,QAAQ;AAAA,IAAA,GACxB,EAAE,WAAU,KAAA,CAAM;AAGpB,UAAM,eAAeC,IAAAA,SAA0B,IAAIC,gBAAAA,gBAAiB,CAAA;AAG9D,UAAA,cAAcC,2BAAe,IAAI;AAGjC,UAAA,cAAcJ,QAAI,KAAK;AAG7B,UAAM,aAAaA,IAAAA,IAAI;AAAA,MACrB,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,MAClB,iBAAiB;AAAA,MACjB,cAAc;AAAA,IAAA,CACf;AAGK,UAAA,iBAAiBA,QAAI,KAAK;AAG1B,UAAA,UAAUA,QAAI,KAAK;AAGnB,UAAA,gBAAgBA,QAAI,cAAc;AAGlC,UAAA,oBAAoBA,QAAI,IAAW;AAGnC,UAAA,cAAcA,QAAI,IAAI;AAG5B,UAAM,UAAUA,IAAAA;AAGhB,UAAM,eAAeE,IAAAA,SAAS,IAAIG,sBAAAA,sBAAuB,CAAA;AAGzD,iBAAa,KAAK;AAGlB,QAAI,qBAAyB;AAC7BC,QAAAA,YAAY,YAAU;AAChB,WAAA,cAAc,SAAS,UAAU,cAAc,SAAS,mBAAmB,kBAAkB,SAAS,oBAAmB;AACvH,YAAA;AACF,+BAAqB,kBAAkB;AACvC,gBAAM,aAAa,WAAW,kBAAkB,MAAM,EAAE;AAAA,iBACjD,OAAO;AACd,kBAAQ,IAAI,KAAK;AAAA,QACnB;AAAA,MACF;AAAA,IAAA,CACD;AAGK,UAAA,mBAAmB,OAAO,SAAc;AAExC,UAAA,kBAAkB,SAAS,MAAM;AAEnC,0BAAkB,QAAQ;AAEtB,YAAA,CAAC,kBAAkB,MAAM,iBAAiB;AAC5C,wBAAc,QAAQ;AAAA,QAAA,OAEpB;AACF,wBAAc,QAAQ;AAAA,QACxB;AACO,eAAA,QAAQ,EAAE,MAAM,gBAAgB,OAAO,EAAE,KAAK,kBAAkB,MAAM,GAAG,EAAU,CAAA;AAC1F,gBAAQ,QAAQC,eAAA,iBAAiB,kBAAkB,MAAM,EAAE;AAAA,MAC7D;AAAA,IAAA;AAII,UAAA,mBAAmB,CAAC,SAAc;AACtC,UAAI,KAAK,MAAM,kBAAkB,MAAM,IAAI;AACzC,0BAAkB,QAAQ;AAAA,MAC5B;AAAA,IAAA;AAII,UAAA,iBAAiB,CAAC,SAAc;AACpC,wBAAkB,QAAQ;AAC1B,oBAAc,QAAQ;AAAA,IAAA;AAMlB,UAAA,qBAAqB,OAAO,SAAe;AAC/C,YAAMC,GAAAA,SAAS,eAAe;AAAA,QAC5B,UAAU;AAAA,MAAA,CACX;AAED,UAAI,KAAK,IAAI;AACX,qBAAa,UAAU,EAAE,UAAU,KAAK,GAAI,CAAA;AAAA,MAC9C;AAAA,IAAA;AAIIP,cAAA,aAAa,OAAO,MAAM;AAC9B,UAAG,GAAE;AACH,mBAAW,MAAM,gBAAgB,CAAC,CAAC,kBAAkB,MAAM;AAC3D,mBAAW,MAAM,iBAAiB,CAAC,CAAC,kBAAkB,MAAM;AAC5D,mBAAW,MAAM,mBAAmB,CAAC,CAAC,kBAAkB,MAAM;AAAA,MAChE;AAAA,IAAA,CACD;AAGD,iBAAa,eAAe,GAAG,CAAC,EAAE,eAAmB;;AAChD,UAAA,SAAS,KAAK,MAAK;AAEJ,wBAAA,QAAQ,SAAS,KAAK;AAErC,0BAAY,MAAe,aAA3B,mBAAqC;AAAA,MACxC;AAAA,IAAA,CAED;AAGD,UAAM,uBAAuB,YAAY;AAEnC,UAAA;AAEF,gBAAQ,QAAQ;AAEhB,cAAMQ,YAAAA,YAAY;MAAW,UAE/B;AACE,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IAAA;AAGF,UAAM,oBAAoB,YAAY;AAEhC,UAAA;AAEF,uBAAe,QAAQ;AAEvB,cAAMA,YAAAA,YAAY,QAAQ,kBAAkB,MAAM,IAAG,WAAW,KAAK;AAErE,oBAAY,QAAQ;AAAA,MAAA,UAEpB;AACA,uBAAe,QAAQ;AAAA,MACzB;AAAA,IAAA;AAMF,UAAM,iBAAiB,YAAY;AACjC,wBAAkB,QAAQ,aAAa;AACvC,YAAM,aAAa;IAAO;AAOtB,UAAA,qBAAqB,CAAC,MAAW;AACrC,mBAAa,KAAK,UAAU;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.vue2.js","sources":["../../../../../../src/modules/cms/pages/cms-contents/index.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-contents__warp\" v-loading=\"loading\">\r\n <el-page-header style=\"background-color: #fff; padding: 10px\" :icon=\"null\">\r\n <template #title>\r\n <h3 style=\"color: var(--el-text-color-regular); margin-left: 10px\">\r\n <MKSvgIcon iconClass=\"richtext-outline\" style=\"margin-right: 5px\" />\r\n 内容管理\r\n </h3>\r\n </template>\r\n <template #extra>\r\n <div class=\"flex items-center\">\r\n <el-button-group>\r\n <el-button type=\"primary\" size=\"large\" text v-if=\"CmsSettings.publish.mode == 'static'\" @click=\"publishAllPartHandle\">\r\n <MKSvgIcon iconClass=\"Promotion\" style=\"margin-right: 10px\" />\r\n 整站发布\r\n </el-button>\r\n <el-button type=\"primary\" size=\"large\" text @click=\"showPartFormHandle\">\r\n <MKSvgIcon iconClass=\"Plus\" style=\"margin-right: 10px\" />\r\n 新增栏目\r\n </el-button>\r\n </el-button-group>\r\n </div>\r\n </template>\r\n </el-page-header>\r\n <div class=\"mk-cms-contents__body\">\r\n <MKPartTree class=\"mk-cms-contents__body__left\" @select=\"selectPartHandle\" @edit=\"editPartHandle\"\r\n @add=\"showPartFormHandle\" @deleteSuccessfully=\"deletePartHandle\" ref=\"partTreeRef\"\r\n :curSelectId=\"curSelectPartId\" />\r\n <el-tabs v-if=\"curSelectPartItem\" v-model=\"activeTabName\" class=\"mk-cms-contents__body__right\">\r\n <div class=\"mk-cms-contents__body__right__action\">\r\n\r\n <template v-for=\"(ext,i) in partExList\" :label=\"ext.title || `页面扩展设置 ${i+1}`\" :name=\"\">\r\n <el-button type=\"primary\" text @click=\"ext.save()\" v-if=\"activeTabName == `part-ext${i}` && ext.save\">\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 5px\" />\r\n 保存{{ext.title}}\r\n </el-button>\r\n </template>\r\n <template v-if=\"activeTabName == 'part' || activeTabName == 'part-content'\">\r\n <el-button type=\"primary\" text @click=\"savePartHandle()\" :disabled=\"!partDataForm?.isChanged\">\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 5px\" />\r\n 保存\r\n </el-button>\r\n </template>\r\n <el-dropdown v-if=\"CmsSettings.publish.mode == 'static' && curSelectPartItem.coverTemplate || curSelectPartItem.listTemplate || curSelectPartItem.contentTemplate\">\r\n <span class=\"el-dropdown-link\">\r\n <el-button type=\"primary\" text>\r\n <MKSvgIcon iconClass=\"MoreFilled\" />\r\n </el-button>\r\n </span>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item @click=\"CmsPartForm.openPreview(curSelectPartItem.id)\" v-if=\"CmsSettings.publish.mode == 'static' && curSelectPartItem.coverTemplate\">\r\n <MKSvgIcon iconClass=\"View\" style=\"margin-left: 10px;\" />\r\n 预览封面\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"CmsPartForm.openPreview(curSelectPartItem.id,'1')\" v-if=\"curSelectPartItem.listTemplate\">\r\n <MKSvgIcon iconClass=\"View\" style=\"margin-left: 10px;\" />\r\n 预览列表\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"showPublish = true\">\r\n <MKSvgIcon iconClass=\"Promotion\" style=\"margin-left: 10px;\" />\r\n 发布当前栏目\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </div>\r\n <el-tab-pane label=\"文章列表\" name=\"article-list\" v-if=\"curSelectPartItem.contentTemplate\">\r\n <ArticleList v-if=\"activeTabName == 'article-list'\" :part=\"curSelectPartItem\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"栏目设置\" name=\"part\" v-loading=\"partDataForm.loading\">\r\n <PartInfo v-if=\"activeTabName == 'part'\" :part=\"curSelectPartItem\" ref=\"partInfoRef\"\r\n :partDataForm=\"partDataForm\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"页面内容\" name=\"part-content\" style=\"background-color: #f4f4f4\"\r\n v-if=\"curSelectPartItem.cmsPartTypeId != 1\" v-loading=\"partDataForm.loading\">\r\n <MKDocEditor v-if=\"activeTabName == 'part-content'\" :css=\"CmsSettings.part.doc.css\" :js=\"CmsSettings.part.doc.js\" :content=\"partDataForm.data?.content\"\r\n placeholder=\"从这里开始写正文...\" @change=\"EditorChangeHandle\">\r\n <template #before-extentions>\r\n <PartBannerEdit v-if=\"partDataForm.data?.id\" :partId=\"partDataForm.data?.id\" :title=\"partDataForm.data?.title\" />\r\n </template>\r\n </MKDocEditor>\r\n </el-tab-pane>\r\n <el-tab-pane v-for=\"(ext,i) in partExList\" :label=\"ext.title || `页面扩展设置 ${i==0 ?'':i}`\" :name=\"`part-ext${i}`\">\r\n <component :is=\"ext.component\" />\r\n </el-tab-pane>\r\n \r\n </el-tabs>\r\n <el-empty v-else description=\"请选择栏目\" style=\"width: 100%\" />\r\n </div>\r\n <el-dialog v-model=\"showPublish\" title=\"栏目发布\" width=\"475px\" :append-to-body=\"false\">\r\n <div class=\"mk-cms-contents__publish\">\r\n <div><span>是否发布列表:</span> <el-switch v-model=\"optionData.isPublishList\"\r\n :disabled=\"!curSelectPartItem.listTemplate\" /></div>\r\n <div><span>是否发布封面:</span> <el-switch v-model=\"optionData.isPublishCover\"\r\n :disabled=\"!curSelectPartItem.coverTemplate\" /></div>\r\n <div><span>是否发布内容:</span> <el-switch v-model=\"optionData.isPublishContent\"\r\n :disabled=\"!curSelectPartItem.contentTemplate\" /></div>\r\n <div><span>是否发布资源:</span> <el-switch v-model=\"optionData.isPublishAssets\" /></div>\r\n <div><span>是否强制发布:</span> <el-switch v-model=\"optionData.isCompulsion\" /></div>\r\n </div>\r\n <template #footer>\r\n <el-button @click=\"showPublish = false\">取消</el-button>\r\n <el-button type=\"primary\" @click=\"publishPartHandle\" :loading=\"publishLoading\">确定</el-button>\r\n </template>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n<script setup lang=\"ts\" >\r\nimport { MKPartTree } from \"../../components\";\r\nimport ArticleList from \"./components/article-list.vue\";\r\nimport PartInfo from \"./components/part-info.vue\";\r\nimport PartBannerEdit from \"./components/part-banner-edit.vue\";\r\nimport { MKDocEditor } from \"../../../../components\";\r\nimport { reactive, ref, watch,watchEffect } from \"vue\";\r\nimport { Dialoger } from \"@maketribe/dm\";\r\nimport { CmsContentManPartForm,CmsPartForm, CmsPartMiniForm } from \"../../dataviews/cms-parts\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { usePartExtensionList, type PartExtension } from \"../../composables/part-extensions\"\r\nimport { ElSwitch } from \"element-plus\";\r\nimport { useCmsSettings } from \"../../cms-settings\"\r\n//路由 \r\nconst route = useRoute();\r\nconst router = useRouter();\r\n\r\n// 当前选中的栏目id\r\nconst curSelectPartId = ref<string>(route.query.pid as string)\r\nwatch(()=>route.query.pid,(v:any)=>{\r\n curSelectPartId.value = v \r\n},{ immediate:true });\r\n\r\n//栏目Mini表单\r\nconst partMiniForm = reactive<CmsPartMiniForm>(new CmsPartMiniForm());\r\n\r\n// cms 配置\r\nconst CmsSettings = useCmsSettings(true);\r\n\r\n//发布栏目时的配置\r\nconst showPublish = ref(false)\r\n\r\n//发布配置项\r\nconst optionData = ref({\r\n isPublishList: false,\r\n isPublishCover: false,\r\n isPublishContent: false,\r\n isPublishAssets: false,\r\n isCompulsion: true\r\n});\r\n\r\n//发布加载状态\r\nconst publishLoading = ref(false);\r\n\r\n// 数据加载状态\r\nconst loading = ref(false)\r\n\r\n// 激活的tab\r\nconst activeTabName = ref(\"article-list\");\r\n\r\n// 当前选中的菜单\r\nconst curSelectPartItem = ref(null as any);\r\n\r\n// 栏目树ref\r\nconst partTreeRef = ref(null);\r\n\r\n//栏目扩展\r\nconst partExList = ref<Array<PartExtension>>([]);\r\n\r\n//栏目数据\r\nconst partDataForm = reactive(new CmsContentManPartForm()) as CmsContentManPartForm;\r\n\r\n// 初始化表单\r\npartDataForm.init();\r\n\r\n// 切换tab 加载栏目表单数据\r\nlet beforeInitFormPart:any = null;\r\nwatchEffect(async ()=>{\r\n if((activeTabName.value == \"part\" || activeTabName.value == \"part-content\") && curSelectPartItem.value != beforeInitFormPart){\r\n try {\r\n beforeInitFormPart = curSelectPartItem.value;\r\n await partDataForm.editRecord(curSelectPartItem.value.id);\r\n } catch (error) {\r\n console.log(error)\r\n }\r\n }\r\n});\r\n\r\n// 选择栏目\r\nconst selectPartHandle = async (item: any) => {\r\n\r\n if (curSelectPartItem.value != item) {\r\n\r\n curSelectPartItem.value = item;\r\n\r\n if (!curSelectPartItem.value.contentTemplate) {\r\n activeTabName.value = \"part\";\r\n }\r\n else{\r\n activeTabName.value = \"article-list\";\r\n }\r\n router.replace({ name: 'cms/contents', query: { pid: curSelectPartItem.value.id } } as any)\r\n partExList.value = usePartExtensionList(curSelectPartItem.value.id).concat(usePartExtensionList(curSelectPartItem.value.name));\r\n }\r\n};\r\n\r\n//删除栏目\r\nconst deletePartHandle = (item: any) => {\r\n if (item.id == curSelectPartItem.value.id) {\r\n curSelectPartItem.value = null;\r\n }\r\n};\r\n\r\n//编辑栏目\r\nconst editPartHandle = (item: any) => {\r\n curSelectPartItem.value = item;\r\n activeTabName.value = \"part\";\r\n};\r\n\r\n/**\r\n * 显示添加栏目表单\r\n */\r\nconst showPartFormHandle = async (item?: any) => {\r\n await Dialoger.dataFormDialog({\r\n dataForm: partMiniForm as CmsContentManPartForm,\r\n });\r\n\r\n if (item.id) {\r\n partMiniForm.addRecord({ parentId: item.id });\r\n }\r\n\r\n};\r\n\r\nwatch(showPublish, async (v) => {\r\n if(v){\r\n optionData.value.isPublishList = !!curSelectPartItem.value.listTemplate\r\n optionData.value.isPublishCover = !!curSelectPartItem.value.coverTemplate\r\n optionData.value.isPublishContent = !!curSelectPartItem.value.contentTemplate\r\n }\r\n})\r\n \r\n//监听表单完成事件\r\npartMiniForm.submittedEvent.on(({ response }:any) => {\r\n if(response.data.data){\r\n // 重置选中\r\n curSelectPartId.value = response.data.data;\r\n // 刷新完成直接选中\r\n (partTreeRef.value! as any).dataTree?.load();\r\n }\r\n \r\n});\r\n\r\n//栏目发布\r\nconst publishAllPartHandle = async () => {\r\n\r\n try {\r\n\r\n loading.value = true;\r\n \r\n await CmsPartForm.publishAll()\r\n } \r\n finally {\r\n loading.value = false;\r\n }\r\n\r\n}\r\nconst publishPartHandle = async () => {\r\n \r\n try {\r\n\r\n publishLoading.value = true\r\n\r\n await CmsPartForm.publish(curSelectPartItem.value.id,optionData.value);\r\n\r\n showPublish.value = false;\r\n\r\n } finally {\r\n publishLoading.value = false\r\n }\r\n}\r\n\r\n/**\r\n * 保存栏目信息\r\n */\r\nconst savePartHandle = async () => {\r\n curSelectPartItem.value = partDataForm.data;\r\n await partDataForm.submit();\r\n}\r\n\r\n/**\r\n * 更新编辑器内容\r\n * @param v 内容\r\n */\r\nconst EditorChangeHandle = (v: any) => {\r\n partDataForm.data.content = v\r\n}\r\n</script>\r\n"],"names":["useRoute","useRouter","ref","watch","reactive","CmsPartMiniForm","useCmsSettings","CmsContentManPartForm","watchEffect","usePartExtensionList","Dialoger","CmsPartForm"],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
const PartExtensionList =
|
|
2
|
-
const
|
|
3
|
-
return PartExtensionList
|
|
1
|
+
const PartExtensionList = [];
|
|
2
|
+
const usePartExtensionList = (partIdorName) => {
|
|
3
|
+
return PartExtensionList.filter((item) => item.key == partIdorName).map((item) => item.extension);
|
|
4
4
|
};
|
|
5
|
-
const registerPartExtension = (
|
|
6
|
-
PartExtensionList
|
|
5
|
+
const registerPartExtension = (partIdorName, ext) => {
|
|
6
|
+
PartExtensionList.push({ key: partIdorName, extension: ext });
|
|
7
7
|
};
|
|
8
8
|
export {
|
|
9
9
|
registerPartExtension,
|
|
10
|
-
|
|
10
|
+
usePartExtensionList
|
|
11
11
|
};
|
|
12
12
|
//# sourceMappingURL=part-extensions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"part-extensions.js","sources":["../../../../../src/modules/cms/composables/part-extensions.ts"],"sourcesContent":["\r\nimport { type Component } from \"vue\"\r\n\r\n\r\nexport type PartExtension = {\r\n saveHandle?:Function,\r\n component:Component,\r\n save:Function\r\n}\r\n\r\nconst PartExtensionList:
|
|
1
|
+
{"version":3,"file":"part-extensions.js","sources":["../../../../../src/modules/cms/composables/part-extensions.ts"],"sourcesContent":["\r\nimport { type Component } from \"vue\"\r\n\r\n/**\r\n * 页面扩展\r\n */\r\nexport type PartExtension = {\r\n title?:\"\",\r\n saveHandle?:Function,\r\n component:Component,\r\n save:Function\r\n}\r\n\r\nconst PartExtensionList:Array<({key:string|number,extension:PartExtension})> = [];\r\n\r\n/**\r\n * 使用扩展\r\n * @param partId 或者栏目名称\r\n * @returns \r\n */\r\nexport const usePartExtensionList = (partIdorName:string|number):any=>{\r\n return PartExtensionList.filter(item=>item.key == partIdorName).map(item=>item.extension);\r\n}\r\n\r\n/**\r\n * 注册扩展\r\n * @param partId \r\n * @returns \r\n */\r\nexport const registerPartExtension = (partIdorName:string|number,ext:PartExtension)=>{\r\n PartExtensionList.push({ key:partIdorName,extension:ext })\r\n}\r\n"],"names":[],"mappings":"AAaA,MAAM,oBAAyE,CAAA;AAOlE,MAAA,uBAAuB,CAAC,iBAAiC;AAC7D,SAAA,kBAAkB,OAAO,CAAA,SAAM,KAAK,OAAO,YAAY,EAAE,IAAI,CAAM,SAAA,KAAK,SAAS;AAC1F;AAOa,MAAA,wBAAwB,CAAC,cAA2B,QAAoB;AACnF,oBAAkB,KAAK,EAAE,KAAI,cAAa,WAAU,KAAK;AAC3D;"}
|
|
@@ -78,8 +78,26 @@ const _CmsAdContentsForm = class _CmsAdContentsForm extends (_b = DataForm, _a =
|
|
|
78
78
|
await super.initialize();
|
|
79
79
|
this.setColumns([
|
|
80
80
|
// new FormColumn({ name: "adDefineId", label: "广告定义", required: true, visible: true }),
|
|
81
|
-
new FormColumn({
|
|
82
|
-
|
|
81
|
+
new FormColumn({
|
|
82
|
+
name: "title",
|
|
83
|
+
label: "标题",
|
|
84
|
+
required: true,
|
|
85
|
+
componentInfo: "MKFormInput",
|
|
86
|
+
componentProps: {
|
|
87
|
+
type: "textarea",
|
|
88
|
+
rows: 2
|
|
89
|
+
}
|
|
90
|
+
}),
|
|
91
|
+
new FormColumn({
|
|
92
|
+
name: "desc",
|
|
93
|
+
label: "描述",
|
|
94
|
+
required: true,
|
|
95
|
+
componentInfo: "MKFormInput",
|
|
96
|
+
componentProps: {
|
|
97
|
+
type: "textarea",
|
|
98
|
+
rows: 5
|
|
99
|
+
}
|
|
100
|
+
}),
|
|
83
101
|
new FormColumn({
|
|
84
102
|
name: "type",
|
|
85
103
|
label: "素材类型",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CmsAdContentsForm.js","sources":["../../../../../../src/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.ts"],"sourcesContent":["import { DataForm, DataFormOptions, FormColumn } from \"@maketribe/dm\";\r\nimport { ImageUploadContext, MaterialUploadContext } from \"../../../ms\";\r\nimport { DATA_MODEL_NAME } from \"../../../../constants\";\r\nimport { MODULE_NAME } from \"../../constants\";\r\n\r\nexport class CmsAdContentsForm extends DataForm {\r\n\tstatic [DATA_MODEL_NAME]: string = \"ad-content\";\r\n\tcutSise: string = \"\";\r\n\tconstructor(options: DataFormOptions & { cutSise?: string } = {}) {\r\n\t\tsuper({\r\n\t\t\tname: CmsAdContentsForm[DATA_MODEL_NAME],\r\n\t\t\tmoduleName: MODULE_NAME,\r\n\t\t\t...options,\r\n\t\t});\r\n\t\tconsole.log(options.cutSise)\r\n\t\tthis.cutSise = options.cutSise as string\r\n\t}\r\n\r\n\tchangeCutSise(cutSise: string) {\r\n\t\tthis.cutSise = cutSise\r\n\t}\r\n\r\n\tprotected async initialize() {\r\n\t\tawait super.initialize();\r\n\t\tthis.setColumns([\r\n\t\t\t// new FormColumn({ name: \"adDefineId\", label: \"广告定义\", required: true, visible: true }),\r\n\t\t\tnew FormColumn({
|
|
1
|
+
{"version":3,"file":"CmsAdContentsForm.js","sources":["../../../../../../src/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.ts"],"sourcesContent":["import { DataForm, DataFormOptions, FormColumn } from \"@maketribe/dm\";\r\nimport { ImageUploadContext, MaterialUploadContext } from \"../../../ms\";\r\nimport { DATA_MODEL_NAME } from \"../../../../constants\";\r\nimport { MODULE_NAME } from \"../../constants\";\r\n\r\nexport class CmsAdContentsForm extends DataForm {\r\n\tstatic [DATA_MODEL_NAME]: string = \"ad-content\";\r\n\tcutSise: string = \"\";\r\n\tconstructor(options: DataFormOptions & { cutSise?: string } = {}) {\r\n\t\tsuper({\r\n\t\t\tname: CmsAdContentsForm[DATA_MODEL_NAME],\r\n\t\t\tmoduleName: MODULE_NAME,\r\n\t\t\t...options,\r\n\t\t});\r\n\t\tconsole.log(options.cutSise)\r\n\t\tthis.cutSise = options.cutSise as string\r\n\t}\r\n\r\n\tchangeCutSise(cutSise: string) {\r\n\t\tthis.cutSise = cutSise\r\n\t}\r\n\r\n\tprotected async initialize() {\r\n\t\tawait super.initialize();\r\n\t\tthis.setColumns([\r\n\t\t\t// new FormColumn({ name: \"adDefineId\", label: \"广告定义\", required: true, visible: true }),\r\n\t\t\tnew FormColumn({\r\n\t\t\t\tname: \"title\", label: \"标题\", required: true, componentInfo: \"MKFormInput\",\r\n\t\t\t\tcomponentProps: {\r\n\t\t\t\t\ttype: \"textarea\",\r\n\t\t\t\t\trows: 2\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t\tnew FormColumn({\r\n\t\t\t\tname: \"desc\", label: \"描述\", required: true, componentInfo: \"MKFormInput\",\r\n\t\t\t\tcomponentProps: {\r\n\t\t\t\t\ttype: \"textarea\",\r\n\t\t\t\t\trows: 5\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t\tnew FormColumn({\r\n\t\t\t\tname: \"type\",\r\n\t\t\t\tlabel: \"素材类型\",\r\n\t\t\t\trequired: true,\r\n\t\t\t\tdefaultValue: 1,\r\n\t\t\t\tcomponentInfo: \"MKFormDataSelect\",\r\n\t\t\t\tcomponentProps: {\r\n\t\t\t\t\toptions: [\r\n\t\t\t\t\t\t{ value: 1, label: \"图片\" },\r\n\t\t\t\t\t\t{ value: 2, label: \"视频\" },\r\n\t\t\t\t\t],\r\n\t\t\t\t},\r\n\t\t\t}),\r\n\t\t\tnew FormColumn({\r\n\t\t\t\tname: \"path\",\r\n\t\t\t\tlabel: \"素材路径\",\r\n\t\t\t\trequired: true,\r\n\t\t\t\tcomponentInfo: \"MKFormImageUpload\",\r\n\t\t\t\tcomponentProps: {\r\n\t\t\t\t\tuploadContext: new ImageUploadContext(this.cutSise),\r\n\t\t\t\t},\r\n\t\t\t}),\r\n\t\t\tnew FormColumn({ name: \"link\", label: \"跳转链接\" }),\r\n\t\t]);\r\n\r\n\t\tthis.formItemValueChangeEvent.on((column) => {\r\n\t\t\tif (column.formItem.name == \"type\") {\r\n\t\t\t\tif (column.data.value == 1) {\r\n\t\t\t\t\tthis.getColumn(\"path\")!.componentInfo = \"MKFormImageUpload\"\r\n\t\t\t\t\tthis.getColumn(\"path\")!.componentProps.uploadContext =\r\n\t\t\t\t\t\tnew ImageUploadContext(this.cutSise);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.getColumn(\"path\")!.componentInfo = \"MKFormVideoUpload\"\r\n\t\t\t\t\tthis.getColumn(\"path\")!.componentProps.uploadContext =\r\n\t\t\t\t\t\tnew MaterialUploadContext({\r\n\t\t\t\t\t\t\tallowMaterialTypeValues: [2],\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,MAAM,qBAAN,MAAM,4BAA0B,eAC9B,sBAD8B,IAAS;AAAA,EAG/C,YAAY,UAAkD,IAAI;AAC3D,UAAA;AAAA,MACL,MAAM,mBAAkB,eAAe;AAAA,MACvC,YAAY;AAAA,MACZ,GAAG;AAAA,IAAA,CACH;AANF,mCAAkB;AAOT,YAAA,IAAI,QAAQ,OAAO;AAC3B,SAAK,UAAU,QAAQ;AAAA,EACxB;AAAA,EAEA,cAAc,SAAiB;AAC9B,SAAK,UAAU;AAAA,EAChB;AAAA,EAEA,MAAgB,aAAa;AAC5B,UAAM,MAAM;AACZ,SAAK,WAAW;AAAA;AAAA,MAEf,IAAI,WAAW;AAAA,QACd,MAAM;AAAA,QAAS,OAAO;AAAA,QAAM,UAAU;AAAA,QAAM,eAAe;AAAA,QAC3D,gBAAgB;AAAA,UACf,MAAM;AAAA,UACN,MAAM;AAAA,QACP;AAAA,MAAA,CACA;AAAA,MACD,IAAI,WAAW;AAAA,QACd,MAAM;AAAA,QAAQ,OAAO;AAAA,QAAM,UAAU;AAAA,QAAM,eAAe;AAAA,QAC1D,gBAAgB;AAAA,UACf,MAAM;AAAA,UACN,MAAM;AAAA,QACP;AAAA,MAAA,CACA;AAAA,MACD,IAAI,WAAW;AAAA,QACd,MAAM;AAAA,QACN,OAAO;AAAA,QACP,UAAU;AAAA,QACV,cAAc;AAAA,QACd,eAAe;AAAA,QACf,gBAAgB;AAAA,UACf,SAAS;AAAA,YACR,EAAE,OAAO,GAAG,OAAO,KAAK;AAAA,YACxB,EAAE,OAAO,GAAG,OAAO,KAAK;AAAA,UACzB;AAAA,QACD;AAAA,MAAA,CACA;AAAA,MACD,IAAI,WAAW;AAAA,QACd,MAAM;AAAA,QACN,OAAO;AAAA,QACP,UAAU;AAAA,QACV,eAAe;AAAA,QACf,gBAAgB;AAAA,UACf,eAAe,IAAI,mBAAmB,KAAK,OAAO;AAAA,QACnD;AAAA,MAAA,CACA;AAAA,MACD,IAAI,WAAW,EAAE,MAAM,QAAQ,OAAO,QAAQ;AAAA,IAAA,CAC9C;AAEI,SAAA,yBAAyB,GAAG,CAAC,WAAW;AACxC,UAAA,OAAO,SAAS,QAAQ,QAAQ;AAC/B,YAAA,OAAO,KAAK,SAAS,GAAG;AACtB,eAAA,UAAU,MAAM,EAAG,gBAAgB;AACnC,eAAA,UAAU,MAAM,EAAG,eAAe,gBACtC,IAAI,mBAAmB,KAAK,OAAO;AAAA,QAAA,OAC9B;AACD,eAAA,UAAU,MAAM,EAAG,gBAAgB;AACxC,eAAK,UAAU,MAAM,EAAG,eAAe,gBACtC,IAAI,sBAAsB;AAAA,YACzB,yBAAyB,CAAC,CAAC;AAAA,UAAA,CAC3B;AAAA,QACH;AAAA,MACD;AAAA,IAAA,CACA;AAAA,EACF;AACD;AA3EC,cADY,oBACJ,IAA2B;AAD7B,IAAM,oBAAN;"}
|
|
@@ -146,6 +146,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
146
146
|
const showAdDefineHandle = async () => {
|
|
147
147
|
var _a;
|
|
148
148
|
await Dialoger.dataFormDialog({
|
|
149
|
+
title: "设置素材显示尺寸",
|
|
149
150
|
dataForm: adDefineForm,
|
|
150
151
|
recId: (_a = partAdBanner.value) == null ? void 0 : _a.id
|
|
151
152
|
});
|
|
@@ -214,7 +215,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
214
215
|
onClick: ($event) => showAdContentHandle(item.id)
|
|
215
216
|
}, {
|
|
216
217
|
default: withCtx(() => [
|
|
217
|
-
createTextVNode("
|
|
218
|
+
createTextVNode(" 编辑当前轮播素材 ")
|
|
218
219
|
]),
|
|
219
220
|
_: 2
|
|
220
221
|
}, 1032, ["icon", "onClick"]),
|
|
@@ -225,7 +226,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
225
226
|
onClick: _cache[0] || (_cache[0] = ($event) => showAdContentHandle(null))
|
|
226
227
|
}, {
|
|
227
228
|
default: withCtx(() => [
|
|
228
|
-
createTextVNode("
|
|
229
|
+
createTextVNode(" 添加新轮播素材 ")
|
|
229
230
|
]),
|
|
230
231
|
_: 1
|
|
231
232
|
}, 8, ["icon"]),
|
|
@@ -236,7 +237,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
236
237
|
onClick: _cache[1] || (_cache[1] = ($event) => showAdDefineHandle())
|
|
237
238
|
}, {
|
|
238
239
|
default: withCtx(() => [
|
|
239
|
-
createTextVNode("
|
|
240
|
+
createTextVNode(" 设置素材显示尺寸 ")
|
|
240
241
|
]),
|
|
241
242
|
_: 1
|
|
242
243
|
}, 8, ["icon"])
|
|
@@ -250,14 +251,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
250
251
|
_: 1
|
|
251
252
|
})) : (openBlock(), createBlock(_component_el_empty, {
|
|
252
253
|
key: 1,
|
|
253
|
-
description: "暂无轮播数据",
|
|
254
254
|
"image-size": 80,
|
|
255
255
|
style: { "height": "240px" }
|
|
256
256
|
}, {
|
|
257
257
|
description: withCtx(() => [
|
|
258
258
|
createVNode(_component_el_text, null, {
|
|
259
259
|
default: withCtx(() => [
|
|
260
|
-
createTextVNode("
|
|
260
|
+
createTextVNode("暂无轮播素材数据")
|
|
261
261
|
]),
|
|
262
262
|
_: 1
|
|
263
263
|
}),
|
|
@@ -269,7 +269,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
269
269
|
onClick: _cache[2] || (_cache[2] = ($event) => showAdDefineHandle())
|
|
270
270
|
}, {
|
|
271
271
|
default: withCtx(() => [
|
|
272
|
-
createTextVNode("
|
|
272
|
+
createTextVNode(" 设置素材显示尺寸 ")
|
|
273
273
|
]),
|
|
274
274
|
_: 1
|
|
275
275
|
}, 8, ["icon"]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"part-banner-edit.vue.js","sources":["../../../../../../../src/modules/cms/pages/cms-contents/components/part-banner-edit.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-part-banner__warp\" v-loading=\"loading\" v-if=\"cmsSettings.part.openBanner\">\r\n <el-carousel v-if=\"partAdBanner && partAdBanner.contents?.length\" :autoplay=\"false\" height=\"240px\" arrow=\"always\">\r\n <el-carousel-item v-for=\"item in partAdBanner.contents\" :key=\"item.id\">\r\n <div class=\"mk-cms-part-banner__list_item\">\r\n <div class=\"mk-cms-part-banner__list_content\">\r\n <el-image class=\"mk-cms-part-banner__list_content_img\" v-if=\"item.type == 1\" :src=\"item.path\" fit=\"cover\"\r\n tyle=\"width: 100%;height: 100%;\">\r\n <div slot=\"placeholder\" class=\"image-slot\">\r\n 加载中<span class=\"dot\">...</span>\r\n </div>\r\n </el-image>\r\n <video class=\"video\" v-if=\"item.type == 2\" :src=\"item.path\" style=\"width: 100%;height: 100%;\"\r\n controls></video>\r\n </div>\r\n <div class=\"mk-cms-part-banner__list_bottom\">\r\n <div class=\"mk-cms-part-banner__list_title\">{{ item.title }}</div>\r\n <div>{{ item.desc }}</div>\r\n </div>\r\n <div class=\"mk-cms-part-banner__list_action-mask\">\r\n <el-button type=\"primary\" style=\"margin-left: 10px;\" :icon=\"EditPen\" @click=\"showAdContentHandle(item.id)\">\r\n
|
|
1
|
+
{"version":3,"file":"part-banner-edit.vue.js","sources":["../../../../../../../src/modules/cms/pages/cms-contents/components/part-banner-edit.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-part-banner__warp\" v-loading=\"loading\" v-if=\"cmsSettings.part.openBanner\">\r\n <el-carousel v-if=\"partAdBanner && partAdBanner.contents?.length\" :autoplay=\"false\" height=\"240px\" arrow=\"always\">\r\n <el-carousel-item v-for=\"item in partAdBanner.contents\" :key=\"item.id\">\r\n <div class=\"mk-cms-part-banner__list_item\">\r\n <div class=\"mk-cms-part-banner__list_content\">\r\n <el-image class=\"mk-cms-part-banner__list_content_img\" v-if=\"item.type == 1\" :src=\"item.path\" fit=\"cover\"\r\n tyle=\"width: 100%;height: 100%;\">\r\n <div slot=\"placeholder\" class=\"image-slot\">\r\n 加载中<span class=\"dot\">...</span>\r\n </div>\r\n </el-image>\r\n <video class=\"video\" v-if=\"item.type == 2\" :src=\"item.path\" style=\"width: 100%;height: 100%;\"\r\n controls></video>\r\n </div>\r\n <div class=\"mk-cms-part-banner__list_bottom\">\r\n <div class=\"mk-cms-part-banner__list_title\">{{ item.title }}</div>\r\n <div>{{ item.desc }}</div>\r\n </div>\r\n <div class=\"mk-cms-part-banner__list_action-mask\">\r\n <el-button type=\"primary\" style=\"margin-left: 10px;\" :icon=\"EditPen\" @click=\"showAdContentHandle(item.id)\">\r\n 编辑当前轮播素材\r\n </el-button>\r\n <el-button type=\"primary\" style=\"margin-left: 10px;\" :icon=\"Plus\" @click=\"showAdContentHandle(null)\">\r\n 添加新轮播素材\r\n </el-button>\r\n <el-button type=\"primary\" style=\"margin-left: 10px;\" :icon=\"EditPen\" @click=\"showAdDefineHandle()\">\r\n 设置素材显示尺寸\r\n </el-button>\r\n </div>\r\n </div>\r\n </el-carousel-item>\r\n </el-carousel>\r\n <el-empty v-else :image-size=\"80\" style=\"height: 240px;\">\r\n <template #description>\r\n <el-text>暂无轮播素材数据</el-text>\r\n <el-button type=\"primary\" text style=\"margin-left: 10px;\" :icon=\"Plus\" @click=\"showAdDefineHandle()\">\r\n 设置素材显示尺寸\r\n </el-button>\r\n <el-button type=\"primary\" text style=\"margin-left: 10px;\" :icon=\"Plus\" @click=\"showAdContentHandle(null)\">\r\n 添加\r\n </el-button>\r\n </template>\r\n </el-empty>\r\n </div>\r\n</template>\r\n<script setup lang=\"ts\">\r\nimport { useCmsSettings } from \"../../../cms-settings\"\r\nimport { onMounted, reactive, ref, watch, defineProps } from \"vue\";\r\nimport { DataViewRequest, Where } from \"@maketribe/request\";\r\nimport { Dialoger, Messager } from \"@maketribe/dm\";\r\nimport { CmsAdContentsForm, CmsAdDefinesForm } from \"../../../dataviews\";\r\nimport { EditPen, ArrowDown, Delete, Plus } from \"@element-plus/icons-vue\"\r\n// 广告定义数据表\r\nconst adRequest = new DataViewRequest({ name: \"ad-define\", moduleName: \"cms\" });\r\n// cms 配置\r\nconst cmsSettings = useCmsSettings();\r\nconst props = defineProps({ partId: { type: String }, title: { type: String } })\r\n// 栏目广告\r\nconst partAdBanner = ref<any | null>(null);\r\nconst loading = ref(true);\r\nconst adContentForm = reactive<CmsAdContentsForm>(new CmsAdContentsForm({ cutSise: cmsSettings.part.bannerImageSize }))\r\nconst adDefineForm = reactive<CmsAdDefinesForm>(new CmsAdDefinesForm())\r\n\r\n// 内容添加之前监测广告是否存在不存在先添加广告\r\nadContentForm.beforeSubmitEvent.on(async ({ data }) => {\r\n if (partAdBanner.value) {\r\n data.adDefineId = partAdBanner.value.id as any;\r\n }\r\n else {\r\n try {\r\n\r\n const widthAndHeight = cmsSettings.part.bannerImageSize.split(\"*\");\r\n // 添加广告\r\n const result = await adRequest.add({ key: `part_${props.partId}`, desc: `${props.title}的Banner`, width: widthAndHeight[0], height: widthAndHeight[1] })\r\n\r\n if (result.data.code == 200) {\r\n partAdBanner.value = { id: result.data.data as string }\r\n data.adDefineId = result.data.data;\r\n }\r\n\r\n } catch (error) {\r\n Messager.error({ message: \"添加失败!\" });\r\n }\r\n }\r\n\r\n})\r\n\r\n//提交判断是否存在,判断更新还是添加\r\nadDefineForm.formatSubmitData = ((data) => {\r\n if (partAdBanner.value) {\r\n data.id = partAdBanner.value.id as any;\r\n } else {\r\n data.key = `part_${props.partId}`\r\n data.desc = `${props.title}的Banner`\r\n }\r\n return data\r\n})\r\n\r\n\r\n\r\n// 添加完成则刷新\r\nadContentForm.submittedEvent.on(() => {\r\n loadPartAdDefineData(props.partId)\r\n})\r\n//加完成则刷新\r\nadDefineForm.submittedEvent.on(() => {\r\n loadPartAdDefineData(props.partId)\r\n})\r\n\r\n//加载栏目广告\r\nconst loadPartAdDefineData = async (partId: any) => {\r\n\r\n try {\r\n\r\n loading.value = true;\r\n const where = new Where()\r\n where.addCondition(\"key\", \"=\", `part_${partId}`);\r\n // 加载广告定义\r\n partAdBanner.value = (await adRequest.query({\r\n data: {\r\n pn: 1,\r\n pc: 1000000,\r\n condition: where\r\n }\r\n })).data.data[0];\r\n if (partAdBanner.value?.width && partAdBanner.value?.width) {\r\n adContentForm.changeCutSise(`${partAdBanner.value.width}*${partAdBanner.value.height}`)\r\n }\r\n\r\n } catch (e) {\r\n console.error(e)\r\n } finally {\r\n loading.value = false;\r\n }\r\n}\r\n//显示栏目广告的编辑弹窗\r\nconst showAdContentHandle = async (id: any) => {\r\n await Dialoger.dataFormDialog({\r\n dataForm: adContentForm as CmsAdContentsForm,\r\n recId: id\r\n })\r\n}\r\n//显示栏目广告定义的编辑弹窗\r\nconst showAdDefineHandle = async () => {\r\n await Dialoger.dataFormDialog({\r\n title:\"设置素材显示尺寸\",\r\n dataForm: adDefineForm as CmsAdDefinesForm,\r\n recId: partAdBanner.value?.id\r\n })\r\n adDefineForm.getColumn(\"contents\")!.visible = false;\r\n adDefineForm.getColumn(\"key\")!.visible = false;\r\n adDefineForm.getColumn(\"desc\")!.visible = false;\r\n}\r\n\r\n// 组件挂载的时候\r\nonMounted(() => {\r\n watch(() => props.partId, id => {\r\n loadPartAdDefineData(id)\r\n }, { immediate: true })\r\n})\r\n\r\n</script>\r\n<style lang='scss'></style>\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, ref, watch, reactive, watchEffect, resolveComponent, resolveDirective, withDirectives, openBlock, createElementBlock, createVNode, withCtx, createElementVNode, createTextVNode, unref, createBlock, createCommentVNode, Fragment, resolveDynamicComponent } from "vue";
|
|
1
|
+
import { defineComponent, ref, watch, reactive, watchEffect, resolveComponent, resolveDirective, withDirectives, openBlock, createElementBlock, createVNode, withCtx, createElementVNode, createTextVNode, unref, createBlock, createCommentVNode, Fragment, renderList, toDisplayString, resolveDynamicComponent } from "vue";
|
|
2
2
|
import { MKPartTree } from "../../components/part-tree/index.js";
|
|
3
3
|
import _sfc_main$1 from "./components/article-list.vue.js";
|
|
4
4
|
import _sfc_main$2 from "./components/part-info.vue.js";
|
|
@@ -44,7 +44,7 @@ import "../../../../components/business/resource-manager/index.js";
|
|
|
44
44
|
import { CmsPartForm } from "../../dataviews/cms-parts/CmsPartForm.js";
|
|
45
45
|
import { CmsContentManPartForm } from "../../dataviews/cms-parts/CmsContentManPartForm.js";
|
|
46
46
|
import { CmsPartMiniForm } from "../../dataviews/cms-parts/CmsPartMiniForm.js";
|
|
47
|
-
import {
|
|
47
|
+
import { usePartExtensionList } from "../../composables/part-extensions.js";
|
|
48
48
|
import { useCmsSettings } from "../../cms-settings.js";
|
|
49
49
|
const _hoisted_1 = { class: "mk-cms-contents__warp" };
|
|
50
50
|
const _hoisted_2 = { style: { "color": "var(--el-text-color-regular)", "margin-left": "10px" } };
|
|
@@ -82,7 +82,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
82
82
|
const activeTabName = ref("article-list");
|
|
83
83
|
const curSelectPartItem = ref(null);
|
|
84
84
|
const partTreeRef = ref(null);
|
|
85
|
-
const
|
|
85
|
+
const partExList = ref([]);
|
|
86
86
|
const partDataForm = reactive(new CmsContentManPartForm());
|
|
87
87
|
partDataForm.init();
|
|
88
88
|
let beforeInitFormPart = null;
|
|
@@ -105,7 +105,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
105
105
|
activeTabName.value = "article-list";
|
|
106
106
|
}
|
|
107
107
|
router.replace({ name: "cms/contents", query: { pid: curSelectPartItem.value.id } });
|
|
108
|
-
|
|
108
|
+
partExList.value = usePartExtensionList(curSelectPartItem.value.id).concat(usePartExtensionList(curSelectPartItem.value.name));
|
|
109
109
|
}
|
|
110
110
|
};
|
|
111
111
|
const deletePartHandle = (item) => {
|
|
@@ -246,52 +246,53 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
246
246
|
curSelectPartItem.value ? (openBlock(), createBlock(_component_el_tabs, {
|
|
247
247
|
key: 0,
|
|
248
248
|
modelValue: activeTabName.value,
|
|
249
|
-
"onUpdate:modelValue": _cache[
|
|
249
|
+
"onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => activeTabName.value = $event),
|
|
250
250
|
class: "mk-cms-contents__body__right"
|
|
251
251
|
}, {
|
|
252
252
|
default: withCtx(() => [
|
|
253
253
|
createElementVNode("div", _hoisted_5, [
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
254
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(partExList.value, (ext, i) => {
|
|
255
|
+
return openBlock(), createElementBlock(Fragment, null, [
|
|
256
|
+
activeTabName.value == `part-ext${i}` && ext.save ? (openBlock(), createBlock(_component_el_button, {
|
|
257
|
+
key: 0,
|
|
258
|
+
type: "primary",
|
|
259
|
+
text: "",
|
|
260
|
+
onClick: ($event) => ext.save()
|
|
261
|
+
}, {
|
|
262
|
+
default: withCtx(() => [
|
|
263
|
+
createVNode(_component_MKSvgIcon, {
|
|
264
|
+
iconClass: "save",
|
|
265
|
+
style: { "margin-right": "5px" }
|
|
266
|
+
}),
|
|
267
|
+
createTextVNode(" 保存" + toDisplayString(ext.title), 1)
|
|
268
|
+
]),
|
|
269
|
+
_: 2
|
|
270
|
+
}, 1032, ["onClick"])) : createCommentVNode("", true)
|
|
271
|
+
], 64);
|
|
272
|
+
}), 256)),
|
|
273
|
+
activeTabName.value == "part" || activeTabName.value == "part-content" ? (openBlock(), createBlock(_component_el_button, {
|
|
274
|
+
key: 0,
|
|
275
|
+
type: "primary",
|
|
276
|
+
text: "",
|
|
277
|
+
onClick: _cache[0] || (_cache[0] = ($event) => savePartHandle()),
|
|
278
|
+
disabled: !(partDataForm == null ? void 0 : partDataForm.isChanged)
|
|
279
|
+
}, {
|
|
280
|
+
default: withCtx(() => [
|
|
281
|
+
createVNode(_component_MKSvgIcon, {
|
|
282
|
+
iconClass: "save",
|
|
283
|
+
style: { "margin-right": "5px" }
|
|
284
|
+
}),
|
|
285
|
+
createTextVNode(" 保存 ")
|
|
286
|
+
]),
|
|
287
|
+
_: 1
|
|
288
|
+
}, 8, ["disabled"])) : createCommentVNode("", true),
|
|
289
|
+
unref(CmsSettings).publish.mode == "static" && curSelectPartItem.value.coverTemplate || curSelectPartItem.value.listTemplate || curSelectPartItem.value.contentTemplate ? (openBlock(), createBlock(_component_el_dropdown, { key: 1 }, {
|
|
289
290
|
dropdown: withCtx(() => [
|
|
290
291
|
createVNode(_component_el_dropdown_menu, null, {
|
|
291
292
|
default: withCtx(() => [
|
|
292
293
|
unref(CmsSettings).publish.mode == "static" && curSelectPartItem.value.coverTemplate ? (openBlock(), createBlock(_component_el_dropdown_item, {
|
|
293
294
|
key: 0,
|
|
294
|
-
onClick: _cache[
|
|
295
|
+
onClick: _cache[1] || (_cache[1] = ($event) => unref(CmsPartForm).openPreview(curSelectPartItem.value.id))
|
|
295
296
|
}, {
|
|
296
297
|
default: withCtx(() => [
|
|
297
298
|
createVNode(_component_MKSvgIcon, {
|
|
@@ -304,7 +305,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
304
305
|
})) : createCommentVNode("", true),
|
|
305
306
|
curSelectPartItem.value.listTemplate ? (openBlock(), createBlock(_component_el_dropdown_item, {
|
|
306
307
|
key: 1,
|
|
307
|
-
onClick: _cache[
|
|
308
|
+
onClick: _cache[2] || (_cache[2] = ($event) => unref(CmsPartForm).openPreview(curSelectPartItem.value.id, "1"))
|
|
308
309
|
}, {
|
|
309
310
|
default: withCtx(() => [
|
|
310
311
|
createVNode(_component_MKSvgIcon, {
|
|
@@ -316,7 +317,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
316
317
|
_: 1
|
|
317
318
|
})) : createCommentVNode("", true),
|
|
318
319
|
createVNode(_component_el_dropdown_item, {
|
|
319
|
-
onClick: _cache[
|
|
320
|
+
onClick: _cache[3] || (_cache[3] = ($event) => showPublish.value = true)
|
|
320
321
|
}, {
|
|
321
322
|
default: withCtx(() => [
|
|
322
323
|
createVNode(_component_MKSvgIcon, {
|
|
@@ -411,16 +412,17 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
411
412
|
})), [
|
|
412
413
|
[_directive_loading, partDataForm.loading]
|
|
413
414
|
]) : createCommentVNode("", true),
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
415
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(partExList.value, (ext, i) => {
|
|
416
|
+
return openBlock(), createBlock(_component_el_tab_pane, {
|
|
417
|
+
label: ext.title || `页面扩展设置 ${i == 0 ? "" : i}`,
|
|
418
|
+
name: `part-ext${i}`
|
|
419
|
+
}, {
|
|
420
|
+
default: withCtx(() => [
|
|
421
|
+
(openBlock(), createBlock(resolveDynamicComponent(ext.component)))
|
|
422
|
+
]),
|
|
423
|
+
_: 2
|
|
424
|
+
}, 1032, ["label", "name"]);
|
|
425
|
+
}), 256))
|
|
424
426
|
]),
|
|
425
427
|
_: 1
|
|
426
428
|
}, 8, ["modelValue"])) : (openBlock(), createBlock(_component_el_empty, {
|
|
@@ -431,14 +433,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
431
433
|
]),
|
|
432
434
|
createVNode(_component_el_dialog, {
|
|
433
435
|
modelValue: showPublish.value,
|
|
434
|
-
"onUpdate:modelValue": _cache[
|
|
436
|
+
"onUpdate:modelValue": _cache[11] || (_cache[11] = ($event) => showPublish.value = $event),
|
|
435
437
|
title: "栏目发布",
|
|
436
438
|
width: "475px",
|
|
437
439
|
"append-to-body": false
|
|
438
440
|
}, {
|
|
439
441
|
footer: withCtx(() => [
|
|
440
442
|
createVNode(_component_el_button, {
|
|
441
|
-
onClick: _cache[
|
|
443
|
+
onClick: _cache[10] || (_cache[10] = ($event) => showPublish.value = false)
|
|
442
444
|
}, {
|
|
443
445
|
default: withCtx(() => [
|
|
444
446
|
createTextVNode("取消")
|
|
@@ -463,7 +465,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
463
465
|
createTextVNode(),
|
|
464
466
|
createVNode(unref(ElSwitch), {
|
|
465
467
|
modelValue: optionData.value.isPublishList,
|
|
466
|
-
"onUpdate:modelValue": _cache[
|
|
468
|
+
"onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => optionData.value.isPublishList = $event),
|
|
467
469
|
disabled: !curSelectPartItem.value.listTemplate
|
|
468
470
|
}, null, 8, ["modelValue", "disabled"])
|
|
469
471
|
]),
|
|
@@ -472,7 +474,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
472
474
|
createTextVNode(),
|
|
473
475
|
createVNode(unref(ElSwitch), {
|
|
474
476
|
modelValue: optionData.value.isPublishCover,
|
|
475
|
-
"onUpdate:modelValue": _cache[
|
|
477
|
+
"onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => optionData.value.isPublishCover = $event),
|
|
476
478
|
disabled: !curSelectPartItem.value.coverTemplate
|
|
477
479
|
}, null, 8, ["modelValue", "disabled"])
|
|
478
480
|
]),
|
|
@@ -481,7 +483,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
481
483
|
createTextVNode(),
|
|
482
484
|
createVNode(unref(ElSwitch), {
|
|
483
485
|
modelValue: optionData.value.isPublishContent,
|
|
484
|
-
"onUpdate:modelValue": _cache[
|
|
486
|
+
"onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => optionData.value.isPublishContent = $event),
|
|
485
487
|
disabled: !curSelectPartItem.value.contentTemplate
|
|
486
488
|
}, null, 8, ["modelValue", "disabled"])
|
|
487
489
|
]),
|
|
@@ -490,7 +492,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
490
492
|
createTextVNode(),
|
|
491
493
|
createVNode(unref(ElSwitch), {
|
|
492
494
|
modelValue: optionData.value.isPublishAssets,
|
|
493
|
-
"onUpdate:modelValue": _cache[
|
|
495
|
+
"onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => optionData.value.isPublishAssets = $event)
|
|
494
496
|
}, null, 8, ["modelValue"])
|
|
495
497
|
]),
|
|
496
498
|
createElementVNode("div", null, [
|
|
@@ -498,7 +500,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
498
500
|
createTextVNode(),
|
|
499
501
|
createVNode(unref(ElSwitch), {
|
|
500
502
|
modelValue: optionData.value.isCompulsion,
|
|
501
|
-
"onUpdate:modelValue": _cache[
|
|
503
|
+
"onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => optionData.value.isCompulsion = $event)
|
|
502
504
|
}, null, 8, ["modelValue"])
|
|
503
505
|
])
|
|
504
506
|
])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue2.js","sources":["../../../../../../src/modules/cms/pages/cms-contents/index.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-contents__warp\" v-loading=\"loading\">\r\n <el-page-header style=\"background-color: #fff; padding: 10px\" :icon=\"null\">\r\n <template #title>\r\n <h3 style=\"color: var(--el-text-color-regular); margin-left: 10px\">\r\n <MKSvgIcon iconClass=\"richtext-outline\" style=\"margin-right: 5px\" />\r\n 内容管理\r\n </h3>\r\n </template>\r\n <template #extra>\r\n <div class=\"flex items-center\">\r\n <el-button-group>\r\n <el-button type=\"primary\" size=\"large\" text v-if=\"CmsSettings.publish.mode == 'static'\" @click=\"publishAllPartHandle\">\r\n <MKSvgIcon iconClass=\"Promotion\" style=\"margin-right: 10px\" />\r\n 整站发布\r\n </el-button>\r\n <el-button type=\"primary\" size=\"large\" text @click=\"showPartFormHandle\">\r\n <MKSvgIcon iconClass=\"Plus\" style=\"margin-right: 10px\" />\r\n 新增栏目\r\n </el-button>\r\n </el-button-group>\r\n </div>\r\n </template>\r\n </el-page-header>\r\n <div class=\"mk-cms-contents__body\">\r\n <MKPartTree class=\"mk-cms-contents__body__left\" @select=\"selectPartHandle\" @edit=\"editPartHandle\"\r\n @add=\"showPartFormHandle\" @deleteSuccessfully=\"deletePartHandle\" ref=\"partTreeRef\"\r\n :curSelectId=\"curSelectPartId\" />\r\n <el-tabs v-if=\"curSelectPartItem\" v-model=\"activeTabName\" class=\"mk-cms-contents__body__right\">\r\n <div class=\"mk-cms-contents__body__right__action\">\r\n\r\n <template v-if=\"partExt && activeTabName == 'part-ext'\">\r\n <el-button type=\"primary\" v-if=\"partExt.save\" text @click=\"partExt.save()\">\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 5px\" />\r\n 保存\r\n </el-button>\r\n </template>\r\n <template v-else>\r\n <el-button type=\"primary\" text @click=\"savePartHandle()\" :disabled=\"!partDataForm?.isChanged\"\r\n v-if=\"activeTabName != 'article-list'\">\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 5px\" />\r\n 保存\r\n </el-button>\r\n </template>\r\n <el-dropdown v-if=\"CmsSettings.publish.mode == 'static' && curSelectPartItem.coverTemplate || curSelectPartItem.listTemplate || curSelectPartItem.contentTemplate\">\r\n <span class=\"el-dropdown-link\">\r\n <el-button type=\"primary\" text>\r\n <MKSvgIcon iconClass=\"MoreFilled\" />\r\n </el-button>\r\n </span>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item @click=\"CmsPartForm.openPreview(curSelectPartItem.id)\" v-if=\"CmsSettings.publish.mode == 'static' && curSelectPartItem.coverTemplate\">\r\n <MKSvgIcon iconClass=\"View\" style=\"margin-left: 10px;\" />\r\n 预览封面\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"CmsPartForm.openPreview(curSelectPartItem.id,'1')\" v-if=\"curSelectPartItem.listTemplate\">\r\n <MKSvgIcon iconClass=\"View\" style=\"margin-left: 10px;\" />\r\n 预览列表\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"showPublish = true\">\r\n <MKSvgIcon iconClass=\"Promotion\" style=\"margin-left: 10px;\" />\r\n 发布当前栏目\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </div>\r\n <el-tab-pane label=\"文章列表\" name=\"article-list\" v-if=\"curSelectPartItem.contentTemplate\">\r\n <ArticleList v-if=\"activeTabName == 'article-list'\" :part=\"curSelectPartItem\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"栏目设置\" name=\"part\" v-loading=\"partDataForm.loading\">\r\n <PartInfo v-if=\"activeTabName == 'part'\" :part=\"curSelectPartItem\" ref=\"partInfoRef\"\r\n :partDataForm=\"partDataForm\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"页面内容\" name=\"part-content\" style=\"background-color: #f4f4f4\"\r\n v-if=\"curSelectPartItem.cmsPartTypeId != 1\" v-loading=\"partDataForm.loading\">\r\n <MKDocEditor v-if=\"activeTabName == 'part-content'\" :css=\"CmsSettings.part.doc.css\" :js=\"CmsSettings.part.doc.js\" :content=\"partDataForm.data?.content\"\r\n placeholder=\"从这里开始写正文...\" @change=\"EditorChangeHandle\">\r\n <template #before-extentions>\r\n <PartBannerEdit v-if=\"partDataForm.data?.id\" :partId=\"partDataForm.data?.id\" :title=\"partDataForm.data?.title\" />\r\n </template>\r\n </MKDocEditor>\r\n </el-tab-pane>\r\n <el-tab-pane v-if=\"partExt\" label=\"页面扩展设置\" name=\"part-ext\">\r\n <component :is=\"partExt.component\" />\r\n </el-tab-pane>\r\n \r\n </el-tabs>\r\n <el-empty v-else description=\"请选择栏目\" style=\"width: 100%\" />\r\n </div>\r\n <el-dialog v-model=\"showPublish\" title=\"栏目发布\" width=\"475px\" :append-to-body=\"false\">\r\n <div class=\"mk-cms-contents__publish\">\r\n <div><span>是否发布列表:</span> <el-switch v-model=\"optionData.isPublishList\"\r\n :disabled=\"!curSelectPartItem.listTemplate\" /></div>\r\n <div><span>是否发布封面:</span> <el-switch v-model=\"optionData.isPublishCover\"\r\n :disabled=\"!curSelectPartItem.coverTemplate\" /></div>\r\n <div><span>是否发布内容:</span> <el-switch v-model=\"optionData.isPublishContent\"\r\n :disabled=\"!curSelectPartItem.contentTemplate\" /></div>\r\n <div><span>是否发布资源:</span> <el-switch v-model=\"optionData.isPublishAssets\" /></div>\r\n <div><span>是否强制发布:</span> <el-switch v-model=\"optionData.isCompulsion\" /></div>\r\n </div>\r\n <template #footer>\r\n <el-button @click=\"showPublish = false\">取消</el-button>\r\n <el-button type=\"primary\" @click=\"publishPartHandle\" :loading=\"publishLoading\">确定</el-button>\r\n </template>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n<script setup lang=\"ts\" >\r\nimport { MKPartTree } from \"../../components\";\r\nimport ArticleList from \"./components/article-list.vue\";\r\nimport PartInfo from \"./components/part-info.vue\";\r\nimport PartBannerEdit from \"./components/part-banner-edit.vue\";\r\nimport { MKDocEditor } from \"../../../../components\";\r\nimport { reactive, ref, watch,watchEffect } from \"vue\";\r\nimport { Dialoger } from \"@maketribe/dm\";\r\nimport { CmsContentManPartForm,CmsPartForm, CmsPartMiniForm } from \"../../dataviews/cms-parts\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { usePartExtension, type PartExtension } from \"../../composables/part-extensions\"\r\nimport { ElSwitch } from \"element-plus\";\r\nimport { useCmsSettings } from \"../../cms-settings\"\r\n//路由 \r\nconst route = useRoute();\r\nconst router = useRouter();\r\n\r\n// 当前选中的栏目id\r\nconst curSelectPartId = ref<string>(route.query.pid as string)\r\nwatch(()=>route.query.pid,(v:any)=>{\r\n curSelectPartId.value = v \r\n},{ immediate:true });\r\n\r\n//栏目Mini表单\r\nconst partMiniForm = reactive<CmsPartMiniForm>(new CmsPartMiniForm());\r\n\r\n// cms 配置\r\nconst CmsSettings = useCmsSettings(true);\r\n\r\n//发布栏目时的配置\r\nconst showPublish = ref(false)\r\n\r\n//发布配置项\r\nconst optionData = ref({\r\n isPublishList: false,\r\n isPublishCover: false,\r\n isPublishContent: false,\r\n isPublishAssets: false,\r\n isCompulsion: true\r\n});\r\n\r\n//发布加载状态\r\nconst publishLoading = ref(false);\r\n\r\n// 数据加载状态\r\nconst loading = ref(false)\r\n\r\n// 激活的tab\r\nconst activeTabName = ref(\"article-list\");\r\n\r\n// 当前选中的菜单\r\nconst curSelectPartItem = ref(null as any);\r\n\r\n// 栏目树ref\r\nconst partTreeRef = ref(null);\r\n\r\n//栏目扩展\r\nconst partExt = ref<PartExtension>();\r\n\r\n//栏目数据\r\nconst partDataForm = reactive(new CmsContentManPartForm()) as CmsContentManPartForm;\r\n\r\n// 初始化表单\r\npartDataForm.init();\r\n\r\n// 切换tab 加载栏目表单数据\r\nlet beforeInitFormPart:any = null;\r\nwatchEffect(async ()=>{\r\n if((activeTabName.value == \"part\" || activeTabName.value == \"part-content\") && curSelectPartItem.value != beforeInitFormPart){\r\n try {\r\n beforeInitFormPart = curSelectPartItem.value;\r\n await partDataForm.editRecord(curSelectPartItem.value.id);\r\n } catch (error) {\r\n console.log(error)\r\n }\r\n }\r\n});\r\n\r\n// 选择栏目\r\nconst selectPartHandle = async (item: any) => {\r\n\r\n if (curSelectPartItem.value != item) {\r\n\r\n curSelectPartItem.value = item;\r\n\r\n if (!curSelectPartItem.value.contentTemplate) {\r\n activeTabName.value = \"part\";\r\n }\r\n else{\r\n activeTabName.value = \"article-list\";\r\n }\r\n router.replace({ name: 'cms/contents', query: { pid: curSelectPartItem.value.id } } as any)\r\n partExt.value = usePartExtension(curSelectPartItem.value.id);\r\n }\r\n};\r\n\r\n//删除栏目\r\nconst deletePartHandle = (item: any) => {\r\n if (item.id == curSelectPartItem.value.id) {\r\n curSelectPartItem.value = null;\r\n }\r\n};\r\n\r\n//编辑栏目\r\nconst editPartHandle = (item: any) => {\r\n curSelectPartItem.value = item;\r\n activeTabName.value = \"part\";\r\n};\r\n\r\n/**\r\n * 显示添加栏目表单\r\n */\r\nconst showPartFormHandle = async (item?: any) => {\r\n await Dialoger.dataFormDialog({\r\n dataForm: partMiniForm as CmsContentManPartForm,\r\n });\r\n\r\n if (item.id) {\r\n partMiniForm.addRecord({ parentId: item.id });\r\n }\r\n\r\n};\r\n\r\nwatch(showPublish, async (v) => {\r\n if(v){\r\n optionData.value.isPublishList = !!curSelectPartItem.value.listTemplate\r\n optionData.value.isPublishCover = !!curSelectPartItem.value.coverTemplate\r\n optionData.value.isPublishContent = !!curSelectPartItem.value.contentTemplate\r\n }\r\n})\r\n \r\n//监听表单完成事件\r\npartMiniForm.submittedEvent.on(({ response }:any) => {\r\n if(response.data.data){\r\n // 重置选中\r\n curSelectPartId.value = response.data.data;\r\n // 刷新完成直接选中\r\n (partTreeRef.value! as any).dataTree?.load();\r\n }\r\n \r\n});\r\n\r\n//栏目发布\r\nconst publishAllPartHandle = async () => {\r\n\r\n try {\r\n\r\n loading.value = true;\r\n \r\n await CmsPartForm.publishAll()\r\n } \r\n finally {\r\n loading.value = false;\r\n }\r\n\r\n}\r\nconst publishPartHandle = async () => {\r\n \r\n try {\r\n\r\n publishLoading.value = true\r\n\r\n await CmsPartForm.publish(curSelectPartItem.value.id,optionData.value);\r\n\r\n showPublish.value = false;\r\n\r\n } finally {\r\n publishLoading.value = false\r\n }\r\n}\r\n\r\n/**\r\n * 保存栏目信息\r\n */\r\nconst savePartHandle = async () => {\r\n curSelectPartItem.value = partDataForm.data;\r\n await partDataForm.submit();\r\n}\r\n\r\n/**\r\n * 更新编辑器内容\r\n * @param v 内容\r\n */\r\nconst EditorChangeHandle = (v: any) => {\r\n partDataForm.data.content = v\r\n}\r\n</script>\r\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.vue2.js","sources":["../../../../../../src/modules/cms/pages/cms-contents/index.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-contents__warp\" v-loading=\"loading\">\r\n <el-page-header style=\"background-color: #fff; padding: 10px\" :icon=\"null\">\r\n <template #title>\r\n <h3 style=\"color: var(--el-text-color-regular); margin-left: 10px\">\r\n <MKSvgIcon iconClass=\"richtext-outline\" style=\"margin-right: 5px\" />\r\n 内容管理\r\n </h3>\r\n </template>\r\n <template #extra>\r\n <div class=\"flex items-center\">\r\n <el-button-group>\r\n <el-button type=\"primary\" size=\"large\" text v-if=\"CmsSettings.publish.mode == 'static'\" @click=\"publishAllPartHandle\">\r\n <MKSvgIcon iconClass=\"Promotion\" style=\"margin-right: 10px\" />\r\n 整站发布\r\n </el-button>\r\n <el-button type=\"primary\" size=\"large\" text @click=\"showPartFormHandle\">\r\n <MKSvgIcon iconClass=\"Plus\" style=\"margin-right: 10px\" />\r\n 新增栏目\r\n </el-button>\r\n </el-button-group>\r\n </div>\r\n </template>\r\n </el-page-header>\r\n <div class=\"mk-cms-contents__body\">\r\n <MKPartTree class=\"mk-cms-contents__body__left\" @select=\"selectPartHandle\" @edit=\"editPartHandle\"\r\n @add=\"showPartFormHandle\" @deleteSuccessfully=\"deletePartHandle\" ref=\"partTreeRef\"\r\n :curSelectId=\"curSelectPartId\" />\r\n <el-tabs v-if=\"curSelectPartItem\" v-model=\"activeTabName\" class=\"mk-cms-contents__body__right\">\r\n <div class=\"mk-cms-contents__body__right__action\">\r\n\r\n <template v-for=\"(ext,i) in partExList\" :label=\"ext.title || `页面扩展设置 ${i+1}`\" :name=\"\">\r\n <el-button type=\"primary\" text @click=\"ext.save()\" v-if=\"activeTabName == `part-ext${i}` && ext.save\">\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 5px\" />\r\n 保存{{ext.title}}\r\n </el-button>\r\n </template>\r\n <template v-if=\"activeTabName == 'part' || activeTabName == 'part-content'\">\r\n <el-button type=\"primary\" text @click=\"savePartHandle()\" :disabled=\"!partDataForm?.isChanged\">\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 5px\" />\r\n 保存\r\n </el-button>\r\n </template>\r\n <el-dropdown v-if=\"CmsSettings.publish.mode == 'static' && curSelectPartItem.coverTemplate || curSelectPartItem.listTemplate || curSelectPartItem.contentTemplate\">\r\n <span class=\"el-dropdown-link\">\r\n <el-button type=\"primary\" text>\r\n <MKSvgIcon iconClass=\"MoreFilled\" />\r\n </el-button>\r\n </span>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item @click=\"CmsPartForm.openPreview(curSelectPartItem.id)\" v-if=\"CmsSettings.publish.mode == 'static' && curSelectPartItem.coverTemplate\">\r\n <MKSvgIcon iconClass=\"View\" style=\"margin-left: 10px;\" />\r\n 预览封面\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"CmsPartForm.openPreview(curSelectPartItem.id,'1')\" v-if=\"curSelectPartItem.listTemplate\">\r\n <MKSvgIcon iconClass=\"View\" style=\"margin-left: 10px;\" />\r\n 预览列表\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"showPublish = true\">\r\n <MKSvgIcon iconClass=\"Promotion\" style=\"margin-left: 10px;\" />\r\n 发布当前栏目\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </div>\r\n <el-tab-pane label=\"文章列表\" name=\"article-list\" v-if=\"curSelectPartItem.contentTemplate\">\r\n <ArticleList v-if=\"activeTabName == 'article-list'\" :part=\"curSelectPartItem\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"栏目设置\" name=\"part\" v-loading=\"partDataForm.loading\">\r\n <PartInfo v-if=\"activeTabName == 'part'\" :part=\"curSelectPartItem\" ref=\"partInfoRef\"\r\n :partDataForm=\"partDataForm\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"页面内容\" name=\"part-content\" style=\"background-color: #f4f4f4\"\r\n v-if=\"curSelectPartItem.cmsPartTypeId != 1\" v-loading=\"partDataForm.loading\">\r\n <MKDocEditor v-if=\"activeTabName == 'part-content'\" :css=\"CmsSettings.part.doc.css\" :js=\"CmsSettings.part.doc.js\" :content=\"partDataForm.data?.content\"\r\n placeholder=\"从这里开始写正文...\" @change=\"EditorChangeHandle\">\r\n <template #before-extentions>\r\n <PartBannerEdit v-if=\"partDataForm.data?.id\" :partId=\"partDataForm.data?.id\" :title=\"partDataForm.data?.title\" />\r\n </template>\r\n </MKDocEditor>\r\n </el-tab-pane>\r\n <el-tab-pane v-for=\"(ext,i) in partExList\" :label=\"ext.title || `页面扩展设置 ${i==0 ?'':i}`\" :name=\"`part-ext${i}`\">\r\n <component :is=\"ext.component\" />\r\n </el-tab-pane>\r\n \r\n </el-tabs>\r\n <el-empty v-else description=\"请选择栏目\" style=\"width: 100%\" />\r\n </div>\r\n <el-dialog v-model=\"showPublish\" title=\"栏目发布\" width=\"475px\" :append-to-body=\"false\">\r\n <div class=\"mk-cms-contents__publish\">\r\n <div><span>是否发布列表:</span> <el-switch v-model=\"optionData.isPublishList\"\r\n :disabled=\"!curSelectPartItem.listTemplate\" /></div>\r\n <div><span>是否发布封面:</span> <el-switch v-model=\"optionData.isPublishCover\"\r\n :disabled=\"!curSelectPartItem.coverTemplate\" /></div>\r\n <div><span>是否发布内容:</span> <el-switch v-model=\"optionData.isPublishContent\"\r\n :disabled=\"!curSelectPartItem.contentTemplate\" /></div>\r\n <div><span>是否发布资源:</span> <el-switch v-model=\"optionData.isPublishAssets\" /></div>\r\n <div><span>是否强制发布:</span> <el-switch v-model=\"optionData.isCompulsion\" /></div>\r\n </div>\r\n <template #footer>\r\n <el-button @click=\"showPublish = false\">取消</el-button>\r\n <el-button type=\"primary\" @click=\"publishPartHandle\" :loading=\"publishLoading\">确定</el-button>\r\n </template>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n<script setup lang=\"ts\" >\r\nimport { MKPartTree } from \"../../components\";\r\nimport ArticleList from \"./components/article-list.vue\";\r\nimport PartInfo from \"./components/part-info.vue\";\r\nimport PartBannerEdit from \"./components/part-banner-edit.vue\";\r\nimport { MKDocEditor } from \"../../../../components\";\r\nimport { reactive, ref, watch,watchEffect } from \"vue\";\r\nimport { Dialoger } from \"@maketribe/dm\";\r\nimport { CmsContentManPartForm,CmsPartForm, CmsPartMiniForm } from \"../../dataviews/cms-parts\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { usePartExtensionList, type PartExtension } from \"../../composables/part-extensions\"\r\nimport { ElSwitch } from \"element-plus\";\r\nimport { useCmsSettings } from \"../../cms-settings\"\r\n//路由 \r\nconst route = useRoute();\r\nconst router = useRouter();\r\n\r\n// 当前选中的栏目id\r\nconst curSelectPartId = ref<string>(route.query.pid as string)\r\nwatch(()=>route.query.pid,(v:any)=>{\r\n curSelectPartId.value = v \r\n},{ immediate:true });\r\n\r\n//栏目Mini表单\r\nconst partMiniForm = reactive<CmsPartMiniForm>(new CmsPartMiniForm());\r\n\r\n// cms 配置\r\nconst CmsSettings = useCmsSettings(true);\r\n\r\n//发布栏目时的配置\r\nconst showPublish = ref(false)\r\n\r\n//发布配置项\r\nconst optionData = ref({\r\n isPublishList: false,\r\n isPublishCover: false,\r\n isPublishContent: false,\r\n isPublishAssets: false,\r\n isCompulsion: true\r\n});\r\n\r\n//发布加载状态\r\nconst publishLoading = ref(false);\r\n\r\n// 数据加载状态\r\nconst loading = ref(false)\r\n\r\n// 激活的tab\r\nconst activeTabName = ref(\"article-list\");\r\n\r\n// 当前选中的菜单\r\nconst curSelectPartItem = ref(null as any);\r\n\r\n// 栏目树ref\r\nconst partTreeRef = ref(null);\r\n\r\n//栏目扩展\r\nconst partExList = ref<Array<PartExtension>>([]);\r\n\r\n//栏目数据\r\nconst partDataForm = reactive(new CmsContentManPartForm()) as CmsContentManPartForm;\r\n\r\n// 初始化表单\r\npartDataForm.init();\r\n\r\n// 切换tab 加载栏目表单数据\r\nlet beforeInitFormPart:any = null;\r\nwatchEffect(async ()=>{\r\n if((activeTabName.value == \"part\" || activeTabName.value == \"part-content\") && curSelectPartItem.value != beforeInitFormPart){\r\n try {\r\n beforeInitFormPart = curSelectPartItem.value;\r\n await partDataForm.editRecord(curSelectPartItem.value.id);\r\n } catch (error) {\r\n console.log(error)\r\n }\r\n }\r\n});\r\n\r\n// 选择栏目\r\nconst selectPartHandle = async (item: any) => {\r\n\r\n if (curSelectPartItem.value != item) {\r\n\r\n curSelectPartItem.value = item;\r\n\r\n if (!curSelectPartItem.value.contentTemplate) {\r\n activeTabName.value = \"part\";\r\n }\r\n else{\r\n activeTabName.value = \"article-list\";\r\n }\r\n router.replace({ name: 'cms/contents', query: { pid: curSelectPartItem.value.id } } as any)\r\n partExList.value = usePartExtensionList(curSelectPartItem.value.id).concat(usePartExtensionList(curSelectPartItem.value.name));\r\n }\r\n};\r\n\r\n//删除栏目\r\nconst deletePartHandle = (item: any) => {\r\n if (item.id == curSelectPartItem.value.id) {\r\n curSelectPartItem.value = null;\r\n }\r\n};\r\n\r\n//编辑栏目\r\nconst editPartHandle = (item: any) => {\r\n curSelectPartItem.value = item;\r\n activeTabName.value = \"part\";\r\n};\r\n\r\n/**\r\n * 显示添加栏目表单\r\n */\r\nconst showPartFormHandle = async (item?: any) => {\r\n await Dialoger.dataFormDialog({\r\n dataForm: partMiniForm as CmsContentManPartForm,\r\n });\r\n\r\n if (item.id) {\r\n partMiniForm.addRecord({ parentId: item.id });\r\n }\r\n\r\n};\r\n\r\nwatch(showPublish, async (v) => {\r\n if(v){\r\n optionData.value.isPublishList = !!curSelectPartItem.value.listTemplate\r\n optionData.value.isPublishCover = !!curSelectPartItem.value.coverTemplate\r\n optionData.value.isPublishContent = !!curSelectPartItem.value.contentTemplate\r\n }\r\n})\r\n \r\n//监听表单完成事件\r\npartMiniForm.submittedEvent.on(({ response }:any) => {\r\n if(response.data.data){\r\n // 重置选中\r\n curSelectPartId.value = response.data.data;\r\n // 刷新完成直接选中\r\n (partTreeRef.value! as any).dataTree?.load();\r\n }\r\n \r\n});\r\n\r\n//栏目发布\r\nconst publishAllPartHandle = async () => {\r\n\r\n try {\r\n\r\n loading.value = true;\r\n \r\n await CmsPartForm.publishAll()\r\n } \r\n finally {\r\n loading.value = false;\r\n }\r\n\r\n}\r\nconst publishPartHandle = async () => {\r\n \r\n try {\r\n\r\n publishLoading.value = true\r\n\r\n await CmsPartForm.publish(curSelectPartItem.value.id,optionData.value);\r\n\r\n showPublish.value = false;\r\n\r\n } finally {\r\n publishLoading.value = false\r\n }\r\n}\r\n\r\n/**\r\n * 保存栏目信息\r\n */\r\nconst savePartHandle = async () => {\r\n curSelectPartItem.value = partDataForm.data;\r\n await partDataForm.submit();\r\n}\r\n\r\n/**\r\n * 更新编辑器内容\r\n * @param v 内容\r\n */\r\nconst EditorChangeHandle = (v: any) => {\r\n partDataForm.data.content = v\r\n}\r\n</script>\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
import { type Component } from "vue";
|
|
2
|
+
/**
|
|
3
|
+
* 页面扩展
|
|
4
|
+
*/
|
|
2
5
|
export type PartExtension = {
|
|
6
|
+
title?: "";
|
|
3
7
|
saveHandle?: Function;
|
|
4
8
|
component: Component;
|
|
5
9
|
save: Function;
|
|
6
10
|
};
|
|
7
11
|
/**
|
|
8
12
|
* 使用扩展
|
|
9
|
-
* @param partId
|
|
13
|
+
* @param partId 或者栏目名称
|
|
10
14
|
* @returns
|
|
11
15
|
*/
|
|
12
|
-
export declare const
|
|
16
|
+
export declare const usePartExtensionList: (partIdorName: string | number) => any;
|
|
13
17
|
/**
|
|
14
18
|
* 注册扩展
|
|
15
19
|
* @param partId
|
|
16
20
|
* @returns
|
|
17
21
|
*/
|
|
18
|
-
export declare const registerPartExtension: (
|
|
22
|
+
export declare const registerPartExtension: (partIdorName: string | number, ext: PartExtension) => void;
|