@maketribe/ms-app 3.2.31 → 3.2.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/basic/data-tree-select/data-tree-select-options.js +1 -1
- package/dist/cjs/components/basic/data-tree-select/data-tree-select-options.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/core/element-block.js +48 -63
- package/dist/cjs/components/basic/doc-editor/core/element-block.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/core/index.js +1 -1
- package/dist/cjs/components/basic/doc-editor/core/index.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/editor.vue.js +10 -3
- package/dist/cjs/components/basic/doc-editor/editor.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/index.js +2 -0
- package/dist/cjs/components/basic/doc-editor/index.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue.js +203 -65
- package/dist/cjs/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/GridNode.js +41 -43
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/GridNode.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js +8 -1
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js +32 -23
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js +44 -22
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js +8 -1
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/index.vue.js +4 -52
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/index.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +4 -0
- package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js +19 -22
- package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/utils.js +2 -2
- package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/utils.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js +16 -9
- package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/composables.js +11 -10
- package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/composables.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js +5 -26
- package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/utils.js +3 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/utils.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/commands.js +6 -0
- package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/commands.js.map +1 -0
- package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/composables.js +118 -0
- package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/composables.js.map +1 -0
- package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/index.vue.js +26 -0
- package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/index.vue.js.map +1 -0
- package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/index.vue2.js +4 -0
- package/dist/cjs/components/basic/doc-editor/plugins/TemplatePlugin/index.vue2.js.map +1 -0
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js +1 -2
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js +2 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/themes/doc-editor-edit.css.js +1 -1
- package/dist/cjs/components/basic/doc-editor/themes/doc-editor-edit.css.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/themes/doc-theme.css.js +1 -2
- package/dist/cjs/components/basic/doc-editor/themes/doc-theme.css.js.map +1 -1
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/modules/cms/composables/part-extensions.js +0 -1
- package/dist/cjs/modules/cms/composables/part-extensions.js.map +1 -1
- package/dist/cjs/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js +0 -1
- package/dist/cjs/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js.map +1 -1
- package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +1 -10
- package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js.map +1 -1
- package/dist/cjs/modules/cms/pages/cms-contents/components/article-list.vue.js +176 -46
- package/dist/cjs/modules/cms/pages/cms-contents/components/article-list.vue.js.map +1 -1
- package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +44 -22
- package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
- package/dist/cjs/modules/cms/pages/cms-contents/components/part-info.vue.js +1 -8
- package/dist/cjs/modules/cms/pages/cms-contents/components/part-info.vue.js.map +1 -1
- package/dist/cjs/modules/cms/pages/cms-contents/index.vue2.js +6 -6
- package/dist/cjs/modules/cms/pages/cms-contents/index.vue2.js.map +1 -1
- package/dist/cjs/modules/ms/components/rich-text-editor/index.js +2 -6
- package/dist/cjs/modules/ms/components/rich-text-editor/index.js.map +1 -1
- package/dist/cjs/modules/ms/components/rich-text-editor/rich-text-editor-options.js +17 -0
- package/dist/cjs/modules/ms/components/rich-text-editor/rich-text-editor-options.js.map +1 -1
- package/dist/cjs/modules/ms/components/rich-text-editor/rich-text-editor.js +12 -8
- package/dist/cjs/modules/ms/components/rich-text-editor/rich-text-editor.js.map +1 -1
- package/dist/cjs/modules/ms/components/rich-text-editor/skins/ui/ms/skin.js +1 -1
- package/dist/cjs/modules/ms/components/rich-text-editor/skins/ui/ms/skin.js.map +1 -1
- package/dist/cjs/modules/ms/index.js +1 -0
- package/dist/cjs/modules/ms/index.js.map +1 -1
- package/dist/esm/components/basic/data-tree-select/data-tree-select-options.js +1 -1
- package/dist/esm/components/basic/data-tree-select/data-tree-select-options.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/core/element-block.js +50 -65
- package/dist/esm/components/basic/doc-editor/core/element-block.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/core/index.js +2 -2
- package/dist/esm/components/basic/doc-editor/core/index.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/editor.vue.js +12 -5
- package/dist/esm/components/basic/doc-editor/editor.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/index.js +3 -1
- package/dist/esm/components/basic/doc-editor/index.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue.js +206 -68
- package/dist/esm/components/basic/doc-editor/plugins/ElementBlockSelectionPlugin/index.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/GridNode.js +41 -43
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/GridNode.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js +8 -1
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js +32 -23
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js +44 -22
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js +8 -1
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/index.vue.js +7 -55
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/index.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +4 -0
- package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js +20 -23
- package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/index.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/utils.js +2 -2
- package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/utils.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js +16 -9
- package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/composables.js +12 -11
- package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/composables.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js +7 -28
- package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/utils.js +4 -2
- package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/utils.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/commands.js +6 -0
- package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/commands.js.map +1 -0
- package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/composables.js +118 -0
- package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/composables.js.map +1 -0
- package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/index.vue.js +27 -0
- package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/index.vue.js.map +1 -0
- package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/index.vue2.js +5 -0
- package/dist/esm/components/basic/doc-editor/plugins/TemplatePlugin/index.vue2.js.map +1 -0
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js +1 -2
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js +3 -2
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/PreviewToolbar.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/themes/doc-editor-edit.css.js +1 -1
- package/dist/esm/components/basic/doc-editor/themes/doc-editor-edit.css.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/themes/doc-theme.css.js +1 -2
- package/dist/esm/components/basic/doc-editor/themes/doc-theme.css.js.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/modules/cms/composables/part-extensions.js +0 -1
- package/dist/esm/modules/cms/composables/part-extensions.js.map +1 -1
- package/dist/esm/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js +0 -1
- package/dist/esm/modules/cms/dataviews/cms-ad-contents/CmsAdContentsForm.js.map +1 -1
- package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +1 -10
- package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js.map +1 -1
- package/dist/esm/modules/cms/pages/cms-contents/components/article-list.vue.js +177 -47
- package/dist/esm/modules/cms/pages/cms-contents/components/article-list.vue.js.map +1 -1
- package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js +45 -23
- package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
- package/dist/esm/modules/cms/pages/cms-contents/components/part-info.vue.js +1 -8
- package/dist/esm/modules/cms/pages/cms-contents/components/part-info.vue.js.map +1 -1
- package/dist/esm/modules/cms/pages/cms-contents/index.vue2.js +6 -6
- package/dist/esm/modules/cms/pages/cms-contents/index.vue2.js.map +1 -1
- package/dist/esm/modules/ms/components/rich-text-editor/index.js +2 -5
- package/dist/esm/modules/ms/components/rich-text-editor/index.js.map +1 -1
- package/dist/esm/modules/ms/components/rich-text-editor/rich-text-editor-options.js +17 -0
- package/dist/esm/modules/ms/components/rich-text-editor/rich-text-editor-options.js.map +1 -1
- package/dist/esm/modules/ms/components/rich-text-editor/rich-text-editor.js +12 -8
- package/dist/esm/modules/ms/components/rich-text-editor/rich-text-editor.js.map +1 -1
- package/dist/esm/modules/ms/components/rich-text-editor/skins/ui/ms/skin.js +1 -1
- package/dist/esm/modules/ms/components/rich-text-editor/skins/ui/ms/skin.js.map +1 -1
- package/dist/esm/modules/ms/index.js +1 -0
- package/dist/esm/modules/ms/index.js.map +1 -1
- package/dist/style/components/basic/doc-editor/index.css +1 -1
- package/dist/style/components/index.css +1 -1
- package/dist/style/index.css +2 -2
- package/dist/style/modules/cms/index.css +1 -1
- package/dist/style/modules/cms/pages/cms-contents/components/article-list.css +1 -1
- package/dist/style/modules/cms/pages/cms-contents/index.css +1 -1
- package/dist/style/modules/ms/components/rich-text-editor/index.css +1 -1
- package/dist/style/modules/ms/index.css +1 -1
- package/dist/style/src/components/basic/doc-editor/index.scss +16 -0
- package/dist/style/src/modules/cms/pages/cms-contents/components/article-list.scss +31 -3
- package/dist/style/src/modules/ms/components/rich-text-editor/index.scss +4 -0
- package/dist/types/components/basic/doc-editor/core/element-block.d.ts +5 -13
- package/dist/types/components/basic/doc-editor/core/index.d.ts +0 -1
- package/dist/types/components/basic/doc-editor/editor.vue.d.ts +9 -0
- package/dist/types/components/basic/doc-editor/index.d.ts +21 -1
- package/dist/types/components/basic/doc-editor/plugins/GridPlugin/GridNode.d.ts +10 -5
- package/dist/types/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.d.ts +5 -0
- package/dist/types/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.d.ts +5 -0
- package/dist/types/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.d.ts +5 -0
- package/dist/types/components/basic/doc-editor/plugins/GridPlugin/TextGridNode.d.ts +5 -0
- package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/ModuleBlockNode.d.ts +5 -1
- package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/composables.d.ts +3 -8
- package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/utils.d.ts +1 -1
- package/dist/types/components/basic/doc-editor/plugins/TemplatePlugin/commands.d.ts +5 -0
- package/dist/types/components/basic/doc-editor/plugins/TemplatePlugin/composables.d.ts +34 -0
- package/dist/types/components/basic/doc-editor/plugins/TemplatePlugin/index.vue.d.ts +2 -0
- package/dist/types/components/basic/doc-editor/plugins/index.d.ts +2 -1
- package/dist/types/modules/ms/components/rich-text-editor/index.d.ts +39 -0
- package/dist/types/modules/ms/components/rich-text-editor/rich-text-editor-options.d.ts +18 -0
- package/dist/types/modules/ms/components/rich-text-editor/rich-text-editor.d.ts +41 -0
- package/package.json +4 -4
- package/dist/cjs/components/basic/doc-editor/core/utils.js +0 -42
- package/dist/cjs/components/basic/doc-editor/core/utils.js.map +0 -1
- package/dist/esm/components/basic/doc-editor/core/utils.js +0 -42
- package/dist/esm/components/basic/doc-editor/core/utils.js.map +0 -1
- package/dist/types/components/basic/doc-editor/core/utils.d.ts +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"article-edit-add-page.vue2.js","sources":["../../../../../../src/modules/cms/pages/cms-contents/article-edit-add-page.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-article-eidtadd__warp\">\r\n <el-page-header style=\"background-color: #fff;padding: 10px;\" :icon=\"ArrowLeftBold\" title=\"返回\"\r\n @back=\"() => router.push({ name: 'cms/contents', query: { pid: articleForm?.data?.cmsPartId } })\">\r\n <template #content>\r\n <template v-if=\"!articleForm.loading\">\r\n <el-text v-if=\"!articleForm.data?.modifier\">{{ !!route.query.id ? \"编辑文章\" : \"创建文章\" }}</el-text>\r\n <el-text v-else>{{ articleForm.data?.modifierName }} 于 {{ articleForm.data?.updatedAt }} 更新</el-text>\r\n </template>\r\n </template>\r\n <template #extra>\r\n <div class=\"mk-cms-article-eidtadd__header_tools\">\r\n\r\n <template v-if=\"!articleForm.loading\">\r\n <el-tag v-if=\"!articleForm.data?.publishTime\" effect=\"dark\" round>未发布</el-tag>\r\n <el-text v-else>发布时间:{{ articleForm.data?.publishTime }}</el-text>\r\n </template>\r\n\r\n <el-dropdown split-button type=\"primary\" style=\"margin-left: 10px;\" @click=\"saveHandle\">\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 10px;\" />\r\n 保存\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item v-if=\"CmsSettings.publish.mode == 'static'\" @click=\"saveAndViewHandle\">\r\n <MKSvgIcon iconClass=\"View\" style=\"margin-right: 5px;\" />\r\n 保存并预览\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"saveAndPublishHandle\">\r\n <MKSvgIcon iconClass=\"Share\" style=\"margin-right: 5px;\" />\r\n 保存并发布\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </div>\r\n </template>\r\n </el-page-header>\r\n <div class=\"mk-cms-article-eidtadd__body\" v-loading=\"articleForm.loading\">\r\n\r\n <MKDocEditor v-if=\"articleForm.data\" :css=\"CmsSettings.content.doc.css\" :js=\"CmsSettings.content.doc.js\" :content=\"content\" @change=\"EditorChangeHandle\">\r\n <template #header>\r\n <div class=\"mk-cms-article-eidtadd__body__header\">\r\n <el-row>\r\n <el-input class=\"title\" type=\"textarea\" :autosize=\"{ minRows: 1, maxRows: 4 }\" maxlength=\"150\"\r\n show-word-limit placeholder=\"请输入标题\" v-model=\"title\" />\r\n </el-row>\r\n <el-row>\r\n <el-input class=\"sub-title\" type=\"textarea\" :autosize=\"{ minRows: 1, maxRows: 4 }\" maxlength=\"150\"\r\n show-word-limit placeholder=\"[选填] 请输入子标题\" v-model=\"subTitle\" />\r\n </el-row>\r\n </div>\r\n </template>\r\n <template #after-extentions>\r\n <div class=\"mk-cms-article-eidtadd__body__extentions\" :class=\"{ hide: closeExtentions! }\" ref=\"extentionsRef\">\r\n <MKSvgIcon icon-class=\"ArrowLeft\" class=\"open\" @click=\"closeExtentionsHandle\" v-if=\"closeExtentions\">\r\n </MKSvgIcon>\r\n <MKSvgIcon v-else icon-class=\"ArrowRight\" class=\"close\" @click=\"hideExtentionsHandle\">\r\n </MKSvgIcon>\r\n <el-divider content-position=\"left\">文章设置</el-divider>\r\n <MKDataForm :dataForm=\"articleForm\">\r\n <MKForm :dataForm=\"articleForm\" style=\"width:225px\" label-width=\"110px\">\r\n <el-row v-if=\"CmsSettings.content.useTop\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isTop\"></MKDataFormItem>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.useNew\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isNew\"></MKDataFormItem>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.useHotRecommend\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isHotRecommend\"></MKDataFormItem>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.usePartRecommend\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isPartRecommend\"></MKDataFormItem>\r\n </el-row>\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isShowList\"></MKDataFormItem>\r\n </el-row>\r\n <!-- <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isDraft\"></MKDataFormItem>\r\n </el-row> -->\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"sortNo\"></MKDataFormItem>\r\n </el-row>\r\n </MKForm>\r\n </MKDataForm>\r\n </div>\r\n </template>\r\n <template #footer>\r\n <div class=\"mk-cms-article-eidtadd__body__footer\">\r\n <el-tabs v-model=\"articleOptionsActive\">\r\n <el-tab-pane label=\"基础内容\" name=\"content\">\r\n <div class=\"content\">\r\n <el-row :gutter=\"20\">\r\n <el-col :span=\"6\">\r\n <el-input placeholder=\"[选填] 作者\" v-model=\"articleForm.data.author\" clearable>\r\n <template #prefix>\r\n <MKSvgIcon iconClass=\"UserFilled\" />\r\n </template>\r\n </el-input>\r\n </el-col>\r\n <el-col :span=\"6\">\r\n <el-date-picker v-model=\"releaseDate\" type=\"datetime\" placeholder=\"发布时间\"\r\n :default-time=\"new Date()\" />\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-input placeholder=\"[选填] 发布地址\" v-model=\"articleForm.data.locationDesc\" clearable>\r\n <template #prefix>\r\n <MKSvgIcon iconClass=\"Location\" />\r\n </template>\r\n </el-input>\r\n </el-col>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.useTags\">\r\n <el-select v-model=\"tags\" multiple filterable allow-create default-first-option\r\n :reserve-keyword=\"false\" placeholder=\"[可选] 选择文章标签\" style=\"width: 100%\">\r\n <template #prefix>\r\n <MKSvgIcon iconClass=\"CollectionTag\" />\r\n </template>\r\n </el-select>\r\n </el-row>\r\n <el-divider content-position=\"left\">\r\n 文章封面/简介\r\n <el-switch v-model=\"descAutoCreate\" style=\"margin-left: 10px;\" inline-prompt active-text=\"自动生成\"\r\n inactive-text=\"手动撰写\" />\r\n </el-divider>\r\n <el-row class=\"cover-desc\">\r\n <MKUploadImage style=\"margin-right: 10px;\" v-model=\"articleForm.data.cover\" width=\"115px\" height=\"115px\" \r\n :uploadContext=\"new ImageUploadContext(CmsSettings.content.coverImageSize)\">\r\n\r\n </MKUploadImage>\r\n <el-input class=\"desc\" type=\"textarea\" :autosize=\"{ minRows: 5, maxRows: 30 }\" maxlength=\"1000\"\r\n show-word-limit placeholder=\"[选填] 文章简介\" v-model=\"desc\" />\r\n </el-row>\r\n <el-divider content-position=\"left\">文章Banner图</el-divider>\r\n <el-row>\r\n <MKUploadImage v-model=\"articleForm.data.banner\" width=\"100%\" height=\"300px\" :uploadContext=\"new ImageUploadContext(CmsSettings.content.bannerImageSize)\">\r\n\r\n </MKUploadImage>\r\n </el-row>\r\n </div>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"文章资源库\" name=\"atlas\" v-if=\"CmsSettings.content.useAtlas\">\r\n <ArticleAtlas v-model=\"atlas\" :articleId=\"parseInt(articleForm.data?.id)\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"页面设置\" name=\"settings\" v-if=\"CmsSettings.publish.mode == 'static'\">\r\n <MKDataForm :dataForm=\"articleForm\" label-width=\"120px\">\r\n <MKForm :dataForm=\"articleForm\">\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"seoKeywords\"></MKDataFormItem>\r\n </el-row>\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"seoDesc\"></MKDataFormItem>\r\n </el-row>\r\n </MKForm>\r\n </MKDataForm>\r\n </el-tab-pane>\r\n </el-tabs>\r\n </div>\r\n </template>\r\n </MKDocEditor>\r\n </div>\r\n </div>\r\n</template>\r\n<script setup lang='ts'>\r\nimport { onMounted, reactive, ref, computed } from \"vue\";\r\nimport { ArrowLeftBold } from \"@element-plus/icons-vue\"\r\nimport { MKDocEditor, MKSvgIcon, MKUploadImage } from '../../../../components'\r\nimport { MKDataForm, MKForm, MKDataFormItem } from \"../../../../components\";\r\nimport ArticleAtlas from \"./components/article-atlas.vue\";\r\nimport { CmsArticlesForm } from \"../../dataviews\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { ImageUploadContext } from \"../../../ms\";\r\nimport { useCmsSettings } from \"../../cms-settings\"\r\n// cms 配置\r\nconst CmsSettings = useCmsSettings(true);\r\n\r\nconst route = useRoute()\r\nconst router = useRouter();\r\n\r\n\r\n// 文章请求\r\nconst articleForm = reactive(new CmsArticlesForm()) as CmsArticlesForm;\r\nconst articleOptionsActive = ref(\"content\");\r\n\r\n\r\n// 标题\r\nconst title = computed({\r\n get() { return articleForm.data?.title || \"\"; },\r\n set(val) { articleForm.data.title = val; }\r\n});\r\n// 子标题\r\nconst subTitle = computed({\r\n get() { return articleForm.data?.subTitle || \"\"; },\r\n set(val) { articleForm.data.subTitle = val; }\r\n});\r\n// 获取默认简介\r\nconst getDefaultDescContent = () => {\r\n if (!descAutoCreate.value) {\r\n return \"\";\r\n }\r\n let val: any = \"\";\r\n const div = document.createElement(\"div\");\r\n div.innerHTML = content.value;\r\n val = div.textContent?.substring(0, 700);\r\n if (div.textContent!.length > 700) {\r\n val += \"...\";\r\n }\r\n return val;\r\n}\r\nconst descAutoCreate = ref(true)\r\n// 简介\r\nconst desc = computed({\r\n get() {\r\n return articleForm.data?.desc || getDefaultDescContent();\r\n },\r\n set(val) {\r\n articleForm.data.desc = val;\r\n }\r\n});\r\n// 发布时间\r\nconst releaseDate = computed({\r\n get() { return articleForm.data?.releaseDate || articleForm.data?.publishTime; },\r\n set(val) { articleForm.data.releaseDate = val; }\r\n});\r\n// 标签\r\nconst tags = ref([]);\r\n// computed({ \r\n// get() { return articleForm.data?.tags || [] }, \r\n// set(val) { articleForm.data.tags = val; } \r\n// });\r\n// 内容\r\nconst content = computed({\r\n get() { return articleForm.data?.content || \"\"; },\r\n set(val) { articleForm.data.content = val; }\r\n});\r\n\r\n// 图集\r\nconst atlas = computed({\r\n get() {\r\n return articleForm.data?.atlas\r\n },\r\n set(val) { articleForm.data.atlas = val; }\r\n});\r\n\r\n// 表单初始化\r\nconst formInitDataInfo = ()=>{\r\n // 初始化数据加载\r\n if (route.query.id) {\r\n articleForm.editRecord(route.query.id);\r\n }\r\n else if (route.query.partId) {\r\n articleForm.addRecord({ cmsPartId: route.query.partId,isDraft:1 });\r\n }\r\n else {\r\n articleForm.addRecord({ isDraft:1 });\r\n }\r\n}\r\n\r\nonMounted(() => {\r\n formInitDataInfo();\r\n articleForm.init();\r\n\r\n})\r\n\r\n// 保存\r\nconst saveHandle = async () => {\r\n\r\n // 简介不存在的时候使用自动生成的\r\n if (!articleForm.data?.desc) {\r\n desc.value = getDefaultDescContent();\r\n }\r\n\r\n let result = await articleForm.submit();\r\n\r\n router.back();\r\n\r\n return result;\r\n}\r\n\r\n// 保存并预览\r\nconst saveAndViewHandle = async ()=>{\r\n const partId = articleForm.data.cmsPartId;\r\n const data = await saveHandle();\r\n if(data.data.code == 200 && data.data.data){\r\n window.open('/api/cms/content/preview/content/' + partId + '/' + data.data.data)\r\n }\r\n}\r\n\r\n// 保存并发布\r\nconst saveAndPublishHandle = async ()=>{\r\n const result:any = await articleForm.saveAndPublish(CmsSettings.publish.mode);\r\n if(result.data.code == 200){\r\n router.back();\r\n }\r\n}\r\n\r\n// 隐藏扩展\r\nconst closeExtentions = ref(true);\r\nconst extentionsRef = ref();\r\nconst hideExtentionsHandle = () => {\r\n closeExtentions.value = true;\r\n}\r\n//展示扩展\r\nconst closeExtentionsHandle = () => {\r\n closeExtentions.value = false;\r\n}\r\n\r\nconst EditorChangeHandle = (v: any) => {\r\n articleForm.data.content = v;\r\n}\r\n\r\n</script>\r\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"article-edit-add-page.vue2.js","sources":["../../../../../../src/modules/cms/pages/cms-contents/article-edit-add-page.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-article-eidtadd__warp\">\r\n <el-page-header style=\"background-color: #fff;padding: 10px;\" :icon=\"ArrowLeftBold\" title=\"返回\"\r\n @back=\"() => router.push({ name: 'cms/contents', query: { pid: articleForm?.data?.cmsPartId } })\">\r\n <template #content>\r\n <template v-if=\"!articleForm.loading\">\r\n <el-text v-if=\"!articleForm.data?.modifier\">{{ !!route.query.id ? \"编辑文章\" : \"创建文章\" }}</el-text>\r\n <el-text v-else>{{ articleForm.data?.modifierName }} 于 {{ articleForm.data?.updatedAt }} 更新</el-text>\r\n </template>\r\n </template>\r\n <template #extra>\r\n <div class=\"mk-cms-article-eidtadd__header_tools\">\r\n\r\n <template v-if=\"!articleForm.loading\">\r\n <el-tag v-if=\"!articleForm.data?.publishTime\" effect=\"dark\" round>未发布</el-tag>\r\n <el-text v-else>发布时间:{{ articleForm.data?.publishTime }}</el-text>\r\n </template>\r\n\r\n <el-dropdown split-button type=\"primary\" style=\"margin-left: 10px;\" @click=\"saveHandle\">\r\n <MKSvgIcon iconClass=\"save\" style=\"margin-right: 10px;\" />\r\n 保存\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item v-if=\"CmsSettings.publish.mode == 'static'\" @click=\"saveAndViewHandle\">\r\n <MKSvgIcon iconClass=\"View\" style=\"margin-right: 5px;\" />\r\n 保存并预览\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"saveAndPublishHandle\">\r\n <MKSvgIcon iconClass=\"Share\" style=\"margin-right: 5px;\" />\r\n 保存并发布\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n </div>\r\n </template>\r\n </el-page-header>\r\n <div class=\"mk-cms-article-eidtadd__body\" v-loading=\"articleForm.loading\">\r\n\r\n <MKDocEditor v-if=\"articleForm.data\" :css=\"CmsSettings.content.doc.css\" :js=\"CmsSettings.content.doc.js\" :content=\"content\" @change=\"EditorChangeHandle\">\r\n <template #header>\r\n <div class=\"mk-cms-article-eidtadd__body__header\">\r\n <el-row>\r\n <el-input class=\"title\" type=\"textarea\" :autosize=\"{ minRows: 1, maxRows: 4 }\" maxlength=\"150\"\r\n show-word-limit placeholder=\"请输入标题\" v-model=\"title\" />\r\n </el-row>\r\n <el-row>\r\n <el-input class=\"sub-title\" type=\"textarea\" :autosize=\"{ minRows: 1, maxRows: 4 }\" maxlength=\"150\"\r\n show-word-limit placeholder=\"[选填] 请输入子标题\" v-model=\"subTitle\" />\r\n </el-row>\r\n </div>\r\n </template>\r\n <template #after-extentions>\r\n <div class=\"mk-cms-article-eidtadd__body__extentions\" :class=\"{ hide: closeExtentions! }\" ref=\"extentionsRef\">\r\n <MKSvgIcon icon-class=\"ArrowLeft\" class=\"open\" @click=\"closeExtentionsHandle\" v-if=\"closeExtentions\">\r\n </MKSvgIcon>\r\n <MKSvgIcon v-else icon-class=\"ArrowRight\" class=\"close\" @click=\"hideExtentionsHandle\">\r\n </MKSvgIcon>\r\n <el-divider content-position=\"left\">文章设置</el-divider>\r\n <MKDataForm :dataForm=\"articleForm\">\r\n <MKForm :dataForm=\"articleForm\" style=\"width:225px\" label-width=\"110px\">\r\n <el-row v-if=\"CmsSettings.content.useTop\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isTop\"></MKDataFormItem>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.useNew\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isNew\"></MKDataFormItem>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.useHotRecommend\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isHotRecommend\"></MKDataFormItem>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.usePartRecommend\">\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isPartRecommend\"></MKDataFormItem>\r\n </el-row>\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isShowList\"></MKDataFormItem>\r\n </el-row>\r\n <!-- <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"isDraft\"></MKDataFormItem>\r\n </el-row> -->\r\n <!-- <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"sortNo\"></MKDataFormItem>\r\n </el-row> -->\r\n </MKForm>\r\n </MKDataForm>\r\n </div>\r\n </template>\r\n <template #footer>\r\n <div class=\"mk-cms-article-eidtadd__body__footer\">\r\n <el-tabs v-model=\"articleOptionsActive\">\r\n <el-tab-pane label=\"基础内容\" name=\"content\">\r\n <div class=\"content\">\r\n <el-row :gutter=\"20\">\r\n <el-col :span=\"6\">\r\n <el-input placeholder=\"[选填] 作者\" v-model=\"articleForm.data.author\" clearable>\r\n <template #prefix>\r\n <MKSvgIcon iconClass=\"UserFilled\" />\r\n </template>\r\n </el-input>\r\n </el-col>\r\n <el-col :span=\"6\">\r\n <el-date-picker v-model=\"releaseDate\" type=\"datetime\" placeholder=\"发布时间\"\r\n :default-time=\"new Date()\" />\r\n </el-col>\r\n <el-col :span=\"12\">\r\n <el-input placeholder=\"[选填] 发布地址\" v-model=\"articleForm.data.locationDesc\" clearable>\r\n <template #prefix>\r\n <MKSvgIcon iconClass=\"Location\" />\r\n </template>\r\n </el-input>\r\n </el-col>\r\n </el-row>\r\n <el-row v-if=\"CmsSettings.content.useTags\">\r\n <el-select v-model=\"tags\" multiple filterable allow-create default-first-option\r\n :reserve-keyword=\"false\" placeholder=\"[可选] 选择文章标签\" style=\"width: 100%\">\r\n <template #prefix>\r\n <MKSvgIcon iconClass=\"CollectionTag\" />\r\n </template>\r\n </el-select>\r\n </el-row>\r\n <el-divider content-position=\"left\">\r\n 文章封面/简介\r\n <el-switch v-model=\"descAutoCreate\" style=\"margin-left: 10px;\" inline-prompt active-text=\"自动生成\"\r\n inactive-text=\"手动撰写\" />\r\n </el-divider>\r\n <el-row class=\"cover-desc\">\r\n <MKUploadImage style=\"margin-right: 10px;\" v-model=\"articleForm.data.cover\" width=\"115px\" height=\"115px\" \r\n :uploadContext=\"new ImageUploadContext(CmsSettings.content.coverImageSize)\">\r\n\r\n </MKUploadImage>\r\n <el-input class=\"desc\" type=\"textarea\" :autosize=\"{ minRows: 5, maxRows: 30 }\" maxlength=\"1000\"\r\n show-word-limit placeholder=\"[选填] 文章简介\" v-model=\"desc\" />\r\n </el-row>\r\n <el-divider content-position=\"left\">文章Banner图</el-divider>\r\n <el-row>\r\n <MKUploadImage v-model=\"articleForm.data.banner\" style=\"width: 100%;\" height=\"300px\" :uploadContext=\"new ImageUploadContext(CmsSettings.content.bannerImageSize)\">\r\n\r\n </MKUploadImage>\r\n </el-row>\r\n </div>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"文章资源库\" name=\"atlas\" v-if=\"CmsSettings.content.useAtlas\">\r\n <ArticleAtlas v-model=\"atlas\" :articleId=\"parseInt(articleForm.data?.id)\" />\r\n </el-tab-pane>\r\n <el-tab-pane label=\"页面设置\" name=\"settings\" v-if=\"CmsSettings.publish.mode == 'static'\">\r\n <MKDataForm :dataForm=\"articleForm\" label-width=\"120px\">\r\n <MKForm :dataForm=\"articleForm\">\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"seoKeywords\"></MKDataFormItem>\r\n </el-row>\r\n <el-row>\r\n <MKDataFormItem style=\"width: 100%;\" name=\"seoDesc\"></MKDataFormItem>\r\n </el-row>\r\n </MKForm>\r\n </MKDataForm>\r\n </el-tab-pane>\r\n </el-tabs>\r\n </div>\r\n </template>\r\n </MKDocEditor>\r\n </div>\r\n </div>\r\n</template>\r\n<script setup lang='ts'>\r\nimport { onMounted, reactive, ref, computed } from \"vue\";\r\nimport { ArrowLeftBold } from \"@element-plus/icons-vue\"\r\nimport { MKDocEditor, MKSvgIcon, MKUploadImage } from '../../../../components'\r\nimport { MKDataForm, MKForm, MKDataFormItem } from \"../../../../components\";\r\nimport ArticleAtlas from \"./components/article-atlas.vue\";\r\nimport { CmsArticlesForm } from \"../../dataviews\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { ImageUploadContext } from \"../../../ms\";\r\nimport { useCmsSettings } from \"../../cms-settings\"\r\n// cms 配置\r\nconst CmsSettings = useCmsSettings(true);\r\n\r\nconst route = useRoute()\r\nconst router = useRouter();\r\n\r\n\r\n// 文章请求\r\nconst articleForm = reactive(new CmsArticlesForm()) as CmsArticlesForm;\r\nconst articleOptionsActive = ref(\"content\");\r\n\r\n\r\n// 标题\r\nconst title = computed({\r\n get() { return articleForm.data?.title || \"\"; },\r\n set(val) { articleForm.data.title = val; }\r\n});\r\n// 子标题\r\nconst subTitle = computed({\r\n get() { return articleForm.data?.subTitle || \"\"; },\r\n set(val) { articleForm.data.subTitle = val; }\r\n});\r\n// 获取默认简介\r\nconst getDefaultDescContent = () => {\r\n if (!descAutoCreate.value) {\r\n return \"\";\r\n }\r\n let val: any = \"\";\r\n const div = document.createElement(\"div\");\r\n div.innerHTML = content.value;\r\n val = div.textContent?.substring(0, 700);\r\n if (div.textContent!.length > 700) {\r\n val += \"...\";\r\n }\r\n return val;\r\n}\r\nconst descAutoCreate = ref(true)\r\n// 简介\r\nconst desc = computed({\r\n get() {\r\n return articleForm.data?.desc || getDefaultDescContent();\r\n },\r\n set(val) {\r\n articleForm.data.desc = val;\r\n }\r\n});\r\n// 发布时间\r\nconst releaseDate = computed({\r\n get() { return articleForm.data?.releaseDate || articleForm.data?.publishTime; },\r\n set(val) { articleForm.data.releaseDate = val; }\r\n});\r\n// 标签\r\nconst tags = ref([]);\r\n// computed({ \r\n// get() { return articleForm.data?.tags || [] }, \r\n// set(val) { articleForm.data.tags = val; } \r\n// });\r\n// 内容\r\nconst content = computed({\r\n get() { return articleForm.data?.content || \"\"; },\r\n set(val) { articleForm.data.content = val; }\r\n});\r\n\r\n// 图集\r\nconst atlas = computed({\r\n get() {\r\n return articleForm.data?.atlas\r\n },\r\n set(val) { articleForm.data.atlas = val; }\r\n});\r\n\r\n// 表单初始化\r\nconst formInitDataInfo = ()=>{\r\n // 初始化数据加载\r\n if (route.query.id) {\r\n articleForm.editRecord(route.query.id);\r\n }\r\n else if (route.query.partId) {\r\n articleForm.addRecord({ cmsPartId: route.query.partId,isDraft:1 });\r\n }\r\n else {\r\n articleForm.addRecord({ isDraft:1 });\r\n }\r\n}\r\n\r\nonMounted(() => {\r\n formInitDataInfo();\r\n articleForm.init();\r\n\r\n})\r\n\r\n// 保存\r\nconst saveHandle = async () => {\r\n\r\n // 简介不存在的时候使用自动生成的\r\n if (!articleForm.data?.desc) {\r\n desc.value = getDefaultDescContent();\r\n }\r\n\r\n let result = await articleForm.submit();\r\n\r\n router.back();\r\n\r\n return result;\r\n}\r\n\r\n// 保存并预览\r\nconst saveAndViewHandle = async ()=>{\r\n const partId = articleForm.data.cmsPartId;\r\n const data = await saveHandle();\r\n if(data.data.code == 200 && data.data.data){\r\n window.open('/api/cms/content/preview/content/' + partId + '/' + data.data.data)\r\n }\r\n}\r\n\r\n// 保存并发布\r\nconst saveAndPublishHandle = async ()=>{\r\n const result:any = await articleForm.saveAndPublish(CmsSettings.publish.mode);\r\n if(result.data.code == 200){\r\n router.back();\r\n }\r\n}\r\n\r\n// 隐藏扩展\r\nconst closeExtentions = ref(true);\r\nconst extentionsRef = ref();\r\nconst hideExtentionsHandle = () => {\r\n closeExtentions.value = true;\r\n}\r\n//展示扩展\r\nconst closeExtentionsHandle = () => {\r\n closeExtentions.value = false;\r\n}\r\n\r\nconst EditorChangeHandle = (v: any) => {\r\n articleForm.data.content = v;\r\n}\r\n\r\n</script>\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, reactive, onMounted, watch, resolveComponent, openBlock, createBlock, withCtx, unref, createElementBlock, Fragment, renderList, createElementVNode, createVNode, toDisplayString,
|
|
1
|
+
import { defineComponent, reactive, onMounted, watch, resolveComponent, openBlock, createBlock, withCtx, unref, createElementBlock, Fragment, renderList, createElementVNode, createVNode, toDisplayString, createTextVNode, createCommentVNode } from "vue";
|
|
2
2
|
import "../../../../../components/abstract/abstract-select/abstract-select.js";
|
|
3
3
|
import "../../../../../components/abstract/abstract-select/abstract-select-options.js";
|
|
4
4
|
import "element-plus";
|
|
@@ -60,16 +60,18 @@ import { MKTableView } from "../../../../../components/data-model/data-table/vie
|
|
|
60
60
|
const _hoisted_1 = { class: "mk-cms-article-list__item__content" };
|
|
61
61
|
const _hoisted_2 = { class: "left" };
|
|
62
62
|
const _hoisted_3 = { class: "right" };
|
|
63
|
-
const _hoisted_4 =
|
|
63
|
+
const _hoisted_4 = { class: "top" };
|
|
64
64
|
const _hoisted_5 = ["title"];
|
|
65
|
-
const _hoisted_6 = { class: "
|
|
66
|
-
const _hoisted_7 =
|
|
67
|
-
const _hoisted_8 = { class: "
|
|
68
|
-
const _hoisted_9 = { class: "
|
|
69
|
-
const _hoisted_10 = { class: "
|
|
70
|
-
const _hoisted_11 = { class: "
|
|
71
|
-
const _hoisted_12 =
|
|
72
|
-
const _hoisted_13 =
|
|
65
|
+
const _hoisted_6 = { class: "tags" };
|
|
66
|
+
const _hoisted_7 = ["title"];
|
|
67
|
+
const _hoisted_8 = { class: "desc" };
|
|
68
|
+
const _hoisted_9 = { class: "footer" };
|
|
69
|
+
const _hoisted_10 = { class: "ext" };
|
|
70
|
+
const _hoisted_11 = { class: "author" };
|
|
71
|
+
const _hoisted_12 = { class: "publish-time" };
|
|
72
|
+
const _hoisted_13 = { class: "tools" };
|
|
73
|
+
const _hoisted_14 = ["href"];
|
|
74
|
+
const _hoisted_15 = ["href"];
|
|
73
75
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
74
76
|
__name: "article-list",
|
|
75
77
|
props: {
|
|
@@ -77,11 +79,41 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
77
79
|
},
|
|
78
80
|
setup(__props) {
|
|
79
81
|
const CmsSettings = useCmsSettings();
|
|
82
|
+
console.log(CmsSettings.content);
|
|
80
83
|
const articlesDv = reactive(new CmsArticlesTable());
|
|
81
84
|
const articleForm = reactive(new CmsArticlesForm());
|
|
82
85
|
const draftArticleForm = reactive(new CmsArticlesForm());
|
|
83
86
|
const props = __props;
|
|
84
87
|
const router = useRouter();
|
|
88
|
+
const changeArticleStatus = async (article, item, status) => {
|
|
89
|
+
const text = {
|
|
90
|
+
"isTop": ["取消置顶", "设为置顶"],
|
|
91
|
+
"isNew": ["取消最新", "设为最新"],
|
|
92
|
+
"isHotRecommend": ["取消热门推荐", "设为热门推荐"],
|
|
93
|
+
"isPartRecommend": ["取消栏目推荐", "设为栏目推荐"]
|
|
94
|
+
};
|
|
95
|
+
const isConfirm = await Dialoger.confirm({
|
|
96
|
+
title: "修改文章状态",
|
|
97
|
+
message: `是否${text[item][status]}?`,
|
|
98
|
+
type: "warning"
|
|
99
|
+
});
|
|
100
|
+
if (!isConfirm) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
try {
|
|
104
|
+
articlesDv.getLoadingManager().startLoading();
|
|
105
|
+
await articleForm.editRecord(article.id);
|
|
106
|
+
const isSuccess = await articleForm.simpleSubmit({
|
|
107
|
+
id: article.id,
|
|
108
|
+
[item]: status
|
|
109
|
+
});
|
|
110
|
+
if (isSuccess) {
|
|
111
|
+
articlesDv.load();
|
|
112
|
+
}
|
|
113
|
+
} finally {
|
|
114
|
+
articlesDv.getLoadingManager().completeLoading();
|
|
115
|
+
}
|
|
116
|
+
};
|
|
85
117
|
onMounted(() => {
|
|
86
118
|
articleForm.init();
|
|
87
119
|
draftArticleForm.init();
|
|
@@ -132,7 +164,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
132
164
|
const _component_el_empty = resolveComponent("el-empty");
|
|
133
165
|
const _component_MKSvgIcon = resolveComponent("MKSvgIcon");
|
|
134
166
|
const _component_el_image = resolveComponent("el-image");
|
|
167
|
+
const _component_el_tag = resolveComponent("el-tag");
|
|
135
168
|
const _component_el_button = resolveComponent("el-button");
|
|
169
|
+
const _component_el_dropdown_item = resolveComponent("el-dropdown-item");
|
|
170
|
+
const _component_el_dropdown_menu = resolveComponent("el-dropdown-menu");
|
|
171
|
+
const _component_el_dropdown = resolveComponent("el-dropdown");
|
|
136
172
|
const _component_el_card = resolveComponent("el-card");
|
|
137
173
|
const _component_el_scrollbar = resolveComponent("el-scrollbar");
|
|
138
174
|
const _component_MKDataTable = resolveComponent("MKDataTable");
|
|
@@ -176,28 +212,72 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
176
212
|
}, 1032, ["src"])
|
|
177
213
|
]),
|
|
178
214
|
createElementVNode("div", _hoisted_3, [
|
|
179
|
-
createElementVNode("div",
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
215
|
+
createElementVNode("div", _hoisted_4, [
|
|
216
|
+
createElementVNode("div", {
|
|
217
|
+
class: "title",
|
|
218
|
+
title: article.title
|
|
219
|
+
}, toDisplayString(article.title), 9, _hoisted_5),
|
|
220
|
+
createElementVNode("div", _hoisted_6, [
|
|
221
|
+
unref(CmsSettings).content.useTop && article.isTop == 1 ? (openBlock(), createBlock(_component_el_tag, {
|
|
222
|
+
key: 0,
|
|
223
|
+
class: "tag",
|
|
224
|
+
onClick: ($event) => changeArticleStatus(article, "isTop", 0)
|
|
225
|
+
}, {
|
|
226
|
+
default: withCtx(() => [
|
|
227
|
+
createTextVNode("置顶")
|
|
228
|
+
]),
|
|
229
|
+
_: 2
|
|
230
|
+
}, 1032, ["onClick"])) : createCommentVNode("", true),
|
|
231
|
+
unref(CmsSettings).content.useNew && article.isNew == 1 ? (openBlock(), createBlock(_component_el_tag, {
|
|
232
|
+
key: 1,
|
|
233
|
+
class: "tag",
|
|
234
|
+
onClick: ($event) => changeArticleStatus(article, "isNew", 0)
|
|
235
|
+
}, {
|
|
236
|
+
default: withCtx(() => [
|
|
237
|
+
createTextVNode("最新")
|
|
238
|
+
]),
|
|
239
|
+
_: 2
|
|
240
|
+
}, 1032, ["onClick"])) : createCommentVNode("", true),
|
|
241
|
+
unref(CmsSettings).content.useHotRecommend && article.isHotRecommend == 1 ? (openBlock(), createBlock(_component_el_tag, {
|
|
242
|
+
key: 2,
|
|
243
|
+
class: "tag",
|
|
244
|
+
onClick: ($event) => changeArticleStatus(article, "isHotRecommend", 0)
|
|
245
|
+
}, {
|
|
246
|
+
default: withCtx(() => [
|
|
247
|
+
createTextVNode("热门推荐")
|
|
248
|
+
]),
|
|
249
|
+
_: 2
|
|
250
|
+
}, 1032, ["onClick"])) : createCommentVNode("", true),
|
|
251
|
+
unref(CmsSettings).content.usePartRecommend && article.isPartRecommend == 1 ? (openBlock(), createBlock(_component_el_tag, {
|
|
252
|
+
key: 3,
|
|
253
|
+
class: "tag",
|
|
254
|
+
onClick: ($event) => changeArticleStatus(article, "isPartRecommend", 0)
|
|
255
|
+
}, {
|
|
256
|
+
default: withCtx(() => [
|
|
257
|
+
createTextVNode("栏目推荐")
|
|
258
|
+
]),
|
|
259
|
+
_: 2
|
|
260
|
+
}, 1032, ["onClick"])) : createCommentVNode("", true)
|
|
261
|
+
])
|
|
262
|
+
]),
|
|
183
263
|
article.subTitle ? (openBlock(), createElementBlock("div", {
|
|
184
264
|
key: 0,
|
|
185
265
|
class: "sub-title",
|
|
186
266
|
title: article.subTitle
|
|
187
|
-
}, toDisplayString(article.subTitle), 9,
|
|
188
|
-
createElementVNode("div",
|
|
189
|
-
createElementVNode("div",
|
|
190
|
-
createElementVNode("div",
|
|
191
|
-
createElementVNode("div",
|
|
267
|
+
}, toDisplayString(article.subTitle), 9, _hoisted_7)) : createCommentVNode("", true),
|
|
268
|
+
createElementVNode("div", _hoisted_8, toDisplayString(article.desc), 1),
|
|
269
|
+
createElementVNode("div", _hoisted_9, [
|
|
270
|
+
createElementVNode("div", _hoisted_10, [
|
|
271
|
+
createElementVNode("div", _hoisted_11, [
|
|
192
272
|
createVNode(_component_MKSvgIcon, { iconClass: "UserFilled" }),
|
|
193
273
|
createTextVNode(" 作者 : " + toDisplayString(article.author || "-"), 1)
|
|
194
274
|
]),
|
|
195
|
-
createElementVNode("div",
|
|
275
|
+
createElementVNode("div", _hoisted_12, [
|
|
196
276
|
createVNode(_component_MKSvgIcon, { iconClass: "Timer" }),
|
|
197
277
|
createTextVNode(" 发布时间 : " + toDisplayString(article.publishTime), 1)
|
|
198
278
|
])
|
|
199
279
|
]),
|
|
200
|
-
createElementVNode("div",
|
|
280
|
+
createElementVNode("div", _hoisted_13, [
|
|
201
281
|
createVNode(_component_el_button, {
|
|
202
282
|
type: "primary",
|
|
203
283
|
size: "large",
|
|
@@ -220,24 +300,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
220
300
|
]),
|
|
221
301
|
_: 2
|
|
222
302
|
}, 1032, ["onClick"]),
|
|
223
|
-
unref(CmsSettings).publish.mode == "static" && article.url ? (openBlock(), createElementBlock("a", {
|
|
224
|
-
key: 0,
|
|
225
|
-
href: article.url,
|
|
226
|
-
target: "_blank"
|
|
227
|
-
}, [
|
|
228
|
-
createVNode(_component_el_button, {
|
|
229
|
-
type: "primary",
|
|
230
|
-
size: "large",
|
|
231
|
-
text: ""
|
|
232
|
-
}, {
|
|
233
|
-
default: withCtx(() => [
|
|
234
|
-
createTextVNode("访问")
|
|
235
|
-
]),
|
|
236
|
-
_: 1
|
|
237
|
-
})
|
|
238
|
-
], 8, _hoisted_12)) : createCommentVNode("", true),
|
|
239
303
|
unref(CmsSettings).publish.mode == "static" ? (openBlock(), createElementBlock("a", {
|
|
240
|
-
key:
|
|
304
|
+
key: 0,
|
|
241
305
|
href: "/api/cms/content/preview/content/" + article.cmsPartId + "/" + article.id,
|
|
242
306
|
target: "_blank"
|
|
243
307
|
}, [
|
|
@@ -251,18 +315,84 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
251
315
|
]),
|
|
252
316
|
_: 1
|
|
253
317
|
})
|
|
254
|
-
], 8,
|
|
255
|
-
createVNode(
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
318
|
+
], 8, _hoisted_14)) : createCommentVNode("", true),
|
|
319
|
+
createVNode(_component_el_dropdown, null, {
|
|
320
|
+
dropdown: withCtx(() => [
|
|
321
|
+
createVNode(_component_el_dropdown_menu, null, {
|
|
322
|
+
default: withCtx(() => [
|
|
323
|
+
unref(CmsSettings).publish.mode == "static" && article.url ? (openBlock(), createBlock(_component_el_dropdown_item, { key: 0 }, {
|
|
324
|
+
default: withCtx(() => [
|
|
325
|
+
unref(CmsSettings).publish.mode == "static" && article.url ? (openBlock(), createElementBlock("a", {
|
|
326
|
+
key: 0,
|
|
327
|
+
style: { "text-decoration": "none", "color": "#606266" },
|
|
328
|
+
href: article.url,
|
|
329
|
+
target: "_blank"
|
|
330
|
+
}, " 访问 ", 8, _hoisted_15)) : createCommentVNode("", true)
|
|
331
|
+
]),
|
|
332
|
+
_: 2
|
|
333
|
+
}, 1024)) : createCommentVNode("", true),
|
|
334
|
+
createVNode(_component_el_dropdown_item, {
|
|
335
|
+
onClick: ($event) => publishArticleHandle(article)
|
|
336
|
+
}, {
|
|
337
|
+
default: withCtx(() => [
|
|
338
|
+
createTextVNode(" 发布 ")
|
|
339
|
+
]),
|
|
340
|
+
_: 2
|
|
341
|
+
}, 1032, ["onClick"]),
|
|
342
|
+
unref(CmsSettings).content.useTop && article.isTop == 0 ? (openBlock(), createBlock(_component_el_dropdown_item, {
|
|
343
|
+
key: 1,
|
|
344
|
+
onClick: ($event) => changeArticleStatus(article, "isTop", 1)
|
|
345
|
+
}, {
|
|
346
|
+
default: withCtx(() => [
|
|
347
|
+
createTextVNode("设为置顶")
|
|
348
|
+
]),
|
|
349
|
+
_: 2
|
|
350
|
+
}, 1032, ["onClick"])) : createCommentVNode("", true),
|
|
351
|
+
unref(CmsSettings).content.useNew && article.isNew == 0 ? (openBlock(), createBlock(_component_el_dropdown_item, {
|
|
352
|
+
key: 2,
|
|
353
|
+
onClick: ($event) => changeArticleStatus(article, "isNew", 1)
|
|
354
|
+
}, {
|
|
355
|
+
default: withCtx(() => [
|
|
356
|
+
createTextVNode("设为最新")
|
|
357
|
+
]),
|
|
358
|
+
_: 2
|
|
359
|
+
}, 1032, ["onClick"])) : createCommentVNode("", true),
|
|
360
|
+
unref(CmsSettings).content.useHotRecommend && article.isHotRecommend == 0 ? (openBlock(), createBlock(_component_el_dropdown_item, {
|
|
361
|
+
key: 3,
|
|
362
|
+
onClick: ($event) => changeArticleStatus(article, "isHotRecommend", 1)
|
|
363
|
+
}, {
|
|
364
|
+
default: withCtx(() => [
|
|
365
|
+
createTextVNode("设为热门推荐")
|
|
366
|
+
]),
|
|
367
|
+
_: 2
|
|
368
|
+
}, 1032, ["onClick"])) : createCommentVNode("", true),
|
|
369
|
+
unref(CmsSettings).content.usePartRecommend && article.isPartRecommend == 0 ? (openBlock(), createBlock(_component_el_dropdown_item, {
|
|
370
|
+
key: 4,
|
|
371
|
+
onClick: ($event) => changeArticleStatus(article, "isPartRecommend", 1)
|
|
372
|
+
}, {
|
|
373
|
+
default: withCtx(() => [
|
|
374
|
+
createTextVNode("设为栏目推荐")
|
|
375
|
+
]),
|
|
376
|
+
_: 2
|
|
377
|
+
}, 1032, ["onClick"])) : createCommentVNode("", true)
|
|
378
|
+
]),
|
|
379
|
+
_: 2
|
|
380
|
+
}, 1024)
|
|
381
|
+
]),
|
|
261
382
|
default: withCtx(() => [
|
|
262
|
-
|
|
383
|
+
createVNode(_component_el_button, {
|
|
384
|
+
type: "primary",
|
|
385
|
+
size: "large",
|
|
386
|
+
text: ""
|
|
387
|
+
}, {
|
|
388
|
+
default: withCtx(() => [
|
|
389
|
+
createTextVNode(" 更多 ")
|
|
390
|
+
]),
|
|
391
|
+
_: 1
|
|
392
|
+
})
|
|
263
393
|
]),
|
|
264
394
|
_: 2
|
|
265
|
-
},
|
|
395
|
+
}, 1024)
|
|
266
396
|
])
|
|
267
397
|
])
|
|
268
398
|
])
|
|
@@ -1 +1 @@
|
|
|
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
|
+
{"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=\"top\">\r\n <div class=\"title\" :title=\"article.title\"> {{ article.title }}</div>\r\n <div class=\"tags\">\r\n <el-tag class=\"tag\" v-if=\"CmsSettings.content.useTop && article.isTop == 1\"\r\n @click=\"changeArticleStatus(article, 'isTop', 0)\">置顶</el-tag>\r\n <el-tag class=\"tag\" v-if=\"CmsSettings.content.useNew && article.isNew == 1\"\r\n @click=\"changeArticleStatus(article, 'isNew', 0)\">最新</el-tag>\r\n <el-tag class=\"tag\" v-if=\"CmsSettings.content.useHotRecommend && article.isHotRecommend == 1\"\r\n @click=\"changeArticleStatus(article, 'isHotRecommend', 0)\">热门推荐</el-tag>\r\n <el-tag class=\"tag\" v-if=\"CmsSettings.content.usePartRecommend && article.isPartRecommend == 1\"\r\n @click=\"changeArticleStatus(article, 'isPartRecommend', 0)\">栏目推荐</el-tag>\r\n </div>\r\n </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\"\r\n 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-dropdown>\r\n <el-button type=\"primary\" size=\"large\" text>\r\n 更多\r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item v-if=\"CmsSettings.publish.mode == 'static' && article.url\">\r\n <a style=\"text-decoration: none;color: #606266;\"\r\n v-if=\"CmsSettings.publish.mode == 'static' && article.url\" :href=\"article.url\"\r\n target=\"_blank\">\r\n 访问\r\n </a>\r\n </el-dropdown-item>\r\n <el-dropdown-item @click=\"publishArticleHandle(article)\">\r\n 发布\r\n </el-dropdown-item>\r\n <el-dropdown-item v-if=\"CmsSettings.content.useTop && article.isTop == 0\"\r\n @click=\"changeArticleStatus(article, 'isTop', 1)\">设为置顶</el-dropdown-item>\r\n <el-dropdown-item v-if=\"CmsSettings.content.useNew && article.isNew == 0\"\r\n @click=\"changeArticleStatus(article, 'isNew', 1)\">设为最新</el-dropdown-item>\r\n <el-dropdown-item v-if=\"CmsSettings.content.useHotRecommend && article.isHotRecommend == 0\"\r\n @click=\"changeArticleStatus(article, 'isHotRecommend', 1)\">设为热门推荐</el-dropdown-item>\r\n <el-dropdown-item v-if=\"CmsSettings.content.usePartRecommend && article.isPartRecommend == 0\"\r\n @click=\"changeArticleStatus(article, 'isPartRecommend', 1)\">设为栏目推荐</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\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\nconsole.log(CmsSettings.content)\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\nconst changeArticleStatus = async (article: any, item: string, status: number) => {\r\n const text: Record<string, string[]> = {\r\n \"isTop\": ['取消置顶', '设为置顶'],\r\n \"isNew\": ['取消最新', '设为最新'],\r\n \"isHotRecommend\": ['取消热门推荐', '设为热门推荐'],\r\n \"isPartRecommend\": ['取消栏目推荐', '设为栏目推荐'],\r\n }\r\n\r\n const isConfirm = await Dialoger.confirm({\r\n title: \"修改文章状态\",\r\n message: `是否${text[item][status]}?`,\r\n type: \"warning\"\r\n })\r\n if (!isConfirm) {\r\n return\r\n }\r\n try {\r\n\r\n articlesDv.getLoadingManager().startLoading();\r\n await articleForm.editRecord(article.id)\r\n const isSuccess = await articleForm.simpleSubmit({\r\n id: article.id,\r\n [item]: status\r\n })\r\n\r\n if (isSuccess) {\r\n articlesDv.load();\r\n }\r\n } finally {\r\n articlesDv.getLoadingManager().completeLoading();\r\n }\r\n\r\n\r\n}\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":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, ref, reactive, onMounted, watch, resolveComponent, resolveDirective, unref, withDirectives, openBlock, createElementBlock, createBlock, withCtx, Fragment, renderList, createElementVNode, createCommentVNode, toDisplayString, createVNode, createTextVNode } from "vue";
|
|
1
|
+
import { defineComponent, ref, reactive, computed, onMounted, watch, resolveComponent, resolveDirective, unref, withDirectives, openBlock, createElementBlock, createBlock, withCtx, Fragment, renderList, createElementVNode, createCommentVNode, toDisplayString, createVNode, createTextVNode } from "vue";
|
|
2
2
|
import { useCmsSettings } from "../../../cms-settings.js";
|
|
3
3
|
import { DataViewRequest, Where } from "@maketribe/request";
|
|
4
4
|
import { Messager, Dialoger } from "@maketribe/dm";
|
|
@@ -56,23 +56,19 @@ import { EditPen, Plus } from "@element-plus/icons-vue";
|
|
|
56
56
|
import "../../../../ms/material-upload-context/material-upload-context-options.js";
|
|
57
57
|
import "../../../../ms/material-upload-context/material-upload-context.js";
|
|
58
58
|
import "@codemirror/lang-html";
|
|
59
|
-
const _hoisted_1 = {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
};
|
|
63
|
-
const _hoisted_2 = { class: "mk-cms-part-banner__list_item" };
|
|
64
|
-
const _hoisted_3 = { class: "mk-cms-part-banner__list_content" };
|
|
65
|
-
const _hoisted_4 = /* @__PURE__ */ createElementVNode("div", {
|
|
59
|
+
const _hoisted_1 = { class: "mk-cms-part-banner__list_item" };
|
|
60
|
+
const _hoisted_2 = { class: "mk-cms-part-banner__list_content" };
|
|
61
|
+
const _hoisted_3 = /* @__PURE__ */ createElementVNode("div", {
|
|
66
62
|
slot: "placeholder",
|
|
67
63
|
class: "image-slot"
|
|
68
64
|
}, [
|
|
69
65
|
/* @__PURE__ */ createTextVNode(" 加载中"),
|
|
70
66
|
/* @__PURE__ */ createElementVNode("span", { class: "dot" }, "...")
|
|
71
67
|
], -1);
|
|
72
|
-
const
|
|
73
|
-
const
|
|
74
|
-
const
|
|
75
|
-
const
|
|
68
|
+
const _hoisted_4 = ["src"];
|
|
69
|
+
const _hoisted_5 = { class: "mk-cms-part-banner__list_bottom" };
|
|
70
|
+
const _hoisted_6 = { class: "mk-cms-part-banner__list_title" };
|
|
71
|
+
const _hoisted_7 = { class: "mk-cms-part-banner__list_action-mask" };
|
|
76
72
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
77
73
|
__name: "part-banner-edit",
|
|
78
74
|
props: { partId: { type: String }, title: { type: String } },
|
|
@@ -82,8 +78,28 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
82
78
|
const props = __props;
|
|
83
79
|
const partAdBanner = ref(null);
|
|
84
80
|
const loading = ref(true);
|
|
81
|
+
const warpRef = ref();
|
|
85
82
|
const adContentForm = reactive(new CmsAdContentsForm({ cutSise: cmsSettings.part.bannerImageSize }));
|
|
86
83
|
const adDefineForm = reactive(new CmsAdDefinesForm());
|
|
84
|
+
const partAdBannerHeight = computed(() => {
|
|
85
|
+
let proportion = 0;
|
|
86
|
+
console.log(cmsSettings.part.bannerImageSize);
|
|
87
|
+
const widthAndHeight = cmsSettings.part.bannerImageSize.split("*");
|
|
88
|
+
let settingHeight = 0;
|
|
89
|
+
let settingWidth = 0;
|
|
90
|
+
if (!!partAdBanner.value.width && !!partAdBanner.value.height) {
|
|
91
|
+
proportion = partAdBanner.value.width / partAdBanner.value.height;
|
|
92
|
+
} else {
|
|
93
|
+
settingWidth = widthAndHeight[0];
|
|
94
|
+
settingHeight = widthAndHeight[1];
|
|
95
|
+
proportion = settingWidth / settingHeight;
|
|
96
|
+
}
|
|
97
|
+
if (Number.isNaN(proportion)) {
|
|
98
|
+
return "240px";
|
|
99
|
+
} else {
|
|
100
|
+
return partAdBanner.value.height ? warpRef.value.offsetWidth / proportion + "px" : warpRef.value.offsetWidth / proportion + "px";
|
|
101
|
+
}
|
|
102
|
+
});
|
|
87
103
|
adContentForm.beforeSubmitEvent.on(async ({ data }) => {
|
|
88
104
|
if (partAdBanner.value) {
|
|
89
105
|
data.adDefineId = partAdBanner.value.id;
|
|
@@ -168,12 +184,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
168
184
|
const _component_el_text = resolveComponent("el-text");
|
|
169
185
|
const _component_el_empty = resolveComponent("el-empty");
|
|
170
186
|
const _directive_loading = resolveDirective("loading");
|
|
171
|
-
return unref(cmsSettings).part.openBanner ? withDirectives((openBlock(), createElementBlock("div",
|
|
187
|
+
return unref(cmsSettings).part.openBanner ? withDirectives((openBlock(), createElementBlock("div", {
|
|
188
|
+
key: 0,
|
|
189
|
+
class: "mk-cms-part-banner__warp",
|
|
190
|
+
ref_key: "warpRef",
|
|
191
|
+
ref: warpRef
|
|
192
|
+
}, [
|
|
172
193
|
partAdBanner.value && ((_a = partAdBanner.value.contents) == null ? void 0 : _a.length) ? (openBlock(), createBlock(_component_el_carousel, {
|
|
173
194
|
key: 0,
|
|
174
195
|
autoplay: false,
|
|
175
|
-
height:
|
|
176
|
-
arrow: "always"
|
|
196
|
+
height: partAdBannerHeight.value,
|
|
197
|
+
arrow: "always",
|
|
198
|
+
ref: "carouselRef"
|
|
177
199
|
}, {
|
|
178
200
|
default: withCtx(() => [
|
|
179
201
|
(openBlock(true), createElementBlock(Fragment, null, renderList(partAdBanner.value.contents, (item) => {
|
|
@@ -181,8 +203,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
181
203
|
key: item.id
|
|
182
204
|
}, {
|
|
183
205
|
default: withCtx(() => [
|
|
184
|
-
createElementVNode("div",
|
|
185
|
-
createElementVNode("div",
|
|
206
|
+
createElementVNode("div", _hoisted_1, [
|
|
207
|
+
createElementVNode("div", _hoisted_2, [
|
|
186
208
|
item.type == 1 ? (openBlock(), createBlock(_component_el_image, {
|
|
187
209
|
key: 0,
|
|
188
210
|
class: "mk-cms-part-banner__list_content_img",
|
|
@@ -191,7 +213,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
191
213
|
tyle: "width: 100%;height: 100%;"
|
|
192
214
|
}, {
|
|
193
215
|
default: withCtx(() => [
|
|
194
|
-
|
|
216
|
+
_hoisted_3
|
|
195
217
|
]),
|
|
196
218
|
_: 2
|
|
197
219
|
}, 1032, ["src"])) : createCommentVNode("", true),
|
|
@@ -201,13 +223,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
201
223
|
src: item.path,
|
|
202
224
|
style: { "width": "100%", "height": "100%" },
|
|
203
225
|
controls: ""
|
|
204
|
-
}, null, 8,
|
|
226
|
+
}, null, 8, _hoisted_4)) : createCommentVNode("", true)
|
|
205
227
|
]),
|
|
206
|
-
createElementVNode("div",
|
|
207
|
-
createElementVNode("div",
|
|
228
|
+
createElementVNode("div", _hoisted_5, [
|
|
229
|
+
createElementVNode("div", _hoisted_6, toDisplayString(item.title), 1),
|
|
208
230
|
createElementVNode("div", null, toDisplayString(item.desc), 1)
|
|
209
231
|
]),
|
|
210
|
-
createElementVNode("div",
|
|
232
|
+
createElementVNode("div", _hoisted_7, [
|
|
211
233
|
createVNode(_component_el_button, {
|
|
212
234
|
type: "primary",
|
|
213
235
|
style: { "margin-left": "10px" },
|
|
@@ -249,7 +271,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
249
271
|
}), 128))
|
|
250
272
|
]),
|
|
251
273
|
_: 1
|
|
252
|
-
})) : (openBlock(), createBlock(_component_el_empty, {
|
|
274
|
+
}, 8, ["height"])) : (openBlock(), createBlock(_component_el_empty, {
|
|
253
275
|
key: 1,
|
|
254
276
|
"image-size": 80,
|
|
255
277
|
style: { "height": "240px" }
|