+
+
diff --git a/manager/src/views/sys/setting-manage/setting/VERIFICATION_SETTING.vue b/manager/src/views/sys/setting-manage/setting/VERIFICATION_SETTING.vue
new file mode 100644
index 000000000..8fed1c939
--- /dev/null
+++ b/manager/src/views/sys/setting-manage/setting/VERIFICATION_SETTING.vue
@@ -0,0 +1,128 @@
+
+
+
+
+
+ 包含滑块生成及校验结果缓存的有效时间(秒)
+
+
+
+
+ 滑块背景图水印文本
+
+
+
+
+ 滑块干扰块数量,最大为 2
+
+
+
+
+ 滑块比对横坐标容错像素范围
+
+
+
+
+ 开启后登录流程跳过滑块校验,仅建议本地或测试验收环境开启
+
+
+
+ 保存
+
+
+
+
+
+
+
+
diff --git a/manager/src/views/sys/setting-manage/settingManage.vue b/manager/src/views/sys/setting-manage/settingManage.vue
index e01c12359..c878b0163 100644
--- a/manager/src/views/sys/setting-manage/settingManage.vue
+++ b/manager/src/views/sys/setting-manage/settingManage.vue
@@ -75,6 +75,14 @@ const setting = ref([
type: "LIVE_SETTING",
name: "直播设置",
},
+ {
+ type: "VERIFICATION_SETTING",
+ name: "验证码设置",
+ },
+ {
+ type: "SECURITY_SETTING",
+ name: "安全设置",
+ },
]);
const authLogin = ref([
// 登录设置
diff --git a/manager/src/views/sys/setting-manage/template.js b/manager/src/views/sys/setting-manage/template.js
index 6312741e7..b71a3db98 100644
--- a/manager/src/views/sys/setting-manage/template.js
+++ b/manager/src/views/sys/setting-manage/template.js
@@ -9,6 +9,8 @@ import SMS_SETTING from "./setting/SMS_SETTING";
import IM_SETTING from "./setting/IM_SETTING";
import LIVE_SETTING from "./setting/LIVE_SETTING";
import WITHDRAWAL_SETTING from "./setting/WITHDRAWAL_SETTING";
+import VERIFICATION_SETTING from "./setting/VERIFICATION_SETTING";
+import SECURITY_SETTING from "./setting/SECURITY_SETTING";
import ALIPAY_PAYMENT from "./pay/ALIPAY_PAYMENT";
import WECHAT_PAYMENT from "./pay/WECHAT_PAYMENT";
import PAYMENT_SUPPORT from "./pay/PAYMENT_SUPPORT";
@@ -27,6 +29,8 @@ export default {
IM_SETTING: markRaw(IM_SETTING),
LIVE_SETTING: markRaw(LIVE_SETTING),
WITHDRAWAL_SETTING: markRaw(WITHDRAWAL_SETTING),
+ VERIFICATION_SETTING: markRaw(VERIFICATION_SETTING),
+ SECURITY_SETTING: markRaw(SECURITY_SETTING),
PAYMENT_SUPPORT: markRaw(PAYMENT_SUPPORT),
WECHAT_PAYMENT: markRaw(WECHAT_PAYMENT),
ALIPAY_PAYMENT: markRaw(ALIPAY_PAYMENT),
diff --git a/seller/src/views/shop/wap/config-panel/PanelAdCube.vue b/seller/src/views/shop/wap/config-panel/PanelAdCube.vue
new file mode 100644
index 000000000..5b62babb7
--- /dev/null
+++ b/seller/src/views/shop/wap/config-panel/PanelAdCube.vue
@@ -0,0 +1,350 @@
+
+
+
+
+
+
+
图片设置
+
当前风格:{{ res.name }},请按布局区域配置对应图片
+
+
+ 图片 {{ index + 1 }}
+ 建议尺寸 {{ item.size }}
+
+
+
+
+
尺寸 {{ item.size || "不限" }}
+
+
+ 选择照片
+ 选择链接
+
+
+ 已选链接:{{ linkText(item.url) }}
+
+
+
+
+
+
+
+
风格选择
+
切换风格将重置当前已配置的图片内容
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/config-panel/PanelBlank.vue b/seller/src/views/shop/wap/config-panel/PanelBlank.vue
new file mode 100644
index 000000000..1a8b519c7
--- /dev/null
+++ b/seller/src/views/shop/wap/config-panel/PanelBlank.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/config-panel/PanelCarousel.vue b/seller/src/views/shop/wap/config-panel/PanelCarousel.vue
new file mode 100644
index 000000000..06d5d6aa2
--- /dev/null
+++ b/seller/src/views/shop/wap/config-panel/PanelCarousel.vue
@@ -0,0 +1,461 @@
+
+
+
+
+
+
+
图片设置
+
+
+
图片 {{ index + 1 }}
+
+
+
+
+
+
+
+
+
+
+
750*350
+
+
+ 选择照片
+ 选择链接
+
+
+ 已选链接:{{ linkText(item.url) }}
+
+
未设置链接
+
+
+
+
添加图片
+
+
+
+
+
+
轮播风格
+
+
+ 卡片风格下,两侧会露出前后图片的一部分
+
+
+
+
+
指示器设置
+
+
+
+
色调
+
+
+ 跟随主题风格
+ 自定义
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/config-panel/PanelCoupon.vue b/seller/src/views/shop/wap/config-panel/PanelCoupon.vue
new file mode 100644
index 000000000..cc1e620f0
--- /dev/null
+++ b/seller/src/views/shop/wap/config-panel/PanelCoupon.vue
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/config-panel/PanelFlexOne.vue b/seller/src/views/shop/wap/config-panel/PanelFlexOne.vue
new file mode 100644
index 000000000..a2e752a17
--- /dev/null
+++ b/seller/src/views/shop/wap/config-panel/PanelFlexOne.vue
@@ -0,0 +1,268 @@
+
+
+
+
+
+
+
内容设置
+
+
+
+
尺寸不限
+
+ 选择照片
+ 绘制热区
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/config-panel/PanelGoods.vue b/seller/src/views/shop/wap/config-panel/PanelGoods.vue
new file mode 100644
index 000000000..f8f3fbc8a
--- /dev/null
+++ b/seller/src/views/shop/wap/config-panel/PanelGoods.vue
@@ -0,0 +1,619 @@
+
+
+
+
+
+
+
商品列表
+
+ 该楼层为旧版商品列表(分类标签 + 绑定商品),当前仍按旧版展示。
+ 升级后可使用展现形式、购物车按钮、商品筛选等新版功能,旧的分类与商品绑定将被清空。
+
+
升级为新版
+
+
+
+
+
+
+
显示内容
+
+
展示信息
+
+ 商品名称
+ 商品价格
+ 已售数量
+
+
+
+
+
+
购物车按钮
+
+
+
+
按钮效果
+
+
+
+ 进入商品详情页
+
+
+ 商品加购
+
+
+
+
+
+
+
+
商品设置
+
+
选择方式
+
+
+ 店铺分类
+ 指定商品
+ 商品品牌
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 最多选择 50 个商品,展示顺序与选择顺序一致
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/config-panel/PanelLine.vue b/seller/src/views/shop/wap/config-panel/PanelLine.vue
new file mode 100644
index 000000000..80781e630
--- /dev/null
+++ b/seller/src/views/shop/wap/config-panel/PanelLine.vue
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/config-panel/PanelNotice.vue b/seller/src/views/shop/wap/config-panel/PanelNotice.vue
new file mode 100644
index 000000000..80eb53aae
--- /dev/null
+++ b/seller/src/views/shop/wap/config-panel/PanelNotice.vue
@@ -0,0 +1,427 @@
+
+
+
+
+
+
+
图标设置
+
支持上传 1 张图片,建议宽度 130*36px
+
+
+
+
+
图标
+
上传图标
+
+
+
+
+
公告设置
+
最多可添加 10 个版块
+
+
+
版块 {{ index + 1 }}
+
+
+
+
+
+
+
+
+
链接
+
{{ linkText(notice.url) }}
+
选择链接
+
+
+
+ 添加模块
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/config-panel/PanelPageSetting.vue b/seller/src/views/shop/wap/config-panel/PanelPageSetting.vue
new file mode 100644
index 000000000..5f3169092
--- /dev/null
+++ b/seller/src/views/shop/wap/config-panel/PanelPageSetting.vue
@@ -0,0 +1,213 @@
+
+
+
+
+
+
+
+
+
+
+
颜色设置
+
+
+
+
+
背景图片
+
+
+
+
+
+
上传图片
+
+
+ 上传图片 建议:宽度750px
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/config-panel/PanelRichText.vue b/seller/src/views/shop/wap/config-panel/PanelRichText.vue
new file mode 100644
index 000000000..f07886f5a
--- /dev/null
+++ b/seller/src/views/shop/wap/config-panel/PanelRichText.vue
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/config-panel/PanelSearch.vue b/seller/src/views/shop/wap/config-panel/PanelSearch.vue
new file mode 100644
index 000000000..32a061d6d
--- /dev/null
+++ b/seller/src/views/shop/wap/config-panel/PanelSearch.vue
@@ -0,0 +1,280 @@
+
+
+
+
+
+
+
+
+
搜索热词
+
+
+
+
+
+ + 添加热词
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/config-panel/PanelTitle.vue b/seller/src/views/shop/wap/config-panel/PanelTitle.vue
new file mode 100644
index 000000000..082762b41
--- /dev/null
+++ b/seller/src/views/shop/wap/config-panel/PanelTitle.vue
@@ -0,0 +1,297 @@
+
+
+
+
+
+
+
文本标题
+
+
+
+
右侧按钮
+
+
+ 显示
+ 隐藏
+
+
+
+
+
+
+
链接
+
+
+ {{ linkText(item.moreUrl) }}
+
+ 选择链接
+
+
+
+
+
+
+
选择风格
+
+
风格
+
+
+ 背景图片
+ 背景色
+
+
+
+
+
+
上传背景图
+
+
+
+
+
上传背景图
+
+
+
建议 910px*86px
+
+
+
+
+
+
文字设置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/config-panel/PanelVideo.vue b/seller/src/views/shop/wap/config-panel/PanelVideo.vue
new file mode 100644
index 000000000..d76b553c4
--- /dev/null
+++ b/seller/src/views/shop/wap/config-panel/PanelVideo.vue
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+
视频内容设置
+
+
上传视频
+
+
+ {{ item.videoUrl ? "已选择视频" : "未选择视频" }}
+
+
+ {{ item.videoUrl ? "重新选择" : "上传视频" }}
+
+
+
+
+
视频封面
+
+
+
+
+
封面
+
+ {{ item.poster ? "重新选择" : "上传封面" }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/config-panel/index.js b/seller/src/views/shop/wap/config-panel/index.js
new file mode 100644
index 000000000..5354d161b
--- /dev/null
+++ b/seller/src/views/shop/wap/config-panel/index.js
@@ -0,0 +1,43 @@
+// 店铺端组件配置面板映射:type → 面板组件
+// 面板契约:props res(整个楼层条目),直接修改 res.options.*,保存链路自动感知
+import PanelBlank from "./PanelBlank.vue";
+import PanelLine from "./PanelLine.vue";
+import PanelRichText from "./PanelRichText.vue";
+import PanelCoupon from "./PanelCoupon.vue";
+import PanelFlexOne from "./PanelFlexOne.vue";
+import PanelCarousel from "./PanelCarousel.vue";
+import PanelAdCube from "./PanelAdCube.vue";
+import PanelSearch from "./PanelSearch.vue";
+import PanelNotice from "./PanelNotice.vue";
+import PanelVideo from "./PanelVideo.vue";
+import PanelTitle from "./PanelTitle.vue";
+import PanelGoods from "./PanelGoods.vue";
+
+// 图片魔方及其全部可选风格共用 PanelAdCube
+const adCubeTypes = [
+ "tpl_ad_list",
+ "leftOneRightTwo",
+ "leftTwoRightOne",
+ "flexThree",
+ "flexTwo",
+ "topOneBottomTwo",
+ "topTwoBottomOne",
+ "flexFive",
+ "flexFour",
+ "textPicture",
+];
+
+export default {
+ blank: PanelBlank,
+ line: PanelLine,
+ richText: PanelRichText,
+ coupon: PanelCoupon,
+ flexOne: PanelFlexOne,
+ carousel: PanelCarousel,
+ search: PanelSearch,
+ notice: PanelNotice,
+ video: PanelVideo,
+ title: PanelTitle,
+ goods: PanelGoods,
+ ...Object.fromEntries(adCubeTypes.map((t) => [t, PanelAdCube])),
+};
diff --git a/seller/src/views/shop/wap/config.js b/seller/src/views/shop/wap/config.js
index 740d946f2..23f50cc77 100644
--- a/seller/src/views/shop/wap/config.js
+++ b/seller/src/views/shop/wap/config.js
@@ -1,3 +1,12 @@
+/**
+ * 店铺端楼层装修组件清单配置
+ * drawer: true 广告右侧打开抽屉中显示
+ * notAdd: true 没有添加按钮
+ * notLink: true 没有链接功能
+ * notImg: true 没有选择图片功能
+ * close: true 右侧关闭按钮
+ * group: 'base' | 'marketing' | 'tools' 组件面板分组(无 group 的条目不在面板显示,仅供抽屉使用)
+ */
import * as API_Other from "@/api/other";
// 获取楼层装修信息
@@ -9,581 +18,637 @@ export function initData(id) {
export let homeData = {};
-/**
- * drawer:true 广告右侧打开抽屉中显示
- * ad_drawer:true 活动魔方右侧显示
- * notAdd: true 没有添加按钮
- * notLink: true 没有连接功能
- * notImg: true 没有选择图片功能
- * close:true 右侧关闭按钮
- */
-
export const modelData = [
{
- type: "flexOne",
- name: "图片",
- notAdd: true,
- onlyImg: true,
- img: "md-image",
- options: {
- list: [
+ "type": "flexOne",
+ "name": "热区",
+ "icon": "Picture",
+ "group": "base",
+ "notAdd": true,
+ "onlyImg": true,
+ "img": "md-image",
+ "options": {
+ "list": [
{
- img: "https://i.loli.net/2020/12/05/8wSNWbnqujDh6HL.png",
- url: "",
- link: "",
- size: "750*280",
- model: "link"
+ "img": "https://i.loli.net/2020/12/05/8wSNWbnqujDh6HL.png",
+ "url": "",
+ "link": "",
+ "size": "750*280",
+ "model": "hotzone"
}
]
}
},
{
- type: "carousel",
- name: "图片轮播",
- img: "md-image",
- notTitle: false,
- close: true,
- options: {
- list: [
+ "type": "carousel",
+ "name": "轮播图",
+ "icon": "PictureFilled",
+ "group": "base",
+ "img": "md-image",
+ "notTitle": false,
+ "close": true,
+ "options": {
+ "list": [
{
- img: "https://i.loli.net/2020/12/05/fKH4CwImpbuD5Xj.png",
- url: "",
- link: "",
- size: "750*350"
+ "img": "https://i.loli.net/2020/12/05/fKH4CwImpbuD5Xj.png",
+ "url": "",
+ "link": "",
+ "size": "750*350",
+ "model": "link"
},
{
- img: "https://i.loli.net/2020/12/05/12kleCgrSLfKoQs.png",
- url: "",
- link: "",
- size: "750*350"
+ "img": "https://i.loli.net/2020/12/05/12kleCgrSLfKoQs.png",
+ "url": "",
+ "link": "",
+ "size": "750*350",
+ "model": "link"
},
{
- img: "https://i.loli.net/2021/05/14/ZlzcCdnpejtN9gL.png",
- url: "",
- link: "",
- size: "750*350"
+ "img": "https://i.loli.net/2021/05/14/ZlzcCdnpejtN9gL.png",
+ "url": "",
+ "link": "",
+ "size": "750*350",
+ "model": "link"
}
]
}
},
{
- type: "leftOneRightTwo",
- name: "左一右二",
- notAdd: true,
- drawer: true,
- view: "tpl_ad_list",
- img: "md-image",
- options: {
- list: [
+ "type": "leftOneRightTwo",
+ "name": "左一右二",
+ "notAdd": true,
+ "drawer": true,
+ "view": "tpl_ad_list",
+ "img": "md-image",
+ "options": {
+ "list": [
{
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- size: "335*335"
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "size": "335*335",
+ "model": "link"
},
{
- img: "https://i.loli.net/2021/05/14/kdB3AE9ay4c1SnN.png",
- url: "",
- link: "",
- size: "335*177"
+ "img": "https://i.loli.net/2021/05/14/kdB3AE9ay4c1SnN.png",
+ "url": "",
+ "link": "",
+ "size": "335*177",
+ "model": "link"
},
{
- img: "https://i.loli.net/2021/05/14/FmDr9ksiXeEqYLU.png",
- url: "",
- link: "",
- size: "335*177"
+ "img": "https://i.loli.net/2021/05/14/FmDr9ksiXeEqYLU.png",
+ "url": "",
+ "link": "",
+ "size": "335*177",
+ "model": "link"
}
]
}
},
{
- type: "title",
- name: "标题栏",
- img: "md-image",
- notAdd: true,
- notLink: true,
- notImg: true,
- options: {
- list: [
+ "type": "title",
+ "name": "标题栏",
+ "icon": "Collection",
+ "group": "tools",
+ "img": "md-image",
+ "notAdd": true,
+ "notImg": true,
+ "options": {
+ "list": [
{
- title: "标题",
- color: "#000000"
+ "title": "标题",
+ "color": "#282828",
+ "title1": "副标题",
+ "color1": "#999999",
+ "bk_color": "#FFFFFF",
+ "textAlign": "left",
+ "link": "",
+ "url": "",
+ "model": "link"
}
]
}
},
{
- type: "leftTwoRightOne",
- name: "左二右一",
- notAdd: true,
- drawer: true,
-
- img: "md-image",
- options: {
- list: [
+ "type": "leftTwoRightOne",
+ "name": "左二右一",
+ "notAdd": true,
+ "drawer": true,
+ "img": "md-image",
+ "options": {
+ "list": [
{
- img: "https://i.loli.net/2021/05/14/kdB3AE9ay4c1SnN.png",
- url: "",
- link: "",
- size: "335*177"
+ "img": "https://i.loli.net/2021/05/14/kdB3AE9ay4c1SnN.png",
+ "url": "",
+ "link": "",
+ "size": "335*177",
+ "model": "link"
},
{
- img: "https://i.loli.net/2021/05/14/FmDr9ksiXeEqYLU.png",
- url: "",
- link: "",
- size: "335*177"
+ "img": "https://i.loli.net/2021/05/14/FmDr9ksiXeEqYLU.png",
+ "url": "",
+ "link": "",
+ "size": "335*177",
+ "model": "link"
},
{
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- size: "335*335"
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "size": "335*335",
+ "model": "link"
}
]
}
},
{
- type: "flexThree",
- name: "三列单行",
- drawer: true,
- notAdd: true,
-
- img: "md-image",
- options: {
- list: [
+ "type": "flexThree",
+ "name": "三列单行",
+ "drawer": true,
+ "notAdd": true,
+ "img": "md-image",
+ "options": {
+ "list": [
{
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- size: "226*226 (1:1)"
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "size": "226*226 (1:1)",
+ "model": "link"
},
{
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- size: "226*226 (1:1)"
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "size": "226*226 (1:1)",
+ "model": "link"
},
{
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- size: "226*226 (1:1)"
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "size": "226*226 (1:1)",
+ "model": "link"
}
]
}
},
{
- type: "flexOne",
- name: "一张大图",
- drawer: true,
- notAdd: true,
-
- img: "md-image",
- options: {
- list: [
+ "type": "flexTwo",
+ "name": "两张横图",
+ "drawer": true,
+ "notAdd": true,
+ "img": "md-image",
+ "options": {
+ "list": [
{
- img: "https://i.loli.net/2020/12/05/8wSNWbnqujDh6HL.png",
- url: "",
- link: "",
- size: "750*280"
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "size": "335*220",
+ "model": "link"
+ },
+ {
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "size": "335*220",
+ "model": "link"
}
]
}
},
{
- type: "flexTwo",
- name: "两张横图",
- drawer: true,
- notAdd: true,
-
- img: "md-image",
- options: {
- list: [
+ "type": "topOneBottomTwo",
+ "name": "上一下二",
+ "drawer": true,
+ "notAdd": true,
+ "img": "md-image",
+ "options": {
+ "list": [
{
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- size: "335*220"
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "size": "710*170",
+ "model": "link"
},
{
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- size: "335*220"
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "size": "335*170",
+ "model": "link"
+ },
+ {
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "size": "335*170",
+ "model": "link"
}
]
}
},
{
- type: "topOneBottomTwo",
- name: "上一下二",
- drawer: true,
- notAdd: true,
-
- img: "md-image",
- options: {
- list: [
+ "type": "topTwoBottomOne",
+ "name": "上二下一",
+ "drawer": true,
+ "notAdd": true,
+ "img": "md-image",
+ "options": {
+ "list": [
{
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- size: "710*170"
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "size": "335*170",
+ "model": "link"
},
{
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- size: "335*170"
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "size": "335*170",
+ "model": "link"
},
{
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- size: "335*170"
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "size": "710*170",
+ "model": "link"
}
]
}
},
{
- type: "topTwoBottomOne",
- name: "上二下一",
- drawer: true,
- notAdd: true,
-
- img: "md-image",
- options: {
- list: [
+ "type": "flexFive",
+ "name": "五列单行",
+ "drawer": true,
+ "notAdd": true,
+ "img": "md-image",
+ "options": {
+ "list": [
{
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
-
- size: "335*170"
+ "img": "https://picsum.photos/id/127/200/200",
+ "url": "",
+ "link": "",
+ "size": "75*75(1:1)",
+ "model": "link"
},
{
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- size: "335*170"
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "size": "75*75(1:1)",
+ "model": "link"
},
{
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- size: "710*170"
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "size": "75*75(1:1)",
+ "model": "link"
+ },
+ {
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "size": "75*75(1:1)",
+ "model": "link"
+ },
+ {
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "size": "75*75(1:1)",
+ "model": "link"
}
]
}
},
{
- type: "flexFive",
- name: "五列单行",
- drawer: true,
- notAdd: true,
-
- img: "md-image",
- options: {
- list: [
+ "type": "flexFour",
+ "name": "四列单行",
+ "drawer": true,
+ "notAdd": true,
+ "img": "md-image",
+ "options": {
+ "list": [
{
- img: "https://picsum.photos/id/127/200/200",
- url: "",
- link: "",
- size: "75*75(1:1)"
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "size": "88*88(1:1)",
+ "model": "link"
},
{
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- size: "75*75(1:1)"
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "size": "88*88(1:1)",
+ "model": "link"
},
{
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- size: "75*75(1:1)"
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "size": "88*88(1:1)",
+ "model": "link"
},
{
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- size: "75*75(1:1)"
- },
- {
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- size: "75*75(1:1)"
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "size": "88*88(1:1)",
+ "model": "link"
}
]
}
},
{
- type: "flexFour",
- name: "四列单行",
- drawer: true,
- notAdd: true,
-
- img: "md-image",
- options: {
- list: [
+ "type": "textPicture",
+ "name": "文字图片",
+ "icon": "Document",
+ "group": "base",
+ "drawer": true,
+ "notAdd": true,
+ "img": "md-image",
+ "options": {
+ "list": [
{
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- size: "88*88(1:1)"
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "title": "文字",
+ "size": "88*88(1:1)",
+ "model": "link"
},
{
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- size: "88*88(1:1)"
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "title": "文字",
+ "size": "88*88(1:1)",
+ "model": "link"
},
{
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- size: "88*88(1:1)"
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "title": "文字",
+ "size": "88*88(1:1)",
+ "model": "link"
},
{
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- size: "88*88(1:1)"
+ "img": "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
+ "url": "",
+ "link": "",
+ "title": "文字",
+ "size": "88*88(1:1)",
+ "model": "link"
}
]
}
},
{
- type: "textPicture",
- name: "文字图片",
- drawer: true,
- notAdd: true,
-
- img: "md-image",
- options: {
- list: [
+ "type": "tpl_ad_list",
+ "name": "图片魔方",
+ "icon": "Grid",
+ "group": "base",
+ "img": "md-image",
+ "options": {
+ "list": [
{
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- title: "文字",
- size: "88*88(1:1)"
- },
- {
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- title: "文字",
- size: "88*88(1:1)"
- },
- {
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- title: "文字",
- size: "88*88(1:1)"
- },
- {
- img: "https://i.loli.net/2021/05/14/dtNvI5UxchXn8gz.png",
- url: "",
- link: "",
- title: "文字",
- size: "88*88(1:1)"
- }
- ]
- }
- },
-
- {
- type: "tpl_ad_list",
- name: "广告魔方",
- img: "md-image",
- options: {
- list: [
- {
- bg_img: "",
- name: "",
- url: ""
+ "bg_img": "",
+ "name": "",
+ "url": ""
}
]
}
},
{
- type: "menu",
- name: "宫格导航",
- img: "md-image",
- close: true,
- options: {
- list: [
+ "type": "search",
+ "name": "搜索",
+ "icon": "Search",
+ "group": "base",
+ "img": "md-image",
+ "notAdd": true,
+ "notLink": true,
+ "notImg": true,
+ "options": {
+ "list": [
{
- img: "https://i.loli.net/2020/12/05/SoGAv7gYybuWzED.png",
- url: "",
- link: "",
- title: "标题",
- size: "88*88 (1:1)"
- },
- {
- img: "https://i.loli.net/2020/12/05/JXR5K3sbIeENjqH.png",
- url: "",
- link: "",
- title: "标题",
- size: "88*88 (1:1)"
- },
- {
- img: "https://i.loli.net/2020/12/05/KlZfnCFIdEV231Y.png",
- url: "",
- link: "",
- title: "标题",
- size: "88*88 (1:1)"
- },
- {
- img: "https://i.loli.net/2020/12/05/GfmMyN2wrUVIlci.png",
- url: "",
- link: "",
- title: "标题",
- size: "88*88 (1:1)"
- },
- {
- img: "https://i.loli.net/2020/12/05/eznDa3iNby5FkYL.png",
- url: "",
- link: "",
- title: "标题",
- size: "88*88 (1:1)"
+ "title": "搜索"
}
]
}
},
- // {
- // type: "search",
- // name: "搜索",
- // img: "md-image",
- // notAdd: true,
- // notLink: true,
- // notImg: true,
- // options: {
- // list: [
- // {
- // title: "搜索"
- // }
- // ]
- // }
- // },
{
- type: "goods",
- name: "商品分类",
- img: "md-image",
- notAdd: true,
- notLink: true,
- notImg: true,
- options: {
- list: [
+ "type": "notice",
+ "name": "公告",
+ "icon": "Bell",
+ "group": "base",
+ "img": "md-image",
+ "notAdd": false,
+ "notLink": true,
+ "notImg": true,
+ "options": {
+ "list": [
{
- /**
- * 2021/12/9
- * 新增索引(‘index’)判断商品归属分类
- * 之前代码没有配置index也不会收到印象
- * 新建的楼层将采用索引判断分类
- */
- titleWay: [
+ "title": [
{
- title: "精选",
- desc: "电子推荐",
- ___index:0,
- },
- {
- title: "实惠",
- desc: "便宜好货",
- ___index:1,
- },
- {
- title: "进口",
- desc: "国际自营",
- ___index:2,
- },
- {
- title: "推荐",
- desc: "喂奶推荐",
- ___index:3,
+ "context": "这是一条公告"
}
],
- listWay: [
+ "color": "#666",
+ "bk_color": "#FFF",
+ "direction": "horizontal",
+ "img": "http://files.sxcfx.cn/upload/20220318/71e5d27aca82aeedf647052e1e4ceaaa.png"
+ }
+ ]
+ }
+ },
+ {
+ "type": "video",
+ "name": "视频",
+ "icon": "VideoCamera",
+ "group": "base",
+ "img": "md-image",
+ "notAdd": true,
+ "notImg": true,
+ "notLink": true,
+ "notTitle": true,
+ "options": {
+ "list": [
+ {
+ "videoUrl": "",
+ "poster": "",
+ "autoplay": false,
+ "aspectRatio": "16:9",
+ "style": {
+ "bgType": "color",
+ "bgColorStart": "#F5F5F5",
+ "bgColorEnd": "#F5F5F5",
+ "bgGradientDir": "horizontal",
+ "bgRadius": 0,
+ "bottomBgColor": "#F5F5F5",
+ "bgImage": "",
+ "margin": 0,
+ "padding": 0,
+ "borderShow": false,
+ "borderStyle": "solid",
+ "borderWidth": 1,
+ "borderColor": "#e5e5e5",
+ "shadowShow": false,
+ "shadowColor": "rgba(0,0,0,0.1)",
+ "shadowX": 0,
+ "shadowY": 0,
+ "shadowBlur": 10,
+ "shadowSpread": 0
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "blank",
+ "name": "辅助空白",
+ "icon": "Crop",
+ "group": "tools",
+ "img": "md-image",
+ "options": {
+ "bgColor": "#f5f5f5",
+ "height": 10,
+ "paddingX": 0,
+ "pageGap": 0
+ }
+ },
+ {
+ "type": "line",
+ "name": "辅助线",
+ "icon": "Minus",
+ "group": "tools",
+ "img": "md-image",
+ "options": {
+ "bgColor": "#FFFFFF",
+ "lineColor": "#979797",
+ "lineStyle": "dashed",
+ "lineHeight": 1,
+ "paddingX": 0,
+ "pageGap": 0
+ }
+ },
+ {
+ "type": "richText",
+ "name": "富文本",
+ "icon": "EditPen",
+ "group": "tools",
+ "img": "md-image",
+ "options": {
+ "content": "",
+ "bgColor": "#FFFFFF",
+ "paddingX": 12,
+ "pageGap": 0,
+ "borderRadius": 0
+ }
+ },
+ {
+ "type": "coupon",
+ "name": "优惠券",
+ "icon": "Ticket",
+ "group": "marketing",
+ "img": "md-image",
+ "options": {
+ "layoutStyle": "1",
+ "list": [
+ {
+ "title": "优惠券",
+ "count": 5,
+ "data": [
{
- img: "https://i.loli.net/2021/05/14/KTLSrOVJmEdX12A.png",
- price: "120",
- title:
- " 微软 (Microsoft) Xbox 无线控制器/手柄 湛蓝色 | 3.5mm耳机接口蓝牙连接 Xbox主机电脑平板通用",
- type: "精选",
- ___index:0
+ "id": 1,
+ "couponType": "PRICE",
+ "price": 70,
+ "consumeThreshold": 500,
+ "storeName": "platform"
},
{
- img: "https://i.loli.net/2020/12/05/c9mptI5Pg8qJ6ny.png",
- title:
- "宏碁(acer) DP高清线1.2版 2K*4KDisplayPort公对公接线笔记本电脑显卡连接显示器视频线1.5米",
- price: "190",
- type: "精选",
- ___index:0
+ "id": 2,
+ "couponType": "PRICE",
+ "price": 50,
+ "consumeThreshold": 300,
+ "storeName": "platform"
},
-
+ {
+ "id": 3,
+ "couponType": "PRICE",
+ "price": 30,
+ "consumeThreshold": 200,
+ "storeName": "platform"
+ },
+ {
+ "id": 4,
+ "couponType": "PRICE",
+ "price": 20,
+ "consumeThreshold": 100,
+ "storeName": "platform"
+ },
+ {
+ "id": 5,
+ "couponType": "PRICE",
+ "price": 10,
+ "consumeThreshold": 0,
+ "storeName": "platform"
+ }
]
}
]
}
+ },
+ {
+ "type": "goods",
+ "name": "商品列表",
+ "icon": "Goods",
+ "group": "marketing",
+ "img": "md-image",
+ "notAdd": true,
+ "notLink": true,
+ "notImg": true,
+ "options": {
+ "list": [
+ {
+ "layout": "list",
+ "showName": true,
+ "showPrice": true,
+ "showSales": true,
+ "cartShow": true,
+ "cartStyle": "plus",
+ "cartAction": "detail",
+ "dataMode": "category",
+ "categoryId": "",
+ "brandId": "",
+ "storeId": "",
+ "goodsList": [],
+ "count": 6,
+ "sortType": "default"
+ }
+ ],
+ "bgColor1": "#FFFFFF",
+ "bgColor2": "#FFFFFF",
+ "titleColor": "#282828",
+ "toneMode": "theme",
+ "priceColor": "#FF5C58",
+ "salesColor": "#666666",
+ "paddingTop": 10,
+ "paddingBottom": 10,
+ "paddingX": 12,
+ "contentGap": 10,
+ "pageGap": 0,
+ "borderRadius": 0,
+ "contentRadius": 7
+ }
}
- // TODO 第一版本隐藏暂无此功能
- // {
- // notAdd: true,
- // notImg: true,
- // type: "joinGroup",
- // name: "拼团活动",
- // img: "md-image",
- // options: {
- // list: [
- // {
- // title: "测试拼团"
- // }
- // ]
- // }
- // },
- // {
- // notAdd: true,
- // notImg: true,
- // type: "integral",
- // name: "积分活动",
- // img: "md-image",
- // options: {
- // list: [
- // {
- // title: "测试积分"
- // }
- // ]
- // }
- // },
- // {
- // notAdd: true,
- // notImg: true,
- // type: "spike",
- // name: "秒杀活动",
- // img: "md-image",
- // options: {
- // list: [
- // {
- // title: "测试秒杀"
- // }
- // ]
- // }
- // },
- // {
- // notAdd: true,
- // notImg: true,
- // type: "group",
- // name: "团购活动",
- // img: "md-image",
- // options: {
- // list: [
- // {
- // title: "测试团购"
- // }
- // ]
- // }
- // }
];
diff --git a/seller/src/views/shop/wap/controls/ColorField.vue b/seller/src/views/shop/wap/controls/ColorField.vue
new file mode 100644
index 000000000..3b6bcd8a9
--- /dev/null
+++ b/seller/src/views/shop/wap/controls/ColorField.vue
@@ -0,0 +1,42 @@
+
+
+
{{ label }}
+
+
+
+ 重置
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/controls/GradientField.vue b/seller/src/views/shop/wap/controls/GradientField.vue
new file mode 100644
index 000000000..618788752
--- /dev/null
+++ b/seller/src/views/shop/wap/controls/GradientField.vue
@@ -0,0 +1,75 @@
+
+
+
{{ label }}
+
+
+
+
+ 重置
+
+
+
+
+ 重置
+
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/controls/SegmentField.vue b/seller/src/views/shop/wap/controls/SegmentField.vue
new file mode 100644
index 000000000..b9e526563
--- /dev/null
+++ b/seller/src/views/shop/wap/controls/SegmentField.vue
@@ -0,0 +1,42 @@
+
+
+
{{ label }}
+
+
+ {{ opt.label }}
+
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/controls/SliderField.vue b/seller/src/views/shop/wap/controls/SliderField.vue
new file mode 100644
index 000000000..21f429a99
--- /dev/null
+++ b/seller/src/views/shop/wap/controls/SliderField.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/controls/field-common.scss b/seller/src/views/shop/wap/controls/field-common.scss
new file mode 100644
index 000000000..c9b5dead0
--- /dev/null
+++ b/seller/src/views/shop/wap/controls/field-common.scss
@@ -0,0 +1,28 @@
+.ctrl-row {
+ display: flex;
+ align-items: flex-start;
+ margin-bottom: 16px;
+ gap: 12px;
+}
+
+.ctrl-label {
+ width: 90px;
+ flex-shrink: 0;
+ line-height: 32px;
+ color: #606266;
+ font-size: 14px;
+ white-space: nowrap;
+}
+
+.ctrl-body {
+ flex: 1;
+ min-width: 0;
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ flex-wrap: wrap;
+}
+
+.ctrl-color-input {
+ width: 110px;
+}
diff --git a/seller/src/views/shop/wap/controls/panel-common.scss b/seller/src/views/shop/wap/controls/panel-common.scss
new file mode 100644
index 000000000..fff458153
--- /dev/null
+++ b/seller/src/views/shop/wap/controls/panel-common.scss
@@ -0,0 +1,179 @@
+// 新配置面板共用的骨架样式(灰底 + 白色卡片 + 头部 tabs)
+// 使用方式:面板根类名需与 .panel-root 一起用,或在面板 scoped 样式里 @import 后把根类加上
+.panel-search,
+.panel-promotion,
+.panel-coupon,
+.panel-title,
+.panel-shop,
+.panel-goods,
+.panel-notice,
+.panel-video,
+.panel-article,
+.panel-page-setting {
+ background: #f5f7fa;
+ margin: 0 -20px;
+ padding: 0 12px 12px;
+ min-height: 100%;
+ box-sizing: border-box;
+}
+.panel-header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ height: 50px;
+ margin-bottom: 12px;
+ padding: 0 14px;
+ background: #ffffff;
+ border-radius: 8px;
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
+ box-sizing: border-box;
+ .panel-name {
+ font-size: 16px;
+ font-weight: bold;
+ color: #303133;
+ }
+}
+.panel-tabs {
+ display: inline-flex;
+ background: #f4f4f5;
+ border-radius: 8px;
+ padding: 3px;
+ .panel-tab {
+ padding: 5px 14px;
+ font-size: 13px;
+ border-radius: 6px;
+ cursor: pointer;
+ color: #606266;
+ transition: all 0.2s ease;
+ &.active {
+ background: #ffffff;
+ color: #409eff;
+ font-weight: 600;
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.12);
+ }
+ }
+}
+.panel-card {
+ background: #ffffff;
+ border-radius: 8px;
+ padding: 14px;
+ margin-bottom: 12px;
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
+}
+.panel-card-fill {
+ flex: 1;
+ margin-bottom: 0;
+}
+// 面板根容器改为纵向 flex,让最后一张卡片可撑满到底
+.panel-flex-one,
+.panel-carousel,
+.panel-ad-cube,
+.panel-menu,
+.panel-search,
+.panel-notice,
+.panel-video,
+.panel-title,
+.panel-integral,
+.panel-coupon,
+.panel-article,
+.panel-shop,
+.panel-goods,
+.panel-blank,
+.panel-line,
+.panel-rich-text,
+.panel-promotion,
+.panel-page-setting {
+ display: flex;
+ flex-direction: column;
+}
+.section-title {
+ font-size: 14px;
+ font-weight: 600;
+ color: #303133;
+ margin: 0 0 12px;
+}
+.section-tip {
+ font-size: 13px;
+ color: #909399;
+ margin-bottom: 10px;
+}
+.setting-row {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin: 14px 0;
+ .setting-label {
+ font-size: 14px;
+ color: #606266;
+ .setting-value {
+ margin-left: 8px;
+ color: #303133;
+ }
+ }
+}
+.seg {
+ display: inline-flex;
+ border: 1px solid #dcdfe6;
+ border-radius: 6px;
+ overflow: hidden;
+ .seg-item {
+ padding: 6px 14px;
+ font-size: 13px;
+ color: #606266;
+ cursor: pointer;
+ border-left: 1px solid #dcdfe6;
+ transition: all 0.2s ease;
+ &:first-child {
+ border-left: none;
+ }
+ &.active {
+ background: #ecf5ff;
+ color: #409eff;
+ font-weight: 600;
+ }
+ }
+}
+// 选项平铺选择器:一行两个,超出换行
+.layout-seg {
+ display: flex;
+ flex-wrap: wrap;
+ width: 100%;
+ .seg-item {
+ flex: 1 0 40%;
+ padding: 6px 0;
+ text-align: center;
+ white-space: nowrap;
+ box-sizing: border-box;
+ &:nth-child(3) {
+ border-left: none;
+ }
+ &:nth-child(n + 3) {
+ border-top: 1px solid #dcdfe6;
+ }
+ }
+ &.layout-seg-3 {
+ flex-wrap: nowrap;
+ .seg-item {
+ flex: 1 1 0;
+ &:nth-child(3) {
+ border-left: 1px solid #dcdfe6;
+ }
+ &:nth-child(n + 3) {
+ border-top: none;
+ }
+ }
+ }
+}
+// 选项平铺选择器(独立用法):一行三个
+.layout-seg-3 {
+ display: flex;
+ flex-wrap: nowrap;
+ width: 100%;
+ .seg-item {
+ flex: 1 1 0;
+ padding: 6px 0;
+ text-align: center;
+ white-space: nowrap;
+ box-sizing: border-box;
+ }
+}
diff --git a/seller/src/views/shop/wap/decorate.scss b/seller/src/views/shop/wap/decorate.scss
index b9368017a..bc7389a04 100644
--- a/seller/src/views/shop/wap/decorate.scss
+++ b/seller/src/views/shop/wap/decorate.scss
@@ -1,13 +1,13 @@
-
:deep(.el-overlay) {
z-index: 2000;
}
-.decorate-view-link{
- font-size: 12px;
- margin: 0 4px;
- flex: 1;
- min-width: 0;
- color: #999;
+
+.decorate-view-link {
+ font-size: 12px;
+ margin: 0 4px;
+ flex: 1;
+ min-width: 0;
+ color: #999;
}
.decorate-view-btn {
flex-shrink: 0;
@@ -22,111 +22,179 @@
margin: 0;
}
}
+
.decorate-view-style {
- border: 1px solid #ededed;
- background: #f7f7fa;
- text-align: center;
- width: 100%;
- padding: 30px 0 0 0;
- margin-bottom: 20px;
- cursor: pointer;
- > .select-style {
- background: #ededed;
- padding: 15px 0;
- font-size: 15px;
- }
- }
- .decorate-border {
- border: 1px solid #ededed;
- margin: 10px 0;
- padding: 0 10px;
- }
- .drawer {
- width: 100%;
- display: flex;
- flex-wrap: wrap;
- gap: 14px;
- > .drawer-item {
- cursor: pointer;
- border: 1px solid #ededed;
- background: #f9f0ff;
- width: calc(50% - 7px);
- box-sizing: border-box;
- color: #9254de;
- border-radius: 0.8em;
- height: 60px;
- display: flex;
- align-items: center;
- flex-direction: column;
- justify-content: center;
- }
- }
- .hidden-input {
- display: none;
- }
- .decorate {
- padding: 0 20px;
- height: calc(100vh - 120px);
- overflow-y: auto;
- padding-bottom: 120px;
- }
- .decorate-title {
- height: 50px;
- line-height: 50px;
- font-weight: bold;
- }
- .decorate-list {
- overflow: hidden;
- }
- .decorate-view {
- display: flex;
- margin: 20px 0;
- align-items: center;
- }
- .decorate-item-box {
- background: #fff;
- padding: 10px;
- border: 1px solid #ededed;
- }
- .decorate-item-title {
- height: 40px;
- display: flex;
- align-items: center;
- justify-content: space-between;
- line-height: 40px;
- padding: 0 10px;
- }
- .decorate-view-title {
- margin-right: 10px;
- }
- .decorate-item {
+ border: 1px solid #ededed;
+ background: #f7f7fa;
+ text-align: center;
+ width: 100%;
+ padding: 30px 0 0 0;
+ margin-bottom: 20px;
+ cursor: pointer;
+
+ >.select-style {
background: #ededed;
- border-top-left-radius: 0.4em;
- margin-bottom: 20px;
- border-top-right-radius: 0.4em;
+ padding: 15px 0;
+ font-size: 15px;
}
- .show-image {
- max-width: 50px;
- }
- .tips {
- font-size: 12px;
- color: #999;
- > span {
- color: $theme_color;
- }
- }
- .selectBtn {
- margin-left: 10px;
- }
- .bing-goods-list {
+}
+
+.decorate-border {
+ border: 1px solid #ededed;
+ margin: 10px 0;
+ padding: 0 10px;
+}
+
+.drawer {
+ width: 100%;
+ display: flex;
+ flex-wrap: wrap;
+ gap: 14px;
+
+ >.drawer-item {
+ cursor: pointer;
+ border: 1px solid #ededed;
+ background: #f9f0ff;
+ width: calc(50% - 7px);
+ box-sizing: border-box;
+ color: #9254de;
+ border-radius: 0.8em;
+ height: 60px;
display: flex;
- > .bing-goods-item {
- width: 50px;
- height: 50px;
- > img {
- width: 100%;
- height: 100%;
- display: block;
- }
+ align-items: center;
+ flex-direction: column;
+ justify-content: center;
+ }
+}
+
+.hidden-input {
+ display: none;
+}
+
+.decorate {
+ padding: 0 20px;
+ height: calc(100vh - 96px);
+ overflow-y: auto;
+ background: #f5f7fa;
+}
+
+.decorate-title {
+ height: 50px;
+ line-height: 50px;
+ font-weight: bold;
+}
+
+.decorate-list {
+ overflow: hidden;
+}
+
+.decorate-view {
+ display: flex;
+ margin: 12px 0;
+ align-items: center;
+}
+
+.decorate-item-box {
+ background: #fff;
+ padding: 10px;
+ border: 1px solid #ededed;
+}
+
+.decorate-item-title {
+ height: 40px;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ line-height: 40px;
+ padding: 0 10px;
+}
+
+.decorate-view-title {
+ margin-right: 10px;
+
+}
+
+.decorate-item {
+ background: #ededed;
+ border-top-left-radius: 0.4em;
+ margin-bottom: 20px;
+ border-top-right-radius: 0.4em;
+}
+
+.show-image {
+ max-width: 50px;
+}
+
+.tips {
+ font-size: 12px;
+ color: #999;
+
+ >span {
+ color: $theme_color;
+ }
+}
+
+.selectBtn {
+ margin-left: 10px;
+}
+
+.bing-goods-list {
+ display: flex;
+
+ >.bing-goods-item {
+ width: 50px;
+ height: 50px;
+
+ >img {
+ width: 100%;
+ height: 100%;
+ display: block;
}
}
+}
+
+.align-text {
+ width: 30px;
+ height: 30px;
+ display: block;
+}
+
+.card-box {
+ display: flex;
+}
+
+.decorate-notice {
+ margin-top: 10px;
+}
+
+.card {}
+
+.card:hover {
+ background: #ededed;
+}
+
+.active {
+ background: #ededed;
+}
+.title-item{
+ border-bottom: 1px solid #ededed;
+ padding:10px 10px 10px 0;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ cursor: pointer;
+ >.title-btn{
+ display: flex;
+ }
+}
+.title-goodsName{
+ /* 适用于webkit内核和移动端 */
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 2;
+ overflow: hidden;
+
+}
+.title-tooltip{
+ white-space: normal;
+}
diff --git a/seller/src/views/shop/wap/decorate.vue b/seller/src/views/shop/wap/decorate.vue
index 4e3380c21..50b91f682 100644
--- a/seller/src/views/shop/wap/decorate.vue
+++ b/seller/src/views/shop/wap/decorate.vue
@@ -1,6 +1,6 @@
-
+
{{ res.name }}
选择促销活动
+
+
+
+
+
-
+
+ handleClickFile(item, index, field)"
+ />
+
-
-
选择模式
-
-
-
- 链接
- 热区
-
-
-
-
-
选择链接
+
{{ item.model === "hotzone" ? "热区" : "选择链接" }}
@@ -520,26 +524,36 @@
-
+
+
diff --git a/seller/src/views/shop/wap/navbar.vue b/seller/src/views/shop/wap/navbar.vue
index 0d036e145..fb69cadca 100644
--- a/seller/src/views/shop/wap/navbar.vue
+++ b/seller/src/views/shop/wap/navbar.vue
@@ -1,7 +1,26 @@
-
店铺装修
+
+
返回
+
+
+ 当前页面:{{ pageName }}
+
+
+
+
+
{{ item.title }}
-
-
清空本地缓存
-
保存模板
+
保存页面
模板名称
-
+
是否立即发布
@@ -46,7 +58,7 @@
将当前装修内容写入到本地缓存中,下次进入页面时可继续使用
- 写入
+ 写入
保存
@@ -57,12 +69,13 @@
diff --git a/seller/src/views/shop/wap/template/tpl_banner.vue b/seller/src/views/shop/wap/template/tpl_banner.vue
index 0d04f7bbc..207e5ec07 100644
--- a/seller/src/views/shop/wap/template/tpl_banner.vue
+++ b/seller/src/views/shop/wap/template/tpl_banner.vue
@@ -1,17 +1,151 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
\ No newline at end of file
+.banner-box {
+ position: relative;
+ overflow: hidden;
+}
+.slide-wrap {
+ height: 100%;
+ padding: 0 3px;
+ box-sizing: border-box;
+}
+.image-mode {
+ width: 100%;
+ display: block;
+ overflow: hidden;
+}
+.card-preview {
+ overflow: hidden;
+ height: 150px;
+ display: flex;
+ align-items: center;
+}
+.card-track {
+ display: flex;
+ align-items: center;
+ transition: transform 0.5s ease;
+ width: 100%;
+}
+.card-slide {
+ flex: 0 0 82%;
+ padding: 0 3px;
+ box-sizing: border-box;
+ transform: scale(0.9);
+ transition: transform 0.4s ease;
+ &.active {
+ transform: scale(1);
+ }
+}
+.card-img {
+ width: 100%;
+ height: 150px;
+ display: block;
+ overflow: hidden;
+}
+.indicator {
+ position: absolute;
+ bottom: 8px;
+ display: flex;
+ align-items: center;
+ z-index: 2;
+ &.pos-left {
+ left: 12px;
+ }
+ &.pos-center {
+ left: 50%;
+ transform: translateX(-50%);
+ }
+ &.pos-right {
+ right: 12px;
+ }
+ .dot {
+ background: rgba(255, 255, 255, 0.7);
+ transition: background 0.3s ease;
+ &.round {
+ width: 6px;
+ height: 6px;
+ border-radius: 50%;
+ margin: 0 3px;
+ }
+ &.line {
+ width: 12px;
+ height: 3px;
+ border-radius: 2px;
+ margin: 0 2px;
+ }
+ }
+}
+
diff --git a/seller/src/views/shop/wap/template/tpl_blank.vue b/seller/src/views/shop/wap/template/tpl_blank.vue
new file mode 100644
index 000000000..4d2d7aff5
--- /dev/null
+++ b/seller/src/views/shop/wap/template/tpl_blank.vue
@@ -0,0 +1,35 @@
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/template/tpl_coupon.vue b/seller/src/views/shop/wap/template/tpl_coupon.vue
new file mode 100644
index 000000000..14d7645a4
--- /dev/null
+++ b/seller/src/views/shop/wap/template/tpl_coupon.vue
@@ -0,0 +1,441 @@
+
+
+
{{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/template/tpl_flex_five.vue b/seller/src/views/shop/wap/template/tpl_flex_five.vue
index 24408f7f3..395e9e3de 100644
--- a/seller/src/views/shop/wap/template/tpl_flex_five.vue
+++ b/seller/src/views/shop/wap/template/tpl_flex_five.vue
@@ -1,17 +1,24 @@
-
-
-
-
-
-
+
diff --git a/seller/src/views/shop/wap/template/tpl_flex_four.vue b/seller/src/views/shop/wap/template/tpl_flex_four.vue
index 36a980c34..ca43457a3 100644
--- a/seller/src/views/shop/wap/template/tpl_flex_four.vue
+++ b/seller/src/views/shop/wap/template/tpl_flex_four.vue
@@ -1,19 +1,23 @@
-
-
-
-
-
+
diff --git a/seller/src/views/shop/wap/template/tpl_flex_one.vue b/seller/src/views/shop/wap/template/tpl_flex_one.vue
index e82a5f754..a53b7bac9 100644
--- a/seller/src/views/shop/wap/template/tpl_flex_one.vue
+++ b/seller/src/views/shop/wap/template/tpl_flex_one.vue
@@ -1,12 +1,32 @@
-
-
+
\ No newline at end of file
+
diff --git a/seller/src/views/shop/wap/template/tpl_flex_three.vue b/seller/src/views/shop/wap/template/tpl_flex_three.vue
index c2ff11e8c..567112ed3 100644
--- a/seller/src/views/shop/wap/template/tpl_flex_three.vue
+++ b/seller/src/views/shop/wap/template/tpl_flex_three.vue
@@ -1,18 +1,22 @@
-
-
-
-
+
diff --git a/seller/src/views/shop/wap/template/tpl_flex_two.vue b/seller/src/views/shop/wap/template/tpl_flex_two.vue
index ad65cef0d..59f3b619b 100644
--- a/seller/src/views/shop/wap/template/tpl_flex_two.vue
+++ b/seller/src/views/shop/wap/template/tpl_flex_two.vue
@@ -1,18 +1,25 @@
-
-
-
+
+
diff --git a/seller/src/views/shop/wap/template/tpl_home_comb.vue b/seller/src/views/shop/wap/template/tpl_home_comb.vue
new file mode 100644
index 000000000..cf7009d22
--- /dev/null
+++ b/seller/src/views/shop/wap/template/tpl_home_comb.vue
@@ -0,0 +1,564 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ displayHotWord }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
750*332
+
+
+
+
+
+
+
+
+
+
750*332
+
+
+
+
+
请添加轮播图
+
+
+
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/template/tpl_hot_area.vue b/seller/src/views/shop/wap/template/tpl_hot_area.vue
new file mode 100644
index 000000000..b65751a6a
--- /dev/null
+++ b/seller/src/views/shop/wap/template/tpl_hot_area.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/seller/src/views/shop/wap/template/tpl_integral.vue b/seller/src/views/shop/wap/template/tpl_integral.vue
index 0979feae1..052eaca19 100644
--- a/seller/src/views/shop/wap/template/tpl_integral.vue
+++ b/seller/src/views/shop/wap/template/tpl_integral.vue
@@ -1,37 +1,250 @@
-
-
-
-
{{ res.list[0].title }}
-
-
更多
+
+
+
+
{{ title }}
+
+
更多 >
+
+
+
+
+
+
+
+
+ 20积分
+
+
+ 30积分
+
-
-
-
-
-
-
-
- 20积分
-
-
- 30积分
+
+
+
+
+
+
+
+
{{ g.goodsName ? g.goodsName : g.name }}
+
+
+ ¥ {{ g.points != null ? g.points : 0 }}积分
+
¥{{ g.originalPrice }}
+
+
+
+
+
+
+
+
+
+
+ ¥ {{ g.points != null ? g.points : 0 }}积分
+
+
{{ g.goodsName ? g.goodsName : g.name }}
+
+
+
+
+
+
+
+
+
+ ¥ {{ g.points != null ? g.points : 0 }}积分
\ No newline at end of file
+.ig-g2-item {
+ width: calc((100% - var(--ig-gap, 5px)) / 2);
+ background: #fff;
+ border-radius: 8px;
+ overflow: hidden;
+ padding-bottom: 8px;
+ box-sizing: border-box;
+}
+.ig-g2-img-box {
+ width: 100%;
+ height: 150px;
+ background: #f5f5f5;
+}
+.ig-g2-name {
+ margin: 8px 8px 0;
+ font-size: 13px;
+ color: #282828;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.ig-price-row {
+ display: flex;
+ align-items: baseline;
+ margin: 5px 8px 0;
+ min-width: 0;
+}
+.ig-price {
+ display: flex;
+ align-items: center;
+ font-size: 14px;
+ font-weight: bold;
+ color: #f5483a;
+ white-space: nowrap;
+}
+.ig-price-sm {
+ font-size: 12px;
+ margin-top: 5px;
+}
+.ig-coin {
+ width: 14px;
+ height: 14px;
+ border-radius: 50%;
+ background: linear-gradient(135deg, #ffe29a, #f5a623);
+ color: #fff;
+ font-size: 9px;
+ font-weight: bold;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ margin-right: 3px;
+ flex-shrink: 0;
+}
+.ig-coin-sm {
+ width: 12px;
+ height: 12px;
+ font-size: 8px;
+}
+.ig-original {
+ font-size: 11px;
+ color: #999;
+ margin-left: 5px;
+ white-space: nowrap;
+}
+.ig-grid3 {
+ display: flex;
+ flex-wrap: wrap;
+}
+.ig-g3-item {
+ width: calc((100% - var(--ig-gap, 5px) * 2) / 3);
+ background: #fff;
+ border-radius: 8px;
+ overflow: hidden;
+ padding-bottom: 8px;
+ box-sizing: border-box;
+}
+.ig-g3-item .ig-price {
+ margin: 5px 8px 0;
+}
+.ig-g3-img-box {
+ width: 100%;
+ height: 92px;
+ background: #f5f5f5;
+}
+.ig-g3-name {
+ margin: 4px 8px 0;
+ font-size: 12px;
+ color: #282828;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
diff --git a/seller/src/views/shop/wap/template/tpl_left_one_right_two.vue b/seller/src/views/shop/wap/template/tpl_left_one_right_two.vue
index 19a563961..a853d03e6 100644
--- a/seller/src/views/shop/wap/template/tpl_left_one_right_two.vue
+++ b/seller/src/views/shop/wap/template/tpl_left_one_right_two.vue
@@ -1,14 +1,14 @@
-
-
+
+
-
+
-
@@ -16,7 +16,15 @@
diff --git a/seller/src/views/shop/wap/template/tpl_left_two_right_one.vue b/seller/src/views/shop/wap/template/tpl_left_two_right_one.vue
index 81398e0ad..8f70929ae 100644
--- a/seller/src/views/shop/wap/template/tpl_left_two_right_one.vue
+++ b/seller/src/views/shop/wap/template/tpl_left_two_right_one.vue
@@ -1,22 +1,30 @@
-
+
-
+
-
-
diff --git a/seller/src/views/shop/wap/template/tpl_promotion_detail.vue b/seller/src/views/shop/wap/template/tpl_promotion_detail.vue
new file mode 100644
index 000000000..e7a17eb96
--- /dev/null
+++ b/seller/src/views/shop/wap/template/tpl_promotion_detail.vue
@@ -0,0 +1,1334 @@
+
+
+
+
+
+
+
{{ firstItem.title || "超值拼团" }}
+
+
+
+
+
+
+
+
+
+
+ {{ firstItem.groupSuccess }}
+
+
+
更多 >
+
+
+
+
+
+
+
+
+
+
+ {{ g.goodsName ? g.goodsName : g.name }}
+
+
+ {{ g.groupNum || 2 }}人团
+ 已拼{{ g.joined != null ? g.joined : 0 }}份
+
+
+
+
+ 拼团价
+ ¥ {{ g.price ? g.price : g.originalPrice }}
+
+
+ 单买价 ¥{{ g.originalPrice }}
+
+
+
去拼团
+
+
+
+
+
+
+
+
+
+
+
+ {{ g.groupNum || 2 }}人团
+ {{ g.goodsName ? g.goodsName : g.name }}
+
+
+
+ ¥ {{ g.price ? g.price : g.originalPrice }}
+ ¥{{ g.originalPrice }}
+
+
去拼团
+
+
+
+
+
+
+
+
+
{{ g.groupNum || 2 }}人团
+
+
{{ g.goodsName ? g.goodsName : g.name }}
+
+ ¥ {{ g.price ? g.price : g.originalPrice }}
+ ¥{{ g.originalPrice }}
+
+
+
+
+
+
+ 暂无拼团商品
+
+
+
+
+
+
+
+
{{ firstItem.title || "精彩直播" }}
+
{{ firstItem.title1 || "精彩抢先看" }}
+
+
更多 >
+
+
Exciting live streaming
+
+
+
+
+
+
+
+
{{ item.tagText }}
+
+
+
{{ item.title }}
+
{{ item.anchorName }}
+
暂无商品
+
+
+
+
+
+
+
+
+
{{ item.tagText }}
+
{{ item.startTime }}
+
+
{{ item.title }}
+
{{ item.anchorName }}
+
+
+
+
+
+
+
+
{{ firstItem.title || "限时秒杀" }}
+
+
{{ firstItem.title1 || "邀请你的好友来参与" }}
+
+
GO >
+
+
+
+
+
+
+
+
+
+
+
{{ g.goodsName ? g.goodsName : g.name }}
+
+ ¥ {{ g.price ? g.price : g.originalPrice }}
+
+
+
+
+
+
+
+
+
+
{{ firstItem.title || "砍价免费拿" }}
+
+
{{ firstItem.title1 || "邀请好友来砍价" }}
+
+
GO >
+
+
+
+
+
+
+
+
+
+
+
{{ g.goodsName ? g.goodsName : g.name }}
+
+ 最低 ¥ {{ g.purchasePrice != null ? g.purchasePrice : (g.price ? g.price : g.originalPrice) }}
+
+
+
+
+
+
+
+
+
+
+
+
{{ item.title }}
+
+ {{ item.title1 }}
+
+
+
+
+
+
+
+
+ {{ i.goodsName ? i.goodsName : i.name }}
+
+
+ ¥{{ i.price ? i.price : i.originalPrice }}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/seller/src/views/shop/wap/template/tpl_promotions.vue b/seller/src/views/shop/wap/template/tpl_promotions.vue
new file mode 100644
index 000000000..4eb9ade29
--- /dev/null
+++ b/seller/src/views/shop/wap/template/tpl_promotions.vue
@@ -0,0 +1,30 @@
+
+
+
+ 请选择促销活动(最多只能展示两个活动)
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/template/tpl_rich_text.vue b/seller/src/views/shop/wap/template/tpl_rich_text.vue
new file mode 100644
index 000000000..fdc76be15
--- /dev/null
+++ b/seller/src/views/shop/wap/template/tpl_rich_text.vue
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/template/tpl_search.vue b/seller/src/views/shop/wap/template/tpl_search.vue
index db9945727..5220d7082 100644
--- a/seller/src/views/shop/wap/template/tpl_search.vue
+++ b/seller/src/views/shop/wap/template/tpl_search.vue
@@ -1,25 +1,144 @@
-
-
- {{res.list[0].title}}
-
+
+
+ {{ displayText }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
+
diff --git a/seller/src/views/shop/wap/template/tpl_shop.vue b/seller/src/views/shop/wap/template/tpl_shop.vue
new file mode 100644
index 000000000..28cf8a923
--- /dev/null
+++ b/seller/src/views/shop/wap/template/tpl_shop.vue
@@ -0,0 +1,513 @@
+
+
+
+
+
{{ title }}
+
更多 >
+
+
+
+
+
+
+
+
+
+
+
自营
+
+
+
{{ shop.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
进店逛逛 >
+
+
+
+
+
+
+
{{ goods.name }}
+
+ ¥ {{ $filters.unitPrice(goods.price) }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/template/tpl_text_picture.vue b/seller/src/views/shop/wap/template/tpl_text_picture.vue
index cfc1ec6e5..647f79003 100644
--- a/seller/src/views/shop/wap/template/tpl_text_picture.vue
+++ b/seller/src/views/shop/wap/template/tpl_text_picture.vue
@@ -1,30 +1,30 @@
-
-
+
+
{{res.list[0].title}}
-
-
+
{{res.list[2].title}}
-
{{res.list[3].title}}
-
@@ -33,8 +33,15 @@
\ No newline at end of file
+
diff --git a/seller/src/views/shop/wap/template/tpl_top_two_bottom_one.vue b/seller/src/views/shop/wap/template/tpl_top_two_bottom_one.vue
index 5eff16db0..42a9521d6 100644
--- a/seller/src/views/shop/wap/template/tpl_top_two_bottom_one.vue
+++ b/seller/src/views/shop/wap/template/tpl_top_two_bottom_one.vue
@@ -1,22 +1,29 @@
-
-
-
+
+
+
-
-
diff --git a/seller/src/views/shop/wap/template/tpl_video.vue b/seller/src/views/shop/wap/template/tpl_video.vue
new file mode 100644
index 000000000..8e5e666e9
--- /dev/null
+++ b/seller/src/views/shop/wap/template/tpl_video.vue
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
+ 视频楼层
+
+
▶
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/video-config.vue b/seller/src/views/shop/wap/video-config.vue
new file mode 100644
index 000000000..e6ff3ca34
--- /dev/null
+++ b/seller/src/views/shop/wap/video-config.vue
@@ -0,0 +1,386 @@
+
+
+
+
+ 内容设置
+
+
+
+
+
视频封面
+
+
+
+
+
+
+
+
+
+
视频比例
+
+ 16:9
+ 4:3
+ 1:1
+
+
+
+
+
+
+
+ 通用样式
+
+
+
背景设置
+
+
+ 颜色
+ 图片
+
+
+
+
+
+
+
渐变方向
+
+ 横向
+ 纵向
+ 左斜
+ 右斜
+
+
+
+
+
+
+
背景图片
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
边框设置
+
+
+ 隐藏
+ 显示
+
+
+
+
+
边框样式
+
+ 实线
+ 虚线
+ 点状
+
+
+
+
+
+
+
+
+
阴影设置
+
+
+ 隐藏
+ 显示
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/seller/src/views/shop/wap/video-style.js b/seller/src/views/shop/wap/video-style.js
new file mode 100644
index 000000000..be2955759
--- /dev/null
+++ b/seller/src/views/shop/wap/video-style.js
@@ -0,0 +1,102 @@
+export const DEFAULT_VIDEO_STYLE = {
+ bgType: "color",
+ bgColorStart: "#F5F5F5",
+ bgColorEnd: "#F5F5F5",
+ bgGradientDir: "horizontal",
+ bgRadius: 0,
+ bottomBgColor: "#F5F5F5",
+ bgImage: "",
+ margin: 0,
+ padding: 0,
+ borderShow: false,
+ borderStyle: "solid",
+ borderWidth: 1,
+ borderColor: "#e5e5e5",
+ shadowShow: false,
+ shadowColor: "rgba(0,0,0,0.1)",
+ shadowX: 0,
+ shadowY: 0,
+ shadowBlur: 10,
+ shadowSpread: 0,
+};
+
+export const ASPECT_RATIO_MAP = {
+ "16:9": 56.25,
+ "4:3": 75,
+ "1:1": 100,
+};
+
+export function ensureVideoItem(item) {
+ if (!item.aspectRatio) item.aspectRatio = "16:9";
+ if (!item.style) {
+ item.style = { ...DEFAULT_VIDEO_STYLE };
+ return;
+ }
+ Object.keys(DEFAULT_VIDEO_STYLE).forEach((key) => {
+ if (item.style[key] === undefined) {
+ item.style[key] = DEFAULT_VIDEO_STYLE[key];
+ }
+ });
+}
+
+export function getVideoGradient(style) {
+ const start = style.bgColorStart || "#F5F5F5";
+ const end = style.bgColorEnd || start;
+ const colors = `${start}, ${end}`;
+ const dirMap = {
+ horizontal: `linear-gradient(to right, ${colors})`,
+ vertical: `linear-gradient(to bottom, ${colors})`,
+ skewLeft: `linear-gradient(135deg, ${colors})`,
+ skewRight: `linear-gradient(45deg, ${colors})`,
+ };
+ return dirMap[style.bgGradientDir] || dirMap.horizontal;
+}
+
+export function getVideoWrapperStyle(item) {
+ ensureVideoItem(item);
+ const style = item.style;
+ const wrapper = {
+ margin: `${style.margin || 0}px`,
+ padding: `${style.padding || 0}px`,
+ background: style.bottomBgColor || "#F5F5F5",
+ boxSizing: "border-box",
+ };
+ return wrapper;
+}
+
+export function getVideoBoxStyle(item) {
+ ensureVideoItem(item);
+ const style = item.style;
+ const box = {
+ borderRadius: `${style.bgRadius || 0}px`,
+ overflow: "hidden",
+ position: "relative",
+ width: "100%",
+ };
+
+ if (style.bgType === "image" && style.bgImage) {
+ box.backgroundImage = `url(${style.bgImage})`;
+ box.backgroundSize = "cover";
+ box.backgroundPosition = "center";
+ } else {
+ box.background = getVideoGradient(style);
+ }
+
+ if (style.borderShow) {
+ box.border = `${style.borderWidth || 1}px ${style.borderStyle || "solid"} ${
+ style.borderColor || "#e5e5e5"
+ }`;
+ }
+
+ if (style.shadowShow) {
+ box.boxShadow = `${style.shadowX || 0}px ${style.shadowY || 0}px ${
+ style.shadowBlur || 10
+ }px ${style.shadowSpread || 0}px ${style.shadowColor || "rgba(0,0,0,0.1)"}`;
+ }
+
+ return box;
+}
+
+export function getAspectPadding(ratio) {
+ return ASPECT_RATIO_MAP[ratio] || ASPECT_RATIO_MAP["16:9"];
+}