金币系统前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

202 lines
6.8 KiB

  1. <script setup>
  2. import { ref, onMounted, reactive, computed } from "vue";
  3. import ElementPlus from "element-plus";
  4. import axios from 'axios';
  5. // 充值明细表格
  6. const tableData = ref([]);
  7. // 搜索===========================================
  8. // 搜索detail
  9. const detail = ref({});
  10. // 搜索对象
  11. const getObj = ref({
  12. pageNum: 1,
  13. pageSize: 5,
  14. });
  15. //分页总条目
  16. const total = ref(100);
  17. // 搜索对象时间
  18. const getTime = ref([]);
  19. // 支付方式选项
  20. const updateType = [
  21. {
  22. value: '充值',
  23. label: '充值',
  24. },
  25. {
  26. value: '消费',
  27. label: '消费',
  28. },
  29. {
  30. value: '退款',
  31. label: '退款',
  32. },
  33. ]
  34. //表格高度
  35. const tableHeight = computed(function () {
  36. return (getObj.value.pageSize + 2) * 60 + 'px';
  37. });
  38. // 方法
  39. // 搜索===========================================================================
  40. // 搜索方法
  41. const get = async function (val) {
  42. try {
  43. // 搜索参数页码赋值
  44. if (typeof val === 'number') {
  45. getObj.value.pageNum = val;
  46. }
  47. // 搜索参数时间赋值
  48. if (getTime.value != null) {
  49. if (getTime.value.startDate != '' && getTime.value.endDate != '') {
  50. detail.value.startDate = getTime.value[0];
  51. detail.value.endDate = getTime.value[1];
  52. }
  53. } else {
  54. detail.value.startDate = '';
  55. detail.value.endDate = '';
  56. }
  57. console.log('搜索参数', getObj.value);
  58. // 发送POST请求
  59. const result = await axios.post('http://192.168.8.93:10040/detail', { ...getObj.value, detail: { ...detail.value } });
  60. // 将响应结果存储到响应式数据中
  61. console.log('请求成功', result);
  62. // 存储表格数据
  63. tableData.value = result.data.data.list;
  64. console.log('tableData', tableData.value);
  65. // 存储分页总数
  66. total.value = result.data.data.total;
  67. console.log('total', total.value);
  68. } catch (error) {
  69. console.log('请求失败', error);
  70. // 在这里可以处理错误逻辑,比如显示错误提示等
  71. }
  72. }
  73. // 重置
  74. const reset = function () {
  75. detail.value.jwcode = '';
  76. detail.value.updateType = '';
  77. detail.value.startDate = '';
  78. detail.value.endDate = '';
  79. getTime.value = {};
  80. }
  81. // 今天
  82. const getToday = function () {
  83. const today = new Date();
  84. const startDate = new Date(today.getFullYear(), today.getMonth(), today.getDate());
  85. const endDate = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1);
  86. getTime.value = [startDate, endDate];
  87. console.log('getTime', getTime.value);
  88. get();
  89. }
  90. // 昨天
  91. const getYesterday = function () {
  92. const yesterday = new Date();
  93. yesterday.setDate(yesterday.getDate() - 1);
  94. const startDate = new Date(yesterday.getFullYear(), yesterday.getMonth(), yesterday.getDate());
  95. const endDate = new Date(yesterday.getFullYear(), yesterday.getMonth(), yesterday.getDate() + 1);
  96. getTime.value = [startDate, endDate];
  97. console.log('getTime', getTime.value);
  98. get();
  99. }
  100. // 近7天
  101. const get7Days = function () {
  102. const today = new Date();
  103. const startDate = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 6);
  104. const endDate = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1);
  105. getTime.value = [startDate, endDate];
  106. console.log('getTime', getTime.value);
  107. get();
  108. }
  109. // 挂载
  110. onMounted(async function () {
  111. await get();
  112. })
  113. </script>
  114. <template>
  115. <el-row>
  116. <el-col>
  117. <el-card style="margin-bottom: 20px">
  118. <div class="head-card">
  119. <div class="head-card-element">
  120. <el-text class="mx-1" size="large">精网号</el-text>
  121. <el-input v-model="detail.jwcode" style="width: 240px" placeholder="请输入精网号" clearable />
  122. </div>
  123. <div class="head-card-element">
  124. <el-text class="mx-1" size="large">更新类型</el-text>
  125. <el-select v-model="detail.updateType" placeholder="请选择更新类型" size="large" style="width: 240px">
  126. <el-option v-for="item in updateType" :key="item.value" :label="item.label"
  127. :value="item.value" />
  128. </el-select>
  129. </div>
  130. <div class="head-card-element">
  131. <el-text class="mx-1" size="large">更新时间</el-text>
  132. <el-time-picker v-model="getTime" is-range range-separator="" start-placeholder="起始时间"
  133. end-placeholder="结束时间" />
  134. </div>
  135. <div class="head-card-btn">
  136. <el-button @click="reset()">重置</el-button>
  137. <el-button type="primary" @click="get()">查询</el-button>
  138. </div>
  139. </div>
  140. </el-card>
  141. </el-col>
  142. </el-row>
  143. <el-row>
  144. <el-col>
  145. <el-card>
  146. <div>
  147. 现有金币免费金币充值金币任务金币
  148. </div>
  149. <div>
  150. <el-table :data="tableData" style="width: 100%">
  151. <el-table-column prop="name" label="姓名" />
  152. <el-table-column prop="jwcode" label="精网号" />
  153. <el-table-column prop="area" label="所属地区" />
  154. <el-table-column prop="gold" label="更新数量">
  155. <template #default="scope">
  156. <span>{{ scope.row.rechargeCoin + scope.row.freeCoin + scope.row.taskCoin }}</span>
  157. </template>
  158. </el-table-column>
  159. <el-table-column prop="updateType" label="更新类型" />
  160. <el-table-column prop="freeCoin" label="免费金币" />
  161. <el-table-column prop="rechargeCoin" label="充值金币" />
  162. <el-table-column prop="taskCoin" label="任务金币" />
  163. <el-table-column prop="name" label="提交人" />
  164. <el-table-column prop="createTime" label="更新时间" />
  165. </el-table>
  166. </div>
  167. <!-- 分页 -->
  168. <el-pagination background layout="prev, pager, next" :total="total" />
  169. </el-card>
  170. </el-col>
  171. </el-row>
  172. </template>
  173. <style scoped>
  174. .status {
  175. display: flex;
  176. }
  177. .head-card {
  178. display: flex;
  179. }
  180. .head-card-element {
  181. margin-right: 20px;
  182. }
  183. .head-card-btn {
  184. margin-left: auto;
  185. }
  186. </style>