@maketribe/ms-app 3.2.7 → 3.2.9

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 (135) hide show
  1. package/dist/cjs/components/basic/data-table-select/data-table-select.js +2 -2
  2. package/dist/cjs/components/basic/data-table-select/data-table-select.js.map +1 -1
  3. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageEditPanel.js +4 -4
  4. package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageEditPanel.js.map +1 -1
  5. package/dist/cjs/components/basic/icon-select/icon-select.js +25 -9
  6. package/dist/cjs/components/basic/icon-select/icon-select.js.map +1 -1
  7. package/dist/cjs/components/basic/svg-icon/svg-icon.js +4 -4
  8. package/dist/cjs/components/basic/svg-icon/svg-icon.js.map +1 -1
  9. package/dist/cjs/components/basic/upload-file/ui/upload-image/upload-image-options.js +12 -0
  10. package/dist/cjs/components/basic/upload-file/ui/upload-image/upload-image-options.js.map +1 -1
  11. package/dist/cjs/components/basic/upload-file/ui/upload-image/upload-image.js +34 -6
  12. package/dist/cjs/components/basic/upload-file/ui/upload-image/upload-image.js.map +1 -1
  13. package/dist/cjs/components/business/resource-list/ResourceManager.js +2 -1
  14. package/dist/cjs/components/business/resource-list/ResourceManager.js.map +1 -1
  15. package/dist/cjs/components/data-model/data-filter-form/data-filter-form.js +2 -6
  16. package/dist/cjs/components/data-model/data-filter-form/data-filter-form.js.map +1 -1
  17. package/dist/cjs/components/data-model/data-form/data-form-item/data-form-item.js +1 -1
  18. package/dist/cjs/components/data-model/data-form/data-form-item/data-form-item.js.map +1 -1
  19. package/dist/cjs/components/data-model/data-table/components/header-components/table-filter/table-filter.js +62 -2
  20. package/dist/cjs/components/data-model/data-table/components/header-components/table-filter/table-filter.js.map +1 -1
  21. package/dist/cjs/components/data-model/data-table/views/tree-view/tree-view.js +2 -2
  22. package/dist/cjs/components/data-model/data-table/views/tree-view/tree-view.js.map +1 -1
  23. package/dist/cjs/message-impl/DialogerImpl.js +4 -2
  24. package/dist/cjs/message-impl/DialogerImpl.js.map +1 -1
  25. package/dist/cjs/modules/cms/components/part-tree/index.vue.js +5 -5
  26. package/dist/cjs/modules/cms/composables/part-extensions.js.map +1 -1
  27. package/dist/cjs/modules/cms/pages/cms-ad/index.vue2.js +4 -4
  28. package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +60 -47
  29. package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js.map +1 -1
  30. package/dist/cjs/modules/cms/pages/cms-contents/components/article-atlas.vue.js +4 -4
  31. package/dist/cjs/modules/cms/pages/cms-contents/index.vue2.js +71 -48
  32. package/dist/cjs/modules/cms/pages/cms-contents/index.vue2.js.map +1 -1
  33. package/dist/cjs/modules/cms/pages/cms-resource/index.vue2.js +30 -0
  34. package/dist/cjs/modules/cms/pages/cms-resource/index.vue2.js.map +1 -1
  35. package/dist/cjs/modules/ms/components/material-list/components/file-view/file-view.js +3 -3
  36. package/dist/cjs/modules/ms/components/material-list/components/file-view/file-view.js.map +1 -1
  37. package/dist/cjs/modules/ms/components/material-list/components/video-view/video-view.js +6 -6
  38. package/dist/cjs/modules/ms/components/material-list/components/video-view/video-view.js.map +1 -1
  39. package/dist/cjs/modules/ms/components/material-list/material-group.js +5 -5
  40. package/dist/cjs/modules/ms/components/material-list/material-group.js.map +1 -1
  41. package/dist/cjs/modules/ms/dataviews/ms-config/MsConfigTable.js +0 -1
  42. package/dist/cjs/modules/ms/dataviews/ms-config/MsConfigTable.js.map +1 -1
  43. package/dist/cjs/modules/ms/dataviews/ms-deny-ip-access-list/MsDenyIPAccessListTable.js +0 -1
  44. package/dist/cjs/modules/ms/dataviews/ms-deny-ip-access-list/MsDenyIPAccessListTable.js.map +1 -1
  45. package/dist/cjs/modules/ms/dataviews/ms-ip-white-list/MsIPWhitelistTable.js +0 -1
  46. package/dist/cjs/modules/ms/dataviews/ms-ip-white-list/MsIPWhitelistTable.js.map +1 -1
  47. package/dist/cjs/modules/ms/dataviews/ms-member/MsMemberTable.js +3 -4
  48. package/dist/cjs/modules/ms/dataviews/ms-member/MsMemberTable.js.map +1 -1
  49. package/dist/cjs/modules/ms/dataviews/ms-menu/MsMenuForm.js +10 -10
  50. package/dist/cjs/modules/ms/dataviews/ms-menu/MsMenuForm.js.map +1 -1
  51. package/dist/cjs/modules/ms/dataviews/ms-menu/MsMenuTable.js +0 -1
  52. package/dist/cjs/modules/ms/dataviews/ms-menu/MsMenuTable.js.map +1 -1
  53. package/dist/cjs/modules/ms/dataviews/ms-menu/ms-route/MsRouteTable.js +4 -1
  54. package/dist/cjs/modules/ms/dataviews/ms-menu/ms-route/MsRouteTable.js.map +1 -1
  55. package/dist/cjs/modules/ms/dataviews/ms-role/MsRoleTable.js +0 -1
  56. package/dist/cjs/modules/ms/dataviews/ms-role/MsRoleTable.js.map +1 -1
  57. package/dist/cjs/modules/ms/index.js +5 -0
  58. package/dist/cjs/modules/ms/index.js.map +1 -1
  59. package/dist/cjs/modules/ms/pages/icons/index.vue.js +4 -0
  60. package/dist/cjs/modules/ms/pages/icons/index.vue.js.map +1 -0
  61. package/dist/cjs/modules/ms/pages/icons/index.vue2.js +139 -0
  62. package/dist/cjs/modules/ms/pages/icons/index.vue2.js.map +1 -0
  63. package/dist/cjs/modules/ms/pages/ms-role/components/aside.vue.js +3 -3
  64. package/dist/esm/components/basic/icon-select/icon-select.js +26 -10
  65. package/dist/esm/components/basic/icon-select/icon-select.js.map +1 -1
  66. package/dist/esm/components/basic/svg-icon/svg-icon.js +3 -3
  67. package/dist/esm/components/basic/svg-icon/svg-icon.js.map +1 -1
  68. package/dist/esm/components/basic/upload-file/ui/upload-image/upload-image-options.js +12 -0
  69. package/dist/esm/components/basic/upload-file/ui/upload-image/upload-image-options.js.map +1 -1
  70. package/dist/esm/components/basic/upload-file/ui/upload-image/upload-image.js +34 -6
  71. package/dist/esm/components/basic/upload-file/ui/upload-image/upload-image.js.map +1 -1
  72. package/dist/esm/components/business/resource-list/ResourceManager.js +2 -1
  73. package/dist/esm/components/business/resource-list/ResourceManager.js.map +1 -1
  74. package/dist/esm/components/data-model/data-filter-form/data-filter-form.js +1 -5
  75. package/dist/esm/components/data-model/data-filter-form/data-filter-form.js.map +1 -1
  76. package/dist/esm/components/data-model/data-form/data-form-item/data-form-item.js +2 -2
  77. package/dist/esm/components/data-model/data-form/data-form-item/data-form-item.js.map +1 -1
  78. package/dist/esm/components/data-model/data-table/components/header-components/table-filter/table-filter.js +64 -4
  79. package/dist/esm/components/data-model/data-table/components/header-components/table-filter/table-filter.js.map +1 -1
  80. package/dist/esm/message-impl/DialogerImpl.js +4 -2
  81. package/dist/esm/message-impl/DialogerImpl.js.map +1 -1
  82. package/dist/esm/modules/cms/composables/part-extensions.js.map +1 -1
  83. package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +60 -47
  84. package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js.map +1 -1
  85. package/dist/esm/modules/cms/pages/cms-contents/index.vue2.js +72 -49
  86. package/dist/esm/modules/cms/pages/cms-contents/index.vue2.js.map +1 -1
  87. package/dist/esm/modules/cms/pages/cms-resource/index.vue2.js +30 -0
  88. package/dist/esm/modules/cms/pages/cms-resource/index.vue2.js.map +1 -1
  89. package/dist/esm/modules/ms/dataviews/ms-config/MsConfigTable.js +1 -2
  90. package/dist/esm/modules/ms/dataviews/ms-config/MsConfigTable.js.map +1 -1
  91. package/dist/esm/modules/ms/dataviews/ms-deny-ip-access-list/MsDenyIPAccessListTable.js +1 -2
  92. package/dist/esm/modules/ms/dataviews/ms-deny-ip-access-list/MsDenyIPAccessListTable.js.map +1 -1
  93. package/dist/esm/modules/ms/dataviews/ms-ip-white-list/MsIPWhitelistTable.js +1 -2
  94. package/dist/esm/modules/ms/dataviews/ms-ip-white-list/MsIPWhitelistTable.js.map +1 -1
  95. package/dist/esm/modules/ms/dataviews/ms-member/MsMemberTable.js +4 -5
  96. package/dist/esm/modules/ms/dataviews/ms-member/MsMemberTable.js.map +1 -1
  97. package/dist/esm/modules/ms/dataviews/ms-menu/MsMenuForm.js +10 -10
  98. package/dist/esm/modules/ms/dataviews/ms-menu/MsMenuForm.js.map +1 -1
  99. package/dist/esm/modules/ms/dataviews/ms-menu/MsMenuTable.js +1 -2
  100. package/dist/esm/modules/ms/dataviews/ms-menu/MsMenuTable.js.map +1 -1
  101. package/dist/esm/modules/ms/dataviews/ms-menu/ms-route/MsRouteTable.js +4 -1
  102. package/dist/esm/modules/ms/dataviews/ms-menu/ms-route/MsRouteTable.js.map +1 -1
  103. package/dist/esm/modules/ms/dataviews/ms-role/MsRoleTable.js +1 -2
  104. package/dist/esm/modules/ms/dataviews/ms-role/MsRoleTable.js.map +1 -1
  105. package/dist/esm/modules/ms/index.js +5 -0
  106. package/dist/esm/modules/ms/index.js.map +1 -1
  107. package/dist/esm/modules/ms/pages/icons/index.vue.js +5 -0
  108. package/dist/esm/modules/ms/pages/icons/index.vue.js.map +1 -0
  109. package/dist/esm/modules/ms/pages/icons/index.vue2.js +123 -0
  110. package/dist/esm/modules/ms/pages/icons/index.vue2.js.map +1 -0
  111. package/dist/style/components/form/form-detail.css +1 -1
  112. package/dist/style/components/form/form-icon-select.css +1 -1
  113. package/dist/style/components/form/index.css +1 -1
  114. package/dist/style/components/index.css +1 -1
  115. package/dist/style/components/table/index.css +1 -1
  116. package/dist/style/components/table/table-filter.css +1 -0
  117. package/dist/style/components/table-view.css +1 -1
  118. package/dist/style/index.css +1 -1
  119. package/dist/style/modules/ms/index.css +1 -1
  120. package/dist/style/modules/ms/pages/icon.css +1 -0
  121. package/dist/style/modules/ms/pages/index.css +1 -1
  122. package/dist/style/src/components/form/form-detail.scss +1 -1
  123. package/dist/style/src/components/form/form-icon-select.scss +21 -8
  124. package/dist/style/src/components/table/index.scss +2 -1
  125. package/dist/style/src/components/table/table-filter.scss +8 -0
  126. package/dist/style/src/components/table-view.scss +44 -43
  127. package/dist/style/src/modules/ms/pages/icon.scss +50 -0
  128. package/dist/style/src/modules/ms/pages/index.scss +2 -1
  129. package/dist/types/components/basic/upload-file/ui/upload-image/index.d.ts +9 -0
  130. package/dist/types/components/basic/upload-file/ui/upload-image/upload-image-options.d.ts +3 -0
  131. package/dist/types/components/basic/upload-file/ui/upload-image/upload-image.d.ts +9 -0
  132. package/dist/types/components/business/resource-list/ResourceManager.d.ts +1 -0
  133. package/dist/types/modules/cms/composables/part-extensions.d.ts +1 -1
  134. package/dist/types/modules/ms/pages/icons/index.vue.d.ts +2 -0
  135. package/package.json +4 -4
