@maketribe/ms-app 3.2.10 → 3.2.12

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 (561) hide show
  1. package/dist/cjs/components/abstract/abstract-select/abstract-select-options.js.map +1 -1
  2. package/dist/cjs/components/abstract/abstract-select/abstract-select.js.map +1 -1
  3. package/dist/cjs/components/abstract/abstract-select/index.js.map +1 -1
  4. package/dist/cjs/components/basic/button/button-options.js.map +1 -1
  5. package/dist/cjs/components/basic/code-editor/code-editor-options.js.map +1 -1
  6. package/dist/cjs/components/basic/code-editor/code-editor.js.map +1 -1
  7. package/dist/cjs/components/basic/code-editor/index.js.map +1 -1
  8. package/dist/cjs/components/basic/config-provider/config-provider-options.js.map +1 -1
  9. package/dist/cjs/components/basic/data-select/data-select-options.js.map +1 -1
  10. package/dist/cjs/components/basic/data-select/data-select.js.map +1 -1
  11. package/dist/cjs/components/basic/data-table-select/data-table-select-options.js.map +1 -1
  12. package/dist/cjs/components/basic/data-table-select/data-table-select.js.map +1 -1
  13. package/dist/cjs/components/basic/data-table-select/index.js.map +1 -1
  14. package/dist/cjs/components/basic/data-tree-select/index.js.map +1 -1
  15. package/dist/cjs/components/basic/date-picker/date-picker-options.js.map +1 -1
  16. package/dist/cjs/components/basic/date-picker/date-picker.js.map +1 -1
  17. package/dist/cjs/components/basic/date-picker/index.js.map +1 -1
  18. package/dist/cjs/components/basic/doc-editor/editor.vue.js.map +1 -1
  19. package/dist/cjs/components/basic/doc-editor/lexical-vue/components/LexicalAutoLinkPlugin/index.vue.js +37 -2
  20. package/dist/cjs/components/basic/doc-editor/lexical-vue/components/LexicalAutoLinkPlugin/index.vue.js.map +1 -1
  21. package/dist/cjs/components/basic/doc-editor/lexical-vue/components/LexicalAutoLinkPlugin/index.vue2.js +2 -37
  22. package/dist/cjs/components/basic/doc-editor/lexical-vue/components/LexicalAutoLinkPlugin/index.vue2.js.map +1 -1
  23. package/dist/cjs/components/basic/doc-editor/plugins/AutoLinkPlugin.vue.js +1 -1
  24. package/dist/cjs/components/basic/doc-editor/plugins/HtmlBlockPlugin/DocHtmlBlockComponent.js.map +1 -1
  25. package/dist/cjs/components/basic/doc-editor/plugins/HtmlBlockPlugin/index.vue.js.map +1 -1
  26. package/dist/cjs/components/basic/icon-select/icon-select-options.js.map +1 -1
  27. package/dist/cjs/components/basic/icon-select/icon-select.js.map +1 -1
  28. package/dist/cjs/components/basic/icon-select/index.js.map +1 -1
  29. package/dist/cjs/components/basic/image-cropper/image-cropper-api.js +3 -1
  30. package/dist/cjs/components/basic/image-cropper/image-cropper-api.js.map +1 -1
  31. package/dist/cjs/components/basic/image-cropper/image-cropper-content-options.js +2 -0
  32. package/dist/cjs/components/basic/image-cropper/image-cropper-content-options.js.map +1 -1
  33. package/dist/cjs/components/basic/image-cropper/image-cropper-content.js +24 -23
  34. package/dist/cjs/components/basic/image-cropper/image-cropper-content.js.map +1 -1
  35. package/dist/cjs/components/basic/image-cropper/index.js.map +1 -1
  36. package/dist/cjs/components/basic/json-editor/json-editor-options.js.map +1 -1
  37. package/dist/cjs/components/basic/json-editor/json-editor.js.map +1 -1
  38. package/dist/cjs/components/basic/page-container/index.js.map +1 -1
  39. package/dist/cjs/components/basic/page-container/page-container.js.map +1 -1
  40. package/dist/cjs/components/basic/radio/index.js.map +1 -1
  41. package/dist/cjs/components/basic/radio/radio-options.js.map +1 -1
  42. package/dist/cjs/components/basic/radio/radio.js.map +1 -1
  43. package/dist/cjs/components/basic/system-provider/system-provider.js.map +1 -1
  44. package/dist/cjs/components/basic/upload-file/context/WebFileUploadContext.js.map +1 -1
  45. package/dist/cjs/components/basic/upload-file/ui/upload-image/upload-image.js +2 -0
  46. package/dist/cjs/components/basic/upload-file/ui/upload-image/upload-image.js.map +1 -1
  47. package/dist/cjs/components/business/resource-list/ResourceManager.js.map +1 -1
  48. package/dist/cjs/components/business/resource-list/index.js.map +1 -1
  49. package/dist/cjs/components/business/resource-list/resource-list.vue.js +20 -0
  50. package/dist/cjs/components/business/resource-list/resource-list.vue.js.map +1 -1
  51. package/dist/cjs/components/business/resource-manager/index.js.map +1 -1
  52. package/dist/cjs/components/business/resource-manager/resource-manager.vue.js +0 -19
  53. package/dist/cjs/components/business/resource-manager/resource-manager.vue.js.map +1 -1
  54. package/dist/cjs/components/business/resource-select/index.js.map +1 -1
  55. package/dist/cjs/components/business/resource-select/resource-select-api.js.map +1 -1
  56. package/dist/cjs/components/business/verify-dialog/verify-dialog.js.map +1 -1
  57. package/dist/cjs/components/data-model/data-filter-drawer/data-filter-drawer-options.js.map +1 -1
  58. package/dist/cjs/components/data-model/data-filter-drawer/data-filter-drawer.js.map +1 -1
  59. package/dist/cjs/components/data-model/data-filter-drawer/index.js.map +1 -1
  60. package/dist/cjs/components/data-model/data-filter-form/components/condition-date/condition-date-options.js.map +1 -1
  61. package/dist/cjs/components/data-model/data-filter-form/components/condition-date/condition-date.js.map +1 -1
  62. package/dist/cjs/components/data-model/data-filter-form/components/condition-input/condition-input-options.js.map +1 -1
  63. package/dist/cjs/components/data-model/data-filter-form/components/condition-input/condition-input.js.map +1 -1
  64. package/dist/cjs/components/data-model/data-filter-form/components/condition-number/condition-number-options.js.map +1 -1
  65. package/dist/cjs/components/data-model/data-filter-form/components/condition-number/condition-number.js.map +1 -1
  66. package/dist/cjs/components/data-model/data-filter-form/components/condition-select/condition-select-options.js.map +1 -1
  67. package/dist/cjs/components/data-model/data-filter-form/components/condition-select/condition-select.js.map +1 -1
  68. package/dist/cjs/components/data-model/data-filter-form/composables/use-condition.js.map +1 -1
  69. package/dist/cjs/components/data-model/data-filter-form/data-filter-form-item/data-filter-form-item.js.map +1 -1
  70. package/dist/cjs/components/data-model/data-filter-form/data-filter-form-options.js.map +1 -1
  71. package/dist/cjs/components/data-model/data-filter-form/data-filter-form.js.map +1 -1
  72. package/dist/cjs/components/data-model/data-filter-form/index.js.map +1 -1
  73. package/dist/cjs/components/data-model/data-filter-form/token.js.map +1 -1
  74. package/dist/cjs/components/data-model/data-form/components/form-detail/form-detail-options.js.map +1 -1
  75. package/dist/cjs/components/data-model/data-form/components/form-detail/form-detail.js.map +1 -1
  76. package/dist/cjs/components/data-model/data-form/composables/use-form-item.js.map +1 -1
  77. package/dist/cjs/components/data-model/data-form/data-form-item/data-form-item.js.map +1 -1
  78. package/dist/cjs/components/data-model/data-form/data-form.js.map +1 -1
  79. package/dist/cjs/components/data-model/data-form/index.js.map +1 -1
  80. package/dist/cjs/components/data-model/data-form/token.js.map +1 -1
  81. package/dist/cjs/components/data-model/data-form/views/form/form-options.js.map +1 -1
  82. package/dist/cjs/components/data-model/data-form/views/form/form.js.map +1 -1
  83. package/dist/cjs/components/data-model/data-form/views/form-view/form-view.js.map +1 -1
  84. package/dist/cjs/components/data-model/data-table/components/column-action/column-action-options.js.map +1 -1
  85. package/dist/cjs/components/data-model/data-table/components/column-action/column-action.js.map +1 -1
  86. package/dist/cjs/components/data-model/data-table/components/column-date/column-date.js.map +1 -1
  87. package/dist/cjs/components/data-model/data-table/components/column-icon/column-icon.js.map +1 -1
  88. package/dist/cjs/components/data-model/data-table/components/column-image/column-image-options.js.map +1 -1
  89. package/dist/cjs/components/data-model/data-table/components/column-json/column-json-options.js.map +1 -1
  90. package/dist/cjs/components/data-model/data-table/components/column-json/column-json.js.map +1 -1
  91. package/dist/cjs/components/data-model/data-table/components/column-link/column-link-options.js.map +1 -1
  92. package/dist/cjs/components/data-model/data-table/components/column-object-mapping-text/column-object-mapping-text-options.js.map +1 -1
  93. package/dist/cjs/components/data-model/data-table/components/column-select/column-select-header.js.map +1 -1
  94. package/dist/cjs/components/data-model/data-table/components/column-select/column-select-options.js.map +1 -1
  95. package/dist/cjs/components/data-model/data-table/components/column-select/column-select.js.map +1 -1
  96. package/dist/cjs/components/data-model/data-table/components/column-sort/column-sort-options.js.map +1 -1
  97. package/dist/cjs/components/data-model/data-table/components/column-sort/column-sort.js.map +1 -1
  98. package/dist/cjs/components/data-model/data-table/components/column-sort/index.js.map +1 -1
  99. package/dist/cjs/components/data-model/data-table/components/column-switch/column-switch-options.js.map +1 -1
  100. package/dist/cjs/components/data-model/data-table/components/column-switch/column-switch.js.map +1 -1
  101. package/dist/cjs/components/data-model/data-table/components/column-tag/column-tag-options.js.map +1 -1
  102. package/dist/cjs/components/data-model/data-table/components/column-tag/column-tag.js.map +1 -1
  103. package/dist/cjs/components/data-model/data-table/components/column-text/column-text-options.js.map +1 -1
  104. package/dist/cjs/components/data-model/data-table/components/column-text/column-text.js.map +1 -1
  105. package/dist/cjs/components/data-model/data-table/components/header-components/batch-opt/batch-opt.js.map +1 -1
  106. package/dist/cjs/components/data-model/data-table/components/header-components/batch-opt/index.js.map +1 -1
  107. package/dist/cjs/components/data-model/data-table/components/header-components/table-filter/index.js.map +1 -1
  108. package/dist/cjs/components/data-model/data-table/components/header-components/table-filter/table-filter.js.map +1 -1
  109. package/dist/cjs/components/data-model/data-table/composables/use-query-params.js.map +1 -1
  110. package/dist/cjs/components/data-model/data-table/data-table-column/data-table-column-options.js.map +1 -1
  111. package/dist/cjs/components/data-model/data-table/data-table-column/data-table-column.js.map +1 -1
  112. package/dist/cjs/components/data-model/data-table/data-table-column/index.js.map +1 -1
  113. package/dist/cjs/components/data-model/data-table/data-table-options.js.map +1 -1
  114. package/dist/cjs/components/data-model/data-table/data-table.js.map +1 -1
  115. package/dist/cjs/components/data-model/data-table/index.js.map +1 -1
  116. package/dist/cjs/components/data-model/data-table/token.js.map +1 -1
  117. package/dist/cjs/components/data-model/data-table/views/table/table-options.js.map +1 -1
  118. package/dist/cjs/components/data-model/data-table/views/table/table.js.map +1 -1
  119. package/dist/cjs/components/data-model/data-table/views/table-tree/table-tree-options.js.map +1 -1
  120. package/dist/cjs/components/data-model/data-table/views/table-tree/table-tree.js.map +1 -1
  121. package/dist/cjs/components/data-model/data-table/views/table-view/classify-search/classify-search.js.map +1 -1
  122. package/dist/cjs/components/data-model/data-table/views/table-view/header/header.js.map +1 -1
  123. package/dist/cjs/components/data-model/data-table/views/table-view/table-view-options.js.map +1 -1
  124. package/dist/cjs/components/data-model/data-table/views/table-view/table-view.js.map +1 -1
  125. package/dist/cjs/components/data-model/data-table/views/tree/index.js.map +1 -1
  126. package/dist/cjs/components/data-model/data-table/views/tree/tree-options.js.map +1 -1
  127. package/dist/cjs/components/data-model/data-table/views/tree/tree.js.map +1 -1
  128. package/dist/cjs/components/data-model/data-table/views/tree-view/tree-view-options.js.map +1 -1
  129. package/dist/cjs/components/data-model/data-table/views/tree-view/tree-view.js.map +1 -1
  130. package/dist/cjs/components/data-model/data-table-pagination/data-table-pagination-options.js.map +1 -1
  131. package/dist/cjs/components/data-model/data-table-pagination/data-table-pagination.js.map +1 -1
  132. package/dist/cjs/composables/use-column-component.js.map +1 -1
  133. package/dist/cjs/composables/use-i18n.js.map +1 -1
  134. package/dist/cjs/composables/use-single-view.js.map +1 -1
  135. package/dist/cjs/constants/data-model.js.map +1 -1
  136. package/dist/cjs/constants/menu.js.map +1 -1
  137. package/dist/cjs/constants/route.js.map +1 -1
  138. package/dist/cjs/core/MSAppClient.js.map +1 -1
  139. package/dist/cjs/core/MkModule.js.map +1 -1
  140. package/dist/cjs/core/PageManager.js.map +1 -1
  141. package/dist/cjs/core/Router.js.map +1 -1
  142. package/dist/cjs/core/UserInfo.js.map +1 -1
  143. package/dist/cjs/core/UserSession.js.map +1 -1
  144. package/dist/cjs/core/component/ConfigComponents.js.map +1 -1
  145. package/dist/cjs/core/component/DataFilterComponents.js.map +1 -1
  146. package/dist/cjs/core/component/DataTableComponents.js.map +1 -1
  147. package/dist/cjs/core/component/DataTableHeaderComponents.js.map +1 -1
  148. package/dist/cjs/core/menu/Menu.js.map +1 -1
  149. package/dist/cjs/core/menu/MenuNode.js.map +1 -1
  150. package/dist/cjs/core/tabs/Tab.js.map +1 -1
  151. package/dist/cjs/define-data-form.js.map +1 -1
  152. package/dist/cjs/define-data-table.js.map +1 -1
  153. package/dist/cjs/define-data-tree.js.map +1 -1
  154. package/dist/cjs/index.js +4 -0
  155. package/dist/cjs/index.js.map +1 -1
  156. package/dist/cjs/init-application.js.map +1 -1
  157. package/dist/cjs/installer.js.map +1 -1
  158. package/dist/cjs/layouts/components/dialogs/dialogs.js.map +1 -1
  159. package/dist/cjs/layouts/components/header/index.js.map +1 -1
  160. package/dist/cjs/message-impl/DialogerImpl.js.map +1 -1
  161. package/dist/cjs/modules/cms/components/part-tree/index.vue.js +2 -1
  162. package/dist/cjs/modules/cms/components/part-tree/index.vue.js.map +1 -1
  163. package/dist/cjs/modules/cms/constants/index.js.map +1 -1
  164. package/dist/cjs/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js +2 -0
  165. package/dist/cjs/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js.map +1 -1
  166. package/dist/cjs/modules/cms/dataviews/cms-ad-contents/CmsAdContentsTable.js.map +1 -1
  167. package/dist/cjs/modules/cms/dataviews/cms-articles/CmsArticlesForm.js +2 -0
  168. package/dist/cjs/modules/cms/dataviews/cms-articles/CmsArticlesForm.js.map +1 -1
  169. package/dist/cjs/modules/cms/dataviews/cms-articles/cms-article-atlas/CmsArticleAtlasForm.js +2 -0
  170. package/dist/cjs/modules/cms/dataviews/cms-articles/cms-article-atlas/CmsArticleAtlasForm.js.map +1 -1
  171. package/dist/cjs/modules/cms/dataviews/cms-articles/cms-article-atlas/CmsArticleAtlasTable.js.map +1 -1
  172. package/dist/cjs/modules/cms/dataviews/cms-parts/CmsContentManPartForm.js.map +1 -1
  173. package/dist/cjs/modules/cms/dataviews/cms-parts/CmsPartForm.js +69 -0
  174. package/dist/cjs/modules/cms/dataviews/cms-parts/CmsPartForm.js.map +1 -1
  175. package/dist/cjs/modules/cms/dataviews/cms-parts/CmsPartMiniForm.js +49 -0
  176. package/dist/cjs/modules/cms/dataviews/cms-parts/CmsPartMiniForm.js.map +1 -0
  177. package/dist/cjs/modules/cms/dataviews/cms-parts/CmsPartTree.js.map +1 -1
  178. package/dist/cjs/modules/cms/pages/cms-ad/index.vue2.js +2 -1
  179. package/dist/cjs/modules/cms/pages/cms-ad/index.vue2.js.map +1 -1
  180. package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +4 -7
  181. package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js.map +1 -1
  182. package/dist/cjs/modules/cms/pages/cms-contents/components/article-list.vue.js +2 -0
  183. package/dist/cjs/modules/cms/pages/cms-contents/components/article-list.vue.js.map +1 -1
  184. package/dist/cjs/modules/cms/pages/cms-contents/index.vue2.js +36 -104
  185. package/dist/cjs/modules/cms/pages/cms-contents/index.vue2.js.map +1 -1
  186. package/dist/cjs/modules/cms/pages/cms-resource/index.vue2.js +10 -35
  187. package/dist/cjs/modules/cms/pages/cms-resource/index.vue2.js.map +1 -1
  188. package/dist/cjs/modules/ms/components/image-select/image-select-api.js +76 -0
  189. package/dist/cjs/modules/ms/components/image-select/image-select-api.js.map +1 -0
  190. package/dist/cjs/modules/ms/components/image-select/image-select-panel.js +111 -0
  191. package/dist/cjs/modules/ms/components/image-select/image-select-panel.js.map +1 -0
  192. package/dist/cjs/modules/ms/components/image-select/index.js +7 -0
  193. package/dist/cjs/modules/ms/components/image-select/index.js.map +1 -0
  194. package/dist/cjs/modules/ms/components/markdown-editor/markdown-editor.js.map +1 -1
  195. package/dist/cjs/modules/ms/components/material-list/components/file-view/file-view.js.map +1 -1
  196. package/dist/cjs/modules/ms/components/material-list/components/image-view/image-view.js.map +1 -1
  197. package/dist/cjs/modules/ms/components/material-list/index.js.map +1 -1
  198. package/dist/cjs/modules/ms/components/material-list/material-group-form-popover.js +1 -0
  199. package/dist/cjs/modules/ms/components/material-list/material-group-form-popover.js.map +1 -1
  200. package/dist/cjs/modules/ms/components/material-list/material-group.js +1 -0
  201. package/dist/cjs/modules/ms/components/material-list/material-group.js.map +1 -1
  202. package/dist/cjs/modules/ms/components/material-list/material-item.vue.js.map +1 -1
  203. package/dist/cjs/modules/ms/components/material-list/material-list-options.js.map +1 -1
  204. package/dist/cjs/modules/ms/components/material-list/material-list.js.map +1 -1
  205. package/dist/cjs/modules/ms/components/material-select/index.js.map +1 -1
  206. package/dist/cjs/modules/ms/components/material-select/material-select-api.js.map +1 -1
  207. package/dist/cjs/modules/ms/components/rich-text-editor/index.js.map +1 -1
  208. package/dist/cjs/modules/ms/dataviews/log/local-log/LocalLogTree.js.map +1 -1
  209. package/dist/cjs/modules/ms/dataviews/ms-config/MsConfigForm.js.map +1 -1
  210. package/dist/cjs/modules/ms/dataviews/ms-config/MsConfigTable.js.map +1 -1
  211. package/dist/cjs/modules/ms/dataviews/ms-deny-ip-access-list/MsDenyIPAccessListTable.js.map +1 -1
  212. package/dist/cjs/modules/ms/dataviews/ms-ip-white-list/MsIPWhitelistTable.js.map +1 -1
  213. package/dist/cjs/modules/ms/dataviews/ms-material/MsMaterialTable.js +12 -2
  214. package/dist/cjs/modules/ms/dataviews/ms-material/MsMaterialTable.js.map +1 -1
  215. package/dist/cjs/modules/ms/dataviews/ms-material/ms-material-group/MsMaterialGroupTree.js.map +1 -1
  216. package/dist/cjs/modules/ms/dataviews/ms-member/MsMemberForm.js.map +1 -1
  217. package/dist/cjs/modules/ms/dataviews/ms-member/MsMemberTable.js.map +1 -1
  218. package/dist/cjs/modules/ms/dataviews/ms-member/components/MemberNickNameColumn.js.map +1 -1
  219. package/dist/cjs/modules/ms/dataviews/ms-member/components/MemberRolesColumn.js.map +1 -1
  220. package/dist/cjs/modules/ms/dataviews/ms-member-role/MsMemberRoleForm.js.map +1 -1
  221. package/dist/cjs/modules/ms/dataviews/ms-member-role/MsMemberRoleTable.js.map +1 -1
  222. package/dist/cjs/modules/ms/dataviews/ms-menu/MsMenuTable.js.map +1 -1
  223. package/dist/cjs/modules/ms/dataviews/ms-menu/MsMenuTree.js.map +1 -1
  224. package/dist/cjs/modules/ms/dataviews/ms-menu/ms-permission-point/MsPermissionPointDefineForm.js.map +1 -1
  225. package/dist/cjs/modules/ms/dataviews/ms-menu/ms-route/MsRouteForm.js.map +1 -1
  226. package/dist/cjs/modules/ms/dataviews/ms-menu/ms-route/MsRouteTable.js.map +1 -1
  227. package/dist/cjs/modules/ms/dataviews/ms-role/MsRoleForm.js.map +1 -1
  228. package/dist/cjs/modules/ms/dataviews/ms-role/MsRolePermissionConfigTable.js.map +1 -1
  229. package/dist/cjs/modules/ms/dataviews/ms-role/MsRoleTable.js.map +1 -1
  230. package/dist/cjs/modules/ms/image-upload-context/index.js +55 -0
  231. package/dist/cjs/modules/ms/image-upload-context/index.js.map +1 -0
  232. package/dist/cjs/modules/ms/index.js +2 -0
  233. package/dist/cjs/modules/ms/index.js.map +1 -1
  234. package/dist/cjs/modules/ms/material-upload-context/MaterialUploadContext.js.map +1 -1
  235. package/dist/cjs/modules/ms/material-upload-context/material-upload-context-options.js.map +1 -1
  236. package/dist/cjs/modules/ms/material-upload-context/material-upload-context.js.map +1 -1
  237. package/dist/cjs/modules/ms/pages/icons/index.vue2.js.map +1 -1
  238. package/dist/cjs/modules/ms/pages/local-log/index.vue2.js.map +1 -1
  239. package/dist/cjs/modules/ms/pages/ms-material/index.vue2.js +1 -0
  240. package/dist/cjs/modules/ms/pages/ms-material/index.vue2.js.map +1 -1
  241. package/dist/cjs/modules/ms/pages/ms-menu/index.vue2.js +1 -0
  242. package/dist/cjs/modules/ms/pages/ms-menu/index.vue2.js.map +1 -1
  243. package/dist/cjs/modules/ms/pages/ms-role/components/aside.vue.js +1 -0
  244. package/dist/cjs/modules/ms/pages/ms-role/components/aside.vue.js.map +1 -1
  245. package/dist/cjs/modules/ms/pages/ms-role/components/role-permission-config/role-permission-config-options.js +1 -0
  246. package/dist/cjs/modules/ms/pages/ms-role/components/role-permission-config/role-permission-config-options.js.map +1 -1
  247. package/dist/cjs/modules/ms/pages/ms-role/components/role-permission-config/role-permission-config.js.map +1 -1
  248. package/dist/cjs/modules/ms/pages/ms-role/index.vue2.js +1 -0
  249. package/dist/cjs/modules/ms/pages/ms-role/index.vue2.js.map +1 -1
  250. package/dist/cjs/page/index/404.vue.js.map +1 -1
  251. package/dist/cjs/page/index/dv/default/edit.vue2.js.map +1 -1
  252. package/dist/cjs/page/index/dv/default/single/list/dialog.vue2.js.map +1 -1
  253. package/dist/cjs/page/index/dv/default/single/list/normal.vue2.js.map +1 -1
  254. package/dist/cjs/page/index/dv/default/single/table-tree/dialog.vue2.js.map +1 -1
  255. package/dist/cjs/page/index/dv/default/single/table-tree/normal.vue2.js.map +1 -1
  256. package/dist/cjs/page/index/dv/default/single/tree/dialog.vue2.js.map +1 -1
  257. package/dist/cjs/page/index/dv/default/table.vue2.js.map +1 -1
  258. package/dist/cjs/page/login/index.vue2.js.map +1 -1
  259. package/dist/cjs/page/signup/index.vue2.js.map +1 -1
  260. package/dist/cjs/router-middleware/auth.js.map +1 -1
  261. package/dist/esm/components/abstract/abstract-select/abstract-select-options.js.map +1 -1
  262. package/dist/esm/components/abstract/abstract-select/abstract-select.js.map +1 -1
  263. package/dist/esm/components/abstract/abstract-select/index.js.map +1 -1
  264. package/dist/esm/components/basic/button/button-options.js.map +1 -1
  265. package/dist/esm/components/basic/code-editor/code-editor-options.js.map +1 -1
  266. package/dist/esm/components/basic/code-editor/code-editor.js.map +1 -1
  267. package/dist/esm/components/basic/code-editor/index.js.map +1 -1
  268. package/dist/esm/components/basic/config-provider/config-provider-options.js.map +1 -1
  269. package/dist/esm/components/basic/data-select/data-select-options.js.map +1 -1
  270. package/dist/esm/components/basic/data-select/data-select.js.map +1 -1
  271. package/dist/esm/components/basic/data-table-select/data-table-select-options.js.map +1 -1
  272. package/dist/esm/components/basic/data-table-select/data-table-select.js.map +1 -1
  273. package/dist/esm/components/basic/data-table-select/index.js.map +1 -1
  274. package/dist/esm/components/basic/data-tree-select/index.js.map +1 -1
  275. package/dist/esm/components/basic/date-picker/date-picker-options.js.map +1 -1
  276. package/dist/esm/components/basic/date-picker/date-picker.js.map +1 -1
  277. package/dist/esm/components/basic/date-picker/index.js.map +1 -1
  278. package/dist/esm/components/basic/doc-editor/editor.vue.js.map +1 -1
  279. package/dist/esm/components/basic/doc-editor/lexical-vue/components/LexicalAutoLinkPlugin/index.vue.js +36 -1
  280. package/dist/esm/components/basic/doc-editor/lexical-vue/components/LexicalAutoLinkPlugin/index.vue.js.map +1 -1
  281. package/dist/esm/components/basic/doc-editor/lexical-vue/components/LexicalAutoLinkPlugin/index.vue2.js +1 -36
  282. package/dist/esm/components/basic/doc-editor/lexical-vue/components/LexicalAutoLinkPlugin/index.vue2.js.map +1 -1
  283. package/dist/esm/components/basic/doc-editor/plugins/AutoLinkPlugin.vue.js +1 -1
  284. package/dist/esm/components/basic/doc-editor/plugins/HtmlBlockPlugin/DocHtmlBlockComponent.js.map +1 -1
  285. package/dist/esm/components/basic/doc-editor/plugins/HtmlBlockPlugin/index.vue.js.map +1 -1
  286. package/dist/esm/components/basic/icon-select/icon-select-options.js.map +1 -1
  287. package/dist/esm/components/basic/icon-select/icon-select.js.map +1 -1
  288. package/dist/esm/components/basic/icon-select/index.js.map +1 -1
  289. package/dist/esm/components/basic/image-cropper/image-cropper-api.js +3 -1
  290. package/dist/esm/components/basic/image-cropper/image-cropper-api.js.map +1 -1
  291. package/dist/esm/components/basic/image-cropper/image-cropper-content-options.js +2 -0
  292. package/dist/esm/components/basic/image-cropper/image-cropper-content-options.js.map +1 -1
  293. package/dist/esm/components/basic/image-cropper/image-cropper-content.js +25 -24
  294. package/dist/esm/components/basic/image-cropper/image-cropper-content.js.map +1 -1
  295. package/dist/esm/components/basic/image-cropper/index.js.map +1 -1
  296. package/dist/esm/components/basic/json-editor/json-editor-options.js.map +1 -1
  297. package/dist/esm/components/basic/json-editor/json-editor.js.map +1 -1
  298. package/dist/esm/components/basic/page-container/index.js.map +1 -1
  299. package/dist/esm/components/basic/page-container/page-container.js.map +1 -1
  300. package/dist/esm/components/basic/radio/index.js.map +1 -1
  301. package/dist/esm/components/basic/radio/radio-options.js.map +1 -1
  302. package/dist/esm/components/basic/radio/radio.js.map +1 -1
  303. package/dist/esm/components/basic/system-provider/system-provider.js.map +1 -1
  304. package/dist/esm/components/basic/upload-file/context/WebFileUploadContext.js.map +1 -1
  305. package/dist/esm/components/basic/upload-file/ui/upload-image/upload-image.js +2 -0
  306. package/dist/esm/components/basic/upload-file/ui/upload-image/upload-image.js.map +1 -1
  307. package/dist/esm/components/business/resource-list/ResourceManager.js.map +1 -1
  308. package/dist/esm/components/business/resource-list/index.js.map +1 -1
  309. package/dist/esm/components/business/resource-list/resource-list.vue.js +20 -0
  310. package/dist/esm/components/business/resource-list/resource-list.vue.js.map +1 -1
  311. package/dist/esm/components/business/resource-manager/index.js.map +1 -1
  312. package/dist/esm/components/business/resource-manager/resource-manager.vue.js +1 -20
  313. package/dist/esm/components/business/resource-manager/resource-manager.vue.js.map +1 -1
  314. package/dist/esm/components/business/resource-select/index.js.map +1 -1
  315. package/dist/esm/components/business/resource-select/resource-select-api.js.map +1 -1
  316. package/dist/esm/components/business/verify-dialog/verify-dialog.js.map +1 -1
  317. package/dist/esm/components/data-model/data-filter-drawer/data-filter-drawer-options.js.map +1 -1
  318. package/dist/esm/components/data-model/data-filter-drawer/data-filter-drawer.js.map +1 -1
  319. package/dist/esm/components/data-model/data-filter-drawer/index.js.map +1 -1
  320. package/dist/esm/components/data-model/data-filter-form/components/condition-date/condition-date-options.js.map +1 -1
  321. package/dist/esm/components/data-model/data-filter-form/components/condition-date/condition-date.js.map +1 -1
  322. package/dist/esm/components/data-model/data-filter-form/components/condition-input/condition-input-options.js.map +1 -1
  323. package/dist/esm/components/data-model/data-filter-form/components/condition-input/condition-input.js.map +1 -1
  324. package/dist/esm/components/data-model/data-filter-form/components/condition-number/condition-number-options.js.map +1 -1
  325. package/dist/esm/components/data-model/data-filter-form/components/condition-number/condition-number.js.map +1 -1
  326. package/dist/esm/components/data-model/data-filter-form/components/condition-select/condition-select-options.js.map +1 -1
  327. package/dist/esm/components/data-model/data-filter-form/components/condition-select/condition-select.js.map +1 -1
  328. package/dist/esm/components/data-model/data-filter-form/composables/use-condition.js.map +1 -1
  329. package/dist/esm/components/data-model/data-filter-form/data-filter-form-item/data-filter-form-item.js.map +1 -1
  330. package/dist/esm/components/data-model/data-filter-form/data-filter-form-options.js.map +1 -1
  331. package/dist/esm/components/data-model/data-filter-form/data-filter-form.js.map +1 -1
  332. package/dist/esm/components/data-model/data-filter-form/index.js.map +1 -1
  333. package/dist/esm/components/data-model/data-filter-form/token.js.map +1 -1
  334. package/dist/esm/components/data-model/data-form/components/form-detail/form-detail-options.js.map +1 -1
  335. package/dist/esm/components/data-model/data-form/components/form-detail/form-detail.js.map +1 -1
  336. package/dist/esm/components/data-model/data-form/composables/use-form-item.js.map +1 -1
  337. package/dist/esm/components/data-model/data-form/data-form-item/data-form-item.js.map +1 -1
  338. package/dist/esm/components/data-model/data-form/data-form.js.map +1 -1
  339. package/dist/esm/components/data-model/data-form/index.js.map +1 -1
  340. package/dist/esm/components/data-model/data-form/token.js.map +1 -1
  341. package/dist/esm/components/data-model/data-form/views/form/form-options.js.map +1 -1
  342. package/dist/esm/components/data-model/data-form/views/form/form.js.map +1 -1
  343. package/dist/esm/components/data-model/data-form/views/form-view/form-view.js.map +1 -1
  344. package/dist/esm/components/data-model/data-table/components/column-action/column-action-options.js.map +1 -1
  345. package/dist/esm/components/data-model/data-table/components/column-action/column-action.js.map +1 -1
  346. package/dist/esm/components/data-model/data-table/components/column-date/column-date.js.map +1 -1
  347. package/dist/esm/components/data-model/data-table/components/column-icon/column-icon.js.map +1 -1
  348. package/dist/esm/components/data-model/data-table/components/column-image/column-image-options.js.map +1 -1
  349. package/dist/esm/components/data-model/data-table/components/column-json/column-json-options.js.map +1 -1
  350. package/dist/esm/components/data-model/data-table/components/column-json/column-json.js.map +1 -1
  351. package/dist/esm/components/data-model/data-table/components/column-link/column-link-options.js.map +1 -1
  352. package/dist/esm/components/data-model/data-table/components/column-object-mapping-text/column-object-mapping-text-options.js.map +1 -1
  353. package/dist/esm/components/data-model/data-table/components/column-select/column-select-header.js.map +1 -1
  354. package/dist/esm/components/data-model/data-table/components/column-select/column-select-options.js.map +1 -1
  355. package/dist/esm/components/data-model/data-table/components/column-select/column-select.js.map +1 -1
  356. package/dist/esm/components/data-model/data-table/components/column-sort/column-sort-options.js.map +1 -1
  357. package/dist/esm/components/data-model/data-table/components/column-sort/column-sort.js.map +1 -1
  358. package/dist/esm/components/data-model/data-table/components/column-sort/index.js.map +1 -1
  359. package/dist/esm/components/data-model/data-table/components/column-switch/column-switch-options.js.map +1 -1
  360. package/dist/esm/components/data-model/data-table/components/column-switch/column-switch.js.map +1 -1
  361. package/dist/esm/components/data-model/data-table/components/column-tag/column-tag-options.js.map +1 -1
  362. package/dist/esm/components/data-model/data-table/components/column-tag/column-tag.js.map +1 -1
  363. package/dist/esm/components/data-model/data-table/components/column-text/column-text-options.js.map +1 -1
  364. package/dist/esm/components/data-model/data-table/components/column-text/column-text.js.map +1 -1
  365. package/dist/esm/components/data-model/data-table/components/header-components/batch-opt/batch-opt.js.map +1 -1
  366. package/dist/esm/components/data-model/data-table/components/header-components/batch-opt/index.js.map +1 -1
  367. package/dist/esm/components/data-model/data-table/components/header-components/table-filter/index.js.map +1 -1
  368. package/dist/esm/components/data-model/data-table/components/header-components/table-filter/table-filter.js.map +1 -1
  369. package/dist/esm/components/data-model/data-table/composables/use-query-params.js.map +1 -1
  370. package/dist/esm/components/data-model/data-table/data-table-column/data-table-column-options.js.map +1 -1
  371. package/dist/esm/components/data-model/data-table/data-table-column/data-table-column.js.map +1 -1
  372. package/dist/esm/components/data-model/data-table/data-table-column/index.js.map +1 -1
  373. package/dist/esm/components/data-model/data-table/data-table-options.js.map +1 -1
  374. package/dist/esm/components/data-model/data-table/data-table.js.map +1 -1
  375. package/dist/esm/components/data-model/data-table/index.js.map +1 -1
  376. package/dist/esm/components/data-model/data-table/token.js.map +1 -1
  377. package/dist/esm/components/data-model/data-table/views/table/table-options.js.map +1 -1
  378. package/dist/esm/components/data-model/data-table/views/table/table.js.map +1 -1
  379. package/dist/esm/components/data-model/data-table/views/table-tree/table-tree-options.js.map +1 -1
  380. package/dist/esm/components/data-model/data-table/views/table-tree/table-tree.js.map +1 -1
  381. package/dist/esm/components/data-model/data-table/views/table-view/classify-search/classify-search.js.map +1 -1
  382. package/dist/esm/components/data-model/data-table/views/table-view/header/header.js.map +1 -1
  383. package/dist/esm/components/data-model/data-table/views/table-view/table-view-options.js.map +1 -1
  384. package/dist/esm/components/data-model/data-table/views/table-view/table-view.js.map +1 -1
  385. package/dist/esm/components/data-model/data-table/views/tree/index.js.map +1 -1
  386. package/dist/esm/components/data-model/data-table/views/tree/tree-options.js.map +1 -1
  387. package/dist/esm/components/data-model/data-table/views/tree/tree.js.map +1 -1
  388. package/dist/esm/components/data-model/data-table/views/tree-view/tree-view-options.js.map +1 -1
  389. package/dist/esm/components/data-model/data-table/views/tree-view/tree-view.js.map +1 -1
  390. package/dist/esm/components/data-model/data-table-pagination/data-table-pagination-options.js.map +1 -1
  391. package/dist/esm/components/data-model/data-table-pagination/data-table-pagination.js.map +1 -1
  392. package/dist/esm/composables/use-column-component.js.map +1 -1
  393. package/dist/esm/composables/use-i18n.js.map +1 -1
  394. package/dist/esm/composables/use-single-view.js.map +1 -1
  395. package/dist/esm/constants/data-model.js.map +1 -1
  396. package/dist/esm/constants/menu.js.map +1 -1
  397. package/dist/esm/constants/route.js.map +1 -1
  398. package/dist/esm/core/MSAppClient.js.map +1 -1
  399. package/dist/esm/core/MkModule.js.map +1 -1
  400. package/dist/esm/core/PageManager.js.map +1 -1
  401. package/dist/esm/core/Router.js.map +1 -1
  402. package/dist/esm/core/UserInfo.js.map +1 -1
  403. package/dist/esm/core/UserSession.js.map +1 -1
  404. package/dist/esm/core/component/ConfigComponents.js.map +1 -1
  405. package/dist/esm/core/component/DataFilterComponents.js.map +1 -1
  406. package/dist/esm/core/component/DataTableComponents.js.map +1 -1
  407. package/dist/esm/core/component/DataTableHeaderComponents.js.map +1 -1
  408. package/dist/esm/core/menu/Menu.js.map +1 -1
  409. package/dist/esm/core/menu/MenuNode.js.map +1 -1
  410. package/dist/esm/core/tabs/Tab.js.map +1 -1
  411. package/dist/esm/define-data-form.js.map +1 -1
  412. package/dist/esm/define-data-table.js.map +1 -1
  413. package/dist/esm/define-data-tree.js.map +1 -1
  414. package/dist/esm/index.js +4 -0
  415. package/dist/esm/index.js.map +1 -1
  416. package/dist/esm/init-application.js.map +1 -1
  417. package/dist/esm/installer.js.map +1 -1
  418. package/dist/esm/layouts/components/dialogs/dialogs.js.map +1 -1
  419. package/dist/esm/layouts/components/header/index.js.map +1 -1
  420. package/dist/esm/message-impl/DialogerImpl.js.map +1 -1
  421. package/dist/esm/modules/cms/components/part-tree/index.vue.js +2 -1
  422. package/dist/esm/modules/cms/components/part-tree/index.vue.js.map +1 -1
  423. package/dist/esm/modules/cms/constants/index.js.map +1 -1
  424. package/dist/esm/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js +2 -0
  425. package/dist/esm/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js.map +1 -1
  426. package/dist/esm/modules/cms/dataviews/cms-ad-contents/CmsAdContentsTable.js.map +1 -1
  427. package/dist/esm/modules/cms/dataviews/cms-articles/CmsArticlesForm.js +2 -0
  428. package/dist/esm/modules/cms/dataviews/cms-articles/CmsArticlesForm.js.map +1 -1
  429. package/dist/esm/modules/cms/dataviews/cms-articles/cms-article-atlas/CmsArticleAtlasForm.js +2 -0
  430. package/dist/esm/modules/cms/dataviews/cms-articles/cms-article-atlas/CmsArticleAtlasForm.js.map +1 -1
  431. package/dist/esm/modules/cms/dataviews/cms-articles/cms-article-atlas/CmsArticleAtlasTable.js.map +1 -1
  432. package/dist/esm/modules/cms/dataviews/cms-parts/CmsContentManPartForm.js.map +1 -1
  433. package/dist/esm/modules/cms/dataviews/cms-parts/CmsPartForm.js +70 -1
  434. package/dist/esm/modules/cms/dataviews/cms-parts/CmsPartForm.js.map +1 -1
  435. package/dist/esm/modules/cms/dataviews/cms-parts/CmsPartMiniForm.js +49 -0
  436. package/dist/esm/modules/cms/dataviews/cms-parts/CmsPartMiniForm.js.map +1 -0
  437. package/dist/esm/modules/cms/dataviews/cms-parts/CmsPartTree.js.map +1 -1
  438. package/dist/esm/modules/cms/pages/cms-ad/index.vue2.js +2 -1
  439. package/dist/esm/modules/cms/pages/cms-ad/index.vue2.js.map +1 -1
  440. package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +4 -7
  441. package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js.map +1 -1
  442. package/dist/esm/modules/cms/pages/cms-contents/components/article-list.vue.js +2 -0
  443. package/dist/esm/modules/cms/pages/cms-contents/components/article-list.vue.js.map +1 -1
  444. package/dist/esm/modules/cms/pages/cms-contents/index.vue2.js +38 -106
  445. package/dist/esm/modules/cms/pages/cms-contents/index.vue2.js.map +1 -1
  446. package/dist/esm/modules/cms/pages/cms-resource/index.vue2.js +10 -35
  447. package/dist/esm/modules/cms/pages/cms-resource/index.vue2.js.map +1 -1
  448. package/dist/esm/modules/ms/components/image-select/image-select-api.js +77 -0
  449. package/dist/esm/modules/ms/components/image-select/image-select-api.js.map +1 -0
  450. package/dist/esm/modules/ms/components/image-select/image-select-panel.js +112 -0
  451. package/dist/esm/modules/ms/components/image-select/image-select-panel.js.map +1 -0
  452. package/dist/esm/modules/ms/components/image-select/index.js +7 -0
  453. package/dist/esm/modules/ms/components/image-select/index.js.map +1 -0
  454. package/dist/esm/modules/ms/components/markdown-editor/markdown-editor.js.map +1 -1
  455. package/dist/esm/modules/ms/components/material-list/components/file-view/file-view.js.map +1 -1
  456. package/dist/esm/modules/ms/components/material-list/components/image-view/image-view.js.map +1 -1
  457. package/dist/esm/modules/ms/components/material-list/index.js.map +1 -1
  458. package/dist/esm/modules/ms/components/material-list/material-group-form-popover.js +1 -0
  459. package/dist/esm/modules/ms/components/material-list/material-group-form-popover.js.map +1 -1
  460. package/dist/esm/modules/ms/components/material-list/material-group.js +1 -0
  461. package/dist/esm/modules/ms/components/material-list/material-group.js.map +1 -1
  462. package/dist/esm/modules/ms/components/material-list/material-item.vue.js.map +1 -1
  463. package/dist/esm/modules/ms/components/material-list/material-list-options.js.map +1 -1
  464. package/dist/esm/modules/ms/components/material-list/material-list.js.map +1 -1
  465. package/dist/esm/modules/ms/components/material-select/index.js.map +1 -1
  466. package/dist/esm/modules/ms/components/material-select/material-select-api.js.map +1 -1
  467. package/dist/esm/modules/ms/components/rich-text-editor/index.js.map +1 -1
  468. package/dist/esm/modules/ms/dataviews/log/local-log/LocalLogTree.js.map +1 -1
  469. package/dist/esm/modules/ms/dataviews/ms-config/MsConfigForm.js.map +1 -1
  470. package/dist/esm/modules/ms/dataviews/ms-config/MsConfigTable.js.map +1 -1
  471. package/dist/esm/modules/ms/dataviews/ms-deny-ip-access-list/MsDenyIPAccessListTable.js.map +1 -1
  472. package/dist/esm/modules/ms/dataviews/ms-ip-white-list/MsIPWhitelistTable.js.map +1 -1
  473. package/dist/esm/modules/ms/dataviews/ms-material/MsMaterialTable.js +12 -2
  474. package/dist/esm/modules/ms/dataviews/ms-material/MsMaterialTable.js.map +1 -1
  475. package/dist/esm/modules/ms/dataviews/ms-material/ms-material-group/MsMaterialGroupTree.js.map +1 -1
  476. package/dist/esm/modules/ms/dataviews/ms-member/MsMemberForm.js.map +1 -1
  477. package/dist/esm/modules/ms/dataviews/ms-member/MsMemberTable.js.map +1 -1
  478. package/dist/esm/modules/ms/dataviews/ms-member/components/MemberNickNameColumn.js.map +1 -1
  479. package/dist/esm/modules/ms/dataviews/ms-member/components/MemberRolesColumn.js.map +1 -1
  480. package/dist/esm/modules/ms/dataviews/ms-member-role/MsMemberRoleForm.js.map +1 -1
  481. package/dist/esm/modules/ms/dataviews/ms-member-role/MsMemberRoleTable.js.map +1 -1
  482. package/dist/esm/modules/ms/dataviews/ms-menu/MsMenuTable.js.map +1 -1
  483. package/dist/esm/modules/ms/dataviews/ms-menu/MsMenuTree.js.map +1 -1
  484. package/dist/esm/modules/ms/dataviews/ms-menu/ms-permission-point/MsPermissionPointDefineForm.js.map +1 -1
  485. package/dist/esm/modules/ms/dataviews/ms-menu/ms-route/MsRouteForm.js.map +1 -1
  486. package/dist/esm/modules/ms/dataviews/ms-menu/ms-route/MsRouteTable.js.map +1 -1
  487. package/dist/esm/modules/ms/dataviews/ms-role/MsRoleForm.js.map +1 -1
  488. package/dist/esm/modules/ms/dataviews/ms-role/MsRolePermissionConfigTable.js.map +1 -1
  489. package/dist/esm/modules/ms/dataviews/ms-role/MsRoleTable.js.map +1 -1
  490. package/dist/esm/modules/ms/image-upload-context/index.js +55 -0
  491. package/dist/esm/modules/ms/image-upload-context/index.js.map +1 -0
  492. package/dist/esm/modules/ms/index.js +2 -0
  493. package/dist/esm/modules/ms/index.js.map +1 -1
  494. package/dist/esm/modules/ms/material-upload-context/MaterialUploadContext.js.map +1 -1
  495. package/dist/esm/modules/ms/material-upload-context/material-upload-context-options.js.map +1 -1
  496. package/dist/esm/modules/ms/material-upload-context/material-upload-context.js.map +1 -1
  497. package/dist/esm/modules/ms/pages/icons/index.vue2.js.map +1 -1
  498. package/dist/esm/modules/ms/pages/local-log/index.vue2.js.map +1 -1
  499. package/dist/esm/modules/ms/pages/ms-material/index.vue2.js +1 -0
  500. package/dist/esm/modules/ms/pages/ms-material/index.vue2.js.map +1 -1
  501. package/dist/esm/modules/ms/pages/ms-menu/index.vue2.js +1 -0
  502. package/dist/esm/modules/ms/pages/ms-menu/index.vue2.js.map +1 -1
  503. package/dist/esm/modules/ms/pages/ms-role/components/aside.vue.js +1 -0
  504. package/dist/esm/modules/ms/pages/ms-role/components/aside.vue.js.map +1 -1
  505. package/dist/esm/modules/ms/pages/ms-role/components/role-permission-config/role-permission-config-options.js +1 -0
  506. package/dist/esm/modules/ms/pages/ms-role/components/role-permission-config/role-permission-config-options.js.map +1 -1
  507. package/dist/esm/modules/ms/pages/ms-role/components/role-permission-config/role-permission-config.js.map +1 -1
  508. package/dist/esm/modules/ms/pages/ms-role/index.vue2.js +1 -0
  509. package/dist/esm/modules/ms/pages/ms-role/index.vue2.js.map +1 -1
  510. package/dist/esm/page/index/404.vue.js.map +1 -1
  511. package/dist/esm/page/index/dv/default/edit.vue2.js.map +1 -1
  512. package/dist/esm/page/index/dv/default/single/list/dialog.vue2.js.map +1 -1
  513. package/dist/esm/page/index/dv/default/single/list/normal.vue2.js.map +1 -1
  514. package/dist/esm/page/index/dv/default/single/table-tree/dialog.vue2.js.map +1 -1
  515. package/dist/esm/page/index/dv/default/single/table-tree/normal.vue2.js.map +1 -1
  516. package/dist/esm/page/index/dv/default/single/tree/dialog.vue2.js.map +1 -1
  517. package/dist/esm/page/index/dv/default/table.vue2.js.map +1 -1
  518. package/dist/esm/page/login/index.vue2.js.map +1 -1
  519. package/dist/esm/page/signup/index.vue2.js.map +1 -1
  520. package/dist/esm/router-middleware/auth.js.map +1 -1
  521. package/dist/style/index.css +2 -2
  522. package/dist/style/modules/cms/index.css +1 -1
  523. package/dist/style/modules/cms/resource-manager.css +1 -1
  524. package/dist/style/src/components/basic/data-tree-select/data-tree-select.scss +11 -11
  525. package/dist/style/src/components/classify-search.scss +31 -31
  526. package/dist/style/src/components/code-editor.scss +7 -7
  527. package/dist/style/src/components/data-filter-drawer.scss +5 -5
  528. package/dist/style/src/components/data-table-select-dialog.scss +30 -30
  529. package/dist/style/src/components/form/form-detail.scss +28 -28
  530. package/dist/style/src/components/form/form-icon-select.scss +35 -35
  531. package/dist/style/src/components/image-cropper.scss +34 -34
  532. package/dist/style/src/components/index.scss +60 -60
  533. package/dist/style/src/components/material-list.scss +83 -83
  534. package/dist/style/src/components/page-container.scss +20 -20
  535. package/dist/style/src/components/pagination.scss +21 -21
  536. package/dist/style/src/components/table/column-sort.scss +17 -17
  537. package/dist/style/src/components/table/index.scss +6 -6
  538. package/dist/style/src/components/table/table-filter.scss +12 -12
  539. package/dist/style/src/components/table-view.scss +78 -78
  540. package/dist/style/src/index.scss +28 -28
  541. package/dist/style/src/modules/cms/resource-manager.scss +10 -5
  542. package/dist/style/src/modules/ms/pages/icon.scss +50 -50
  543. package/dist/style/src/modules/ms/pages/index.scss +3 -3
  544. package/dist/style/src/page/dv/index.scss +3 -3
  545. package/dist/style/src/page/dv/ms-menu.scss +9 -9
  546. package/dist/style/src/theme/theme.scss +324 -324
  547. package/dist/style/theme/theme.css +1 -1
  548. package/dist/types/components/basic/image-cropper/image-cropper-api.d.ts +2 -0
  549. package/dist/types/components/basic/image-cropper/image-cropper-content-options.d.ts +2 -0
  550. package/dist/types/components/basic/image-cropper/image-cropper-content.d.ts +6 -0
  551. package/dist/types/components/basic/image-cropper/index.d.ts +6 -0
  552. package/dist/types/modules/cms/dataviews/cms-parts/CmsPartForm.d.ts +20 -0
  553. package/dist/types/modules/cms/dataviews/cms-parts/CmsPartMiniForm.d.ts +4 -0
  554. package/dist/types/modules/cms/dataviews/cms-parts/index.d.ts +1 -0
  555. package/dist/types/modules/ms/components/image-select/image-select-api.d.ts +5 -0
  556. package/dist/types/modules/ms/components/image-select/image-select-panel.d.ts +8 -0
  557. package/dist/types/modules/ms/components/image-select/index.d.ts +3 -0
  558. package/dist/types/modules/ms/dataviews/ms-material/MsMaterialTable.d.ts +1 -1
  559. package/dist/types/modules/ms/image-upload-context/index.d.ts +13 -0
  560. package/dist/types/modules/ms/index.d.ts +1 -0
  561. package/package.json +4 -4
