数据数据魔方显示逻辑
parent
383df6a3b0
commit
e5b2600cc1
|
|
@ -95,7 +95,12 @@
|
||||||
<div class="bg-f5 divider-line" />
|
<div class="bg-f5 divider-line" />
|
||||||
<card-container>
|
<card-container>
|
||||||
<div class="mb-12">视频设置</div>
|
<div class="mb-12">视频设置</div>
|
||||||
|
<el-form-item label="上传视频">
|
||||||
|
<upload v-model="form.video" :limit="1" type="video"></upload>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="视频封面">
|
||||||
|
<upload v-model="form.video_img" :limit="1"></upload>
|
||||||
|
</el-form-item>
|
||||||
</card-container>
|
</card-container>
|
||||||
</template>
|
</template>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
<template>
|
||||||
|
<div class="w h" :style="style_container">
|
||||||
|
<div class="re w h oh">
|
||||||
|
<template v-if="video && !video_img">
|
||||||
|
<video :src="video" class="w h"></video>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
<image-empty v-model="video_img" error-img-style="width:60px;height:60px;"></image-empty>
|
||||||
|
</template>
|
||||||
|
<img :src="video_src" class="middle box-shadow-sm round" width="50" height="50" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { commonStore } from '@/store';
|
||||||
|
import { padding_computer } from '@/utils';
|
||||||
|
const common_store = commonStore();
|
||||||
|
/**
|
||||||
|
* @description: 视频 (渲染)
|
||||||
|
* @param value{Object} 传过来的数据,用于数据渲染
|
||||||
|
*/
|
||||||
|
const props = defineProps({
|
||||||
|
value: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({}),
|
||||||
|
},
|
||||||
|
dataStyle: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({}),
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const video_src = ref(common_store.common.config.attachment_host + `/static/diy/images/components/model-video/video.png`);
|
||||||
|
const video_img = computed(() => {
|
||||||
|
if (props.value.video_img.length > 0) {
|
||||||
|
return props.value.video_img[0]?.url;
|
||||||
|
} else {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const video = computed(() => {
|
||||||
|
if (props.value.video.length > 0) {
|
||||||
|
return props.value.video[0]?.url;
|
||||||
|
} else {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// 公共样式
|
||||||
|
const style_container = computed(() => padding_computer(props.dataStyle.chunk_padding));
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
</style>
|
||||||
|
|
@ -30,6 +30,12 @@
|
||||||
<magic-carousel :value="item" type="img" :actived="form.style_actived" @carousel_change="carousel_change($event, index)"></magic-carousel>
|
<magic-carousel :value="item" type="img" :actived="form.style_actived" @carousel_change="carousel_change($event, index)"></magic-carousel>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
<template v-else-if="item.data_content.data_type == 'custom'">
|
||||||
|
<customIndex :value="item" :magic-scale="magic_scale" :data-spacing="new_style.image_spacing"></customIndex>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
<videoIndex :value="item.data_content" :data-style="item.data_style"></videoIndex>
|
||||||
|
</template>
|
||||||
<div v-if="item.data_style.is_show == '1' && item.data_content.list.length > 1" :class="{'dot-center': item.data_style?.indicator_location == 'center', 'dot-right': item.data_style?.indicator_location == 'flex-end' }" class="dot flex abs" :style="`bottom: ${item.data_style?.indicator_bottom}px;`">
|
<div v-if="item.data_style.is_show == '1' && item.data_content.list.length > 1" :class="{'dot-center': item.data_style?.indicator_location == 'center', 'dot-right': item.data_style?.indicator_location == 'flex-end' }" class="dot flex abs" :style="`bottom: ${item.data_style?.indicator_bottom}px;`">
|
||||||
<template v-if="item.data_style.indicator_style == 'num'">
|
<template v-if="item.data_style.indicator_style == 'num'">
|
||||||
<div :style="item.data_style.indicator_styles" class="dot-item">
|
<div :style="item.data_style.indicator_styles" class="dot-item">
|
||||||
|
|
@ -73,6 +79,9 @@
|
||||||
<template v-else-if="item.data_content.data_type == 'custom'">
|
<template v-else-if="item.data_content.data_type == 'custom'">
|
||||||
<customIndex :value="item" :magic-scale="magic_scale" :data-spacing="new_style.image_spacing"></customIndex>
|
<customIndex :value="item" :magic-scale="magic_scale" :data-spacing="new_style.image_spacing"></customIndex>
|
||||||
</template>
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
<videoIndex :value="item.data_content" :data-style="item.data_style"></videoIndex>
|
||||||
|
</template>
|
||||||
<div v-if="item.data_style.is_show == '1' && item.data_content.list.length > 1" :class="{'dot-center': item.data_style?.indicator_location == 'center', 'dot-right': item.data_style?.indicator_location == 'flex-end' }" class="dot flex abs" :style="`bottom: ${item.data_style?.indicator_bottom}px;`">
|
<div v-if="item.data_style.is_show == '1' && item.data_content.list.length > 1" :class="{'dot-center': item.data_style?.indicator_location == 'center', 'dot-right': item.data_style?.indicator_location == 'flex-end' }" class="dot flex abs" :style="`bottom: ${item.data_style?.indicator_bottom}px;`">
|
||||||
<template v-if="item.data_style.indicator_style == 'num'">
|
<template v-if="item.data_style.indicator_style == 'num'">
|
||||||
<div :style="item.data_style.indicator_styles" class="dot-item">
|
<div :style="item.data_style.indicator_styles" class="dot-item">
|
||||||
|
|
@ -92,6 +101,7 @@
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import customIndex from './components/custom/index.vue';
|
import customIndex from './components/custom/index.vue';
|
||||||
|
import videoIndex from './components/video/index.vue';
|
||||||
import { background_computer, common_styles_computer, get_math, gradient_computer, radius_computer, padding_computer, common_img_computer, is_number, percentage_count } from '@/utils';
|
import { background_computer, common_styles_computer, get_math, gradient_computer, radius_computer, padding_computer, common_img_computer, is_number, percentage_count } from '@/utils';
|
||||||
import { isEmpty, cloneDeep } from 'lodash';
|
import { isEmpty, cloneDeep } from 'lodash';
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
|
|
|
||||||
|
|
@ -200,7 +200,10 @@ const data_content = {
|
||||||
// 数据源
|
// 数据源
|
||||||
data_source:'',
|
data_source:'',
|
||||||
// 自定义内容列表
|
// 自定义内容列表
|
||||||
custom_list: []
|
custom_list: [],
|
||||||
|
//视频信息
|
||||||
|
video: [],
|
||||||
|
video_img: [],
|
||||||
}
|
}
|
||||||
|
|
||||||
// 不同风格的数据
|
// 不同风格的数据
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue