Merge branch 'dev-yxl' of gitee.com:zongzhige/shopxo-uniapp into dev-sws

master
sws 2024-09-12 17:45:59 +08:00
commit 88d66f5573
6 changed files with 384 additions and 374 deletions

View File

@ -2,15 +2,13 @@
<view class="pr" :style="style_container">
<swiper circular="true" :autoplay="form.is_roll == '1'" :interval="form.interval_time * 1000" :duration="500" :style="{ height: new_style.height * 2 + 'rpx' }" :previous-margin="previousMargin" :next-margin="nextMargin" @change="slideChange">
<block v-if="form.carousel_type == 'card'">
<swiper-item v-for="(item, index) in new_list" :key="index" class="flex-row align-c">
<swiper-item v-for="(item, index) in new_list" :key="index" class="flex-row align-c" @tap="url_open(item.carousel_link)">
<view class="swiper-item" :style="img_style" :class="['scale-defalt', { 'scale-1': animationData === index }]">
<block v-if="!is_obj_empty(item.carousel_img)">
<image :src="item.carousel_img[0].url" class="img ht-auto" :style="img_style" :mode="img_fit"></image>
</block>
<image-empty :image-src="item.carousel_img[0]" class="img" :style="img_style" :img_fit="img_fit" error-style="width: 100rpx;height: 100rpx;"></image-empty>
</view>
<view v-if="new_style.video_is_show == '1' && item.carousel_video.length > 0" :class="{'x-middle': new_style.video_location == 'center', 'right-0': new_style.video_location == 'flex-end' }" class="video-class flex-row pa gap-10 align-c oh" :style="video_style" @tap="video_play(item.carousel_video)">
<view v-if="new_style.video_is_show == '1' && item.carousel_video.length > 0" :class="{'x-middle': new_style.video_location == 'center', 'right-0': new_style.video_location == 'flex-end' }" class="video-class flex-row pa gap-10 align-c oh" :style="video_style" @tap.stop="video_play(item.carousel_video)">
<block v-if="new_style.video_type == 'img'">
<image :src="new_style.video_img[0].url" class="video_img" mode="aspectFill"></image>
<image-empty :image-src="new_style.video_img[0]" class="video_img" img_fit="aspectFill" error-style="width: 28rpx;height: 28rpx;"></image-empty>
</block>
<block v-else>
<iconfont :name="!is_obj_empty(new_style.video_icon_class) ? 'icon-' + new_style.video_icon_class : 'icon-bofang'" size="'28rpx'" :color="new_style.video_icon_color"></iconfont>
@ -22,13 +20,11 @@
<block v-else>
<swiper-item v-for="(item, index) in new_list" :key="index">
<view class="item-image flex-row jc-c align-c wh-auto ht-auto pr" :style="img_style">
<block v-if="!is_obj_empty(item.carousel_img)">
<image :src="item.carousel_img[0].url" class="img" :style="img_style" :mode="img_fit"></image>
</block>
<image-empty :image-src="item.carousel_img[0]" class="img" :style="img_style" :img_fit="img_fit" error-style="width: 100rpx;height: 100rpx;"></image-empty>
</view>
<view v-if="new_style.video_is_show == '1' && item.carousel_video.length > 0" :class="{'x-middle': new_style.video_location == 'center', 'right-0': new_style.video_location == 'flex-end' }" class="video-class flex-row pa gap-10 align-c oh" :style="video_style" @tap="video_play(item.carousel_video)">
<view v-if="new_style.video_is_show == '1' && item.carousel_video.length > 0" :class="{'x-middle': new_style.video_location == 'center', 'right-0': new_style.video_location == 'flex-end' }" class="video-class flex-row pa gap-10 align-c oh" :style="video_style" @tap.stop="video_play(item.carousel_video)">
<block v-if="new_style.video_type == 'img'">
<image :src="new_style.video_img[0].url" class="video_img" mode="aspectFill"></image>
<image-empty :image-src="new_style.video_img[0]" class="video_img" img_fit="aspectFill" error-style="width: 28rpx;height: 28rpx;"></image-empty>
</block>
<block v-else>
<iconfont :name="!is_obj_empty(new_style.video_icon_class) ? 'icon-' + new_style.video_icon_class : 'icon-bofang'" size="'28rpx'" :color="new_style.video_icon_color"></iconfont>
@ -59,8 +55,12 @@
<script>
const app = getApp();
import { common_styles_computer, radius_computer, is_obj_empty, gradient_computer, padding_computer } from '@/common/js/common/common.js';
export default {
import { common_styles_computer, radius_computer, is_obj_empty, gradient_computer, padding_computer } from '@/common/js/common/common.js';
import imageEmpty from './modules/image-empty.vue';
export default {
components: {
imageEmpty
},
props: {
value: {
type: Object,
@ -229,6 +229,11 @@
videoContext.pause();
}
this.$refs.popup.close();
},
url_open(link) {
if (!is_obj_empty(link)) {
app.globalData.url_open(link.page);
}
}
},
};
@ -278,6 +283,7 @@
.img {
width: 100%;
height: 100%;
}
.video_img {
max-width: 120rpx;
@ -290,10 +296,5 @@
position: absolute;
left: 50%;
transform: translateX(-50%);
}
// .video_class {
// position: absolute;
// height: 0rpx;
// width: 0rpx;
// }
}
</style>