@@ -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\">\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, computed, ref, watch } from \"vue\";\r\nimport { DataViewRequest, Group } from \"@maketribe/request\";\r\nimport { DataForm, Dialoger, FormColumn, Messager } from \"@maketribe/dm\";\r\nimport { CmsAdDefinesTable, CmsAdContentsForm, CmsAdDefinesForm } from \"../../dataviews\";\r\nimport { EditPen, ArrowDown, Delete } from \"@element-plus/icons-vue\"\r\nimport { debounce } from \"lodash-es\"\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\nconst formVisible = ref(false);\r\n//更新列表数据\r\nconst setAdDefineList = async (condition?: Group) => {\r\n try {\r\n loading.value = true;\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 const dialog = await Dialoger.dataFormDialog({\r\n dataForm: adContentForm as DataForm,\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":[],"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\">\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, computed, ref, watch } from \"vue\";\r\nimport { DataViewRequest, Group } from \"@maketribe/request\";\r\nimport { DataForm, Dialoger, FormColumn, Messager } from \"@maketribe/dm\";\r\nimport { CmsAdDefinesTable, CmsAdContentsForm, CmsAdDefinesForm } from \"../../dataviews\";\r\nimport { EditPen, ArrowDown, Delete } from \"@element-plus/icons-vue\"\r\nimport { debounce } from \"lodash-es\"\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\nconst formVisible = ref(false);\r\n//更新列表数据\r\nconst setAdDefineList = async (condition?: Group) => {\r\n try {\r\n loading.value = true;\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 const dialog = await Dialoger.dataFormDialog({\r\n dataForm: adContentForm as DataForm,\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":[],"mappings":"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"}
@@ -36,6 +36,7 @@ import "../../../../core/DataModelDefines.js";
36
36
  import { useRoute, useRouter } from "vue-router";
