61d89094111e07848ac52d21e20759d01311789c.svn-base 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635
  1. <template>
  2. <div>
  3. <div class="serch row item-center allAlignment">
  4. <div class="row item-center">
  5. <div class="row item-center">
  6. <input
  7. class="fz14"
  8. type="text"
  9. placeholder="请输入球队名称"
  10. v-model="serchTxt"
  11. onkeyup="this.value=this.value.replace(/\s+/g,'')"
  12. color="#AAA"
  13. >
  14. <div class="row center serch-img pointer hover" @click="Serch()">
  15. <img src="@/assets/st-imges/serch.png" alt>
  16. </div>
  17. </div>
  18. <div class="row item-center">
  19. <div class="row center clear pointer hover br05 fz14" @click="clearSerchTxt()">清除</div>
  20. </div>
  21. </div>
  22. <div class="row center redraw pointer hover br05" @click="red()">
  23. <img src="@/assets/st-imges/redraw.png" alt>
  24. </div>
  25. </div>
  26. <div class="theBallSize">
  27. <div class="theBallSize-list" v-for="(item,index) in data" :key="index">
  28. <div class="theBallSize-list-title row allAlignment item-center pdg20">
  29. <span>{{item.leagueName}}</span>
  30. </div>
  31. <!-- 标题栏 -->
  32. <div v-for="(items,i) in item.matchData" :key="i">
  33. <div class="theBallSize-list-hader row pdg20">
  34. <div style="width:22%" class="row item-center allAlignment">
  35. <p style="width:100%;padding-right:.2rem;" class="row item-center average">
  36. <i>{{items.title}}</i>
  37. <span>{{items.match_process}}</span>
  38. <span style="color:#F76649" v-if="items.a_time !=null">{{items.a_time == 0 ? '' : items.a_time}}</span>
  39. <img style="width:.14rem;height:.14rem" src="@/assets/st-imges/shizhong.png">
  40. </p>
  41. <p
  42. style="font-size:.14rem;color:#fff"
  43. class="theBallSize-list-hader-num row center triangle"
  44. @click="getTournamentPlay(items.match_id)"
  45. >{{items.tag}} ></p>
  46. </div>
  47. <div style="width:35%" class="theBallSize-list-full">
  48. <div class="row center">全场</div>
  49. <div class="row allAlignment item-center" style="color:#999; padding:0 0.08rem">
  50. <div class="row center list-left">
  51. <span>让球</span>
  52. </div>
  53. <div class="row center list-right">
  54. <span>大小</span>
  55. </div>
  56. </div>
  57. </div>
  58. <div style="width:35%" class="theBallSize-list-full">
  59. <div class="row center">上半场</div>
  60. <div class="row allAlignment item-center pdg20" style="color:#999;padding:0 0.08rem">
  61. <div class="row center list-left">
  62. <span>让球</span>
  63. </div>
  64. <div class="row center list-right">
  65. <span>大小</span>
  66. </div>
  67. </div>
  68. </div>
  69. </div>
  70. <div class="theBallSize-list-body row pdg20" style="position: relative;">
  71. <div class="column allAlignment theBallSizeTeam">
  72. <span>
  73. <span style="color:#f76649;margin-right:5px;">{{items.home_score}}</span>
  74. {{items.home_team}}
  75. </span>
  76. <span>
  77. <span style="color: #f76649;margin-right:5px;">
  78. {{items.guest_score}}
  79. </span>
  80. {{items.guest_team}}
  81. </span>
  82. </div>
  83. <!-- 全场 -->
  84. <div
  85. class="row allAlignment"
  86. style="width:35%;padding: 0.08rem .25rem;border-right:.01rem solid #ededed"
  87. >
  88. <!--让球 -->
  89. <div class="column allAlignment">
  90. <div
  91. class="row rightAlignment"
  92. v-for="(e,idx) in items.oddsData"
  93. v-if="e.odds_code == 'coh'"
  94. >
  95. <div class="row center conditions">
  96. <span>{{e.condition}}</span>
  97. </div>
  98. <div class="theBallSize-list-txt" :class="{col:e.isTrue,rising:e.change == 'rising',falling:e.change == 'falling'}" @click="selection(index,i,idx,e.id,e.p_code,items.match_id,items.home_team,items.guest_team,items.home_team,'滚球')">
  99. <span>{{e.odds}}</span>
  100. </div>
  101. </div>
  102. <div
  103. class="row rightAlignment"
  104. v-for="(e,idx) in items.oddsData"
  105. v-if="e.odds_code == 'cog'"
  106. >
  107. <div class="row center conditions">
  108. <span>{{e.condition}}</span>
  109. </div>
  110. <div class="theBallSize-list-txt" :class="{col:e.isTrue,rising:e.change == 'rising',falling:e.change == 'falling'}" @click="selection(index,i,idx,e.id,e.p_code,items.match_id,items.home_team,items.guest_team,items.guest_team,'滚球')">
  111. <span>{{e.odds}}</span>
  112. </div>
  113. </div>
  114. </div>
  115. <!-- 大小 -->
  116. <div class="column allAlignment">
  117. <div
  118. class="row rightAlignment"
  119. v-for="(e,idx) in items.oddsData"
  120. v-if="e.odds_code == 'gsb'"
  121. >
  122. <div class="conditions row center">
  123. <span>大 {{e.condition}}</span>
  124. </div>
  125. <div class="theBallSize-list-txt" :class="{col:e.isTrue,rising:e.change == 'rising',falling:e.change == 'falling'}" @click="selection(index,i,idx,e.id,e.p_code,items.match_id,items.home_team,items.guest_team,'大','滚球')">
  126. <span>{{e.odds}}</span>
  127. </div>
  128. </div>
  129. <div
  130. class="row rightAlignment"
  131. v-for="(e,idx) in items.oddsData"
  132. v-if="e.odds_code == 'gss'"
  133. >
  134. <div class="conditions row center">
  135. <span>小 {{e.condition}}</span>
  136. </div>
  137. <div class="theBallSize-list-txt" :class="{col:e.isTrue,rising:e.change == 'rising',falling:e.change == 'falling'}" @click="selection(index,i,idx,e.id,e.p_code,items.match_id,items.home_team,items.guest_team,'小','滚球')">
  138. <span>{{e.odds}}</span>
  139. </div>
  140. </div>
  141. </div>
  142. </div>
  143. <!--半场 -->
  144. <div class="row allAlignment" style="width:35%;padding: 0.08rem .25rem;">
  145. <!--让球 -->
  146. <div class="column allAlignment">
  147. <div
  148. class="row rightAlignment"
  149. v-for="(e,idx) in items.oddsData"
  150. v-if="e.odds_code == 'coh_h'"
  151. >
  152. <div class="row center conditions">
  153. <span>{{e.condition}}</span>
  154. </div>
  155. <div class="theBallSize-list-txt" :class="{col:e.isTrue,rising:e.change == 'rising',falling:e.change == 'falling'}" @click="selection(index,i,idx,e.id,e.p_code,items.match_id,items.home_team,items.guest_team,items.home_team,'滚球')">
  156. <span>{{e.odds}}</span>
  157. </div>
  158. </div>
  159. <div
  160. class="row rightAlignment"
  161. v-for="(e,idx) in items.oddsData"
  162. v-if="e.odds_code == 'cog_h'"
  163. >
  164. <div class="row center conditions">
  165. <span>{{e.condition}}</span>
  166. </div>
  167. <div class="theBallSize-list-txt" :class="{col:e.isTrue,rising:e.change == 'rising',falling:e.change == 'falling'}" @click="selection(index,i,idx,e.id,e.p_code,items.match_id,items.home_team,items.guest_team,items.guest_team,'滚球')">
  168. <span>{{e.odds}}</span>
  169. </div>
  170. </div>
  171. </div>
  172. <!-- 大小 -->
  173. <div class="column allAlignment">
  174. <div
  175. class="row rightAlignment"
  176. v-for="(e,idx) in items.oddsData"
  177. v-if="e.odds_code == 'gsb_h'"
  178. >
  179. <div class="conditions row center">
  180. <span>大{{e.condition}}</span>
  181. </div>
  182. <div class="theBallSize-list-txt" :class="{col:e.isTrue,rising:e.change == 'rising',falling:e.change == 'falling'}" @click="selection(index,i,idx,e.id,e.p_code,items.match_id,items.home_team,items.guest_team,'大','滚球')">
  183. <span>{{e.odds}}</span>
  184. </div>
  185. </div>
  186. <div
  187. class="row rightAlignment"
  188. v-for="(e,idx) in items.oddsData"
  189. v-if="e.odds_code == 'gss_h'"
  190. >
  191. <div class="conditions row center">
  192. <span>小 {{e.condition}}</span>
  193. </div>
  194. <div class="theBallSize-list-txt" :class="{col:e.isTrue,rising:e.change == 'rising',falling:e.change == 'falling'}" @click="selection(index,i,idx,e.id,e.p_code,items.match_id,items.home_team,items.guest_team,'小','滚球')">
  195. <span>{{e.odds}}</span>
  196. </div>
  197. </div>
  198. </div>
  199. </div>
  200. <div @click="promptInfo()" class="right-img">
  201. <img style="margin-bottom:.1rem" src="@/assets/st-imges/TheGame.png">
  202. <br>
  203. <img src="@/assets/st-imges/TheScore.png">
  204. </div>
  205. </div>
  206. </div>
  207. </div>
  208. </div>
  209. <div v-if="noData">
  210. <noData/>
  211. </div>
  212. </div>
  213. </template>
  214. <script>
  215. import "@/css/index.css";
  216. import noData from '@/components/noData';
  217. export default {
  218. name: "theBallSize",
  219. components:{
  220. noData
  221. },
  222. data() {
  223. return {
  224. serchTxt: "",
  225. data: [], //数据
  226. pCode: this.$store.getters.getPaly_code, //传入接口的值
  227. activity: this.$store.getters.getActivity, //传入接口的值
  228. ballCode: this.$store.getters.getBallCode,
  229. noData : false, //暂无数据显示
  230. timers:true,
  231. lg_id:'',//联赛
  232. limit:'',
  233. }
  234. },
  235. methods: {
  236. // let BallCode = this.$store.getters.getBallCode;
  237. // let code = 10011;//默认足球
  238. // if(BallCode == 'lq'){
  239. // code = 10012;
  240. // }else if(BallCode == 'bq'){
  241. // code = 10013;
  242. // }else if(BallCode == 'wq'){
  243. // code = 10014;
  244. // }
  245. /*******************直播比赛数据提示*******************/
  246. promptInfo(){
  247. this.$dialog.alert({mes: '此功能占未开放'});
  248. },
  249. //
  250. getAjax(lg_id,search){
  251. if(this.$store.getters.getActivity == 'StStringScene'){
  252. this.$store.dispatch("SET_BETTINGTYPE", 2);
  253. }else{
  254. this.$store.dispatch("SET_BETTINGTYPE", 1);
  255. }
  256. this.$http.get(this.$ports.home.gameList,{
  257. type: this.$store.getters.getActivity,
  258. game_code: this.$store.getters.getBallCode,
  259. lg_id, //需要拷贝
  260. search
  261. }).then(res =>{
  262. // console.log(res.data)
  263. if(res.data.status == 1 && res.data.data.length > 0){
  264. this.noData = false;
  265. this.data = res.data.data[0]
  266. // console.log(this.data)
  267. this.dataGroup(this.data)
  268. }else{
  269. this.noData = true;
  270. }
  271. this.$store.dispatch("GETLOADING", false);
  272. })
  273. },
  274. // 进入添加选中效果
  275. dataGroup(data){
  276. let betting = this.$store.getters.getBetting;
  277. if(betting != null && betting.length > 0){
  278. // console.log('bet',betting)
  279. data.forEach(e =>{
  280. e.matchData.forEach(k =>{
  281. k.oddsData.forEach(item =>{
  282. betting.forEach(i =>{
  283. i.data.forEach(j =>{
  284. if(j.id == item.id){
  285. item.isTrue = true
  286. }
  287. })
  288. })
  289. })
  290. })
  291. })
  292. }
  293. },
  294. // 修改选中样式
  295. // 选中
  296. selection(idx,i,index,id,p_code,match_id,homeName,guestName,name,playName) {
  297. // console.log(idx,i,index,id,p_code,match_id,homeName,guestName,name,playName)
  298. //调用投注公共方法
  299. let _this = this;
  300. let ballId = this.$store.getters.getBallCode;
  301. let teamName = {
  302. home : homeName,
  303. guest : guestName
  304. }
  305. let acty = this.$store.getters.getActivity;
  306. let betting = this.$store.getters.getBetting;
  307. this.$public.publicBetting(this.data,p_code,id,idx,i,index,betting,acty,match_id,teamName,playName,name,ballId,this.limit,function(data,type){
  308. if(type){
  309. _this.$dialog.toast({ mes: "亲,超出表格上限啦。", timeout: 2000 });
  310. }
  311. _this.$store.dispatch("SET_BETTING",[]);
  312. _this.$store.dispatch("SET_BETTING",data);
  313. })
  314. // 串场为单串
  315. if(this.limit < 10){
  316. this.data[idx].matchData.forEach((val,i) =>{
  317. val.oddsData.forEach(item =>{
  318. if(item.id == id){
  319. this.$forceUpdate();
  320. this.$set(item, "isTrue", item.isTrue ? false : true);
  321. }
  322. })
  323. })
  324. }else{
  325. this.data[idx].matchData.forEach(val =>{
  326. val.oddsData.forEach(item =>{
  327. if(item.id == id){
  328. this.$set(item,'isTrue',false)
  329. }
  330. })
  331. })
  332. }
  333. //console.log('111',this.$store.getters.getBetting)
  334. },
  335. getTournamentPlay(match_id) {
  336. // console.log(match_id)
  337. this.$store.dispatch("MACTH_ID", match_id);
  338. this.$store.dispatch("SET_CONTROLROUTING", 10011);
  339. },
  340. //搜索按钮被点击
  341. Serch() {
  342. if (this.serchTxt === "") {
  343. this.$dialog.toast({ mes: "请输入您想要搜索的内容。", timeout: 2000 });
  344. return false;
  345. } else {
  346. this.data = [];
  347. this.$store.dispatch("SET_LEAGUEDATA",[]); //需要拷贝
  348. this.getAjax('',this.serchTxt) //需要拷贝
  349. }
  350. },
  351. // 删除搜索框内容
  352. clearSerchTxt() {
  353. if (this.serchTxt != "") {
  354. this.data = [];
  355. this.serchTxt = "";
  356. this.$store.dispatch("SET_LEAGUEDATA",[]); //需要拷贝
  357. this.getAjax();
  358. }
  359. },
  360. // 刷新
  361. red() {
  362. this.serchTxt = "";
  363. this.lg_id ="";
  364. this.$store.dispatch("SET_LEAGUEDATA",[]); //需要拷贝
  365. if (this.serchTxt.length > 0) {
  366. this.Serch();
  367. } else {
  368. this.data = '';
  369. this.getAjax();
  370. }
  371. },
  372. },
  373. mounted() {
  374. //获取选择的联赛id
  375. if(this.$store.getters.getLeagueData.length >0 ){
  376. if(this.$store.getters.getLeagueData.length == 1){
  377. this.lg_id = this.$store.getters.getLeagueData[0]
  378. }else{
  379. this.lg_id = this.$store.getters.getLeagueData.join(',');
  380. }
  381. }
  382. this.getAjax(this.lg_id);
  383. this.$store.dispatch("SET_BETTING",[]);
  384. let _this = this;
  385. this.$public.ajaxTimerFun((timing)=>{
  386. if(_this.timers){
  387. _this.getAjax(_this.lg_id,_this.serchTxt);
  388. }else{
  389. clearInterval(timing)
  390. }
  391. })
  392. },
  393. computed:{
  394. getActy() {
  395. return this.$store.getters.getActivity;
  396. },
  397. getDeleteType() {
  398. return this.$store.getters.getDeleteType;
  399. },
  400. // 获取投注数量
  401. getLimit() {
  402. return this.$store.getters.getLimit;
  403. },
  404. },
  405. watch:{
  406. getActy(val) {
  407. // this.activity = val;
  408. this.getAJAX();
  409. this.$store.dispatch("SET_BETTING",[]);
  410. },
  411. // 删除选中数据
  412. getDeleteType(val){
  413. let jumpOut = false;
  414. for(var i = 0; i < this.data.length; i++){
  415. for(var k = 0; k < this.data[i].matchData.length; k++){
  416. for(var j = 0; j < this.data[i].matchData[k].oddsData.length;j++){
  417. if(this.data[i].matchData[k].oddsData[j].id == val){
  418. this.$forceUpdate();
  419. this.data[i].matchData[k].oddsData[j].isTrue = false;
  420. jumpOut = true;
  421. break;
  422. }
  423. }
  424. if(jumpOut == true){
  425. break;
  426. }
  427. }
  428. if(jumpOut == true){
  429. break;
  430. }
  431. }
  432. },
  433. getLimit(val){
  434. this.limit = val;
  435. if(val == 0){
  436. this.data.forEach(e =>{
  437. e.matchData.forEach(k =>{
  438. k.oddsData.forEach(item =>{
  439. if(item.isTrue){
  440. item.isTrue = false;
  441. }
  442. })
  443. })
  444. })
  445. }
  446. },
  447. },
  448. beforeDestroy(){
  449. this.timers = false
  450. }
  451. };
  452. </script>
  453. <style scoped>
  454. .pdg20 {
  455. padding: 0 0.2rem;
  456. }
  457. .theBallSize {
  458. position: relative;
  459. }
  460. .date {
  461. height: 0.4rem;
  462. background: #fff;
  463. }
  464. .date > p {
  465. width: 0.26rem;
  466. height: 0.26rem;
  467. background: #bbb;
  468. border-radius: 0.05rem;
  469. }
  470. .date div {
  471. width: 88%;
  472. margin: 0 0.2rem;
  473. }
  474. .datebox {
  475. overflow-x: auto;
  476. overflow-y: hidden;
  477. height: 0.4rem;
  478. }
  479. .datebox p {
  480. width: 1rem;
  481. padding: 0.2rem 0;
  482. }
  483. .theBallSize-list-title {
  484. width: 100%;
  485. height: 0.4rem;
  486. background: #898989;
  487. font-size: 0.16rem;
  488. color: #fff;
  489. }
  490. .theBallSize-list-title img {
  491. width: 0.22rem;
  492. height: 0.22rem;
  493. margin-left: 0.2rem;
  494. }
  495. .theBallSize-list-hader {
  496. height: 0.5rem;
  497. background: #e5e5e5;
  498. font-size: 0.14rem;
  499. }
  500. .theBallSize-list-hader-num {
  501. width: 0.8rem;
  502. height: 0.5rem;
  503. background: #bbb;
  504. }
  505. .theBallSize-list-hader-num::after {
  506. border-width: 0.05rem;
  507. border-left-color: #e5e5e5;
  508. border-top-color: #e5e5e5;
  509. left: 40%;
  510. bottom: -0.05rem;
  511. transform: rotate(45deg);
  512. }
  513. .theBallSize-list-full div {
  514. height: 50%;
  515. line-height: 100%;
  516. }
  517. .theBallSize-list-body {
  518. background: #fcfcfc;
  519. font-size: 0.14rem;
  520. border-bottom: 1px solid #e5e5e5;
  521. }
  522. .theBallSizeTeam {
  523. width: 22%;
  524. padding: 0.15rem 0;
  525. min-height: 0.9rem;
  526. flex-wrap: wrap;
  527. }
  528. .theBallSize-list-box {
  529. padding: 0.1rem 0.08rem;
  530. }
  531. .theBallSize-list-box div {
  532. height: 0.3rem;
  533. line-height: 0.3rem;
  534. }
  535. .theBallSize-list-box span {
  536. display: inline-block;
  537. width: 0.7rem;
  538. }
  539. .theBallSize-list-txt {
  540. width: 0.48rem !important;
  541. height: 0.3rem;
  542. text-align: center;
  543. line-height: 0.3rem;
  544. background: #fcfcfc;
  545. border-radius: 0.05rem;
  546. border: 0.01rem solid #eee;
  547. cursor: pointer;
  548. margin: 0 0.08rem;
  549. }
  550. .list-left {
  551. width: 0.8rem;
  552. }
  553. .list-right {
  554. width: 1.4rem;
  555. }
  556. .conditions {
  557. color: #f76649;
  558. }
  559. .serch {
  560. width: 100%;
  561. height: 0.5rem;
  562. background: #aaa;
  563. padding: 0 0.2rem;
  564. }
  565. input {
  566. border: none;
  567. background: #efefef;
  568. padding-left: 0.2rem;
  569. width: 4.6rem;
  570. height: 0.3rem;
  571. border-radius: 0.05rem 0 0 0.05rem;
  572. }
  573. .serch-img {
  574. width: 0.5rem;
  575. height: 0.3rem;
  576. background: #666;
  577. border-radius: 0 0.05rem 0.05rem 0;
  578. margin-right: 0.3rem;
  579. }
  580. .all {
  581. width: 1.2rem;
  582. height: 0.3rem;
  583. background: #ddd;
  584. color: #333;
  585. }
  586. .clear {
  587. width: 0.6rem;
  588. height: 0.3rem;
  589. background: #666;
  590. color: #ccc;
  591. margin-right: 0.1rem;
  592. }
  593. .redraw {
  594. width: 0.3rem;
  595. height: 0.3rem;
  596. background: #666;
  597. }
  598. img {
  599. width: 0.2rem;
  600. height: 0.2rem;
  601. }
  602. .br05 {
  603. border-radius: 0.05rem;
  604. }
  605. .fz14 {
  606. font-size: 0.14rem;
  607. }
  608. .hover:hover {
  609. background: #bbb;
  610. color: #fff;
  611. }
  612. .pointer {
  613. cursor: pointer;
  614. }
  615. .right-img {
  616. width: 0.15rem;
  617. position: absolute;
  618. right: .4rem;
  619. bottom: .15rem;
  620. }
  621. .right-img img {
  622. width: 0.22rem;
  623. height: 0.2rem;
  624. }
  625. .col {
  626. border-radius: 2px;
  627. background: #f76649;
  628. color: #fff;
  629. }
  630. </style>