1002884655 4 anni fa
parent
commit
1e0a6359d3
24 ha cambiato i file con 1088 aggiunte e 422 eliminazioni
  1. 71
    0
      src/components/index/ZqdghhtzShengPingFu/index.vue
  2. 66
    0
      src/components/index/ZqdghhtzShengPingFu/page.scss
  3. 2
    2
      src/components/index/ZqgghhtzBanQuanChangItem/index.vue
  4. 78
    0
      src/components/index/ZqgghhtzBiFenItem/index.vue
  5. 21
    0
      src/components/index/ZqgghhtzBiFenItem/page.scss
  6. 74
    0
      src/components/index/ZqgghhtzJinQiuShuItem/index.vue
  7. 73
    0
      src/components/index/ZqgghhtzJinQiuShuItem/page.scss
  8. 55
    24
      src/components/index/ZuQiuDanGuanBanQuanChang/index.vue
  9. 68
    68
      src/components/index/ZuQiuDanGuanBanQuanChang/page.scss
  10. 84
    18
      src/components/index/ZuQiuDanGuanBiFen/index.vue
  11. 22
    15
      src/components/index/ZuQiuDanGuanBiFen/page.scss
  12. 55
    18
      src/components/index/ZuQiuDanGuanJinQiuShu/index.vue
  13. 68
    68
      src/components/index/ZuQiuDanGuanJinQiuShu/page.scss
  14. 39
    3
      src/components/index/ZuQiuDanGuanShengPingFu/index.vue
  15. 64
    64
      src/components/index/ZuQiuDanGuanShengPingFu/page.scss
  16. 2
    2
      src/components/index/ZuQiuGuoGuanBanQuanChang/index.vue
  17. 84
    18
      src/components/index/ZuQiuGuoGuanBiFen/index.vue
  18. 22
    15
      src/components/index/ZuQiuGuoGuanBiFen/page.scss
  19. 1
    1
      src/components/index/ZuQiuGuoGuanHunHeTouZhu/index.vue
  20. 55
    18
      src/components/index/ZuQiuGuoGuanJinQiuShu/index.vue
  21. 68
    68
      src/components/index/ZuQiuGuoGuanJinQiuShu/page.scss
  22. 0
    16
      src/components/index/ZuQiuGuoGuanShengPingFu/index.vue
  23. 1
    1
      src/pages/index/PaiLie5DingDan/index.vue
  24. 15
    3
      src/pages/index/ZuQiu/index.vue

+ 71
- 0
src/components/index/ZqdghhtzShengPingFu/index.vue Vedi File

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

+ 66
- 0
src/components/index/ZqdghhtzShengPingFu/page.scss Vedi File

@@ -0,0 +1,66 @@
1
+.components.ZqdghhtzShengPingFu {
2
+  align-items: center;
3
+  margin-top: 0.05rem;
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.flex-h {
14
+        margin-top: 0.05rem;
15
+        align-items: center;
16
+        &:first-child {
17
+          margin-top: 0;
18
+        }
19
+        > span {
20
+          font-size: 0.1rem;
21
+          width: 0.16rem;
22
+          line-height: 0.16rem;
23
+          text-align: center;
24
+          border: 0.01rem solid #999;
25
+          color: #999;
26
+          border-radius: 100%;
27
+          margin-right: 0.1rem;
28
+          &.Yellow {
29
+            color: #fff;
30
+            background: #ff5100;
31
+            border-color: #ff5100;
32
+          }
33
+          &.Blue {
34
+            color: #fff;
35
+            background: #3f63e5;
36
+            border-color: #3f63e5;
37
+          }
38
+        }
39
+        > a {
40
+          text-align: center;
41
+          border: 0.01rem solid #999;
42
+          margin-left: 0.05rem;
43
+          font-size: 0.13rem;
44
+          line-height: 0.22rem;
45
+          &.active {
46
+            color: #fff;
47
+            background: #ff5100;
48
+            border-color: #ff5100;
49
+          }
50
+        }
51
+      }
52
+    }
53
+    > a {
54
+      font-size: 0.1rem;
55
+      color: #ff5100;
56
+      line-height: 0.2rem;
57
+      border: 0.01rem solid #999;
58
+      margin-left: 0.05rem;
59
+      position: relative;
60
+      overflow: hidden;
61
+      padding: 0 0.02rem;
62
+      padding-top: 0.04rem;
63
+      margin-right: 0.2rem;
64
+    }
65
+  }
66
+}

+ 2
- 2
src/components/index/ZqgghhtzBanQuanChangItem/index.vue Vedi File

@@ -10,13 +10,13 @@
10 10
           </a>
11 11
         </div>
12 12
         <div class="flex-h">
13
-          <a class="flex-item" v-for="(item, index) in PageDoubleData.slice(3, 6)" v-if="index >= 3 && index < 6" :key="index" :class="{'active': item.Active}" @click="SelectItem(item, index, 'ft-double')">
13
+          <a class="flex-item" v-for="(item, index) in PageDoubleData" v-if="index >= 3 && index < 6" :key="index" :class="{'active': item.Active}" @click="SelectItem(item, index, 'ft-double')">
14 14
             <span>{{item.name}}</span>
15 15
             <span>{{item.odds}}</span>
16 16
           </a>
17 17
         </div>
18 18
         <div class="flex-h">
19
-          <a class="flex-item" v-for="(item, index) in PageDoubleData.slice(6, 9)" v-if="index >= 6" :key="index" :class="{'active': item.Active}" @click="SelectItem(item, index, 'ft-double')">
19
+          <a class="flex-item" v-for="(item, index) in PageDoubleData" v-if="index >= 6" :key="index" :class="{'active': item.Active}" @click="SelectItem(item, index, 'ft-double')">
20 20
             <span>{{item.name}}</span>
21 21
             <span>{{item.odds}}</span>
22 22
           </a>

+ 78
- 0
src/components/index/ZqgghhtzBiFenItem/index.vue Vedi File

@@ -0,0 +1,78 @@
1
+<template>
2
+  <div class="components ZqgghhtzBiFenItem">
3
+    <a v-for="(item, index) in PagePlayOdds" v-if="index >= Min && index < Max" :key="index" :class="{'active': item.Active}" @click="SelectItem(item, index, 'ft-score')">{{item.name}}</a>
4
+    <a @click="SelectAll(Min, Max)">全选</a>
5
+    <a @click="Empty(Min, Max)">清除</a>
6
+  </div>
7
+</template>
8
+
9
+<script>
10
+/*
11
+  页面名称:
12
+*/
13
+export default {
14
+  name: 'ZqgghhtzBiFenItem',
15
+  props: {
16
+    Min: {
17
+      default: 0
18
+    },
19
+    Max: {
20
+      default: 0
21
+    },
22
+    PlayOdds: {
23
+      default: []
24
+    }
25
+  },
26
+  data () {
27
+    return {
28
+      PagePlayOdds: []
29
+    }
30
+  },
31
+  computed: {
32
+  },
33
+  components: {
34
+  },
35
+  created () {
36
+    this.PlayOdds.map((item) => {
37
+      if (item.Active !== undefined) {
38
+        this.PagePlayOdds.push({ ...item })
39
+      } else {
40
+        this.PagePlayOdds.push({ ...item, Active: false })
41
+      }
42
+    })
43
+  },
44
+  mounted () {
45
+    this.$nextTick(() => {
46
+    })
47
+  },
48
+  methods: {
49
+    SelectAll (min, max) { // 全选
50
+      this.PagePlayOdds.map((item, index) => {
51
+        if (index >= min && index < max) {
52
+          if (!item.Active) {
53
+            this.SelectItem(item, index, 'ft-score')
54
+          }
55
+        }
56
+      })
57
+    },
58
+    Empty (min, max) { // 清除
59
+      this.PagePlayOdds.map((item, index) => {
60
+        if (index >= min && index < max) {
61
+          if (item.Active) {
62
+            this.SelectItem(item, index, 'ft-score')
63
+          }
64
+        }
65
+      })
66
+    },
67
+    SelectItem (item, index, key) { // 选择投注
68
+      item.Active = !item.Active
69
+      this.$emit('SelectItem', { value: item.Active, key, cIndex: index, target: item })
70
+    }
71
+  }
72
+}
73
+</script>
74
+
75
+<!-- Add "scoped" attribute to limit CSS to this component only -->
76
+<style lang="scss" scoped>
77
+@import "page.scss";
78
+</style>

