李昌恒 6 лет назад
Сommit
44fb2d417f
100 измененных файлов с 6288 добавлено и 0 удалено
  1. BIN
      .DS_Store
  2. 12 0
      vue_sports/.babelrc
  3. 9 0
      vue_sports/.editorconfig
  4. 14 0
      vue_sports/.gitignore
  5. 10 0
      vue_sports/.postcssrc.js
  6. 1 0
      vue_sports/.svn/entries
  7. 1 0
      vue_sports/.svn/format
  8. 318 0
      vue_sports/.svn/pristine/00/007e49299f4898b1d5f707283c2867dca04d0ad2.svn-base
  9. 45 0
      vue_sports/.svn/pristine/05/054036ca05a38e84d6dde0503d45fcb0b86ac1e9.svn-base
  10. BIN
      vue_sports/.svn/pristine/05/05d72fa59cec5fb58cce270195bf2c6381e38b48.svn-base
  11. BIN
      vue_sports/.svn/pristine/06/065698be43541d0b30a08085516e38da263d1cbb.svn-base
  12. BIN
      vue_sports/.svn/pristine/08/0868d35dd2646fa865cccdd30c36f6cba6a27c85.svn-base
  13. 13 0
      vue_sports/.svn/pristine/08/08857a7a2d277eee504a5f1c52ad2a9911861338.svn-base
  14. BIN
      vue_sports/.svn/pristine/08/0893a6dce41d985200bf2a6358a9b5e4e3a1e344.svn-base
  15. 124 0
      vue_sports/.svn/pristine/08/0898a05e1b9db5d7e905c8b00b100beed1a154e8.svn-base
  16. BIN
      vue_sports/.svn/pristine/0a/0ab58e45ff9eaf0a84ecd46aa53ef4ca3fc20d86.svn-base
  17. 124 0
      vue_sports/.svn/pristine/0b/0ba9a5958252ceb0c3bbaf0663724e1781609c6a.svn-base
  18. BIN
      vue_sports/.svn/pristine/0d/0d735618ae4c5f957ff454c80333dc02ee559e0b.svn-base
  19. BIN
      vue_sports/.svn/pristine/0f/0f551c47321547e4bb452855f5ea08e78fd16168.svn-base
  20. 227 0
      vue_sports/.svn/pristine/12/121285f46911f0098e1c6c253d8ed3839ebcf9fc.svn-base
  21. 2 0
      vue_sports/.svn/pristine/12/12a7646e951c3b62328da371085dfabaf926aab2.svn-base
  22. 0 0
      vue_sports/.svn/pristine/14/148623a78e392fc5614d3b29a2713e3054bcc26c.svn-base
  23. BIN
      vue_sports/.svn/pristine/15/156f147886f97897089decf79963671140386fc3.svn-base
  24. BIN
      vue_sports/.svn/pristine/16/1678c8aed64e5372b7a918f7c5b961ad1bdc1f2a.svn-base
  25. 0 0
      vue_sports/.svn/pristine/17/178addcbae0671f951efb318d375426bcb435b03.svn-base
  26. BIN
      vue_sports/.svn/pristine/1a/1a6ace377133f14a2b2cd7c48f10369a6bc54b2e.svn-base
  27. 102 0
      vue_sports/.svn/pristine/1a/1acee2bf067f9a9ce1747be97615a39b52012ee6.svn-base
  28. 13 0
      vue_sports/.svn/pristine/1c/1c44d115e76735a2eaf310e25c0882a0c443fe3e.svn-base
  29. 117 0
      vue_sports/.svn/pristine/1c/1c6f478fb6e7ec4d94f9ac115c205b1e3b12b983.svn-base
  30. 221 0
      vue_sports/.svn/pristine/1f/1fa556c558bcf73551b35cd5151f8b98a7cb890e.svn-base
  31. 76 0
      vue_sports/.svn/pristine/20/2050ff525ea40b8466a79ddb5350221c677070b8.svn-base
  32. 180 0
      vue_sports/.svn/pristine/20/20d923fcdbefcbf0908509e8aed4b9a37772a578.svn-base
  33. 0 0
      vue_sports/.svn/pristine/21/21eac2679471d058b1440c5e486df00423e090d3.svn-base
  34. BIN
      vue_sports/.svn/pristine/22/22b70d8cef87d09133bb905a1016b88a46b7c8f8.svn-base
  35. 28 0
      vue_sports/.svn/pristine/23/235d0e089b31a0632f50cc5db233793093253bf8.svn-base
  36. 54 0
      vue_sports/.svn/pristine/23/23665af6f1b5aabbcff80f6f9bc5e29490a0d3e7.svn-base
  37. 0 0
      vue_sports/.svn/pristine/23/23c50241d8d139d47e5772878958b4fcfd06fd9b.svn-base
  38. 565 0
      vue_sports/.svn/pristine/25/250a5f97598b8a3e10716bee5692e2cfbf46b776.svn-base
  39. BIN
      vue_sports/.svn/pristine/29/29773ba816457eab251845337f3a41ad644f9b76.svn-base
  40. BIN
      vue_sports/.svn/pristine/2d/2dcdc1e9f37035620ac2c15d27c2b159677ac0cd.svn-base
  41. 166 0
      vue_sports/.svn/pristine/2f/2fb74901adb5d32b8d3650ce31f0faad7904e73c.svn-base
  42. 0 0
      vue_sports/.svn/pristine/30/303d5ef569a17453517caf38a0777849caf6bed1.svn-base
  43. 184 0
      vue_sports/.svn/pristine/30/3065b165607dd9db9dce18068b4cf6de04b815d7.svn-base
  44. 172 0
      vue_sports/.svn/pristine/33/33cda26e95b1b84d217a174a3c8b0bac7339377c.svn-base
  45. 281 0
      vue_sports/.svn/pristine/35/356f09a59b32420fc114a5039bf44692ff61e41a.svn-base
  46. BIN
      vue_sports/.svn/pristine/37/377f9216765e9452dc326526422fd1101e4b0ad8.svn-base
  47. BIN
      vue_sports/.svn/pristine/38/38b4cffea1e46c8da4d52ec4c1d90832f178e2ea.svn-base
  48. 394 0
      vue_sports/.svn/pristine/38/38ccdeb02822d3eaf2f5ccf4bb0f69dd1aa8a79a.svn-base
  49. 0 0
      vue_sports/.svn/pristine/39/39990220065179d7080692a029ab463966a8cdd4.svn-base
  50. 143 0
      vue_sports/.svn/pristine/3a/3a88a42e82b1f0cfb07174b365e9bd568cdf061b.svn-base
  51. BIN
      vue_sports/.svn/pristine/3b/3b460202f6417fc33a79c8884d40e55ec862db7e.svn-base
  52. 214 0
      vue_sports/.svn/pristine/3b/3bf308973ab338cf0b96ce033b0174e09e5b1126.svn-base
  53. BIN
      vue_sports/.svn/pristine/3c/3c0ac63c301631eadfd594f98aba8dcadbaaec78.svn-base
  54. 29 0
      vue_sports/.svn/pristine/3c/3c45d3ede86f6e1af0a5cbca1b067198ddb3bffd.svn-base
  55. 136 0
      vue_sports/.svn/pristine/3d/3d665138abba0f96d070b8887949382a210983da.svn-base
  56. BIN
      vue_sports/.svn/pristine/3e/3e42ec49e909fa37e76c61972a8a712eef44f298.svn-base
  57. BIN
      vue_sports/.svn/pristine/41/41ed87d25c47d38f8add8bf90b1479c6b45222ac.svn-base
  58. 4 0
      vue_sports/.svn/pristine/42/42da40ce6f9e32fee2ff71498a322efc03ad1cb2.svn-base
  59. 7 0
      vue_sports/.svn/pristine/44/449b29e898778138d3fb28978b3038fdb5cd0a30.svn-base
  60. BIN
      vue_sports/.svn/pristine/45/45391f1d7906ffd31448d36c6066fee614b1e9fe.svn-base
  61. BIN
      vue_sports/.svn/pristine/46/466359567488e1de931ed63a3e17a71d433d7ecc.svn-base
  62. 0 0
      vue_sports/.svn/pristine/47/4728a165301481f2a1e9e4b85e985c110c165aa0.svn-base
  63. BIN
      vue_sports/.svn/pristine/47/47479c9b7e3c2718c0a00e25f0a2419030f56312.svn-base
  64. 0 0
      vue_sports/.svn/pristine/49/49269101d6a8027959d523c621a7ced85368ab59.svn-base
  65. 0 0
      vue_sports/.svn/pristine/49/49c7cd5bb4fa4bd4276c5d4561b2b6ab7365d5a9.svn-base
  66. 124 0
      vue_sports/.svn/pristine/4a/4a498756a455763d01de981d6ea1493289aa8d3d.svn-base
  67. 0 0
      vue_sports/.svn/pristine/4f/4fee2a135aa23b2ae771e69dddaafbb757cc8a81.svn-base
  68. 1 0
      vue_sports/.svn/pristine/50/5019c0dd299a102665a342fe3d6154829da83bc3.svn-base
  69. BIN
      vue_sports/.svn/pristine/51/51ef1b03092b64500bb11862299434adfac3e008.svn-base
  70. 124 0
      vue_sports/.svn/pristine/52/52ac6d0fab020c4ff738ca9803e6704c070f8b00.svn-base
  71. 66 0
      vue_sports/.svn/pristine/53/530242330e796a8a580121cd73a8dbd71f274643.svn-base
  72. BIN
      vue_sports/.svn/pristine/55/552f1a67979c8a5481816a6d5f78125710d1ae5f.svn-base
  73. BIN
      vue_sports/.svn/pristine/56/56c61b04271f6a2a56faa5a5467f4c287a1a8493.svn-base
  74. 145 0
      vue_sports/.svn/pristine/56/56fbdb705764b6dfafcd8ddf5336eb3152afff87.svn-base
  75. 136 0
      vue_sports/.svn/pristine/57/5785bc9c63958ab580b07e3cfbb7f009883374b6.svn-base
  76. BIN
      vue_sports/.svn/pristine/58/58129cf47db4233d8f8f0d07a94696f608d7caf1.svn-base
  77. 152 0
      vue_sports/.svn/pristine/59/59d06e8ad46363743333c1164ef2e0e5c1c3ee64.svn-base
  78. 333 0
      vue_sports/.svn/pristine/59/59f27e8ea6202421ce28773d0f12be595723317d.svn-base
  79. 29 0
      vue_sports/.svn/pristine/5c/5c20ed128c3c148f34020bac73e1fff684c7e9f7.svn-base
  80. BIN
      vue_sports/.svn/pristine/5d/5df6b8ca8aeaab1942007f8a3f4969216413655c.svn-base
  81. 0 0
      vue_sports/.svn/pristine/5e/5e545bc6089b5a25f662cc948c335c7f039bf73c.svn-base
  82. 296 0
      vue_sports/.svn/pristine/5e/5ee89398615e5331db94c41f3a020e4259143c89.svn-base
  83. BIN
      vue_sports/.svn/pristine/5f/5fce7a6a13fcb59bf27d824bea7ad3fbe5904587.svn-base
  84. BIN
      vue_sports/.svn/pristine/60/60649015c00d857951ec4957dcc3a2965c22a77d.svn-base
  85. 212 0
      vue_sports/.svn/pristine/60/60760fc9b18b77975a6f96906b50208ca9955421.svn-base
  86. 77 0
      vue_sports/.svn/pristine/62/628d45e780484f87168c06784a6b9705d82887d4.svn-base
  87. 127 0
      vue_sports/.svn/pristine/63/6332d9cd510d3c389935109ebbf38e8b3dfd3a4b.svn-base
  88. 127 0
      vue_sports/.svn/pristine/63/63716b1fb4eeeba04d34e425d44b5952be612159.svn-base
  89. BIN
      vue_sports/.svn/pristine/65/65ca60ae1aab140f95a0c91a8f7ae345e0cd0aeb.svn-base
  90. 21 0
      vue_sports/.svn/pristine/65/65d7ef17fbfc12ea204603982b25e5db355a96cd.svn-base
  91. 22 0
      vue_sports/.svn/pristine/6a/6a00874ffbc475c538cecedf6540f4e8cff82dc4.svn-base
  92. BIN
      vue_sports/.svn/pristine/70/70663016a94f5904cf320392c4633ece6234e8fe.svn-base
  93. BIN
      vue_sports/.svn/pristine/70/70f8ad793f0752cb8de884470b9e74af65f86a25.svn-base
  94. BIN
      vue_sports/.svn/pristine/72/7229465b2044d3fa18252931d94a1248e65b2576.svn-base
  95. BIN
      vue_sports/.svn/pristine/72/72748060a7ee95d2522613f95c08cc53b974037c.svn-base
  96. 143 0
      vue_sports/.svn/pristine/72/72d4f4d1587a566c1f218bbef3d84906409280de.svn-base
  97. 127 0
      vue_sports/.svn/pristine/73/73942d12a81f98b6c7aed20aeee1ec68403ac81d.svn-base
  98. BIN
      vue_sports/.svn/pristine/75/7513f4b7f8aba9c45a9badaece8601c0b0b243ce.svn-base
  99. 40 0
      vue_sports/.svn/pristine/78/7820d0cfd1adf18d2234e920b872d1e95f1596e4.svn-base
  100. BIN
      vue_sports/.svn/pristine/78/789d488d9e0b1f1c296fed67e886f343b0af3a3a.svn-base

+ 12 - 0
vue_sports/.babelrc

@@ -0,0 +1,12 @@
+{
+  "presets": [
+    ["env", {
+      "modules": false,
+      "targets": {
+        "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
+      }
+    }],
+    "stage-2"
+  ],
+  "plugins": ["transform-vue-jsx", "transform-runtime"]
+}

+ 9 - 0
vue_sports/.editorconfig

@@ -0,0 +1,9 @@
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true

+ 14 - 0
vue_sports/.gitignore

@@ -0,0 +1,14 @@
+.DS_Store
+node_modules/
+/dist/
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln

+ 10 - 0
vue_sports/.postcssrc.js

@@ -0,0 +1,10 @@
+// https://github.com/michael-ciniawsky/postcss-load-config
+
+module.exports = {
+  "plugins": {
+    "postcss-import": {},
+    "postcss-url": {},
+    // to edit target browsers: use "browserslist" field in package.json
+    "autoprefixer": {}
+  }
+}

+ 1 - 0
vue_sports/.svn/entries

@@ -0,0 +1 @@
+12

+ 1 - 0
vue_sports/.svn/format

@@ -0,0 +1 @@
+12

+ 318 - 0
vue_sports/.svn/pristine/00/007e49299f4898b1d5f707283c2867dca04d0ad2.svn-base

@@ -0,0 +1,318 @@
+<template>
+  <div>
+    <div v-if="isDisplay">
+      <yd-accordion>
+        <yd-accordion-item title="让球" open>
+          <div v-for="(item,index) in data" :accordion="true">
+            <div v-if="item.odds_code == 'concede_home' || item.odds_code == 'concede_guest'">
+              <div style="padding:0 0.32rem;" class="odds">
+                <div class="row allAlignment center small">
+                  <span>{{item.odds_code =='concede_home' ? home_team :guest_team}}</span>
+                  <div class="ratio column center" @click="bettingBtn(item.id,item.condition,item.odds)" :class="item.isTrue ? 'col':''">
+                    <span class="score">{{item.condition}}</span>
+                    <span>{{item.odds}}</span>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </yd-accordion-item>
+      </yd-accordion>
+      <yd-accordion>
+        <yd-accordion-item title="让球-上半场" open>
+          <div v-for="(item,index) in data" :accordion="true">
+            <div
+              v-if="item.odds_code == 'half_concede_home' || item.odds_code == 'half_concede_guest'"
+            >
+              <div style="padding:0 0.32rem;" class="odds">
+                <div class="row allAlignment center small">
+                  <span>{{item.odds_code =='half_concede_home' ? home_team :guest_team}}</span>
+                  <div class="ratio column center" @click="bettingBtn(item.id,item.condition,item.odds)" :class="item.isTrue ? 'col':''">
+                    <span class="score">{{item.condition}}</span>
+                    <span>{{item.odds}}</span>
+                  </div>
+                </div>
+                <!-- </div> -->
+              </div>
+            </div>
+          </div>
+        </yd-accordion-item>
+      </yd-accordion>
+
+      <yd-accordion :accordion="true">
+        <yd-accordion-item title="进球:大/小" open>
+          <div style="padding:0 0.32rem;" class="odds">
+            <div class="row allAlignment center">
+              <div style="width:50% ;" class="column">
+                <div v-for="(item,index) in data" :accordion="true">
+                  <div v-if="item.odds_code == 'size_home'">
+                    <div
+                      style="border-right: 1px solid #e4e4e4; padding-right:0.1rem; "
+                      class="small row allAlignment center"
+                    >
+                      <div>大</div>
+                      <div
+                        class="ratio column center"
+                        :class="item.isTrue ? 'col':''"
+                        @click="bettingBtn(item.id,item.condition,item.odds)"
+                      >
+                        <span class="score">{{item.condition}}</span>
+                        <span>{{item.odds}}</span>
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </div>
+              <div style="width:50% ;" class="column">
+                <div v-for="(item,index) in data" :accordion="true">
+                  <div v-if="item.odds_code == 'size_guest'">
+                    <div class="small row allAlignment center">
+                      <div>小</div>
+                      <div
+                        class="ratio column center"
+                        :class="item.isTrue? 'col':''"
+                        @click="bettingBtn(item.id,item.condition,item.odds)"
+                      >
+                        <span class="score">{{item.condition}}</span>
+                        <span>{{item.odds}}</span>
+                      </div>
+                    </div>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </yd-accordion-item>
+      </yd-accordion>
+
+      <yd-accordion :accordion="true">
+        <yd-accordion-item title="进球:大/小-上半场" open>
+              <div style="padding:0 0.32rem;" class="odds">
+                <div class="row allAlignment center">
+                  <div style="width:50% ;" class="column">
+          <div v-for="(item,index) in data" :accordion="true">
+            <div v-if="item.odds_code == 'half_size_home'">
+                    <div
+                      style="border-right: 1px solid #e4e4e4; padding-right:0.1rem; "
+                      class="small row allAlignment center"
+                    >
+                      <div>大</div>
+                      <div
+                        class="ratio column center"
+                        :class="item.isTrue ? 'col':''"
+                        @click="bettingBtn(item.id,item.condition,item.odds)"
+                      >
+                        <span class="score">{{item.condition}}</span>
+                        <span>{{item.odds}}</span>
+                      </div>
+                    </div>
+                      </div>
+            </div>
+                  </div>
+                  <div style="width:50% ;" class="column">
+                    <!-- || item.odds_code == 'half_size_guest' -->
+                    <div v-for="(item,index) in data" :accordion="true">
+            <div v-if="item.odds_code == 'half_size_guest'">
+                    <div class="small row allAlignment center">
+                      <div>小</div>
+                      <div
+                        class="ratio column center"
+                        :class="item.isTrue? 'col':''"
+                        @click="bettingBtn(item.id,item.condition,item.odds)"
+                      >
+                        <span class="score">{{item.condition}}</span>
+                        <span>{{item.odds}}</span>
+                      </div>
+                    </div>
+                      </div>
+            </div>
+                  </div>
+                </div>
+            
+          </div>
+        </yd-accordion-item>
+      </yd-accordion>
+    </div>
+    <!-- <div class="BettingWindow" v-if="isWindow">
+       <BettingWindow />
+    </div> -->
+  </div>
+</template>
+<script>
+// import BettingWindow from "@/components/StBettingWindow";
+export default {
+  
+  data() {
+    return {
+      title: "concede_size",
+      isDisplay: false,
+      home_team: "",
+      guest_team: "",
+      data: [],
+      betting: [], //已投注倍率id集合
+      dataNum: 10000 //对应的数据的下标
+    };
+  },
+  methods: {
+    //玩法投注
+    bettingBtn(id,name,odds,condition='',bettingTime='') {
+      // // 投注页面显示
+      //    if(this.$store.getters.newIsBetting==true){
+      //     return false
+      //  }
+      //    this.$store.dispatch('ISBETTING',true)
+      let _this = this;
+      let bettingInfo = {
+        id,
+        home_team:this.home_team,
+        guest_team:this.guest_team,
+        name,
+        odds,
+        condition,
+        ganame:this.title,
+        score:this.score,
+        bettingTime,
+
+      }
+      //调用玩法投注公共方法
+      this.$public.bettingFunction(
+        this.betting,
+        bettingInfo,
+        this.data,
+        this.$store.getters.getBetting,
+        this.title,
+        this.dataNum,
+        function(res, type) {
+          _this.$set(res, "isTrue", type);
+        },
+        function(data, val) {
+          _this.$store.dispatch("BETTING", []);
+          _this.$store.dispatch("BETTING", data ? data : val);
+          if(_this.$store.getters.getIsBetting) return false
+          _this.$store.dispatch("ISBETTING",true)
+
+        }
+      );
+    },
+    //获取玩法id
+    getBettingId(data) {
+      if (data) {
+        data.forEach((res, index) => {
+          if (res.title == this.title) {
+            this.betting = res.data;
+            this.dataNum = index;
+          }
+        });
+      }
+    }
+  },
+
+  /**
+   * 计算属性
+   */
+  computed: {
+    getUserIcons() {
+      return this.$store.getters.getGameRatio;
+    },
+    getBetting() {
+      return this.$store.getters.getBetting;
+    },
+    //获取投注框删除的投注信息
+    getDeleteType(){
+      return this.$store.getters.getDeleteType;
+    },
+  },
+  /**
+   * 监听器
+   */
+  watch: {
+    getUserIcons(val) {
+      //console.log("更新数据", val);
+      if (!val) return false;
+      this.home_team = val.home_team;
+      this.guest_team = val.guest_team;
+      val.oddsData.forEach(res => {
+        if (res[0].p_code == this.title) {
+          this.isDisplay = true;
+          this.data = res;
+        }
+      });
+      this.getBettingId(this.$store.getters.getBetting);
+      if (this.dataNum != 10000) {
+        this.betting.forEach(res => {
+          this.data.forEach((e, index) => {
+            if (res.id == e.id) {
+              this.$set(e, "isTrue", true);
+            }
+          });
+        });
+      }
+    },
+    //获取已投注信息
+    getBetting(val) {
+      let _this =this;
+      this.$public.getBettingId(val,this.title,function(data,index){
+        _this.betting = data;
+        _this.dataNum = index;
+      });
+    },
+    //监听投注框删除处理
+    getDeleteType(val){
+        this.data.forEach(e =>{
+          if(val =='all'){
+            this.$set(e, "isTrue", false);
+          }else{
+            if(e.id == val){
+              this.$set(e, "isTrue", false);
+            }
+          }
+        })
+    }
+  },
+  // component:{BettingWindow},
+};
+</script>
+<style scoped>
+div /deep/ .yd-accordion-head {
+  padding: 0 0.32rem;
+  background: #a0a0a0;
+}
+div /deep/ .yd-accordion-title {
+  color: #FEFEFE;
+  font-size: 0.28rem;
+}
+div /deep/ .yd-accordion-head-arrow:after {
+  border: none;
+  width: 0.5rem;
+  height: 0.5rem;
+  background: url("../assets/st-imges/xiangxia.png") no-repeat;
+  background-size: 100% 100%;
+}
+.small {
+  font-size: 0.26rem;
+  border-bottom: 1px solid #e4e4e4;
+  padding-left: 0.16rem;
+}
+.odds {
+  background: #f4f4f4;
+  text-align: left;
+}
+.ratio {
+  width: 1.07rem;
+  height: 0.76rem;
+  border: 2px solid #cecece;
+  margin-right: 0.14rem;
+  border-radius: 0.1rem;
+  margin: 0.06rem;
+}
+.score {
+  color: #fd8f26;
+}
+.col {
+  background: #f76649;
+  border: 2px solid #f76649 !important;
+}
+.col span {
+  color: #f4f4f4 !important;
+}
+</style>

+ 45 - 0
vue_sports/.svn/pristine/05/054036ca05a38e84d6dde0503d45fcb0b86ac1e9.svn-base

@@ -0,0 +1,45 @@
+<template>
+    <div>
+        <div class = "lod">
+          <Loading></Loading>
+        </div>
+        <SportsHead></SportsHead>
+        <Serch></Serch>
+        <LinkFooter></LinkFooter>
+    </div>
+</template>
+<script>
+import  SportsHead from '@/components/StSportsHead';
+import  Serch from '@/components/StSerch';
+import  LinkFooter from '@/components/StLinkFooter';
+import  Schedule from '@/components/StSchedule';
+import  Loading from '@/components/StLoading';
+export default {
+    name:"AllMatch",
+    components:{
+        SportsHead,
+        Serch,
+        LinkFooter,
+        Schedule,
+        Loading
+    },
+    data(){
+        return{
+            // ballId:this.$route.query.id
+        }
+
+    },
+    // created(){
+    //     this.getId();
+    // },
+    // methods:{
+    //     getId:function(){
+    //         console.log(this.$store.getters.getGameRatio);
+    //     }
+    // }
+    //    this.$store.dispatch('GETSHOW',true);
+}
+</script>
+<style  scoped>
+
+</style>

BIN
vue_sports/.svn/pristine/05/05d72fa59cec5fb58cce270195bf2c6381e38b48.svn-base


BIN
vue_sports/.svn/pristine/06/065698be43541d0b30a08085516e38da263d1cbb.svn-base


BIN
vue_sports/.svn/pristine/08/0868d35dd2646fa865cccdd30c36f6cba6a27c85.svn-base


+ 13 - 0
vue_sports/.svn/pristine/08/08857a7a2d277eee504a5f1c52ad2a9911861338.svn-base

@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" name="viewport"/>
+    <script src="//unpkg.com/vue-ydui/dist/ydui.flexible.js"></script>
+    <title>vue_sports</title>
+  </head>
+  <body>
+    <div id="app"></div>
+    <!-- built files will be auto injected -->
+  </body>
+</html>

BIN
vue_sports/.svn/pristine/08/0893a6dce41d985200bf2a6358a9b5e4e3a1e344.svn-base


+ 124 - 0
vue_sports/.svn/pristine/08/0898a05e1b9db5d7e905c8b00b100beed1a154e8.svn-base

@@ -0,0 +1,124 @@
+<template>
+	<div>
+		<yd-accordion>
+			<!-- 组件标题 -->
+			<yd-accordion-item class="Match-game" :title="table.title">
+				<div style="background: #F0F0F0;">
+					<p
+						v-for="(i, index) in table.list"
+						class="list-row"
+						:style="i.num ? '' : 'background:#F8F8F8'"
+						:key="i.id"
+					>
+						<span class="The-club">{{ i.Theclub }}</span>
+						<span
+							:class="i.istrue== true ? 'active The-club-box' : 'The-club-box'"
+							@click="Theclubboxclick(index)"
+							:style="i.num ? '' : 'display:none'"
+						>
+							<i style="color: #FD8F26;" v-if="i.num">{{ i.num.num1 }}</i>
+							<i v-if="i.num"> {{ i.num.num2 }}</i>
+						</span>
+					</p>
+				</div>
+			</yd-accordion-item>
+		</yd-accordion>
+	</div>
+</template>
+
+<script>
+export default {
+	// 让球上半场
+	data() {
+		return {
+			// 组件内部测试状态
+			table: {
+				title: '让球-上半场',
+				list:[
+					{
+						id: 1,
+						Theclub: '哈萨克斯坦',
+						num: {
+							num1: '0.5/1',
+							num2: '0.94'
+						}
+					}
+				]
+			}
+		};
+	},
+	methods: {
+		// 点击更改组件选中状态
+		Theclubboxclick(num) {
+			// 更改组件是否选中
+			this.$set(this.table.list[num],"istrue",this.table.list[num].istrue==true?false:true)
+		}
+	},
+	mounted() {
+	}
+};
+</script>
+
+<style scoped>
+div /deep/ .yd-accordion-head-arrow:after {
+	border: none;
+	width: 0.5rem;
+	height: 0.5rem;
+	background: url(../../assets/st-imges/xiangxia.png) no-repeat;
+	background-size: 100% 100%;
+}
+div /deep/ .yd-accordion-head,
+div /deep/ .yd-accordion-head-content,
+div /deep/ .yd-accordion-title {
+	height: 0.88rem;
+	font-size: 0.32rem;
+	color:#333;
+  	background: #F8F8F8;
+}
+div /deep/ .yd-accordion-head {
+	padding: 0 0.32rem;
+}
+.Match-game {
+	position: relative;
+}
+.Match-game-stat {
+	position: absolute;
+	right: 1.35rem;
+	color: #fd8f26;
+	font-size: 0.23rem;
+}
+.list-row {
+	display: flex;
+	justify-content: space-between;
+	height: 0.87rem;
+	background: #f8f8f8;
+	border-bottom: 1px solid #e4e4e4;
+	align-items: center;
+	padding: 0 0.32rem;
+}
+.The-club{
+  font-size: .28rem
+}
+.The-club-box {
+	display: inline-block;
+	display: flex;
+	flex-wrap: wrap;
+	align-items: center;
+	justify-content: center;
+	width: 1.07rem;
+	height: 0.76rem;
+	font-size: 0.24rem;
+	padding: 0.1rem;
+	border: 2px solid #cecece;
+	border-radius: 0.1rem;
+	margin-right: 0.1rem;
+}
+.active {
+	background: #F76649;
+	padding: 0.1rem;
+	border: 2px solid #F76649;
+}
+.active i{
+	color: #f4f4f4 !important;
+}
+</style>

BIN
vue_sports/.svn/pristine/0a/0ab58e45ff9eaf0a84ecd46aa53ef4ca3fc20d86.svn-base


+ 124 - 0
vue_sports/.svn/pristine/0b/0ba9a5958252ceb0c3bbaf0663724e1781609c6a.svn-base

@@ -0,0 +1,124 @@
+<template>
+	<div>
+		<yd-accordion>
+			<!-- 组件标题 -->
+			<yd-accordion-item class="Match-game" :title="table.title">
+				<div style="background: #F0F0F0;">
+					<p
+						v-for="(i, index) in table.list"
+						class="list-row"
+						:style="i.num ? '' : 'background:#F8F8F8'"
+						:key="i.id"
+					>
+						<span class="The-club">{{ i.Theclub }}</span>
+						<span
+							:class="i.istrue== true ? 'active The-club-box' : 'The-club-box'"
+							@click="Theclubboxclick(index)"
+							:style="i.num ? '' : 'display:none'"
+						>
+							<i style="color: #FD8F26;" v-if="i.num">{{ i.num.num1 }}</i>
+							<i v-if="i.num"> {{ i.num.num2 }}</i>
+						</span>
+					</p>
+				</div>
+			</yd-accordion-item>
+		</yd-accordion>
+	</div>
+</template>
+
+<script>
+export default {
+	// 让球
+	data() {
+		return {
+			// 组件内部测试状态
+			table: {
+				title: '让球',
+				list:[
+					{
+						id: 1,
+						Theclub: '哈萨克斯坦',
+						num: {
+							num1: '0.5/1',
+							num2: '0.94'
+						}
+					}
+				]
+			}
+		};
+	},
+	methods: {
+		// 点击更改组件选中状态
+		Theclubboxclick(num) {
+			// 更改组件是否选中
+			this.$set(this.table.list[num],"istrue",this.table.list[num].istrue==true?false:true)
+		}
+	},
+	mounted() {
+	}
+};
+</script>
+
+<style scoped>
+div /deep/ .yd-accordion-head-arrow:after {
+	border: none;
+	width: 0.5rem;
+	height: 0.5rem;
+	background: url(../../assets/st-imges/xiangxia.png) no-repeat;
+	background-size: 100% 100%;
+}
+div /deep/ .yd-accordion-head,
+div /deep/ .yd-accordion-head-content,
+div /deep/ .yd-accordion-title {
+	height: 0.88rem;
+	font-size: 0.32rem;
+	color:#333;
+  	background: #F8F8F8;
+}
+div /deep/ .yd-accordion-head {
+	padding: 0 0.32rem;
+}
+.Match-game {
+	position: relative;
+}
+.Match-game-stat {
+	position: absolute;
+	right: 1.35rem;
+	color: #fd8f26;
+	font-size: 0.23rem;
+}
+.list-row {
+	display: flex;
+	justify-content: space-between;
+	height: 0.87rem;
+	background: #f8f8f8;
+	border-bottom: 1px solid #e4e4e4;
+	align-items: center;
+	padding: 0 0.32rem;
+}
+.The-club{
+  font-size: .28rem
+}
+.The-club-box {
+	display: inline-block;
+	display: flex;
+	flex-wrap: wrap;
+	align-items: center;
+	justify-content: center;
+	width: 1.07rem;
+	height: 0.76rem;
+	font-size: 0.24rem;
+	padding: 0.1rem;
+	border: 2px solid #cecece;
+	border-radius: 0.1rem;
+	margin-right: 0.1rem;
+}
+.active {
+	background: #F76649;
+	padding: 0.1rem;
+	border: 2px solid #F76649;
+}
+.active i{
+	color: #f4f4f4 !important;
+}
+</style>

BIN
vue_sports/.svn/pristine/0d/0d735618ae4c5f957ff454c80333dc02ee559e0b.svn-base


BIN
vue_sports/.svn/pristine/0f/0f551c47321547e4bb452855f5ea08e78fd16168.svn-base


+ 227 - 0
vue_sports/.svn/pristine/12/121285f46911f0098e1c6c253d8ed3839ebcf9fc.svn-base

@@ -0,0 +1,227 @@
+<template>
+  <div>
+    <div class="box">
+      <div class="row allAlignment center head_on_box">
+        <p
+          class="logo"
+          style="font-size:.6rem;color:#E1E1DF;font-family:  'Franklin Gothic Medium'"
+        >
+          <i style="color:#F76649;">HX</i>669
+        </p>
+        <!-- <img class="log" src="../assets/st-imges/indexlogo.png" alt=""> -->
+        <div class="row allAlignment center">
+          <yd-button   type="primary" bgcolor="rgba(0,0,0,0)" @click.native="isshow()">
+            <img class="user-ion" src="../assets/st-imges/user.png" alt>
+          </yd-button>
+          <!-- <div v-if="nameShow" class="row allAlignment center username">
+              {{name}}
+          </div> -->
+          <img
+            style="margin-left: 0.44rem;"
+            class="user-ion"
+            src="../assets/st-imges/contact.png"
+            alt
+          >
+        </div>
+      </div>
+
+      <div class="navtitle-box row">
+        <div style="width:1rem;height:1rem" class="row center">
+          <img
+            @click="returnHome"
+            :src="indeximg==true?img1:img2"
+            style="width:0.4rem;height:0.4rem;"
+            alt
+          >
+        </div>
+        <div  class="head_box">
+        <nav>
+          <div v-for="(item,$index) in title" class="row pan nav-arr" :key="item.id">
+            <div class="navtitle row pan">
+              <div class="nav-box row item-center">
+                <div
+                  class="headbox"
+                  @click="activityJump($index,item[0].type_code)"
+                  :class="{active:$index==active}"
+                >{{item[0].type_name}}</div>
+                <span
+                  :class="{numactive:$index==active}"
+                  class="head_box_num row center"
+                >{{item[0].matchNum>99?'1+':item[0].matchNum}}</span>
+              </div>
+            </div>
+          </div>
+        </nav>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import "../css/index.css";
+import Login from "@/pages/Login/index/StLogin";
+import register from "@/pages/Login/index/register";
+export default {
+  name: "SportsHead",
+  data() {
+    return {
+      show: this.$store.state.isShow,
+      indeximg: this.$route.query.home ? false : true,
+      img1: require("../assets/st-imges/home.png"),
+      img2: require("../assets/st-imges/gengduo-1.png"),
+      title: "",
+      active: this.$route.query.number,
+      init: true,
+      nameShow:false, //展示登录组件或者是名字
+    };
+  },
+  methods: {
+    isshow() {
+      let isShow = true;
+      this.$store.dispatch("GET_ISSHOW", isShow);
+      
+      console.log('这是我要的结果',this.$store.state.isShow)
+    },
+    /**
+     * 头部导航
+     */
+    activityJump: function(index, code) {
+      this.indeximg = false;
+     
+      if (this.active != index) {
+        this.active = index; //改变当前组件样式
+        this.$store.dispatch("GETACTIVITY", code); //将活动类别存入vuex里面
+        //console.log('vuex',this.$store.getters.getActivity);
+
+        if (this.$route.query.isTrue) return false;
+        this.$router.replace({
+          path: "/StRollBallpage",
+          query: { number: index, home: 1 }
+        });
+      }
+    },
+    /**
+     * 回到首页
+     */
+    returnHome: function() {
+      this.$router.replace({ path: "/" });
+      this.indeximg = true;
+    }
+  },
+ watch: {
+   show:{
+     updata(){
+       this.updata()
+     }
+   }
+ },
+  mounted() {
+    if(localStorage.getItem('name')){
+      this.name = localStorage.getItem('name')
+      this.nameShow = true;
+    }else{
+      this.nameShow = false;
+    }
+    this.$store.dispatch("GETSHOW", true);
+    this.$http.get(this.$ports.home.navTypeList).then(res => {
+      console.log('res',res)
+      if (res.data.status == 1) {
+        this.title = res.data.data;
+       
+        for(var i = 0; i < this.title.length; i++){
+          if(sessionStorage.getItem('activity')){
+            if(sessionStorage.getItem('activity') == this.title[i][0].type_code){
+  
+              if(this.indeximg == true){
+                // console.log("!")
+                 this.active = this.$route.query.number
+              }else if(this.$route.query.hmsts){
+                this.active = 0;
+                // console.log("2")
+              }else if(this.$route.query.scroll){
+                // console.log("scroll")
+              }
+              else{
+                 this.active = i;
+              }
+   
+            }
+          }
+        }
+         this.$store.dispatch("GETSHOW", false);
+      }
+    });
+
+  },
+
+};
+</script>
+<style  scoped>
+.head_on_box{
+  padding: 0 .32rem;
+}
+.box {
+  height: 1.76rem;
+  background: linear-gradient(to bottom, #999999, #6a6a6b);
+  overflow: hidden;
+}
+.navtitle-box{
+    height: 1rem;
+    padding: 0 .32rem 0 0;
+}
+
+ 
+
+.headbox{
+  font-size: .3rem;
+  font-weight: bold;
+  color: #E1E1DF;
+}
+.head_box {
+  width: 86%;
+  height: 1rem;
+}
+.head_box nav{
+    
+  display: -webkit-box;
+  display: -ms-flexbox;
+  -webkit-box-align: middle;
+  -ms-flex-align: middle;
+  align-items: middle;
+  overflow-x: auto;
+  -webkit-overflow-scrolling: touch;
+}
+.navtitle {
+  font-size: 0.16rem;
+  height: 1rem;
+  -ms-flex-negative: 0;
+  flex-shrink: 0;
+}
+.nav-arr{
+  width: 1.3rem;
+}
+.user-ion {
+  width: 0.3rem;
+  height: 0.3rem;
+}
+div.active {
+  color: #f76649;
+}
+.numactive {
+  background: #f76649 !important;
+  color: #f8f8f8 !important;
+}
+.head_box_num{
+  width: .4rem;
+  height: .4rem;
+  border-radius: 50%;
+  font-size: .2rem;
+  background: #E1E1DF;
+  color: #333;
+  margin-left: .1rem;
+}
+.username{
+  color: #E1E1DF;
+}
+</style>
+

+ 2 - 0
vue_sports/.svn/pristine/12/12a7646e951c3b62328da371085dfabaf926aab2.svn-base

@@ -0,0 +1,2 @@
+import Vue from 'vue'
+export default new Vue()

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
vue_sports/.svn/pristine/14/148623a78e392fc5614d3b29a2713e3054bcc26c.svn-base


BIN
vue_sports/.svn/pristine/15/156f147886f97897089decf79963671140386fc3.svn-base


BIN
vue_sports/.svn/pristine/16/1678c8aed64e5372b7a918f7c5b961ad1bdc1f2a.svn-base


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
vue_sports/.svn/pristine/17/178addcbae0671f951efb318d375426bcb435b03.svn-base


BIN
vue_sports/.svn/pristine/1a/1a6ace377133f14a2b2cd7c48f10369a6bc54b2e.svn-base


+ 102 - 0
vue_sports/.svn/pristine/1a/1acee2bf067f9a9ce1747be97615a39b52012ee6.svn-base

@@ -0,0 +1,102 @@
+<template>
+    <div>
+        <div class="TheOdds-title">{{data.title}}</div>
+        <div class="TheOdds-list" v-for="(i,index) in data.list" :key="i.id">
+            <div class="TheOdds-list-left">
+                <span>{{i.name}}</span>
+            </div>
+            <div class="TheOdds-list-right">
+                <div :class="i.istrue==true?'TheOdds-list-right-num active':'TheOdds-list-right-num'" @click="myisclick(index)">
+                    {{i.ratio}}
+                </div>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+    export default {
+        name:"TheOdds",
+        data() {
+            return {
+                data:{
+                    title:'冠军',
+                    list:[
+                        {
+                            name:"曼城",
+                            ratio:"3.25"
+                        },
+                         {
+                            name:"尤文图斯",
+                            ratio:"3.25"
+                        },
+                         {
+                            name:"巴塞罗那",
+                            ratio:"3.25"
+                        },
+                        {
+                            name:"利物浦",
+                            ratio:"3.25"
+                        }
+                    ]
+                }
+            }
+        },
+            methods: {
+                    myisclick(index){
+                        this.$set(this.data.list[index],'istrue',this.data.list[index].istrue==true?false:true)
+                    }
+                },
+    }
+</script>
+
+<style scoped>
+    .TheOdds-title{
+        height: .88rem;
+        background: #e4e4e4;
+        display: flex;
+        padding:0 .32rem;
+        align-items: center;
+        font-size: .28rem;
+        color: #333;
+    }
+    .TheOdds-list{
+        height: .88rem;
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        border-bottom: 1px solid #e4e4e4;
+        padding: 0 .32rem;
+        background: #fff;
+    }
+    .TheOdds-list-left,.TheOdds-list-right{
+        width: 50%;
+        height: 100%;
+    }
+    .TheOdds-list-left{
+        font-size: .32rem;
+        color: #333;
+        display: flex;
+        align-items: center;
+    }
+    .TheOdds-list-right{
+        font-size: .26rem;
+        color: #333;
+        display: flex;
+        justify-content: flex-end;
+        align-items: center;
+    }
+    .TheOdds-list-right-num{
+        width: 1.07rem;
+        height: .76rem;
+        border: 1px solid #e4e4e4;
+        border-radius: .1rem;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        font-weight: bold;
+    }
+    .active{
+        background: #e4e4e4;
+    }
+</style>

+ 13 - 0
vue_sports/.svn/pristine/1c/1c44d115e76735a2eaf310e25c0882a0c443fe3e.svn-base

@@ -0,0 +1,13 @@
+<template>
+    <div>
+        <span>篮球比赛</span>
+    </div>
+</template>
+<script>
+export default {
+    name:'BasketComponents'
+}
+</script>
+<style  scoped>
+
+</style>

+ 117 - 0
vue_sports/.svn/pristine/1c/1c6f478fb6e7ec4d94f9ac115c205b1e3b12b983.svn-base

@@ -0,0 +1,117 @@
+<template>
+  <div>
+    <div class="tit"> 
+        <span style="font-size:.3rem;color:#fff; font-weight: bold;">{{title}}</span>
+    </div>
+            <div v-if="noData">
+      <NotOpend :title="this.info"/>
+    </div>
+    <div class="charBox">
+      <div  v-for="item in list" class="details">
+        <div>
+          <span>{{item.name_chinese}}</span>
+        </div>
+        <div class="matchDtls">
+          <div>
+            <span>{{item.home_team}}</span>
+            <div>
+              <span>{{item.match_date}}</span>
+            </div>
+          </div>
+          <div>
+            <span>{{item.guest_team}}</span>
+            <div>
+              <span>{{item.match_time}}</span>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+
+  </div>
+</template>
+<script>
+import NotOpend from "@/components/StNotOpend";
+export default {
+  name:'',
+  components:{NotOpend},
+  data(){
+    return{
+      title:'特色赛事',
+      list:'',
+       noData: false,
+      info: "暂无相关特色赛事",
+    }
+  },
+  mounted() {
+     this.$store.dispatch('GETSHOW',true);
+    this.$http.get(this.$ports.home.highMatch).then(res =>{
+      console.log('highMatch',res)
+      if(res.data.status == 1 && res.data.data.matchData.length > 0){
+        
+        this.list = res.data.data.matchData;
+        this.title = res.data.data.title;
+        this.noData = false;
+         this.$store.dispatch('GETSHOW',false);
+      }else{
+        this.noData = true;
+          this.$store.dispatch('GETSHOW',false);
+      }
+    })
+  },
+};
+</script>
+<style scoped lang=""> 
+.charBox {
+  margin-top: 0.24rem;
+  text-align: left;
+  background: #f8f8f8;
+  padding:0 0.3rem;
+  margin: 0 auto;
+  padding-top: 0.12rem;
+}
+.tit {
+  padding: 0.24rem 0;
+  padding:0 0.3rem;
+  background: #a0a0a0;
+  font-size: 0.32rem;
+  line-height: 0.88rem;
+  height: 0.88rem;
+  color: #000000;
+}
+.details {
+  padding: 0.25rem 0.31rem;
+  background: #dcdcdc;
+  border-radius: 0.08rem;
+  margin-bottom: .2rem;
+}
+.details div span {
+  font-size: 0.28rem;
+  color: #F76649;
+}
+.matchDtls {
+  margin-top: 0.12rem;
+}
+.matchDtls div {
+  position: relative;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+.matchDtls div span {
+  color: #333333;
+  font-size: 0.28rem;
+}
+.matchDtls div div span {
+  font-size: 0.24rem;
+}
+.matchDtls i {
+  display: inline-block;
+  width: 0.08rem;
+  height: 0.08rem;
+  position: absolute;
+  right: 0;
+  top: 0;
+  background: #000;
+}
+</style>

+ 221 - 0
vue_sports/.svn/pristine/1f/1fa556c558bcf73551b35cd5151f8b98a7cb890e.svn-base

@@ -0,0 +1,221 @@
+<template>
+  <div>
+    <div v-if="isDisplay">
+      <yd-accordion>
+        <!-- 组件标题 -->
+        <yd-accordion-item class="Match-game" title="总进球数" open>
+          <div v-for="item in data" :key="item.id" class="list-row" v-if="item.odds_code !='half'" >
+              <span class="The-club">{{ item.condition }}</span>
+              <span
+                :class="item.isTrue ? 'active The-club-box' : 'The-club-box'"
+                @click="bettingBtn(item.id,item.condition,item.odds)"
+              >{{ item.odds }}</span>
+            <!-- </div> -->
+          </div>
+        </yd-accordion-item>
+      </yd-accordion>
+      <yd-accordion>
+        <!-- 组件标题 -->
+        <yd-accordion-item class="Match-game" title="总进球数-上半场" open>
+          <div v-for="item in data" :key="item.id" class="list-row" v-if="item.odds_code =='half'" >
+              <span class="The-club">{{ item.condition }}</span>
+              <span
+                :class="item.isTrue ? 'active The-club-box' : 'The-club-box'"
+                @click="bettingBtn(item.id,item.condition,item.odds)"
+              >{{ item.odds }}</span>
+            <!-- </div> -->
+          </div>
+        </yd-accordion-item>
+      </yd-accordion>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  //总进球数
+  data() {
+    return {
+      title: "total_goal",
+      data: [],
+      home_team:'',//主队
+      guest_team:'',//客队
+      score:'0,0',//比分
+      isDisplay:false,//是否显示
+      betting: [], //获取vuex本组件类已投注倍率数据集合
+      dataNum: 10000 //对应的数据的下标
+    };
+  },
+  methods: {
+  //玩法投注
+		bettingBtn(id,name,odds,condition='',bettingTime='') {
+      let _this = this;
+      let bettingInfo = {
+        id,
+        home_team:this.home_team,
+        guest_team:this.guest_team,
+        name,
+        odds,
+        condition,
+        ganame:this.title,
+        score:this.score,
+        bettingTime,
+
+      }
+			//调用玩法投注公共方法
+			this.$public.bettingFunction(this.betting,bettingInfo,this.data,this.$store.getters.getBetting,this.title,this.dataNum,
+				function(res, type) {
+					_this.$set(res, "isTrue", type);
+				},
+				function(data, val) {
+				    _this.$store.dispatch("BETTING", []);
+          _this.$store.dispatch("BETTING", data ? data : val);
+          if(_this.$store.getters.getIsBetting) return false
+          _this.$store.dispatch("ISBETTING",true)
+				}
+			);
+		}
+  },
+   /**
+   * 计算属性
+   */
+  computed: {
+    /*------------------------------------------------------------ */
+    getUserIcons() {
+      return this.$store.getters.getGameRatio;
+    },
+    /*------------------------------------------------------------ */
+    getBetting() {
+      return this.$store.getters.getBetting;
+    },
+     //获取投注框删除的投注信息
+    getDeleteType(){
+      return this.$store.getters.getDeleteType;
+    },
+  },
+  /**
+   * 监听器
+   */
+  watch: {
+    /*------------------------------------------------------------ */
+    getUserIcons(val) {
+      //console.log("更新数据", val);
+      if (!val) return false;
+      let _this =this;
+      this.home_team = val.home_team;
+      this.guest_team = val.guest_team;
+      val.oddsData.forEach(res => {
+        if (res[0].p_code == this.title) {
+          this.isDisplay = true;
+          res.forEach((e)=>{
+            if(e.odds_code.startsWith('half')){
+              e.odds_code = 'half';
+            }
+          })
+          this.data = res;
+        }
+      });
+      this.$public.getBettingId(this.$store.getters.getBetting,this.title,function(data,index){
+        _this.betting = data;
+        _this.dataNum = index;
+      });
+      // console.log('总进球数',this.dataNum);
+      if (this.dataNum != 10000) {
+        this.betting.forEach(res => {
+          this.data.forEach((e, index) => {
+            if (res.id == e.id) {
+              this.$set(e, "isTrue", true);
+            }
+          });
+        });
+      }
+    },
+    /*------------------------------------------------------------ */
+    //获取已投注信息
+    getBetting(val) {
+      let _this =this;
+      this.$public.getBettingId(val,this.title,function(data,index){
+        _this.betting = data;
+        _this.dataNum = index;
+      });
+    },
+      //监听投注框删除处理
+    getDeleteType(val){
+        this.data.forEach(e =>{
+          if(val =='all'){
+            this.$set(e, "isTrue", false);
+          }else{
+            if(e.id == val){
+              this.$set(e, "isTrue", false);
+            }
+          }
+        })
+    }
+  }
+};
+</script>
+<style scoped>
+div /deep/ .yd-accordion-head-arrow:after {
+  border: none;
+  width: 0.5rem;
+  height: 0.5rem;
+  background: url(../../assets/st-imges/xiangxia.png) no-repeat;
+  background-size: 100% 100%;
+}
+div /deep/ .yd-accordion-head,
+div /deep/ .yd-accordion-head-content,
+div /deep/ .yd-accordion-title {
+  height: 0.88rem;
+  font-size: 0.28rem;
+  color: #FEFEFE;
+  background: #a0a0a0;
+}
+div /deep/ .yd-accordion-head {
+  padding: 0 0.32rem;
+}
+/* 
+.Match-game-stat {
+  position: absolute;
+  right: 1.35rem;
+  color: #fd8f26;
+  font-size: 0.23rem;
+}*/
+.Match-game {
+  position: relative;
+}
+.list-row {
+  display: flex;
+  justify-content: space-between;
+  height: 0.87rem;
+  background: #f8f8f8;
+  border-bottom: 1px solid #e4e4e4;
+  align-items: center;
+  padding: 0 0.32rem;
+}
+
+.The-club {
+  font-size: 0.28rem;
+}
+.The-club-box {
+  display: inline-block;
+  display: flex;
+  flex-wrap: wrap;
+  align-items: center;
+  justify-content: center;
+  width: 1.07rem;
+  height: 0.76rem;
+  font-size: 0.24rem;
+  padding: 0.1rem;
+  border: 2px solid #cecece;
+  border-radius: 0.1rem;
+  margin-right: 0.1rem;
+} 
+.active {
+  background: #f76649;
+  color: #f4f4f4;
+  padding: 0.1rem;
+  border: 2px solid #f76649;
+}
+.active i {
+  color: #f4f4f4 !important;
+}
+</style>

+ 76 - 0
vue_sports/.svn/pristine/20/2050ff525ea40b8466a79ddb5350221c677070b8.svn-base

@@ -0,0 +1,76 @@
+<template>
+    <div >
+        <div class = "lod">
+          <Loading></Loading>
+        </div>
+        <SportsHead></SportsHead>
+        <ScrollNav></ScrollNav>
+        <BallDisc></BallDisc>
+        <Characteristic></Characteristic>
+        <Sports></Sports>
+        <LinkFooter></LinkFooter>
+        <div v-if="isshow==true" class="login"><Login></Login></div>
+        <div v-else-if="rgShow==true"><register></register></div>
+    </div>
+</template>
+<script>
+import '../../css/index.css';
+import  BallDisc from '../../components/StBallDisc';
+import  ScrollNav from '../../components/StScrollNav';
+import  SportsHead from '../../components/StSportsHead';
+import  LinkFooter from '../../components/StLinkFooter';
+import Characteristic from'../../components/StCharacteristic';
+import Loading from '../../components/StLoading';
+import Sports from'../../components/StSports';
+import Login from '../Login/index/StLogin'
+import register from '../Login/index/register'
+export default {
+    name:'Home',
+    components:{
+        SportsHead,
+        ScrollNav,
+        BallDisc,
+        LinkFooter,
+        Characteristic,
+        Sports,
+        Loading,
+        Login,
+        register
+    },
+    data(){
+        return{
+            data:'',
+            isshow:false,
+            rgShow:false,//隐藏注册框
+        }
+    },
+    computed: {
+        Isshow:function(){
+            return {
+                isshow_code:this.$store.state.isShow,
+                rgShow:this.$store.state.rgShow
+            }
+        }
+    },
+    watch: {
+        Isshow(obj){
+            this.isshow=obj.isshow_code;
+            this.rgShow = obj.rgShow;
+        }
+    },
+}
+</script>
+<style scoped>
+    .lod{
+        z-index: 999;
+        position: fixed;
+        width: 100%;
+    }
+    .login{
+        z-index: 99999;
+        position: fixed;
+        top: 0;
+    }
+</style>
+
+

+ 180 - 0
vue_sports/.svn/pristine/20/20d923fcdbefcbf0908509e8aed4b9a37772a578.svn-base

@@ -0,0 +1,180 @@
+<template>
+    <div>
+        <yd-accordion>
+        <yd-accordion-item title="波胆-上半场" open >
+        <div>
+            <div class="rulesName row">
+                <div>哈萨克斯坦</div>
+                <div>和局</div>
+                <div>马德里体育会</div>
+            </div>
+            <div class="row grids">
+                <div  class="column center" >
+                    <div class="gridsDiv row center" v-for="(item,index) in arr " :key="item.id" >
+                         <!-- :class=" [item.isTrue ? 'trueSelected':''] " -->
+                        <div v-if="item.odds !=-1 " >
+                            <div class="column average  minGrid " :class=" [item.isTrue ?'trueSelected' :'']" @click="btnChoose('a',index,item.id)">
+                                <span style="color:#FD8F26 ">{{item.score}}</span>
+                                <span>{{item.odds}}</span>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div  class="column center middle"  >
+                    <div class="gridsDiv row center" v-for="(item,index) in arr1 " :key="item.id" >
+                        <div v-if="item.odds !=-1 " >
+                            <div class="column average  minGrid " :class=" [item.isTrue ? 'trueSelected' :''] " @click="btnChoose('b',index,item.id)">
+                                <span style="color:#FD8F26 ">{{item.score}}</span>
+                                <span>{{item.odds}}</span>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div  class="column center" >
+                    <div class="gridsDiv row center" v-for="(item,index) in arr2 " :key="item.id" >
+                        <div v-if="item.odds !=-1 " >
+                            <div class="column average  minGrid" :class=" [item.isTrue ? 'trueSelected' :''] " @click="btnChoose('c',index,item.id)">
+                                <span style="color:#FD8F26 ">{{item.score}}</span>
+                                <span>{{item.odds}}</span>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div style="background:#f8f8f8;">
+                <div class="row rightAlignment center" style="height: 0.88rem;">
+                    <span>其他比分:</span><div class="minGrid minGridAll">51</div>
+                </div>
+            </div>
+        </div>
+        </yd-accordion-item>
+    </yd-accordion>
+    </div>
+</template>
+<script>
+import '../css/index.css';
+import Vue from 'vue';
+import {Accordion, AccordionItem} from 'vue-ydui/dist/lib.rem/accordion';
+Vue.component(Accordion.name, Accordion);
+Vue.component(AccordionItem.name, AccordionItem);
+export default {
+    // 波胆上半场
+    name:'WaveBladder',
+    data(){
+        return{
+            arr1:[{id:0,score:'3-1',odds:1.4},
+            {id:1,score:'3-1',odds:1.4},
+            {id:2,score:'2-1',odds:1.0},
+            {id:3,score:'2-1',odds:0.75},
+            {id:4,score:'1-1',odds:0.65},
+            {id:5,score:'1-1',odds:0.65},
+            {id:6,score:'1-0',odds:0.86},
+            {odds:-1},
+            {odds:-1},
+            {odds:-1},
+            {odds:-1},
+            {odds:-1}],
+            arr2:[{id:0,score:'3-1',odds:1.4},
+            {id:1,score:'3-1',odds:1.4},
+            {id:2,score:'2-1',odds:1.0},
+            {id:3,score:'2-1',odds:0.75},
+            {id:4,score:'1-1',odds:0.65},
+            {id:5,score:'1-1',odds:0.65},
+            {id:6,score:'1-0',odds:0.86},
+            {id:7,score:'1-0',odds:0.86},
+            {id:8,score:'1-0',odds:0.86},
+            {id:9,score:'0-0',odds:0.54},
+            {id:10,score:'0-0',odds:0.54},
+            {id:11,score:'0-0',odds:0.54}],
+            arr:[{id:0,score:'3-1',odds:1.4},
+            {id:1,score:'3-1',odds:1.4},
+            {id:2,score:'2-1',odds:1.0},
+            {id:3,score:'2-1',odds:0.85},
+            {id:4,score:'1-1',odds:0.85},
+            {id:5,score:'1-1',odds:0.85},
+            {id:6,score:'1-0',odds:0.76},
+            {id:7,score:'1-0',odds:0.76},
+            {id:8,score:'1-0',odds:0.76},
+            {id:9,score:'0-0',odds:0.50},
+            {odds:-1},{odds:-1}]
+        }
+    },
+    methods:{
+       btnChoose:function(e,index,id){
+            let number = index;
+            if(e=='a'){
+                this.$set(this.arr[number],'isTrue',this.arr[number].isTrue == true? false: true);
+            }else if(e =='b'){
+                this.$set(this.arr1[number],'isTrue',this.arr1[number].isTrue == true? false: true);
+            }else if(e =='c'){
+                console.log(this.arr2);
+                this.$set(this.arr2[number],'isTrue',this.arr2[number].isTrue == true? false: true);
+            }
+        }
+    },
+    watch:{
+        arr1:function(e){
+            console.log(e);
+        }
+    }
+}
+</script>
+<style scoped>
+    div /deep/ .yd-accordion-head{
+        padding: 0 0.32rem;
+        background: #F8F8F8;
+    }
+    div /deep/ .yd-accordion-title {
+        color: #333333;
+        font-size: 0.32rem;
+    }
+    div /deep/ .yd-accordion-head-arrow:after {
+        border: none;
+        width: 0.5rem;
+        height: 0.5rem;
+        background: url("../../assets/st-imges/xiangxia.png") no-repeat;
+        background-size:100% 100%;
+    }
+    .grids div {
+         background:#f8f8f8 ;
+    }
+    .middle{
+        border-left: 1px solid #E4E4E4;
+        border-right: 1px solid #E4E4E4;
+    }
+    .rulesName{
+        font-size: 0.28rem;
+        background:#F8F8F8 ;
+    }
+    .gridsDiv,.rulesName div {
+        border-bottom: 1px solid #E4E4E4;
+        height: 0.88rem;
+        line-height: 0.88rem;
+        text-align: center;
+        width: 2.49rem;
+    }
+    .minGrid{
+        width:1.07rem ;
+        height:0.76rem;
+        border: 2px solid #cecece;
+        border-radius: 0.1rem;
+    }
+    .minGrid span{
+        font-size: 0.24rem;
+        padding: 0.08rem 0;
+        line-height: 0;
+    }
+    .minGridAll{
+        margin-right: 0.69rem;
+        line-height: 0.76rem;
+        text-align: center;
+    }
+    .trueSelected{
+        background: #F76649 !important;
+        border: 2px solid #F76649
+    }
+     .trueSelected span{
+         color: #f4f4f4 !important;
+     }
+</style>
+

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
vue_sports/.svn/pristine/21/21eac2679471d058b1440c5e486df00423e090d3.svn-base


BIN
vue_sports/.svn/pristine/22/22b70d8cef87d09133bb905a1016b88a46b7c8f8.svn-base


+ 28 - 0
vue_sports/.svn/pristine/23/235d0e089b31a0632f50cc5db233793093253bf8.svn-base

@@ -0,0 +1,28 @@
+<template>
+    <div>
+        <SportsHead></SportsHead>
+        <Serch></Serch>
+        <Match></Match>
+        <LinkFooter></LinkFooter>
+    </div>
+</template>
+<script>
+import  SportsHead from '../../../components/StSportsHead';
+import  Serch from '../../../components/StSerch';
+import  Match from '../../../components/StMatch';
+import  LinkFooter from '../../../components/StLinkFooter';
+import  Schedule from '../../../components/StSchedule';
+export default {
+    name:'Home',
+    components:{
+        SportsHead,
+        Serch,
+        Match,
+        LinkFooter,
+        Schedule
+    }
+}
+</script>
+<style  scoped>
+
+</style>

+ 54 - 0
vue_sports/.svn/pristine/23/23665af6f1b5aabbcff80f6f9bc5e29490a0d3e7.svn-base

@@ -0,0 +1,54 @@
+'use strict'
+const chalk = require('chalk')
+const semver = require('semver')
+const packageConfig = require('../package.json')
+const shell = require('shelljs')
+
+function exec (cmd) {
+  return require('child_process').execSync(cmd).toString().trim()
+}
+
+const versionRequirements = [
+  {
+    name: 'node',
+    currentVersion: semver.clean(process.version),
+    versionRequirement: packageConfig.engines.node
+  }
+]
+
+if (shell.which('npm')) {
+  versionRequirements.push({
+    name: 'npm',
+    currentVersion: exec('npm --version'),
+    versionRequirement: packageConfig.engines.npm
+  })
+}
+
+module.exports = function () {
+  const warnings = []
+
+  for (let i = 0; i < versionRequirements.length; i++) {
+    const mod = versionRequirements[i]
+
+    if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
+      warnings.push(mod.name + ': ' +
+        chalk.red(mod.currentVersion) + ' should be ' +
+        chalk.green(mod.versionRequirement)
+      )
+    }
+  }
+
+  if (warnings.length) {
+    console.log('')
+    console.log(chalk.yellow('To use this template, you must update following to modules:'))
+    console.log()
+
+    for (let i = 0; i < warnings.length; i++) {
+      const warning = warnings[i]
+      console.log('  ' + warning)
+    }
+
+    console.log()
+    process.exit(1)
+  }
+}

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
vue_sports/.svn/pristine/23/23c50241d8d139d47e5772878958b4fcfd06fd9b.svn-base


