xcx преди 4 години
родител
ревизия
e0689d6d12
променени са 32 файла, в които са добавени 1505 реда и са изтрити 445 реда
  1. 40
    11
      src/components/index/LanQiuDanGuanDaXiaoFen/index.vue
  2. 40
    11
      src/components/index/LanQiuDanGuanRangFenShengFu/index.vue
  3. 37
    37
      src/components/index/LanQiuDanGuanRangFenShengFu/page.scss
  4. 77
    13
      src/components/index/LanQiuDanGuanShengFenCha/index.vue
  5. 8
    1
      src/components/index/LanQiuDanGuanShengFenCha/page.scss
  6. 40
    11
      src/components/index/LanQiuDanGuanShengFu/index.vue
  7. 37
    37
      src/components/index/LanQiuDanGuanShengFu/page.scss
  8. 40
    11
      src/components/index/LanQiuGuoGuanDaXiaoFen/index.vue
  9. 37
    37
      src/components/index/LanQiuGuoGuanDaXiaoFen/page.scss
  10. 78
    70
      src/components/index/LanQiuGuoGuanHunHeTouZhu/index.vue
  11. 80
    80
      src/components/index/LanQiuGuoGuanHunHeTouZhu/page.scss
  12. 40
    11
      src/components/index/LanQiuGuoGuanRangFenShengFu/index.vue
  13. 37
    37
      src/components/index/LanQiuGuoGuanRangFenShengFu/page.scss
  14. 75
    11
      src/components/index/LanQiuGuoGuanShengFenCha/index.vue
  15. 7
    0
      src/components/index/LanQiuGuoGuanShengFenCha/page.scss
  16. 40
    11
      src/components/index/LanQiuGuoGuanShengFu/index.vue
  17. 37
    37
      src/components/index/LanQiuGuoGuanShengFu/page.scss
  18. 69
    0
      src/components/index/LqgghhtzDaXiaoFen/index.vue
  19. 45
    0
      src/components/index/LqgghhtzDaXiaoFen/page.scss
  20. 66
    0
      src/components/index/LqgghhtzDaXiaoFenItem/index.vue
  21. 46
    0
      src/components/index/LqgghhtzDaXiaoFenItem/page.scss
  22. 66
    0
      src/components/index/LqgghhtzRangFenShengFu/index.vue
  23. 46
    0
      src/components/index/LqgghhtzRangFenShengFu/page.scss
  24. 99
    0
      src/components/index/LqgghhtzShengFenCha/index.vue
  25. 45
    0
      src/components/index/LqgghhtzShengFenCha/page.scss
  26. 83
    0
      src/components/index/LqgghhtzShengFu/index.vue
  27. 51
    0
      src/components/index/LqgghhtzShengFu/page.scss
  28. 66
    0
      src/components/index/LqgghhtzShengFuItem/index.vue
  29. 46
    0
      src/components/index/LqgghhtzShengFuItem/page.scss
  30. 0
    8
      src/components/index/ZuQiuDanGuanShengPingFu/index.vue
  31. 4
    1
      src/components/index/ZuQiuGuoGuanHunHeTouZhu/index.vue
  32. 23
    10
      src/pages/index/LanQiu/index.vue

+ 40
- 11
src/components/index/LanQiuDanGuanDaXiaoFen/index.vue Целия файл

@@ -2,7 +2,7 @@
2 2
   <div class="components LanQiuDanGuanDaXiaoFen">
3 3
 
4 4
     <ul>
5
-      <li v-for="(item, index) in Data" :key="index" v-if="item.playOdds[`bst-score`] !== undefined">
5
+      <li v-for="(item, index) in PageData" :key="index" v-if="item.playOdds[`bst-score`] !== undefined">
6 6
         <div class="Title flex-h">
7 7
           <div class="flex-item">
8 8
             <div>
@@ -11,16 +11,8 @@
11 11
           </div>
12 12
           <span>{{item.leagueName}}<em>{{item.matchTime}}(截)</em></span>
13 13
         </div>
14
-        <div class="Detail flex-h">
15
-          <span>{{item.matchId}}</span>
16
-          <div class="flex-item flex-h">
17
-            <div class="flex-item flex-h">
18
-              <a class="flex-item" v-for="(subItem, subIndex) in item.playOdds[`bst-score`]" :key="subIndex">
19
-                <span>{{subItem.name}}</span>
20
-                <span>{{subItem.odds}}</span>
21
-              </a>
22
-            </div>
23
-          </div>
14
+        <div class="Detail">
15
+          <LqgghhtzDaXiaoFenItem :Id="item.matchId" :Index="index" :ScoreData="item.playOdds['bst-score']" @SelectItem="SelectItem"></LqgghhtzDaXiaoFenItem>
24 16
         </div>
25 17
       </li>
26 18
     </ul>
@@ -32,6 +24,7 @@
32 24
 /*
33 25
   页面名称:足球-过关-混合投注
34 26
 */
27
+import LqgghhtzDaXiaoFenItem from '../LqgghhtzDaXiaoFenItem'
35 28
 export default {
36 29
   name: 'LanQiuDanGuanDaXiaoFen',
37 30
   props: {
@@ -41,11 +34,14 @@ export default {
41 34
   },
42 35
   data () {
43 36
     return {
37
+      PageData: [...this.Data],
38
+      ResList: []
44 39
     }
45 40
   },
46 41
   computed: {
47 42
   },
48 43
   components: {
44
+    LqgghhtzDaXiaoFenItem
49 45
   },
50 46
   created () {
51 47
   },
@@ -54,6 +50,39 @@ export default {
54 50
     })
55 51
   },
56 52
   methods: {
53
+    SelectItem (e) { // 选择投注
54
+      this.TriggerRes(e.pIndex, e.cIndex, e.key, e.value, e.target, e.id)
55
+    },
56
+    TriggerRes (pIndex, cIndex, key, value, target, id) {
57
+      this.PageData[pIndex].playOdds[key][cIndex].Active = value
58
+      if (value) { // 新增投注
59
+        let Bool = false
60
+        this.ResList.map((item) => {
61
+          if (item.id === id) {
62
+            Bool = true
63
+            item.list.push({ ...target })
64
+            return false
65
+          }
66
+        })
67
+        if (!Bool) {
68
+          this.ResList.push({ id: id, list: [] })
69
+          this.ResList[this.ResList.length - 1].list.push({ ...target })
70
+        }
71
+      } else { // 删除投注
72
+        this.ResList.map((item, index) => {
73
+          item.list.map((subItem, subIndex) => {
74
+            if (subItem.ruleCode === target.ruleCode && subItem.name === target.name) {
75
+              item.list.splice(subIndex, 1)
76
+              if (!item.list.length) {
77
+                this.ResList.splice(index, 1)
78
+              }
79
+            }
80
+          })
81
+        })
82
+      }
83
+      this.$emit('Change', this.ResList)
84
+      // console.log(this.ResList)
85
+    }
57 86
   }
58 87
 }
59 88
 </script>

+ 40
- 11
src/components/index/LanQiuDanGuanRangFenShengFu/index.vue Целия файл

@@ -2,7 +2,7 @@
2 2
   <div class="components LanQiuDanGuanRangFenShengFu">
3 3
 
4 4
     <ul>
5
-      <li v-for="(item, index) in Data" :key="index" v-if="item.playOdds[`bst-wls`] !== undefined">
5
+      <li v-for="(item, index) in PageData" :key="index" v-if="item.playOdds[`bst-wls`] !== undefined">
6 6
         <div class="Title flex-h">
7 7
           <div class="flex-item">
8 8
             <div>
@@ -11,16 +11,8 @@
11 11
           </div>
12 12
           <span>{{item.leagueName}}<em>{{item.matchTime}}(截)</em></span>
13 13
         </div>
14
-        <div class="Detail flex-h">
15
-          <span>{{item.matchId}}</span>
16
-          <div class="flex-item flex-h">
17
-            <div class="flex-item flex-h">
18
-              <a class="flex-item" v-for="(subItem, subIndex) in item.playOdds[`bst-wls`]" :key="subIndex">
19
-                <span>{{subItem.name}}</span>
20
-                <span>{{subItem.odds}}</span>
21
-              </a>
22
-            </div>
23
-          </div>
14
+        <div class="Detail">
15
+          <LqgghhtzRangFenShengFu :Id="item.matchId" :Index="index" :WlsData="item.playOdds['bst-wls']" @SelectItem="SelectItem"></LqgghhtzRangFenShengFu>
24 16
         </div>
25 17
       </li>
26 18
     </ul>
@@ -32,6 +24,7 @@
32 24
 /*
33 25
   页面名称:足球-过关-混合投注
34 26
 */
27
+import LqgghhtzRangFenShengFu from '../LqgghhtzRangFenShengFu'
35 28
 export default {
36 29
   name: 'LanQiuDanGuanRangFenShengFu',
37 30
   props: {
@@ -41,11 +34,14 @@ export default {
41 34
   },
42 35
   data () {
43 36
     return {
37
+      PageData: [...this.Data],
38
+      ResList: []
44 39
     }
45 40
   },
46 41
   computed: {
47 42
   },
48 43
   components: {
44
+    LqgghhtzRangFenShengFu
49 45
   },
50 46
   created () {
51 47
   },
@@ -54,6 +50,39 @@ export default {
54 50
     })
55 51
   },
56 52
   methods: {
53
+    SelectItem (e) { // 选择投注
54
+      this.TriggerRes(e.pIndex, e.cIndex, e.key, e.value, e.target, e.id)
55
+    },
56
+    TriggerRes (pIndex, cIndex, key, value, target, id) {
57
+      this.PageData[pIndex].playOdds[key][cIndex].Active = value
58
+      if (value) { // 新增投注
59
+        let Bool = false
60
+        this.ResList.map((item) => {
61
+          if (item.id === id) {
62
+            Bool = true
63
+            item.list.push({ ...target })
64
+            return false
65
+          }
66
+        })
67
+        if (!Bool) {
68
+          this.ResList.push({ id: id, list: [] })
69
+          this.ResList[this.ResList.length - 1].list.push({ ...target })
70
+        }
71
+      } else { // 删除投注
72
+        this.ResList.map((item, index) => {
73
+          item.list.map((subItem, subIndex) => {
74
+            if (subItem.ruleCode === target.ruleCode && subItem.name === target.name) {
75
+              item.list.splice(subIndex, 1)
76
+              if (!item.list.length) {
77
+                this.ResList.splice(index, 1)
78
+              }
79
+            }
80
+          })
81
+        })
82
+      }
83
+      this.$emit('Change', this.ResList)
84
+      // console.log(this.ResList)
85
+    }
57 86
   }
58 87
 }
59 88
 </script>

+ 37
- 37
src/components/index/LanQiuDanGuanRangFenShengFu/page.scss Целия файл

@@ -41,43 +41,43 @@
41 41
         }
42 42
       }
43 43
       > .Detail {
44
-        margin-top: 0.05rem;
45
-        > span {
46
-          font-size: 0.1rem;
47
-          color: #999;
48
-          margin-right: 0.4rem;
49
-        }
50
-        align-items: center;
51
-        > div.flex-item {
52
-          align-items: center;
53
-          > div.flex-item {
54
-            position: relative;
55
-            overflow: hidden;
56
-            > a {
57
-              border: 0.01rem solid #999;
58
-              box-sizing: border-box;
59
-              margin-right: 0.05rem;
60
-              > span {
61
-                display: block;
62
-                font-size: 0.13rem;
63
-                line-height: 0.22rem;
64
-                text-align: center;
65
-              }
66
-            }
67
-          }
68
-          > a {
69
-            font-size: 0.1rem;
70
-            color: #ff5100;
71
-            line-height: 0.2rem;
72
-            border: 0.01rem solid #999;
73
-            margin-left: 0.05rem;
74
-            position: relative;
75
-            overflow: hidden;
76
-            padding: 0 0.02rem;
77
-            padding-top: 0.04rem;
78
-            margin-right: 0.2rem;
79
-          }
80
-        }
44
+        // margin-top: 0.05rem;
45
+        // > span {
46
+        //   font-size: 0.1rem;
47
+        //   color: #999;
48
+        //   margin-right: 0.4rem;
49
+        // }
50
+        // align-items: center;
51
+        // > div.flex-item {
52
+        //   align-items: center;
53
+        //   > div.flex-item {
54
+        //     position: relative;
55
+        //     overflow: hidden;
56
+        //     > a {
57
+        //       border: 0.01rem solid #999;
58
+        //       box-sizing: border-box;
59
+        //       margin-right: 0.05rem;
60
+        //       > span {
61
+        //         display: block;
62
+        //         font-size: 0.13rem;
63
+        //         line-height: 0.22rem;
64
+        //         text-align: center;
65
+        //       }
66
+        //     }
67
+        //   }
68
+        //   > a {
69
+        //     font-size: 0.1rem;
70
+        //     color: #ff5100;
71
+        //     line-height: 0.2rem;
72
+        //     border: 0.01rem solid #999;
73
+        //     margin-left: 0.05rem;
74
+        //     position: relative;
75
+        //     overflow: hidden;
76
+        //     padding: 0 0.02rem;
77
+        //     padding-top: 0.04rem;
78
+        //     margin-right: 0.2rem;
79
+        //   }
80
+        // }
81 81
       }