+ 21
- 0
src/components/index/ZqgghhtzBiFenItem/page.scss Vedi File

@@ -0,0 +1,21 @@
1
+.components.ZqgghhtzBiFenItem {
2
+  width: 100%;
3
+  position: relative;
4
+  overflow: hidden;
5
+  font-size: 0;
6
+  > a {
7
+    display: inline-block;
8
+    font-size: 0.12rem;
9
+    width: 0.7rem;
10
+    text-align: center;
11
+    border: 0.01rem solid #ccc;
12
+    margin-top: 0.05rem;
13
+    margin-left: 0.05rem;
14
+    line-height: 0.24rem;
15
+    &.active {
16
+      background: #ff5100;
17
+      border-color: #ff5100;
18
+      color: #fff;
19
+    }
20
+  }
21
+}

+ 74
- 0
src/components/index/ZqgghhtzJinQiuShuItem/index.vue Vedi File

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

+ 73
- 0
src/components/index/ZqgghhtzJinQiuShuItem/page.scss Vedi File

@@ -0,0 +1,73 @@
1
+.components.ZqgghhtzJinQiuShuItem {
2
+  align-items: center;
3
+  margin-top: 0.05rem;
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.flex-h {
14
+        margin-top: 0.05rem;
15
+        align-items: center;
16
+        &:first-child {
17
+          margin-top: 0;
18
+        }
19
+        > span {
20
+          font-size: 0.1rem;
21
+          width: 0.16rem;
22
+          line-height: 0.16rem;
23
+          text-align: center;
24
+          border: 0.01rem solid #999;
25
+          color: #999;
26
+          border-radius: 100%;
27
+          margin-right: 0.1rem;
28
+          &.Yellow {
29
+            color: #fff;
30
+            background: #ff5100;
31
+            border-color: #ff5100;
32
+          }
33
+          &.Blue {
34
+            color: #fff;
35
+            background: #3f63e5;
36
+            border-color: #3f63e5;
37
+          }
38
+        }
39
+        > a {
40
+          text-align: center;
41
+          border: 0.01rem solid #999;
42
+          margin-left: 0.05rem;
43
+          &.active {
44
+            color: #fff;
45
+            background: #ff5100;
46
+            border-color: #ff5100;
47
+            > span {
48
+              color: #fff;
49
+            }
50
+          }
51
+          > span {
52
+            display: block;
53
+            font-size: 0.1rem;
54
+            line-height: 0.16rem;
55
+            text-align: center;
56
+          }
57
+        }
58
+      }
59
+    }
60
+    > a {
61
+      font-size: 0.1rem;
62
+      color: #ff5100;
63
+      line-height: 0.2rem;
64
+      border: 0.01rem solid #999;
65
+      margin-left: 0.05rem;
66
+      position: relative;
67
+      overflow: hidden;
68
+      padding: 0 0.02rem;
69
+      padding-top: 0.04rem;
70
+      margin-right: 0.2rem;
71
+    }
72
+  }
73
+}

+ 55
- 24
src/components/index/ZuQiuDanGuanBanQuanChang/index.vue Vedi File

@@ -10,30 +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.awayTeamId}}</span>
15
-          <div class="flex-item flex-h">
16
-            <div class="flex-item">
17
-              <div class="flex-h">
18
-                <a class="flex-item" v-for="(subItem, subIndex) in item.playOdds['ft-double'].slice(0, 3)" :key="subIndex">
19
-                  <span>{{subItem.name}}</span>
20
-                  <span>{{subItem.odds}}</span>
21
-                </a>
22
-              </div>
23
-              <div class="flex-h">
24
-                <a class="flex-item" v-for="(subItem, subIndex) in item.playOdds['ft-double'].slice(3, 6)" :key="subIndex">
25
-                  <span>{{subItem.name}}</span>
26
-                  <span>{{subItem.odds}}</span>
27
-                </a>
28
-              </div>
29
-              <div class="flex-h">
30
-                <a class="flex-item" v-for="(subItem, subIndex) in item.playOdds['ft-double'].slice(6, 9)" :key="subIndex">
31
-                  <span>{{subItem.name}}</span>
32
-                  <span>{{subItem.odds}}</span>
33
-                </a>
34
-              </div>
35
-            </div>
36
-          </div>
13
+        <div class="Detail">
14
+          <ZqgghhtzBanQuanChangItem :Id="item.matchId" :Index="index" :DoubleData="item.playOdds['ft-double']" @SelectItem="SelectItem"></ZqgghhtzBanQuanChangItem>
37 15
         </div>
38 16
       </li>
39 17
     </ul>
@@ -45,6 +23,7 @@
45 23
 /*
46 24
   页面名称:足球-过关-混合投注
47 25
 */
26
+import ZqgghhtzBanQuanChangItem from '../ZqgghhtzBanQuanChangItem'
48 27
 export default {
49 28
   name: 'ZuQiuDanGuanBanQuanChang',
50 29
   props: {
@@ -54,11 +33,14 @@ export default {
54 33
   },
55 34
   data () {
56 35
     return {
36
+      PageData: [...this.Data],
37
+      ResList: []
57 38
     }
58 39
   },
59 40
   computed: {
60 41
   },
61 42
   components: {
43
+    ZqgghhtzBanQuanChangItem
62 44
   },
63 45
   created () {
64 46
   },
@@ -67,6 +49,55 @@ export default {
67 49
     })
68 50
   },
69 51
   methods: {
52
+    SelectItem (e) { // 选择投注
53
+      this.TriggerRes(e.pIndex, e.cIndex, e.key, e.value, e.target, e.id)
54
+    },
55
+    TriggerRes (pIndex, cIndex, key, value, target, id) {
56
+      this.PageData[pIndex].playOdds[key][cIndex].Active = value
57
+      if (value) { // 新增投注
58
+        let Bool = false
59
+        this.ResList.map((item) => {
60
+          if (item.id === id) {
61
+            Bool = true
62
+            item.list.push({ ...target })
63
+            return false
64
+          }
65
+        })
66
+        if (!Bool) {
67
+          this.ResList.push({ id: id, list: [] })
68
+          this.ResList[this.ResList.length - 1].list.push({ ...target })
69
+        }
70
+        if (key !== 'ft-double') {
71
+          this.PageData[pIndex].MoreSelect = true
72
+        }
73
+      } else { // 删除投注
74
+        this.ResList.map((item, index) => {
75
+          let MarkBool = true
76
+          item.list.map((subItem, subIndex) => {
77
+            if (subItem.ruleCode === target.ruleCode && subItem.name === target.name) {
78
+              MarkBool = false
79
+              item.list.splice(subIndex, 1)
80
+              if (!item.list.length) {
81
+                this.ResList.splice(index, 1)
82
+              }
83
+            }
84
+          })
85
+          if (!MarkBool) { // 删除投注时检测更多选项有无选中投注,更新更多选项按钮状态
86
+            let SubMarkBool = true
87
+            item.list.map((subItem) => {
88
+              if (subItem.wayCode !== 'ft-double') {
89
+                SubMarkBool = false
90
+              }
91
+            })
92
+            if (!SubMarkBool) {
93
+              this.PageData[pIndex].MoreSelect = false
94
+            }
95
+          }
96
+        })
97
+      }
98
+      this.$emit('Change', this.ResList)
99
+      // console.log(this.ResList)
100
+    }
70 101
   }
71 102
 }
72 103
 </script>

+ 68
- 68
src/components/index/ZuQiuDanGuanBanQuanChang/page.scss Vedi File

@@ -41,74 +41,74 @@
41 41
         }
42 42
       }