+ 565 - 0
vue_sports/.svn/pristine/25/250a5f97598b8a3e10716bee5692e2cfbf46b776.svn-base

@@ -0,0 +1,565 @@
+<template>
+  <div>
+      <div v-if="noData">
+      <NotOpend :title="this.info"/>
+    </div>
+    <!-- 让球&大小 -->
+    <div class="match" v-if="isShow && rShow">
+      <div v-for="(items,index) in letBallData" :key="items.id" class="mg">
+        <!-- <div v-for="items in list[index]" :key="items.id"> -->
+        <div class="row allAlignment  haderBox center">
+          <span>{{items.leagueName}}</span>
+          <div class="row Match-title-num">
+            <span>{{items.matchNum}}</span>
+          </div>
+        </div>
+        <div class="Match-box">
+          <div v-for="(itemList,index) in items.matchData" :key="itemList.id"   @click="matchInfo(itemList.match_id)">
+          
+              <div class="row allAlignment Match-box-top">
+                <div class="Match-box-top-left">
+                  <span>{{itemList.match_date}}</span>
+                  <span class="texttop">{{itemList.match_time}}</span>
+                </div>
+                <div class="Match-box-top-right row">
+                  <span style="margin-right: .1rem;" class="Match-box-top-num">{{itemList.tag}}</span>
+                  <span style="margin-right: .1rem;">让球</span>
+                  <span style="margin-right: .1rem;">大小</span>
+                </div>
+              </div>
+              <div class="row allAlignment center listbox">
+                <div class="column average name-box">
+                  <div>{{itemList.home_team}}</div>
+                  <div>{{itemList.guest_team}}</div>
+                </div>
+                <div class="Match-list-box row item-center average">
+                  <div v-for="(odds,i) in itemList.oddsData[0]" :key="odds.id" class="match-list">
+                    <div
+                      @click.stop="isclick(index,i)"
+                      class="column center"
+                      :class="items.istrue == i ?'active':''"
+                    >
+                      <span style="color:#FD8F26">{{odds.condition}}</span>
+                      <span>{{odds.odds}}</span>
+                    </div>
+                  </div>
+                </div>
+      
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <!-- 1x2 -->
+    <div v-if="!isShow && !ishow && rShow">
+      <div v-for="(item,index) in letBallData" :key="item.id" @click="betting()">
+        <div class="row allAlignment haderBox center">
+          <span>{{item.leagueName}}</span>
+          <div class="Match-title-num">
+            <span>{{item.matchNum}}</span>
+          </div>
+        </div>
+        <div v-for="(itemList,$index) in item.matchData" :key="itemList.id"   @click="matchInfo(itemList.match_id)">
+ 
+            <div class="box">
+              <div class="row allAlignment item-center top-box">
+                <span>
+                  <i>{{itemList.match_date}}</i>
+                  <b style="color:#F76649;font-weight: normal;">{{itemList.match_time}}</b>
+                </span>
+                <span class="top-num">{{itemList.tag}}</span>
+              </div>
+            </div>
+            <div class="box-bottom">
+              <div class="box row item-center main-box">
+                <span v-if="itemList.home_score" class="num-box" style="color:#eb921e">{{itemList.home_score}}</span>
+                &nbsp;&nbsp;{{itemList.home_team}}
+              </div>
+              <div class="box row item-center main-box">
+                <span v-if="itemList.guest_score" class="num-box" style="color:#eb921e">{{itemList.guest_score}}</span>
+                <!-- <span v-if="itemList.guest_score? itemList.guest_score:'0'" class="num-box" style="color:#eb921e">{{itemList.guest_score}}</span> -->
+                &nbsp;&nbsp;{{itemList.guest_team}}
+              </div>
+              <div class="footBox">
+                <div
+                  class="box row allAlignment bottom-box center"
+                  v-for="(odds,idx) in itemList.oddsData[1]"
+                  :key="odds.id"
+                >
+                  <div
+                    class="item-center bottom-num"
+                    :class="item.istrueA==true?'active':''"
+                    @click.stop="isClick(idx,1)"
+                  >
+                    <p style="color:#eb921e">{{odds.condition}}</p>
+                    <p>{{odds.odds}}</p>
+                  </div>
+                </div>
+       
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <!-- 独赢盘 -->
+      <div class="match" v-if="!isShow && ishow && rShow">
+        <div v-for="(items,index) in letBallData" :key="items.id" class="mg">
+        <!-- <div v-for="items in list[index]" :key="items.id"> -->
+        <div class="row allAlignment letBallBox center">
+          <span>{{items.leagueName}}</span>
+          <div class="row Match-title-num">
+            <span>{{items.matchNum}}</span>
+          </div>
+        </div>
+        <div class="Match-box">
+          <div v-for="(itemList,index) in items.matchData" :key="itemList.id" class="Match-box"   @click="matchInfo(itemList.match_id)">
+        
+              <div class="row allAlignment Match-box-top">
+                <div class="Match-box-top-left">
+                  <span>{{itemList.match_date}}</span>
+                  <span class="texttop">{{itemList.match_time}}</span>
+                </div>
+                <div class="Match-box-top-right row">
+                  <span style="margin-right: .1rem;" class="Match-box-top-num">{{itemList.tag}}</span>
+                  <!-- <span style="margin-right: .1rem;">让球</span> -->
+                  <span style="margin-right: .1rem;">独赢盘</span>
+                </div>
+              </div>
+              <div class="row allAlignment center listbox">
+                <div class="column average name-box">
+                  <div>{{itemList.home_team}}</div>
+                  <div>{{itemList.guest_team}}</div>
+                </div>
+                <div class="Match-list-box row item-center average">
+                  <div v-for="(odds,i) in itemList.oddsData[0]" :key="odds.id" class="match-list">
+                    <div
+                      @click.stop="isclick(index,i)"
+                      class="column center"
+                      :class="items.istrue==i?'active':''"
+                    >
+                      <span style="color:#FD8F26">{{odds.condition}}</span>
+                      <span>{{odds.odds}}</span>
+                    </div>
+                  </div>
+         
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <!-- 如过是网球则显示 -->
+        <div class="match" v-if="isShow && !rShow">
+      <div v-for="(items,index) in letBallData" :key="items.id" class="mg">
+        <!-- <div v-for="items in list[index]" :key="items.id"> -->
+        <div class="row allAlignment letBallBox center">
+          <span>{{items.leagueName}}</span>
+          <div class="row Match-title-num">
+            <span>{{items.matchNum}}</span>
+          </div>
+        </div>
+        <div class="Match-box">
+          <div v-for="(itemList,index) in items.matchData" :key="itemList.id" class="Match-box"   @click="matchInfo(itemList.match_id)">
+        
+              <div class="row allAlignment Match-box-top">
+                <div class="Match-box-top-left">
+                  <span>{{itemList.match_date}}</span>
+                  <span class="texttop">{{itemList.match_time}}</span>
+                </div>
+                <div class="Match-box-top-right row">
+                  <span style="margin-right: .1rem;" class="Match-box-top-num">{{itemList.tag}}</span>
+                  <span style="margin-right: .1rem;">独赢盘</span>
+                  <span style="margin-right: .1rem;">让盘</span>
+                </div>
+              </div>
+              <div class="row allAlignment center listbox">
+                <div class="column average name-box">
+                  <div>{{itemList.home_team}}</div>
+                  <div>{{itemList.guest_team}}</div>
+                </div>
+                <div class="Match-list-box row item-center average">
+                  <div v-for="(odds,i) in itemList.oddsData[0]" :key="odds.id" class="match-list">
+                    <div
+                      @click.stop="isclick(index,i)"
+                      class="column center"
+                      :class="items.istrue ? 'active':''"
+                    >
+                      <span style="color:#FD8F26">{{odds.condition}}</span>
+                      <span>{{odds.odds}}</span>
+                    </div>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+      </div>
+    </div>
+    <div class="BettingWindow" v-if="isWindow">
+      <BettingWindow />
+    </div>
+
+  </div>
+</template>
+<script>
+import Bus from "../assets/bus.js";
+import NotOpend from "@/components/StNotOpend";
+import BettingWindow from '@/components/StBettingWindow';
+export default {
+  props: ["gameCode", "name",'ishow'],
+  components:{NotOpend,BettingWindow},
+  data() {
+    return {
+      show: false, //暂时状态
+      isShow: true,
+      noData: true, //显示暂无数据
+      rShow:true,//是否为棒球与网球,是则不显示
+      info: "没有相关比赛信息",
+      status: false,
+      isWindow :false,//投注组件隐藏
+      isAjax:false,//开关
+      list:[],
+      letBallData: "" ,//让球大小和1X2数据
+    };
+  },
+  /**
+   * 函数方法
+   */
+  methods: {
+    matchInfo(id){
+      this.$router.push({path:'/StRollBallBettingPage',query:{gameCode: this.$store.getters.getBallId,number:1,home:true}});
+      this.$store.dispatch("MACTH_ID",id);
+    },
+    //打开联赛投注页面
+    goMatchInfo: function(leagueId, sessionId) {
+      //console.log(leagueId, sessionId);
+      this.$store.dispatch("GETSHOW", true);
+      Bus.$on("show", data => {
+        this.isShow = data;
+      });
+    },
+    getAjax: function(game_code,type_code) {
+      this.$store.dispatch('GETSHOW',true);
+      if(!game_code || !type_code) return false;
+      this.$http
+        .get(this.$ports.match.matchState, { 
+          game_code,
+          type_code
+        })
+        .then(res => {
+          this.isAjax = true
+          if(res.data.status == 1 && res.data.data.length >0  && res.data != null){
+            this.letBallData = res.data.data;
+          // console.log('  this.letBallData',  this.letBallData)
+           this.noData = false;
+          }else{
+            //  是否显示组件
+            this.noData = true;
+            //console.log('data',this.noData)
+            // 每次更新数据没有数据时则置空。
+             this.letBallData = [];
+            
+          }
+          // 状态值数据更改
+          this.$store.dispatch('GETSHOW',false);
+        });
+    },
+    isClick() {
+            if(this.$store.getters.getIsBetting==true){
+           return false
+       }
+      
+        this.$store.dispatch('ISBETTING',true)
+      // this.$set(this.letBallData.matchData[1].oddsData[1][i], "istrue", (this.letBallData.list[i].istrue = num));
+    },
+    betting(){
+      this.isWindow = true;
+    },
+    // 点击事件确认选中
+    isclick(index, num) {
+       if(this.$store.getters.getIsBetting==true){
+           return false
+       }
+      
+        this.$store.dispatch('ISBETTING',true)
+    }
+  },
+  /**
+   * 计算属性
+   */
+  computed: {
+    getInfo: function() {
+      // 监听vuex状态值的改变
+      this.goMatchInfo();
+ 
+      return {game_code: this.$store.getters.getBallId,type_code:this.$store.getters.getActivity}
+    },
+     IsWindow(){
+      return  this.$store.getters.getIsBetting
+    }
+  },
+  watch: {
+    getInfo(obj) {
+         if(this.$store.getters.getActivity == "StSoon" || this.$store.getters.getActivity == "StRollBall" ){
+        if(this.isAjax ){
+        this.getAjax(obj.game_code,obj.type_code);
+        }
+      }
+      if(obj.game_code == 'wq'){
+          this.rShow = false;
+      }else{
+        this.rShow = true;
+      }
+    },
+      IsWindow(val){
+       this.isWindow = val;
+    }
+  },
+  mounted(){
+    this.getAjax(this.$store.getters.getBallId,this.$store.getters.getActivity);
+  }
+};
+</script>
+<style scoped>
+.yd-cell-box .yd-cell {
+  z-index: 99;
+  border-radius: 0.2rem;
+}
+.matchBox {
+  background: #f9f9f9;
+  padding: 0.27rem 0.34rem 0 0.32rem;
+}
+.match .tit {
+  display: flex;
+  justify-content: space-between;
+  font-size: 0.32rem;
+  margin-bottom: 0.3rem;
+}
+.match .list {
+  overflow: hidden;
+  transition: all 0.3s cubic-bezier(0.4, 0.6, 0.2, 1);
+}
+.match .list div {
+  background: #dcdcdc;
+  width: 100%;
+  height: 0.88rem;
+  padding: 0.26rem 0.56rem 0.3rem 0.3rem;
+  display: flex;
+  justify-content: space-between;
+  border-radius: 0.08rem;
+  margin-bottom: 0.12rem;
+}
+.match .list span {
+  color: #333333;
+  font-size: 0.28rem;
+}
+.match .list .num {
+  width: 0.4rem;
+  height: 0.4rem;
+  display: inline-block;
+  line-height: 0.4rem;
+  text-align: center;
+  color: #f5f5f5;
+  border-radius: 50%;
+  font-size: 0.2rem;
+  background: #f76649;
+}
+.yd-accordion {
+  background: transparent;
+}
+.match .list div:nth-last-child(1) {
+  margin-bottom: 0.34rem;
+}
+div /deep/ .yd-accordion-head,
+div /deep/ .yd-accordion-head-content,
+div /deep/ .yd-accordion-title,
+div /deep/ .yd-accordion-title-full {
+  height: 0.3rem;
+}
+div /deep/ .yd-accordion-title {
+  min-height: 0;
+  font-size: 0.28rem;
+}
+div /deep/ .yd-accordion-head {
+  margin-bottom: 0.3rem;
+  border: none;
+}
+.list-box {
+  border: 2px solid #cecece;
+  border-radius: 0.2rem;
+}
+div /deep/ .yd-accordion-head:after {
+  height: 0px;
+}
+div /deep/ .yd-accordion-head-arrow:after {
+  border: none;
+  width: 0.4rem;
+  height: 0.4rem;
+  background: url("../assets/st-imges/xiangxia.png") no-repeat;
+  background-size: 0.4rem 0.4rem;
+}
+/* 1x2 */
+.top-box {
+  height: 0.44rem;
+  font-size: 0.24rem;
+  background: #fff;
+  border-bottom: 1px solid #e4e4e4;
+}
+.box-bottom {
+  /* height: 2.9rem;  */
+}
+.top-num {
+  display: inline-block;
+  width: 0.64rem;
+  height: 0.44rem;
+  line-height: 0.44rem;
+  color: #000000;
+  text-align: center;
+  background: #ebebeb;
+  font-size: 0.24rem;
+}
+.box {
+  padding: 0 0.32rem;
+  background: #fff;
+}
+.Match-title-num {
+  width: 0.46rem;
+  height: 0.46rem;
+  line-height: 0.46rem;
+  text-align: center;
+  background: #f76649;
+  font-size: 0.26rem;
+  border-radius: 50%;
+  color: #e4e4e4;
+}
+.haderBox {
+  padding: 0 0.32rem;
+  height: 0.88rem;
+  font-size: 0.32rem;
+  background: #f8f8f8;
+}
+.main-box {
+  height: 0.9rem;
+  background: #fff;
+  font-size: 0.28rem;
+}
+.bottom-box {
+  height: 1.1rem;
+  background: #fff;
+  font-size: 0.24rem;
+}
+.bottom-box div {
+  width: 1.07rem;
+  height: 0.76rem;
+  border: 2px solid #cecece;
+  border-radius: 0.1rem;
+  font-size: 0.24rem;
+}
+.bottom-num {
+  padding: 0.1rem;
+  text-align: center;
+}
+.active {
+  background: #f76649;
+  border: 2px solid #f76649 !important;
+}
+.active > p {
+  color: #e4e4e4 !important;
+}
+.num-box {
+  width: 0.66rem;
+  height: 0.34rem;
+  background: #f76649;
+  border-radius: 0.17rem;
+  color: #f5f5f5 !important;
+  line-height: 0.34rem;
+  text-align: center;
+}
+.footBox {
+  display: flex;
+  flex-wrap: wrap;
+  align-items: center;
+}
+.footBox .box {
+  width: 33%;
+  text-align: center;
+}
+/* 让球&大小 */
+.letBallBox {
+  padding: 0 0.32rem;
+  height: 0.88rem;
+  font-size: 0.28rem;
+  background: #f4f4f4;
+}
+
+.mg {
+  margin-bottom: 0.1rem;
+}
+.Match-title-num {
+  width: 0.46rem;
+  height: 0.46rem;
+  align-items: center;
+  justify-content: center;
+  line-height: 0.46rem;
+  text-align: center;
+  background: #f76649;
+  font-size: 0.2rem;
+  border-radius: 50%;
+  color: #f5f5f5;
+}
+
+.Match-box-top-right > span {
+  width: 1.07rem;
+  text-align: center;
+}
+.listbox{
+  padding: 0 .32rem;
+}
+.name-box {
+  height: 1.76rem;
+  width: 3.8rem;
+}
+.Match-box-top {
+  height: 0.44rem;
+  padding: 0 0.32rem;
+  line-height: 0.44rem;
+  background: #DCDCDC;
+  font-size: 0.23rem;
+}
+.Match-box-top-num {
+  width:0.64rem !important;
+  
+  height: 0.44rem;
+  background: #ebebeb;
+  font-size: 0.24rem;
+}
+.texttop{
+  color: #f76649
+}
+.Match-box {
+  padding-top: .12rem;
+  background: #f8f8f8;
+}
+.Match-list-box {
+  width: 35%;
+  height: 1.76rem;
+  flex-wrap: wrap;
+}
+.Match-list-box .match-list div {
+  width: 1.07rem;
+  height: 0.8rem;
+  border: 2px solid #cecece;
+  border-radius: 0.1rem;
+  flex-wrap: wrap;
+}
+.active {
+  background: #e4e4e4;
+}
+/* 模态框样式 */
+.BettingWindow{
+  z-index: 10000;
+  position:fixed;
+  top:0;
+  width: 100%;
+}
+
+</style>

