@maketribe/ms-app 3.2.26 → 3.2.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/basic/doc-editor/core/element-block.js +18 -13
- package/dist/cjs/components/basic/doc-editor/core/element-block.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/core/utils.js +20 -13
- package/dist/cjs/components/basic/doc-editor/core/utils.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/editor.vue.js.map +1 -1
- 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.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js +32 -1
- 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 +13 -0
- 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 +11 -0
- 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 +87 -13
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/index.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/utils.js +114 -7
- package/dist/cjs/components/basic/doc-editor/plugins/GridPlugin/utils.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +51 -37
- 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 +3 -5
- 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 +32 -54
- package/dist/cjs/components/basic/doc-editor/plugins/ImagePlugin/utils.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/composables.js +14 -1
- 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 +40 -3
- package/dist/cjs/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/index.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js +16 -16
- package/dist/cjs/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js +8 -7
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/nodes.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/dynamic-form-panel/DynamicFormPanel.js +40 -18
- package/dist/cjs/components/basic/dynamic-form-panel/DynamicFormPanel.js.map +1 -1
- package/dist/cjs/components/basic/dynamic-form-panel/dialog.js +2 -2
- package/dist/cjs/components/basic/dynamic-form-panel/dialog.js.map +1 -1
- package/dist/cjs/components/basic/image-cropper/image-cropper-api.js.map +1 -1
- package/dist/cjs/components/basic/visual-page-editor/content-editable.vue.js +13 -9
- package/dist/cjs/components/basic/visual-page-editor/content-editable.vue.js.map +1 -1
- package/dist/cjs/components/basic/visual-page-editor/core/BlockRender.js +38 -0
- package/dist/cjs/components/basic/visual-page-editor/core/BlockRender.js.map +1 -0
- package/dist/cjs/components/basic/visual-page-editor/core/Dialog.js +76 -0
- package/dist/cjs/components/basic/visual-page-editor/core/Dialog.js.map +1 -0
- package/dist/cjs/components/basic/visual-page-editor/core/VisvalPageEditor.js +72 -1
- package/dist/cjs/components/basic/visual-page-editor/core/VisvalPageEditor.js.map +1 -1
- package/dist/cjs/components/basic/visual-page-editor/core/index.js +21 -13
- package/dist/cjs/components/basic/visual-page-editor/core/index.js.map +1 -1
- package/dist/cjs/components/basic/visual-page-editor/editor.vue.js +2 -29
- package/dist/cjs/components/basic/visual-page-editor/editor.vue.js.map +1 -1
- package/dist/cjs/components/basic/visual-page-editor/index.js +1 -1
- package/dist/cjs/components/basic/visual-page-editor/index.js.map +1 -1
- package/dist/cjs/components/basic/visual-page-editor/modules/BaseImageModule.js +10 -0
- package/dist/cjs/components/basic/visual-page-editor/modules/BaseImageModule.js.map +1 -0
- package/dist/cjs/components/basic/visual-page-editor/toolbar.vue.js +1 -1
- package/dist/cjs/components/basic/visual-page-editor/toolbar.vue.js.map +1 -1
- package/dist/cjs/modules/cms/cms-settings.js +4 -0
- package/dist/cjs/modules/cms/cms-settings.js.map +1 -1
- package/dist/cjs/modules/cms/pages/cms-ad/index.vue2.js +0 -1
- package/dist/cjs/modules/cms/pages/cms-ad/index.vue2.js.map +1 -1
- package/dist/cjs/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +3 -1
- 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/part-banner-edit.vue.js +27 -4
- package/dist/cjs/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
- package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js +312 -0
- package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js.map +1 -0
- package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js +4 -0
- package/dist/cjs/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js.map +1 -0
- package/dist/cjs/modules/cms/pages/cms-settigns/index.vue2.js +18 -0
- package/dist/cjs/modules/cms/pages/cms-settigns/index.vue2.js.map +1 -1
- package/dist/cjs/modules/ms/components/image-select/image-select-api.js +14 -2
- package/dist/cjs/modules/ms/components/image-select/image-select-api.js.map +1 -1
- package/dist/cjs/modules/ms/image-upload-context/index.js +1 -1
- package/dist/cjs/modules/ms/image-upload-context/index.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/core/element-block.js +18 -13
- package/dist/esm/components/basic/doc-editor/core/element-block.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/core/utils.js +20 -13
- package/dist/esm/components/basic/doc-editor/core/utils.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/editor.vue.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.js +32 -1
- 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 +13 -0
- 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 +11 -0
- 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 +87 -13
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/index.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/utils.js +114 -7
- package/dist/esm/components/basic/doc-editor/plugins/GridPlugin/utils.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.js +52 -38
- 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 +3 -5
- 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 +33 -55
- package/dist/esm/components/basic/doc-editor/plugins/ImagePlugin/utils.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/composables.js +14 -1
- 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 +40 -3
- package/dist/esm/components/basic/doc-editor/plugins/ModulePlugin/index.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/index.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js +16 -16
- package/dist/esm/components/basic/doc-editor/plugins/RichTextPlugin/nodes/RichTextNode.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js +11 -10
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/nodes.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/dynamic-form-panel/DynamicFormPanel.js +40 -18
- package/dist/esm/components/basic/dynamic-form-panel/DynamicFormPanel.js.map +1 -1
- package/dist/esm/components/basic/dynamic-form-panel/dialog.js +2 -2
- package/dist/esm/components/basic/dynamic-form-panel/dialog.js.map +1 -1
- package/dist/esm/components/basic/image-cropper/image-cropper-api.js.map +1 -1
- package/dist/esm/components/basic/visual-page-editor/content-editable.vue.js +14 -10
- package/dist/esm/components/basic/visual-page-editor/content-editable.vue.js.map +1 -1
- package/dist/esm/components/basic/visual-page-editor/core/BlockRender.js +39 -0
- package/dist/esm/components/basic/visual-page-editor/core/BlockRender.js.map +1 -0
- package/dist/esm/components/basic/visual-page-editor/core/Dialog.js +76 -0
- package/dist/esm/components/basic/visual-page-editor/core/Dialog.js.map +1 -0
- package/dist/esm/components/basic/visual-page-editor/core/VisvalPageEditor.js +73 -2
- package/dist/esm/components/basic/visual-page-editor/core/VisvalPageEditor.js.map +1 -1
- package/dist/esm/components/basic/visual-page-editor/core/index.js +21 -13
- package/dist/esm/components/basic/visual-page-editor/core/index.js.map +1 -1
- package/dist/esm/components/basic/visual-page-editor/editor.vue.js +4 -31
- package/dist/esm/components/basic/visual-page-editor/editor.vue.js.map +1 -1
- package/dist/esm/components/basic/visual-page-editor/index.js +1 -1
- package/dist/esm/components/basic/visual-page-editor/index.js.map +1 -1
- package/dist/esm/components/basic/visual-page-editor/modules/BaseImageModule.js +9 -0
- package/dist/esm/components/basic/visual-page-editor/modules/BaseImageModule.js.map +1 -0
- package/dist/esm/components/basic/visual-page-editor/toolbar.vue.js +2 -2
- package/dist/esm/components/basic/visual-page-editor/toolbar.vue.js.map +1 -1
- package/dist/esm/modules/cms/cms-settings.js +4 -0
- package/dist/esm/modules/cms/cms-settings.js.map +1 -1
- package/dist/esm/modules/cms/pages/cms-ad/index.vue2.js +0 -1
- package/dist/esm/modules/cms/pages/cms-ad/index.vue2.js.map +1 -1
- package/dist/esm/modules/cms/pages/cms-contents/article-edit-add-page.vue2.js +3 -1
- 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/part-banner-edit.vue.js +27 -4
- package/dist/esm/modules/cms/pages/cms-contents/components/part-banner-edit.vue.js.map +1 -1
- package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js +313 -0
- package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.js.map +1 -0
- package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js +5 -0
- package/dist/esm/modules/cms/pages/cms-settigns/DocModuleEditForm.vue2.js.map +1 -0
- package/dist/esm/modules/cms/pages/cms-settigns/index.vue2.js +18 -0
- package/dist/esm/modules/cms/pages/cms-settigns/index.vue2.js.map +1 -1
- package/dist/esm/modules/ms/components/image-select/image-select-api.js +14 -2
- package/dist/esm/modules/ms/components/image-select/image-select-api.js.map +1 -1
- package/dist/esm/modules/ms/image-upload-context/index.js +1 -1
- package/dist/esm/modules/ms/image-upload-context/index.js.map +1 -1
- package/dist/style/components/basic/visual-page-editor/index.css +1 -1
- package/dist/style/components/index.css +1 -1
- package/dist/style/index.css +1 -1
- package/dist/style/src/components/basic/visual-page-editor/index.scss +4 -2
- package/dist/types/components/basic/doc-editor/core/element-block.d.ts +1 -0
- package/dist/types/components/basic/doc-editor/core/utils.d.ts +2 -2
- package/dist/types/components/basic/doc-editor/plugins/GridPlugin/ImageTextGridNode.d.ts +1 -1
- package/dist/types/components/basic/doc-editor/plugins/GridPlugin/LayoutGridNode.d.ts +16 -2
- package/dist/types/components/basic/doc-editor/plugins/GridPlugin/ModuleGridNode.d.ts +7 -1
- package/dist/types/components/basic/doc-editor/plugins/ImagePlugin/ImageNode.d.ts +25 -12
- package/dist/types/components/basic/doc-editor/plugins/ModulePlugin/composables.d.ts +5 -0
- package/dist/types/components/basic/doc-editor/utils/getSelectedNode.d.ts +1 -1
- package/dist/types/components/basic/dynamic-form-panel/type.d.ts +1 -0
- package/dist/types/components/basic/visual-page-editor/core/Dialog.d.ts +15 -0
- package/dist/types/components/basic/visual-page-editor/core/ModuleDefine.d.ts +12 -0
- package/dist/types/components/basic/visual-page-editor/core/VisvalPageEditor.d.ts +45 -1
- package/dist/types/components/basic/visual-page-editor/core/index.d.ts +2 -10
- package/dist/types/components/basic/visual-page-editor/editor.vue.d.ts +1 -0
- package/dist/types/components/basic/visual-page-editor/index.d.ts +2 -1
- package/dist/types/components/basic/visual-page-editor/modules/index.d.ts +1 -0
- package/dist/types/modules/cms/cms-settings.d.ts +4 -28
- package/dist/types/modules/cms/pages/cms-settigns/DocModuleEditForm.vue.d.ts +45 -0
- package/dist/types/modules/ms/components/image-select/image-select-api.d.ts +1 -1
- package/dist/types/modules/ms/image-upload-context/index.d.ts +1 -1
- package/package.json +7 -6
- package/dist/cjs/components/basic/visual-page-editor/components/BlockRender.js +0 -31
- package/dist/cjs/components/basic/visual-page-editor/components/BlockRender.js.map +0 -1
- package/dist/cjs/components/basic/visual-page-editor/utils/Dialog.js +0 -111
- package/dist/cjs/components/basic/visual-page-editor/utils/Dialog.js.map +0 -1
- package/dist/cjs/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js +0 -29
- package/dist/cjs/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js.map +0 -1
- package/dist/esm/components/basic/visual-page-editor/components/BlockRender.js +0 -32
- package/dist/esm/components/basic/visual-page-editor/components/BlockRender.js.map +0 -1
- package/dist/esm/components/basic/visual-page-editor/utils/Dialog.js +0 -111
- package/dist/esm/components/basic/visual-page-editor/utils/Dialog.js.map +0 -1
- package/dist/esm/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js +0 -28
- package/dist/esm/components/basic/visual-page-editor/visual-components/ImageRenderComponent.js.map +0 -1
- package/dist/types/components/basic/visual-page-editor/core/RenderComponent.d.ts +0 -16
- package/dist/types/components/basic/visual-page-editor/utils/Dialog.d.ts +0 -15
- package/dist/types/components/basic/visual-page-editor/visual-components/index.d.ts +0 -1
- /package/dist/types/components/basic/visual-page-editor/{components → core}/BlockRender.d.ts +0 -0
- /package/dist/types/components/basic/visual-page-editor/{visual-components/ImageRenderComponent.d.ts → modules/BaseImageModule.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"part-banner-edit.vue.js","sources":["../../../../../../../src/modules/cms/pages/cms-contents/components/part-banner-edit.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-part-banner__warp\" v-loading=\"loading\" v-if=\"cmsSettings.part.openBanner\">\r\n <el-carousel v-if=\"partAdBanner && partAdBanner.contents?.length\" :autoplay=\"false\" height=\"240px\" arrow=\"always\">\r\n <el-carousel-item v-for=\"item in partAdBanner.contents\" :key=\"item.id\">\r\n <div class=\"mk-cms-part-banner__list_item\">\r\n <div class=\"mk-cms-part-banner__list_content\">\r\n <el-image class=\"mk-cms-part-banner__list_content_img\" v-if=\"item.type == 1\" :src=\"item.path\" fit=\"cover\"\r\n tyle=\"width: 100%;height: 100%;\">\r\n <div slot=\"placeholder\" class=\"image-slot\">\r\n 加载中<span class=\"dot\">...</span>\r\n </div>\r\n </el-image>\r\n <video class=\"video\" v-if=\"item.type == 2\" :src=\"item.path\" style=\"width: 100%;height: 100%;\"\r\n controls></video>\r\n </div>\r\n <div class=\"mk-cms-part-banner__list_bottom\">\r\n <div class=\"mk-cms-part-banner__list_title\">{{ item.title }}</div>\r\n <div>{{ item.desc }}</div>\r\n </div>\r\n <div class=\"mk-cms-part-banner__list_action-mask\">\r\n <el-button type=\"primary\" style=\"margin-left: 10px;\" :icon=\"EditPen\" @click=\"showAdContentHandle(item.id)\">\r\n 编辑当前轮播项\r\n </el-button>\r\n <el-button type=\"primary\" style=\"margin-left: 10px;\" :icon=\"Plus\" @click=\"showAdContentHandle(null)\">\r\n 添加新轮播项\r\n </el-button>\r\n <el-button type=\"primary\" style=\"margin-left: 10px;\" :icon=\"EditPen\" @click=\"showAdDefineHandle(
|
|
1
|
+
{"version":3,"file":"part-banner-edit.vue.js","sources":["../../../../../../../src/modules/cms/pages/cms-contents/components/part-banner-edit.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-part-banner__warp\" v-loading=\"loading\" v-if=\"cmsSettings.part.openBanner\">\r\n <el-carousel v-if=\"partAdBanner && partAdBanner.contents?.length\" :autoplay=\"false\" height=\"240px\" arrow=\"always\">\r\n <el-carousel-item v-for=\"item in partAdBanner.contents\" :key=\"item.id\">\r\n <div class=\"mk-cms-part-banner__list_item\">\r\n <div class=\"mk-cms-part-banner__list_content\">\r\n <el-image class=\"mk-cms-part-banner__list_content_img\" v-if=\"item.type == 1\" :src=\"item.path\" fit=\"cover\"\r\n tyle=\"width: 100%;height: 100%;\">\r\n <div slot=\"placeholder\" class=\"image-slot\">\r\n 加载中<span class=\"dot\">...</span>\r\n </div>\r\n </el-image>\r\n <video class=\"video\" v-if=\"item.type == 2\" :src=\"item.path\" style=\"width: 100%;height: 100%;\"\r\n controls></video>\r\n </div>\r\n <div class=\"mk-cms-part-banner__list_bottom\">\r\n <div class=\"mk-cms-part-banner__list_title\">{{ item.title }}</div>\r\n <div>{{ item.desc }}</div>\r\n </div>\r\n <div class=\"mk-cms-part-banner__list_action-mask\">\r\n <el-button type=\"primary\" style=\"margin-left: 10px;\" :icon=\"EditPen\" @click=\"showAdContentHandle(item.id)\">\r\n 编辑当前轮播项\r\n </el-button>\r\n <el-button type=\"primary\" style=\"margin-left: 10px;\" :icon=\"Plus\" @click=\"showAdContentHandle(null)\">\r\n 添加新轮播项\r\n </el-button>\r\n <el-button type=\"primary\" style=\"margin-left: 10px;\" :icon=\"EditPen\" @click=\"showAdDefineHandle()\">\r\n 编辑banner比例\r\n </el-button>\r\n </div>\r\n </div>\r\n </el-carousel-item>\r\n </el-carousel>\r\n <el-empty v-else description=\"暂无轮播数据\" :image-size=\"80\" style=\"height: 240px;\">\r\n <template #description>\r\n <el-text>暂无轮播数据</el-text>\r\n <el-button type=\"primary\" text style=\"margin-left: 10px;\" :icon=\"Plus\" @click=\"showAdDefineHandle()\">\r\n 设置广告位比例\r\n </el-button>\r\n <el-button type=\"primary\" text style=\"margin-left: 10px;\" :icon=\"Plus\" @click=\"showAdContentHandle(null)\">\r\n 添加\r\n </el-button>\r\n </template>\r\n </el-empty>\r\n\r\n </div>\r\n</template>\r\n<script setup lang=\"ts\">\r\nimport { useCmsSettings } from \"../../../cms-settings\"\r\nimport { onMounted, reactive, computed, ref, watch, defineProps } from \"vue\";\r\nimport { DataViewRequest, Where } from \"@maketribe/request\";\r\nimport { DataForm, Dialoger, FormColumn, Messager } from \"@maketribe/dm\";\r\nimport { CmsAdDefinesTable, CmsAdContentsForm, CmsAdDefinesForm } from \"../../../dataviews\";\r\nimport { EditPen, ArrowDown, Delete, Plus } from \"@element-plus/icons-vue\"\r\nimport { debounce } from \"lodash-es\"\r\n// 广告定义数据表\r\nconst adRequest = new DataViewRequest({ name: \"ad-define\", moduleName: \"cms\" });\r\n// cms 配置\r\nconst cmsSettings = useCmsSettings();\r\nconst props = defineProps({ partId: { type: String }, title: { type: String } })\r\n// 栏目广告\r\nconst partAdBanner = ref<any | null>(null);\r\nconst loading = ref(true);\r\nconst adContentForm = reactive<CmsAdContentsForm>(new CmsAdContentsForm({ cutSise: cmsSettings.part.bannerImageSize }))\r\nconst adDefineForm = reactive<CmsAdDefinesForm>(new CmsAdDefinesForm())\r\n\r\n// 内容添加之前监测广告是否存在不存在先添加广告\r\nadContentForm.beforeSubmitEvent.on(async ({ data }) => {\r\n if (partAdBanner.value) {\r\n data.adDefineId = partAdBanner.value.id as any;\r\n }\r\n else {\r\n try {\r\n\r\n const widthAndHeight = cmsSettings.part.bannerImageSize.split(\"*\");\r\n // 添加广告\r\n const result = await adRequest.add({ key: `part_${props.partId}`, desc: `${props.title}的Banner`, width: widthAndHeight[0], height: widthAndHeight[1] })\r\n\r\n if (result.data.code == 200) {\r\n partAdBanner.value = { id: result.data.data as string }\r\n data.adDefineId = result.data.data;\r\n }\r\n\r\n } catch (error) {\r\n Messager.error({ message: \"添加失败!\" });\r\n }\r\n }\r\n\r\n})\r\n\r\n//提交判断是否存在,判断更新还是添加\r\nadDefineForm.formatSubmitData = ((data) => {\r\n if (partAdBanner.value) {\r\n data.id = partAdBanner.value.id as any;\r\n } else {\r\n data.key = `part_${props.partId}`\r\n data.desc = `${props.title}的Banner`\r\n }\r\n return data\r\n})\r\n\r\n\r\n\r\n// 添加完成则刷新\r\nadContentForm.submittedEvent.on(() => {\r\n loadPartAdDefineData(props.partId)\r\n})\r\n//加完成则刷新\r\nadDefineForm.submittedEvent.on(() => {\r\n loadPartAdDefineData(props.partId)\r\n})\r\n\r\n//加载栏目广告\r\nconst loadPartAdDefineData = async (partId: any) => {\r\n\r\n try {\r\n\r\n loading.value = true;\r\n const where = new Where()\r\n where.addCondition(\"key\", \"=\", `part_${partId}`);\r\n // 加载广告定义\r\n partAdBanner.value = (await adRequest.query({\r\n data: {\r\n pn: 1,\r\n pc: 1000000,\r\n condition: where\r\n }\r\n })).data.data[0];\r\n if (partAdBanner.value?.width && partAdBanner.value?.width) {\r\n adContentForm.changeCutSise(`${partAdBanner.value.width}*${partAdBanner.value.height}`)\r\n }\r\n\r\n } catch (e) {\r\n console.error(e)\r\n } finally {\r\n loading.value = false;\r\n }\r\n}\r\n//显示栏目广告的编辑弹窗\r\nconst showAdContentHandle = async (id: any) => {\r\n await Dialoger.dataFormDialog({\r\n dataForm: adContentForm as CmsAdContentsForm,\r\n recId: id\r\n })\r\n}\r\n//显示栏目广告定义的编辑弹窗\r\nconst showAdDefineHandle = async () => {\r\n await Dialoger.dataFormDialog({\r\n dataForm: adDefineForm as CmsAdDefinesForm,\r\n recId: partAdBanner.value?.id\r\n })\r\n adDefineForm.getColumn(\"contents\")!.visible = false;\r\n adDefineForm.getColumn(\"key\")!.visible = false;\r\n adDefineForm.getColumn(\"desc\")!.visible = false;\r\n}\r\n\r\n// 组件挂载的时候\r\nonMounted(() => {\r\n watch(() => props.partId, id => {\r\n loadPartAdDefineData(id)\r\n }, { immediate: true })\r\n})\r\n\r\n</script>\r\n<style lang='scss'></style>\r\n"],"names":["DataViewRequest","cmsSettings","useCmsSettings","ref","reactive","CmsAdContentsForm","CmsAdDefinesForm","Messager","Where","Dialoger","onMounted","watch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDM,UAAA,YAAY,IAAIA,QAAAA,gBAAgB,EAAE,MAAM,aAAa,YAAY,OAAO;AAE9E,UAAMC,gBAAcC,YAAAA;AACpB,UAAM,QAAQ;AAER,UAAA,eAAeC,QAAgB,IAAI;AACnC,UAAA,UAAUA,QAAI,IAAI;AAClB,UAAA,gBAAgBC,aAA4B,IAAIC,oCAAkB,EAAE,SAASJ,cAAY,KAAK,gBAAiB,CAAA,CAAC;AACtH,UAAM,eAAeG,IAAAA,SAA2B,IAAIE,iBAAAA,iBAAkB,CAAA;AAGtE,kBAAc,kBAAkB,GAAG,OAAO,EAAE,WAAW;AACrD,UAAI,aAAa,OAAO;AACjB,aAAA,aAAa,aAAa,MAAM;AAAA,MAAA,OAElC;AACC,YAAA;AAEF,gBAAM,iBAAiBL,cAAY,KAAK,gBAAgB,MAAM,GAAG;AAE3D,gBAAA,SAAS,MAAM,UAAU,IAAI,EAAE,KAAK,QAAQ,MAAM,MAAM,IAAI,MAAM,GAAG,MAAM,KAAK,WAAW,OAAO,eAAe,CAAC,GAAG,QAAQ,eAAe,CAAC,EAAG,CAAA;AAElJ,cAAA,OAAO,KAAK,QAAQ,KAAK;AAC3B,yBAAa,QAAQ,EAAE,IAAI,OAAO,KAAK;AAClC,iBAAA,aAAa,OAAO,KAAK;AAAA,UAChC;AAAA,iBAEO,OAAO;AACdM,aAAAA,SAAS,MAAM,EAAE,SAAS,QAAS,CAAA;AAAA,QACrC;AAAA,MACF;AAAA,IAAA,CAED;AAGY,iBAAA,mBAAoB,CAAC,SAAS;AACzC,UAAI,aAAa,OAAO;AACjB,aAAA,KAAK,aAAa,MAAM;AAAA,MAAA,OACxB;AACA,aAAA,MAAM,QAAQ,MAAM,MAAM;AAC1B,aAAA,OAAO,GAAG,MAAM,KAAK;AAAA,MAC5B;AACO,aAAA;AAAA,IAAA;AAMK,kBAAA,eAAe,GAAG,MAAM;AACpC,2BAAqB,MAAM,MAAM;AAAA,IAAA,CAClC;AAEY,iBAAA,eAAe,GAAG,MAAM;AACnC,2BAAqB,MAAM,MAAM;AAAA,IAAA,CAClC;AAGK,UAAA,uBAAuB,OAAO,WAAgB;;AAE9C,UAAA;AAEF,gBAAQ,QAAQ;AACV,cAAA,QAAQ,IAAIC,QAAAA;AAClB,cAAM,aAAa,OAAO,KAAK,QAAQ,MAAM,EAAE;AAElC,qBAAA,SAAS,MAAM,UAAU,MAAM;AAAA,UAC1C,MAAM;AAAA,YACJ,IAAI;AAAA,YACJ,IAAI;AAAA,YACJ,WAAW;AAAA,UACb;AAAA,QACD,CAAA,GAAG,KAAK,KAAK,CAAC;AACf,cAAI,kBAAa,UAAb,mBAAoB,YAAS,kBAAa,UAAb,mBAAoB,QAAO;AAC5C,wBAAA,cAAc,GAAG,aAAa,MAAM,KAAK,IAAI,aAAa,MAAM,MAAM,EAAE;AAAA,QACxF;AAAA,eAEO,GAAG;AACV,gBAAQ,MAAM,CAAC;AAAA,MAAA,UACf;AACA,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IAAA;AAGI,UAAA,sBAAsB,OAAO,OAAY;AAC7C,YAAMC,GAAAA,SAAS,eAAe;AAAA,QAC5B,UAAU;AAAA,QACV,OAAO;AAAA,MAAA,CACR;AAAA,IAAA;AAGH,UAAM,qBAAqB,YAAY;;AACrC,YAAMA,GAAAA,SAAS,eAAe;AAAA,QAC5B,UAAU;AAAA,QACV,QAAO,kBAAa,UAAb,mBAAoB;AAAA,MAAA,CAC5B;AACY,mBAAA,UAAU,UAAU,EAAG,UAAU;AACjC,mBAAA,UAAU,KAAK,EAAG,UAAU;AAC5B,mBAAA,UAAU,MAAM,EAAG,UAAU;AAAA,IAAA;AAI5CC,QAAAA,UAAU,MAAM;AACRC,UAAAA,MAAA,MAAM,MAAM,QAAQ,CAAM,OAAA;AAC9B,6BAAqB,EAAE;AAAA,MAAA,GACtB,EAAE,WAAW,KAAA,CAAM;AAAA,IAAA,CACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const vue = require("vue");
|
|
3
|
+
require("@maketribe/dm");
|
|
4
|
+
const elementPlus = require("element-plus");
|
|
5
|
+
require("@maketribe/utils");
|
|
6
|
+
require("../../../../core/DataModelDefines.js");
|
|
7
|
+
require("vue-router");
|
|
8
|
+
require("@maketribe/request");
|
|
9
|
+
require("@maketribe/locale");
|
|
10
|
+
require("../../../ms/dataviews/ms-config/MsConfigTable.js");
|
|
11
|
+
require("lodash-es");
|
|
12
|
+
require("../../../../components/basic/svg-icon/index.js");
|
|
13
|
+
require("../../../../components/data-model/data-form/index.js");
|
|
14
|
+
require("../../../../components/data-model/data-table/index.js");
|
|
15
|
+
require("../../../../components/data-model/data-table-pagination/index.js");
|
|
16
|
+
require("../../../../components/abstract/abstract-select/abstract-select.js");
|
|
17
|
+
require("../../../../components/abstract/abstract-select/abstract-select-options.js");
|
|
18
|
+
require("../../../../components/basic/button/button-options.js");
|
|
19
|
+
require("../../../../components/basic/config-provider/index.js");
|
|
20
|
+
require("../../../../components/basic/data-table-select/index.js");
|
|
21
|
+
require("../../../../components/basic/data-select/index.js");
|
|
22
|
+
require("../../../../components/basic/pagination/index.js");
|
|
23
|
+
require("../../../../components/basic/system-provider/index.js");
|
|
24
|
+
const index$1 = require("../../../../components/basic/code-editor/index.js");
|
|
25
|
+
require("../../../../components/basic/json-editor/index.js");
|
|
26
|
+
require("../../../../components/basic/page-container/index.js");
|
|
27
|
+
require("../../../../components/basic/date-picker/index.js");
|
|
28
|
+
require("../../../../components/basic/icon-select/index.js");
|
|
29
|
+
require("../../../../components/basic/upload-file/upload-file.js");
|
|
30
|
+
require("../../../../components/basic/upload-file/context/web-file-upload-context.js");
|
|
31
|
+
require("../../../../components/basic/upload-file/context/web-file-upload-context-options.js");
|
|
32
|
+
require("../../../../components/basic/upload-file/ui/upload-image/index.js");
|
|
33
|
+
require("../../../../components/basic/upload-file/ui/upload-file/index.js");
|
|
34
|
+
require("../../../../components/basic/upload-file/ui/upload-video/index.js");
|
|
35
|
+
require("../../../../components/basic/upload-file/upload-file-options.js");
|
|
36
|
+
require("../../../../components/basic/doc-editor/index.js");
|
|
37
|
+
require("../../../../components/basic/copy-container/index.js");
|
|
38
|
+
require("../../../../components/basic/image-cropper/index.js");
|
|
39
|
+
require("../../../../components/basic/visual-page-editor/index.js");
|
|
40
|
+
require("../../../../components/business/verify-dialog/verify-dialog-option.js");
|
|
41
|
+
require("../../../../components/business/resource-list/index.js");
|
|
42
|
+
require("../../../../components/business/resource-manager/index.js");
|
|
43
|
+
require("../../../ms/dataviews/department/DepartmentForm.js");
|
|
44
|
+
require("../../../ms/dataviews/department/DepartmentTable.js");
|
|
45
|
+
require("../../../ms/dataviews/department/DepartmentTree.js");
|
|
46
|
+
require("../../../ms/dataviews/log/operate-log/OperateLogTable.js");
|
|
47
|
+
require("../../../ms/dataviews/log/login-log/LoginLogTable.js");
|
|
48
|
+
require("../../../ms/dataviews/log/request-log/RequestLogTable.js");
|
|
49
|
+
require("../../../ms/dataviews/log/local-log/LocalLogTree.js");
|
|
50
|
+
require("../../../ms/components/material-list/index.js");
|
|
51
|
+
require("../../../ms/components/markdown-editor/index.js");
|
|
52
|
+
require("../../../ms/components/rich-text-editor/index.js");
|
|
53
|
+
require("@element-plus/icons-vue");
|
|
54
|
+
require("../../../ms/material-upload-context/material-upload-context-options.js");
|
|
55
|
+
require("../../../ms/material-upload-context/material-upload-context.js");
|
|
56
|
+
const index = require("../../../ms/image-upload-context/index.js");
|
|
57
|
+
const langJson = require("@codemirror/lang-json");
|
|
58
|
+
const langHtml = require("@codemirror/lang-html");
|
|
59
|
+
const langCss = require("@codemirror/lang-css");
|
|
60
|
+
const _hoisted_1 = { style: { "width": "500px", "max-height": "700px", "overflow": "auto" } };
|
|
61
|
+
const _hoisted_2 = { style: { "display": "flex", "justify-content": "space-between" } };
|
|
62
|
+
const _hoisted_3 = { class: "dialog-footer" };
|
|
63
|
+
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
64
|
+
__name: "DocModuleEditForm",
|
|
65
|
+
props: { modules: { type: Array, default() {
|
|
66
|
+
return [];
|
|
67
|
+
} } },
|
|
68
|
+
setup(__props) {
|
|
69
|
+
const props = __props;
|
|
70
|
+
const dialogVisible = vue.ref(false);
|
|
71
|
+
const dialogTitle = vue.ref("添加模块");
|
|
72
|
+
const curEditModule = vue.ref(null);
|
|
73
|
+
const disabledName = vue.ref(false);
|
|
74
|
+
const addModuleHandle = () => {
|
|
75
|
+
dialogTitle.value = "添加模块";
|
|
76
|
+
curEditModule.value = {
|
|
77
|
+
name: "",
|
|
78
|
+
title: "新增模块",
|
|
79
|
+
cover: "",
|
|
80
|
+
template: "",
|
|
81
|
+
editorCss: "",
|
|
82
|
+
options: ""
|
|
83
|
+
};
|
|
84
|
+
dialogVisible.value = true;
|
|
85
|
+
disabledName.value = false;
|
|
86
|
+
};
|
|
87
|
+
const editModuleHandle = (data) => {
|
|
88
|
+
dialogTitle.value = `编辑模块【${data.name}】`;
|
|
89
|
+
curEditModule.value = Object.assign({}, data, {
|
|
90
|
+
options: JSON.stringify(data.options, null, 4)
|
|
91
|
+
});
|
|
92
|
+
dialogVisible.value = true;
|
|
93
|
+
disabledName.value = true;
|
|
94
|
+
};
|
|
95
|
+
const deleteModuleHandle = (data) => {
|
|
96
|
+
elementPlus.ElMessageBox.confirm(`确认删除模块【${data.name}】?`).then(() => {
|
|
97
|
+
let modules = props.modules;
|
|
98
|
+
for (let i = 0; i < modules.length; i++) {
|
|
99
|
+
if (modules[i].name == data.name) {
|
|
100
|
+
modules.splice(i, 1);
|
|
101
|
+
console.log(modules);
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
dialogVisible.value = false;
|
|
106
|
+
}).catch((e) => {
|
|
107
|
+
console.log(e);
|
|
108
|
+
elementPlus.ElMessage.error({ message: "删除失败!" });
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
const saveModuleHandle = () => {
|
|
112
|
+
var _a, _b;
|
|
113
|
+
try {
|
|
114
|
+
if (curEditModule.value) {
|
|
115
|
+
const oldModule = (_a = props.modules) == null ? void 0 : _a.find((item) => curEditModule.value.name == item.name);
|
|
116
|
+
if (oldModule != null) {
|
|
117
|
+
Object.assign(oldModule, curEditModule.value, {
|
|
118
|
+
options: JSON.parse(curEditModule.value.options)
|
|
119
|
+
});
|
|
120
|
+
} else {
|
|
121
|
+
(_b = props.modules) == null ? void 0 : _b.push(Object.assign({}, curEditModule.value, {
|
|
122
|
+
options: JSON.parse(curEditModule.value.options)
|
|
123
|
+
}));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
curEditModule.value = null;
|
|
127
|
+
dialogVisible.value = false;
|
|
128
|
+
} catch (error) {
|
|
129
|
+
console.log(error);
|
|
130
|
+
elementPlus.ElMessage.error({ message: "配置有误,保存失败!" });
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
return (_ctx, _cache) => {
|
|
134
|
+
const _component_el_button = vue.resolveComponent("el-button");
|
|
135
|
+
const _component_el_card = vue.resolveComponent("el-card");
|
|
136
|
+
const _component_el_input = vue.resolveComponent("el-input");
|
|
137
|
+
const _component_el_form_item = vue.resolveComponent("el-form-item");
|
|
138
|
+
const _component_MKUploadImage = vue.resolveComponent("MKUploadImage");
|
|
139
|
+
const _component_el_form = vue.resolveComponent("el-form");
|
|
140
|
+
const _component_el_dialog = vue.resolveComponent("el-dialog");
|
|
141
|
+
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
|
|
142
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.modules, (mod) => {
|
|
143
|
+
return vue.openBlock(), vue.createBlock(_component_el_card, {
|
|
144
|
+
style: { "width": "100%", "margin-top": "10px", "box-sizing": "border-box" },
|
|
145
|
+
shadow: "hover"
|
|
146
|
+
}, {
|
|
147
|
+
default: vue.withCtx(() => [
|
|
148
|
+
vue.createElementVNode("div", _hoisted_2, [
|
|
149
|
+
vue.createElementVNode("div", null, vue.toDisplayString(mod.title) + " [" + vue.toDisplayString(mod.name) + "]", 1),
|
|
150
|
+
vue.createElementVNode("div", null, [
|
|
151
|
+
vue.createVNode(_component_el_button, {
|
|
152
|
+
type: "primary",
|
|
153
|
+
text: "",
|
|
154
|
+
onClick: ($event) => editModuleHandle(mod)
|
|
155
|
+
}, {
|
|
156
|
+
default: vue.withCtx(() => [
|
|
157
|
+
vue.createTextVNode("编辑")
|
|
158
|
+
]),
|
|
159
|
+
_: 2
|
|
160
|
+
}, 1032, ["onClick"]),
|
|
161
|
+
vue.createVNode(_component_el_button, {
|
|
162
|
+
type: "danger",
|
|
163
|
+
text: "",
|
|
164
|
+
onClick: ($event) => deleteModuleHandle(mod)
|
|
165
|
+
}, {
|
|
166
|
+
default: vue.withCtx(() => [
|
|
167
|
+
vue.createTextVNode("删除")
|
|
168
|
+
]),
|
|
169
|
+
_: 2
|
|
170
|
+
}, 1032, ["onClick"])
|
|
171
|
+
])
|
|
172
|
+
])
|
|
173
|
+
]),
|
|
174
|
+
_: 2
|
|
175
|
+
}, 1024);
|
|
176
|
+
}), 256)),
|
|
177
|
+
vue.createVNode(_component_el_button, {
|
|
178
|
+
type: "primary",
|
|
179
|
+
onClick: addModuleHandle,
|
|
180
|
+
style: { "width": "100%", "margin-top": "10px", "box-sizing": "border-box" }
|
|
181
|
+
}, {
|
|
182
|
+
default: vue.withCtx(() => [
|
|
183
|
+
vue.createTextVNode("添加模块")
|
|
184
|
+
]),
|
|
185
|
+
_: 1
|
|
186
|
+
}),
|
|
187
|
+
vue.createVNode(_component_el_dialog, {
|
|
188
|
+
modelValue: dialogVisible.value,
|
|
189
|
+
"onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => dialogVisible.value = $event),
|
|
190
|
+
title: dialogTitle.value,
|
|
191
|
+
width: 800
|
|
192
|
+
}, {
|
|
193
|
+
footer: vue.withCtx(() => [
|
|
194
|
+
vue.createElementVNode("div", _hoisted_3, [
|
|
195
|
+
vue.createVNode(_component_el_button, {
|
|
196
|
+
onClick: _cache[6] || (_cache[6] = ($event) => dialogVisible.value = false)
|
|
197
|
+
}, {
|
|
198
|
+
default: vue.withCtx(() => [
|
|
199
|
+
vue.createTextVNode("取消")
|
|
200
|
+
]),
|
|
201
|
+
_: 1
|
|
202
|
+
}),
|
|
203
|
+
vue.createVNode(_component_el_button, {
|
|
204
|
+
type: "primary",
|
|
205
|
+
onClick: saveModuleHandle
|
|
206
|
+
}, {
|
|
207
|
+
default: vue.withCtx(() => [
|
|
208
|
+
vue.createTextVNode(" 保存 ")
|
|
209
|
+
]),
|
|
210
|
+
_: 1
|
|
211
|
+
})
|
|
212
|
+
])
|
|
213
|
+
]),
|
|
214
|
+
default: vue.withCtx(() => [
|
|
215
|
+
curEditModule.value ? (vue.openBlock(), vue.createBlock(_component_el_form, {
|
|
216
|
+
key: 0,
|
|
217
|
+
model: curEditModule.value,
|
|
218
|
+
"label-width": "auto",
|
|
219
|
+
"label-position": "top",
|
|
220
|
+
style: { "max-height": "500px", "overflow": "auto", "padding": "20px" }
|
|
221
|
+
}, {
|
|
222
|
+
default: vue.withCtx(() => [
|
|
223
|
+
vue.createVNode(_component_el_form_item, { label: "模块名称 : " }, {
|
|
224
|
+
default: vue.withCtx(() => [
|
|
225
|
+
vue.createVNode(_component_el_input, {
|
|
226
|
+
modelValue: curEditModule.value.name,
|
|
227
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => curEditModule.value.name = $event),
|
|
228
|
+
disabled: disabledName.value,
|
|
229
|
+
clearable: ""
|
|
230
|
+
}, null, 8, ["modelValue", "disabled"])
|
|
231
|
+
]),
|
|
232
|
+
_: 1
|
|
233
|
+
}),
|
|
234
|
+
vue.createVNode(_component_el_form_item, {
|
|
235
|
+
label: "模块描述 : ",
|
|
236
|
+
style: { "margin-bottom": "20px" }
|
|
237
|
+
}, {
|
|
238
|
+
default: vue.withCtx(() => [
|
|
239
|
+
vue.createVNode(_component_el_input, {
|
|
240
|
+
modelValue: curEditModule.value.title,
|
|
241
|
+
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => curEditModule.value.title = $event),
|
|
242
|
+
clearable: ""
|
|
243
|
+
}, null, 8, ["modelValue"])
|
|
244
|
+
]),
|
|
245
|
+
_: 1
|
|
246
|
+
}),
|
|
247
|
+
vue.createVNode(_component_el_form_item, {
|
|
248
|
+
label: "模块封面图 : ",
|
|
249
|
+
style: { "margin-bottom": "20px" }
|
|
250
|
+
}, {
|
|
251
|
+
default: vue.withCtx(() => [
|
|
252
|
+
vue.createVNode(_component_MKUploadImage, {
|
|
253
|
+
modelValue: curEditModule.value.cover,
|
|
254
|
+
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => curEditModule.value.cover = $event),
|
|
255
|
+
width: "700px",
|
|
256
|
+
height: "300px",
|
|
257
|
+
uploadContext: new (vue.unref(index.ImageUploadContext))("")
|
|
258
|
+
}, null, 8, ["modelValue", "uploadContext"])
|
|
259
|
+
]),
|
|
260
|
+
_: 1
|
|
261
|
+
}),
|
|
262
|
+
vue.createVNode(_component_el_form_item, {
|
|
263
|
+
label: "模块HTML模版 : ",
|
|
264
|
+
style: { "margin-bottom": "20px" }
|
|
265
|
+
}, {
|
|
266
|
+
default: vue.withCtx(() => [
|
|
267
|
+
vue.createVNode(vue.unref(index$1.MKCodeEditor), {
|
|
268
|
+
modelValue: curEditModule.value.template,
|
|
269
|
+
"onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => curEditModule.value.template = $event),
|
|
270
|
+
extensions: [vue.unref(langHtml.html)()],
|
|
271
|
+
style: { "border": "1px solid #ccc" }
|
|
272
|
+
}, null, 8, ["modelValue", "extensions"])
|
|
273
|
+
]),
|
|
274
|
+
_: 1
|
|
275
|
+
}),
|
|
276
|
+
vue.createVNode(_component_el_form_item, {
|
|
277
|
+
label: "模块配置面板 : ",
|
|
278
|
+
style: { "margin-bottom": "20px" }
|
|
279
|
+
}, {
|
|
280
|
+
default: vue.withCtx(() => [
|
|
281
|
+
vue.createVNode(vue.unref(index$1.MKCodeEditor), {
|
|
282
|
+
modelValue: curEditModule.value.options,
|
|
283
|
+
"onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => curEditModule.value.options = $event),
|
|
284
|
+
extensions: [vue.unref(langJson.json)()],
|
|
285
|
+
style: { "border": "1px solid #ccc" }
|
|
286
|
+
}, null, 8, ["modelValue", "extensions"])
|
|
287
|
+
]),
|
|
288
|
+
_: 1
|
|
289
|
+
}),
|
|
290
|
+
vue.createVNode(_component_el_form_item, { label: "模块编辑样式 : " }, {
|
|
291
|
+
default: vue.withCtx(() => [
|
|
292
|
+
vue.createVNode(vue.unref(index$1.MKCodeEditor), {
|
|
293
|
+
modelValue: curEditModule.value.editorCss,
|
|
294
|
+
"onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => curEditModule.value.editorCss = $event),
|
|
295
|
+
extensions: [vue.unref(langCss.css)()],
|
|
296
|
+
style: { "border": "1px solid #ccc" }
|
|
297
|
+
}, null, 8, ["modelValue", "extensions"])
|
|
298
|
+
]),
|
|
299
|
+
_: 1
|
|
300
|
+
})
|
|
301
|
+
]),
|
|
302
|
+
_: 1
|
|
303
|
+
}, 8, ["model"])) : vue.createCommentVNode("", true)
|
|
304
|
+
]),
|
|
305
|
+
_: 1
|
|
306
|
+
}, 8, ["modelValue", "title"])
|
|
307
|
+
]);
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
module.exports = _sfc_main;
|
|
312
|
+
//# sourceMappingURL=DocModuleEditForm.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocModuleEditForm.vue.js","sources":["../../../../../../src/modules/cms/pages/cms-settigns/DocModuleEditForm.vue"],"sourcesContent":["<template>\r\n <div style=\" width: 500px;max-height: 700px;overflow: auto;\">\r\n <el-card v-for=\"mod in modules\" style=\"width: 100%;margin-top: 10px;box-sizing: border-box;\" shadow=\"hover\">\r\n <div style=\"display: flex; justify-content: space-between;\">\r\n <div>{{mod.title}} [{{mod.name}}]</div>\r\n <div>\r\n <el-button type=\"primary\" text @click=\"editModuleHandle(mod)\">编辑</el-button>\r\n <el-button type=\"danger\" text @click=\"deleteModuleHandle(mod)\">删除</el-button>\r\n </div>\r\n </div>\r\n </el-card>\r\n <el-button type=\"primary\" @click=\"addModuleHandle\" style=\"width: 100%;margin-top: 10px;box-sizing: border-box;\">添加模块</el-button>\r\n <el-dialog v-model=\"dialogVisible\" :title=\"dialogTitle\" :width=\"800\">\r\n <el-form v-if=\"curEditModule\" :model=\"curEditModule\" label-width=\"auto\" label-position=\"top\" style=\"max-height: 500px;overflow: auto;padding: 20px;\">\r\n <el-form-item label=\"模块名称 : \">\r\n <el-input v-model=\"curEditModule.name\" :disabled=\"disabledName\" clearable />\r\n </el-form-item>\r\n <el-form-item label=\"模块描述 : \" style=\"margin-bottom: 20px;\">\r\n <el-input v-model=\"curEditModule.title\" clearable />\r\n </el-form-item>\r\n <el-form-item label=\"模块封面图 : \" style=\"margin-bottom: 20px;\">\r\n <MKUploadImage v-model=\"curEditModule.cover\" width=\"700px\" height=\"300px\" :uploadContext=\"new ImageUploadContext('')\">\r\n\r\n </MKUploadImage>\r\n </el-form-item>\r\n <el-form-item label=\"模块HTML模版 : \" style=\"margin-bottom: 20px;\">\r\n <MKCodeEditor v-model=\"curEditModule.template\" :extensions=\"[html()]\" style=\"border: 1px solid #ccc;\">\r\n\r\n </MKCodeEditor>\r\n </el-form-item>\r\n <el-form-item label=\"模块配置面板 : \" style=\"margin-bottom: 20px;\">\r\n <MKCodeEditor v-model=\"curEditModule.options\" :extensions=\"[json()]\" style=\"border: 1px solid #ccc;\">\r\n\r\n </MKCodeEditor>\r\n </el-form-item>\r\n <el-form-item label=\"模块编辑样式 : \">\r\n <MKCodeEditor v-model=\"curEditModule.editorCss\" :extensions=\"[css()]\" style=\"border: 1px solid #ccc;\">\r\n\r\n </MKCodeEditor>\r\n </el-form-item>\r\n </el-form>\r\n <template #footer>\r\n <div class=\"dialog-footer\">\r\n <el-button @click=\"dialogVisible = false\">取消</el-button>\r\n <el-button type=\"primary\" @click=\"saveModuleHandle\"> 保存 </el-button>\r\n </div>\r\n </template>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n \r\n<script setup lang=\"ts\">\r\nimport { defineProps,watch,ref } from \"vue\"\r\nimport { ImageUploadContext } from \"../../../ms\";\r\nimport { ModuleType } from \"../../../../components/basic/doc-editor/plugins/ModulePlugin/composables\"\r\nimport { MKCodeEditor } from \"../../../../components/basic/code-editor\";\r\nimport { ElMessageBox,ElMessage } from 'element-plus'\r\nimport { json } from \"@codemirror/lang-json\";\r\nimport { html } from \"@codemirror/lang-html\";\r\nimport { css } from \"@codemirror/lang-css\";\r\n\r\nconst props = defineProps({ modules:{ type:Array<ModuleType>,default(){ return [] } } })\r\nconst dialogVisible = ref<boolean>(false)\r\nconst dialogTitle = ref<string>(\"添加模块\")\r\nconst curEditModule = ref<any>(null)\r\nconst disabledName = ref<boolean>(false)\r\n \r\n// 添加模块\r\nconst addModuleHandle = ()=>{\r\n dialogTitle.value = \"添加模块\";\r\n curEditModule.value = {\r\n name:\"\",\r\n title:\"新增模块\",\r\n cover:\"\",\r\n template:\"\",\r\n editorCss:\"\",\r\n options:\"\"\r\n };\r\n dialogVisible.value = true;\r\n disabledName.value = false;\r\n}\r\n\r\n// 编辑模块\r\nconst editModuleHandle = (data:any)=>{\r\n dialogTitle.value = `编辑模块【${data.name}】`;\r\n curEditModule.value = Object.assign({},data,{\r\n options:JSON.stringify(data.options,null,4)\r\n });\r\n dialogVisible.value = true;\r\n disabledName.value = true;\r\n}\r\n\r\n// 删除模块\r\nconst deleteModuleHandle = (data:any)=>{\r\n\r\n ElMessageBox.confirm(`确认删除模块【${data.name}】?`).then(() => {\r\n\r\n let modules = props.modules;\r\n\r\n for(let i = 0;i < modules.length; i++){\r\n if(modules[i].name == data.name){\r\n modules.splice(i,1);\r\n console.log(modules);\r\n break;\r\n }\r\n }\r\n\r\n dialogVisible.value = false;\r\n })\r\n .catch(e => {\r\n // catch error\r\n console.log(e);\r\n ElMessage.error({ message:\"删除失败!\"});\r\n })\r\n}\r\n\r\n// 保存模块\r\nconst saveModuleHandle = ()=>{\r\n \r\n try {\r\n if(curEditModule.value){\r\n\r\n const oldModule = props.modules?.find(item=>curEditModule.value.name == item.name)\r\n\r\n if(oldModule != null){\r\n Object.assign(oldModule,curEditModule.value,{\r\n options:JSON.parse(curEditModule.value.options)\r\n })\r\n }\r\n else{\r\n props.modules?.push(Object.assign({},curEditModule.value,{\r\n options:JSON.parse(curEditModule.value.options)\r\n }))\r\n }\r\n }\r\n\r\n curEditModule.value = null;\r\n dialogVisible.value = false;\r\n } catch (error) {\r\n console.log(error)\r\n ElMessage.error({ message:\"配置有误,保存失败!\"});\r\n }\r\n}\r\n\r\n </script>\r\n "],"names":["ref","ElMessageBox","ElMessage"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DA,UAAM,QAAQ;AACR,UAAA,gBAAgBA,QAAa,KAAK;AAClC,UAAA,cAAcA,QAAY,MAAM;AAChC,UAAA,gBAAgBA,QAAS,IAAI;AAC7B,UAAA,eAAeA,QAAa,KAAK;AAGvC,UAAM,kBAAkB,MAAI;AAC1B,kBAAY,QAAQ;AACpB,oBAAc,QAAQ;AAAA,QACpB,MAAK;AAAA,QACL,OAAM;AAAA,QACN,OAAM;AAAA,QACN,UAAS;AAAA,QACT,WAAU;AAAA,QACV,SAAQ;AAAA,MAAA;AAEV,oBAAc,QAAQ;AACtB,mBAAa,QAAQ;AAAA,IAAA;AAIjB,UAAA,mBAAmB,CAAC,SAAW;AACvB,kBAAA,QAAQ,QAAQ,KAAK,IAAI;AACrC,oBAAc,QAAQ,OAAO,OAAO,CAAA,GAAG,MAAK;AAAA,QACtC,SAAQ,KAAK,UAAU,KAAK,SAAQ,MAAK,CAAC;AAAA,MAAA,CAC3C;AACL,oBAAc,QAAQ;AACtB,mBAAa,QAAQ;AAAA,IAAA;AAIjB,UAAA,qBAAqB,CAAC,SAAW;AAErCC,+BAAa,QAAQ,UAAU,KAAK,IAAI,IAAI,EAAE,KAAK,MAAM;AAEvD,YAAI,UAAU,MAAM;AAEpB,iBAAQ,IAAI,GAAE,IAAI,QAAQ,QAAQ,KAAI;AACpC,cAAG,QAAQ,CAAC,EAAE,QAAQ,KAAK,MAAK;AACtB,oBAAA,OAAO,GAAE,CAAC;AAClB,oBAAQ,IAAI,OAAO;AACnB;AAAA,UACF;AAAA,QACF;AAEA,sBAAc,QAAQ;AAAA,MAAA,CACvB,EACA,MAAM,CAAK,MAAA;AAEV,gBAAQ,IAAI,CAAC;AACbC,oBAAAA,UAAU,MAAM,EAAE,SAAQ,QAAQ,CAAA;AAAA,MAAA,CACnC;AAAA,IAAA;AAIH,UAAM,mBAAmB,MAAI;;AAEvB,UAAA;AACF,YAAG,cAAc,OAAM;AAEf,gBAAA,aAAY,WAAM,YAAN,mBAAe,KAAK,UAAM,cAAc,MAAM,QAAQ,KAAK;AAE7E,cAAG,aAAa,MAAK;AACZ,mBAAA,OAAO,WAAU,cAAc,OAAM;AAAA,cAC1C,SAAQ,KAAK,MAAM,cAAc,MAAM,OAAO;AAAA,YAAA,CAC/C;AAAA,UAAA,OAEC;AACF,wBAAM,YAAN,mBAAe,KAAK,OAAO,OAAO,CAAC,GAAE,cAAc,OAAM;AAAA,cACvD,SAAQ,KAAK,MAAM,cAAc,MAAM,OAAO;AAAA,YAC/C,CAAA;AAAA,UACH;AAAA,QACF;AAEA,sBAAc,QAAQ;AACtB,sBAAc,QAAQ;AAAA,eACf,OAAO;AACd,gBAAQ,IAAI,KAAK;AACjBA,oBAAAA,UAAU,MAAM,EAAE,SAAQ,aAAa,CAAA;AAAA,MACzC;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocModuleEditForm.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -9,6 +9,7 @@ require("vue-router");
|
|
|
9
9
|
require("@maketribe/request");
|
|
10
10
|
require("@maketribe/locale");
|
|
11
11
|
const MsConfigTable = require("../../../ms/dataviews/ms-config/MsConfigTable.js");
|
|
12
|
+
const DocModuleEditForm_vue_vue_type_script_setup_true_lang = require("./DocModuleEditForm.vue.js");
|
|
12
13
|
const _hoisted_1 = {
|
|
13
14
|
class: "mk-cms-appsettings__warp",
|
|
14
15
|
style: { "height": "100%", "display": "flex", "flex-direction": "column" }
|
|
@@ -142,6 +143,23 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
142
143
|
})
|
|
143
144
|
]),
|
|
144
145
|
_: 1
|
|
146
|
+
}, 8, ["model"]),
|
|
147
|
+
vue.createVNode(_component_el_form, {
|
|
148
|
+
model: vue.unref(CmsSettings),
|
|
149
|
+
"label-width": "auto",
|
|
150
|
+
"label-position": "top"
|
|
151
|
+
}, {
|
|
152
|
+
default: vue.withCtx(() => [
|
|
153
|
+
vue.createVNode(_component_el_form_item, { label: "文档模块 : " }, {
|
|
154
|
+
default: vue.withCtx(() => [
|
|
155
|
+
vue.createVNode(DocModuleEditForm_vue_vue_type_script_setup_true_lang, {
|
|
156
|
+
modules: vue.unref(CmsSettings).docModules
|
|
157
|
+
}, null, 8, ["modules"])
|
|
158
|
+
]),
|
|
159
|
+
_: 1
|
|
160
|
+
})
|
|
161
|
+
]),
|
|
162
|
+
_: 1
|
|
145
163
|
}, 8, ["model"])
|
|
146
164
|
]),
|
|
147
165
|
_: 1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue2.js","sources":["../../../../../../src/modules/cms/pages/cms-settigns/index.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-appsettings__warp\" v-loading=\"loading\" style=\"\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n\">\r\n <el-page-header style=\"background-color: #fff; padding: 10px\" :icon=\"null\">\r\n <template #title>\r\n <h3 style=\"color: var(--el-text-color-regular); margin-left: 10px\">\r\n <MKSvgIcon iconClass=\"Operation\" style=\"margin-right: 5px\" />\r\n CMS应用设置\r\n </h3>\r\n </template>\r\n <template #extra>\r\n <div>\r\n <el-button-group>\r\n <el-button type=\"primary\" size=\"large\" text :disabled=\"!changed\" @click=\"saveHandle\">\r\n <MKSvgIcon iconClass=\"save\" />\r\n 保存\r\n </el-button>\r\n </el-button-group>\r\n </div>\r\n </template>\r\n </el-page-header>\r\n <div class=\"mk-cms-appsettings__form_warp\" style=\"\r\n background: #fff;\r\n flex: 1;\r\n height: 100%;\r\n padding: 10px;\r\n margin: 10px;\r\n overflow: auto;\r\n \">\r\n <el-tabs v-model=\"activeTabName\" class=\"mk-cms-contents__body__right\">\r\n <el-tab-pane label=\"发布设置\" name=\"publish\">\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\">\r\n <el-form-item label=\"发布模式 : \">\r\n <el-radio-group v-model=\"CmsSettings.publish.mode\">\r\n <el-radio value=\"static\">静态发布</el-radio>\r\n <el-radio value=\"dynamic\">动态发布</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n </el-form>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"栏目设置\" name=\"part\">\r\n <el-divider content-position=\"left\">栏目内容文档编辑器扩展设置</el-divider>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\">\r\n <el-form-item label=\"开启栏目轮播图 : \">\r\n <el-switch v-model=\"CmsSettings.part.openBanner\" />\r\n </el-form-item>\r\n\r\n <el-form-item v-if=\"CmsSettings.part.openBanner\" label=\"轮播图尺寸 : \">\r\n <el-input v-model=\"CmsSettings.part.bannerImageSize\" placeholder=\"\" style=\"max-width: 200px;\" />\r\n </el-form-item>\r\n </el-form>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\" label-position=\"top\">\r\n \r\n <el-form-item label=\"引入的Css : \">\r\n <el-input v-model=\"CmsSettings.part.doc.css\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个css url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n \r\n <el-form-item label=\"引入的Js : \">\r\n <el-input v-model=\"CmsSettings.part.doc.js\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个 js url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n </el-form>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"内容设置\" name=\"content\">\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\">\r\n <el-form-item label=\"启用内容置顶 : \">\r\n <el-switch v-model=\"CmsSettings.content.useTop\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用最新内容 : \">\r\n <el-switch v-model=\"CmsSettings.content.useNew\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用热门推荐 : \">\r\n <el-switch v-model=\"CmsSettings.content.useHotRecommend\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用栏目推荐 : \">\r\n <el-switch v-model=\"CmsSettings.content.usePartRecommend\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用内容标签 : \">\r\n <el-switch v-model=\"CmsSettings.content.useTags\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用内容资源库 : \">\r\n <el-switch v-model=\"CmsSettings.content.useAtlas\" />\r\n </el-form-item>\r\n <el-form-item label=\"内容封面图尺寸 : \">\r\n <el-input v-model=\"CmsSettings.content.coverImageSize\" placeholder=\"\" style=\"max-width: 200px;\" />\r\n </el-form-item>\r\n <el-form-item label=\"内容Banner图尺寸 : \">\r\n <el-input v-model=\"CmsSettings.content.bannerImageSize\" placeholder=\"\" style=\"max-width: 200px;\" />\r\n </el-form-item>\r\n </el-form>\r\n \r\n <el-divider content-position=\"left\">内容文档编辑器扩展设置</el-divider>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\" label-position=\"top\">\r\n <el-form-item label=\"引入的Css : \">\r\n <el-input v-model=\"CmsSettings.content.doc.css\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个css url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n \r\n <el-form-item label=\"引入的Js : \">\r\n <el-input v-model=\"CmsSettings.content.doc.js\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个 js url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n </el-form>\r\n </el-tab-pane>\r\n </el-tabs>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref,onMounted,watch, } from \"vue\";\r\nimport { useCmsSettings,CmsSettingsKEY,type
|
|
1
|
+
{"version":3,"file":"index.vue2.js","sources":["../../../../../../src/modules/cms/pages/cms-settigns/index.vue"],"sourcesContent":["<template>\r\n <div class=\"mk-cms-appsettings__warp\" v-loading=\"loading\" style=\"\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n\">\r\n <el-page-header style=\"background-color: #fff; padding: 10px\" :icon=\"null\">\r\n <template #title>\r\n <h3 style=\"color: var(--el-text-color-regular); margin-left: 10px\">\r\n <MKSvgIcon iconClass=\"Operation\" style=\"margin-right: 5px\" />\r\n CMS应用设置\r\n </h3>\r\n </template>\r\n <template #extra>\r\n <div>\r\n <el-button-group>\r\n <el-button type=\"primary\" size=\"large\" text :disabled=\"!changed\" @click=\"saveHandle\">\r\n <MKSvgIcon iconClass=\"save\" />\r\n 保存\r\n </el-button>\r\n </el-button-group>\r\n </div>\r\n </template>\r\n </el-page-header>\r\n <div class=\"mk-cms-appsettings__form_warp\" style=\"\r\n background: #fff;\r\n flex: 1;\r\n height: 100%;\r\n padding: 10px;\r\n margin: 10px;\r\n overflow: auto;\r\n \">\r\n <el-tabs v-model=\"activeTabName\" class=\"mk-cms-contents__body__right\">\r\n <el-tab-pane label=\"发布设置\" name=\"publish\">\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\">\r\n <el-form-item label=\"发布模式 : \">\r\n <el-radio-group v-model=\"CmsSettings.publish.mode\">\r\n <el-radio value=\"static\">静态发布</el-radio>\r\n <el-radio value=\"dynamic\">动态发布</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n </el-form>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\" label-position=\"top\">\r\n <el-form-item label=\"文档模块 : \">\r\n <DocModuleEditForm :modules=\"CmsSettings.docModules\"></DocModuleEditForm>\r\n </el-form-item>\r\n </el-form>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"栏目设置\" name=\"part\">\r\n <el-divider content-position=\"left\">栏目内容文档编辑器扩展设置</el-divider>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\">\r\n <el-form-item label=\"开启栏目轮播图 : \">\r\n <el-switch v-model=\"CmsSettings.part.openBanner\" />\r\n </el-form-item>\r\n\r\n <el-form-item v-if=\"CmsSettings.part.openBanner\" label=\"轮播图尺寸 : \">\r\n <el-input v-model=\"CmsSettings.part.bannerImageSize\" placeholder=\"\" style=\"max-width: 200px;\" />\r\n </el-form-item>\r\n </el-form>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\" label-position=\"top\">\r\n \r\n <el-form-item label=\"引入的Css : \">\r\n <el-input v-model=\"CmsSettings.part.doc.css\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个css url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n \r\n <el-form-item label=\"引入的Js : \">\r\n <el-input v-model=\"CmsSettings.part.doc.js\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个 js url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n </el-form>\r\n </el-tab-pane>\r\n <el-tab-pane label=\"内容设置\" name=\"content\">\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\">\r\n <el-form-item label=\"启用内容置顶 : \">\r\n <el-switch v-model=\"CmsSettings.content.useTop\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用最新内容 : \">\r\n <el-switch v-model=\"CmsSettings.content.useNew\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用热门推荐 : \">\r\n <el-switch v-model=\"CmsSettings.content.useHotRecommend\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用栏目推荐 : \">\r\n <el-switch v-model=\"CmsSettings.content.usePartRecommend\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用内容标签 : \">\r\n <el-switch v-model=\"CmsSettings.content.useTags\" />\r\n </el-form-item>\r\n <el-form-item label=\"启用内容资源库 : \">\r\n <el-switch v-model=\"CmsSettings.content.useAtlas\" />\r\n </el-form-item>\r\n <el-form-item label=\"内容封面图尺寸 : \">\r\n <el-input v-model=\"CmsSettings.content.coverImageSize\" placeholder=\"\" style=\"max-width: 200px;\" />\r\n </el-form-item>\r\n <el-form-item label=\"内容Banner图尺寸 : \">\r\n <el-input v-model=\"CmsSettings.content.bannerImageSize\" placeholder=\"\" style=\"max-width: 200px;\" />\r\n </el-form-item>\r\n </el-form>\r\n \r\n <el-divider content-position=\"left\">内容文档编辑器扩展设置</el-divider>\r\n <el-form :model=\"CmsSettings\" label-width=\"auto\" label-position=\"top\">\r\n <el-form-item label=\"引入的Css : \">\r\n <el-input v-model=\"CmsSettings.content.doc.css\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个css url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n \r\n <el-form-item label=\"引入的Js : \">\r\n <el-input v-model=\"CmsSettings.content.doc.js\"\r\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\r\n type=\"textarea\"\r\n placeholder=\"多个 js url , 号分割,逗号必须是英文逗号\"\r\n />\r\n </el-form-item>\r\n </el-form>\r\n </el-tab-pane>\r\n </el-tabs>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref,onMounted,watch, } from \"vue\";\r\nimport { useCmsSettings,CmsSettingsKEY,type CmsSettingsType } from \"../../cms-settings\"\r\nimport { MsConfigTable } from \"../../../ms/dataviews/ms-config/\"\r\nimport DocModuleEditForm from \"./DocModuleEditForm.vue\"\r\n\r\n// cms 配置\r\nconst CmsSettings = useCmsSettings(true); \r\n\r\n// 激活的tab\r\nconst activeTabName = ref(\"publish\");\r\n// 激活的tab\r\nconst loading = ref(false);\r\nconst changed = ref(false);\r\n\r\n\r\nconst saveHandle = async ()=>{\r\n\r\n if(changed.value){\r\n loading.value = true;\r\n await MsConfigTable.setConfigValue(CmsSettingsKEY,JSON.stringify(CmsSettings))\r\n loading.value = false;\r\n changed.value = false;\r\n }\r\n\r\n}\r\n\r\nonMounted(async ()=>{\r\n\r\n // 初始化\r\n const data = await MsConfigTable.getConfigValue<CmsSettingsType>(CmsSettingsKEY);\r\n if(data){ Object.assign(CmsSettings,data) }\r\n setTimeout(() => {\r\n loading.value = false;\r\n }, 500);\r\n // 数据改变\r\n watch(CmsSettings,()=>{\r\n changed.value = true;\r\n },{ deep:true })\r\n})\r\n</script>\r\n"],"names":["useCmsSettings","ref","MsConfigTable","CmsSettingsKEY","onMounted","watch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAyIM,UAAA,cAAcA,2BAAe,IAAI;AAGjC,UAAA,gBAAgBC,QAAI,SAAS;AAE7B,UAAA,UAAUA,QAAI,KAAK;AACnB,UAAA,UAAUA,QAAI,KAAK;AAGzB,UAAM,aAAa,YAAU;AAE3B,UAAG,QAAQ,OAAM;AACf,gBAAQ,QAAQ;AAChB,cAAMC,cAAAA,cAAc,eAAeC,YAAA,gBAAe,KAAK,UAAU,WAAW,CAAC;AAC7E,gBAAQ,QAAQ;AAChB,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IAAA;AAIFC,QAAAA,UAAU,YAAU;AAGlB,YAAM,OAAQ,MAAMF,cAAAA,cAAc,eAAgCC,YAAc,cAAA;AAChF,UAAG,MAAK;AAAS,eAAA,OAAO,aAAY,IAAI;AAAA,MAAE;AAC1C,iBAAW,MAAM;AACf,gBAAQ,QAAQ;AAAA,SACf,GAAG;AAENE,UAAA,MAAM,aAAY,MAAI;AACpB,gBAAQ,QAAQ;AAAA,MAAA,GAChB,EAAE,MAAK,KAAA,CAAM;AAAA,IAAA,CAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -5,7 +5,7 @@ const elementPlus = require("element-plus");
|
|
|
5
5
|
const imageSelectPanel = require("./image-select-panel.js");
|
|
6
6
|
require("../../../../components/basic/image-cropper/index.js");
|
|
7
7
|
const imageCropperApi = require("../../../../components/basic/image-cropper/image-cropper-api.js");
|
|
8
|
-
async function ImageSelect(cutWidth, cutHeight) {
|
|
8
|
+
async function ImageSelect(cutWidth, cutHeight, isCut) {
|
|
9
9
|
return new Promise((resolve) => {
|
|
10
10
|
const path = vue.ref("");
|
|
11
11
|
const handleCancelClick = () => {
|
|
@@ -15,7 +15,7 @@ async function ImageSelect(cutWidth, cutHeight) {
|
|
|
15
15
|
path: ""
|
|
16
16
|
});
|
|
17
17
|
};
|
|
18
|
-
const
|
|
18
|
+
const handleCutClick = async () => {
|
|
19
19
|
if (path.value) {
|
|
20
20
|
var result = await imageCropperApi.ImageCropper({
|
|
21
21
|
src: path.value,
|
|
@@ -44,6 +44,13 @@ async function ImageSelect(cutWidth, cutHeight) {
|
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
46
|
};
|
|
47
|
+
const handleConfirmClick = async () => {
|
|
48
|
+
dialogInstance.destroy();
|
|
49
|
+
resolve({
|
|
50
|
+
success: true,
|
|
51
|
+
path: path.value
|
|
52
|
+
});
|
|
53
|
+
};
|
|
47
54
|
const dialogInstance = dm.Dialoger.customRender({
|
|
48
55
|
title: "图片选择",
|
|
49
56
|
class: "mk-material-select",
|
|
@@ -62,6 +69,11 @@ async function ImageSelect(cutWidth, cutHeight) {
|
|
|
62
69
|
"onClick": handleCancelClick
|
|
63
70
|
}, {
|
|
64
71
|
default: () => [vue.createTextVNode("取消")]
|
|
72
|
+
}), vue.createVNode(elementPlus.ElButton, {
|
|
73
|
+
"type": "primary",
|
|
74
|
+
"onClick": handleCutClick
|
|
75
|
+
}, {
|
|
76
|
+
default: () => [vue.createTextVNode("裁切")]
|
|
65
77
|
}), vue.createVNode(elementPlus.ElButton, {
|
|
66
78
|
"type": "primary",
|
|
67
79
|
"onClick": handleConfirmClick
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-select-api.js","sources":["../../../../../../src/modules/ms/components/image-select/image-select-api.tsx"],"sourcesContent":["import { Fragment, ref,h } from \"vue\";\r\nimport { Dialoger } from \"@maketribe/dm\";\r\nimport { ElButton } from \"element-plus\";\r\nimport ImageSelectPanel from \"./image-select-panel\";\r\nimport { ImageCropper } from \"../../../../components/basic/image-cropper\"\r\n\r\nexport type MKImageSelectResult = { success: boolean; path: string; };\r\n\r\nexport default async function ImageSelect(cutWidth?:number,cutHeight?:number): Promise<MKImageSelectResult> {\r\n return new Promise((resolve) => {\r\n
|
|
1
|
+
{"version":3,"file":"image-select-api.js","sources":["../../../../../../src/modules/ms/components/image-select/image-select-api.tsx"],"sourcesContent":["import { Fragment, ref, h } from \"vue\";\r\nimport { Dialoger } from \"@maketribe/dm\";\r\nimport { ElButton } from \"element-plus\";\r\nimport ImageSelectPanel from \"./image-select-panel\";\r\nimport { ImageCropper } from \"../../../../components/basic/image-cropper\"\r\n\r\nexport type MKImageSelectResult = { success: boolean; path: string; };\r\n\r\nexport default async function ImageSelect(cutWidth?: number, cutHeight?: number, isCut?: boolean): Promise<MKImageSelectResult> {\r\n return new Promise((resolve) => {\r\n\r\n const path = ref<any>(\"\");\r\n\r\n const handleCancelClick = () => {\r\n dialogInstance.destroy();\r\n\r\n resolve({ success: false, path: \"\" });\r\n };\r\n\r\n //裁剪\r\n const handleCutClick = async () => {\r\n\r\n\r\n if (path.value) {\r\n\r\n var result = await ImageCropper({\r\n src: path.value,\r\n ratioOptions: cutWidth && cutHeight ? [\r\n { value: `${cutWidth}*${cutHeight}`, label: `${cutWidth}px*${cutHeight}px`, width: cutWidth, height: cutHeight }\r\n ] : [],\r\n maxWidth: cutWidth || 0,\r\n maxHeight: cutHeight || 0\r\n });\r\n\r\n if (result.data) {\r\n path.value = result.data;\r\n dialogInstance.destroy();\r\n resolve({ success: true, path: path.value });\r\n }\r\n else {\r\n // 取消裁切\r\n\r\n }\r\n }\r\n else {\r\n dialogInstance.destroy();\r\n resolve({ success: true, path: path.value });\r\n }\r\n };\r\n\r\n //原图输出\r\n const handleConfirmClick = async () => {\r\n dialogInstance.destroy();\r\n resolve({ success: true, path: path.value });\r\n };\r\n\r\n\r\n const dialogInstance = Dialoger.customRender({\r\n title: \"图片选择\",\r\n class: \"mk-material-select\",\r\n width: \"70%\",\r\n onClose: () => {\r\n dialogInstance.destroy();\r\n },\r\n body: () => {\r\n return <ImageSelectPanel v-model={path.value} />\r\n },\r\n footer: () => {\r\n return (\r\n <Fragment>\r\n <ElButton onClick={handleCancelClick}>取消</ElButton>\r\n <ElButton type=\"primary\" onClick={handleCutClick}>\r\n 裁切\r\n </ElButton>\r\n <ElButton type=\"primary\" onClick={handleConfirmClick}>\r\n 确定\r\n </ElButton>\r\n </Fragment>\r\n );\r\n },\r\n });\r\n });\r\n}\r\n"],"names":["ImageSelect","cutWidth","cutHeight","isCut","Promise","resolve","path","ref","handleCancelClick","dialogInstance","destroy","success","handleCutClick","value","result","ImageCropper","src","ratioOptions","label","width","height","maxWidth","maxHeight","data","handleConfirmClick","Dialoger","customRender","title","class","onClose","body","_createVNode","ImageSelectPanel","$event","footer","_Fragment","ElButton","default","_createTextVNode"],"mappings":";;;;;;;AAQe,eAAeA,YAAYC,UAAmBC,WAAoBC,OAA+C;AAC9H,SAAO,IAAIC,QAASC,aAAY;AAE9B,UAAMC,OAAOC,QAAS,EAAE;AAExB,UAAMC,oBAAoBA,MAAM;AAC9BC,qBAAeC,QAAO;AAEtBL,cAAQ;AAAA,QAAEM,SAAS;AAAA,QAAOL,MAAM;AAAA,MAAG,CAAC;AAAA;AAItC,UAAMM,iBAAiB,YAAY;AAGjC,UAAIN,KAAKO,OAAO;AAEd,YAAIC,SAAS,MAAMC,6BAAa;AAAA,UAC9BC,KAAKV,KAAKO;AAAAA,UACVI,cAAchB,YAAYC,YAAY,CACpC;AAAA,YAAEW,OAAO,GAAGZ,QAAQ,IAAIC,SAAS;AAAA,YAAIgB,OAAO,GAAGjB,QAAQ,MAAMC,SAAS;AAAA,YAAMiB,OAAOlB;AAAAA,YAAUmB,QAAQlB;AAAAA,UAAW,CAAA,IAC9G,CAAE;AAAA,UACNmB,UAAUpB,YAAY;AAAA,UACtBqB,WAAWpB,aAAa;AAAA,QAC1B,CAAC;AAED,YAAIY,OAAOS,MAAM;AACfjB,eAAKO,QAAQC,OAAOS;AACpBd,yBAAeC,QAAO;AACtBL,kBAAQ;AAAA,YAAEM,SAAS;AAAA,YAAML,MAAMA,KAAKO;AAAAA,UAAM,CAAC;AAAA,QAG3C;AAAA,MAGJ,OACK;AACHJ,uBAAeC,QAAO;AACtBL,gBAAQ;AAAA,UAAEM,SAAS;AAAA,UAAML,MAAMA,KAAKO;AAAAA,QAAM,CAAC;AAAA,MAC7C;AAAA;AAIF,UAAMW,qBAAqB,YAAY;AACrCf,qBAAeC,QAAO;AACtBL,cAAQ;AAAA,QAAEM,SAAS;AAAA,QAAML,MAAMA,KAAKO;AAAAA,MAAM,CAAC;AAAA;AAI7C,UAAMJ,iBAAiBgB,GAAQ,SAACC,aAAa;AAAA,MAC3CC,OAAO;AAAA,MACPC,OAAO;AAAA,MACPT,OAAO;AAAA,MACPU,SAASA,MAAM;AACbpB,uBAAeC,QAAO;AAAA,MACvB;AAAA,MACDoB,MAAMA,MAAM;AACV,eAAAC,IAAAA,YAAAC,kBAAA;AAAA,UAAA,cAAkC1B,KAAKO;AAAAA,UAAK,uBAAAoB,YAAV3B,KAAKO,QAAKoB;AAAAA,QAAA,GAAA,IAAA;AAAA,MAC7C;AAAA,MACDC,QAAQA,MAAM;AACZ,eAAAH,IAAA,YAAAI,IAAA,UAAAJ,MAAAA,CAAAA,IAAAA,YAAAK,YAAAA,UAAA;AAAA,UAAA,WAEuB5B;AAAAA,QAAiB,GAAA;AAAA,UAAA6B,SAAAA,MAAA,CAAAC,oBAAA,IAAA,CAAA;AAAA,SAAAP,GAAAA,IAAA,YAAAK,sBAAA;AAAA,UAAA,QAAA;AAAA,UAAA,WACFxB;AAAAA,QAAc,GAAA;AAAA,UAAAyB,SAAAA,MAAA,CAAAC,oBAAA,IAAA,CAAA;AAAA,SAAAP,GAAAA,IAAA,YAAAK,sBAAA;AAAA,UAAA,QAAA;AAAA,UAAA,WAGdZ;AAAAA,QAAkB,GAAA;AAAA,UAAAa,SAAAA,MAAA,CAAAC,oBAAA,IAAA,CAAA;AAAA,QAAA,CAAA,CAAA,CAAA;AAAA,MAK1D;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/modules/ms/image-upload-context/index.ts"],"sourcesContent":["import { MKImageSelect } from \"../components/image-select\";\r\nimport { UploadContext, UploadResult } from \"../../../components/basic/upload-file\";\r\nimport { base64ToBlob,md5 } from \"@maketribe/utils\";\r\nimport {
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/modules/ms/image-upload-context/index.ts"],"sourcesContent":["import { MKImageSelect } from \"../components/image-select\";\r\nimport { UploadContext, UploadResult } from \"../../../components/basic/upload-file\";\r\nimport { base64ToBlob, md5 } from \"@maketribe/utils\";\r\nimport { WebFileUpload } from \"@maketribe/request\";\r\n\r\n\r\n/**\r\n * 图片上传上下文\r\n */\r\nexport class ImageUploadContext extends UploadContext {\r\n cutSise?: string;\r\n\r\n /**\r\n * \r\n * @param cutSise 裁切尺寸 \r\n */\r\n constructor(cutSise?: string) {\r\n super();\r\n this.cutSise = cutSise;\r\n }\r\n\r\n async selectFile(isCut?: boolean): Promise<UploadResult> {\r\n\r\n let cutWidth = 0;\r\n let cutHeight = 0;\r\n\r\n if (this.cutSise) {\r\n let cutInfo = this.cutSise.split(\"*\");\r\n cutWidth = parseInt(cutInfo[0]) || 0;\r\n cutHeight = parseInt(cutInfo[1]) || cutWidth;\r\n }\r\n\r\n \r\n const result = await MKImageSelect(cutWidth, cutHeight, isCut);\r\n\r\n let path: any = result.path;\r\n\r\n // base 64 则上传\r\n if (path && path.indexOf(\"data:image/\") == 0) {\r\n\r\n const webFileUpload = new WebFileUpload();\r\n // 开始上传\r\n const blob = base64ToBlob(path);\r\n\r\n // 上传\r\n const uploadResult = await webFileUpload.upload(\r\n new File([blob], `${md5(Math.random().toString())}.${blob.type.toString().replace(\"image/\", \"\") || \"png\"}`, { type: blob.type })\r\n );\r\n\r\n if (uploadResult.data.code !== 200) {\r\n\r\n return {\r\n success: false, path: \"\", msg: uploadResult.data.msg,\r\n };\r\n }\r\n else {\r\n path = uploadResult.data.data.path;\r\n }\r\n }\r\n\r\n return { success: true, path: path, msg: \"\", };\r\n }\r\n}\r\n"],"names":["UploadContext","MKImageSelect","WebFileUpload","base64ToBlob","md5"],"mappings":";;;;;;;;;;;;;;;;AASO,MAAM,2BAA2BA,cAAAA,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA,EAOpD,YAAY,SAAkB;AACtB;AAPR;AAQE,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,MAAM,WAAW,OAAwC;AAEvD,QAAI,WAAW;AACf,QAAI,YAAY;AAEhB,QAAI,KAAK,SAAS;AAChB,UAAI,UAAU,KAAK,QAAQ,MAAM,GAAG;AACpC,iBAAW,SAAS,QAAQ,CAAC,CAAC,KAAK;AACnC,kBAAY,SAAS,QAAQ,CAAC,CAAC,KAAK;AAAA,IACtC;AAGA,UAAM,SAAS,MAAMC,MAAAA,cAAc,UAAU,SAAgB;AAE7D,QAAI,OAAY,OAAO;AAGvB,QAAI,QAAQ,KAAK,QAAQ,aAAa,KAAK,GAAG;AAEtC,YAAA,gBAAgB,IAAIC,QAAAA;AAEpB,YAAA,OAAOC,mBAAa,IAAI;AAGxB,YAAA,eAAe,MAAM,cAAc;AAAA,QACvC,IAAI,KAAK,CAAC,IAAI,GAAG,GAAGC,MAAAA,IAAI,KAAK,OAAO,EAAE,SAAU,CAAA,CAAC,IAAI,KAAK,KAAK,SAAS,EAAE,QAAQ,UAAU,EAAE,KAAK,KAAK,IAAI,EAAE,MAAM,KAAK,KAAA,CAAM;AAAA,MAAA;AAG7H,UAAA,aAAa,KAAK,SAAS,KAAK;AAE3B,eAAA;AAAA,UACL,SAAS;AAAA,UAAO,MAAM;AAAA,UAAI,KAAK,aAAa,KAAK;AAAA,QAAA;AAAA,MACnD,OAEG;AACI,eAAA,aAAa,KAAK,KAAK;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,EAAE,SAAS,MAAM,MAAY,KAAK,GAAI;AAAA,EAC/C;AACF;;"}
|