43 43
       > .Detail {
44
-        align-items: center;
45
-        margin-top: 0.05rem;
46
-        > span {
47
-          font-size: 0.1rem;
48
-          color: #999;
49
-          margin-right: 0.4rem;
50
-        }
51
-        > div.flex-item {
52
-          > div.flex-item {
53
-            position: relative;
54
-            overflow: hidden;
55
-            > div.flex-h {
56
-              margin-top: 0.05rem;
57
-              align-items: center;
58
-              &:first-child {
59
-                margin-top: 0;
60
-              }
61
-              > span {
62
-                font-size: 0.1rem;
63
-                width: 0.16rem;
64
-                line-height: 0.16rem;
65
-                text-align: center;
66
-                border: 0.01rem solid #999;
67
-                color: #999;
68
-                border-radius: 100%;
69
-                margin-right: 0.1rem;
70
-                &.Yellow {
71
-                  color: #fff;
72
-                  background: #ff5100;
73
-                  border-color: #ff5100;
74
-                }
75
-                &.Blue {
76
-                  color: #fff;
77
-                  background: #3f63e5;
78
-                  border-color: #3f63e5;
79
-                }
80
-              }
81
-              > a {
82
-                text-align: center;
83
-                border: 0.01rem solid #999;
84
-                margin-left: 0.05rem;
85
-                &.active {
86
-                  color: #fff;
87
-                  background: #ff5100;
88
-                  border-color: #ff5100;
89
-                }
90
-                > span {
91
-                  display: block;
92
-                  font-size: 0.1rem;
93
-                  line-height: 0.16rem;
94
-                  text-align: center;
95
-                }
96
-              }
97
-            }
98
-          }
99
-          > a {
100
-            font-size: 0.1rem;
101
-            color: #ff5100;
102
-            line-height: 0.2rem;
103
-            border: 0.01rem solid #999;
104
-            margin-left: 0.05rem;
105
-            position: relative;
106
-            overflow: hidden;
107
-            padding: 0 0.02rem;
108
-            padding-top: 0.04rem;
109
-            margin-right: 0.2rem;
110
-          }
111
-        }
44
+        // align-items: center;
45
+        // margin-top: 0.05rem;
46
+        // > span {
47
+        //   font-size: 0.1rem;
48
+        //   color: #999;
49
+        //   margin-right: 0.4rem;
50
+        // }
51
+        // > div.flex-item {
52
+        //   > div.flex-item {
53
+        //     position: relative;
54
+        //     overflow: hidden;
55
+        //     > div.flex-h {
56
+        //       margin-top: 0.05rem;
57
+        //       align-items: center;
58
+        //       &:first-child {
59
+        //         margin-top: 0;
60
+        //       }
61
+        //       > span {
62
+        //         font-size: 0.1rem;
63
+        //         width: 0.16rem;
64
+        //         line-height: 0.16rem;
65
+        //         text-align: center;
66
+        //         border: 0.01rem solid #999;
67
+        //         color: #999;
68
+        //         border-radius: 100%;
69
+        //         margin-right: 0.1rem;
70
+        //         &.Yellow {
71
+        //           color: #fff;
72
+        //           background: #ff5100;
73
+        //           border-color: #ff5100;
74
+        //         }
75
+        //         &.Blue {
76
+        //           color: #fff;
77
+        //           background: #3f63e5;
78
+        //           border-color: #3f63e5;
79
+        //         }
80
+        //       }
81
+        //       > a {
82
+        //         text-align: center;
83
+        //         border: 0.01rem solid #999;
84
+        //         margin-left: 0.05rem;
85
+        //         &.active {
86
+        //           color: #fff;
87
+        //           background: #ff5100;
88
+        //           border-color: #ff5100;
89
+        //         }
90
+        //         > span {
91
+        //           display: block;
92
+        //           font-size: 0.1rem;
93
+        //           line-height: 0.16rem;
94
+        //           text-align: center;
95
+        //         }
96
+        //       }
97
+        //     }
98
+        //   }
99
+        //   > a {
100
+        //     font-size: 0.1rem;
101
+        //     color: #ff5100;
102
+        //     line-height: 0.2rem;
103
+        //     border: 0.01rem solid #999;
104
+        //     margin-left: 0.05rem;
105
+        //     position: relative;
106
+        //     overflow: hidden;
107
+        //     padding: 0 0.02rem;
108
+        //     padding-top: 0.04rem;
109
+        //     margin-right: 0.2rem;
110
+        //   }
111
+        // }
112 112
       }
113 113
     }
114 114
   }

+ 84
- 18
src/components/index/ZuQiuDanGuanBiFen/index.vue Vedi File

@@ -1,7 +1,7 @@
1 1
 <template>
2 2
   <div class="components ZuQiuDanGuanBiFen">
3 3
     <ul>
4
-      <li v-for="(item, index) in Data" :key="index" v-if="item.playOdds['ft-score'] !== undefined">
4
+      <li v-for="(item, index) in PageData" :key="index" v-if="item.playOdds['ft-score'] !== 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>
@@ -39,24 +36,18 @@
39 36
           </nav>
40 37
           <div class="Content">
41 38
             <div v-show="NavActiveIndex === 0">
42
-              <a v-for="(item, index) in CurrentTarget.playOdds['ft-score'].slice(0, 13)" :key="index">{{item.name}}</a>
43
-              <a>全选</a>
44
-              <a>清除</a>
39
+              <ZqgghhtzBiFenItem :Min="0" :Max="13" :PlayOdds="PagePlayOdds" @SelectItem="SelectItem"></ZqgghhtzBiFenItem>
45 40
             </div>
46 41
             <div v-show="NavActiveIndex === 1">
47
-              <a v-for="(item, index) in CurrentTarget.playOdds['ft-score'].slice(13, 18)" :key="index">{{item.name}}</a>
48
-              <a>全选</a>
49
-              <a>清除</a>
42
+              <ZqgghhtzBiFenItem :Min="13" :Max="18" :PlayOdds="PagePlayOdds" @SelectItem="SelectItem"></ZqgghhtzBiFenItem>
50 43
             </div>
51 44
             <div v-show="NavActiveIndex === 2">
52
-              <a v-for="(item, index) in CurrentTarget.playOdds['ft-score'].slice(18, 31)" :key="index">{{item.name}}</a>
53
-              <a>全选</a>
54
-              <a>清除</a>
45
+              <ZqgghhtzBiFenItem :Min="18" :Max="31" :PlayOdds="PagePlayOdds" @SelectItem="SelectItem"></ZqgghhtzBiFenItem>
55 46
             </div>
56 47
           </div>
57 48
           <div class="flex-h">
58 49
             <a class="flex-item" @click="ShowMore = false; NavActiveIndex = 0;">取消</a>
59
-            <a class="flex-item">确认</a>
50
+            <a class="flex-item" @click="ShowMore = false; NavActiveIndex = 0;">确认</a>
60 51
           </div>
61 52
         </div>
62 53
       </div>
@@ -69,6 +60,7 @@
69 60
 /*
70 61
   页面名称:足球-过关-混合投注
71 62
 */
