Browse Source

Merge branch 'develop_sale20' of jianguan-web/repairYimatong-mini-html into master

李磊 1 year ago
parent
commit
cdabac58e9

+ 3 - 3
App.vue

@@ -1,9 +1,9 @@
 <script>
 	export default {
 		globalData: {
-			// baseUrl: 'http://192.168.2.103:7002/saas/clz/', // 本地
-			baseUrl: 'https://md.test.zyucgj.com/saas/clz/', // 预发布
-			// baseUrl: 'https://car.zyucgj.com/saas/clz/' // 生产
+			// baseUrl: 'http://192.168.2.113:7002/saas/clz/', // 本地
+			// baseUrl: 'https://md.test.zyucgj.com/saas/clz/', // 预发布
+			baseUrl: 'https://car.zyucgj.com/saas/clz/' // 生产
 		},
 		onLaunch: function() {
 			console.log('App Launch');

+ 34 - 0
api/video.js

@@ -0,0 +1,34 @@
+import request from './request';
+
+// 首页轮播图
+export const promoTerminalList = params => {
+  return request({
+    url: `promoTerminal/queryByDealerSn/${params.sn}`,
+    method: 'get',
+    data: ''
+  })
+}
+// 活动详情
+export const promoTerminalDetail = params => {
+  return request({
+    url: `promoTerminal/findBySn/${params.sn}`,
+    method: 'get',
+    data: ''
+  })
+}
+// 视频列表
+export const getVideoList = (params) => {
+  return request({
+    url: `content/queryPage/${params.pageNo}/${params.pageSize}`,
+    data: params,
+    method: 'post'
+  })
+}
+// 视频详情
+export const videoDetail = params => {
+  return request({
+    url: `content/findById/${params.id}`,
+    method: 'get',
+    data: ''
+  })
+}

+ 41 - 16
pages.json

@@ -23,22 +23,19 @@
 			}
 		},
 		{
-			"path": "pages/about",
-			"style": {
-				"navigationBarTitleText": "关于我们"
-			}
-		},
+		    "path" : "pages/videos/index",
+		    "style" :                                                                                    
 		{
-			"path": "pages/xieyi/index",
-			"style": {
-				"navigationBarTitleText": "用户协议和隐私政策"
-			}
-		},
+		    "navigationBarTitleText": "视频内容",
+		    "enablePullDownRefresh": false
+		}
+		},{
+		    "path" : "pages/videos/detail",
+		    "style" :                                                                                    
 		{
-			"path": "pages/h5Page/index",
-			"style": {
-				"navigationBarTitleText": "车领主"
-			}
+		    "navigationBarTitleText": "视频内容",
+		    "enablePullDownRefresh": false
+		}
 		},
 		{
 			"path": "pages/personData/personData",
@@ -174,12 +171,29 @@
                 "navigationBarTitleText": "设置岗位",
                 "enablePullDownRefresh": false
             }
