4f70bbcb13848382748ecebc1f030dcfc66ae7e6.svn-base 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478
  1. <!--
  2. * @Description: In User Settings Edit
  3. * @Author: your name
  4. * @Date: 2019-08-26 10:58:22
  5. * @LastEditTime: 2019-08-27 15:30:40
  6. * @LastEditors: Please set LastEditors
  7. -->
  8. <template>
  9. <div>
  10. <!-- //v-for="(item,index) in data" -->
  11. <div v-if="isDisplay">
  12. <yd-accordion>
  13. <yd-accordion-item title="波胆" open>
  14. <div>
  15. <div class="rulesName row average">
  16. <div class="row item-center">{{home_team}}</div>
  17. <div class="row item-center">和局</div>
  18. <div class="row item-center">{{guest_team}}</div>
  19. </div>
  20. <div class="row grids average">
  21. <div class="column">
  22. <div class="gridsDiv row center" v-for="(item,index) in data.home " :key="item.id" v-if="data.home" >
  23. <div v-if="item.odds >0" class="column average minGrid" :class=" {trueSelected:item.isTrue,increased_color:item.change == 'add',reduce_color:item.change == 'red'}"@click="btnChoose(item.id,item.condition,item.odds,item.odds_only,item.p_code,match_id,item.odds_code,'波胆',item.condition,item.oddsType)" >
  24. <span style="color:#f76649 ">{{item.condition}}</span>
  25. <span>{{item.odds}}</span>
  26. </div>
  27. <div v-else class="minGrid column center">
  28. <img style="width: 0.7rem;height: 0.5rem;" src="@/assets/st-imges/mima.png"><img>
  29. </div>
  30. </div>
  31. </div>
  32. <div class="column middle">
  33. <div class="gridsDiv row center" v-for="(item,index) in data.arr " :key="item.id" v-if="data.arr" >
  34. <div v-if="item.odds >0" class="column average minGrid" :class="{trueSelected:item.isTrue,increased_color:item.change == 'add',reduce_color:item.change == 'red'}" @click="btnChoose(item.id,item.condition,item.odds,item.odds_only,item.p_code,match_id,item.odds_code,'波胆',item.condition,item.oddsType)" >
  35. <span style="color:#f76649 ">{{item.condition}}</span>
  36. <span>{{item.odds}}</span>
  37. </div>
  38. <div v-else class="minGrid column center">
  39. <img style="width: 0.7rem;height: 0.5rem;" src="@/assets/st-imges/mima.png"><img>
  40. </div>
  41. </div>
  42. </div>
  43. <div class="column">
  44. <div class="gridsDiv row center" v-for="(item,index) in data.goust " :key="item.id" v-if="data.goust" >
  45. <div v-if="item.odds >0" class="column average minGrid" :class="{trueSelected:item.isTrue,increased_color:item.change == 'add',reduce_color:item.change == 'red'}" @click="btnChoose(item.id,item.condition,item.odds,item.odds_only,item.p_code,match_id,item.odds_code,'波胆',item.condition,item.oddsType)" >
  46. <span style="color:#f76649 ">{{item.condition}}</span>
  47. <span>{{item.odds}}</span>
  48. </div>
  49. <div v-else class="minGrid column center">
  50. <img style="width: 0.7rem;height: 0.5rem;" src="@/assets/st-imges/mima.png"><img>
  51. </div>
  52. </div>
  53. </div>
  54. </div>
  55. <div style="background:#f8f8f8;">
  56. <div class="row rightAlignment center" style="height: 0.88rem;" v-for="(item,index) in data.other" :key="item.id" v-if="item.odds_code == 'bo'">
  57. <span>其他比分:</span>
  58. <div v-if="item.odds >0" class="minGrid minGridAll" :class=" item.isTrue ? 'trueSelected' :''" @click="btnChoose(item.id,'其他比分',item.odds,item.odds_only,item.p_code,match_id,item.odds_code,'波胆',item.condition,item.oddsType)" >
  59. {{item.odds}}
  60. </div>
  61. <div v-else class="minGrid minGridAll">
  62. <img style="width: 0.7rem;height: 0.5rem;" src="@/assets/st-imges/mima.png"><img>
  63. </div>
  64. </div>
  65. </div>
  66. </div>
  67. </yd-accordion-item>
  68. </yd-accordion>
  69. <yd-accordion>
  70. <yd-accordion-item title="波胆-上半场" open>
  71. <div>
  72. <div class="rulesName row average">
  73. <div class="row item-center">{{home_team}}</div>
  74. <div class="row item-center">和局</div>
  75. <div class="row item-center">{{guest_team}}</div>
  76. </div>
  77. <div class="row grids average">
  78. <div class="column">
  79. <div class="gridsDiv row center" v-for="(item,index) in data.home_h " :key="item.id" v-if="data.home_h" >
  80. <div v-if="item.odds >0" class="column average minGrid" :class="{trueSelected:item.isTrue,increased_color:item.change == 'add',reduce_color:item.change == 'red'}" @click="btnChoose(item.id,item.condition,item.odds,item.odds_only,item.p_code,match_id,item.odds_code,'波胆-上半场',item.condition,item.oddsType)">
  81. <span style="color:#f76649 ">{{item.condition}}</span>
  82. <span>{{item.odds}}</span>
  83. </div>
  84. <div v-else class="minGrid column center">
  85. <img style="width: 0.7rem;height: 0.5rem;" src="@/assets/st-imges/mima.png"><img>
  86. </div>
  87. </div>
  88. </div>
  89. <div class="column middle">
  90. <div class="gridsDiv row center" v-for="(item,index) in data.arr_h " :key="item.id" v-if="data.arr_h" >
  91. <div v-if="item.odds >0" class="column average minGrid" :class="{trueSelected:item.isTrue,increased_color:item.change == 'add',reduce_color:item.change == 'red'} " @click="btnChoose(item.id,item.condition,item.odds,item.odds_only,item.p_code,match_id,item.odds_code,'波胆-上半场',item.condition,item.oddsType)">
  92. <span style="color:#f76649">{{item.condition}}</span>
  93. <span>{{item.odds}}</span>
  94. </div>
  95. <div v-else class="minGrid column center">
  96. <img style="width: 0.7rem;height: 0.5rem;" src="@/assets/st-imges/mima.png"><img>
  97. </div>
  98. </div>
  99. </div>
  100. <div class="column">
  101. <div class="gridsDiv row center" v-for="(item,index) in data.goust_h " :key="item.id" v-if="data.goust_h">
  102. <div v-if="item.odds >0" class="column average minGrid" :class="{trueSelected:item.isTrue,increased_color:item.change == 'add',reduce_color:item.change == 'red'}" @click="btnChoose(item.id,item.condition,item.odds,item.odds_only,item.p_code,match_id,item.odds_code,'波胆-上半场',item.condition,item.oddsType)" >
  103. <span style="color:#f76649">{{item.condition}}</span>
  104. <span>{{item.odds}}</span>
  105. </div>
  106. <div v-else class="minGrid column center">
  107. <img style="width: 0.7rem;height: 0.5rem;" src="@/assets/st-imges/mima.png"><img>
  108. </div>
  109. </div>
  110. </div>
  111. </div>
  112. <div style="background:#f8f8f8;">
  113. <div class="row rightAlignment center" style="height: 0.88rem;" v-for="(item,index) in data.other " :key="item.id" v-if="item.odds_code.startsWith('bo_h')" >
  114. <span>其他比分:</span>
  115. <div v-if="item.odds >0" class="minGrid minGridAll" :class="item.isTrue ? 'trueSelected' :'' " @click="btnChoose(item.id,'其他比分',item.odds,item.odds_only,item.p_code,match_id,item.odds_code,'波胆-上半场',item.condition,item.oddsType)"
  116. >{{item.odds}}</div>
  117. <div v-else class="minGrid minGridAll">
  118. <img style="width: 0.7rem;height: 0.5rem;" src="@/assets/st-imges/mima.png"><img>
  119. </div>
  120. </div>
  121. </div>
  122. </div>
  123. </yd-accordion-item>
  124. </yd-accordion>
  125. </div>
  126. </div>
  127. </template>
  128. <script>
  129. import "../css/index.css";
  130. import Vue from "vue";
  131. import { Accordion, AccordionItem } from "vue-ydui/dist/lib.rem/accordion";
  132. Vue.component(Accordion.name, Accordion);
  133. Vue.component(AccordionItem.name, AccordionItem);
  134. export default {
  135. name: "WaveBladder",
  136. data() {
  137. return {
  138. title: "B",
  139. home_team: "",
  140. guest_team: "",
  141. isDisplay: false,
  142. data:{},
  143. match_id:'',
  144. lg_id:'',
  145. betting: [], //已投注倍率id集合
  146. dataNum: 10000 //对应的数据的下标
  147. };
  148. },
  149. methods: {
  150. /*---------------------------------------------------- */
  151. //玩法投注
  152. btnChoose: function(id,name,odds,odds_only,p_code,match_id,odds_code,play_name,condition='',oddsType,bettingTime='') {
  153. //console.log('我需要的',this.data)
  154. let _this = this;
  155. let bettingInfo = {
  156. id,
  157. home_team:this.home_team,
  158. guest_team:this.guest_team,
  159. name:'',
  160. odds,
  161. condition,
  162. odds_code,
  163. score:this.score,
  164. bettingTime,
  165. odds_only,
  166. odds_id:id,
  167. lg_id:this.lg_id,
  168. play_name,
  169. ballId:this.$store.getters.getBallId,
  170. p_code,
  171. match_id,
  172. oddsType,
  173. }
  174. let dataList = [];
  175. //重组数组
  176. dataList = dataList.concat(this.data.home).concat(this.data.home_h).concat(this.data.goust).concat(this.data.goust_h).concat(this.data.other)
  177. //调用玩法投注公共方法
  178. this.$public.bettingFunction(
  179. this.betting,
  180. bettingInfo,
  181. dataList,
  182. this.$store.getters.getBetting,
  183. this.title,
  184. this.dataNum,
  185. this.$store.getters.getLimit,
  186. function(res, type) {
  187. _this.$set(res, "isTrue", type);
  188. },
  189. function(data, val,type) {
  190. if(type) {
  191. _this.$dialog.alert({mes: '你的注单已达到上限啦!'});
  192. }
  193. _this.$store.dispatch("BETTING", []);
  194. _this.$store.dispatch("BETTING", data ? data : val);
  195. if(_this.$store.getters.getIsBetting == '100') return false
  196. _this.$store.dispatch("ISBETTING",'100')
  197. }
  198. );
  199. },
  200. //数据排序处理
  201. dataSorting(data){
  202. let arr = [],home = [],goust = [],other = [],arr_h = [],home_h = [],goust_h = [];
  203. data.forEach((res, i) => {
  204. let odds_code = res.odds_code;
  205. if (odds_code.startsWith("bo") == true || odds_code.startsWith("bo_h") == true) {
  206. other.push(res);
  207. }else{
  208. if (odds_code[1] - odds_code[2] < 0 && res.odds_code.endsWith("h") != true) {
  209. //客队排序
  210. goust.push(res);
  211. goust.sort((a, z) => {
  212. let str1 = a.condition.split("-");
  213. let str2 = z.condition.split("-");
  214. if (str1[1] - str2[1] != 0) {
  215. return str1[1] - str2[1];
  216. } else {
  217. return str1[0] - str2[0];
  218. }
  219. });
  220. } else if(odds_code[1] - odds_code[2] < 0 == true && res.odds_code.endsWith("h") == true){
  221. goust_h.push(res);
  222. //客队排序半场
  223. goust_h.sort((a, z) => {
  224. let str1 = a.condition.split("-");
  225. let str2 = z.condition.split("-");
  226. if (str1[1] - str2[1] != 0) {
  227. return str1[1] - str2[1];
  228. } else {
  229. return str1[0] - str2[0];
  230. }
  231. });
  232. }else if (odds_code[1] - odds_code[2] > 0 && res.odds_code.endsWith("h") != true ) {
  233. home.push(res);
  234. // 主队排序
  235. home.sort((a, z) => {
  236. let str1 = a.condition.split("-");
  237. let str2 = z.condition.split("-");
  238. if (str1[0] - str2[0] != 0) {
  239. return str1[0] - str2[0];
  240. } else {
  241. return str1[1] - str2[1];
  242. }
  243. });
  244. }else if(odds_code[1] - odds_code[2] > 0 && res.odds_code.endsWith("h") == true){
  245. home_h.push(res);
  246. // 主队排序半场
  247. home_h.sort((a, z) => {
  248. let str1 = a.condition.split("-");
  249. let str2 = z.condition.split("-");
  250. if (str1[0] - str2[0] != 0) {
  251. return str1[0] - str2[0];
  252. } else {
  253. return str1[1] - str2[1];
  254. }
  255. });
  256. }else if (odds_code[1] - odds_code[2] == 0 && res.odds_code.endsWith("h") != true) {
  257. arr.push(res);
  258. // 和排序
  259. arr.sort((a, z) => {
  260. let str1 = a.condition.split("-");
  261. let str2 = z.condition.split("-");
  262. return str1[0] - str2[0];
  263. });
  264. }else if (odds_code[1] - odds_code[2] == 0 && res.odds_code.endsWith("h") == true) {
  265. arr_h.push(res);
  266. // 和排序半场
  267. arr_h.sort((a, z) => {
  268. let str1 = a.condition.split("-");
  269. let str2 = z.condition.split("-");
  270. return str1[0] - str2[0];
  271. });
  272. }
  273. }
  274. });
  275. this.data= {home_h,home, goust,goust_h,arr,arr_h,other} //[...home, ...goust, ...arr, ...other];
  276. },
  277. //编辑数据
  278. loopEditor(data,val){
  279. if(data){
  280. data.forEach(e =>{
  281. if(val =='all'){
  282. this.$set(e, "isTrue", false);
  283. }else{
  284. if(e.id == val){
  285. this.$set(e, "isTrue", false);
  286. }
  287. }
  288. })
  289. }
  290. },
  291. //for编辑处理
  292. getisTrue(id){
  293. for(let i = 0 ;i < this.data.home.length ; i++){
  294. if (this.data.home[i].id == id) {
  295. this.$set(this.data.home[i], "isTrue", true);
  296. return false
  297. }
  298. }
  299. for(let i = 0 ;i < this.data.home_h.length ; i++){
  300. if (this.data.home_h[i].id == id) {
  301. this.$set(this.data.home_h[i], "isTrue", true);
  302. return false
  303. }
  304. }
  305. for(let i = 0 ;i < this.data.goust.length ; i++){
  306. if (this.data.goust[i].id == id) {
  307. this.$set(this.data.goust[i], "isTrue", true);
  308. return false
  309. }
  310. }
  311. for(let i = 0 ;i < this.data.goust_h.length ; i++){
  312. if (this.data.goust_h[i].id == id) {
  313. this.$set(this.data.goust_h[i], "isTrue", true);
  314. return false
  315. }
  316. }
  317. for(let i = 0 ;i < this.data.arr.length ; i++){
  318. if (this.data.arr[i].id == id) {
  319. this.$set(this.data.arr[i], "isTrue", true);
  320. return false
  321. }
  322. }
  323. for(let i = 0 ;i < this.data.arr_h.length ; i++){
  324. if (this.data.arr_h[i].id == id) {
  325. this.$set(this.data.arr_h[i], "isTrue", true);
  326. return false
  327. }
  328. }
  329. for(let i = 0 ;i < this.data.other.length ; i++){
  330. if (this.data.other[i].id == id) {
  331. this.$set(this.data.other[i], "isTrue", true);
  332. return false
  333. }
  334. }
  335. }
  336. },
  337. computed: {
  338. getUserIcons() {
  339. return this.$store.getters.getGameRatio;
  340. },
  341. getBetting() {
  342. return this.$store.getters.getBetting;
  343. },
  344. //获取投注框删除的投注信息
  345. getDeleteType(){
  346. return this.$store.getters.getDeleteType;
  347. },
  348. },
  349. watch: {
  350. getUserIcons(val) {
  351. this.match_id=val.match_id
  352. if (!val) return false;
  353. this.home_team = val.home_team;
  354. this.guest_team = val.guest_team;
  355. this.lg_id=val.lg_id;
  356. val.oddsData.forEach(res => {
  357. if (res[0].p_code == this.title) {
  358. this.isDisplay = true;
  359. console.log(res);
  360. this.dataSorting(res);
  361. //this.data = res;
  362. }
  363. });
  364. let _this =this;
  365. this.$public.getBettingId(this.$store.getters.getBetting,this.title,function(data,index){
  366. _this.betting = data;
  367. _this.dataNum = index;
  368. });
  369. if (this.dataNum != 10000) {
  370. this.betting.forEach(res => {
  371. this.getisTrue(res.id)
  372. });
  373. }
  374. },
  375. //获取已投注信息
  376. getBetting(val) {
  377. let _this =this;
  378. this.$public.getBettingId(this.$store.getters.getBetting,this.title,function(data,index){
  379. _this.betting = data;
  380. _this.dataNum = index;
  381. });
  382. },
  383. //监听投注框删除处理
  384. getDeleteType(val){
  385. this.loopEditor(this.data.home,val);
  386. this.loopEditor(this.data.goust,val);
  387. this.loopEditor(this.data.other,val);
  388. this.loopEditor(this.data.arr,val);
  389. this.loopEditor(this.data.arr_h,val);
  390. this.loopEditor(this.data.home_h,val);
  391. this.loopEditor(this.data.goust_h,val);
  392. }
  393. }
  394. };
  395. </script>
  396. <style scoped>
  397. div /deep/ .yd-accordion-head {
  398. padding: 0 0.32rem;
  399. background: #a0a0a0;
  400. }
  401. div /deep/ .yd-accordion-head:after{
  402. height: 0;
  403. }
  404. div /deep/ .yd-accordion-title {
  405. color: #FEFEFE;
  406. font-size: 0.28rem;
  407. }
  408. div /deep/ .yd-accordion-head-arrow:after {
  409. border: none;
  410. width: 0.5rem;
  411. height: 0.5rem;
  412. background: url("../assets/st-imges/xiangxia.png") no-repeat;
  413. background-size: 100% 100%;
  414. }
  415. .grids{
  416. width: 100%;
  417. }
  418. .grids div {
  419. background: #f4f4f4;
  420. }
  421. .trueSelected{
  422. color: #f4f4f4 !important
  423. }
  424. .middle {
  425. border-left: 1px solid #e4e4e4;
  426. border-right: 1px solid #e4e4e4;
  427. }
  428. .rulesName {
  429. font-size: 0.26rem;
  430. background: #bcbcbc;
  431. color: #333;
  432. }
  433. div /deep/ .yd-accordion-content:after{
  434. height: 0;
  435. }
  436. .gridsDiv,
  437. .rulesName div {
  438. border-bottom: 1px solid #e4e4e4;
  439. height: 0.88rem;
  440. justify-content: center;
  441. width: 2.49rem;
  442. }
  443. .minGrid {
  444. width: 1.07rem;
  445. height: 0.76rem;
  446. font-size: 0.24rem;
  447. text-align: center;
  448. border: 1px solid #cecece;
  449. border-radius: 0.1rem;
  450. }
  451. .minGrid span {
  452. font-size: 0.24rem;
  453. padding: 0.08rem 0;
  454. line-height: 0;
  455. }
  456. .minGridAll {
  457. margin-right: 0.69rem;
  458. line-height: 0.76rem;
  459. text-align: center;
  460. }
  461. .trueSelected {
  462. background: #f76649 !important;
  463. border: 2px solid #f76649;
  464. }
  465. .trueSelected span {
  466. color: #f4f4f4 !important;
  467. }
  468. </style>