63
+import ZqgghhtzBiFenItem from '../ZqgghhtzBiFenItem'
72 64
 export default {
73 65
   name: 'ZuQiuDanGuanBiFen',
74 66
   props: {
@@ -78,22 +70,96 @@ export default {
78 70
   },
79 71
   data () {
80 72
     return {
73
+      PagePlayOdds: [],
81 74
       CurrentTarget: null,
75
+      CurrentIndex: null,
82 76
       ShowMore: false,
83
-      NavActiveIndex: 0
77
+      NavActiveIndex: 0,
78
+      PageData: [],
79
+      ResList: []
84 80
     }
85 81
   },
86 82
   computed: {
87 83
   },
88 84
   components: {
85
+    ZqgghhtzBiFenItem
89 86
   },
90 87
   created () {
88
+    let Arr = []
89
+    this.Data.map((item) => {
90
+      Arr.push({ ...item, ResList: [] })
91
+    })
92
+    Arr.map((item) => {
93
+      if (item.playOdds['ft-score'] !== undefined) {
94
+        item.playOdds['ft-score'].map((subItem) => {
95
+          if (subItem.Active === undefined) {
96
+            subItem.Active = false
97
+          }
98
+        })
99
+      }
100
+    })
101
+    this.PageData = [...Arr]
91 102
   },
92 103
   mounted () {
93 104
     this.$nextTick(() => {
94 105
     })
95 106
   },
96 107
   methods: {
108
+    SelectPoints (item, index) { // 打开选择弹窗
109
+      this.CurrentTarget = item
110
+      this.CurrentIndex = index
111
+      this.PagePlayOdds = [...this.CurrentTarget.playOdds['ft-score']]
112
+      this.ShowMore = true
113
+    },
114
+    SelectItem (e) { // 选择投注
115
+      this.TriggerRes(this.CurrentIndex, e.cIndex, e.key, e.value, e.target, this.CurrentTarget.matchId)
116
+    },
117
+    TriggerRes (pIndex, cIndex, key, value, target, id) {
118
+      this.PageData[pIndex].playOdds[key][cIndex].Active = value
119
+      if (value) { // 新增投注
120
+        let Bool = false
121
+        this.ResList.map((item) => {
122
+          if (item.id === id) {
123
+            Bool = true
124
+            item.list.push({ ...target })
125
+            return false
126
+          }
127
+        })
128
+        if (!Bool) {
129
+          this.ResList.push({ id: id, list: [] })
130
+          this.ResList[this.ResList.length - 1].list.push({ ...target })
131
+        }
132
+        if (key !== 'ft-score') {
133
+          this.PageData[pIndex].MoreSelect = true
134
+        }
135
+      } else { // 删除投注
136
+        this.ResList.map((item, index) => {
137
+          let MarkBool = true
138
+          item.list.map((subItem, subIndex) => {
139
+            if (subItem.ruleCode === target.ruleCode && subItem.name === target.name) {
140
+              MarkBool = false
141
+              item.list.splice(subIndex, 1)
142
+              if (!item.list.length) {
143
+                this.ResList.splice(index, 1)
144
+              }
145
+            }
146
+          })
147
+          if (!MarkBool) { // 删除投注时检测更多选项有无选中投注,更新更多选项按钮状态
148
+            let SubMarkBool = true
149
+            item.list.map((subItem) => {
150
+              if (subItem.wayCode !== 'ft-score') {
151
+                SubMarkBool = false
152
+              }
153
+            })
154
+            if (!SubMarkBool) {
155
+              this.PageData[pIndex].MoreSelect = false
156
+            }
157
+          }
158
+        })
159
+      }
160
+      this.$emit('Change', this.ResList)
161
+      // console.log(this.ResList)
162
+    }
97 163
   }
98 164
 }
99 165
 </script>

+ 22
- 15
src/components/index/ZuQiuDanGuanBiFen/page.scss Vedi File

@@ -150,25 +150,32 @@
150 150
           }
151 151
         }
152 152
         > .Content {
153
-          padding: 0.15rem;
154
-          position: relative;
155
-          overflow: hidden;
156 153
           > div {
157
-            width: 100%;
154
+            padding: 0.15rem;
158 155
             position: relative;
159 156
             overflow: hidden;
160
-            font-size: 0;
161
-            > a {
162
-              display: inline-block;
163
-              font-size: 0.12rem;
164
-              width: 0.7rem;
165
-              text-align: center;
166
-              border: 0.01rem solid #ccc;
167
-              margin-top: 0.05rem;
168
-              margin-left: 0.05rem;
169
-              line-height: 0.24rem;
170
-            }
171 157
           }
158
+          // > div {
159
+          //   width: 100%;
160
+          //   position: relative;
161
+          //   overflow: hidden;
162
+          //   font-size: 0;
163
+          //   > a {
164
+          //     display: inline-block;
165
+          //     font-size: 0.12rem;
166
+          //     width: 0.7rem;
167
+          //     text-align: center;
168
+          //     border: 0.01rem solid #ccc;
169
+          //     margin-top: 0.05rem;
170
+          //     margin-left: 0.05rem;
171
+          //     line-height: 0.24rem;
172
+          //     &.active {
173
+          //       background: #ff5100;
174
+          //       border-color: #ff5100;
175
+          //       color: #fff;
176
+          //     }
177
+          //   }
178
+          // }
172 179
         }
173 180
         > div.flex-h {
174 181
           border-top: 0.01rem solid #f7f7f7;

+ 55
- 18
src/components/index/ZuQiuDanGuanJinQiuShu/index.vue Vedi File

@@ -10,24 +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.awayTeamId}}</span>
15
-          <div class="flex-item flex-h">
16
-            <div class="flex-item">
17
-              <div class="flex-h">
18
-                <a class="flex-item" v-for="(subItem, subIndex) in item.playOdds['ft-points'].slice(0, 4)" :key="subIndex">
19
-                  <span>{{subItem.name}}</span>
20
-                  <span>{{subItem.odds}}</span>
21
-                </a>
22
-              </div>
23
-              <div class="flex-h">
24
-                <a class="flex-item" v-for="(subItem, subIndex) in item.playOdds['ft-points'].slice(4, 8)" :key="subIndex">
25
-                  <span>{{subItem.name}}</span>
26
-                  <span>{{subItem.odds}}</span>
27
-                </a>
28
-              </div>
29
-            </div>
30
-          </div>
13
+        <div class="Detail">
14
+          <ZqgghhtzJinQiuShuItem :Id="item.matchId" :Index="index" :PointsData="item.playOdds['ft-points']" @SelectItem="SelectItem"></ZqgghhtzJinQiuShuItem>
31 15
         </div>
32 16
       </li>
33 17
     </ul>
@@ -39,6 +23,7 @@
39 23
 /*
40 24
   页面名称:足球-过关-混合投注
41 25
 */
26
+import ZqgghhtzJinQiuShuItem from '../ZqgghhtzJinQiuShuItem'
42 27
 export default {
43 28
   name: 'ZuQiuDanGuanJinQiuShu',
44 29
   props: {
@@ -48,11 +33,14 @@ export default {
48 33
   },
49 34
   data () {
50 35
     return {
36
+      PageData: [...this.Data],
37
+      ResList: []
51 38
     }
52 39
   },
53 40
   computed: {
54 41
   },
55 42
   components: {
43
+    ZqgghhtzJinQiuShuItem
56 44
   },
57 45
   created () {
58 46
   },
@@ -61,6 +49,55 @@ export default {
61 49
     })
62 50
   },
63 51
   methods: {
52
+    SelectItem (e) { // 选择投注
53
+      this.TriggerRes(e.pIndex, e.cIndex, e.key, e.value, e.target, e.id)
54
+    },
55
+    TriggerRes (pIndex, cIndex, key, value, target, id) {
56
+      this.PageData[pIndex].playOdds[key][cIndex].Active = value
57
+      if (value) { // 新增投注
58
+        let Bool = false
59
+        this.ResList.map((item) => {
60
+          if (item.id === id) {
61
+            Bool = true
62
+            item.list.push({ ...target })
63
+            return false
64
+          }
65
+        })
66
+        if (!Bool) {
67
+          this.ResList.push({ id: id, list: [] })
68
+          this.ResList[this.ResList.length - 1].list.push({ ...target })
69
+        }
70
+        if (key !== 'ft-double') {
71
+          this.PageData[pIndex].MoreSelect = true
72
+        }
73
+      } else { // 删除投注
74
+        this.ResList.map((item, index) => {
75
+          let MarkBool = true
76
+          item.list.map((subItem, subIndex) => {
77
+            if (subItem.ruleCode === target.ruleCode && subItem.name === target.name) {
78
+              MarkBool = false
79
+              item.list.splice(subIndex, 1)
80
+              if (!item.list.length) {
81
+                this.ResList.splice(index, 1)
82
+              }
83
+            }
84
+          })
85
+          if (!MarkBool) { // 删除投注时检测更多选项有无选中投注,更新更多选项按钮状态
86
+            let SubMarkBool = true
87
+            item.list.map((subItem) => {
88
+              if (subItem.wayCode !== 'ft-double') {
89
+                SubMarkBool = false
90
+              }
91
+            })
92
+            if (!SubMarkBool) {
93
+              this.PageData[pIndex].MoreSelect = false
94
+            }
95
+          }
96
+        })
97
+      }
98
+      this.$emit('Change', this.ResList)
99
+      // console.log(this.ResList)
100
+    }
64 101
   }
65 102
 }
66 103
 </script>

+ 68
- 68
src/components/index/ZuQiuDanGuanJinQiuShu/page.scss Vedi File

@@ -41,74 +41,74 @@
41 41
         }
42 42
       }