@@ -20,7 +20,7 @@ require("@maketribe/request");
20
20
  require("@maketribe/utils");
21
21
  require("../../../../components/basic/upload-file/context/web-file-upload-context.js");
22
22
  require("../../../../components/basic/upload-file/context/web-file-upload-context-options.js");
23
- require("../../../../components/basic/upload-file/ui/upload-image/index.js");
23
+ const index$5 = require("../../../../components/basic/upload-file/ui/upload-image/index.js");
24
24
  require("../../../../components/basic/upload-file/upload-file-options.js");
25
25
  const index$1 = require("../../../../components/basic/doc-editor/index.js");
26
26
  require("../../../../components/basic/copy-container/index.js");
@@ -88,6 +88,30 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
88
88
  articleDv.data.subTitle = val;
89
89
  }
90
90
  });
91
+ const getDefaultDescContent = () => {
92
+ var _a;
93
+ if (!descAutoCreate.value) {
94
+ return "";
95
+ }
96
+ let val = "";
97
+ const div = document.createElement("div");
98
+ div.innerHTML = content.value;
99
+ val = (_a = div.textContent) == null ? void 0 : _a.substring(0, 700);
100
+ if (div.textContent.length > 700) {
101
+ val += "...";
102
+ }
103
+ return val;
104
+ };
105
+ const descAutoCreate = vue.ref(true);
106
+ const desc = vue.computed({
107
+ get() {
108
+ var _a;
109
+ return ((_a = articleDv.data) == null ? void 0 : _a.desc) || getDefaultDescContent();
110
+ },
111
+ set(val) {
112
+ articleDv.data.desc = val;
113
+ }
114
+ });
91
115
  const releaseDate = vue.computed({
92
116
  get() {
93
117
  var _a, _b;
@@ -129,6 +153,10 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
129
153
  articleDv.init();
130
154
  });
131
155
  const saveHandle = async () => {
156
+ var _a;
157
+ if (!((_a = articleDv.data) == null ? void 0 : _a.desc)) {
158
+ desc.value = getDefaultDescContent();
159
+ }
132
160
  await articleDv.submit();
133
161
  if (route.query.id) {
134
162
  articleDv.editRecord(route.query.id);
@@ -165,8 +193,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
165
193
  const _component_el_col = vue.resolveComponent("el-col");
166
194
  const _component_el_date_picker = vue.resolveComponent("el-date-picker");
167
195
  const _component_el_select = vue.resolveComponent("el-select");
168
- const _component_el_image = vue.resolveComponent("el-image");
169
- const _component_MKUploadFile = vue.resolveComponent("MKUploadFile");
196
+ const _component_el_switch = vue.resolveComponent("el-switch");
170
197
  const _component_el_tab_pane = vue.resolveComponent("el-tab-pane");
171
198
  const _component_el_tabs = vue.resolveComponent("el-tabs");
172
199
  const _directive_loading = vue.resolveDirective("loading");
@@ -438,7 +465,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
438
465
  vue.createElementVNode("div", _hoisted_6, [
439
466
  vue.createVNode(_component_el_tabs, {
440
467
  modelValue: articleOptionsActive.value,
441
- "onUpdate:modelValue": _cache[11] || (_cache[11] = ($event) => articleOptionsActive.value = $event)
468
+ "onUpdate:modelValue": _cache[12] || (_cache[12] = ($event) => articleOptionsActive.value = $event)
442
469
  }, {
443
470
  default: vue.withCtx(() => [
444
471
  vue.createVNode(_component_el_tab_pane, {
@@ -517,75 +544,61 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
517
544
  ]),
518
545
  _: 1
519
546
  }),
547
+ vue.createVNode(_component_el_divider, { "content-position": "left" }, {
548
+ default: vue.withCtx(() => [
549
+ vue.createTextVNode(" 文章封面/简介 "),
550
+ vue.createVNode(_component_el_switch, {
551
+ modelValue: descAutoCreate.value,
552
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => descAutoCreate.value = $event),
553
+ style: { "margin-left": "10px" },
554
+ "inline-prompt": "",
555
+ "active-text": "自动生成",
556
+ "inactive-text": "手动撰写"
557
+ }, null, 8, ["modelValue"])
558
+ ]),
559
+ _: 1
560
+ }),
520
561
  vue.createVNode(_component_el_row, { class: "cover-desc" }, {
521
562
  default: vue.withCtx(() => [
522
- vue.createVNode(_component_MKUploadFile, {
563
+ vue.createVNode(vue.unref(index$5.MKUploadImage), {
523
564
  modelValue: articleDv.data.cover,
524
- "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => articleDv.data.cover = $event),
525
- class: "cover",
565
+ "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => articleDv.data.cover = $event),
566
+ width: "115px",
567
+ height: "115px",
526
568
  uploadContext: new (vue.unref(MaterialUploadContext.MaterialUploadContext))({
527
569
  allowMaterialTypeValues: [1]
528
570
  })
529
- }, {
530
- default: vue.withCtx(() => [
531
- vue.createVNode(_component_el_image, {
532
- class: "cover-image",
533
- src: articleDv.data.cover,
534
- style: { "width": "100%", "height": "100%" },
535
- fit: "contain"
536
- }, {
537
- error: vue.withCtx(() => [
538
- vue.createVNode(vue.unref(index.MKSvgIcon), { iconClass: "Picture" })
539
- ]),
540
- _: 1
541
- }, 8, ["src"])
542
- ]),
543
- _: 1
544
- }, 8, ["modelValue", "uploadContext"]),
571
+ }, null, 8, ["modelValue", "uploadContext"]),
545
572
  vue.createVNode(_component_el_input, {
546
573
  class: "desc",
547
574
  type: "textarea",
548
- autosize: { minRows: 5, maxRows: 10 },
575
+ autosize: { minRows: 5, maxRows: 30 },
549
576
  maxlength: "1000",
550
577
  "show-word-limit": "",
551
578
  placeholder: "[选填] 文章简介",
552
- modelValue: articleDv.data.desc,
553
- "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => articleDv.data.desc = $event)
579
+ modelValue: desc.value,
580
+ "onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => desc.value = $event)
554
581
  }, null, 8, ["modelValue"])
555
582
  ]),
556
583
  _: 1
557
584
  }),
558
585
  vue.createVNode(_component_el_divider, { "content-position": "left" }, {
559
586
  default: vue.withCtx(() => [
560
- vue.createTextVNode("文章封面")
587
+ vue.createTextVNode("文章Banner图")
561
588
  ]),
562
589
  _: 1
563
590
  }),
564
591
  vue.createVNode(_component_el_row, null, {
565
592
  default: vue.withCtx(() => [
566
- vue.createVNode(_component_MKUploadFile, {
567
- class: "banner",
593
+ vue.createVNode(vue.unref(index$5.MKUploadImage), {
568
594
  modelValue: articleDv.data.banner,
569
- "onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => articleDv.data.banner = $event),
595
+ "onUpdate:modelValue": _cache[10] || (_cache[10] = ($event) => articleDv.data.banner = $event),
596
+ width: "100%",
597
+ height: "300px",
570
598
  uploadContext: new (vue.unref(MaterialUploadContext.MaterialUploadContext))({
571
599
  allowMaterialTypeValues: [1]
572
600
  })
573
- }, {
574
- default: vue.withCtx(() => [
575
- vue.createVNode(_component_el_image, {
576
- class: "cover-image",
577
- src: articleDv.data.banner,
578
- style: { "width": "100%", "height": "100%" },
579
- fit: "cover"
580
- }, {
581
- error: vue.withCtx(() => [
582
- vue.createVNode(vue.unref(index.MKSvgIcon), { iconClass: "Picture" })
583
- ]),
584
- _: 1
585
- }, 8, ["src"])
586
- ]),
587
- _: 1
588
- }, 8, ["modelValue", "uploadContext"])
601
+ }, null, 8, ["modelValue", "uploadContext"])
589
602
  ]),
590
603
  _: 1
591
604
  })
@@ -602,7 +615,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
602
615
  return [
603
616
  vue.createVNode(articleAtlas_vue_vue_type_script_setup_true_lang, {
604
617
  modelValue: atlas.value,
605
- "onUpdate:modelValue": _cache[10] || (_cache[10] = ($event) => atlas.value = $event),
618
+ "onUpdate:modelValue": _cache[11] || (_cache[11] = ($event) => atlas.value = $event),
606
619
  articleId: parseInt((_a = articleDv.data) == null ? void 0 : _a.id)
607
620
  }, null, 8, ["modelValue", "articleId"])
608
621
  ];
@@ -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=\"null\" @back=\"()=>router.push({name:'cms/contents',query:{pid:articleDv?.data?.cmsPartId} })\">\r\n <template #content>\r\n <el-text v-if=\"!articleDv.data?.modifier\">{{ !!route.query.id ? \"编辑文章\" : \"创建文章\" }}</el-text>\r\n <el-text v-else>{{ articleDv.data?.modifierName }} 于 {{ articleDv.data?.updatedAt }} 更新</el-text>\r\n </template>\r\n <template #extra>\r\n <div class=\"mk-cms-article-eidtadd__header_tools\">\r\n <el-tag v-if=\"!articleDv.data?.publishTime\" effect=\"dark\" round>未发布</el-tag>\r\n <el-text v-else>发布时间:{{ articleDv.data?.publishTime }}</el-text>\r\n <el-dropdown>\r\n <span class=\"el-dropdown-link\" style=\"margin-left: 10px;\">\r\n <el-button type=\"primary\" plain>\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 10px;\" />\r\n 保存\r\n </el-button>\r\n </span>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item @click=\"saveHandle\">\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 5px;\" />\r\n 仅保存\r\n </el-dropdown-item>\r\n <el-dropdown-item>\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 5px;\" />\r\n 保存为草稿\r\n </el-dropdown-item>\r\n <el-dropdown-item>\r\n <MKSvgIcon iconClass=\"View\" style=\"margin-right: 5px;\" />\r\n 保存并预览\r\n </el-dropdown-item>\r\n <el-dropdown-item>\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=\"articleDv.loading\">\r\n\r\n <MKDocEditor v-if=\"articleDv.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: showExtentions! }\" ref=\"extentionsRef\">\r\n <MKSvgIcon icon-class=\"ArrowLeft\" class=\"open\" @click=\"showExtentionsHandle\" v-if=\"showExtentions\">\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=\"articleDv\">\r\n <MKForm :dataForm=\"articleDv\" style=\"width:225px\" label-width=\"110px\">\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isTop\"></MKDataFormItem>\r\n </el-row>\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isNew\"></MKDataFormItem>\r\n </el-row>\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isHotRecommend\"></MKDataFormItem>\r\n </el-row>\r\n <el-row>\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=\"articleDv.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=\"articleDv.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>\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-row class=\"cover-desc\">\r\n <MKUploadFile v-model=\"articleDv.data.cover\" class=\"cover\" :uploadContext=\"new MaterialUploadContext({\r\n allowMaterialTypeValues: [1],\r\n })\">\r\n <el-image class=\"cover-image\" :src=\"articleDv.data.cover\" style=\"width: 100%; height: 100%\"\r\n fit=\"contain\">\r\n <template #error>\r\n <MKSvgIcon iconClass=\"Picture\" />\r\n </template>\r\n </el-image>\r\n </MKUploadFile>\r\n <el-input class=\"desc\" type=\"textarea\" :autosize=\"{ minRows: 5, maxRows: 10 }\" maxlength=\"1000\"\r\n show-word-limit placeholder=\"[选填] 文章简介\" v-model=\"articleDv.data.desc\" />\r\n </el-row>\r\n <el-divider content-position=\"left\">文章封面</el-divider>\r\n <el-row>\r\n <MKUploadFile class=\"banner\" v-model=\"articleDv.data.banner\" :uploadContext=\"new MaterialUploadContext({\r\n allowMaterialTypeValues: [1],\r\n })\">\r\n <el-image class=\"cover-image\" :src=\"articleDv.data.banner\" style=\"width: 100%; height: 100%\"\r\n fit=\"cover\">\r\n <template #error>\r\n <MKSvgIcon iconClass=\"Picture\" />\r\n </template>\r\n </el-image>\r\n </MKUploadFile>\r\n </el-row>\r\n </div>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"文章资源库\" name=\"atlas\">\r\n <ArticleAtlas v-model=\"atlas\" :articleId=\"parseInt(articleDv.data?.id)\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"页面设置\" name=\"settings\">\r\n <MKDataForm :dataForm=\"articleDv\" label-width=\"120px\">\r\n <MKForm :dataForm=\"articleDv\">\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 { MKDocEditor, MKSvgIcon } 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 { MaterialUploadContext } from \"../../../ms\";\r\n\r\nconst route = useRoute()\r\nconst router = useRouter();\r\n\r\n\r\n// 文章请求\r\nconst articleDv = reactive(new CmsArticlesForm()) as CmsArticlesForm;\r\nconst articleOptionsActive = ref(\"content\");\r\n\r\n//qiat\r\n\r\n// 标题\r\nconst title = computed({\r\n get() { return articleDv.data?.title || \"\"; },\r\n set(val) { articleDv.data.title = val; }\r\n});\r\n// 子标题\r\nconst subTitle = computed({\r\n get() { return articleDv.data?.subTitle || \"\"; },\r\n set(val) { articleDv.data.subTitle = val; }\r\n});\r\n// 发布时间\r\nconst releaseDate = computed({\r\n get() { return articleDv.data?.releaseDate || articleDv.data?.publishTime; },\r\n set(val) { articleDv.data.releaseDate = val; }\r\n});\r\n// 标签\r\nconst tags = ref([]);\r\n// computed({ \r\n// get() { return articleDv.data?.tags || [] }, \r\n// set(val) { articleDv.data.tags = val; } \r\n// });\r\n// 内容\r\nconst content = computed({\r\n get() { return articleDv.data?.content || \"\"; },\r\n set(val) { articleDv.data.content = val; }\r\n});\r\n\r\n// 图集\r\nconst atlas = computed({\r\n get() {\r\n return articleDv.data?.atlas\r\n },\r\n set(val) { articleDv.data.atlas = val; }\r\n});\r\n\r\n\r\nonMounted(() => {\r\n\r\n // 初始化数据加载\r\n if (route.query.id) {\r\n articleDv.editRecord(route.query.id);\r\n }\r\n else if (route.query.partId) {\r\n articleDv.addRecord({\r\n cmsPartId: route.query.partId\r\n });\r\n }\r\n else {\r\n articleDv.addRecord();\r\n }\r\n articleDv.init();\r\n \r\n})\r\n\r\n// 保存\r\nconst saveHandle = async () => {\r\n\r\n let result = await articleDv.submit();\r\n if (route.query.id) {\r\n articleDv.editRecord(route.query.id);\r\n } else if (route.query.partId) {\r\n articleDv.addRecord({\r\n cmsPartId: route.query.partId\r\n });\r\n } else {\r\n articleDv.addRecord();\r\n }\r\n}\r\nconst showExtentions = ref(false);\r\nconst extentionsRef = ref();\r\n// 隐藏扩展\r\nconst hideExtentionsHandle = () => {\r\n\r\n showExtentions.value = true;\r\n}\r\n//展示扩展\r\nconst showExtentionsHandle = () => {\r\n\r\n showExtentions.value = false;\r\n\r\n}\r\n\r\nconst EditorChangeHandle = (v: any) => {\r\n articleDv.data.content = v;\r\n}\r\n\r\n</script>\r\n"],"names":["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=\"null\"\r\n @back=\"() => router.push({ name: 'cms/contents', query: { pid: articleDv?.data?.cmsPartId } })\">\r\n <template #content>\r\n <el-text v-if=\"!articleDv.data?.modifier\">{{ !!route.query.id ? \"编辑文章\" : \"创建文章\" }}</el-text>\r\n <el-text v-else>{{ articleDv.data?.modifierName }} 于 {{ articleDv.data?.updatedAt }} 更新</el-text>\r\n </template>\r\n <template #extra>\r\n <div class=\"mk-cms-article-eidtadd__header_tools\">\r\n <el-tag v-if=\"!articleDv.data?.publishTime\" effect=\"dark\" round>未发布</el-tag>\r\n <el-text v-else>发布时间:{{ articleDv.data?.publishTime }}</el-text>\r\n <el-dropdown>\r\n <span class=\"el-dropdown-link\" style=\"margin-left: 10px;\">\r\n <el-button type=\"primary\" plain>\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 10px;\" />\r\n 保存\r\n </el-button>\r\n </span>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item @click=\"saveHandle\">\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 5px;\" />\r\n 仅保存\r\n </el-dropdown-item>\r\n <el-dropdown-item>\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 5px;\" />\r\n 保存为草稿\r\n </el-dropdown-item>\r\n <el-dropdown-item>\r\n <MKSvgIcon iconClass=\"View\" style=\"margin-right: 5px;\" />\r\n 保存并预览\r\n </el-dropdown-item>\r\n <el-dropdown-item>\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=\"articleDv.loading\">\r\n\r\n <MKDocEditor v-if=\"articleDv.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: showExtentions! }\" ref=\"extentionsRef\">\r\n <MKSvgIcon icon-class=\"ArrowLeft\" class=\"open\" @click=\"showExtentionsHandle\" v-if=\"showExtentions\">\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=\"articleDv\">\r\n <MKForm :dataForm=\"articleDv\" style=\"width:225px\" label-width=\"110px\">\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isTop\"></MKDataFormItem>\r\n </el-row>\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isNew\"></MKDataFormItem>\r\n </el-row>\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isHotRecommend\"></MKDataFormItem>\r\n </el-row>\r\n <el-row>\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=\"articleDv.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=\"articleDv.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>\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 <!-- <MKUploadFile v-model=\"articleDv.data.cover\" class=\"cover\" :uploadContext=\"new MaterialUploadContext({\r\n allowMaterialTypeValues: [1],\r\n })\">\r\n <MKSvgIcon iconClass=\"close\"></MKSvgIcon>\r\n <el-image class=\"cover-image\" :src=\"articleDv.data.cover\" style=\"width: 100%; height: 100%\"\r\n fit=\"contain\">\r\n <template #error>\r\n <MKSvgIcon iconClass=\"Picture\" />\r\n </template>\r\n </el-image>\r\n </MKUploadFile> -->\r\n <MKUploadImage v-model=\"articleDv.data.cover\" width=\"115px\" height=\"115px\":uploadContext=\"new MaterialUploadContext({\r\n allowMaterialTypeValues: [1],\r\n })\">\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=\"articleDv.data.banner\" width=\"100%\" height=\"300px\":uploadContext=\"new MaterialUploadContext({\r\n allowMaterialTypeValues: [1],\r\n })\">\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\">\r\n <ArticleAtlas v-model=\"atlas\" :articleId=\"parseInt(articleDv.data?.id)\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"页面设置\" name=\"settings\">\r\n <MKDataForm :dataForm=\"articleDv\" label-width=\"120px\">\r\n <MKForm :dataForm=\"articleDv\">\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 { 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 { MaterialUploadContext } from \"../../../ms\";\r\n\r\nconst route = useRoute()\r\nconst router = useRouter();\r\n\r\n\r\n// 文章请求\r\nconst articleDv = reactive(new CmsArticlesForm()) as CmsArticlesForm;\r\nconst articleOptionsActive = ref(\"content\");\r\n\r\n\r\n// 标题\r\nconst title = computed({\r\n get() { return articleDv.data?.title || \"\"; },\r\n set(val) { articleDv.data.title = val; }\r\n});\r\n// 子标题\r\nconst subTitle = computed({\r\n get() { return articleDv.data?.subTitle || \"\"; },\r\n set(val) { articleDv.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 articleDv.data?.desc || getDefaultDescContent();\r\n },\r\n set(val) {\r\n articleDv.data.desc = val;\r\n }\r\n});\r\n// 发布时间\r\nconst releaseDate = computed({\r\n get() { return articleDv.data?.releaseDate || articleDv.data?.publishTime; },\r\n set(val) { articleDv.data.releaseDate = val; }\r\n});\r\n// 标签\r\nconst tags = ref([]);\r\n// computed({ \r\n// get() { return articleDv.data?.tags || [] }, \r\n// set(val) { articleDv.data.tags = val; } \r\n// });\r\n// 内容\r\nconst content = computed({\r\n get() { return articleDv.data?.content || \"\"; },\r\n set(val) { articleDv.data.content = val; }\r\n});\r\n\r\n// 图集\r\nconst atlas = computed({\r\n get() {\r\n return articleDv.data?.atlas\r\n },\r\n set(val) { articleDv.data.atlas = val; }\r\n});\r\n\r\n\r\nonMounted(() => {\r\n\r\n // 初始化数据加载\r\n if (route.query.id) {\r\n articleDv.editRecord(route.query.id);\r\n }\r\n else if (route.query.partId) {\r\n articleDv.addRecord({\r\n cmsPartId: route.query.partId\r\n });\r\n }\r\n else {\r\n articleDv.addRecord();\r\n }\r\n\r\n articleDv.init();\r\n\r\n})\r\n\r\n// 保存\r\nconst saveHandle = async () => {\r\n\r\n // 简介不存在的时候使用自动生成的\r\n if (!articleDv.data?.desc) {\r\n desc.value = getDefaultDescContent();\r\n }\r\n\r\n let result = await articleDv.submit();\r\n\r\n if (route.query.id) {\r\n articleDv.editRecord(route.query.id);\r\n }\r\n else if (route.query.partId) {\r\n articleDv.addRecord({\r\n cmsPartId: route.query.partId\r\n });\r\n }\r\n else {\r\n articleDv.addRecord();\r\n }\r\n}\r\nconst showExtentions = ref(false);\r\nconst extentionsRef = ref();\r\n// 隐藏扩展\r\nconst hideExtentionsHandle = () => {\r\n\r\n showExtentions.value = true;\r\n}\r\n//展示扩展\r\nconst showExtentionsHandle = () => {\r\n\r\n showExtentions.value = false;\r\n\r\n}\r\n\r\nconst EditorChangeHandle = (v: any) => {\r\n articleDv.data.content = v;\r\n}\r\n\r\n</script>\r\n"],"names":["useRoute","useRouter","reactive","CmsArticlesForm","ref","computed","onMounted"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  const vue = require("vue");
3
- const icons = require("@element-plus/icons-vue");
3
+ const elIcons = require("@element-plus/icons-vue");
4
4
  const CmsArticleAtlasForm = require("../../../dataviews/cms-articles/cms-article-atlas/CmsArticleAtlasForm.js");
5
5
  require("@maketribe/dm");
6
6
  require("../../../../../components/abstract/abstract-select/abstract-select.js");
@@ -216,7 +216,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
216
216
  default: vue.withCtx(() => [
217
217
  vue.createVNode(_component_el_dropdown_item, {
218
218
  class: "edit-button",
219
- icon: vue.unref(icons.EditPen),
219
+ icon: vue.unref(elIcons.EditPen),
220
220
  onClick: ($event) => editHandle(item)
221
221
  }, {
222
222
  default: vue.withCtx(() => [
@@ -226,7 +226,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
226
226
  }, 1032, ["icon", "onClick"]),
227
227
  vue.createVNode(_component_el_dropdown_item, {
228
228
  class: "delete-button",
229
- icon: vue.unref(icons.Delete),
229
+ icon: vue.unref(elIcons.Delete),
230
230
  onClick: ($event) => deleteHandle(index2)
231
231
  }, {
232
232
  default: vue.withCtx(() => [
@@ -243,7 +243,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
243
243
  vue.createTextVNode(" 更多"),
244
244
  vue.createVNode(_component_el_icon, { class: "el-icon--right" }, {
245
245
  default: vue.withCtx(() => [
246
- vue.createVNode(vue.unref(icons.ArrowDown))
246
+ vue.createVNode(vue.unref(elIcons.ArrowDown))
247
247
  ]),
248
248
  _: 1
249
249
  })
@@ -81,11 +81,11 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
81
81
  };
82
82
  const showPublish = vue.ref(false);
83
83
  const optionData = vue.ref({
84
- isPublishList: true,
85
- isPublishCover: true,
86
- isPublishContent: true,
87
- isPublishAssets: true,
88
- isCompulsion: false
84
+ isPublishList: false,
85
+ isPublishCover: false,
86
+ isPublishContent: false,
87
+ isPublishAssets: false,
88
+ isCompulsion: true
89
89
  });
90
90
  const btnLoading = vue.ref(false);
91
91
  const activeTabName = vue.ref("article-list");
@@ -96,9 +96,13 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
96
96
  vue.onMounted(() => {
97
97
  partDataForm.init();
98
98
  });
99
- const selectPartHandle = (item) => {
99
+ const selectPartHandle = async (item) => {
100
100
  if (curSelectPartItem.value != item) {
101
101
  curSelectPartItem.value = item;
102
+ console.warn(`🚀 ~ file: index.vue:169 ~ curSelectPartItem.value:`, curSelectPartItem.value);
103
+ if (!curSelectPartItem.value.contentTemplate) {
104
+ activeTabName.value = "part";
105
+ }
102
106
  partDataForm.editRecord(curSelectPartItem.value.id);
103
107
  router.replace({ name: "cms/contents", query: { pid: curSelectPartItem.value.id } });
104
108
  partExt.value = partExtensions.usePartExtension(curSelectPartItem.value.id);
@@ -152,6 +156,11 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
152
156
  partForm.addRecord({ parentId: item.id });
153
157
  }
154
158
  };
159
+ vue.watch(activeTabName, async () => {
160
+ if (activeTabName.value == "part") {
161
+ curSelectPartItem.value = (await partDataForm.editRecord(curSelectPartItem.value.id)).data.data;
162
+ }
163
+ });
155
164
  partForm.submittedEvent.on(() => {
156
165
  var _a;
157
166
  (_a = partTreeRef.value.dataTree) == null ? void 0 : _a.load();
@@ -203,9 +212,8 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
203
212
  }
204
213
  };
205
214
  const savePartHandle = async () => {
206
- var _a;
215
+ curSelectPartItem.value = partDataForm.data;
207
216
  await partDataForm.submit();
208
- await ((_a = partTreeRef.value.dataTree) == null ? void 0 : _a.load());
209
217
  };
210
218
  const EditorChangeHandle = (v) => {
211
219
  partDataForm.data.content = v;
@@ -297,21 +305,23 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
297
305
  }, {
298
306
  default: vue.withCtx(() => [
299
307
  vue.createElementVNode("div", _hoisted_5, [
300
- partExt.value && activeTabName.value == "part-content" ? (vue.openBlock(), vue.createBlock(_component_el_button, {
301
- key: 0,
302
- type: "primary",
303
- text: "",
304
- onClick: _cache[0] || (_cache[0] = ($event) => partExt.value.save())
305
- }, {
306
- default: vue.withCtx(() => [
307
- vue.createVNode(_component_MKSvgIcon, {
308
- iconClass: "save",
309
- style: { "margin-right": "5px" }
310
- }),
311
- vue.createTextVNode(" 保存 ")
312
- ]),
313
- _: 1
314
- })) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
308
+ partExt.value && activeTabName.value == "part-ext" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
309
+ partExt.value.save ? (vue.openBlock(), vue.createBlock(_component_el_button, {
310
+ key: 0,
311
+ type: "primary",
312
+ text: "",
313
+ onClick: _cache[0] || (_cache[0] = ($event) => partExt.value.save())
314
+ }, {
315
+ default: vue.withCtx(() => [
316
+ vue.createVNode(_component_MKSvgIcon, {
317
+ iconClass: "save",
318
+ style: { "margin-right": "5px" }
319
+ }),
320
+ vue.createTextVNode(" 保存 ")
321
+ ]),
322
+ _: 1
323
+ })) : vue.createCommentVNode("", true)
324
+ ], 64)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
315
325
  activeTabName.value != "article-list" ? (vue.openBlock(), vue.createBlock(_component_el_button, {
316
326
  key: 0,
317
327
  type: "primary",
@@ -324,16 +334,17 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
324
334
  iconClass: "save",
325
335
  style: { "margin-right": "5px" }
326
336
  }),
327
- vue.createTextVNode(" 栏目保存 ")
337
+ vue.createTextVNode(" 保存 ")
328
338
  ]),
329
339
  _: 1
330
340
  }, 8, ["disabled"])) : vue.createCommentVNode("", true)
331
341
  ], 64)),
332
342
  vue.createVNode(_component_el_dropdown, null, {
333
343
  dropdown: vue.withCtx(() => [
334
- curSelectPartItem.value.coverTemplate ? (vue.openBlock(), vue.createBlock(_component_el_dropdown_menu, { key: 0 }, {
344
+ vue.createVNode(_component_el_dropdown_menu, null, {
335
345
  default: vue.withCtx(() => [
336
- vue.createVNode(_component_el_dropdown_item, {
346
+ curSelectPartItem.value.coverTemplate ? (vue.openBlock(), vue.createBlock(_component_el_dropdown_item, {
347
+ key: 0,
337
348
  onClick: _cache[2] || (_cache[2] = ($event) => previewHandle())
338
349
  }, {
339
350
  default: vue.withCtx(() => [
@@ -344,9 +355,9 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
344
355
  vue.createTextVNode(" 预览封面 ")
345
356
  ]),
346
357
  _: 1
347
- }),
358
+ })) : vue.createCommentVNode("", true),
348
359
  curSelectPartItem.value.listTemplate ? (vue.openBlock(), vue.createBlock(_component_el_dropdown_item, {
349
- key: 0,
360
+ key: 1,
350
361
  onClick: _cache[3] || (_cache[3] = ($event) => previewHandle(true))
351
362
  }, {
352
363
  default: vue.withCtx(() => [
@@ -372,7 +383,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
372
383
  })
373
384
  ]),
374
385
  _: 1
375
- })) : vue.createCommentVNode("", true)
386
+ })
376
387
  ]),
377
388
  default: vue.withCtx(() => [
378
389
  vue.createElementVNode("span", _hoisted_6, [
@@ -390,7 +401,8 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
390
401
  _: 1
391
402
  })
392
403
  ]),
393
- vue.createVNode(_component_el_tab_pane, {
404
+ curSelectPartItem.value.contentTemplate ? (vue.openBlock(), vue.createBlock(_component_el_tab_pane, {
405
+ key: 0,
394
406
  label: "文章列表",
395
407
  name: "article-list"
396
408
  }, {
@@ -401,9 +413,9 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
401
413
  }, null, 8, ["part"])) : vue.createCommentVNode("", true)
402
414
  ]),
403
415
  _: 1
404
- }),
416
+ })) : vue.createCommentVNode("", true),
405
417
  vue.withDirectives((vue.openBlock(), vue.createBlock(_component_el_tab_pane, {
406
- label: "栏目信息",
418
+ label: "栏目设置",
407
419
  name: "part"
408
420
  }, {
409
421
  default: vue.withCtx(() => [
@@ -419,7 +431,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
419
431
  [_directive_loading, partDataForm.loading]
420
432
  ]),
421
433
  curSelectPartItem.value.cmsPartTypeId != 1 ? vue.withDirectives((vue.openBlock(), vue.createBlock(_component_el_tab_pane, {
422
- key: 0,
434
+ key: 1,
423
435
  label: "页面内容",
424
436
  name: "part-content",
425
437
  style: { "background-color": "#f4f4f4" }
@@ -427,20 +439,28 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
427
439
  default: vue.withCtx(() => {
428
440
  var _a;
429
441
  return [
430
- partExt.value ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(partExt.value.component), { key: 0 })) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
431
- activeTabName.value == "part-content" ? (vue.openBlock(), vue.createBlock(vue.unref(index$1.MKDocEditor), {
432
- key: 0,
433
- content: (_a = partDataForm.data) == null ? void 0 : _a.content,
434
- placeholder: "从这里开始写正文...",
435
- onChange: EditorChangeHandle
436
- }, null, 8, ["content"])) : vue.createCommentVNode("", true)
437
- ], 64))
442
+ activeTabName.value == "part-content" ? (vue.openBlock(), vue.createBlock(vue.unref(index$1.MKDocEditor), {
443
+ key: 0,
444
+ content: (_a = partDataForm.data) == null ? void 0 : _a.content,
445
+ placeholder: "从这里开始写正文...",
446
+ onChange: EditorChangeHandle
447
+ }, null, 8, ["content"])) : vue.createCommentVNode("", true)
438
448
  ];
439
449
  }),
440
450
  _: 1
441
451
  })), [
442
452
  [_directive_loading, partDataForm.loading]
443
- ]) : vue.createCommentVNode("", true)
453
+ ]) : vue.createCommentVNode("", true),
454
+ partExt.value ? (vue.openBlock(), vue.createBlock(_component_el_tab_pane, {
455
+ key: 2,
456
+ label: "页面扩展设置",
457
+ name: "part-ext"
458
+ }, {
459
+ default: vue.withCtx(() => [
460
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(partExt.value.component)))
461
+ ]),
462
+ _: 1
463
+ })) : vue.createCommentVNode("", true)
444
464
  ]),
445
465
  _: 1
446
466
  }, 8, ["modelValue"])) : (vue.openBlock(), vue.createBlock(_component_el_empty, {
@@ -483,24 +503,27 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
483
503
  vue.createTextVNode(),
484
504
  vue.createVNode(vue.unref(elementPlus.ElSwitch), {
485
505
  modelValue: optionData.value.isPublishList,
486
- "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => optionData.value.isPublishList = $event)
487
- }, null, 8, ["modelValue"])
506
+ "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => optionData.value.isPublishList = $event),
507
+ disabled: !curSelectPartItem.value.listTemplate
508
+ }, null, 8, ["modelValue", "disabled"])
488
509
  ]),