82 82
     }
83 83
   }

+ 77
- 13
src/components/index/LanQiuDanGuanShengFenCha/index.vue Целия файл

@@ -1,7 +1,7 @@
1 1
 <template>
2
-  <div class="components LanQiuGuoGuanShengFenCha">
2
+  <div class="components LanQiuDanGuanShengFenCha">
3 3
     <ul>
4
-      <li v-for="(item, index) in Data" :key="index" v-if="item.playOdds['bst-points'] !== undefined">
4
+      <li v-for="(item, index) in PageData" :key="index" v-if="item.playOdds['bst-points'] !== undefined">
5 5
         <div class="Title flex-h">
6 6
           <div class="flex-item">
7 7
             <div>
@@ -14,12 +14,9 @@
14 14
           <span>{{item.awayTeamId}}</span>
15 15
           <div class="flex-item flex-h">
16 16
             <div class="flex-item">
17
-              <div>
18
-                <a @click="CurrentTarget = item; ShowMore = true">点击选择投注选项</a>
19
-                <span>2:1</span>
20
-                <span>2:1</span>
21
-                <span>2:1</span>
22
-                <span>2:1</span>
17
+              <div @click="SelectPoints(item, index)">
18
+                <a v-if="!item.ResList.length">点击选择投注选项</a>
19
+                <span v-for="(subItem, subIndex) in item.ResList" :key="subIndex">{{subItem.name}}</span>
23 20
               </div>
24 21
             </div>
25 22
           </div>
@@ -34,7 +31,7 @@
34 31
           <span>{{CurrentTarget.homeTeamName}} VS {{CurrentTarget.awayTeamName}}</span>
35 32
           <div class="Content">
36 33
             <div>
37
-              <a v-for="(item, index) in CurrentTarget.playOdds['bst-points']" :key="index">
34
+              <a v-for="(item, index) in PointsData" :key="index" :class="{'active': item.Active}" @click="SelectItem(item, index, 'bst-points')">
38 35
                 <span>{{item.name}}</span>
39 36
                 <span>{{item.odds}}</span>
40 37
               </a>
@@ -43,8 +40,8 @@
43 40
             </div>
44 41
           </div>
45 42
           <div class="flex-h">
46
-            <a class="flex-item" @click="ShowMore = false; NavActiveIndex = 0;">取消</a>
47
-            <a class="flex-item">确认</a>
43
+            <a class="flex-item" @click="ShowMore = false">取消</a>
44
+            <a class="flex-item" @click="ShowMore = false">确认</a>
48 45
           </div>
49 46
         </div>
50 47
       </div>
@@ -58,7 +55,7 @@
58 55
   页面名称:足球-过关-混合投注
59 56
 */
60 57
 export default {
61
-  name: 'LanQiuGuoGuanShengFenCha',
58
+  name: 'LanQiuDanGuanShengFenCha',
62 59
   props: {
63 60
     Data: {
64 61
       default: []
@@ -66,9 +63,13 @@ export default {
66 63
   },
67 64
   data () {
68 65
     return {
66
+      PointsData: [],
69 67
       CurrentTarget: null,
68
+      CurrentIndex: null,
70 69
       ShowMore: false,
71
-      NavActiveIndex: 0
70
+      NavActiveIndex: 0,
71
+      PageData: [],
72
+      ResList: []
72 73
     }
73 74
   },
74 75
   computed: {
@@ -76,12 +77,75 @@ export default {
76 77
   components: {
77 78
   },
78 79
   created () {
80
+    let Arr = []
81
+    this.Data.map((item) => {
82
+      Arr.push({ ...item, ResList: [] })
83
+    })
84
+    Arr.map((item) => {
85
+      if (item.playOdds['bst-points'] !== undefined) {
86
+        item.playOdds['bst-points'].map((subItem) => {
87
+          if (subItem.Active === undefined) {
88
+            subItem.Active = false
89
+          }
90
+        })
91
+      }
92
+    })
93
+    this.PageData = [...Arr]
79 94
   },
80 95
   mounted () {
81 96
     this.$nextTick(() => {
82 97
     })
83 98
   },
84 99
   methods: {
100
+    SelectPoints (item, index) { // 打开选择弹窗
101
+      this.CurrentTarget = item
102
+      this.CurrentIndex = index
103
+      this.PointsData = []
104
+      if (this.CurrentTarget.playOdds['bst-points'] !== undefined) {
105
+        this.CurrentTarget.playOdds['bst-points'].map((item) => {
106
+          if (item.Active === undefined) {
107
+            this.PointsData.push({ ...item, Active: false })
108
+          } else {
109
+            this.PointsData.push({ ...item })
110
+          }
111
+        })
112
+      }
113
+      this.ShowMore = true
114
+    },
115
+    SelectItem (item, index, key) { // 选择投注
116
+      item.Active = !item.Active
117
+      this.TriggerRes(this.CurrentIndex, index, key, item.Active, item, this.CurrentTarget.matchId)
118
+    },
119
+    TriggerRes (pIndex, cIndex, key, value, target, id) {
120
+      this.PageData[pIndex].playOdds[key][cIndex].Active = value
121
+      if (value) { // 新增投注
122
+        let Bool = false
123
+        this.ResList.map((item) => {
124
+          if (item.id === id) {
125
+            Bool = true
126
+            item.list.push({ ...target })
127
+            return false
128
+          }
129
+        })
130
+        if (!Bool) {
131
+          this.ResList.push({ id: id, list: [] })
132
+          this.ResList[this.ResList.length - 1].list.push({ ...target })
133
+        }
134
+      } else { // 删除投注
135
+        this.ResList.map((item, index) => {
136
+          item.list.map((subItem, subIndex) => {
137
+            if (subItem.ruleCode === target.ruleCode && subItem.name === target.name) {
138
+              item.list.splice(subIndex, 1)
139
+              if (!item.list.length) {
140
+                this.ResList.splice(index, 1)
141
+              }
142
+            }
143
+          })
144
+        })
145
+      }
146
+      this.$emit('Change', this.ResList)
147
+      // console.log(this.ResList)
148
+    }
85 149
   }
86 150
 }
87 151
 </script>

+ 8
- 1
src/components/index/LanQiuDanGuanShengFenCha/page.scss Целия файл

@@ -1,4 +1,4 @@
1
-.components.LanQiuGuoGuanShengFenCha {
1
+.components.LanQiuDanGuanShengFenCha {
2 2
   padding: 0 0.15rem;
3 3
   position: relative;
4 4
   overflow: hidden;
@@ -171,6 +171,13 @@
171 171
                 text-align: center;
172 172
                 line-height: 0.16rem;
173 173
               }
174
+              &.active {
175
+                background: #ff5100;
176
+                border-color: #ff5100;
177
+                > span {
178
+                  color: #fff;
179
+                }
180
+              }
174 181
             }
175 182
           }
176 183
         }

+ 40
- 11
src/components/index/LanQiuDanGuanShengFu/index.vue Целия файл

@@ -2,7 +2,7 @@
2 2
   <div class="components LanQiuDanGuanShengFu">
3 3
 
4 4
     <ul>
5
-      <li v-for="(item, index) in Data" :key="index" v-if="item.playOdds[`bst-wl`] !== undefined">
5
+      <li v-for="(item, index) in PageData" :key="index" v-if="item.playOdds[`bst-wl`] !== undefined">
6 6
         <div class="Title flex-h">
7 7
           <div class="flex-item">
8 8
             <div>
@@ -11,16 +11,8 @@
11 11
           </div>
12 12
           <span>{{item.leagueName}}<em>{{item.matchTime}}(截)</em></span>
13 13
         </div>
14
-        <div class="Detail flex-h">
15
-          <span>{{item.matchId}}</span>
16
-          <div class="flex-item flex-h">
17
-            <div class="flex-item flex-h">
18
-              <a class="flex-item" v-for="(subItem, subIndex) in item.playOdds[`bst-wl`]" :key="subIndex">
19
-                <span>{{subItem.name}}</span>
20
-                <span>{{subItem.odds}}</span>
21
-              </a>
22
-            </div>
23
-          </div>
14
+        <div class="Detail">
15
+          <LqgghhtzShengFuItem :Id="item.matchId" :Index="index" :WlData="item.playOdds['bst-wl']" @SelectItem="SelectItem"></LqgghhtzShengFuItem>
24 16
         </div>
25 17
       </li>
26 18
     </ul>
@@ -32,6 +24,7 @@
32 24
 /*
33 25
   页面名称:足球-过关-混合投注
34 26
 */
27
+import LqgghhtzShengFuItem from '../LqgghhtzShengFuItem'
35 28
 export default {
36 29
   name: 'LanQiuDanGuanShengFu',
37 30
   props: {
@@ -41,11 +34,14 @@ export default {
41 34
   },
42 35
   data () {
43 36
     return {
37
+      PageData: [...this.Data],
38
+      ResList: []
44 39
     }
45 40
   },
46 41
   computed: {
47 42
   },
48 43
   components: {
44
+    LqgghhtzShengFuItem
49 45
   },
50 46
   created () {
51 47
   },
@@ -54,6 +50,39 @@ export default {
54 50
     })
55 51
   },
56 52
   methods: {
53
+    SelectItem (e) { // 选择投注
54
+      this.TriggerRes(e.pIndex, e.cIndex, e.key, e.value, e.target, e.id)
55
+    },
56
+    TriggerRes (pIndex, cIndex, key, value, target, id) {
57
+      this.PageData[pIndex].playOdds[key][cIndex].Active = value
58
+      if (value) { // 新增投注
59
+        let Bool = false
60
+        this.ResList.map((item) => {
61
+          if (item.id === id) {
62
+            Bool = true
63
+            item.list.push({ ...target })
64
+            return false
65
+          }
66
+        })
67
+        if (!Bool) {
68
+          this.ResList.push({ id: id, list: [] })
69
+          this.ResList[this.ResList.length - 1].list.push({ ...target })
70
+        }
71
+      } else { // 删除投注
72
+        this.ResList.map((item, index) => {
73
+          item.list.map((subItem, subIndex) => {
74
+            if (subItem.ruleCode === target.ruleCode && subItem.name === target.name) {
75
+              item.list.splice(subIndex, 1)
76
+              if (!item.list.length) {
77
+                this.ResList.splice(index, 1)
78
+              }
79
+            }
80
+          })
81
+        })
82
+      }
83
+      this.$emit('Change', this.ResList)
84
+      // console.log(this.ResList)
85
+    }
57 86
   }
58 87
 }
59 88
 </script>

+ 37
- 37
src/components/index/LanQiuDanGuanShengFu/page.scss Целия файл

@@ -41,43 +41,43 @@
41 41
         }
42 42
       }
