Merge branch 'dev-sws' into dev-yxl
|
|
@ -43,6 +43,11 @@
|
||||||
### DIY图片展示
|
### DIY图片展示
|
||||||

|

|
||||||
|
|
||||||
|
### 当前DIY端对应ShopXO后端版本
|
||||||
|
| DIY端 | 后端 |
|
||||||
|
|----|----|
|
||||||
|
| v1.0.0 | v6.3.0 |
|
||||||
|
|
||||||
|
|
||||||
## 安装依赖包
|
## 安装依赖包
|
||||||
```sh
|
```sh
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
## v6.3.0(2024-10-21)
|
## v6.3.0(2024-10-22)
|
||||||
1. 发布DIY装修,可以自由设计手机模板
|
1. 发布DIY装修,可以自由设计手机模板
|
||||||
2. 内置基础组件【轮播、搜索、用户信息、导航组、公告、视频、选项卡、选项卡轮播、文章选项卡、文章列表、商品选项卡、商品列表、图片魔方、数据魔方、热区、自定义】
|
2. 内置基础组件【轮播、搜索、用户信息、导航组、公告、视频、选项卡、选项卡轮播、文章选项卡、文章列表、商品选项卡、商品列表、图片魔方、数据魔方、热区、自定义】
|
||||||
3. 内置插件组件【限时秒杀、优惠券】
|
3. 内置插件组件【限时秒杀、优惠券】
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 395 KiB |
|
Before Width: | Height: | Size: 314 KiB |
|
Before Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 9.7 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 8.8 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 722 B |
|
Before Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 927 B |
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 86 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 850 B |
|
Before Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 639 B |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 745 B |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 86 KiB |
|
Before Width: | Height: | Size: 63 KiB |
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="flex-col align-c jc-c w h bg-f" :style="container_style">
|
<div class="flex-col align-c jc-c w h bg-f" :style="container_style">
|
||||||
<img :style="style" :src="noData_image" />
|
<img :style="style" :src="no_data_image" />
|
||||||
<p class="cr-c mt-12" :style="text_style">{{ text }}</p>
|
<p class="cr-c mt-12" :style="text_style">{{ text }}</p>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -20,7 +20,7 @@ const props = withDefaults(defineProps<Props>(), {
|
||||||
size: '14px',
|
size: '14px',
|
||||||
text: '暂无数据',
|
text: '暂无数据',
|
||||||
});
|
});
|
||||||
const noData_image = ref(common_store.common.config.attachment_host + `/static/diy/images/noData.png`);
|
const no_data_image = ref(common_store.common.config.attachment_host + `/static/diy/images/no-data.png`);
|
||||||
const style = computed(() => {
|
const style = computed(() => {
|
||||||
return {
|
return {
|
||||||
width: props.imgWidth,
|
width: props.imgWidth,
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<div class="re pa-20" :style="style">
|
<div class="re pa-20" :style="style">
|
||||||
<div class="flex-row jc-sb align-c mb-20">
|
<div class="flex-row jc-sb align-c mb-20">
|
||||||
<div class="flex-1 flex-row align-c gap-12">
|
<div class="flex-1 flex-row align-c gap-12">
|
||||||
<img class="round" src="@/assets/images/components/model-user-info/avatar.png" :width="base_data.user_avatar_size" :height="base_data.user_avatar_size" />
|
<img class="round" :src="avatar_image" :width="base_data.user_avatar_size" :height="base_data.user_avatar_size" />
|
||||||
<div class="flex-col gap-8">
|
<div class="flex-col gap-8">
|
||||||
<div class="size-16 fw" :style="user_name_style">昵称</div>
|
<div class="size-16 fw" :style="user_name_style">昵称</div>
|
||||||
<div v-if="id_bool" class="plr-6 ptb-1 radius-sm" :style="number_code_style">ID:88888888</div>
|
<div v-if="id_bool" class="plr-6 ptb-1 radius-sm" :style="number_code_style">ID:88888888</div>
|
||||||
|
|
@ -31,6 +31,8 @@
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { common_styles_computer, gradient_computer, common_img_computer } from '@/utils';
|
import { common_styles_computer, gradient_computer, common_img_computer } from '@/utils';
|
||||||
|
import { commonStore } from '@/store';
|
||||||
|
const common_store = commonStore();
|
||||||
/**
|
/**
|
||||||
* @description: 用户信息(渲染)
|
* @description: 用户信息(渲染)
|
||||||
* @param value{Object} 传过来的数据,用于数据渲染
|
* @param value{Object} 传过来的数据,用于数据渲染
|
||||||
|
|
@ -57,6 +59,8 @@ interface icon_params {
|
||||||
icon: string;
|
icon: string;
|
||||||
link: pageLinkList;
|
link: pageLinkList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const avatar_image = ref(common_store.common.config.attachment_host + `/static/diy/images/components/model-user-info/avatar.png`);
|
||||||
const config = ref<string[]>(['order_count', 'goods_favor_count', 'goods_browse_count', 'integral_number']);
|
const config = ref<string[]>(['order_count', 'goods_favor_count', 'goods_browse_count', 'integral_number']);
|
||||||
const icon_setting = ref<icon_params[]>([
|
const icon_setting = ref<icon_params[]>([
|
||||||
{ id: '1', img: [], icon: '', link: {} },
|
{ id: '1', img: [], icon: '', link: {} },
|
||||||
|
|
|
||||||
|
|
@ -8,13 +8,15 @@
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<image-empty v-model="video_img" error-img-style="width:60px;height:60px;"></image-empty>
|
<image-empty v-model="video_img" error-img-style="width:60px;height:60px;"></image-empty>
|
||||||
</template>
|
</template>
|
||||||
<img src="@/assets/images/components/model-video/video.png" class="middle box-shadow-sm round" width="60" height="60" />
|
<img :src="video_src" class="middle box-shadow-sm round" width="60" height="60" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { common_styles_computer, common_img_computer } from '@/utils';
|
import { common_styles_computer, common_img_computer } from '@/utils';
|
||||||
|
import { commonStore } from '@/store';
|
||||||
|
const common_store = commonStore();
|
||||||
/**
|
/**
|
||||||
* @description: 视频 (渲染)
|
* @description: 视频 (渲染)
|
||||||
* @param value{Object} 传过来的数据,用于数据渲染
|
* @param value{Object} 传过来的数据,用于数据渲染
|
||||||
|
|
@ -25,7 +27,7 @@ const props = defineProps({
|
||||||
default: () => ({}),
|
default: () => ({}),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
const video_src = ref(common_store.common.config.attachment_host + `/static/diy/images/components/model-video/video.png`);
|
||||||
const style = ref('');
|
const style = ref('');
|
||||||
const style_container = ref('');
|
const style_container = ref('');
|
||||||
const style_img_container = ref('');
|
const style_img_container = ref('');
|
||||||
|
|
@ -51,7 +53,7 @@ watch(
|
||||||
}
|
}
|
||||||
style.value = video_ratio;
|
style.value = video_ratio;
|
||||||
style_container.value = common_styles_computer(new_style.common_style);
|
style_container.value = common_styles_computer(new_style.common_style);
|
||||||
style_img_container.value = common_img_computer(new_style.common_style);
|
style_img_container.value = common_img_computer(new_style.common_style);
|
||||||
},
|
},
|
||||||
{ immediate: true, deep: true }
|
{ immediate: true, deep: true }
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,10 @@
|
||||||
<div class="w h" :style="up_slide_img_style"></div>
|
<div class="w h" :style="up_slide_img_style"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="pt-15 pl-18 pr-22 w pb-6">
|
<div class="pt-15 pl-18 pr-22 w pb-6">
|
||||||
<img class="img" :style="`Filter: brightness(${new_style.function_buttons_type == '0' ? 0 : 100})`" src="@/assets/images/layout/main/main-top.png" />
|
<img class="img" :style="`Filter: brightness(${new_style.function_buttons_type == '0' ? 0 : 100})`" :src="main_top_img" />
|
||||||
</div>
|
</div>
|
||||||
<div class="model-head tc re mlr-12 mt-6">
|
<div class="model-head tc re mlr-12 mt-6">
|
||||||
<div class="flex-col" :style="`gap: ${ new_style.data_alone_row_space }px`">
|
<div class="flex-col" :style="`gap: ${new_style.data_alone_row_space}px`">
|
||||||
<div class="model-head-content flex-row align-c jc-sb gap-16 re">
|
<div class="model-head-content flex-row align-c jc-sb gap-16 re">
|
||||||
<div v-if="['1', '2', '3'].includes(form.theme)" class="flex-1">
|
<div v-if="['1', '2', '3'].includes(form.theme)" class="flex-1">
|
||||||
<div class="flex-1 flex-row align-c jc-c h gap-16" :class="position_class" :style="[{ 'justify-content': form?.indicator_location || 'center' }, text_style]">
|
<div class="flex-1 flex-row align-c jc-c h gap-16" :class="position_class" :style="[{ 'justify-content': form?.indicator_location || 'center' }, text_style]">
|
||||||
|
|
@ -73,6 +73,8 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { background_computer, gradient_computer } from '@/utils';
|
import { background_computer, gradient_computer } from '@/utils';
|
||||||
import { isEmpty } from 'lodash';
|
import { isEmpty } from 'lodash';
|
||||||
|
import { commonStore } from '@/store';
|
||||||
|
const common_store = commonStore();
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
pageData: any;
|
pageData: any;
|
||||||
|
|
@ -85,6 +87,7 @@ const props = withDefaults(defineProps<Props>(), {
|
||||||
scollTop: 0,
|
scollTop: 0,
|
||||||
});
|
});
|
||||||
const emits = defineEmits(['page_settings']);
|
const emits = defineEmits(['page_settings']);
|
||||||
|
const main_top_img = ref(common_store.common.config.attachment_host + `/static/diy/images/layout/main/main-top.png`);
|
||||||
const page_settings = () => {
|
const page_settings = () => {
|
||||||
emits('page_settings');
|
emits('page_settings');
|
||||||
};
|
};
|
||||||
|
|
|
||||||