37
37
  import "@maketribe/locale";
38
38
  import "../../../ms/dataviews/ms-config/MsConfigTable.js";
39
+ import "lodash-es";
39
40
  import "../../../ms/dataviews/department/DepartmentForm.js";
40
41
  import "../../../ms/dataviews/department/DepartmentTable.js";
41
42
  import "../../../ms/dataviews/department/DepartmentTree.js";
@@ -46,9 +47,9 @@ import "../../../ms/dataviews/log/local-log/LocalLogTree.js";
46
47
  import "../../../ms/components/material-list/index.js";
47
48
  import "../../../ms/components/markdown-editor/index.js";
48
49
  import "../../../ms/components/rich-text-editor/index.js";
49
- import { MaterialUploadContext } from "../../../ms/material-upload-context/MaterialUploadContext.js";
50
50
  import "../../../ms/material-upload-context/material-upload-context-options.js";
51
51
  import "../../../ms/material-upload-context/material-upload-context.js";
52
+ import { ImageUploadContext } from "../../../ms/image-upload-context/index.js";
52
53
  import { CmsArticlesForm } from "../../dataviews/cms-articles/CmsArticlesForm.js";
53
54
  import "@codemirror/lang-html";
54
55
  import { useCmsSettings } from "../../cms-settings.js";
