新增短视频列表和短视频tabs
parent
48662fb4e7
commit
c29da34d19
70
package.json
70
package.json
|
|
@ -12,47 +12,47 @@
|
||||||
"format": "prettier --write src/"
|
"format": "prettier --write src/"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/dompurify": "^3.0.5",
|
"@types/dompurify": "3.0.5",
|
||||||
"@types/qrcode": "^1.5.5",
|
"@types/qrcode": "1.5.5",
|
||||||
"@vueuse/core": "^10.2.1",
|
"@vueuse/core": "10.2.1",
|
||||||
"@wangeditor/editor": "^5.1.23",
|
"@wangeditor/editor": "5.1.23",
|
||||||
"@wangeditor/editor-for-vue": "^5.1.12",
|
"@wangeditor/editor-for-vue": "5.1.12",
|
||||||
"axios": "^1.4.0",
|
"axios": "1.4.0",
|
||||||
"dompurify": "^3.1.6",
|
"dompurify": "3.1.6",
|
||||||
"element-plus": "2.8.1",
|
"element-plus": "2.8.1",
|
||||||
"pinia": "^2.1.3",
|
"pinia": "2.1.3",
|
||||||
"qrcode": "^1.5.4",
|
"qrcode": "1.5.4",
|
||||||
"swiper": "^11.1.5",
|
"swiper": "11.1.5",
|
||||||
"terser": "^5.31.5",
|
"terser": "5.31.5",
|
||||||
"tsparticles": "^2.11.0",
|
"tsparticles": "2.11.0",
|
||||||
"unocss": "^0.53.5",
|
"unocss": "0.53.5",
|
||||||
"vue": "^3.3.4",
|
"vue": "3.3.4",
|
||||||
"vue-draggable-plus": "^0.5.0",
|
"vue-draggable-plus": "0.5.0",
|
||||||
"vue-router": "^4.0.13",
|
"vue-router": "4.0.13",
|
||||||
"vue3-draggable-resizable": "^1.6.5"
|
"vue3-draggable-resizable": "1.6.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@iconify-json/ep": "^1.1.11",
|
"@iconify-json/ep": "1.1.11",
|
||||||
"@rushstack/eslint-patch": "^1.2.0",
|
"@rushstack/eslint-patch": "1.2.0",
|
||||||
"@tsconfig/node18": "^2.0.1",
|
"@tsconfig/node18": "2.0.1",
|
||||||
"@types/sortablejs": "^1.15.8",
|
"@types/sortablejs": "1.15.8",
|
||||||
"@vitejs/plugin-vue": "^4.2.3",
|
"@vitejs/plugin-vue": "4.2.3",
|
||||||
"@vue/eslint-config-prettier": "^7.1.0",
|
"@vue/eslint-config-prettier": "7.1.0",
|
||||||
"@vue/eslint-config-typescript": "^11.0.3",
|
"@vue/eslint-config-typescript": "11.0.3",
|
||||||
"@vue/tsconfig": "^0.4.0",
|
"@vue/tsconfig": "0.4.0",
|
||||||
"eslint": "^8.39.0",
|
"eslint": "8.39.0",
|
||||||
"eslint-plugin-vue": "^9.11.0",
|
"eslint-plugin-vue": "9.11.0",
|
||||||
"fast-glob": "3.2.11",
|
"fast-glob": "3.2.11",
|
||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "4.1.5",
|
||||||
"prettier": "^3.0.0",
|
"prettier": "3.0.0",
|
||||||
"sass": "1.63.6",
|
"sass": "1.63.6",
|
||||||
"typescript": "~5.0.4",
|
"typescript": "~5.0.4",
|
||||||
"unplugin-auto-import": "^0.16.6",
|
"unplugin-auto-import": "0.16.6",
|
||||||
"unplugin-icons": "^0.16.3",
|
"unplugin-icons": "0.16.3",
|
||||||
"unplugin-vue-components": "^0.25.1",
|
"unplugin-vue-components": "0.25.1",
|
||||||
"vite": "^4.3.9",
|
"vite": "4.3.9",
|
||||||
"vite-plugin-svg-icons": "2.0.1",
|
"vite-plugin-svg-icons": "2.0.1",
|
||||||
"vue-tsc": "^1.6.5",
|
"vue-tsc": "1.6.5",
|
||||||
"vue3-particles": "^2.10.1"
|
"vue3-particles": "2.10.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -40,12 +40,15 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
<!-- 文章 博客-->
|
<!-- 文章 博客-->
|
||||||
<template v-else-if="['blog', 'article'].includes(type)">
|
<template v-else-if="['blog', 'article', 'plugins_video'].includes(type)">
|
||||||
<el-form-item :label="`${ type === 'article' ? '文章' : '博客' }分类`">
|
<el-form-item :label="`${ type === 'article' ? '文章' : type === 'plugins_video' ? '视频' : '博客' }分类`">
|
||||||
<el-select v-model="form.category_ids" multiple collapse-tags filterable :placeholder="`请选择${ type === 'article' ? '文章' : '博客' }分类`">
|
<el-select v-model="form.category_ids" multiple collapse-tags filterable :placeholder="`请选择${ type === 'article' ? '文章' : type === 'plugins_video' ? '视频' : '博客' }分类`">
|
||||||
<template v-if="type === 'article'">
|
<template v-if="type === 'article'">
|
||||||
<el-option v-for="item in common_store.common.article_category" :key="item.id" :label="item.name" :value="item.id" />
|
<el-option v-for="item in common_store.common.article_category" :key="item.id" :label="item.name" :value="item.id" />
|
||||||
</template>
|
</template>
|
||||||
|
<template v-else-if="type === 'plugins_video'">
|
||||||
|
<el-option v-for="item in get_data_list(common_store.common.plugins, 'video.category_list')" :key="item.id" :label="item.name" :value="item.id" />
|
||||||
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<el-option v-for="item in get_data_list(common_store.common.plugins, 'blog.category_list')" :key="item.id" :label="item.name" :value="item.id" />
|
<el-option v-for="item in get_data_list(common_store.common.plugins, 'blog.category_list')" :key="item.id" :label="item.name" :value="item.id" />
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -59,20 +62,39 @@
|
||||||
<template v-if="type === 'article'">
|
<template v-if="type === 'article'">
|
||||||
<el-radio v-for="item in common_store.common.article_order_by_type_list" :key="item.index" :value="item.index">{{ item.name }}</el-radio>
|
<el-radio v-for="item in common_store.common.article_order_by_type_list" :key="item.index" :value="item.index">{{ item.name }}</el-radio>
|
||||||
</template>
|
</template>
|
||||||
|
<template v-else-if="type === 'plugins_video'">
|
||||||
|
<el-radio v-for="item in get_data_list(common_store.common.plugins, 'video.search_order_by_list')" :key="item.index" :value="item.index">{{ item.name }}</el-radio>
|
||||||
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<el-radio v-for="item in get_data_list(common_store.common.plugins, 'blog.order_by_type_list')" :key="item.index" :value="item.index">{{ item.name }}</el-radio>
|
<el-radio v-for="item in get_data_list(common_store.common.plugins, 'blog.order_by_type_list')" :key="item.index" :value="item.index">{{ item.name }}</el-radio>
|
||||||
</template>
|
</template>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<template v-if="['blog', 'blog-tabs', 'article'].includes(type)">
|
||||||
<el-form-item label="排序规则">
|
<el-form-item label="排序规则">
|
||||||
<el-radio-group v-model="form.order_by_rule">
|
<el-radio-group v-model="form.order_by_rule">
|
||||||
<el-radio v-for="item in common_store.common.data_order_by_rule_list" :key="item.index" :value="item.index">{{ item.name }}</el-radio>
|
<el-radio v-for="item in common_store.common.data_order_by_rule_list" :key="item.index" :value="item.index">{{ item.name }}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
<el-form-item label="发布时间">
|
||||||
|
<el-radio-group v-model="form.order_by_release_time_rule">
|
||||||
|
<el-radio v-for="item in get_data_list(common_store.common.plugins, 'video.search_release_time_list')" :key="item.index" :value="item.index">{{ item.name }}</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="视频时长">
|
||||||
|
<el-radio-group v-model="form.order_by_duration_rule">
|
||||||
|
<el-radio v-for="item in get_data_list(common_store.common.plugins, 'video.search_duration_list')" :key="item.index" :value="item.index">{{ item.name }}</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
<template v-if="['blog', 'blog-tabs', 'article'].includes(type)">
|
||||||
<el-form-item label="封面图片">
|
<el-form-item label="封面图片">
|
||||||
<el-switch v-model="form.is_cover" active-value="1" inactive-value="0" />
|
<el-switch v-model="form.is_cover" active-value="1" inactive-value="0" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<template v-if="['blog', 'blog-tabs'].includes(type)">
|
</template>
|
||||||
|
<template v-if="['blog', 'blog-tabs', 'plugins_video'].includes(type)">
|
||||||
<el-form-item label="是否推荐">
|
<el-form-item label="是否推荐">
|
||||||
<el-switch v-model="form.is_recommended" active-value="1" inactive-value="0" />
|
<el-switch v-model="form.is_recommended" active-value="1" inactive-value="0" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
@ -278,7 +300,7 @@
|
||||||
default: () => {},
|
default: () => {},
|
||||||
},
|
},
|
||||||
type: {
|
type: {
|
||||||
type: String as PropType<'goods' | 'blog' | 'article' | 'binding' | 'realstore' | 'merchant' | 'ask' | 'activity' | 'coupon'>,
|
type: String as PropType<'goods' | 'blog' | 'article' | 'binding' | 'realstore' | 'merchant' | 'ask' | 'activity' | 'coupon' | 'plugins_video'>,
|
||||||
default: 'goods',
|
default: 'goods',
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -344,6 +366,11 @@
|
||||||
imgParam: 'logo',
|
imgParam: 'logo',
|
||||||
titleParam: 'title',
|
titleParam: 'title',
|
||||||
},
|
},
|
||||||
|
plugins_video: {
|
||||||
|
optionListKey: 'brand_data_type_list',
|
||||||
|
imgParam: '',
|
||||||
|
titleParam: 'title',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
type config_type = {
|
type config_type = {
|
||||||
optionListKey: string,
|
optionListKey: string,
|
||||||
|
|
@ -362,8 +389,14 @@
|
||||||
keywords.value = props.value.keywords;
|
keywords.value = props.value.keywords;
|
||||||
form.value = props.value;
|
form.value = props.value;
|
||||||
// 历史数据转成数字类型
|
// 历史数据转成数字类型
|
||||||
|
if (props.type !== 'plugins_video') {
|
||||||
form.value.order_by_type = Number(props.value?.order_by_type || 0);
|
form.value.order_by_type = Number(props.value?.order_by_type || 0);
|
||||||
form.value.order_by_rule = Number(props.value?.order_by_rule || 0);
|
form.value.order_by_rule = Number(props.value?.order_by_rule || 0);
|
||||||
|
} else {
|
||||||
|
form.value.order_by_type = props.value?.order_by_type || 'default';
|
||||||
|
form.value.order_by_release_time_rule = props.value?.order_by_release_time_rule || 'default';
|
||||||
|
form.value.order_by_duration_rule = props.value?.order_by_duration_rule || 'default';
|
||||||
|
}
|
||||||
drag_list.value = props.list;
|
drag_list.value = props.list;
|
||||||
});
|
});
|
||||||
const keyword_blur = () => {
|
const keyword_blur = () => {
|
||||||
|
|
|
||||||
|
|
@ -150,6 +150,14 @@
|
||||||
<template v-else-if="item.key == 'activity'">
|
<template v-else-if="item.key == 'activity'">
|
||||||
<model-activity :key="item.com_data" :value="item.com_data"></model-activity>
|
<model-activity :key="item.com_data" :value="item.com_data"></model-activity>
|
||||||
</template>
|
</template>
|
||||||
|
<!-- 视频列表 -->
|
||||||
|
<template v-else-if="item.key == 'plugins-video'">
|
||||||
|
<model-plugins-video-list :key="item.com_data" :value="item.com_data"></model-plugins-video-list>
|
||||||
|
</template>
|
||||||
|
<!-- 视频选项卡 -->
|
||||||
|
<template v-else-if="item.key == 'plugins-video-tabs'">
|
||||||
|
<model-plugins-video-tabs :key="item.com_data" :value="item.com_data"></model-plugins-video-tabs>
|
||||||
|
</template>
|
||||||
<!-- 工具组件 -->
|
<!-- 工具组件 -->
|
||||||
<!-- 辅助线 -->
|
<!-- 辅助线 -->
|
||||||
<template v-else-if="item.key == 'row-line'">
|
<template v-else-if="item.key == 'row-line'">
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
.siderbar {
|
.siderbar {
|
||||||
width: 34rem;
|
width: 34rem;
|
||||||
padding: 0.5rem 3rem;
|
padding: 0.5rem 1rem;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
.el-collapse {
|
.el-collapse {
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,9 @@ import defaultAskTabs from '@/config/const/ask-tabs';
|
||||||
import defaultActivity from '@/config/const/activity';
|
import defaultActivity from '@/config/const/activity';
|
||||||
import defaultGoodsMagic from '@/config/const/goods-magic';
|
import defaultGoodsMagic from '@/config/const/goods-magic';
|
||||||
import defaultTabsMagic from '@/config/const/tabs-magic';
|
import defaultTabsMagic from '@/config/const/tabs-magic';
|
||||||
|
import defaultPluginsVideo from '@/config/const/plugins-video-list';
|
||||||
|
import defaultPluginsVideoTabs from '@/config/const/plugins-video-tabs';
|
||||||
|
|
||||||
|
|
||||||
// 系统设置
|
// 系统设置
|
||||||
interface DefaultSettings {
|
interface DefaultSettings {
|
||||||
|
|
@ -46,6 +49,8 @@ interface DefaultSettings {
|
||||||
article_tabs: object;
|
article_tabs: object;
|
||||||
blog: object;
|
blog: object;
|
||||||
blog_tabs: object;
|
blog_tabs: object;
|
||||||
|
plugins_video: object;
|
||||||
|
plugins_video_tabs: object;
|
||||||
row_line: object;
|
row_line: object;
|
||||||
auxiliary_blank: object;
|
auxiliary_blank: object;
|
||||||
rich_text: object;
|
rich_text: object;
|
||||||
|
|
@ -86,6 +91,8 @@ const defaultSettings: DefaultSettings = {
|
||||||
article_tabs: defaultArticleTabs,
|
article_tabs: defaultArticleTabs,
|
||||||
blog: defaultBlogList,
|
blog: defaultBlogList,
|
||||||
blog_tabs: defaultBlogTabs,
|
blog_tabs: defaultBlogTabs,
|
||||||
|
plugins_video: defaultPluginsVideo,
|
||||||
|
plugins_video_tabs: defaultPluginsVideoTabs,
|
||||||
row_line: defaultRowLine,
|
row_line: defaultRowLine,
|
||||||
auxiliary_blank: defaultAuxiliaryBlank,
|
auxiliary_blank: defaultAuxiliaryBlank,
|
||||||
rich_text: defaultRichText,
|
rich_text: defaultRichText,
|
||||||
|
|
|
||||||
|
|
@ -134,6 +134,14 @@
|
||||||
<template v-else-if="value.key == 'ask-tabs'">
|
<template v-else-if="value.key == 'ask-tabs'">
|
||||||
<model-ask-tabs-setting :type="radio" :value="value.com_data"></model-ask-tabs-setting>
|
<model-ask-tabs-setting :type="radio" :value="value.com_data"></model-ask-tabs-setting>
|
||||||
</template>
|
</template>
|
||||||
|
<!-- 短视频 -->
|
||||||
|
<template v-else-if="value.key == 'plugins-video'">
|
||||||
|
<model-plugins-video-list-setting :type="radio" :value="value.com_data"></model-plugins-video-list-setting>
|
||||||
|
</template>
|
||||||
|
<!-- 短视频选项卡 -->
|
||||||
|
<template v-else-if="value.key == 'plugins-video-tabs'">
|
||||||
|
<model-plugins-video-tabs-setting :type="radio" :value="value.com_data"></model-plugins-video-tabs-setting>
|
||||||
|
</template>
|
||||||
<!-- 活动配置 -->
|
<!-- 活动配置 -->
|
||||||
<template v-else-if="value.key == 'activity'">
|
<template v-else-if="value.key == 'activity'">
|
||||||
<model-activity-setting :type="radio" :value="value.com_data"></model-activity-setting>
|
<model-activity-setting :type="radio" :value="value.com_data"></model-activity-setting>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue