Browse Source

0623先提交一下

lihuilin 2 weeks ago
parent
commit
05eb41a233
  1. 18
      package-lock.json
  2. 2
      package.json
  3. 2
      src/router/index.js
  4. 316
      src/views/audit/rechargeAudit.vue
  5. 1149
      src/views/audit/refundAudit.vue
  6. 186
      src/views/consume/coinConsume.vue
  7. 7
      src/views/index.vue
  8. 77
      src/views/login.vue
  9. 232
      src/views/managerecharge/rate.vue
  10. 2
      src/views/refund/beanRefund.vue
  11. 2
      src/views/refund/coinRefund.vue
  12. 1468
      src/views/workspace/index.vue

18
package-lock.json

@ -10,7 +10,7 @@
"dependencies": {
"@element-plus/icons-vue": "^2.3.1",
"axios": "^1.7.8",
"echarts": "^5.5.1",
"echarts": "^5.6.0",
"element-plus": "^2.8.8",
"lodash": "^4.17.21",
"mathjs": "^14.0.1",
@ -3499,13 +3499,13 @@
"license": "MIT"
},
"node_modules/echarts": {
"version": "5.5.1",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/echarts/-/echarts-5.5.1.tgz",
"integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==",
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/echarts/-/echarts-5.6.0.tgz",
"integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "2.3.0",
"zrender": "5.6.0"
"zrender": "5.6.1"
}
},
"node_modules/electron-to-chromium": {
@ -4662,7 +4662,7 @@
},
"node_modules/tslib": {
"version": "2.3.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/tslib/-/tslib-2.3.0.tgz",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==",
"license": "0BSD"
},
@ -5053,9 +5053,9 @@
}
},
"node_modules/zrender": {
"version": "5.6.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/zrender/-/zrender-5.6.0.tgz",
"integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==",
"version": "5.6.1",
"resolved": "https://registry.npmjs.org/zrender/-/zrender-5.6.1.tgz",
"integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==",
"license": "BSD-3-Clause",
"dependencies": {
"tslib": "2.3.0"

2
package.json

@ -14,7 +14,7 @@
"dependencies": {
"@element-plus/icons-vue": "^2.3.1",
"axios": "^1.7.8",
"echarts": "^5.5.1",
"echarts": "^5.6.0",
"element-plus": "^2.8.8",
"lodash": "^4.17.21",
"mathjs": "^14.0.1",

2
src/router/index.js

@ -31,7 +31,7 @@ const router = createRouter({
{ path: '/coinRefund', name: "coinRefund", component: () => import("../views/refund/coinRefund.vue") },
// 金豆退款
{ path: '/beanRefund', name: "beanRefund", component: () => import("../views/refund/beanRefund.vue") },
// 客户金币明细
// 客户账户明细
{ path: '/usergold', name: "usergold", component: () => import("../views/usergold/index.vue") },
// 权限管理
{ path: '/permissions', name: "permissions", component: () => import("../views/permissions/index.vue") },

316
src/views/audit/rechargeAudit.vue

@ -7,32 +7,6 @@ import axios from 'axios'
import request from '@/util/http'
import moment from 'moment'
//
//
const columnOptions = ref([
{ prop: 'username', label: '姓名', width: 125 },
{ prop: 'jwcode', label: '精网号', width: 125 },
{ prop: 'area', label: '所属地区', width: 125 },
{ prop: 'activityName', label: '活动名称', width: 150 },
{ prop: 'rechargeGold', label: '充值金额', width: 125, sortable: true },
{ prop: 'rechargeWay', label: '充值方式', width: 125 },
{ prop: 'paidGold', label: '永久金币', width: 125, sortable: true },
{ prop: 'freeGold', label: '免费金币', width: 125, sortable: true },
{ prop: 'remark', label: '备注', width: 200, showOverflowTooltip: true },
{ prop: 'payWay', label: '支付方式', width: 125 },
{ prop: 'rechargeVoucher', label: '支付凭证', width: 125 },
{ prop: 'name', label: '提交人', width: 125 },
{ prop: 'status', label: '审核状态', width: 125 },
{ prop: 'reson', label: '驳回理由', width: 200 },
{ prop: 'rechargeTime', label: '交款时间', width: 200, sortable: true },
{ prop: 'createTime', label: '提交时间', width: 200, sortable: true },
{ prop: 'auditTime', label:'审核时间', width:200, sortable:true}
])
//
const defaultColumns = ['username', 'jwcode', 'area', 'activityName', 'rechargeGold', 'rechargeWay', 'paidGold', 'freeGold',
'remark', 'payWay', 'rechargeVoucher', 'name', 'status', 'reson', 'rechargeTime', 'createTime', 'auditTime']
const selectedColumns = ref([...defaultColumns])
//
const adminData = ref({})
const getAdminData = async function () {
@ -42,7 +16,6 @@ const getAdminData = async function () {
data: {}
})
adminData.value = result
console.log('请求成功', result)
console.log('用户信息', adminData.value)
} catch (error) {
console.log('请求失败', error)
@ -52,7 +25,6 @@ const getAdminData = async function () {
//
const tableData = ref([])
// ======================================
// rechargeVo
const rechargeVo = ref({
rechargeWay: '客服充值'
})
@ -67,22 +39,16 @@ const total = ref(100)
const getTime = ref([])
//
const activity = ref([])
//
const allData = ref([])
//
const area = ref([])
// ======================================
//
const rejectVisible = ref(false)
//
const rejectObj = ref({})
//
const passObj = ref({})
//
const activeName = ref('all')
//
const activeName = ref('wait')
//
const payWay = [
{
@ -106,23 +72,16 @@ const payWay = [
label: '借记卡'
}
]
// //
// const tableHeight = computed(function () {
// return (getObj.value.pageSize + 2) * 60 + "px";
// });
// ref
const Ref = ref(null)
//
//
//
const trueGold = ref(0)
const trueCount = ref(0)
const trueRGold = ref(0)
const trueFGold = ref(0)
//
//
const formattedTrueGold = computed(() => trueGold.value.toFixed(2))
const formattedTrueRGold = computed(() => trueRGold.value.toFixed(2))
const formattedTrueFGold = computed(() => trueFGold.value.toFixed(2))
@ -144,15 +103,12 @@ const rejectedCount = ref(0)
const rejectedGold = ref(0)
const rejectedRGold = ref(0)
const rejectedFGold = ref(0)
// ==============================================================
//
const get = async function (val) {
try {
//
if (adminData.value.area === '泰国') {
rechargeVo.value.areas = ['泰国', '越南']
} else if (adminData.value.area !== '总部') {
rechargeVo.value.area = adminData.value.area
}
//
if (typeof val === 'number') {
@ -171,7 +127,6 @@ const get = async function (val) {
rechargeVo.value.sortField = sortField.value
rechargeVo.value.sortOrder = sortOrder.value
console.log('搜索参数', getObj.value)
// POST
const result = await request({
url: '/recharge/recharge',
data: {
@ -181,16 +136,15 @@ const get = async function (val) {
}
})
//
// rechargeVo.value
const detailWithoutSort = { ...rechargeVo.value }
delete detailWithoutSort.sortField
delete detailWithoutSort.sortOrder
delete detailWithoutSort.status
// rechargeVo.value
const rechargeVo1 = { ...rechargeVo.value }
delete rechargeVo1.sortField
delete rechargeVo1.sortOrder
delete rechargeVo1.status
const result2 = await request({
url: '/recharge/recharge/RechargeA',
data: detailWithoutSort
data: rechargeVo1
})
// result2.data[i].flag="" totalData.value = result2.data[i]0
//
if (result2.data) {
result2.data.forEach((item) => {
@ -220,16 +174,11 @@ const get = async function (val) {
}
trueGold.value = pendingGold.value + approvedGold.value + rejectedGold.value
trueCount.value =
pendingCount.value + approvedCount.value + rejectedCount.value
trueRGold.value =
pendingRGold.value + approvedRGold.value + rejectedRGold.value
trueFGold.value =
pendingFGold.value + approvedFGold.value + rejectedFGold.value
trueCount.value = pendingCount.value + approvedCount.value + rejectedCount.value
trueRGold.value = pendingRGold.value + approvedRGold.value + rejectedRGold.value
trueFGold.value = pendingFGold.value + approvedFGold.value + rejectedFGold.value
//
console.log('请求成功', result)
console.log('这是分页', getObj.value)
console.log('搜索对象', getObj.value)
//
tableData.value = result.data.list
console.log('tableData', tableData.value)
@ -238,7 +187,6 @@ const get = async function (val) {
console.log('total', total.value)
} catch (error) {
console.log('请求失败', error)
//
}
}
//
@ -309,13 +257,6 @@ const get7Days = function () {
console.log('getTime', getTime.value)
get()
}
//
const adminAll = function () {
console.log('adminAll')
rechargeVo.value.status = ''
getObj.value.pageNum = 1
get()
}
//
const adminWait = async function () {
rechargeVo.value.status = 0
@ -349,11 +290,9 @@ const adminReject = async function () {
trueRGold.value = rejectedRGold.value
trueFGold.value = rejectedFGold.value
}
//
const handleClick = function (tab, event) {
if (tab.props.name === 'all') {
adminAll()
} else if (tab.props.name === 'wait') {
if (tab.props.name === 'wait') {
adminWait()
} else if (tab.props.name === 'pass') {
adminPass()
@ -361,67 +300,30 @@ const handleClick = function (tab, event) {
adminReject()
}
}
//
const getActivity = async function () {
try {
// POST
const result = await request({
url: '/recharge/activity/select',
data: {}
})
//
console.log('请求成功', result)
//
activity.value = result.data
console.log('activity', activity.value)
} catch (error) {
console.log('请求失败', error)
//
}
}
//
//
const getArea = async function () {
try {
// POST
const result = await request({
url: '/recharge/user/search',
data: {}
})
//
console.log('请求成功', result)
//
area.value = result.data
console.log('地区', area.value)
} catch (error) {
console.log('请求失败', error)
//
}
}
//
const checkNumber = function () {
if (typeof parseInt(getObj.value.pageNum) === 'number') {
console.log('总共有多少页' + Math.ceil(total.value / getObj.value.pageSize))
if (
getObj.value.pageNum > 0 &&
getObj.value.pageNum <= Math.ceil(total.value / getObj.value.pageSize)
) {
console.log('输入的数字合法')
getObj.value.pageNum = parseInt(getObj.value.pageNum)
get()
} else {
//
ElMessage({
type: 'error',
message: '请检查输入内容'
})
}
} else {
//
ElMessage({
type: 'error',
message: '请检查输入内容'
})
}
}
const handlePageSizeChange = function (val) {
@ -462,10 +364,7 @@ const passConfirm = async function () {
url: '/audit/audit/goldedit',
data: passObj.value
})
//
console.log('请求成功', result)
//
get()
//
ElMessage({
@ -512,24 +411,17 @@ const rejectConfirm = async function () {
url: '/audit/audit/goldedit',
data: rejectObj.value
})
//
console.log('请求成功', result)
//
get()
//
closeRejectVisible()
//
closeRejectVisible()//
ElMessage({
type: 'success',
message: '驳回成功!'
})
} catch (error) {
console.log('请求失败', error)
//
}
} else {
//
ElMessage({
type: 'error',
message: '请检查输入内容'
@ -539,7 +431,6 @@ const rejectConfirm = async function () {
}
//
const rules = reactive({
reson: [{ required: true, message: '请输入驳回理由', trigger: 'blur' }]
})
@ -568,7 +459,7 @@ const handleSortChange = (column) => {
sortField.value = 'create_time'
} else if (column.prop === 'paidGold') {
sortField.value = 'paid_gold'
}else if (column.prop === 'auditTime') {
} else if (column.prop === 'auditTime') {
sortField.value = 'audit_time'
}
sortOrder.value = column.order === 'ascending' ? 'ASC' : 'DESC'
@ -586,35 +477,27 @@ const trimJwCode = () => {
<template>
<el-row>
<el-col>
<el-card style="margin-bottom: 20px">
<el-row style="margin-bottom: 10px">
<el-card style="margin-bottom: 5px">
<el-row style="margin-bottom: 5px">
<el-col :span="6">
<div class="head-card-element">
<el-text class="mx-1" size="large">精网号</el-text>
<el-text size="large">精网号</el-text>
<el-input v-model="rechargeVo.jwcode" placeholder="请输入精网号" style="width: 240px" clearable />
</div>
</el-col>
<el-col :span="6">
<div class="head-card-element">
<el-text class="mx-1" size="large">活动名称</el-text>
<el-select v-model="rechargeVo.activityId" placeholder="请选择活动名称" style="width: 240px"
clearable>
<el-option v-for="item in activity" :key="item.activityId" :label="item.activityName"
:value="item.activityId" />
<el-text size="large">活动名称</el-text>
<el-select v-model="rechargeVo.activityId" placeholder="请选择活动名称" style="width: 240px" clearable>
<el-option v-for="item in activity" :key="item.activityId" :label="item.activityName" :value="item.activityId" />
</el-select>
</div>
</el-col>
<el-col :span="6">
<div class="head-card-element">
<el-text class="mx-1" size="large">支付方式</el-text>
<el-text size="large">支付方式</el-text>
<el-select v-model="rechargeVo.payWay" placeholder="请选择支付方式" style="width: 240px" clearable>
<el-option v-for="item in payWay" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</div>
</el-col>
<el-col :span="6">
<div class="head-card-element" v-if="adminData.area == '总部'">
<el-text class="mx-1" size="large">所属地区</el-text>
<el-text size="large">所属地区</el-text>
<el-select v-model="rechargeVo.area" placeholder="请选择所属地区" style="width: 240px" clearable>
<el-option v-for="item in area" :key="item" :label="item" :value="item" />
</el-select>
@ -622,38 +505,22 @@ const trimJwCode = () => {
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="time-controls">
<div class="time-group">
<el-text class="mx-1" size="large">充值时间</el-text>
<el-date-picker
v-model="getTime"
type="datetimerange"
range-separator="至"
start-placeholder="起始时间"
end-placeholder="结束时间"
style="width: 400px"
/>
<el-button @click="getToday()" style="margin-left: 10px"> </el-button>
<el-button @click="getYesterday()" style="margin-left: 10px"> </el-button>
<el-button @click="get7Days()" style="margin-left: 10px"> 近7天 </el-button>
<el-col :span="12">
<div class="time-controls">
<div class="time-group">
<el-text size="large">添加时间</el-text>
<el-date-picker v-model="getTime" type="datetimerange" range-separator="" start-placeholder="起始时间"
end-placeholder="结束时间" style="width: 400px" />
<el-button @click="getToday()" style="margin-left: 10px"> </el-button>
<el-button @click="getYesterday()" style="margin-left: 10px"> </el-button>
<el-button @click="get7Days()" style="margin-left: 10px"> 近7天 </el-button>
</div>
</div>
</div>
</el-col>
</el-col>
<el-col :span="8">
<el-button @click="reset()" type="success" style="margin-right: 10px">重置</el-button>
<el-col :span="8">
<el-button @click="reset()" type="success">重置</el-button>
<el-button type="primary" @click="search()">查询</el-button>
</el-col>
</el-row>
<el-row>
<el-col :span="21">
<div style="margin-top: 10px">
<el-text class="mx-1" size="large">请选择您想看到的数据</el-text>
<el-select v-model="selectedColumns" multiple placeholder="请选择您想看到的数据" size="large" style="width: 800px">
<el-option v-for="item in columnOptions" :key="item.prop" :label="item.label" :value="item.prop" />
</el-select>
</div>
</el-col>
</el-row>
</el-card>
@ -662,71 +529,49 @@ const trimJwCode = () => {
<el-row>
<el-col>
<el-card>
<el-tabs v-model="activeName" type="card" class="demo-tabs" @tab-click="handleClick">
<el-tab-pane label="全部" name="all"></el-tab-pane>
<el-tabs v-model="activeName" type="card" @tab-click="handleClick">
<el-tab-pane label="待审核" name="wait"></el-tab-pane>
<el-tab-pane label="已通过" name="pass"></el-tab-pane>
<el-tab-pane label="已驳回" name="reject"></el-tab-pane>
<div>
总条数{{ trueCount }}总金币数{{
formattedTrueGold
}}金币永久金币{{ formattedTrueRGold }}金币免费金币{{ formattedTrueFGold }}金币
总条数{{ trueCount }}&nbsp;&nbsp;&nbsp;&nbsp;
总金币数{{ formattedTrueGold }}金币&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ formattedTrueRGold }}金币&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ formattedTrueFGold }}金币
</div>
</el-tabs>
<div style="height: 540px; overflow-y: auto">
<el-table :data="tableData" style="width: 100%" height="540px" @sort-change="handleSortChange" :row-style="{ height: '50px' }">
<el-table-column type="index" label="序号" width="100px" fixed="left">
<template #default="scope">
<span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span>
<span>{{ scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize }}</span>
</template>
</el-table-column>
<!-- 动态列 -->
<template v-for="col in columnOptions" :key="col.prop">
<el-table-column v-if="selectedColumns.includes(col.prop)" :prop="col.prop" :label="col.label"
:width="col.width" :sortable="col.sortable ? 'custom' : false"
:show-overflow-tooltip="true" >
<template #default="scope">
<!-- 特殊列模板 -->
<template v-if="col.prop === 'rechargeTime'">
{{ moment(scope.row.rechargeTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
<template v-else-if="col.prop === 'createTime'">
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
<template v-else-if="col.prop === 'auditTime'">
{{ scope.row.auditTime ? moment(scope.row.auditTime).format('YYYY-MM-DD HH:mm:ss') : '----' }}
</template>
<template v-else-if="col.prop === 'remark'">
<span>{{ scope.row[col.prop] }}</span>
</template>
<template v-else-if="col.prop === 'rechargeVoucher'">
<el-image :src="scope.row.rechargeVoucher" style="width: 50px; height: 50px" />
</template>
<template v-else-if="col.prop === 'status'">
<div class="status">
<span :class="{
'green-dot': scope.row.status === 1,
'grey-dot': scope.row.status === 0,
'red-dot': scope.row.status === 2
}"></span>
<span>{{
scope.row.status === 1 ? '已通过' :
scope.row.status === 0 ? '待审核' : '已驳回'
}}</span>
</div>
</template>
<template v-else-if="['paidGold', 'freeGold'].includes(col.prop)">
{{ scope.row[col.prop] / 100 }}
</template>
<span v-else>
{{ scope.row[col.prop] }}
</span>
</template>
<el-table-column fixed="left" prop="username" label="姓名" width="150px" />
<el-table-column fixed="left" prop="jwcode" label="精网号" width="110px" />
<el-table-column prop="area" label="所属地区" width="100px" />
<el-table-column prop="refundType" label="活动名称" width="100px" />
<el-table-column prop="refundGoods" label="充值金额" width="100px" />
<el-table-column prop="rechargeCoin" label="永久金币" width="110px" sortable="custom">
<template #default="scope">{{ scope.row.rechargeCoin }}</template>
</el-table-column>
<el-table-column prop="freeCoin" label="免费金币" sortable="custom" width="110px">
<template #default="scope">{{ scope.row.freeCoin }}</template>
</el-table-column>
<el-table-column prop="remark" label="备注" width="200px" show-overflow-tooltip />
<el-table-column prop="freeCoin" label="支付凭证" width="110px" />
<el-table-column prop="adminName" label="提交人" width="100px" />
<el-table-column prop="status" label="付款时间" width="200px" >
<template #default="scope">
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
</el-table-column>
</template>
<el-table-column prop="createTime" sortable="custom" label="提交时间" width="200px">
<template #default="scope">
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
</el-table-column>
<el-table-column fixed="right" prop="operation" label="操作" width="150px">
<template #default="scope">
<div class="operation">
@ -741,9 +586,7 @@ const trimJwCode = () => {
</template>
<template #actions="{ confirm, cancel }">
<el-button size="small" @click="cancel">取消</el-button>
<el-button type="primary" size="small" @click="confirm">
确定
</el-button>
<el-button type="primary" size="small" @click="confirm">确定</el-button>
</template>
</el-popconfirm>
<el-button :disabled="scope.row.status === 1 || scope.row.status === 2
@ -758,7 +601,6 @@ const trimJwCode = () => {
</el-table>
</div>
<!-- 分页 -->
<div class="pagination">
<el-pagination background :page-size="getObj.pageSize" :page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handlePageSizeChange"
@ -768,7 +610,6 @@ const trimJwCode = () => {
</el-col>
</el-row>
<!-- 驳回弹出框 -->
<el-dialog v-model="rejectVisible" title="驳回理由" width="500" :before-close="closeRejectVisible">
<template #footer>
<el-form :model="rejectObj" ref="Ref" :rules="rules" label-width="auto" style="max-width: 600px">
@ -825,17 +666,23 @@ const trimJwCode = () => {
.status {
display: flex;
align-items: center; /* 确保子元素垂直居中对齐 */
gap: 6px; /* 设置圆点和文字之间的间距 */
align-items: center;
/* 确保子元素垂直居中对齐 */
gap: 6px;
/* 设置圆点和文字之间的间距 */
}
.green-dot, .grey-dot, .red-dot {
.green-dot,
.grey-dot,
.red-dot {
display: inline-block;
width: 8px;
height: 8px;
border-radius: 50%;
flex-shrink: 0; /* 防止圆点在空间不足时缩小 */
margin: 0; /* 移除原有的 margin-right */
flex-shrink: 0;
/* 防止圆点在空间不足时缩小 */
margin: 0;
/* 移除原有的 margin-right */
}
/* 备注列样式 */
@ -846,6 +693,7 @@ const trimJwCode = () => {
text-overflow: ellipsis;
white-space: nowrap;
}
/* 设置单元格内容溢出隐藏 */
.el-table .el-table__cell {
overflow: hidden;

1149
src/views/audit/refundAudit.vue
File diff suppressed because it is too large
View File

186
src/views/consume/coinConsume.vue

@ -1,11 +1,9 @@
<script setup>
import { reactive, onMounted } from "vue";
import { ref, computed, watch } from "vue";
import { ElMessage } from "element-plus";
import { ElMessage, ElMessageBox } from "element-plus";
import { Plus } from "@element-plus/icons-vue";
import axios from "axios";
import { ElMessageBox } from "element-plus";
import API from "../../api/index.js";
import moment from "moment";
import _ from "lodash";
import request from "@/util/http";
@ -39,7 +37,7 @@ const addConsume = ref({
rechargeCoin: 0,
taskCoin: 0,
updateType: "1",
indexName:"", //
indexName: "", //
});
//
const add = async function () {
@ -215,7 +213,7 @@ const getUserGold = async function (jwcode) {
userGold.value = result.data;
addConsume.value.username = result.data.name;
addConsume.value.area = result.data.area;
// ElMessage.success(result.msg);
// ElMessage.success(result.msg);
}
} catch (error) {
console.log("请求失败", error);
@ -231,7 +229,7 @@ function calculateCoins() {
userGold.value.free6 +
userGold.value.free12 +
userGold.value.buyJb) /
100 <
100 <
addConsume.value.allGold
) {
addConsume.value.allGold = 0;
@ -343,8 +341,8 @@ const indexs = ref([]);
const queryProductSearch = (queryString, cb) => {
const results = queryString
? goods.value.filter(item =>
item.name.toLowerCase().includes(queryString.toLowerCase())
)
item.name.toLowerCase().includes(queryString.toLowerCase())
)
: goods.value;
cb(results);
};
@ -353,8 +351,8 @@ const queryProductSearch = (queryString, cb) => {
const queryIndexSearch = (queryString, cb) => {
const results = queryString
? index.value.filter(item => // indexData index
item.name.toLowerCase().includes(queryString.toLowerCase())
)
item.name.toLowerCase().includes(queryString.toLowerCase())
)
: index.value;
cb(results);
};
@ -424,137 +422,63 @@ const handleSelectBlur = (value) => {
<template>
<div style="margin-bottom: 20px; font-weight: bolder">新增消费</div>
<el-form
:model="addConsume"
ref="Ref"
:rules="rules"
label-width="auto"
style="max-width: 750px;"
class="form-style"
>
<el-form :model="addConsume" ref="Ref" :rules="rules" label-width="auto" style="max-width: 750px;" class="form-style">
<el-form-item prop="jwcode" label="精网号">
<el-input
v-model="addConsume.jwcode"
style="width: 220px"
@change="getUserGold(addConsume.jwcode)"
/>
<el-button
type="primary"
@click="getUser(addConsume.jwcode)"
style="margin-left: 20px"
>查询</el-button
>
<el-input v-model="addConsume.jwcode" style="width: 220px" @change="getUserGold(addConsume.jwcode)" />
<el-button type="primary" @click="getUser(addConsume.jwcode)" style="margin-left: 20px">查询</el-button>
</el-form-item>
<div style="display: flex; align-items: center; gap: 20px;">
<el-form-item prop="productName" label="商品名称" style="flex: 1; margin-right: 0px">
<el-autocomplete
v-model="addConsume.productName"
:fetch-suggestions="queryProductSearch"
placeholder="请输入或选择商品"
style="width: 300px"
@select="handleProductSelect"
value-key="name"
clearable
:trigger-on-focus="true"
>
<template #default="{ item }">
<div>{{ item.name }}</div>
</template>
</el-autocomplete>
</el-form-item>
<!-- 指标选择 -->
<!-- 使用flex布局会使页面更灵活好用修改之前选中商品名称后才会正常布局的bug -->
<el-form-item prop="indexName" label="指标" v-if="isHC == 1" style="flex: 1;margin-left: -20px">
<el-autocomplete
v-model="addConsume.indexName"
:fetch-suggestions="queryIndexSearch"
placeholder="请输入或选择指标"
style="width: 140px"
@select="handleIndexSelect"
@blur="handleIndexBlur"
value-key="name"
:disabled="isHC !== 1"
clearable
free-solo
allow-create
>
<template #default="{ item }">
<div>{{ item.name }}</div>
</template>
</el-autocomplete>
</el-form-item>
<el-form-item label="指标" v-else style="flex:1;margin-left: -5px;">
<el-input disabled placeholder="无" style="width: 100px" />
</el-form-item>
</div>
<el-form-item prop="allGold" label="消费金币总数" >
<el-input
v-model="addConsume.allGold"
style="width: 100px"
@change="calculateCoins()"
/>
<div style="display: flex; align-items: center; gap: 20px;">
<el-form-item prop="productName" label="商品名称" style="flex: 1; margin-right: 0px">
<el-autocomplete v-model="addConsume.productName" :fetch-suggestions="queryProductSearch" placeholder="请输入或选择商品"
style="width: 300px" @select="handleProductSelect" value-key="name" clearable :trigger-on-focus="true">
<template #default="{ item }">
<div>{{ item.name }}</div>
</template>
</el-autocomplete>
</el-form-item>
<!-- 指标选择 -->
<el-form-item prop="indexName" label="指标" v-if="isHC == 1" style="flex: 1;margin-left: -20px">
<el-autocomplete v-model="addConsume.indexName" :fetch-suggestions="queryIndexSearch" placeholder="请输入或选择指标"
style="width: 140px" @select="handleIndexSelect" @blur="handleIndexBlur" value-key="name"
:disabled="isHC !== 1" clearable free-solo allow-create>
<template #default="{ item }">
<div>{{ item.name }}</div>
</template>
</el-autocomplete>
</el-form-item>
<el-form-item label="指标" v-else style="flex:1;margin-left: -5px;">
<el-input disabled placeholder="无" style="width: 100px" />
</el-form-item>
</div>
<el-form-item prop="allGold" label="消费金币总数">
<el-input v-model="addConsume.allGold" style="width: 100px" @change="calculateCoins()" />
</el-form-item>
<div style="display: flex; align-items: center">
<el-form-item prop="rechargeCoin" label="永久金币" style="float: left">
<el-input
disabled
v-model="addConsume.rechargeCoin"
style="width: 100px; margin-left: -5px"
/>
<el-input disabled v-model="addConsume.rechargeCoin" style="width: 100px; margin-left: -5px" />
<p style="margin-right: 0px"></p>
</el-form-item>
<el-form-item
prop="freeCoin"
label="免费金币"
style="float: left; margin-left: -20px"
>
<el-input
disabled
v-model="addConsume.freeCoin"
style="width: 100px; margin-left: -5px"
/>
<el-form-item prop="freeCoin" label="免费金币" style="float: left; margin-left: -20px">
<el-input disabled v-model="addConsume.freeCoin" style="width: 100px; margin-left: -5px" />
<p style="margin-right: 0px"></p>
</el-form-item>
<el-form-item prop="taskCoin" label="任务金币" style="margin-left: -20px">
<el-input
disabled
v-model="addConsume.taskCoin"
style="width: 100px; margin-left: -5px"
/>
<el-input disabled v-model="addConsume.taskCoin" style="width: 100px; margin-left: -5px" />
<p style="margin-right: 20px"></p>
</el-form-item>
</div>
<el-form-item prop="remark" label="备注">
<el-input
v-model="addConsume.remark"
style="width: 300px"
:rows="2"
maxlength="100"
show-word-limit
type="textarea"
/>
<el-input v-model="addConsume.remark" style="width: 300px" :rows="2" maxlength="100" show-word-limit type="textarea" />
</el-form-item>
<el-form-item prop="commitName" label="提交人">
<el-input
style="width: 300px"
:value="adminData.name"
disabled
placeholder="提交人姓名"
/>
<el-input style="width: 300px" :value="adminData.name" disabled placeholder="提交人姓名" />
</el-form-item>
<el-button type="success" @click="delteConsume" style="margin-left: 280px">重置</el-button>
<el-button type="primary" @click="addBefore"> 提交 </el-button>
</el-form>
<!-- 客户信息栏 -->
<el-card style="width: 850px; float: right" class="customer-info">
<el-form
:model="user"
label-width="auto"
style="max-width: 1200px"
label-position="left"
>
<el-form :model="user" label-width="auto" style="max-width: 1200px" label-position="left">
<el-text size="large" style="margin-left: 20px">客户信息</el-text>
<el-row style="margin-top: 20px">
<el-col :span="10">
@ -579,20 +503,13 @@ const handleSelectBlur = (value) => {
</el-col>
<el-col :span="14">
<el-form-item label="当前金币总数" style="width: 500px">
<span
style="color: #2fa1ff; margin-right: 5px"
v-if="user.buyJb !== undefined"
>{{
(user.buyJb + user.free6 + user.free12 + user.coreJb) / 100
}}</span
>
<span
style="display: inline; white-space: nowrap; color: #b1b1b1"
v-if="user.buyJb !== undefined"
>(永久金币:{{ user.buyJb / 100 }};免费金币:{{
<span style="color: #2fa1ff; margin-right: 5px" v-if="user.buyJb !== undefined">{{
(user.buyJb + user.free6 + user.free12 + user.coreJb) / 100
}}</span>
<span style="display: inline; white-space: nowrap; color: #b1b1b1" v-if="user.buyJb !== undefined">(永久金币:{{
user.buyJb / 100 }};免费金币:{{
(user.free6 + user.free12) / 100
}};任务金币:{{ user.coreJb / 100 }})</span
>
}};任务金币:{{ user.coreJb / 100 }})</span>
</el-form-item>
</el-col>
<el-col :span="10">
@ -607,11 +524,6 @@ const handleSelectBlur = (value) => {
<p style="color: #2fa1ff">{{ user.rechargeTimes }}</p>
</el-form-item>
</el-col>
<!-- <el-col :span="10">
<el-form-item label="负责客服">
<p>{{ adminData.name }}</p>
</el-form-item>
</el-col> -->
<el-col :span="10">
<el-form-item label="消费次数">
<p style="color: #2fa1ff">{{ user.spendTimes }}</p>

7
src/views/index.vue

@ -31,8 +31,6 @@ const getAdminData = async function () {
}
//
const areas = ref([])
//
const currentArea = ref('全部')
const getAreas = async function () {
try {
@ -74,10 +72,6 @@ onMounted(async function () {
//
getAreas()
})
//
const changeDataByArea = (item) => {
currentArea.value = item
}
//
const isCollapse = ref(false)
const handleOpen = (key, keyPath) => {
@ -231,7 +225,6 @@ const handleClose = (key, keyPath) => {
</el-header>
<!-- 修改 el-main 样式 -->
<el-main style="margin-top: 60px">
<!-- 60px el-header 的大致高度可根据实际情况调整 -->
<router-view></router-view>
</el-main>
</el-container>

77
src/views/login.vue

@ -27,10 +27,6 @@ getMachineId()
const router = useRouter() //
let formData = new FormData()
// FormData
// formData.append("jwcode", form.value.jwcode);
// formData.append("password", form.value.password);
const form = ref({ jwcode: '', password: '', token: '', machineId: machineId })
//
const login = async function () {
@ -63,7 +59,6 @@ const login = async function () {
} catch (error) {
console.log('请求失败', error)
ElMessage.error('登录失败,请检查账号密码')
//
}
}
@ -71,17 +66,9 @@ const login = async function () {
</script>
<template>
<el-row class="login-page">
<img
:span="12"
src="../assets/background.jpg"
alt="logo"
class="bg"
fit="fit"
/>
<!-- <div style="height: 100vh; width: 1000px" class="container"></div> -->
<img :span="12" src="../assets/background.jpg" alt="logo" class="bg" fit="fit" />
<el-col :span="6" :offset="3" class="form">
<!-- 登录表单 -->
<el-form :model="form" size="large" autocomplete="off" >
<el-form :model="form" size="large" autocomplete="off">
<el-form-item>
<h1 style="color: #409eff">金币系统登录</h1>
</el-form-item>
@ -89,37 +76,19 @@ const login = async function () {
<el-input v-model="form.jwcode" placeholder="请输入精网号" @keyup.enter="login"></el-input>
</el-form-item>
<el-form-item prop="password" @keyup.enter="login">
<el-input
v-model="form.password"
type="password"
placeholder="请输入密码"
/>
<el-input v-model="form.password" type="password" placeholder="请输入密码" />
</el-form-item>
<el-form-item class="flex"> </el-form-item>
<!-- 登录按钮 -->
<el-form-item>
<button type="button" class="button" @click="login()">
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
height="30"
width="24"
>
<path
fill="white"
d="M23.15 2.587L18.21 0.210001C17.9308 0.075557 17.6167 0.031246 17.3113 0.083204C17.0058 0.135162 16.724 0.280818 16.505 0.500001L7.04499 9.13L2.92499 6.002C2.73912 5.86101 2.50976 5.78953 2.27669 5.79994C2.04363 5.81035 1.82156 5.902 1.64899 6.059L0.326993 7.261C0.223973 7.35465 0.141644 7.46878 0.0852761 7.59608C0.0289081 7.72339 -0.00025659 7.86106 -0.000350724 8.00028C-0.000444857 8.1395 0.0285336 8.27721 0.0847294 8.40459C0.140925 8.53197 0.2231 8.64621 0.325993 8.74L3.89899 12L0.325993 15.26C0.2231 15.3538 0.140925 15.468 0.0847294 15.5954C0.0285336 15.7228 -0.000444857 15.8605 -0.000350724 15.9997C-0.00025659 16.1389 0.0289081 16.2766 0.0852761 16.4039C0.141644 16.5312 0.223973 16.6454 0.326993 16.739L1.64999 17.94C1.82256 18.097 2.04463 18.1887 2.27769 18.1991C2.51076 18.2095 2.74012 18.138 2.92599 17.997L7.04599 14.869L16.506 23.499C16.7248 23.7182 17.0064 23.8639 17.3117 23.9159C17.6171 23.9679 17.931 23.9235 18.21 23.789L23.152 21.412C23.4062 21.2893 23.6207 21.0973 23.7707 20.8581C23.9207 20.619 24.0002 20.3423 24 20.06V3.939C24 3.65647 23.9203 3.37967 23.7699 3.14048C23.6195 2.90129 23.4046 2.70943 23.15 2.587ZM18.004 17.448L10.826 12L18.004 6.552V17.448Z"
></path>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" height="30" width="24">
<path fill="white"
d="M23.15 2.587L18.21 0.210001C17.9308 0.075557 17.6167 0.031246 17.3113 0.083204C17.0058 0.135162 16.724 0.280818 16.505 0.500001L7.04499 9.13L2.92499 6.002C2.73912 5.86101 2.50976 5.78953 2.27669 5.79994C2.04363 5.81035 1.82156 5.902 1.64899 6.059L0.326993 7.261C0.223973 7.35465 0.141644 7.46878 0.0852761 7.59608C0.0289081 7.72339 -0.00025659 7.86106 -0.000350724 8.00028C-0.000444857 8.1395 0.0285336 8.27721 0.0847294 8.40459C0.140925 8.53197 0.2231 8.64621 0.325993 8.74L3.89899 12L0.325993 15.26C0.2231 15.3538 0.140925 15.468 0.0847294 15.5954C0.0285336 15.7228 -0.000444857 15.8605 -0.000350724 15.9997C-0.00025659 16.1389 0.0289081 16.2766 0.0852761 16.4039C0.141644 16.5312 0.223973 16.6454 0.326993 16.739L1.64999 17.94C1.82256 18.097 2.04463 18.1887 2.27769 18.1991C2.51076 18.2095 2.74012 18.138 2.92599 17.997L7.04599 14.869L16.506 23.499C16.7248 23.7182 17.0064 23.8639 17.3117 23.9159C17.6171 23.9679 17.931 23.9235 18.21 23.789L23.152 21.412C23.4062 21.2893 23.6207 21.0973 23.7707 20.8581C23.9207 20.619 24.0002 20.3423 24 20.06V3.939C24 3.65647 23.9203 3.37967 23.7699 3.14048C23.6195 2.90129 23.4046 2.70943 23.15 2.587ZM18.004 17.448L10.826 12L18.004 6.552V17.448Z">
</path>
</svg>
<p class="text">登录</p>
</button>
<!-- <el-button
class="button"
type="primary"
auto-insert-space
@click="login()"
>登录</el-button
> -->
</el-form-item>
</el-form>
</el-col>
@ -161,7 +130,6 @@ const login = async function () {
}
}
/* From Uiverse.io by kamehame-ha */
.button {
height: 50px;
display: flex;
@ -201,21 +169,6 @@ const login = async function () {
fill: #007acc;
}
/* .box {
padding: 20px;
border-radius: 10px;
background-color: #fff;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
} */
/* From Uiverse.io by marsella_3472 */
/*
More comprehensive version at shenanigans.shoghisimon.ca/collection/css
*/
/* From Uiverse.io by SelfMadeSystem */
.container {
width: 100%;
height: 100%;
@ -225,19 +178,3 @@ More comprehensive version at shenanigans.shoghisimon.ca/collection/css
background-size: 100% 2px, 100% 100%, 100% 100%;
}
</style>
<!-- 这是补救
const run = () => {
const width = window.innerWidth;
const height = window.innerHeight;
const chartNode = document.querySelector("main");
drawChart.default(chartNode,data,width,height);
};
window.addEventListener("resize", run);
document.addEventListener("DOMContentLoaded", run);
</script>
</body>
</html>
-->

232
src/views/managerecharge/rate.vue

@ -70,7 +70,7 @@ const getYesterday = () => {
search()
}
// 7
// 7
const get7Days = () => {
const today = new Date()
const start = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 6, 0, 0, 0)
@ -156,7 +156,7 @@ const addRate = async function () {
})
if (result.code == 0) {
ElMessage.error(result.msg)
}else{
} else {
ElMessage({
type: 'success',
message: '新增汇率成功'
@ -407,7 +407,7 @@ const rules = reactive({
//
const handledelete = function () {
timeRange.value={}
timeRange.value = {}
getObj.value.pageNum = 1
}
//
@ -479,26 +479,17 @@ function handleInput(value) {
</script>
<template>
<!-- 这是主页面 -->
<el-row>
<el-col>
<el-card>
<!-- 这是时间 -->
<div class="demo-range">
<el-row>
<el-col :span="9">
<el-form-item>
<el-text class="mx-1" size="large">时间范围</el-text>
<el-date-picker
v-model="timeRange"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="width: 300px"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
/>
<el-date-picker v-model="timeRange" type="datetimerange" range-separator="" start-placeholder="开始日期"
end-placeholder="结束日期" style="width: 300px" format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss" />
</el-form-item>
</el-col>
<el-col :span="4">
@ -507,15 +498,8 @@ function handleInput(value) {
<el-button @click="get7Days">近7天</el-button>
</el-col>
<el-col :span="4">
<el-button
class="button-item"
type="success"
@click="handledelete()"
>重置</el-button>
<el-button
type="primary"
@click="search"
>查询</el-button>
<el-button class="button-item" type="success" @click="handledelete()">重置</el-button>
<el-button type="primary" @click="search">查询</el-button>
</el-col>
</el-row>
</div>
@ -526,28 +510,13 @@ function handleInput(value) {
<el-row>
<el-col>
<el-card class="box-card" style="max-width: 100%">
<!-- 添加 -->
<div class="add-item">
<el-button
style="color: #048efb; border: 1px solid #048efb"
@click="regeAdd = true"
>新增汇率</el-button
>
<el-button style="color: #048efb; border: 1px solid #048efb" @click="regeAdd = true">新增汇率</el-button>
</div>
<!-- 表格 -->
<div>
<el-table
:data="tableData"
v-if="(tableData.flag = 1)"
:height="tableHeight"
style="width: 100%"
>
<el-table-column
type="index"
label="序号"
width="100px"
fixed="left"
>
<el-table :data="tableData" v-if="(tableData.flag = 1)" :height="tableHeight" style="width: 100%">
<el-table-column type="index" label="序号" width="100px" fixed="left">
<template #default="scope">
<span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
@ -568,62 +537,22 @@ function handleInput(value) {
<span>{{ formatDate(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column prop="adminName" label="提交人" :span="1" />
<el-table-column prop="status" label="状态">
<template #default="scope">
<span v-if="scope.row.status === 1">
<div class="status">
<span class="green-dot"></span>
<span>使用中</span>
</div>
</span>
<span v-if="scope.row.status === 0">
<div class="status">
<span class="red-dot"></span>
<span>未开始</span>
</div>
</span>
<span v-if="scope.row.status === 2">
<div class="status">
<span class="grey-dot"></span>
<span>已过期</span>
</div>
</span>
</template>
</el-table-column>
<el-table-column prop="startTime" label="持续时间" :span="10">
<template #default="scope">
<span>{{ formatDateTwe(scope.row.startTime) }}</span>
<span>---</span>
<span>{{ formatDateTwe(scope.row.endTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" :span="3">
<template #default="scope">
<el-button
type="text"
@click="
() => {
regeEdit = true
getEditData(scope.row)
}
"
>编辑</el-button
>
<el-popconfirm
title="确定将此条活动删除吗?"
@confirm="delConfirm"
>
<el-button type="text" @click="
() => {
regeEdit = true
getEditData(scope.row)
}
">编辑</el-button>
<el-popconfirm title="确定将此条活动删除吗?" @confirm="delConfirm">
<template #reference>
<el-button type="primary" text> 删除 </el-button>
</template>
<template #actions="{ confirm, cancel }">
<el-button size="small" @click="cancel">取消</el-button>
<el-button
type="primary"
size="small"
@click="confirm(scope.row)"
>
<el-button type="primary" size="small" @click="confirm(scope.row)">
确定
</el-button>
</template>
@ -634,58 +563,26 @@ function handleInput(value) {
</div>
<!-- 分页 -->
<div class="pagination">
<el-pagination
background
:page-size="getObj.pageSize"
:page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
@size-change="handlePageSizeChange"
@current-change="handleCurrentChange"
></el-pagination>
<el-pagination background :page-size="getObj.pageSize" :page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handlePageSizeChange"
@current-change="handleCurrentChange"></el-pagination>
</div>
</el-card>
</el-col>
</el-row>
<!-- 这是添加弹窗 -->
<el-dialog
v-model="regeAdd"
title="新增汇率"
width="500"
:close-on-click-modal="false"
>
<el-dialog v-model="regeAdd" title="新增汇率" width="500" :close-on-click-modal="false">
<template #footer>
<el-form
ref="Ref"
style="max-width: 600px"
:model="rateAdd"
:rules="rules"
label-width="auto"
class="demo-ruleForm"
:size="formSize"
status-icon
>
<el-form ref="Ref" style="max-width: 600px" :model="rateAdd" :rules="rules" label-width="auto"
class="demo-ruleForm" :size="formSize" status-icon>
<el-form-item prop="currency" label="货币名称:">
<el-select
v-model.number="rateAdd.currency"
placeholder="请选择"
style="width: 240px"
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
<el-select v-model.number="rateAdd.currency" placeholder="请选择" style="width: 240px">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item prop="exchangeRate" label="汇率:">
<el-input
v-model="rateAdd.exchangeRate"
@update:modelValue="handleInput"
style="width: 120px"
/>
<el-input v-model="rateAdd.exchangeRate" @update:modelValue="handleInput" style="width: 120px" />
<p class="unit">:1</p>
<p>
(提示当前规则每 {{ rateAdd.exchangeRate }}
@ -696,23 +593,12 @@ function handleInput(value) {
<el-input :value="adminData.name" disabled style="width: 240px" />
</el-form-item>
<el-form-item prop="startTime" label="开始时间:">
<el-date-picker
v-model="rateAdd.startTime"
type="date"
placeholder="请选择时间"
:default-value="new Date()"
@change="handleStartTimeChange"
value-format="YYYY-MM-DD"
/>
<el-date-picker v-model="rateAdd.startTime" type="date" placeholder="请选择时间" :default-value="new Date()"
@change="handleStartTimeChange" value-format="YYYY-MM-DD" />
</el-form-item>
<el-form-item prop="endTime" label="结束时间:">
<el-date-picker
v-model="rateAdd.endTime"
type="date"
placeholder="请选择时间"
:default-value="new Date()"
value-format="YYYY-MM-DD"
/>
<el-date-picker v-model="rateAdd.endTime" type="date" placeholder="请选择时间" :default-value="new Date()"
value-format="YYYY-MM-DD" />
</el-form-item>
<el-form-item>
<div class="dialog-footer">
@ -725,35 +611,13 @@ function handleInput(value) {
</el-dialog>
<!-- 这是编辑弹窗 -->
<el-dialog
v-model="regeEdit"
title="修改汇率"
width="500"
:close-on-click-modal="false"
>
<el-dialog v-model="regeEdit" title="修改汇率" width="500" :close-on-click-modal="false">
<template #footer>
<el-form
ref="ruleFormRef"
style="max-width: 600px"
:model="rateEdit"
:rules="rules"
label-width="auto"
class="demo-ruleForm"
:size="formSize"
status-icon
>
<el-form ref="ruleFormRef" style="max-width: 600px" :model="rateEdit" :rules="rules" label-width="auto"
class="demo-ruleForm" :size="formSize" status-icon>
<el-form-item label="货币名称:">
<el-select
v-model="rateEdit.currency"
placeholder="请选择"
style="width: 240px"
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
<el-select v-model="rateEdit.currency" placeholder="请选择" style="width: 240px">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="汇率:">
@ -768,22 +632,12 @@ function handleInput(value) {
<el-input disabled :value="adminData.name" style="width: 240px" />
</el-form-item>
<el-form-item label="开始时间:">
<el-date-picker
v-model="rateEdit.startTime"
type="date"
placeholder="请选择时间"
:default-value="new Date()"
value-format="YYYY-MM-DD"
/>
<el-date-picker v-model="rateEdit.startTime" type="date" placeholder="请选择时间" :default-value="new Date()"
value-format="YYYY-MM-DD" />
</el-form-item>
<el-form-item label="结束时间:">
<el-date-picker
v-model="rateEdit.endTime"
type="date"
placeholder="请选择时间"
:default-value="new Date()"
value-format="YYYY-MM-DD"
/>
<el-date-picker v-model="rateEdit.endTime" type="date" placeholder="请选择时间" :default-value="new Date()"
value-format="YYYY-MM-DD" />
</el-form-item>
<el-form-item>
<div class="dialog-footer">
@ -840,9 +694,11 @@ p {
.el-card {
padding: 0px;
}
.pagination {
display: flex;
}
.status {
display: flex;
}

2
src/views/refund/beanRefund.vue

@ -6,7 +6,7 @@ import { AiFillRead } from 'vue-icons-plus/ai'
import { ElMessage, ElMessageBox } from 'element-plus'
import axios from 'axios'
import moment from 'moment'
import API from '@/util/http'
//
//
const adminData = ref({})

2
src/views/refund/coinRefund.vue

@ -5,7 +5,7 @@ import { ElMessage } from 'element-plus'
import { Plus } from '@element-plus/icons-vue'
import axios from 'axios'
import { ElMessageBox } from 'element-plus'
import API from '@/util/http'
import moment from 'moment'
// import _ from 'lodash'

1468
src/views/workspace/index.vue
File diff suppressed because it is too large
View File

Loading…
Cancel
Save