wyling 4 роки тому
батько
коміт
8325c89ba6

+ 11 - 0
.hbuilderx/launch.json

@@ -0,0 +1,11 @@
+{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+  // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+    "version": "0.0",
+    "configurations": [{
+            "type": "uniCloud",
+            "default": {
+                "launchtype": "remote"
+            }
+        }
+    ]
+}

+ 0 - 36
src/components/appdes/index.vue

@@ -1,36 +0,0 @@
-<template>
-	<view class='list-item' v-for="(item, index) in applist" :key="index" @click="goMiniApp(item)">
-		<image class="avatar" mode="aspectFill" :src="item.appletLogoFileUrl || '/static/imgs/shmr.png'">
-			<view class="item-right">
-				<view class="top">
-					<van-icon class="icon" v-if="item.collectionStatus=='0'" @tap.stop='addSc(index)' name="/static/imgs/sc.png"
-					 size='15' />
-					<van-icon class="icon" v-else name="/static/imgs/ysc.png" @tap.stop='delSc(index)' size='15' />
-					<van-icon class="icon" name="/static/imgs/zf.png" @tap.stop='showShare=true' size='14' />
-					<!-- <van-icon class="icon" name="/static/imgs/bxh.png" size='12' /> -->
-				</view>
-				<view class="center">
-					<text class="details">{{item.appletIntroduce || '该商家暂无描述,敬请期待!'}}</text>
-				</view>
-				<view class="bottom">
-					<text class="title">{{item.corporateName}}</text>
-					<view class="right" v-if="false">
-						<view class="flex">
-							<van-icon class="icon" name="/static/imgs/评论.png" size='15' />
-							<text>54</text>
-						</view>
-						<view class="flex">
-							<van-icon class="icon" name="/static/imgs/好评率.png" size='15' />
-							<text>99%</text>
-						</view>
-					</view>
-				</view>
-			</view>
-	</view>
-</template>
-
-<script>
-</script>
-
-<style>
-</style>

+ 0 - 0
src/components/index.js


+ 0 - 193
src/components/skeleton/index/index.vue