43 43
       > .Detail {
44
-        margin-top: 0.05rem;
45
-        > span {
46
-          font-size: 0.1rem;
47
-          color: #999;
48
-          margin-right: 0.4rem;
49
-        }
50
-        align-items: center;
51
-        > div.flex-item {
52
-          align-items: center;
53
-          > div.flex-item {
54
-            position: relative;
55
-            overflow: hidden;
56
-            > a {
57
-              border: 0.01rem solid #999;
58
-              box-sizing: border-box;
59
-              margin-right: 0.05rem;
60
-              > span {
61
-                display: block;
62
-                font-size: 0.13rem;
63
-                line-height: 0.22rem;
64
-                text-align: center;
65
-              }
66
-            }
67
-          }
68
-          > a {
69
-            font-size: 0.1rem;
70
-            color: #ff5100;
71
-            line-height: 0.2rem;
72
-            border: 0.01rem solid #999;
73
-            margin-left: 0.05rem;
74
-            position: relative;
75
-            overflow: hidden;
76
-            padding: 0 0.02rem;
77
-            padding-top: 0.04rem;
78
-            margin-right: 0.2rem;
79
-          }
80
-        }
44
+        // margin-top: 0.05rem;
45
+        // align-items: center;
46
+        // > span {
47
+        //   font-size: 0.1rem;
48
+        //   color: #999;
49
+        //   margin-right: 0.4rem;
50
+        // }
51
+        // > div.flex-item {
52
+        //   align-items: center;
53
+        //   > div.flex-item {
54
+        //     position: relative;
55
+        //     overflow: hidden;
56
+        //     > a {
57
+        //       border: 0.01rem solid #999;
58
+        //       box-sizing: border-box;
59
+        //       margin-right: 0.05rem;
60
+        //       > span {
61
+        //         display: block;
62
+        //         font-size: 0.13rem;
63
+        //         line-height: 0.22rem;
64
+        //         text-align: center;
65
+        //       }
66
+        //     }
67
+        //   }
68
+        //   > a {
69
+        //     font-size: 0.1rem;
70
+        //     color: #ff5100;
71
+        //     line-height: 0.2rem;
72
+        //     border: 0.01rem solid #999;
73
+        //     margin-left: 0.05rem;
74
+        //     position: relative;
75
+        //     overflow: hidden;
76
+        //     padding: 0 0.02rem;
77
+        //     padding-top: 0.04rem;
78
+        //     margin-right: 0.2rem;
79
+        //   }
80
+        // }
81 81
       }
82 82
     }
83 83
   }

+ 40
- 11
src/components/index/LanQiuGuoGuanDaXiaoFen/index.vue Целия файл

@@ -2,7 +2,7 @@
2 2
   <div class="components LanQiuGuoGuanDaXiaoFen">
3 3
 
4 4
     <ul>
5
-      <li v-for="(item, index) in Data" :key="index" v-if="item.playOdds[`bst-score`] !== undefined">
5
+      <li v-for="(item, index) in PageData" :key="index" v-if="item.playOdds[`bst-score`] !== undefined">
6 6
         <div class="Title flex-h">
7 7
           <div class="flex-item">
8 8
             <div>
@@ -11,16 +11,8 @@
11 11
           </div>
12 12
           <span>{{item.leagueName}}<em>{{item.matchTime}}(截)</em></span>
13 13
         </div>
14
-        <div class="Detail flex-h">
15
-          <span>{{item.matchId}}</span>
16
-          <div class="flex-item flex-h">
17
-            <div class="flex-item flex-h">
18
-              <a class="flex-item" v-for="(subItem, subIndex) in item.playOdds[`bst-score`]" :key="subIndex">
19
-                <span>{{subItem.name}}</span>
20
-                <span>{{subItem.odds}}</span>
21
-              </a>
22
-            </div>
23
-          </div>
14
+        <div class="Detail">
15
+          <LqgghhtzDaXiaoFenItem :Id="item.matchId" :Index="index" :ScoreData="item.playOdds['bst-score']" @SelectItem="SelectItem"></LqgghhtzDaXiaoFenItem>
24 16
         </div>
25 17
       </li>
26 18
     </ul>
@@ -32,6 +24,7 @@
32 24
 /*
33 25
   页面名称:足球-过关-混合投注
34 26
 */
27
+import LqgghhtzDaXiaoFenItem from '../LqgghhtzDaXiaoFenItem'
35 28
 export default {
36 29
   name: 'LanQiuGuoGuanDaXiaoFen',
37 30
   props: {
@@ -41,11 +34,14 @@ export default {
41 34
   },
42 35
   data () {
43 36
     return {
37
+      PageData: [...this.Data],
38
+      ResList: []
44 39
     }
45 40
   },
46 41
   computed: {
47 42
   },
48 43
   components: {
44
+    LqgghhtzDaXiaoFenItem
49 45
   },
50 46
   created () {
51 47
   },
@@ -54,6 +50,39 @@ export default {
54 50
     })
55 51
   },
56 52
   methods: {
53
+    SelectItem (e) { // 选择投注
54
+      this.TriggerRes(e.pIndex, e.cIndex, e.key, e.value, e.target, e.id)
55
+    },
56
+    TriggerRes (pIndex, cIndex, key, value, target, id) {
57
+      this.PageData[pIndex].playOdds[key][cIndex].Active = value
58
+      if (value) { // 新增投注
59
+        let Bool = false
60
+        this.ResList.map((item) => {
61
+          if (item.id === id) {
62
+            Bool = true
63
+            item.list.push({ ...target })
64
+            return false
65
+          }
66
+        })
67
+        if (!Bool) {
68
+          this.ResList.push({ id: id, list: [] })
69
+          this.ResList[this.ResList.length - 1].list.push({ ...target })
70
+        }
71
+      } else { // 删除投注
72
+        this.ResList.map((item, index) => {
73
+          item.list.map((subItem, subIndex) => {
74
+            if (subItem.ruleCode === target.ruleCode && subItem.name === target.name) {
75
+              item.list.splice(subIndex, 1)
76
+              if (!item.list.length) {
77
+                this.ResList.splice(index, 1)
78
+              }
79
+            }
80
+          })
81
+        })
82
+      }
83
+      this.$emit('Change', this.ResList)
84
+      // console.log(this.ResList)
85
+    }
57 86
   }
58 87
 }
59 88
 </script>

+ 37
- 37
src/components/index/LanQiuGuoGuanDaXiaoFen/page.scss Целия файл

@@ -41,43 +41,43 @@
41 41
         }
42 42
       }
43 43
       > .Detail {
44
-        margin-top: 0.05rem;
45
-        > span {
46
-          font-size: 0.1rem;
47
-          color: #999;
48
-          margin-right: 0.4rem;
49
-        }
50
-        align-items: center;
51
-        > div.flex-item {
52
-          align-items: center;
53
-          > div.flex-item {
54
-            position: relative;
55
-            overflow: hidden;
56
-            > a {
57
-              border: 0.01rem solid #999;
58
-              box-sizing: border-box;
59
-              margin-right: 0.05rem;
60
-              > span {
61
-                display: block;
62
-                font-size: 0.13rem;
63
-                line-height: 0.22rem;
64
-                text-align: center;
65
-              }
66
-            }
67
-          }
68
-          > a {
69
-            font-size: 0.1rem;
70
-            color: #ff5100;
71
-            line-height: 0.2rem;
72
-            border: 0.01rem solid #999;
73
-            margin-left: 0.05rem;
74
-            position: relative;
75
-            overflow: hidden;
76
-            padding: 0 0.02rem;
77
-            padding-top: 0.04rem;
78
-            margin-right: 0.2rem;
79
-          }
80
-        }
44
+        // margin-top: 0.05rem;
45
+        // align-items: center;
46
+        // > span {
47
+        //   font-size: 0.1rem;
48
+        //   color: #999;
49
+        //   margin-right: 0.4rem;
50
+        // }
51
+        // > div.flex-item {
52
+        //   align-items: center;
53
+        //   > div.flex-item {
54
+        //     position: relative;
55
+        //     overflow: hidden;
56
+        //     > a {
57
+        //       border: 0.01rem solid #999;
58
+        //       box-sizing: border-box;
59
+        //       margin-right: 0.05rem;
60
+        //       > span {
61
+        //         display: block;
62
+        //         font-size: 0.13rem;
63
+        //         line-height: 0.22rem;
64
+        //         text-align: center;
65
+        //       }
66
+        //     }
67
+        //   }
68
+        //   > a {
69
+        //     font-size: 0.1rem;
70
+        //     color: #ff5100;
71
+        //     line-height: 0.2rem;
72
+        //     border: 0.01rem solid #999;
73
+        //     margin-left: 0.05rem;
74
+        //     position: relative;
75
+        //     overflow: hidden;
76
+        //     padding: 0 0.02rem;
77
+        //     padding-top: 0.04rem;
78
+        //     margin-right: 0.2rem;
79
+        //   }
80
+        // }
81 81
       }
82 82
     }
83 83
   }

+ 78
- 70
src/components/index/LanQiuGuoGuanHunHeTouZhu/index.vue Целия файл

@@ -1,7 +1,7 @@
1 1
 <template>
2 2
   <div class="components LanQiuGuoGuanHunHeTouZhu">
3 3
     <ul>
4
-      <li v-for="(item, index) in Data" :key="index" v-if="item.playOdds[`bst-wl`] !== undefined && item.playOdds[`bst-wls`] !== undefined">
4
+      <li v-for="(item, index) in PageData" :key="index" v-if="item.playOdds[`bst-wl`] !== undefined && item.playOdds[`bst-wls`] !== undefined">
5 5
         <div class="Title flex-h">
6 6
           <div class="flex-item">
7 7
             <div>
@@ -10,17 +10,8 @@
10 10
           </div>
11 11
           <span>{{item.leagueName}}<em>{{item.matchTime}}(截)</em></span>
12 12
         </div>
13
-        <div class="Detail flex-h">
14
-          <span>{{item.matchId}}</span>
15
-          <div class="flex-item flex-h">
16
-            <div class="flex-item flex-h">
17
-              <a class="flex-item" v-for="(subItem, subIndex) in item.playOdds[`bst-wl`]" :key="subIndex">
18
-                <span>{{subItem.name}}</span>
19
-                <span>{{subItem.odds}}</span>
20
-              </a>
21
-            </div>
22
-            <a @click="CurrentTarget = item; CalcShengFu(); ShowMore = true">更多<br />选项</a>
23
-          </div>
13
+        <div class="Detail">
14
+          <LqgghhtzShengFu :MoreSelect="item.MoreSelect" :Id="item.matchId" :Index="index" :WlData="item.playOdds['bst-wl']" :WlsData="item.playOdds['bst-wls']" @SelectItem="SelectItem" @ShowMore="ToShowMore"></LqgghhtzShengFu>
24 15
         </div>
25 16
       </li>
26 17
     </ul>
@@ -31,7 +22,7 @@
31 22
         <div>
32 23
           <span>{{CurrentTarget.homeTeamName}} VS {{CurrentTarget.awayTeamName}}</span>
33 24
           <ul>
34
-            <li>
25
+            <!-- <li>
35 26
               <span>胜负/让分胜负</span>
36 27
               <table>
37 28
                 <tr v-if="CurrentTarget.playOdds[`bst-wl`] !== undefined">
@@ -41,51 +32,20 @@
41 32
                   </td>
42 33
                 </tr>
43 34
               </table>
44
-            </li>
35
+            </li> -->
45 36
 
46 37
             <li v-if="CurrentTarget.playOdds[`bst-score`] !== undefined">
47
-              <span><em>单</em>大小分</span>
48
-              <table>
49
-                <tr>
50
-                  <td>
51
-                    <span>大小</span>
52
-                  </td>
53
-                  <td v-for="(item, index) in CurrentTarget.playOdds[`bst-score`]" :key="index">
54
-                    <span>{{item.name}}</span>
55
-                    <span>{{item.odds}}</span>
56
-                  </td>
57
-                </tr>
58
-              </table>
38
+              <LqgghhtzDaXiaoFen :Id="CurrentTarget.matchId" :Index="CurrentIndex" :ScoreData="CurrentTarget.playOdds['bst-score']" @SelectItem="SelectItem"></LqgghhtzDaXiaoFen>
59 39
             </li>
60 40
 
61 41
             <li v-if="CurrentTarget.playOdds[`bst-points`] !== undefined">
62
-              <span><em>单</em>胜分差</span>
63
-              <table>
64
-                <tr v-for="(item, index) in ShengArr" :key="index">
65
-                  <td v-if="index === 0" :rowspan="ShengArr.length">
66
-                    <span>主胜</span>
67
-                  </td>
68
-                  <td v-for="(subItem, subIndex) in item" :key="`Zhu-${subIndex}`">
69
-                    <span>{{subItem.name}}</span>
70
-                    <span>{{subItem.odds}}</span>
71
-                  </td>
72
-                </tr>
73
-                <tr v-for="(item, index) in FuArr" :key="index">
74
-                  <td v-if="index === 0" :rowspan="FuArr.length">
75
-                    <span>客胜</span>
76
-                  </td>
77
-                  <td v-for="(subItem, subIndex) in item" :key="`Ke-${subIndex}`">
78
-                    <span>{{subItem.name}}</span>
79
-                    <span>{{subItem.odds}}</span>
80
-                  </td>
81
-                </tr>
82
-              </table>
42
+              <LqgghhtzShengFenCha :Id="CurrentTarget.matchId" :Index="CurrentIndex" :PointsData="CurrentTarget.playOdds['bst-points']" @SelectItem="SelectItem"></LqgghhtzShengFenCha>
83 43
             </li>