BIN
vue_sports/.svn/pristine/29/29773ba816457eab251845337f3a41ad644f9b76.svn-base


BIN
vue_sports/.svn/pristine/2d/2dcdc1e9f37035620ac2c15d27c2b159677ac0cd.svn-base


+ 166 - 0
vue_sports/.svn/pristine/2f/2fb74901adb5d32b8d3650ce31f0faad7904e73c.svn-base

@@ -0,0 +1,166 @@
+<template lang="">
+    <div class = "foot">
+        <div class = "nav">
+            <div>
+                <ul>
+                    <li><a href = "javascipt:void(0)">其他相关链接</a></li>
+                    <li><a href = "javascript:void(0)">关于我们</a></li>
+                    <li><a href = "javascript:void(0)">网站导览</a></li>
+                    <li><a href = "javascript:void(0)">博彩责任</a></li>
+                    <li><a href = "javascript:void(0)">规则与条款</a></li>
+                    <li><a href = "javascript:void(0)">隐私权政策</a></li>
+                    <li><a href = "javascript:void(0)">代理加盟</a></li>
+                </ul>
+            </div>
+            <div>
+                <ul>
+                    <li><a href = "javascript:void(0)">是否需要帮助?</a></li>
+                    <li><a href = "javascript:void(0)">存款帮助</a></li>
+                    <li><a href = "javascript:void(0)">取款帮助</a></li>
+                    <li><a href = "javascript:void(0)">常见问题</a></li>
+                    <li><a href = "javascript:void(0)">在线客服</a></li>
+                    <li><a href = "javascript:void(0)">联系我们</a></li>
+                </ul>
+            </div>
+        </div>
+        <div class = "pay">
+            <h3 class = "tit">支付方式</h3>
+            <div class = "cont">
+                <span>享受畅通无阻的存提款体验,我们的支付方式快速又安全。 HG3535支持全球主要支付方式!</span>
+            </div>
+            <div class = "payMode">
+                <img style = "width:0.62rem;height:0.35rem" src = "@/assets/st-imges/yinhangqia@2x.png">
+                <img style = "width:1.1rem;height:0.35rem" src = "@/assets/st-imges/zhifubao@2x.png">
+                <div>
+                    <img style = "width:0.28rem;height:0.35rem; vertical-align: middle" src = "@/assets/st-imges/QQ @2x.png">
+                    <span>QQ支付</span>
+                </div>
+                  <div>
+                   <img style = "width:0.38rem;height:0.38rem; vertical-align: middle" src = "@/assets/st-imges/weixin@2x.png">
+                    <span>微信支付</span>
+                </div>
+            </div>
+        </div>
+        <div class = "contact">
+            <h3>联系我们</h3>
+            <div class = "phone">
+                <i :style = "back[0]"></i>
+                <span>客服热线:</span>
+                <span>0063-9958276789</span>
+            </div>
+            <div class = "eMail">
+                <i :style = "back[1]"></i>
+                <span>电邮地址:</span>
+                <span>hg3535.com@gmail.com</span>
+            </div>
+        </div>
+        <div class = "copyright">
+            <span>HG3535属于HG3535有限公司注册</span>
+            <span>版权所有©2019</span>
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    data(){
+        return{
+            back:[
+                {
+                    backgroundImage:"url(" + require("../assets/st-imges/kefu @2x.png") + ")",
+                    backgroundRepeat:'no-repeat',
+                    backgroundSize:'100% 100%'
+                },
+                  {
+                    backgroundImage:"url(" + require("../assets/st-imges/youjian@2x.png") + ")",
+                    backgroundRepeat:'no-repeat',
+                    backgroundSize:'100% 100%'
+                }
+            ]
+        }
+    }
+}
+</script>
+<style scoped>
+    .foot{
+
+        background: linear-gradient(to right bottom,#999999,#565656);
+        padding:0.55rem 2.43rem 0.37rem 0.32rem ;
+        text-align: left;
+        position: relative;
+    }
+    .foot .nav{
+        display: flex;
+        justify-content: space-between;
+        margin-bottom: 0.32rem;
+    }
+    .foot .nav ul li:nth-child(1){
+        margin-bottom: 0.3rem;
+    }
+    .foot .nav ul li:nth-child(1) a{
+        font-size: 0.26rem;
+    }
+    .foot .nav ul li {
+        margin-bottom: 0.32rem;
+    }
+    .foot .nav ul li a{
+        color: #F5F5F5;
+        font-size: 0.2rem;
+    }
+    .foot .pay,.foot .contact{
+        text-align: left;
+        color: #F5F5F5;
+    }
+    .foot .pay .tit,.foot .contact h3{
+        font-size: 0.26rem;
+        margin-bottom: 0.29rem;
+        font-weight: 400;
+    }
+    .foot .pay .cont{
+        margin-bottom : 0.29rem;
+        width: 6.69rem;
+    }
+    .foot .pay span,.foot .contact span{
+        font-size: 0.2rem;
+    }
+    .foot .pay .payMode{
+        display: flex;
+        justify-content: space-between;
+        margin-bottom: 0.62rem;
+    }
+     .foot .pay .payMode span{
+         font-size: 0.2rem;
+         color:#F5F5F5;
+     }
+    .foot .contact .phone{
+        margin-bottom: 0.31rem;
+    }
+    .foot .contact div i{
+        display: inline-block;
+        /* width: 0.3rem;
+        height: 0.3rem; */
+        /* background: #ffffff; */
+        vertical-align: middle;
+        margin-right: 0.14rem;
+    }
+    .copyright{
+        width: 3.31rem;
+        /* position: absolute; */
+        /* right: 0; */
+        margin-top: 0.5rem;
+        margin-left: 1.77rem;
+        text-align: center;
+        font-size: 0.2rem;
+        color: #F5F5F5;
+    }
+    .copyright span:nth-last-child(1){
+        display: block;
+    }
+    .foot .contact div.phone i{
+        width: 0.29rem;
+        height: 0.29rem;
+    }
+     .foot .contact div.eMail i{
+         width: 0.34rem;
+         height: 0.22rem;
+     }
+</style>

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
vue_sports/.svn/pristine/30/303d5ef569a17453517caf38a0777849caf6bed1.svn-base


+ 184 - 0
vue_sports/.svn/pristine/30/3065b165607dd9db9dce18068b4cf6de04b815d7.svn-base

@@ -0,0 +1,184 @@
+<template>
+  <div>
+    <div v-for="(item,index) in data" :key="item.id">
+      <div class="row allAlignment haderBox center">
+        <span>123</span>
+        <div class="Match-title-num">
+          <span>123</span>
+        </div>
+      </div>
+      <div class="box">
+        <div class="row allAlignment item-center top-box">
+          <span>
+            <i>{{item.session}}</i>
+            <b style="color:#F76649;font-weight: normal;">{{item.time}}</b>
+          </span>
+          <span class="top-num">{{item.num}}</span>
+        </div>
+      </div>
+      <div class="box-bottom">
+        <div class="box row item-center main-box">
+          <span class="num-box" style="color:#eb921e">{{item.home}}</span>
+          &nbsp;&nbsp;{{item.nameA}}
+        </div>
+        <div class="box row item-center main-box">
+          <span class="num-box" style="color:#eb921e">{{item.host}}</span>
+          &nbsp;&nbsp;{{item.nameB}}
+        </div>
+        <div class="box row allAlignment bottom-box center">
+          <div
+            class="item-center bottom-num"
+            :class="item.istrueA==true?'active':''"
+            @click="isclick(index,1)"
+          >
+            <p style="color:#eb921e">1</p>
+            <p>{{item.odd1}}</p>
+          </div>
+          <div
+            class="item-center bottom-num"
+            :class="item.istrueB==true?'active':''"
+            @click="isclick(index,2)"
+          >
+            <p style="color:#eb921e">x</p>
+            <p>{{item.odd2}}</p>
+          </div>
+          <div
+            class="item-center bottom-num"
+            :class="item.istrueC==true?'active':''"
+            @click="isclick(index,3)"
+          >
+            <p style="color:#eb921e">2</p>
+            <p>{{item.odd3}}</p>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import "../css/index.css";
+export default {
+  data() {
+    return {
+      data: [
+        {
+          nameA: "圣特克拉",
+          nameB: "智利U17",
+          home: "0",
+          host: "0",
+          session: "上半场",
+          time: "13:30",
+          num: "10",
+          odd1: "2.50",
+          odd2: "2.85",
+          odd3: "2.70"
+        }
+      ]
+    };
+  },
+  methods: {
+    // 点击事件确认选中
+    isclick(index, num) {
+      if (num == 1) {
+        this.$set(
+          this.data[index],
+          "istrueA",
+          this.data[index].istrueA == true ? false : true
+        );
+      } else if (num == 2) {
+        this.$set(
+          this.data[index],
+          "istrueB",
+          this.data[index].istrueB == true ? false : true
+        );
+      } else if (num == 3) {
+        this.$set(
+          this.data[index],
+          "istrueC",
+          this.data[index].istrueC == true ? false : true
+        );
+      }
+    }
+  },
+  mounted() {}
+};
+</script>
+<style scoped>
+.top-box {
+  height: 0.44rem;
+  font-size: 0.24rem;
+  background: #fff;
+  border-bottom: 1px solid #e4e4e4;
+}
+.box-bottom{
+  height: 2.9rem; 
+}
+.top-num {
+  display: inline-block;
+  width: 0.64rem;
+  height: 0.44rem;
+  line-height: 0.44rem;
+  color: #000000;
+  text-align: center;
+  background: #ebebeb;
+  font-size: 0.24rem;
+}
+.box {
+  padding: 0 0.32rem;
+  background: #fff;
+}
+.Match-title-num {
+  width: 0.46rem;
+  height: 0.46rem;
+  line-height: 0.46rem;
+  text-align: center;
+  background: #f76649;
+  font-size: 0.26rem;
+  border-radius: 50%;
+  color: #e4e4e4;
+}
+.haderBox {
+  padding: 0 0.32rem;
+  height: 0.88rem;
+  font-size: 0.32rem;
+  background: #f8f8f8;
+}
+.main-box {
+  height: 0.9rem;
+  background: #fff;
+  font-size: 0.28rem;
+}
+.bottom-box {
+  height: 1.1rem;
+  background: #fff;
+  font-size: 0.24rem;
+}
+.bottom-box div {
+  width: 1.07rem;
+  height: 0.76rem;
+  border: 2px solid #cecece;
+  border-radius: 0.1rem;
+  font-size: .24rem
+}
+.bottom-num {
+  padding: 0.1rem;
+  text-align: center;
+}
+.active {
+  background: #f76649;
+  border: 2px solid #f76649 !important;
+}
+.active > p {
+  color: #e4e4e4 !important;
+}
+.num-box {
+  width: 0.66rem;
+  height: 0.34rem;
+  background: #f76649;
+  border-radius: 0.17rem;
+  color: #f5f5f5 !important;
+  line-height: 0.34rem;
+  text-align: center;
+}
+</style>

+ 172 - 0
vue_sports/.svn/pristine/33/33cda26e95b1b84d217a174a3c8b0bac7339377c.svn-base

@@ -0,0 +1,172 @@
+<template>
+  <div>
+    <yd-accordion>
+      <!-- 组件标题 -->
+      <yd-accordion-item class="Match-game" :title="title" open>
+        <!-- 组件计数单元 -->
+        <div slot="txt" class="Match-game-stat" v-if="table.census">当前总数:{{ table.census }}</div>
+        <div style="background: #F0F0F0;">
+          <p
+            v-for="(i, index) in data"
+            class="list-row"
+            :style="i.condition ? '' : 'background:#F8F8F8'"
+       
+            :key="i.id"
+          >
+            <span class="The-club">{{ i.team }}</span>
+            <span
+              :class="i.istrue== true ? 'active The-club-box' : 'The-club-box'"
+              @click="Theclubboxclick(index)"
+              :style="i.condition ? '' : 'display:none'"
+            >
+              <i style="color: #FD8F26;display:block" v-if="i.condition">{{ i.condition }}</i>
+              <i v-if="i.condition">{{ i.odds }}</i>
+            </span>
+          </p>
+        </div>
+      </yd-accordion-item>
+    </yd-accordion>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      // 组件内部测试状态
+      title: "主队全场让球",
+      data: [],
+      table: {
+        title: "角球:让球",
+        list: [
+          {
+            id: 1,
+            Theclub: "哈萨克斯坦",
+            num: {
+              num1: "0.5/1",
+              num2: "0.94"
+            }
+          },
+          {
+            id: 2,
+            Theclub: "马德里体育会",
+            num: {
+              num1: "",
+              num2: "0.94"
+            }
+          },
+          {
+            id: 3,
+            Theclub: "哈萨克斯坦",
+            num: {
+              num1: "0.5/1",
+              num2: "0.94"
+            }
+          },
+          {
+            id: 4,
+            Theclub: "马德里体育会",
+            num: {
+              num1: "",
+              num2: "0.94"
+            }
+          }
+        ]
+      }
+    };
+  },
+  methods: {
+    // 点击更改组件选中状态
+    Theclubboxclick(num) {
+      // 更改组件是否选中
+      this.$set(
+        this.data[num],
+        "istrue",
+        this.data[num].istrue == true ? false : true
+      );
+    }
+  },
+  computed: {
+    getUserIcons() {
+      return this.$store.getters.getGameRatio;
+    }
+  },
+  watch: {
+    getUserIcons(val) {
+		console.log('val',val)
+      for (var i = 0; i < val.length; i++) {
+        if (this.title == val[i].key) {
+          this.data = val[i].data;
+		  console.log("data", this.data);
+		//   this.title = val.data[i].p_code
+        }
+      }
+    }
+  }
+};
+</script>
+
+<style scoped>
+div /deep/ .yd-accordion-head-arrow:after {
+  border: none;
+  width: 0.5rem;
+  height: 0.5rem;
+  background: url(../assets/st-imges/xiangxia.png) no-repeat;
+  background-size: 100% 100%;
+}
+div /deep/ .yd-accordion-head,
+div /deep/ .yd-accordion-head-content,
+div /deep/ .yd-accordion-title {
+  height: 0.88rem;
+  font-size: 0.28rem;
+  color: #333;
+  background: #f8f8f8;
+}
+div /deep/ .yd-accordion-head {
+  padding: 0 0.32rem;
+}
+.Match-game {
+  position: relative;
+}
+.Match-game-stat {
+  position: absolute;
+  right: 1.35rem;
+  color: #fd8f26;
+  font-size: 0.26rem;
+}
+.list-row {
+  display: flex;
+  justify-content: space-between;
+  height: 0.87rem;
+  background: #f8f8f8;
+  border-bottom: 1px solid #e4e4e4;
+  align-items: center;
+  padding: 0 0.32rem;
+}
+.The-club {
+  font-size: 0.28rem;
+}
+.The-club-box {
+  display: inline-block;
+  /* display: flex; */
+  flex-wrap: wrap;
+  align-items: center;
+  justify-content: center;
+  width: 1.07rem;
+  height: 0.76rem;
+  font-size: 0.24rem;
+  padding: 0.1rem;
+  border: 2px solid #cecece;
+  border-radius: 0.1rem;
+  margin-right: 0.1rem;
+  text-align: center;
+}
+.active {
+  background: #f76649;
+  padding: 0.1rem;
+  border: 2px solid #f76649;
+}
+.active i {
+  color: #f4f4f4 !important;
+}
+</style>

+ 281 - 0
vue_sports/.svn/pristine/35/356f09a59b32420fc114a5039bf44692ff61e41a.svn-base

@@ -0,0 +1,281 @@
+<template>
+  <div>
+    <div class="lod">
+      <Loading></Loading>
+    </div>
+    <SportsHead></SportsHead>
+    <div v-if="arr.length >0 ">
+      <div id="NavSlide" class="row allAlignment center">
+        <div class="nav-div">
+          <nav>
+            <div
+              class="column center img-div"
+              v-for="(item,$index) in arr"
+              @click="toggle(item.game_code,item.game_name)"
+            >
+              <img
+                :class="gameCode == item.game_code?'img-box imgactive':'img-box'"
+                :src="item.game_ico_url"
+              >
+              <span
+                class="text"
+                style="font-size:.2rem;"
+                :class="{active:item.game_code == gameCode}"
+              >{{item.game_name}}</span>
+            </div>
+          </nav>
+        </div>
+      </div>
+      <RollingBallHead v-if="nameShow" :name="name" :ishow="ishow"/>
+    </div>
+    <Match v-show="nameShow" :gameCode="gameCode" :ishow="ishow"></Match>
+    <NavBall v-show="!nameShow" :name="name" :headShow = 'headShow'/>
+    <LinkFooter></LinkFooter>
+  </div>
+</template>
+<script>
+import SportsHead from "@/components/StSportsHead";
+import SerchBox from "@/components/StSerchBox";
+import Match from "@/components/StMatch";
+import RollingBallHead from "@/components/StRollingBallHead";
+import LinkFooter from "@/components/StLinkFooter";
+import ActivitySlider from "@/components/StActivitySlider";
+import Loading from "@/components/StLoading";
+import NavBall from "@/components/StNavBall";
+export default {
+  name: "RollBallpage",
+  data() {
+    return {
+      gameCode: "",
+      ishow: false, //显示1X2还是独赢盘状态 //true 为1x2
+      name: "",//球类名字
+      // code: "",
+      nameShow: true, //判断是否为滚球或者是即将的状态
+      getNameId: "", //获取头部导航别名
+      arr: [],
+      headShow:true, // 如果没有头部导航数据则不显示..
+      number:'',//活动别名
+    };
+  },
+  /**
+   * 计算属性
+   */
+  computed: {
+    // 获取活动vuex的活动类型
+    getNumber: function() {
+      //this.$store.getters.getActivity;
+      if (
+        this.$store.getters.getActivity != "StSoon" &&
+        this.$store.getters.getActivity != "StRollBall"
+      ) {
+        this.nameShow = false;
+      } else {
+        this.nameShow = true;
+      }
+      return this.$store.getters.getActivity;
+    }
+  },
+  /**
+   * 数据监听
+   */
+  watch: {
+    getNumber(val) {
+      this.getNameId = val;
+      let activityId = val;
+      // 判定别名是否为滚球或者即将,否则调用另外一个组件
+      //   if (val != "StSoon" && val != "StRollBall") {
+      //     this.nameShow = false;
+      //   } else {
+      //     this.nameShow = true;
+      //   }
+      //   console.log('valll',val)
+      //
+      if (this.number != activityId ) {
+        this.getAjax(this.$store.getters.getActivity);
+        // this.gameCode = this.arr[0].game_code;
+        // this.$store.dispatch("GET_BALL_ID", this.arr[0].game_code);
+      }
+      this.number = activityId;
+    }
+  },
+  /**
+   * 函数方法
+   */
+  methods: {
+    //切换球类样式
+    toggle: function(id, name) {
+      this.gameCode = id;
+      this.name = name;
+      console.log("id", name);
+      if (id != "zq") {
+        this.ishow = true;
+      } else {
+        this.ishow = false;
+      }
+      this.$store.dispatch("GET_BALL_ID", id); //将球类别存入vuex里面
+    },
+    getAjax: function(type_code) {
+      this.$http
+        .get(this.$ports.rollBall.getGame, {
+          type_code
+        })
+        .then(res => {
+          // console.log("头部导航", res);
+          this.arr = [
+            {
+              game_ico_url: require("@/assets/st-imges/football.png"),
+              titel: "足球",
+              game_code: "zq"
+            },
+            {
+              game_ico_url: require("@/assets/st-imges/basketball.png"),
+              titel: "篮球",
+              game_code: "lq"
+            },
+            {
+              game_ico_url: require("@/assets/st-imges/baseball.png"),
+              titel: "棒球",
+              game_code: "bq"
+            },
+            {
+              game_ico_url: require("@/assets/st-imges/tennis.png"),
+              titel: "网球",
+              game_code: "wq"
+            }
+          ];
+          //console.log('滚球类',res);
+          if (res.data.status == 1 && res.data.data.length > 0 && res.data.data != null ) {
+            this.headShow = true;
+            let dtatArry = [];
+            this.arr.forEach(e => {
+              res.data.data.forEach(val => {
+                if (e.game_code == val.game_code) {
+                  val.game_ico_url = e.game_ico_url;
+                  dtatArry.push(val);
+                }
+              });
+            });
+            this.arr = dtatArry;
+            this.gameCode =dtatArry[0].game_code;
+            this.name = dtatArry[0].game_name;
+            this.$store.dispatch("GET_BALL_ID", this.arr[0].game_code);
+            if (this.gameCode != "zq") {
+              this.ishow = true;
+            } else {
+              this.ishow = false;
+            }
+          } else {
+            this.arr = [];
+            this.headShow = false;
+            this.$store.dispatch('GETSHOW',false);
+          }
+        });
+    }
+  },
+  mounted() {
+    this.getAjax(this.$store.getters.getActivity);
+  },
+  components: {
+    SportsHead,
+    SerchBox,
+    Match,
+    LinkFooter,
+    ActivitySlider,
+    RollingBallHead,
+    Loading,
+    NavBall
+  }
+};
+</script>
+<style  scoped>
+.lod {
+  z-index: 999;
+  position: fixed;
+  width: 100%;
+}
+.text {
+  margin-top: 0.08rem;
+}
+#NavSlide {
+  height: 1rem;
+  background: #f8f8f8;
+}
+.nav-div {
+  width: 6.28rem;
+}
+.img-icon {
+  width: 0.24rem;
+  height: 0.4rem;
+}
+.img-box {
+  width: 0.48rem;
+  height: 0.48rem;
+  margin: 0 0.35rem;
+}
+@keyframes rotating {
+  from {
+    transform: rotate(0);
+  }
+  to {
+    transform: rotate(360deg);
+  }
+}
+@-moz-keyframes rotating {
+  from {
+    transform: rotate(0);
+  }
+  to {
+    transform: rotate(360deg);
+  }
+}
+@-webkit-keyframes rotating {
+  from {
+    transform: rotate(0);
+  }
+  to {
+    transform: rotate(360deg);
+  }
+}
+@-o-keyframes rotating {
+  from {
+    transform: rotate(0);
+  }
+  to {
+    transform: rotate(360deg);
+  }
+}
+.imgactive {
+  animation: rotating 4s linear infinite;
+  -webkit-animation: rotating 4s linear infinite;
+  -moz-animation: rotating 4s linear infinite;
+  -ms-animation: rotating 4s linear infinite;
+  -o-animation: rotating 4s linear infinite;
+}
+.img-div {
+  height: 1rem;
+}
+#NavSlide nav {
+  /* padding: 0 0.43rem; */
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: middle;
+  -ms-flex-align: middle;
+  align-items: middle;
+  overflow-x: auto;
+  background-color: #f8f8f8;
+  -webkit-overflow-scrolling: touch;
+}
+#NavSlide div {
+  text-align: center;
+  font-size: 0.16rem;
+  -ms-flex-negative: 0;
+  flex-shrink: 0;
+  /* padding:0 0.1rem;
+        margin:0 0.05rem; */
+  color: #000000;
+}
+span.active {
+  color: #f76649;
+}
+</style>