-            
         }
     ],
 	"subPackages":[{
 		"root": "pagesA",
 		"pages":[
+			{
+				"path": "about",
+				"style": {
+					"navigationBarTitleText": "关于我们"
+				}
+			},
+			{
+				"path": "xieyi/index",
+				"style": {
+					"navigationBarTitleText": "用户协议和隐私政策"
+				}
+			},
+			{
+				"path": "h5Page/index",
+				"style": {
+					"navigationBarTitleText": "页面"
+				}
+			},
 			{
 			    "path" : "digitalShelf/choosePart",
 			    "style" :                                                                                    
@@ -334,7 +348,15 @@
 			    }
 			    
 			}
-		]
+            ,{
+                    "path" : "activeDetail/index",
+                    "style" :                                                                                    
+                {
+                    "navigationBarTitleText": "活动内容",
+                    "enablePullDownRefresh": false
+                }
+                }
+            ]
 	}],
 	"preloadRule": {
 		"pages/index/index": {
@@ -356,6 +378,9 @@
 		"list": [{
 				"pagePath": "pages/index/index"
 			},
+			{
+				"pagePath": "pages/videos/index"
+			},
 			{
 				"pagePath": "pages/morePage/morePage"
 			}

+ 68 - 24
pages/index/index.vue

@@ -65,7 +65,6 @@
 					<text>没有VIN,直接取货</text>
 				</view> -->
 				<view class="action-button flex" v-if="userInfo.sysUserFlag == '1'">
-					<view></view>
 					<view class="f1" @click="openTakeGood(1)">
 						<view class="icons"><u-icon name="shujuchaxun" custom-prefix="custom-icon"></u-icon></view>
 						<view class="tits">产品编码取货</view>
@@ -74,12 +73,11 @@
 						<view class="icons"><u-icon name="saomasoudan" custom-prefix="custom-icon"></u-icon></view>
 						<view class="tits">二维码/条形码取货</view>
 					</view>
-					<view></view>
 				</view>
 				<view style="margin-top: 20upx;">
 					<u-swiper mode="dot" bg-color="" img-mode="widthFix" @click="clickBanner" :interval="3000" :height="374" :list="imgList"></u-swiper>
 				</view>
-				<u-action-sheet :list="actionList" @click="clickAction" v-model="showAction"></u-action-sheet>
+				<!-- <u-action-sheet :list="actionList" @click="clickAction" v-model="showAction"></u-action-sheet> -->
 			</view>
 			<!-- 扫描记录 -->
 			<view class="list-box">
@@ -108,7 +106,7 @@
 			</view>
 			</view>
 		</view>
-		<u-tabbar :list="vuex_tabBarList" :before-switch="beforeSwitch" :mid-button="true"></u-tabbar>
+		<u-tabbar :list="vuex_tabBarList" :before-switch="beforeSwitch" :mid-button="false"></u-tabbar>
 	</view>
 </template>
 
@@ -124,7 +122,9 @@
 	import { findCurrentRewardRule } from '@/api/rewardRule.js'
 	import { listLookUp, getLookUpDatas, getCurrUserInfo } from '@/api/data.js';
 	import { scanVinLogQueryRoll, getScanVinLogList, getScanGetMaxQty }from '@/api/car.js'
+	import { promoTerminalList } from '@/api/video.js'
 	import { getRewardRollList } from '@/api/rewardRule.js'
+	import { openWebView } from "@/utils/index.js"
 	export default {
 		components: {
 			scrollBox,
@@ -153,6 +153,7 @@
 						fontSize: 32
 					}
 				],
+				carouselList: []
 			}
 		},
 		computed: {
@@ -171,15 +172,20 @@
 				return rule&&rule.ruleStatus == 'release'
 			},
 			imgList(){
+				let list = [
+					{
+						image: '/static/banner1.png',
+						activeType: ''
+					}
+				]
 				if(this.hasRedPacket&&this.hasShelf){
-					return [{
-						image: '/static/banner2.png'
-					}]
-				}else{
-					return [{
-						image: '/static/banner1.png'
-					}]
+					list.push(
+					{
+						image: '/static/banner2.png',
+						activeType: 'redPacket'
+					})
 				}
+				return list.concat(this.carouselList) 
 			}
 		},
 		onReady() {
@@ -198,6 +204,8 @@
 			this.orderTodo = null
 			this.bondRecord = null
 			this.vinList = []
+			// 视频类型
+			this.getLookUpList('CONTENT_CATEGORY', 'vuex_videoTypeList');
 			// 检测是否登录
 			this.$store.dispatch('checkLogin',()=>{
 				// 获取数据字典
@@ -254,7 +262,30 @@
 					return true
 				}
 			},
+			// 轮播图片
+			getCarousel(){
+				this.carouselList = []
+				const storeShelf = this.$store.state.vuex_storeShelf
+				promoTerminalList({sn:storeShelf.dealerSn}).then(res => {
+					if(res.status == 200){
+						res.data&&res.data.map(item => {
+							item.imageSet&&item.imageSet.map(k => {
+								this.carouselList.push({
+									image: k,
+									title: item.title,
+									contentType: item.contentType,
+									id: item.id,
+									name: item.name,
+									promoActiveSn: item.promoActiveSn,
+									content: item.content
+								})
+							})
+						})
+					}
+				})
+			},
 			pageInit(){
+				this.carouselList = []
 				if(this.hasLogin){
 					// 获取扫描记录
 					this.getVinLog()
@@ -380,6 +411,8 @@
 							this.getShelfBWPayRecord()
 							// 获取订单信息
 							this.shelfGetTotalWaitQty()
+							// 获取轮播数据
+							this.getCarousel()
 						}
 				})
 			},
