金币系统前端
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.

868 lines
24 KiB

  1. <script setup>
  2. import { ref, onMounted, computed, reactive } from 'vue'
  3. import { ElMessage, ElMessageBox } from 'element-plus'
  4. import axios from 'axios'
  5. import { createApp } from 'vue'
  6. import moment from 'moment'
  7. import API from '../../api/index.js'
  8. import _ from 'lodash'
  9. import request from '@/util/http'
  10. // 查询用户接口
  11. const adminData = ref({
  12. name: ''
  13. })
  14. const getAdminData = async function () {
  15. try {
  16. const result = await request({
  17. url: '/admin/userinfo',
  18. data: {}
  19. })
  20. adminData.value = result
  21. rateAdd.value.adminId = adminData.value.adminId
  22. rateEdit.value.adminId = adminData.value.adminId
  23. console.log('请求成功', result)
  24. // console.log('用户信息', user.value)
  25. } catch (error) {
  26. console.log('请求失败', error)
  27. }
  28. }
  29. getAdminData()
  30. const regeAdd = ref(false)
  31. const regeEdit = ref(false)
  32. //汇率表格数据
  33. const tableData = ref([])
  34. //搜索对象
  35. const getObj = ref({
  36. pageNum: 1,
  37. pageSize: 10
  38. })
  39. const total = ref(0)
  40. //分页总条目
  41. // 时间选择器
  42. // const value1 = ref([]) // 时间数组
  43. // function handleDateChange(value) {
  44. // if (value && value.length === 2) {
  45. // value1.value.startTime = value[0] // 开始日期
  46. // value1.value.endTime = value[1] // 结束日期
  47. // }
  48. // console.log(value1)
  49. // }
  50. const time = ref({})
  51. const get = async function (val) {
  52. // 搜索参数时间赋值
  53. // if (value1.value && value1.value.length === 2) {
  54. // time.value.startTime = value1.value[0];
  55. // time.value.endTime = value1.value[1];
  56. // } else {
  57. // time.value.startTime = '';
  58. // time.value.endTime = '';
  59. // }
  60. try {
  61. // 搜索参数页码赋值
  62. if (typeof val === 'number') {
  63. getObj.value.pageNum = val;
  64. }
  65. console.log('搜索参数', {
  66. ...getObj.value,
  67. rate: { ...time.value }
  68. });
  69. // 发送POST请求
  70. const result = await request({
  71. url: '/rates/search',
  72. method: 'POST',
  73. data: {
  74. ...getObj.value,
  75. rate: { ...time.value }
  76. }
  77. });
  78. // 将响应结果存储到响应式数据中
  79. console.log('请求成功', result);
  80. // 存储表格数据
  81. tableData.value = result.data.list;
  82. console.log('tableData', tableData.value);
  83. // 存储分页总条目
  84. total.value = result.data.total;
  85. console.log('total', total.value);
  86. } catch (error) {
  87. console.log('请求失败', error);
  88. ElMessage.error('请求失败');
  89. }
  90. }
  91. // 今天
  92. const getToday = () => {
  93. const today = new Date()
  94. // 格式化开始时间
  95. const startDate = moment(today).startOf('day').format('YYYY-MM-DD HH:mm:ss')
  96. // 格式化结束时间
  97. const endDate = moment(today).endOf('day').format('YYYY-MM-DD HH:mm:ss')
  98. time.value.startTime = startDate
  99. time.value.endTime = endDate
  100. search()
  101. }
  102. // 昨天
  103. const getYesterday = () => {
  104. const yesterday = moment().subtract(1, 'days')
  105. // 格式化开始时间
  106. const startDate = yesterday.startOf('day').format('YYYY-MM-DD HH:mm:ss')
  107. // 格式化结束时间
  108. const endDate = yesterday.endOf('day').format('YYYY-MM-DD HH:mm:ss')
  109. time.value.startTime = startDate
  110. time.value.endTime = endDate
  111. search()
  112. }
  113. // 近7天
  114. const get7Days = () => {
  115. // 格式化开始时间
  116. const startDate = moment().subtract(6, 'days').startOf('day').format('YYYY-MM-DD HH:mm:ss')
  117. // 格式化结束时间
  118. const endDate = moment().endOf('day').format('YYYY-MM-DD HH:mm:ss')
  119. time.value.startTime = startDate
  120. time.value.endTime = endDate
  121. search()
  122. }
  123. // 搜索
  124. const search = function () {
  125. getObj.value.pageNum = 1
  126. get()
  127. }
  128. // 添加方法
  129. const rateAdd = ref({})
  130. const addRate = async function () {
  131. rateAdd.value.adminId = adminData.value.adminId
  132. if (rateAdd.value.startTime) {
  133. const date = new Date(rateAdd.value.startTime)
  134. date.setHours(0, 0, 0, 0)
  135. rateAdd.value.startTime = `${date.getFullYear()}-${String(
  136. date.getMonth() + 1
  137. ).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} 00:00:00`
  138. }
  139. if (rateAdd.value.endTime) {
  140. const date = new Date(rateAdd.value.endTime)
  141. date.setHours(23, 59, 59, 999)
  142. rateAdd.value.endTime = `${date.getFullYear()}-${String(
  143. date.getMonth() + 1
  144. ).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} 23:59:59`
  145. }
  146. try {
  147. console.log('搜索参数', getObj.value)
  148. // 发送POST请求
  149. const result = await request({
  150. url: '/rates/add',
  151. data: rateAdd.value
  152. })
  153. if (result.code == 0) {
  154. ElMessage.error(result.msg)
  155. }else{
  156. ElMessage({
  157. type: 'success',
  158. message: '新增汇率成功'
  159. })
  160. }
  161. // 将响应结果存储到响应式数据中
  162. console.log('请求成功', result)
  163. get()
  164. } catch (error) {
  165. console.log('请求失败', error)
  166. // 在这里可以处理错误逻辑,比如显示错误提示等
  167. }
  168. }
  169. const add = () => {
  170. Ref.value.validate(async (valid) => {
  171. if (valid) {
  172. ElMessageBox.confirm('确认添加?')
  173. .then(() => {
  174. addRate()
  175. rateAdd.value = {}
  176. value1.value = {
  177. startTime: '',
  178. endTime: ''
  179. }
  180. regeAdd.value = false
  181. })
  182. .catch(() => {
  183. regeAdd.value = false
  184. })
  185. } else {
  186. //提示
  187. ElMessage({
  188. type: 'error',
  189. message: '请检查输入内容'
  190. })
  191. }
  192. })
  193. }
  194. const handlePageSizeChange = function (val) {
  195. getObj.value.pageSize = val
  196. get()
  197. }
  198. const handleCurrentChange = function (val) {
  199. getObj.value.pageNum = val
  200. get()
  201. }
  202. // 使用 _.throttle 并设置 trailing 为 false 实现严格节流,只执行一次
  203. const throttledAdd = _.throttle(add, 5000, { trailing: false })
  204. // 编辑方法
  205. const rateEdit = ref({})
  206. //查询已有的数据
  207. const getEditData = async function (row) {
  208. try {
  209. console.log('搜索参数', getObj.value)
  210. // 发送POST请求
  211. const result = await request({
  212. url: '/rates/searchById?rateId=' + row.rateId,
  213. data: {}
  214. })
  215. // 将响应结果存储到响应式数据中
  216. console.log('请求成功', result)
  217. // 存储表格数据
  218. rateEdit.value = result.data
  219. rateEdit.value.adminId = adminData.value.adminId
  220. console.log('这是编辑的数值', rateEdit.value)
  221. } catch (error) {
  222. console.log('请求失败', error)
  223. // 在这里可以处理错误逻辑,比如显示错误提示等
  224. }
  225. }
  226. const editRate = async function () {
  227. if (rateEdit.value.startTime) {
  228. const date = new Date(rateEdit.value.startTime)
  229. date.setHours(0, 0, 0, 0)
  230. rateEdit.value.startTime = `${date.getFullYear()}-${String(
  231. date.getMonth() + 1
  232. ).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} 00:00:00`
  233. }
  234. if (rateEdit.value.endTime) {
  235. const date = new Date(rateEdit.value.endTime)
  236. date.setHours(23, 59, 59, 999)
  237. rateEdit.value.endTime = `${date.getFullYear()}-${String(
  238. date.getMonth() + 1
  239. ).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} 23:59:59`
  240. }
  241. try {
  242. console.log('搜索参数', rateEdit.value)
  243. // 发送POST请求
  244. const result = await request({
  245. url: '/rates/update',
  246. data: rateEdit.value
  247. })
  248. // 将响应结果存储到响应式数据中
  249. console.log('请求成功', result)
  250. get()
  251. } catch (error) {
  252. console.log('请求失败', error)
  253. // 在这里可以处理错误逻辑,比如显示错误提示等
  254. }
  255. }
  256. const edit = () => {
  257. ElMessageBox.confirm('确认修改?')
  258. .then(() => {
  259. editRate()
  260. regeEdit.value = false
  261. })
  262. .catch(() => {
  263. regeEdit.value = false
  264. })
  265. }
  266. // 删除方法
  267. const deleteRate = async function (row) {
  268. try {
  269. // 发送POST请求
  270. const result = await request({
  271. url: '/rates/delete/ ' + row.rateId,
  272. data: {}
  273. })
  274. // 将响应结果存储到响应式数据中
  275. console.log('请求成功', result)
  276. get()
  277. } catch (error) {
  278. console.log('请求失败', error)
  279. // 在这里可以处理错误逻辑,比如显示错误提示等
  280. }
  281. }
  282. // 挂载
  283. onMounted(async function () {
  284. get()
  285. })
  286. //分页
  287. function handlePageChange(currentPage, pageSize) {
  288. get()
  289. }
  290. //货币条目
  291. const options = [
  292. {
  293. value: 'USD',
  294. label: 'USD'
  295. },
  296. {
  297. value: 'HKD',
  298. label: 'HKD'
  299. },
  300. {
  301. value: 'THB',
  302. label: 'THB'
  303. },
  304. {
  305. value: 'VND',
  306. label: 'VND'
  307. },
  308. {
  309. value: 'CAD',
  310. label: 'CAD'
  311. },
  312. {
  313. value: 'MYR',
  314. label: 'MYR'
  315. },
  316. {
  317. value: 'KRW',
  318. label: 'KRW'
  319. },
  320. {
  321. value: 'JPY',
  322. label: 'JPY'
  323. },
  324. {
  325. value: 'CNY',
  326. label: 'CNY'
  327. }
  328. ]
  329. function formatDate(value) {
  330. if (!value) return ''
  331. const date = new Date(value)
  332. const year = date.getFullYear()
  333. const month = (date.getMonth() + 1).toString().padStart(2, '0')
  334. const day = date.getDate().toString().padStart(2, '0')
  335. const hours = date.getHours().toString().padStart(2, '0')
  336. const minutes = date.getMinutes().toString().padStart(2, '0')
  337. const seconds = date.getSeconds().toString().padStart(2, '0')
  338. return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
  339. }
  340. function formatDateTwe(value) {
  341. if (!value) return ''
  342. const date = new Date(value)
  343. const year = date.getFullYear()
  344. const month = (date.getMonth() + 1).toString().padStart(2, '0')
  345. const day = date.getDate().toString().padStart(2, '0')
  346. return `${year}-${month}-${day}`
  347. }
  348. // //表格高度
  349. // const tableHeight = computed(function () {
  350. // return (getObj.value.pageSize + 1) * 50 + "px";
  351. // });
  352. // 新增数据规则
  353. // 表单验证ref
  354. const Ref = ref(null)
  355. const handleStartTimeChange = () => {
  356. Ref.value.validateField('endTime')
  357. }
  358. const checkStartTime = function (rule, value, callback) {
  359. if (value <= new Date()) {
  360. callback(new Error('开始时间不能小于当前时间'))
  361. } else {
  362. callback()
  363. }
  364. }
  365. const checkEndTime = function (rule, value, callback) {
  366. if (value <= new Date()) {
  367. callback(new Error('结束时间不能小于当前时间'))
  368. } else if (value <= rateAdd.value.startTime) {
  369. callback(new Error('结束时间不能小于开始时间'))
  370. } else {
  371. callback()
  372. }
  373. }
  374. const checkFreeGoldRadio = function (rule, value, callback) {
  375. if (value == '0' || value == null || value == '') {
  376. callback(new Error('请输入汇率比'))
  377. } else if (value < 0 || isNaN(value)) {
  378. callback(new Error('请输入正确的格式'))
  379. } else {
  380. callback()
  381. }
  382. }
  383. const rules = reactive({
  384. currency: [{ required: true, message: '请选择货币名称', trigger: 'blur' }],
  385. exchangeRate: [{ validator: checkFreeGoldRadio, trigger: 'blur' }],
  386. startTime: [
  387. { required: true, message: '请选择开始时间', trigger: 'blur' },
  388. { validator: checkStartTime, trigger: 'blur' }
  389. ],
  390. endTime: [
  391. { required: true, message: '请选择结束时间', trigger: 'blur' },
  392. { validator: checkEndTime, trigger: 'blur' }
  393. ]
  394. })
  395. // 重置的按钮
  396. const handledelete = function () {
  397. value1.value = {}
  398. startTime.value = ''
  399. endTime.value = ''
  400. }
  401. // 验证跳转输入框的数字是否合法
  402. const checkNumber = function () {
  403. if (typeof parseInt(getObj.value.pageNum) === 'number') {
  404. console.log('总共有多少页' + Math.ceil(total.value / getObj.value.pageSize))
  405. if (
  406. getObj.value.pageNum > 0 &&
  407. getObj.value.pageNum <= Math.ceil(total.value / getObj.value.pageSize)
  408. ) {
  409. getObj.value.pageNum = parseInt(getObj.value.pageNum)
  410. console.log('输入的数字合法')
  411. get()
  412. } else {
  413. //提示
  414. ElMessage({
  415. type: 'error',
  416. message: '请检查输入内容'
  417. })
  418. }
  419. } else {
  420. //提示
  421. ElMessage({
  422. type: 'error',
  423. message: '请检查输入内容'
  424. })
  425. }
  426. }
  427. // 删除=========================================================
  428. // 删除按钮
  429. // 删除按钮的气泡弹出框确认按钮
  430. const delConfirm = async function (row) {
  431. try {
  432. // 发送POST请求
  433. const result = await request({
  434. url: '/rates/delete/ ' + row.rateId,
  435. data: {}
  436. })
  437. if (result.code == 200) {
  438. ElMessage({
  439. type: 'success',
  440. message: '删除成功'
  441. })
  442. // 将响应结果存储到响应式数据中
  443. console.log('请求成功', result)
  444. // 刷新表格数据
  445. get()
  446. } else {
  447. ElMessage({
  448. type: 'error',
  449. message: '删除失败'
  450. })
  451. }
  452. } catch (error) {
  453. console.log('请求失败', error)
  454. // 在这里可以处理错误逻辑,比如显示错误提示等
  455. }
  456. }
  457. //这是限制输入小数不超过七位的限制方法
  458. function handleInput(value) {
  459. // 限制小数点后7位,这里使用正则表达式来实现
  460. rateAdd.value.exchangeRate = value
  461. .replace(/(\.\d{7})\d+/, '$1')
  462. .replace(/^(\d+)(\.\d{0,7})?$/, '$1$2')
  463. }
  464. </script>
  465. <template>
  466. <!-- 这是主页面 -->
  467. <el-row>
  468. <el-col>
  469. <el-card>
  470. <!-- 这是时间 -->
  471. <div class="demo-range">
  472. <el-row>
  473. <el-col :span="6">
  474. <el-form-item prop="startTime">
  475. <el-text class="mx-1" size="large">开始时间</el-text>
  476. <el-date-picker
  477. v-model="time.startTime"
  478. type="date"
  479. placeholder="开始日期"
  480. style="width: 210px"
  481. format="YYYY-MM-DD HH:mm:ss"
  482. value-format="YYYY-MM-DD HH:mm:ss"
  483. />
  484. </el-form-item>
  485. </el-col>
  486. <el-col :span="6">
  487. <el-form-item prop="endTime">
  488. <el-text class="mx-1" size="large">结束时间</el-text>
  489. <el-date-picker
  490. v-model="time.endTime"
  491. type="date"
  492. placeholder="结束日期"
  493. style="width: 210px"
  494. format="YYYY-MM-DD HH:mm:ss"
  495. value-format="YYYY-MM-DD HH:mm:ss"
  496. />
  497. </el-form-item>
  498. </el-col>
  499. <el-col :span="4">
  500. <el-button @click="getToday"></el-button>
  501. <el-button @click="getYesterday"></el-button>
  502. <el-button @click="get7Days">近7天</el-button>
  503. </el-col>
  504. <el-col :span="4">
  505. <el-button
  506. type="primary"
  507. @click="search"
  508. >查询</el-button>
  509. <el-button
  510. class="button-item"
  511. type="success"
  512. @click="handledelete"
  513. >重置</el-button>
  514. </el-col>
  515. </el-row>
  516. </div>
  517. </el-card>
  518. </el-col>
  519. </el-row>
  520. <el-row>
  521. <el-col>
  522. <el-card class="box-card" style="max-width: 100%">
  523. <!-- 添加 -->
  524. <div class="add-item">
  525. <el-button
  526. style="color: #048efb; border: 1px solid #048efb"
  527. @click="regeAdd = true"
  528. >新增汇率</el-button
  529. >
  530. </div>
  531. <!-- 表格 -->
  532. <div>
  533. <el-table
  534. :data="tableData"
  535. v-if="(tableData.flag = 1)"
  536. :height="tableHeight"
  537. style="width: 100%"
  538. >
  539. <el-table-column
  540. type="index"
  541. label="序号"
  542. width="100px"
  543. fixed="left"
  544. >
  545. <template #default="scope">
  546. <span>{{
  547. scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
  548. }}</span>
  549. </template>
  550. </el-table-column>
  551. <el-table-column prop="currency" label="货币名称" :span="2" />
  552. <el-table-column prop="exchangeRate" label="汇率" :span="2">
  553. <template #default="scope">
  554. <p>
  555. {{ scope.row.exchangeRate }}{{ scope.row.currency }} 1新币
  556. </p>
  557. </template>
  558. </el-table-column>
  559. <el-table-column prop="createTime" label="添加时间" :span="3">
  560. <template #default="scope">
  561. <span>{{ formatDate(scope.row.createTime) }}</span>
  562. </template>
  563. </el-table-column>
  564. <el-table-column prop="adminName" label="提交人" :span="1" />
  565. <el-table-column prop="status" label="状态">
  566. <template #default="scope">
  567. <span v-if="scope.row.status === 1">
  568. <div class="status">
  569. <span class="green-dot"></span>
  570. <span>使用中</span>
  571. </div>
  572. </span>
  573. <span v-if="scope.row.status === 0">
  574. <div class="status">
  575. <span class="red-dot"></span>
  576. <span>未开始</span>
  577. </div>
  578. </span>
  579. <span v-if="scope.row.status === 2">
  580. <div class="status">
  581. <span class="grey-dot"></span>
  582. <span>已过期</span>
  583. </div>
  584. </span>
  585. </template>
  586. </el-table-column>
  587. <el-table-column prop="startTime" label="持续时间" :span="10">
  588. <template #default="scope">
  589. <span>{{ formatDateTwe(scope.row.startTime) }}</span>
  590. <span>---</span>
  591. <span>{{ formatDateTwe(scope.row.endTime) }}</span>
  592. </template>
  593. </el-table-column>
  594. <el-table-column label="操作" :span="3">
  595. <template #default="scope">
  596. <el-button
  597. type="text"
  598. @click="
  599. () => {
  600. regeEdit = true
  601. getEditData(scope.row)
  602. }
  603. "
  604. >编辑</el-button
  605. >
  606. <el-popconfirm
  607. title="确定将此条活动删除吗?"
  608. @confirm="delConfirm"
  609. >
  610. <template #reference>
  611. <el-button type="primary" text> 删除 </el-button>
  612. </template>
  613. <template #actions="{ confirm, cancel }">
  614. <el-button size="small" @click="cancel">取消</el-button>
  615. <el-button
  616. type="primary"
  617. size="small"
  618. @click="confirm(scope.row)"
  619. >
  620. 确定
  621. </el-button>
  622. </template>
  623. </el-popconfirm>
  624. </template>
  625. </el-table-column>
  626. </el-table>
  627. </div>
  628. <!-- 分页 -->
  629. <div class="pagination">
  630. <el-pagination
  631. background
  632. :page-size="getObj.pageSize"
  633. :page-sizes="[5, 10, 20, 50, 100]"
  634. layout="total, sizes, prev, pager, next, jumper"
  635. :total="total"
  636. @size-change="handlePageSizeChange"
  637. @current-change="handleCurrentChange"
  638. ></el-pagination>
  639. </div>
  640. </el-card>
  641. </el-col>
  642. </el-row>
  643. <!-- 这是添加弹窗 -->
  644. <el-dialog
  645. v-model="regeAdd"
  646. title="新增汇率"
  647. width="500"
  648. :close-on-click-modal="false"
  649. >
  650. <template #footer>
  651. <el-form
  652. ref="Ref"
  653. style="max-width: 600px"
  654. :model="rateAdd"
  655. :rules="rules"
  656. label-width="auto"
  657. class="demo-ruleForm"
  658. :size="formSize"
  659. status-icon
  660. >
  661. <el-form-item prop="currency" label="货币名称:">
  662. <el-select
  663. v-model.number="rateAdd.currency"
  664. placeholder="请选择"
  665. style="width: 240px"
  666. >
  667. <el-option
  668. v-for="item in options"
  669. :key="item.value"
  670. :label="item.label"
  671. :value="item.value"
  672. />
  673. </el-select>
  674. </el-form-item>
  675. <el-form-item prop="exchangeRate" label="汇率:">
  676. <el-input
  677. v-model="rateAdd.exchangeRate"
  678. @update:modelValue="handleInput"
  679. style="width: 120px"
  680. />
  681. <p class="unit">:1</p>
  682. <p>
  683. (提示当前规则每 {{ rateAdd.exchangeRate }}
  684. {{ rateAdd.currency }}可兑换 1 新币)
  685. </p>
  686. </el-form-item>
  687. <el-form-item prop="adminId" label="提交人:">
  688. <el-input :value="adminData.name" disabled style="width: 240px" />
  689. </el-form-item>
  690. <el-form-item prop="startTime" label="开始时间:">
  691. <el-date-picker
  692. v-model="rateAdd.startTime"
  693. type="date"
  694. placeholder="请选择时间"
  695. :default-value="new Date()"
  696. @change="handleStartTimeChange"
  697. value-format="YYYY-MM-DD"
  698. />
  699. </el-form-item>
  700. <el-form-item prop="endTime" label="结束时间:">
  701. <el-date-picker
  702. v-model="rateAdd.endTime"
  703. type="date"
  704. placeholder="请选择时间"
  705. :default-value="new Date()"
  706. value-format="YYYY-MM-DD"
  707. />
  708. </el-form-item>
  709. <el-form-item>
  710. <div class="dialog-footer">
  711. <el-button type="primary" @click="throttledAdd">添加</el-button>
  712. <el-button @click="regeAdd = false">取消</el-button>
  713. </div>
  714. </el-form-item>
  715. </el-form>
  716. </template>
  717. </el-dialog>
  718. <!-- 这是编辑弹窗 -->
  719. <el-dialog
  720. v-model="regeEdit"
  721. title="修改汇率"
  722. width="500"
  723. :close-on-click-modal="false"
  724. >
  725. <template #footer>
  726. <el-form
  727. ref="ruleFormRef"
  728. style="max-width: 600px"
  729. :model="rateEdit"
  730. :rules="rules"
  731. label-width="auto"
  732. class="demo-ruleForm"
  733. :size="formSize"
  734. status-icon
  735. >
  736. <el-form-item label="货币名称:">
  737. <el-select
  738. v-model="rateEdit.currency"
  739. placeholder="请选择"
  740. style="width: 240px"
  741. >
  742. <el-option
  743. v-for="item in options"
  744. :key="item.value"
  745. :label="item.label"
  746. :value="item.value"
  747. />
  748. </el-select>
  749. </el-form-item>
  750. <el-form-item label="汇率:">
  751. <el-input v-model="rateEdit.exchangeRate" style="width: 120px" />
  752. <p class="unit">:1</p>
  753. <p>
  754. (提示当前规则每 {{ rateEdit.exchangeRate }}
  755. {{ rateEdit.currency }}可兑换 1 新币)
  756. </p>
  757. </el-form-item>
  758. <el-form-item label="提交人:">
  759. <el-input disabled :value="adminData.name" style="width: 240px" />
  760. </el-form-item>
  761. <el-form-item label="开始时间:">
  762. <el-date-picker
  763. v-model="rateEdit.startTime"
  764. type="date"
  765. placeholder="请选择时间"
  766. :default-value="new Date()"
  767. value-format="YYYY-MM-DD"
  768. />
  769. </el-form-item>
  770. <el-form-item label="结束时间:">
  771. <el-date-picker
  772. v-model="rateEdit.endTime"
  773. type="date"
  774. placeholder="请选择时间"
  775. :default-value="new Date()"
  776. value-format="YYYY-MM-DD"
  777. />
  778. </el-form-item>
  779. <el-form-item>
  780. <div class="dialog-footer">
  781. <el-button type="primary" @click="edit">修改</el-button>
  782. <el-button @click="regeEdit = false">取消</el-button>
  783. </div>
  784. </el-form-item>
  785. </el-form>
  786. </template>
  787. </el-dialog>
  788. </template>
  789. <style scoped>
  790. p {
  791. margin: 0px;
  792. }
  793. .el-form-item {
  794. margin-left: 70px;
  795. }
  796. .ad {
  797. margin-left: 10px;
  798. }
  799. .pagination {
  800. margin-top: 20px;
  801. }
  802. .box-card {
  803. margin-top: 20px;
  804. }
  805. .button-item {
  806. margin-left: 10px;
  807. }
  808. .add-item {
  809. margin-bottom: 10px;
  810. }
  811. el-table-column {
  812. text-align: center;
  813. }
  814. p {
  815. color: rgb(150, 150, 150);
  816. }
  817. .unit {
  818. margin-left: 10px;
  819. }
  820. .el-card {
  821. padding: 0px;
  822. }
  823. .pagination {
  824. display: flex;
  825. }
  826. .status {
  827. display: flex;
  828. }
  829. </style>