baaae23db96076a8fd786ccb5e6c553ca249acb3.svn-base 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. <template>
  2. <div>
  3. <div v-if="isData">
  4. <div v-if="obj.a ">
  5. <div class="tit">
  6. <span>进球:大/小</span>
  7. </div>
  8. <div class="playCode">
  9. <div class="row item-center">
  10. <div class="teamName wrap">大</div>
  11. <div class="row allAlignment">
  12. <div
  13. class="row center obbsBox rightAlignment"
  14. v-for="(item,index) in data"
  15. v-if="item.odds_code == 'gsb'"
  16. >
  17. <span class="condation">{{item.condition}}</span>
  18. <div
  19. class="odds row center"
  20. :class="{chooseStyle:item.isTrue,rising:item.change == 'rising',falling:item.change == 'falling'}"
  21. @click="betMethod(index,item.id,'大','进球:大/小')"
  22. >
  23. <span>{{item.odds}}</span>
  24. </div>
  25. </div>
  26. </div>
  27. </div>
  28. <div class="row item-center">
  29. <div class="teamName wrap">小</div>
  30. <div class="row allAlignment">
  31. <div
  32. class="row center obbsBox rightAlignment"
  33. v-for="(item,index) in data"
  34. v-if="item.odds_code == 'gss'"
  35. >
  36. <span class="condation">{{item.condition}}</span>
  37. <div
  38. class="odds row center"
  39. :class="{chooseStyle:item.isTrue,rising:item.change == 'rising',falling:item.change == 'falling'}"
  40. @click="betMethod(index,item.id,'小','进球:大/小')"
  41. >
  42. <span>{{item.odds}}</span>
  43. </div>
  44. </div>
  45. </div>
  46. </div>
  47. </div>
  48. </div>
  49. <div v-if="obj.b ">
  50. <div class="tit">
  51. <span>进球:大/小-上半场</span>
  52. </div>
  53. <div class="playCode">
  54. <div class="row item-center">
  55. <div class="teamName wrap">大</div>
  56. <div class="row allAlignment">
  57. <div
  58. class="row center obbsBox rightAlignment"
  59. v-for="(item,index) in data"
  60. v-if="item.odds_code == 'gsb_h'"
  61. >
  62. <span class="condation">{{item.condition}}</span>
  63. <div
  64. class="odds row center"
  65. :class="{chooseStyle:item.isTrue,rising:item.change == 'rising',falling:item.change == 'falling'}"
  66. @click="betMethod(index,item.id,'大','进球:大/小-上半场')"
  67. >
  68. <span>{{item.odds}}</span>
  69. </div>
  70. </div>
  71. </div>
  72. </div>
  73. <div class="row item-center">
  74. <div class="teamName wrap">小</div>
  75. <div class="row allAlignment">
  76. <div
  77. class="row center obbsBox rightAlignment"
  78. v-for="(item,index) in data"
  79. v-if="item.odds_code == 'gss_h'"
  80. >
  81. <span class="condation">{{item.condition}}</span>
  82. <div
  83. class="odds row center"
  84. :class="{chooseStyle:item.isTrue,rising:item.change == 'rising',falling:item.change == 'falling'}"
  85. @click="betMethod(index,item.id,'小','进球:大/小-上半场')"
  86. >
  87. <span>{{item.odds}}</span>
  88. </div>
  89. </div>
  90. </div>
  91. </div>
  92. </div>
  93. </div>
  94. </div>
  95. </div>
  96. </template>
  97. <script>
  98. export default {
  99. data() {
  100. return {
  101. title: "GS",
  102. data: [], //数据源
  103. array: [], //测试
  104. isData: "", //
  105. guest_team: "", //客队名
  106. home_team: "", //主队名
  107. obj: "", //
  108. match_id: "",
  109. lg_id:'',
  110. };
  111. },
  112. /***
  113. * 方法
  114. */
  115. methods: {
  116. //玩法分类
  117. playGrouping(data) {
  118. let obj = {};
  119. let betting = this.$store.getters.getBetting;
  120. data.forEach(e => {
  121. if(betting.length > 0){
  122. for(let i= 0; i< betting.length; i++){
  123. if(betting[i].title =="GS" && betting[i].data.length >0){
  124. for(let j = 0 ; j < betting[i].data.length ; j++ ){
  125. if(betting[i].data[j].id == e.id){
  126. this.$set(e,'isTrue',true);
  127. //betting[i].data.splice(j,1);
  128. }
  129. }
  130. break;
  131. }
  132. }
  133. }
  134. e.lg_id = this.lg_id;
  135. if (e.odds_code == 'gsb' || e.odds_code == 'gss' ) {
  136. obj.a = true;
  137. } else if (e.odds_code.endsWith('_h')) {
  138. obj.b = true;
  139. }
  140. });
  141. this.obj = obj;
  142. },
  143. /*---------------------------------- */
  144. //玩法投注
  145. betMethod(index, id, name, playName) {
  146. if (this.data[index].isTrue) {
  147. this.$set(this.data[index], "isTrue", false);
  148. } else {
  149. this.$set(this.data[index], "isTrue", true);
  150. }
  151. //调用投注公共方法
  152. let betting = this.$store.getters.getBetting;
  153. let _this = this;
  154. let ballId = this.$store.getters.getBallCode;
  155. let teamName = {
  156. home: this.home_team,
  157. guest: this.guest_team
  158. };
  159. this.$public.publicBetMethod(this.data,this.title,id,index,betting,teamName,playName,name,this.match_id,ballId,this.limit,function(data, type) {
  160. if (type) {
  161. _this.$dialog.toast({ mes: "亲,超出表格上限啦。", timeout: 2000 });
  162. }
  163. _this.$store.dispatch("SET_BETTING", []);
  164. _this.$store.dispatch("SET_BETTING", data);
  165. }
  166. );
  167. }
  168. },
  169. /**
  170. * 计算属性
  171. */
  172. computed: {
  173. getGameRatio() {
  174. return this.$store.getters.getGameRatio;
  175. },
  176. //获取投注数据
  177. getBetting() {
  178. return this.$store.getters.getBetting;
  179. },
  180. //获取投注数据数量
  181. getLimit() {
  182. return this.$store.getters.getLimit;
  183. }
  184. },
  185. /**
  186. * 监听器
  187. */
  188. watch: {
  189. getGameRatio(val) {
  190. this.lg_id = val.lg_id
  191. this.match_id = val.match_id;
  192. this.guest_team = val.guest_team;
  193. this.home_team = val.home_team;
  194. val.oddsData.forEach(e => {
  195. // console.log(e[0].p_code)
  196. if (e[0].p_code == this.title) {
  197. this.data = e;
  198. this.isData = true;
  199. this.playGrouping(this.data);
  200. }
  201. });
  202. //console.log(this.data);
  203. },
  204. //投注数据监听和处理
  205. getBetting(val) {
  206. if (val.length > 0) {
  207. let id = this.$store.getters.getDeleteType;
  208. for (let i = 0; i < val.length; i++) {
  209. if (val[i].title == this.title) {
  210. for (let j = 0; j < this.data.length; j++) {
  211. if (this.data[j].id == id) {
  212. this.$set(this.data[j], "isTrue", false);
  213. break;
  214. }
  215. }
  216. break;
  217. }
  218. }
  219. } else {
  220. for (let j = 0; j < this.data.length; j++) {
  221. if (this.data[j].isTrue) {
  222. this.$set(this.data[j], "isTrue", false);
  223. }
  224. }
  225. }
  226. },
  227. //投注数量
  228. getLimit(val) {
  229. this.limit = val;
  230. }
  231. }
  232. };
  233. </script>
  234. <style scoped>
  235. .tit {
  236. background: #cdcdcd;
  237. font-size: 0.14rem;
  238. padding: 0 0.1rem;
  239. height: 0.4rem;
  240. line-height: 0.4rem;
  241. color: #333;
  242. }
  243. .playCode {
  244. background: #fff;
  245. min-height: 0.8rem;
  246. padding: 0 .1rem;
  247. }
  248. .playCode > div {
  249. min-height: 0.4rem;
  250. font-size: 0.14rem;
  251. }
  252. .obbsBox {
  253. width: 1.3rem;
  254. }
  255. .teamName {
  256. width: 1.5rem;
  257. }
  258. .odds {
  259. width: 0.48rem;
  260. height: 0.3rem;
  261. border: 0.01rem solid #ccc;
  262. line-height: 0.3rem;
  263. text-align: center;
  264. border-radius: 0.05rem;
  265. cursor: pointer;
  266. }
  267. .odds:hover,
  268. .odds:hover {
  269. background: #ddd;
  270. color: #f76649;
  271. }
  272. .condation {
  273. color: #f76649;
  274. font-weight: bold;
  275. margin-right: .1rem;
  276. }
  277. .guest .odds span {
  278. line-height: 0.44rem;
  279. }
  280. </style>