BIN
vue_sports/.svn/pristine/37/377f9216765e9452dc326526422fd1101e4b0ad8.svn-base


BIN
vue_sports/.svn/pristine/38/38b4cffea1e46c8da4d52ec4c1d90832f178e2ea.svn-base


+ 394 - 0
vue_sports/.svn/pristine/38/38ccdeb02822d3eaf2f5ccf4bb0f69dd1aa8a79a.svn-base

@@ -0,0 +1,394 @@
+<template>
+  <div>
+    <div class="lod">
+      <Loading></Loading>
+    </div>
+    <div>
+      <SportsHead></SportsHead>
+      <div class="gambling">
+        <div class="leagueMatch">
+          <yd-button size="large" @click.native="show = true"></yd-button>
+          <div class="leagueName">
+            <span>{{list.leagueName}}</span>
+          </div>
+          <div class="teamName">
+            <span>{{list.home_team}}</span>
+            <div class="vs">vs</div>
+            <span>{{list.guest_team}}</span>
+          </div>
+          <div class="time">
+            <span>{{list.match_ptime? list.match_ptime :list.match_time }}</span>
+          </div>
+          <div v-if="satatus" class="icon" :class="status == true ? 'rotate':'backRotate'">
+            <i></i>
+          </div>
+        </div>
+        <div class="box">
+          <div id="NavSlide">
+            <nav>
+              <p v-for="(item,$index) in key" @click="toggleNav($index)" :key="$index">
+                <span :class="{active:$index==active}">{{item}}</span>
+              </p>
+            </nav>
+          </div>
+        </div>
+        <!-- 模态框 -->
+        <yd-popup v-if="satatus" v-model="show" position="center" width="90%">
+          <div class="modality">
+            <div
+              class="list"
+              v-for="(item,index) in list.league"
+              :key="index"
+              @click="check(index,item.match_id)"
+            >
+              <span :class="list.match_id == item.match_id?'col':''">{{item.home_team}}</span>
+              <span :class="list.match_id == item.match_id?'col':''">v</span>
+              <span :class="list.match_id == item.match_id?'col':''">{{item.guest_team}}</span>
+            </div>
+          </div>
+        </yd-popup>
+      </div>
+      <div v-show="isShow">
+        <!--让球大小-->
+        <div v-show="Single =='让球大小' || isAll  ">
+          <goal></goal>
+        </div>
+        <!--独赢-->
+        <div v-show="Single =='独赢'|| isAll  ">
+          <OnlyWin></OnlyWin>
+        </div>
+        <!--最先/最后进球-->
+        <div v-show="Single =='最先/最后进球' || isAll  ">
+          <StartEnd></StartEnd>
+        </div>
+        <!-- 总进球数 -->
+        <div v-show="Single =='总进球数' || isAll  ">
+          <GoalSize></GoalSize>
+        </div>
+        <!-- 波胆 -->
+        <div v-show="Single =='波胆' || isAll  ">
+          <WaveBladder></WaveBladder>
+        </div>
+        <!--入球数单双-->
+        <div v-show="Single =='进球数单双' || isAll  ">
+          <GoalSingleAndDouble></GoalSingleAndDouble>
+        </div>
+        <!--半场/全场-->
+        <div v-show="Single =='半场/全场'|| isAll  ">
+          <FullHalf></FullHalf>
+        </div>
+        <!-- 角球 -->
+        <div v-show="Single =='角球' || isAll ">
+          <Corner></Corner>
+        </div>
+        <!-- 球队进球大小 -->
+        <div v-show="Single =='球队进球大小' || isAll ">
+          <TeamGoalSize></TeamGoalSize>
+        </div>
+      </div>
+      <div v-if="!isShow">
+        <NotOpend :title="tipsTitle"></NotOpend>
+      </div>
+      <StLinkFooter></StLinkFooter>
+      <BettingWindow v-if="isWindow" />
+    </div>
+  </div>
+</template>
+
+<script>
+import Goal from "@/components/StGoal";
+import NotOpend from "@/components/StNotOpend";
+import Loading from "@/components/StLoading";
+import WaveBladder from "@/components/StWaveBladder";
+import StLinkFooter from "@/components/StLinkFooter";
+import SportsHead from "@/components/StSportsHead";
+import OnlyWin from "@/components/dedicated/StOnlyWin";
+import GoalSize from "@/components/dedicated/StGoalSize";
+import StartEnd from "@/components/dedicated/StStartEnd";
+import FullHalf from "@/components/dedicated/StFullHalf";
+import TeamGoalSize from "@/components/dedicated/StTeamGoalSize";
+import GoalSingleAndDouble from "@/components/dedicated/StGoalSingleAndDouble";
+import Corner from "@/components/dedicated/StCorner";
+import BettingWindow from "@/components/StBettingWindow"
+export default {
+  data() {
+    return {
+      gameCode: this.$route.query.gameCode, //别名
+      match_id:'',
+      list: [], //数据
+      key: [], //存储key值进行判定
+      isShow: "", //更具数据是否显示
+      status: false,
+      tipsTitle: "暂无相关数据信息",
+      active: 0,
+      // 投注页是否打开
+      isWindow:false,
+      // isIphone: false,//是否ios
+      // isAndroid: false,//是否Android
+      show: false, //是否显示模态框
+      satatus: true,
+      isAll: true,
+      Single: ""
+    };
+  },
+  methods: {
+    getAjax: function(gameCode, match_id) {
+      this.$store.dispatch("GETSHOW", true);
+      this.$http
+        .get(this.$ports.gambling.matchOdds, {
+          game_code: gameCode,
+          matchID: match_id
+        })
+        .then(res => {
+          if (res.data.status == 1) {
+            this.key = [];
+            if (
+              res.data.data.oddsData == [] ||
+              res.data.data.oddsData.length == 0 ||
+              res.data.data.oddsData == null
+            ) {
+              this.$store.dispatch("GETSHOW", false);
+              this.isShow = false;
+              return false;
+            }
+            this.list = res.data.data;
+            let arrayData =[];
+            let key = Object.keys(res.data.data.p_code_array);
+            let values = Object.values(res.data.data.p_code_array);
+            this.isShow = true;
+            this.key = ["所有盘口"];
+            key.forEach((e, index) => {
+              this.key.push(values[index]);
+              let stripData=[] ;
+              res.data.data.oddsData.forEach((data) => {
+                if(data.p_code == e){
+                  stripData.push(data);
+                }
+                arrayData[index] = stripData;
+              });
+            });
+            this.list.oddsData =arrayData
+            this.$store.dispatch("GETGAMERATIO", this.list);
+            console.log("数据源", arrayData);
+          }
+          this.$store.dispatch("GETSHOW", false);
+        });
+    },
+    /**
+     * 切换赛事
+     */
+    check(index, match_id) {
+      this.show = false;
+      if (this.list.match_id == match_id) return false;
+      this.$store.dispatch("MACTH_ID",match_id);
+      this.getAjax(this.gameCode, match_id);
+    },
+    /**
+     * 切换玩法类型
+     */
+    toggleNav: function(index) {
+      this.active = index;
+      if (this.key[index] == "所有盘口") {
+        this.isAll = true;
+      } else {
+        this.isAll = false;
+        this.Single = this.key[index];
+      }
+    }
+
+    /**
+    // 如果需要区分,则放里面;
+    clickApp() {
+      let ua = navigator.userAgent.toLowerCase();
+      //Android终端
+      let isAndroid = ua.indexOf("Android") > -1 || ua.indexOf("Adr") > -1; //Ios终端
+      let isiOS = !!ua.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
+      if (isWeixinBrowser()) {
+        this.$router.push({
+          path: "/product"
+        });
+      } else {
+        if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
+          //Ios
+          console.log("iphone");
+          this.iphone = true;
+        } else if (/(Android)/i.test(navigator.userAgent)) {
+          //Android终端
+          console.log("");
+        }
+      }
+
+      function isWeixinBrowser() {
+        return /micromessenger/.test(ua) ? true : false;
+      }
+    }
+     */
+  },
+  /**
+   * 计算属性
+   */
+  computed: {
+     IsWindow() {
+      return this.$store.getters.getIsBetting;
+    }
+  },
+  /**
+   * 监听器
+   */
+  watch: {
+    // 监听投注框开关
+    IsWindow(val) {
+      this.isWindow = val;
+    }
+  },
+
+  mounted() {
+    this.match_id = this.$store.getters.getMatchId;
+    this.getAjax(this.gameCode, this.match_id);
+     if(this.$store.getters.getIsBetting){
+      this.isWindow=true
+    }
+  },
+  components: {
+    Corner,
+    Goal,
+    WaveBladder,
+    StLinkFooter,
+    SportsHead,
+    OnlyWin,
+    StartEnd,
+    GoalSize,
+    FullHalf,
+    GoalSingleAndDouble,
+    TeamGoalSize,
+    Loading,
+    NotOpend,
+    BettingWindow
+  }
+};
+</script>
+
+<style scoped>
+.gambling {
+  background: #f8f8f8;
+}
+.leagueMatch {
+  position: relative;
+  padding: 0.3rem 0.32rem;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  flex-wrap: nowrap;
+  border-bottom: 1px solid #e4e4e4;
+  background: linear-gradient(to top, #FFE9C9, #FFF3E2);
+}
+.leagueMatch div {
+  font-size: 0.28rem;
+  text-align: left;
+  color: #333333;
+}
+.leagueName {
+  width: 2.26rem;
+}
+.leagueMatch .teamName {
+  text-align: center;
+}
+.teamName .vs {
+  text-align: center;
+  font-size: 0.24rem;
+  color: #fd8f26;
+}
+.leagueMatch .time {
+  width: 1.3rem;
+  color: #333333;
+  font-size: 0.24rem;
+}
+.leagueMatch .icon i {
+  display: inline-block;
+  width: 0.4rem;
+  height: 0.4rem;
+  background: url("../../../assets/st-imges/xiangxia.png") no-repeat;
+  background-size: 100% 100%;
+  transform: rotate(180deg);
+}
+.leagueMatch .rotate {
+  transform: rotate(180deg);
+  transition: 0.2s;
+}
+.leagueMatch .backRotate {
+  transform: rotate(0deg);
+  transition: 0.2s;
+}
+
+.box {
+  padding: 0 0.32rem;
+  background: #f8f8f8;
+}
+#NavSlide {
+  width: 100%;
+  overflow: hidden;
+}
+#NavSlide nav {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: middle;
+  -ms-flex-align: middle;
+  align-items: middle;
+  overflow: auto;
+}
+#NavSlide p {
+  text-align: center;
+  font-size: 0.28rem;
+  -ms-flex-negative: 0;
+  flex-shrink: 0;
+  padding: 0 0.2rem 0 0;
+  margin: 0 0.1rem 0 0;
+  color: #b8b8b8;
+  height: 0.88rem;
+  line-height: 0.88rem;
+}
+/* #NavSlide p a{
+	color: #E5E5E5;
+	text-decoration: none;
+} */
+#NavSlide p span.active {
+  color: #363636;
+}
+#NavSlide .fixadd {
+  position: absolute;
+  right: -4px;
+  background-color: #31c17b;
+}
+button.yd-btn-block {
+  background: #f8f8f8;
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  /* z-index: -1; */
+  margin: 0;
+  opacity: 0;
+}
+.modality {
+  text-align: center;
+  background: #fbfbfb;
+  padding: 0.2rem 0;
+  height: 5rem;
+  /* overflow: hidden; */
+}
+.modality span {
+  color: #000000;
+  font-size: 0.28rem;
+}
+.modality div {
+  /* margin: 0.06rem 0; */
+  padding: 0.2rem 0;
+  background: #fbfbfb;
+  border-bottom: 1px solid #e4e4e4;
+}
+.modality div .col {
+  color: #fd8f26;
+}
+</style>

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
vue_sports/.svn/pristine/39/39990220065179d7080692a029ab463966a8cdd4.svn-base


+ 143 - 0
vue_sports/.svn/pristine/3a/3a88a42e82b1f0cfb07174b365e9bd568cdf061b.svn-base

@@ -0,0 +1,143 @@
+import axios from 'axios' // 引入axios
+import qs from 'qs'  // 序列化字符串
+import store from '../store/index' // 引入全局状态管理
+import router from '../router' // 路由
+import { Toast } from 'vant' // 控件
+
+// 环境切换
+if (process.env.NODE_ENV === 'development') {
+  axios.defaults.baseURL = ''
+} else if (process.env.NODE_ENV === 'debug') {
+  axios.defaults.baseURL = '测试环境'
+} else if (process.env.NODE_ENV === 'production') {
+  axios.defaults.baseURL = '生产环境'
+}
+// 请求超时时间
+axios.defaults.timeout = 10000
+// 线上
+// let Base = 'http://g.a.cnscbv.com/'
+// 开发
+let Base = 'http://sports.5gogo.com'
+function headerUrl (url) {
+  url = Base +  url
+  return url
+}
+// post请求头
+axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
+
+// request 请求拦截器
+axios.interceptors.request.use(
+  config => {
+    // 每次发送请求之前判断是否存在token,如果存在,则统一在http请求的header都加上token,不用每次请求都手动添加
+    // 即使本地存在token,也有可能token是过期的,所以在响应拦截器中要对返回状态进行判断
+    const token = store.state.token
+    token && (config.headers.Authorization = token)
+    return config
+  },
+  error => {
+    return Promise.error(error)
+  })
+// response 响应拦截器
+axios.interceptors.response.use(
+  response => {
+    if (response.status === 200) {
+      return Promise.resolve(response)
+    } else {
+      return Promise.reject(response)
+    }
+  },
+  // 服务状态码不是200的情况
+  error => {
+    if (error.response.status) {
+      switch (error.response.status) {
+        // 401 未登录
+        // 未登录则跳转登录页面,并携带当前页面的路径
+        // 在登录成功后返回当前页面,这一步需要在登录页操作。
+        case 401:
+          router.replace({
+            path: '/login',
+            query: {redirect: router.currentRoute.fullPath}
+          })
+          break
+          // 403 token过期
+          // 登录过期对用户进行提示
+          // 清除本地token和清空vuex中token对象
+          // 跳转登录页面
+        case 403:
+          Toast({
+            message: '登录过期,请重新登录',
+            duration: 1000,
+            forbidClick: true
+          })
+          localStorage.removeItem('token')
+          store.commit('loginSuccess', null)
+          // 跳转登录页面,并将要浏览的页面fullpath传过去,登录成功后跳转到要访问的页面
+          setTimeout(() => {
+            router.replace({
+              path: '/login',
+              query: {
+                redirect: router.currentRoute.fullPath
+              }
+            })
+          }, 1000)
+          break
+        // 404 请求不存在
+        case 404:
+          Toast({
+            message: '网络请求不存在',
+            duration: 1500,
+            forbidClick: true
+          })
+          break
+        // 其他错误直接抛出错误提示
+        default:
+          Toast({
+            message: error.response.data.message,
+            duration: 1500,
+            forbidClick: true
+          })
+      }
+      return Promise.reject(error.response)
+    }
+  }
+)
+
+export default {
+  /**
+   * get方法对应get请求
+   * @param {String}url 请求地址
+   * @param {Object}params 携带参数
+   * @returns {Promise}
+   */
+  get (url, params) {
+  
+    return new Promise((resolve, reject) => {
+      axios.get(headerUrl(url), {
+        params
+      })
+        .then(res => {
+          resolve(res)
+        })
+        .catch(err => {
+          reject(err)
+        })
+    })
+  },
+  /**
+   * post方法对应post请求
+   * @param {String} url 请求地址
+   * @param {Object} params 携带参数
+   * @returns {Promise}
+   */
+  post (url, params) {
+    return new Promise((resolve, reject) => {
+      axios.post(headerUrl(url), qs.stringify(params))
+        .then(res => {
+          resolve(res)
+        })
+        .catch(err => {
+          reject(err)
+        })
+    })
+  }
+}

BIN
vue_sports/.svn/pristine/3b/3b460202f6417fc33a79c8884d40e55ec862db7e.svn-base


+ 214 - 0
vue_sports/.svn/pristine/3b/3bf308973ab338cf0b96ce033b0174e09e5b1126.svn-base

@@ -0,0 +1,214 @@
+<template>
+  <div>
+    <div v-if="isDisplay ">
+      <yd-accordion>
+        <!-- 组件标题 -->
+        <yd-accordion-item class="Match-game" title="最先进球/最后进球" open>
+          <div class="start-box twoPadding">
+            <span>最先进球队伍</span>
+          </div>
+          <div style="background: #F0F0F0;" v-for="(item,index) in data" :key="index">
+            <div v-if=" item.odds_code =='first_ball_home' || item.odds_code =='first_ball_guest'">
+              <div class="row allAlignment center row-box twoPadding">
+                <span>{{ item.odds_code =='first_ball_home' ? home_team :guest_team}}</span>
+                <div
+                  class="The-club-box row center"
+                  :class="item.isTrue== true ? 'active' : ''"
+                  @click="bettingBtn(item.id,item.condition,item.odds)"
+                >
+                  <span>{{item.odds}}</span>
+                </div>
+              </div>
+            </div>
+            <!-- ':'最后进球队伍'}} -->
+          </div>
+          <div class="start-box twoPadding">
+            <span>最后进球队伍</span>
+          </div>
+          <div style="background: #F0F0F0;" v-for="(item,index) in data" :key="item.id">
+            <div
+              v-if="item.odds_code =='last_ball_home' || item.odds_code =='last_ball_guest' || item.odds_code == 'not_ball' "
+            >
+              <div class="row allAlignment center row-box twoPadding">
+                <span>{{ item.odds_code =='last_ball_home' ? home_team : item.odds_code =='last_ball_guest' ? guest_team :'无进球'}}</span>
+                <div
+                  class="The-club-box row center"
+                  :class="item.isTrue== true ? 'active' : ''"
+                  @click="bettingBtn(item.id,item.condition,item.odds)"
+                >
+                  <span>{{item.odds}}</span>
+                </div>
+              </div>
+            </div>
+          </div>
+        </yd-accordion-item>
+      </yd-accordion>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  // 让球
+  data() {
+    return {
+      // 组件内部测试状态
+      title: "first_last_ball",
+      home_team: "",
+      guest_team: "",
+      data: [], //数据源
+	  isDisplay: "" ,//是否显示
+	  betting: [], //已投注倍率id集合
+      dataNum: 10000 //对应的数据的下标
+    };
+  },
+  methods: {
+    //玩法投注
+    bettingBtn(id,name,odds,condition='',bettingTime='') {
+    let _this = this;
+     let bettingInfo = {
+        id,
+        home_team:this.home_team,
+        guest_team:this.guest_team,
+        name,
+        odds,
+        condition,
+        ganame:this.title,
+        score:this.score,
+        bettingTime,
+
+      }
+      //调用玩法投注公共方法
+      this.$public.bettingFunction(this.betting,bettingInfo,this.data,this.$store.getters.getBetting,this.title,this.dataNum,function(res,type){
+        _this.$set(res,'isTrue',type);
+      },function(data,val){
+         _this.$store.dispatch("BETTING", []);
+          _this.$store.dispatch("BETTING", data ? data : val);
+          if(_this.$store.getters.getIsBetting) return false
+          _this.$store.dispatch("ISBETTING",true)
+      })
+	},
+	//获取玩法id
+    getBettingId(data) {
+      if(data){
+        data.forEach((res, index) => {
+          if (res.title == this.title) {
+            this.betting = res.data;
+            this.dataNum = index;
+          }
+        });
+      }
+    }
+  },
+  computed: {
+    //从Vuex获取数据
+    getUserIcons() {
+      return this.$store.getters.getGameRatio;
+	},
+	getBetting() {
+      return this.$store.getters.getBetting;
+    },
+     //获取投注框删除的投注信息
+    getDeleteType(){
+      return this.$store.getters.getDeleteType;
+    },
+  },
+  watch: {
+    //监听vuex里面数据
+    getUserIcons(val) {
+	    if(!val) return false;
+      //console.log('先进/后进',val);
+        this.home_team = val.home_team;
+        this.guest_team = val.guest_team;
+        val.oddsData.forEach(res => {
+			if (res[0].p_code == this.title) {
+			this.isDisplay = true;
+			this.data = res;
+			
+			}
+		});
+		this.getBettingId(this.$store.getters.getBetting);
+		if (this.dataNum != 10000) {
+			this.betting.forEach((res) => {
+			this.data.forEach((e,index) => {
+				if ((res.id == e.id)) {
+				this.$set(e,'isTrue',true);
+				}
+			});
+			});
+		}
+		  
+	},
+	//获取已投注信息
+	getBetting(val) {
+       let _this =this;
+      this.$public.getBettingId(val,this.title,function(data,index){
+        _this.betting = data;
+        _this.dataNum = index;
+      });
+    },
+      //监听投注框删除处理
+    getDeleteType(val){
+        this.data.forEach(e =>{
+          if(val =='all'){
+            this.$set(e, "isTrue", false);
+          }else{
+            if(e.id == val){
+              this.$set(e, "isTrue", false);
+            }
+          }
+        })
+    }
+  },
+};
+</script>
+
+<style scoped>
+div /deep/ .yd-accordion-head-arrow:after {
+  border: none;
+  width: 0.5rem;
+  height: 0.5rem;
+  background: url(../../assets/st-imges/xiangxia.png) no-repeat;
+  background-size: 100% 100%;
+}
+div /deep/ .yd-accordion-head,
+div /deep/ .yd-accordion-head-content,
+div /deep/ .yd-accordion-title {
+  height: 0.88rem;
+  font-size: 0.28rem;
+  color: #FEFEFE;
+  background: #a0a0a0;
+}
+div /deep/ .yd-accordion-head {
+  padding: 0 0.32rem;
+}
+.twoPadding {
+  padding: 0 0.32rem;
+}
+.row-box {
+  height: 0.9rem;
+  font-size: 0.26rem;
+  border-bottom: 1px solid #e4e4e4 !important;
+}
+.The-club-box {
+  width: 1.07rem;
+  height: 0.76rem;
+  font-size: 0.24rem;
+  padding: 0.1rem;
+  border: 2px solid #cecece;
+  border-radius: 0.1rem;
+  margin: 0.1rem;
+}
+.active {
+  background: #f76649;
+  color: #f4f4f4;
+  padding: 0.1rem;
+  border: 2px solid #f76649;
+}
+.start-box {
+  height: 0.9rem;
+  line-height: 0.9rem;
+  background: #cecece;
+  color: #333;
+}
+</style>

