@maketribe/ms-app 3.2.26 → 3.2.27

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 (194) hide show
  1. package/dist/cjs/components/basic/doc-editor/core/element-block.js +18 -13
  2. package/dist/cjs/components/basic/doc-editor/core/element-block.js.map +1 -1
  3. package/dist/cjs/components/basic/doc-editor/core/utils.js +20 -13
  4. package/dist/cjs/components/basic/doc-editor/core/utils.js.map +1 -1
  5. package/dist/cjs/components/basic/doc-editor/editor.vue.js.map +1 -1
  6. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/GridNode.js.map +1 -1
  7. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js.map +1 -1
  8. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js +32 -1
  9. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js.map +1 -1
  10. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js +13 -0
  11. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js.map +1 -1
  12. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js +11 -0
  13. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js.map +1 -1
  14. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/index.vue.js +87 -13
  15. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/index.vue.js.map +1 -1
  16. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/utils.js +114 -7
  17. package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/utils.js.map +1 -1
  18. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +51 -37
  19. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js.map +1 -1
  20. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js +3 -5
  21. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js.map +1 -1
  22. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/utils.js +32 -54
  23. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/utils.js.map +1 -1
  24. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/composables.js +14 -1
  25. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/composables.js.map +1 -1
  26. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js +40 -3
  27. package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js.map +1 -1
  28. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/index.vue.js.map +1 -1
  29. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js +16 -16
  30. package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js.map +1 -1
  31. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js +8 -7
  32. package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js.map +1 -1
  33. package/dist/cjs/components/basic/doc-editor/plugins/nodes.js.map +1 -1
  34. package/dist/cjs/components/basic/doc-editor/themes/doc-editor-edit.css.js +1 -1
  35. package/dist/cjs/components/basic/doc-editor/themes/doc-editor-edit.css.js.map +1 -1
  36. package/dist/cjs/components/basic/dynamic-form-panel/DynamicFormPanel.js +40 -18
  37. package/dist/cjs/components/basic/dynamic-form-panel/DynamicFormPanel.js.map +1 -1
  38. package/dist/cjs/components/basic/dynamic-form-panel/dialog.js +2 -2
  39. package/dist/cjs/components/basic/dynamic-form-panel/dialog.js.map +1 -1
  40. package/dist/cjs/components/basic/image-cropper/image-cropper-api.js.map +1 -1
  41. package/dist/cjs/components/basic/visual-page-editor/content-editable.vue.js +13 -9
  42. package/dist/cjs/components/basic/visual-page-editor/content-editable.vue.js.map +1 -1
  43. package/dist/cjs/components/basic/visual-page-editor/core/BlockRender.js +38 -0
  44. package/dist/cjs/components/basic/visual-page-editor/core/BlockRender.js.map +1 -0
  45. package/dist/cjs/components/basic/visual-page-editor/core/Dialog.js +76 -0
  46. package/dist/cjs/components/basic/visual-page-editor/core/Dialog.js.map +1 -0
  47. package/dist/cjs/components/basic/visual-page-editor/core/VisvalPageEditor.js +72 -1
  48. package/dist/cjs/components/basic/visual-page-editor/core/VisvalPageEditor.js.map +1 -1
  49. package/dist/cjs/components/basic/visual-page-editor/core/index.js +21 -13
  50. package/dist/cjs/components/basic/visual-page-editor/core/index.js.map +1 -1
  51. package/dist/cjs/components/basic/visual-page-editor/editor.vue.js +2 -29
  52. package/dist/cjs/components/basic/visual-page-editor/editor.vue.js.map +1 -1
  53. package/dist/cjs/components/basic/visual-page-editor/index.js +1 -1
  54. package/dist/cjs/components/basic/visual-page-editor/index.js.map +1 -1
  55. package/dist/cjs/components/basic/visual-page-editor/modules/BaseImageModule.js +10 -0
  56. package/dist/cjs/components/basic/visual-page-editor/modules/BaseImageModule.js.map +1 -0
  57. package/dist/cjs/components/basic/visual-page-editor/toolbar.vue.js +1 -1
  58. package/dist/cjs/components/basic/visual-page-editor/toolbar.vue.js.map +1 -1
  59. package/dist/cjs/modules/cms/cms-settings.js +4 -0
  60. package/dist/cjs/modules/cms/cms-settings.js.map +1 -1
  61. package/dist/cjs/modules/cms/pages/cms-ad/index.vue2.js +0 -1
  62. package/dist/cjs/modules/cms/pages/cms-ad/index.vue2.js.map +1 -1
  63. package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +3 -1
  64. package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js.map +1 -1
  65. package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +27 -4
  66. package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
  67. package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js +312 -0
  68. package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js.map +1 -0
  69. package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js +4 -0
  70. package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js.map +1 -0
  71. package/dist/cjs/modules/cms/pages/cms-settigns/index.vue2.js +18 -0
  72. package/dist/cjs/modules/cms/pages/cms-settigns/index.vue2.js.map +1 -1
  73. package/dist/cjs/modules/ms/components/image-select/image-select-api.js +14 -2
  74. package/dist/cjs/modules/ms/components/image-select/image-select-api.js.map +1 -1
  75. package/dist/cjs/modules/ms/image-upload-context/index.js +1 -1
  76. package/dist/cjs/modules/ms/image-upload-context/index.js.map +1 -1
  77. package/dist/esm/components/basic/doc-editor/core/element-block.js +18 -13
  78. package/dist/esm/components/basic/doc-editor/core/element-block.js.map +1 -1
  79. package/dist/esm/components/basic/doc-editor/core/utils.js +20 -13
  80. package/dist/esm/components/basic/doc-editor/core/utils.js.map +1 -1
  81. package/dist/esm/components/basic/doc-editor/editor.vue.js.map +1 -1
  82. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/GridNode.js.map +1 -1
  83. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js.map +1 -1
  84. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js +32 -1
  85. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js.map +1 -1
  86. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js +13 -0
  87. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js.map +1 -1
  88. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js +11 -0
  89. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js.map +1 -1
  90. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/index.vue.js +87 -13
  91. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/index.vue.js.map +1 -1
  92. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/utils.js +114 -7
  93. package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/utils.js.map +1 -1
  94. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +52 -38
  95. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js.map +1 -1
  96. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js +3 -5
  97. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js.map +1 -1
  98. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/utils.js +33 -55
  99. package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/utils.js.map +1 -1
  100. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/composables.js +14 -1
  101. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/composables.js.map +1 -1
  102. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js +40 -3
  103. package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js.map +1 -1
  104. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/index.vue.js.map +1 -1
  105. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js +16 -16
  106. package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js.map +1 -1
  107. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js +11 -10
  108. package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js.map +1 -1
  109. package/dist/esm/components/basic/doc-editor/plugins/nodes.js.map +1 -1
  110. package/dist/esm/components/basic/doc-editor/themes/doc-editor-edit.css.js +1 -1
  111. package/dist/esm/components/basic/doc-editor/themes/doc-editor-edit.css.js.map +1 -1
  112. package/dist/esm/components/basic/dynamic-form-panel/DynamicFormPanel.js +40 -18
  113. package/dist/esm/components/basic/dynamic-form-panel/DynamicFormPanel.js.map +1 -1
  114. package/dist/esm/components/basic/dynamic-form-panel/dialog.js +2 -2
  115. package/dist/esm/components/basic/dynamic-form-panel/dialog.js.map +1 -1
  116. package/dist/esm/components/basic/image-cropper/image-cropper-api.js.map +1 -1
  117. package/dist/esm/components/basic/visual-page-editor/content-editable.vue.js +14 -10
  118. package/dist/esm/components/basic/visual-page-editor/content-editable.vue.js.map +1 -1
  119. package/dist/esm/components/basic/visual-page-editor/core/BlockRender.js +39 -0
  120. package/dist/esm/components/basic/visual-page-editor/core/BlockRender.js.map +1 -0
  121. package/dist/esm/components/basic/visual-page-editor/core/Dialog.js +76 -0
  122. package/dist/esm/components/basic/visual-page-editor/core/Dialog.js.map +1 -0
  123. package/dist/esm/components/basic/visual-page-editor/core/VisvalPageEditor.js +73 -2
  124. package/dist/esm/components/basic/visual-page-editor/core/VisvalPageEditor.js.map +1 -1
  125. package/dist/esm/components/basic/visual-page-editor/core/index.js +21 -13
  126. package/dist/esm/components/basic/visual-page-editor/core/index.js.map +1 -1
  127. package/dist/esm/components/basic/visual-page-editor/editor.vue.js +4 -31
  128. package/dist/esm/components/basic/visual-page-editor/editor.vue.js.map +1 -1
  129. package/dist/esm/components/basic/visual-page-editor/index.js +1 -1
  130. package/dist/esm/components/basic/visual-page-editor/index.js.map +1 -1
  131. package/dist/esm/components/basic/visual-page-editor/modules/BaseImageModule.js +9 -0
  132. package/dist/esm/components/basic/visual-page-editor/modules/BaseImageModule.js.map +1 -0
  133. package/dist/esm/components/basic/visual-page-editor/toolbar.vue.js +2 -2
  134. package/dist/esm/components/basic/visual-page-editor/toolbar.vue.js.map +1 -1
  135. package/dist/esm/modules/cms/cms-settings.js +4 -0
  136. package/dist/esm/modules/cms/cms-settings.js.map +1 -1
  137. package/dist/esm/modules/cms/pages/cms-ad/index.vue2.js +0 -1
  138. package/dist/esm/modules/cms/pages/cms-ad/index.vue2.js.map +1 -1
  139. package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +3 -1
  140. package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js.map +1 -1
  141. package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +27 -4
  142. package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
  143. package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js +313 -0
  144. package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js.map +1 -0
  145. package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js +5 -0
  146. package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js.map +1 -0
  147. package/dist/esm/modules/cms/pages/cms-settigns/index.vue2.js +18 -0
  148. package/dist/esm/modules/cms/pages/cms-settigns/index.vue2.js.map +1 -1
  149. package/dist/esm/modules/ms/components/image-select/image-select-api.js +14 -2
  150. package/dist/esm/modules/ms/components/image-select/image-select-api.js.map +1 -1
  151. package/dist/esm/modules/ms/image-upload-context/index.js +1 -1
  152. package/dist/esm/modules/ms/image-upload-context/index.js.map +1 -1
  153. package/dist/style/components/basic/visual-page-editor/index.css +1 -1
  154. package/dist/style/components/index.css +1 -1
  155. package/dist/style/index.css +1 -1
  156. package/dist/style/src/components/basic/visual-page-editor/index.scss +4 -2
  157. package/dist/types/components/basic/doc-editor/core/element-block.d.ts +1 -0
  158. package/dist/types/components/basic/doc-editor/core/utils.d.ts +2 -2
  159. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.d.ts +1 -1
  160. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.d.ts +16 -2
  161. package/dist/types/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.d.ts +7 -1
  162. package/dist/types/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.d.ts +25 -12
  163. package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/composables.d.ts +5 -0
  164. package/dist/types/components/basic/doc-editor/utils/getSelectedNode.d.ts +1 -1
  165. package/dist/types/components/basic/dynamic-form-panel/type.d.ts +1 -0
  166. package/dist/types/components/basic/visual-page-editor/core/Dialog.d.ts +15 -0
  167. package/dist/types/components/basic/visual-page-editor/core/ModuleDefine.d.ts +12 -0
  168. package/dist/types/components/basic/visual-page-editor/core/VisvalPageEditor.d.ts +45 -1
  169. package/dist/types/components/basic/visual-page-editor/core/index.d.ts +2 -10
  170. package/dist/types/components/basic/visual-page-editor/editor.vue.d.ts +1 -0
  171. package/dist/types/components/basic/visual-page-editor/index.d.ts +2 -1
  172. package/dist/types/components/basic/visual-page-editor/modules/index.d.ts +1 -0
  173. package/dist/types/modules/cms/cms-settings.d.ts +4 -28
  174. package/dist/types/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.d.ts +45 -0
  175. package/dist/types/modules/ms/components/image-select/image-select-api.d.ts +1 -1
  176. package/dist/types/modules/ms/image-upload-context/index.d.ts +1 -1
  177. package/package.json +7 -6
  178. package/dist/cjs/components/basic/visual-page-editor/components/BlockRender.js +0 -31
  179. package/dist/cjs/components/basic/visual-page-editor/components/BlockRender.js.map +0 -1
  180. package/dist/cjs/components/basic/visual-page-editor/utils/Dialog.js +0 -111
  181. package/dist/cjs/components/basic/visual-page-editor/utils/Dialog.js.map +0 -1
  182. package/dist/cjs/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js +0 -29
  183. package/dist/cjs/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js.map +0 -1
  184. package/dist/esm/components/basic/visual-page-editor/components/BlockRender.js +0 -32
  185. package/dist/esm/components/basic/visual-page-editor/components/BlockRender.js.map +0 -1
  186. package/dist/esm/components/basic/visual-page-editor/utils/Dialog.js +0 -111
  187. package/dist/esm/components/basic/visual-page-editor/utils/Dialog.js.map +0 -1
  188. package/dist/esm/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js +0 -28
  189. package/dist/esm/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js.map +0 -1
  190. package/dist/types/components/basic/visual-page-editor/core/RenderComponent.d.ts +0 -16
  191. package/dist/types/components/basic/visual-page-editor/utils/Dialog.d.ts +0 -15
  192. package/dist/types/components/basic/visual-page-editor/visual-components/index.d.ts +0 -1
  193. /package/dist/types/components/basic/visual-page-editor/{components → core}/BlockRender.d.ts +0 -0
  194. /package/dist/types/components/basic/visual-page-editor/{visual-components/ImageRenderComponent.d.ts → modules/BaseImageModule.d.ts} +0 -0
