@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.
- package/dist/cjs/components/basic/lexical-editor/assets/doc-editor.css.js +1 -1
- package/dist/cjs/components/basic/lexical-editor/assets/doc-editor.css.js.map +1 -1
- package/dist/cjs/components/basic/lexical-editor/nodes/ModuleDecoratorNode.js +1 -1
- package/dist/cjs/components/basic/lexical-editor/nodes/ModuleDecoratorNode.js.map +1 -1
- package/dist/cjs/components/basic/lexical-editor/utils/html.js +1 -19
- package/dist/cjs/components/basic/lexical-editor/utils/html.js.map +1 -1
- package/dist/cjs/components/basic/lexical-editor/utils/module.js.map +1 -1
- package/dist/cjs/modules/cms/cms-settings.js +5 -1
- package/dist/cjs/modules/cms/cms-settings.js.map +1 -1
- package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +40 -324
- 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/components/part-banner.vue.js +362 -0
- package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner.vue.js.map +1 -0
- package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner.vue2.js +4 -0
- package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner.vue2.js.map +1 -0
- package/dist/cjs/modules/cms/pages/cms-settigns/index.vue2.js +38 -15
- package/dist/cjs/modules/cms/pages/cms-settigns/index.vue2.js.map +1 -1
- package/dist/esm/components/basic/lexical-editor/assets/doc-editor.css.js +1 -1
- package/dist/esm/components/basic/lexical-editor/assets/doc-editor.css.js.map +1 -1
- package/dist/esm/components/basic/lexical-editor/nodes/ModuleDecoratorNode.js +1 -1
- package/dist/esm/components/basic/lexical-editor/nodes/ModuleDecoratorNode.js.map +1 -1
- package/dist/esm/components/basic/lexical-editor/utils/html.js +2 -20
- package/dist/esm/components/basic/lexical-editor/utils/html.js.map +1 -1
- package/dist/esm/components/basic/lexical-editor/utils/module.js.map +1 -1
- package/dist/esm/modules/cms/cms-settings.js +5 -1
- package/dist/esm/modules/cms/cms-settings.js.map +1 -1
- package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +41 -325
- 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/components/part-banner.vue.js +363 -0
- package/dist/esm/modules/cms/pages/cms-contents/components/part-banner.vue.js.map +1 -0
- package/dist/esm/modules/cms/pages/cms-contents/components/part-banner.vue2.js +5 -0
- package/dist/esm/modules/cms/pages/cms-contents/components/part-banner.vue2.js.map +1 -0
- package/dist/esm/modules/cms/pages/cms-settigns/index.vue2.js +38 -15
- package/dist/esm/modules/cms/pages/cms-settigns/index.vue2.js.map +1 -1
- package/dist/style/index.css +1 -1
- package/dist/style/modules/cms/index.css +1 -1
- package/dist/style/modules/cms/pages/cms-contents/components/mk-cms-part-banner.css +1 -1
- package/dist/style/modules/cms/pages/cms-contents/index.css +1 -1
- package/dist/style/src/modules/cms/pages/cms-contents/components/mk-cms-part-banner.scss +1 -0
- package/dist/types/components/basic/lexical-editor/nodes/ModuleDecoratorNode.d.ts +1 -3
- package/dist/types/modules/cms/cms-settings.d.ts +5 -1
- package/dist/types/modules/cms/pages/cms-contents/components/part-banner.vue.d.ts +32 -0
- package/package.json +3 -3
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
import { defineComponent, ref, reactive, computed, onMounted, watch, resolveComponent, resolveDirective, withDirectives, openBlock, createElementBlock, createBlock, withCtx, Fragment, renderList, createElementVNode, createCommentVNode, toDisplayString, createVNode, unref, createTextVNode, normalizeStyle } from "vue";
|
|
2
|
+
import { useCmsSettings } from "../../../cms-settings.js";
|
|
3
|
+
import { DataViewRequest, Where } from "@maketribe/request";
|
|
4
|
+
import { Messager, Dialoger } from "@maketribe/dm";
|
|
5
|
+
import { CmsAdContentsForm } from "../../../dataviews/cms-ad-contents/CmsAdContentsForm.js";
|
|
6
|
+
import { CmsAdDefinesForm } from "../../../dataviews/cms-ad-defines/CmsAdDefinesForm.js";
|
|
7
|
+
import "element-plus";
|
|
8
|
+
import "@maketribe/utils";
|
|
9
|
+
import "../../../../../core/DataModelDefines.js";
|
|
10
|
+
import "vue-router";
|
|
11
|
+
import "@maketribe/locale";
|
|
12
|
+
import "../../../../ms/dataviews/ms-config/MsConfigTable.js";
|
|
13
|
+
import "lodash-es";
|
|
14
|
+
import "../../../../../components/basic/svg-icon/index.js";
|
|
15
|
+
import "../../../../../components/data-model/data-form/index.js";
|
|
16
|
+
import "../../../../../components/data-model/data-table/index.js";
|
|
17
|
+
import "../../../../../components/data-model/data-table-pagination/index.js";
|
|
18
|
+
import "../../../../../components/abstract/abstract-select/abstract-select.js";
|
|
19
|
+
import "../../../../../components/abstract/abstract-select/abstract-select-options.js";
|
|
20
|
+
import "../../../../../components/basic/button/button-options.js";
|
|
21
|
+
import "../../../../../components/basic/config-provider/index.js";
|
|
22
|
+
import "../../../../../components/basic/data-table-select/index.js";
|
|
23
|
+
import "../../../../../components/basic/data-select/index.js";
|
|
24
|
+
import "../../../../../components/basic/pagination/index.js";
|
|
25
|
+
import "../../../../../components/basic/system-provider/index.js";
|
|
26
|
+
import "../../../../../components/basic/code-editor/index.js";
|
|
27
|
+
import "../../../../../components/basic/json-editor/index.js";
|
|
28
|
+
import "../../../../../components/basic/page-container/index.js";
|
|
29
|
+
import "../../../../../components/basic/date-picker/index.js";
|
|
30
|
+
import "../../../../../components/basic/icon-select/index.js";
|
|
31
|
+
import "../../../../../components/basic/upload-file/upload-file.js";
|
|
32
|
+
import "../../../../../components/basic/upload-file/context/web-file-upload-context.js";
|
|
33
|
+
import "../../../../../components/basic/upload-file/context/web-file-upload-context-options.js";
|
|
34
|
+
import "../../../../../components/basic/upload-file/ui/upload-image/index.js";
|
|
35
|
+
import "../../../../../components/basic/upload-file/ui/upload-file/index.js";
|
|
36
|
+
import "../../../../../components/basic/upload-file/ui/upload-video/index.js";
|
|
37
|
+
import "../../../../../components/basic/upload-file/upload-file-options.js";
|
|
38
|
+
import "../../../../../components/basic/doc-editor/index.js";
|
|
39
|
+
import "../../../../../components/basic/copy-container/index.js";
|
|
40
|
+
import "../../../../../components/basic/image-cropper/index.js";
|
|
41
|
+
import "../../../../../components/basic/visual-page-editor/index.js";
|
|
42
|
+
import "../../../../../components/basic/lexical-editor/assets/iconfont.js";
|
|
43
|
+
import "@lexical/overflow";
|
|
44
|
+
import "@lexical/text";
|
|
45
|
+
import "@lexical/utils";
|
|
46
|
+
import "lexical";
|
|
47
|
+
import "@lexical/selection";
|
|
48
|
+
import "@lexical/link";
|
|
49
|
+
import "@lexical/rich-text";
|
|
50
|
+
import "../../../../../components/basic/lexical-editor/utils/html.js";
|
|
51
|
+
import "../../../../../components/basic/lexical-editor/utils/image.js";
|
|
52
|
+
import { EditPen, Plus, Delete } from "@element-plus/icons-vue";
|
|
53
|
+
import "../../../../../components/basic/lexical-editor/composables/useElementBlockSelection.js";
|
|
54
|
+
import "@lexical/history";
|
|
55
|
+
/* empty css */
|
|
56
|
+
import "../../../../../components/basic/lexical-editor/nodes/ModuleDecoratorNode.js";
|
|
57
|
+
import "../../../../../components/basic/lexical-editor/nodes/ImageNode.js";
|
|
58
|
+
import "../../../../../components/basic/lexical-editor/nodes/ImageTextWarpNode.js";
|
|
59
|
+
import "../../../../../components/basic/lexical-editor/nodes/Template.js";
|
|
60
|
+
/* empty css */
|
|
61
|
+
/* empty css */
|
|
62
|
+
/* empty css */
|
|
63
|
+
import "../../../../../components/basic/lexical-editor/plugins/RichTextEditorPlugin.js";
|
|
64
|
+
import "../../../../../components/basic/lexical-editor/plugins/HashtagPlugin.js";
|
|
65
|
+
import "../../../../../components/basic/lexical-editor/plugins/ListPlugin.js";
|
|
66
|
+
import "../../../../../components/basic/lexical-editor/plugins/CheckListPlugin.js";
|
|
67
|
+
import "../../../../../components/basic/lexical-editor/plugins/TablePlugin.js";
|
|
68
|
+
/* empty css */
|
|
69
|
+
import "@lexical/dragon";
|
|
70
|
+
import "@lexical/plain-text";
|
|
71
|
+
import "../../../../../components/basic/lexical-editor/stage/DecoratedTeleports.js";
|
|
72
|
+
/* empty css */
|
|
73
|
+
import "../../../../../components/business/verify-dialog/verify-dialog-option.js";
|
|
74
|
+
import "../../../../../components/business/resource-list/index.js";
|
|
75
|
+
import "../../../../../components/business/resource-manager/index.js";
|
|
76
|
+
import "../../../../ms/dataviews/department/DepartmentForm.js";
|
|
77
|
+
import "../../../../ms/dataviews/department/DepartmentTable.js";
|
|
78
|
+
import "../../../../ms/dataviews/department/DepartmentTree.js";
|
|
79
|
+
import "../../../../ms/dataviews/log/operate-log/OperateLogTable.js";
|
|
80
|
+
import "../../../../ms/dataviews/log/login-log/LoginLogTable.js";
|
|
81
|
+
import "../../../../ms/dataviews/log/request-log/RequestLogTable.js";
|
|
82
|
+
import "../../../../ms/dataviews/log/local-log/LocalLogTree.js";
|
|
83
|
+
import "../../../../ms/components/material-list/index.js";
|
|
84
|
+
import "../../../../ms/components/markdown-editor/index.js";
|
|
85
|
+
import "../../../../ms/components/rich-text-editor/index.js";
|
|
86
|
+
import "../../../../ms/material-upload-context/material-upload-context-options.js";
|
|
87
|
+
import "../../../../ms/material-upload-context/material-upload-context.js";
|
|
88
|
+
import "@codemirror/lang-html";
|
|
89
|
+
const _hoisted_1 = { class: "mk-cms-part-banner__list_item" };
|
|
90
|
+
const _hoisted_2 = { class: "mk-cms-part-banner__list_content" };
|
|
91
|
+
const _hoisted_3 = /* @__PURE__ */ createElementVNode("div", {
|
|
92
|
+
slot: "placeholder",
|
|
93
|
+
class: "image-slot"
|
|
94
|
+
}, [
|
|
95
|
+
/* @__PURE__ */ createTextVNode(" 加载中"),
|
|
96
|
+
/* @__PURE__ */ createElementVNode("span", { class: "dot" }, "...")
|
|
97
|
+
], -1);
|
|
98
|
+
const _hoisted_4 = ["src"];
|
|
99
|
+
const _hoisted_5 = { class: "mk-cms-part-banner__list_bottom" };
|
|
100
|
+
const _hoisted_6 = { class: "mk-cms-part-banner__list_title" };
|
|
101
|
+
const _hoisted_7 = { class: "mk-cms-part-banner__list_action-mask" };
|
|
102
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
103
|
+
__name: "part-banner",
|
|
104
|
+
props: { adkey: { type: String }, title: { type: String }, deviceValue: { type: String, default: "" }, viewWidth: { type: Number } },
|
|
105
|
+
setup(__props) {
|
|
106
|
+
const props = __props;
|
|
107
|
+
const adRequest = new DataViewRequest({ name: "ad-define", moduleName: "cms" });
|
|
108
|
+
const adContentRequest = new DataViewRequest({ name: "ad-content", moduleName: "cms" });
|
|
109
|
+
const cmsSettings = useCmsSettings();
|
|
110
|
+
const partAdBanner = ref(null);
|
|
111
|
+
const loading = ref(true);
|
|
112
|
+
const adContentForm = reactive(new CmsAdContentsForm({ cutSise: cmsSettings.part.bannerImageSize }));
|
|
113
|
+
const adDefineForm = reactive(new CmsAdDefinesForm());
|
|
114
|
+
ref(null);
|
|
115
|
+
const partAdBannerHeight = computed(() => {
|
|
116
|
+
var _a, _b;
|
|
117
|
+
const sizes = cmsSettings.part.bannerImageSize.split("*");
|
|
118
|
+
let widthHeightRatio = 0;
|
|
119
|
+
if (!!((_a = partAdBanner.value) == null ? void 0 : _a.width) && !!((_b = partAdBanner.value) == null ? void 0 : _b.height)) {
|
|
120
|
+
widthHeightRatio = partAdBanner.value.width / partAdBanner.value.height;
|
|
121
|
+
} else if (sizes.length && sizes[0] && sizes[1]) {
|
|
122
|
+
widthHeightRatio = sizes[0] / sizes[1];
|
|
123
|
+
}
|
|
124
|
+
if (widthHeightRatio && props.viewWidth) {
|
|
125
|
+
return props.viewWidth / widthHeightRatio + "px";
|
|
126
|
+
}
|
|
127
|
+
return "240px";
|
|
128
|
+
});
|
|
129
|
+
adContentForm.beforeSubmitEvent.on(async ({ data }) => {
|
|
130
|
+
if (partAdBanner.value) {
|
|
131
|
+
data.adDefineId = partAdBanner.value.id;
|
|
132
|
+
} else {
|
|
133
|
+
try {
|
|
134
|
+
const widthAndHeight = cmsSettings.part.bannerImageSize.split("*");
|
|
135
|
+
const result = await adRequest.add({ key: props.adkey, desc: `${props.title}的Banner`, width: widthAndHeight[0], height: widthAndHeight[1] });
|
|
136
|
+
if (result.data.code == 200) {
|
|
137
|
+
partAdBanner.value = { id: result.data.data };
|
|
138
|
+
data.adDefineId = result.data.data;
|
|
139
|
+
}
|
|
140
|
+
} catch (error) {
|
|
141
|
+
Messager.error({ message: "添加失败!" });
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
adDefineForm.formatSubmitData = (data) => {
|
|
146
|
+
if (partAdBanner.value) {
|
|
147
|
+
data.id = partAdBanner.value.id;
|
|
148
|
+
} else {
|
|
149
|
+
data.key = props.adkey;
|
|
150
|
+
data.desc = `${props.title}的Banner`;
|
|
151
|
+
}
|
|
152
|
+
return data;
|
|
153
|
+
};
|
|
154
|
+
adContentForm.submittedEvent.on(() => loadPartAdDefineData());
|
|
155
|
+
adDefineForm.submittedEvent.on(() => loadPartAdDefineData());
|
|
156
|
+
const loadPartAdDefineData = async () => {
|
|
157
|
+
var _a, _b;
|
|
158
|
+
try {
|
|
159
|
+
loading.value = true;
|
|
160
|
+
const where = new Where();
|
|
161
|
+
where.addCondition("key", "=", props.adkey);
|
|
162
|
+
partAdBanner.value = (await adRequest.query({
|
|
163
|
+
data: {
|
|
164
|
+
pn: 1,
|
|
165
|
+
pc: 1e6,
|
|
166
|
+
condition: where
|
|
167
|
+
}
|
|
168
|
+
})).data.data[0];
|
|
169
|
+
if (((_a = partAdBanner.value) == null ? void 0 : _a.width) && ((_b = partAdBanner.value) == null ? void 0 : _b.width)) {
|
|
170
|
+
adContentForm.changeCutSise(`${partAdBanner.value.width}*${partAdBanner.value.height}`);
|
|
171
|
+
}
|
|
172
|
+
} catch (e) {
|
|
173
|
+
console.error(e);
|
|
174
|
+
} finally {
|
|
175
|
+
loading.value = false;
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
const showAdContentHandle = async (id) => {
|
|
179
|
+
await Dialoger.dataFormDialog({
|
|
180
|
+
dataForm: adContentForm,
|
|
181
|
+
recId: id
|
|
182
|
+
});
|
|
183
|
+
};
|
|
184
|
+
const showAdDefineHandle = async () => {
|
|
185
|
+
var _a;
|
|
186
|
+
await Dialoger.dataFormDialog({
|
|
187
|
+
title: "设置素材显示尺寸",
|
|
188
|
+
dataForm: adDefineForm,
|
|
189
|
+
recId: (_a = partAdBanner.value) == null ? void 0 : _a.id
|
|
190
|
+
});
|
|
191
|
+
adDefineForm.getColumn("contents").visible = false;
|
|
192
|
+
adDefineForm.getColumn("key").visible = false;
|
|
193
|
+
adDefineForm.getColumn("desc").visible = false;
|
|
194
|
+
};
|
|
195
|
+
const deleteAdContentHandle = async (id) => {
|
|
196
|
+
try {
|
|
197
|
+
const isConfirm = await Dialoger.confirm({ title: "确定删除?", message: "确定删除当前轮播吗?", type: "warning" });
|
|
198
|
+
if (!isConfirm) return;
|
|
199
|
+
const result = await adContentRequest.delete(id);
|
|
200
|
+
if (result.data.code != 200) {
|
|
201
|
+
Messager.error({ message: result.data.msg || "删除失败!" });
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
;
|
|
205
|
+
loadPartAdDefineData();
|
|
206
|
+
} catch (error) {
|
|
207
|
+
Messager.error({ message: "删除失败!" });
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
onMounted(() => {
|
|
211
|
+
watch(() => props.adkey, () => loadPartAdDefineData(), { immediate: true });
|
|
212
|
+
});
|
|
213
|
+
return (_ctx, _cache) => {
|
|
214
|
+
var _a;
|
|
215
|
+
const _component_el_image = resolveComponent("el-image");
|
|
216
|
+
const _component_el_button = resolveComponent("el-button");
|
|
217
|
+
const _component_el_carousel_item = resolveComponent("el-carousel-item");
|
|
218
|
+
const _component_el_carousel = resolveComponent("el-carousel");
|
|
219
|
+
const _component_el_text = resolveComponent("el-text");
|
|
220
|
+
const _component_el_empty = resolveComponent("el-empty");
|
|
221
|
+
const _directive_loading = resolveDirective("loading");
|
|
222
|
+
return withDirectives((openBlock(), createElementBlock("div", null, [
|
|
223
|
+
partAdBanner.value && ((_a = partAdBanner.value.contents) == null ? void 0 : _a.length) ? (openBlock(), createBlock(_component_el_carousel, {
|
|
224
|
+
key: 0,
|
|
225
|
+
autoplay: false,
|
|
226
|
+
height: partAdBannerHeight.value,
|
|
227
|
+
arrow: "always",
|
|
228
|
+
ref: "carouselRef"
|
|
229
|
+
}, {
|
|
230
|
+
default: withCtx(() => [
|
|
231
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(partAdBanner.value.contents, (item) => {
|
|
232
|
+
return openBlock(), createBlock(_component_el_carousel_item, {
|
|
233
|
+
key: item.id
|
|
234
|
+
}, {
|
|
235
|
+
default: withCtx(() => [
|
|
236
|
+
createElementVNode("div", _hoisted_1, [
|
|
237
|
+
createElementVNode("div", _hoisted_2, [
|
|
238
|
+
item.type == 1 ? (openBlock(), createBlock(_component_el_image, {
|
|
239
|
+
key: 0,
|
|
240
|
+
class: "mk-cms-part-banner__list_content_img",
|
|
241
|
+
src: item.path,
|
|
242
|
+
fit: "cover",
|
|
243
|
+
tyle: "width: 100%;height: 100%;"
|
|
244
|
+
}, {
|
|
245
|
+
default: withCtx(() => [
|
|
246
|
+
_hoisted_3
|
|
247
|
+
]),
|
|
248
|
+
_: 2
|
|
249
|
+
}, 1032, ["src"])) : createCommentVNode("", true),
|
|
250
|
+
item.type == 2 ? (openBlock(), createElementBlock("video", {
|
|
251
|
+
key: 1,
|
|
252
|
+
class: "video",
|
|
253
|
+
src: item.path,
|
|
254
|
+
style: { "width": "100%", "height": "100%" },
|
|
255
|
+
controls: ""
|
|
256
|
+
}, null, 8, _hoisted_4)) : createCommentVNode("", true)
|
|
257
|
+
]),
|
|
258
|
+
createElementVNode("div", _hoisted_5, [
|
|
259
|
+
createElementVNode("div", _hoisted_6, toDisplayString(item.title), 1),
|
|
260
|
+
createElementVNode("div", null, toDisplayString(item.desc), 1)
|
|
261
|
+
]),
|
|
262
|
+
createElementVNode("div", _hoisted_7, [
|
|
263
|
+
createVNode(_component_el_button, {
|
|
264
|
+
type: "primary",
|
|
265
|
+
style: { "margin-left": "10px" },
|
|
266
|
+
icon: unref(EditPen),
|
|
267
|
+
onClick: ($event) => showAdContentHandle(item.id)
|
|
268
|
+
}, {
|
|
269
|
+
default: withCtx(() => [
|
|
270
|
+
createTextVNode(" 编辑当前轮播素材 ")
|
|
271
|
+
]),
|
|
272
|
+
_: 2
|
|
273
|
+
}, 1032, ["icon", "onClick"]),
|
|
274
|
+
createVNode(_component_el_button, {
|
|
275
|
+
type: "primary",
|
|
276
|
+
style: { "margin-left": "10px" },
|
|
277
|
+
icon: unref(Plus),
|
|
278
|
+
onClick: _cache[0] || (_cache[0] = ($event) => showAdContentHandle(null))
|
|
279
|
+
}, {
|
|
280
|
+
default: withCtx(() => [
|
|
281
|
+
createTextVNode(" 添加新轮播素材 ")
|
|
282
|
+
]),
|
|
283
|
+
_: 1
|
|
284
|
+
}, 8, ["icon"]),
|
|
285
|
+
createVNode(_component_el_button, {
|
|
286
|
+
type: "primary",
|
|
287
|
+
style: { "margin-left": "10px" },
|
|
288
|
+
icon: unref(EditPen),
|
|
289
|
+
onClick: _cache[1] || (_cache[1] = ($event) => showAdDefineHandle())
|
|
290
|
+
}, {
|
|
291
|
+
default: withCtx(() => [
|
|
292
|
+
createTextVNode(" 设置素材显示尺寸 ")
|
|
293
|
+
]),
|
|
294
|
+
_: 1
|
|
295
|
+
}, 8, ["icon"]),
|
|
296
|
+
createVNode(_component_el_button, {
|
|
297
|
+
type: "danger",
|
|
298
|
+
style: { "margin-left": "10px" },
|
|
299
|
+
icon: unref(Delete),
|
|
300
|
+
onClick: ($event) => deleteAdContentHandle(item.id)
|
|
301
|
+
}, {
|
|
302
|
+
default: withCtx(() => [
|
|
303
|
+
createTextVNode(" 删除当前素材 ")
|
|
304
|
+
]),
|
|
305
|
+
_: 2
|
|
306
|
+
}, 1032, ["icon", "onClick"])
|
|
307
|
+
])
|
|
308
|
+
])
|
|
309
|
+
]),
|
|
310
|
+
_: 2
|
|
311
|
+
}, 1024);
|
|
312
|
+
}), 128))
|
|
313
|
+
]),
|
|
314
|
+
_: 1
|
|
315
|
+
}, 8, ["height"])) : (openBlock(), createBlock(_component_el_empty, {
|
|
316
|
+
key: 1,
|
|
317
|
+
"image-size": 80,
|
|
318
|
+
style: normalizeStyle({ height: partAdBannerHeight.value })
|
|
319
|
+
}, {
|
|
320
|
+
description: withCtx(() => [
|
|
321
|
+
createVNode(_component_el_text, null, {
|
|
322
|
+
default: withCtx(() => [
|
|
323
|
+
createTextVNode("暂无" + toDisplayString(__props.title) + "轮播素材数据", 1)
|
|
324
|
+
]),
|
|
325
|
+
_: 1
|
|
326
|
+
}),
|
|
327
|
+
createVNode(_component_el_button, {
|
|
328
|
+
type: "primary",
|
|
329
|
+
text: "",
|
|
330
|
+
style: { "margin-left": "10px" },
|
|
331
|
+
icon: unref(Plus),
|
|
332
|
+
onClick: _cache[2] || (_cache[2] = ($event) => showAdDefineHandle())
|
|
333
|
+
}, {
|
|
334
|
+
default: withCtx(() => [
|
|
335
|
+
createTextVNode(" 设置素材显示尺寸 ")
|
|
336
|
+
]),
|
|
337
|
+
_: 1
|
|
338
|
+
}, 8, ["icon"]),
|
|
339
|
+
createVNode(_component_el_button, {
|
|
340
|
+
type: "primary",
|
|
341
|
+
text: "",
|
|
342
|
+
style: { "margin-left": "10px" },
|
|
343
|
+
icon: unref(Plus),
|
|
344
|
+
onClick: _cache[3] || (_cache[3] = ($event) => showAdContentHandle(null))
|
|
345
|
+
}, {
|
|
346
|
+
default: withCtx(() => [
|
|
347
|
+
createTextVNode(" 添加 ")
|
|
348
|
+
]),
|
|
349
|
+
_: 1
|
|
350
|
+
}, 8, ["icon"])
|
|
351
|
+
]),
|
|
352
|
+
_: 1
|
|
353
|
+
}, 8, ["style"]))
|
|
354
|
+
])), [
|
|
355
|
+
[_directive_loading, loading.value]
|
|
356
|
+
]);
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
});
|
|
360
|
+
export {
|
|
361
|
+
_sfc_main as default
|
|
362
|
+
};
|
|
363
|
+
//# sourceMappingURL=part-banner.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"part-banner.vue.js","sources":["../../../../../../../src/modules/cms/pages/cms-contents/components/part-banner.vue"],"sourcesContent":["<template>\r\n <div v-loading=\"loading\">\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 <el-button type=\"danger\" style=\"margin-left: 10px;\" :icon=\"Delete\" @click=\"deleteAdContentHandle(item.id)\">\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: partAdBannerHeight }\">\r\n <template #description>\r\n <el-text>暂无{{ title }}轮播素材数据</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 } from \"vue\";\r\nimport { DataViewRequest, DVQueryable, Where } from \"@maketribe/request\";\r\nimport { Dialoger, Messager } from \"@maketribe/dm\";\r\nimport { CmsAdContentsForm, CmsAdDefinesForm } from \"../../../dataviews\";\r\nimport { EditPen, Plus, Delete } from \"@element-plus/icons-vue\"\r\n\r\nconst props = defineProps({ adkey: { type: String }, title: { type: String }, deviceValue: { type: String, default: \"\" }, viewWidth: { type: Number } })\r\n\r\n// 广告定义数据表\r\nconst adRequest = new DataViewRequest({ name: \"ad-define\", moduleName: \"cms\" });\r\nconst adContentRequest = new DataViewRequest({ name: \"ad-content\", moduleName: \"cms\" });\r\n// cms 配置\r\nconst cmsSettings = useCmsSettings();\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\nconst warpRef = ref<any | null>(null);\r\n// 计算广告的高度\r\nconst partAdBannerHeight = computed(() => {\r\n\r\n // 全局Banner尺寸信息\r\n const sizes = cmsSettings.part.bannerImageSize.split(\"*\") as Array<any>;\r\n\r\n // 宽高比\r\n let widthHeightRatio = 0;\r\n\r\n //设定的比例\r\n if (!!partAdBanner.value?.width && !!partAdBanner.value?.height) {\r\n widthHeightRatio = partAdBanner.value.width / partAdBanner.value.height;\r\n }\r\n else if (sizes.length && sizes[0] && sizes[1]) {\r\n widthHeightRatio = sizes[0] / sizes[1]\r\n }\r\n\r\n if (widthHeightRatio && props.viewWidth) { return (props.viewWidth / widthHeightRatio) + \"px\" }\r\n\r\n return \"240px\"\r\n\r\n})\r\n\r\n// 内容添加之前监测广告是否存在不存在先添加广告\r\nadContentForm.beforeSubmitEvent.on(async ({ data }) => {\r\n\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: props.adkey, 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 = props.adkey\r\n data.desc = `${props.title}的Banner`\r\n }\r\n return data\r\n})\r\n\r\n// 添加完成则刷新\r\nadContentForm.submittedEvent.on(() => loadPartAdDefineData())\r\n// 添加完成则刷新\r\nadDefineForm.submittedEvent.on(() => loadPartAdDefineData())\r\n\r\n//加载栏目广告\r\nconst loadPartAdDefineData = async () => {\r\n\r\n try {\r\n\r\n loading.value = true;\r\n const where = new Where()\r\n where.addCondition(\"key\", \"=\", props.adkey);\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\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\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\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\nconst deleteAdContentHandle = async (id: any) => {\r\n try {\r\n const isConfirm = await Dialoger.confirm({ title: \"确定删除?\", message: \"确定删除当前轮播吗?\", type: \"warning\" })\r\n if (!isConfirm) return;\r\n const result = await adContentRequest.delete(id)\r\n if (result.data.code != 200) {\r\n Messager.error({ message: result.data.msg || \"删除失败!\" })\r\n return\r\n };\r\n loadPartAdDefineData()\r\n } catch (error) {\r\n Messager.error({ message: \"删除失败!\" })\r\n }\r\n}\r\n\r\n// 组件挂载的时候\r\nonMounted(() => {\r\n watch(() => props.adkey, () => loadPartAdDefineData(), { immediate: true })\r\n})\r\n\r\n</script>\r\n<style lang='scss'></style>\r\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"part-banner.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -52,6 +52,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
52
52
|
const _component_el_radio = resolveComponent("el-radio");
|
|
53
53
|
const _component_el_radio_group = resolveComponent("el-radio-group");
|
|
54
54
|
const _component_el_form_item = resolveComponent("el-form-item");
|
|
55
|
+
const _component_el_checkbox = resolveComponent("el-checkbox");
|
|
56
|
+
const _component_el_checkbox_group = resolveComponent("el-checkbox-group");
|
|
55
57
|
const _component_el_form = resolveComponent("el-form");
|
|
56
58
|
const _component_el_tab_pane = resolveComponent("el-tab-pane");
|
|
57
59
|
const _component_el_divider = resolveComponent("el-divider");
|
|
@@ -100,7 +102,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
100
102
|
createElementVNode("div", _hoisted_3, [
|
|
101
103
|
createVNode(_component_el_tabs, {
|
|
102
104
|
modelValue: activeTabName.value,
|
|
103
|
-
"onUpdate:modelValue": _cache[
|
|
105
|
+
"onUpdate:modelValue": _cache[16] || (_cache[16] = ($event) => activeTabName.value = $event),
|
|
104
106
|
class: "mk-cms-contents__body__right"
|
|
105
107
|
}, {
|
|
106
108
|
default: withCtx(() => [
|
|
@@ -138,6 +140,27 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
138
140
|
}, 8, ["modelValue"])
|
|
139
141
|
]),
|
|
140
142
|
_: 1
|
|
143
|
+
}),
|
|
144
|
+
createVNode(_component_el_form_item, { label: "兼容设备 : " }, {
|
|
145
|
+
default: withCtx(() => [
|
|
146
|
+
createVNode(_component_el_checkbox_group, {
|
|
147
|
+
modelValue: unref(CmsSettings).devices,
|
|
148
|
+
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => unref(CmsSettings).devices = $event)
|
|
149
|
+
}, {
|
|
150
|
+
default: withCtx(() => [
|
|
151
|
+
createVNode(_component_el_checkbox, {
|
|
152
|
+
label: "PC端",
|
|
153
|
+
value: "pc"
|
|
154
|
+
}),
|
|
155
|
+
createVNode(_component_el_checkbox, {
|
|
156
|
+
label: "移动端",
|
|
157
|
+
value: "mobile"
|
|
158
|
+
})
|
|
159
|
+
]),
|
|
160
|
+
_: 1
|
|
161
|
+
}, 8, ["modelValue"])
|
|
162
|
+
]),
|
|
163
|
+
_: 1
|
|
141
164
|
})
|
|
142
165
|
]),
|
|
143
166
|
_: 1
|
|
@@ -165,7 +188,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
165
188
|
default: withCtx(() => [
|
|
166
189
|
createVNode(_component_el_switch, {
|
|
167
190
|
modelValue: unref(CmsSettings).part.openBanner,
|
|
168
|
-
"onUpdate:modelValue": _cache[
|
|
191
|
+
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => unref(CmsSettings).part.openBanner = $event)
|
|
169
192
|
}, null, 8, ["modelValue"])
|
|
170
193
|
]),
|
|
171
194
|
_: 1
|
|
@@ -177,7 +200,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
177
200
|
default: withCtx(() => [
|
|
178
201
|
createVNode(_component_el_input, {
|
|
179
202
|
modelValue: unref(CmsSettings).part.bannerImageSize,
|
|
180
|
-
"onUpdate:modelValue": _cache[
|
|
203
|
+
"onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => unref(CmsSettings).part.bannerImageSize = $event),
|
|
181
204
|
placeholder: "",
|
|
182
205
|
style: { "max-width": "200px" }
|
|
183
206
|
}, null, 8, ["modelValue"])
|
|
@@ -197,7 +220,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
197
220
|
default: withCtx(() => [
|
|
198
221
|
createVNode(_component_el_input, {
|
|
199
222
|
modelValue: unref(CmsSettings).part.doc.css,
|
|
200
|
-
"onUpdate:modelValue": _cache[
|
|
223
|
+
"onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => unref(CmsSettings).part.doc.css = $event),
|
|
201
224
|
autosize: { minRows: 2, maxRows: 4 },
|
|
202
225
|
type: "textarea",
|
|
203
226
|
placeholder: "多个css url , 号分割,逗号必须是英文逗号"
|
|
@@ -209,7 +232,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
209
232
|
default: withCtx(() => [
|
|
210
233
|
createVNode(_component_el_input, {
|
|
211
234
|
modelValue: unref(CmsSettings).part.doc.js,
|
|
212
|
-
"onUpdate:modelValue": _cache[
|
|
235
|
+
"onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => unref(CmsSettings).part.doc.js = $event),
|
|
213
236
|
autosize: { minRows: 2, maxRows: 4 },
|
|
214
237
|
type: "textarea",
|
|
215
238
|
placeholder: "多个 js url , 号分割,逗号必须是英文逗号"
|
|
@@ -237,7 +260,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
237
260
|
default: withCtx(() => [
|
|
238
261
|
createVNode(_component_el_switch, {
|
|
239
262
|
modelValue: unref(CmsSettings).content.useTop,
|
|
240
|
-
"onUpdate:modelValue": _cache[
|
|
263
|
+
"onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => unref(CmsSettings).content.useTop = $event)
|
|
241
264
|
}, null, 8, ["modelValue"])
|
|
242
265
|
]),
|
|
243
266
|
_: 1
|
|
@@ -246,7 +269,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
246
269
|
default: withCtx(() => [
|
|
247
270
|
createVNode(_component_el_switch, {
|
|
248
271
|
modelValue: unref(CmsSettings).content.useNew,
|
|
249
|
-
"onUpdate:modelValue": _cache[
|
|
272
|
+
"onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => unref(CmsSettings).content.useNew = $event)
|
|
250
273
|
}, null, 8, ["modelValue"])
|
|
251
274
|
]),
|
|
252
275
|
_: 1
|
|
@@ -255,7 +278,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
255
278
|
default: withCtx(() => [
|
|
256
279
|
createVNode(_component_el_switch, {
|
|
257
280
|
modelValue: unref(CmsSettings).content.useHotRecommend,
|
|
258
|
-
"onUpdate:modelValue": _cache[
|
|
281
|
+
"onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => unref(CmsSettings).content.useHotRecommend = $event)
|
|
259
282
|
}, null, 8, ["modelValue"])
|
|
260
283
|
]),
|
|
261
284
|
_: 1
|
|
@@ -264,7 +287,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
264
287
|
default: withCtx(() => [
|
|
265
288
|
createVNode(_component_el_switch, {
|
|
266
289
|
modelValue: unref(CmsSettings).content.usePartRecommend,
|
|
267
|
-
"onUpdate:modelValue": _cache[
|
|
290
|
+
"onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => unref(CmsSettings).content.usePartRecommend = $event)
|
|
268
291
|
}, null, 8, ["modelValue"])
|
|
269
292
|
]),
|
|
270
293
|
_: 1
|
|
@@ -273,7 +296,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
273
296
|
default: withCtx(() => [
|
|
274
297
|
createVNode(_component_el_switch, {
|
|
275
298
|
modelValue: unref(CmsSettings).content.useTags,
|
|
276
|
-
"onUpdate:modelValue": _cache[
|
|
299
|
+
"onUpdate:modelValue": _cache[10] || (_cache[10] = ($event) => unref(CmsSettings).content.useTags = $event)
|
|
277
300
|
}, null, 8, ["modelValue"])
|
|
278
301
|
]),
|
|
279
302
|
_: 1
|
|
@@ -282,7 +305,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
282
305
|
default: withCtx(() => [
|
|
283
306
|
createVNode(_component_el_switch, {
|
|
284
307
|
modelValue: unref(CmsSettings).content.useAtlas,
|
|
285
|
-
"onUpdate:modelValue": _cache[
|
|
308
|
+
"onUpdate:modelValue": _cache[11] || (_cache[11] = ($event) => unref(CmsSettings).content.useAtlas = $event)
|
|
286
309
|
}, null, 8, ["modelValue"])
|
|
287
310
|
]),
|
|
288
311
|
_: 1
|
|
@@ -291,7 +314,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
291
314
|
default: withCtx(() => [
|
|
292
315
|
createVNode(_component_el_input, {
|
|
293
316
|
modelValue: unref(CmsSettings).content.coverImageSize,
|
|
294
|
-
"onUpdate:modelValue": _cache[
|
|
317
|
+
"onUpdate:modelValue": _cache[12] || (_cache[12] = ($event) => unref(CmsSettings).content.coverImageSize = $event),
|
|
295
318
|
placeholder: "",
|
|
296
319
|
style: { "max-width": "200px" }
|
|
297
320
|
}, null, 8, ["modelValue"])
|
|
@@ -302,7 +325,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
302
325
|
default: withCtx(() => [
|
|
303
326
|
createVNode(_component_el_input, {
|
|
304
327
|
modelValue: unref(CmsSettings).content.bannerImageSize,
|
|
305
|
-
"onUpdate:modelValue": _cache[
|
|
328
|
+
"onUpdate:modelValue": _cache[13] || (_cache[13] = ($event) => unref(CmsSettings).content.bannerImageSize = $event),
|
|
306
329
|
placeholder: "",
|
|
307
330
|
style: { "max-width": "200px" }
|
|
308
331
|
}, null, 8, ["modelValue"])
|
|
@@ -328,7 +351,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
328
351
|
default: withCtx(() => [
|
|
329
352
|
createVNode(_component_el_input, {
|
|
330
353
|
modelValue: unref(CmsSettings).content.doc.css,
|
|
331
|
-
"onUpdate:modelValue": _cache[
|
|
354
|
+
"onUpdate:modelValue": _cache[14] || (_cache[14] = ($event) => unref(CmsSettings).content.doc.css = $event),
|
|
332
355
|
autosize: { minRows: 2, maxRows: 4 },
|
|
333
356
|
type: "textarea",
|
|
334
357
|
placeholder: "多个css url , 号分割,逗号必须是英文逗号"
|
|
@@ -340,7 +363,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
340
363
|
default: withCtx(() => [
|
|
341
364
|
createVNode(_component_el_input, {
|
|
342
365
|
modelValue: unref(CmsSettings).content.doc.js,
|
|
343
|
-
"onUpdate:modelValue": _cache[
|
|
366
|
+
"onUpdate:modelValue": _cache[15] || (_cache[15] = ($event) => unref(CmsSettings).content.doc.js = $event),
|
|
344
367
|
autosize: { minRows: 2, maxRows: 4 },
|
|
345
368
|
type: "textarea",
|
|
346
369
|
placeholder: "多个 js url , 号分割,逗号必须是英文逗号"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue2.js","sources":["../../../../../../src/modules/cms/pages/cms-settigns/index.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-appsettings__warp\" v-loading=\"loading\" style=\"\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n\">\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=\"Operation\" style=\"margin-right: 5px\" />\r\n CMS应用设置\r\n </h3>\r\n </template>\r\n <template #extra>\r\n <div>\r\n <el-button-group>\r\n <el-button type=\"primary\" size=\"large\" text :disabled=\"!changed\" @click=\"saveHandle\">\r\n <MKSvgIcon iconClass=\"save\" />\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-appsettings__form_warp\" style=\"\r\n background: #fff;\r\n flex: 1;\r\n height: 100%;\r\n padding: 10px;\r\n margin: 10px;\r\n overflow: auto;\r\n \">\r\n <el-tabs v-model=\"activeTabName\" class=\"mk-cms-contents__body__right\">\r\n <el-tab-pane label=\"发布设置\" name=\"publish\">\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\">\r\n <el-form-item label=\"发布模式 : \">\r\n <el-radio-group v-model=\"CmsSettings.publish.mode\">\r\n <el-radio value=\"static\">静态发布</el-radio>\r\n <el-radio value=\"dynamic\">动态发布</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n </el-form>\r\n <!-- <el-form :model=\"CmsSettings\" label-width=\"auto\" label-position=\"top\">\r\n <el-form-item label=\"文档模块 : \">\r\n <DocModuleEditForm :modules=\"CmsSettings.docModules\"></DocModuleEditForm>\r\n </el-form-item>\r\n </el-form> -->\r\n </el-tab-pane>\r\n <el-tab-pane label=\"栏目设置\" name=\"part\">\r\n <el-divider content-position=\"left\">栏目内容文档编辑器扩展设置</el-divider>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\">\r\n <el-form-item label=\"开启栏目轮播图 : \">\r\n <el-switch v-model=\"CmsSettings.part.openBanner\" />\r\n </el-form-item>\r\n\r\n <el-form-item v-if=\"CmsSettings.part.openBanner\" label=\"轮播图尺寸 : \">\r\n <el-input v-model=\"CmsSettings.part.bannerImageSize\" placeholder=\"\" style=\"max-width: 200px;\" />\r\n </el-form-item>\r\n </el-form>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\" label-position=\"top\">\r\n \r\n <el-form-item label=\"引入的Css : \">\r\n <el-input v-model=\"CmsSettings.part.doc.css\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个css url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n \r\n <el-form-item label=\"引入的Js : \">\r\n <el-input v-model=\"CmsSettings.part.doc.js\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个 js url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n </el-form>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"内容设置\" name=\"content\">\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\">\r\n <el-form-item label=\"启用内容置顶 : \">\r\n <el-switch v-model=\"CmsSettings.content.useTop\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用最新内容 : \">\r\n <el-switch v-model=\"CmsSettings.content.useNew\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用热门推荐 : \">\r\n <el-switch v-model=\"CmsSettings.content.useHotRecommend\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用栏目推荐 : \">\r\n <el-switch v-model=\"CmsSettings.content.usePartRecommend\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用内容标签 : \">\r\n <el-switch v-model=\"CmsSettings.content.useTags\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用内容资源库 : \">\r\n <el-switch v-model=\"CmsSettings.content.useAtlas\" />\r\n </el-form-item>\r\n <el-form-item label=\"内容封面图尺寸 : \">\r\n <el-input v-model=\"CmsSettings.content.coverImageSize\" placeholder=\"\" style=\"max-width: 200px;\" />\r\n </el-form-item>\r\n <el-form-item label=\"内容Banner图尺寸 : \">\r\n <el-input v-model=\"CmsSettings.content.bannerImageSize\" placeholder=\"\" style=\"max-width: 200px;\" />\r\n </el-form-item>\r\n </el-form>\r\n \r\n <el-divider content-position=\"left\">内容文档编辑器扩展设置</el-divider>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\" label-position=\"top\">\r\n <el-form-item label=\"引入的Css : \">\r\n <el-input v-model=\"CmsSettings.content.doc.css\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个css url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n \r\n <el-form-item label=\"引入的Js : \">\r\n <el-input v-model=\"CmsSettings.content.doc.js\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个 js url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n </el-form>\r\n </el-tab-pane>\r\n </el-tabs>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref,onMounted,watch, } from \"vue\";\r\nimport { useCmsSettings,CmsSettingsKEY,type CmsSettingsType } from \"../../cms-settings\"\r\nimport { MsConfigTable } from \"../../../ms/dataviews/ms-config/\"\r\nimport DocModuleEditForm from \"./DocModuleEditForm.vue\"\r\n\r\n// cms 配置\r\nconst CmsSettings = useCmsSettings(true); \r\n\r\n// 激活的tab\r\nconst activeTabName = ref(\"publish\");\r\n// 激活的tab\r\nconst loading = ref(false);\r\nconst changed = ref(false);\r\n\r\n\r\nconst saveHandle = async ()=>{\r\n\r\n if(changed.value){\r\n loading.value = true;\r\n await MsConfigTable.setConfigValue(CmsSettingsKEY,JSON.stringify(CmsSettings))\r\n loading.value = false;\r\n changed.value = false;\r\n }\r\n\r\n}\r\n\r\nonMounted(async ()=>{\r\n\r\n // 初始化\r\n const data = await MsConfigTable.getConfigValue<CmsSettingsType>(CmsSettingsKEY);\r\n if(data){ Object.assign(CmsSettings,data) }\r\n setTimeout(() => {\r\n loading.value = false;\r\n }, 500);\r\n // 数据改变\r\n watch(CmsSettings,()=>{\r\n changed.value = true;\r\n },{ deep:true })\r\n})\r\n</script>\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.vue2.js","sources":["../../../../../../src/modules/cms/pages/cms-settigns/index.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-appsettings__warp\" v-loading=\"loading\" style=\"\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n\">\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=\"Operation\" style=\"margin-right: 5px\" />\r\n CMS应用设置\r\n </h3>\r\n </template>\r\n <template #extra>\r\n <div>\r\n <el-button-group>\r\n <el-button type=\"primary\" size=\"large\" text :disabled=\"!changed\" @click=\"saveHandle\">\r\n <MKSvgIcon iconClass=\"save\" />\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-appsettings__form_warp\" style=\"\r\n background: #fff;\r\n flex: 1;\r\n height: 100%;\r\n padding: 10px;\r\n margin: 10px;\r\n overflow: auto;\r\n \">\r\n <el-tabs v-model=\"activeTabName\" class=\"mk-cms-contents__body__right\">\r\n <el-tab-pane label=\"发布设置\" name=\"publish\">\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\">\r\n <el-form-item label=\"发布模式 : \">\r\n <el-radio-group v-model=\"CmsSettings.publish.mode\">\r\n <el-radio value=\"static\">静态发布</el-radio>\r\n <el-radio value=\"dynamic\">动态发布</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item label=\"兼容设备 : \">\r\n <el-checkbox-group v-model=\"CmsSettings.devices\">\r\n <el-checkbox label=\"PC端\" value=\"pc\" />\r\n <el-checkbox label=\"移动端\" value=\"mobile\" />\r\n </el-checkbox-group>\r\n </el-form-item>\r\n </el-form>\r\n <!-- <el-form :model=\"CmsSettings\" label-width=\"auto\" label-position=\"top\">\r\n <el-form-item label=\"文档模块 : \">\r\n <DocModuleEditForm :modules=\"CmsSettings.docModules\"></DocModuleEditForm>\r\n </el-form-item>\r\n </el-form> -->\r\n </el-tab-pane>\r\n <el-tab-pane label=\"栏目设置\" name=\"part\">\r\n <el-divider content-position=\"left\">栏目内容文档编辑器扩展设置</el-divider>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\">\r\n <el-form-item label=\"开启栏目轮播图 : \">\r\n <el-switch v-model=\"CmsSettings.part.openBanner\" />\r\n </el-form-item>\r\n\r\n <el-form-item v-if=\"CmsSettings.part.openBanner\" label=\"轮播图尺寸 : \">\r\n <el-input v-model=\"CmsSettings.part.bannerImageSize\" placeholder=\"\" style=\"max-width: 200px;\" />\r\n </el-form-item>\r\n </el-form>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\" label-position=\"top\">\r\n \r\n <el-form-item label=\"引入的Css : \">\r\n <el-input v-model=\"CmsSettings.part.doc.css\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个css url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n \r\n <el-form-item label=\"引入的Js : \">\r\n <el-input v-model=\"CmsSettings.part.doc.js\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个 js url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n </el-form>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"内容设置\" name=\"content\">\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\">\r\n <el-form-item label=\"启用内容置顶 : \">\r\n <el-switch v-model=\"CmsSettings.content.useTop\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用最新内容 : \">\r\n <el-switch v-model=\"CmsSettings.content.useNew\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用热门推荐 : \">\r\n <el-switch v-model=\"CmsSettings.content.useHotRecommend\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用栏目推荐 : \">\r\n <el-switch v-model=\"CmsSettings.content.usePartRecommend\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用内容标签 : \">\r\n <el-switch v-model=\"CmsSettings.content.useTags\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用内容资源库 : \">\r\n <el-switch v-model=\"CmsSettings.content.useAtlas\" />\r\n </el-form-item>\r\n <el-form-item label=\"内容封面图尺寸 : \">\r\n <el-input v-model=\"CmsSettings.content.coverImageSize\" placeholder=\"\" style=\"max-width: 200px;\" />\r\n </el-form-item>\r\n <el-form-item label=\"内容Banner图尺寸 : \">\r\n <el-input v-model=\"CmsSettings.content.bannerImageSize\" placeholder=\"\" style=\"max-width: 200px;\" />\r\n </el-form-item>\r\n </el-form>\r\n \r\n <el-divider content-position=\"left\">内容文档编辑器扩展设置</el-divider>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\" label-position=\"top\">\r\n <el-form-item label=\"引入的Css : \">\r\n <el-input v-model=\"CmsSettings.content.doc.css\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个css url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n \r\n <el-form-item label=\"引入的Js : \">\r\n <el-input v-model=\"CmsSettings.content.doc.js\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个 js url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n </el-form>\r\n </el-tab-pane>\r\n </el-tabs>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref,onMounted,watch, } from \"vue\";\r\nimport { useCmsSettings,CmsSettingsKEY,type CmsSettingsType } from \"../../cms-settings\"\r\nimport { MsConfigTable } from \"../../../ms/dataviews/ms-config/\"\r\nimport DocModuleEditForm from \"./DocModuleEditForm.vue\"\r\n\r\n// cms 配置\r\nconst CmsSettings = useCmsSettings(true); \r\n\r\n// 激活的tab\r\nconst activeTabName = ref(\"publish\");\r\n// 激活的tab\r\nconst loading = ref(false);\r\nconst changed = ref(false);\r\n\r\n\r\nconst saveHandle = async ()=>{\r\n\r\n if(changed.value){\r\n loading.value = true;\r\n await MsConfigTable.setConfigValue(CmsSettingsKEY,JSON.stringify(CmsSettings))\r\n loading.value = false;\r\n changed.value = false;\r\n }\r\n\r\n}\r\n\r\nonMounted(async ()=>{\r\n\r\n // 初始化\r\n const data = await MsConfigTable.getConfigValue<CmsSettingsType>(CmsSettingsKEY);\r\n if(data){ Object.assign(CmsSettings,data) }\r\n setTimeout(() => {\r\n loading.value = false;\r\n }, 500);\r\n // 数据改变\r\n watch(CmsSettings,()=>{\r\n changed.value = true;\r\n },{ deep:true })\r\n})\r\n</script>\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA+IM,UAAA,cAAc,eAAe,IAAI;AAGjC,UAAA,gBAAgB,IAAI,SAAS;AAE7B,UAAA,UAAU,IAAI,KAAK;AACnB,UAAA,UAAU,IAAI,KAAK;AAGzB,UAAM,aAAa,YAAU;AAE3B,UAAG,QAAQ,OAAM;AACf,gBAAQ,QAAQ;AAChB,cAAM,cAAc,eAAe,gBAAe,KAAK,UAAU,WAAW,CAAC;AAC7E,gBAAQ,QAAQ;AAChB,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IAAA;AAIF,cAAU,YAAU;AAGlB,YAAM,OAAQ,MAAM,cAAc,eAAgC,cAAc;AAChF,UAAG,MAAK;AAAS,eAAA,OAAO,aAAY,IAAI;AAAA,MAAE;AAC1C,iBAAW,MAAM;AACf,gBAAQ,QAAQ;AAAA,SACf,GAAG;AAEN,YAAM,aAAY,MAAI;AACpB,gBAAQ,QAAQ;AAAA,MAAA,GAChB,EAAE,MAAK,KAAA,CAAM;AAAA,IAAA,CAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|