43 43
       > .Detail {
44
-        align-items: center;
45
-        margin-top: 0.05rem;
46
-        > span {
47
-          font-size: 0.1rem;
48
-          color: #999;
49
-          margin-right: 0.4rem;
50
-        }
51
-        > div.flex-item {
52
-          > div.flex-item {
53
-            position: relative;
54
-            overflow: hidden;
55
-            > div.flex-h {
56
-              margin-top: 0.05rem;
57
-              align-items: center;
58
-              &:first-child {
59
-                margin-top: 0;
60
-              }
61
-              > span {
62
-                font-size: 0.1rem;
63
-                width: 0.16rem;
64
-                line-height: 0.16rem;
65
-                text-align: center;
66
-                border: 0.01rem solid #999;
67
-                color: #999;
68
-                border-radius: 100%;
69
-                margin-right: 0.1rem;
70
-                &.Yellow {
71
-                  color: #fff;
72
-                  background: #ff5100;
73
-                  border-color: #ff5100;
74
-                }
75
-                &.Blue {
76
-                  color: #fff;
77
-                  background: #3f63e5;
78
-                  border-color: #3f63e5;
79
-                }
80
-              }
81
-              > a {
82
-                text-align: center;
83
-                border: 0.01rem solid #999;
84
-                margin-left: 0.05rem;
85
-                &.active {
86
-                  color: #fff;
87
-                  background: #ff5100;
88
-                  border-color: #ff5100;
89
-                }
90
-                > span {
91
-                  display: block;
92
-                  font-size: 0.1rem;
93
-                  line-height: 0.16rem;
94
-                  text-align: center;
95
-                }
96
-              }
97
-            }
98
-          }
99
-          > a {
100
-            font-size: 0.1rem;
101
-            color: #ff5100;
102
-            line-height: 0.2rem;
103
-            border: 0.01rem solid #999;
104
-            margin-left: 0.05rem;
105
-            position: relative;
106
-            overflow: hidden;
107
-            padding: 0 0.02rem;
108
-            padding-top: 0.04rem;
109
-            margin-right: 0.2rem;
110
-          }
111
-        }
44
+        // align-items: center;
45
+        // margin-top: 0.05rem;
46
+        // > span {
47
+        //   font-size: 0.1rem;
48
+        //   color: #999;
49
+        //   margin-right: 0.4rem;
50
+        // }
51
+        // > div.flex-item {
52
+        //   > div.flex-item {
53
+        //     position: relative;
54
+        //     overflow: hidden;
55
+        //     > div.flex-h {
56
+        //       margin-top: 0.05rem;
57
+        //       align-items: center;
58
+        //       &:first-child {
59
+        //         margin-top: 0;
60
+        //       }
61
+        //       > span {
62
+        //         font-size: 0.1rem;
63
+        //         width: 0.16rem;
64
+        //         line-height: 0.16rem;
65
+        //         text-align: center;
66
+        //         border: 0.01rem solid #999;
67
+        //         color: #999;
68
+        //         border-radius: 100%;
69
+        //         margin-right: 0.1rem;
70
+        //         &.Yellow {
71
+        //           color: #fff;
72
+        //           background: #ff5100;
73
+        //           border-color: #ff5100;
74
+        //         }
75
+        //         &.Blue {
76
+        //           color: #fff;
77
+        //           background: #3f63e5;
78
+        //           border-color: #3f63e5;
79
+        //         }
80
+        //       }
81
+        //       > a {
82
+        //         text-align: center;
83
+        //         border: 0.01rem solid #999;
84
+        //         margin-left: 0.05rem;
85
+        //         &.active {
86
+        //           color: #fff;
87
+        //           background: #ff5100;
88
+        //           border-color: #ff5100;
89
+        //         }
90
+        //         > span {
91
+        //           display: block;
92
+        //           font-size: 0.1rem;
93
+        //           line-height: 0.16rem;
94
+        //           text-align: center;
95
+        //         }
96
+        //       }
97
+        //     }
98
+        //   }
99
+        //   > a {
100
+        //     font-size: 0.1rem;
101
+        //     color: #ff5100;
102
+        //     line-height: 0.2rem;
103
+        //     border: 0.01rem solid #999;
104
+        //     margin-left: 0.05rem;
105
+        //     position: relative;
106
+        //     overflow: hidden;
107
+        //     padding: 0 0.02rem;
108
+        //     padding-top: 0.04rem;
109
+        //     margin-right: 0.2rem;
110
+        //   }
111
+        // }
112 112
       }
113 113
     }
114 114
   }

+ 39
- 3
src/components/index/ZuQiuDanGuanShengPingFu/index.vue Vedi File

@@ -10,15 +10,16 @@
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.awayTeamId}}</span>
13
+        <div class="Detail">
14
+          <ZqdghhtzShengPingFu :Id="item.matchId" :Index="index" :WdlData="item.playOdds['ft-wdl']" @SelectItem="SelectItem"></ZqdghhtzShengPingFu>
15
+          <!-- <span>{{item.awayTeamId}}</span>
15 16
           <div class="flex-item flex-h">
16 17
             <div class="flex-item">
17 18
               <div class="flex-h">
18 19
                 <a class="flex-item" v-for="(subItem, subIndex) in item.playOdds['ft-wdl']" :key="subIndex">{{subIndex === 0 ? '胜' : subIndex === 1 ? '平' : '负'}} {{subItem.odds}}</a>
19 20
               </div>
20 21
             </div>
21
-          </div>
22
+          </div> -->
22 23
         </div>
23 24
       </li>
24 25
     </ul>
@@ -30,6 +31,7 @@
30 31
 /*
31 32
   页面名称:足球-过关-混合投注
32 33
 */
34
+import ZqdghhtzShengPingFu from '../ZqdghhtzShengPingFu'
33 35
 export default {
34 36
   name: 'ZuQiuDanGuanShengPingFu',
35 37
   props: {
@@ -46,6 +48,7 @@ export default {
46 48
   computed: {
47 49
   },
48 50
   components: {
51
+    ZqdghhtzShengPingFu
49 52
   },
50 53
   created () {
51 54
   },
@@ -54,6 +57,39 @@ export default {
54 57
     })
55 58
   },
56 59
   methods: {
60
+    SelectItem (e) { // 选择投注
61
+      this.TriggerRes(e.pIndex, e.cIndex, e.key, e.value, e.target, e.id)
62
+    },
63
+    TriggerRes (pIndex, cIndex, key, value, target, id) {
64
+      this.PageData[pIndex].playOdds[key][cIndex].Active = value
65
+      if (value) { // 新增投注
66
+        let Bool = false
67
+        this.ResList.map((item) => {
68
+          if (item.id === id) {
69
+            Bool = true
70
+            item.list.push({ ...target })
71
+            return false
72
+          }
73
+        })
74
+        if (!Bool) {
75
+          this.ResList.push({ id: id, list: [] })
76
+          this.ResList[this.ResList.length - 1].list.push({ ...target })
77
+        }
78
+      } else { // 删除投注
79
+        this.ResList.map((item, index) => {
80
+          item.list.map((subItem, subIndex) => {
81
+            if (subItem.ruleCode === target.ruleCode && subItem.name === target.name) {
82
+              item.list.splice(subIndex, 1)
83
+              if (!item.list.length) {
84
+                this.ResList.splice(index, 1)
85
+              }
86
+            }
87
+          })
88
+        })
89
+      }
90
+      this.$emit('Change', this.ResList)
91
+      // console.log(this.ResList)
92
+    }
57 93
   }
58 94
 }
59 95
 </script>

+ 64
- 64
src/components/index/ZuQiuDanGuanShengPingFu/page.scss Vedi File

@@ -41,70 +41,70 @@
41 41
         }
42 42
       }
