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.

689 lines
22 KiB

3 weeks ago
3 weeks ago
4 weeks ago
3 months ago
3 weeks ago
4 weeks ago
2 months ago
2 months ago
2 months ago
3 months ago
3 weeks ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
4 weeks ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
1 month ago
2 months ago
1 month ago
2 months ago
3 months ago
2 months ago
  1. <script setup>
  2. // 这是退款明细页面
  3. import { computed, onMounted, ref } from 'vue'
  4. import { ElMessage } from 'element-plus'
  5. import moment from 'moment'
  6. import API from '@/util/http.js'
  7. import request from '@/util/http.js'
  8. import { reverseMarketMapping } from "@/utils/marketMap.js";
  9. import { useAdminStore } from "@/store/index.js";
  10. import { storeToRefs } from "pinia";
  11. import { findMenuById, permissionMapping } from "@/utils/menuTreePermission.js"
  12. import dayjs from "dayjs";
  13. const adminStore = useAdminStore();
  14. const { adminData, menuTree } = storeToRefs(adminStore);
  15. const showEmployeeData = ref(false)
  16. const canLook = findMenuById(menuTree.value,permissionMapping.coinRefundDetail)
  17. const defaultTime = [
  18. new Date(2000, 1, 1, 0, 0, 0),
  19. new Date(2000, 2, 1, 23, 59, 59),
  20. ]
  21. //无法选择的时间
  22. const disabledDate = (time) => {
  23. const limitDate = new Date(2025, 0, 1);
  24. return time.getTime() < limitDate.getTime();
  25. }
  26. const format3 = (num) => {
  27. // 每三位添加逗号
  28. return num.toLocaleString('en-US')
  29. }
  30. // 精网号去空格
  31. const trimJwCode = () => {
  32. if (refundUser.value.jwcode) {
  33. // 去除所有空格,并尝试转换为整数
  34. const trimmed = refundUser.value.jwcode.toString().replace(/\s/g, '');
  35. const numeric = Number(trimmed);
  36. // 如果转换为数字成功,保存为数字,否则提示错误
  37. if (!isNaN(numeric)) {
  38. refundUser.value.jwcode = numeric;
  39. } else {
  40. ElMessage.error("精网号格式不正确,请输入数字");
  41. }
  42. }
  43. }
  44. // 变量
  45. //这是获取用户信息的接口
  46. // 标记当前激活的时间范围按钮
  47. const activeTimeRange = ref('')
  48. // 日期选择器变化时清除按钮激活状态
  49. const handleDatePickerChange = () => {
  50. activeTimeRange.value = ''
  51. }
  52. // 充值明细表格
  53. const tableData = ref([])
  54. // 搜索======================================
  55. // 搜索detail
  56. const refundUser = ref({
  57. market: "",
  58. refundType: ""
  59. })
  60. // 搜索对象
  61. const getObj = ref({
  62. pageNum: 1,
  63. pageSize: 50
  64. })
  65. //分页总条目
  66. const total = ref(100)
  67. // 搜索对象时间
  68. const getTime = ref([])
  69. // 搜索地区列表
  70. const market = ref([])
  71. // 定义响应式变量存储金币合计数
  72. const permanentGolds = ref(0)
  73. const freeGolds = ref(0)
  74. const taskGolds = ref(0)
  75. // 计算总金币数
  76. const sumGolds = computed(() => permanentGolds.value + freeGolds.value + taskGolds.value)
  77. // 退款类型
  78. const refundType = ref([])
  79. //时间格式化
  80. const formatTime = (val) => val ? moment(val).format('YYYY-MM-DD HH:mm:ss') : ''
  81. // 获取退款类型
  82. const getRefundTypes = async function () {
  83. try {
  84. // 发送请求获取退款类型
  85. const result = await API({
  86. url: '/refund/refundType', //这里应该写上一个退款类型的接口
  87. data: {}
  88. })
  89. console.log('退款类型请求成功', result)
  90. // 检查返回的数据是否为数组
  91. if (Array.isArray(result.data)) {
  92. // 将字符串数组转换为 { value, label } 格式
  93. refundType.value = result.data.map(item => ({ value: item, label: item }));
  94. } else {
  95. console.error('退款类型数据格式错误', result)
  96. ElMessage.error('退款类型数据格式错误,请联系管理员')
  97. }
  98. console.log('退款类型', refundType.value)
  99. } catch (error) {
  100. console.log('退款类型请求失败', error)
  101. }
  102. }
  103. // 搜索==============================================================
  104. // 搜索方法
  105. const getSelectBy = async function (val) {
  106. if (!findMenuById(menuTree.value, permissionMapping.coinRefundDetail)) {
  107. ElMessage.error('无此权限')
  108. return
  109. }
  110. try {
  111. // 搜索参数页码赋值
  112. if (typeof val === 'number') {
  113. getObj.value.pageNum = val
  114. }
  115. // 搜索参数时间赋值
  116. if (getTime.value != null) {
  117. if (getTime.value.startTime != '' && getTime.value.endTime != '') {
  118. refundUser.value.startTime = formatTime(getTime.value[0])
  119. refundUser.value.endTime = formatTime(getTime.value[1])
  120. }
  121. } else {
  122. refundUser.value.startTime = ''
  123. refundUser.value.endTime = ''
  124. }
  125. // 添加排序字段和排序方式到请求参数
  126. refundUser.value.sortField = sortField.value
  127. refundUser.value.sortOrder = sortOrder.value
  128. console.log('搜索参数', getObj.value)
  129. // 发送POST请求
  130. // if (refundUser.value.market === '9' || refundUser.value.market === '9999') {
  131. // refundUser.value.market = '';
  132. // }
  133. if (refundUser.value.jwcode) {
  134. // 纯数字
  135. const numberRegex = /^\d{1,9}$/;
  136. // 检查是否不是数字
  137. if (!numberRegex.test(refundUser.value.jwcode)) {
  138. ElMessage.error('请检查精网号格式')
  139. // 上面提示过了
  140. return
  141. }
  142. }
  143. const result = await API({
  144. url: '/refund/selectBy',
  145. data: {
  146. ...getObj.value,
  147. refundUser: { ...refundUser.value, flag: showEmployeeData.value ? 0 : 1 }
  148. }
  149. })
  150. console.log('===============================',refundUser.value)
  151. // 复制一份 refundUser.value 并移除排序字段和排序方式
  152. const detailWithoutSort = {
  153. ...refundUser.value,
  154. flag: showEmployeeData.value ? 0 : 1
  155. }
  156. delete detailWithoutSort.sortField
  157. delete detailWithoutSort.sortOrder
  158. const resultTotalGold = await API({
  159. url: '/refund/statsGold',
  160. data: {
  161. ...detailWithoutSort
  162. }
  163. })
  164. // 将响应结果存储到响应式数据中
  165. console.log('resultTotalGold请求成功', resultTotalGold)
  166. // 检查响应的 code 是否为 200 且 data 存在
  167. if (resultTotalGold.code === 200 && resultTotalGold.data) {
  168. const data = resultTotalGold.data
  169. console.log('获取到的金币数据:', data)
  170. permanentGolds.value = (Number(data.permanentGolds) || 0)
  171. freeGolds.value = (Number(data.freeGolds) || 0)
  172. taskGolds.value = (Number(data.taskGolds) || 0)
  173. }
  174. // 存储表格数据
  175. tableData.value = result.data.list
  176. tableData.value = tableData.value.map(item => ({
  177. ...item,
  178. sumGold: (Number(item.sumGold) || 0),
  179. permanentGold: (Number(item.permanentGold) || 0),
  180. freeGold: (Number(item.freeGold) || 0),
  181. taskGold: (Number(item.taskGold) || 0)
  182. }))
  183. console.log('tableData', tableData.value)
  184. // 存储分页总数
  185. total.value = result.data.total
  186. console.log('total', total.value)
  187. } catch (error) {
  188. console.log('请求失败', error)
  189. // 在这里可以处理错误逻辑,比如显示错误提示等
  190. }
  191. }
  192. // 搜索
  193. const search = function () {
  194. trimJwCode()
  195. getObj.value.pageNum = 1
  196. getSelectBy()
  197. }
  198. // 重置
  199. const reset = function () {
  200. refundUser.value = { market: "" }
  201. sortField.value = ''
  202. sortOrder.value = ''
  203. getTime.value = {}
  204. activeTimeRange.value = '' // 清除激活状态
  205. selectedMarketPath.value = []
  206. getSelectBy()
  207. }
  208. // 今天
  209. const getToday = function () {
  210. const today = dayjs()
  211. const startTime = today.startOf('day').format('YYYY-MM-DD HH:mm:ss')
  212. const endTime = today.endOf('day').format('YYYY-MM-DD HH:mm:ss')
  213. getTime.value = [startTime, endTime]
  214. console.log('getTime', getTime.value)
  215. activeTimeRange.value = 'today' // 标记当前激活状态
  216. getSelectBy()
  217. }
  218. // 昨天
  219. const getYesterday = function () {
  220. const today = dayjs()
  221. const startTime = today.subtract(1, 'day').startOf('day').format('YYYY-MM-DD HH:mm:ss')
  222. const endTime = today.subtract(1, 'day').endOf('day').format('YYYY-MM-DD HH:mm:ss')
  223. getTime.value = [startTime, endTime]
  224. console.log('getTime', getTime.value)
  225. activeTimeRange.value = 'yesterday' // 标记当前激活状态
  226. getSelectBy()
  227. }
  228. // 近7天
  229. const get7Days = function () {
  230. const today = dayjs()
  231. const startTime = today.subtract(6, 'day').startOf('day').format('YYYY-MM-DD HH:mm:ss')
  232. const endTime = today.endOf('day').format('YYYY-MM-DD HH:mm:ss')
  233. getTime.value = [startTime, endTime]
  234. console.log('getTime', getTime.value)
  235. activeTimeRange.value = '7days' // 标记当前激活状态
  236. getSelectBy()
  237. }
  238. const delObj = ref({})
  239. const del = function (row) {
  240. delObj.value.detailId = row.detailId
  241. console.log('delObj', delObj.value)
  242. }
  243. // 删除按钮的气泡弹出框确认按钮
  244. const delConfirm = async function () {
  245. try {
  246. console.log('delObj', delObj.value)
  247. // 发送POST请求
  248. const result = await API({
  249. url: '/refund/softDelete?detailId=' + delObj.value.detailId,
  250. data: {}
  251. })
  252. // 将响应结果存储到响应式数据中
  253. console.log('请求成功', result)
  254. // 刷新表格数据
  255. getSelectBy()
  256. } catch (error) {
  257. console.log('请求失败', error)
  258. // 在这里可以处理错误逻辑,比如显示错误提示等
  259. }
  260. }
  261. // 查询商品的接口
  262. const goods = ref([])
  263. const getGoods = async function () {
  264. try {
  265. // 发送POST请求
  266. const result = await request({
  267. url: '/general/goods',
  268. data: {}
  269. })
  270. // 将响应结果存储到响应式数据中
  271. console.log('请求成功product', result)
  272. if (Array.isArray(result.data)) {
  273. // 过滤掉空字符串和 null 值
  274. const validGoods = result.data.filter(item => item && item.trim() !== '');
  275. // 直接使用后端返回的字符串作为 value 和 label
  276. goods.value = validGoods.map(item => ({
  277. value: item,
  278. label: item
  279. }));
  280. }
  281. } catch (error) {
  282. console.log('请求失败', error)
  283. // 在这里可以处理错误逻辑,比如显示错误提示等
  284. }
  285. }
  286. // 挂载
  287. onMounted(async function () {
  288. console.log('=======',adminData.value)
  289. await getSelectBy()
  290. await getMarket()
  291. await getRefundTypes()
  292. await getGoods()
  293. })
  294. // 新增排序字段和排序方式
  295. const sortField = ref('')
  296. const sortOrder = ref('')
  297. // 处理排序事件
  298. const handleSortChange = (column) => {
  299. console.log('排序字段:', column.prop)
  300. console.log('排序方式:', column.order)
  301. if (column.prop === 'permanentGold') {
  302. sortField.value = 'permanentGold'
  303. } else if (column.prop === 'taskGold') {
  304. sortField.value = 'taskGold'
  305. } else if (column.prop === 'freeGold') {
  306. sortField.value = 'freeGold'
  307. } else if (column.prop === 'auditTime') {
  308. sortField.value = 'auditTime'
  309. } else if (column.prop === 'auditTime') {
  310. sortField.value = 'auditTime'
  311. } else if (column.prop === 'sumGold') {
  312. sortField.value = 'sumGold'
  313. }
  314. sortOrder.value = column.order === 'ascending' ? 'ASC' : 'DESC'
  315. getSelectBy()
  316. }
  317. const handlePageSizeChange = function (val) {
  318. getObj.value.pageSize = val
  319. getSelectBy()
  320. }
  321. const handleCurrentChange = function (val) {
  322. getObj.value.pageNum = val
  323. getSelectBy()
  324. }
  325. const exportExcel = async function () {
  326. const params = {
  327. refundUser: {
  328. jwcode: refundUser.value.jwcode || '',
  329. refundModel: refundUser.value.refundModel || '',
  330. market: refundUser.value.market || "",
  331. startTime: refundUser.value.startTime || '',
  332. endTime: refundUser.value.endTime || '',
  333. goodsName: refundUser.value.goodsName || '',
  334. flag: showEmployeeData.value ? 0 : 1,
  335. refundType: refundUser.value.refundType || '',
  336. },
  337. page: getObj.pageNum,
  338. size: total.value
  339. }
  340. try {
  341. const res = await API({ url: '/export/exportRefund', data: params })
  342. if (res.code === 200) {
  343. ElMessage.success('导出成功')
  344. } else {
  345. ElMessage.error(res.message || '导出失败,请稍后重试')
  346. }
  347. } catch (error) {
  348. console.log('请求失败', error)
  349. ElMessage.error('导出失败,请稍后重试')
  350. }
  351. }
  352. const exportListVisible = ref(false)
  353. // 打开导出列表弹窗
  354. const openExportList = () => {
  355. getExportList()
  356. exportListVisible.value = true
  357. }
  358. // 导出列表数据
  359. const exportList = ref([])
  360. // 导出列表加载状态
  361. const exportListLoading = ref(false)
  362. // 获取导出列表
  363. const getExportList = async () => {
  364. exportListLoading.value = true
  365. try {
  366. const result = await API({ url: '/export/export' })
  367. if (result.code === 200) {
  368. const filteredData = result.data.filter(item => {
  369. return item.type === 3; //3表示金币退款列表
  370. });
  371. exportList.value = filteredData
  372. } else {
  373. ElMessage.error(result.msg || '获取导出列表失败')
  374. }
  375. } catch (error) {
  376. console.error('获取导出列表出错:', error)
  377. ElMessage.error('获取导出列表失败,请稍后重试')
  378. } finally {
  379. exportListLoading.value = false
  380. }
  381. }
  382. // 下载导出文件
  383. const downloadExportFile = (item) => {
  384. if (item.state === 2) {
  385. const link = document.createElement('a')
  386. link.href = item.url
  387. link.download = item.fileName
  388. link.click()
  389. } else {
  390. ElMessage.warning('文件还在导出中,请稍后再试')
  391. }
  392. }
  393. //根据状态返回对应的标签类型
  394. const getTagType = (state) => {
  395. switch (state) {
  396. case 0:
  397. return 'info';
  398. case 1:
  399. return 'primary';
  400. case 2:
  401. return 'success';
  402. case 3:
  403. return 'danger';
  404. default:
  405. return 'info';
  406. }
  407. }
  408. //根据状态返回对应的标签文案
  409. const getTagText = (state) => {
  410. switch (state) {
  411. case 0:
  412. return '待执行';
  413. case 1:
  414. return '执行中';
  415. case 2:
  416. return '执行完成';
  417. case 3:
  418. return '执行出错';
  419. default:
  420. return '未知状态';
  421. }
  422. }
  423. // 存储地区选择变化
  424. const selectedMarketPath = ref("")
  425. const handleMarketChange = (value) => {
  426. if (value && value.length > 0) {
  427. const lastValue = value[value.length - 1]
  428. refundUser.value.market = reverseMarketMapping[lastValue]
  429. } else {
  430. refundUser.value.market = ''
  431. }
  432. }
  433. // 获取地区,修改为级联下拉框
  434. const getMarket = async function () {
  435. try {
  436. // 发送POST请求
  437. const result = await API({
  438. url: '/market/selectMarket',
  439. });
  440. // 将响应结果存储到响应式数据中
  441. console.log('请求成功', result)
  442. // 递归转换树形结构为级联选择器需要的格式(跳过第一级节点)
  443. const transformTree = (nodes) => {
  444. // 直接处理第一级节点的子节点
  445. const allChildren = nodes.flatMap(node => node.children || []);
  446. return allChildren.map(child => {
  447. const grandchildren = child.children && child.children.length
  448. ? transformTree([child]) // 递归处理子节点
  449. : null;
  450. return {
  451. value: child.name,
  452. label: child.name,
  453. children: grandchildren
  454. };
  455. });
  456. };
  457. // 存储地区信息
  458. market.value = transformTree(result.data)
  459. console.log('转换后的地区树==============', market.value)
  460. } catch (error) {
  461. console.log('请求失败', error)
  462. }
  463. }
  464. </script>
  465. <template>
  466. <el-card class="card1" style="margin-bottom: 1vh;">
  467. <div class="condition">
  468. <div style="display: flex;align-items: center;width:18vw">
  469. <el-text>精网号</el-text>
  470. <el-input v-model="refundUser.jwcode" placeholder="请输入精网号" style="width: 10vw;" clearable />
  471. </div>
  472. <div style="display: flex;align-items: center;width:18vw">
  473. <el-text>商品名称</el-text>
  474. <el-select v-model="refundUser.goodsName" placeholder="请选择商品名称" style="width: 10vw;" clearable filterable>
  475. <el-option v-for="item in goods" :key="item.value" :label="item.label" :value="item.value" />
  476. </el-select>
  477. </div>
  478. <div style="display: flex;align-items: center;width:18vw">
  479. <el-text size="large">所属地区</el-text>
  480. <el-cascader v-model="selectedMarketPath" :options="market" placeholder="请选择所属地区" clearable style="width:10vw"
  481. @change="handleMarketChange" />
  482. </div>
  483. <div style="display: flex;align-items: center;width:18vw">
  484. <el-text>退款类型</el-text>
  485. <el-select v-model="refundUser.refundType" placeholder="请选择退款类型" style="width: 10vw" clearable>
  486. <el-option v-for="item in refundType" :key="item.value" :label="item.label" :value="item.value" />
  487. </el-select>
  488. </div>
  489. <div>
  490. <el-checkbox v-model="showEmployeeData" @change="search()">员工数据</el-checkbox>
  491. </div>
  492. </div>
  493. <div>
  494. <el-col :span="24">
  495. <div>
  496. <el-text>退款时间</el-text>
  497. <el-date-picker v-model="getTime" type="datetimerange" range-separator="" start-placeholder="起始时间"
  498. end-placeholder="结束时间" style="width: 20vw;" @change="handleDatePickerChange" :default-time="defaultTime"
  499. :disabled-date="disabledDate" />
  500. <el-button @click="getToday()" style="margin-left: 10px" :type="activeTimeRange === 'today' ? 'primary' : ''">
  501. </el-button>
  502. <el-button @click="getYesterday()" style="margin-left: 10px"
  503. :type="activeTimeRange === 'yesterday' ? 'primary' : ''">
  504. </el-button>
  505. <el-button @click="get7Days()" style="margin-left: 10px" :type="activeTimeRange === '7days' ? 'primary' : ''">
  506. 近7天
  507. </el-button>
  508. <el-button type="success" @click="reset()">重置</el-button>
  509. <el-button type="primary" @click="search()" v-if="canLook">查询</el-button>
  510. <el-button type="primary" @click="exportExcel">导出Excel</el-button>
  511. <el-button type="primary" @click="openExportList">查看导出列表</el-button>
  512. </div>
  513. </el-col>
  514. </div>
  515. </el-card>
  516. <el-card class="card2">
  517. <div class="goldStatistics">
  518. 退款金币总数{{ format3(Math.abs(sumGolds).toFixed(2)) }}&nbsp;&nbsp;&nbsp;&nbsp;
  519. 永久金币{{ format3(Math.abs(permanentGolds).toFixed(2)) }}&nbsp;&nbsp;&nbsp;&nbsp;
  520. 免费金币{{ format3(Math.abs(freeGolds).toFixed(2)) }}&nbsp;&nbsp;&nbsp;&nbsp;
  521. 任务金币{{ format3(Math.abs(taskGolds).toFixed(2)) }}
  522. </div>
  523. <!-- 设置表格容器的高度和滚动样式 -->
  524. <div style="height: 58vh; overflow-y: auto;">
  525. <el-table :data="tableData" style="width: 82vw;" @sort-change="handleSortChange">
  526. <el-table-column type="index" label="序号" width="80px" fixed="left">
  527. <template #default="scope">
  528. <span>{{
  529. scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
  530. }}</span>
  531. </template>
  532. </el-table-column>
  533. <el-table-column prop="name" label="姓名" fixed="left" width="130px" show-overflow-tooltip />
  534. <el-table-column prop="jwcode" label="精网号" fixed="left" width="110px" />
  535. <el-table-column prop="market" label="所属地区" width="110px" />
  536. <el-table-column prop="orderCode" label="订单号" width="260px" show-overflow-tooltip />
  537. <el-table-column prop="goodsName" label="商品名称" width="110px" show-overflow-tooltip />
  538. <el-table-column prop="refundType" label="退款类型" width="100px" />
  539. <el-table-column prop="refundModel" label="退款方式" width="110px">
  540. <template #default="scope">
  541. {{ scope.row.refundModel === 0 ? '全部退款' : scope.row.refundModel === 1 ? '部分退款' : '' }}
  542. </template>
  543. </el-table-column>
  544. <el-table-column prop="sumGold" label="退款金币总数" width="150px" sortable="custom" />
  545. <el-table-column prop="permanentGold" label="永久金币" width="110px" sortable="custom" />
  546. <el-table-column prop="freeGold" sortable="custom" label="免费金币" width="110px" />
  547. <el-table-column prop="taskGold" sortable="custom" label="任务金币" width="110px" />
  548. <el-table-column prop="remark" label="退款原因" width="160px" show-overflow-tooltip />
  549. <el-table-column prop="adminName" label="提交人" width="100px" />
  550. <el-table-column prop="auditTime" sortable="custom" label="退款时间" width="180px">
  551. <template #default="scope">
  552. {{ moment(scope.row.auditTime).format('YYYY-MM-DD HH:mm:ss') }}
  553. </template>
  554. </el-table-column>
  555. </el-table>
  556. </div>
  557. <!-- 分页 -->
  558. <div class="pagination" style="margin-top: 20px;display: flex;">
  559. <el-pagination background :page-size="getObj.pageSize" :page-sizes="[5, 10, 20, 50, 100]"
  560. layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handlePageSizeChange"
  561. @current-change="handleCurrentChange" @jump="checkPageNumber"></el-pagination>
  562. </div>
  563. </el-card>
  564. <!-- 导出弹窗 -->
  565. <el-dialog v-model="exportListVisible" title="导出列表" width="80%">
  566. <el-table :data="exportList" style="width: 100% ;height: 60vh;" :loading="exportListLoading">
  567. <el-table-column prop="fileName" label="文件名" />
  568. <el-table-column prop="state" label="状态">
  569. <template #default="scope">
  570. <el-tag :type="getTagType(scope.row.state)" :effect="scope.row.state === 3 ? 'light' : 'plain'">
  571. {{ getTagText(scope.row.state) }}
  572. </el-tag>
  573. </template>
  574. </el-table-column>
  575. <el-table-column prop="auditTime" label="创建时间">
  576. <template #default="scope">
  577. {{ moment(scope.row.auditTime).format('YYYY-MM-DD HH:mm:ss') }}
  578. </template>
  579. </el-table-column>
  580. <el-table-column label="操作">
  581. <template #default="scope">
  582. <el-button type="primary" size="small" @click="downloadExportFile(scope.row)"
  583. :disabled="scope.row.state !== 2">
  584. 下载
  585. </el-button>
  586. </template>
  587. </el-table-column>
  588. </el-table>
  589. <template #footer>
  590. <div class="dialog-footer">
  591. <el-button text @click="exportListVisible = false">关闭</el-button>
  592. </div>
  593. </template>
  594. </el-dialog>
  595. </template>
  596. <style scoped lang="scss">
  597. // 搜索的卡片样式
  598. .card1 {
  599. background: #F3FAFE;
  600. }
  601. // 表单的卡片样式
  602. .card2 {
  603. background: #E7F4FD;
  604. }
  605. // 新币总数等等
  606. .goldStatistics {
  607. margin-left: 1vw;
  608. margin-bottom: 1vh;
  609. color: #000000;
  610. font-family: "PingFang SC";
  611. font-size: 16px;
  612. font-style: normal;
  613. font-weight: 700;
  614. line-height: 20px;
  615. }
  616. // 表头背景等
  617. :deep(.el-table__header-wrapper),
  618. :deep(.el-table__body-wrapper),
  619. :deep(.el-table__cell),
  620. /* 表格 */
  621. :deep(.el-table__body td) {
  622. background-color: #F3FAFE !important;
  623. }
  624. /* 表头 */
  625. :deep(.el-table__header th) {
  626. background-color: #F3FAFE !important;
  627. }
  628. /* 鼠标悬停 */
  629. :deep(.el-table__row:hover > .el-table__cell) {
  630. background-color: #E5EBFE !important;
  631. }
  632. .condition{
  633. display: flex;
  634. width:82vw;
  635. margin-bottom: 0.5vh;
  636. }
  637. </style>