@maketribe/ms-app 3.2.44 → 3.2.46

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.
Files changed (43) hide show
  1. package/dist/cjs/components/basic/lexical-editor/assets/doc-editor.css.js +1 -1
  2. package/dist/cjs/components/basic/lexical-editor/assets/doc-editor.css.js.map +1 -1
  3. package/dist/cjs/components/basic/lexical-editor/nodes/ModuleDecoratorNode.js +1 -1
  4. package/dist/cjs/components/basic/lexical-editor/nodes/ModuleDecoratorNode.js.map +1 -1
  5. package/dist/cjs/components/basic/lexical-editor/utils/html.js +1 -19
  6. package/dist/cjs/components/basic/lexical-editor/utils/html.js.map +1 -1
  7. package/dist/cjs/components/basic/lexical-editor/utils/module.js.map +1 -1
  8. package/dist/cjs/modules/cms/cms-settings.js +5 -1
  9. package/dist/cjs/modules/cms/cms-settings.js.map +1 -1
  10. package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +40 -324
  11. package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
  12. package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner.vue.js +362 -0
  13. package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner.vue.js.map +1 -0
  14. package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner.vue2.js +4 -0
  15. package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner.vue2.js.map +1 -0
  16. package/dist/cjs/modules/cms/pages/cms-settigns/index.vue2.js +38 -15
  17. package/dist/cjs/modules/cms/pages/cms-settigns/index.vue2.js.map +1 -1
  18. package/dist/esm/components/basic/lexical-editor/assets/doc-editor.css.js +1 -1
  19. package/dist/esm/components/basic/lexical-editor/assets/doc-editor.css.js.map +1 -1
  20. package/dist/esm/components/basic/lexical-editor/nodes/ModuleDecoratorNode.js +1 -1
  21. package/dist/esm/components/basic/lexical-editor/nodes/ModuleDecoratorNode.js.map +1 -1
  22. package/dist/esm/components/basic/lexical-editor/utils/html.js +2 -20
  23. package/dist/esm/components/basic/lexical-editor/utils/html.js.map +1 -1
  24. package/dist/esm/components/basic/lexical-editor/utils/module.js.map +1 -1
  25. package/dist/esm/modules/cms/cms-settings.js +5 -1
  26. package/dist/esm/modules/cms/cms-settings.js.map +1 -1
  27. package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +41 -325
  28. package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
  29. package/dist/esm/modules/cms/pages/cms-contents/components/part-banner.vue.js +363 -0
  30. package/dist/esm/modules/cms/pages/cms-contents/components/part-banner.vue.js.map +1 -0
  31. package/dist/esm/modules/cms/pages/cms-contents/components/part-banner.vue2.js +5 -0
  32. package/dist/esm/modules/cms/pages/cms-contents/components/part-banner.vue2.js.map +1 -0
  33. package/dist/esm/modules/cms/pages/cms-settigns/index.vue2.js +38 -15
  34. package/dist/esm/modules/cms/pages/cms-settigns/index.vue2.js.map +1 -1
  35. package/dist/style/index.css +1 -1
  36. package/dist/style/modules/cms/index.css +1 -1
  37. package/dist/style/modules/cms/pages/cms-contents/components/mk-cms-part-banner.css +1 -1
  38. package/dist/style/modules/cms/pages/cms-contents/index.css +1 -1
  39. package/dist/style/src/modules/cms/pages/cms-contents/components/mk-cms-part-banner.scss +1 -0
  40. package/dist/types/components/basic/lexical-editor/nodes/ModuleDecoratorNode.d.ts +1 -3
  41. package/dist/types/modules/cms/cms-settings.d.ts +5 -1
  42. package/dist/types/modules/cms/pages/cms-contents/components/part-banner.vue.d.ts +32 -0
  43. package/package.json +3 -3
@@ -1,349 +1,65 @@
1
1
  "use strict";
2
2
  const vue = require("vue");
3
3
  const cmsSettings = require("../../../cms-settings.js");