489
510
  vue.createElementVNode("div", null, [
490
511
  _hoisted_9,
491
512
  vue.createTextVNode(),
492
513
  vue.createVNode(vue.unref(elementPlus.ElSwitch), {
493
514
  modelValue: optionData.value.isPublishCover,
494
- "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => optionData.value.isPublishCover = $event)
495
- }, null, 8, ["modelValue"])
515
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => optionData.value.isPublishCover = $event),
516
+ disabled: !curSelectPartItem.value.coverTemplate
517
+ }, null, 8, ["modelValue", "disabled"])
496
518
  ]),
497
519
  vue.createElementVNode("div", null, [
498
520
  _hoisted_10,
499
521
  vue.createTextVNode(),
500
522
  vue.createVNode(vue.unref(elementPlus.ElSwitch), {
501
523
  modelValue: optionData.value.isPublishContent,
502
- "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => optionData.value.isPublishContent = $event)
503
- }, null, 8, ["modelValue"])
524
+ "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => optionData.value.isPublishContent = $event),
525
+ disabled: !curSelectPartItem.value.contentTemplate
526
+ }, null, 8, ["modelValue", "disabled"])
504
527
  ]),
505
528
  vue.createElementVNode("div", null, [
506
529
  _hoisted_11,
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue2.js","sources":["../../../../../../src/modules/cms/pages/cms-contents/index.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-contents__warp\" v-loading=\"loading\">\r\n <el-page-header style=\"background-color: #fff; padding: 10px\" :icon=\"null\">\r\n <template #title>\r\n <h3 style=\"color: var(--el-text-color-regular); margin-left: 10px\">\r\n <MKSvgIcon iconClass=\"richtext-outline\" style=\"margin-right: 5px\" />\r\n 内容管理\r\n </h3>\r\n </template>\r\n <template #extra>\r\n <div class=\"flex items-center\">\r\n <el-button-group>\r\n <el-button type=\"primary\" size=\"large\" text @click=\"publishAllHandle\">\r\n <MKSvgIcon iconClass=\"Promotion\" style=\"margin-right: 10px\" />\r\n 整站发布\r\n </el-button>\r\n <el-button type=\"primary\" size=\"large\" text @click=\"showPartFormHandle\">\r\n <MKSvgIcon iconClass=\"Plus\" style=\"margin-right: 10px\" />\r\n 新增栏目\r\n </el-button>\r\n </el-button-group>\r\n </div>\r\n </template>\r\n </el-page-header>\r\n <div class=\"mk-cms-contents__body\">\r\n <MKPartTree class=\"mk-cms-contents__body__left\" @select=\"selectPartHandle\" @edit=\"editPartHandle\"\r\n @add=\"showPartFormHandle\" @deleteSuccessfully=\"deletePartHandle\" ref=\"partTreeRef\" :curSelectId=\"(route.query.pid as string)\" />\r\n <el-tabs v-if=\"curSelectPartItem\" v-model=\"activeTabName\" class=\"mk-cms-contents__body__right\">\r\n <div class=\"mk-cms-contents__body__right__action\">\r\n\r\n <template v-if=\" partExt && activeTabName == 'part-content'\">\r\n <el-button type=\"primary\" text @click=\"partExt.save()\">\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 5px\" />\r\n 保存\r\n </el-button>\r\n </template>\r\n <template v-else>\r\n <el-button type=\"primary\" text @click=\"savePartHandle()\" :disabled=\"!partDataForm?.isChanged\" v-if=\"activeTabName != 'article-list'\">\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 5px\" />\r\n 栏目保存\r\n </el-button>\r\n </template>\r\n <el-dropdown>\r\n <span class=\"el-dropdown-link\">\r\n <el-button type=\"primary\" text>\r\n <MKSvgIcon iconClass=\"MoreFilled\"/>\r\n </el-button>\r\n </span>\r\n <template #dropdown>\r\n <el-dropdown-menu v-if=\"curSelectPartItem.coverTemplate\">\r\n <el-dropdown-item @click=\"previewHandle()\">\r\n <MKSvgIcon iconClass=\"View\" style=\"margin-left: 10px;\" />\r\n 预览封面\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"previewHandle(true)\" v-if=\"curSelectPartItem.listTemplate\">\r\n <MKSvgIcon iconClass=\"View\" style=\"margin-left: 10px;\" />\r\n 预览列表\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"showPublish = true\">\r\n <MKSvgIcon iconClass=\"Promotion\" style=\"margin-left: 10px;\" />\r\n 发布当前栏目\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <!-- <el-button type=\"primary\" size=\"large\" text @click=\"showPublish = true\">\r\n 栏目发布\r\n <MKSvgIcon iconClass=\"Promotion\" style=\"margin-left: 10px\" />\r\n </el-button> -->\r\n \r\n </div>\r\n <el-tab-pane label=\"文章列表\" name=\"article-list\">\r\n <ArticleList v-if=\"activeTabName == 'article-list'\" :part=\"curSelectPartItem\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"栏目信息\" name=\"part\" v-loading=\"partDataForm.loading\">\r\n <PartInfo v-if=\"activeTabName == 'part'\" :part=\"curSelectPartItem\" ref=\"partInfoRef\"\r\n :partDataForm=\"partDataForm\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"页面内容\" name=\"part-content\" style=\"background-color: #f4f4f4\"\r\n v-if=\"curSelectPartItem.cmsPartTypeId != 1\" v-loading=\"partDataForm.loading\">\r\n <template v-if=\"partExt\">\r\n <component :is=\"partExt.component\" />\r\n </template>\r\n <template v-else>\r\n <MKDocEditor v-if=\"activeTabName == 'part-content'\" :content=\"partDataForm.data?.content\"\r\n placeholder=\"从这里开始写正文...\" @change=\"EditorChangeHandle\" />\r\n </template>\r\n \r\n </el-tab-pane>\r\n </el-tabs>\r\n <el-empty v-else description=\"请选择栏目\" style=\"width: 100%\" />\r\n </div>\r\n <el-dialog v-model=\"showPublish\" title=\"栏目发布\" width=\"475px\" :append-to-body=\"false\">\r\n <div class=\"mk-cms-contents__publish\">\r\n <div><span>是否发布列表:</span> <el-switch v-model=\"optionData.isPublishList\" /></div>\r\n <div><span>是否发布封面:</span> <el-switch v-model=\"optionData.isPublishCover\" /></div>\r\n <div><span>是否发布内容:</span> <el-switch v-model=\"optionData.isPublishContent\" /></div>\r\n <div><span>是否发布资源:</span> <el-switch v-model=\"optionData.isPublishAssets\" /></div>\r\n <div><span>是否强制发布:</span> <el-switch v-model=\"optionData.isCompulsion\" /></div>\r\n </div>\r\n <template #footer>\r\n <el-button @click=\"showPublish = false\">取消</el-button>\r\n <el-button type=\"primary\" @click=\"publishPartHandle\" :loading=\"btnLoading\">确定</el-button>\r\n </template>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n<script setup lang=\"ts\">\r\nimport { MKPartTree } from \"../../components\";\r\nimport ArticleList from \"./components/article-list.vue\";\r\nimport PartInfo from \"./components/part-info.vue\";\r\nimport { MKDocEditor } from \"../../../../components\";\r\nimport { reactive, ref,onMounted } from \"vue\";\r\nimport { Dialoger, FormColumn, Messager } from \"@maketribe/dm\";\r\nimport { CmsContentManPartForm,CmsPartForm, CmsPartTypesTable } from \"../../dataviews\";\r\nimport { useRoute,useRouter } from \"vue-router\";\r\nimport { MSAppClient } from \"../../../../core\";\r\nimport { usePartExtension ,type PartExtension } from \"../../composables/part-extensions\"\r\nimport { ElSwitch } from \"element-plus\";\r\n//路由\r\nconst route = useRoute();\r\nconst router = useRouter();\r\n//预览\r\nconst previewHandle = (isList = false) => {\r\n if (isList) {\r\n window.open(`/api/cms/content/preview/part/${curSelectPartItem.value.id}?pageNo=1`)\r\n } else {\r\n window.open(`/api/cms/content/preview/part/${curSelectPartItem.value.id}`)\r\n }\r\n}\r\n\r\n//发布栏目时的配置\r\nconst showPublish = ref(false)\r\n\r\n//发布配置项\r\nconst optionData = ref({\r\n isPublishList: true,\r\n isPublishCover: true,\r\n isPublishContent: true,\r\n isPublishAssets: true,\r\n isCompulsion: false\r\n});\r\n//发布弹窗的按钮\r\nconst btnLoading = ref(false);\r\n\r\n// 激活的tab\r\nconst activeTabName = ref(\"article-list\");\r\n\r\n// 当前选中的菜单\r\nconst curSelectPartItem = ref(null as any);\r\n\r\n// 栏目树ref\r\nconst partTreeRef = ref(null);\r\n\r\n//栏目扩展\r\nconst partExt = ref<PartExtension>();\r\n\r\n//栏目数据\r\nconst partDataForm = reactive(new CmsContentManPartForm()) as CmsContentManPartForm;\r\n\r\n// 挂载的时候初始化下\r\nonMounted(()=>{\r\n // 需要走一下初始化\r\n partDataForm.init();\r\n})\r\n\r\n// 选择栏目\r\nconst selectPartHandle = (item: any) => {\r\n if(curSelectPartItem.value != item){\r\n curSelectPartItem.value = item;\r\n partDataForm.editRecord(curSelectPartItem.value.id)\r\n router.replace({name:'cms/contents',query:{pid:curSelectPartItem.value.id} } as any)\r\n partExt.value = usePartExtension(curSelectPartItem.value.id);\r\n }\r\n};\r\n//删除栏目\r\nconst deletePartHandle = (item: any) => {\r\n if (item.id == curSelectPartItem.value.id) {\r\n curSelectPartItem.value = null;\r\n }\r\n};\r\n//编辑栏目\r\nconst editPartHandle = (item: any) => {\r\n curSelectPartItem.value = item;\r\n activeTabName.value = \"part\";\r\n};\r\n\r\n//栏目表单\r\nconst partForm = reactive(\r\n new (class extends CmsPartForm {\r\n protected async initialize() {\r\n await super.initialize();\r\n this.setColumns([\r\n new FormColumn({\r\n name: \"cmsPartTypeId\",\r\n label: \"栏目类型\",\r\n componentInfo: \"MKFormDataSelect\",\r\n defaultValue: \"2\",\r\n componentProps: {\r\n dataTable: this.register(\r\n new CmsPartTypesTable()\r\n ) as CmsPartTypesTable,\r\n },\r\n required: true,\r\n }),\r\n new FormColumn({\r\n name: \"name\",\r\n label: \"栏目名称\",\r\n required: true,\r\n }),\r\n new FormColumn({\r\n name: \"title\",\r\n label: \"栏目标题\",\r\n required: true,\r\n }),\r\n ]);\r\n }\r\n })()\r\n);\r\n/**\r\n * 显示添加栏目表单\r\n */\r\nconst showPartFormHandle = async (item?: any) => {\r\n await Dialoger.dataFormDialog({\r\n dataForm: partForm as CmsContentManPartForm,\r\n });\r\n\r\n if (item.id) {\r\n partForm.addRecord({ parentId: item.id });\r\n }\r\n};\r\n\r\n//\r\npartForm.submittedEvent.on(() => {\r\n (partTreeRef.value! as any).dataTree?.load();\r\n});\r\n\r\nconst loading = ref(false)\r\n\r\n// 整站发布\r\nconst publishAllHandle = async () => {\r\n\r\n const httpRequest = MSAppClient.instance?.httpRequest!;\r\n\r\n try {\r\n const isConfirm = await Dialoger.confirm({ title: \"全量发布\", message: \"是否整站全量发布?\", type: \"warning\" })\r\n\r\n if (!isConfirm) {\r\n return;\r\n }\r\n loading.value = true\r\n\r\n const response = await httpRequest.post(\r\n `/cms/content/publish/all`\r\n );\r\n\r\n if (response.data.code !== 200) {\r\n Messager.error({ message: response.data.msg });\r\n return;\r\n }\r\n\r\n Messager.success({ message: \"发布成功\" });\r\n\r\n } finally {\r\n loading.value = false\r\n }\r\n}\r\n\r\nconst publishPartHandle = async () => {\r\n const httpRequest = MSAppClient.instance?.httpRequest!;\r\n try {\r\n btnLoading.value = true\r\n\r\n const response = await httpRequest.post(\r\n `/cms/content/publish/part`, {\r\n partIds: [\r\n curSelectPartItem.value.id\r\n ],\r\n ...optionData.value\r\n }\r\n );\r\n\r\n if (response.data.code !== 200) {\r\n Messager.error({ message: response.data.msg });\r\n return;\r\n }\r\n showPublish.value = false;\r\n Messager.success({ message: \"发布成功\" });\r\n\r\n } finally {\r\n btnLoading.value = false\r\n }\r\n}\r\n\r\n/**\r\n * 保存栏目信息\r\n */\r\nconst savePartHandle = async () => {\r\n await partDataForm.submit();\r\n await (partTreeRef.value! as any).dataTree?.load();\r\n}\r\n\r\n/**\r\n * 更新编辑器内容\r\n * @param v 内容\r\n */\r\nconst EditorChangeHandle = (v: any) => {\r\n partDataForm.data.content = v\r\n}\r\n</script>\r\n"],"names":["useRoute","useRouter","ref","reactive","CmsContentManPartForm","onMounted","usePartExtension","CmsPartForm","FormColumn","CmsPartTypesTable","Dialoger","MSAppClient","Messager"],"mappings":"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"}
1
+ {"version":3,"file":"index.vue2.js","sources":["../../../../../../src/modules/cms/pages/cms-contents/index.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-contents__warp\" v-loading=\"loading\">\r\n <el-page-header style=\"background-color: #fff; padding: 10px\" :icon=\"null\">\r\n <template #title>\r\n <h3 style=\"color: var(--el-text-color-regular); margin-left: 10px\">\r\n <MKSvgIcon iconClass=\"richtext-outline\" style=\"margin-right: 5px\" />\r\n 内容管理\r\n </h3>\r\n </template>\r\n <template #extra>\r\n <div class=\"flex items-center\">\r\n <el-button-group>\r\n <el-button type=\"primary\" size=\"large\" text @click=\"publishAllHandle\">\r\n <MKSvgIcon iconClass=\"Promotion\" style=\"margin-right: 10px\" />\r\n 整站发布\r\n </el-button>\r\n <el-button type=\"primary\" size=\"large\" text @click=\"showPartFormHandle\">\r\n <MKSvgIcon iconClass=\"Plus\" style=\"margin-right: 10px\" />\r\n 新增栏目\r\n </el-button>\r\n </el-button-group>\r\n </div>\r\n </template>\r\n </el-page-header>\r\n <div class=\"mk-cms-contents__body\">\r\n <MKPartTree class=\"mk-cms-contents__body__left\" @select=\"selectPartHandle\" @edit=\"editPartHandle\"\r\n @add=\"showPartFormHandle\" @deleteSuccessfully=\"deletePartHandle\" ref=\"partTreeRef\"\r\n :curSelectId=\"(route.query.pid as string)\" />\r\n <el-tabs v-if=\"curSelectPartItem\" v-model=\"activeTabName\" class=\"mk-cms-contents__body__right\">\r\n <div class=\"mk-cms-contents__body__right__action\">\r\n\r\n <template v-if=\"partExt && activeTabName == 'part-ext'\">\r\n <el-button type=\"primary\" v-if=\"partExt.save\" text @click=\"partExt.save()\">\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 5px\" />\r\n 保存\r\n </el-button>\r\n </template>\r\n <template v-else>\r\n <el-button type=\"primary\" text @click=\"savePartHandle()\" :disabled=\"!partDataForm?.isChanged\"\r\n v-if=\"activeTabName != 'article-list'\">\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 5px\" />\r\n 保存\r\n </el-button>\r\n </template>\r\n <el-dropdown>\r\n <span class=\"el-dropdown-link\">\r\n <el-button type=\"primary\" text>\r\n <MKSvgIcon iconClass=\"MoreFilled\" />\r\n </el-button>\r\n </span>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item @click=\"previewHandle()\" v-if=\"curSelectPartItem.coverTemplate\">\r\n <MKSvgIcon iconClass=\"View\" style=\"margin-left: 10px;\" />\r\n 预览封面\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"previewHandle(true)\" v-if=\"curSelectPartItem.listTemplate\">\r\n <MKSvgIcon iconClass=\"View\" style=\"margin-left: 10px;\" />\r\n 预览列表\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"showPublish = true\">\r\n <MKSvgIcon iconClass=\"Promotion\" style=\"margin-left: 10px;\" />\r\n 发布当前栏目\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </div>\r\n <el-tab-pane label=\"文章列表\" name=\"article-list\" v-if=\"curSelectPartItem.contentTemplate\">\r\n <ArticleList v-if=\"activeTabName == 'article-list'\" :part=\"curSelectPartItem\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"栏目设置\" name=\"part\" v-loading=\"partDataForm.loading\">\r\n <PartInfo v-if=\"activeTabName == 'part'\" :part=\"curSelectPartItem\" ref=\"partInfoRef\"\r\n :partDataForm=\"partDataForm\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"页面内容\" name=\"part-content\" style=\"background-color: #f4f4f4\"\r\n v-if=\"curSelectPartItem.cmsPartTypeId != 1\" v-loading=\"partDataForm.loading\">\r\n <MKDocEditor v-if=\"activeTabName == 'part-content'\" :content=\"partDataForm.data?.content\"\r\n placeholder=\"从这里开始写正文...\" @change=\"EditorChangeHandle\" />\r\n </el-tab-pane>\r\n <el-tab-pane v-if=\"partExt\" label=\"页面扩展设置\" name=\"part-ext\">\r\n <component :is=\"partExt.component\" />\r\n </el-tab-pane>\r\n \r\n </el-tabs>\r\n <el-empty v-else description=\"请选择栏目\" style=\"width: 100%\" />\r\n </div>\r\n <el-dialog v-model=\"showPublish\" title=\"栏目发布\" width=\"475px\" :append-to-body=\"false\">\r\n <div class=\"mk-cms-contents__publish\">\r\n <div><span>是否发布列表:</span> <el-switch v-model=\"optionData.isPublishList\"\r\n :disabled=\"!curSelectPartItem.listTemplate\" /></div>\r\n <div><span>是否发布封面:</span> <el-switch v-model=\"optionData.isPublishCover\"\r\n :disabled=\"!curSelectPartItem.coverTemplate\" /></div>\r\n <div><span>是否发布内容:</span> <el-switch v-model=\"optionData.isPublishContent\"\r\n :disabled=\"!curSelectPartItem.contentTemplate\" /></div>\r\n <div><span>是否发布资源:</span> <el-switch v-model=\"optionData.isPublishAssets\" /></div>\r\n <div><span>是否强制发布:</span> <el-switch v-model=\"optionData.isCompulsion\" /></div>\r\n </div>\r\n <template #footer>\r\n <el-button @click=\"showPublish = false\">取消</el-button>\r\n <el-button type=\"primary\" @click=\"publishPartHandle\" :loading=\"btnLoading\">确定</el-button>\r\n </template>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n<script setup lang=\"ts\">\r\nimport { MKPartTree } from \"../../components\";\r\nimport ArticleList from \"./components/article-list.vue\";\r\nimport PartInfo from \"./components/part-info.vue\";\r\nimport { MKDocEditor } from \"../../../../components\";\r\nimport { reactive, ref, onMounted, watch } from \"vue\";\r\nimport { Dialoger, FormColumn, Messager } from \"@maketribe/dm\";\r\nimport { CmsContentManPartForm, CmsPartForm, CmsPartTypesTable } from \"../../dataviews\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { MSAppClient } from \"../../../../core\";\r\nimport { usePartExtension, type PartExtension } from \"../../composables/part-extensions\"\r\nimport { ElSwitch } from \"element-plus\";\r\n//路由\r\nconst route = useRoute();\r\nconst router = useRouter();\r\n//预览\r\nconst previewHandle = (isList = false) => {\r\n if (isList) {\r\n window.open(`/api/cms/content/preview/part/${curSelectPartItem.value.id}?pageNo=1`)\r\n } else {\r\n window.open(`/api/cms/content/preview/part/${curSelectPartItem.value.id}`)\r\n }\r\n}\r\n\r\n//发布栏目时的配置\r\nconst showPublish = ref(false)\r\n\r\n//发布配置项\r\nconst optionData = ref({\r\n isPublishList: false,\r\n isPublishCover: false,\r\n isPublishContent: false,\r\n isPublishAssets: false,\r\n isCompulsion: true\r\n});\r\n//发布弹窗的按钮\r\nconst btnLoading = ref(false);\r\n\r\n// 激活的tab\r\nconst activeTabName = ref(\"article-list\");\r\n\r\n// 当前选中的菜单\r\nconst curSelectPartItem = ref(null as any);\r\n\r\n// 栏目树ref\r\nconst partTreeRef = ref(null);\r\n\r\n//栏目扩展\r\nconst partExt = ref<PartExtension>();\r\n\r\n//栏目数据\r\nconst partDataForm = reactive(new CmsContentManPartForm()) as CmsContentManPartForm;\r\n\r\n// 挂载的时候初始化下\r\nonMounted(() => {\r\n // 需要走一下初始化\r\n partDataForm.init();\r\n})\r\n\r\n// 选择栏目\r\nconst selectPartHandle = async (item: any) => {\r\n if (curSelectPartItem.value != item) {\r\n curSelectPartItem.value = item;\r\n console.warn(`🚀 ~ file: index.vue:169 ~ curSelectPartItem.value:`, curSelectPartItem.value);\r\n\r\n if (!curSelectPartItem.value.contentTemplate) {\r\n activeTabName.value = \"part\";\r\n }\r\n\r\n partDataForm.editRecord(curSelectPartItem.value.id)\r\n\r\n router.replace({ name: 'cms/contents', query: { pid: curSelectPartItem.value.id } } as any)\r\n partExt.value = usePartExtension(curSelectPartItem.value.id);\r\n }\r\n};\r\n//删除栏目\r\nconst deletePartHandle = (item: any) => {\r\n if (item.id == curSelectPartItem.value.id) {\r\n curSelectPartItem.value = null;\r\n }\r\n};\r\n//编辑栏目\r\nconst editPartHandle = (item: any) => {\r\n curSelectPartItem.value = item;\r\n activeTabName.value = \"part\";\r\n};\r\n\r\n//栏目表单\r\nconst partForm = reactive(\r\n new (class extends CmsPartForm {\r\n protected async initialize() {\r\n await super.initialize();\r\n this.setColumns([\r\n new FormColumn({\r\n name: \"cmsPartTypeId\",\r\n label: \"栏目类型\",\r\n componentInfo: \"MKFormDataSelect\",\r\n defaultValue: \"2\",\r\n componentProps: {\r\n dataTable: this.register(\r\n new CmsPartTypesTable()\r\n ) as CmsPartTypesTable,\r\n },\r\n required: true,\r\n }),\r\n new FormColumn({\r\n name: \"name\",\r\n label: \"栏目名称\",\r\n required: true,\r\n }),\r\n new FormColumn({\r\n name: \"title\",\r\n label: \"栏目标题\",\r\n required: true,\r\n }),\r\n ]);\r\n }\r\n })()\r\n);\r\n/**\r\n * 显示添加栏目表单\r\n */\r\nconst showPartFormHandle = async (item?: any) => {\r\n await Dialoger.dataFormDialog({\r\n dataForm: partForm as CmsContentManPartForm,\r\n });\r\n\r\n if (item.id) {\r\n partForm.addRecord({ parentId: item.id });\r\n }\r\n};\r\n\r\nwatch(activeTabName, async () => {\r\n if (activeTabName.value == \"part\") {\r\n curSelectPartItem.value = (await partDataForm.editRecord(curSelectPartItem.value.id)).data.data\r\n }\r\n})\r\n\r\n//监听表单完成事件\r\npartForm.submittedEvent.on(() => {\r\n (partTreeRef.value! as any).dataTree?.load();\r\n});\r\n\r\nconst loading = ref(false)\r\n\r\n// 整站发布\r\nconst publishAllHandle = async () => {\r\n\r\n const httpRequest = MSAppClient.instance?.httpRequest!;\r\n\r\n try {\r\n const isConfirm = await Dialoger.confirm({ title: \"全量发布\", message: \"是否整站全量发布?\", type: \"warning\" })\r\n\r\n if (!isConfirm) {\r\n return;\r\n }\r\n loading.value = true\r\n\r\n const response = await httpRequest.post(\r\n `/cms/content/publish/all`\r\n );\r\n\r\n if (response.data.code !== 200) {\r\n Messager.error({ message: response.data.msg });\r\n return;\r\n }\r\n\r\n Messager.success({ message: \"发布成功\" });\r\n\r\n } finally {\r\n loading.value = false\r\n }\r\n}\r\n\r\n//栏目发布\r\nconst publishPartHandle = async () => {\r\n const httpRequest = MSAppClient.instance?.httpRequest!;\r\n try {\r\n btnLoading.value = true\r\n\r\n const response = await httpRequest.post(\r\n `/cms/content/publish/part`, {\r\n partIds: [\r\n curSelectPartItem.value.id\r\n ],\r\n ...optionData.value\r\n }\r\n );\r\n\r\n if (response.data.code !== 200) {\r\n Messager.error({ message: response.data.msg });\r\n return;\r\n }\r\n showPublish.value = false;\r\n\r\n Messager.success({ message: \"发布成功\" });\r\n\r\n } finally {\r\n btnLoading.value = false\r\n }\r\n}\r\n\r\n/**\r\n * 保存栏目信息\r\n */\r\nconst savePartHandle = async () => {\r\n curSelectPartItem.value = partDataForm.data;\r\n await partDataForm.submit();\r\n}\r\n\r\n/**\r\n * 更新编辑器内容\r\n * @param v 内容\r\n */\r\nconst EditorChangeHandle = (v: any) => {\r\n partDataForm.data.content = v\r\n}\r\n</script>\r\n"],"names":["useRoute","useRouter","ref","reactive","CmsContentManPartForm","onMounted","usePartExtension","CmsPartForm","FormColumn","CmsPartTypesTable","Dialoger","watch","MSAppClient","Messager"],"mappings":"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"}