View File

@ -6,7 +6,7 @@
<view class="ring" :style="color"></view>
<view class="ring" :style="color"></view>
</block>
<image :src="form.button_img[0].url" class="img" :style="color" fit="cover"></image>
<image-empty :image-src="form.button_img[0]" class="img" :style="color" img_fit="aspectFill" error-style="width: 60rpx;height: 60rpx;"></image-empty>
</view>
</view>
</view>
@ -15,7 +15,11 @@
<script>
const app = getApp();
import { is_obj_empty } from '../../common/js/common/common';
import imageEmpty from './modules/image-empty.vue';
export default {
components: {
imageEmpty
},
props: {
value: {
type: Object,

View File

@ -0,0 +1,56 @@
<template>
<view class="oh" :style="empty_outer_style">
<image :src="imageUrl" @error="handleImageError" :mode="img_fit" :style="empty_style" />
</view>
</template>
<script>
import { is_obj, is_obj_empty } from '@/common/js/common/common.js';
export default {
props: {
imageSrc: {
type: [Object, String],
default: () => {},
},
errorStyle: {
type: String,
default: () => '',
},
img_fit: {
type: String,
default: () => 'aspectFill',
}
},
data() {
return {
empty_outer_style: '',
empty_style: '',
imageUrl: '',
defaultImage: '/static/images/common/image-empty.png',
};
},
mounted() {
this.init();
},
methods: {
init() {
let img_url = this.imageSrc;
if (is_obj(this.imageSrc)) {
img_url = !is_obj_empty(this.imageSrc) ? this.imageSrc.url : '';
}
if (img_url == undefined || img_url == null || img_url == '') {
this.setData({
empty_outer_style: 'background: #f4fcff;',
empty_style: `top: 50%;transform: translateY(-50%);${ this.errorStyle }`
})
img_url = this.defaultImage;
}
this.setData({
imageUrl: img_url
})
}
},
};
</script>
<style lang="scss" scoped>
</style>

View File

@ -1,9 +1,6 @@
@font-face {
font-family: "iconfont";
/* Project id 4227145 */
/* 全局注册需要切换成绝对路径 */
/* @/static/icon/ */
src: url('@/static/icon/iconfont.ttf?t=1693280977762') format('truetype');
font-family: "iconfont"; /* Project id 4607934 */
src: url('@/static/icon/iconfont.ttf?t=1693280977762') format('truetype');
}
.iconfont {
@ -14,379 +11,331 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-bofang:before {
content: "\e798";
}
.icon-a-miaosha:before {
content: "\e797";
}
.icon-close-b:before {
content: "\e745";
}
.icon-arrow-right-o:before {
content: "\e796";
}
.icon-ellipsis:before {
content: "\e635";
}
.icon-commodity-edit:before {
content: "\e795";
}
.icon-tips:before {
content: "\e74a";
}
.icon-arrow-right-dbl:before {
content: "\e7b6";
}
.icon-EXE:before {
content: "\e782";
}
.icon-txt:before {
content: "\e786";
}
.icon-a-1ge:before {
content: "\e794";
}
.icon-heng2:before {
content: "\e789";
}
.icon-a-4x4:before {
content: "\e78a";
}
.icon-zuo1you2:before {
content: "\e78b";
}
.icon-shu3:before {
content: "\e78c";
}
.icon-shang2xia1:before {
content: "\e78d";
}
.icon-zuo1youshang1youxia2:before {
content: "\e78e";
}
.icon-shang1xia2:before {
content: "\e78f";
}
.icon-tianzige:before {
content: "\e790";
}
.icon-shang2xia3:before {
content: "\e792";
}
.icon-zuo2you1:before {
content: "\e793";
}
.icon-shu2:before {
content: "\e77b";
}
.icon-upload:before {
content: "\e72b";
}
.icon-true:before {
content: "\e741";
}
.icon-cart:before {
content: "\e791";
}
.icon-pdf:before {
content: "\e787";
}
.icon-ppt:before {
content: "\e788";
}
.icon-word:before {
content: "\e785";
}
.icon-vsd:before {
content: "\e783";
}
.icon-apk:before {
content: "\e784";
}
.icon-vf:before {
content: "\e77d";
}
.icon-video:before {
content: "\e77e";
}
.icon-zip:before {
content: "\e77f";
}
.icon-ipa:before {
content: "\e780";
}
.icon-excel:before {
content: "\e781";
}
.icon-file:before {
content: "\e77c";
}
.icon-error-img:before {
content: "\e779";
}
.icon-folder:before {
content: "\e77a";
}
.icon-true-o:before {
content: "\e777";
}
.icon-checked-1:before {
content: "\e778";
}
.icon-gift-fine:before {
content: "\e771";
.icon-eye-close:before {
content: "\e775";
}
.icon-enlarge:before {
content: "\e60d";
.icon-eye:before {
content: "\e776";
}
.icon-enlarge-four:before {
content: "\e602";
}
.icon-enlarge-border:before {
content: "\e6f2";
}
.icon-map-navigator:before {
content: "\10183";
}
.icon-down-mark:before {
content: "\e729";
}
.icon-sigh-o:before {
content: "\e71f";
}
.icon-copy:before {
content: "\e71e";
}
.icon-transfer-count:before {
content: "\e71b";
}
.icon-collection:before {
content: "\e71c";
}
.icon-convert2:before {
content: "\e71d";
}
.icon-cash:before {
content: "\e717";
}
.icon-recharge:before {
content: "\e718";
}
.icon-convert:before {
content: "\e719";
}
.icon-detail:before {
content: "\e71a";
}
.icon-store:before {
content: "\e6f3";
}
.icon-star:before {
content: "\e6ef";
}
.icon-location:before {
content: "\e6f0";
}
.icon-message:before {
content: "\e6f1";
}
.icon-login-language:before {
content: "\e6ed";
}
.icon-login-down-arrow:before {
content: "\e6ee";
}
.icon-delete:before {
content: "\e6ec";
}
.icon-checked:before {
content: "\e6eb";
}
.icon-a-Shoppingcart1107:before {
content: "\e6e7";
}
.icon-me1107:before {
content: "\e6e8";
}
.icon-classify1107:before {
content: "\e6e9";
}
.icon-index1107:before {
content: "\e6ea";
}
.icon-payment-fail:before {
content: "\e6e6";
}
.icon-keyboard-backspace:before {
content: "\e6e5";
}
.icon-transfer:before {
content: "\e6e4";
}
.icon-wytw-sctp:before {
content: "\e6e3";
}
.icon-xzzx-shij:before {
content: "\e6e2";
}
.icon-xzzx-rhaz:before {
content: "\e6e0";
}
.icon-xzzx-kfwd:before {
content: "\e6e1";
}
.icon-wenda-wytw:before {
content: "\e6de";
}
.icon-wenda-wdtw:before {
content: "\e6df";
}
.icon-bowenxiangqing-dianzan-xuaz:before {
content: "\e6dd";
}
.icon-bowenxiangqing-fenxiang:before {
content: "\e6dc";
}
.icon-bowenxiangqing-huifu:before {
content: "\e6ce";
}
.icon-bowenxiangqing-dianzan:before {
content: "\e6da";
}
.icon-wodeqianbao-eyeclo2:before {
content: "\e6db";
}
.icon-zuhedap-shoping:before {
content: "\e6d9";
}
.icon-wdhy-gaoji:before {
content: "\e6d8";
}
.icon-qrcode:before {
content: "\e6d7";
}
.icon-wdfx-ptfx:before {
content: "\e6c6";
}
.icon-wdfx-gjfx:before {
content: "\e6d5";
}
.icon-xzdz-tianjiabiaoq:before {
content: "\e6d6";
}
.icon-xzdz-dingwei:before {
content: "\e6d2";
}
.icon-wddz-bianji:before {
content: "\e6d3";
}
.icon-bjdz-guanbi:before {
content: "\e6d4";
}
.icon-arrow-left:before {
content: "\e6d1";
}
.icon-scan:before {
content: "\e6cf";
}
.icon-wodeqianbao-eye:before {
content: "\e6d0";
}
.icon-mendian-dingwei:before {
content: "\e6cd";
}
.icon-zhifu-yixuan:before {
content: "\e6ca";
}
.icon-zhifu-weixuan:before {
content: "\e6cb";
}
.icon-arrow-bottom:before {
content: "\e6cc";
}
.icon-close-o:before {
content: "\e6c9";
}
.icon-kaitonghuiy-dingdan:before {
content: "\e6c8";
}
.icon-miaosha-hdgz:before {
content: "\e6c7";
}
.icon-mendian-sc:before {
content: "\e6c4";
}
.icon-mendian-kefu:before {
content: "\e6c5";
}
.icon-qiandao-tancguanbi:before {
content: "\e6c3";
}
.icon-qiandao-dqxz:before {
content: "\e6bc";
}
.icon-share-square:before {
content: "\e6bd";
}
.icon-qiandao-wdqd:before {
content: "\e6be";
}
.icon-qiandao-zudui:before {
content: "\e6bf";
}
.icon-arrow-right-round:before {
content: "\e6c0";
}
.icon-qiandao-yixuan:before {
content: "\e6c1";
}
.icon-arrow-right:before {
content: "\e6c2";
}
.icon-zhibo-shixiao:before {
content: "\e6bb";
}
.icon-cart-dec:before {
content: "\e6ba";
}
.icon-cart-inc:before {
content: "\e6b9";
}
.icon-arrow-top:before {
content: "\e6b8";
}
.icon-fenlei-more:before {
content: "\e6b7";
}
.icon-zhibo-time:before {
content: "\e6b3";
}
.icon-pp-all:before {
content: "\e6b4";
}
.icon-zhibo-zt:before {
content: "\e6b5";
}
.icon-zhibo-jies:before {
content: "\e6b6";
}
.icon-md-phone:before {
content: "\e6b1";
}
.icon-md-dh:before {
content: "\e6b2";
}
.icon-index-zxmd-phone:before {
content: "\e6ac";
}
.icon-index-zxmd-dh:before {
content: "\e6ad";
}
.icon-index-zxmd-time:before {
content: "\e6ae";
}
.icon-index-zxmd-dress:before {
.icon-position:before {
content: "\e6af";
}
.icon-index-notice:before {
content: "\e6a8";
.icon-add:before {
content: "\e71b";
}
.icon-index-search:before {
content: "\e6a9";
.icon-arrow-left:before {
content: "\e73f";
}
.icon-applet-me-settings-acquiesce:before {
content: "\e6a6";
.icon-arrow-right:before {
content: "\e737";
}
.icon-applet-me-message-acquiesce:before {
content: "\e6a7";
.icon-arrow-top:before {
content: "\e738";
}
.icon-applet-me-acquiesce:before {
content: "\e6a2";
.icon-radius-l-b:before {
content: "\e774";
}
.icon-applet-sort-acquiesce:before {
content: "\e6a5";
.icon-radius-r-t:before {
content: "\e773";
}
.icon-applet-index-acquiesce:before {
content: "\e6a4";
.icon-img:before {
content: "\e768";
}
.icon-applet-shop-acquiesce:before {
content: "\e6a3";
.icon-out-l:before {
content: "\e769";
}
.icon-out-b:before {
content: "\e76a";
}
.icon-del:before {
content: "\e76b";
}
.icon-drag:before {
content: "\e76c";
}
.icon-out-r:before {
content: "\e76d";
}
.icon-line-point:before {
content: "\e76e";
}
.icon-del-o:before {
content: "\e76f";
}
.icon-copy:before {
content: "\e770";
}
.icon-line:before {
content: "\e771";
}
.icon-close-o:before {
content: "\e772";
}
.icon-text:before {
content: "\e766";
}
.icon-auxiliary-line:before {
content: "\e767";
}
.icon-close:before {
content: "\e764";
}
.icon-edit:before {
content: "\e765";
}
.icon-radius-r-b:before {
content: "\e758";
}
.icon-arrow-bottom:before {
content: "\e759";
}
.icon-elliptic:before {
content: "\e75a";
}
.icon-out-t:before {
content: "\e75b";
}
.icon-enter-r:before {
content: "\e75c";
}
.icon-single-sheet:before {
content: "\e752";
}
.icon-spread-over:before {
content: "\e753";
}
.icon-enter-l:before {
content: "\e75d";
}
.icon-round-dot:before {
content: "\e75e";
}
.icon-enter-b:before {
content: "\e75f";
}
.icon-search:before {
content: "\e760";
}
.icon-tile:before {
content: "\e761";
}
.icon-center:before {
content: "\e762";
}
.icon-enter-t:before {
content: "\e763";
}
.icon-left:before {
content: "\e755";
}
.icon-reset:before {
content: "\e756";
}
.icon-radius-l-t:before {
content: "\e757";
}
.icon-right:before {
content: "\e754";
}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB