78a3157e707073f8bb3dcd4e6eefa0c7d2aa5567.svn-base 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374
  1. <template>
  2. <div>
  3. <div v-if=" obj.a">
  4. <!-- 主 -->
  5. <div class="tit">
  6. <span>球队进球大小:{{home_team}}</span>
  7. </div>
  8. <div class="playCode">
  9. <div class="home flex">
  10. <span class="teamName">大</span>
  11. <div v-for="(item,index) in data" v-if="item.odds_code == 'tbhb'">
  12. <span class="condition">{{item.condition}}</span>
  13. <span
  14. class="odds"
  15. :class="{chooseStyle:item.isTrue,rising:item.change == 'rising',falling:item.change == 'falling'}"
  16. @click="betMethod(index,item.id,'大','球队进球大小:'+home_team)"
  17. >{{item.odds}}</span>
  18. </div>
  19. </div>
  20. <div class="guest flex">
  21. <span class="teamName">小</span>
  22. <div
  23. class="oddsBox"
  24. v-for="(item,index) in data"
  25. v-if="item.odds_code == 'tbhs'"
  26. >
  27. <span class="condition">{{item.condition}}</span>
  28. <span
  29. class="odds"
  30. :class="{chooseStyle:item.isTrue,rising:item.change == 'rising',falling:item.change == 'falling'}"
  31. @click="betMethod(index,item.id,'小','球队进球大小:'+home_team)"
  32. >{{item.odds}}</span>
  33. </div>
  34. </div>
  35. </div>
  36. <!-- 客 -->
  37. <div class="tit">
  38. <span>球队进球大小:{{guest_team}}</span>
  39. </div>
  40. <div class="playCode">
  41. <div class="home flex">
  42. <span class="teamName">大</span>
  43. <div v-for="(item,index) in data" v-if="item.odds_code == 'tbgb'">
  44. <span class="condition">{{item.condition}}</span>
  45. <span
  46. class="odds"
  47. :class="{chooseStyle:item.isTrue,rising:item.change == 'rising',falling:item.change == 'falling'}"
  48. @click="betMethod(index,item.id,'大','球队进球大小:'+guest_team)"
  49. >{{item.odds}}</span>
  50. </div>
  51. </div>
  52. <div class="guest flex">
  53. <span class="teamName">小</span>
  54. <div
  55. class="oddsBox"
  56. v-for="(item,index) in data"
  57. v-if="item.odds_code == 'tbgs'"
  58. >
  59. <span class="condition">{{item.condition}}</span>
  60. <span
  61. class="odds"
  62. :class="{chooseStyle:item.isTrue,rising:item.change == 'rising',falling:item.change == 'falling'}"
  63. @click="betMethod(index,item.id,'小','球队进球大小:'+guest_team)"
  64. >{{item.odds}}</span>
  65. </div>
  66. </div>
  67. </div>
  68. </div>
  69. <div v-if=" obj.b">
  70. <!-- 主 -->
  71. <div class="tit">
  72. <span>球队进球大小:{{home_team}}-上半场</span>
  73. </div>
  74. <div class="playCode">
  75. <div class="home flex">
  76. <span class="teamName">大</span>
  77. <div v-for="(item,index) in data" v-if="item.odds_code == 'tbhb_h'">
  78. <span class="condition">{{item.condition}}</span>
  79. <span
  80. class="odds"
  81. :class="{chooseStyle:item.isTrue,rising:item.change == 'rising',falling:item.change == 'falling'}"
  82. @click="betMethod(index,item.id,'大','球队进球大小:'+home_team+'-上半场')"
  83. >{{item.odds}}</span>
  84. </div>
  85. </div>
  86. <div class="guest flex">
  87. <span class="teamName">小</span>
  88. <div
  89. class="oddsBox"
  90. v-for="(item,index) in data"
  91. v-if="item.odds_code == 'tbhs_h'"
  92. >
  93. <span class="condition">{{item.condition}}</span>
  94. <span
  95. class="odds"
  96. :class="{chooseStyle:item.isTrue,rising:item.change == 'rising',falling:item.change == 'falling'}"
  97. @click="betMethod(index,item.id,'小','球队进球大小:'+home_team+'-上半场')"
  98. >{{item.odds}}</span>
  99. </div>
  100. </div>
  101. </div>
  102. <!-- 客 -->
  103. <div class="tit">
  104. <span>球队进球大小:{{guest_team}}-上半场</span>
  105. </div>
  106. <div class="playCode">
  107. <div class="home flex">
  108. <span class="teamName">大</span>
  109. <div v-for="(item,index) in data" v-if="item.odds_code == 'tbgb_h'">
  110. <span class="condition">{{item.condition}}</span>
  111. <span
  112. class="odds"
  113. :class="{chooseStyle:item.isTrue,rising:item.change == 'rising',falling:item.change == 'falling'}"
  114. @click="betMethod(index,item.id,'大','球队进球大小:'+guest_team+'-上半场')"
  115. >{{item.odds}}</span>
  116. </div>
  117. </div>
  118. <div class="guest flex">
  119. <span class="teamName">小</span>
  120. <div
  121. class="oddsBox"
  122. v-for="(item,index) in data"
  123. v-if="item.odds_code == 'tbgs_h'"
  124. >
  125. <span class="condition">{{item.condition}}</span>
  126. <span
  127. class="odds"
  128. :class="{chooseStyle:item.isTrue,rising:item.change == 'rising',falling:item.change == 'falling'}"
  129. @click="betMethod(index,item.id,'小','球队进球大小:'+guest_team+'-上半场')"
  130. >{{item.odds}}</span>
  131. </div>
  132. </div>
  133. </div>
  134. </div>
  135. </div>
  136. </template>
  137. <script>
  138. export default {
  139. data() {
  140. return {
  141. title: "TB",
  142. andShow: "",
  143. guest_team: "", //客队名
  144. home_team: "", //主队名
  145. obj: "",
  146. match_id: "",
  147. data: [],
  148. limit: "", //投注数量
  149. lg_id:'',
  150. };
  151. },
  152. /**
  153. * 页面初始化完成挂载
  154. */
  155. mounted() {
  156. this.andShow = this.$store.getters.getBallCode;
  157. },
  158. /***
  159. * 方法
  160. */
  161. methods: {
  162. //玩法分类
  163. playGrouping(data) {
  164. let obj = {};
  165. let betting = this.$store.getters.getBetting;
  166. data.forEach(e => {
  167. if(betting.length > 0){
  168. for(let i= 0; i< betting.length; i++){
  169. if(betting[i].title =="TB" && betting[i].data.length >0){
  170. for(let j = 0 ; j < betting[i].data.length ; j++ ){
  171. if(betting[i].data[j].id == e.id){
  172. this.$set(e,'isTrue',true);
  173. //betting[i].data.splice(j,1);
  174. }
  175. }
  176. break;
  177. }
  178. }
  179. }
  180. e.lg_id = this.lg_id;
  181. if ( e.odds_code =="tbhb" || e.odds_code == "tbhs" || e.odds_code == "tbgb" || e.odds_code == "tbgs") {
  182. obj.a = true;
  183. } else if (e.odds_code.endsWith("_h")) {
  184. obj.b = true;
  185. } else if (e.odds_code.endsWith("_1")) {
  186. obj.c = true;
  187. } else if (e.odds_code.endsWith("_2")) {
  188. obj.d = true;
  189. } else if (e.odds_code.endsWith("_3")) {
  190. obj.e = true;
  191. } else if (e.odds_code.endsWith("_4")) {
  192. obj.f = true;
  193. }
  194. });
  195. this.obj = obj;
  196. },
  197. /*---------------------------------- */
  198. //玩法投注
  199. betMethod(index, id, name, playName) {
  200. if (this.data[index].isTrue) {
  201. this.$set(this.data[index], "isTrue", false);
  202. this.$forceUpdate();
  203. } else {
  204. this.$set(this.data[index], "isTrue", true);
  205. this.$forceUpdate();
  206. }
  207. //调用投注公共方法
  208. let betting = this.$store.getters.getBetting;
  209. let _this = this;
  210. let ballId = this.$store.getters.getBallCode;
  211. let teamName = {
  212. home: this.home_team,
  213. guest: this.guest_team
  214. };
  215. this.$public.publicBetMethod(
  216. this.data,
  217. this.title,
  218. id,
  219. index,
  220. betting,
  221. teamName,
  222. playName,
  223. name,
  224. this.match_id,
  225. ballId,
  226. this.limit,
  227. function(data, type) {
  228. if (type) {
  229. _this.$dialog.toast({ mes: "亲,超出表格上限啦。", timeout: 2000 });
  230. }
  231. _this.$store.dispatch("SET_BETTING", []);
  232. _this.$store.dispatch("SET_BETTING", data);
  233. }
  234. );
  235. }
  236. },
  237. /**
  238. * 计算属性
  239. */
  240. computed: {
  241. getGameRatio() {
  242. return this.$store.getters.getGameRatio;
  243. },
  244. //获取投注数据
  245. getBetting() {
  246. return this.$store.getters.getBetting;
  247. },
  248. //获取投注数据数量
  249. getLimit() {
  250. return this.$store.getters.getLimit;
  251. }
  252. },
  253. /**
  254. * 监听器
  255. */
  256. watch: {
  257. getGameRatio(val) {
  258. this.lg_id = val.lg_id
  259. this.match_id = val.match_id;
  260. this.guest_team = val.guest_team;
  261. this.home_team = val.home_team;
  262. val.oddsData.forEach(e => {
  263. if (e[0].p_code == this.title) {
  264. this.data = e;
  265. this.playGrouping(this.data);
  266. //console.log('12',this.data);
  267. }
  268. });
  269. },
  270. //投注数据监听和处理
  271. //投注数据监听和处理
  272. getBetting(val) {
  273. if (val.length > 0) {
  274. let id = this.$store.getters.getDeleteType;
  275. for (let i = 0; i < val.length; i++) {
  276. if (val[i].title == this.title) {
  277. for (let j = 0; j < this.data.length; j++) {
  278. if (this.data[j].id == id) {
  279. this.$set(this.data[j], "isTrue", false);
  280. break;
  281. }
  282. }
  283. break;
  284. }
  285. }
  286. } else {
  287. for (let j = 0; j < this.data.length; j++) {
  288. if (this.data[j].isTrue) {
  289. this.$set(this.data[j], "isTrue", false);
  290. }
  291. }
  292. }
  293. },
  294. //投注数量
  295. getLimit(val) {
  296. this.limit = val;
  297. }
  298. }
  299. };
  300. </script>
  301. <style scoped>
  302. .flex {
  303. display: flex;
  304. justify-content: space-between;
  305. align-items: center;
  306. }
  307. .tit {
  308. background: #cdcdcd;
  309. font-size: 0.14rem;
  310. padding: 0 0.1rem;
  311. height: 0.4rem;
  312. line-height: 0.4rem;
  313. color: #333;
  314. }
  315. .playCode,
  316. .andCode {
  317. color: rgb(0, 0, 0);
  318. display: flex;
  319. }
  320. .playCode .home,
  321. .playCode .guest {
  322. height: 0.4rem;
  323. line-height: 0.4rem;
  324. width: 50%;
  325. padding: 0 0.2rem;
  326. font-size: 0.14rem;
  327. background: #fff;
  328. padding: 0 0 0 0.1rem;
  329. }
  330. .playCode .home {
  331. width: calc(50% - 1px);
  332. padding-right: 0.1rem;
  333. padding: 0 0.1rem;
  334. font-size: 0.14rem;
  335. border-right: 1px solid #e4e4e4;
  336. }
  337. .oddsBox {
  338. margin-right: 0.1rem;
  339. }
  340. .odds {
  341. display: inline-block;
  342. width: 0.48rem;
  343. height: 0.3rem;
  344. border: 0.01rem solid #ccc;
  345. line-height: 0.3rem;
  346. text-align: center;
  347. border-radius: 0.05rem;
  348. cursor: pointer;
  349. }
  350. .odds:hover {
  351. background: #ddd;
  352. color: #f76649;
  353. }
  354. .guest {
  355. padding-right: 0.1rem;
  356. }
  357. .home:hover,
  358. .guest:hover {
  359. background: #fff5e9;
  360. }
  361. .draw {
  362. width: 20%;
  363. background: #fff;
  364. padding: 0 0.1rem;
  365. border-right: 1px solid #e4e4e4;
  366. }
  367. .condition {
  368. color: #f76649;
  369. font-weight: bold;
  370. margin-right: .1rem;
  371. }
  372. </style>