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

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