5147c6950a2ef71bb362d65b297f170266508405.svn-base 14 KB

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