84 44
 
85 45
           </ul>
86 46
           <div class="flex-h">
87 47
             <a class="flex-item" @click="ShowMore = false">取消</a>
88
-            <a class="flex-item">确认</a>
48
+            <a class="flex-item" @click="ShowMore = false">确认</a>
89 49
           </div>
90 50
         </div>
91 51
       </div>
@@ -97,6 +57,9 @@
97 57
 /*
98 58
   页面名称:足球-过关-混合投注
99 59
 */
60
+import LqgghhtzShengFu from '../LqgghhtzShengFu'
61
+import LqgghhtzDaXiaoFen from '../LqgghhtzDaXiaoFen'
62
+import LqgghhtzShengFenCha from '../LqgghhtzShengFenCha'
100 63
 export default {
101 64
   name: 'LanQiuGuoGuanHunHeTouZhu',
102 65
   props: {
@@ -106,49 +69,94 @@ export default {
106 69
   },
107 70
   data () {
108 71
     return {
72
+      PageData: [],
73
+      ResList: [],
109 74
       ShengNum: 0,
110 75
       ShengArr: [],
111 76
       FuArr: [],
112 77
       ShowMore: false,
113
-      CurrentTarget: null
78
+      CurrentTarget: null,
79
+      CurrentIndex: null
114 80
     }
115 81
   },
116 82
   computed: {
117 83
   },
118 84
   components: {
85
+    LqgghhtzShengFu,
86
+    LqgghhtzDaXiaoFen,
87
+    LqgghhtzShengFenCha
119 88
   },
120 89
   created () {
121
-    this.CalcShengFu()
90
+    this.Data.map((item) => {
91
+      this.PageData.push({ ...item, MoreSelect: false })
92
+    })
122 93
   },
123 94
   mounted () {
124 95
     this.$nextTick(() => {
125 96
     })
126 97
   },
127 98
   methods: {
128
-    CalcShengFu () { // 计算胜负数据
129
-      if (this.CurrentTarget !== null) {
130
-        let ShengArr = []
131
-        let FuArr = []
132
-        this.CurrentTarget.playOdds['bst-points'].map((item) => {
133
-          if (item.name.indexOf('胜') > -1) {
134
-            ShengArr.push(item)
135
-          } else {
136
-            FuArr.push(item)
137
-          }
99
+    ToShowMore (e) { // 显示更多
100
+      this.CurrentIndex = e
101
+      this.CurrentTarget = { ...this.PageData[e] }
102
+      for (let key in this.CurrentTarget.playOdds) {
103
+        this.CurrentTarget.playOdds[key].map((item) => {
104
+          item.Active = item.Active !== undefined ? item.Active : false
138 105
         })
139
-        this.ShengArr = this.Return3Arr(ShengArr)
140
-        this.FuArr = this.Return3Arr(FuArr)
141 106
       }
107
+      this.ShowMore = true
108
+    },
109
+    SelectItem (e) { // 选择投注
110
+      this.TriggerRes(e.pIndex, e.cIndex, e.key, e.value, e.target, e.id)
142 111
     },
143
-    Return3Arr (arr) { // 返回3个一组数组
144
-      let aArr = []
145
-      for (let n = 0; n < Math.ceil(arr.length / 3); n++) {
146
-        aArr.push([])
112
+    TriggerRes (pIndex, cIndex, key, value, target, id) {
113
+      this.PageData[pIndex].playOdds[key][cIndex].Active = value
114
+      if (value) { // 新增投注
115
+        let Bool = false
116
+        this.ResList.map((item) => {
117
+          if (item.id === id) {
118
+            Bool = true
119
+            item.list.push({ ...target })
120
+            return false
121
+          }
122
+        })
123
+        if (!Bool) {
124
+          this.ResList.push({ id: id, list: [] })
125
+          this.ResList[this.ResList.length - 1].list.push({ ...target })
126
+        }
127
+        if (key !== 'bst-wl' && key !== 'bst-wls') {
128
+          this.PageData[pIndex].MoreSelect = true
129
+        }
130
+      } else { // 删除投注
131
+        this.ResList.map((item, index) => {
132
+          let MarkBool = true
133
+          item.list.map((subItem, subIndex) => {
134
+            if (subItem.ruleCode === target.ruleCode && subItem.name === target.name) {
135
+              MarkBool = false
136
+              item.list.splice(subIndex, 1)
137
+              if (!item.list.length) {
138
+                this.ResList.splice(index, 1)
139
+              }
140
+            }
141
+          })
142
+          if (!MarkBool) { // 删除投注时检测更多选项有无选中投注,更新更多选项按钮状态
143
+            let SubMarkBool = true
144
+            item.list.map((subItem) => {
145
+              if (subItem.wayCode !== 'bst-wl' && subItem.wayCode !== 'bst-wls') {
146
+                SubMarkBool = false
147
+              }
148
+            })
149
+            if (!SubMarkBool) {
150
+              this.PageData[pIndex].MoreSelect = false
151
+            }
152
+            if (!item.list.length) {
153
+              this.PageData[pIndex].MoreSelect = false
154
+            }
155
+          }
156
+        })
147 157
       }
148
-      arr.map((item, index) => {
149
-        aArr[Math.floor(index / 3)].push(item)
150
-      })
151
-      return aArr || []
158
+      this.$emit('Change', this.ResList)
159
+      // console.log(this.ResList)
152 160
     }
153 161
   }
154 162
 }

+ 80
- 80
src/components/index/LanQiuGuoGuanHunHeTouZhu/page.scss Целия файл

@@ -41,43 +41,43 @@
41 41
         }
42 42
       }
43 43
       > .Detail {
44
-        margin-top: 0.05rem;
45
-        > span {
46
-          font-size: 0.1rem;
47
-          color: #999;
48
-          margin-right: 0.4rem;
49
-        }
50
-        align-items: center;
51
-        > div.flex-item {
52
-          align-items: center;
53
-          > div.flex-item {
54
-            position: relative;
55
-            overflow: hidden;
56
-            > a {
57
-              border: 0.01rem solid #999;
58
-              box-sizing: border-box;
59
-              margin-right: 0.05rem;
60
-              > span {
61
-                display: block;
62
-                font-size: 0.13rem;
63
-                line-height: 0.22rem;
64
-                text-align: center;
65
-              }
66
-            }
67
-          }
68
-          > a {
69
-            font-size: 0.1rem;
70
-            color: #ff5100;
71
-            line-height: 0.2rem;
72
-            border: 0.01rem solid #999;
73
-            margin-left: 0.05rem;
74
-            position: relative;
75
-            overflow: hidden;
76
-            padding: 0 0.02rem;
77
-            padding-top: 0.04rem;
78
-            margin-right: 0.2rem;
79
-          }
80
-        }
44
+        // margin-top: 0.05rem;
45
+        // align-items: center;
46
+        // > span {
47
+        //   font-size: 0.1rem;
48
+        //   color: #999;
49
+        //   margin-right: 0.4rem;
50
+        // }
51
+        // > div.flex-item {
52
+        //   align-items: center;
53
+        //   > div.flex-item {
54
+        //     position: relative;
55
+        //     overflow: hidden;
56
+        //     > a {
57
+        //       border: 0.01rem solid #999;
58
+        //       box-sizing: border-box;
59
+        //       margin-right: 0.05rem;
60
+        //       > span {
61
+        //         display: block;
62
+        //         font-size: 0.13rem;
63
+        //         line-height: 0.22rem;
64
+        //         text-align: center;
65
+        //       }
66
+        //     }
67
+        //   }
68
+        //   > a {
69
+        //     font-size: 0.1rem;
70
+        //     color: #ff5100;
71
+        //     line-height: 0.2rem;
72
+        //     border: 0.01rem solid #999;
73
+        //     margin-left: 0.05rem;
74
+        //     position: relative;
75
+        //     overflow: hidden;
76
+        //     padding: 0 0.02rem;
77
+        //     padding-top: 0.04rem;
78
+        //     margin-right: 0.2rem;
79
+        //   }
80
+        // }
81 81
       }
82 82
     }
83 83
   }
@@ -112,49 +112,49 @@
112 112
           > li {
113 113
             margin-top: 0.1rem;
114 114
             padding: 0 0.15rem;
115
-            > span {
116
-              font-size: 0.12rem;
117
-              line-height: 0.2rem;
118
-              color: #999;
119
-              display: block;
120
-              > em {
121
-                font-size: 0.12rem;
122
-                width: 0.16rem;
123
-                line-height: 0.16rem;
124
-                text-align: center;
125
-                background: #ff5100;
126
-                color: #fff;
127
-                margin-right: 0.05rem;
128
-                display: inline-block;
129
-              }
130
-            }
131
-            > table {
132
-              width: 100%;
133
-              box-sizing: border-box;
134
-              margin-top: 0.05rem;
135
-              border: 0.01rem solid #f7f7f7;
136
-              > tr {
137
-                > td {
138
-                  border: 0.01rem solid #f7f7f7;
139
-                  padding: 0.05rem 0;
140
-                  &.active {
141
-                    background: #ff5100;
142
-                    > span {
143
-                      color: #fff;
144
-                    }
145
-                  }
146
-                  > span {
147
-                    display: block;
148
-                    text-align: center;
149
-                    font-size: 0.12rem;
150
-                    line-height: 0.16rem;
151
-                    white-space: nowrap;
152
-                    overflow: hidden;
153
-                    text-overflow: ellipsis;
154
-                  }
155
-                }
156
-              }
157
-            }
115
+            // > span {
116
+            //   font-size: 0.12rem;
117
+            //   line-height: 0.2rem;
118
+            //   color: #999;
119
+            //   display: block;
120
+            //   > em {
121
+            //     font-size: 0.12rem;
122
+            //     width: 0.16rem;
123
+            //     line-height: 0.16rem;
124
+            //     text-align: center;
125
+            //     background: #ff5100;
126
+            //     color: #fff;
127
+            //     margin-right: 0.05rem;
128
+            //     display: inline-block;
129
+            //   }
130
+            // }
131
+            // > table {
132
+            //   width: 100%;
133
+            //   box-sizing: border-box;
134
+            //   margin-top: 0.05rem;
135
+            //   border: 0.01rem solid #f7f7f7;
136
+            //   > tr {
137
+            //     > td {
138
+            //       border: 0.01rem solid #f7f7f7;
139
+            //       padding: 0.05rem 0;
140
+            //       &.active {
141
+            //         background: #ff5100;
142
+            //         > span {
143
+            //           color: #fff;
144
+            //         }
145
+            //       }
146
+            //       > span {
147
+            //         display: block;
148
+            //         text-align: center;
149
+            //         font-size: 0.12rem;
150
+            //         line-height: 0.16rem;
151
+            //         white-space: nowrap;
152
+            //         overflow: hidden;
153
+            //         text-overflow: ellipsis;
154
+            //       }
155
+            //     }
156
+            //   }
157
+            // }
158 158
           }
159 159
         }
160 160
         > div {

+ 40
- 11
src/components/index/LanQiuGuoGuanRangFenShengFu/index.vue Целия файл

@@ -2,7 +2,7 @@
2 2
   <div class="components LanQiuGuoGuanRangFenShengFu">
3 3
 
4 4
     <ul>
5
-      <li v-for="(item, index) in Data" :key="index" v-if="item.playOdds[`bst-wls`] !== undefined">
5
+      <li v-for="(item, index) in PageData" :key="index" v-if="item.playOdds[`bst-wls`] !== undefined">
6 6
         <div class="Title flex-h">
7 7
           <div class="flex-item">
8 8
             <div>
@@ -11,16 +11,8 @@
11 11
           </div>
12 12
           <span>{{item.leagueName}}<em>{{item.matchTime}}(截)</em></span>
13 13
         </div>
14
-        <div class="Detail flex-h">
15
-          <span>{{item.matchId}}</span>
16
-          <div class="flex-item flex-h">
17
-            <div class="flex-item flex-h">
18
-              <a class="flex-item" v-for="(subItem, subIndex) in item.playOdds[`bst-wls`]" :key="subIndex">
19
-                <span>{{subItem.name}}</span>
20
-                <span>{{subItem.odds}}</span>
21
-              </a>
22
-            </div>
23
-          </div>
14
+        <div class="Detail">
15
+          <LqgghhtzRangFenShengFu :Id="item.matchId" :Index="index" :WlsData="item.playOdds['bst-wls']" @SelectItem="SelectItem"></LqgghhtzRangFenShengFu>
24 16
         </div>
25 17
       </li>
26 18
     </ul>
@@ -32,6 +24,7 @@
32 24
 /*
33 25
   页面名称:足球-过关-混合投注
34 26
 */
27
+import LqgghhtzRangFenShengFu from '../LqgghhtzRangFenShengFu'
35 28
 export default {
36 29
   name: 'LanQiuGuoGuanRangFenShengFu',
37 30
   props: {
@@ -41,11 +34,14 @@ export default {
41 34
   },
42 35
   data () {
43 36
     return {
37
+      PageData: [...this.Data],
38
+      ResList: []
44 39
     }
45 40
   },
46 41
   computed: {
47 42
   },
48 43
   components: {
44
+    LqgghhtzRangFenShengFu
49 45
   },
50 46
   created () {
51 47
   },
@@ -54,6 +50,39 @@ export default {
54 50
     })
55 51
   },
56 52
   methods: {
53
+    SelectItem (e) { // 选择投注
54
+      this.TriggerRes(e.pIndex, e.cIndex, e.key, e.value, e.target, e.id)
55
+    },
56
+    TriggerRes (pIndex, cIndex, key, value, target, id) {
57
+      this.PageData[pIndex].playOdds[key][cIndex].Active = value
58
+      if (value) { // 新增投注
59
+        let Bool = false
60
+        this.ResList.map((item) => {
61
+          if (item.id === id) {
62
+            Bool = true
63
+            item.list.push({ ...target })
64
+            return false
65
+          }
66
+        })
67
+        if (!Bool) {
68
+          this.ResList.push({ id: id, list: [] })
69
+          this.ResList[this.ResList.length - 1].list.push({ ...target })
70
+        }
71
+      } else { // 删除投注
72
+        this.ResList.map((item, index) => {
73
+          item.list.map((subItem, subIndex) => {
74
+            if (subItem.ruleCode === target.ruleCode && subItem.name === target.name) {
75
+              item.list.splice(subIndex, 1)
76
+              if (!item.list.length) {
77
+                this.ResList.splice(index, 1)
78
+              }
79
+            }
80
+          })
81
+        })
82
+      }
83
+      this.$emit('Change', this.ResList)
84
+      // console.log(this.ResList)
85
+    }
57 86
   }
58 87
 }
59 88
 </script>

+ 37
- 37
src/components/index/LanQiuGuoGuanRangFenShengFu/page.scss Целия файл

@@ -41,43 +41,43 @@
41 41
         }
42 42
       }
