Sin descripción

index.vue 28KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685
  1. <template >
  2. <div class="app-container calendar-list-container">
  3. <div class="app-container">
  4. <div class="block">
  5. <el-row :gutter="20">
  6. <el-col :span="6">
  7. <span class="demonstration">關數</span>
  8. <el-select @change='handleFilter' style="width: 120px" class="filter-item" v-model="listQuery.round" placeholder="關">
  9. <el-option v-for="item in roundOptions" :key="item.label" :label="item.label" :value="item.key">
  10. </el-option>
  11. </el-select>
  12. </el-col >
  13. <el-col :offset="10" :span="8">
  14. <span @click="dialogVisible = true" class="demonstration">時間 : {{moment(this.roundTime)}}</span>
  15. </el-col>
  16. </el-row>
  17. </div>
  18. </div>
  19. <el-table header-row-class-name="init" :data="bookie" v-loading.body="listLoading" element-loading-text="Loading" border fit highlight-current-row
  20. style="width: 100%">
  21. <el-table-column label="本期開獎" lable-className="title" align="center">
  22. <el-table-column label="莊家結果" align="center">
  23. <el-table-column label="莊家" prop="MemberRecord.GambleMember.name"></el-table-column>
  24. <el-table-column label="點數">
  25. <template slot-scope="scope">
  26. <span>{{`${scope.row.DealingRecord.point1 === -1 ? '' : scope.row.DealingRecord.point1 + ' | '} ${scope.row.DealingRecord.point2 === -1 ? '' : scope.row.DealingRecord.point2 + ' / '} ${point(scope.row.DealingRecord)}`}}</span>
  27. </template>
  28. </el-table-column>
  29. <el-table-column label="上莊分數">
  30. <template slot-scope="scope">
  31. <span>{{memberRecord[memberRecord.length-1][0].wager}}</span>
  32. </template>
  33. </el-table-column>
  34. <el-table-column prop="MemberRecord.FixedServiceFees" label="服務費"></el-table-column>
  35. <el-table-column label="有效下注量">
  36. <template slot-scope="scope">
  37. <div>{{scope.row.effectiveWagger}}</div>
  38. </template>
  39. </el-table-column>
  40. <el-table-column label="下注量抽水" >
  41. <template slot-scope="scope">
  42. <div>{{scope.row.MemberRecord.wagerServiceFees}}</div>
  43. </template>
  44. </el-table-column>
  45. <!--
  46. <el-table-column label="莊輸贏">
  47. <template slot-scope="scope">
  48. <div :style="moneyColor(scope.row.MemberRecord.earned)">{{scope.row.MemberRecord.earned}}</div>
  49. </template>
  50. </el-table-column>
  51. -->
  52. <el-table-column label="莊贏抽水">
  53. <template slot-scope="scope">
  54. <div>{{scope.row.MemberRecord.serviceFees}}</div>
  55. </template>
  56. </el-table-column>
  57. <el-table-column label="莊家結果">
  58. <template slot-scope="scope">
  59. <div :style="moneyColor(scope.row.bookieResult)">{{scope.row.bookieResult}}</div>
  60. </template>
  61. </el-table-column>
  62. <el-table-column label="最終積分">
  63. <template slot-scope="scope">
  64. <div>{{scope.row.currentChips}}</div>
  65. </template>
  66. </el-table-column>
  67. <!-- <el-table-column label="閒家輸贏" prop="memberWagger"></el-table-column>
  68. <el-table-column label="閒家抽水" prop="effectiveServiceFees"></el-table-column> -->
  69. </el-table-column>
  70. </el-table-column>
  71. </el-table>
  72. <el-table :header-cell-style="initDoor" :data="dealing" v-loading.body="listLoading" :summary-method="getSummaries" show-summary element-loading-text="Loading" border fit highlight-current-row
  73. style="width: 100%">
  74. <el-table-column label="各門結果" align="center">
  75. <el-table-column label="名稱">
  76. <template slot-scope="scope">
  77. <span>{{scope.$index === 0 ?"點數":"門主"}}</span>
  78. </template>
  79. </el-table-column>
  80. <el-table-column label="第一門">
  81. <template slot-scope="scope">
  82. <span>{{doorTableSwitch(scope.$index, 0)}}</span>
  83. </template>
  84. </el-table-column>
  85. <el-table-column label="第二門">
  86. <template slot-scope="scope">
  87. <span>{{doorTableSwitch(scope.$index, 1)}}</span>
  88. </template>
  89. </el-table-column>
  90. <el-table-column label="第三門">
  91. <template slot-scope="scope">
  92. <span>{{doorTableSwitch(scope.$index, 2)}}</span>
  93. </template>
  94. </el-table-column>
  95. <el-table-column label="第四門">
  96. <template slot-scope="scope">
  97. <span>{{doorTableSwitch(scope.$index, 3)}}</span>
  98. </template>
  99. </el-table-column>
  100. <el-table-column label="第五門">
  101. <template slot-scope="scope">
  102. <span>{{doorTableSwitch(scope.$index, 4)}}</span>
  103. </template>
  104. </el-table-column>
  105. <el-table-column label="第六門">
  106. <template slot-scope="scope">
  107. <span>{{doorTableSwitch(scope.$index, 5)}}</span>
  108. </template>
  109. </el-table-column>
  110. </el-table-column>
  111. </el-table>
  112. <el-table v-show="hasPunishment(punishmentRecord)" :data="punishmentRecord" v-loading.body="listLoading" element-loading-text="Loading" border fit highlight-current-row
  113. style="width: 100%">
  114. <el-table-column label="懲罰名單" align="center">
  115. <el-table-column prop="GambleMember.name" label="玩家">
  116. </el-table-column>
  117. <el-table-column label="原因">
  118. <template slot-scope="scope">
  119. <div>{{reason(scope.row.rule)}}</div>
  120. </template>
  121. </el-table-column>
  122. <el-table-column label="金額">
  123. <template slot-scope="scope">
  124. <div :style="moneyColor((scope.row.chips)*(-1))">{{(scope.row.chips)*(-1)}}</div>
  125. </template>
  126. </el-table-column>
  127. </el-table-column>
  128. </el-table>
  129. <el-table :data="detail" :span-method="objectSpanMethod" v-loading.body="listLoading" element-loading-text="Loading" border fit highlight-current-row
  130. style="width: 100%">
  131. <el-table-column label="本關結果" align="center">
  132. <el-table-column prop="MemberRecord.GambleMember.name" label="玩家">
  133. </el-table-column>
  134. <!-- <el-table-column prop="MemberRecord.GambleMember.name" label="門主">
  135. </el-table-column> -->
  136. <el-table-column label="押">
  137. <template slot-scope="scope">
  138. <span>{{`${scope.row.MemberRecord.door} / ${scope.row.MemberRecord.wager}`}}</span>
  139. </template>
  140. </el-table-column>
  141. <el-table-column prop="DealingRecord.totalPoints" label="點數">
  142. <template slot-scope="scope">
  143. <span>{{`${scope.row.DealingRecord.point1} | ${scope.row.DealingRecord.point2} / ${point(scope.row.DealingRecord)}`}}</span>
  144. </template>
  145. </el-table-column>
  146. <el-table-column label="輸贏">
  147. <template slot-scope="scope">
  148. <div :style="moneyColor(scope.row.MemberRecord.earned)">{{scope.row.MemberRecord.earned}}</div>
  149. </template>
  150. </el-table-column>
  151. <el-table-column prop="MemberRecord.serviceFees" label="抽水">
  152. </el-table-column>
  153. <el-table-column label="輸贏合計">
  154. <template slot-scope="scope">
  155. <div :style="moneyColor(scope.row.totalChips)">{{scope.row.totalChips}}</div>
  156. </template>
  157. </el-table-column>
  158. <el-table-column label="最終積分">
  159. <template slot-scope="scope">
  160. <div>{{scope.row.MemberRecord.currentChips}}</div>
  161. </template>
  162. </el-table-column>
  163. </el-table-column>
  164. </el-table>
  165. <el-table :data="members" v-loading.body="listLoading" element-loading-text="Loading" border fit highlight-current-row
  166. style="width: 100%">
  167. <el-table-column label="當前玩家餘額" align="center">
  168. <el-table-column prop="name_0" label="成員">
  169. </el-table-column>
  170. <el-table-column prop="chips_0" label="當前積分">
  171. </el-table-column>
  172. <el-table-column prop="name_1" label="成員">
  173. </el-table-column>
  174. <el-table-column prop="chips_1" label="當前積分">
  175. </el-table-column>
  176. <el-table-column prop="name_2" label="成員">
  177. </el-table-column>
  178. <el-table-column prop="chips_2" label="當前積分">
  179. </el-table-column>
  180. <el-table-column prop="name_3" label="成員">
  181. </el-table-column>
  182. <el-table-column prop="chips_3" label="當前積分">
  183. </el-table-column>
  184. </el-table-column>
  185. </el-table>
  186. <el-dialog
  187. :visible.sync="dialogVisible"
  188. :fullscreen="true">
  189. <div class="app-container">
  190. <div class="block">
  191. <el-row :gutter="20">
  192. <el-col :span="6">
  193. <span class="demonstration">關數</span>
  194. <el-select @change='handleFilter' style="width: 120px" class="filter-item" v-model="listQuery.round" placeholder="關">
  195. <el-option v-for="item in roundOptions" :key="item.label" :label="item.label" :value="item.key">
  196. </el-option>
  197. </el-select>
  198. </el-col >
  199. <el-col :offset="10" :span="8">
  200. <span @click="dialogVisible = false" class="demonstration">時間 : {{moment(this.roundTime)}}</span>
  201. </el-col>
  202. </el-row>
  203. </div>
  204. </div>
  205. <el-table header-row-class-name="init" :data="bookie" v-loading.body="listLoading" element-loading-text="Loading" border fit highlight-current-row
  206. style="width: 100%">
  207. <el-table-column label="本期開獎" lable-className="title" align="center">
  208. <el-table-column label="莊家結果" align="center">
  209. <el-table-column label="莊家" prop="MemberRecord.GambleMember.name"></el-table-column>
  210. <el-table-column label="點數">
  211. <template slot-scope="scope">
  212. <!-- <span>{{`${scope.row.DealingRecord.point1} | ${scope.row.DealingRecord.point2} / ${point(scope.row.DealingRecord)}`}}</span> -->
  213. <span>{{`${scope.row.DealingRecord.point1 === -1 ? '' : scope.row.DealingRecord.point1 + ' | '} ${scope.row.DealingRecord.point2 === -1 ? '' : scope.row.DealingRecord.point2 + ' / '} ${point(scope.row.DealingRecord)}`}}</span>
  214. </template>
  215. </el-table-column>
  216. <el-table-column label="上莊分數">
  217. <template slot-scope="scope">
  218. <span>{{memberRecord[memberRecord.length-1][0].wager}}</span>
  219. </template>
  220. </el-table-column>
  221. <el-table-column prop="MemberRecord.FixedServiceFees" label="服務費"></el-table-column>
  222. <el-table-column label="有效下注量">
  223. <template slot-scope="scope">
  224. <div>{{scope.row.effectiveWagger}}</div>
  225. </template>
  226. </el-table-column>
  227. <el-table-column label="下注量抽水" >
  228. <template slot-scope="scope">
  229. <div>{{scope.row.MemberRecord.wagerServiceFees}}</div>
  230. </template>
  231. </el-table-column>
  232. <!--
  233. <el-table-column label="莊輸贏">
  234. <template slot-scope="scope">
  235. <div :style="moneyColor(scope.row.MemberRecord.earned)">{{scope.row.MemberRecord.earned}}</div>
  236. </template>
  237. </el-table-column>
  238. -->
  239. <el-table-column label="莊贏抽水">
  240. <template slot-scope="scope">
  241. <div>{{scope.row.MemberRecord.serviceFees}}</div>
  242. </template>
  243. </el-table-column>
  244. <el-table-column label="莊家結果">
  245. <template slot-scope="scope">
  246. <div :style="moneyColor(scope.row.bookieResult)">{{scope.row.bookieResult}}</div>
  247. </template>
  248. </el-table-column>
  249. <el-table-column label="最終積分">
  250. <template slot-scope="scope">
  251. <div>{{scope.row.currentChips}}</div>
  252. </template>
  253. </el-table-column>
  254. <!-- <el-table-column label="閒家輸贏" prop="memberWagger"></el-table-column>
  255. <el-table-column label="閒家抽水" prop="effectiveServiceFees"></el-table-column> -->
  256. </el-table-column>
  257. </el-table-column>
  258. </el-table>
  259. <el-table :header-cell-style="initDoor" :data="dealing" v-loading.body="listLoading" :summary-method="getSummaries" show-summary element-loading-text="Loading" border fit highlight-current-row
  260. style="width: 100%">
  261. <el-table-column label="各門結果" align="center">
  262. <el-table-column label="名稱">
  263. <template slot-scope="scope">
  264. <span>{{scope.$index === 0 ?"點數":"門主"}}</span>
  265. </template>
  266. </el-table-column>
  267. <el-table-column label="第一門">
  268. <template slot-scope="scope">
  269. <span>{{doorTableSwitch(scope.$index, 0)}}</span>
  270. </template>
  271. </el-table-column>
  272. <el-table-column label="第二門">
  273. <template slot-scope="scope">
  274. <span>{{doorTableSwitch(scope.$index, 1)}}</span>
  275. </template>
  276. </el-table-column>
  277. <el-table-column label="第三門">
  278. <template slot-scope="scope">
  279. <span>{{doorTableSwitch(scope.$index, 2)}}</span>
  280. </template>
  281. </el-table-column>
  282. <el-table-column label="第四門">
  283. <template slot-scope="scope">
  284. <span>{{doorTableSwitch(scope.$index, 3)}}</span>
  285. </template>
  286. </el-table-column>
  287. <el-table-column label="第五門">
  288. <template slot-scope="scope">
  289. <span>{{doorTableSwitch(scope.$index, 4)}}</span>
  290. </template>
  291. </el-table-column>
  292. <el-table-column label="第六門">
  293. <template slot-scope="scope">
  294. <span>{{doorTableSwitch(scope.$index, 5)}}</span>
  295. </template>
  296. </el-table-column>
  297. </el-table-column>
  298. </el-table>
  299. <el-table v-show="hasPunishment(punishmentRecord)" :data="punishmentRecord" v-loading.body="listLoading" element-loading-text="Loading" border fit highlight-current-row
  300. style="width: 100%">
  301. <el-table-column label="懲罰名單" align="center">
  302. <el-table-column prop="GambleMember.name" label="玩家">
  303. </el-table-column>
  304. <el-table-column label="原因">
  305. <template slot-scope="scope">
  306. <div>{{reason(scope.row.rule)}}</div>
  307. </template>
  308. </el-table-column>
  309. <el-table-column label="金額">
  310. <template slot-scope="scope">
  311. <div :style="moneyColor((scope.row.chips)*(-1))">{{(scope.row.chips)*(-1)}}</div>
  312. </template>
  313. </el-table-column>
  314. </el-table-column>
  315. </el-table>
  316. <el-table :data="detail" :span-method="objectSpanMethod" v-loading.body="listLoading" element-loading-text="Loading" border fit highlight-current-row
  317. style="width: 100%">
  318. <el-table-column label="本關結果" align="center">
  319. <el-table-column prop="MemberRecord.GambleMember.name" label="玩家">
  320. </el-table-column>
  321. <!-- <el-table-column prop="MemberRecord.GambleMember.name" label="門主">
  322. </el-table-column> -->
  323. <el-table-column label="押">
  324. <template slot-scope="scope">
  325. <span>{{`${scope.row.MemberRecord.door} / ${scope.row.MemberRecord.wager}`}}</span>
  326. </template>
  327. </el-table-column>
  328. <el-table-column prop="DealingRecord.totalPoints" label="點數">
  329. <template slot-scope="scope">
  330. <span>{{`${scope.row.DealingRecord.point1} | ${scope.row.DealingRecord.point2} / ${point(scope.row.DealingRecord)}`}}</span>
  331. </template>
  332. </el-table-column>
  333. <el-table-column label="輸贏">
  334. <template slot-scope="scope">
  335. <div :style="moneyColor(scope.row.MemberRecord.earned)">{{scope.row.MemberRecord.earned}}</div>
  336. </template>
  337. </el-table-column>
  338. <el-table-column prop="MemberRecord.serviceFees" label="抽水">
  339. </el-table-column>
  340. <el-table-column label="輸贏合計">
  341. <template slot-scope="scope">
  342. <div :style="moneyColor(scope.row.totalChips)">{{scope.row.totalChips}}</div>
  343. </template>
  344. </el-table-column>
  345. <el-table-column label="最終積分">
  346. <template slot-scope="scope">
  347. <div>{{scope.row.MemberRecord.currentChips}}</div>
  348. </template>
  349. </el-table-column>
  350. </el-table-column>
  351. </el-table>
  352. <el-table :data="members" v-loading.body="listLoading" element-loading-text="Loading" border fit highlight-current-row
  353. style="width: 100%">
  354. <el-table-column label="當前玩家餘額" align="center">
  355. <el-table-column prop="name_0" label="成員">
  356. </el-table-column>
  357. <el-table-column prop="chips_0" label="當前積分">
  358. </el-table-column>
  359. <el-table-column prop="name_1" label="成員">
  360. </el-table-column>
  361. <el-table-column prop="chips_1" label="當前積分">
  362. </el-table-column>
  363. <el-table-column prop="name_2" label="成員">
  364. </el-table-column>
  365. <el-table-column prop="chips_2" label="當前積分">
  366. </el-table-column>
  367. <el-table-column prop="name_3" label="成員">
  368. </el-table-column>
  369. <el-table-column prop="chips_3" label="當前積分">
  370. </el-table-column>
  371. </el-table-column>
  372. </el-table>
  373. </el-dialog>
  374. </div>
  375. </template>
  376. <script>
  377. import { mapGetters, mapActions } from 'vuex'
  378. import { fetchDetails, fetchRoundCount, fetchDealingRecords, fetchMemberRecords, fetchRoundRecord, fetchGameBid, fetchWagerRecord, fetchMemberInfo, fetchPunishmentRecord } from '@/api/gambleGameBucket'
  379. import { fetchGambleMemberList } from '@/api/gambleMember'
  380. import { ponitTransform } from '@/utils/point'
  381. import _ from 'lodash'
  382. import moment from 'moment-timezone'
  383. export default {
  384. data() {
  385. return {
  386. list: null,
  387. listLoading: false,
  388. listQuery: {
  389. round: 1
  390. },
  391. detail: [],
  392. group: [],
  393. statement: '',
  394. rowspan: 0,
  395. colspan: 0,
  396. func: '',
  397. rowIndex: 0,
  398. colIndex: 0,
  399. roundOptions: [],
  400. members: [],
  401. dealing: [],
  402. bookie: [],
  403. memberRecord: [],
  404. door: 0,
  405. // bidChips: 0,
  406. punishmentRecord: [],
  407. memberRecordTemp: [],
  408. wagerRecord: [],
  409. roundTime: 0,
  410. dialogVisible: true,
  411. }
  412. },
  413. async created() {
  414. await fetchRoundCount(this.data.secondLayer).then((response) => {
  415. this.listQuery.round = response.data
  416. for (let i = 1; i <= response.data; i++) {
  417. this.roundOptions.push({ label: `第 ${i} 關`, key: i })
  418. }
  419. })
  420. fetchRoundRecord(this.data.secondLayer, this.listQuery).then(response => {
  421. this.roundTime = response.data.createdAt
  422. this.door = response.data.initialDoor
  423. })
  424. // fetchGameBid(this.data.secondLayer).then(response => {
  425. // this.bidChips = response.data
  426. // })
  427. this.SetVisible(2)
  428. this.getList()
  429. },
  430. computed: {
  431. ...mapGetters([
  432. 'visible',
  433. 'data',
  434. // 'query'
  435. ])
  436. },
  437. methods: {
  438. ...mapActions([
  439. 'SetVisible',
  440. 'SetData',
  441. // 'SetQuery'
  442. ]),
  443. async getList() {
  444. // this.listLoading = true
  445. let detailTemp, dealingTemp, memberRecordTemp
  446. this.detail = []
  447. fetchWagerRecord(this.data.secondLayer, this.listQuery).then(response => {
  448. this.wagerRecord = response.data
  449. })
  450. fetchDealingRecords(this.data.secondLayer, this.listQuery).then(response => {
  451. dealingTemp = response.data.rows.filter(record => {
  452. return record.door !== -1
  453. })
  454. const deal = {}
  455. const member = {}
  456. dealingTemp.map((record, index) => {
  457. deal[`door_${index % 6}`] = record.door
  458. deal[`point1_${index % 6}`] = record.point1
  459. deal[`point2_${index % 6}`] = record.point2
  460. deal[`totalPoints_${index % 6}`] = record.totalPoints
  461. record.GambleMember ? member[`member_${index % 6}`] = record.GambleMember.name : false
  462. if (index % 6 === 5) {
  463. this.dealing.push(deal)
  464. this.dealing.push(member)
  465. }
  466. })
  467. })
  468. fetchMemberRecords(this.data.secondLayer, this.listQuery).then(response => {
  469. this.memberRecordTemp = response.data.rows
  470. let memberRecordTemp = _.groupBy(response.data.rows, record => {
  471. return record.door
  472. })
  473. this.memberRecord = Object.values(memberRecordTemp )
  474. })
  475. await fetchDetails(this.data.secondLayer, this.listQuery).then(response => {
  476. detailTemp = response.data.rows.filter(record => {
  477. return record.DealingRecord.door !== -1 &&
  478. record.MemberRecord.door !== -1 &&
  479. record.MemberRecord.door === record.DealingRecord.door
  480. })
  481. this.bookie = response.data.rows.filter(record => {
  482. return record.DealingRecord.door === -1 &&
  483. record.MemberRecord.door === -1 &&
  484. record.MemberRecord.door === record.DealingRecord.door
  485. })
  486. console.log('this', this.bookie[0])
  487. // this.bidChips ? this.bookie[0].bidChips = this.bidChips : false
  488. this.group = _.groupBy(detailTemp, record => {
  489. return record.MemberRecord.GambleMember.name
  490. })
  491. this.group = Object.values(this.group)
  492. console.log('wwww', this.group)
  493. this.group.map(member => {
  494. // console.log('aaaaa', member)
  495. let currentChips = _.sumBy(member, record => {
  496. return record.MemberRecord.chips
  497. }) + member[0].MemberRecord.currentChips
  498. for(const item of member) {
  499. item.MemberRecord.currentChips = currentChips
  500. }
  501. })
  502. this.detail = this.group.reduce((arr, element) => {
  503. return arr.concat(element)
  504. }, [])
  505. console.log('eee', this.detail)
  506. this.bookie[0].effectiveWagger = _.sumBy(this.detail, item => {
  507. return Math.abs(item.MemberRecord.earned);
  508. })
  509. this.bookie[0].memberWagger = _.sumBy(this.detail, item => {
  510. return item.MemberRecord.earned;
  511. })
  512. this.bookie[0].effectiveServiceFees = _.sumBy(this.detail, item => {
  513. return Math.abs(item.MemberRecord.serviceFees) ;
  514. })
  515. console.log('ssss', this.detail)
  516. this.bookie[0].currentChips = Number(this.bookie[0].MemberRecord.currentChips) + Number(this.bookie[0].MemberRecord.chips)
  517. this.bookie[0].bookieResult = this.bookie[0].MemberRecord.earned - this.bookie[0].MemberRecord.serviceFees - this.bookie[0].MemberRecord.wagerServiceFees -this.bookie[0].MemberRecord.FixedServiceFees
  518. // console.log('bookie', this.bookie[0].effectiveWagger)
  519. this.group.map((item, itemIndex) => {
  520. let totalChips = 0
  521. item.map((person, personIndex) => {
  522. totalChips = totalChips + person.MemberRecord.earned - person.MemberRecord.serviceFees
  523. item.length - 1 === personIndex ? this.detail[this._sum(itemIndex)].totalChips = totalChips : false
  524. })
  525. })
  526. for (let i = 0; i < this.group.length; i++) {
  527. if (i === 0) {
  528. this.statement =
  529. `if(this.rowIndex === ${i}){
  530. this.rowspan = ${this.group[i].length},
  531. this.colspan = 1
  532. }`
  533. } else {
  534. this.statement +=
  535. `else if(this.rowIndex === ${this._sum(i)}){
  536. this.rowspan = ${this.group[i].length},
  537. this.colspan = 1
  538. }`
  539. }
  540. if (i === this.group.length - 1) {
  541. this.statement +=
  542. `else {
  543. this.rowspan = 0,
  544. this.colspan = 0
  545. }`
  546. }
  547. }
  548. this.func = eval(`(function() {${this.statement}})`)
  549. })
  550. fetchPunishmentRecord(this.data.secondLayer, this.listQuery).then(response => {
  551. this.punishmentRecord = response.data
  552. })
  553. fetchMemberInfo(this.data.secondLayer, this.listQuery).then(response => {
  554. let { data } = response
  555. let members = {}
  556. this.members = []
  557. data.map((person, index) => {
  558. if (index % 4 === 0) {
  559. members.name_0 = person.GambleMember.name
  560. members.chips_0 = person.chips
  561. index === data.length - 1 ? this.members.push(members) : false
  562. } else if (index % 4 === 1) {
  563. members.name_1 = person.GambleMember.name
  564. members.chips_1 = person.chips
  565. index === data.length - 1 ? this.members.push(members) : false
  566. } else if (index % 4 === 2) {
  567. members.name_2 = person.GambleMember.name
  568. members.chips_2 = person.chips
  569. index === data.length - 1 ? this.members.push(members) : false
  570. } else if (index % 4 === 3) {
  571. members.name_3 = person.GambleMember.name
  572. members.chips_3 = person.chips
  573. this.members.push(members)
  574. members = {}
  575. }
  576. })
  577. })
  578. // this.listLoading = false
  579. },
  580. objectSpanMethod({ row, column, rowIndex, columnIndex }) {
  581. if (columnIndex === 0 || columnIndex === 5 || columnIndex === 6 || columnIndex === 7 || columnIndex === 8) {
  582. this.rowIndex = rowIndex
  583. this.columnIndex = columnIndex
  584. const that = this
  585. this.func()
  586. return {
  587. rowspan: this.rowspan,
  588. colspan: this.colspan
  589. }
  590. }
  591. },
  592. getSummaries() {
  593. const sums = []
  594. this.wagerRecord.map((door, index) => {
  595. if (index === 0) sums[index] = '總押注'
  596. sums[index+1] = door.chips
  597. })
  598. return sums
  599. },
  600. handleFilter() {
  601. fetchRoundRecord(this.data.secondLayer, this.listQuery).then(response => {
  602. this.roundTime = response.data.createdAt
  603. this.door = response.data.initialDoor
  604. })
  605. console.log('door', this.door)
  606. // this.SetQuery({layer:2, query: {round: this.query.secondLayer.round}})
  607. this.dealing = []
  608. this.getList()
  609. },
  610. moment(time) {
  611. return moment(time).tz('Asia/Taipei').format('YYYY-MM-DD HH:mm:ss')
  612. },
  613. moneyColor(money) {
  614. return money >= 0 ? { color: '#67C23A' } : { color: '#FA5555' }
  615. },
  616. // TODO refactor
  617. doorTableSwitch(rowIndex, colIndex) {
  618. if (rowIndex === 0) {
  619. return `${this.dealing[0][`point1_${colIndex}`]} | ${this.dealing[0][`point2_${colIndex}`]} / ${this.point({point1: this.dealing[0][`point1_${colIndex}`] ,point2: this.dealing[0][`point2_${colIndex}`] ,totalPoints: this.dealing[0][`totalPoints_${colIndex}`]})}`
  620. }
  621. if (rowIndex === 1) {
  622. return this.dealing[1][`member_${colIndex}`] ? `${this.dealing[1][`member_${colIndex}`]}` : '從缺'
  623. }
  624. },
  625. _sum(i) {
  626. let count = 0
  627. for (let j = 0; j < i; j++) {
  628. count += this.group[j].length
  629. }
  630. return count
  631. },
  632. point(dealingRecord) {
  633. return ponitTransform(dealingRecord)
  634. },
  635. initDoor({row, column, rowIndex, columnIndex}) {
  636. return columnIndex === this.door ? { color: '#F56C6C' } : ``
  637. },
  638. reason(reason ){
  639. switch(reason) {
  640. case 'NO_DRAW_RIGHTS':
  641. return '亂抽紅包'
  642. break;
  643. case 'NO_RESPONSE':
  644. return '門主未抽紅包'
  645. break;
  646. default:
  647. return '請找客服'
  648. }
  649. },
  650. hasPunishment(data) {
  651. return data.length !== 0 ? true : false
  652. },
  653. click() {
  654. console.log('click')
  655. if (screenfull.enabled) {
  656. screenfull.request(document.getElementById('full'));
  657. }
  658. }
  659. },
  660. destroyed() {
  661. this.SetVisible(1)
  662. }
  663. }
  664. </script>
  665. <style>
  666. div{
  667. font-weight: bold;
  668. font-size: 25px
  669. }
  670. </style>