@@ -1,193 +0,0 @@
-<template>
-	<view class="skeleton-box">
-		<view v-if="loading" class="skeleton">
-			<div class="spinner">
-			  <div class="spinner-container container1">
-			    <div class="circle1"></div>
-			    <div class="circle2"></div>
-			    <div class="circle3"></div>
-			    <div class="circle4"></div>
-			  </div>
-			  <div class="spinner-container container2">
-			    <div class="circle1"></div>
-			    <div class="circle2"></div>
-			    <div class="circle3"></div>
-			    <div class="circle4"></div>
-			  </div>
-			  <div class="spinner-container container3">
-			    <div class="circle1"></div>
-			    <div class="circle2"></div>
-			    <div class="circle3"></div>
-			    <div class="circle4"></div>
-			  </div>
-			</div>
-		</view>
-		<van-transition v-else-if="list.length==0" name="fade-up">
-			<view class="skeleton">
-				暂时没有数据
-			</view>
-		</van-transition>
-		<van-transition v-else name="fade-up">
-			<slot></slot>
-		</van-transition>
-	</view>
-</template>
-
-<script>
-	export default {
-		props: {
-			loading: {
-				type: Boolean,
-				default: true
-			},
-			list: {
-				type: Array,
-				default: [1]
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.skeleton {
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		padding: 50rpx;
-		height: 320rpx;
-	}
-
-	.led {
-		width: 10rpx;
-		height: 30rpx;
-		border-radius: 10rpx;
-		top: 50rpx;
-		position: absolute;
-		transform: rotate(calc(360deg / var(--all) * var(--i)));
-		transform-origin: 0 160rpx;
-		animation: loading 2s linear infinite;
-		animation-delay: calc(var(--i) * 1s);
-		background-color: green;
-	}
-
-	@keyframes loading {
-		from {
-			opacity: 0;
-		}
-
-		to {
-			opacity: 1;
-		}
-	}
-	
-	.spinner {
-	  margin: 100px auto;
-	  width: 20px;
-	  height: 20px;
-	  position: relative;
-	}
-	 
-	.container1 > div, .container2 > div, .container3 > div {
-	  width: 6px;
-	  height: 6px;
-	  background-color: #333;
-	 
-	  border-radius: 100%;
-	  position: absolute;
-	  -webkit-animation: bouncedelay 1.2s infinite ease-in-out;
-	  animation: bouncedelay 1.2s infinite ease-in-out;
-	  -webkit-animation-fill-mode: both;
-	  animation-fill-mode: both;
-	}
-	 
-	.spinner .spinner-container {
-	  position: absolute;
-	  width: 100%;
-	  height: 100%;
-	}
-	 
-	.container2 {
-	  -webkit-transform: rotateZ(45deg);
-	  transform: rotateZ(45deg);
-	}
-	 
-	.container3 {
-	  -webkit-transform: rotateZ(90deg);
-	  transform: rotateZ(90deg);
-	}
-	 
-	.circle1 { top: 0; left: 0; }
-	.circle2 { top: 0; right: 0; }
-	.circle3 { right: 0; bottom: 0; }
-	.circle4 { left: 0; bottom: 0; }
-	 
-	.container2 .circle1 {
-	  -webkit-animation-delay: -1.1s;
-	  animation-delay: -1.1s;
-	}
-	 
-	.container3 .circle1 {
-	  -webkit-animation-delay: -1.0s;
-	  animation-delay: -1.0s;
-	}
-	 
-	.container1 .circle2 {
-	  -webkit-animation-delay: -0.9s;
-	  animation-delay: -0.9s;
-	}
-	 
-	.container2 .circle2 {
-	  -webkit-animation-delay: -0.8s;
-	  animation-delay: -0.8s;
-	}
-	 
-	.container3 .circle2 {
-	  -webkit-animation-delay: -0.7s;
-	  animation-delay: -0.7s;
-	}
-	 
-	.container1 .circle3 {
-	  -webkit-animation-delay: -0.6s;
-	  animation-delay: -0.6s;
-	}
-	 
-	.container2 .circle3 {
-	  -webkit-animation-delay: -0.5s;
-	  animation-delay: -0.5s;
-	}
-	 
-	.container3 .circle3 {
-	  -webkit-animation-delay: -0.4s;
-	  animation-delay: -0.4s;
-	}
-	 
-	.container1 .circle4 {
-	  -webkit-animation-delay: -0.3s;
-	  animation-delay: -0.3s;
-	}
-	 
-	.container2 .circle4 {
-	  -webkit-animation-delay: -0.2s;
-	  animation-delay: -0.2s;
-	}
-	 
-	.container3 .circle4 {
-	  -webkit-animation-delay: -0.1s;
-	  animation-delay: -0.1s;
-	}
-	 
-	@-webkit-keyframes bouncedelay {
-	  0%, 80%, 100% { -webkit-transform: scale(0.0) }
-	  40% { -webkit-transform: scale(1.0) }
-	}
-	 
-	@keyframes bouncedelay {
-	  0%, 80%, 100% {
-	    transform: scale(0.0);
-	    -webkit-transform: scale(0.0);
-	  } 40% {
-	    transform: scale(1.0);
-	    -webkit-transform: scale(1.0);
-	  }
-	}
-</style>

+ 3 - 0
src/components/skeleton/loadSke.js

@@ -0,0 +1,3 @@
+import Vue from "vue";
+import loadSke from "./loadSke.vue";
+Vue.component("loadSke", loadSke);

+ 219 - 0
src/components/skeleton/loadSke.vue

@@ -0,0 +1,219 @@
+<template>
+	<view class="skeleton-box">
+		<view v-if="loading" class="skeleton">
+			<div class="spinner">
+				<div class="spinner-container container1">
+					<div class="circle1"></div>
+					<div class="circle2"></div>
+					<div class="circle3"></div>
+					<div class="circle4"></div>
+				</div>
+				<div class="spinner-container container2">
+					<div class="circle1"></div>
+					<div class="circle2"></div>
+					<div class="circle3"></div>
+					<div class="circle4"></div>
+				</div>
+				<div class="spinner-container container3">
+					<div class="circle1"></div>
+					<div class="circle2"></div>
+					<div class="circle3"></div>
+					<div class="circle4"></div>
+				</div>
+			</div>
+		</view>
+		<view v-else-if="list.length==0" class="skeleton">
+			暂时没有数据
+		</view>
+		<slot v-else></slot>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			loading: {
+				type: Boolean,
+				default: true
+			},
+			list: {
+				type: Array,
+				default: [1]
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.skeleton {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		padding: 50rpx;
+		height: 320rpx;
+	}
+
+	.led {
+		width: 10rpx;
+		height: 30rpx;
+		border-radius: 10rpx;
+		top: 50rpx;
+		position: absolute;
+		transform: rotate(calc(360deg / var(--all) * var(--i)));
+		transform-origin: 0 160rpx;
+		animation: loading 2s linear infinite;
+		animation-delay: calc(var(--i) * 1s);
+		background-color: green;
+	}
+
+	@keyframes loading {
+		from {
+			opacity: 0;
+		}
+
+		to {
+			opacity: 1;
+		}
+	}
+
+	.spinner {
+		margin: 100px auto;
+		width: 20px;
+		height: 20px;
+		position: relative;
+	}
+
+	.container1>div,
+	.container2>div,
+	.container3>div {
+		width: 6px;
+		height: 6px;
+		background-color: #333;
+
+		border-radius: 100%;
+		position: absolute;
+		-webkit-animation: bouncedelay 1.2s infinite ease-in-out;
+		animation: bouncedelay 1.2s infinite ease-in-out;
+		-webkit-animation-fill-mode: both;
+		animation-fill-mode: both;
+	}
+
+	.spinner .spinner-container {
+		position: absolute;
+		width: 100%;
+		height: 100%;
+	}
+
+	.container2 {
+		-webkit-transform: rotateZ(45deg);
+		transform: rotateZ(45deg);
+	}
+
+	.container3 {
+		-webkit-transform: rotateZ(90deg);
+		transform: rotateZ(90deg);
+	}
+
+	.circle1 {
+		top: 0;
+		left: 0;
+	}
+
+	.circle2 {
+		top: 0;
+		right: 0;
+	}
+
+	.circle3 {
+		right: 0;
+		bottom: 0;
+	}
+
+	.circle4 {
+		left: 0;
+		bottom: 0;
+	}
+
+	.container2 .circle1 {
+		-webkit-animation-delay: -1.1s;
+		animation-delay: -1.1s;
+	}
+
+	.container3 .circle1 {
+		-webkit-animation-delay: -1.0s;
+		animation-delay: -1.0s;
+	}
+
+	.container1 .circle2 {
+		-webkit-animation-delay: -0.9s;
+		animation-delay: -0.9s;
+	}
+
+	.container2 .circle2 {
+		-webkit-animation-delay: -0.8s;
+		animation-delay: -0.8s;
+	}
+
+	.container3 .circle2 {
+		-webkit-animation-delay: -0.7s;
+		animation-delay: -0.7s;
+	}
+
+	.container1 .circle3 {
+		-webkit-animation-delay: -0.6s;
+		animation-delay: -0.6s;
+	}
+
+	.container2 .circle3 {
+		-webkit-animation-delay: -0.5s;
+		animation-delay: -0.5s;
+	}
+
+	.container3 .circle3 {
+		-webkit-animation-delay: -0.4s;
+		animation-delay: -0.4s;
+	}
+
+	.container1 .circle4 {
+		-webkit-animation-delay: -0.3s;
+		animation-delay: -0.3s;
+	}
+
+	.container2 .circle4 {
+		-webkit-animation-delay: -0.2s;
+		animation-delay: -0.2s;
+	}
+
+	.container3 .circle4 {
+		-webkit-animation-delay: -0.1s;
+		animation-delay: -0.1s;
+	}
+
+	@-webkit-keyframes bouncedelay {
+
+		0%,
+		80%,
+		100% {
+			-webkit-transform: scale(0.0)
+		}
+
+		40% {
+			-webkit-transform: scale(1.0)
+		}
+	}
+
+	@keyframes bouncedelay {
+
+		0%,
+		80%,
+		100% {
+			transform: scale(0.0);
+			-webkit-transform: scale(0.0);
+		}
+
+		40% {
+			transform: scale(1.0);
+			-webkit-transform: scale(1.0);
+		}
+	}
+</style>

+ 0 - 188
src/components/skeleton/login.vue

@@ -1,188 +0,0 @@
-<template>
-	<view class="skeleton-box">
-		<view v-if="loading" class="skeleton">
-			<div class="spinner">
-			  <div class="spinner-container container1">
-			    <div class="circle1"></div>
-			    <div class="circle2"></div>
-			    <div class="circle3"></div>
-			    <div class="circle4"></div>
-			  </div>
-			  <div class="spinner-container container2">
-			    <div class="circle1"></div>
-			    <div class="circle2"></div>
-			    <div class="circle3"></div>
-			    <div class="circle4"></div>
-			  </div>
-			  <div class="spinner-container container3">
-			    <div class="circle1"></div>
-			    <div class="circle2"></div>
-			    <div class="circle3"></div>
-			    <div class="circle4"></div>
-			  </div>
-			</div>
-		</view>
-		<van-transition v-else name="fade-up">
-			<slot></slot>
-		</van-transition>
-	</view>
-</template>
-
-<script>
-	export default {
-		props: {
-			loading: {
-				type: Boolean,
-				default: true
-			},
-			list: {
-				type: Array,
-				default: [1]
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.skeleton {
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		padding: 50rpx;
-		height: 320rpx;
-	}
-
-	.led {
-		width: 10rpx;
-		height: 30rpx;
-		border-radius: 10rpx;
-		top: 50rpx;
-		position: absolute;
-		transform: rotate(calc(360deg / var(--all) * var(--i)));
-		transform-origin: 0 160rpx;
-		animation: loading 2s linear infinite;
-		animation-delay: calc(var(--i) * 1s);
-		background-color: green;
-	}
-
-	@keyframes loading {
-		from {
-			opacity: 0;
-		}
-
-		to {
-			opacity: 1;
-		}
-	}
-
-	.spinner {
-	  margin: 100px auto;
-	  width: 20px;
-	  height: 20px;
-	  position: relative;
-	}
-	 
-	.container1 > div, .container2 > div, .container3 > div {
-	  width: 6px;
-	  height: 6px;
-	  background-color: #333;
-	 
-	  border-radius: 100%;
-	  position: absolute;
-	  -webkit-animation: bouncedelay 1.2s infinite ease-in-out;
-	  animation: bouncedelay 1.2s infinite ease-in-out;
-	  -webkit-animation-fill-mode: both;
-	  animation-fill-mode: both;
-	}
-	 
-	.spinner .spinner-container {
-	  position: absolute;
-	  width: 100%;
-	  height: 100%;
-	}
-	 
-	.container2 {
-	  -webkit-transform: rotateZ(45deg);
-	  transform: rotateZ(45deg);
-	}
-	 
-	.container3 {
-	  -webkit-transform: rotateZ(90deg);
-	  transform: rotateZ(90deg);
-	}
-	 
-	.circle1 { top: 0; left: 0; }
-	.circle2 { top: 0; right: 0; }
-	.circle3 { right: 0; bottom: 0; }
-	.circle4 { left: 0; bottom: 0; }
-	 
-	.container2 .circle1 {
-	  -webkit-animation-delay: -1.1s;
-	  animation-delay: -1.1s;
-	}
-	 
-	.container3 .circle1 {
-	  -webkit-animation-delay: -1.0s;
-	  animation-delay: -1.0s;
-	}
-	 
-	.container1 .circle2 {
-	  -webkit-animation-delay: -0.9s;
-	  animation-delay: -0.9s;
-	}
-	 
-	.container2 .circle2 {
-	  -webkit-animation-delay: -0.8s;
-	  animation-delay: -0.8s;
-	}
-	 
-	.container3 .circle2 {
-	  -webkit-animation-delay: -0.7s;
-	  animation-delay: -0.7s;
-	}
-	 
-	.container1 .circle3 {
-	  -webkit-animation-delay: -0.6s;
-	  animation-delay: -0.6s;
-	}
-	 
-	.container2 .circle3 {
-	  -webkit-animation-delay: -0.5s;
-	  animation-delay: -0.5s;
-	}
-	 
-	.container3 .circle3 {
-	  -webkit-animation-delay: -0.4s;
-	  animation-delay: -0.4s;
-	}
-	 
-	.container1 .circle4 {
-	  -webkit-animation-delay: -0.3s;
-	  animation-delay: -0.3s;
-	}
-	 
-	.container2 .circle4 {
-	  -webkit-animation-delay: -0.2s;
-	  animation-delay: -0.2s;
-	}
-	 
-	.container3 .circle4 {
-	  -webkit-animation-delay: -0.1s;
-	  animation-delay: -0.1s;
-	}
-	 
-	@-webkit-keyframes bouncedelay {
-	  0%, 80%, 100% { -webkit-transform: scale(0.0) }
-	  40% { -webkit-transform: scale(1.0) }
-	}
-	 
-	@keyframes bouncedelay {
-	  0%, 80%, 100% {
-	    transform: scale(0.0);
-	    -webkit-transform: scale(0.0);
-	  } 40% {
-	    transform: scale(1.0);
-	    -webkit-transform: scale(1.0);
-	  }
-	}
-</style>

+ 0 - 176
src/components/xuan-switch/xuan-switch.vue

@@ -1,176 +0,0 @@
-<template>
-  <view class="switch-container" :style="[{ background: bj_color}]">
-    <view class="switch_view">
-      <view 
-        class="switch-item" 
-        :class="{'checked_switch':isSwitch}"
-        :style="isSwitch?`color:${checked_color}`:''"
-        @click.prevent.stop="changeSwitch(true)"
-        :animation="animationData2"
-      >
-        {{switchList[0]}}
-      </view>
-      <view 
-        class="switch-item"
-        :class="{'checked_switch':!isSwitch}"
-        :style="!isSwitch?`color:${checked_color}`:''"
-        @click.prevent.stop="changeSwitch(false)"
-        :animation="animationData3"
-      >
-        {{switchList[1]}}
-      </view>
-    </view>
-    <view class="disabled" v-if="disabled"></view>
-    <view 
-      class="position_view" :animation="animationData1"
-      :style="[{ background: checked_bj_color}]"
-    ></view>
-  </view>
-</template>
-
-<script>
-export default {
-  props: {
-    switchList: {
-      type: Array,
-      default: ()=>{
-        return ["开","关"]
-      }
-    },
-    defaultSwitch:{
-      type:Boolean,
-      default:true
-    },
-    isShowModal:{//改变开关时,是否弹框提醒
-      type:Boolean,
-      default:false
-    },
-    disabled:{
-      type:Boolean,
-      default:false
-    },
-    bj_color:{
-      type:String,
-      default:'#fff',
-    },
-    checked_bj_color:{
-      type:String,
-      default:'#1989fa',
-    },
-    checked_color:{
-      type:String,
-      default:'#fff',
-    }
-  },
-  data () {
-    return {
-      isSwitch:true,
-      initAnimation:{},
-      animationData1: {},
-      animationData2: {},
-      animationData3: {}
-    }
-  },
-  created () {
-    this.initAnimation = uni.createAnimation({
-      duration: 500,
-      timingFunction: 'ease',
-    })
-    this.isSwitch = this.defaultSwitch
-    this.changeAnimation()
-  },
-  methods: {
-    changeSwitch(isSwitch) {
-      if(isSwitch == this.isSwitch || this.disabled){
-        return
-      }
-      if(this.isShowModal){
-        let index = isSwitch?0:1
-        let text =  this.switchList[index]
-        uni.showModal({
-          title: '提示',
-          content: `您确定要将其调整为${text}吗?`,
-          success: (res) => {
-            if(res.confirm){
-              this.isSwitch = isSwitch
-              this.changeAnimation()
-              this.callParentEvent(isSwitch)
-            }
-          }
-        })
-      }else{
-        this.isSwitch = isSwitch
-        this.changeAnimation()
-        this.callParentEvent(isSwitch)
-      }
-    },
-    changeAnimation(){
-      if(this.isSwitch){
-        this.animationData1 = this.initAnimation.left(0).width('60%').step().export()
-        this.animationData2 = this.initAnimation.width('60%').step().export()
-        this.animationData3 = this.initAnimation.width('40%').step().export()
-      }else{
-        this.animationData1 = this.initAnimation.left('40%').width('60%').step().export()
-        this.animationData2 = this.initAnimation.width('40%').step().export()
-        this.animationData3 = this.initAnimation.width('60%').step().export()
-      }
-    },
-    callParentEvent(){
-      this.$emit("change",this.isSwitch)
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-  .switch-container {
-    display: flex;
-    flex-direction: row;
-    width: 320upx;
-    height: 60upx;
-    border-radius: 30upx;
-    border: 1upx solid #E8E8E8;
-    position: relative;
-    .switch_view{
-      position: absolute;
-      top: 0;
-      left: 0;
-      width: 100%;
-      height: 100%;
-      z-index: 1;
-      display: flex;
-	  
-      border-radius: 30upx;
-      .switch-item {
-        color: #666;
-        font-size: 26upx;
-        height: 100%;
-        width: 40%;
-        border-radius: 30upx;
-        display: flex;
-        justify-content: center;
-        align-items: center;
-      }
-    }
-    .position_view{
-      position: absolute;
-      top: 0;
-      left: 0;
-      width: 60%;
-      height: 100%;
-      border-radius: 30upx;
-      background: $uni-color-primary;
-    }
-    .disabled{
-      position: absolute;
-      top: 0;
-      left: 0;
-      width: 100%;
-      height: 100%;
-      z-index: 99;
-      background: #fff;
-      opacity: 0.6;
-      border-radius: 30upx;
-    }
-  }
-</style>

+ 8 - 1
src/main.js

@@ -1,11 +1,18 @@
 import Vue from 'vue'
 import App from './App'
+//引入vuex
 import store from './store'
 import Toast from '@/wxcomponents/vant/toast/toast';
-import loadSke from '@/components/skeleton/index/index.vue'
+import loadSke from '@/components/skeleton/loadSke.vue'
 Vue.component('loadSke', loadSke)
+
 import '@/components/topbar/topbar.js'
+// import '@/components/skeleton/loadSke.js'
 import '@/components/loading/loading.js'
+
+// let comArr = require.context('./components/loading', false, /\.vue$/)
+// console.log(comArr)
+
 import {
 	goMiniApp,
 	goPage,

+ 19 - 1
src/pages.json

@@ -86,7 +86,25 @@
 			}
 
 		}
-	],
+	    ,{
+            "path" : "pages/recharge/index",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/recharge/placeorder",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+    ],
 	"globalStyle": {
 		"navigationBarTextStyle": "black",
 		"navigationBarTitleText": "",

+ 64 - 5
src/pages/cinema/selectseat.vue

@@ -34,7 +34,8 @@
 									<view class="col" v-for="(rowitem,rowindex) in rowlong" :key='rowindex'>
 										<view v-for="(colitem,colindex) in collong" :key='colindex'>
 											<van-checkbox use-icon-slot v-if="seatSet(rowindex,colindex,seatList)==='N'" :name="JSON.stringify(seatList[rowindex+1][colindex+1])">
-												<view class="seat" :class="{selected:selected(rowindex,colindex,seatResult)}" slot="icon"></view>
+												<view class="seat" :class="{selected:selected(rowindex,colindex,seatResult),loveSeatLeft:isLoveSeatLeft(seatList[rowindex+1][colindex+1]),loveSeatRight:isLoveSeatRight(seatList[rowindex+1][colindex+1])}"
+												 slot="icon"></view>
 											</van-checkbox>
 											<view v-else-if="seatSet(rowindex,colindex,seatList)==='LK'" class="seat notSelect"></view>
 											<view v-else class="seat noneSeat"></view>
@@ -55,7 +56,7 @@
 				</view>
 				<view class="item-box">
 					<view class="seat-item" v-for="(item,index) in seatResult" :key='index'>
-						<view class="">
+						<view class="seat-name">
 							{{JSON.parse(item).seatNo}}
 						</view>
 						<van-icon name="cross" @click='remove(item)' />
@@ -100,9 +101,30 @@
 				console.log(e)
 			},
 			groupOnChange(e) {
+				let isIncrease = this.seatResult.length < e.detail.length
+				e.detail.forEach(val => {
+					let seatObj = JSON.parse(val)
+					if (seatObj.lovestatus == 1) {
+						let loveSeat = JSON.stringify(this.seatList[parseInt(seatObj.rowNo)][parseInt(seatObj.columnNo) + 1])
+						e.detail.includes(loveSeat) || (isIncrease ? e.detail.push(loveSeat) : e.detail.splice(e.detail.indexOf(val), 1))
+					}
+					if (seatObj.lovestatus == 2) {
+						let loveSeat = JSON.stringify(this.seatList[parseInt(seatObj.rowNo)][parseInt(seatObj.columnNo) - 1])
+						e.detail.includes(loveSeat) || (isIncrease ? e.detail.push(loveSeat) : e.detail.splice(e.detail.indexOf(val), 1))
+					}
+				})
 				this.seatResult = e.detail
 			},
 			remove(item) {
+				let seatObj = JSON.parse(item)
+				if (seatObj.lovestatus == 1) {
+					let loveSeat = JSON.stringify(this.seatList[parseInt(seatObj.rowNo)][parseInt(seatObj.columnNo) + 1])
+					this.seatResult.includes(loveSeat) && this.seatResult.splice(this.seatResult.indexOf(loveSeat), 1)
+				}
+				if (seatObj.lovestatus == 2) {
+					let loveSeat = JSON.stringify(this.seatList[parseInt(seatObj.rowNo)][parseInt(seatObj.columnNo) - 1])
+					this.seatResult.includes(loveSeat) && this.seatResult.splice(this.seatResult.indexOf(loveSeat), 1)
+				}
 				this.seatResult.splice(this.seatResult.indexOf(item), 1)
 			},
 			seatSet(row, col, list) {
@@ -113,6 +135,12 @@
 						return list[row + 1][col + 1].status
 				}
 			},
+			isLoveSeatLeft(item) {
+				return item.lovestatus == 1
+			},
+			isLoveSeatRight(item) {
+				return item.lovestatus == 2
+			},
 			selected(row, col, seatResult) {
 				let flag = false
 				seatResult.forEach((val) => {
@@ -121,9 +149,6 @@
 				})
 				return flag
 			},
-			loveSeat(row, col, list) {
-				return ''
-			},
 			async init() {
 				let seatRes = await getSeat({
 					showId: this.showItem.showId
@@ -214,6 +239,36 @@
 			opacity: 1;
 			background: #47CB79;
 		}
+		
+		.loveSeatLeft{
+			position: relative;
+			&::after{
+				content: '';
+				position: absolute;
+				right: 0;
+				transform: translate(50%,-50%);
+				top: 50%;
+				width: 50%;
+				height: 80%;
+				background-color: inherit;
+				z-index: 10;
+			}
+		}
+		
+		.loveSeatRight{
+			position: relative;
+			&::after{
+				content: '';
+				position: absolute;
+				left: 0;
+				transform: translate(-50%,-50%);
+				top: 50%;
+				width: 50%;
+				height: 80%;
+				background-color: inherit;
+				z-index: 10;
+			}
+		}
 
 
 
@@ -281,6 +336,10 @@
 					margin: 20rpx 20rpx 0rpx 0rpx;
 					padding: 20rpx;
 					box-sizing: border-box;
+
+					.seat-name {
+						font-size: 24rpx;
+					}
 				}
 			}
 		}

+ 34 - 31
src/pages/index/components/cinema.vue

@@ -3,7 +3,7 @@
 		<view class='topbar'>
 			<topbar>
 				<view class="topbar-box">
-					<view class="left-box" @click="goPage(`/pages/cinema/citylist?cityList=${JSON.stringify(cityList)}`,null,{cityList:cityList})">
+					<view class="left-box" @click="goPage(`/pages/cinema/citylist`,null,{cityList:cityList})">
 						<van-icon name="location" />
 						<text>{{address}}</text>
 						<van-icon name="arrow-down" />
@@ -18,7 +18,7 @@
 					<loadSke :loading='hotLoading' :list='hotList'>
 						<view class="flex-box">
 							<view @click="goPage(`/pages/cinema/cinemalist?filmId=${item.filmId}&cityId=${cityId}&location=${location}`)"
-							 class="film-box" v-for="(item,index) in hotList" :key='item.filmId'>
+							 class="film-box" v-for="(item) in hotList" :key='item.filmId'>
 								<image :src="item.pic" mode="scaleToFill" class="img" draggable></image>
 								<view class="bottom-box">
 									<view class="tit">
@@ -29,7 +29,7 @@
 										<view class="des">{{item.filmTypes}}</view>
 										<view class="des">{{item.cast}}</view>
 									</view>
-			
+
 									<button type="default" class="buy">
 										购 票
 									</button>
@@ -40,7 +40,7 @@
 				</van-tab>
 				<van-tab title="影院">
 					<loadSke :loading='cinemaLoading' :list='cinemaList'>
-						<view class="cinema-box" v-for="(item,index) in cinemaList" :key='item.cinemaId' @click='goPage(`/pages/cinema/schedulelist?cinemaId=${item.cinemaId}&filmId=${filmId}`)'>
+						<view class="cinema-box" v-for="(item) in cinemaList" :key='item.cinemaId' @click='goPage(`/pages/cinema/schedulelist?cinemaId=${item.cinemaId}&filmId=${filmId}`)'>
 							<view class="tit">
 								<text>{{item.cinemaName}}</text>
 								<text class="text-2">{{item.distance}}km</text>
@@ -57,7 +57,7 @@
 								{{ObjIndex}}
 							</view>
 							<view class="flex-box">
-								<view class="film-box" v-for="(item,index) in ObjItem" :key='item.filmId'>
+								<view class="film-box" v-for="(item) in ObjItem" :key='item.filmId'>
 									<image :src="item.pic" mode="scaleToFill" class="img" draggable></image>
 									<view class="bottom-box">
 										<view class="tit">
@@ -76,16 +76,12 @@
 				</van-tab>
 			</van-tabs>
 		</view>
-		
+
 	</scroll-view>
 </template>
 
 
 <script>
-	import loadSke from '@/components/skeleton/index/index.vue'
-	import {
-		getPayData
-	} from '@/api/pay.js'
 	import {
 		amapRegeo
 	} from '@/api/amap.js'
@@ -98,9 +94,6 @@
 		getCinemaList
 	} from '@/api/cinema.js'
 	export default {
-		components: {
-			loadSke
-		},
 		data: () => ({
 			tabActive: 0,
 			hotList: [],
@@ -116,7 +109,7 @@
 		async mounted() {
 			this.setFilmDiscount()
 			await this.getLocation()
-			this.address = this.$store.state.cinema.cityObj.regionName;
+			await this.getCityList()
 			this.init()
 			this.cinemaListInit()
 		},
@@ -133,10 +126,10 @@
 			}
 		},
 		methods: {
-			onSearch(e){
+			onSearch(e) {
 				console.log(e)
 			},
-			onSearchChange(e){
+			onSearchChange(e) {
 				console.log(e)
 			},
 			tabsChange(e) {
@@ -148,18 +141,25 @@
 				})
 			},
 			async getLocation() {
-				let location = await wx.getLocation()
-				this.location = [location.longitude.toFixed(6), location.latitude.toFixed(6)]
-				let address = await amapRegeo({
-					location: this.location.toString()
-				})
+				try {
+					let location = await wx.getLocation()
+					this.location = [location.longitude.toFixed(6), location.latitude.toFixed(6)]
+					let address = await amapRegeo({
+						location: this.location.toString()
+					})
+					this.address = address.regeocode.addressComponent.city.slice(0, -1)
+				} catch {
+					this.address = '北京'
+				}
+			},
+			async getCityList() {
 				let cityListRes = await getCityList()
 				let cityList = cityListRes.data.data.list
 				let cityObj = {}
 				cityList.map((val) => {
 					cityObj[val.pinYin] || (cityObj[val.pinYin] = [])
 					cityObj[val.pinYin].push(val)
-					if (val.regionName == address.regeocode.addressComponent.city.slice(0, -1)) {
+					if (val.regionName == this.address) {
 						this.selectCity(val)
 					}
 				})
@@ -172,7 +172,7 @@
 					cityId: this.cityId
 				})
 				this.hotList = hotListRes.data.data.list
-				this.$nextTick(()=>{
+				this.$nextTick(() => {
 					this.hotLoading = false
 				})
 
@@ -186,7 +186,7 @@
 				})
 				this.soonList = soonListObj
 				this.$store.commit('SET_FILMLIST', this.hotList.concat(soonListRes.data.data.list))
-				this.$nextTick(()=>{
+				this.$nextTick(() => {
 					this.soonLoading = false
 				})
 			},
@@ -217,39 +217,42 @@
 </script>
 
 <style scoped lang="scss">
-	.cinema{
+	.cinema {
 		height: 100%;
 		position: relative;
 	}
-	
+
 	.topbar {
 		position: fixed;
 		top: 0;
 		left: 0;
 		right: 0;
 		z-index: 1;
+		overflow: hidden;
+
 		.topbar-box {
 			display: flex;
 			align-items: center;
-		
+
 			.left-box {
 				min-width: 150rpx;
 				display: flex;
 				justify-content: center;
 				align-items: center;
 				margin-left: 20rpx;
-				text{
+
+				text {
 					white-space: nowrap;
 				}
 			}
 		}
 	}
-	
-	.tabs-box{
+
+	.tabs-box {
 		margin-top: 160rpx;
 	}
 
-	
+
 
 	.cinema-box {
 		padding: 30rpx;

+ 42 - 71
src/pages/index/components/login.vue

@@ -1,82 +1,53 @@
 <template>
-	<view class="login">
-		<loadSke :loading='getUserInfo'>
-			<view class="user-info">
-				<view class="avatar">
-					<open-data type="userAvatarUrl"></open-data>
-				</view>
-				<view class="nickname">
-					<open-data type="userNickName"></open-data>
-				</view>
-				<button open-type="getUserProfile" @tap="getUserProfile">授权用户头像信息</button>
-			</view>
-		</loadSke>
-	</view>
+  <view class="login">
+    <loading />
+  </view>
 </template>
 
 <script>
-	import loadSke from '@/components/skeleton/login.vue'
-	export default {
-		components: {
-			loadSke
-		},
-		props: ['login'],
-		data: () => ({
-			getUserInfo: true
-		}),
-		async created() {
-			this.init()
-		},
-		methods: {
-			async init() {
-				if (true) {
-					let loginRes = await this.$store.dispatch('Login')
-					if (loginRes.code == 200) {
-						this.$emit('update:login', true)
-					}else{
-						this.Toast('登录失败');
-						this.$emit('update:login', true)
-					}
-				} else {
-					this.getUserInfo = false
-				}
-			},
-			getUserProfile: function(e) {
-				wx.getUserProfile({
-					desc: '业务需要',
-					success: res => {
-						console.log(res)
-					}
-				})
-			}
-		}
-	}
+export default {
+  props: ["login"],
+  created() {
+    this.init();
+  },
+  methods: {
+    async init() {
+      let loginRes = await this.$store.dispatch("Login");
+      if (loginRes.code == 200) {
+        this.$emit("update:login", true);
+      } else {
+        this.Toast("登录失败");
+        this.$emit("update:login", true);
+      }
+    },
+  },
+};
 </script>
 
 <style lang="scss" scoped>
-	.login {
-		width: 100vw;
-		height: 80vh;
-		display: flex;
-		justify-content: center;
-		align-items: center;
+.login {
+  width: 100vw;
+  height: 80vh;
+  display: flex;
+  justify-content: center;
+  align-items: center;
 
-		.user-info {
-			display: flex;
-			flex-direction: column;
-			justify-content: center;
-			align-items: center;
+  .user-info {
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
 
-			.avatar {
-				border-radius: 50%;
-				width: 100px;
-				height: 100px;
-				overflow: hidden;
-			}
+    .avatar {
+      border-radius: 50%;
+      width: 100px;
+      height: 100px;
+      overflow: hidden;
+    }
 
-			.nickname {
-				text-align: center;
-			}
-		}
-	}
+    .nickname {
+      text-align: center;
+    }
+  }
+}
 </style>

+ 191 - 280
src/pages/index/components/user.vue

@@ -1,288 +1,199 @@
 <template>
-	<scroll-view scroll-y class="content">
-		<view class="top">
-			<view class="avabox">
-				<van-image round class='img' width="200rpx" height="200rpx" :src="userData.headImage" />
-				<view class="avatitbox">
-					<text>{{userData.nickName}}</text>
-					<text v-if="userData.gzptUserId">{{studentInfo.logincode}}</text>
-					<view class="sync-btn" @tap='getUserProfile'>点击同步用户头像昵称</view>
-					<!-- <text v-else @click="idCardShow=!idCardShow">未绑定身份证点击绑定</text> -->
-				</view>
-			</view>
-		</view>
-
-		<view class="serviceBox">
-			<view class="tit">
-				<text>我的服务</text>
-			</view>
-			<view class="btnBox">
-				<button class="item-box" :plain='true' @click="goPage('/pages/user/order')">
-					<van-icon name="/static/imgs/order-icon.png" size="22px" />
-					<text class="text">我的订单</text>
-				</button>
-				<button class="item-box" :plain='true' @click="goPage('/pages/user/collectionList')">
-					<van-icon name="/static/imgs/wdsc.png" size="22px" />
-					<text class="text">我的收藏</text>
-				</button>
-				<button class="item-box" :plain='true' @click="goPage('/pages/user/browserecord')">
-					<van-icon name="/static/imgs/llzj.png" size="22px" />
-					<text class="text">浏览足迹</text>
-				</button>
-				<button class="item-box" :plain='true' open-type='feedback'>
-					<van-icon name="/static/imgs/yjfk.png" size="22px" />
-					<text class="text">意见反馈</text>
-				</button>
-			</view>
-
-		</view>
-
-		<view class="serviceBox">
-			<view class="tit">
-				<text>我的信息</text>
-			</view>
-			<van-cell title="我的设置" icon="/static/imgs/wdsz.png" is-link @tap="goPage('/pages/user/set')" />
-			<button class="server" open-type="contact" :plain='true'>
-				<van-cell title="联系客服" icon="/static/imgs/lxkf.png" is-link />
-			</button>
-
-		</view>
-		
-		<view class="ad-box serviceBox">
-			<ad unit-id="adunit-d8c1548cc9663765"></ad>
-		</view>
-		
-		<van-popup :show="idCardShow" round>
-			<view class="idCard">
-				<van-divider contentPosition="center">绑定身份证信息</van-divider>
-				<van-cell-group>
-					<van-field :value="idCard" @change='idCardput' label="身份证" maxlength='18' placeholder="请输入身份证号" />
-					<van-field :value="password" @change='passwordput' type="password" label="密码" placeholder="请输入密码" />
-					<van-cell title="归属驾校地区" :value="area" @click='popup=!popup' />
-				</van-cell-group>
-				<view class="btn-box">
-					<van-button @click='idCardShow=!idCardShow' type="default">取消绑定</van-button>
-					<van-button @click='submitBinding' type="info" :loading='loading' loading-text="绑定中..">确认绑定</van-button>
-				</view>
-			</view>
-		</van-popup>
-		<van-popup :show="popup" position="bottom">
-			<van-area :columns-placeholder="['请选择', '请选择']" value="35" @cancel='popup=!popup' @confirm='popup=!popup' :area-list="areaList"
-			 @change='regionSelection' columns-num='2' />
-		</van-popup>
-	</scroll-view>
+  <scroll-view scroll-y class="content">
+    <view class="top">
+      <view class="avabox">
+        <van-image
+          round
+          class="img"
+          width="200rpx"
+          height="200rpx"
+          :src="userData.headImage"
+        />
+        <view class="avatitbox">
+          <text>{{ userData.nickName }}</text>
+          <text v-if="userData.gzptUserId">{{ studentInfo.logincode }}</text>
+          <view class="sync-btn" @tap="getUserProfile"
+            >点击同步用户头像昵称</view
+          >
+        </view>
+      </view>
+    </view>
+
+    <view class="serviceBox">
+      <view class="tit">
+        <text>我的服务</text>
+      </view>
+      <view class="btnBox">
+        <button
+          class="item-box"
+          :plain="true"
+          @click="goPage('/pages/user/order')"
+        >
+          <van-icon name="/static/imgs/order-icon.png" size="22px" />
+          <text class="text">我的订单</text>
+        </button>
+        <button
+          class="item-box"
+          :plain="true"
+          @click="goPage('/pages/user/collectionList')"
+        >
+          <van-icon name="/static/imgs/wdsc.png" size="22px" />
+          <text class="text">我的收藏</text>
+        </button>
+        <button
+          class="item-box"
+          :plain="true"
+          @click="goPage('/pages/user/browserecord')"
+        >
+          <van-icon name="/static/imgs/llzj.png" size="22px" />
+          <text class="text">浏览足迹</text>
+        </button>
+        <button class="item-box" :plain="true" open-type="feedback">
+          <van-icon name="/static/imgs/yjfk.png" size="22px" />
+          <text class="text">意见反馈</text>
+        </button>
+      </view>
+    </view>
+
+    <view class="serviceBox">
+      <view class="tit">
+        <text>我的信息</text>
+      </view>
+      <van-cell
+        title="我的设置"
+        icon="/static/imgs/wdsz.png"
+        is-link
+        @tap="goPage('/pages/user/set')"
+      />
+      <button class="server" open-type="contact" :plain="true">
+        <van-cell title="联系客服" icon="/static/imgs/lxkf.png" is-link />
+      </button>
+    </view>
+
+    <view class="ad-box serviceBox">
+      <ad unit-id="adunit-d8c1548cc9663765"></ad>
+    </view>
+  </scroll-view>
 </template>
 
 <script>
-	import square from '@/components/square/index.vue'
-	import md5 from 'crypto-js/md5'
-	import Toast from '@/wxcomponents/vant/toast/toast';
-	import {
-		login,
-		getInfo,
-		bindUserCard,
-		updateUserInfo
-	} from '@/api/login.js'
-	import {
-		getStudentInfo
-	} from '@/api/studytime.js'
-	export default {
-		components: {
-			square
-		},
-		data() {
-			return {
-				loading: false,
-				idCardShow: false,
-				popup: false,
-				idCard: null,
-				password: null,
-				areaCode: null,
-				area: "请点击选择地区",
-				areaList: {
-					province_list: {
-						35: '福建省',
-					},
-					city_list: {
-						3501: '福州市',
-						3502: '厦门市',
-						3503: '莆田市',
-						3504: '三明市',
-						3505: '泉州市',
-						3506: '漳州市',
-						3507: '南平市',
-						3508: '龙岩市',
-						3509: '宁德市',
-					}
-				}
-			}
-		},
-		computed: {
-			userData() {
-				return this.$store.state.user.userInfo;
-			}
-		},
-		mounted() {
-			this.initUserInfo()
-		},
-		methods: {
-			async initUserInfo() {
-				await this.$store.dispatch('GetInfo')
-			},
-			idCardput(e) {
-				this.idCard = e.detail
-			},
-			passwordput(e) {
-				this.password = e.detail
-			},
-			submitBinding() {
-				console.log(this.areaCode, this.idCard, this.password)
-				this.loading = true
-				bindUserCard({
-					city: this.areaCode,
-					logincode: this.idCard,
-					password: md5(this.password).toString()
-				}).then((res) => {
-					if (res.code == 200) {
-						Toast.success('绑定成功');
-						this.idCardShow = false
-					} else if (res.code == 502) {
-						Toast.fail(res.msg);
-					} else {
-						Toast.fail('系统内部错误');
-					}
-					this.loading = false
-				})
-			},
-			regionSelection(e) {
-				console.log(e)
-				this.area = `${e.detail.values[0].name}  ${e.detail.values[1].name}`
-				this.areaCode = e.detail.values[1].code
-			},
-			async getUserProfile(e) {
-				let userInfo = await wx.getUserProfile({
-					desc: '业务需要'
-				})
-				let updateRes = await updateUserInfo({
-					headImage: userInfo.userInfo.avatarUrl,
-					nickName: userInfo.userInfo.nickName
-				})
-				if (updateRes.code == 200) {
-					// this.$store.dispatch('GetInfo')
-					this.$store.state.user.userInfo.headImage=userInfo.userInfo.avatarUrl
-					this.$store.state.user.userInfo.nickName=userInfo.userInfo.nickName
-				}
-			}
-		}
-
-	}
+import square from "@/components/square/index.vue";
+import { updateUserInfo } from "@/api/login.js";
+export default {
+  components: {
+    square,
+  },
+  computed: {
+    userData() {
+      return this.$store.state.user.userInfo;
+    },
+  },
+  mounted() {
+    this.$store.dispatch("GetInfo");
+  },
+  methods: {
+    async getUserProfile(e) {
+      let userInfo = await wx.getUserProfile({
+        desc: "业务需要",
+      });
+      let updateRes = await updateUserInfo({
+        headImage: userInfo.userInfo.avatarUrl,
+        nickName: userInfo.userInfo.nickName,
+      });
+      if (updateRes.code == 200) {
+        this.$store.state.user.userInfo.headImage = userInfo.userInfo.avatarUrl;
+        this.$store.state.user.userInfo.nickName = userInfo.userInfo.nickName;
+      }
+    },
+  },
+};
 </script>
 
 <style lang="scss" scoped>
-	.ad-box{
-		margin: 40rpx;
-		padding: 20rpx;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-	}
-	
-	.server {
-		border: none;
-		background-color: none;
-		margin: 0;
-		padding: 0;
-		text-align: left;
-		display: flexbox;
-	}
-
-	.idCard {
-		width: 600rpx;
-		padding: 30rpx;
-		margin: auto;
-		display: flex;
-		flex-direction: column;
-		justify-content: center;
-		align-items: center;
-	}
-
-	.btn-box {
-		margin-top: 40rpx;
-		width: 100%;
-		display: flex;
-		justify-content: space-between;
-	}
-
-	.content {
-		height: 100%;
-	}
-
-	.top {
-		padding-top: 100rpx;
-		background-image: url("/static/imgs/bg.png");
-		background-size: 100% 100%;
-		background-repeat: no-repeat;
-
-		.avabox {
-			display: flex;
-			padding: 10%;
-
-			.img {
-				border-radius: 50%;
-			}
-
-			.sync-btn {
-				margin-top: 20rpx;
-				height: 40rpx;
-			}
-
-			.avatitbox {
-				flex: 1;
-				display: flex;
-				flex-direction: column;
-				justify-content: space-between;
-				padding: 30rpx;
-				color: #FFFFFF;
-				height: 100rpx;
-			}
-		}
-	}
-
-
-
-
-	.serviceBox {
-		background-color: #fff;
-		margin: 30rpx;
-		border-radius: 10rpx;
-
-		.tit {
-			padding: 26rpx;
-			border-bottom: 1rpx solid #E8E8E8;
-		}
-
-		.btnBox {
-			display: flex;
-			justify-content: space-between;
-			align-items: center;
-
-			.item-box {
-				display: flex;
-				flex-direction: column;
-				justify-content: space-between;
-				align-items: center;
-				width: 200rpx;
-				margin-top: 20rpx;
-				padding: 20rpx;
-				border: none;
-
-				.text {
-					font-size: 26rpx;
-					font-family: PingFang SC;
-					font-weight: 400;
-					color: #666666;
-				}
-			}
-		}
-	}
+.content {
+  height: 100%;
+}
+
+.ad-box {
+  margin: 40rpx;
+  padding: 20rpx;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+.top {
+  padding-top: 100rpx;
+  background-image: url("/static/imgs/bg.png");
+  background-size: 100% 100%;
+  background-repeat: no-repeat;
+
+  .avabox {
+    display: flex;
+    padding: 10%;
+
+    .img {
+      border-radius: 50%;
+    }
+
+    .sync-btn {
+      margin-top: 20rpx;
+      height: 40rpx;
+    }
+
+    .avatitbox {
+      flex: 1;
+      display: flex;
+      flex-direction: column;
+      justify-content: space-between;
+      padding: 30rpx;
+      color: #ffffff;
+      height: 100rpx;
+    }
+  }
+}
+
+.serviceBox {
+  background-color: #fff;
+  margin: 30rpx;
+  border-radius: 10rpx;
+
+  .tit {
+    padding: 26rpx;
+    border-bottom: 1rpx solid #e8e8e8;
+  }
+
+  .btnBox {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+
+    .item-box {
+      display: flex;
+      flex-direction: column;
+      justify-content: space-between;
+      align-items: center;
+      width: 200rpx;
+      margin-top: 20rpx;
+      padding: 20rpx;
+      border: none;
+
+      .text {
+        font-size: 26rpx;
+        font-family: PingFang SC;
+        font-weight: 400;
+        color: #666666;
+      }
+    }
+  }
+
+  .server {
+    border: none;
+    background-color: none;
+    margin: 0;
+    padding: 0;
+    text-align: left;
+    display: flexbox;
+  }
+}
 </style>

+ 98 - 128
src/pages/index/index.vue

@@ -1,139 +1,109 @@
 <template>
-	<page-meta>
-		<navigation-bar :title="title" background-color="#FFFFFF" front-color="#000000" />
-	</page-meta>
-	<view v-if="!login">
-		<login :login.sync='login' />
-	</view>
-	<view v-else>
-		
-		<swiper class="swiper-box" :current-item-id="active" @change='swiperChange' easing-function="easeInCubic">
-			<swiper-item class="swiper-item" item-id='home'>
-				<home v-if="activeObj.home" ref='home' />
-			</swiper-item>
-			<swiper-item class="swiper-item" item-id='cinema'>
-				<cinema v-if="activeObj.cinema" ref='cinema' />
-			</swiper-item>
-			<swiper-item class="swiper-item" item-id='applist'>
-				<applist v-if="activeObj.applist" ref='applist' />
-			</swiper-item>
-			<swiper-item class="swiper-item" item-id='user'>
-				<user v-if="activeObj.user" ref='user' />
-			</swiper-item>
-		</swiper>
+  <view>
+    <login v-if="!login" :login.sync="login" />
+    <view v-else>
+      <swiper
+        class="swiper-box"
+        :current-item-id="active"
+        @change="swiperChange"
+        easing-function="easeInCubic"
+      >
+        <swiper-item class="swiper-item" item-id="home">
+          <home v-if="activeObj.home" ref="home" />
+        </swiper-item>
+        <swiper-item class="swiper-item" item-id="cinema">
+          <cinema v-if="activeObj.cinema" ref="cinema" />
+        </swiper-item>
+        <swiper-item class="swiper-item" item-id="applist">
+          <applist v-if="activeObj.applist" ref="applist" />
+        </swiper-item>
+        <swiper-item class="swiper-item" item-id="user">
+          <user v-if="activeObj.user" ref="user" />
+        </swiper-item>
+      </swiper>
 
-		<!-- <home v-if="activeObj.home" v-show="active=='home'" ref='home' />
-		<cinema v-if="activeObj.cinema" v-show="active=='cinema'" ref='cinema'/>
-		<applist v-if="activeObj.applist" v-show="active=='applist'" ref='applist' />
-		<user v-if="activeObj.user" v-show="active=='user'"  ref='user' /> -->
+      <van-tabbar
+        :active="active"
+        @change="onChange"
+        :placeholder="true"
+        active-color="#E31818"
+        inactive-color="#999999"
+      >
+        <van-tabbar-item name="home" icon="wap-home">
+          <!-- <van-icon slot="icon" name="/static/imgs/fxh.png" /> -->
+          <!-- <van-icon slot="icon-active" name="/static/imgs/fx.png" /> -->
+          首页
+        </van-tabbar-item>
+        <van-tabbar-item name="cinema" icon="video">
+          <!-- <van-icon slot="icon" name="/static/imgs/fxh.png" /> -->
+          <!-- <van-icon slot="icon-active" name="/static/imgs/fx.png" /> -->
+          电影
+        </van-tabbar-item>
+        <van-tabbar-item name="applist" icon="search">
+          <!-- <van-icon slot="icon" name="/static/imgs/zth.png" /> -->
+          <!-- <van-icon slot="icon-active" name="/static/imgs/zt.png" /> -->
+          发现
+        </van-tabbar-item>
+        <van-tabbar-item name="user" icon="manager">
+          <!-- <van-icon slot="icon" name="/static/imgs/wdh.png" /> -->
+          <!-- <van-icon slot="icon-active" name="/static/imgs/wd.png" /> -->
+          我的
+        </van-tabbar-item>
+      </van-tabbar>
+    </view>
 
-		<van-tabbar :active="active" @change="onChange" :placeholder='true' active-color="#E31818" inactive-color="#999999">
-			<van-tabbar-item name='home' icon='wap-home'>
-				<!-- <van-icon slot="icon" name="/static/imgs/fxh.png" /> -->
-				<!-- <van-icon slot="icon-active" name="/static/imgs/fx.png" /> -->
-				首页
-			</van-tabbar-item>
-			<van-tabbar-item name='cinema' icon='video'>
-				<!-- <van-icon slot="icon" name="/static/imgs/fxh.png" /> -->
-				<!-- <van-icon slot="icon-active" name="/static/imgs/fx.png" /> -->
-				电影
-			</van-tabbar-item>
-			<van-tabbar-item name='applist' icon='search'>
-				<!-- <van-icon slot="icon" name="/static/imgs/zth.png" /> -->
-				<!-- <van-icon slot="icon-active" name="/static/imgs/zt.png" /> -->
-				发现
-			</van-tabbar-item>
-			<van-tabbar-item name='user' icon='manager'>
-				<!-- <van-icon slot="icon" name="/static/imgs/wdh.png" /> -->
-				<!-- <van-icon slot="icon-active" name="/static/imgs/wd.png" /> -->
-				我的
-			</van-tabbar-item>
-		</van-tabbar>
-	</view>
-
-
-	<van-toast id="van-toast" />
+    <van-toast id="van-toast" />
+  </view>
 </template>
 
 <script>
-	import applist from './components/applist.vue'
-	import user from './components/user.vue'
-	import login from './components/login.vue'
-	import home from './components/home.vue'
-	import cinema from './components/cinema.vue'
-	export default {
-		components: {
-			applist,
-			user,
-			login,
-			home,
-			cinema
-		},
-		data() {
-			return {
-				login: false,
-				active: 'home',
-				activeObj: {},
-			}
-		},
-		onLoad: function(option) {
-			if (option.active) {
-				this.active = option.active
-			}
-			this.activeObj[this.active] = true
-		},
-		onShareAppMessage: function() {},
-		onReachBottom() {
-			if (this.active == 'home') {
-				this.$refs.home.onBottom()
-			}
-			if (this.active == 'applist') {
-				this.$refs.applist.onBottom()
-			}
-		},
-		computed: {
-			title() {
-				if (!this.login) return '登录'
-				switch (this.active) {
-					case 'home':
-						return '首页';
-					case 'cinema':
-						return '电影';
-					case 'applist':
-						return '发现';
-					case 'user':
-						return '我的';
-				}
-			}
-		},
-		methods: {
-			onChange(event) {
-				// event.detail 的值为当前选中项的索引
-				this.active = event.detail
-				this.activeObj[this.active] = true
-				// wx.startPullDownRefresh()
-				// this.$nextTick(function() {
-				// 	wx.stopPullDownRefresh()
-				// })
-			},
-			swiperChange(event){
-				this.active = event.detail.currentItemId
-				this.activeObj[this.active] = true
-				// wx.startPullDownRefresh()
-				// this.$nextTick(function() {
-				// 	wx.stopPullDownRefresh()
-				// })
-			}
-		}
-	}
+import applist from "./components/applist.vue";
+import user from "./components/user.vue";
+import login from "./components/login.vue";
+import home from "./components/home.vue";
+import cinema from "./components/cinema.vue";
+export default {
+  components: {
+    applist,
+    user,
+    login,
+    home,
+    cinema,
+  },
+  data() {
+    return {
+      login: false,
+      active: "home",
+      activeObj: {},
+    };
+  },
+  onLoad: function(option) {
+    if (option.active) {
+      this.active = option.active;
+    }
+    this.activeObj[this.active] = true;
+  },
+  onShareAppMessage: function() {},
+  methods: {
+    onChange(event) {
+      // event.detail 的值为当前选中项的索引
+      this.active = event.detail;
+      this.activeObj[this.active] = true;
+    },
+    swiperChange(event) {
+      this.active = event.detail.currentItemId;
+      this.activeObj[this.active] = true;
+    },
+  },
+};
 </script>
 
 <style lang="scss">
-	.swiper-box {
-		height: calc(100vh - 100rpx - env(safe-area-inset-bottom));
+.swiper-box {
+  height: calc(100vh - 100rpx - env(safe-area-inset-bottom));
 
-		.swiper-item {
-			// overflow: auto;
-		}
-	}
+  .swiper-item {
+    // overflow: auto;
+  }
+}
 </style>

+ 70 - 0
src/pages/recharge/index.vue

@@ -0,0 +1,70 @@
+<template>
+	<view class="page">
+		<image src="../../static/imgs/banner.png" class="top-img" mode="widthFix"></image>
+		<swiper class="swiper-box" previous-margin='140rpx' next-margin='140rpx' indicator-dots>
+			<swiper-item class="swiper-item" v-for="(item,index) in 3" :key='index'>
+				<image class="swiper-img" src="../../static/imgs/shmr.png" mode="scaleToFill"></image>
+				<button class="swiper-btn" @click="goPage('/pages/recharge/placeorder')">立即充值</button>
+			</swiper-item>
+		</swiper>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+
+			};
+		}
+	}
+</script>
+
+<style lang="scss">
+	.page {
+		width: 100vw;
+		height: 100vh;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+	}
+
+	.top-img {
+		width: 100vw;
+	}
+
+	.swiper-box {
+		margin-top: 50rpx;
+		width: 100vw;
+		height: 690rpx;
+		position: relative;
+		
+		.swiper-item{
+			display: flex;
+			align-items: center;
+			.swiper-img {
+				margin: auto;
+				width: 412rpx;
+				height: 690rpx;
+				border-radius: 30rpx;
+			}
+			
+			.swiper-btn {
+				position: absolute;
+				left: 50%;
+				transform: translateX(-50%);
+				bottom: 108rpx;
+				width: 211rpx;
+				height: 80rpx;
+				background: linear-gradient(90deg, #E31818, #ED3E24, #ED4F24);
+				border-radius: 40rpx;
+				font-size: 30rpx;
+				font-weight: 400;
+				color: #FFFFFF;
+				display: flex;
+				justify-content: center;
+				align-items: center;
+			}
+		}
+	}
+</style>

+ 19 - 0
src/pages/recharge/placeorder.vue

@@ -0,0 +1,19 @@
+<template>
+	<view>
+		腾讯会员
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			};
+		}
+	}
+</script>
+
+<style lang="scss">
+
+</style>

+ 0 - 4
src/pages/user/browserecord.vue

@@ -22,15 +22,11 @@
 </template>
 
 <script>
-	import loadSke from '@/components/skeleton/index/index.vue'
 	import {
 		getBrowseRecordInfoList,
 		BrowseRecordDel
 	} from '@/api/applist.js'
 	export default {
-		components:{
-			loadSke
-		},
 		data() {
 			return {
 				active: 0,

+ 0 - 4
src/pages/user/collectionList.vue

@@ -22,15 +22,11 @@
 </template>
 
 <script>
-	import loadSke from '@/components/skeleton/index/index.vue'
 	import {
 		collectionList,
 		delFavorites
 	} from '@/api/applist.js'
 	export default {
-		components: {
-			loadSke
-		},
 		data() {
 			return {
 				active: 0,

+ 2 - 2
src/pages/webview/webview.vue

@@ -1,5 +1,5 @@
 <template>
-	<web-view :src="decodeURIComponent(src)"></web-view>
+	<web-view class="webview" :src="decodeURIComponent(src)"></web-view>
 </template>
 
 <script>
@@ -16,5 +16,5 @@
 </script>
 
 <style lang="scss">
-
+	.webview{}
 </style>