@@ -543,9 +544,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
543
544
  "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => articleForm.data.cover = $event),
544
545
  width: "115px",
545
546
  height: "115px",
546
- uploadContext: new (unref(MaterialUploadContext))({
547
- allowMaterialTypeValues: [1]
548
- })
547
+ uploadContext: new (unref(ImageUploadContext))(unref(CmsSettings).content.coverImageSize)
549
548
  }, null, 8, ["modelValue", "uploadContext"]),
550
549
  createVNode(_component_el_input, {
551
550
  class: "desc",
@@ -573,9 +572,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
573
572
  "onUpdate:modelValue": _cache[10] || (_cache[10] = ($event) => articleForm.data.banner = $event),
574
573
  width: "100%",
575
574
  height: "300px",
576
- uploadContext: new (unref(MaterialUploadContext))({
577
- allowMaterialTypeValues: [1]
578
- })
575
+ uploadContext: new (unref(ImageUploadContext))(unref(CmsSettings).content.bannerImageSize)
579
576
  }, null, 8, ["modelValue", "uploadContext"])
580
577
  ]),
581
578
  _: 1
@@ -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\"\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\":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=\"articleForm.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\" 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 { 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\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 formInitDataInfo();\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 formInitDataInfo();\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":[],"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: 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 { 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 formInitDataInfo();\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 formInitDataInfo();\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":[],"mappings":"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"}
@@ -35,6 +35,7 @@ import "../../../../../core/DataModelDefines.js";
35
35
  import { useRouter } from "vue-router";
