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.

796 lines
23 KiB

3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
  1. <script setup>
  2. import { ref, onMounted, reactive, computed } from 'vue'
  3. import ElementPlus from 'element-plus'
  4. import { ElMessage, ElMessageBox } from 'element-plus'
  5. import { AiFillRead } from 'vue-icons-plus/ai'
  6. import axios from 'axios'
  7. import moment from 'moment'
  8. import API from '@/util/http'
  9. //这是获取用户信息的接口
  10. const adminData = ref({})
  11. const getAdminData = async function () {
  12. try {
  13. const result = await API({ url: '/admin/userinfo', data: {} })
  14. adminData.value = result
  15. rechargeVo.value.adminId = adminData.value.adminId
  16. console.log('请求成功', result)
  17. console.log('用户信息', adminData.value)
  18. } catch (error) {
  19. console.log('请求失败', error)
  20. }
  21. }
  22. // 变量
  23. // 充值明细表格
  24. const tableData = ref([])
  25. // 搜索===========================================
  26. // 搜索recharge
  27. const rechargeVo = ref({
  28. adminId: adminData.value.adminId
  29. })
  30. // 搜索对象
  31. const getObj = ref({
  32. pageNum: 1,
  33. pageSize: 50
  34. })
  35. //分页总条目
  36. const total = ref(100)
  37. // 搜索对象时间
  38. const getTime = ref([])
  39. // 搜索活动列表
  40. const activity = ref([])
  41. // 所有信息
  42. const allData = ref([])
  43. // 搜索地区列表
  44. const area = ref([])
  45. //标签页默认高亮选项
  46. const activeName = ref('all')
  47. // 支付方式选项
  48. const payWay = [
  49. {
  50. value: '微信',
  51. label: '微信'
  52. },
  53. {
  54. value: '支付宝',
  55. label: '支付宝'
  56. },
  57. {
  58. value: '银联',
  59. label: '银联'
  60. },
  61. {
  62. value: '信用卡',
  63. label: '信用卡'
  64. },
  65. {
  66. value: '借记卡',
  67. label: '借记卡'
  68. },
  69. {
  70. value: '现金充值',
  71. label: '现金充值'
  72. }
  73. ]
  74. // 删除==========================================================
  75. // 删除对象
  76. const delObj = ref({})
  77. // //表格高度
  78. // const tableHeight = computed(function () {
  79. // return (getObj.value.pageSize + 2) * 60 + "px";
  80. // });
  81. // 方法
  82. // 合计数存储
  83. const trueGold = ref(0)
  84. const trueRGold = ref(0)
  85. const trueFGold = ref(0)
  86. //全部
  87. const totalmoney = ref(0)
  88. const totalRcoin = ref(0)
  89. const totalFcoin = ref(0)
  90. //待审核
  91. const pendingGold = ref(0)
  92. const pendingRGold = ref(0)
  93. const pendingFGold = ref(0)
  94. // 已通过金币数
  95. const approvedGold = ref(0)
  96. const approvedRGold = ref(0)
  97. const approvedFGold = ref(0)
  98. // 已驳回金币数
  99. const rejectedGold = ref(0)
  100. const rejectedRGold = ref(0)
  101. const rejectedFGold = ref(0)
  102. // 搜索===========================================================================
  103. // 搜索方法
  104. const get = async function (val) {
  105. try {
  106. // 地区赋值
  107. if (adminData.value.area === '泰国') {
  108. rechargeVo.value.areas = ['泰国', '越南']
  109. } else if (adminData.value.area !== '总部') {
  110. rechargeVo.value.area = adminData.value.area
  111. }
  112. // 搜索参数页码赋值
  113. if (typeof val === 'number') {
  114. getObj.value.pageNum = val
  115. }
  116. // 搜索参数时间赋值
  117. if (getTime.value != null) {
  118. if (getTime.value.startTime != '' && getTime.value.endTime != '') {
  119. rechargeVo.value.startTime = getTime.value[0]
  120. rechargeVo.value.endTime = getTime.value[1]
  121. }
  122. } else {
  123. rechargeVo.value.startTime = ''
  124. rechargeVo.value.endTime = ''
  125. }
  126. // 搜索参数赋值
  127. rechargeVo.value.sortField = sortField.value
  128. rechargeVo.value.sortOrder = sortOrder.value
  129. console.log('搜索参数', getObj.value)
  130. // 发送POST请求
  131. const result = await API({
  132. url: '/recharge/recharge',
  133. data: { ...getObj.value, rechargeVo: { ...rechargeVo.value } }
  134. })
  135. // 复制一份 rechargeVo.value 并移除排序字段和排序方式
  136. const detailWithoutSort = ref({
  137. area: rechargeVo.value.area,
  138. adminId: rechargeVo.value.adminId,
  139. startTime: rechargeVo.value.startTime,
  140. endTime: rechargeVo.value.endTime
  141. })
  142. const result2 = await API({
  143. url: '/recharge/recharge/RechargeA',
  144. data: {
  145. ...detailWithoutSort.value
  146. }
  147. })
  148. // 检查 result2 是否为空
  149. if (!result2 || !result2.data || result2.data.length === 0) {
  150. totalmoney.value = 0
  151. totalRcoin.value = 0
  152. totalFcoin.value = 0
  153. }
  154. if (result2.data) {
  155. result2.data.forEach((item) => {
  156. switch (item.auditStatus) {
  157. case '待审核':
  158. // 若 item.raudit 为空则赋值为 0
  159. // 若 item.sumRaudit 为空则赋值为 0
  160. pendingGold.value = item.sumRaudit || 0
  161. pendingRGold.value = item.sumRaudit1 || 0
  162. pendingFGold.value = item.sumRaudit2 || 0
  163. break
  164. case '已通过':
  165. approvedGold.value = item.sumRaudit || 0
  166. approvedRGold.value = item.sumRaudit1 || 0
  167. approvedFGold.value = item.sumRaudit2 || 0
  168. break
  169. case '已驳回':
  170. rejectedGold.value = item.sumRaudit || 0
  171. rejectedRGold.value = item.sumRaudit1 || 0
  172. rejectedFGold.value = item.sumRaudit2 || 0
  173. break
  174. }
  175. })
  176. }
  177. trueGold.value = pendingGold.value + approvedGold.value + rejectedGold.value
  178. trueRGold.value =
  179. pendingRGold.value + approvedRGold.value + rejectedRGold.value
  180. trueFGold.value =
  181. pendingFGold.value + approvedFGold.value + rejectedFGold.value
  182. // 将响应结果存储到响应式数据中
  183. console.log('请求成功', result)
  184. // 存储表格数据
  185. tableData.value = result.data.list
  186. console.log('tableData', tableData.value)
  187. // 存储分页总数
  188. total.value = result.data.total
  189. console.log('total', total.value)
  190. } catch (error) {
  191. console.log('请求失败', error)
  192. // 在这里可以处理错误逻辑,比如显示错误提示等
  193. }
  194. }
  195. // 搜索
  196. const search = function () {
  197. getObj.value.pageNum = 1
  198. get()
  199. }
  200. // 重置
  201. const reset = function () {
  202. delete rechargeVo.value.activityId
  203. delete rechargeVo.value.payWay
  204. delete rechargeVo.value.area
  205. delete rechargeVo.value.startTime
  206. delete rechargeVo.value.endTime
  207. delete sortField.value
  208. delete sortOrder.value
  209. getTime.value = {}
  210. }
  211. // 今天
  212. const getToday = function () {
  213. const today = new Date()
  214. const startTime = new Date(
  215. today.getFullYear(),
  216. today.getMonth(),
  217. today.getDate()
  218. )
  219. const endTime = new Date(
  220. today.getFullYear(),
  221. today.getMonth(),
  222. today.getDate() + 1
  223. )
  224. getTime.value = [startTime, endTime]
  225. console.log('getTime', getTime.value)
  226. get()
  227. }
  228. const handlePageSizeChange = function (val) {
  229. getObj.value.pageSize = val
  230. get()
  231. }
  232. const handleCurrentChange = function (val) {
  233. getObj.value.pageNum = val
  234. get()
  235. }
  236. // 昨天
  237. const getYesterday = function () {
  238. const yesterday = new Date()
  239. yesterday.setDate(yesterday.getDate() - 1)
  240. const startTime = new Date(
  241. yesterday.getFullYear(),
  242. yesterday.getMonth(),
  243. yesterday.getDate()
  244. )
  245. const endTime = new Date(
  246. yesterday.getFullYear(),
  247. yesterday.getMonth(),
  248. yesterday.getDate() + 1
  249. )
  250. getTime.value = [startTime, endTime]
  251. console.log('getTime', getTime.value)
  252. get()
  253. }
  254. // 近7天
  255. const get7Days = function () {
  256. const today = new Date()
  257. const startTime = new Date(
  258. today.getFullYear(),
  259. today.getMonth(),
  260. today.getDate() - 6
  261. )
  262. const endTime = new Date(
  263. today.getFullYear(),
  264. today.getMonth(),
  265. today.getDate() + 1
  266. )
  267. getTime.value = [startTime, endTime]
  268. console.log('getTime', getTime.value)
  269. get()
  270. }
  271. //全部充值明细
  272. const adminAll = function () {
  273. console.log('adminAll')
  274. rechargeVo.value.status = ''
  275. getObj.value.pageNum = 1
  276. get()
  277. }
  278. //待审核充值明细
  279. const adminWait = async function () {
  280. rechargeVo.value.status = 0
  281. getObj.value.pageNum = 1
  282. await get()
  283. console.log('adminWait')
  284. trueGold.value = pendingGold.value
  285. trueRGold.value = pendingRGold.value
  286. trueFGold.value = pendingFGold.value
  287. }
  288. //已通过充值明细
  289. const adminPass = async function () {
  290. rechargeVo.value.status = 1
  291. getObj.value.pageNum = 1
  292. await get()
  293. trueGold.value = approvedGold.value
  294. trueRGold.value = approvedRGold.value
  295. trueFGold.value = approvedFGold.value
  296. console.log('adminPass')
  297. }
  298. //已驳回充值明细
  299. const adminReject = async function () {
  300. rechargeVo.value.status = 2
  301. getObj.value.pageNum = 1
  302. await get()
  303. console.log('adminReject')
  304. trueGold.value = rejectedGold.value
  305. trueRGold.value = rejectedRGold.value
  306. trueFGold.value = rejectedFGold.value
  307. }
  308. //点击标签页
  309. const handleClick = function (tab, event) {
  310. if (tab.props.name === 'all') {
  311. adminAll()
  312. } else if (tab.props.name === 'wait') {
  313. adminWait()
  314. } else if (tab.props.name === 'pass') {
  315. adminPass()
  316. } else if (tab.props.name === 'reject') {
  317. adminReject()
  318. }
  319. }
  320. // 获取活动名称
  321. const getActivity = async function () {
  322. try {
  323. // 发送POST请求
  324. const result = await API({ url: '/recharge/activity/select', data: {} })
  325. // 将响应结果存储到响应式数据中
  326. console.log('请求成功', result)
  327. // 存储表格数据
  328. activity.value = result.data
  329. console.log('activity', activity.value)
  330. } catch (error) {
  331. console.log('请求失败', error)
  332. // 在这里可以处理错误逻辑,比如显示错误提示等
  333. }
  334. }
  335. // 获取地区
  336. // 获取地区
  337. const getArea = async function () {
  338. try {
  339. // 发送POST请求
  340. const result = await API({ url: 'http://18.143.76.3:10704/general/market', data: {} })
  341. // 将响应结果存储到响应式数据中
  342. console.log('请求成功', result)
  343. // 存储地区信息
  344. area.value = result.data
  345. console.log('地区', area.value)
  346. } catch (error) {
  347. console.log('请求失败', error)
  348. // 在这里可以处理错误逻辑,比如显示错误提示等
  349. }
  350. }
  351. // 删除=================================
  352. // 点击删除按钮
  353. const del = function (row) {
  354. delObj.value.rechargeId = row.rechargeId
  355. console.log('delObj1', delObj.value)
  356. }
  357. // 确认删除按钮
  358. const delConfirm = async function () {
  359. try {
  360. console.log('delObj2', delObj.value)
  361. const result = await API({
  362. url: '/recharge/recharge/edit',
  363. data: delObj.value
  364. })
  365. console.log('删除成功', result)
  366. // 刷新表格数据
  367. get()
  368. } catch (error) {
  369. console.log('请求失败', error)
  370. // 在这里可以处理错误逻辑,比如显示错误提示等
  371. }
  372. }
  373. // 验证跳转输入框的数字是否合法
  374. const checkNumber = function () {
  375. if (typeof parseInt(getObj.value.pageNum) === 'number') {
  376. console.log('总共有多少页' + Math.ceil(total.value / getObj.value.pageSize))
  377. if (
  378. getObj.value.pageNum > 0 &&
  379. getObj.value.pageNum <= Math.ceil(total.value / getObj.value.pageSize)
  380. ) {
  381. getObj.value.pageNum = parseInt(getObj.value.pageNum)
  382. console.log('输入的数字合法')
  383. get()
  384. } else {
  385. //提示
  386. ElMessage({
  387. type: 'error',
  388. message: '请检查输入内容'
  389. })
  390. }
  391. } else {
  392. //提示
  393. ElMessage({
  394. type: 'error',
  395. message: '请检查输入内容'
  396. })
  397. }
  398. }
  399. // 挂载
  400. onMounted(async function () {
  401. await getAdminData()
  402. await get()
  403. await getActivity()
  404. await getArea()
  405. })
  406. // 新增排序字段和排序方式
  407. const sortField = ref('')
  408. const sortOrder = ref('')
  409. // 处理排序事件
  410. const handleSortChange = (column) => {
  411. console.log('排序字段:', column.prop)
  412. console.log('排序方式:', column.order)
  413. if (column.prop === 'paidGold') {
  414. sortField.value = 'paid_gold'
  415. } else if (column.prop === 'freeGold') {
  416. sortField.value = 'free_gold'
  417. } else if (column.prop === 'rechargeTime') {
  418. sortField.value = 'recharge_time'
  419. } else if (column.prop === 'createTime') {
  420. sortField.value = 'create_time'
  421. } else if(column.prop === 'rechargeGold'){
  422. sortField.value = 'recharge_gold'
  423. }
  424. sortOrder.value = column.order === 'ascending' ? 'ASC' : 'DESC'
  425. console.log('传递给后端的排序字段:', sortField.value)
  426. console.log('传递给后端的排序方式:', sortOrder.value)
  427. get()
  428. }
  429. </script>
  430. <template>
  431. <el-row>
  432. <el-col>
  433. <el-card style="margin-bottom: 20px">
  434. <el-row style="margin-bottom: 10px">
  435. <el-col :span="8">
  436. <div class="head-card-element">
  437. <el-text class="mx-1" size="large">活动名称</el-text>
  438. <el-select
  439. v-model="rechargeVo.activityId"
  440. placeholder="请选择活动名称"
  441. size="large"
  442. style="width: 240px"
  443. clearable
  444. >
  445. <el-option
  446. v-for="item in activity"
  447. :key="item.activityId"
  448. :label="item.activityName"
  449. :value="item.activityId"
  450. />
  451. </el-select>
  452. </div>
  453. </el-col>
  454. <el-col :span="8">
  455. <!-- <div class="head-card-element">
  456. <el-text class="mx-1" size="large">支付方式</el-text>
  457. <el-select
  458. v-model="rechargeVo.payWay"
  459. placeholder="请选择支付方式"
  460. size="large"
  461. style="width: 240px"
  462. clearable
  463. >
  464. <el-option
  465. v-for="item in payWay"
  466. :key="item.value"
  467. :label="item.label"
  468. :value="item.value"
  469. />
  470. </el-select>
  471. </div> -->
  472. </el-col>
  473. <el-col :span="8">
  474. <div class="head-card-element" v-if="adminData.area == '总部'">
  475. <el-text class="mx-1" size="large">所属地区</el-text>
  476. <el-select
  477. v-model="rechargeVo.area"
  478. placeholder="请选择所属地区"
  479. size="large"
  480. style="width: 240px"
  481. clearable
  482. >
  483. <el-option
  484. v-for="item in area"
  485. :key="item"
  486. :label="item"
  487. :value="item"
  488. />
  489. </el-select>
  490. </div>
  491. </el-col>
  492. </el-row>
  493. <el-row>
  494. <el-col :span="21">
  495. <div class="head-card-element">
  496. <el-text class="mx-1" size="large">充值时间</el-text>
  497. <el-date-picker
  498. v-model="getTime"
  499. type="datetimerange"
  500. range-separator="至"
  501. start-placeholder="起始时间"
  502. end-placeholder="结束时间"
  503. />
  504. <el-button style="margin-left: 10px" @click="getToday()"
  505. ></el-button
  506. >
  507. <el-button @click="getYesterday()"></el-button>
  508. <el-button @click="get7Days()">近7天</el-button>
  509. </div>
  510. </el-col>
  511. <el-col :span="3">
  512. <div class="head-card-btn">
  513. <el-button type="success" @click="reset()">重置</el-button>
  514. <el-button type="primary" @click="search()">查询</el-button>
  515. </div>
  516. </el-col>
  517. </el-row>
  518. </el-card>
  519. </el-col>
  520. </el-row>
  521. <el-row>
  522. <el-col>
  523. <el-card>
  524. <el-tabs
  525. v-model="activeName"
  526. type="card"
  527. class="demo-tabs"
  528. @tab-click="handleClick"
  529. >
  530. <el-tab-pane label="全部" name="all"></el-tab-pane>
  531. <el-tab-pane label="待审核" name="wait"></el-tab-pane>
  532. <el-tab-pane label="已通过" name="pass"></el-tab-pane>
  533. <el-tab-pane label="已驳回" name="reject"></el-tab-pane>
  534. <div>
  535. 充值金额{{ trueRGold.toFixed(2) }}新币永久金币{{
  536. trueRGold.toFixed(2)
  537. }}金币免费金币{{ trueFGold }}金币
  538. </div>
  539. </el-tabs>
  540. <!-- 设置表格容器的高度和滚动样式 -->
  541. <div style="height: 520px; overflow-y: auto">
  542. <el-table
  543. :data="tableData"
  544. style="width: 100%"
  545. height="520px"
  546. @sort-change="handleSortChange"
  547. >
  548. <el-table-column
  549. type="index"
  550. label="序号"
  551. width="100px"
  552. fixed="left"
  553. >
  554. <template #default="scope">
  555. <span>{{
  556. scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
  557. }}</span>
  558. </template>
  559. </el-table-column>
  560. <el-table-column
  561. fixed="left"
  562. prop="username"
  563. label="姓名"
  564. width="100px"
  565. />
  566. <el-table-column
  567. fixed="left"
  568. prop="jwcode"
  569. label="精网号"
  570. width="110px"
  571. />
  572. <el-table-column prop="area" label="所属地区" width="100px" />
  573. <el-table-column
  574. prop="activityName"
  575. label="活动名称"
  576. width="150px"
  577. />
  578. <!-- <el-table-column prop="" label="货币名称" width="120px" /> -->
  579. <el-table-column
  580. prop="paidGold"
  581. sortable="custom"
  582. label="充值金额"
  583. width="120px"
  584. />
  585. <el-table-column
  586. prop="rechargeGold"
  587. label="永久金币"
  588. sortable="custom"
  589. width="110px"
  590. />
  591. <el-table-column
  592. prop="freeGold"
  593. label="免费金币"
  594. sortable="custom"
  595. width="110px"
  596. />
  597. <el-table-column
  598. prop="remark"
  599. label="备注"
  600. width="200px"
  601. show-overflow-tooltip
  602. />
  603. <el-table-column prop="payWay" label="支付方式" width="100px" />
  604. <el-table-column
  605. prop="rechargeVoucher"
  606. label="支付凭证"
  607. width="150px"
  608. >
  609. <template #default="scope">
  610. <el-image
  611. :preview-src-list="[scope.row.rechargeVoucher]"
  612. preview-teleported="true"
  613. :src="scope.row.rechargeVoucher"
  614. alt="凭证"
  615. style="width: 50px; height: 50px"
  616. />
  617. </template>
  618. </el-table-column>
  619. <el-table-column prop="name" label="提交人" width="100px" />
  620. <el-table-column prop="status" label="状态" width="100px">
  621. <template #default="scope">
  622. <span v-if="scope.row.status === 1">
  623. <div class="status">
  624. <span class="green-dot"></span>
  625. <span>已通过</span>
  626. </div>
  627. </span>
  628. <span v-if="scope.row.status === 0">
  629. <div class="status">
  630. <span class="grey-dot"></span>
  631. <span>待审核</span>
  632. </div>
  633. </span>
  634. <span v-if="scope.row.status === 2">
  635. <div class="status">
  636. <span class="red-dot"></span>
  637. <span>已驳回</span>
  638. </div>
  639. </span>
  640. </template>
  641. </el-table-column>
  642. <el-table-column
  643. prop="reson"
  644. label="驳回理由"
  645. width="200px"
  646. show-overflow-tooltip
  647. />
  648. <el-table-column
  649. prop="createTime"
  650. sortable
  651. label="交款时间"
  652. width="200px"
  653. >
  654. <!-- <template #default="scope">
  655. {{
  656. moment(scope.row.rechargeTime).format('YYYY-MM-DD HH:mm:ss')
  657. }}
  658. </template> -->
  659. </el-table-column>
  660. <el-table-column
  661. prop="rechargeTime"
  662. sortable="custom"
  663. label="提交时间"
  664. width="200px"
  665. />
  666. <el-table-column
  667. fixed="right"
  668. prop="operation"
  669. label="操作"
  670. width="150px"
  671. >
  672. <template #default="scope">
  673. <el-popconfirm
  674. title="确定将此条活动删除吗?"
  675. @confirm="delConfirm"
  676. >
  677. <template #reference>
  678. <el-button type="primary" text @click="del(scope.row)">
  679. 删除
  680. </el-button>
  681. </template>
  682. <template #actions="{ confirm, cancel }">
  683. <el-button size="small" @click="cancel">取消</el-button>
  684. <el-button type="primary" size="small" @click="confirm">
  685. 确定
  686. </el-button>
  687. </template>
  688. </el-popconfirm>
  689. </template>
  690. </el-table-column>
  691. </el-table>
  692. </div>
  693. <!-- 分页 -->
  694. <div class="pagination" style="margin-top: 20px">
  695. <el-pagination
  696. background
  697. :page-size="getObj.pageSize"
  698. :page-sizes="[5, 10, 20, 50, 100]"
  699. layout="total, sizes, prev, pager, next, jumper"
  700. :total="total"
  701. @size-change="handlePageSizeChange"
  702. @current-change="handleCurrentChange"
  703. ></el-pagination>
  704. </div>
  705. </el-card>
  706. </el-col>
  707. </el-row>
  708. <!-- 编辑弹窗 -->
  709. <el-dialog
  710. v-model="editRechargeVisible"
  711. title="新增活动"
  712. width="500"
  713. :before-close="closeEditRechargeVisible"
  714. >
  715. <template #footer>
  716. <el-form :model="editObj" label-width="auto" style="max-width: 600px">
  717. <el-form-item label="活动名称:">
  718. <el-input
  719. v-model="addObj.activityName"
  720. placeholder="请输入活动名称"
  721. style="width: 220px"
  722. />
  723. </el-form-item>
  724. <el-form-item label="免费金币:">
  725. <el-radio-group v-model="addObj.freeGold">
  726. <el-radio value="0">无赠送</el-radio>
  727. <el-radio value="1">有赠送</el-radio>
  728. </el-radio-group>
  729. </el-form-item>
  730. <el-form-item label="免费金币兑换比:">
  731. <el-input
  732. v-model="addObj.rechargeRatio"
  733. placeholder="请输入"
  734. style="width: 80px"
  735. />1
  736. <div style="color: grey">(提示当前规则每10新币可兑换1免费金币)</div>
  737. </el-form-item>
  738. <el-form-item label="开始时间:">
  739. <el-time-picker v-model="addObj.startTime" />
  740. </el-form-item>
  741. <el-form-item label="结束时间:">
  742. <el-time-picker v-model="addObj.endTime" />
  743. </el-form-item>
  744. <el-form-item label="添加人:">
  745. <el-input v-model="addObj.adminName" disabled style="width: 220px" />
  746. </el-form-item>
  747. </el-form>
  748. <div class="dialog-footer">
  749. <el-button @click="closeAddActivityVisible">取消</el-button>
  750. <el-button type="primary" @click="closeAddActivityVisible">
  751. 提交
  752. </el-button>
  753. </div>
  754. </template>
  755. </el-dialog>
  756. </template>
  757. <style scoped>
  758. .pagination {
  759. display: flex;
  760. }
  761. .status {
  762. display: flex;
  763. }
  764. .head-card {
  765. display: flex;
  766. }
  767. .head-card-element {
  768. margin-right: 20px;
  769. }
  770. .head-card-btn {
  771. margin-left: auto;
  772. }
  773. </style>