@@ -7,8 +7,68 @@ class VisualPageEditor {
7
7
  constructor() {
8
8
  __publicField(this, "_version");
9
9
  __publicField(this, "_content");
10
+ __publicField(this, "_modules");
10
11
  this._version = "1.0.0";
11
12
  this._content = null;
13
+ this._modules = [];
14
+ }
15
+ /**
16
+ * 模块列表
17
+ */
18
+ get baseModuleList() {
19
+ return this._modules.filter((itme) => itme.group == "base");
20
+ }
21
+ get businessModuleList() {
22
+ return this._modules.filter((itme) => itme.group == "business");
23
+ }
24
+ get customModuleList() {
25
+ return this._modules.filter((itme) => itme.group == "custom");
26
+ }
27
+ /**
28
+ * 注册基础模块
29
+ * @param name
30
+ * @param title
31
+ * @param component
32
+ * @param options
33
+ */
34
+ registerBaseModule(name, title, component, options) {
35
+ if (this._modules.find((m) => m.name == name)) {
36
+ throw new Error(`重复的模块【${title}】`);
37
+ }
38
+ this._modules.push({ name, title, group: "base", component, options });
39
+ }
40
+ /**
41
+ * 注册业务模块
42
+ * @param name
43
+ * @param title
44
+ * @param component
45
+ * @param options
46
+ */
47
+ registerBusinessModule(name, title, component, options) {
48
+ if (this._modules.find((m) => m.name == name)) {
49
+ throw new Error(`重复的模块【${title}】`);
50
+ }
51
+ this._modules.push({ name, title, group: "business", component, options });
52
+ }
53
+ /**
54
+ * 注册自定义模块
55
+ * @param name
56
+ * @param title
57
+ * @param component
58
+ * @param options
59
+ */
60
+ registerCustomModule(name, title, component, options) {
61
+ if (this._modules.find((m) => m.name == name)) {
62
+ throw new Error(`重复的模块【${title}】`);
63
+ }
64
+ this._modules.push({ name, title, group: "custom", component, options });
65
+ }
66
+ /**
67
+ * 查找
68
+ * @param name
69
+ */
70
+ findModule(name) {
71
+ return this._modules.find((m) => m.name == name);
12
72
  }
13
73
  /**
14
74
  * 内容大小
@@ -41,7 +101,7 @@ class VisualPageEditor {
41
101
  * @param content
42
102
  */
43
103
  setContent(content) {
44
- this._content = vue.shallowReactive(content);
104
+ this._content = vue.reactive(content);
45
105
  }
46
106
  /**
47
107
  * 获取内容
@@ -51,6 +111,17 @@ class VisualPageEditor {
51
111
  var _a;
52
112
  return (_a = this._content) == null ? void 0 : _a.contents[index];
53
113
  }
114
+ /**
115
+ * 获取内容
116
+ * @returns
117
+ */
118
+ edit(index, data) {
119
+ var _a;
120
+ if ((_a = this._content) == null ? void 0 : _a.contents[index]) {
121
+ this._content.contents[index].componentProps = data;
122
+ console.log(this._content);
123
+ }
124
+ }
54
125
  /**
55
126
  * 获取内容
56
127
  * @returns
@@ -1 +1 @@
1
- {"version":3,"file":"VisvalPageEditor.js","sources":["../../../../../../src/components/basic/visual-page-editor/core/VisvalPageEditor.ts"],"sourcesContent":["import { type ContentConfigType,type ContentBlockType } from \"./ContentConfig\"\r\n\r\nimport { shallowReactive } from \"vue\"\r\n\r\n\r\n/**\r\n * 页面编辑器\r\n */\r\nexport default class VisualPageEditor{\r\n\r\n _version:string\r\n _content:ContentConfigType|null\r\n\r\n constructor(){\r\n this._version = \"1.0.0\"\r\n this._content = null;\r\n }\r\n\r\n /**\r\n * 内容大小\r\n * @returns \r\n */\r\n size(){\r\n return this._content?.contents.length as number;\r\n }\r\n\r\n /**\r\n * 删除\r\n * @param index \r\n */\r\n remove(index:number){\r\n this._content?.contents.splice(index,1)\r\n }\r\n\r\n /**\r\n * 交换\r\n * @param index \r\n * @param exchangeIndex \r\n */\r\n exchange(index:number,exchangeIndex:number){\r\n const item = this._content?.contents.splice(index,1)\r\n this._content?.contents.splice(exchangeIndex,0,item![0])\r\n }\r\n\r\n /**\r\n * 设置内容\r\n * @param content \r\n */\r\n setContent(content:ContentConfigType){\r\n this._content = shallowReactive(content);\r\n }\r\n\r\n /**\r\n * 获取内容\r\n * @returns \r\n */\r\n get(index:any):ContentBlockType {\r\n return this._content?.contents[index] as ContentBlockType;\r\n }\r\n\r\n /**\r\n * 获取内容\r\n * @returns \r\n */\r\n getContent():ContentConfigType {\r\n return this._content || {version:this._version ,contents:[]}\r\n }\r\n\r\n}\r\n"],"names":["shallowReactive"],"mappings":";;;;;AAQA,MAAqB,iBAAgB;AAAA,EAKnC,cAAa;AAHb;AACA;AAGE,SAAK,WAAW;AAChB,SAAK,WAAW;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAM;;AACG,YAAA,UAAK,aAAL,mBAAe,SAAS;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,OAAa;;AAClB,eAAK,aAAL,mBAAe,SAAS,OAAO,OAAM;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,OAAa,eAAqB;;AACzC,UAAM,QAAO,UAAK,aAAL,mBAAe,SAAS,OAAO,OAAM;AAClD,eAAK,aAAL,mBAAe,SAAS,OAAO,eAAc,GAAE,KAAM,CAAC;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAW,SAA0B;AAC9B,SAAA,WAAWA,oBAAgB,OAAO;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,OAA4B;;AACvB,YAAA,UAAK,aAAL,mBAAe,SAAS;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAA+B;AACtB,WAAA,KAAK,YAAY,EAAC,SAAQ,KAAK,UAAU,UAAS,CAAA;EAC3D;AAEF;;"}
1
+ {"version":3,"file":"VisvalPageEditor.js","sources":["../../../../../../src/components/basic/visual-page-editor/core/VisvalPageEditor.ts"],"sourcesContent":["import { DynamicFormItemType } from \"../../dynamic-form-panel\"\r\nimport { type ContentConfigType,type ContentBlockType } from \"./ContentConfig\"\r\nimport { ModuleType } from \"./ModuleDefine\"\r\nimport { Component, VNode,reactive } from \"vue\"\r\n\r\n\r\n/**\r\n * 页面编辑器\r\n */\r\nexport default class VisualPageEditor{\r\n\r\n _version:string\r\n _content: ContentConfigType|null\r\n _modules:ModuleType[];\r\n\r\n constructor(){\r\n this._version = \"1.0.0\"\r\n this._content = null;\r\n this._modules = [];\r\n }\r\n\r\n /**\r\n * 模块列表\r\n */\r\n get baseModuleList(){\r\n return this._modules.filter(itme=>itme.group == \"base\");\r\n }\r\n get businessModuleList(){\r\n return this._modules.filter(itme=>itme.group == \"business\");\r\n }\r\n get customModuleList(){\r\n return this._modules.filter(itme=>itme.group == \"custom\");\r\n }\r\n /**\r\n * 注册基础模块\r\n * @param name \r\n * @param title \r\n * @param component \r\n * @param options \r\n */\r\n registerBaseModule(name : string, title : string, component: Component|((props:unknown)=>VNode), options:DynamicFormItemType[]){\r\n if(this._modules.find(m=>m.name == name)){\r\n throw new Error(`重复的模块【${title}】`);\r\n }\r\n this._modules.push({ name,title,group:\"base\",component,options });\r\n }\r\n\r\n /**\r\n * 注册业务模块\r\n * @param name \r\n * @param title \r\n * @param component \r\n * @param options \r\n */\r\n registerBusinessModule(name : string, title : string, component: Component|((props:unknown)=>VNode), options:DynamicFormItemType[]){\r\n if(this._modules.find(m=>m.name == name)){\r\n throw new Error(`重复的模块【${title}】`);\r\n }\r\n this._modules.push({ name,title,group:\"business\",component,options });\r\n }\r\n\r\n /**\r\n * 注册自定义模块\r\n * @param name \r\n * @param title \r\n * @param component \r\n * @param options \r\n */\r\n registerCustomModule(name : string, title : string, component: Component|((props:unknown)=>VNode), options:DynamicFormItemType[]){\r\n if(this._modules.find(m=>m.name == name)){\r\n throw new Error(`重复的模块【${title}】`);\r\n }\r\n this._modules.push({ name,title,group:\"custom\",component,options });\r\n }\r\n /**\r\n * 查找\r\n * @param name \r\n */\r\n findModule(name:string):ModuleType|null|undefined{\r\n return this._modules.find(m=>m.name == name)\r\n }\r\n\r\n /**\r\n * 内容大小\r\n * @returns \r\n */\r\n size(){\r\n return this._content?.contents.length as number;\r\n }\r\n\r\n /**\r\n * 删除\r\n * @param index \r\n */\r\n remove(index:number){\r\n this._content?.contents.splice(index,1)\r\n }\r\n\r\n /**\r\n * 交换\r\n * @param index \r\n * @param exchangeIndex \r\n */\r\n exchange(index:number,exchangeIndex:number){\r\n const item = this._content?.contents.splice(index,1)\r\n this._content?.contents.splice(exchangeIndex,0,item![0])\r\n }\r\n\r\n /**\r\n * 设置内容\r\n * @param content \r\n */\r\n setContent(content:ContentConfigType){\r\n this._content = reactive(content);\r\n }\r\n\r\n /**\r\n * 获取内容\r\n * @returns \r\n */\r\n get(index:number):ContentBlockType {\r\n return this._content?.contents[index] as ContentBlockType;\r\n }\r\n /**\r\n * 获取内容\r\n * @returns \r\n */\r\n edit(index:number,data:object) {\r\n if(this._content?.contents[index]){\r\n this._content.contents[index].componentProps = data;\r\n console.log(this._content);\r\n }\r\n }\r\n /**\r\n * 获取内容\r\n * @returns \r\n */\r\n getContent():ContentConfigType {\r\n return this._content || {version:this._version ,contents:[]}\r\n }\r\n\r\n}\r\n"],"names":["reactive"],"mappings":";;;;;AASA,MAAqB,iBAAgB;AAAA,EAMnC,cAAa;AAJb;AACA;AACA;AAGE,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,WAAW;EAClB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,iBAAgB;AAClB,WAAO,KAAK,SAAS,OAAO,CAAM,SAAA,KAAK,SAAS,MAAM;AAAA,EACxD;AAAA,EACA,IAAI,qBAAoB;AACtB,WAAO,KAAK,SAAS,OAAO,CAAM,SAAA,KAAK,SAAS,UAAU;AAAA,EAC5D;AAAA,EACA,IAAI,mBAAkB;AACpB,WAAO,KAAK,SAAS,OAAO,CAAM,SAAA,KAAK,SAAS,QAAQ;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,mBAAmB,MAAe,OAAgB,WAA+C,SAA8B;AAC7H,QAAG,KAAK,SAAS,KAAK,OAAG,EAAE,QAAQ,IAAI,GAAE;AACvC,YAAM,IAAI,MAAM,SAAS,KAAK,GAAG;AAAA,IACnC;AACK,SAAA,SAAS,KAAK,EAAE,MAAK,OAAM,OAAM,QAAO,WAAU,QAAA,CAAS;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,uBAAuB,MAAe,OAAgB,WAA+C,SAA8B;AACjI,QAAG,KAAK,SAAS,KAAK,OAAG,EAAE,QAAQ,IAAI,GAAE;AACvC,YAAM,IAAI,MAAM,SAAS,KAAK,GAAG;AAAA,IACnC;AACK,SAAA,SAAS,KAAK,EAAE,MAAK,OAAM,OAAM,YAAW,WAAU,QAAA,CAAS;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,qBAAqB,MAAe,OAAgB,WAA+C,SAA8B;AAC/H,QAAG,KAAK,SAAS,KAAK,OAAG,EAAE,QAAQ,IAAI,GAAE;AACvC,YAAM,IAAI,MAAM,SAAS,KAAK,GAAG;AAAA,IACnC;AACK,SAAA,SAAS,KAAK,EAAE,MAAK,OAAM,OAAM,UAAS,WAAU,QAAA,CAAS;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,MAAsC;AAC/C,WAAO,KAAK,SAAS,KAAK,CAAG,MAAA,EAAE,QAAQ,IAAI;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAM;;AACG,YAAA,UAAK,aAAL,mBAAe,SAAS;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,OAAa;;AAClB,eAAK,aAAL,mBAAe,SAAS,OAAO,OAAM;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,OAAa,eAAqB;;AACzC,UAAM,QAAO,UAAK,aAAL,mBAAe,SAAS,OAAO,OAAM;AAClD,eAAK,aAAL,mBAAe,SAAS,OAAO,eAAc,GAAE,KAAM,CAAC;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAW,SAA0B;AAC9B,SAAA,WAAWA,aAAS,OAAO;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,OAA+B;;AAC1B,YAAA,UAAK,aAAL,mBAAe,SAAS;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,KAAK,OAAa,MAAa;;AAC7B,SAAG,UAAK,aAAL,mBAAe,SAAS,QAAO;AAChC,WAAK,SAAS,SAAS,KAAK,EAAE,iBAAiB;AACvC,cAAA,IAAI,KAAK,QAAQ;AAAA,IAC3B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,aAA+B;AACtB,WAAA,KAAK,YAAY,EAAC,SAAQ,KAAK,UAAU,UAAS,CAAA;EAC3D;AAEF;;"}
@@ -2,21 +2,29 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const vue = require("vue");
4
4
  const VisvalPageEditor = require("./VisvalPageEditor.js");
5
- const RenderComponents = vue.shallowReactive([]);
5
+ require("@maketribe/dm");
6
+ require("element-plus");
7
+ require("@element-plus/icons-vue");
8
+ require("@maketribe/utils");
9
+ require("../../../../core/DataModelDefines.js");
10
+ require("vue-router");
11
+ require("@maketribe/request");
12
+ require("@maketribe/locale");
13
+ require("../../../../modules/ms/dataviews/ms-config/MsConfigTable.js");
14
+ require("lodash-es");
15
+ require("../../../../modules/ms/components/material-list/index.js");
16
+ require("../../image-cropper/index.js");
17
+ require("../../upload-file/upload-file.js");
18
+ require("../../upload-file/context/web-file-upload-context.js");
19
+ require("../../upload-file/context/web-file-upload-context-options.js");
20
+ require("../../upload-file/ui/upload-image/index.js");
21
+ require("../../upload-file/ui/upload-file/index.js");
22
+ require("../../upload-file/ui/upload-video/index.js");
23
+ require("../../upload-file/upload-file-options.js");
6
24
  const PageEditor = vue.shallowReactive(new VisvalPageEditor());
7
25
  const ViewDevice = vue.ref("pc");
8
- const RegisterRenderComponent = (options) => {
9
- RenderComponents.push(options);
10
- };
11
- const useRenderComponent = () => {
12
- return {
13
- RenderComponents,
14
- RegisterRenderComponent
15
- };
16
- };
17
- const usePageEditor = () => {
26
+ const useVisualPageEditor = () => {
18
27
  return { PageEditor, ViewDevice };
19
28
  };
20
- exports.usePageEditor = usePageEditor;
21
- exports.useRenderComponent = useRenderComponent;
29
+ exports.useVisualPageEditor = useVisualPageEditor;
22
30
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../src/components/basic/visual-page-editor/core/index.ts"],"sourcesContent":["\r\nimport { shallowReactive,ref } from \"vue\"\r\n\r\nimport { RenderComponentType } from \"./RenderComponent\"\r\n\r\nimport VisualPageEditor from \"./VisvalPageEditor\"\r\n\r\n\r\nconst RenderComponents = shallowReactive<RenderComponentType[]>([]);\r\n\r\n// 页面编辑器\r\nconst PageEditor = shallowReactive<VisualPageEditor>(new VisualPageEditor())\r\n// pc | mobile\r\nconst ViewDevice = ref('pc')\r\n/**\r\n * 注册渲染组件\r\n * @param options \r\n */\r\nconst RegisterRenderComponent = (options:RenderComponentType)=>{\r\n RenderComponents.push(options);\r\n}\r\n\r\n/**\r\n * \r\n * @returns \r\n */\r\nexport const useRenderComponent = ()=>{\r\n\r\n return {\r\n RenderComponents,\r\n RegisterRenderComponent\r\n }\r\n}\r\n\r\n\r\n/**\r\n * \r\n * @returns \r\n */\r\nexport const usePageEditor = ()=>{\r\n return { PageEditor, ViewDevice }\r\n}\r\n\r\n"],"names":["shallowReactive","VisualPageEditor","ref"],"mappings":";;;;AAQA,MAAM,mBAAmBA,IAAAA,gBAAuC,CAAA,CAAE;AAGlE,MAAM,aAAaA,IAAA,gBAAkC,IAAIC,iBAAA,CAAkB;AAE3E,MAAM,aAAaC,IAAAA,IAAI,IAAI;AAK3B,MAAM,0BAA0B,CAAC,YAA8B;AAC7D,mBAAiB,KAAK,OAAO;AAC/B;AAMO,MAAM,qBAAqB,MAAI;AAE7B,SAAA;AAAA,IACL;AAAA,IACA;AAAA,EAAA;AAEJ;AAOO,MAAM,gBAAgB,MAAI;AACxB,SAAA,EAAE,YAAY;AACvB;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../../src/components/basic/visual-page-editor/core/index.ts"],"sourcesContent":["\r\nimport { shallowReactive,ref } from \"vue\"\r\n\r\nimport VisualPageEditor from \"./VisvalPageEditor\"\r\n\r\n// 页面编辑器\r\nconst PageEditor = shallowReactive<VisualPageEditor>(new VisualPageEditor())\r\n\r\n// pc | mobile\r\nconst ViewDevice = ref('pc')\r\n\r\n\r\nexport * from \"./Dialog\"\r\n\r\n/**\r\n * \r\n * @returns \r\n */\r\nexport const useVisualPageEditor = ()=>{\r\n return { PageEditor, ViewDevice }\r\n}\r\n\r\n"],"names":["shallowReactive","VisualPageEditor","ref"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,aAAaA,IAAA,gBAAkC,IAAIC,iBAAA,CAAkB;AAG3E,MAAM,aAAaC,IAAAA,IAAI,IAAI;AASpB,MAAM,sBAAsB,MAAI;AAC9B,SAAA,EAAE,YAAY;AACvB;;"}
@@ -10,15 +10,12 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
10
10
  __name: "editor",
11
11
  props: { device: { type: String, default: "mobile" } },
12
12
  setup(__props) {
13
- const { ViewDevice } = index.usePageEditor();
13
+ const { ViewDevice } = index.useVisualPageEditor();
14
14
  const props = __props;
15
15
  vue.onMounted(() => {
16
16
  ViewDevice.value = props.device;
17
17
  });
18
18
  return (_ctx, _cache) => {
19
- const _component_el_collapse_item = vue.resolveComponent("el-collapse-item");
20
- const _component_el_collapse = vue.resolveComponent("el-collapse");
21
- const _component_el_card = vue.resolveComponent("el-card");
22
19
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
23
20
  vue.renderSlot(_ctx.$slots, "toolbar", {}, () => [
24
21
  vue.createVNode(toolbar_vue_vue_type_script_setup_true_lang)
@@ -26,31 +23,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
26
23
  vue.createElementVNode("div", _hoisted_2, [
27
24
  vue.createVNode(contentEditable_vue_vue_type_script_setup_true_lang),
28
25
  vue.createElementVNode("div", _hoisted_3, [
29
- vue.createVNode(_component_el_card, null, {
30
- header: vue.withCtx(() => [
31
- vue.createTextVNode(" 页面设置 ")
32
- ]),
33
- default: vue.withCtx(() => [
34
- vue.createVNode(_component_el_collapse, null, {
35
- default: vue.withCtx(() => [
36
- vue.createVNode(_component_el_collapse_item, {
37
- title: "基础组件",
38
- name: "base"
39
- }),
40
- vue.createVNode(_component_el_collapse_item, {
41
- title: "业务组件",
42
- name: "business"
43
- }),
44
- vue.createVNode(_component_el_collapse_item, {
45
- title: "自定义组件",
46
- name: "custom"
47
- })
48
- ]),
49
- _: 1
50
- })
51
- ]),
52
- _: 1
53
- })
26
+ vue.renderSlot(_ctx.$slots, "extra-panel")
54
27
  ])
55
28
  ])
56
29
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"editor.vue.js","sources":["../../../../../src/components/basic/visual-page-editor/editor.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-visual-page-editor\">\r\n <slot name=\"toolbar\">\r\n <Toolbar />\r\n </slot>\r\n <div class=\"mk-visual-page-editor__stage\"> \r\n <ContentEditable></ContentEditable> \r\n <div class=\"mk-visual-page-editor__stage_right\">\r\n <el-card>\r\n <template #header>\r\n 页面设置\r\n </template>\r\n <el-collapse>\r\n <el-collapse-item title=\"基础组件\" name=\"base\">\r\n \r\n </el-collapse-item>\r\n <el-collapse-item title=\"业务组件\" name=\"business\">\r\n \r\n </el-collapse-item>\r\n <el-collapse-item title=\"自定义组件\" name=\"custom\">\r\n \r\n </el-collapse-item>\r\n </el-collapse>\r\n </el-card>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { defineOptions,defineProps,defineEmits,computed,ref,onMounted,watch } from \"vue\"\r\nimport Toolbar from \"./toolbar.vue\"\r\nimport ContentEditable from \"./content-editable.vue\";\r\nimport { usePageEditor } from \"./core\"\r\nconst { ViewDevice } = usePageEditor();\r\n\r\n\r\nconst props = defineProps({ device:{type:String,default:\"mobile\"} })\r\n\r\n\r\nonMounted(()=>{\r\n\r\n ViewDevice.value = props.device;\r\n\r\n});\r\n</script>\r\n"],"names":["usePageEditor","onMounted"],"mappings":";;;;;;;;;;;;AAkCM,UAAA,EAAE,eAAeA,MAAAA;AAGvB,UAAM,QAAQ;AAGdC,QAAAA,UAAU,MAAI;AAEZ,iBAAW,QAAQ,MAAM;AAAA,IAAA,CAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"editor.vue.js","sources":["../../../../../src/components/basic/visual-page-editor/editor.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-visual-page-editor\">\r\n <slot name=\"toolbar\">\r\n <Toolbar />\r\n </slot>\r\n <div class=\"mk-visual-page-editor__stage\"> \r\n <ContentEditable></ContentEditable> \r\n <div class=\"mk-visual-page-editor__stage_right\">\r\n <slot name=\"extra-panel\"></slot>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { defineOptions,defineProps,defineEmits,computed,ref,onMounted,watch } from \"vue\"\r\nimport Toolbar from \"./toolbar.vue\"\r\nimport ContentEditable from \"./content-editable.vue\";\r\nimport { useVisualPageEditor } from \"./core\"\r\n\r\nconst { ViewDevice } = useVisualPageEditor();\r\n\r\nconst props = defineProps({ device:{type:String,default:\"mobile\"} })\r\n\r\n\r\nonMounted(()=>{\r\n\r\n ViewDevice.value = props.device;\r\n\r\n});\r\n</script>\r\n"],"names":["useVisualPageEditor","onMounted"],"mappings":";;;;;;;;;;;;AAoBM,UAAA,EAAE,eAAeA,MAAAA;AAEvB,UAAM,QAAQ;AAGdC,QAAAA,UAAU,MAAI;AAEZ,iBAAW,QAAQ,MAAM;AAAA,IAAA,CAE1B;;;;;;;;;;;;;;;;;"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const utils = require("@maketribe/utils");
4
4
  const editor_vue_vue_type_script_setup_true_lang = require("./editor.vue.js");
5
- require("./visual-components/ImageRenderComponent.js");
5
+ require("./modules/BaseImageModule.js");
6
6
  const MKVisualPageEditor = utils.withInstall(editor_vue_vue_type_script_setup_true_lang);
7
7
  exports.MKVisualPageEditor = MKVisualPageEditor;
8
8
  exports.default = MKVisualPageEditor;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/basic/visual-page-editor/index.ts"],"sourcesContent":["import { withInstall } from \"@maketribe/utils\";\r\nimport VisualPageEditor from \"./editor.vue\";\r\nimport \"./visual-components\"\r\n\r\nexport const MKVisualPageEditor = withInstall(VisualPageEditor);\r\n\r\nexport default MKVisualPageEditor;\r\n\r\n"],"names":["withInstall","VisualPageEditor"],"mappings":";;;;;AAIa,MAAA,qBAAqBA,kBAAYC,0CAAgB;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/basic/visual-page-editor/index.ts"],"sourcesContent":["import { withInstall } from \"@maketribe/utils\";\r\nimport VisualPageEditor from \"./editor.vue\";\r\nimport \"./modules\"\r\n\r\nexport const MKVisualPageEditor = withInstall(VisualPageEditor);\r\n\r\nexport default MKVisualPageEditor;\r\n\r\n"],"names":["withInstall","VisualPageEditor"],"mappings":";;;;;AAIa,MAAA,qBAAqBA,kBAAYC,0CAAgB;;;"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ const vue = require("vue");
3
+ const index = require("../core/index.js");
4
+ const { PageEditor } = index.useVisualPageEditor();
5
+ PageEditor.registerBaseModule("base-image", "图片", (data) => {
6
+ return vue.h("img", { src: data.src, style: { width: "100%" } });
7
+ }, [
8
+ { name: "src", title: "图片路径 :", component: "MKUploadImage", props: { cutSize: "818*597" }, defaultValue: "" }
9
+ ]);
10
+ //# sourceMappingURL=BaseImageModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseImageModule.js","sources":["../../../../../../src/components/basic/visual-page-editor/modules/BaseImageModule.ts"],"sourcesContent":["\r\n\r\nimport { h } from \"vue\"\r\nimport { useVisualPageEditor } from \"../core\"\r\n\r\nconst { PageEditor } = useVisualPageEditor();\r\n\r\n/**\r\n * 注册基础图片模块\r\n */\r\nPageEditor.registerBaseModule(\"base-image\", \"图片\", (data:any)=>{\r\n return h(\"img\", { src:data.src, style: { width: \"100%\" } })\r\n},[\r\n { name:\"src\", title:\"图片路径 :\", component:\"MKUploadImage\", props:{ cutSize:\"818*597\" }, defaultValue:\"\" }\r\n])\r\n"],"names":["useVisualPageEditor","h"],"mappings":";;;AAKA,MAAM,EAAE,WAAW,IAAIA,MAAAA;AAKvB,WAAW,mBAAmB,cAAc,MAAM,CAAC,SAAW;AACrD,SAAAC,MAAE,OAAO,EAAE,KAAI,KAAK,KAAK,OAAO,EAAE,OAAO,OAAO,EAAG,CAAA;AAC5D,GAAE;AAAA,EACA,EAAE,MAAK,OAAO,OAAM,UAAU,WAAU,iBAAkB,OAAM,EAAE,SAAQ,aAAa,cAAa,GAAG;AACzG,CAAC;"}
@@ -4,7 +4,7 @@ const index = require("./core/index.js");
4
4
  const _sfc_main = /* @__PURE__ */ vue.defineComponent({
5
5
  __name: "toolbar",
6
6
  setup(__props) {
7
- const { ViewDevice } = index.usePageEditor();
7
+ const { ViewDevice } = index.useVisualPageEditor();
8
8
  const toolbarRef = vue.ref(null);
9
9
  vue.onMounted(() => {
10
10
  });
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar.vue.js","sources":["../../../../../src/components/basic/visual-page-editor/toolbar.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { onMounted, onUnmounted, ref,defineProps } from 'vue'\r\nimport { usePageEditor } from \"./core\"\r\nconst { ViewDevice } = usePageEditor();\r\nconst toolbarRef = ref<HTMLDivElement | null>(null)\r\n\r\nonMounted(() => {\r\n \r\n})\r\n\r\n\r\n</script>\r\n\r\n<template>\r\n <div ref=\"toolbarRef\" class=\"mk-visual-page-editor-toolbar\">\r\n <el-button-group>\r\n <el-button text :class=\"`${ViewDevice=='pc' ? 'active' : ''}`\" @click=\"ViewDevice='pc'\">\r\n <MKSvgIcon iconClass=\"Platform\" /> \r\n </el-button>\r\n <el-button text :class=\"`${ViewDevice=='mobile' ? 'active' : ''}`\" @click=\"ViewDevice='mobile'\">\r\n <MKSvgIcon iconClass=\"Iphone\" /> \r\n </el-button>\r\n </el-button-group>\r\n </div>\r\n</template>\r\n"],"names":["usePageEditor","ref","onMounted"],"mappings":";;;;;;AAGM,UAAA,EAAE,eAAeA,MAAAA;AACjB,UAAA,aAAaC,QAA2B,IAAI;AAElDC,QAAAA,UAAU,MAAM;AAAA,IAAA,CAEf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"toolbar.vue.js","sources":["../../../../../src/components/basic/visual-page-editor/toolbar.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { onMounted, onUnmounted, ref,defineProps } from 'vue'\r\nimport { useVisualPageEditor } from \"./core\"\r\nconst { ViewDevice } = useVisualPageEditor();\r\nconst toolbarRef = ref<HTMLDivElement | null>(null)\r\n\r\nonMounted(() => {\r\n \r\n})\r\n\r\n\r\n</script>\r\n\r\n<template>\r\n <div ref=\"toolbarRef\" class=\"mk-visual-page-editor-toolbar\">\r\n <el-button-group>\r\n <el-button text :class=\"`${ViewDevice=='pc' ? 'active' : ''}`\" @click=\"ViewDevice='pc'\">\r\n <MKSvgIcon iconClass=\"Platform\" /> \r\n </el-button>\r\n <el-button text :class=\"`${ViewDevice=='mobile' ? 'active' : ''}`\" @click=\"ViewDevice='mobile'\">\r\n <MKSvgIcon iconClass=\"Iphone\" /> \r\n </el-button>\r\n </el-button-group>\r\n </div>\r\n</template>\r\n"],"names":["useVisualPageEditor","ref","onMounted"],"mappings":";;;;;;AAGM,UAAA,EAAE,eAAeA,MAAAA;AACjB,UAAA,aAAaC,QAA2B,IAAI;AAElDC,QAAAA,UAAU,MAAM;AAAA,IAAA,CAEf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -2,10 +2,12 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const vue = require("vue");
4
4
  const MsConfigTable = require("../ms/dataviews/ms-config/MsConfigTable.js");
5
+ const composables = require("../../components/basic/doc-editor/plugins/ModulePlugin/composables.js");
5
6
  const CmsSettings = vue.reactive({
6
7
  publish: {
7
8
  mode: "dynamic"
8
9
  },
10
+ docModules: [],
9
11
  part: {
10
12
  openBanner: true,
11
13
  bannerImageSize: "1440*560",
@@ -34,7 +36,9 @@ const useCmsSettings = function(load = false) {
34
36
  if (load) {
35
37
  MsConfigTable.MsConfigTable.getConfigValue(CmsSettingsKEY).then((data) => {
36
38
  if (data) {
39
+ CmsSettings.docModules.forEach((item) => composables.unRegisterDocModule(item.name));
37
40
  Object.assign(CmsSettings, data);
41
+ CmsSettings.docModules.forEach(composables.registerDocModule);
38
42
  }
39
43
  });
40
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cms-settings.js","sources":["../../../../src/modules/cms/cms-settings.ts"],"sourcesContent":["import { reactive } from \"vue\"\r\nimport { MsConfigTable } from \"../ms/dataviews/ms-config/MsConfigTable\"\r\n\r\n/**\r\n * 发布配置\r\n */\r\ntype PublishSettings = {\r\n // 发布模式 静态发布和动态发布\r\n mode:'static' | 'dynamic'\r\n}\r\n\r\n/**\r\n * cms 文档编辑设置\r\n */\r\ntype CmsDocSettings = {\r\n css:string,\r\n js:string\r\n}\r\n\r\n/**\r\n * 栏目配置\r\n */\r\ntype PartSettings = {\r\n doc:CmsDocSettings\r\n openBanner:boolean,\r\n bannerImageSize:string\r\n}\r\n\r\n/**\r\n * 内容设置\r\n */\r\ntype ContentSettings = {\r\n /**\r\n * 内容文档设置\r\n */\r\n doc:CmsDocSettings,\r\n /**\r\n * 开启文档置顶功能\r\n */\r\n useTop:boolean,\r\n /**\r\n * 开启最新文档功能\r\n */\r\n useNew:boolean,\r\n /**\r\n * 开启热点推荐功能\r\n */\r\n useHotRecommend:boolean,\r\n /**\r\n * 开启栏目推荐功能\r\n */\r\n usePartRecommend:boolean,\r\n /**\r\n * 开启内容标签\r\n */\r\n useTags:boolean,\r\n /**\r\n * 开启媒体库\r\n */\r\n useAtlas:boolean,\r\n /**\r\n * 封面图的尺寸 默认 300 * 300\r\n */\r\n coverImageSize:string,\r\n /**\r\n * banner图的尺寸 默认 1440 * 560\r\n */\r\n bannerImageSize:string\r\n}\r\n\r\n/**\r\n * cms 系统设置\r\n */\r\nexport type CmsSettings = {\r\n // 发布配置\r\n publish:PublishSettings,\r\n part:PartSettings,\r\n content:ContentSettings\r\n}\r\n\r\n/**\r\n * cms 配置\r\n */\r\nconst CmsSettings = reactive<CmsSettings>({\r\n publish:{\r\n mode:\"dynamic\"\r\n },\r\n part:{\r\n openBanner:true,\r\n bannerImageSize:\"1440*560\",\r\n doc:{\r\n js:\"\",\r\n css:\"\"\r\n }\r\n },\r\n content:{\r\n doc:{\r\n js:\"\",\r\n css:\"\"\r\n },\r\n useTop:true,\r\n useNew:true,\r\n useHotRecommend:false,\r\n usePartRecommend:false,\r\n useTags:false,\r\n useAtlas:false,\r\n coverImageSize:\"300*300\",\r\n bannerImageSize:\"1440*560\"\r\n }\r\n})\r\n\r\n/**\r\n * \r\n */\r\nexport const CmsSettingsKEY = \"cms:content:man:settings\";\r\n\r\n/**\r\n * 使用cms配置\r\n * @param load \r\n */\r\nexport const useCmsSettings = function(load:boolean|undefined = false){\r\n\r\n if(load){\r\n\r\n MsConfigTable.getConfigValue<CmsSettings>(CmsSettingsKEY).then(data=>{\r\n if(data){ Object.assign(CmsSettings,data) }\r\n });\r\n\r\n }\r\n\r\n return CmsSettings;\r\n}\r\n"],"names":["reactive","MsConfigTable"],"mappings":";;;;AAmFA,MAAM,cAAcA,IAAAA,SAAsB;AAAA,EACxC,SAAQ;AAAA,IACN,MAAK;AAAA,EACP;AAAA,EACA,MAAK;AAAA,IACH,YAAW;AAAA,IACX,iBAAgB;AAAA,IAChB,KAAI;AAAA,MACF,IAAG;AAAA,MACH,KAAI;AAAA,IACN;AAAA,EACF;AAAA,EACA,SAAQ;AAAA,IACN,KAAI;AAAA,MACF,IAAG;AAAA,MACH,KAAI;AAAA,IACN;AAAA,IACA,QAAO;AAAA,IACP,QAAO;AAAA,IACP,iBAAgB;AAAA,IAChB,kBAAiB;AAAA,IACjB,SAAQ;AAAA,IACR,UAAS;AAAA,IACT,gBAAe;AAAA,IACf,iBAAgB;AAAA,EAClB;AACF,CAAC;AAKM,MAAM,iBAAiB;AAMjB,MAAA,iBAAkB,SAAS,OAAyB,OAAM;AAErE,MAAG,MAAK;AAENC,kBAAAA,cAAc,eAA4B,cAAc,EAAE,KAAK,CAAM,SAAA;AACnE,UAAG,MAAK;AAAS,eAAA,OAAO,aAAY,IAAI;AAAA,MAAE;AAAA,IAAA,CAC3C;AAAA,EAEH;AAEO,SAAA;AACT;;;"}
1
+ {"version":3,"file":"cms-settings.js","sources":["../../../../src/modules/cms/cms-settings.ts"],"sourcesContent":["import { reactive } from \"vue\"\r\nimport { MsConfigTable } from \"../ms/dataviews/ms-config/MsConfigTable\"\r\nimport { ModuleType,registerDocModule,unRegisterDocModule } from \"../../components/basic/doc-editor/plugins/ModulePlugin/composables\"\r\n\r\n/**\r\n * 发布配置\r\n */\r\ntype PublishSettings = {\r\n // 发布模式 静态发布和动态发布\r\n mode:'static' | 'dynamic'\r\n}\r\n\r\n/**\r\n * cms 文档编辑设置\r\n */\r\ntype CmsDocSettings = {\r\n css:string,\r\n js:string\r\n}\r\n\r\n/**\r\n * 栏目配置\r\n */\r\ntype PartSettings = {\r\n doc:CmsDocSettings\r\n openBanner:boolean,\r\n bannerImageSize:string\r\n}\r\n\r\n/**\r\n * 内容设置\r\n */\r\ntype ContentSettings = {\r\n /**\r\n * 内容文档设置\r\n */\r\n doc:CmsDocSettings,\r\n /**\r\n * 开启文档置顶功能\r\n */\r\n useTop:boolean,\r\n /**\r\n * 开启最新文档功能\r\n */\r\n useNew:boolean,\r\n /**\r\n * 开启热点推荐功能\r\n */\r\n useHotRecommend:boolean,\r\n /**\r\n * 开启栏目推荐功能\r\n */\r\n usePartRecommend:boolean,\r\n /**\r\n * 开启内容标签\r\n */\r\n useTags:boolean,\r\n /**\r\n * 开启媒体库\r\n */\r\n useAtlas:boolean,\r\n /**\r\n * 封面图的尺寸 默认 300 * 300\r\n */\r\n coverImageSize:string,\r\n /**\r\n * banner图的尺寸 默认 1440 * 560\r\n */\r\n bannerImageSize:string\r\n}\r\n\r\n/**\r\n * cms 系统设置\r\n */\r\nexport type CmsSettingsType = {\r\n // 发布配置\r\n publish:PublishSettings,\r\n // 文档模块\r\n docModules:Array<ModuleType>,\r\n part:PartSettings,\r\n content:ContentSettings\r\n}\r\n\r\n/**\r\n * cms 配置\r\n */\r\nconst CmsSettings = reactive<CmsSettingsType>({\r\n publish:{\r\n mode:\"dynamic\"\r\n },\r\n docModules:[],\r\n part:{\r\n openBanner:true,\r\n bannerImageSize:\"1440*560\",\r\n doc:{\r\n js:\"\",\r\n css:\"\"\r\n }\r\n },\r\n content:{\r\n doc:{\r\n js:\"\",\r\n css:\"\"\r\n },\r\n useTop:true,\r\n useNew:true,\r\n useHotRecommend:false,\r\n usePartRecommend:false,\r\n useTags:false,\r\n useAtlas:false,\r\n coverImageSize:\"300*300\",\r\n bannerImageSize:\"1440*560\"\r\n }\r\n})\r\n\r\n/**\r\n * \r\n */\r\nexport const CmsSettingsKEY = \"cms:content:man:settings\";\r\n\r\n/**\r\n * 使用cms配置\r\n * @param load \r\n */\r\nexport const useCmsSettings = function(load:boolean|undefined = false):CmsSettingsType{\r\n\r\n if(load){\r\n \r\n MsConfigTable.getConfigValue<CmsSettingsType>(CmsSettingsKEY).then(data=>{\r\n if(data){ \r\n // 卸载掉老旧模块\r\n CmsSettings.docModules.forEach(item=> unRegisterDocModule(item.name) );\r\n Object.assign(CmsSettings,data);\r\n // 加载新内容安装新模块\r\n CmsSettings.docModules.forEach(registerDocModule);\r\n }\r\n });\r\n\r\n }\r\n\r\n return CmsSettings;\r\n}\r\n"],"names":["reactive","MsConfigTable","unRegisterDocModule","registerDocModule"],"mappings":";;;;;AAsFA,MAAM,cAAcA,IAAAA,SAA0B;AAAA,EAC5C,SAAQ;AAAA,IACN,MAAK;AAAA,EACP;AAAA,EACA,YAAW,CAAC;AAAA,EACZ,MAAK;AAAA,IACH,YAAW;AAAA,IACX,iBAAgB;AAAA,IAChB,KAAI;AAAA,MACF,IAAG;AAAA,MACH,KAAI;AAAA,IACN;AAAA,EACF;AAAA,EACA,SAAQ;AAAA,IACN,KAAI;AAAA,MACF,IAAG;AAAA,MACH,KAAI;AAAA,IACN;AAAA,IACA,QAAO;AAAA,IACP,QAAO;AAAA,IACP,iBAAgB;AAAA,IAChB,kBAAiB;AAAA,IACjB,SAAQ;AAAA,IACR,UAAS;AAAA,IACT,gBAAe;AAAA,IACf,iBAAgB;AAAA,EAClB;AACF,CAAC;AAKM,MAAM,iBAAiB;AAMjB,MAAA,iBAAkB,SAAS,OAAyB,OAAsB;AAErF,MAAG,MAAK;AAENC,kBAAAA,cAAc,eAAgC,cAAc,EAAE,KAAK,CAAM,SAAA;AACvE,UAAG,MAAK;AAEN,oBAAY,WAAW,QAAQ,CAAA,SAAOC,YAAAA,oBAAoB,KAAK,IAAI,CAAE;AAC9D,eAAA,OAAO,aAAY,IAAI;AAElB,oBAAA,WAAW,QAAQC,YAAAA,iBAAiB;AAAA,MAClD;AAAA,IAAA,CACD;AAAA,EAEH;AAEO,SAAA;AACT;;;"}
@@ -95,7 +95,6 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
95
95
  condition = new request.Group();
96
96
  }
97
97
  condition == null ? void 0 : condition.addCondition("key", "nolike", "part_");
98
- console.log(condition);
99
98
  adDefineList.value = (await adRequest.allList({
100
99
  data: {
101
100
  condition
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue2.js","sources":["../../../../../../src/modules/cms/pages/cms-ad/index.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-ad__warp\">\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=\"Guide\" style=\"margin-right: 5px;\" />\r\n 广告位管理\r\n </h3>\r\n </template>\r\n <template #content>\r\n <el-input style=\"width: 240px\" placeholder=\"请输入广告位描述\" v-model=\"adSearchWord\">\r\n <template #prefix>\r\n <MKSvgIcon iconClass=\"Search\" />\r\n </template>\r\n </el-input>\r\n </template>\r\n <template #extra>\r\n <div class=\"flex items-center\">\r\n <el-button type=\"primary\" size=\"large\" text @click=\"showAdDefineHandle\">\r\n 添加广告位\r\n <MKSvgIcon iconClass=\"Plus\" style=\"margin-left: 10px;\" />\r\n </el-button>\r\n </div>\r\n </template>\r\n </el-page-header>\r\n <div class=\"mk-cms-ad__body\" v-loading=\"loading\">\r\n <el-scrollbar class=\"mk-cms-ad__body__scrollbar\" v-if=\"adDefineList?.length\">\r\n <el-card v-for=\"item in adDefineList\" :key=\"item.id\" class=\"mk-cms-ad__card\">\r\n <template #header>\r\n <div class=\"mk-cms-ad__card__header clearfix\">\r\n <span>\r\n <MKSvgIcon iconClass=\"Guide\" style=\"margin-right: 5px;\" />\r\n {{ item.desc }}\r\n </span>\r\n <div class=\"btn-box\">\r\n <MKSvgIcon class=\"btn\" iconClass=\"Plus\" style=\"color: #409EFF;\"\r\n @click=\"showAdContentHandler(item, false)\" />\r\n <MKSvgIcon class=\"btn\" iconClass=\"EditPen\" style=\"color: #409EFF;\" @click=\"showAdDefineHandle(item)\" />\r\n <MKSvgIcon class=\"btn\" iconClass=\"Delete\" style=\"color: #F56C6C;\"\r\n @click=\"deleteHandler(adRequest, 'desc', item)\" v-if=\"item.contents.length == 0\" />\r\n </div>\r\n </div>\r\n </template>\r\n <el-empty v-if=\"item.contents.length <= 0\" description=\"暂无内容\" />\r\n <div class=\"mk-cms-ad__card__body\">\r\n <el-scrollbar class=\"mk-cms-ad__card__body__scrollbar\">\r\n <el-card class=\"mk-cms-ad__card__body__item\" v-for=\"adContent in item.contents\" :key=\"adContent.id\">\r\n <el-image class=\"images\" v-if=\"adContent.type == 1\" :src=\"adContent.path\"\r\n :preview-src-list=\"[adContent.path]\" fit=\"contain\">\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=\"adContent.type == 2\" :src=\"adContent.path\" style=\"width: 100%;height: 200px;\"\r\n controls></video>\r\n <div class=\"item-desc\">\r\n <div class=\"item-desc-left\">\r\n <div class=\"title ellipsis\">\r\n <MKSvgIcon class=\"icon\" v-if=\"adContent.type == 1\" iconClass=\"Picture\"></MKSvgIcon>\r\n <MKSvgIcon class=\"icon\" v-if=\"adContent.type == 2\" iconClass=\"VideoCamera\"></MKSvgIcon>\r\n <span :title=\"adContent.title + '(' + adContent.desc + ')'\">{{ adContent.title }}<span\r\n class=\"desc\">{{\r\n adContent.desc ? `(${adContent.desc})` : \"\" }}</span></span>\r\n </div>\r\n <div class=\"external-links ellipsis\">\r\n <MKSvgIcon class=\"icon\" v-if=\"adContent.link\" iconClass=\"Link\"></MKSvgIcon>\r\n <a :href=\"adContent.link\" target=\"_blank\" :title=\"adContent.link\">{{ adContent.link }}</a>\r\n </div>\r\n </div>\r\n <div class=\"item-desc-right\">\r\n <el-dropdown trigger=\"click\" :teleported=\"false\" class=\"item-desc-right__more\">\r\n <span class=\"el-dropdown-link\">\r\n 更多<el-icon class=\"el-icon--right\"><arrow-down /></el-icon>\r\n </span>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item class=\"edit-button\" :icon=\"EditPen\"\r\n @click=\"showAdContentHandler(adContent, true)\">编辑</el-dropdown-item>\r\n <el-dropdown-item class=\"delete-button\" :icon=\"Delete\"\r\n @click=\"deleteHandler(adContentRequest, 'title', adContent)\">删除</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </div>\r\n </div>\r\n </el-card>\r\n </el-scrollbar>\r\n </div>\r\n </el-card>\r\n </el-scrollbar>\r\n\r\n <el-empty v-if=\"adDefineList?.length <= 0\" description=“暂无内容” />\r\n </div>\r\n </div>\r\n\r\n</template>\r\n<script setup lang='ts'>\r\nimport { onMounted, reactive, ref, watch } from \"vue\";\r\nimport { DataViewRequest, Group } from \"@maketribe/request\";\r\nimport { DataForm, Dialoger, FormColumn, Messager } from \"@maketribe/dm\";\r\nimport { CmsAdContentsForm, CmsAdDefinesForm } from \"../../dataviews\";\r\nimport { EditPen, ArrowDown, Delete } from \"@element-plus/icons-vue\"\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//广告位搜索词\r\nconst adSearchWord = ref(\"\")\r\n// 广告定义列表\r\nconst adDefineList = ref([] as any[]);\r\nconst loading = ref(true);\r\n\r\n//更新列表数据\r\nconst setAdDefineList = async (condition?: Group) => {\r\n try {\r\n loading.value = true;\r\n\r\n if(!condition){ condition = new Group(); }\r\n\r\n // 栏目的广告不查\r\n condition?.addCondition(\"key\",\"nolike\",\"part_\")\r\n\r\n console.log(condition);\r\n\r\n adDefineList.value = (await adRequest.allList({\r\n data: {\r\n condition: condition\r\n }\r\n })).data.data;\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 adContentForm = reactive(new CmsAdContentsForm())\r\n//监听广告内容表单保存事件\r\nadContentForm.submittedEvent.on(() => {\r\n setAdDefineList()\r\n})\r\n// 添加广告内容\r\nconst showAdContentHandler = async (item: any, isEdit: boolean) => {\r\n await Dialoger.dataFormDialog({\r\n dataForm: adContentForm as CmsAdContentsForm,\r\n recId: isEdit ? item.id : undefined\r\n })\r\n if (!isEdit) {\r\n adContentForm.addRecord({ adDefineId: item.id })\r\n }\r\n}\r\n\r\n//广告定义表单\r\nconst adDefineForm = reactive(new (class extends CmsAdDefinesForm {\r\n //去掉广告内容\r\n protected async initialize() {\r\n await super.initialize();\r\n this.setColumns([\r\n new FormColumn({ name: \"key\", label: \"广告位KEY\", required: true }),\r\n new FormColumn({ name: \"desc\", label: \"广告位描述\", required: true }),\r\n ]);\r\n }\r\n}))\r\n//监听广告保存完成进行刷新\r\nadDefineForm.submittedEvent.on(() => {\r\n setAdDefineList()\r\n})\r\n//增加广告位\r\nconst showAdDefineHandle = (item: any) => {\r\n Dialoger.dataFormDialog({\r\n dataForm: adDefineForm as DataForm,\r\n recId: item?.id\r\n })\r\n}\r\n\r\n//删除\r\nconst deleteHandler = async (request: DataViewRequest, field: string, item: any) => {\r\n const isConfirm = await Dialoger.confirm({\r\n title: \"是否删除?\",\r\n message: `确定删除【${item[field]}】广告位?`,\r\n type: \"warning\"\r\n });\r\n if (!isConfirm) {\r\n return;\r\n }\r\n try {\r\n loading.value = true\r\n const result = await request.delete(item.id)\r\n if (result.data.code != 200) {\r\n Messager.error({ message: result.data.msg || \"删除失败\" })\r\n return;\r\n }\r\n await setAdDefineList()\r\n } catch (e: any) {\r\n Messager.error({ message: e })\r\n } finally {\r\n loading.value = false\r\n\r\n }\r\n}\r\n\r\n// 加载广告定义\r\nonMounted(async () => {\r\n await setAdDefineList();\r\n})\r\n\r\n//timer\r\nlet timer: any = null\r\n\r\n//监听adSearchWord变化进行搜索\r\nwatch(adSearchWord, async () => {\r\n\r\n if (!!timer) {\r\n clearTimeout(timer)\r\n }\r\n\r\n timer = setTimeout(async () => {\r\n const condition = new Group()\r\n condition.addCondition(\"desc\", \"like\", `%${adSearchWord.value}%`)\r\n await setAdDefineList(condition);\r\n }, 500)\r\n\r\n\r\n})\r\n\r\n</script>\r\n"],"names":["DataViewRequest","ref","Group","reactive","CmsAdContentsForm","Dialoger","CmsAdDefinesForm","FormColumn","request","Messager","onMounted","watch"],"mappings":"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"}
1
+ {"version":3,"file":"index.vue2.js","sources":["../../../../../../src/modules/cms/pages/cms-ad/index.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-ad__warp\">\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=\"Guide\" style=\"margin-right: 5px;\" />\r\n 广告位管理\r\n </h3>\r\n </template>\r\n <template #content>\r\n <el-input style=\"width: 240px\" placeholder=\"请输入广告位描述\" v-model=\"adSearchWord\">\r\n <template #prefix>\r\n <MKSvgIcon iconClass=\"Search\" />\r\n </template>\r\n </el-input>\r\n </template>\r\n <template #extra>\r\n <div class=\"flex items-center\">\r\n <el-button type=\"primary\" size=\"large\" text @click=\"showAdDefineHandle\">\r\n 添加广告位\r\n <MKSvgIcon iconClass=\"Plus\" style=\"margin-left: 10px;\" />\r\n </el-button>\r\n </div>\r\n </template>\r\n </el-page-header>\r\n <div class=\"mk-cms-ad__body\" v-loading=\"loading\">\r\n <el-scrollbar class=\"mk-cms-ad__body__scrollbar\" v-if=\"adDefineList?.length\">\r\n <el-card v-for=\"item in adDefineList\" :key=\"item.id\" class=\"mk-cms-ad__card\">\r\n <template #header>\r\n <div class=\"mk-cms-ad__card__header clearfix\">\r\n <span>\r\n <MKSvgIcon iconClass=\"Guide\" style=\"margin-right: 5px;\" />\r\n {{ item.desc }}\r\n </span>\r\n <div class=\"btn-box\">\r\n <MKSvgIcon class=\"btn\" iconClass=\"Plus\" style=\"color: #409EFF;\"\r\n @click=\"showAdContentHandler(item, false)\" />\r\n <MKSvgIcon class=\"btn\" iconClass=\"EditPen\" style=\"color: #409EFF;\" @click=\"showAdDefineHandle(item)\" />\r\n <MKSvgIcon class=\"btn\" iconClass=\"Delete\" style=\"color: #F56C6C;\"\r\n @click=\"deleteHandler(adRequest, 'desc', item)\" v-if=\"item.contents.length == 0\" />\r\n </div>\r\n </div>\r\n </template>\r\n <el-empty v-if=\"item.contents.length <= 0\" description=\"暂无内容\" />\r\n <div class=\"mk-cms-ad__card__body\">\r\n <el-scrollbar class=\"mk-cms-ad__card__body__scrollbar\">\r\n <el-card class=\"mk-cms-ad__card__body__item\" v-for=\"adContent in item.contents\" :key=\"adContent.id\">\r\n <el-image class=\"images\" v-if=\"adContent.type == 1\" :src=\"adContent.path\"\r\n :preview-src-list=\"[adContent.path]\" fit=\"contain\">\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=\"adContent.type == 2\" :src=\"adContent.path\" style=\"width: 100%;height: 200px;\"\r\n controls></video>\r\n <div class=\"item-desc\">\r\n <div class=\"item-desc-left\">\r\n <div class=\"title ellipsis\">\r\n <MKSvgIcon class=\"icon\" v-if=\"adContent.type == 1\" iconClass=\"Picture\"></MKSvgIcon>\r\n <MKSvgIcon class=\"icon\" v-if=\"adContent.type == 2\" iconClass=\"VideoCamera\"></MKSvgIcon>\r\n <span :title=\"adContent.title + '(' + adContent.desc + ')'\">{{ adContent.title }}<span\r\n class=\"desc\">{{\r\n adContent.desc ? `(${adContent.desc})` : \"\" }}</span></span>\r\n </div>\r\n <div class=\"external-links ellipsis\">\r\n <MKSvgIcon class=\"icon\" v-if=\"adContent.link\" iconClass=\"Link\"></MKSvgIcon>\r\n <a :href=\"adContent.link\" target=\"_blank\" :title=\"adContent.link\">{{ adContent.link }}</a>\r\n </div>\r\n </div>\r\n <div class=\"item-desc-right\">\r\n <el-dropdown trigger=\"click\" :teleported=\"false\" class=\"item-desc-right__more\">\r\n <span class=\"el-dropdown-link\">\r\n 更多<el-icon class=\"el-icon--right\"><arrow-down /></el-icon>\r\n </span>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item class=\"edit-button\" :icon=\"EditPen\"\r\n @click=\"showAdContentHandler(adContent, true)\">编辑</el-dropdown-item>\r\n <el-dropdown-item class=\"delete-button\" :icon=\"Delete\"\r\n @click=\"deleteHandler(adContentRequest, 'title', adContent)\">删除</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </div>\r\n </div>\r\n </el-card>\r\n </el-scrollbar>\r\n </div>\r\n </el-card>\r\n </el-scrollbar>\r\n\r\n <el-empty v-if=\"adDefineList?.length <= 0\" description=“暂无内容” />\r\n </div>\r\n </div>\r\n\r\n</template>\r\n<script setup lang='ts'>\r\nimport { onMounted, reactive, ref, watch } from \"vue\";\r\nimport { DataViewRequest, Group } from \"@maketribe/request\";\r\nimport { DataForm, Dialoger, FormColumn, Messager } from \"@maketribe/dm\";\r\nimport { CmsAdContentsForm, CmsAdDefinesForm } from \"../../dataviews\";\r\nimport { EditPen, ArrowDown, Delete } from \"@element-plus/icons-vue\"\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//广告位搜索词\r\nconst adSearchWord = ref(\"\")\r\n// 广告定义列表\r\nconst adDefineList = ref([] as any[]);\r\nconst loading = ref(true);\r\n\r\n//更新列表数据\r\nconst setAdDefineList = async (condition?: Group) => {\r\n try {\r\n loading.value = true;\r\n\r\n if(!condition){ condition = new Group(); }\r\n\r\n // 栏目的广告不查\r\n condition?.addCondition(\"key\",\"nolike\",\"part_\")\r\n\r\n // console.log(condition);\r\n\r\n adDefineList.value = (await adRequest.allList({\r\n data: {\r\n condition: condition\r\n }\r\n })).data.data;\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 adContentForm = reactive(new CmsAdContentsForm())\r\n//监听广告内容表单保存事件\r\nadContentForm.submittedEvent.on(() => {\r\n setAdDefineList()\r\n})\r\n// 添加广告内容\r\nconst showAdContentHandler = async (item: any, isEdit: boolean) => {\r\n await Dialoger.dataFormDialog({\r\n dataForm: adContentForm as CmsAdContentsForm,\r\n recId: isEdit ? item.id : undefined\r\n })\r\n if (!isEdit) {\r\n adContentForm.addRecord({ adDefineId: item.id })\r\n }\r\n}\r\n\r\n//广告定义表单\r\nconst adDefineForm = reactive(new (class extends CmsAdDefinesForm {\r\n //去掉广告内容\r\n protected async initialize() {\r\n await super.initialize();\r\n this.setColumns([\r\n new FormColumn({ name: \"key\", label: \"广告位KEY\", required: true }),\r\n new FormColumn({ name: \"desc\", label: \"广告位描述\", required: true }),\r\n ]);\r\n }\r\n}))\r\n//监听广告保存完成进行刷新\r\nadDefineForm.submittedEvent.on(() => {\r\n setAdDefineList()\r\n})\r\n//增加广告位\r\nconst showAdDefineHandle = (item: any) => {\r\n Dialoger.dataFormDialog({\r\n dataForm: adDefineForm as DataForm,\r\n recId: item?.id\r\n })\r\n}\r\n\r\n//删除\r\nconst deleteHandler = async (request: DataViewRequest, field: string, item: any) => {\r\n const isConfirm = await Dialoger.confirm({\r\n title: \"是否删除?\",\r\n message: `确定删除【${item[field]}】广告位?`,\r\n type: \"warning\"\r\n });\r\n if (!isConfirm) {\r\n return;\r\n }\r\n try {\r\n loading.value = true\r\n const result = await request.delete(item.id)\r\n if (result.data.code != 200) {\r\n Messager.error({ message: result.data.msg || \"删除失败\" })\r\n return;\r\n }\r\n await setAdDefineList()\r\n } catch (e: any) {\r\n Messager.error({ message: e })\r\n } finally {\r\n loading.value = false\r\n\r\n }\r\n}\r\n\r\n// 加载广告定义\r\nonMounted(async () => {\r\n await setAdDefineList();\r\n})\r\n\r\n//timer\r\nlet timer: any = null\r\n\r\n//监听adSearchWord变化进行搜索\r\nwatch(adSearchWord, async () => {\r\n\r\n if (!!timer) {\r\n clearTimeout(timer)\r\n }\r\n\r\n timer = setTimeout(async () => {\r\n const condition = new Group()\r\n condition.addCondition(\"desc\", \"like\", `%${adSearchWord.value}%`)\r\n await setAdDefineList(condition);\r\n }, 500)\r\n\r\n\r\n})\r\n\r\n</script>\r\n"],"names":["DataViewRequest","ref","Group","reactive","CmsAdContentsForm","Dialoger","CmsAdDefinesForm","FormColumn","request","Messager","onMounted","watch"],"mappings":"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"}
@@ -315,6 +315,8 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
315
315
  vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_3, [
316
316
  articleForm.data ? (vue.openBlock(), vue.createBlock(vue.unref(index$1.MKDocEditor), {
317
317
  key: 0,
318
+ css: vue.unref(CmsSettings).content.doc.css,
319
+ js: vue.unref(CmsSettings).content.doc.js,
318
320
  content: content.value,
319
321
  onChange: EditorChangeHandle
320
322
  }, {
@@ -650,7 +652,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
650
652
  ])
651
653
  ]),
652
654
  _: 1
653
- }, 8, ["content"])) : vue.createCommentVNode("", true)
655
+ }, 8, ["css", "js", "content"])) : vue.createCommentVNode("", true)
654
656
  ])), [
655
657
  [_directive_loading, articleForm.loading]
656
658
  ])
@@ -1 +1 @@
1
- {"version":3,"file":"article-edit-add-page.vue2.js","sources":["../../../../../../src/modules/cms/pages/cms-contents/article-edit-add-page.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-article-eidtadd__warp\">\r\n <el-page-header style=\"background-color: #fff;padding: 10px;\" :icon=\"ArrowLeftBold\" title=\"返回\"\r\n @back=\"() => router.push({ name: 'cms/contents', query: { pid: articleForm?.data?.cmsPartId } })\">\r\n <template #content>\r\n <template v-if=\"!articleForm.loading\">\r\n <el-text v-if=\"!articleForm.data?.modifier\">{{ !!route.query.id ? \"编辑文章\" : \"创建文章\" }}</el-text>\r\n <el-text v-else>{{ articleForm.data?.modifierName }} 于 {{ articleForm.data?.updatedAt }} 更新</el-text>\r\n </template>\r\n </template>\r\n <template #extra>\r\n <div class=\"mk-cms-article-eidtadd__header_tools\">\r\n\r\n <template v-if=\"!articleForm.loading\">\r\n <el-tag v-if=\"!articleForm.data?.publishTime\" effect=\"dark\" round>未发布</el-tag>\r\n <el-text v-else>发布时间:{{ articleForm.data?.publishTime }}</el-text>\r\n </template>\r\n\r\n <el-dropdown split-button type=\"primary\" style=\"margin-left: 10px;\" @click=\"saveHandle\">\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 10px;\" />\r\n 保存\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item v-if=\"CmsSettings.publish.mode == 'static'\" @click=\"saveAndViewHandle\">\r\n <MKSvgIcon iconClass=\"View\" style=\"margin-right: 5px;\" />\r\n 保存并预览\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"saveAndPublishHandle\">\r\n <MKSvgIcon iconClass=\"Share\" style=\"margin-right: 5px;\" />\r\n 保存并发布\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </div>\r\n </template>\r\n </el-page-header>\r\n <div class=\"mk-cms-article-eidtadd__body\" v-loading=\"articleForm.loading\">\r\n\r\n <MKDocEditor v-if=\"articleForm.data\" :content=\"content\" @change=\"EditorChangeHandle\">\r\n <template #header>\r\n <div class=\"mk-cms-article-eidtadd__body__header\">\r\n <el-row>\r\n <el-input class=\"title\" type=\"textarea\" :autosize=\"{ minRows: 1, maxRows: 4 }\" maxlength=\"150\"\r\n show-word-limit placeholder=\"请输入标题\" v-model=\"title\" />\r\n </el-row>\r\n <el-row>\r\n <el-input class=\"sub-title\" type=\"textarea\" :autosize=\"{ minRows: 1, maxRows: 4 }\" maxlength=\"150\"\r\n show-word-limit placeholder=\"[选填] 请输入子标题\" v-model=\"subTitle\" />\r\n </el-row>\r\n </div>\r\n </template>\r\n <template #after-extentions>\r\n <div class=\"mk-cms-article-eidtadd__body__extentions\" :class=\"{ hide: closeExtentions! }\" ref=\"extentionsRef\">\r\n <MKSvgIcon icon-class=\"ArrowLeft\" class=\"open\" @click=\"closeExtentionsHandle\" v-if=\"closeExtentions\">\r\n </MKSvgIcon>\r\n <MKSvgIcon v-else icon-class=\"ArrowRight\" class=\"close\" @click=\"hideExtentionsHandle\">\r\n </MKSvgIcon>\r\n <el-divider content-position=\"left\">文章设置</el-divider>\r\n <MKDataForm :dataForm=\"articleForm\">\r\n <MKForm :dataForm=\"articleForm\" style=\"width:225px\" label-width=\"110px\">\r\n <el-row v-if=\"CmsSettings.content.useTop\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isTop\"></MKDataFormItem>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.useNew\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isNew\"></MKDataFormItem>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.useHotRecommend\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isHotRecommend\"></MKDataFormItem>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.usePartRecommend\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isPartRecommend\"></MKDataFormItem>\r\n </el-row>\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isShowList\"></MKDataFormItem>\r\n </el-row>\r\n <!-- <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isDraft\"></MKDataFormItem>\r\n </el-row> -->\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"sortNo\"></MKDataFormItem>\r\n </el-row>\r\n </MKForm>\r\n </MKDataForm>\r\n </div>\r\n </template>\r\n <template #footer>\r\n <div class=\"mk-cms-article-eidtadd__body__footer\">\r\n <el-tabs v-model=\"articleOptionsActive\">\r\n <el-tab-pane label=\"基础内容\" name=\"content\">\r\n <div class=\"content\">\r\n <el-row :gutter=\"20\">\r\n <el-col :span=\"6\">\r\n <el-input placeholder=\"[选填] 作者\" v-model=\"articleForm.data.author\" clearable>\r\n <template #prefix>\r\n <MKSvgIcon iconClass=\"UserFilled\" />\r\n </template>\r\n </el-input>\r\n </el-col>\r\n <el-col :span=\"6\">\r\n <el-date-picker v-model=\"releaseDate\" type=\"datetime\" placeholder=\"发布时间\"\r\n :default-time=\"new Date()\" />\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-input placeholder=\"[选填] 发布地址\" v-model=\"articleForm.data.locationDesc\" clearable>\r\n <template #prefix>\r\n <MKSvgIcon iconClass=\"Location\" />\r\n </template>\r\n </el-input>\r\n </el-col>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.useTags\">\r\n <el-select v-model=\"tags\" multiple filterable allow-create default-first-option\r\n :reserve-keyword=\"false\" placeholder=\"[可选] 选择文章标签\" style=\"width: 100%\">\r\n <template #prefix>\r\n <MKSvgIcon iconClass=\"CollectionTag\" />\r\n </template>\r\n </el-select>\r\n </el-row>\r\n <el-divider content-position=\"left\">\r\n 文章封面/简介\r\n <el-switch v-model=\"descAutoCreate\" style=\"margin-left: 10px;\" inline-prompt active-text=\"自动生成\"\r\n inactive-text=\"手动撰写\" />\r\n </el-divider>\r\n <el-row class=\"cover-desc\">\r\n <MKUploadImage style=\"margin-right: 10px;\" v-model=\"articleForm.data.cover\" width=\"115px\" height=\"115px\" \r\n :uploadContext=\"new ImageUploadContext(CmsSettings.content.coverImageSize)\">\r\n\r\n </MKUploadImage>\r\n <el-input class=\"desc\" type=\"textarea\" :autosize=\"{ minRows: 5, maxRows: 30 }\" maxlength=\"1000\"\r\n show-word-limit placeholder=\"[选填] 文章简介\" v-model=\"desc\" />\r\n </el-row>\r\n <el-divider content-position=\"left\">文章Banner图</el-divider>\r\n <el-row>\r\n <MKUploadImage v-model=\"articleForm.data.banner\" width=\"100%\" height=\"300px\" :uploadContext=\"new ImageUploadContext(CmsSettings.content.bannerImageSize)\">\r\n\r\n </MKUploadImage>\r\n </el-row>\r\n </div>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"文章资源库\" name=\"atlas\" v-if=\"CmsSettings.content.useAtlas\">\r\n <ArticleAtlas v-model=\"atlas\" :articleId=\"parseInt(articleForm.data?.id)\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"页面设置\" name=\"settings\" v-if=\"CmsSettings.publish.mode == 'static'\">\r\n <MKDataForm :dataForm=\"articleForm\" label-width=\"120px\">\r\n <MKForm :dataForm=\"articleForm\">\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"seoKeywords\"></MKDataFormItem>\r\n </el-row>\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"seoDesc\"></MKDataFormItem>\r\n </el-row>\r\n </MKForm>\r\n </MKDataForm>\r\n </el-tab-pane>\r\n </el-tabs>\r\n </div>\r\n </template>\r\n </MKDocEditor>\r\n </div>\r\n </div>\r\n</template>\r\n<script setup lang='ts'>\r\nimport { onMounted, reactive, ref, computed } from \"vue\";\r\nimport { ArrowLeftBold } from \"@element-plus/icons-vue\"\r\nimport { MKDocEditor, MKSvgIcon, MKUploadImage } from '../../../../components'\r\nimport { MKDataForm, MKForm, MKDataFormItem } from \"../../../../components\";\r\nimport ArticleAtlas from \"./components/article-atlas.vue\";\r\nimport { CmsArticlesForm } from \"../../dataviews\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { ImageUploadContext } from \"../../../ms\";\r\nimport { useCmsSettings } from \"../../cms-settings\"\r\n// cms 配置\r\nconst CmsSettings = useCmsSettings(true);\r\n\r\nconst route = useRoute()\r\nconst router = useRouter();\r\n\r\n\r\n// 文章请求\r\nconst articleForm = reactive(new CmsArticlesForm()) as CmsArticlesForm;\r\nconst articleOptionsActive = ref(\"content\");\r\n\r\n\r\n// 标题\r\nconst title = computed({\r\n get() { return articleForm.data?.title || \"\"; },\r\n set(val) { articleForm.data.title = val; }\r\n});\r\n// 子标题\r\nconst subTitle = computed({\r\n get() { return articleForm.data?.subTitle || \"\"; },\r\n set(val) { articleForm.data.subTitle = val; }\r\n});\r\n// 获取默认简介\r\nconst getDefaultDescContent = () => {\r\n if (!descAutoCreate.value) {\r\n return \"\";\r\n }\r\n let val: any = \"\";\r\n const div = document.createElement(\"div\");\r\n div.innerHTML = content.value;\r\n val = div.textContent?.substring(0, 700);\r\n if (div.textContent!.length > 700) {\r\n val += \"...\";\r\n }\r\n return val;\r\n}\r\nconst descAutoCreate = ref(true)\r\n// 简介\r\nconst desc = computed({\r\n get() {\r\n return articleForm.data?.desc || getDefaultDescContent();\r\n },\r\n set(val) {\r\n articleForm.data.desc = val;\r\n }\r\n});\r\n// 发布时间\r\nconst releaseDate = computed({\r\n get() { return articleForm.data?.releaseDate || articleForm.data?.publishTime; },\r\n set(val) { articleForm.data.releaseDate = val; }\r\n});\r\n// 标签\r\nconst tags = ref([]);\r\n// computed({ \r\n// get() { return articleForm.data?.tags || [] }, \r\n// set(val) { articleForm.data.tags = val; } \r\n// });\r\n// 内容\r\nconst content = computed({\r\n get() { return articleForm.data?.content || \"\"; },\r\n set(val) { articleForm.data.content = val; }\r\n});\r\n\r\n// 图集\r\nconst atlas = computed({\r\n get() {\r\n return articleForm.data?.atlas\r\n },\r\n set(val) { articleForm.data.atlas = val; }\r\n});\r\n\r\n// 表单初始化\r\nconst formInitDataInfo = ()=>{\r\n // 初始化数据加载\r\n if (route.query.id) {\r\n articleForm.editRecord(route.query.id);\r\n }\r\n else if (route.query.partId) {\r\n articleForm.addRecord({ cmsPartId: route.query.partId,isDraft:1 });\r\n }\r\n else {\r\n articleForm.addRecord({ isDraft:1 });\r\n }\r\n}\r\n\r\nonMounted(() => {\r\n formInitDataInfo();\r\n articleForm.init();\r\n\r\n})\r\n\r\n// 保存\r\nconst saveHandle = async () => {\r\n\r\n // 简介不存在的时候使用自动生成的\r\n if (!articleForm.data?.desc) {\r\n desc.value = getDefaultDescContent();\r\n }\r\n\r\n let result = await articleForm.submit();\r\n\r\n router.back();\r\n\r\n return result;\r\n}\r\n\r\n// 保存并预览\r\nconst saveAndViewHandle = async ()=>{\r\n const partId = articleForm.data.cmsPartId;\r\n const data = await saveHandle();\r\n if(data.data.code == 200 && data.data.data){\r\n window.open('/api/cms/content/preview/content/' + partId + '/' + data.data.data)\r\n }\r\n}\r\n\r\n// 保存并发布\r\nconst saveAndPublishHandle = async ()=>{\r\n const result:any = await articleForm.saveAndPublish(CmsSettings.publish.mode);\r\n if(result.data.code == 200){\r\n router.back();\r\n }\r\n}\r\n\r\n// 隐藏扩展\r\nconst closeExtentions = ref(true);\r\nconst extentionsRef = ref();\r\nconst hideExtentionsHandle = () => {\r\n closeExtentions.value = true;\r\n}\r\n//展示扩展\r\nconst closeExtentionsHandle = () => {\r\n closeExtentions.value = false;\r\n}\r\n\r\nconst EditorChangeHandle = (v: any) => {\r\n articleForm.data.content = v;\r\n}\r\n\r\n</script>\r\n"],"names":["useCmsSettings","useRoute","useRouter","reactive","CmsArticlesForm","ref","computed","onMounted"],"mappings":"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"}
1
+ {"version":3,"file":"article-edit-add-page.vue2.js","sources":["../../../../../../src/modules/cms/pages/cms-contents/article-edit-add-page.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-article-eidtadd__warp\">\r\n <el-page-header style=\"background-color: #fff;padding: 10px;\" :icon=\"ArrowLeftBold\" title=\"返回\"\r\n @back=\"() => router.push({ name: 'cms/contents', query: { pid: articleForm?.data?.cmsPartId } })\">\r\n <template #content>\r\n <template v-if=\"!articleForm.loading\">\r\n <el-text v-if=\"!articleForm.data?.modifier\">{{ !!route.query.id ? \"编辑文章\" : \"创建文章\" }}</el-text>\r\n <el-text v-else>{{ articleForm.data?.modifierName }} 于 {{ articleForm.data?.updatedAt }} 更新</el-text>\r\n </template>\r\n </template>\r\n <template #extra>\r\n <div class=\"mk-cms-article-eidtadd__header_tools\">\r\n\r\n <template v-if=\"!articleForm.loading\">\r\n <el-tag v-if=\"!articleForm.data?.publishTime\" effect=\"dark\" round>未发布</el-tag>\r\n <el-text v-else>发布时间:{{ articleForm.data?.publishTime }}</el-text>\r\n </template>\r\n\r\n <el-dropdown split-button type=\"primary\" style=\"margin-left: 10px;\" @click=\"saveHandle\">\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 10px;\" />\r\n 保存\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item v-if=\"CmsSettings.publish.mode == 'static'\" @click=\"saveAndViewHandle\">\r\n <MKSvgIcon iconClass=\"View\" style=\"margin-right: 5px;\" />\r\n 保存并预览\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"saveAndPublishHandle\">\r\n <MKSvgIcon iconClass=\"Share\" style=\"margin-right: 5px;\" />\r\n 保存并发布\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </div>\r\n </template>\r\n </el-page-header>\r\n <div class=\"mk-cms-article-eidtadd__body\" v-loading=\"articleForm.loading\">\r\n\r\n <MKDocEditor v-if=\"articleForm.data\" :css=\"CmsSettings.content.doc.css\" :js=\"CmsSettings.content.doc.js\" :content=\"content\" @change=\"EditorChangeHandle\">\r\n <template #header>\r\n <div class=\"mk-cms-article-eidtadd__body__header\">\r\n <el-row>\r\n <el-input class=\"title\" type=\"textarea\" :autosize=\"{ minRows: 1, maxRows: 4 }\" maxlength=\"150\"\r\n show-word-limit placeholder=\"请输入标题\" v-model=\"title\" />\r\n </el-row>\r\n <el-row>\r\n <el-input class=\"sub-title\" type=\"textarea\" :autosize=\"{ minRows: 1, maxRows: 4 }\" maxlength=\"150\"\r\n show-word-limit placeholder=\"[选填] 请输入子标题\" v-model=\"subTitle\" />\r\n </el-row>\r\n </div>\r\n </template>\r\n <template #after-extentions>\r\n <div class=\"mk-cms-article-eidtadd__body__extentions\" :class=\"{ hide: closeExtentions! }\" ref=\"extentionsRef\">\r\n <MKSvgIcon icon-class=\"ArrowLeft\" class=\"open\" @click=\"closeExtentionsHandle\" v-if=\"closeExtentions\">\r\n </MKSvgIcon>\r\n <MKSvgIcon v-else icon-class=\"ArrowRight\" class=\"close\" @click=\"hideExtentionsHandle\">\r\n </MKSvgIcon>\r\n <el-divider content-position=\"left\">文章设置</el-divider>\r\n <MKDataForm :dataForm=\"articleForm\">\r\n <MKForm :dataForm=\"articleForm\" style=\"width:225px\" label-width=\"110px\">\r\n <el-row v-if=\"CmsSettings.content.useTop\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isTop\"></MKDataFormItem>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.useNew\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isNew\"></MKDataFormItem>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.useHotRecommend\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isHotRecommend\"></MKDataFormItem>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.usePartRecommend\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isPartRecommend\"></MKDataFormItem>\r\n </el-row>\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isShowList\"></MKDataFormItem>\r\n </el-row>\r\n <!-- <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isDraft\"></MKDataFormItem>\r\n </el-row> -->\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"sortNo\"></MKDataFormItem>\r\n </el-row>\r\n </MKForm>\r\n </MKDataForm>\r\n </div>\r\n </template>\r\n <template #footer>\r\n <div class=\"mk-cms-article-eidtadd__body__footer\">\r\n <el-tabs v-model=\"articleOptionsActive\">\r\n <el-tab-pane label=\"基础内容\" name=\"content\">\r\n <div class=\"content\">\r\n <el-row :gutter=\"20\">\r\n <el-col :span=\"6\">\r\n <el-input placeholder=\"[选填] 作者\" v-model=\"articleForm.data.author\" clearable>\r\n <template #prefix>\r\n <MKSvgIcon iconClass=\"UserFilled\" />\r\n </template>\r\n </el-input>\r\n </el-col>\r\n <el-col :span=\"6\">\r\n <el-date-picker v-model=\"releaseDate\" type=\"datetime\" placeholder=\"发布时间\"\r\n :default-time=\"new Date()\" />\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-input placeholder=\"[选填] 发布地址\" v-model=\"articleForm.data.locationDesc\" clearable>\r\n <template #prefix>\r\n <MKSvgIcon iconClass=\"Location\" />\r\n </template>\r\n </el-input>\r\n </el-col>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.useTags\">\r\n <el-select v-model=\"tags\" multiple filterable allow-create default-first-option\r\n :reserve-keyword=\"false\" placeholder=\"[可选] 选择文章标签\" style=\"width: 100%\">\r\n <template #prefix>\r\n <MKSvgIcon iconClass=\"CollectionTag\" />\r\n </template>\r\n </el-select>\r\n </el-row>\r\n <el-divider content-position=\"left\">\r\n 文章封面/简介\r\n <el-switch v-model=\"descAutoCreate\" style=\"margin-left: 10px;\" inline-prompt active-text=\"自动生成\"\r\n inactive-text=\"手动撰写\" />\r\n </el-divider>\r\n <el-row class=\"cover-desc\">\r\n <MKUploadImage style=\"margin-right: 10px;\" v-model=\"articleForm.data.cover\" width=\"115px\" height=\"115px\" \r\n :uploadContext=\"new ImageUploadContext(CmsSettings.content.coverImageSize)\">\r\n\r\n </MKUploadImage>\r\n <el-input class=\"desc\" type=\"textarea\" :autosize=\"{ minRows: 5, maxRows: 30 }\" maxlength=\"1000\"\r\n show-word-limit placeholder=\"[选填] 文章简介\" v-model=\"desc\" />\r\n </el-row>\r\n <el-divider content-position=\"left\">文章Banner图</el-divider>\r\n <el-row>\r\n <MKUploadImage v-model=\"articleForm.data.banner\" width=\"100%\" height=\"300px\" :uploadContext=\"new ImageUploadContext(CmsSettings.content.bannerImageSize)\">\r\n\r\n </MKUploadImage>\r\n </el-row>\r\n </div>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"文章资源库\" name=\"atlas\" v-if=\"CmsSettings.content.useAtlas\">\r\n <ArticleAtlas v-model=\"atlas\" :articleId=\"parseInt(articleForm.data?.id)\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"页面设置\" name=\"settings\" v-if=\"CmsSettings.publish.mode == 'static'\">\r\n <MKDataForm :dataForm=\"articleForm\" label-width=\"120px\">\r\n <MKForm :dataForm=\"articleForm\">\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"seoKeywords\"></MKDataFormItem>\r\n </el-row>\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"seoDesc\"></MKDataFormItem>\r\n </el-row>\r\n </MKForm>\r\n </MKDataForm>\r\n </el-tab-pane>\r\n </el-tabs>\r\n </div>\r\n </template>\r\n </MKDocEditor>\r\n </div>\r\n </div>\r\n</template>\r\n<script setup lang='ts'>\r\nimport { onMounted, reactive, ref, computed } from \"vue\";\r\nimport { ArrowLeftBold } from \"@element-plus/icons-vue\"\r\nimport { MKDocEditor, MKSvgIcon, MKUploadImage } from '../../../../components'\r\nimport { MKDataForm, MKForm, MKDataFormItem } from \"../../../../components\";\r\nimport ArticleAtlas from \"./components/article-atlas.vue\";\r\nimport { CmsArticlesForm } from \"../../dataviews\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { ImageUploadContext } from \"../../../ms\";\r\nimport { useCmsSettings } from \"../../cms-settings\"\r\n// cms 配置\r\nconst CmsSettings = useCmsSettings(true);\r\n\r\nconst route = useRoute()\r\nconst router = useRouter();\r\n\r\n\r\n// 文章请求\r\nconst articleForm = reactive(new CmsArticlesForm()) as CmsArticlesForm;\r\nconst articleOptionsActive = ref(\"content\");\r\n\r\n\r\n// 标题\r\nconst title = computed({\r\n get() { return articleForm.data?.title || \"\"; },\r\n set(val) { articleForm.data.title = val; }\r\n});\r\n// 子标题\r\nconst subTitle = computed({\r\n get() { return articleForm.data?.subTitle || \"\"; },\r\n set(val) { articleForm.data.subTitle = val; }\r\n});\r\n// 获取默认简介\r\nconst getDefaultDescContent = () => {\r\n if (!descAutoCreate.value) {\r\n return \"\";\r\n }\r\n let val: any = \"\";\r\n const div = document.createElement(\"div\");\r\n div.innerHTML = content.value;\r\n val = div.textContent?.substring(0, 700);\r\n if (div.textContent!.length > 700) {\r\n val += \"...\";\r\n }\r\n return val;\r\n}\r\nconst descAutoCreate = ref(true)\r\n// 简介\r\nconst desc = computed({\r\n get() {\r\n return articleForm.data?.desc || getDefaultDescContent();\r\n },\r\n set(val) {\r\n articleForm.data.desc = val;\r\n }\r\n});\r\n// 发布时间\r\nconst releaseDate = computed({\r\n get() { return articleForm.data?.releaseDate || articleForm.data?.publishTime; },\r\n set(val) { articleForm.data.releaseDate = val; }\r\n});\r\n// 标签\r\nconst tags = ref([]);\r\n// computed({ \r\n// get() { return articleForm.data?.tags || [] }, \r\n// set(val) { articleForm.data.tags = val; } \r\n// });\r\n// 内容\r\nconst content = computed({\r\n get() { return articleForm.data?.content || \"\"; },\r\n set(val) { articleForm.data.content = val; }\r\n});\r\n\r\n// 图集\r\nconst atlas = computed({\r\n get() {\r\n return articleForm.data?.atlas\r\n },\r\n set(val) { articleForm.data.atlas = val; }\r\n});\r\n\r\n// 表单初始化\r\nconst formInitDataInfo = ()=>{\r\n // 初始化数据加载\r\n if (route.query.id) {\r\n articleForm.editRecord(route.query.id);\r\n }\r\n else if (route.query.partId) {\r\n articleForm.addRecord({ cmsPartId: route.query.partId,isDraft:1 });\r\n }\r\n else {\r\n articleForm.addRecord({ isDraft:1 });\r\n }\r\n}\r\n\r\nonMounted(() => {\r\n formInitDataInfo();\r\n articleForm.init();\r\n\r\n})\r\n\r\n// 保存\r\nconst saveHandle = async () => {\r\n\r\n // 简介不存在的时候使用自动生成的\r\n if (!articleForm.data?.desc) {\r\n desc.value = getDefaultDescContent();\r\n }\r\n\r\n let result = await articleForm.submit();\r\n\r\n router.back();\r\n\r\n return result;\r\n}\r\n\r\n// 保存并预览\r\nconst saveAndViewHandle = async ()=>{\r\n const partId = articleForm.data.cmsPartId;\r\n const data = await saveHandle();\r\n if(data.data.code == 200 && data.data.data){\r\n window.open('/api/cms/content/preview/content/' + partId + '/' + data.data.data)\r\n }\r\n}\r\n\r\n// 保存并发布\r\nconst saveAndPublishHandle = async ()=>{\r\n const result:any = await articleForm.saveAndPublish(CmsSettings.publish.mode);\r\n if(result.data.code == 200){\r\n router.back();\r\n }\r\n}\r\n\r\n// 隐藏扩展\r\nconst closeExtentions = ref(true);\r\nconst extentionsRef = ref();\r\nconst hideExtentionsHandle = () => {\r\n closeExtentions.value = true;\r\n}\r\n//展示扩展\r\nconst closeExtentionsHandle = () => {\r\n closeExtentions.value = false;\r\n}\r\n\r\nconst EditorChangeHandle = (v: any) => {\r\n articleForm.data.content = v;\r\n}\r\n\r\n</script>\r\n"],"names":["useCmsSettings","useRoute","useRouter","reactive","CmsArticlesForm","ref","computed","onMounted"],"mappings":"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"}
@@ -101,6 +101,15 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
101
101
  }
102
102
  }
103
103
  });
104
+ adDefineForm.formatSubmitData = (data) => {
105
+ if (partAdBanner.value) {
106
+ data.id = partAdBanner.value.id;
107
+ } else {
108
+ data.key = `part_${props.partId}`;
109
+ data.desc = `${props.title}的Banner`;
110
+ }
111
+ return data;
112
+ };
104
113
  adContentForm.submittedEvent.on(() => {
105
114
  loadPartAdDefineData(props.partId);
106
115
  });
@@ -108,6 +117,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
108
117
  loadPartAdDefineData(props.partId);
109
118
  });
110
119
  const loadPartAdDefineData = async (partId) => {
120
+ var _a, _b;
111
121
  try {
112
122
  loading.value = true;
113
123
  const where = new request.Where();
@@ -119,7 +129,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
119
129
  condition: where
120
130
  }
121
131
  })).data.data[0];
122
- if (partAdBanner.value.width && partAdBanner.value.width) {
132
+ if (((_a = partAdBanner.value) == null ? void 0 : _a.width) && ((_b = partAdBanner.value) == null ? void 0 : _b.width)) {
123
133
  adContentForm.changeCutSise(`${partAdBanner.value.width}*${partAdBanner.value.height}`);
124
134
  }
125
135
  } catch (e) {
@@ -134,10 +144,11 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
134
144
  recId: id
135
145
  });
136
146
  };
137
- const showAdDefineHandle = async (id) => {
147
+ const showAdDefineHandle = async () => {
148
+ var _a;
138
149
  await dm.Dialoger.dataFormDialog({
139
150
  dataForm: adDefineForm,
140
- recId: partAdBanner.value.id
151
+ recId: (_a = partAdBanner.value) == null ? void 0 : _a.id
141
152
  });
142
153
  adDefineForm.getColumn("contents").visible = false;
143
154
  adDefineForm.getColumn("key").visible = false;
@@ -256,7 +267,19 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
256
267
  text: "",
257
268
  style: { "margin-left": "10px" },
258
269
  icon: vue.unref(elIcons.Plus),
259
- onClick: _cache[2] || (_cache[2] = ($event) => showAdContentHandle(null))
270
+ onClick: _cache[2] || (_cache[2] = ($event) => showAdDefineHandle())
271
+ }, {
272
+ default: vue.withCtx(() => [
273
+ vue.createTextVNode(" 设置广告位比例 ")
274
+ ]),
275
+ _: 1
276
+ }, 8, ["icon"]),
277
+ vue.createVNode(_component_el_button, {
278
+ type: "primary",
279
+ text: "",
280
+ style: { "margin-left": "10px" },
281
+ icon: vue.unref(elIcons.Plus),
282
+ onClick: _cache[3] || (_cache[3] = ($event) => showAdContentHandle(null))
260
283
  }, {
261
284
  default: vue.withCtx(() => [
262
285
  vue.createTextVNode(" 添加 ")