1002884655 4 лет назад
Родитель
Сommit
909fcf63aa

+ 8
- 0
src/pages/index.vue Просмотреть файл

@@ -9,6 +9,10 @@
9 9
         <span @click="MainTitleClick()">{{MainHeaderTitle}}</span>
10 10
         <a class="iconfont iconjiantoudown" @click="MainTitleClick()" v-if="ShowMainTitleIcon"></a>
11 11
       </span>
12
+      <a class="MainHeaderRight" v-if="ShowMainHeaderRight" @click="MainHeaderRightClick()">
13
+        <i class="iconfont" :class="MainHeaderRightIcon"></i>
14
+        <span>{{MainHeaderRightText}}</span>
15
+      </a>
12 16
     </div>
13 17
 
14 18
     <!-- 内容 -->
@@ -44,6 +48,10 @@ export default {
44 48
   },
45 49
   computed: {
46 50
     ...mapState({
51
+      ShowMainHeaderRight: x => x.ShowMainHeaderRight, // 显隐头部右边选项
52
+      MainHeaderRightIcon: x => x.MainHeaderRightIcon, // 头部右边选项图标
53
+      MainHeaderRightText: x => x.MainHeaderRightText, // 头部右边选项文本
54
+      MainHeaderRightClick: x => x.MainHeaderRightClick, // 头部右边选项点击事件
47 55
       MainTitleClick: x => x.MainTitleClick, // 页面标题点击事件
48 56
       ShowMainTitleIcon: x => x.ShowMainTitleIcon, // 显隐页面标题箭头图标
49 57
       ShowMainHeaderBack: x => x.ShowMainHeaderBack, // 显隐头部返回按钮

+ 31
- 0
src/pages/index/PaiLie3DingDan/index.vue Просмотреть файл

@@ -0,0 +1,31 @@
1
+<template>
2
+  <div class="Page">
3
+  </div>
4
+</template>
5
+
6
+<script>
7
+export default {
8
+  name: '',
9
+  data () {
10
+    return {
11
+    }
12
+  },
13
+  computed: {
14
+  },
15
+  components: {
16
+  },
17
+  created () {
18
+  },
19
+  mounted () {
20
+    this.$nextTick(() => {
21
+    })
22
+  },
23
+  methods: {
24
+  }
25
+}
26
+</script>
27
+
28
+<!-- Add "scoped" attribute to limit CSS to this component only -->
29
+<style lang="scss" scoped>
30
+@import "page.scss";
31
+</style>

+ 3
- 0
src/pages/index/PaiLie3DingDan/page.scss Просмотреть файл

@@ -0,0 +1,3 @@
1
+.Page {
2
+  
3
+}

+ 143
- 73
src/pages/index/PaiLie5/index.vue Просмотреть файл

@@ -1,7 +1,7 @@
1 1
 <template>
2 2
   <div class="Page flex-v">
3 3
 
4
-    <div class="Top">
4
+    <!-- <div class="Top">
5 5
       <div class="Time flex-h">
6 6
         <div class="Icon">
7 7
           <img src="../../../assets/img/icon2.png" class="centerLabel contain" alt="">
@@ -18,7 +18,7 @@
18 18
           </div>
19 19
         </div>
20 20
       </div>
21
-    </div>
21
+    </div> -->
22 22
 
23 23
     <nav class="flex-h">
24 24
       <a class="flex-item" :class="{'active': SelectType === 1}" @click="CutSelectType(1)">自选</a>
@@ -37,8 +37,8 @@
37 37
                 <span>万位区(至少选择一个)</span>
38 38
                 <ul>
39 39
                   <li v-for="(item, index) in NumData.WanWei" :key="index">
40
-                    <a>{{item.Num}}</a>
41
-                    <span>{{item.MissNum}}</span>
40
+                    <a :class="{'active': item.Active}" @click="SelectItem(item, 'WanWei')">{{item.Num}}</a>
41
+                    <!-- <span>{{item.MissNum}}</span> -->
42 42
                   </li>
43 43
                 </ul>
44 44
               </div>
@@ -46,8 +46,8 @@
46 46
                 <span>千位区(至少选择一个)</span>
47 47
                 <ul>
48 48
                   <li v-for="(item, index) in NumData.QianWei" :key="index">
49
-                    <a>{{item.Num}}</a>
50
-                    <span>{{item.MissNum}}</span>
49
+                    <a :class="{'active': item.Active}" @click="SelectItem(item, 'QianWei')">{{item.Num}}</a>
50
+                    <!-- <span>{{item.MissNum}}</span> -->
51 51
                   </li>
52 52
                 </ul>
53 53
               </div>
@@ -55,8 +55,8 @@
55 55
                 <span>百位区(至少选择一个)</span>
56 56
                 <ul>
57 57
                   <li v-for="(item, index) in NumData.BaiWei" :key="index">
58
-                    <a>{{item.Num}}</a>
59
-                    <span>{{item.MissNum}}</span>
58
+                    <a :class="{'active': item.Active}" @click="SelectItem(item, 'BaiWei')">{{item.Num}}</a>
59
+                    <!-- <span>{{item.MissNum}}</span> -->
60 60
                   </li>
61 61
                 </ul>
62 62
               </div>
@@ -64,8 +64,8 @@
64 64
                 <span>十位区(至少选择一个)</span>
65 65
                 <ul>
66 66
                   <li v-for="(item, index) in NumData.ShiWei" :key="index">
67
-                    <a>{{item.Num}}</a>
68
-                    <span>{{item.MissNum}}</span>
67
+                    <a :class="{'active': item.Active}" @click="SelectItem(item, 'ShiWei')">{{item.Num}}</a>
68
+                    <!-- <span>{{item.MissNum}}</span> -->
69 69
                   </li>
70 70
                 </ul>
71 71
               </div>
@@ -73,8 +73,8 @@
73 73
                 <span>个位区(至少选择一个)</span>
74 74
                 <ul>
75 75
                   <li v-for="(item, index) in NumData.GeWei" :key="index">
76
-                    <a>{{item.Num}}</a>
77
-                    <span>{{item.MissNum}}</span>
76
+                    <a :class="{'active': item.Active}" @click="SelectItem(item, 'GeWei')">{{item.Num}}</a>
77
+                    <!-- <span>{{item.MissNum}}</span> -->
78 78
                   </li>
79 79
                 </ul>
80 80
               </div>
@@ -83,60 +83,20 @@
83 83
             <!-- 机选 -->
84 84
             <div class="JiXuanArea" v-if="SelectType === 2">
85 85
               <nav class="flex-h">
86
-                <a class="flex-item">注数1</a>
87
-                <a class="flex-item">注数2</a>
88
-                <a class="flex-item">注数3</a>
89
-                <a class="flex-item">注数4</a>
90
-                <a class="flex-item active">注数5</a>
86
+                <a class="flex-item" :class="{'active': RandomCount === 1}" @click="CutRandomCount(1)">注数1</a>
87
+                <a class="flex-item" :class="{'active': RandomCount === 2}" @click="CutRandomCount(2)">注数2</a>
88
+                <a class="flex-item" :class="{'active': RandomCount === 3}" @click="CutRandomCount(3)">注数3</a>
89
+                <a class="flex-item" :class="{'active': RandomCount === 4}" @click="CutRandomCount(4)">注数4</a>
90
+                <a class="flex-item" :class="{'active': RandomCount === 5}" @click="CutRandomCount(5)">注数5</a>
91 91
               </nav>
92 92
               <ul>
93
-                <li>
94
-                  <span>1</span>
95
-                  <span>2</span>
96
-                  <span>3</span>
97
-                  <span>4</span>
98
-                  <span>5</span>
99
-                  <a class="iconfont iconjian"></a>
100
-                </li>
101
-                <li>
102
-                  <span>1</span>
103
-                  <span>2</span>
104
-                  <span>3</span>
105
-                  <span>4</span>
106
-                  <span>5</span>
107
-                  <a class="iconfont iconjian"></a>
108
-                </li>
109
-                <li>
110
-                  <span>1</span>
111
-                  <span>2</span>
112
-                  <span>3</span>
113
-                  <span>4</span>
114
-                  <span>5</span>
115
-                  <a class="iconfont iconjian"></a>
116
-                </li>
117
-                <li>
118
-                  <span>1</span>
119
-                  <span>2</span>
120
-                  <span>3</span>
121
-                  <span>4</span>
122
-                  <span>5</span>
123
-                  <a class="iconfont iconjian"></a>
124
-                </li>
125
-                <li>
126
-                  <span>1</span>
127
-                  <span>2</span>
128
-                  <span>3</span>
129
-                  <span>4</span>
130
-                  <span>5</span>
131
-                  <a class="iconfont iconjian"></a>
132
-                </li>
133
-                <li>
134
-                  <span>1</span>
135
-                  <span>2</span>
136
-                  <span>3</span>
137
-                  <span>4</span>
138
-                  <span>5</span>
139
-                  <a class="iconfont iconjian"></a>
93
+                <li v-for="(item, index) in RandomRes" :key="index">
94
+                  <span>{{item.WanWei[0]}}</span>
95
+                  <span>{{item.QianWei[0]}}</span>
96
+                  <span>{{item.BaiWei[0]}}</span>
97
+                  <span>{{item.ShiWei[0]}}</span>
98
+                  <span>{{item.GeWei[0]}}</span>
99
+                  <a class="iconfont iconjian" v-if="RandomRes.length > 1" @click="DeleteRandomResItem(index)"></a>
140 100
                 </li>
141 101
               </ul>
142 102
             </div>
@@ -148,25 +108,31 @@
148 108
 
149 109
     <!-- 投注栏 -->
150 110
     <div class="Bottom flex-h">
151
-      <span class="SelectRes">共<em>0</em>注<em>0</em>元,奖金<em>0</em>元</span>
152
-      <a class="iconfont iconjian" v-if="SelectType === 1"></a>
111
+      <span class="SelectRes">共<em>{{TotalResNum}}</em>注<em>{{TotalResNum * 2}}</em>元,奖金<em>0</em>元</span>
112
+      <a class="iconfont iconjian" v-if="SelectType === 1" @click="EmptySelectArea"></a>
153 113
       <a class="iconfont icongouwuche"></a>
154 114
       <div class="flex-item"></div>
155
-      <a class="Btn">添加号码蓝</a>
156
-      <a class="Btn">投注</a>
115
+      <a class="Btn" :class="{'active': CanCreateRes}" @click="AddCart">添加号码蓝</a>
116
+      <a class="Btn" :class="{'active': CanCreateRes}" @click="CreateOrder">投注</a>
157 117
     </div>
158 118
 
159 119
   </div>
160 120
 </template>
161 121
 
162 122
 <script>
163
-import { mapMutations } from 'vuex'
123
+import { mapMutations, createNamespacedHelpers } from 'vuex'
124
+const { mapMutations: mapUserMutations } = createNamespacedHelpers('user')
164 125
 export default {
165 126
   name: '',
166 127
   data () {
167 128
     return {
168
-      SelectType: 1,
169
-      NumData: {
129
+      TotalResNum: 0, // 总注数
130
+      CanCreateRes: false, // 能否生成选注结果
131
+      SelectType: 1, // 选注类型:1-自选 2-机选
132
+      RandomCount: 1, // 机选注数
133
+      RandomRes: [], // 机选结果
134
+      DataLock: false, // 数据锁
135
+      NumData: { // 选取数据
170 136
         WanWei: [],
171 137
         QianWei: [],
172 138
         ShiWei: [],
@@ -181,7 +147,6 @@ export default {
181 147
   },
182 148
   created () {
183 149
     this.EditMainData([ // 配置页面框架数据
184
-      { name: 'MainTitleClick', value: () => { } },
185 150
       { name: 'ShowMainHeader', value: true },
186 151
       { name: 'MainHeaderTitle', value: '排列5' },
187 152
       { name: 'ShowMainHeaderBack', value: true }
@@ -196,11 +161,116 @@ export default {
196 161
     ...mapMutations([
197 162
       'EditMainData' // 配置页面框架数据
198 163
     ]),
164
+    ...mapUserMutations([
165
+      'AddPaiLie5Cart'
166
+    ]),
199 167
     Init () { // 初始化
200 168
 
169
+    },
170
+    CreateOrder () { // 去投注
171
+      if (this.DataLock || !this.CanCreateRes) return
172
+      this.AddCart()
173
+      this.$router.push({ name: 'PaiLie5DingDan' })
174
+    },
175
+    DeleteRandomResItem (index) { // 删除机选注
176
+      this.RandomRes.splice(index, 1)
177
+      this.TotalResNum -= 1
178
+      this.RandomCount -= 1
179
+    },
180
+    CutRandomCount (num) { // 切换机选注数
181
+      if (this.DataLock) return
182
+      this.DataLock = true
183
+      this.RandomRes = []
184
+      for (let n = 0; n < num; n++) {
185
+        let Res = {}
186
+        for (let key in this.NumData) {
187
+          Res[key] = [this.NumData[key][Math.floor(this.NumData[key].length * Math.random())].Num]
188
+        }
189
+        this.RandomRes.push({ ...Res, Count: 1, Type: 'Random' })
190
+      }
191
+      this.RandomCount = num
192
+      this.TotalResNum = num
193
+      this.CanCreateRes = true
194
+      this.DataLock = false
195
+    },
196
+    AddCart () { // 添加购物车
197
+      if (this.DataLock || !this.CanCreateRes) return
198
+      this.DataLock = true
199
+      if (this.SelectType === 1) { // 自选
200
+        let Res = {}
201
+        for (let key in this.NumData) {
202
+          Res[key] = []
203
+          for (let n = 0; n < this.NumData[key].length; n++) {
204
+            if (this.NumData[key][n].Active) {
205
+              Res[key].push(this.NumData[key][n].Num)
206
+            }
207
+          }
208
+        }
209
+        this.AddPaiLie5Cart({ ...Res, Count: this.TotalResNum, Type: 'User' })
210
+        this.EmptySelectArea() // 清空自选选区
211
+        this.DataLock = false
212
+      } else { // 机选
213
+        this.RandomRes.map((item) => {
214
+          this.AddPaiLie5Cart({ ...item })
215
+        })
216
+        this.DataLock = false
217
+        this.CutRandomCount(this.RandomCount)
218
+      }
219
+    },
220
+    EmptySelectArea () { // 清空自选选区
221
+      this.CanCreateRes = false
222
+      this.TotalResNum = 0
223
+      for (let key in this.NumData) {
224
+        for (let n = 0; n < this.NumData[key].length; n++) {
225
+          this.NumData[key][n].Active = false
226
+        }
227
+      }
228
+    },
229
+    SelectItem (item, type) { // 选择号码
230
+      if (this.DataLock) return
231
+      this.DataLock = true
232
+      item.Active = !item.Active
233
+      this.CalcTotalRes()
234
+      this.DataLock = false
235
+    },
236
+    CalcTotalRes () { // 计算投注结果
237
+      let Num = 0
238
+      let KeyNum = 0
239
+      for (let key in this.NumData) {
240
+        KeyNum += 1
241
+        for (let n = 0; n < this.NumData[key].length; n++) {
242
+          if (this.NumData[key][n].Active) {
243
+            Num += 1
244
+            break
245
+          }
246
+        }
247
+      }
248
+      this.CanCreateRes = Num >= KeyNum
249
+      if (this.CanCreateRes) {
250
+        let Total = 1
251
+        for (let key in this.NumData) {
252
+          let Count = 0
253
+          for (let n = 0; n < this.NumData[key].length; n++) {
254
+            if (this.NumData[key][n].Active) {
255
+              Count += 1
256
+            }
257
+          }
258
+          Total *= Count
259
+        }
260
+        this.TotalResNum = Total
261
+      }
201 262
     },
202 263
     CutSelectType (type) { // 切换选取类型
203
-      this.SelectType = type
264
+      if (type !== this.SelectType) {
265
+        if (type === 1) {
266
+          this.EmptySelectArea() // 清空自选选区
267
+        } else {
268
+          this.RandomRes = []
269
+          this.RandomCount = 1
270
+          this.CutRandomCount(this.RandomCount)
271
+        }
272
+        this.SelectType = type
273
+      }
204 274
     },
205 275
     CreateData () { // 创建数据
206 276
       for (let key in this.NumData) {

+ 16
- 3
src/pages/index/PaiLie5/page.scss Просмотреть файл

@@ -163,6 +163,11 @@
163 163
                       display: block;
164 164
                       text-align: center;
165 165
                       border-radius: 100%;
166
+                      &.active {
167
+                        background: #ff5200;
168
+                        border-color: #ff5200;
169
+                        color: #fff;
170
+                      }
166 171
                     }
167 172
                     > span {
168 173
                       display: block;
@@ -265,15 +270,23 @@
265 270
     > .Btn {
266 271
       line-height: 0.28rem;
267 272
       font-size: 0.13rem;
268
-      color: #ff5200;
269
-      border: 0.01rem solid #ff5200;
273
+      color: #ccc;
274
+      border: 0.01rem solid #ccc;
270 275
       border-radius: 0.02rem;
271 276
       margin-left: 0.15rem;
272 277
       min-width: 0.7rem;
273 278
       text-align: center;
274 279
       &:last-child {
275 280
         color: #fff;
276
-        background: #ff5200;
281
+        background: #ccc;
282
+      }
283
+      &.active {
284
+        color: #ff5200;
285
+        border: 0.01rem solid #ff5200;
286
+        &:last-child {
287
+          color: #fff;
288
+          background: #ff5200;
289
+        }
277 290
       }
278 291
     }
279 292
   }

+ 55
- 0
src/pages/index/PaiLie5DingDan/index.vue Просмотреть файл

@@ -0,0 +1,55 @@
1
+<template>
2
+  <div class="Page">
3
+  </div>
4
+</template>
5
+
6
+<script>
7
+import { mapMutations, createNamespacedHelpers } from 'vuex'
8
+const { mapState: mapUserState, mapMutations: mapUserMutations } = createNamespacedHelpers('user')
9
+export default {
10
+  name: '',
11
+  data () {
12
+    return {
13
+      DataLock: false,
14
+      PageList: []
15
+    }
16
+  },
17
+  computed: {
18
+    ...mapUserState({
19
+      PaiLie5Cart: x => x.PaiLie5Cart
20
+    })
21
+  },
22
+  components: {
23
+  },
24
+  created () {
25
+    this.EditMainData([ // 配置页面框架数据
26
+      { name: 'MainHeaderRightClick', value: () => { console.log(111) } },
27
+      { name: 'ShowMainHeaderRight', value: true },
28
+      { name: 'MainHeaderRightIcon', value: 'iconqingkong' },
29
+      { name: 'MainHeaderRightText', value: '清空重选' },
30
+      { name: 'ShowMainHeader', value: true },
31
+      { name: 'MainHeaderTitle', value: '确认投注' },
32
+      { name: 'ShowMainHeaderBack', value: true }
33
+    ])
34
+    this.PageList = [...this.PaiLie5Cart]
35
+    console.log(this.PaiLie5Cart.length)
36
+  },
37
+  mounted () {
38
+    this.$nextTick(() => {
39
+    })
40
+  },
41
+  methods: {
42
+    ...mapMutations([
43
+      'EditMainData' // 配置页面框架数据
44
+    ]),
45
+    ...mapUserMutations([
46
+      'AddPaiLie3Cart'
47
+    ])
48
+  }
49
+}
50
+</script>
51
+
52
+<!-- Add "scoped" attribute to limit CSS to this component only -->
53
+<style lang="scss" scoped>
54
+@import "page.scss";
55
+</style>

+ 3
- 0
src/pages/index/PaiLie5DingDan/page.scss Просмотреть файл

@@ -0,0 +1,3 @@
1
+.Page {
2
+  
3
+}

+ 17
- 0
src/pages/page.scss Просмотреть файл

@@ -39,6 +39,23 @@
39 39
         top: 0;
40 40
         left: 0.15rem;
41 41
       }
42
+      &.MainHeaderRight {
43
+        font-size: 0;
44
+        white-space: nowrap;
45
+        right: 0.15rem;
46
+        top: 0;
47
+        > * {
48
+          display: inline-block;
49
+          vertical-align: middle;
50
+          color: #fff;
51
+          font-size: 0.12rem;
52
+          line-height: 0.4rem;
53
+        }
54
+        > i {
55
+          font-size: 0.2rem;
56
+          margin-right: 0.05rem;
57
+        }
58
+      }
42 59
     }
43 60
   }
44 61
   > .MainBody {

+ 8
- 0
src/router/index.js Просмотреть файл

@@ -49,10 +49,18 @@ let router = new Router({
49 49
             path: '/index/PaiLie3', // 排列3
50 50
             name: 'PaiLie3',
51 51
             component: resolve => (require(['@/pages/index/PaiLie3'], resolve))
52
+          }, {
53
+            path: '/index/PaiLie3DingDan', // 排列3订单
54
+            name: 'PaiLie3DingDan',
55
+            component: resolve => (require(['@/pages/index/PaiLie3DingDan'], resolve))
52 56
           }, {
53 57
             path: '/index/PaiLie5', // 排列5
54 58
             name: 'PaiLie5',
55 59
             component: resolve => (require(['@/pages/index/PaiLie5'], resolve))
60
+          }, {
61
+            path: '/index/PaiLie5DingDan', // 排列5订单
62
+            name: 'PaiLie5DingDan',
63
+            component: resolve => (require(['@/pages/index/PaiLie5DingDan'], resolve))
56 64
           }
57 65
         ]
58 66
       },

+ 8
- 0
src/store/index.js Просмотреть файл

@@ -9,6 +9,10 @@ Vue.use(Vuex)
9 9
 
10 10
 const store = new Vuex.Store({
11 11
   state: {
12
+    ShowMainHeaderRight: false, // 显隐头部右边选项
13
+    MainHeaderRightIcon: null, // 头部右边选项图标
14
+    MainHeaderRightText: null, // 头部右边选项文本
15
+    MainHeaderRightClick: () => { }, // 头部右边选项点击事件
12 16
     MainTitleClick: () => { }, // 页面标题点击事件
13 17
     ShowMainTitleIcon: false, // 显隐页面标题箭头图标
14 18
     ShowMainHeaderBack: true, // 显隐头部返回按钮
@@ -66,6 +70,10 @@ const store = new Vuex.Store({
66 70
       state.AllLotteryType = Arr || []
67 71
     },
68 72
     EditMainData (state, data) { // 修改页面数据
73
+      state.ShowMainHeaderRight = false
74
+      state.MainHeaderRightIcon = null
75
+      state.MainHeaderRightText = null
76
+      state.MainHeaderRightClick = () => { }
69 77
       state.MainTitleClick = () => { }
70 78
       state.ShowMainHeader = false
71 79
       state.ShowMainTitleIcon = false

+ 20
- 0
src/store/user/index.js Просмотреть файл

@@ -4,6 +4,8 @@ import ToolClass from '../../util/PublicMethod'
4 4
 export default {
5 5
   namespaced: true,
6 6
   state: {
7
+    PaiLie3Cart: [], // 排列3购物车
8
+    PaiLie5Cart: [], // 排列5购物车
7 9
     DaLeTouCart: [], // 大乐透购物车
8 10
     ShuangSeQiuCart: [], // 双色球购物车
9 11
     UserInfo: null, // 用户信息
@@ -58,6 +60,24 @@ export default {
58 60
     },
59 61
     EmptyShuangSeQiuCart (state, data) { // 清空双色球购物车
60 62
       state.ShuangSeQiuCart = []
63
+    },
64
+    AddPaiLie3Cart (state, data) { // 新增排列3购物车
65
+      state.PaiLie3Cart.push(data)
66
+    },
67
+    DeletePaiLie3Cart (state, data) { // 删除排列3购物车
68
+      state.PaiLie3Cart.splice(data, 1)
69
+    },
70
+    EmptyPaiLie3Cart (state, data) { // 清空排列3购物车
71
+      state.PaiLie3Cart = []
72
+    },
73
+    AddPaiLie5Cart (state, data) { // 新增排列5购物车
74
+      state.PaiLie5Cart.push(data)
75
+    },
76
+    DeletePaiLie5Cart (state, data) { // 删除排列5购物车
77
+      state.PaiLie5Cart.splice(data, 1)
78
+    },
79
+    EmptyPaiLie5Cart (state, data) { // 清空排列5购物车
80
+      state.PaiLie5Cart = []
61 81
     }
62 82
   },
63 83
   actions: {