43 43
       > .Detail {
44
-        margin-top: 0.05rem;
45
-        > span {
46
-          font-size: 0.1rem;
47
-          color: #999;
48
-          margin-right: 0.4rem;
49
-        }
50
-        align-items: center;
51
-        > div.flex-item {
52
-          align-items: center;
53
-          > div.flex-item {
54
-            position: relative;
55
-            overflow: hidden;
56
-            > a {
57
-              border: 0.01rem solid #999;
58
-              box-sizing: border-box;
59
-              margin-right: 0.05rem;
60
-              > span {
61
-                display: block;
62
-                font-size: 0.13rem;
63
-                line-height: 0.22rem;
64
-                text-align: center;
65
-              }
66
-            }
67
-          }
68
-          > a {
69
-            font-size: 0.1rem;
70
-            color: #ff5100;
71
-            line-height: 0.2rem;
72
-            border: 0.01rem solid #999;
73
-            margin-left: 0.05rem;
74
-            position: relative;
75
-            overflow: hidden;
76
-            padding: 0 0.02rem;
77
-            padding-top: 0.04rem;
78
-            margin-right: 0.2rem;
79
-          }
80
-        }
44
+        // margin-top: 0.05rem;
45
+        // align-items: center;
46
+        // > span {
47
+        //   font-size: 0.1rem;
48
+        //   color: #999;
49
+        //   margin-right: 0.4rem;
50
+        // }
51
+        // > div.flex-item {
52
+        //   align-items: center;
53
+        //   > div.flex-item {
54
+        //     position: relative;
55
+        //     overflow: hidden;
56
+        //     > a {
57
+        //       border: 0.01rem solid #999;
58
+        //       box-sizing: border-box;
59
+        //       margin-right: 0.05rem;
60
+        //       > span {
61
+        //         display: block;
62
+        //         font-size: 0.13rem;
63
+        //         line-height: 0.22rem;
64
+        //         text-align: center;
65
+        //       }
66
+        //     }
67
+        //   }
68
+        //   > a {
69
+        //     font-size: 0.1rem;
70
+        //     color: #ff5100;
71
+        //     line-height: 0.2rem;
72
+        //     border: 0.01rem solid #999;
73
+        //     margin-left: 0.05rem;
74
+        //     position: relative;
75
+        //     overflow: hidden;
76
+        //     padding: 0 0.02rem;
77
+        //     padding-top: 0.04rem;
78
+        //     margin-right: 0.2rem;
79
+        //   }
80
+        // }
81 81
       }
82 82
     }
83 83
   }

+ 75
- 11
src/components/index/LanQiuGuoGuanShengFenCha/index.vue Целия файл

@@ -1,7 +1,7 @@
1 1
 <template>
2 2
   <div class="components LanQiuGuoGuanShengFenCha">
3 3
     <ul>
4
-      <li v-for="(item, index) in Data" :key="index" v-if="item.playOdds['bst-points'] !== undefined">
4
+      <li v-for="(item, index) in PageData" :key="index" v-if="item.playOdds['bst-points'] !== undefined">
5 5
         <div class="Title flex-h">
6 6
           <div class="flex-item">
7 7
             <div>
@@ -14,12 +14,9 @@
14 14
           <span>{{item.awayTeamId}}</span>
15 15
           <div class="flex-item flex-h">
16 16
             <div class="flex-item">
17
-              <div>
18
-                <a @click="CurrentTarget = item; ShowMore = true">点击选择投注选项</a>
19
-                <span>2:1</span>
20
-                <span>2:1</span>
21
-                <span>2:1</span>
22
-                <span>2:1</span>
17
+              <div @click="SelectPoints(item, index)">
18
+                <a v-if="!item.ResList.length">点击选择投注选项</a>
19
+                <span v-for="(subItem, subIndex) in item.ResList" :key="subIndex">{{subItem.name}}</span>
23 20
               </div>
24 21
             </div>
25 22
           </div>
@@ -34,7 +31,7 @@
34 31
           <span>{{CurrentTarget.homeTeamName}} VS {{CurrentTarget.awayTeamName}}</span>
35 32
           <div class="Content">
36 33
             <div>
37
-              <a v-for="(item, index) in CurrentTarget.playOdds['bst-points']" :key="index">
34
+              <a v-for="(item, index) in PointsData" :key="index" :class="{'active': item.Active}" @click="SelectItem(item, index, 'bst-points')">
38 35
                 <span>{{item.name}}</span>
39 36
                 <span>{{item.odds}}</span>
40 37
               </a>
@@ -43,8 +40,8 @@
43 40
             </div>
44 41
           </div>
45 42
           <div class="flex-h">
46
-            <a class="flex-item" @click="ShowMore = false; NavActiveIndex = 0;">取消</a>
47
-            <a class="flex-item">确认</a>
43
+            <a class="flex-item" @click="ShowMore = false">取消</a>
44
+            <a class="flex-item" @click="ShowMore = false">确认</a>
48 45
           </div>
49 46
         </div>
50 47
       </div>
@@ -66,9 +63,13 @@ export default {
66 63
   },
67 64
   data () {
68 65
     return {
66
+      PointsData: [],
69 67
       CurrentTarget: null,
68
+      CurrentIndex: null,
70 69
       ShowMore: false,
71
-      NavActiveIndex: 0
70
+      NavActiveIndex: 0,
71
+      PageData: [],
72
+      ResList: []
72 73
     }
73 74
   },
74 75
   computed: {
@@ -76,12 +77,75 @@ export default {
76 77
   components: {
77 78
   },
78 79
   created () {
80
+    let Arr = []
81
+    this.Data.map((item) => {
82
+      Arr.push({ ...item, ResList: [] })
83
+    })
84
+    Arr.map((item) => {
85
+      if (item.playOdds['bst-points'] !== undefined) {
86
+        item.playOdds['bst-points'].map((subItem) => {
87
+          if (subItem.Active === undefined) {
88
+            subItem.Active = false
89
+          }
90
+        })
91
+      }
92
+    })
93
+    this.PageData = [...Arr]
79 94
   },
80 95
   mounted () {
81 96
     this.$nextTick(() => {
82 97
     })
83 98
   },
84 99
   methods: {
100
+    SelectPoints (item, index) { // 打开选择弹窗
101
+      this.CurrentTarget = item
102
+      this.CurrentIndex = index
103
+      this.PointsData = []
104
+      if (this.CurrentTarget.playOdds['bst-points'] !== undefined) {
105
+        this.CurrentTarget.playOdds['bst-points'].map((item) => {
106
+          if (item.Active === undefined) {
107
+            this.PointsData.push({ ...item, Active: false })
108
+          } else {
109
+            this.PointsData.push({ ...item })
110
+          }
111
+        })
112
+      }
113
+      this.ShowMore = true
114
+    },
115
+    SelectItem (item, index, key) { // 选择投注
116
+      item.Active = !item.Active
117
+      this.TriggerRes(this.CurrentIndex, index, key, item.Active, item, this.CurrentTarget.matchId)
118
+    },
119
+    TriggerRes (pIndex, cIndex, key, value, target, id) {
120
+      this.PageData[pIndex].playOdds[key][cIndex].Active = value
121
+      if (value) { // 新增投注
122
+        let Bool = false
123
+        this.ResList.map((item) => {
124
+          if (item.id === id) {
125
+            Bool = true
126
+            item.list.push({ ...target })
127
+            return false
128
+          }
129
+        })
130
+        if (!Bool) {
131
+          this.ResList.push({ id: id, list: [] })
132
+          this.ResList[this.ResList.length - 1].list.push({ ...target })
133
+        }
134
+      } else { // 删除投注
135
+        this.ResList.map((item, index) => {
136
+          item.list.map((subItem, subIndex) => {
137
+            if (subItem.ruleCode === target.ruleCode && subItem.name === target.name) {
138
+              item.list.splice(subIndex, 1)
139
+              if (!item.list.length) {
140
+                this.ResList.splice(index, 1)
141
+              }
142
+            }
143
+          })
144
+        })
145
+      }
146
+      this.$emit('Change', this.ResList)
147
+      // console.log(this.ResList)
148
+    }
85 149
   }
86 150
 }
87 151
 </script>

+ 7
- 0
src/components/index/LanQiuGuoGuanShengFenCha/page.scss Целия файл

@@ -171,6 +171,13 @@
171 171
                 text-align: center;
172 172
                 line-height: 0.16rem;
173 173
               }
174
+              &.active {
175
+                background: #ff5100;
176
+                border-color: #ff5100;
177
+                > span {
178
+                  color: #fff;
179
+                }
180
+              }
174 181
             }
175 182
           }
176 183
         }

+ 40
- 11
src/components/index/LanQiuGuoGuanShengFu/index.vue Целия файл

@@ -2,7 +2,7 @@
2 2
   <div class="components LanQiuGuoGuanShengFu">
3 3
 
4 4
     <ul>
5
-      <li v-for="(item, index) in Data" :key="index" v-if="item.playOdds[`bst-wl`] !== undefined">
5
+      <li v-for="(item, index) in PageData" :key="index" v-if="item.playOdds[`bst-wl`] !== undefined">
6 6
         <div class="Title flex-h">
7 7
           <div class="flex-item">
8 8
             <div>
@@ -11,16 +11,8 @@
11 11
           </div>
12 12
           <span>{{item.leagueName}}<em>{{item.matchTime}}(截)</em></span>
13 13
         </div>