43 43
       > .Detail {
44
-        align-items: center;
45
-        margin-top: 0.05rem;
46
-        > span {
47
-          font-size: 0.1rem;
48
-          color: #999;
49
-          margin-right: 0.4rem;
50
-        }
51
-        > div.flex-item {
52
-          > div.flex-item {
53
-            position: relative;
54
-            overflow: hidden;
55
-            > div.flex-h {
56
-              margin-top: 0.05rem;
57
-              align-items: center;
58
-              &:first-child {
59
-                margin-top: 0;
60
-              }
61
-              > span {
62
-                font-size: 0.1rem;
63
-                width: 0.16rem;
64
-                line-height: 0.16rem;
65
-                text-align: center;
66
-                border: 0.01rem solid #999;
67
-                color: #999;
68
-                border-radius: 100%;
69
-                margin-right: 0.1rem;
70
-                &.Yellow {
71
-                  color: #fff;
72
-                  background: #ff5100;
73
-                  border-color: #ff5100;
74
-                }
75
-                &.Blue {
76
-                  color: #fff;
77
-                  background: #3f63e5;
78
-                  border-color: #3f63e5;
79
-                }
80
-              }
81
-              > a {
82
-                text-align: center;
83
-                border: 0.01rem solid #999;
84
-                margin-left: 0.05rem;
85
-                font-size: 0.13rem;
86
-                line-height: 0.22rem;
87
-                &.active {
88
-                  color: #fff;
89
-                  background: #ff5100;
90
-                  border-color: #ff5100;
91
-                }
92
-              }
93
-            }
94
-          }
95
-          > a {
96
-            font-size: 0.1rem;
97
-            color: #ff5100;
98
-            line-height: 0.2rem;
99
-            border: 0.01rem solid #999;
100
-            margin-left: 0.05rem;
101
-            position: relative;
102
-            overflow: hidden;
103
-            padding: 0 0.02rem;
104
-            padding-top: 0.04rem;
105
-            margin-right: 0.2rem;
106
-          }
107
-        }
44
+        // align-items: center;
45
+        // margin-top: 0.05rem;
46
+        // > span {
47
+        //   font-size: 0.1rem;
48
+        //   color: #999;
49
+        //   margin-right: 0.4rem;
50
+        // }
51
+        // > div.flex-item {
52
+        //   > div.flex-item {
53
+        //     position: relative;
54
+        //     overflow: hidden;
55
+        //     > div.flex-h {
56
+        //       margin-top: 0.05rem;
57
+        //       align-items: center;
58
+        //       &:first-child {
59
+        //         margin-top: 0;
60
+        //       }
61
+        //       > span {
62
+        //         font-size: 0.1rem;
63
+        //         width: 0.16rem;
64
+        //         line-height: 0.16rem;
65
+        //         text-align: center;
66
+        //         border: 0.01rem solid #999;
67
+        //         color: #999;
68
+        //         border-radius: 100%;
69
+        //         margin-right: 0.1rem;
70
+        //         &.Yellow {
71
+        //           color: #fff;
72
+        //           background: #ff5100;
73
+        //           border-color: #ff5100;
74
+        //         }
75
+        //         &.Blue {
76
+        //           color: #fff;
77
+        //           background: #3f63e5;
78
+        //           border-color: #3f63e5;
79
+        //         }
80
+        //       }
81
+        //       > a {
82
+        //         text-align: center;
83
+        //         border: 0.01rem solid #999;
84
+        //         margin-left: 0.05rem;
85
+        //         font-size: 0.13rem;
86
+        //         line-height: 0.22rem;
87
+        //         &.active {
88
+        //           color: #fff;
89
+        //           background: #ff5100;
90
+        //           border-color: #ff5100;
91
+        //         }
92
+        //       }
93
+        //     }
94
+        //   }
95
+        //   > a {
96
+        //     font-size: 0.1rem;
97
+        //     color: #ff5100;
98
+        //     line-height: 0.2rem;
99
+        //     border: 0.01rem solid #999;
100
+        //     margin-left: 0.05rem;
101
+        //     position: relative;
102
+        //     overflow: hidden;
103
+        //     padding: 0 0.02rem;
104
+        //     padding-top: 0.04rem;
105
+        //     margin-right: 0.2rem;
106
+        //   }
107
+        // }
108 108
       }
109 109
     }
110 110
   }

+ 2
- 2
src/components/index/ZuQiuGuoGuanBanQuanChang/index.vue Vedi File

@@ -67,7 +67,7 @@ export default {
67 67
           this.ResList.push({ id: id, list: [] })
68 68
           this.ResList[this.ResList.length - 1].list.push({ ...target })
69 69
         }
70
-        if (key !== 'double') {
70
+        if (key !== 'ft-double') {
71 71
           this.PageData[pIndex].MoreSelect = true
72 72
         }
73 73
       } else { // 删除投注
@@ -85,7 +85,7 @@ export default {
85 85
           if (!MarkBool) { // 删除投注时检测更多选项有无选中投注,更新更多选项按钮状态
86 86
             let SubMarkBool = true
87 87
             item.list.map((subItem) => {
88
-              if (subItem.ruleCode !== 'double') {
88
+              if (subItem.wayCode !== 'ft-double') {
89 89
                 SubMarkBool = false
90 90
               }
91 91
             })

+ 84
- 18
src/components/index/ZuQiuGuoGuanBiFen/index.vue Vedi File

@@ -1,7 +1,7 @@
1 1
 <template>
2 2
   <div class="components ZuQiuGuoGuanBiFen">
3 3
     <ul>
4
-      <li v-for="(item, index) in Data" :key="index" v-if="item.playOdds['ft-score'] !== undefined">
4
+      <li v-for="(item, index) in PageData" :key="index" v-if="item.playOdds['ft-score'] !== 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>
@@ -39,24 +36,18 @@
39 36
           </nav>
40 37
           <div class="Content">
41 38
             <div v-show="NavActiveIndex === 0">
42
-              <a v-for="(item, index) in CurrentTarget.playOdds['ft-score'].slice(0, 13)" :key="index">{{item.name}}</a>
43
-              <a>全选</a>
44
-              <a>清除</a>
39
+              <ZqgghhtzBiFenItem :Min="0" :Max="13" :PlayOdds="PagePlayOdds" @SelectItem="SelectItem"></ZqgghhtzBiFenItem>
45 40
             </div>
46 41
             <div v-show="NavActiveIndex === 1">
47
-              <a v-for="(item, index) in CurrentTarget.playOdds['ft-score'].slice(13, 18)" :key="index">{{item.name}}</a>
48
-              <a>全选</a>
49
-              <a>清除</a>
42
+              <ZqgghhtzBiFenItem :Min="13" :Max="18" :PlayOdds="PagePlayOdds" @SelectItem="SelectItem"></ZqgghhtzBiFenItem>
50 43
             </div>
51 44
             <div v-show="NavActiveIndex === 2">
52
-              <a v-for="(item, index) in CurrentTarget.playOdds['ft-score'].slice(18, 31)" :key="index">{{item.name}}</a>
53
-              <a>全选</a>
54
-              <a>清除</a>
45
+              <ZqgghhtzBiFenItem :Min="18" :Max="31" :PlayOdds="PagePlayOdds" @SelectItem="SelectItem"></ZqgghhtzBiFenItem>
55 46
             </div>
56 47
           </div>
57 48
           <div class="flex-h">
58 49
             <a class="flex-item" @click="ShowMore = false; NavActiveIndex = 0;">取消</a>
59
-            <a class="flex-item">确认</a>
50
+            <a class="flex-item" @click="ShowMore = false; NavActiveIndex = 0;">确认</a>
60 51
           </div>
61 52
         </div>
62 53
       </div>
@@ -69,6 +60,7 @@
69 60
 /*
70 61
   页面名称:足球-过关-混合投注
71 62
 */
63
+import ZqgghhtzBiFenItem from '../ZqgghhtzBiFenItem'
72 64
 export default {
73 65
   name: 'ZuQiuGuoGuanBiFen',
74 66
   props: {
@@ -78,22 +70,96 @@ export default {
78 70
   },
79 71
   data () {
80 72
     return {
73
+      PagePlayOdds: [],
81 74
       CurrentTarget: null,
75
+      CurrentIndex: null,
82 76
       ShowMore: false,
83
-      NavActiveIndex: 0
77
+      NavActiveIndex: 0,
78
+      PageData: [],
79
+      ResList: []
84 80
     }
85 81
   },
86 82
   computed: {
87 83
   },
88 84
   components: {
85
+    ZqgghhtzBiFenItem
89 86
   },
90 87
   created () {
88
+    let Arr = []
89
+    this.Data.map((item) => {
90
+      Arr.push({ ...item, ResList: [] })
91
+    })
92
+    Arr.map((item) => {
93
+      if (item.playOdds['ft-score'] !== undefined) {
94
+        item.playOdds['ft-score'].map((subItem) => {
95
+          if (subItem.Active === undefined) {
96
+            subItem.Active = false
97
+          }
98
+        })
99
+      }
100
+    })
101
+    this.PageData = [...Arr]
91 102
   },
92 103
   mounted () {
93 104
     this.$nextTick(() => {
94 105
     })
95 106
   },
96 107
   methods: {
108
+    SelectPoints (item, index) { // 打开选择弹窗
109
+      this.CurrentTarget = item
110
+      this.CurrentIndex = index
111
+      this.PagePlayOdds = [...this.CurrentTarget.playOdds['ft-score']]
112
+      this.ShowMore = true
113
+    },
114
+    SelectItem (e) { // 选择投注
115
+      this.TriggerRes(this.CurrentIndex, e.cIndex, e.key, e.value, e.target, this.CurrentTarget.matchId)
116
+    },
117
+    TriggerRes (pIndex, cIndex, key, value, target, id) {
118
+      this.PageData[pIndex].playOdds[key][cIndex].Active = value
119
+      if (value) { // 新增投注
120
+        let Bool = false
121
+        this.ResList.map((item) => {
122
+          if (item.id === id) {
123
+            Bool = true
124
+            item.list.push({ ...target })
125
+            return false
126
+          }
127
+        })
128
+        if (!Bool) {
129
+          this.ResList.push({ id: id, list: [] })
130
+          this.ResList[this.ResList.length - 1].list.push({ ...target })
131
+        }
132
+        if (key !== 'ft-score') {
133
+          this.PageData[pIndex].MoreSelect = true
134
+        }
135
+      } else { // 删除投注
136
+        this.ResList.map((item, index) => {
137
+          let MarkBool = true
138
+          item.list.map((subItem, subIndex) => {
139
+            if (subItem.ruleCode === target.ruleCode && subItem.name === target.name) {
140
+              MarkBool = false
141
+              item.list.splice(subIndex, 1)
142
+              if (!item.list.length) {
143
+                this.ResList.splice(index, 1)
144
+              }
145
+            }
146
+          })
147
+          if (!MarkBool) { // 删除投注时检测更多选项有无选中投注,更新更多选项按钮状态
148
+            let SubMarkBool = true
149
+            item.list.map((subItem) => {
150
+              if (subItem.wayCode !== 'ft-score') {
151
+                SubMarkBool = false
152
+              }
153
+            })
154
+            if (!SubMarkBool) {
155
+              this.PageData[pIndex].MoreSelect = false
156
+            }
157
+          }
158
+        })
159
+      }
160
+      this.$emit('Change', this.ResList)
161
+      // console.log(this.ResList)
162
+    }
97 163
   }
98 164
 }
99 165
 </script>

+ 22
- 15
src/components/index/ZuQiuGuoGuanBiFen/page.scss Vedi File

@@ -150,25 +150,32 @@
150 150
           }
151 151
         }
152 152
         > .Content {
153
-          padding: 0.15rem;
154
-          position: relative;
155
-          overflow: hidden;
156 153
           > div {
157
-            width: 100%;
154
+            padding: 0.15rem;
158 155
             position: relative;
159 156
             overflow: hidden;
160
-            font-size: 0;
161
-            > a {
162
-              display: inline-block;
163
-              font-size: 0.12rem;
164
-              width: 0.7rem;
165
-              text-align: center;
166
-              border: 0.01rem solid #ccc;
167
-              margin-top: 0.05rem;
168
-              margin-left: 0.05rem;
169
-              line-height: 0.24rem;
170
-            }
171 157
           }
158
+          // > div {
159
+          //   width: 100%;
160
+          //   position: relative;
161
+          //   overflow: hidden;
162
+          //   font-size: 0;
163
+          //   > a {
164
+          //     display: inline-block;
165
+          //     font-size: 0.12rem;
166
+          //     width: 0.7rem;
167
+          //     text-align: center;
168
+          //     border: 0.01rem solid #ccc;
169
+          //     margin-top: 0.05rem;
170
+          //     margin-left: 0.05rem;
171
+          //     line-height: 0.24rem;
172
+          //     &.active {
173
+          //       background: #ff5100;
174
+          //       border-color: #ff5100;
175
+          //       color: #fff;
176
+          //     }
177
+          //   }
178
+          // }
172 179
         }
173 180
         > div.flex-h {
174 181
           border-top: 0.01rem solid #f7f7f7;

+ 1
- 1
src/components/index/ZuQiuGuoGuanHunHeTouZhu/index.vue Vedi File

@@ -153,7 +153,7 @@ export default {
153 153
           if (!MarkBool) { // 删除投注时检测更多选项有无选中投注,更新更多选项按钮状态
154 154
             let SubMarkBool = true
155 155
             item.list.map((subItem) => {
156
-              if (subItem.ruleCode !== 'ft-wdl' && subItem.ruleCode !== 'ft-wdls') {
156
+              if (subItem.wayCode !== 'ft-wdl' && subItem.wayCode !== 'ft-wdls') {
157 157
                 SubMarkBool = false
158 158
               }
159 159
             })

+ 55
- 18
src/components/index/ZuQiuGuoGuanJinQiuShu/index.vue Vedi File

@@ -10,24 +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.awayTeamId}}</span>
15
-          <div class="flex-item flex-h">
16
-            <div class="flex-item">
17
-              <div class="flex-h">
18
-                <a class="flex-item" v-for="(subItem, subIndex) in item.playOdds['ft-points'].slice(0, 4)" :key="subIndex">
19
-                  <span>{{subItem.name}}</span>
20
-                  <span>{{subItem.odds}}</span>
21
-                </a>
22
-              </div>
23
-              <div class="flex-h">
24
-                <a class="flex-item" v-for="(subItem, subIndex) in item.playOdds['ft-points'].slice(4, 8)" :key="subIndex">
25
-                  <span>{{subItem.name}}</span>
26
-                  <span>{{subItem.odds}}</span>
27
-                </a>
28
-              </div>
29
-            </div>
30
-          </div>
13
+        <div class="Detail">
14
+          <ZqgghhtzJinQiuShuItem :Id="item.matchId" :Index="index" :PointsData="item.playOdds['ft-points']" @SelectItem="SelectItem"></ZqgghhtzJinQiuShuItem>
31 15
         </div>
32 16
       </li>
33 17
     </ul>
@@ -39,6 +23,7 @@
39 23
 /*
40 24
   页面名称:足球-过关-混合投注
41 25
 */
26
+import ZqgghhtzJinQiuShuItem from '../ZqgghhtzJinQiuShuItem'
42 27
 export default {
43 28
   name: 'ZuQiuGuoGuanJinQiuShu',
44 29
   props: {
@@ -48,11 +33,14 @@ export default {
48 33
   },
49 34
   data () {
50 35
     return {
36
+      PageData: [...this.Data],
37
+      ResList: []
51 38
     }
52 39
   },
53 40
   computed: {
54 41
   },
55 42
   components: {
43
+    ZqgghhtzJinQiuShuItem
56 44
   },
57 45
   created () {
58 46
   },
@@ -61,6 +49,55 @@ export default {
61 49
     })
62 50
   },
63 51
   methods: {
52
+    SelectItem (e) { // 选择投注
53
+      this.TriggerRes(e.pIndex, e.cIndex, e.key, e.value, e.target, e.id)
54
+    },
55
+    TriggerRes (pIndex, cIndex, key, value, target, id) {
56
+      this.PageData[pIndex].playOdds[key][cIndex].Active = value
57
+      if (value) { // 新增投注
58
+        let Bool = false
59
+        this.ResList.map((item) => {
60
+          if (item.id === id) {
61
+            Bool = true
62
+            item.list.push({ ...target })
63
+            return false
64
+          }
65
+        })
66
+        if (!Bool) {
67
+          this.ResList.push({ id: id, list: [] })
68
+          this.ResList[this.ResList.length - 1].list.push({ ...target })
69
+        }
70
+        if (key !== 'ft-double') {
71
+          this.PageData[pIndex].MoreSelect = true
72
+        }
73
+      } else { // 删除投注
74
+        this.ResList.map((item, index) => {
75
+          let MarkBool = true
76
+          item.list.map((subItem, subIndex) => {
77
+            if (subItem.ruleCode === target.ruleCode && subItem.name === target.name) {
78
+              MarkBool = false
79
+              item.list.splice(subIndex, 1)
80
+              if (!item.list.length) {
81
+                this.ResList.splice(index, 1)
82
+              }
83
+            }
84
+          })
85
+          if (!MarkBool) { // 删除投注时检测更多选项有无选中投注,更新更多选项按钮状态
86
+            let SubMarkBool = true
87
+            item.list.map((subItem) => {
88
+              if (subItem.wayCode !== 'ft-double') {
89
+                SubMarkBool = false
90
+              }
91
+            })
92
+            if (!SubMarkBool) {
93
+              this.PageData[pIndex].MoreSelect = false
94
+            }
95
+          }
96
+        })
97
+      }
98
+      this.$emit('Change', this.ResList)
99
+      // console.log(this.ResList)
100
+    }
64 101
   }
65 102
 }
66 103
 </script>

+ 68
- 68
src/components/index/ZuQiuGuoGuanJinQiuShu/page.scss Vedi File

@@ -41,74 +41,74 @@
41 41
         }
42 42
       }
43 43
       > .Detail {
44
-        align-items: center;
45
-        margin-top: 0.05rem;
46
-        > span {
47
-          font-size: 0.1rem;
48
-          color: #999;
49
-          margin-right: 0.4rem;
50
-        }
51
-        > div.flex-item {
52
-          > div.flex-item {
53
-            position: relative;
54
-            overflow: hidden;
55
-            > div.flex-h {
56
-              margin-top: 0.05rem;
57
-              align-items: center;
58
-              &:first-child {
59
-                margin-top: 0;
60
-              }
61
-              > span {
62
-                font-size: 0.1rem;
63
-                width: 0.16rem;
64
-                line-height: 0.16rem;
65
-                text-align: center;
66
-                border: 0.01rem solid #999;
67
-                color: #999;
68
-                border-radius: 100%;
69
-                margin-right: 0.1rem;
70
-                &.Yellow {
71
-                  color: #fff;
72
-                  background: #ff5100;
73
-                  border-color: #ff5100;
74
-                }
75
-                &.Blue {
76
-                  color: #fff;
77
-                  background: #3f63e5;
78
-                  border-color: #3f63e5;
79
-                }
80
-              }
81
-              > a {
82
-                text-align: center;
83
-                border: 0.01rem solid #999;
84
-                margin-left: 0.05rem;
85
-                &.active {
86
-                  color: #fff;
87
-                  background: #ff5100;
88
-                  border-color: #ff5100;
89
-                }
90
-                > span {
91
-                  display: block;
92
-                  font-size: 0.1rem;
93
-                  line-height: 0.16rem;
94
-                  text-align: center;
95
-                }
96
-              }
97
-            }
98
-          }
99
-          > a {
100
-            font-size: 0.1rem;
101
-            color: #ff5100;
102
-            line-height: 0.2rem;
103
-            border: 0.01rem solid #999;
104
-            margin-left: 0.05rem;
105
-            position: relative;
106
-            overflow: hidden;
107
-            padding: 0 0.02rem;
108
-            padding-top: 0.04rem;
109
-            margin-right: 0.2rem;
110
-          }
111
-        }
44
+        // align-items: center;
45
+        // margin-top: 0.05rem;
46
+        // > span {
47
+        //   font-size: 0.1rem;
48
+        //   color: #999;
49
+        //   margin-right: 0.4rem;
50
+        // }
51
+        // > div.flex-item {
52
+        //   > div.flex-item {
53
+        //     position: relative;
54
+        //     overflow: hidden;
55
+        //     > div.flex-h {
56
+        //       margin-top: 0.05rem;
57
+        //       align-items: center;
58
+        //       &:first-child {
59
+        //         margin-top: 0;
60
+        //       }
61
+        //       > span {
62
+        //         font-size: 0.1rem;
63
+        //         width: 0.16rem;
64
+        //         line-height: 0.16rem;
65
+        //         text-align: center;
66
+        //         border: 0.01rem solid #999;
67
+        //         color: #999;
68
+        //         border-radius: 100%;
69
+        //         margin-right: 0.1rem;
70
+        //         &.Yellow {
71
+        //           color: #fff;
72
+        //           background: #ff5100;
73
+        //           border-color: #ff5100;
74
+        //         }
75
+        //         &.Blue {
76
+        //           color: #fff;
77
+        //           background: #3f63e5;
78
+        //           border-color: #3f63e5;
79
+        //         }
80
+        //       }
81
+        //       > a {
82
+        //         text-align: center;
83
+        //         border: 0.01rem solid #999;
84
+        //         margin-left: 0.05rem;
85
+        //         &.active {
86
+        //           color: #fff;
87
+        //           background: #ff5100;
88
+        //           border-color: #ff5100;
89
+        //         }
90
+        //         > span {
91
+        //           display: block;
92
+        //           font-size: 0.1rem;
93
+        //           line-height: 0.16rem;
94
+        //           text-align: center;
95
+        //         }
96
+        //       }
97
+        //     }
98
+        //   }
99
+        //   > a {
100
+        //     font-size: 0.1rem;
101
+        //     color: #ff5100;
102
+        //     line-height: 0.2rem;
103
+        //     border: 0.01rem solid #999;
104
+        //     margin-left: 0.05rem;
105
+        //     position: relative;
106
+        //     overflow: hidden;
107
+        //     padding: 0 0.02rem;
108
+        //     padding-top: 0.04rem;
109
+        //     margin-right: 0.2rem;
110
+        //   }
111
+        // }
112 112
       }
113 113
     }
114 114
   }

+ 0
- 16
src/components/index/ZuQiuGuoGuanShengPingFu/index.vue Vedi File

@@ -67,32 +67,16 @@ export default {
67 67
           this.ResList.push({ id: id, list: [] })
68 68
           this.ResList[this.ResList.length - 1].list.push({ ...target })
69 69
         }
70
-        if (key !== 'ft-wdl' && key !== 'ft-wdls') {
71
-          this.PageData[pIndex].MoreSelect = true
72
-        }
73 70
       } else { // 删除投注
74 71
         this.ResList.map((item, index) => {
75
-          let MarkBool = true
76 72
           item.list.map((subItem, subIndex) => {
77 73
             if (subItem.ruleCode === target.ruleCode && subItem.name === target.name) {
78
-              MarkBool = false
79 74
               item.list.splice(subIndex, 1)
80 75
               if (!item.list.length) {
81 76
                 this.ResList.splice(index, 1)
82 77
               }
83 78
             }
84 79
           })
85
-          if (!MarkBool) { // 删除投注时检测更多选项有无选中投注,更新更多选项按钮状态
86
-            let SubMarkBool = true
87
-            item.list.map((subItem) => {
88
-              if (subItem.ruleCode !== 'ft-wdl' && subItem.ruleCode !== 'ft-wdls') {
89
-                SubMarkBool = false
90
-              }
91
-            })
92
-            if (!SubMarkBool) {
93
-              this.PageData[pIndex].MoreSelect = false
94
-            }
95
-          }
96 80
         })
97 81
       }
98 82
       this.$emit('Change', this.ResList)

+ 1
- 1
src/pages/index/PaiLie5DingDan/index.vue Vedi File

@@ -210,7 +210,7 @@ export default {
210 210
       this.PaiLie5Cart.map((item) => {
211 211
         let ItemArr = []
212 212
         for (let key in item) {
213
-          if (key !== 'Count' && key !== 'Type') {
213
+          if (key !== 'ft-Count' && key !== 'Type') {
214 214
             ItemArr.push(item[key])
215 215
           }
216 216
         }

+ 15
- 3
src/pages/index/ZuQiu/index.vue Vedi File

@@ -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: 4, // 选法,对应SelectTypeData中id值
140
+      SelectType: 1, // 选法,对应SelectTypeData中id值
141 141
       ShowSelectTypeNav: false // 显隐选法列表
142 142
     }
143 143
   },
@@ -186,10 +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 })
192
-      this.ResList = []
204
+      this.EmptyAllData() // 清除数据
193 205
       this.ShowSelectTypeNav = false
194 206
     },
195 207
     MainTitleClick () {