dever 5 years ago
parent
commit
0549570f47

+ 70 - 0
lib/dever/components/speaker.vue

@@ -0,0 +1,70 @@
+<template name="speaker">
+	<view class="grace-swiper-msg">
+		<view class="grace-swiper-msg-icon" :class="[iconClass]" :style="{color:iconColor}"></view>
+		<swiper :display-multiple-items="display" :vertical="vertical" autoplay="true" circular="true" :interval="interval" :style="{height:height}">
+			<swiper-item v-for="(item, index) in msgs" :key="index" :style="{height:height}">
+				<view class="grace-space-between grace-flex-vcenter margin-bottom-xs">
+					<view>
+						<text class="grace-icons icon-arrow-right text-sblue"></text>
+						<text class="text-sm">{{item.name}}</text>
+					</view>
+					<view class="text-sm text-gray">{{item.date}}</view>
+				</view>
+			</swiper-item>
+	  </swiper>
+	</view>
+</template>
+<script>
+export default {
+	name: "speaker",
+	props: {
+		msgs : {
+		  type  : Array,
+		  default : function(){return [];}
+		},
+		iconClass : {
+		  type  : String,
+		  default : ""
+		},
+		iconColor : {
+		  type  : String,
+		  default : "#3688FF"
+		},
+		interval : {
+		  type : Number,
+		  default: 3000
+		},
+		vertical : {
+		  type : Boolean,
+		  default : true
+		},
+		fontSize : {
+			type  : String,
+			default : "26rpx"
+		},
+		fontColor : {
+			type  : String,
+			default : "#333333"
+		},
+		fontWeight : {
+			type  : String,
+			default : ""
+		},
+		height:{
+			type  : String,
+			default : "60rpx"
+		},
+		display:{
+			type : Number,
+			default: 1
+		}
+	}
+}
+</script>
+<style scoped>
+.grace-swiper-msg{width:100%; display:flex; flex-wrap:nowrap; align-items:center;}
+.grace-swiper-msg-icon{margin-right:16rpx; display:inline-block; flex-shrink:0;}
+.grace-swiper-msg swiper{width:100%; height:60rpx; overflow:hidden;}
+.grace-swiper-msg swiper-item{overflow:hidden;}
+.grace-swiper-msg navigator{line-height:60rpx; overflow:hidden;}
+</style>

+ 32 - 0
lib/dever/index.js

@@ -1146,6 +1146,38 @@ var dever = {
 		    }
 		});
 		return downloadTask;
+	},
+	
+	//预览图片
+	viewPic : function(imgs, img, key) {
+		if (imgs && imgs.length > 0) {
+			if (key) {
+				var temp = [];
+				var i;
+				for(i in imgs) {
+					temp.push(imgs[i][key]);
+				}
+				imgs = temp;
+			}
+			uni.previewImage({
+				current:img,
+				urls: imgs,
+				indicator : 'default',
+				loop : true,
+				/*
+				longPressActions : {
+					itemList: ['发送给朋友', '保存图片', '收藏'],
+					success: function(data) {
+						console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
+					},
+					fail: function(err) {
+						console.log(err.errMsg);
+					}
+				}
+				*/
+				
+			});
+		}
 	},
 	
 	//截取APP退出功能

+ 44 - 14
pages/dream/view/dream.vue

@@ -4,33 +4,57 @@
 		<news :item="item.data" :config="config"></news>
 	</view>
 	<!--普通图片-->
-	<view v-else-if="item.type == 2">
+	<view v-else-if="item.type == 10">
 		<pic :item="item.data" :config="config"></pic>
-	</view>
+	</view>
+	<!--多张图片-->
+	<view v-else-if="item.type == 11">
+		<swiper class="swiper" autoplay="false" vertical="true" interval="990000">
+			<swiper-item v-for="(v, k) in item.data">
+				<pic :item="v" :config="config"></pic>
+			</swiper-item>
+		</swiper>
+	</view>
+	
 	<!--四宫格图片-->
-	<view v-else-if="item.type == 3">
+	<view v-else-if="item.type == 12">
 		<picGrid :item="item.data" :config="config"></picGrid>
-	</view>
+	</view>
+	
+	<!--多张四宫格图片-->
+	<view v-else-if="item.type == 13">
+		<swiper class="swiper" autoplay="false" vertical="true" interval="990000">
+			<swiper-item v-for="(v, k) in item.data">
+				<picGrid :item="v" :config="config"></picGrid>
+			</swiper-item>
+		</swiper>
+	</view>
+	
+	
 	<!--视频-->
-	<view v-else-if="item.type == 4">
-		<vod :item="item.data" :config="config"></vod>
+	<view v-else-if="item.type == 20">
+		<swiper class="swiper" autoplay="false" vertical="true" interval="990000">
+			<swiper-item v-for="(v, k) in item.data">
+				<vod :item="v" :config="config"></vod>
+			</swiper-item>
+		</swiper>
+	</view>
+	<!--短视频-->
+	<view v-else-if="item.type == 21">
+		<vodShort :item="item.data" :config="config"></vodShort>
 	</view>
 	<!--留言视频-->
-	<view v-else-if="item.type == 5">
+	<view v-else-if="item.type == 22">
 		<vodComment :item="item.data" :config="config"></vodComment>
 	</view>