@@ -422,9 +455,23 @@
 			},
 			// 单击banner
 			clickBanner(index){
-				if(index == 0 && this.hasRedPacket){
+				const row = this.imgList[index]
+				console.log(row)
+				if(row.activeType == 'redPacket'){
 					uni.navigateTo({url:"/pages/morePage/redPacket"})
 				}
+				// 图文
+				if(row.contentType == 'IMAGE_CONTENT'){
+					uni.navigateTo({url:"/pagesA/activeDetail/index?sn="+row.promoActiveSn})
+				}
+				// 视频
+				if(row.contentType == 'VIDEO'){
+					uni.navigateTo({url:"/pages/videos/detail?form=banner&&sn="+row.promoActiveSn})
+				}
+				// 链接
+				if(row.contentType == 'LINK'){
+					openWebView({url:row.content})
+				}
 			},
 			// 选择取货方式
 			clickAction(index){
@@ -585,24 +632,23 @@
 				padding:40upx 0 0 0;
 				justify-content: space-between;
 				> view{
-					text-align: center;
 					display: flex;
 					align-items: center;
-					flex-direction: column;
+					color: #fff;
+					border-radius: 10rpx;
+					width: 49%;
 				}
 				.f1{
-					width: 140rpx;
+					background: #ff9800;
 				}
 				.f2{
-					width: 150rpx;
+					background: #2196f3;
 				}
 				.icons{
-					font-size: 60rpx;
-					background: #066cff;
+					font-size: 50rpx;
 					color: #fff;
-					border-radius: 30rpx;
-					width: 110rpx;
-					height: 110rpx;
+					width: 80rpx;
+					height: 80rpx;
 					text-align:center;
 					display: flex;
 					align-items: center;
@@ -610,9 +656,7 @@
 					justify-content: center;
 				}
 				.tits{
-					font-size:30rpx;
-					font-weight: bold;
-					padding: 10upx  0;
+					font-size:28rpx;
 				}
 			}
 			.scanButton{

+ 21 - 8
pages/login/login.vue

@@ -6,15 +6,16 @@
 			</view>
 		    <view class="login-btns">
 				<u-button shape="circle" :custom-style="wxButton" class="login-btn" type="success" :hair-line="false" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">
-					微信手机号快捷登录
+					手机号快捷登录
 				</u-button>
 				<u-button shape="circle" :custom-style="phoneButton" class="login-btn phoneBtn" @click="phoneLogin" :hoverClass='none'>
 					手机验证码登录
 				</u-button>
 		    </view>
 		</view>
-		<view class="xieyi" @click="gotoXieyi()">
-			登录即代表您已阅读并同意 <text>《用户协议》和《隐私政策》</text>
+		<view class="xieyi" style="display: flex;align-items: center;padding:50upx 0;justify-content: center;font-size: 24rpx;">
+			<u-checkbox v-model="tyYd" shape="circle" style="width:25px;"></u-checkbox>
+			登录代表您已同意<text @click="gotoXieyi()">隐私政策、服务条款</text>
 		</view>
 	</view>
     
@@ -34,6 +35,7 @@
             return {
 				path: '/pages/index/index',
 				lanuch: false,
+				tyYd: false,
 				mobile: '',
 				code: '',
 				codeText: '获取验证码',
@@ -83,9 +85,20 @@
 		},
         methods: {
 			...mapMutations(['login']),
+			changeYd(v){
+				this.tyYd = v
+			},
 			// 微信授权登录
 			getPhoneNumber(e) {
 				let _this = this
+				if(!this.tyYd){
+					uni.showToast({
+						title: "请阅读并同意隐私政策、服务条款",
+						icon: "none"
+					})
+					return
+				}
+				
 				uni.showLoading({
 					mask: true,
 					title: '加载中'
@@ -165,7 +178,7 @@
             },
 			gotoXieyi(url){
 				uni.navigateTo({
-					url: '/pages/xieyi/index?id=0'
+					url: '/pagesA/xieyi/index?id=0'
 				})
 			}
         },
@@ -179,12 +192,14 @@
 	.content{
 		width: 100%;
 		height: 100vh;
-		padding:0 125upx;
+		padding:0 25upx;
 		display: flex;
 		flex-direction: column;
 		text-align: center;
 		.content-body{
-			flex: 1;
+			padding:0 100upx;
+			flex-grow: 1;
+			height: 80%;
 			.logo{
 				display: inline-block;
 				margin:250upx 0 120upx;
@@ -195,8 +210,6 @@
 			}
 		}
 		.xieyi{
-			font-size: 24upx;
-			padding-bottom: 60upx;
 			text{
 				color:#1283d4
 			}

+ 20 - 10
pages/login/phoneLogin.vue

@@ -19,9 +19,10 @@
 				</u-form-item>
 			</u-form>
 		</view>
- 
-		<view class="xieyi" @click="gotoXieyi()">
-			登录即代表您已阅读并同意 <text>《用户协议》和《隐私政策》</text>
+  
+		<view class="xieyi" style="display: flex;align-items: center;padding:50upx 0;justify-content: center;font-size: 24rpx;">
+			<u-checkbox v-model="tyYd" shape="circle" style="width:25px;"></u-checkbox>
+			登录代表您已同意<text @click="gotoXieyi()">隐私政策、服务条款</text>
 		</view>
 		<!-- 图文验证码 -->
 		<uni-popup @change="changeModal" ref="imageTxtPopup" type="center">
@@ -60,6 +61,7 @@
 				codeText: '获取验证码',
 				getCodeing: false,
 				totalTime: 60,
+				tyYd: false,
 				yzmBtn: {
 					background: "#ffffff"
 				},
@@ -80,6 +82,9 @@
 		},
 		methods: {
 			...mapMutations(['login']),
+			changeYd(v){
+				this.tyYd = v
+			},
 			// 获取验证码
 			getCode() {
 				let sid = null
@@ -169,6 +174,13 @@
 			},
 			// 登录
 			bindLogin() {
+				if(!this.tyYd){
+					uni.showToast({
+						title: "请阅读并同意隐私政策、服务条款",
+						icon: "none"
+					})
+					return
+				}
 				let mobile = this.mobile
 				let openid = this.$store.state.vuex_openid
 				let code = this.code
@@ -200,7 +212,7 @@
 			// 用户协议
 			gotoXieyi(url) {
 				uni.navigateTo({
-					url: '/pages/xieyi/index?id=0'
+					url: '/pagesA/xieyi/index?id=0'
 				})
 			},
 		},
@@ -217,10 +229,12 @@
 		flex-direction: column;
 		width: 100%;
 		height: 100vh;
-		padding: 0 125upx;
+		padding: 0 25upx;
 
 		.login-content {
-			flex: 1;
+			padding:0 100upx;
+			flex-grow: 1;
+			height: 80%;
 
 			.login-logo {
 				text-align: center;
@@ -233,10 +247,6 @@
 		}
 
 		.xieyi {
-			font-size: 24upx;
-			text-align: center;
-			padding-bottom: 60upx;
-
 			text {
 				color: #1283d4
 			}

+ 1 - 1
pages/morePage/morePage.vue

@@ -88,7 +88,7 @@
 			</view>
 		</u-popup>
 	</view>
-	<u-tabbar :list="vuex_tabBarList" :before-switch="beforeSwitch" :mid-button="true"></u-tabbar>
+	<u-tabbar :list="vuex_tabBarList" :before-switch="beforeSwitch" :mid-button="false"></u-tabbar>
 	</view>
 </template>
 

+ 1 - 1
pages/morePage/redPacket.vue

@@ -99,7 +99,7 @@
 				total: 0,
 				rewardStatus: ['','paid','un_paid'], //un_paid 未发放,paid 已发放
 				list: [],
-				curTab:'0'
+				curTab:'2'
 			}
 		},
 		onLoad(){

+ 72 - 0
pages/videos/detail.vue

@@ -0,0 +1,72 @@
+<template>
+	<view class="content" v-if="content">
+		<view class="acitve-content">
+			<video id="myvideo" autoplay direction="0" @fullscreenchange="fullscreenchange" :title="title" :src="content" controls></video>
+		</view>
+		<view class="titles">{{title}}</view>
+	</view>
+</template>
+
+<script>
+	import { promoTerminalDetail } from '@/api/video.js'
+	export default {
+		data() {
+			return {
+				title: null,
+				content: '',
+				id: null
+			}
+		},
+		onLoad(opts) {
+			if(opts.form=='videoList'){
+				this.title = opts.title
+				this.content = opts.content
+				this.videoFull()
+			}else{
+				this.id = opts.sn
+				this.getDetail()
+			}
+		},
+		methods: {
+			fullscreenchange(e, direction){
+				if(!e.detail.fullScreen){
+					uni.navigateBack()
+				}
+			},
+			videoFull(){
+				const videos = uni.createVideoContext('myvideo',this)
+				videos.requestFullScreen()
+			},
+			getDetail(){
+				promoTerminalDetail({sn:this.id}).then(res => {
+					this.title = res.data.name
+					this.content = res.data.content
+					uni.setNavigationBarTitle({
+						title: res.data.name || '活动内容'
+					})
+					this.videoFull()
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="less">
+	page{
+		padding: 0;
+	}
+	.content{
+		padding: 0;
+		.titles{
+			text-align: center;
+			padding: 20rpx;
+			font-weight: bold;
+		}
+		.acitve-content{
+			padding: 0;
+			video{
+				width:100%;
+			}
+		}
+	}
+</style>

+ 273 - 0
pages/videos/index.vue

@@ -0,0 +1,273 @@
+<template>
+	<view class="video-pagesCons">
+		<view class="tab-body">
+			    <view>
+					<u-tabs-swiper ref="uTabs" :list="tabList" :offset="[5,40]" bar-width='100' active-color="#1283d4" name="dispName" :current="current" @change="tabsChange" :is-scroll="false"
+					 swiperWidth="750"></u-tabs-swiper>
+				</view>
+				<swiper class="check-list" :current="swiperCurrent" @transition="transition" @change="swiperChange" @animationfinish="animationfinish">
+					<swiper-item class="swiper-item" style="height: 100%;width: 100%;overflow: hidden;" v-for="(tabs, indexs) in tabList" :key="indexs">
+						<scroll-view scroll-y style="height: 100%;width: 100%;overflow: auto;" @scrolltolower="onreachBottom">
+							<view  
+							class="check-order-list" 
+							v-for="(item,index) in list" 
+							:key="item.id" 
+							 @click="viewRow(item)"
+							>
+								<view class="video-item">
+									<view>
+										<view class="play-btn" v-if="!item.showVideo&&item.contentType == 'VIDEO'">
+											<u-icon size="24" color="#fff" name="play-right-fill"></u-icon>
+										</view>
+										<view class="pnums" v-if="!item.showVideo&&item.contentType == 'VIDEO'">
+											<u-icon size="30" color="#fff" name="eye-fill"></u-icon>
+											{{item.viewNum}}
+										</view>
+										<u-image :src="item.imageSet[0]" height="200px" width="100%"></u-image>
+									</view>
+									<view class="ellipsis-two">{{item.titile}}</view>
+								</view>
+							 </view>
+							 <view style="padding: 20upx;">
+								 <u-empty :src="`/static/nodata.png`" icon-size="180" :text="noDataText" img-width="120" v-if="list.length==0 && status!='loading'" mode="list"></u-empty>
+								 <u-loadmore v-if="(total>=list.length&&list.length)||status=='loading'" :status="status" />
+							 </view>
+						</scroll-view>
+					</swiper-item>
+				</swiper>
+		</view>
+		<u-tabbar :list="vuex_tabBarList" :before-switch="beforeSwitch" :mid-button="false"></u-tabbar>
+	</view>
+</template>
+
+<script>
+	import {
+	    mapState,
+	    mapMutations,
+	} from 'vuex'
+	import { getVideoList, videoDetail } from "@/api/video.js"
+	import { openWebView } from "@/utils/index.js"
+	export default {
+		data() {
+			return {
+				status: 'loading',
+				noDataText: '暂无数据',
+				current: 0,
+				swiperCurrent: 0,
+				// 查询条件
+				pageNo: 1,
+				pageSize: 10,
+				list: [],
+				total: 0,
+				videoObj:null
+			}
+		},
+		computed: {
+			...mapState(['hasLogin','vuex_vinScanNums','vuex_scanMaxNums','vuex_tabBarList','vuex_videoTypeList']),
+			userInfo(){
+				return this.$store.state.vuex_userInfo
+			},
+			tabList(){
+				return this.$store.state.vuex_videoTypeList
+			}
+		},
+		onLoad() {
+			this.pageInit()
+		},
+		onHide() {
+			this.list.map(item => {
+				item.showVideo = false
+			})
+		},
+		methods: {
+			pageInit(){
+				this.total = 0
+				this.pageNo = 1
+				this.getRow()
+			},
+			// tabs通知swiper切换
+			tabsChange(index) {
+				this.swiperCurrent = index;
+			},
+			swiperChange(event){
+				console.log(event.detail)
+				this.list = []
+				this.status = "loading"
+			},
+			// swiper-item左右移动,通知tabs的滑块跟随移动
+			transition(e) {
+				let dx = e.detail.dx;
+				this.$refs.uTabs.setDx(dx);
+			},
+			// 由于swiper的内部机制问题,快速切换swiper不会触发dx的连续变化,需要在结束时重置状态
+			// swiper滑动结束,分别设置tabs和swiper的状态
+			animationfinish(e) {
+				let current = e.detail.current;
+				if(current != this.current){
+					this.$refs.uTabs.setFinishCurrent(current);
+					this.swiperCurrent = current;
+					this.current = current;
+					this.pageInit()
+				}
+			},
+			// scroll-view到底部加载更多
+			onreachBottom() {
+				console.log(this.list.length, this.total)
+				if(this.list.length < this.total){
+					this.pageNo += 1
+					this.getRow()
+				}else{
+					this.status = "nomore"
+				}
+			},
+			// 查询列表
+			getRow (pageNo) {
+			  let _this = this
+			  if (pageNo) {
+			    this.pageNo = pageNo
+			  }
+			  let params = {
+			    pageNo: this.pageNo,
+			    pageSize: this.pageSize,
+			  }
+			  params.category = this.tabList ? this.tabList[this.swiperCurrent].code : ''
+			  this.status = "loading"
+			  getVideoList(params).then(res => {
+				if (res.code == 200 || res.status == 204 || res.status == 200) {
+				  const list = res.data.list || []
+				  list.map(item => {
+					  item.showVideo = false
+				  })
+				  if(_this.pageNo>1){
+					  _this.list = _this.list.concat(list)
+				  }else{
+					  _this.list = list
+				  }
+				  _this.total = res.data.count || 0
+				} else {
+				  _this.list = []
+				  _this.total = 0
+				  _this.noDataText = res.message
+				}
+				_this.status = _this.total>=_this.list.length ? "nomore" : 'loadmore'
+			  })
+			},
+			// 详细页
+			viewRow(item){
+				if(item.contentType == 'VIDEO' && !item.showVideo){
+					// item.showVideo = true
+					videoDetail({id: item.id}).then(res => {
+						if(res.data){
+							item.viewNum = res.data.viewNum
+							this.list.splice()
+							uni.navigateTo({
+								url: "/pages/videos/detail?form=videoList&&title="+item.titile+"&&content="+item.content
+							})
+						}
+					})
+				}
+				if(item.contentType == 'LINK'){
+					openWebView({url:item.content})
+				}
+			},
+			// 扫描vin
+			beforeSwitch(index){
+				console.log(index)
+				if(index==1){
+					this.openCamera()
+				}else{
+					return true
+				}
+			},
+			// 去扫描
+			openCamera(){
+				if(this.hasLogin){
+					if(this.userInfo.sysUserFlag == '0'){
+						if(this.vuex_vinScanNums < this.vuex_scanMaxNums){
+							uni.navigateTo({
+								url: "/pages/scan-frame/scan-frame"
+							})
+						}else{
+							uni.showModal({
+								title: '提示',
+								content: '个人用户扫描VIN仅限10次,您的次数已用完!',
+								confirmText: '好的',
+								showCancel: false,
+								success(res) {}
+							})
+						}
+					}else{
+						uni.navigateTo({
+							url: "/pages/scan-frame/scan-frame"
+						})
+					}
+				}else{
+					uni.navigateTo({
+						url: '/pages/login/login'
+					})
+				}
+			},
+		}
+	}
+</script>
+
+<style lang="less">
+    page{
+		height: 100vh;
+	}
+	.video-pagesCons{
+		height: 100%;
+		display: flex;
+		flex-direction: column;
+		.tab-body{
+			.check-list{
+				height: calc(100vh - 126px);
+			}
+			.check-order-list{
+				background: #ffffff;
+				padding: 20upx;
+				margin: 25upx;
+				border-radius: 10upx;
+				box-shadow: 1px 1px 3px #EEEEEE;
+				.video-item{
+					> view{
+						&:first-child{
+							position: relative;
+							.play-btn{
+								width: 40rpx;
+								height: 40rpx;
+								background: rgba(0,0,0,0.35);
+								border-radius: 150rpx;
+								position: absolute;
+								top: 20rpx;
+								right:30rpx;
+								z-index: 100;
+								display: flex;
+								align-items: center;
+								justify-content: center;
+							}
+							.pnums{
+								position: absolute;
+								left:20rpx;
+								bottom: 20rpx;
+								background: rgba(0,0,0,0.35);
+								padding: 4rpx 10rpx;
+								border-radius: 50rpx;
+								display: flex;
+								align-items: center;
+								color:#fff;
+								z-index: 110;
+								font-size: 24rpx;
+							}
+						}
+						&:last-child{
+							text-align: center;
+							font-size: 36rpx;
+							margin: 20rpx 0 0;
+						}
+					}
+				}
+			}
+		}
+	}
+</style>

+ 0 - 0
pages/about.vue → pagesA/about.vue


+ 61 - 0
pagesA/activeDetail/index.vue

@@ -0,0 +1,61 @@
+<template>
+	<view class="content" v-if="detail">
+		<view class="titles">{{detail.title}}</view>
+		<view class="acitve-content">
+			<u-parse :html="content" :tag-style="style"></u-parse>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { promoTerminalDetail } from '@/api/video.js'
+	export default {
+		data() {
+			return {
+				detail: null,
+				style: {
+					p: 'margin-bottom:10px;'
+				},
+				promoActiveSn: null
+			}
+		},
+		computed: {
+			content() {
+				return this.detail && this.detail.content 
+			}
+		},
+		onLoad(opts) {
+			this.promoActiveSn = opts.sn
+			this.getDetail()
+		},
+		methods: {
+			getDetail(){
+				uni.showLoading({
+					title: "正在加载..."
+				})
+				promoTerminalDetail({sn:this.promoActiveSn}).then(res => {
+					this.detail = res.data
+					uni.setNavigationBarTitle({
+						title: res.data.name || '活动内容'
+					})
+					uni.hideLoading()
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="less">
+	.content{
+		padding: 30rpx;
+		.titles{
+			text-align: center;
+			padding: 20rpx 0;
+			border-bottom: 1px solid #eee;
+			font-weight: bold;
+		}
+		.acitve-content{
+			padding: 20rpx 0;
+		}
+	}
+</style>

+ 0 - 0
pages/h5Page/index.vue → pagesA/h5Page/index.vue


+ 0 - 0
pages/xieyi/index.vue → pagesA/xieyi/index.vue


BIN
static/tab/midBtn.png


BIN
static/tab/tab_home_normal.png


BIN
static/tab/tab_home_pressed.png


BIN
static/tab/tab_scan_normal.png


BIN
static/tab/tab_scan_pressed.png


BIN
static/tab/tab_video_normal.png


BIN
static/tab/tab_video_pressed.png


+ 10 - 3
store/index.js

@@ -51,6 +51,7 @@ const store = new Vuex.Store({
 		vuex_allLookUp: [],  //  数据字典
 		vuex_paymentTypeList: [], // 支付方式
 		vuex_priceTypeList:[], // 价格类型
+		vuex_videoTypeList:[], // 视频类型
 		vuex_showPrice:[false,'',false], // 价格显示规则
 		vuex_userInfo:  null, // 用户信息
 		vuex_userPhoto: null, // 用户头像
@@ -72,10 +73,16 @@ const store = new Vuex.Store({
 				'customIcon': false,
 			},
 			{
-				'iconPath': "/static/tab/midBtn.png",
-				'selectedIconPath': "/static/tab/midBtn.png",
+				'iconPath': "/static/tab/tab_scan_normal.png",
+				'selectedIconPath': "/static/tab/tab_scan_pressed.png",
 				'text': '扫描VIN',
-				'midButton': true,
+				'customIcon': false,
+			},
+			{
+				"pagePath": "/pages/videos/index",
+				"iconPath": "/static/tab/tab_video_normal.png",
+				"selectedIconPath": "/static/tab/tab_video_pressed.png",
+				"text": "视频",
 				'customIcon': false,
 			},
 			{

+ 1 - 1
utils/index.js

@@ -72,7 +72,7 @@ export function openWebView(item){
 		// 外链
 		if(item.url.indexOf("http")>=0){
 			uni.navigateTo({
-				url: '/pages/h5Page/index?src='+item.url
+				url: '/pagesA/h5Page/index?src='+item.url
 			})
 		}else{
 			uni.navigateTo({