14
-        <div class="Detail flex-h">
15
-          <span>{{item.matchId}}</span>
16
-          <div class="flex-item flex-h">
17
-            <div class="flex-item flex-h">
18
-              <a class="flex-item" v-for="(subItem, subIndex) in item.playOdds[`bst-wl`]" :key="subIndex">
19
-                <span>{{subItem.name}}</span>
20
-                <span>{{subItem.odds}}</span>
21
-              </a>
22
-            </div>
23
-          </div>
14
+        <div class="Detail">
15
+          <LqgghhtzShengFuItem :Id="item.matchId" :Index="index" :WlData="item.playOdds['bst-wl']" @SelectItem="SelectItem"></LqgghhtzShengFuItem>
24 16
         </div>
25 17
       </li>
26 18
     </ul>
@@ -32,6 +24,7 @@
32 24
 /*
33 25
   页面名称:足球-过关-混合投注
34 26
 */
27
+import LqgghhtzShengFuItem from '../LqgghhtzShengFuItem'
35 28
 export default {
36 29
   name: 'LanQiuGuoGuanShengFu',
37 30
   props: {
@@ -41,11 +34,14 @@ export default {
41 34
   },
42 35
   data () {
43 36
     return {
37
+      PageData: [...this.Data],
38
+      ResList: []
44 39
     }
45 40
   },
46 41
   computed: {
47 42
   },
48 43
   components: {
44
+    LqgghhtzShengFuItem
49 45
   },
50 46
   created () {
51 47
   },
@@ -54,6 +50,39 @@ export default {
54 50
     })
55 51
   },
56 52
   methods: {
53
+    SelectItem (e) { // 选择投注
54
+      this.TriggerRes(e.pIndex, e.cIndex, e.key, e.value, e.target, e.id)
55
+    },
56
+    TriggerRes (pIndex, cIndex, key, value, target, id) {
57
+      this.PageData[pIndex].playOdds[key][cIndex].Active = value
58
+      if (value) { // 新增投注
59
+        let Bool = false
60
+        this.ResList.map((item) => {
61
+          if (item.id === id) {
62
+            Bool = true
63
+            item.list.push({ ...target })
64
+            return false
65
+          }
66
+        })
67
+        if (!Bool) {
68
+          this.ResList.push({ id: id, list: [] })
69
+          this.ResList[this.ResList.length - 1].list.push({ ...target })
70
+        }
71
+      } else { // 删除投注
72
+        this.ResList.map((item, index) => {
73
+          item.list.map((subItem, subIndex) => {
74
+            if (subItem.ruleCode === target.ruleCode && subItem.name === target.name) {
75
+              item.list.splice(subIndex, 1)
76
+              if (!item.list.length) {
77
+                this.ResList.splice(index, 1)
78
+              }
79
+            }
80
+          })
81
+        })
82
+      }
83
+      this.$emit('Change', this.ResList)
84
+      // console.log(this.ResList)
85
+    }
57 86
   }
58 87
 }
59 88
 </script>

+ 37
- 37
src/components/index/LanQiuGuoGuanShengFu/page.scss Целия файл

@@ -41,43 +41,43 @@
41 41
         }
42 42
       }
43 43
       > .Detail {
44
-        margin-top: 0.05rem;
45
-        > span {
46
-          font-size: 0.1rem;
47
-          color: #999;
48
-          margin-right: 0.4rem;
49
-        }
50
-        align-items: center;
51
-        > div.flex-item {
52
-          align-items: center;
53
-          > div.flex-item {
54
-            position: relative;
55
-            overflow: hidden;
56
-            > a {
57
-              border: 0.01rem solid #999;
58
-              box-sizing: border-box;
59
-              margin-right: 0.05rem;
60
-              > span {
61
-                display: block;
62
-                font-size: 0.13rem;
63
-                line-height: 0.22rem;
64
-                text-align: center;
65
-              }
66
-            }
67
-          }
68
-          > a {
69
-            font-size: 0.1rem;
70
-            color: #ff5100;
71
-            line-height: 0.2rem;
72
-            border: 0.01rem solid #999;
73
-            margin-left: 0.05rem;
74
-            position: relative;
75
-            overflow: hidden;
76
-            padding: 0 0.02rem;
77
-            padding-top: 0.04rem;
78
-            margin-right: 0.2rem;
79
-          }
80
-        }
44
+        // margin-top: 0.05rem;
45
+        // > span {
46
+        //   font-size: 0.1rem;
47
+        //   color: #999;
48
+        //   margin-right: 0.4rem;
49
+        // }
50
+        // align-items: center;
51
+        // > div.flex-item {
52
+        //   align-items: center;
53
+        //   > div.flex-item {
54
+        //     position: relative;
55
+        //     overflow: hidden;
56
+        //     > a {
57
+        //       border: 0.01rem solid #999;
58
+        //       box-sizing: border-box;
59
+        //       margin-right: 0.05rem;
60
+        //       > span {
61
+        //         display: block;
62
+        //         font-size: 0.13rem;
63
+        //         line-height: 0.22rem;
64
+        //         text-align: center;
65
+        //       }
66
+        //     }
67
+        //   }
68
+        //   > a {
69
+        //     font-size: 0.1rem;
70
+        //     color: #ff5100;
71
+        //     line-height: 0.2rem;
72
+        //     border: 0.01rem solid #999;
73
+        //     margin-left: 0.05rem;
74
+        //     position: relative;
75
+        //     overflow: hidden;
76
+        //     padding: 0 0.02rem;
77
+        //     padding-top: 0.04rem;
78
+        //     margin-right: 0.2rem;
79
+        //   }
80
+        // }
81 81
       }
82 82
     }
83 83
   }

+ 69
- 0
src/components/index/LqgghhtzDaXiaoFen/index.vue Целия файл

@@ -0,0 +1,69 @@
1
+<template>
2
+  <div class="components LqgghhtzDaXiaoFen">
3
+    <span><em>单</em>大小分</span>
4
+    <table>
5
+      <tr>
6
+        <td>
7
+          <span>大小</span>
8
+        </td>
9
+        <td v-for="(item, index) in PageScoreData" :key="index" :class="{'active': item.Active}" @click="SelectItem(item, index, 'bst-score')">
10
+          <span>{{item.name}}</span>
11
+          <span>{{item.odds}}</span>
12
+        </td>
13
+      </tr>
14
+    </table>
15
+  </div>
16
+</template>
17
+
18
+<script>
19
+/*
20
+  页面名称:
21
+*/
22
+export default {
23
+  name: 'LqgghhtzDaXiaoFen',
24
+  props: {
25
+    Id: {
26
+      default: null
27
+    },
28
+    Index: {
29
+      default: null
30
+    },
31
+    ScoreData: {
32
+      default: []
33
+    }
34
+  },
35
+  data () {
36
+    return {
37
+      PageScoreData: []
38
+    }
39
+  },
40
+  computed: {
41
+  },
42
+  components: {
43
+  },
44
+  created () {
45
+    this.ScoreData.map((item) => {
46
+      if (item.Active !== undefined) {
47
+        this.PageScoreData.push({ ...item })
48
+      } else {
49
+        this.PageScoreData.push({ ...item, Active: false })
50
+      }
51
+    })
52
+  },
53
+  mounted () {
54
+    this.$nextTick(() => {
55
+    })
56
+  },
57
+  methods: {
58
+    SelectItem (item, index, key) { // 选择投注
59
+      item.Active = !item.Active
60
+      this.$emit('SelectItem', { pIndex: this.Index, value: item.Active, key, cIndex: index, id: this.Id, target: item })
61
+    }
62
+  }
63
+}
64
+</script>
65
+
66
+<!-- Add "scoped" attribute to limit CSS to this component only -->
67
+<style lang="scss" scoped>
68
+@import "page.scss";
69
+</style>

+ 45
- 0
src/components/index/LqgghhtzDaXiaoFen/page.scss Целия файл

@@ -0,0 +1,45 @@
1
+.components.LqgghhtzDaXiaoFen {
2
+  > span {
3
+    font-size: 0.12rem;
4
+    line-height: 0.2rem;
5
+    color: #999;
6
+    display: block;
7
+    > em {
8
+      font-size: 0.12rem;
9
+      width: 0.16rem;
10
+      line-height: 0.16rem;
11
+      text-align: center;
12
+      background: #ff5100;
13
+      color: #fff;
14
+      margin-right: 0.05rem;
15
+      display: inline-block;
16
+    }
17
+  }
18
+  > table {
19
+    width: 100%;
20
+    box-sizing: border-box;
21
+    margin-top: 0.05rem;
22
+    border: 0.01rem solid #f7f7f7;
23
+    > tr {
24
+      > td {
25
+        border: 0.01rem solid #f7f7f7;
26
+        padding: 0.05rem 0;
27
+        &.active {
28
+          background: #ff5100;
29
+          > span {
30
+            color: #fff;
31
+          }
32
+        }
33
+        > span {
34
+          display: block;
35
+          text-align: center;
36
+          font-size: 0.12rem;
37
+          line-height: 0.16rem;
38
+          white-space: nowrap;
39
+          overflow: hidden;
40
+          text-overflow: ellipsis;
41
+        }
42
+      }
43
+    }
44
+  }
45
+}

+ 66
- 0
src/components/index/LqgghhtzDaXiaoFenItem/index.vue Целия файл

@@ -0,0 +1,66 @@
1
+<template>
2
+  <div class="components LqgghhtzDaXiaoFenItem flex-h">
3
+    <span>{{Id}}</span>
4
+    <div class="flex-item flex-h">
5
+      <div class="flex-item flex-h">
6
+        <a class="flex-item" v-for="(item, index) in PageScoreData" :key="index" :class="{'active': item.Active}" @click="SelectItem(item, index, 'bst-score')">
7
+          <span>{{item.name}}</span>
8
+          <span>{{item.odds}}</span>
9
+        </a>
10
+      </div>
11
+    </div>
12
+  </div>
13
+</template>
14
+
15
+<script>
16
+/*
17
+  页面名称:
18
+*/
19
+export default {
20
+  name: 'LqgghhtzDaXiaoFenItem',
21
+  props: {
22
+    Id: {
23
+      default: null
24
+    },
25
+    Index: {
26
+      default: null
27
+    },
28
+    ScoreData: {
29
+      default: []
30
+    }
31
+  },
32
+  data () {
33
+    return {
34
+      PageScoreData: []
35
+    }
36
+  },
37
+  computed: {
38
+  },
39
+  components: {
40
+  },
41
+  created () {
42
+    this.ScoreData.map((item) => {
43
+      if (item.Active !== undefined) {
44
+        this.PageScoreData.push({ ...item })
45
+      } else {
46
+        this.PageScoreData.push({ ...item, Active: false })
47
+      }
48
+    })
49
+  },
50
+  mounted () {
51
+    this.$nextTick(() => {
52
+    })
53
+  },
54
+  methods: {
55
+    SelectItem (item, index, key) { // 选择投注
56
+      item.Active = !item.Active
57
+      this.$emit('SelectItem', { pIndex: this.Index, value: item.Active, key, cIndex: index, id: this.Id, target: item })
58
+    }
59
+  }
60
+}
61
+</script>
62
+
63
+<!-- Add "scoped" attribute to limit CSS to this component only -->
64
+<style lang="scss" scoped>
65
+@import "page.scss";
66
+</style>

+ 46
- 0
src/components/index/LqgghhtzDaXiaoFenItem/page.scss Целия файл

@@ -0,0 +1,46 @@
1
+.components.LqgghhtzDaXiaoFenItem {
2
+  margin-top: 0.05rem;
3
+  align-items: center;
4
+  > span {
5
+    font-size: 0.1rem;
6
+    color: #999;
7
+    margin-right: 0.4rem;
8
+  }
9
+  > div.flex-item {
10
+    align-items: center;
11
+    > div.flex-item {
12
+      position: relative;
13
+      overflow: hidden;
14
+      > a {
15
+        border: 0.01rem solid #999;
16
+        box-sizing: border-box;
17
+        margin-right: 0.05rem;
18
+        > span {
19
+          display: block;
20
+          font-size: 0.13rem;
21
+          line-height: 0.22rem;
22
+          text-align: center;
23
+        }
24
+        &.active {
25
+          background: #ff5100;
26
+          border-color: #ff5100;
27
+          > span {
28
+            color: #fff;
29
+          }
30
+        }
31
+      }
32
+    }
33
+    > a {
34
+      font-size: 0.1rem;
35
+      color: #ff5100;
36
+      line-height: 0.2rem;
37
+      border: 0.01rem solid #999;
38
+      margin-left: 0.05rem;
39
+      position: relative;
40
+      overflow: hidden;
41
+      padding: 0 0.02rem;
42
+      padding-top: 0.04rem;
43
+      margin-right: 0.2rem;
44
+    }
45
+  }
46
+}