4
- const request = require("@maketribe/request");
5
- const dm = require("@maketribe/dm");
6
- const CmsAdContentsForm = require("../../../dataviews/cms-ad-contents/CmsAdContentsForm.js");
7
- const CmsAdDefinesForm = require("../../../dataviews/cms-ad-defines/CmsAdDefinesForm.js");
8
- require("element-plus");
9
- require("@maketribe/utils");
10
- require("../../../../../core/DataModelDefines.js");
11
- require("vue-router");
12
- require("@maketribe/locale");
13
- require("../../../../ms/dataviews/ms-config/MsConfigTable.js");
14
- require("lodash-es");
15
- require("../../../../../components/basic/svg-icon/index.js");
16
- require("../../../../../components/data-model/data-form/index.js");
17
- require("../../../../../components/data-model/data-table/index.js");
18
- require("../../../../../components/data-model/data-table-pagination/index.js");
19
- require("../../../../../components/abstract/abstract-select/abstract-select.js");
20
- require("../../../../../components/abstract/abstract-select/abstract-select-options.js");
21
- require("../../../../../components/basic/button/button-options.js");
22
- require("../../../../../components/basic/config-provider/index.js");
23
- require("../../../../../components/basic/data-table-select/index.js");
24
- require("../../../../../components/basic/data-select/index.js");
25
- require("../../../../../components/basic/pagination/index.js");
26
- require("../../../../../components/basic/system-provider/index.js");
27
- require("../../../../../components/basic/code-editor/index.js");
28
- require("../../../../../components/basic/json-editor/index.js");
29
- require("../../../../../components/basic/page-container/index.js");
30
- require("../../../../../components/basic/date-picker/index.js");
31
- require("../../../../../components/basic/icon-select/index.js");
32
- require("../../../../../components/basic/upload-file/upload-file.js");
33
- require("../../../../../components/basic/upload-file/context/web-file-upload-context.js");
34
- require("../../../../../components/basic/upload-file/context/web-file-upload-context-options.js");
35
- require("../../../../../components/basic/upload-file/ui/upload-image/index.js");
36
- require("../../../../../components/basic/upload-file/ui/upload-file/index.js");
37
- require("../../../../../components/basic/upload-file/ui/upload-video/index.js");
38
- require("../../../../../components/basic/upload-file/upload-file-options.js");
39
- require("../../../../../components/basic/doc-editor/index.js");
40
- require("../../../../../components/basic/copy-container/index.js");
41
- require("../../../../../components/basic/image-cropper/index.js");
42
- require("../../../../../components/basic/visual-page-editor/index.js");
43
- require("../../../../../components/basic/lexical-editor/assets/iconfont.js");
44
- require("@lexical/overflow");
45
- require("@lexical/text");
46
- require("@lexical/utils");
47
- require("lexical");
48
- require("@lexical/selection");
49
- require("@lexical/link");
50
- require("@lexical/rich-text");
51
- require("../../../../../components/basic/lexical-editor/utils/html.js");
52
- require("../../../../../components/basic/lexical-editor/utils/image.js");
53
- const elIcons = require("@element-plus/icons-vue");
54
- require("../../../../../components/basic/lexical-editor/composables/useElementBlockSelection.js");
55
- require("@lexical/history");
56
- ;/* empty css */
57
- require("../../../../../components/basic/lexical-editor/nodes/ModuleDecoratorNode.js");
58
- require("../../../../../components/basic/lexical-editor/nodes/ImageNode.js");
59
- require("../../../../../components/basic/lexical-editor/nodes/ImageTextWarpNode.js");
60
- require("../../../../../components/basic/lexical-editor/nodes/Template.js");
61
- ;/* empty css */
62
- ;/* empty css */
63
- ;/* empty css */
64
- require("../../../../../components/basic/lexical-editor/plugins/RichTextEditorPlugin.js");
65
- require("../../../../../components/basic/lexical-editor/plugins/HashtagPlugin.js");
66
- require("../../../../../components/basic/lexical-editor/plugins/ListPlugin.js");
67
- require("../../../../../components/basic/lexical-editor/plugins/CheckListPlugin.js");
68
- require("../../../../../components/basic/lexical-editor/plugins/TablePlugin.js");
69
- ;/* empty css */
70
- require("@lexical/dragon");
71
- require("@lexical/plain-text");
72
- require("../../../../../components/basic/lexical-editor/stage/DecoratedTeleports.js");
73
- ;/* empty css */
74
- require("../../../../../components/business/verify-dialog/verify-dialog-option.js");
75
- require("../../../../../components/business/resource-list/index.js");
76
- require("../../../../../components/business/resource-manager/index.js");
77
- require("../../../../ms/dataviews/department/DepartmentForm.js");
78
- require("../../../../ms/dataviews/department/DepartmentTable.js");
79
- require("../../../../ms/dataviews/department/DepartmentTree.js");
80
- require("../../../../ms/dataviews/log/operate-log/OperateLogTable.js");
81
- require("../../../../ms/dataviews/log/login-log/LoginLogTable.js");
82
- require("../../../../ms/dataviews/log/request-log/RequestLogTable.js");
83
- require("../../../../ms/dataviews/log/local-log/LocalLogTree.js");
84
- require("../../../../ms/components/material-list/index.js");
85
- require("../../../../ms/components/markdown-editor/index.js");
86
- require("../../../../ms/components/rich-text-editor/index.js");
87
- require("../../../../ms/material-upload-context/material-upload-context-options.js");
88
- require("../../../../ms/material-upload-context/material-upload-context.js");
89
- require("@codemirror/lang-html");
90
- const _hoisted_1 = { class: "mk-cms-part-banner__list_item" };
91
- const _hoisted_2 = { class: "mk-cms-part-banner__list_content" };
92
- const _hoisted_3 = /* @__PURE__ */ vue.createElementVNode("div", {
93
- slot: "placeholder",
94
- class: "image-slot"
95
- }, [
96
- /* @__PURE__ */ vue.createTextVNode(" 加载中"),
97
- /* @__PURE__ */ vue.createElementVNode("span", { class: "dot" }, "...")
98
- ], -1);
99
- const _hoisted_4 = ["src"];
100
- const _hoisted_5 = { class: "mk-cms-part-banner__list_bottom" };
101
- const _hoisted_6 = { class: "mk-cms-part-banner__list_title" };
102
- const _hoisted_7 = { class: "mk-cms-part-banner__list_action-mask" };
4
+ const partBanner_vue_vue_type_script_setup_true_lang = require("./part-banner.vue.js");
103
5
  const _sfc_main = /* @__PURE__ */ vue.defineComponent({
104
6
  __name: "part-banner-edit",
105
7
  props: { partId: { type: String }, title: { type: String } },
106
8
  setup(__props) {
107
- const adRequest = new request.DataViewRequest({ name: "ad-define", moduleName: "cms" });
108
9
  const cmsSettings$1 = cmsSettings.useCmsSettings();
109
- const props = __props;
110
- const partAdBanner = vue.ref(null);
111
- const loading = vue.ref(true);
112
- const warpRef = vue.ref();
113
- const adContentForm = vue.reactive(new CmsAdContentsForm.CmsAdContentsForm({ cutSise: cmsSettings$1.part.bannerImageSize }));
114
- const adDefineForm = vue.reactive(new CmsAdDefinesForm.CmsAdDefinesForm());
115
- const partAdBannerHeight = vue.computed(() => {
116
- let proportion = 0;
117
- const widthAndHeight = cmsSettings$1.part.bannerImageSize.split("*");
118
- let settingHeight = 0;
119
- let settingWidth = 0;
120
- if (!!partAdBanner.value.width && !!partAdBanner.value.height) {
121
- proportion = partAdBanner.value.width / partAdBanner.value.height;
122
- } else {
123
- settingWidth = widthAndHeight[0];
124
- settingHeight = widthAndHeight[1];
125
- proportion = settingWidth / settingHeight;
126
- }
127
- if (Number.isNaN(proportion)) {
128
- return "240px";
129
- } else {
130
- return partAdBanner.value.height ? warpRef.value.offsetWidth / proportion + "px" : warpRef.value.offsetWidth / proportion + "px";
131
- }
132
- });
133
- adContentForm.beforeSubmitEvent.on(async ({ data }) => {
134
- if (partAdBanner.value) {
135
- data.adDefineId = partAdBanner.value.id;
136
- } else {
137
- try {
138
- const widthAndHeight = cmsSettings$1.part.bannerImageSize.split("*");
139
- const result = await adRequest.add({ key: `part_${props.partId}`, desc: `${props.title}的Banner`, width: widthAndHeight[0], height: widthAndHeight[1] });
140
- if (result.data.code == 200) {
141
- partAdBanner.value = { id: result.data.data };
142
- data.adDefineId = result.data.data;
143
- }
144
- } catch (error) {
145
- dm.Messager.error({ message: "添加失败!" });
146
- }
147
- }
148
- });
149
- adDefineForm.formatSubmitData = (data) => {
150
- if (partAdBanner.value) {
151
- data.id = partAdBanner.value.id;
152
- } else {
153
- data.key = `part_${props.partId}`;
154
- data.desc = `${props.title}的Banner`;
155
- }
156
- return data;
157
- };
158
- adContentForm.submittedEvent.on(() => {
159
- loadPartAdDefineData(props.partId);
160
- });
161
- adDefineForm.submittedEvent.on(() => {
162
- loadPartAdDefineData(props.partId);
163
- });
164
- const loadPartAdDefineData = async (partId) => {
165
- var _a, _b;
166
- try {
167
- loading.value = true;
168
- const where = new request.Where();
169
- where.addCondition("key", "=", `part_${partId}`);
170
- partAdBanner.value = (await adRequest.query({
171
- data: {
172
- pn: 1,
173
- pc: 1e6,
174
- condition: where
175
- }
176
- })).data.data[0];
177
- if (((_a = partAdBanner.value) == null ? void 0 : _a.width) && ((_b = partAdBanner.value) == null ? void 0 : _b.width)) {
178
- adContentForm.changeCutSise(`${partAdBanner.value.width}*${partAdBanner.value.height}`);
179
- }
180
- } catch (e) {
181
- console.error(e);
182
- } finally {
183
- loading.value = false;
184
- }
185
- };
186
- const showAdContentHandle = async (id) => {
187
- await dm.Dialoger.dataFormDialog({
188
- dataForm: adContentForm,
189
- recId: id
190
- });
191
- };
192
- const showAdDefineHandle = async () => {
193
- var _a;
194
- await dm.Dialoger.dataFormDialog({
195
- title: "设置素材显示尺寸",
196
- dataForm: adDefineForm,
197
- recId: (_a = partAdBanner.value) == null ? void 0 : _a.id
198
- });
199
- adDefineForm.getColumn("contents").visible = false;
200
- adDefineForm.getColumn("key").visible = false;
201
- adDefineForm.getColumn("desc").visible = false;
202
- };
203
- vue.onMounted(() => {
204
- vue.watch(() => props.partId, (id) => {
205
- loadPartAdDefineData(id);
206
- }, { immediate: true });
207
- });
10
+ console.log(cmsSettings$1.devices);
11
+ const warpElRef = vue.ref();
12
+ const activePartAdType = vue.ref(cmsSettings$1.devices[0]);
208
13
  return (_ctx, _cache) => {
209
- var _a;
210
- const _component_el_image = vue.resolveComponent("el-image");
211
- const _component_el_button = vue.resolveComponent("el-button");
212
- const _component_el_carousel_item = vue.resolveComponent("el-carousel-item");
213
- const _component_el_carousel = vue.resolveComponent("el-carousel");
214
- const _component_el_text = vue.resolveComponent("el-text");
215
- const _component_el_empty = vue.resolveComponent("el-empty");
216
- const _directive_loading = vue.resolveDirective("loading");
217
- return vue.unref(cmsSettings$1).part.openBanner ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", {
14
+ const _component_el_tab_pane = vue.resolveComponent("el-tab-pane");
15
+ const _component_el_tabs = vue.resolveComponent("el-tabs");
16
+ return vue.unref(cmsSettings$1).part.openBanner ? (vue.openBlock(), vue.createElementBlock("div", {
218
17
  key: 0,
219
18
  class: "mk-cms-part-banner__warp",
220
- ref_key: "warpRef",
221
- ref: warpRef,
222
- style: { "{height": "partAdBannerHeight}" }
19
+ ref_key: "warpElRef",
20
+ ref: warpElRef
223
21
  }, [
224
- partAdBanner.value && ((_a = partAdBanner.value.contents) == null ? void 0 : _a.length) ? (vue.openBlock(), vue.createBlock(_component_el_carousel, {
225
- key: 0,
226
- autoplay: false,
227
- height: partAdBannerHeight.value,
228
- arrow: "always",
229
- ref: "carouselRef"
22
+ vue.createVNode(_component_el_tabs, {
23
+ modelValue: activePartAdType.value,
24
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => activePartAdType.value = $event)
230
25
  }, {
231
26
  default: vue.withCtx(() => [
232
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(partAdBanner.value.contents, (item) => {
233
- return vue.openBlock(), vue.createBlock(_component_el_carousel_item, {
234
- key: item.id
235
- }, {
236
- default: vue.withCtx(() => [
237
- vue.createElementVNode("div", _hoisted_1, [
238
- vue.createElementVNode("div", _hoisted_2, [
239
- item.type == 1 ? (vue.openBlock(), vue.createBlock(_component_el_image, {
240
- key: 0,
241
- class: "mk-cms-part-banner__list_content_img",
242
- src: item.path,
243
- fit: "cover",
244
- tyle: "width: 100%;height: 100%;"
245
- }, {
246
- default: vue.withCtx(() => [
247
- _hoisted_3
248
- ]),
249
- _: 2
250
- }, 1032, ["src"])) : vue.createCommentVNode("", true),
251
- item.type == 2 ? (vue.openBlock(), vue.createElementBlock("video", {
252
- key: 1,
253
- class: "video",
254
- src: item.path,
255
- style: { "width": "100%", "height": "100%" },
256
- controls: ""
257
- }, null, 8, _hoisted_4)) : vue.createCommentVNode("", true)
258
- ]),
259
- vue.createElementVNode("div", _hoisted_5, [
260
- vue.createElementVNode("div", _hoisted_6, vue.toDisplayString(item.title), 1),
261
- vue.createElementVNode("div", null, vue.toDisplayString(item.desc), 1)
262
- ]),
263
- vue.createElementVNode("div", _hoisted_7, [
264
- vue.createVNode(_component_el_button, {
265
- type: "primary",
266
- style: { "margin-left": "10px" },
267
- icon: vue.unref(elIcons.EditPen),
268
- onClick: ($event) => showAdContentHandle(item.id)
269
- }, {
270
- default: vue.withCtx(() => [
271
- vue.createTextVNode(" 编辑当前轮播素材 ")
272
- ]),
273
- _: 2
274
- }, 1032, ["icon", "onClick"]),
275
- vue.createVNode(_component_el_button, {
276
- type: "primary",
277
- style: { "margin-left": "10px" },
278
- icon: vue.unref(elIcons.Plus),
279
- onClick: _cache[0] || (_cache[0] = ($event) => showAdContentHandle(null))
280
- }, {
281
- default: vue.withCtx(() => [
282
- vue.createTextVNode(" 添加新轮播素材 ")
283
- ]),
284
- _: 1
285
- }, 8, ["icon"]),
286
- vue.createVNode(_component_el_button, {
287
- type: "primary",
288
- style: { "margin-left": "10px" },
289
- icon: vue.unref(elIcons.EditPen),
290
- onClick: _cache[1] || (_cache[1] = ($event) => showAdDefineHandle())
291
- }, {
292
- default: vue.withCtx(() => [
293
- vue.createTextVNode(" 设置素材显示尺寸 ")
294
- ]),
295
- _: 1
296
- }, 8, ["icon"])
297
- ])
298
- ])
299
- ]),
300
- _: 2
301
- }, 1024);
302
- }), 128))
303
- ]),
304
- _: 1
305
- }, 8, ["height"])) : (vue.openBlock(), vue.createBlock(_component_el_empty, {
306
- key: 1,
307
- "image-size": 80,
308
- style: { "height": "240px" }
309
- }, {
310
- description: vue.withCtx(() => [
311
- vue.createVNode(_component_el_text, null, {
312
- default: vue.withCtx(() => [
313
- vue.createTextVNode("暂无轮播素材数据")
314
- ]),
315
- _: 1
316
- }),
317
- vue.createVNode(_component_el_button, {
318
- type: "primary",
319
- text: "",
320
- style: { "margin-left": "10px" },
321
- icon: vue.unref(elIcons.Plus),
322
- onClick: _cache[2] || (_cache[2] = ($event) => showAdDefineHandle())
27
+ vue.unref(cmsSettings$1).devices.includes("pc") ? (vue.openBlock(), vue.createBlock(_component_el_tab_pane, {
28
+ key: 0,
29
+ label: "PC端",
30
+ name: "pc"
323
31
  }, {
324
- default: vue.withCtx(() => [
325
- vue.createTextVNode(" 设置素材显示尺寸 ")
326
- ]),
32
+ default: vue.withCtx(() => {
33
+ var _a;
34
+ return [
35
+ vue.createVNode(partBanner_vue_vue_type_script_setup_true_lang, {
36
+ adkey: `part_${__props.partId}`,
37
+ title: `${__props.title}PC端`,
38
+ viewWidth: (_a = warpElRef.value) == null ? void 0 : _a.offsetWidth
39
+ }, null, 8, ["adkey", "title", "viewWidth"])
40
+ ];
41
+ }),
327
42
  _: 1
328
- }, 8, ["icon"]),
329
- vue.createVNode(_component_el_button, {
330
- type: "primary",
331
- text: "",
332
- style: { "margin-left": "10px" },
333
- icon: vue.unref(elIcons.Plus),
334
- onClick: _cache[3] || (_cache[3] = ($event) => showAdContentHandle(null))
43
+ })) : vue.createCommentVNode("", true),
44
+ vue.unref(cmsSettings$1).devices.includes("mobile") ? (vue.openBlock(), vue.createBlock(_component_el_tab_pane, {
45
+ key: 1,
46
+ label: "移动端",
47
+ name: "mobile"
335
48
  }, {
336
49
  default: vue.withCtx(() => [
337
- vue.createTextVNode(" 添加 ")
50
+ vue.createVNode(partBanner_vue_vue_type_script_setup_true_lang, {
51
+ adkey: `part_${__props.partId}_mobile`,
52
+ title: `${__props.title}移动端`,
53
+ viewWidth: 750,
54
+ style: { "max-width": "750px", "margin": "auto" }
55
+ }, null, 8, ["adkey", "title"])
338
56
  ]),
339
57
  _: 1
340
- }, 8, ["icon"])
58
+ })) : vue.createCommentVNode("", true)
341
59
  ]),
342
60
  _: 1
343
- }))
344
- ])), [
345
- [_directive_loading, loading.value]
346
- ]) : vue.createCommentVNode("", true);
61
+ }, 8, ["modelValue"])
62
+ ], 512)) : vue.createCommentVNode("", true);
347
63
  };