-	<!--短视频-->
-	<view v-else-if="item.type == 6">
-		<vodShort :item="item.data" :config="config"></vodShort>
-	</view>
 	
 	<!--单个链接-->
-	<view v-else-if="item.type == 11">
+	<view v-else-if="item.type == 80">
 		<linkView :item="item.data" :config="config"></linkView>
 	</view>
 	
 	<!--单页面-->
-	<view v-else-if="item.type == 15">
+	<view v-else-if="item.type == 82">
 		<webView :item="item.data" :config="config"></webView>
 	</view>
 </template>
@@ -66,5 +90,11 @@ export default {
 </script>
 
 <style>
-
+.swiper{
+	width: 100vw;
+	height: 100vh;	
+	position: fixed;
+	top: 0;
+	left: 0;
+}
 </style>

+ 1 - 1
pages/dream/view/news.vue

@@ -19,7 +19,7 @@
 		<view class="grace-art-contents">
 			<block v-for="(v, k) in item.content_array" :key="k">
 			<view :class="[graceSkeleton ? 'grace-skeletons-img' : 'grace-img-in']" v-if="v.type == 'pic'">
-				<image :src="v.content" class="grace-art-img" mode="widthFix" :data-imgurl="v.content" @tap="prevImg"></image>
+				<image :src="v.content" class="grace-art-img" mode="widthFix" @click="Dever.viewPic(item.content_pic, v.content)"></image>
 			</view>
 			<view :class="[graceSkeleton ? 'grace-skeletons' : 'grace-art-content']" v-else-if="v.type == 'html'"><rich-text type="text" :nodes="v.content"></rich-text></view>
 			</block>

+ 11 - 13
pages/dream/view/pic.vue

@@ -1,6 +1,6 @@
 <template name="pic">
-	<view class="cover">
-		<image :src="item.pic" mode="widthFix" :class="['default', 'slide-image-'+item.type]"></image>
+	<view class="cover cover-height">
+		<image @click="Dever.viewPic([item.pic], item.pic)" :src="item.pic" mode="widthFix" :class="['default', 'slide-image-'+item.type]"></image>
 		<pos :item="item" :down="item.pic"></pos>
 	</view>
 </template>
@@ -34,6 +34,14 @@ export default {
   overflow: hidden;
   width: 100%;
   height: 100%;
+}
+.cover-height{
+  overflow: auto;
+  position: absolute;
+  top:0;
+  left:0;
+  width:100%;
+  height:100%;
 }
 .slide-image-1 {
   width: 750rpx;
@@ -41,17 +49,7 @@ export default {
   display: block;
 }
 .slide-image-2 {
-  width: 750rpx;
-  height: 100%;
-  display: block;
-}
-.slide-image-3 {
-  width: 100%;
-  height: 1386rpx;
-  display: block;
-}
-.slide-image-4 {
-  width: 100%;
+  width: 2000rpx;
   height: 100%;
   display: block;
 }

+ 12 - 43
pages/dream/view/picGrid.vue

@@ -1,8 +1,6 @@
 <template name="picGrid">
-	<view class="cover">
-		<block v-for="(v, k) in item.text">
-			<image :class="['abs-tag', position[v.text-1]]" v-if="v.pic" :src="v.pic" mode="widthFix"></image>
-		</block>
+	<view class="pics4-view">
+		<image v-for="(v, k) in item.text" v-if="v.pic" class="default slide-image" :src="v.pic" mode="aspectFill" @click="Dever.viewPic(item.text, v.pic, 'pic')"></image>
 	</view>
 </template>
 
@@ -30,45 +28,16 @@ export default {
 }
 </script>
 
-<style>
-.abs-tag {
-  position: fixed;
-  color: #fff;
+<style>
+.pics4-view{
   display: flex;
-  flex-direction: column;
-}
-.abs-tag view{
-  line-height: 1em;
-  overflow: hidden;
-}
-.abs-tag text {
-  background-color: #000;
-  margin-bottom: 10rpx;
-  font-size: 28rpx;
-  line-height: 1;
-  padding: 0 2rpx;
-}
-
-.abs-tag.tl {
-
-}
-
-.abs-tag.tr {
-  right: 0rpx;
-}
-
-.abs-tag.bl {
-  width: 50%;
-  height:50%;
-  bottom: 125rpx;
-  left: 30rpx;
-}
-
-.abs-tag.br {
-  width: 50%;
-  height:50%;
-  bottom: 125rpx;
-  right: 30rpx;
-  text-align: right;
+  flex-wrap: wrap;
+  width: 750rpx;
+  height: 100%;
+}
+.slide-image {
+  height: 666rpx;
+  width: 50%;
+  display: block;
 }
 </style>

+ 2 - 2
pages/dream/view/vodShort.vue

@@ -1,6 +1,6 @@
 <template name="vodShort">
 	<view>
-		<swiper class="swiper" autoplay="false" vertical="true" interval="990000" @change="change">
+		<swiper class="swiper" autoplay="false" vertical="true" interval="990000" @change="changeVod">
 			<swiper-item v-for="(v, k) in item">
 		
 				<video
@@ -141,7 +141,7 @@ export default {
 				//console.info('暂停', id, this.current_index);
 			}
 		},
-		change : function(e)  {
+		changeVod : function(e)  {
 			// 暂停之前的视频
 			this.stop();
 			this.current_index = e.detail.current;