BIN
vue_sports/.svn/pristine/3c/3c0ac63c301631eadfd594f98aba8dcadbaaec78.svn-base


+ 29 - 0
vue_sports/.svn/pristine/3c/3c45d3ede86f6e1af0a5cbca1b067198ddb3bffd.svn-base

@@ -0,0 +1,29 @@
+<template>
+    <div>
+        <SportsHead></SportsHead>
+        <ScrollNav></ScrollNav>
+        <Serch></Serch>
+        <Match></Match>
+        <LinkFooter></LinkFooter>
+    </div>
+</template>
+<script>
+import  SportsHead from './StSportsHead';
+import  Serch from './StSerch';
+import  Match from './StMatch';
+import  LinkFooter from './StLinkFooter';
+import  ScrollNav from './StScrollNav';
+export default {
+    name:'SoonStartl',
+    components:{
+        SportsHead,
+        Serch,
+        Match,
+        LinkFooter,
+        ScrollNav
+    }
+}
+</script>
+<style  scoped>
+
+</style>

+ 136 - 0
vue_sports/.svn/pristine/3d/3d665138abba0f96d070b8887949382a210983da.svn-base

@@ -0,0 +1,136 @@
+<template>
+  <div class="goal">
+    <yd-accordion :accordion="false">
+      <yd-accordion-item :title=" '进球' + ':' + '单/双'">
+        <div style="padding:0 0.32rem;" class="odds" v-for="(item,index) in list" :key="item.id" >
+          <div class="large" @click="toggle(index)">
+            <div>大</div>
+            <div class="ratio" :class = "sel[index] == true ? 'col':''">
+              <span class = "score">{{item.largeScore}}</span>
+              <span :class = "item.largeScore || item.smallScore == '' ? '':'largeScore'">{{item.largeOdds}}</span>
+            </div>
+          </div>
+          <div class="small" @click = smallToggle(index)>
+            <div>小</div>
+            <div class="ratio" :class = "smallStatus[index] == true ? 'col':''">
+              <span  class = "score">{{item.smallScore}}</span>
+              <span :class = "item.smallScore || item.smallScore == '' ? '':'smallScore'">{{item.smallOdds}}</span>
+            </div>
+          </div>
+        </div>
+      </yd-accordion-item>
+    </yd-accordion>
+  </div>
+</template>
+<script>
+export default {
+    // 进球大小单双数
+  data() {
+    return {
+      status: -1,
+      timer:0,
+      smallStatus : [],
+      sel : [],
+      list:[{
+        largeScore : '0.5/1',
+        largeOdds:'0.94',
+        smallScore : '0.5/1',
+        smallOdds:'0.94'
+      }]
+    }
+  },
+  mounted() {
+    for(var i = 0 ;i < this.list.length; i++){
+      this.sel.push(false)
+      this.smallStatus.push(false)
+    }
+  },
+  methods: {
+      toggle(index){
+          this.sel[index] = !this.sel[index]
+          this.$forceUpdate();
+        },
+          smallToggle(index){
+          this.smallStatus[index] = !this.smallStatus[index]
+          this.$forceUpdate();
+        }
+  },
+};
+</script>
+<style scoped>
+div /deep/ .yd-accordion-head {
+  padding: 0 0.32rem;
+  background: #F8F8F8;
+}
+div /deep/ .yd-accordion-title {
+  color: #333333;
+  font-size: 0.32rem;
+}
+div /deep/ .yd-accordion-head-arrow:after {
+  border: none;
+  width: 0.5rem;
+  height: 0.5rem;
+  background: url("../../assets/st-imges/xiangxia.png") no-repeat;
+  background-size:100% 100%;
+}
+.odds {
+  display: flex;
+  justify-content: space-between;
+  background: #f8f8f8;
+  text-align: left;
+
+}
+.odds .large,.odds .small {
+  width: 50%;
+  display: flex;
+  justify-content: space-between;
+  border-right: 1px solid #E4E4E4;
+  border-bottom: 1px solid #E4E4E4;
+}
+.odds .small{
+  border-right: none;
+  padding-left: 0.16rem;
+}
+.odds .large div,.odds .small div{
+  height: 0.88rem;
+
+  font-size: 0.24rem;
+  color: #333333;
+}
+.odds .large div:nth-child(1),.odds .small div:nth-child(1) {
+  line-height: 0.88rem;
+}
+.odds .large .ratio,.odds .small .ratio {
+  width: 1.07rem;
+  height: 0.76rem;
+  border: 2px solid #cecece;
+  border-radius: 0.1rem;
+  margin-top: 0.06rem;
+  text-align: center;
+  margin-right: 0.14rem;
+}
+.odds .large .ratio span,.odds .small .ratio span{
+  font-size: 0.24rem;
+
+}
+.odds .large .score,.odds .small .score{
+  color: #FD8F26;
+}
+.odds:nth-last-child(1) .large,.odds:nth-last-child(1) .small{
+  border-bottom: none;
+}
+.largeScore,.smallScore{
+  line-height: 0.76rem;
+}
+.col{
+  background: #F76649;
+  border: 2px solid #F76649 !important;
+}
+.col span{
+  color: #f4f4f4 !important;
+}
+.odds .score{
+  display: block;
+  margin-top:0.04rem;
+}
+</style>

BIN
vue_sports/.svn/pristine/3e/3e42ec49e909fa37e76c61972a8a712eef44f298.svn-base


BIN
vue_sports/.svn/pristine/41/41ed87d25c47d38f8add8bf90b1479c6b45222ac.svn-base


+ 4 - 0
vue_sports/.svn/pristine/42/42da40ce6f9e32fee2ff71498a322efc03ad1cb2.svn-base

@@ -0,0 +1,4 @@
+'use strict'
+module.exports = {
+  NODE_ENV: '"production"'
+}

+ 7 - 0
vue_sports/.svn/pristine/44/449b29e898778138d3fb28978b3038fdb5cd0a30.svn-base

@@ -0,0 +1,7 @@
+'use strict'
+const merge = require('webpack-merge')
+const prodEnv = require('./prod.env')
+
+module.exports = merge(prodEnv, {
+  NODE_ENV: '"development"'
+})

BIN
vue_sports/.svn/pristine/45/45391f1d7906ffd31448d36c6066fee614b1e9fe.svn-base


BIN
vue_sports/.svn/pristine/46/466359567488e1de931ed63a3e17a71d433d7ecc.svn-base


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
vue_sports/.svn/pristine/47/4728a165301481f2a1e9e4b85e985c110c165aa0.svn-base


BIN
vue_sports/.svn/pristine/47/47479c9b7e3c2718c0a00e25f0a2419030f56312.svn-base


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
vue_sports/.svn/pristine/49/49269101d6a8027959d523c621a7ced85368ab59.svn-base


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
vue_sports/.svn/pristine/49/49c7cd5bb4fa4bd4276c5d4561b2b6ab7365d5a9.svn-base


+ 124 - 0
vue_sports/.svn/pristine/4a/4a498756a455763d01de981d6ea1493289aa8d3d.svn-base

@@ -0,0 +1,124 @@
+<template>
+	<div>
+		<yd-accordion>
+			<!-- 组件标题 -->
+			<yd-accordion-item class="Match-game" :title="table.title">
+				<div style="background: #F0F0F0;">
+					<p
+						v-for="(i, index) in table.list"
+						class="list-row"
+						:style="i.num ? '' : 'background:#F8F8F8'"
+						:key="i.id"
+					>
+						<span class="The-club">{{ i.Theclub }}</span>
+						<span
+							:class="i.istrue== true ? 'active The-club-box' : 'The-club-box'"
+							@click="Theclubboxclick(index)"
+							:style="i.num ? '' : 'display:none'"
+						>
+							<i style="color: #FD8F26;" v-if="i.num">{{ i.num.num1 }}</i>
+							<i v-if="i.num"> {{ i.num.num2 }}</i>
+						</span>
+					</p>
+				</div>
+			</yd-accordion-item>
+		</yd-accordion>
+	</div>
+</template>
+
+<script>
+export default {
+	// 独赢上半场
+	data() {
+		return {
+			// 组件内部测试状态
+			table: {
+				title: '独赢-上半场',
+				list:[
+					{
+						id: 1,
+						Theclub: '哈萨克斯坦',
+						num: {
+							num1: '0.5/1',
+							num2: '0.94'
+						}
+					}
+				]
+			}
+		};
+	},
+	methods: {
+		// 点击更改组件选中状态
+		Theclubboxclick(num) {
+			// 更改组件是否选中
+			this.$set(this.table.list[num],"istrue",this.table.list[num].istrue==true?false:true)
+		}
+	},
+	mounted() {
+	}
+};
+</script>
+
+<style scoped>
+div /deep/ .yd-accordion-head-arrow:after {
+	border: none;
+	width: 0.5rem;
+	height: 0.5rem;
+	background: url(../../assets/st-imges/xiangxia.png) no-repeat;
+	background-size: 100% 100%;
+}
+div /deep/ .yd-accordion-head,
+div /deep/ .yd-accordion-head-content,
+div /deep/ .yd-accordion-title {
+	height: 0.88rem;
+	font-size: 0.32rem;
+	color:#333;
+  	background: #F8F8F8;
+}
+div /deep/ .yd-accordion-head {
+	padding: 0 0.32rem;
+}
+.Match-game {
+	position: relative;
+}
+.Match-game-stat {
+	position: absolute;
+	right: 1.35rem;
+	color: #fd8f26;
+	font-size: 0.23rem;
+}
+.list-row {
+	display: flex;
+	justify-content: space-between;
+	height: 0.87rem;
+	background: #f8f8f8;
+	border-bottom: 1px solid #e4e4e4;
+	align-items: center;
+	padding: 0 0.32rem;
+}
+.The-club{
+  font-size: .28rem
+}
+.The-club-box {
+	display: inline-block;
+	display: flex;
+	flex-wrap: wrap;
+	align-items: center;
+	justify-content: center;
+	width: 1.07rem;
+	height: 0.76rem;
+	font-size: 0.24rem;
+	padding: 0.1rem;
+	border: 2px solid #cecece;
+	border-radius: 0.1rem;
+	margin-right: 0.1rem;
+}
+.active {
+	background: #F76649;
+	padding: 0.1rem;
+	border: 2px solid #F76649;
+}
+.active i{
+	color: #f4f4f4 !important;
+}
+</style>

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
vue_sports/.svn/pristine/4f/4fee2a135aa23b2ae771e69dddaafbb757cc8a81.svn-base


+ 1 - 0
vue_sports/.svn/pristine/50/5019c0dd299a102665a342fe3d6154829da83bc3.svn-base

@@ -0,0 +1 @@
+<!DOCTYPE html><html><head><meta charset=utf-8><meta content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0" name=viewport><script src=//unpkg.com/vue-ydui/dist/ydui.flexible.js></script><title>vue_sports</title><link href=./static/css/app.3fb7f421dc044f126c6188b9d130865a.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.d40115b43e12b906d094.js></script><script type=text/javascript src=./static/js/vendor.6f21de5fe5b4e89c9363.js></script><script type=text/javascript src=./static/js/app.fd4bac4089debd2d8fad.js></script></body></html>

BIN
vue_sports/.svn/pristine/51/51ef1b03092b64500bb11862299434adfac3e008.svn-base


+ 124 - 0
vue_sports/.svn/pristine/52/52ac6d0fab020c4ff738ca9803e6704c070f8b00.svn-base

@@ -0,0 +1,124 @@
+<template>
+	<div>
+		<yd-accordion>
+			<!-- 组件标题 -->
+			<yd-accordion-item class="Match-game" :title="table.title">
+				<div style="background: #F0F0F0;">
+					<p
+						v-for="(i, index) in table.list"
+						class="list-row"
+						:style="i.num ? '' : 'background:#F8F8F8'"
+						:key="i.id"
+					>
+						<span class="The-club">{{ i.Theclub }}</span>
+						<span
+							:class="i.istrue== true ? 'active The-club-box' : 'The-club-box'"
+							@click="Theclubboxclick(index)"
+							:style="i.num ? '' : 'display:none'"
+						>
+							<i style="color: #FD8F26;" v-if="i.num">{{ i.num.num1 }}</i>
+							<i v-if="i.num"> {{ i.num.num2 }}</i>
+						</span>
+					</p>
+				</div>
+			</yd-accordion-item>
+		</yd-accordion>
+	</div>
+</template>
+
+<script>
+export default {
+	// 总进球数上半场
+	data() {
+		return {
+			// 组件内部测试状态
+			table: {
+				title: '总进球数-上半场',
+				list:[
+					{
+						id: 1,
+						Theclub: '哈萨克斯坦',
+						num: {
+							num1: '0.5/1',
+							num2: '0.94'
+						}
+					}
+				]
+			}
+		};
+	},
+	methods: {
+		// 点击更改组件选中状态
+		Theclubboxclick(num) {
+			// 更改组件是否选中
+			this.$set(this.table.list[num],"istrue",this.table.list[num].istrue==true?false:true)
+		}
+	},
+	mounted() {
+	}
+};
+</script>
+
+<style scoped>
+div /deep/ .yd-accordion-head-arrow:after {
+	border: none;
+	width: 0.5rem;
+	height: 0.5rem;
+	background: url(../../assets/st-imges/xiangxia.png) no-repeat;
+	background-size: 100% 100%;
+}
+div /deep/ .yd-accordion-head,
+div /deep/ .yd-accordion-head-content,
+div /deep/ .yd-accordion-title {
+	height: 0.88rem;
+	font-size: 0.32rem;
+	color:#333;
+  	background: #F8F8F8;
+}
+div /deep/ .yd-accordion-head {
+	padding: 0 0.32rem;
+}
+.Match-game {
+	position: relative;
+}
+.Match-game-stat {
+	position: absolute;
+	right: 1.35rem;
+	color: #fd8f26;
+	font-size: 0.23rem;
+}
+.list-row {
+	display: flex;
+	justify-content: space-between;
+	height: 0.87rem;
+	background: #f8f8f8;
+	border-bottom: 1px solid #e4e4e4;
+	align-items: center;
+	padding: 0 0.32rem;
+}
+.The-club{
+  font-size: .28rem
+}
+.The-club-box {
+	display: inline-block;
+	display: flex;
+	flex-wrap: wrap;
+	align-items: center;
+	justify-content: center;
+	width: 1.07rem;
+	height: 0.76rem;
+	font-size: 0.24rem;
+	padding: 0.1rem;
+	border: 2px solid #cecece;
+	border-radius: 0.1rem;
+	margin-right: 0.1rem;
+}
+.active {
+	background: #F76649;
+	padding: 0.1rem;
+	border: 2px solid #F76649;
+}
+.active i{
+	color: #f4f4f4 !important;
+}
+</style>

+ 66 - 0
vue_sports/.svn/pristine/53/530242330e796a8a580121cd73a8dbd71f274643.svn-base

@@ -0,0 +1,66 @@
+{
+  "name": "vue_sports",
+  "version": "1.0.0",
+  "description": "A Vue.js project",
+  "author": "",
+  "private": true,
+  "scripts": {
+    "dev": "webpack-dev-server --inline --open --progress --config build/webpack.dev.conf.js",
+    "start": "npm run dev",
+    "build": "node build/build.js"
+  },
+  "dependencies": {
+    "vue": "^2.5.2",
+    "vue-router": "^3.0.1",
+    "vue-ydui": "^1.2.6",
+    "vuex": "^3.1.0",
+    "vant": "^1.5.7",
+    "axios": "^0.18.0"
+  },
+  "devDependencies": {
+    "autoprefixer": "^7.1.2",
+    "babel-core": "^6.22.1",
+    "babel-helper-vue-jsx-merge-props": "^2.0.3",
+    "babel-loader": "^7.1.1",
+    "babel-plugin-syntax-jsx": "^6.18.0",
+    "babel-plugin-transform-runtime": "^6.22.0",
+    "babel-plugin-transform-vue-jsx": "^3.5.0",
+    "babel-preset-env": "^1.3.2",
+    "babel-preset-stage-2": "^6.22.0",
+    "chalk": "^2.0.1",
+    "copy-webpack-plugin": "^4.0.1",
+    "css-loader": "^0.28.0",
+    "extract-text-webpack-plugin": "^3.0.0",
+    "file-loader": "^1.1.4",
+    "friendly-errors-webpack-plugin": "^1.6.1",
+    "html-webpack-plugin": "^2.30.1",
+    "node-notifier": "^5.1.2",
+    "optimize-css-assets-webpack-plugin": "^3.2.0",
+    "ora": "^1.2.0",
+    "portfinder": "^1.0.13",
+    "postcss-import": "^11.0.0",
+    "postcss-loader": "^2.0.8",
+    "postcss-url": "^7.2.1",
+    "rimraf": "^2.6.0",
+    "semver": "^5.3.0",
+    "shelljs": "^0.7.6",
+    "uglifyjs-webpack-plugin": "^1.1.1",
+    "url-loader": "^0.5.8",
+    "vue-loader": "^13.3.0",
+    "vue-style-loader": "^3.0.1",
+    "vue-template-compiler": "^2.5.2",
+    "webpack": "^3.6.0",
+    "webpack-bundle-analyzer": "^2.9.0",
+    "webpack-dev-server": "^2.9.1",
+    "webpack-merge": "^4.1.0"
+  },
+  "engines": {
+    "node": ">= 6.0.0",
+    "npm": ">= 3.0.0"
+  },
+  "browserslist": [
+    "> 1%",
+    "last 2 versions",
+    "not ie <= 8"
+  ]
+}

BIN
vue_sports/.svn/pristine/55/552f1a67979c8a5481816a6d5f78125710d1ae5f.svn-base


BIN
vue_sports/.svn/pristine/56/56c61b04271f6a2a56faa5a5467f4c287a1a8493.svn-base


+ 145 - 0
vue_sports/.svn/pristine/56/56fbdb705764b6dfafcd8ddf5336eb3152afff87.svn-base

@@ -0,0 +1,145 @@
+'use strict'
+const path = require('path')
+const utils = require('./utils')
+const webpack = require('webpack')
+const config = require('../config')
+const merge = require('webpack-merge')
+const baseWebpackConfig = require('./webpack.base.conf')
+const CopyWebpackPlugin = require('copy-webpack-plugin')
+const HtmlWebpackPlugin = require('html-webpack-plugin')
+const ExtractTextPlugin = require('extract-text-webpack-plugin')
+const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
+const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
+
+const env = require('../config/prod.env')
+
+const webpackConfig = merge(baseWebpackConfig, {
+  module: {
+    rules: utils.styleLoaders({
+      sourceMap: config.build.productionSourceMap,
+      extract: true,
+      usePostCSS: true
+    })
+  },
+  devtool: config.build.productionSourceMap ? config.build.devtool : false,
+  output: {
+    path: config.build.assetsRoot,
+    filename: utils.assetsPath('js/[name].[chunkhash].js'),
+    chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
+  },
+  plugins: [
+    // http://vuejs.github.io/vue-loader/en/workflow/production.html
+    new webpack.DefinePlugin({
+      'process.env': env
+    }),
+    new UglifyJsPlugin({
+      uglifyOptions: {
+        compress: {
+          warnings: false
+        }
+      },
+      sourceMap: config.build.productionSourceMap,
+      parallel: true
+    }),
+    // extract css into its own file
+    new ExtractTextPlugin({
+      filename: utils.assetsPath('css/[name].[contenthash].css'),
+      // Setting the following option to `false` will not extract CSS from codesplit chunks.
+      // Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack.
+      // It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`, 
+      // increasing file size: https://github.com/vuejs-templates/webpack/issues/1110
+      allChunks: true,
+    }),
+    // Compress extracted CSS. We are using this plugin so that possible
+    // duplicated CSS from different components can be deduped.
+    new OptimizeCSSPlugin({
+      cssProcessorOptions: config.build.productionSourceMap
+        ? { safe: true, map: { inline: false } }
+        : { safe: true }
+    }),
+    // generate dist index.html with correct asset hash for caching.
+    // you can customize output by editing /index.html
+    // see https://github.com/ampedandwired/html-webpack-plugin
+    new HtmlWebpackPlugin({
+      filename: config.build.index,
+      template: 'index.html',
+      inject: true,
+      minify: {
+        removeComments: true,
+        collapseWhitespace: true,
+        removeAttributeQuotes: true
+        // more options:
+        // https://github.com/kangax/html-minifier#options-quick-reference
+      },
+      // necessary to consistently work with multiple chunks via CommonsChunkPlugin
+      chunksSortMode: 'dependency'
+    }),
+    // keep module.id stable when vendor modules does not change
+    new webpack.HashedModuleIdsPlugin(),
+    // enable scope hoisting
+    new webpack.optimize.ModuleConcatenationPlugin(),
+    // split vendor js into its own file
+    new webpack.optimize.CommonsChunkPlugin({
+      name: 'vendor',
+      minChunks (module) {
+        // any required modules inside node_modules are extracted to vendor
+        return (
+          module.resource &&
+          /\.js$/.test(module.resource) &&
+          module.resource.indexOf(
+            path.join(__dirname, '../node_modules')
+          ) === 0
+        )
+      }
+    }),
+    // extract webpack runtime and module manifest to its own file in order to
+    // prevent vendor hash from being updated whenever app bundle is updated
+    new webpack.optimize.CommonsChunkPlugin({
+      name: 'manifest',
+      minChunks: Infinity
+    }),
+    // This instance extracts shared chunks from code splitted chunks and bundles them
+    // in a separate chunk, similar to the vendor chunk
+    // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk
+    new webpack.optimize.CommonsChunkPlugin({
+      name: 'app',
+      async: 'vendor-async',
+      children: true,
+      minChunks: 3
+    }),
+
+    // copy custom static assets
+    new CopyWebpackPlugin([
+      {
+        from: path.resolve(__dirname, '../static'),
+        to: config.build.assetsSubDirectory,
+        ignore: ['.*']
+      }
+    ])
+  ]
+})
+
+if (config.build.productionGzip) {
+  const CompressionWebpackPlugin = require('compression-webpack-plugin')
+
+  webpackConfig.plugins.push(
+    new CompressionWebpackPlugin({
+      asset: '[path].gz[query]',
+      algorithm: 'gzip',
+      test: new RegExp(
+        '\\.(' +
+        config.build.productionGzipExtensions.join('|') +
+        ')$'
+      ),
+      threshold: 10240,
+      minRatio: 0.8
+    })
+  )
+}
+
+if (config.build.bundleAnalyzerReport) {
+  const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
+  webpackConfig.plugins.push(new BundleAnalyzerPlugin())
+}
+
+module.exports = webpackConfig

+ 136 - 0
vue_sports/.svn/pristine/57/5785bc9c63958ab580b07e3cfbb7f009883374b6.svn-base

@@ -0,0 +1,136 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import publicFun from '@/assets/publicFunction';
+Vue.use(Vuex);
+/**
+ * 设置全局访问的state对象
+ */
+const state={
+    gameRatio:'', //玩法比率数据
+    activity:publicFun.getCache('activity'),//活动类别
+    ballId:publicFun.getCache('ballId'),//球类Id
+    show:'',//Loading组件的状态显隐
+    isShow:false,//登录按钮点击显示登录页
+    rgShow:false,//注册组件显示
+    macth_id:publicFun.getCache('macth_id'),//赛事id
+    betting:JSON.parse(publicFun.getCache('betting')),//投注数据
+    isBetting:publicFun.getCache('isBetting'),//是否展示投注窗口
+    deleteType:'',//投注框数据删除id或类型
+}
+
+/**
+ * 实时监听state里面值的变法(最新变法)
+ */
+const getters={
+    getGameRatio(state){
+       return state.gameRatio;
+    },
+    getActivity(state){
+        return state.activity;
+    },
+    getBallId(state){
+        return state.ballId;
+    },
+    getShow(state){
+        return  state.show;
+    },
+    getRgShow(state){
+        return state.rgShow;
+    },
+    getMatchId(state){
+        return state.macth_id;
+    },
+    getBetting(state){
+        return state.betting;
+    },
+    getIsBetting(state){
+        return state.isBetting;
+    },
+    getDeleteType(state){
+        return state.deleteType;
+    }
+
+}
+/**
+ * 设置对外可调用的方法
+ */
+const mutations = {
+    newGameRatio(state,val){
+        //publicFun.getCache('activity')
+        state.gameRatio = val; 
+    },
+    newActivity(state,val){
+        state.activity = val;
+        publicFun.setCache('activity',val)
+    },
+    newBallId(state,val){
+        state.ballId = val;
+        publicFun.setCache('ballId',val)
+    },
+    newShow(state,val){
+        state.show = val;
+    },
+    newisShow(state,val){
+        state.isShow = val;
+    },
+    newRgShow(state,val){
+        state.rgShow = val;
+    },
+    newMacth_id(state,val){
+        state.macth_id = val;
+        publicFun.setCache('macth_id',val);
+    },
+    newBetting(state,val){
+        state.betting = val;
+        publicFun.setCache('betting',val);
+    },
+    newIsBetting(state,val){
+        state.isBetting = val;
+        publicFun.setCache('isBetting',val);
+    },
+    newDeleteType(state,val){
+        state.deleteType = val;
+    },
+}
+/**
+ * 这里面的方法是用来异步触发mutations里面的方法
+ */
+const actions={
+    GETGAMERATIO(context,val){
+        context.commit('newGameRatio',val)
+    },
+    GETACTIVITY(context,val){
+        context.commit('newActivity',val);
+    },
+    GET_BALL_ID(context,val){
+        context.commit('newBallId',val);
+    },
+    GETSHOW(context,val){
+        context.commit('newShow',val)
+    },
+    GET_ISSHOW(context,val){
+        context.commit('newisShow',val)
+    },
+    GETRGSHOW(context,val){
+        context.commit('newRgShow',val)
+    },
+    MACTH_ID(context,val){
+        context.commit('newMacth_id',val)
+    },
+    BETTING(context,val){
+        context.commit('newBetting',val)
+    },
+    ISBETTING(context,val){
+        context.commit('newIsBetting',val)
+    },
+    DEL_TYPE(context,val){
+        context.commit('newDeleteType',val)
+    }
+}
+const store =new Vuex.Store({
+    state,
+    getters,
+    mutations,
+    actions
+});
+export default store;

BIN
vue_sports/.svn/pristine/58/58129cf47db4233d8f8f0d07a94696f608d7caf1.svn-base


+ 152 - 0
vue_sports/.svn/pristine/59/59d06e8ad46363743333c1164ef2e0e5c1c3ee64.svn-base

@@ -0,0 +1,152 @@
+<template>
+	<div>
+		<yd-accordion>
+			<!-- 组件标题 -->
+			<yd-accordion-item class="Match-game" :title="table.title">
+				<!-- 组件计数单元 -->
+				<div slot="txt" class="Match-game-stat" v-if="table.census">
+					当前总数:{{ table.census }}
+				</div>
+				<div style="background: #F0F0F0;">
+					<p
+						v-for="(i, index) in table.list"
+						class="list-row"
+						:style="i.num ? '' : 'background:#F8F8F8'"
+						:key="i.id"
+					>
+						<span class="The-club">{{ i.Theclub }}</span>
+						<span
+							:class="i.istrue== true ? 'active The-club-box' : 'The-club-box'"
+							@click="Theclubboxclick(index)"
+							:style="i.num ? '' : 'display:none'"
+						>
+							<i style="color: #FD8F26;" v-if="i.num">{{ i.num.num1 }}</i>
+							<i v-if="i.num"> {{ i.num.num2 }}</i>
+						</span>
+					</p>
+				</div>
+			</yd-accordion-item>
+		</yd-accordion>
+	</div>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			// 组件内部测试状态
+			table: {
+				title: '角球:让球-上半场',
+				census:'',
+				list:[
+					{
+						id: 1,
+						Theclub: '哈萨克斯坦',
+						num: {
+							num1: '0.5/1',
+							num2: '0.94'
+						}
+					},
+					{
+						id: 2,
+						Theclub: '马德里体育会',
+						num: {
+							num1: '',
+							num2: '0.94'
+						}
+					},
+					{
+						id: 3,
+						Theclub: '哈萨克斯坦',
+						num: {
+							num1: '0.5/1',
+							num2: '0.94'
+						}
+					},
+					{
+						id: 4,
+						Theclub: '马德里体育会',
+						num: {
+							num1: '',
+							num2: '0.94'
+						}
+					}
+				]
+			}
+		};
+	},
+	methods: {
+		// 点击更改组件选中状态
+		Theclubboxclick(num) {
+			// 更改组件是否选中
+			this.$set(this.table.list[num],"istrue",this.table.list[num].istrue==true?false:true)
+		}
+	},
+	mounted() {
+	}
+};
+</script>
+
+<style scoped>
+div /deep/ .yd-accordion-head-arrow:after {
+	border: none;
+	width: 0.5rem;
+	height: 0.5rem;
+	background: url(../../assets/st-imges/xiangxia.png) no-repeat;
+	background-size: 100% 100%;
+}
+div /deep/ .yd-accordion-head,
+div /deep/ .yd-accordion-head-content,
+div /deep/ .yd-accordion-title {
+	height: 0.88rem;
+	font-size: 0.32rem;
+	color:#333;
+  	background: #F8F8F8;
+}
+div /deep/ .yd-accordion-head {
+	padding: 0 0.32rem;
+}
+.Match-game {
+	position: relative;
+}
+.Match-game-stat {
+	position: absolute;
+	right: 1.35rem;
+	color: #fd8f26;
+	font-size: 0.23rem;
+}
+.list-row {
+	display: flex;
+	justify-content: space-between;
+	height: 0.87rem;
+	background: #f8f8f8;
+	border-bottom: 1px solid #e4e4e4;
+	align-items: center;
+	padding: 0 0.32rem;
+}
+.The-club{
+  font-size: .28rem
+}
+.The-club-box {
+	display: inline-block;
+	display: flex;
+	flex-wrap: wrap;
+	align-items: center;
+	justify-content: center;
+	width: 1.07rem;
+	height: 0.76rem;
+	font-size: 0.24rem;
+	padding: 0.1rem;
+	border: 2px solid #cecece;
+	border-radius: 0.1rem;
+	margin-right: 0.1rem;
+}
+.active {
+	background: #F76649;
+	padding: 0.1rem;
+	border: 2px solid #F76649;
+}
+.active i{
+	color: #f4f4f4 !important;
+}
+</style>

+ 333 - 0
vue_sports/.svn/pristine/59/59f27e8ea6202421ce28773d0f12be595723317d.svn-base

@@ -0,0 +1,333 @@
+<template>
+  <div>
+    <div v-if="isShow">
+      <div v-for="(items,index) in list" :key="items.id" class="mg">
+        <!-- <div v-for="items in list[index]" :key="items.id"> -->
+        <div class="row allAlignment box center">
+          <span>{{items.leagueName}}</span>
+          <div class="row Match-title-num">
+            <span>{{items.matchNum}}</span>
+          </div>
+        </div>
+        <div class="Match-box">
+          <div v-for="(item,index) in items.matchData" :key="item.id" class="Match-box">
+            <div v-for="(itemList,index) in items.matchData[index]" :key="itemList.id">
+              <div class="row allAlignment Match-box-top">
+                <div class="Match-box-top-left">
+                  <span>{{itemList.match_date}}</span>
+                  <span>{{itemList.match_time}}</span>
+                </div>
+                <div class="Match-box-top-right row">
+                  <span style="margin-right: .1rem;" class="Match-box-top-num">{{itemList.tag}}</span>
+                  <span style="margin-right: .1rem;">让球</span>
+                  <span style="margin-right: .1rem;">大小</span>
+                </div>
+              </div>
+              <div class="row allAlignment center">
+                <div class="column average name-box">
+                  <div>{{itemList.home_team}}</div>
+                  <div>{{itemList.guest_team}}</div>
+                </div>
+                <div class="Match-list-box row item-center average">
+                  <div v-for="(odds,i) in itemList.oddsData[0]" :key="odds.id" class="match-list">
+                    <div
+                      @click="isclick(index,i)"
+                      class="column center"
+                      :class="items.istrue==i?'active':''"
+                    >
+                      <span style="color:#FD8F26">{{odds.condition}}</span>
+                      <span>{{odds.odds}}</span>
+                    </div>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <!-- 1x2 -->
+    <div v-if="!isShow">
+      <div v-for="(item,index) in list" :key="item.id">
+        <div class="row allAlignment haderBox center">
+          <span>{{item.leagueName}}</span>
+          <div class="Match-title-num">
+            <span>{{item.matchNum}}</span>
+          </div>
+        </div>
+        <div v-for="(items,$index) in item.matchData" :key="items.id">
+          <div v-for="itemList in item.matchData[$index]" :key="itemList.id">
+            <div class="box">
+              <div class="row allAlignment item-center top-box">
+                <span>
+                  <i>{{itemList.match_process}}</i>
+                  <b style="color:#F76649;font-weight: normal;">{{itemList.match_time}}</b>
+                </span>
+                <span class="top-num">{{itemList.tag}}</span>
+              </div>
+            </div>
+            <div class="box-bottom">
+              <div class="box row item-center main-box">
+                <span class="num-box" style="color:#eb921e">{{itemList.home_score}}</span>
+                &nbsp;&nbsp;{{itemList.home_team}}
+              </div>
+              <div class="box row item-center main-box">
+                <span class="num-box" style="color:#eb921e">{{itemList.guest_score}}</span>
+                &nbsp;&nbsp;{{itemList.guest_team}}
+              </div>
+              <div class="footBox">
+                <div
+                  class="box row allAlignment bottom-box center"
+                  v-for="(odds,idx) in itemList.oddsData[1]"
+                  :key="odds.id"
+                >
+                  <div
+                    class="item-center bottom-num"
+                    :class="item.istrueA==true?'active':''"
+                    @click="isclick(idx,1)"
+                  >
+                    <p style="color:#eb921e">{{odds.condition}}</p>
+                    <p>{{odds.odds}}</p>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <!-- 独赢盘 -->
+    
+    <div v-if="noData">
+      <NotOpend :title="this.info"/>
+    </div>
+  </div>
+</template>
+
+<script>
+import "../css/index.css";
+import Bus from "../assets/bus.js";
+import NotOpend from "@/components/StNotOpend";
+export default {
+  props: ["gameCode", "name"],
+  data() {
+    return {
+      isShow: true,
+      list: "",
+      data: {},
+      data2: [],
+      info: "没有相关比赛信息",
+      noData: false
+    };
+  },
+  components: {
+    NotOpend
+  },
+  methods: {
+    isclick(i, num) {
+      this.$set(this.data.list[i], "istrue", (this.data.list[i].istrue = num));
+    },
+    // 点击事件确认选中
+    isclick(index, num) {
+      if (num == 1) {
+        this.$set(
+          this.data2[index],
+          "istrueA",
+          this.data2[index].istrueA == true ? false : true
+        );
+      } else if (num == 2) {
+        this.$set(
+          this.data2[index],
+          "istrueB",
+          this.data2[index].istrueB == true ? false : true
+        );
+      } else if (num == 3) {
+        this.$set(
+          this.data2[index],
+          "istrueC",
+          this.data2[index].istrueC == true ? false : true
+        );
+      }
+    }
+  },
+  mounted() {
+    this.$store.dispatch("GETSHOW", true);
+    // 接收头部传过来的状态
+    Bus.$on("show", data => {
+      console.log("data", data);
+      this.isShow = data;
+    });
+    this.$http
+      .get(this.$ports.match.matchState, {
+        game_code: this.gameCode,
+        type_code: "StRollBall"
+      })
+      .then(res => {
+        this.$store.dispatch("GETSHOW", false);
+        if (res.status == 200 && res.data != [] && res.data != null) {
+          this.list = res.data.data;
+          console.log("list", this.list);
+          Bus.$emit("val", this.name);
+        } else {
+          this.list = "";
+          this.noData = true;
+        }
+      })
+      .catch(res => {});
+  }
+};
+</script>
+
+<style scoped>
+.box {
+  padding: 0 0.32rem;
+  height: 0.88rem;
+  font-size: 0.28rem;
+  background: #f4f4f4;
+}
+
+.mg {
+  margin-bottom: 0.1rem;
+}
+.Match-title-num {
+  width: 0.46rem;
+  height: 0.46rem;
+  align-items: center;
+  justify-content: center;
+  line-height: 0.46rem;
+  text-align: center;
+  background: #f76649;
+  font-size: 0.2rem;
+  border-radius: 50%;
+  color: #f5f5f5;
+}
+
+.Match-box-top-right > span {
+  width: 1.07rem;
+  text-align: center;
+}
+.Match-box {
+  padding: 0 0.32rem;
+}
+.name-box {
+  height: 1.76rem;
+}
+.Match-box-top {
+  height: 0.44rem;
+  line-height: 0.44rem;
+  border-bottom: 1px solid #e4e4e4;
+  font-size: 0.23rem;
+}
+.Match-box-top-num {
+  width: 0.64rem;
+  height: 0.44rem;
+  background: #ebebeb;
+  font-size: 0.24rem;
+}
+
+.Match-box {
+  margin-top: 0.12rem;
+  background: #f8f8f8;
+}
+.Match-list-box {
+  width: 35%;
+  height: 1.76rem;
+  flex-wrap: wrap;
+}
+.Match-list-box .match-list div {
+  width: 1.07rem;
+  height: 0.8rem;
+  border: 2px solid #cecece;
+  border-radius: 0.1rem;
+  flex-wrap: wrap;
+}
+.active {
+  background: #e4e4e4;
+}
+/* 1x2 */
+.top-box {
+  height: 0.44rem;
+  font-size: 0.24rem;
+  background: #fff;
+  border-bottom: 1px solid #e4e4e4;
+}
+.box-bottom {
+  /* height: 2.9rem;  */
+}
+.top-num {
+  display: inline-block;
+  width: 0.64rem;
+  height: 0.44rem;
+  line-height: 0.44rem;
+  color: #000000;
+  text-align: center;
+  background: #ebebeb;
+  font-size: 0.24rem;
+}
+.box {
+  padding: 0 0.32rem;
+  background: #fff;
+}
+.Match-title-num {
+  width: 0.46rem;
+  height: 0.46rem;
+  line-height: 0.46rem;
+  text-align: center;
+  background: #f76649;
+  font-size: 0.26rem;
+  border-radius: 50%;
+  color: #e4e4e4;
+}
+.haderBox {
+  padding: 0 0.32rem;
+  height: 0.88rem;
+  font-size: 0.32rem;
+  background: #f8f8f8;
+}
+.main-box {
+  height: 0.9rem;
+  background: #fff;
+  font-size: 0.28rem;
+}
+.bottom-box {
+  height: 1.1rem;
+  background: #fff;
+  font-size: 0.24rem;
+}
+.bottom-box div {
+  width: 1.07rem;
+  height: 0.76rem;
+  border: 2px solid #cecece;
+  border-radius: 0.1rem;
+  font-size: 0.24rem;
+}
+.bottom-num {
+  padding: 0.1rem;
+  text-align: center;
+}
+.active {
+  background: #f76649;
+  border: 2px solid #f76649 !important;
+}
+.active > p {
+  color: #e4e4e4 !important;
+}
+.num-box {
+  width: 0.66rem;
+  height: 0.34rem;
+  background: #f76649;
+  border-radius: 0.17rem;
+  color: #f5f5f5 !important;
+  line-height: 0.34rem;
+  text-align: center;
+}
+.footBox {
+  display: flex;
+  flex-wrap: wrap;
+  align-items: center;
+}
+.footBox .box {
+  width: 33%;
+  text-align: center;
+}
+</style>

+ 29 - 0
vue_sports/.svn/pristine/5c/5c20ed128c3c148f34020bac73e1fff684c7e9f7.svn-base

@@ -0,0 +1,29 @@
+<template>
+    <div>
+        <SportsHead></SportsHead>
+        <ScrollNav></ScrollNav>
+        <Serch></Serch>
+        <Match></Match>
+        <LinkFooter></LinkFooter>
+    </div>
+</template>
+<script>
+import  SportsHead from '../../../components/StSportsHead';
+import  Serch from '../../../components/StSerch';
+import  Match from '../../../components/StMatch';
+import  LinkFooter from '../../../components/StLinkFooter';
+import  ScrollNav from '../../../components/StScrollNav';
+export default {
+    name:'Home',
+    components:{
+        SportsHead,
+        Serch,
+        Match,
+        LinkFooter,
+        ScrollNav
+    }
+}
+</script>
+<style  scoped>
+
+</style>

BIN
vue_sports/.svn/pristine/5d/5df6b8ca8aeaab1942007f8a3f4969216413655c.svn-base


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
vue_sports/.svn/pristine/5e/5e545bc6089b5a25f662cc948c335c7f039bf73c.svn-base


+ 296 - 0
vue_sports/.svn/pristine/5e/5ee89398615e5331db94c41f3a020e4259143c89.svn-base

@@ -0,0 +1,296 @@
+<template>
+	<div>
+			<div class="Match-title">{{data.title}}<p class="Match-title-num">{{data.num}}</p></div>
+			<div class="Match" v-for="(i,index) in data.FootballMatch" :key = "i.id">
+				<div class="Match-top">
+					<div class="Match-top-left">
+						{{i.date}}&emsp;<span class="Match-top-name">{{i.time}}</span>
+					</div>
+					<div class="Match-top-left-right">
+						<span class="Match-top-num">{{i.num}}></span>
+						<span>让球</span>
+						<span>大小</span>
+					</div>
+				</div>
+				<div class="Match-bottom">
+					<div class="Match-bottom-home">
+						<div class="Match-bottom-home-left">
+							<span>{{i.home.title}}</span>
+						</div>
+						<div class="Match-bottom-home-right">
+							<div :class="{active:index == isActive&&isnum == 1}" @click="onhome(index,1)">
+								<span>{{i.home.concede}}</span>
+							</div>
+							<div :class="{active:index == isActive&&isnum == 2}" @click="onhome(index,2)">
+								<span class="sizehomeA"><i>{{i.home.size}}</i>{{i.home.sizetop}}</span>
+								<sapn class="sizehomeB">{{i.home.sizebtm}}</sapn>
+							</div>
+						</div>
+					</div>
+					<div class="Match-bottom-away">
+						<div class="Match-bottom-away-left">
+							<span>{{i.away.title}}</span>
+							
+						</div>
+						<div class="Match-bottom-away-right">
+							<div :class="{active:index == isActive&&isnum == 3}" @click="onhome(index,3)">
+								<span style="display: block;width: 100%;text-align: center;color: #FD8F26;">{{i.away.concedetop}}</span>
+								<span>{{i.concedeawaybtm}}</span>
+							</div>
+							<div :class="{active:index == isActive&&isnum == 4}" @click="onhome(index,4)">
+								<span class="sizeawayA"><i>{{i.away.size}}</i>{{i.away.sizetop}}</span>
+								<sapn class="sizeawayB">{{i.away.sizebtm}}</sapn>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+	</div>
+</template>
+
+<script>
+	
+	export default {
+		data() {
+			return {
+				
+				isActive:null,
+				isnum:null,
+				data:{
+					title:"欧洲足球锦标赛2020外围赛",
+					num:"22",
+					FootballMatch:[
+					{
+						date:"21/03",
+						time:"11:00",
+						num:"70",
+						home:{
+							title:"哈萨克斯坦",
+							concede:"0.81",
+							size:"大",
+							sizetop:"2/2.5",
+							sizebtm:"1.12",
+							},
+						away:{
+							title:"苏格兰",
+							concedetop:"05/1",
+							concedebtm:"1.09",
+							size:"大",
+							sizetop:"2/2.5",
+							sizebtm:"1.12",
+						},
+					},
+								{
+						date:"21/03",
+						time:"11:00",
+						num:"70",
+						home:{
+							title:"哈萨克斯坦",
+							concede:"0.81",
+							size:"大",
+							sizetop:"2/2.5",
+							sizebtm:"1.12",
+							},
+						away:{
+							title:"苏格兰",
+							concedetop:"05/1",
+							concedebtm:"1.09",
+							size:"大",
+							sizetop:"2/2.5",
+							sizebtm:"1.12",
+						},
+					},
+									{
+						date:"21/03",
+						time:"11:00",
+						num:"70",
+						home:{
+							title:"哈萨克斯坦",
+							concede:"0.81",
+							size:"大",
+							sizetop:"2/2.5",
+							sizebtm:"1.12",
+							},
+						away:{
+							title:"苏格兰",
+							concedetop:"05/1",
+							concedebtm:"1.09",
+							size:"大",
+							sizetop:"2/2.5",
+							sizebtm:"1.12",
+						},
+					}
+				]
+				}
+				
+			}
+		},
+		methods: {
+			onhome(index,isnum) {
+				this.isActive=index
+				this.isnum=isnum
+			},
+			
+		},
+	}
+</script>
+
+<style scoped="scoped">
+	.Match-title{
+	display:flex;
+	justify-content:space-between;
+	align-items: center;
+	height: 0.88rem;
+	font-size: .28rem;
+
+	padding-left: 0.32rem;
+	margin-bottom: 0.12rem;
+	background: #F8F8F8
+}
+.Match-title-num{
+	width: .3rem;
+	height: .3rem;
+	background: #FD8F26;
+	font-size: .16rem;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	border-radius: 50%;
+	margin-right: .68rem;
+	color: #F5F5F5;
+}
+
+	.Match{
+		background: #fff;
+		margin-top: 0.25rem;
+	}
+	.Match-top{
+		height:0.75rem;
+		border-bottom: 1px solid #e4e4e4;
+		display: flex;
+		justify-content:space-between;
+		align-content: center;
+		font-size: 0.25rem;
+		
+	}
+	.Match-top-left{
+		width: 40%;
+		height: 100%;
+		padding-left: 0.75rem;
+		align-items: center;
+		line-height: 0.75rem;
+		}
+		.Match-top-name{
+			color: #fd8f26;
+		}
+	.Match-top-left-right{
+		width: 60%;
+		height: 100%;
+		padding-right: 0.75rem;
+		line-height: 0.75rem;
+		display: flex;
+		justify-content: space-around;
+	}
+	.Match-top-num{
+		display: inline-block;
+		width: 1rem;
+		height: 0.75rem;
+		line-height: 0.75rem;
+		background: #ebebeb;
+		text-align: center;
+	}
+	.Match-bottom{
+		height: 2.5rem;
+		display: flex;
+		justify-content:space-between;
+		flex-wrap: wrap;
+		padding: 0 0.75rem 0 0.75rem;
+	}
+	.Match-bottom-home,.Match-bottom-away{
+		height: 50%;
+		width: 100%;
+		display: flex;
+		justify-content: space-between;
+		
+	}
+	.Match-bottom-home div{
+		height: 100%;
+	}
+	.Match-bottom-home-left{
+		height: 100%;
+		display: flex;
+		align-items: center;
+		color: #333333;
+		align-content: left;
+		font-size: 0.25rem;
+	}
+	.Match-bottom-home-right{
+		width: 37%;
+		display: flex;
+		justify-content: space-around;
+		align-items: center;
+		flex-wrap: wrap;
+		}
+	.Match-bottom-home-right div{
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		flex-wrap: wrap;
+		width: 1rem;
+		height: 0.8rem;
+		border:1px solid #e4e4e4;
+		margin-top: 0.1rem;
+		border-radius: 0.1rem;
+		font-size: 0.25rem;
+		
+	}
+	.Match-bottom-home-right div i{
+		font-style: normal;
+		color: #aaaaaa;
+	}
+	.sizehomeA{
+		color: #fd8f26;
+	}
+	
+	.Match-bottom-away div{
+		height: 100%;
+	}
+	.Match-bottom-away-left{
+		height: 100%;
+		display: flex;
+		align-items: center;
+		color: #333333;
+		align-content: left;
+		font-size: 0.25rem;
+	}
+	.Match-bottom-away-right{
+		width: 37%;
+		display: flex;
+		justify-content: space-around;
+		align-items: center;
+		flex-wrap: wrap;
+		}
+	.Match-bottom-away-right div{
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		flex-wrap: wrap;
+		width: 1rem;
+		height: 0.8rem;
+		border:1px solid #e4e4e4;
+		margin-top: 0.1rem;
+		border-radius: 0.1rem;
+		font-size: 0.25rem;
+		
+	}
+	.Match-bottom-away-right div i{
+		font-style: normal;
+		color: #aaaaaa;
+	}
+	.sizeawayA{
+		color: #fd8f26;
+	}
+	.active{
+		background-color: #e4e4e4;
+	}
+</style>

BIN
vue_sports/.svn/pristine/5f/5fce7a6a13fcb59bf27d824bea7ad3fbe5904587.svn-base


BIN
vue_sports/.svn/pristine/60/60649015c00d857951ec4957dcc3a2965c22a77d.svn-base


+ 212 - 0
vue_sports/.svn/pristine/60/60760fc9b18b77975a6f96906b50208ca9955421.svn-base

@@ -0,0 +1,212 @@
+<template>
+  <div>
+    <div class="title" v-if="isShow">
+      <span style="font-size:.28rem;color:#F76649;">{{titel}}</span>
+    </div>
+    <div
+      v-for="(item,id) in data"
+      @click="getInfo(id,item.match_id)"
+      class="macth row allAlignment"
+      :key="id"
+      v-if="isShow"
+    >
+      <div class="row">
+        <div class="column allAlignment center">
+          <div class="score-icon row center">
+            <span style=" margin:0.07rem; ">{{item.home_score}}</span>
+          </div>
+          <div class="score-icon row center">
+            <span style=" margin:0.07rem; ">{{item.guest_score}}</span>
+          </div>
+        </div>
+        <div class="team-box column allAlignment">
+          <span class="teamName">{{item.home_team}}</span>
+          <span style="font-size:0.2rem;padding:0.06rem 0 ;">vs</span>
+          <span class="teamName">{{item.guest_team}}</span>
+        </div>
+      </div>
+      <div class="row">
+        <div class="column allAlignment center">
+          <span class="macth-time">{{item.match_process}}</span>
+          <img src="../assets/st-imges/stadium.png" alt>
+          <span class="macth-time">{{item.match_time}}</span>
+        </div>
+      </div>
+    </div>
+    <div class="rolling" v-if="isShow">
+      <RollingBall :ballName="ball.name" :name="name" :index="ball.index" :gameCode="gameCode"></RollingBall>
+    </div>
+  </div>
+</template>
+<script>
+import "../css/index.css";
+import RollingBall from "./StRollingBall";
+import Loading from "./StLoading";
+export default {
+  name: "BasketballBlock",
+  props: ["type"],
+  data() {
+    return {
+      titel: "篮球",
+      timer: [], //存储时间
+      idx: "",
+      isShow : false,
+      gameCode: "", //球类别名
+      name: "", //球类名称传值
+
+      ball: {
+        name: "",
+        index: ""
+      },
+      data: ""
+    };
+  },
+  components: {
+    RollingBall,
+    Loading
+  },
+  methods: {
+    getInfo: function(val, match_id) {
+      console.log("id", val);
+      this.$router.push({
+        path: "./StRollBallBettingPage",
+        query: { gameCode: this.gameCode, match_id: match_id,status : 1, number: 0 ,home:true}
+      });
+    },
+    getAjax:function(){
+      if (this.type == 1) {
+      let _this = this;
+      // vuex传值,状态管理
+      this.$store.dispatch('GETSHOW',true);
+      this.$http.get(this.$ports.home.trollingBall).then(res => {
+        console.log("这是足球",res)
+          // this.sssd();
+        if (res.data.status == 1 && res.data.data.length > 0 && res.data.data.matchData.length > 0) {
+             this.isShow = true;
+          console.log('res', res.data)
+          this.data = res.data.data.matchData;
+          this.titel = res.data.data.gameName;
+          this.name = this.titel;
+          this.ball.name = "所有" + this.titel + "滚球";
+          this.ball.index = this.data.length;
+          this.gameCode = res.data.data.game_code;
+          let [f, s] = this.data[0].match_time.split(":");
+          _this.data.forEach(val => {
+            if (val.match_time != "") {
+              let [f, s] = val.match_time.split(":");
+              this.$public.timer(f, s, function(f, s) {
+                val.match_time = f + ":" + s;
+              });
+            }
+          });
+          
+           this.$store.dispatch('GETSHOW',false);
+        }else{
+            this.$store.dispatch('GETSHOW',false);
+
+        }
+      });
+    } else if (this.type == 2) {
+      this.$store.dispatch('GETSHOW',true);
+      this.$http.get(this.$ports.home.rollingBall).then(res => {
+        if (res.data.status == 1 && res.data.data.length > 0 && res.data.data.matchData.length > 0) {
+             this.isShow = true;
+            
+          
+          this.data = res.data.data.matchData;
+          this.titel = res.data.data.gameName;
+          this.name = this.titel;
+          this.ball.index = this.data.length;
+          this.ball.name = "所有" + this.titel + "滚球";
+          this.gameCode = res.data.data.game_code;
+           this.$store.dispatch('GETSHOW',false);
+        }else{
+            this.$store.dispatch('GETSHOW',false);
+        }
+      });
+    } else if (this.type == 3) {
+        this.$store.dispatch('GETSHOW',true);
+      this.$http.get(this.$ports.home.bqrollingBall).then(res => {
+        if (res.data.status == 1 && res.data.data.length > 0 && res.data.data.matchData.length > 0) {
+             this.isShow = true;
+        
+          this.data = res.data.data.matchData;
+          this.titel = res.data.data.gameName;
+          this.ball.index = this.data.length;
+          this.name = this.titel;
+         
+          this.ball.name = "所有" + this.titel + "滚球";
+          this.gameCode = res.data.data.game_code;
+            this.$store.dispatch('GETSHOW',false);
+        }else{
+           this.$store.dispatch('GETSHOW',false);
+        }
+      });
+    }
+  
+
+    },
+    // sssd:function(){
+        // let time=setInterval(function (params) {
+        // console.log('可爱多'); 
+        // this.$http.get(this.$ports.home.trollingBall).then(res=>{
+        // if(res.data.status==="1"&&res.data.msg==="成功"){
+        //     // 代码
+        //   console.log('计时器',res)
+        // }else{
+        //     console.log("请求失败")
+        // }
+      // })
+    //  },5000)
+    // }
+  },
+  mounted() {
+   
+    this.getAjax();
+  }
+};
+</script>
+<style scoped>
+/* .box{
+        border-bottom: 1px soild  red;
+    } */
+.macth {
+  height: 1.76rem;
+  margin-top: 0.2rem;
+  color: #333333;
+  background: #dcdcdc;
+  border-radius: 0.08rem;
+  /* border:2px solid #CECECE; */
+  padding: 0.24rem;
+  font-size: 0.22rem;
+}
+.score-icon {
+  min-width: 0.66rem;
+  background: #f76649;
+  border-radius: 0.17rem;
+  color: #f5f5f5;
+  font-size: 0.2rem;
+}
+.teamName {
+  font-size: 0.26rem;
+}
+.team-box {
+  margin-left: 0.29rem;
+  max-width: 3.4rem;
+}
+.macth-time {
+  font-size: 0.24rem;
+}
+.title {
+  padding-top: 0.1rem;
+  margin: 0.1rem 0;
+  font-size: 0.28rem;
+  color: #000000;
+}
+.rolling {
+  padding-top: 0.41rem;
+  padding-bottom: 0.46rem;
+}
+</style>
+
+

+ 77 - 0
vue_sports/.svn/pristine/62/628d45e780484f87168c06784a6b9705d82887d4.svn-base

@@ -0,0 +1,77 @@
+    <template lang="">
+        <div  @click="leagueBetting()" class = "rollingBtn ">
+              <p>{{this.ballName}}</p>
+              <div class='row center' >
+                  <span>{{this.index}}</span>
+              </div>
+        </div>
+    </template>
+<script>
+  import '../css/index.css';
+ 
+  export default {
+    props: ["name",'index','id','type','gameCode','ballName'],
+    data() {
+      return {
+      };
+    },
+    methods:{
+       leagueBetting:function(){
+          if(this.type=='Roll'){
+            this.$store.dispatch('GETACTIVITY',this.id);//将活动类别存入vuex里面
+            this.$store.dispatch('GET_BALL_ID',this.id);
+            this.$router.push({ path: '/StRollBallpage', query:{ titleNumber: e }});
+          }else{
+            this.$router.push({path:'/StLeagueBetting',query:{ id:this.index,gameCode:this.gameCode,name:this.name,number: 0 ,home:true}});
+          
+         }
+       }
+    }
+    
+  };
+</script>
+<style scoped>
+.rollingBtn {
+  width: 100%;
+  display: flex;
+  align-items: center;
+  margin: 0 auto;
+  position: relative;
+  font-size: 0.3rem;
+  
+}
+.rollingBtn>p {
+  width: 90%;
+  height: 0.7rem;
+  background:linear-gradient(to bottom,#DDDDDD,#cccccc);
+  text-align: center;
+  line-height: .7rem;
+  font-size: 0.3rem;
+  font-weight: bold;
+  border-radius: .08rem 0 0 .08rem;
+  color: #666666;
+  border:none;
+}
+.yd-btn-block {
+  margin-top: 0;
+}
+.rollingBtn>div {
+  position: absolute;
+  right: 0;
+  top: 0;
+  width: 10%;
+  height: 0.7rem;
+  line-height: 0.7rem;
+  background:linear-gradient( to top,#ddd,#ccc);
+  border-radius: 0px 0.08rem 0.08rem 0px;
+  color: #666666;
+}
+
+.rollingBtn div i {
+  display: inline-block;
+  width: 0.08rem;
+  height: 0.08rem;
+  background: #f5f5f5;
+  vertical-align: middle;
+}
+</style>

+ 127 - 0
vue_sports/.svn/pristine/63/6332d9cd510d3c389935109ebbf38e8b3dfd3a4b.svn-base

@@ -0,0 +1,127 @@
+<template>
+	<div>
+		<yd-accordion>
+			<!-- 组件标题 -->
+			<yd-accordion-item class="Match-game" :title="table.title">
+					<div slot="txt" class="Match-game-stat" v-if="table.census">
+					当前总数:{{ table.census }}
+				</div>
+				<div style="background: #F0F0F0;">
+					<p
+						v-for="(i, index) in table.list"
+						class="list-row"
+						:style="i.num ? '' : 'background:#F8F8F8'"
+						:key="i.id"
+					>
+						<span class="The-club">{{ i.Theclub }}</span>
+						<span
+							:class="i.istrue== true ? 'active The-club-box' : 'The-club-box'"
+							@click="Theclubboxclick(index)"
+							:style="i.num ? '' : 'display:none'"
+						>
+							<i style="color: #FD8F26;" v-if="i.num">{{ i.num.num1 }}</i>
+							<i v-if="i.num"> {{ i.num.num2 }}</i>
+						</span>
+					</p>
+				</div>
+			</yd-accordion-item>
+		</yd-accordion>
+	</div>
+</template>
+
+<script>
+export default {
+	// 独赢
+	data() {
+		return {
+			// 组件内部测试状态
+			table: {
+				title: '角球:独赢',
+				list:[
+					{
+						id: 1,
+						Theclub: '哈萨克斯坦',
+						num: {
+							num1: '0.5/1',
+							num2: '0.94'
+						}
+					}
+				]
+			}
+		};
+	},
+	methods: {
+		// 点击更改组件选中状态
+		Theclubboxclick(num) {
+			// 更改组件是否选中
+			this.$set(this.table.list[num],"istrue",this.table.list[num].istrue==true?false:true)
+		}
+	},
+	mounted() {
+	}
+};
+</script>
+
+<style scoped>
+div /deep/ .yd-accordion-head-arrow:after {
+	border: none;
+	width: 0.5rem;
+	height: 0.5rem;
+	background: url(../../assets/st-imges/xiangxia.png) no-repeat;
+	background-size: 100% 100%;
+}
+div /deep/ .yd-accordion-head,
+div /deep/ .yd-accordion-head-content,
+div /deep/ .yd-accordion-title {
+	height: 0.88rem;
+	font-size: 0.32rem;
+	color:#333;
+  	background: #F8F8F8;
+}
+div /deep/ .yd-accordion-head {
+	padding: 0 0.32rem;
+}
+.Match-game {
+	position: relative;
+}
+.Match-game-stat {
+	position: absolute;
+	right: 1.35rem;
+	color: #fd8f26;
+	font-size: 0.23rem;
+}
+.list-row {
+	display: flex;
+	justify-content: space-between;
+	height: 0.87rem;
+	background: #f8f8f8;
+	border-bottom: 1px solid #e4e4e4;
+	align-items: center;
+	padding: 0 0.32rem;
+}
+.The-club{
+  font-size: .28rem
+}
+.The-club-box {
+	display: inline-block;
+	display: flex;
+	flex-wrap: wrap;
+	align-items: center;
+	justify-content: center;
+	width: 1.07rem;
+	height: 0.76rem;
+	font-size: 0.24rem;
+	padding: 0.1rem;
+	border: 2px solid #cecece;
+	border-radius: 0.1rem;
+	margin-right: 0.1rem;
+}
+.active {
+	background: #F76649;
+	padding: 0.1rem;
+	border: 2px solid #F76649;
+}
+.active i{
+	color: #f4f4f4 !important;
+}
+</style>

+ 127 - 0
vue_sports/.svn/pristine/63/63716b1fb4eeeba04d34e425d44b5952be612159.svn-base

@@ -0,0 +1,127 @@
+<template>
+	<div>
+		<yd-accordion>
+			<!-- 组件标题 -->
+			<yd-accordion-item class="Match-game" :title="table.title">
+				<div slot="txt" class="Match-game-stat" v-if="table.census">
+					当前总数:{{ table.census }}
+				</div>
+				<div style="background: #F0F0F0;">
+					<p
+						v-for="(i, index) in table.list"
+						class="list-row"
+						:style="i.num ? '' : 'background:#F8F8F8'"
+						:key="i.id"
+					>
+						<span class="The-club">{{ i.Theclub }}</span>
+						<span
+							:class="i.istrue== true ? 'active The-club-box' : 'The-club-box'"
+							@click="Theclubboxclick(index)"
+							:style="i.num ? '' : 'display:none'"
+						>
+							<i style="color: #FD8F26;" v-if="i.num">{{ i.num.num1 }}</i>
+							<i v-if="i.num"> {{ i.num.num2 }}</i>
+						</span>
+					</p>
+				</div>
+			</yd-accordion-item>
+		</yd-accordion>
+	</div>
+</template>
+
+<script>
+export default {
+	// 角球大小
+	data() {
+		return {
+			// 组件内部测试状态
+			table: {
+				title: '角球:大/小',
+				list:[
+					{
+						id: 1,
+						Theclub: '哈萨克斯坦',
+						num: {
+							num1: '0.5/1',
+							num2: '0.94'
+						}
+					}
+				]
+			}
+		};
+	},
+	methods: {
+		// 点击更改组件选中状态
+		Theclubboxclick(num) {
+			// 更改组件是否选中
+			this.$set(this.table.list[num],"istrue",this.table.list[num].istrue==true?false:true)
+		}
+	},
+	mounted() {
+	}
+};
+</script>
+
+<style scoped>
+div /deep/ .yd-accordion-head-arrow:after {
+	border: none;
+	width: 0.5rem;
+	height: 0.5rem;
+	background: url(../../assets/st-imges/xiangxia.png) no-repeat;
+	background-size: 100% 100%;
+}
+div /deep/ .yd-accordion-head,
+div /deep/ .yd-accordion-head-content,
+div /deep/ .yd-accordion-title {
+	height: 0.88rem;
+	font-size: 0.32rem;
+	color:#333;
+  	background: #F8F8F8;
+}
+div /deep/ .yd-accordion-head {
+	padding: 0 0.32rem;
+}
+.Match-game {
+	position: relative;
+}
+.Match-game-stat {
+	position: absolute;
+	right: 1.35rem;
+	color: #fd8f26;
+	font-size: 0.23rem;
+}
+.list-row {
+	display: flex;
+	justify-content: space-between;
+	height: 0.87rem;
+	background: #f8f8f8;
+	border-bottom: 1px solid #e4e4e4;
+	align-items: center;
+	padding: 0 0.32rem;
+}
+.The-club{
+  font-size: .28rem
+}
+.The-club-box {
+	display: inline-block;
+	display: flex;
+	flex-wrap: wrap;
+	align-items: center;
+	justify-content: center;
+	width: 1.07rem;
+	height: 0.76rem;
+	font-size: 0.24rem;
+	padding: 0.1rem;
+	border: 2px solid #cecece;
+	border-radius: 0.1rem;
+	margin-right: 0.1rem;
+}
+.active {
+	background: #F76649;
+	padding: 0.1rem;
+	border: 2px solid #F76649;
+}
+.active i{
+	color: #f4f4f4 !important;
+}
+</style>

BIN
vue_sports/.svn/pristine/65/65ca60ae1aab140f95a0c91a8f7ae345e0cd0aeb.svn-base


+ 21 - 0
vue_sports/.svn/pristine/65/65d7ef17fbfc12ea204603982b25e5db355a96cd.svn-base

@@ -0,0 +1,21 @@
+# vue_sports
+
+> A Vue.js project
+
+## Build Setup
+
+``` bash
+# install dependencies
+npm install
+
+# serve with hot reload at localhost:8080
+npm run dev
+
+# build for production with minification
+npm run build
+
+# build for production and view the bundle analyzer report
+npm run build --report
+```
+
+For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).

+ 22 - 0
vue_sports/.svn/pristine/6a/6a00874ffbc475c538cecedf6540f4e8cff82dc4.svn-base

@@ -0,0 +1,22 @@
+<template>
+    <div class="notOpen">
+        <span>{{this.title}}</span>
+    </div>
+</template>
+<script>
+export default {
+    props: ['title'],
+}
+</script>
+<style scoped>
+    .notOpen{
+        text-align: left;
+       background:#6F6F6F;
+        padding-left: 0.33rem;
+        font-size: 0.24rem;
+        color: #B8B8B8;
+        height: 0.88rem;
+        line-height: 0.88rem;
+        text-align: center;
+    }
+</style>

BIN
vue_sports/.svn/pristine/70/70663016a94f5904cf320392c4633ece6234e8fe.svn-base


BIN
vue_sports/.svn/pristine/70/70f8ad793f0752cb8de884470b9e74af65f86a25.svn-base


BIN
vue_sports/.svn/pristine/72/7229465b2044d3fa18252931d94a1248e65b2576.svn-base


BIN
vue_sports/.svn/pristine/72/72748060a7ee95d2522613f95c08cc53b974037c.svn-base


+ 143 - 0
vue_sports/.svn/pristine/72/72d4f4d1587a566c1f218bbef3d84906409280de.svn-base

@@ -0,0 +1,143 @@
+<template>
+  <div id="NavSlide" class="row allAlignment center">
+    <div class="nav-div" :style="navWidth">
+      <nav>
+        <div
+          class="column center img-div"
+          v-for="(item,index) in data"
+          @click="toggle(item.game_code)"
+          :key="index"
+        >
+          <img class="img-box" :style="item.game_name=='冠军杯'?'width:.43rem;height:.48rem;margin:0 .43rem;':''" :src="item.url">
+          <span style="margin-top: 0.08rem;">{{item.game_name}}</span>
+        </div>
+      </nav>
+    </div>
+  </div>
+</template>
+<script>
+import "../css/index.css";
+export default {
+  name: "ScrollNav",
+  data() {
+    return {
+      data: "",
+      arr: [
+        {
+          url: require("../assets/st-imges/football.png"),
+          game_name: "足球"
+      
+        },
+        {
+          url: require("../assets/st-imges/basketball.png"),
+          game_name: "篮球"
+         
+        },
+        {
+          url: require("../assets/st-imges/baseball.png"),
+          game_name: "棒球"
+        
+        },
+        {
+          url: require("../assets/st-imges/tennis.png"),
+          game_name: "网球"
+         
+        },
+        {
+          url: require("../assets/st-imges/trophy.png"),
+          game_name: "冠军杯"
+         
+        }
+      ],
+      navWidth: {
+        width: "6.28rem;"
+      }
+    };
+  },
+  methods: {
+    toggle: function(id) {
+      this.$router.push({ path: "/AllMatch", query: { id: id ,home:true,scroll:2} });
+      this.$store.dispatch("GET_BALL_ID", id);
+    },
+    leftAdd: function() {},
+    rigthAdd: function() {}
+  },
+  mounted: function() {
+    if (window.innerWidth > 375) {
+      this.navWidth.width = window.innerWidth + "px";
+    }
+       this.$store.dispatch('GETSHOW',true);
+    this.$http.get(this.$ports.home.ballList).then(res => {
+    
+   
+      console.log('code',this.code)
+      if (res.data.status == 1) {
+        if (res.data.data[0].game_ico_url != "") {
+          this.data = res.data.data;
+        } else {
+          for (var i = 0; i < res.data.data.length; i++) {
+            this.arr[i].id = res.data.data[i].id;
+            this.arr[i].game_name = res.data.data[i].game_name;
+            this.arr[i].game_code = res.data.data[i].game_code;
+          }
+          this.data = this.arr;
+        }
+           this.$store.dispatch('GETSHOW',false);
+      }else{
+          this.$store.dispatch('GETSHOW',false);
+      }
+    });
+  }
+};
+</script>
+<style  scoped>
+#NavSlide {
+  height: 1rem;
+  background: #f8f8f8;
+}
+.nav-div {
+  width: 6.28rem;
+  /* overflow:hidden; */
+}
+.img-box {
+  width: 0.48rem;
+  height: 0.48rem;
+  margin: 0 0.35rem;
+}
+.img-div {
+  height: 1rem;
+}
+#NavSlide nav {
+  /* padding: 0 0.43rem; */
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: middle;
+  -ms-flex-align: middle;
+  align-items: middle;
+  overflow-x: auto;
+  background-color: #f8f8f8;
+  -webkit-overflow-scrolling: touch;
+}
+#NavSlide div {
+  text-align: center;
+  font-size: 0.2rem;
+  -ms-flex-negative: 0;
+  flex-shrink: 0;
+  /* padding:0 0.1rem;
+    margin:0 0.05rem; */
+  color: #000000;
+}
+/* #NavSlide p a{
+	color: #000000;
+	text-decoration: none;
+}*/
+#NavSlide p a.active {
+  color: #000000;
+}
+#NavSlide .fixadd {
+  position: absolute;
+  right: -4px;
+  background-color: #f8f8f8;
+}
+</style>

+ 127 - 0
vue_sports/.svn/pristine/73/73942d12a81f98b6c7aed20aeee1ec68403ac81d.svn-base

@@ -0,0 +1,127 @@
+<template>
+	<div>
+		<yd-accordion>
+			<!-- 组件标题 -->
+			<yd-accordion-item class="Match-game" :title="table.title">
+				<div slot="txt" class="Match-game-stat" v-if="table.census">
+					当前总数:{{ table.census }}
+				</div>
+				<div style="background: #F0F0F0;">
+					<p
+						v-for="(i, index) in table.list"
+						class="list-row"
+						:style="i.num ? '' : 'background:#F8F8F8'"
+						:key="i.id"
+					>
+						<span class="The-club">{{ i.Theclub }}</span>
+						<span
+							:class="i.istrue== true ? 'active The-club-box' : 'The-club-box'"
+							@click="Theclubboxclick(index)"
+							:style="i.num ? '' : 'display:none'"
+						>
+							<i style="color: #FD8F26;" v-if="i.num">{{ i.num.num1 }}</i>
+							<i v-if="i.num"> {{ i.num.num2 }}</i>
+						</span>
+					</p>
+				</div>
+			</yd-accordion-item>
+		</yd-accordion>
+	</div>
+</template>
+
+<script>
+export default {
+	// 角球大小
+	data() {
+		return {
+			// 组件内部测试状态
+			table: {
+				title: '球队进球数',
+				list:[
+					{
+						id: 1,
+						Theclub: '哈萨克斯坦',
+						num: {
+							num1: '0.5/1',
+							num2: '0.94'
+						}
+					}
+				]
+			}
+		};
+	},
+	methods: {
+		// 点击更改组件选中状态
+		Theclubboxclick(num) {
+			// 更改组件是否选中
+			this.$set(this.table.list[num],"istrue",this.table.list[num].istrue==true?false:true)
+		}
+	},
+	mounted() {
+	}
+};
+</script>
+
+<style scoped>
+div /deep/ .yd-accordion-head-arrow:after {
+	border: none;
+	width: 0.5rem;
+	height: 0.5rem;
+	background: url(../../assets/st-imges/xiangxia.png) no-repeat;
+	background-size: 100% 100%;
+}
+div /deep/ .yd-accordion-head,
+div /deep/ .yd-accordion-head-content,
+div /deep/ .yd-accordion-title {
+	height: 0.88rem;
+	font-size: 0.32rem;
+	color:#333;
+  	background: #F8F8F8;
+}
+div /deep/ .yd-accordion-head {
+	padding: 0 0.32rem;
+}
+.Match-game {
+	position: relative;
+}
+.Match-game-stat {
+	position: absolute;
+	right: 1.35rem;
+	color: #fd8f26;
+	font-size: 0.23rem;
+}
+.list-row {
+	display: flex;
+	justify-content: space-between;
+	height: 0.87rem;
+	background: #f8f8f8;
+	border-bottom: 1px solid #e4e4e4;
+	align-items: center;
+	padding: 0 0.32rem;
+}
+.The-club{
+  font-size: .28rem
+}
+.The-club-box {
+	display: inline-block;
+	display: flex;
+	flex-wrap: wrap;
+	align-items: center;
+	justify-content: center;
+	width: 1.07rem;
+	height: 0.76rem;
+	font-size: 0.24rem;
+	padding: 0.1rem;
+	border: 2px solid #cecece;
+	border-radius: 0.1rem;
+	margin-right: 0.1rem;
+}
+.active {
+	background: #F76649;
+	padding: 0.1rem;
+	border: 2px solid #F76649;
+}
+.active i{
+	color: #f4f4f4 !important;
+}
+</style>

BIN
vue_sports/.svn/pristine/75/7513f4b7f8aba9c45a9badaece8601c0b0b243ce.svn-base


+ 40 - 0
vue_sports/.svn/pristine/78/7820d0cfd1adf18d2234e920b872d1e95f1596e4.svn-base

@@ -0,0 +1,40 @@
+// The Vue build version to load with the `import` command
+// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
+import Vue from 'vue'
+import App from './App'
+import router from './router';
+import store from './store';
+import YDUI from 'vue-ydui'; /* 相当于import YDUI from 'vue-ydui/ydui.rem.js' */
+import 'vue-ydui/dist/ydui.rem.css';
+import publicFun from '@/assets/publicFunction';
+Vue.use(YDUI);
+
+Vue.config.productionTip = false;
+//  引入api
+import axios from 'axios' // 接口封装,请求拦截
+import ports from './api/ports.js'
+import http from './api/http.js'
+
+Vue.prototype.$ports = ports
+Vue.prototype.$http = http
+Vue.prototype.$public= publicFun
+
+// 使用之后报错,必须修改原型链
+// Vue.use(axios)
+Vue.prototype.$axios = axios
+// //设置默认活动状态
+// publicFun.setCache('activity','home');
+
+// //阻止报错[WDS] Disconnected!
+// if (module.hot) {
+//   module.hot.accept();
+// }
+
+/* eslint-disable no-new */
+new Vue({
+  el: '#app',
+  router,
+  store,
+  components: { App },
+  template: '<App/>'
+})

BIN
vue_sports/.svn/pristine/78/789d488d9e0b1f1c296fed67e886f343b0af3a3a.svn-base


Некоторые файлы не были показаны из-за большого количества измененных файлов