李志伟 3 years ago
parent
commit
34a43f407b
5 changed files with 201 additions and 100 deletions
  1. 5
    0
      src/components/Swiper/index.vue
  2. 80
    47
      src/pages/AllPages.vue
  3. 17
    17
      src/pages/IndexImage.vue
  4. 93
    26
      src/pages/Test.vue
  5. 6
    10
      src/pages/signup.vue

+ 5
- 0
src/components/Swiper/index.vue View File

@@ -29,6 +29,11 @@ export default {
29 29
     this.$nextTick(() => {
30 30
       this.swiper = new Swiper(this.$el, this.options)
31 31
     })
32
+  },
33
+  methods: {
34
+    update() {
35
+      this.swiper.update()
36
+    }
32 37
   }
33 38
 }
34 39
 </script>

+ 80
- 47
src/pages/AllPages.vue View File

@@ -2,26 +2,26 @@
2 2
   <div class="index-box">
3 3
     <img src="../../public/fourBoxes-image/1.jpg" class="bg-image" />
4 4
     <div class="index-FourBoxes">
5
-      <div class="index-FourBoxes-yushi test" @click="goPagess('yushi')">
6
-        <img src="../../public/fourBoxes-image/浴室.png" :style="styleImage" class="Four-image" />
5
+      <div class="index-FourBoxes-yushi test" :class="{ active: currentItem === 0 }" @click="goPagess(0)">
6
+        <img src="../../public/fourBoxes-image/浴室.png" class="Four-image" @transitionend="handleTransitionEnd('yushi')" />
7 7
         <div style=" width: 80px; position: absolute; left: 13vw; top: 36vh;">
8 8
           <img style=" width:100%;" src="../assets/fourBoxes-2/浴室-2.png" />
9 9
         </div>
10 10
       </div>
11
-      <div class="index-FourBoxes-yimao test" @click="goPagess('yimao')">
12
-        <img src="../../public/fourBoxes-image/衣帽间.png" :style="styleImage" class="Four-image" />
11
+      <div class="index-FourBoxes-yimao test" :class="{ active: currentItem === 1 }" @click="goPagess(1)">
12
+        <img src="../../public/fourBoxes-image/衣帽间.png" class="Four-image" @transitionend="handleTransitionEnd('yimao')" />
13 13
         <div style=" width: 80px;; position: absolute; left: 62vw; top: 36vh;">
14 14
           <img style=" width:100%;" src="../assets/fourBoxes-2/衣帽间-2.png" />
15 15
         </div>
16 16
       </div>
17
-      <div class="index-FourBoxes-keting test" @click="goPagess('keting')">
18
-        <img src="../../public/fourBoxes-image/客厅.png" :style="styleImage" class="Four-image" />
17
+      <div class="index-FourBoxes-keting test" :class="{ active: currentItem === 2 }" @click="goPagess(2)">
18
+        <img src="../../public/fourBoxes-image/客厅.png" @transitionend="handleTransitionEnd('keting')" class="Four-image" />
19 19
         <div style=" width: 80px;; position: absolute; left: 13vw; top: 77vh;">
20 20
           <img style=" width:100%;" src="../assets/fourBoxes-2/客厅-2.png" />
21 21
         </div>
22 22
       </div>
23
-      <div class="index-FourBoxes-yangtai test" @click="goPagess('yangtai')">
24
-        <img src="../../public/fourBoxes-image/阳台.png" :style="styleImage" class="Four-image" />
23
+      <div class="index-FourBoxes-yangtai test" :class="{ active: currentItem === 3 }" @click="goPagess(3)">
24
+        <img src="../../public/fourBoxes-image/阳台.png" @transitionend="handleTransitionEnd('yangtai')" class="Four-image" />
25 25
         <div style=" width: 80px;; position: absolute; left: 62vw; top: 77vh;">
26 26
           <img style=" width:100%;" src="../assets/fourBoxes-2/阳台-2.png" />
27 27
         </div>
@@ -34,7 +34,14 @@
34 34
 export default {
35 35
   data() {
36 36
     return {
37
-      styleImage: 'opacity: 0.3;',
37
+      currentItem: -1,
38
+      currentType: '',
39
+      styleImage: [
40
+        'opacity: 0.3;',
41
+        'opacity: 0.3;',
42
+        'opacity: 0.3;',
43
+        'opacity: 0.3;',
44
+        ],
38 45
       typeYushi: {
39 46
         bgImage: require('../../public/yushi-image/1.jpg'),
40 47
         swiper: {
@@ -72,45 +79,60 @@ export default {
72 79
     }
73 80
   },
74 81
   methods: {
75
-    goPagess(e, res) {
76
-      this.styleImage = ''
77
-
78
-      switch (e) {
79
-        case 'yushi':
80
-          var arr = JSON.stringify(this.typeYushi)
81
-          this.$router.push({
82
-            name: 'Test',
83
-            params: { types: encodeURIComponent(arr) }
84
-          })
82
+    handleTransitionEnd(types) {
83
+      this.$router.push({ name: 'Test', params: { types }})
84
+    },
85
+    goPagess(inx) {
86
+      this.currentItem = inx
85 87
 
86
-          break
87
-        case 'keting':
88
-          console.log('keting')
89
-          var arr = JSON.stringify(this.typeKeting)
90
-          this.$router.push({
91
-            name: 'Test',
92
-            params: { types: encodeURIComponent(arr) }
93
-          })
94
-          break
95
-        case 'yimao':
96
-          console.log('yimao')
97
-          var arr = JSON.stringify(this.typeYimao)
98
-          this.$router.push({
99
-            name: 'Test',
100
-            params: { types: encodeURIComponent(arr) }
101
-          })
102
-          break
103
-        case 'yangtai':
104
-          console.log('yangtai')
105
-          var arr = JSON.stringify(this.typeYangtai)
106
-          this.$router.push({
107
-            name: 'Test',
108
-            params: { types: encodeURIComponent(arr) }
109
-          })
110
-          break
111
-        default:
112
-          return
113
-      }
88
+      // switch (e) {
89
+      //   case 'yushi':
90
+      //     var arr = JSON.stringify(this.typeYushi)
91
+      //     this.styleImage[0] = 'opacity:1'
92
+      //     setTimeout(()=>{
93
+      //       this.$router.push({
94
+      //           name: 'Test',
95
+      //           params: { types: encodeURIComponent(arr) }
96
+      //       })
97
+      //       // this.styleImage[0] = 'opacity: 0.3;'
98
+      //     },1000)
99
+      //     break
100
+      //   case 'keting':
101
+      //     var arr = JSON.stringify(this.typeKeting)
102
+      //     this.styleImage[1] = ''
103
+      //     setTimeout(()=>{
104
+      //       this.$router.push({
105
+      //         name: 'Test',
106
+      //         params: { types: encodeURIComponent(arr) }
107
+      //       })
108
+      //       // this.styleImage[1] = 'opacity: 0.3;'
109
+      //     },1000)
110
+      //     break
111
+      //   case 'yimao':
112
+      //     var arr = JSON.stringify(this.typeYimao)          
113
+      //     this.styleImage[2] = ''
114
+      //     setTimeout(()=>{
115
+      //       this.$router.push({
116
+      //         name: 'Test',
117
+      //         params: { types: encodeURIComponent(arr) }
118
+      //       })
119
+      //       // this.styleImage[2] = 'opacity: 0.3;'
120
+      //     },1000)
121
+      //     break
122
+      //   case 'yangtai':
123
+      //     var arr = JSON.stringify(this.typeYangtai)
124
+      //     this.styleImage[3] = ''
125
+      //     setTimeout(()=>{
126
+      //       this.$router.push({
127
+      //         name: 'Test',
128
+      //         params: { types: encodeURIComponent(arr) }
129
+      //       })
130
+      //       // this.styleImage[3] = 'opacity: 0.3;'
131
+      //     },1000)
132
+      //     break
133
+      //   default:
134
+      //     return
135
+      // }
114 136
     },
115 137
     goYimao() {},
116 138
     goKeting() {},
@@ -140,6 +162,17 @@ export default {
140 162
     align-items: center;
141 163
     justify-content: center;
142 164
     .test {
165
+
166
+      & > img {
167
+        opacity: .6;
168
+        transition: opacity .2s ease;
169
+      }
170
+
171
+      &.active > img {
172
+        opacity: 1;
173
+      }
174
+
175
+
143 176
       float: left;
144 177
       width: 48%;
145 178
       height: 49%;

+ 17
- 17
src/pages/IndexImage.vue View File

@@ -1,20 +1,9 @@
1 1
 <template>
2 2
   <div class="index-image">
3 3
     <div class="index-inner-swiper">
4
-      <swiper :options="swiperOptions">
5
-        <swiper-slide class="index-inner-slide">
6
-          <img :src="typeImage.swiper1" />
7
-        </swiper-slide>
8
-
9
-        <swiper-slide class="index-inner-slide">
10
-          <img :src="typeImage.swiper2" />
11
-        </swiper-slide>
12
-
13
-        <swiper-slide class="index-inner-slide">
14
-          <img :src="typeImage.swiper3" />
15
-        </swiper-slide>
16
-        <swiper-slide class="index-inner-slide" v-if="typeImage.swiper4">
17
-          <img :src="typeImage.swiper4" />
4
+      <swiper :options="swiperOptions" ref="swiperRef">
5
+        <swiper-slide class="index-inner-slide" v-for="item in list" :key="item">
6
+          <img :src="item" />
18 7
         </swiper-slide>
19 8
       </swiper>
20 9
     </div>
@@ -25,9 +14,20 @@
25 14
 export default {
26 15
   name: 'IndexImage',
27 16
   props: {
28
-    typeImage: {
29
-      type: Object,
30
-      default: () => ({})
17
+    list: {
18
+      type: Array
19
+    }
20
+  },
21
+  // computed: {
22
+  //   list() {
23
+  //     return Object.keys(this.typeImage).map(k => this.typeImage[k])
24
+  //   }
25
+  // },
26
+  watch: {
27
+    list() {
28
+      this.$nextTick(() => {
29
+        this.$refs.swiperRef.update()
30
+      })
31 31
     }
32 32
   },
33 33
   data() {

+ 93
- 26
src/pages/Test.vue View File

@@ -1,24 +1,26 @@
1 1
 <template>
2 2
   <div class="index-box">
3
-    <img :src="songList.bgImage" class="bg-image" />
3
+    <img :src="bgImage" class="bg-image" />
4 4
     <!-- 透明返回按钮 -->
5 5
     <div style=" position: absolute;width: 55px;height: 52px;" @click="$router.go(-1)"></div>
6 6
     <!-- 透明返回按钮 -->
7 7
     <div class="body-swiper">
8
-      <!-- 左滑动 -->
9
-      <div class="body-swiper-left">
10
-        <img style="width:70%;position: relative; right: -1vw;" src="../assets/buttonImage/2左滑.png" />
11
-      </div>
8
+      <div class="slider-wrapper">
9
+        <!-- 左滑动 -->
10
+        <div class="body-swiper-left">
11
+          <img style="width:70%;position: relative; right: -1vw;" src="../assets/buttonImage/2左滑.png" />
12
+        </div>
12 13
 
13
-      <!-- swiper -->
14
-      <div class="body-swiper-middle">
15
-        <index-image :typeImage="swiperList"></index-image>
16
-      </div>
17
-      <!-- swiper -->
14
+        <!-- swiper -->
15
+        <div class="body-swiper-middle">
16
+          <index-image :list="list"></index-image>
17
+        </div>
18
+        <!-- swiper -->
18 19
 
19
-      <!-- 右滑动 -->
20
-      <div class="body-swiper-right">
21
-        <img style="width:70%;position: relative; right: -1vw;" src="../assets/buttonImage/3右滑.png" />
20
+        <!-- 右滑动 -->
21
+        <div class="body-swiper-right">
22
+          <img style="width:70%;position: relative; right: -1vw;" src="../assets/buttonImage/3右滑.png" />
23
+        </div>
22 24
       </div>
23 25
       <div class="button-img" @click="() => this.$router.push('/signup')">
24 26
         <img style="width:100%;" src="../assets/buttonImage/1即刻尊享.png" />
@@ -30,16 +32,62 @@
30 32
 
31 33
 <script>
32 34
 export default {
35
+  props: {
36
+    typePages: {
37
+      type: Object,
38
+      default: () => ({})
39
+    }
40
+  },
33 41
   data() {
34 42
     return {
43
+      images: {
44
+        yushi: {
45
+          bgImage: require('../../public/yushi-image/1.jpg'),
46
+          list: [
47
+            require('../../public/yushi-image/2.png'),
48
+            require('../../public/yushi-image/3.png'),
49
+            require('../../public/yushi-image/4.png')
50
+          ]
51
+        },
52
+        yimao: {
53
+          bgImage: require('../../public/yimao-image/1.jpg'),
54
+          list: [
55
+            require('../../public/yimao-image/2.png'),
56
+            require('../../public/yimao-image/3.png'),
57
+            require('../../public/yimao-image/4.png')
58
+          ]
59
+        },
60
+        keting: {
61
+          bgImage: require('../../public/keting-image/1.jpg'),
62
+          list: [
63
+            require('../../public/keting-image/2.png'),
64
+            require('../../public/keting-image/3.png'),
65
+            require('../../public/keting-image/4.png'),
66
+            require('../../public/keting-image/5.png')
67
+          ]
68
+        },
69
+        yangtai: {
70
+          bgImage: require('../../public/yangtai-image/1.jpg'),
71
+          list: [
72
+            require('../../public/yangtai-image/2.png'),
73
+            require('../../public/yangtai-image/3.png'),
74
+            require('../../public/yangtai-image/4.png'),
75
+            require('../../public/yangtai-image/5.png')
76
+          ]
77
+        }
78
+      },
35 79
       songList: {},
36
-      swiperList: {}
80
+      swiperList: []
37 81
     }
38 82
   },
39
-  props: {
40
-    typePages: {
41
-      type: Object,
42
-      default: () => ({})
83
+  computed: {
84
+    bgImage() {
85
+      if (!this.$route.params.types) return ''
86
+      return this.images[this.$route.params.types].bgImage
87
+    },
88
+    list() {
89
+      if (!this.$route.params.types) return []
90
+      return this.images[this.$route.params.types].list
43 91
     }
44 92
   },
45 93
   components: {
@@ -47,10 +95,12 @@ export default {
47 95
   },
48 96
   mounted() {
49 97
     this.$nextTick(function () {
50
-      console.log(this.$route.params.types)
51
-      var list = decodeURIComponent(this.$route.params.types)
52
-      this.songList = JSON.parse(list)
53
-      this.swiperList = this.songList.swiper
98
+      // console.log(this.$route.params.types)
99
+      // console.log(this.images[this.$route.params.types])
100
+      // var list = decodeURIComponent(this.images[this.$route.params.types])
101
+      // this.songList = this.images[this.$route.params.types]
102
+      // this.swiperList = this.images[this.$route.params.types].list
103
+      // console.log(this.swiperList)
54 104
     })
55 105
   }
56 106
 }
@@ -71,23 +121,40 @@ export default {
71 121
     width: 100vw;
72 122
     top: 47.5vh;
73 123
     display: flex;
124
+
125
+    .slider-wrapper {
126
+      width: 100%;
127
+      position: relative;
128
+    }
129
+
130
+    &-left {
131
+      left: 1vw;
132
+    }
133
+
134
+    &-right {
135
+      right: 1vw;
136
+    }
137
+
74 138
     &-left,
75 139
     &-right {
140
+      position: absolute;
76 141
       display: flex;
77 142
       align-items: center;
78 143
       margin: 0 auto;
79
-      height: 33vh;
80
-      z-index: 2;
144
+      z-index: 10;
145
+      top: -2vh;
146
+      height: 100%;
147
+      width: 6vw;
81 148
     }
82 149
     &-middle {
83
-      width: 84vw;
150
+      width: 100%;
84 151
     }
85 152
   }
86 153
   .button-img {
87 154
     position: absolute;
88 155
     width: 45vw;
89 156
     left: 27.5vw;
90
-    top: 37vh;
157
+    top: 39vh;
91 158
   }
92 159
 }
93 160
 </style>

+ 6
- 10
src/pages/signup.vue View File

@@ -4,7 +4,7 @@
4 4
     <div class="form">
5 5
       <div class="formItem">
6 6
         <label>身&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;份</label>
7
-        <div style="float: right;margin-right: 3vw;" @click="handleDesigner">
7
+        <div style="float: right;" @click="handleDesigner">
8 8
           <img class="checkedImg" :src="ischecked ? Unchecked : checked" />
9 9
           <label for="dewey">设计师</label>
10 10
         </div>
@@ -21,10 +21,6 @@
21 21
         <label>手&nbsp;机&nbsp;号</label>
22 22
         <input class="phone" type="text" placeholder="请输入手机号" v-model="formData.phone" />
23 23
       </div>
24
-      <div class="formItem phonediv">
25
-        <label>手&nbsp;机&nbsp;号</label>
26
-        <input class="phone" type="text" placeholder="请输入手机号" v-model="formData.phone" />
27
-      </div>
28 24
       <div class="formItem intendedProductdiv" @click="showPicker = true">
29 25
         <label>意向产品</label>        
30 26
         <input
@@ -145,11 +141,6 @@ export default {
145 141
             areaName: item.name
146 142
           }
147 143
         })
148
-        // const obj = JSON.stringify(arrNew)
149
-        console.log(
150
-          '🚀 ~ file: signup.vue ~ line 148 ~ sumbit ~ obj',
151
-          this.formData
152
-        )
153 144
         setRegister({
154 145
           areaCode: arrNew[2].areaCode,
155 146
           areaName: arrNew[2].areaName,
@@ -194,6 +185,7 @@ export default {
194 185
 .checkedImg {
195 186
   width: 16px;
196 187
   top: 2px;
188
+  right: 8px;
197 189
   position: relative;
198 190
 }
199 191
 .name {
@@ -209,6 +201,7 @@ export default {
209 201
   height: 100%;
210 202
   font-size: 16px;
211 203
   color: #a6b1ab;
204
+  float: right;
212 205
 }
213 206
 .phonediv {
214 207
   margin-top: 40%;
@@ -223,6 +216,7 @@ export default {
223 216
   height: 100%;
224 217
   font-size: 16px;
225 218
   color: #a6b1ab;
219
+  float: right;
226 220
 }
227 221
 .intendedProductdiv {
228 222
   margin-top: 57%;
@@ -237,6 +231,7 @@ export default {
237 231
   height: 100%;
238 232
   font-size: 16px;
239 233
   color: #a6b1ab;
234
+  float: right;
240 235
 }
241 236
 .addressdiv {
242 237
   margin-top: 74%;
@@ -251,6 +246,7 @@ export default {
251 246
   height: 100%;
252 247
   font-size: 16px;
253 248
   color: #a6b1ab;
249
+  float: right;
254 250
 }
255 251
 .submit {
256 252
   margin: 93% 0 0 27.5vw;