diff --git a/src/views/consume/addCoinConsume.vue b/src/views/consume/addCoinConsume.vue index d004932..063615e 100644 --- a/src/views/consume/addCoinConsume.vue +++ b/src/views/consume/addCoinConsume.vue @@ -1,9 +1,12 @@ @@ -431,7 +418,7 @@ const handleCurrentChange = function (val) { clearable > import {onMounted, reactive, ref} from 'vue' import {ElMessage, ElMessageBox} from 'element-plus' -import moment from 'moment' - -import _ from 'lodash' import request from '@/util/http' -// 查询用户接口 +// 查询当前登录的信息 const adminData = ref({ + adminId: '', name: '' }) + const getAdminData = async function () { try { const result = await request({ @@ -17,21 +16,22 @@ const getAdminData = async function () { data: {} }) adminData.value = result - rateAdd.value.adminId = adminData.value.adminId rateEdit.value.adminId = adminData.value.adminId console.log('请求成功', result) } catch (error) { console.log('请求失败', error) } } -getAdminData() -const regeAdd = ref(false) +// 默认 编辑板块是关的 const regeEdit = ref(false) -// 表单引用 + +// 表单引用(根据id获取信息后 将内容存到编辑表单) const editFormRef = ref(null) + //汇率表格数据 const tableData = ref([]) + //搜索对象 const getObj = ref({ pageNum: 1, @@ -39,196 +39,95 @@ const getObj = ref({ }) const total = ref(0) -//分页总条目 -// 替换原来的time,用数组 -const timeRange = ref([]) - -// 格式化日期为YYYY-MM-DD HH:mm:ss,否则格式不对无法填充日期时间选择器 -const formatDateTime = (date) => { - return moment(date).format('YYYY-MM-DD HH:mm:ss') -} - -// const startTime = ref('2023-01-01 00:00:00') -// const endTime = ref('2025-12-31 23:59:59') - -const get = async function (val) { +const getAllRate = async function (val) { try { // 搜索参数页码赋值 if (typeof val === 'number') { getObj.value.pageNum = val; } - // 时间赋值 - const time = {} - if (timeRange.value.length === 2) { - time.startTime = moment(timeRange.value[0]).format('YYYY-MM-DD HH:mm:ss') - time.endTime = moment(timeRange.value[1]).format('YYYY-MM-DD HH:mm:ss') - } else { // 这是对时间的模拟,根据需求不需要传时间 - time.startTime = '2023-01-01 00:00:00' - time.endTime = '2025-12-31 23:59:59' - } - - console.log('搜索参数', { - ...getObj.value, - rate: {...time} - }); // 发送POST请求 const result = await request({ - url: '/rates/search', + url: 'http://192.168.9.21:8081/rate/selectAll', method: 'POST', data: { - ...getObj.value, - rate: {...time} + pageNum: getObj.value.pageNum, + pageSize: getObj.value.pageSize, } }); // 将响应结果存储到响应式数据中 - console.log('请求成功', result); + console.log('这是汇率列表 请求成功', result); + // 存储表格数据 tableData.value = result.data.list; // 存储分页总条目 total.value = result.data.total; + } catch (error) { console.log('请求失败', error); ElMessage.error('请求失败'); } } -// 搜索 -const search = function () { - getObj.value.pageNum = 1 - get() -} -// 添加方法 -const rateAdd = ref({}) -const addRate = async function () { - rateAdd.value.adminId = adminData.value.adminId - if (rateAdd.value.startTime) { - const date = new Date(rateAdd.value.startTime) - date.setHours(0, 0, 0, 0) - rateAdd.value.startTime = `${date.getFullYear()}-${String( - date.getMonth() + 1 - ).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} 00:00:00` - } - if (rateAdd.value.endTime) { - const date = new Date(rateAdd.value.endTime) - date.setHours(23, 59, 59, 999) - rateAdd.value.endTime = `${date.getFullYear()}-${String( - date.getMonth() + 1 - ).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} 23:59:59` - } - try { - console.log('搜索参数', getObj.value) - // 发送POST请求 - const result = await request({ - url: '/rates/add', - data: rateAdd.value - }) - if (result.code == 0) { - ElMessage.error(result.msg) - } else { - ElMessage({ - type: 'success', - message: '新增汇率成功' - }) - } - // 将响应结果存储到响应式数据中 - console.log('请求成功', result) - get() - } catch (error) { - console.log('请求失败', error) - } -} - -const add = () => { - Ref.value.validate(async (valid) => { - if (valid) { - ElMessageBox.confirm('确认添加?') - .then(() => { - addRate() - rateAdd.value = {} - timeRange.value = { - startTime: '', - endTime: '' - } - regeAdd.value = false - }) - .catch(() => { - regeAdd.value = false - }) - } else { - //提示 - ElMessage({ - type: 'error', - message: '请检查输入内容' - }) - } - }) -} const handlePageSizeChange = function (val) { getObj.value.pageSize = val - get() + getAllRate() } + const handleCurrentChange = function (val) { getObj.value.pageNum = val - get() + getAllRate() } -// 使用 _.throttle 并设置 trailing 为 false 实现严格节流,只执行一次 -const throttledAdd = _.throttle(add, 5000, {trailing: false}) -// 编辑方法 -const rateEdit = ref({}) + +// 编辑方法 表单 +const rateEdit = ref({ + id: null, + rateName: '', + num: null, + adminId: null, + updateTime: Date.now(), +}) + //查询已有的数据 const getEditData = async function (row) { - // 重置表单 - if (editFormRef.value) { - editFormRef.value.resetFields() - } - try { console.log('搜索参数', getObj.value) // 发送POST请求 const result = await request({ - url: '/rates/searchById?rateId=' + row.rateId, - data: {} + url: 'http://192.168.9.21:8081/rate/selectById', + data: {id: row.id} }) // 将响应结果存储到响应式数据中 - console.log('请求成功', result) + console.log('根据id查 请求成功', result) // 存储表格数据 - - rateEdit.value = result.data + // rateEdit.value = result.data + // 只赋部分的 + rateEdit.value.id = row.id + rateEdit.value.rateName = row.rateName + rateEdit.value.num = row.num + console.log('根据id获取的数据', rateEdit.value) rateEdit.value.adminId = adminData.value.adminId + } catch (error) { console.log('请求失败', error) } } + const editRate = async function () { - if (rateEdit.value.startTime) { - const date = new Date(rateEdit.value.startTime) - date.setHours(0, 0, 0, 0) - rateEdit.value.startTime = `${date.getFullYear()}-${String( - date.getMonth() + 1 - ).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} 00:00:00` - } - if (rateEdit.value.endTime) { - const date = new Date(rateEdit.value.endTime) - date.setHours(23, 59, 59, 999) - rateEdit.value.endTime = `${date.getFullYear()}-${String( - date.getMonth() + 1 - ).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} 23:59:59` - } try { console.log('搜索参数', rateEdit.value) // 发送POST请求 const result = await request({ - url: '/rates/update', + url: 'http://192.168.9.21:8081/rate/update', data: rateEdit.value }) // 将响应结果存储到响应式数据中 console.log('请求成功', result) - get() + await getAllRate() } catch (error) { console.log('请求失败', error) } @@ -247,26 +146,23 @@ const edit = () => { // 关闭编辑弹窗时重置表单 const cancelEdit = () => { regeEdit.value = false - if (editFormRef.value) { - editFormRef.value.resetFields() - } + } + const handleEditDialogClose = () => { if (editFormRef.value) { - editFormRef.value.resetFields() + getAllRate() } } + // 挂载 onMounted(async function () { - get() + await getAllRate() + await getAdminData() }) -//分页 -function handlePageChange(currentPage, pageSize) { - get() -} //货币条目 const options = [ @@ -320,37 +216,7 @@ function formatDate(value) { return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}` } -function formatDateTwe(value) { - if (!value) return '' - const date = new Date(value) - const year = date.getFullYear() - const month = (date.getMonth() + 1).toString().padStart(2, '0') - const day = date.getDate().toString().padStart(2, '0') - return `${year}-${month}-${day}` -} -// 新增数据规则 -// 表单验证ref -const Ref = ref(null) -const handleStartTimeChange = () => { - Ref.value.validateField('endTime') -} -const checkStartTime = function (rule, value, callback) { - if (value <= new Date()) { - callback(new Error('开始时间不能小于当前时间')) - } else { - callback() - } -} -const checkEndTime = function (rule, value, callback) { - if (value <= new Date()) { - callback(new Error('结束时间不能小于当前时间')) - } else if (value <= rateAdd.value.startTime) { - callback(new Error('结束时间不能小于开始时间')) - } else { - callback() - } -} const checkFreeGoldRadio = function (rule, value, callback) { if (value == '0' || value == null || value == '') { callback(new Error('请输入汇率比')) @@ -361,57 +227,37 @@ const checkFreeGoldRadio = function (rule, value, callback) { } } const rules = reactive({ - currency: [{required: true, message: '请选择货币名称', trigger: 'blur'}], - exchangeRate: [{validator: checkFreeGoldRadio, trigger: 'blur'}], - // startTime: [ - // {required: true, message: '请选择开始时间', trigger: 'blur'}, - // {validator: checkStartTime, trigger: 'blur'} - // ], - // endTime: [ - // {required: true, message: '请选择结束时间', trigger: 'blur'}, - // {validator: checkEndTime, trigger: 'blur'} - // ] + rateName: [{required: true, message: '请选择货币名称', trigger: 'blur'}], + num: [{validator: checkFreeGoldRadio, trigger: 'blur'}], }) -// 这是限制输入小数不超过七位并验证格式的方法 function handleInput(value) { - // 检测是否包含非法符号 - const invalidChars = /[^0-9.]/.test(value); - if (invalidChars) { - ElMessage.warning('只能输入数字和小数点'); - } - - // 过滤非法字符,只保留数字、小数点 + // 初始过滤非数字和小数点字符 let validValue = value.replace(/[^\d.]/g, ''); - // 确保只有一个小数点 - validValue = validValue.replace(/\.{2,}/g, '.'); - - // 限制只能有一个小数点 - if (validValue.split('.').length > 2) { - validValue = validValue.replace(/\.$/, ''); - ElMessage.warning('注意!只能使用一个小数点'); + // 处理多个小数点的情况,保留第一个,移除后续的 + const parts = validValue.split('.'); + if (parts.length > 2) { + validValue = parts[0] + '.' + parts.slice(1).join(''); + ElMessage.warning('请输入正确格式'); } - // 限制小数点后7位 - const originalDecimalPart = validValue.split('.')[1] || ''; - validValue = validValue.replace(/(\.\d{7})\d+/, '$1'); - - // 如果截断了小数部分,提示用户 - const newDecimalPart = validValue.split('.')[1] || ''; - if (originalDecimalPart.length > 7 && originalDecimalPart !== newDecimalPart) { + // 限制小数点后最多7位 + const [integerPart, decimalPart = ''] = validValue.split('.'); + if (decimalPart.length > 7) { + validValue = `${integerPart}.${decimalPart.slice(0, 7)}`; ElMessage.warning('最多只能输入7位小数'); } - // 根据需求这里先不用,这里是用防御性编程,直接不允许输入,先留一下,之后可能用 - // 应用最终处理后的值 - // rateAdd.value.exchangeRate = validValue; - // rateEdit.value.exchangeRate = validValue; - - // 验证最终格式 - if (validValue && !/^\d+(\.\d{0,7})?$/.test(validValue)) { + // 最终格式验证 + const isValidFormat = /^\d+(\.\d{0,7})?$/.test(validValue); + if (value && !isValidFormat) { ElMessage.warning('请输入正确的数字格式'); } + + // 更新表单值 + rateEdit.value.num = validValue; + return validValue; } // 表单大小 @@ -424,10 +270,8 @@ const formSize = ref('default') - - - - + + - {{ scope.row.exchangeRate }} :1 + {{ scope.row.num }} :1 - + - {{ formatDate(scope.row.createTime) }} + {{ formatDate(scope.row.updateTime) }} @@ -475,6 +319,7 @@ const formSize = ref('default') + - + @@ -524,17 +369,17 @@ const formSize = ref('default') /> - + :1 (提示:当前规则每 - {{ rateEdit.exchangeRate }} - {{ rateEdit.currency }} + {{ rateEdit.num }} + {{ rateEdit.rateName }} 可兑换 1 新币) diff --git a/src/views/refund/coinRefundDetail.vue b/src/views/refund/coinRefundDetail.vue index c9eea7c..0eecb19 100644 --- a/src/views/refund/coinRefundDetail.vue +++ b/src/views/refund/coinRefundDetail.vue @@ -1,18 +1,36 @@
- {{ scope.row.exchangeRate }} :1 + {{ scope.row.num }} :1
:1
(提示:当前规则每 - {{ rateEdit.exchangeRate }} - {{ rateEdit.currency }} + {{ rateEdit.num }} + {{ rateEdit.rateName }} 可兑换 1 新币)