index.vue 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. <script setup>
  2. import { reactive,ref,onMounted } from "vue";
  3. import { VueThrottle,downloadFn } from '@/utils/index.js'
  4. import { openLoading, closeLoading } from '@/utils/loading.js'
  5. import { ElMessage } from 'element-plus'
  6. import { selectSupplierGameCurrencyPage,selectSupplierSourceTypeList } from '@/apis/supplier.js'
  7. import { setTime } from '@/utils/public.js'
  8. const disabledDate = (time) => {
  9. return time.getTime() > new Date().getTime()
  10. }
  11. const data = reactive({
  12. searchForm:{
  13. sourceTypes:[],
  14. createTime:[]
  15. },
  16. tableData: [],
  17. pagingData: {
  18. page: 1,
  19. pageSize: 20,
  20. total: 0,
  21. },
  22. typeOption:[],
  23. sourceOptions:[
  24. {
  25. type: 2,
  26. name: '全民星星乐',
  27. },
  28. {
  29. type: 3,
  30. name: '乌龟叠叠乐',
  31. },
  32. {
  33. type: 4,
  34. name: '掌上投篮',
  35. },
  36. {
  37. type: 5,
  38. name: '疯狂套牛',
  39. },
  40. {
  41. type: 20,
  42. name: '娱乐中心',
  43. },
  44. {
  45. type: 50,
  46. name: '海上传奇'
  47. },
  48. {
  49. type: 70,
  50. name: '九宫格'
  51. },
  52. {
  53. type: 91,
  54. name: '吉祥兔刮刮卡'
  55. },
  56. {
  57. type: 93,
  58. name: '补发'
  59. },
  60. {
  61. type: 94,
  62. name: '兑换商品'
  63. },
  64. {
  65. type: 95,
  66. name: '小说'
  67. },
  68. {
  69. type: 96,
  70. name: '幸运数字刮刮卡'
  71. },
  72. {
  73. type: 97,
  74. name: '波波街机'
  75. },
  76. {
  77. type: 31,
  78. name: '过期',
  79. },
  80. {
  81. type:102,
  82. name:'够玩短剧'
  83. },
  84. {
  85. type:103,
  86. name:'套图购买'
  87. },
  88. {
  89. type:104,
  90. name:'游戏币充值'
  91. },
  92. {
  93. type:105,
  94. name:'星火捕鱼'
  95. },
  96. {
  97. type:106,
  98. name:'脑洞大逃亡'
  99. },
  100. {
  101. type: 110,
  102. name:'猛鬼宿舍'
  103. },
  104. {
  105. type: 111,
  106. name:'泡米看剧'
  107. },
  108. {
  109. type: 112,
  110. name:'泡米小说'
  111. },
  112. {
  113. type: 113,
  114. name: '美女视频'
  115. }
  116. ]
  117. })
  118. onMounted(() => {
  119. getSearchData()
  120. getGameCurrency()
  121. })
  122. const handleSizeChange = (page) => {
  123. console.log(page,'zise');
  124. // data.pagingData.page = 1;
  125. // data.pagingData.pageSize = size;
  126. getSearchData();
  127. }
  128. const handleCurrentChange = (page) => {
  129. getSearchData(page)
  130. }
  131. const getSearchData = (page = 1, pageSize = data.pagingData.pageSize) => {
  132. openLoading()
  133. let params = {
  134. sourceTypes: data.searchForm.sourceTypes?.join(',') || undefined
  135. }
  136. if (data.searchForm.createTime && data.searchForm.createTime.length > 0) {
  137. params['startTime'] = data.searchForm.createTime[0] + ' 00:00:00';
  138. params['endTime'] = data.searchForm.createTime[1] + ' 23:59:59';
  139. }
  140. params['pageNum'] = page;
  141. params['pageSize'] = pageSize;
  142. selectSupplierGameCurrencyPage(params).then((res) => {
  143. if (res.code === 1) {
  144. let tableList = res.data.result
  145. // tableList = tableList.map((item, index) => {
  146. // item.createTime = item.createTime ? setTime(item.createTime * 1000) : '--';
  147. // return item;
  148. // });
  149. // tableList = tableList.map((item, index) => {
  150. // item.updateTime = item.updateTime ? setTime(item.updateTime * 1000) : '--';
  151. // return item;
  152. // });
  153. data.tableData = tableList;
  154. data.pagingData.total = res.data.total;
  155. data.pagingData.pageSize = res.data.pageSize;
  156. // data.pagingData.page = page;
  157. }else{
  158. ElMessage.error(res.message)
  159. }
  160. closeLoading()
  161. }).catch(err => {
  162. console.log(err);
  163. closeLoading()
  164. });
  165. }
  166. //获取枚举
  167. const getGameCurrency = async() => {
  168. const res = await selectSupplierSourceTypeList()
  169. if(res.code === 1){
  170. data.sourceOptions = res.data
  171. }else{
  172. ElMessage.error(res.message)
  173. }
  174. }
  175. const refresh = () => {
  176. data.searchForm = {
  177. sourceTypes:[],
  178. createTime:[]
  179. }
  180. getSearchData()
  181. }
  182. const searchFn = () => {
  183. getSearchData()
  184. }
  185. const exportForm = VueThrottle(() => {
  186. console.log(data.pagingData.total,'data.pagingData.total');
  187. if (data.pagingData.total > 10000 || data.pagingData.total <= 0) {
  188. setTimeout(() => {
  189. ElMessage.warning("数据超过10000条或无数据,请重新选择筛选条件");
  190. })
  191. } else {
  192. let params = {
  193. sourceTypes: data.searchForm.sourceTypes?.join(',') || undefined
  194. }
  195. if (data.searchForm.createTime && data.searchForm.createTime.length > 0) {
  196. params['startTime'] = data.searchForm.createTime[0] + ' 00:00:00';
  197. params['endTime'] = data.searchForm.createTime[1] + ' 23:59:59';
  198. }
  199. // params['pageNum'] = data.pagingData.page;
  200. // params['pageSize'] = data.pagingData.pageSize;
  201. downloadFn({
  202. url: '/increase/supplier/manage/exportSupplierGameCurrencyRecords',
  203. params,
  204. })
  205. }
  206. },1000)
  207. </script>
  208. <template>
  209. <!-- 供应商游戏币消耗流水记录 -->
  210. <div class="sgcc-record">
  211. <div class="serch-box" style="height:40px">
  212. <div class="form-left">
  213. <el-form :inline="true" :model="data.searchForm">
  214. <el-form-item label="来源">
  215. <el-select v-model="data.searchForm.sourceTypes" multiple clearable placeholder="请选择" collapse-tags>
  216. <el-option v-for="item in data.sourceOptions" :key="item.type" :label="item.name"
  217. :value="item.type">
  218. </el-option>
  219. </el-select>
  220. </el-form-item>
  221. <el-form-item label="创建时间">
  222. <el-date-picker v-model="data.searchForm.createTime" :disabled-date="disabledDate"
  223. type="daterange" value-format="YYYY-MM-DD" unlink-panels range-separator="至"
  224. start-placeholder="开始日期" end-placeholder="结束日期" clearable>
  225. </el-date-picker>
  226. </el-form-item>
  227. </el-form>
  228. </div>
  229. <div class="form-right">
  230. <el-button type="primary" @click="searchFn" class="iconfont icon-chaxun">搜索</el-button>
  231. <el-button type="primary" @click="refresh" class="iconfont icon-xinzeng" plain>重置</el-button>
  232. </div>
  233. </div>
  234. <div class="table-wrapper">
  235. <div>
  236. <el-button type="primary" @click="exportForm" class="iconfont icon-xinzeng" plain>导出</el-button>
  237. </div>
  238. <el-table :data="data.tableData" v-adaptive="{ fixedHeader: true, bottomOffset: 85 }"
  239. :header-cell-style="{ background: '#FAFAFA', color: '#152129', fontSize: '14px' }" :cell-style="{ height: '50px' }"
  240. style="width: 100%; margin-top:11px;">
  241. <el-table-column type="index" width="60" align="center" label="序号"></el-table-column>
  242. <!-- <el-table-column prop="username" label="用户昵称" align="center" min-width="210"></el-table-column> -->
  243. <el-table-column prop="phone" width="auto" align="center" min-width="150" label="手机号"></el-table-column>
  244. <el-table-column prop="changeSourceTypeName" label="来源" align="center" min-width="160"></el-table-column>
  245. <el-table-column prop="jine" label="变化游戏币" align="center" min-width="160"></el-table-column>
  246. <el-table-column prop="openId" label="openId" align="center" min-width="160"></el-table-column>
  247. <el-table-column prop="createTime" label="创建时间" align="center" min-width="160">
  248. <template v-slot="scope">
  249. <p>{{ scope.row.createTime ? scope.row.createTime : '--' }}</p>
  250. </template>
  251. </el-table-column>
  252. <!-- <el-table-column prop="operate" label="操作" min-width="120" fixed="right" align="center">
  253. <template v-slot="scope">
  254. <el-button size="small" type="primary" link @click="check(scope.row)">查看</el-button>
  255. </template>
  256. </el-table-column> -->
  257. </el-table>
  258. <el-pagination class="pagination-style" @size-change="handleSizeChange" @current-change="handleCurrentChange"
  259. v-model:current-page="data.pagingData.page" :page-sizes="[10, 20, 50]" v-model:page-size="data.pagingData.pageSize"
  260. layout="total, sizes, prev, pager, next" :total="data.pagingData.total">
  261. </el-pagination>
  262. </div>
  263. </div>
  264. </template>