| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 | 
							- <template>
 
-   <image
 
-     v-if="!state.isError"
 
-     class="su-img"
 
-     :style="customStyle"
 
-     :draggable="false"
 
-     :mode="mode"
 
-     :src="sheep.$url.cdn(src)"
 
-     @tap="onImgPreview"
 
-     @load="onImgLoad"
 
-     @error="onImgError"
 
-   ></image>
 
- </template>
 
- <script setup>
 
-   /**
 
-    * 图片组件
 
-    *
 
-    * @property {String} src 						- 图片地址
 
-    * @property {Number} mode 						- 裁剪方式
 
-    * @property {String} isPreview 		  		- 是否开启预览
 
-    * @property {Number} previewList 				- 预览列表
 
-    * @property {String} current 		  			- 预览首张下标
 
-    *
 
-    * @event {Function} load 						- 图片加载完毕触发
 
-    * @event {Function} error 						- 图片加载错误触发
 
-    *
 
-    */
 
-   import { reactive, computed } from 'vue';
 
-   import sheep from '@/sheep';
 
-   // 组件数据
 
-   const state = reactive({
 
-     isError: false,
 
-     imgHeight: 600,
 
-   });
 
-   // 接收参数
 
-   const props = defineProps({
 
-     src: {
 
-       type: String,
 
-       default: '',
 
-     },
 
-     errorSrc: {
 
-       type: String,
 
-       default: '/static/img/shop/empty_network.png',
 
-     },
 
-     mode: {
 
-       type: String,
 
-       default: 'widthFix',
 
-     },
 
-     isPreview: {
 
-       type: Boolean,
 
-       default: false,
 
-     },
 
-     previewList: {
 
-       type: Array,
 
-       default() {
 
-         return [];
 
-       },
 
-     },
 
-     current: {
 
-       type: Number,
 
-       default: -1,
 
-     },
 
-     height: {
 
-       type: Number,
 
-       default: 0,
 
-     },
 
-     width: {
 
-       type: Number,
 
-       default: 0,
 
-     },
 
-     radius: {
 
-       type: Number,
 
-       default: 0,
 
-     },
 
-   });
 
-   const emits = defineEmits(['load', 'error']);
 
-   const customStyle = computed(() => {
 
-     return {
 
-       height: (props.height || state.imgHeight) + 'rpx',
 
-       width: props.width ? props.width + 'rpx' : '100%',
 
-       borderRadius: props.radius ? props.radius + 'rpx' : '',
 
-     };
 
-   });
 
-   // 图片加载完成
 
-   function onImgLoad(e) {
 
-     if (props.height === 0) {
 
-       state.imgHeight = (e.detail.height / e.detail.width) * 750;
 
-     }
 
-   }
 
-   // 图片加载错误
 
-   function onImgError(e) {
 
-     state.isError = true;
 
-     emits('error', e);
 
-   }
 
-   // 预览图片
 
-   function onImgPreview() {
 
-     if (!props.isPreview) return;
 
-     uni.previewImage({
 
-       urls: props.previewList.length < 1 ? [props.src] : props.previewList,
 
-       current: props.current,
 
-       longPressActions: {
 
-         itemList: ['发送给朋友', '保存图片', '收藏'],
 
-         success: function (data) {
 
-           console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
 
-         },
 
-         fail: function (err) {
 
-           console.log(err.errMsg);
 
-         },
 
-       },
 
-     });
 
-   }
 
- </script>
 
- <style lang="scss" scoped>
 
-   .su-img {
 
-     position: relative;
 
-     width: 100%;
 
-     height: 100%;
 
-     display: block;
 
-   }
 
- </style>
 
 
  |