36
36
  import "@maketribe/locale";
37
37
  import "../../../../ms/dataviews/ms-config/MsConfigTable.js";
38
+ import "lodash-es";
38
39
  import "../../../../ms/dataviews/department/DepartmentForm.js";
39
40
  import "../../../../ms/dataviews/department/DepartmentTable.js";
40
41
  import "../../../../ms/dataviews/department/DepartmentTree.js";
@@ -47,6 +48,7 @@ import "../../../../ms/components/markdown-editor/index.js";
47
48
  import "../../../../ms/components/rich-text-editor/index.js";
48
49
  import "../../../../ms/material-upload-context/material-upload-context-options.js";
49
50
  import "../../../../ms/material-upload-context/material-upload-context.js";
51
+ import "@element-plus/icons-vue";
50
52
  import { CmsArticlesTable } from "../../../dataviews/cms-articles/CmsArticlesTable.js";
51
53
  import { CmsArticlesForm } from "../../../dataviews/cms-articles/CmsArticlesForm.js";
52
54
  import "@codemirror/lang-html";
@@ -1 +1 @@
1
- {"version":3,"file":"article-list.vue.js","sources":["../../../../../../../src/modules/cms/pages/cms-contents/components/article-list.vue"],"sourcesContent":["<template>\n <MKDataTable :data-table=\"articlesDv\" :auto-load=\"false\" class=\"mk-cms-article-list\">\n <el-empty v-if=\"part && part.cmsPartTypeId == 1\" description=\"外链栏目下无文章内容\" />\n <MKTableView v-else-if=\"part\" :data-table=\"articlesDv\">\n <el-scrollbar class=\"mk-cms-article-list__content\" style=\"box-sizing: border-box;font-size: 0;\"\n v-if=\"articlesDv.getList().length > 0\">\n <el-card class=\"mk-cms-article-list__item\" v-for=\"article in articlesDv.getList()\" :key=\"article.id\">\n <div class=\"mk-cms-article-list__item__content\">\n <div class=\"left\">\n <el-image class=\"cover-image\" :src=\"article.cover\" fit=\"contain\">\n <template #error>\n <MKSvgIcon iconClass=\"Picture\" />\n </template>\n </el-image>\n </div>\n <div class=\"right\">\n <div class=\"title\" :title=\"article.title\"> {{ article.title }}</div>\n <div class=\"sub-title\" v-if=\"article.subTitle\" :title=\"article.subTitle\"> {{ article.subTitle }}</div>\n <div class=\"desc\">\n {{ article.desc }}\n </div>\n <div class=\"footer\">\n <div class=\"ext\">\n <div class=\"author\">\n <MKSvgIcon iconClass=\"UserFilled\"></MKSvgIcon> \n 作者 : {{ article.author || \"-\" }}\n </div>\n <div class=\"publish-time\">\n <MKSvgIcon iconClass=\"Timer\"></MKSvgIcon> \n 发布时间 : {{ article.publishTime }}\n </div>\n </div>\n <div class=\"tools\">\n <el-button type=\"primary\" size=\"large\" @click=\"editArticleHandle(article)\" text>\n 编辑\n </el-button>\n <el-button type=\"danger\" size=\"large\" @click=\"deleteArticleHandle(article)\" text>\n 删除\n </el-button>\n <a v-if=\"CmsSettings.publish.mode == 'static' && article.url\" :href=\"article.url\" target=\"_blank\">\n <el-button type=\"primary\" size=\"large\" text>访问</el-button>\n </a>\n <a :href=\"'/api/cms/content/preview/content/' + article.cmsPartId + '/' + article.id\" v-if=\"CmsSettings.publish.mode == 'static'\" target=\"_blank\">\n <el-button type=\"primary\" size=\"large\" text>预览</el-button>\n </a>\n <el-button type=\"primary\" size=\"large\" text @click=\"publishArticleHandle(article)\">\n 发布\n </el-button>\n </div>\n </div>\n </div>\n </div>\n </el-card>\n </el-scrollbar>\n <el-empty v-if=\"articlesDv.getList().length <= 0\" description=\"暂无文章内容\" />\n </MKTableView>\n </MKDataTable>\n</template>\n<script setup lang='ts'>\nimport { MKTableView } from \"../../../../../components\"\nimport { CmsArticlesTable,CmsArticlesForm } from \"../../../dataviews\"\nimport { reactive, defineProps, watch,onMounted } from \"vue\";\nimport { Dialoger, isWhereFilter, Messager } from '@maketribe/dm'\nimport { useRouter } from \"vue-router\";\nimport { useCmsSettings } from \"../../../cms-settings\"\n// cms 配置\nconst CmsSettings = useCmsSettings();\n\n// 文章\nconst articlesDv = reactive(new CmsArticlesTable()) as CmsArticlesTable;\n// 发布文章表单\nconst articleForm = reactive(new CmsArticlesForm()) as CmsArticlesForm;\n// 草稿文章\nconst draftArticleForm = reactive(new CmsArticlesForm()) as CmsArticlesForm;\n\n// 参数\nconst props = defineProps({\n part: { type: Object, default: null }\n})\n\nconst router = useRouter();\n\n// 初始化\nonMounted(()=>{\n articleForm.init();\n draftArticleForm.init();\n\n // 监听栏目数据变化\n watch(() => props.part, (item: any) => {\n if (item.cmsPartTypeId != 1) {\n\n const dataFilter = articlesDv.dataFilter;\n\n if (isWhereFilter(dataFilter)) {\n\n const defaultGroup = dataFilter.getDefaultGroup();\n\n defaultGroup.clear();\n defaultGroup.addCondition(\"cmsPartId\", \"=\", item.id);\n // 只查草稿\n defaultGroup.addCondition(\"isDraft\", \"=\", 1);\n }\n\n articlesDv.load()\n }\n }, { immediate: true })\n})\n\n/**\n * 删除文章\n */\nconst deleteArticleHandle = async (item: any) => {\n const isConfirm = await Dialoger.confirm({\n title: \"删除文章?\",\n message: \"是否删除文章?\",\n type: \"warning\"\n })\n\n if (!isConfirm) { return; }\n await articlesDv.deleteAfterRefresh(item.id);\n}\n\n/**\n * 编辑文章\n */\nconst editArticleHandle = (item: any, isEdit = false) => {\n router.push({ path: \"/cms/article\", query: { id: isEdit ? undefined : item.id, partId: isEdit ? item.id : undefined } })\n}\n\n// 添加记录\narticlesDv.addRecordEvent.on(() => editArticleHandle(props.part, true))\n\n/**\n * fault文章\n * @param article \n */\nconst publishArticleHandle = async (article: any) => {\n\n try {\n\n if (await Dialoger.confirm({ title: \"文章发布\", message: \"是否发布文章?\", type: \"warning\" })) {\n\n articlesDv.getLoadingManager().startLoading();\n\n // 调用发布接口\n const response:any = await CmsArticlesForm.publish(CmsSettings.publish.mode,article.cmsPartId,article.id);\n\n if (response.data.code !== 200) {\n Messager.error({ message: response.data.msg });\n return;\n }\n\n Messager.success({ message: \"发布成功\" });\n }\n\n } finally {\n articlesDv.getLoadingManager().completeLoading();\n }\n}\n\n\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkEA,UAAM,cAAc;AAGpB,UAAM,aAAa,SAAS,IAAI,iBAAkB,CAAA;AAElD,UAAM,cAAc,SAAS,IAAI,gBAAiB,CAAA;AAElD,UAAM,mBAAmB,SAAS,IAAI,gBAAiB,CAAA;AAGvD,UAAM,QAAQ;AAId,UAAM,SAAS;AAGf,cAAU,MAAI;AACZ,kBAAY,KAAK;AACjB,uBAAiB,KAAK;AAGtB,YAAM,MAAM,MAAM,MAAM,CAAC,SAAc;AACjC,YAAA,KAAK,iBAAiB,GAAG;AAE3B,gBAAM,aAAa,WAAW;AAE1B,cAAA,cAAc,UAAU,GAAG;AAEvB,kBAAA,eAAe,WAAW;AAEhC,yBAAa,MAAM;AACnB,yBAAa,aAAa,aAAa,KAAK,KAAK,EAAE;AAEtC,yBAAA,aAAa,WAAW,KAAK,CAAC;AAAA,UAC7C;AAEA,qBAAW,KAAK;AAAA,QAClB;AAAA,MAAA,GACC,EAAE,WAAW,KAAA,CAAM;AAAA,IAAA,CACvB;AAKK,UAAA,sBAAsB,OAAO,SAAc;AACzC,YAAA,YAAY,MAAM,SAAS,QAAQ;AAAA,QACvC,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,MAAA,CACP;AAED,UAAI,CAAC,WAAW;AAAE;AAAA,MAAQ;AACpB,YAAA,WAAW,mBAAmB,KAAK,EAAE;AAAA,IAAA;AAM7C,UAAM,oBAAoB,CAAC,MAAW,SAAS,UAAU;AACvD,aAAO,KAAK,EAAE,MAAM,gBAAgB,OAAO,EAAE,IAAI,SAAS,SAAY,KAAK,IAAI,QAAQ,SAAS,KAAK,KAAK,UAAa;AAAA,IAAA;AAIzH,eAAW,eAAe,GAAG,MAAO,kBAAkB,MAAM,MAAM,IAAI,CAAC;AAMjE,UAAA,uBAAuB,OAAO,YAAiB;AAE/C,UAAA;AAEE,YAAA,MAAM,SAAS,QAAQ,EAAE,OAAO,QAAQ,SAAS,WAAW,MAAM,UAAU,CAAC,GAAG;AAEvE,qBAAA,oBAAoB;AAGzB,gBAAA,WAAe,MAAM,gBAAgB,QAAQ,YAAY,QAAQ,MAAK,QAAQ,WAAU,QAAQ,EAAE;AAEpG,cAAA,SAAS,KAAK,SAAS,KAAK;AAC9B,qBAAS,MAAM,EAAE,SAAS,SAAS,KAAK,KAAK;AAC7C;AAAA,UACF;AAEA,mBAAS,QAAQ,EAAE,SAAS,OAAQ,CAAA;AAAA,QACtC;AAAA,MAAA,UAEA;AACW,mBAAA,oBAAoB;MACjC;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"article-list.vue.js","sources":["../../../../../../../src/modules/cms/pages/cms-contents/components/article-list.vue"],"sourcesContent":["<template>\r\n <MKDataTable :data-table=\"articlesDv\" :auto-load=\"false\" class=\"mk-cms-article-list\">\r\n <el-empty v-if=\"part && part.cmsPartTypeId == 1\" description=\"外链栏目下无文章内容\" />\r\n <MKTableView v-else-if=\"part\" :data-table=\"articlesDv\">\r\n <el-scrollbar class=\"mk-cms-article-list__content\" style=\"box-sizing: border-box;font-size: 0;\"\r\n v-if=\"articlesDv.getList().length > 0\">\r\n <el-card class=\"mk-cms-article-list__item\" v-for=\"article in articlesDv.getList()\" :key=\"article.id\">\r\n <div class=\"mk-cms-article-list__item__content\">\r\n <div class=\"left\">\r\n <el-image class=\"cover-image\" :src=\"article.cover\" fit=\"contain\">\r\n <template #error>\r\n <MKSvgIcon iconClass=\"Picture\" />\r\n </template>\r\n </el-image>\r\n </div>\r\n <div class=\"right\">\r\n <div class=\"title\" :title=\"article.title\"> {{ article.title }}</div>\r\n <div class=\"sub-title\" v-if=\"article.subTitle\" :title=\"article.subTitle\"> {{ article.subTitle }}</div>\r\n <div class=\"desc\">\r\n {{ article.desc }}\r\n </div>\r\n <div class=\"footer\">\r\n <div class=\"ext\">\r\n <div class=\"author\">\r\n <MKSvgIcon iconClass=\"UserFilled\"></MKSvgIcon> \r\n 作者 : {{ article.author || \"-\" }}\r\n </div>\r\n <div class=\"publish-time\">\r\n <MKSvgIcon iconClass=\"Timer\"></MKSvgIcon> \r\n 发布时间 : {{ article.publishTime }}\r\n </div>\r\n </div>\r\n <div class=\"tools\">\r\n <el-button type=\"primary\" size=\"large\" @click=\"editArticleHandle(article)\" text>\r\n 编辑\r\n </el-button>\r\n <el-button type=\"danger\" size=\"large\" @click=\"deleteArticleHandle(article)\" text>\r\n 删除\r\n </el-button>\r\n <a v-if=\"CmsSettings.publish.mode == 'static' && article.url\" :href=\"article.url\" target=\"_blank\">\r\n <el-button type=\"primary\" size=\"large\" text>访问</el-button>\r\n </a>\r\n <a :href=\"'/api/cms/content/preview/content/' + article.cmsPartId + '/' + article.id\" v-if=\"CmsSettings.publish.mode == 'static'\" target=\"_blank\">\r\n <el-button type=\"primary\" size=\"large\" text>预览</el-button>\r\n </a>\r\n <el-button type=\"primary\" size=\"large\" text @click=\"publishArticleHandle(article)\">\r\n 发布\r\n </el-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </el-card>\r\n </el-scrollbar>\r\n <el-empty v-if=\"articlesDv.getList().length <= 0\" description=\"暂无文章内容\" />\r\n </MKTableView>\r\n </MKDataTable>\r\n</template>\r\n<script setup lang='ts'>\r\nimport { MKTableView } from \"../../../../../components\"\r\nimport { CmsArticlesTable,CmsArticlesForm } from \"../../../dataviews\"\r\nimport { reactive, defineProps, watch,onMounted } from \"vue\";\r\nimport { Dialoger, isWhereFilter, Messager } from '@maketribe/dm'\r\nimport { useRouter } from \"vue-router\";\r\nimport { useCmsSettings } from \"../../../cms-settings\"\r\n// cms 配置\r\nconst CmsSettings = useCmsSettings();\r\n\r\n// 文章\r\nconst articlesDv = reactive(new CmsArticlesTable()) as CmsArticlesTable;\r\n// 发布文章表单\r\nconst articleForm = reactive(new CmsArticlesForm()) as CmsArticlesForm;\r\n// 草稿文章\r\nconst draftArticleForm = reactive(new CmsArticlesForm()) as CmsArticlesForm;\r\n\r\n// 参数\r\nconst props = defineProps({\r\n part: { type: Object, default: null }\r\n})\r\n\r\nconst router = useRouter();\r\n\r\n// 初始化\r\nonMounted(()=>{\r\n articleForm.init();\r\n draftArticleForm.init();\r\n\r\n // 监听栏目数据变化\r\n watch(() => props.part, (item: any) => {\r\n if (item.cmsPartTypeId != 1) {\r\n\r\n const dataFilter = articlesDv.dataFilter;\r\n\r\n if (isWhereFilter(dataFilter)) {\r\n\r\n const defaultGroup = dataFilter.getDefaultGroup();\r\n\r\n defaultGroup.clear();\r\n defaultGroup.addCondition(\"cmsPartId\", \"=\", item.id);\r\n // 只查草稿\r\n defaultGroup.addCondition(\"isDraft\", \"=\", 1);\r\n }\r\n\r\n articlesDv.load()\r\n }\r\n }, { immediate: true })\r\n})\r\n\r\n/**\r\n * 删除文章\r\n */\r\nconst deleteArticleHandle = async (item: any) => {\r\n const isConfirm = await Dialoger.confirm({\r\n title: \"删除文章?\",\r\n message: \"是否删除文章?\",\r\n type: \"warning\"\r\n })\r\n\r\n if (!isConfirm) { return; }\r\n await articlesDv.deleteAfterRefresh(item.id);\r\n}\r\n\r\n/**\r\n * 编辑文章\r\n */\r\nconst editArticleHandle = (item: any, isEdit = false) => {\r\n router.push({ path: \"/cms/article\", query: { id: isEdit ? undefined : item.id, partId: isEdit ? item.id : undefined } })\r\n}\r\n\r\n// 添加记录\r\narticlesDv.addRecordEvent.on(() => editArticleHandle(props.part, true))\r\n\r\n/**\r\n * fault文章\r\n * @param article \r\n */\r\nconst publishArticleHandle = async (article: any) => {\r\n\r\n try {\r\n\r\n if (await Dialoger.confirm({ title: \"文章发布\", message: \"是否发布文章?\", type: \"warning\" })) {\r\n\r\n articlesDv.getLoadingManager().startLoading();\r\n\r\n // 调用发布接口\r\n const response:any = await CmsArticlesForm.publish(CmsSettings.publish.mode,article.cmsPartId,article.id);\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\r\n } finally {\r\n articlesDv.getLoadingManager().completeLoading();\r\n }\r\n}\r\n\r\n\r\n</script>\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkEA,UAAM,cAAc;AAGpB,UAAM,aAAa,SAAS,IAAI,iBAAkB,CAAA;AAElD,UAAM,cAAc,SAAS,IAAI,gBAAiB,CAAA;AAElD,UAAM,mBAAmB,SAAS,IAAI,gBAAiB,CAAA;AAGvD,UAAM,QAAQ;AAId,UAAM,SAAS;AAGf,cAAU,MAAI;AACZ,kBAAY,KAAK;AACjB,uBAAiB,KAAK;AAGtB,YAAM,MAAM,MAAM,MAAM,CAAC,SAAc;AACjC,YAAA,KAAK,iBAAiB,GAAG;AAE3B,gBAAM,aAAa,WAAW;AAE1B,cAAA,cAAc,UAAU,GAAG;AAEvB,kBAAA,eAAe,WAAW;AAEhC,yBAAa,MAAM;AACnB,yBAAa,aAAa,aAAa,KAAK,KAAK,EAAE;AAEtC,yBAAA,aAAa,WAAW,KAAK,CAAC;AAAA,UAC7C;AAEA,qBAAW,KAAK;AAAA,QAClB;AAAA,MAAA,GACC,EAAE,WAAW,KAAA,CAAM;AAAA,IAAA,CACvB;AAKK,UAAA,sBAAsB,OAAO,SAAc;AACzC,YAAA,YAAY,MAAM,SAAS,QAAQ;AAAA,QACvC,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,MAAA,CACP;AAED,UAAI,CAAC,WAAW;AAAE;AAAA,MAAQ;AACpB,YAAA,WAAW,mBAAmB,KAAK,EAAE;AAAA,IAAA;AAM7C,UAAM,oBAAoB,CAAC,MAAW,SAAS,UAAU;AACvD,aAAO,KAAK,EAAE,MAAM,gBAAgB,OAAO,EAAE,IAAI,SAAS,SAAY,KAAK,IAAI,QAAQ,SAAS,KAAK,KAAK,UAAa;AAAA,IAAA;AAIzH,eAAW,eAAe,GAAG,MAAO,kBAAkB,MAAM,MAAM,IAAI,CAAC;AAMjE,UAAA,uBAAuB,OAAO,YAAiB;AAE/C,UAAA;AAEE,YAAA,MAAM,SAAS,QAAQ,EAAE,OAAO,QAAQ,SAAS,WAAW,MAAM,UAAU,CAAC,GAAG;AAEvE,qBAAA,oBAAoB;AAGzB,gBAAA,WAAe,MAAM,gBAAgB,QAAQ,YAAY,QAAQ,MAAK,QAAQ,WAAU,QAAQ,EAAE;AAEpG,cAAA,SAAS,KAAK,SAAS,KAAK;AAC9B,qBAAS,MAAM,EAAE,SAAS,SAAS,KAAK,KAAK;AAC7C;AAAA,UACF;AAEA,mBAAS,QAAQ,EAAE,SAAS,OAAQ,CAAA;AAAA,QACtC;AAAA,MAAA,UAEA;AACW,mBAAA,oBAAoB;MACjC;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { defineComponent, ref, reactive, onMounted, watch, resolveComponent, resolveDirective, withDirectives, openBlock, createElementBlock, createVNode, withCtx, createElementVNode, createTextVNode, unref, createBlock, createCommentVNode, Fragment, resolveDynamicComponent } from "vue";
1
+ import { defineComponent, ref, watch, reactive, resolveComponent, resolveDirective, withDirectives, openBlock, createElementBlock, createVNode, withCtx, createElementVNode, createTextVNode, unref, createBlock, createCommentVNode, Fragment, resolveDynamicComponent } from "vue";
2
2
  import { MKPartTree } from "../../components/part-tree/index.js";
3
3
  import _sfc_main$1 from "./components/article-list.vue.js";
4
4
  import _sfc_main$2 from "./components/part-info.vue.js";
@@ -33,27 +33,13 @@ import "../../../../components/data-model/data-table-pagination/index.js";
33
33
  import "../../../../components/business/verify-dialog/index.js";
34
34
  import "../../../../components/business/resource-list/index.js";
35
35
  import "../../../../components/business/resource-manager/index.js";
36
- import { FormColumn, Dialoger, Messager } from "@maketribe/dm";
37
- import "../../../../core/DataModelDefines.js";
38
- import { MSAppClient } from "../../../../core/MSAppClient.js";
39
- import "../../../ms/dataviews/ms-config/MsConfigTable.js";
40
- import "../../../ms/dataviews/department/DepartmentForm.js";
41
- import "../../../ms/dataviews/department/DepartmentTable.js";
42
- import "../../../ms/dataviews/department/DepartmentTree.js";
43
- import "../../../ms/dataviews/log/operate-log/OperateLogTable.js";
44
- import "../../../ms/dataviews/log/login-log/LoginLogTable.js";
45
- import "../../../ms/dataviews/log/request-log/RequestLogTable.js";
46
- import "../../../ms/dataviews/log/local-log/LocalLogTree.js";
47
- import "../../../ms/components/material-list/index.js";
48
- import "../../../ms/components/markdown-editor/index.js";
49
- import "../../../ms/components/rich-text-editor/index.js";
50
- import "../../../ms/material-upload-context/material-upload-context-options.js";
51
- import "../../../ms/material-upload-context/material-upload-context.js";
52
- import "@codemirror/lang-html";
53
- import { CmsPartTypesTable } from "../../dataviews/cms-part-types/CmsPartTypesTable.js";
36
+ import { Dialoger } from "@maketribe/dm";
54
37
  import { CmsPartForm } from "../../dataviews/cms-parts/CmsPartForm.js";
55
- import { CmsContentManPartForm } from "../../dataviews/cms-parts/CmsContentManPartForm.js";
38
+ import "../../../../core/DataModelDefines.js";
56
39
  import { useRoute, useRouter } from "vue-router";
40
+ import "@maketribe/locale";
41
+ import { CmsContentManPartForm } from "../../dataviews/cms-parts/CmsContentManPartForm.js";
42
+ import { CmsPartMiniForm } from "../../dataviews/cms-parts/CmsPartMiniForm.js";
57
43
  import { usePartExtension } from "../../composables/part-extensions.js";
58
44
  import { useCmsSettings } from "../../cms-settings.js";
59
45
  const _hoisted_1 = { class: "mk-cms-contents__warp" };
@@ -73,13 +59,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
73
59
  setup(__props) {
74
60
  const route = useRoute();
75
61
  const router = useRouter();
76
- const previewHandle = (isList = false) => {
77
- if (isList) {
78
- window.open(`/api/cms/content/preview/part/${curSelectPartItem.value.id}?pageNo=1`);
79
- } else {
80
- window.open(`/api/cms/content/preview/part/${curSelectPartItem.value.id}`);
81
- }
82
- };
62
+ const curSelectPartId = ref(route.query.pid);
63
+ watch(() => route.query.pid, (v) => {
64
+ curSelectPartId.value = v;
65
+ }, { immediate: true });
66
+ const partMiniForm = reactive(new CmsPartMiniForm());
83
67
  const CmsSettings = useCmsSettings(true);
84
68
  const showPublish = ref(false);
85
69
  const optionData = ref({
@@ -89,15 +73,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
89
73
  isPublishAssets: false,
90
74
  isCompulsion: true
91
75
  });
92
- const btnLoading = ref(false);
76
+ const publishLoading = ref(false);
77
+ const loading = ref(false);
93
78
  const activeTabName = ref("article-list");
94
79
  const curSelectPartItem = ref(null);
95
80
  const partTreeRef = ref(null);
96
81
  const partExt = ref();
97
82
  const partDataForm = reactive(new CmsContentManPartForm());
98
- onMounted(() => {
99
- partDataForm.init();
100
- });
101
83
  const selectPartHandle = async (item) => {
102
84
  if (curSelectPartItem.value != item) {
103
85
  curSelectPartItem.value = item;
@@ -120,98 +102,48 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
120
102
  curSelectPartItem.value = item;
121
103
  activeTabName.value = "part";
122
104
  };
123
- const partForm = reactive(
124
- new class extends CmsPartForm {
125
- async initialize() {
126
- await super.initialize();
127
- this.setColumns([
128
- new FormColumn({
129
- name: "cmsPartTypeId",
130
- label: "栏目类型",
131
- componentInfo: "MKFormDataSelect",
132
- defaultValue: "2",
133
- componentProps: {
134
- dataTable: this.register(
135
- new CmsPartTypesTable()
136
- )
137
- },
138
- required: true
139
- }),
140
- new FormColumn({
141
- name: "name",
142
- label: "栏目名称",
143
- required: true
144
- }),
145
- new FormColumn({
146
- name: "title",
147
- label: "栏目标题",
148
- required: true
149
- })
150
- ]);
151
- }
152
- }()
153
- );
154
105
  const showPartFormHandle = async (item) => {
155
106
  await Dialoger.dataFormDialog({
156
- dataForm: partForm
107
+ dataForm: partMiniForm
157
108
  });
158
109
  if (item.id) {
159
- partForm.addRecord({ parentId: item.id });
110
+ partMiniForm.addRecord({ parentId: item.id });
160
111
  }
161
112
  };
113
+ watch(showPublish, async (v) => {
114
+ if (v) {
115
+ optionData.value.isPublishList = !!curSelectPartItem.value.listTemplate;
116
+ optionData.value.isPublishCover = !!curSelectPartItem.value.coverTemplate;
117
+ optionData.value.isPublishContent = !!curSelectPartItem.value.contentTemplate;
118
+ }
119
+ });
162
120
  watch(activeTabName, async () => {
163
121
  if (activeTabName.value == "part") {
164
122
  curSelectPartItem.value = (await partDataForm.editRecord(curSelectPartItem.value.id)).data.data;
165
123
  }
166
124
  });
167
- partForm.submittedEvent.on(() => {
125
+ partMiniForm.submittedEvent.on(({ response }) => {
168
126
  var _a;
169
- (_a = partTreeRef.value.dataTree) == null ? void 0 : _a.load();
127
+ if (response.data.data) {
128
+ curSelectPartId.value = response.data.data;
129
+ (_a = partTreeRef.value.dataTree) == null ? void 0 : _a.load();
130
+ }
170
131
  });
171
- const loading = ref(false);
172
- const publishAllHandle = async () => {
173
- var _a;
174
- const httpRequest = (_a = MSAppClient.instance) == null ? void 0 : _a.httpRequest;
132
+ const publishAllPartHandle = async () => {
175
133
  try {
176
- const isConfirm = await Dialoger.confirm({ title: "全量发布", message: "是否整站全量发布?", type: "warning" });
177
- if (!isConfirm) {
178
- return;
179
- }
180
134
  loading.value = true;
181
- const response = await httpRequest.post(
182
- `/cms/content/publish/all`
183
- );
184
- if (response.data.code !== 200) {
185
- Messager.error({ message: response.data.msg });
186
- return;
187
- }
188
- Messager.success({ message: "发布成功" });
135
+ await CmsPartForm.publishAll();
189
136
  } finally {
190
137
  loading.value = false;
191
138
  }
192
139
  };
193
140
  const publishPartHandle = async () => {
194
- var _a;
195
- const httpRequest = (_a = MSAppClient.instance) == null ? void 0 : _a.httpRequest;
196
141
  try {
197
- btnLoading.value = true;
198
- const response = await httpRequest.post(
199
- `/cms/content/publish/part`,
200
- {
201
- partIds: [
202
- curSelectPartItem.value.id
203
- ],
204
- ...optionData.value
205
- }
206
- );
207
- if (response.data.code !== 200) {
208
- Messager.error({ message: response.data.msg });
209
- return;
210
- }
142
+ publishLoading.value = true;
143
+ await CmsPartForm.publish(curSelectPartItem.value.id, optionData.value);
211
144
  showPublish.value = false;
212
- Messager.success({ message: "发布成功" });
213
145
  } finally {
214
- btnLoading.value = false;
146
+ publishLoading.value = false;
215
147
  }
216
148
  };
217
149
  const savePartHandle = async () => {
@@ -257,7 +189,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
257
189
  type: "primary",
258
190
  size: "large",
259
191
  text: "",
260
- onClick: publishAllHandle
192
+ onClick: publishAllPartHandle
261
193
  }, {
262
194
  default: withCtx(() => [
263
195
  createVNode(_component_MKSvgIcon, {
@@ -299,7 +231,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
299
231
  onDeleteSuccessfully: deletePartHandle,
300
232
  ref_key: "partTreeRef",
301
233
  ref: partTreeRef,
302
- curSelectId: unref(route).query.pid
234
+ curSelectId: curSelectPartId.value
303
235
  }, null, 8, ["curSelectId"]),
304
236
  curSelectPartItem.value ? (openBlock(), createBlock(_component_el_tabs, {
305
237
  key: 0,
@@ -343,13 +275,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
343
275
  _: 1
344
276
  }, 8, ["disabled"])) : createCommentVNode("", true)
345
277
  ], 64)),
346
- unref(CmsSettings).publish.mode == "static" ? (openBlock(), createBlock(_component_el_dropdown, { key: 2 }, {
278
+ unref(CmsSettings).publish.mode == "static" && curSelectPartItem.value.coverTemplate || curSelectPartItem.value.listTemplate || curSelectPartItem.value.contentTemplate ? (openBlock(), createBlock(_component_el_dropdown, { key: 2 }, {
347
279
  dropdown: withCtx(() => [
348
280
  createVNode(_component_el_dropdown_menu, null, {
349
281
  default: withCtx(() => [
350
282
  unref(CmsSettings).publish.mode == "static" && curSelectPartItem.value.coverTemplate ? (openBlock(), createBlock(_component_el_dropdown_item, {
351
283
  key: 0,
352
- onClick: _cache[2] || (_cache[2] = ($event) => previewHandle())
284
+ onClick: _cache[2] || (_cache[2] = ($event) => unref(CmsPartForm).openPreview(curSelectPartItem.value.id))
353
285
  }, {
354
286
  default: withCtx(() => [
355
287
  createVNode(_component_MKSvgIcon, {
@@ -362,7 +294,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
362
294
  })) : createCommentVNode("", true),
363
295
  curSelectPartItem.value.listTemplate ? (openBlock(), createBlock(_component_el_dropdown_item, {
364
296
  key: 1,
365
- onClick: _cache[3] || (_cache[3] = ($event) => previewHandle(true))
297
+ onClick: _cache[3] || (_cache[3] = ($event) => unref(CmsPartForm).openPreview(curSelectPartItem.value.id, "1"))
366
298
  }, {
367
299
  default: withCtx(() => [
368
300
  createVNode(_component_MKSvgIcon, {
@@ -492,7 +424,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
492
424
  createVNode(_component_el_button, {
493
425
  type: "primary",
494
426
  onClick: publishPartHandle,
495
- loading: btnLoading.value
427
+ loading: publishLoading.value
496
428
  }, {
497
429
  default: withCtx(() => [
498
430
  createTextVNode("确定")
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue2.js","sources":["../../../../../../src/modules/cms/pages/cms-contents/index.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-contents__warp\" v-loading=\"loading\">\r\n <el-page-header style=\"background-color: #fff; padding: 10px\" :icon=\"null\">\r\n <template #title>\r\n <h3 style=\"color: var(--el-text-color-regular); margin-left: 10px\">\r\n <MKSvgIcon iconClass=\"richtext-outline\" style=\"margin-right: 5px\" />\r\n 内容管理\r\n </h3>\r\n </template>\r\n <template #extra>\r\n <div class=\"flex items-center\">\r\n <el-button-group>\r\n <el-button type=\"primary\" size=\"large\" text v-if=\"CmsSettings.publish.mode == 'static'\" @click=\"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 v-if=\"CmsSettings.publish.mode == 'static'\">\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=\"CmsSettings.publish.mode == 'static' && curSelectPartItem.coverTemplate\">\r\n <MKSvgIcon iconClass=\"View\" style=\"margin-left: 10px;\" />\r\n 预览封面\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"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\nimport { useCmsSettings } from \"../../cms-settings\"\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// cms 配置\r\nconst CmsSettings = useCmsSettings(true);\r\n\r\n//发布栏目时的配置\r\nconst showPublish = ref(false)\r\n\r\n//发布配置项\r\nconst optionData = ref({\r\n isPublishList: false,\r\n isPublishCover: false,\r\n isPublishContent: false,\r\n isPublishAssets: false,\r\n isCompulsion: true\r\n});\r\n//发布弹窗的按钮\r\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\r\n if (curSelectPartItem.value != item) {\r\n\r\n curSelectPartItem.value = item;\r\n\r\n if (!curSelectPartItem.value.contentTemplate) {\r\n activeTabName.value = \"part\";\r\n }\r\n else{\r\n activeTabName.value = \"article-list\";\r\n }\r\n\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":[],"mappings":"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"}
1
+ {"version":3,"file":"index.vue2.js","sources":["../../../../../../src/modules/cms/pages/cms-contents/index.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-contents__warp\" v-loading=\"loading\">\r\n <el-page-header style=\"background-color: #fff; padding: 10px\" :icon=\"null\">\r\n <template #title>\r\n <h3 style=\"color: var(--el-text-color-regular); margin-left: 10px\">\r\n <MKSvgIcon iconClass=\"richtext-outline\" style=\"margin-right: 5px\" />\r\n 内容管理\r\n </h3>\r\n </template>\r\n <template #extra>\r\n <div class=\"flex items-center\">\r\n <el-button-group>\r\n <el-button type=\"primary\" size=\"large\" text v-if=\"CmsSettings.publish.mode == 'static'\" @click=\"publishAllPartHandle\">\r\n <MKSvgIcon iconClass=\"Promotion\" style=\"margin-right: 10px\" />\r\n 整站发布\r\n </el-button>\r\n <el-button type=\"primary\" size=\"large\" text @click=\"showPartFormHandle\">\r\n <MKSvgIcon iconClass=\"Plus\" style=\"margin-right: 10px\" />\r\n 新增栏目\r\n </el-button>\r\n </el-button-group>\r\n </div>\r\n </template>\r\n </el-page-header>\r\n <div class=\"mk-cms-contents__body\">\r\n <MKPartTree class=\"mk-cms-contents__body__left\" @select=\"selectPartHandle\" @edit=\"editPartHandle\"\r\n @add=\"showPartFormHandle\" @deleteSuccessfully=\"deletePartHandle\" ref=\"partTreeRef\"\r\n :curSelectId=\"curSelectPartId\" />\r\n <el-tabs v-if=\"curSelectPartItem\" v-model=\"activeTabName\" class=\"mk-cms-contents__body__right\">\r\n <div class=\"mk-cms-contents__body__right__action\">\r\n\r\n <template v-if=\"partExt && activeTabName == 'part-ext'\">\r\n <el-button type=\"primary\" v-if=\"partExt.save\" text @click=\"partExt.save()\">\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 5px\" />\r\n 保存\r\n </el-button>\r\n </template>\r\n <template v-else>\r\n <el-button type=\"primary\" text @click=\"savePartHandle()\" :disabled=\"!partDataForm?.isChanged\"\r\n v-if=\"activeTabName != 'article-list'\">\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 5px\" />\r\n 保存\r\n </el-button>\r\n </template>\r\n <el-dropdown v-if=\"CmsSettings.publish.mode == 'static' && curSelectPartItem.coverTemplate || curSelectPartItem.listTemplate || curSelectPartItem.contentTemplate\">\r\n <span class=\"el-dropdown-link\">\r\n <el-button type=\"primary\" text>\r\n <MKSvgIcon iconClass=\"MoreFilled\" />\r\n </el-button>\r\n </span>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item @click=\"CmsPartForm.openPreview(curSelectPartItem.id)\" v-if=\"CmsSettings.publish.mode == 'static' && curSelectPartItem.coverTemplate\">\r\n <MKSvgIcon iconClass=\"View\" style=\"margin-left: 10px;\" />\r\n 预览封面\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"CmsPartForm.openPreview(curSelectPartItem.id,'1')\" v-if=\"curSelectPartItem.listTemplate\">\r\n <MKSvgIcon iconClass=\"View\" style=\"margin-left: 10px;\" />\r\n 预览列表\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"showPublish = true\">\r\n <MKSvgIcon iconClass=\"Promotion\" style=\"margin-left: 10px;\" />\r\n 发布当前栏目\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </div>\r\n <el-tab-pane label=\"文章列表\" name=\"article-list\" v-if=\"curSelectPartItem.contentTemplate\">\r\n <ArticleList v-if=\"activeTabName == 'article-list'\" :part=\"curSelectPartItem\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"栏目设置\" name=\"part\" v-loading=\"partDataForm.loading\">\r\n <PartInfo v-if=\"activeTabName == 'part'\" :part=\"curSelectPartItem\" ref=\"partInfoRef\"\r\n :partDataForm=\"partDataForm\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"页面内容\" name=\"part-content\" style=\"background-color: #f4f4f4\"\r\n v-if=\"curSelectPartItem.cmsPartTypeId != 1\" v-loading=\"partDataForm.loading\">\r\n <MKDocEditor v-if=\"activeTabName == 'part-content'\" :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=\"publishLoading\">确定</el-button>\r\n </template>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n<script setup lang=\"ts\" >\r\nimport { MKPartTree } from \"../../components\";\r\nimport ArticleList from \"./components/article-list.vue\";\r\nimport PartInfo from \"./components/part-info.vue\";\r\nimport { MKDocEditor } from \"../../../../components\";\r\nimport { reactive, ref, watch } from \"vue\";\r\nimport { Dialoger, Messager } from \"@maketribe/dm\";\r\nimport { CmsContentManPartForm,CmsPartForm, CmsPartMiniForm } from \"../../dataviews/cms-parts\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { usePartExtension, type PartExtension } from \"../../composables/part-extensions\"\r\nimport { ElSwitch } from \"element-plus\";\r\nimport { useCmsSettings } from \"../../cms-settings\"\r\n//路由 \r\nconst route = useRoute();\r\nconst router = useRouter();\r\n\r\n// 当前选中的栏目id\r\nconst curSelectPartId = ref<string>(route.query.pid as string)\r\nwatch(()=>route.query.pid,(v:any)=>{\r\n curSelectPartId.value = v \r\n},{ immediate:true });\r\n\r\n//栏目Mini表单\r\nconst partMiniForm = reactive<CmsPartMiniForm>(new CmsPartMiniForm());\r\n\r\n// cms 配置\r\nconst CmsSettings = useCmsSettings(true);\r\n\r\n//发布栏目时的配置\r\nconst showPublish = ref(false)\r\n\r\n//发布配置项\r\nconst optionData = ref({\r\n isPublishList: false,\r\n isPublishCover: false,\r\n isPublishContent: false,\r\n isPublishAssets: false,\r\n isCompulsion: true\r\n});\r\n\r\n//发布加载状态\r\nconst publishLoading = ref(false);\r\n\r\n// 数据加载状态\r\nconst loading = ref(false)\r\n\r\n// 激活的tab\r\nconst activeTabName = ref(\"article-list\");\r\n\r\n// 当前选中的菜单\r\nconst curSelectPartItem = ref(null as any);\r\n\r\n// 栏目树ref\r\nconst partTreeRef = ref(null);\r\n\r\n//栏目扩展\r\nconst partExt = ref<PartExtension>();\r\n\r\n//栏目数据\r\nconst partDataForm = reactive(new CmsContentManPartForm()) as CmsContentManPartForm;\r\n\r\n// 选择栏目\r\nconst selectPartHandle = async (item: any) => {\r\n\r\n if (curSelectPartItem.value != item) {\r\n\r\n curSelectPartItem.value = item;\r\n\r\n if (!curSelectPartItem.value.contentTemplate) {\r\n activeTabName.value = \"part\";\r\n }\r\n else{\r\n activeTabName.value = \"article-list\";\r\n }\r\n\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\n//删除栏目\r\nconst deletePartHandle = (item: any) => {\r\n if (item.id == curSelectPartItem.value.id) {\r\n curSelectPartItem.value = null;\r\n }\r\n};\r\n\r\n//编辑栏目\r\nconst editPartHandle = (item: any) => {\r\n curSelectPartItem.value = item;\r\n activeTabName.value = \"part\";\r\n};\r\n\r\n/**\r\n * 显示添加栏目表单\r\n */\r\nconst showPartFormHandle = async (item?: any) => {\r\n await Dialoger.dataFormDialog({\r\n dataForm: partMiniForm as CmsContentManPartForm,\r\n });\r\n\r\n if (item.id) {\r\n partMiniForm.addRecord({ parentId: item.id });\r\n }\r\n\r\n};\r\n\r\nwatch(showPublish, async (v) => {\r\n if(v){\r\n optionData.value.isPublishList = !!curSelectPartItem.value.listTemplate\r\n optionData.value.isPublishCover = !!curSelectPartItem.value.coverTemplate\r\n optionData.value.isPublishContent = !!curSelectPartItem.value.contentTemplate\r\n }\r\n})\r\n\r\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\npartMiniForm.submittedEvent.on(({ response }:any) => {\r\n if(response.data.data){\r\n // 重置选中\r\n curSelectPartId.value = response.data.data;\r\n // 刷新完成直接选中\r\n (partTreeRef.value! as any).dataTree?.load();\r\n }\r\n \r\n});\r\n\r\n//栏目发布\r\nconst publishAllPartHandle = async () => {\r\n\r\n try {\r\n\r\n loading.value = true;\r\n \r\n await CmsPartForm.publishAll()\r\n } \r\n finally {\r\n loading.value = false;\r\n }\r\n\r\n}\r\nconst publishPartHandle = async () => {\r\n \r\n try {\r\n\r\n publishLoading.value = true\r\n\r\n await CmsPartForm.publish(curSelectPartItem.value.id,optionData.value);\r\n\r\n showPublish.value = false;\r\n\r\n } finally {\r\n publishLoading.value = false\r\n }\r\n}\r\n\r\n/**\r\n * 保存栏目信息\r\n */\r\nconst savePartHandle = async () => {\r\n curSelectPartItem.value = partDataForm.data;\r\n await partDataForm.submit();\r\n}\r\n\r\n/**\r\n * 更新编辑器内容\r\n * @param v 内容\r\n */\r\nconst EditorChangeHandle = (v: any) => {\r\n partDataForm.data.content = v\r\n}\r\n</script>\r\n"],"names":[],"mappings":"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"}