+ 66
- 0
src/components/index/LqgghhtzRangFenShengFu/index.vue Целия файл

@@ -0,0 +1,66 @@
1
+<template>
2
+  <div class="components LqgghhtzRangFenShengFu flex-h">
3
+    <span>{{Id}}</span>
4
+    <div class="flex-item flex-h">
5
+      <div class="flex-item flex-h">
6
+        <a class="flex-item" v-for="(item, index) in PageWlsData" :key="index" :class="{'active': item.Active}" @click="SelectItem(item, index, 'bst-wls')">
7
+          <span>{{item.name}}</span>
8
+          <span>{{item.odds}}</span>
9
+        </a>
10
+      </div>
11
+    </div>
12
+  </div>
13
+</template>
14
+
15
+<script>
16
+/*
17
+  页面名称:
18
+*/
19
+export default {
20
+  name: 'LqgghhtzRangFenShengFu',
21
+  props: {
22
+    Id: {
23
+      default: null
24
+    },
25
+    Index: {
26
+      default: null
27
+    },
28
+    WlsData: {
29
+      default: []
30
+    }
31
+  },
32
+  data () {
33
+    return {
34
+      PageWlsData: []
35
+    }
36
+  },
37
+  computed: {
38
+  },
39
+  components: {
40
+  },
41
+  created () {
42
+    this.WlsData.map((item) => {
43
+      if (item.Active !== undefined) {
44
+        this.PageWlsData.push({ ...item })
45
+      } else {
46
+        this.PageWlsData.push({ ...item, Active: false })
47
+      }
48
+    })
49
+  },
50
+  mounted () {
51
+    this.$nextTick(() => {
52
+    })
53
+  },
54
+  methods: {
55
+    SelectItem (item, index, key) { // 选择投注
56
+      item.Active = !item.Active
57
+      this.$emit('SelectItem', { pIndex: this.Index, value: item.Active, key, cIndex: index, id: this.Id, target: item })
58
+    }
59
+  }
60
+}
61
+</script>
62
+
63
+<!-- Add "scoped" attribute to limit CSS to this component only -->
64
+<style lang="scss" scoped>
65
+@import "page.scss";
66
+</style>

+ 46
- 0
src/components/index/LqgghhtzRangFenShengFu/page.scss Целия файл

@@ -0,0 +1,46 @@
1
+.components.LqgghhtzRangFenShengFu {
2
+  margin-top: 0.05rem;
3
+  align-items: center;
4
+  > span {
5
+    font-size: 0.1rem;
6
+    color: #999;
7
+    margin-right: 0.4rem;
8
+  }
9
+  > div.flex-item {
10
+    align-items: center;
11
+    > div.flex-item {
12
+      position: relative;
13
+      overflow: hidden;
14
+      > a {
15
+        border: 0.01rem solid #999;
16
+        box-sizing: border-box;
17
+        margin-right: 0.05rem;
18
+        > span {
19
+          display: block;
20
+          font-size: 0.13rem;
21
+          line-height: 0.22rem;
22
+          text-align: center;
23
+        }
24
+        &.active {
25
+          background: #ff5100;
26
+          border-color: #ff5100;
27
+          > span {
28
+            color: #fff;
29
+          }
30
+        }
31
+      }
32
+    }
33
+    > a {
34
+      font-size: 0.1rem;
35
+      color: #ff5100;
36
+      line-height: 0.2rem;
37
+      border: 0.01rem solid #999;
38
+      margin-left: 0.05rem;
39
+      position: relative;
40
+      overflow: hidden;
41
+      padding: 0 0.02rem;
42
+      padding-top: 0.04rem;
43
+      margin-right: 0.2rem;
44
+    }
45
+  }
46
+}

+ 99
- 0
src/components/index/LqgghhtzShengFenCha/index.vue Целия файл

@@ -0,0 +1,99 @@
1
+<template>
2
+  <div class="components LqgghhtzShengFenCha">
3
+    <span><em>单</em>胜分差</span>
4
+    <table>
5
+      <tr>
6
+        <td :rowspan="Math.ceil(ShengLength / 3)">
7
+          <span>主胜</span>
8
+        </td>
9
+        <td v-for="(item, index) in PagePointsData" :key="index" v-if="item.name.indexOf('胜') > -1 && index < 3" :class="{'active': item.Active}" @click="SelectItem(item, index, 'bst-points')">
10
+          <span>{{item.name}}</span>
11
+          <span>{{item.odds}}</span>
12
+        </td>
13
+      </tr>
14
+      <tr>
15
+        <td v-for="(item, index) in PagePointsData" :key="index" v-if="item.name.indexOf('胜') > -1 && index >= 3" :class="{'active': item.Active}" @click="SelectItem(item, index, 'bst-points')">
16
+          <span>{{item.name}}</span>
17
+          <span>{{item.odds}}</span>
18
+        </td>
19
+      </tr>
20
+      <tr>
21
+        <td :rowspan="Math.ceil(FuLength / 3)">
22
+          <span>客胜</span>
23
+        </td>
24
+        <td v-for="(item, index) in PagePointsData" :key="index" v-if="item.name.indexOf('负') > -1 && index < ShengLength + 3" :class="{'active': item.Active}" @click="SelectItem(item, index, 'bst-points')">
25
+          <span>{{item.name}}</span>
26
+          <span>{{item.odds}}</span>
27
+        </td>
28
+      </tr>
29
+      <tr>
30
+        <td v-for="(item, index) in PagePointsData" :key="index" v-if="item.name.indexOf('负') > -1 && index >= ShengLength + 3" :class="{'active': item.Active}" @click="SelectItem(item, index, 'bst-points')">
31
+          <span>{{item.name}}</span>
32
+          <span>{{item.odds}}</span>
33
+        </td>
34
+      </tr>
35
+    </table>
36
+  </div>
37
+</template>
38
+
39
+<script>
40
+/*
41
+  页面名称:
42
+*/
43
+export default {
44
+  name: 'LqgghhtzShengFenCha',
45
+  props: {
46
+    Id: {
47
+      default: null
48
+    },
49
+    Index: {
50
+      default: null
51
+    },
52
+    PointsData: {
53
+      default: []
54
+    }
55
+  },
56
+  data () {
57
+    return {
58
+      ShengLength: 0,
59
+      FuLength: 0,
60
+      PagePointsData: []
61
+    }
62
+  },
63
+  computed: {
64
+  },
65
+  components: {
66
+  },
67
+  created () {
68
+    this.ShengLength = 0
69
+    this.FuLength = 0
70
+    this.PointsData.map((item) => {
71
+      if (item.name.indexOf('胜') > -1) {
72
+        this.ShengLength += 1
73
+      } else {
74
+        this.FuLength += 1
75
+      }
76
+      if (item.Active !== undefined) {
77
+        this.PagePointsData.push({ ...item })
78
+      } else {
79
+        this.PagePointsData.push({ ...item, Active: false })
80
+      }
81
+    })
82
+  },
83
+  mounted () {
84
+    this.$nextTick(() => {
85
+    })
86
+  },
87
+  methods: {
88
+    SelectItem (item, index, key) { // 选择投注
89
+      item.Active = !item.Active
90
+      this.$emit('SelectItem', { pIndex: this.Index, value: item.Active, key, cIndex: index, id: this.Id, target: item })
91
+    }
92
+  }
93
+}
94
+</script>
95
+
96
+<!-- Add "scoped" attribute to limit CSS to this component only -->
97
+<style lang="scss" scoped>
98
+@import "page.scss";
99
+</style>

+ 45
- 0
src/components/index/LqgghhtzShengFenCha/page.scss Целия файл

@@ -0,0 +1,45 @@
1
+.components.LqgghhtzShengFenCha {
2
+  > span {
3
+    font-size: 0.12rem;
4
+    line-height: 0.2rem;
5
+    color: #999;
6
+    display: block;
7
+    > em {
8
+      font-size: 0.12rem;
9
+      width: 0.16rem;
10
+      line-height: 0.16rem;
11
+      text-align: center;
12
+      background: #ff5100;
13
+      color: #fff;
14
+      margin-right: 0.05rem;
15
+      display: inline-block;
16
+    }
17
+  }
18
+  > table {
19
+    width: 100%;
20
+    box-sizing: border-box;
21
+    margin-top: 0.05rem;
22
+    border: 0.01rem solid #f7f7f7;
23
+    > tr {
24
+      > td {
25
+        border: 0.01rem solid #f7f7f7;
26
+        padding: 0.05rem 0;
27
+        &.active {
28
+          background: #ff5100;
29
+          > span {
30
+            color: #fff;
31
+          }
32
+        }
33
+        > span {
34
+          display: block;
35
+          text-align: center;
36
+          font-size: 0.12rem;
37
+          line-height: 0.16rem;
38
+          white-space: nowrap;
39
+          overflow: hidden;
40
+          text-overflow: ellipsis;
41
+        }
42
+      }
43
+    }
44
+  }
45
+}

+ 83
- 0
src/components/index/LqgghhtzShengFu/index.vue Целия файл

@@ -0,0 +1,83 @@
1
+<template>
2
+  <div class="components LqgghhtzShengFu flex-h">
3
+    <span>{{Id}}</span>
4
+    <div class="flex-item flex-h">
5
+      <div class="flex-item">
6
+        <div class="flex-h">
7
+          <a class="flex-item" v-for="(item, index) in PageWlData" :key="index" :class="{'active': item.Active}" @click="SelectItem(item, index, 'bst-wl')">{{`${item.name} ${item.odds}`}}</a>
8
+        </div>
9
+        <div class="flex-h">
10
+          <a class="flex-item" v-for="(item, index) in PageWlsData" :key="index" :class="{'active': item.Active}" @click="SelectItem(item, index, 'bst-wls')">{{`让${item.name} ${item.odds}`}}</a>
11
+        </div>
12
+      </div>
13
+      <a @click="$emit('ShowMore', Index)" :class="{'active': MoreSelect}">更多<br />选项</a>
14
+    </div>
15
+  </div>
16
+</template>
17
+
18
+<script>
19
+/*
20
+  页面名称:
21
+*/
22
+export default {
23
+  name: 'LqgghhtzShengFu',
24
+  props: {
25
+    MoreSelect: {
26
+      default: false
27
+    },
28
+    Id: {
29
+      default: null
30
+    },
31
+    Index: {
32
+      default: null
33
+    },
34
+    WlData: {
35
+      default: []
36
+    },
37
+    WlsData: {
38
+      default: []
39
+    }
40
+  },
41
+  data () {
42
+    return {
43
+      PageWlData: [],
44
+      PageWlsData: []
45
+    }
46
+  },
47
+  computed: {
48
+  },
49
+  components: {
50
+  },
51
+  created () {
52
+    this.WlData.map((item) => {
53
+      if (item.Active !== undefined) {
54
+        this.PageWlData.push({ ...item })
55
+      } else {
56
+        this.PageWlData.push({ ...item, Active: false })
57
+      }
58
+    })
59
+    this.WlsData.map((item) => {
60
+      if (item.Active !== undefined) {
61
+        this.PageWlsData.push({ ...item })
62
+      } else {
63
+        this.PageWlsData.push({ ...item, Active: false })
64
+      }
65
+    })
66
+  },
67
+  mounted () {
68
+    this.$nextTick(() => {
69
+    })
70
+  },
71
+  methods: {
72
+    SelectItem (item, index, key) { // 选择投注
73
+      item.Active = !item.Active
74
+      this.$emit('SelectItem', { pIndex: this.Index, value: item.Active, key, cIndex: index, id: this.Id, target: item })
75
+    }
76
+  }
77
+}
78
+</script>
79
+
80
+<!-- Add "scoped" attribute to limit CSS to this component only -->
81
+<style lang="scss" scoped>
82
+@import "page.scss";
83
+</style>

+ 51
- 0
src/components/index/LqgghhtzShengFu/page.scss Целия файл