348
64
  }
349
65
  });
@@ -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\" ref=\"warpRef\" v-loading=\"loading\" v-if=\"cmsSettings.part.openBanner\" style=\"{height:partAdBannerHeight}\">\r\n <el-carousel v-if=\"partAdBanner && partAdBanner.contents?.length\" :autoplay=\"false\" :height=\"partAdBannerHeight\"\r\n arrow=\"always\" ref=\"carouselRef\">\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, computed, Ref } 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 warpRef: Ref<HTMLElement | undefined> = ref();\r\nconst adContentForm = reactive<CmsAdContentsForm>(new CmsAdContentsForm({ cutSise: cmsSettings.part.bannerImageSize }))\r\nconst adDefineForm = reactive<CmsAdDefinesForm>(new CmsAdDefinesForm())\r\nconst partAdBannerHeight = computed(() => {\r\n //判断有没有banner属性\r\n let proportion = 0;\r\n const widthAndHeight = cmsSettings.part.bannerImageSize.split(\"*\");\r\n let settingHeight = 0\r\n let settingWidth = 0\r\n\r\n //设定的比例\r\n if (!!partAdBanner.value.width && !!partAdBanner.value.height) {\r\n proportion = partAdBanner.value.width / partAdBanner.value.height;\r\n } else {\r\n settingWidth = widthAndHeight[0] as any;\r\n\r\n settingHeight = widthAndHeight[1] as any;\r\n proportion = settingWidth / settingHeight\r\n }\r\n\r\n\r\n //比例是NaN,直接返回默认\r\n if (Number.isNaN(proportion)) {\r\n return \"240px\"\r\n } else {\r\n //通过比例确定高度\r\n return partAdBanner.value.height ? (warpRef.value!.offsetWidth / proportion) + \"px\" : (warpRef.value!.offsetWidth / proportion) + \"px\"\r\n }\r\n})\r\n\r\n\r\n// window.addEventListener(\"resize\", () => {\r\n// const proportion = partAdBanner.value.width / partAdBanner.value.height;\r\n// })\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\r\n\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","computed","Messager","Where","Dialoger","onMounted","watch"],"mappings":"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"}
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-if=\"cmsSettings.part.openBanner\" ref=\"warpElRef\">\r\n <el-tabs v-model=\"activePartAdType\">\r\n <el-tab-pane label=\"PC端\" name=\"pc\" v-if=\"cmsSettings.devices.includes('pc')\">\r\n <PartBannerComponent :adkey=\"`part_${partId}`\" :title=\"`${title}PC端`\" :viewWidth=\"warpElRef?.offsetWidth\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"移动端\" name=\"mobile\" v-if=\"cmsSettings.devices.includes('mobile')\">\r\n <PartBannerComponent :adkey=\"`part_${partId}_mobile`\" :title=\"`${title}移动端`\" :viewWidth=\"750\"\r\n style=\"max-width: 750px;margin: auto;\" />\r\n </el-tab-pane>\r\n </el-tabs>\r\n </div>\r\n</template>\r\n<script setup lang=\"ts\">\r\nimport { ref, defineProps } from \"vue\"\r\nimport { useCmsSettings } from \"../../../cms-settings\"\r\nimport PartBannerComponent from \"./part-banner.vue\"\r\n\r\ndefineProps({ partId: { type: String }, title: { type: String } })\r\n\r\n// cms 配置\r\nconst cmsSettings = useCmsSettings();\r\nconsole.log(cmsSettings.devices);\r\n// cms 配置\r\nconst warpElRef = ref<any>()\r\n// 栏目广告\r\nconst activePartAdType = ref(cmsSettings.devices[0])\r\n\r\n</script>\r\n"],"names":["cmsSettings","useCmsSettings","ref"],"mappings":";;;;;;;;AAqBA,UAAMA,gBAAcC,YAAAA;AACZ,YAAA,IAAID,cAAY,OAAO;AAE/B,UAAM,YAAYE,IAAAA;AAElB,UAAM,mBAAmBA,IAAAA,IAAIF,cAAY,QAAQ,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}