@@ -0,0 +1,51 @@
1
+.components.LqgghhtzShengFu {
2
+  margin-top: 0.05rem;
3
+  align-items: center;
4
+  > span {
5
+    font-size: 0.1rem;
6
+    color: #999;
7
+    margin-right: 0.4rem;
8
+  }
9
+  > div.flex-item {
10
+    > div.flex-item {
11
+      position: relative;
12
+      overflow: hidden;
13
+      > div {
14
+        margin-top: 0.05rem;
15
+        &:first-child {
16
+          margin-top: 0;
17
+        }
18
+        > a {
19
+          border: 0.01rem solid #999;
20
+          box-sizing: border-box;
21
+          margin-right: 0.05rem;
22
+          font-size: 0.13rem;
23
+          line-height: 0.22rem;
24
+          text-align: center;
25
+          &.active {
26
+            color: #fff;
27
+            background: #ff5100;
28
+            border-color: #ff5100;
29
+          }
30
+        }
31
+      }
32
+    }
33
+    > a {
34
+      font-size: 0.1rem;
35
+      color: #ff5100;
36
+      line-height: 0.2rem;
37
+      border: 0.01rem solid #999;
38
+      margin-left: 0.05rem;
39
+      position: relative;
40
+      overflow: hidden;
41
+      padding: 0 0.02rem;
42
+      padding-top: 0.04rem;
43
+      margin-right: 0.2rem;
44
+      &.active {
45
+        background: #ff5100;
46
+        border-color: #ff5100;
47
+        color: #fff;
48
+      }
49
+    }
50
+  }
51
+}

+ 66
- 0
src/components/index/LqgghhtzShengFuItem/index.vue Целия файл

@@ -0,0 +1,66 @@
1
+<template>
2
+  <div class="components LqgghhtzShengFuItem flex-h">
3
+    <span>{{Id}}</span>
4
+    <div class="flex-item flex-h">
5
+      <div class="flex-item flex-h">
6
+        <a class="flex-item" v-for="(item, index) in PageWlData" :key="index" :class="{'active': item.Active}" @click="SelectItem(item, index, 'bst-wl')">
7
+          <span>{{item.name}}</span>
8
+          <span>{{item.odds}}</span>
9
+        </a>
10
+      </div>
11
+    </div>
12
+  </div>
13
+</template>
14
+
15
+<script>
16
+/*
17
+  页面名称:
18
+*/
19
+export default {
20
+  name: 'LqgghhtzShengFuItem',
21
+  props: {
22
+    Id: {
23
+      default: null
24
+    },
25
+    Index: {
26
+      default: null
27
+    },
28
+    WlData: {
29
+      default: []
30
+    }
31
+  },
32
+  data () {
33
+    return {
34
+      PageWlData: []
35
+    }
36
+  },
37
+  computed: {
38
+  },
39
+  components: {
40
+  },
41
+  created () {
42
+    this.WlData.map((item) => {
43
+      if (item.Active !== undefined) {
44
+        this.PageWlData.push({ ...item })
45
+      } else {
46
+        this.PageWlData.push({ ...item, Active: false })
47
+      }
48
+    })
49
+  },
50
+  mounted () {
51
+    this.$nextTick(() => {
52
+    })
53
+  },
54
+  methods: {
55
+    SelectItem (item, index, key) { // 选择投注
56
+      item.Active = !item.Active
57
+      this.$emit('SelectItem', { pIndex: this.Index, value: item.Active, key, cIndex: index, id: this.Id, target: item })
58
+    }
59
+  }
60
+}
61
+</script>
62
+
63
+<!-- Add "scoped" attribute to limit CSS to this component only -->
64
+<style lang="scss" scoped>
65
+@import "page.scss";
66
+</style>

+ 46
- 0
src/components/index/LqgghhtzShengFuItem/page.scss Целия файл

@@ -0,0 +1,46 @@
1
+.components.LqgghhtzShengFuItem {
2
+  margin-top: 0.05rem;
3
+  align-items: center;
4
+  > span {
5
+    font-size: 0.1rem;
6
+    color: #999;
7
+    margin-right: 0.4rem;
8
+  }
9
+  > div.flex-item {
10
+    align-items: center;
11
+    > div.flex-item {
12
+      position: relative;
13
+      overflow: hidden;
14
+      > a {
15
+        border: 0.01rem solid #999;
16
+        box-sizing: border-box;
17
+        margin-right: 0.05rem;
18
+        > span {
19
+          display: block;
20
+          font-size: 0.13rem;
21
+          line-height: 0.22rem;
22
+          text-align: center;
23
+        }
24
+        &.active {
25
+          background: #ff5100;
26
+          border-color: #ff5100;
27
+          > span {
28
+            color: #fff;
29
+          }
30
+        }
31
+      }
32
+    }
33
+    > a {
34
+      font-size: 0.1rem;
35
+      color: #ff5100;
36
+      line-height: 0.2rem;
37
+      border: 0.01rem solid #999;
38
+      margin-left: 0.05rem;
39
+      position: relative;
40
+      overflow: hidden;
41
+      padding: 0 0.02rem;
42
+      padding-top: 0.04rem;
43
+      margin-right: 0.2rem;
44
+    }
45
+  }
46
+}

+ 0
- 8
src/components/index/ZuQiuDanGuanShengPingFu/index.vue Целия файл

@@ -12,14 +12,6 @@
12 12
         </div>
13 13
         <div class="Detail">
14 14
           <ZqdghhtzShengPingFu :Id="item.matchId" :Index="index" :WdlData="item.playOdds['ft-wdl']" @SelectItem="SelectItem"></ZqdghhtzShengPingFu>
15
-          <!-- <span>{{item.awayTeamId}}</span>
16
-          <div class="flex-item flex-h">
17
-            <div class="flex-item">
18
-              <div class="flex-h">
19
-                <a class="flex-item" v-for="(subItem, subIndex) in item.playOdds['ft-wdl']" :key="subIndex">{{subIndex === 0 ? '胜' : subIndex === 1 ? '平' : '负'}} {{subItem.odds}}</a>
20
-              </div>
21
-            </div>
22
-          </div> -->
23 15
         </div>
24 16
       </li>
25 17
     </ul>

+ 4
- 1
src/components/index/ZuQiuGuoGuanHunHeTouZhu/index.vue Целия файл

@@ -160,11 +160,14 @@ export default {
160 160
             if (!SubMarkBool) {
161 161
               this.PageData[pIndex].MoreSelect = false
162 162
             }
163
+            if (!item.list.length) {
164
+              this.PageData[pIndex].MoreSelect = false
165
+            }
163 166
           }
164 167
         })
165 168
       }
166 169
       this.$emit('Change', this.ResList)
167
-      // console.log(this.ResList)
170
+      // console.log(JSON.stringify(this.ResList))
168 171
     }
169 172
   }
170 173
 }

+ 23
- 10
src/pages/index/LanQiu/index.vue Целия файл

@@ -44,42 +44,42 @@
44 44
 
45 45
             <!-- 过关-胜负 -->
46 46
             <div class="GuoGuanShengFu" v-if="SelectType === 2">
47
-              <LanQiuGuoGuanShengFu v-if="MixData.length" :Data="MixData"></LanQiuGuoGuanShengFu>
47
+              <LanQiuGuoGuanShengFu v-if="MixData.length" :Data="MixData" @Change="ResChange"></LanQiuGuoGuanShengFu>
48 48
             </div>
49 49
 
50 50
             <!-- 过关-让分胜负 -->
51 51
             <div class="GuoGuanRangFenShengFu" v-if="SelectType === 3">
52
-              <LanQiuGuoGuanRangFenShengFu v-if="MixData.length" :Data="MixData"></LanQiuGuoGuanRangFenShengFu>
52
+              <LanQiuGuoGuanRangFenShengFu v-if="MixData.length" :Data="MixData" @Change="ResChange"></LanQiuGuoGuanRangFenShengFu>
53 53
             </div>
54 54
 
55 55
             <!-- 过关-胜分差 -->
56 56
             <div class="GuoGuanShengFenCha" v-if="SelectType === 4">
57
-              <LanQiuGuoGuanShengFenCha v-if="MixData.length" :Data="MixData"></LanQiuGuoGuanShengFenCha>
57
+              <LanQiuGuoGuanShengFenCha v-if="MixData.length" :Data="MixData" @Change="ResChange"></LanQiuGuoGuanShengFenCha>
58 58
             </div>
59 59
 
60 60
             <!-- 过关-大小分 -->
61 61
             <div class="GuoGuanDaXiaoFen" v-if="SelectType === 5">
62
-              <LanQiuGuoGuanDaXiaoFen v-if="MixData.length" :Data="MixData"></LanQiuGuoGuanDaXiaoFen>
62
+              <LanQiuGuoGuanDaXiaoFen v-if="MixData.length" :Data="MixData" @Change="ResChange"></LanQiuGuoGuanDaXiaoFen>
63 63
             </div>
64 64
 
65 65
             <!-- 单关-胜负 -->
66 66
             <div class="DanGuanShengFu" v-if="SelectType === 6">
67
-              <LanQiuDanGuanShengFu v-if="MixData.length" :Data="MixData"></LanQiuDanGuanShengFu>
67
+              <LanQiuDanGuanShengFu v-if="MixData.length" :Data="MixData" @Change="ResChange"></LanQiuDanGuanShengFu>
68 68
             </div>
69 69
 
70 70
             <!-- 单关-让分胜负 -->
71 71
             <div class="DanGuanRangFenShengFu" v-if="SelectType === 7">
72
-              <LanQiuDanGuanRangFenShengFu v-if="MixData.length" :Data="MixData"></LanQiuDanGuanRangFenShengFu>
72
+              <LanQiuDanGuanRangFenShengFu v-if="MixData.length" :Data="MixData" @Change="ResChange"></LanQiuDanGuanRangFenShengFu>
73 73
             </div>
74 74
 
75 75
             <!-- 单关-胜分差 -->
76 76
             <div class="DanGuanShengFenCha" v-if="SelectType === 8">
77
-              <LanQiuDanGuanShengFenCha v-if="MixData.length" :Data="MixData"></LanQiuDanGuanShengFenCha>
77
+              <LanQiuDanGuanShengFenCha v-if="MixData.length" :Data="MixData" @Change="ResChange"></LanQiuDanGuanShengFenCha>
78 78
             </div>
79 79
 
80 80
             <!-- 单关-大小分 -->
81 81
             <div class="DanGuanDaXiaoFen" v-if="SelectType === 9">
82
-              <LanQiuDanGuanDaXiaoFen v-if="MixData.length" :Data="MixData"></LanQiuDanGuanDaXiaoFen>
82
+              <LanQiuDanGuanDaXiaoFen v-if="MixData.length" :Data="MixData" @Change="ResChange"></LanQiuDanGuanDaXiaoFen>
83 83
             </div>
84 84
 
85 85
           </div>
@@ -89,7 +89,7 @@
89 89
 
90 90
     <!-- 投注栏 -->
91 91
     <div class="Bottom flex-h">
92
-      <a class="iconfont iconjian"></a>
92
+      <a class="iconfont iconjian" @click="EmptyAllData"></a>
93 93
       <div class="flex-item"></div>
94 94
       <span>{{ResList.length ? `已选择${ResList.length}场比赛` : '非单关至少选两场比赛'}}</span>
95 95
       <a class="Btn">投注</a>
@@ -137,7 +137,7 @@ export default {
137 137
       },
138 138
       ResList: [], // 投注结果数据
139 139
       MixData: [], // 混合数据
140
-      SelectType: 2, // 选法,对应SelectTypeData中id值
140
+      SelectType: 1, // 选法,对应SelectTypeData中id值
141 141
       ShowSelectTypeNav: false // 显隐选法列表
142 142
     }
143 143
   },
@@ -186,9 +186,22 @@ export default {
186 186
     ResChange (e) { // 投注结果更新
187 187
       this.ResList = e
188 188
     },
189
+    EmptyAllData () { // 清除数据
190
+      this.ResList = []
191
+      this.MixData.map((item) => {
192
+        if (item.playOdds !== undefined) {
193
+          for (let key in item.playOdds) {
194
+            item.playOdds[key].map((subItem) => {
195
+              subItem.Active = false
196
+            })
197
+          }
198
+        }
199
+      })
200
+    },
189 201
     CutSelectType (item) { // 切换选法
190 202
       this.SelectType = item.Id
191 203
       this.EditMainItemData({ name: 'MainHeaderTitle', value: item.Name })
204
+      this.EmptyAllData() // 清除数据
192 205
       this.ShowSelectTypeNav = false
193 206
     },
194 207
     MainTitleClick () {