42 Commits

Author SHA1 Message Date
donghaolin f5be3cb4ab Merge branch 'zln1' into dev合并zln1分支到dev分支 11 months ago
zry 859e2a773a zry修改 12 months ago
zhaoln ca4ab12418 功能联调bug修改 12 months ago
zhaoln 53cc2a3e90 新增线上充值页面以及bug修改 12 months ago
zhaoln 4eee080644 功能联调bug修改 12 months ago
zhaoln 4faca008a3 联调加改bug 12 months ago
zhaoln c3125ea7a9 bug 修改和新功能补充 12 months ago
zhaoln 042ddebe9a 修改所有表格分页数据 12 months ago
zhaoln fdc5824335 客户信息新增字段所属门店 12 months ago
zhaoln a0d59e26ac 金豆消费明细页面开发 1 year ago
zhaoln e10c0efb81 bug修改 1 year ago
zhaoln 9fb24b9b94 金豆充值和余额页面开发联调 1 year ago
zhaoln b19610de40 金豆增加充值页面的开发 1 year ago
zhaoln 53f592fa9d 金豆增加充值页面的开发 1 year ago
zhaoln f6364cd4dd 封装工作台代码 1 year ago
donghaolin 1bf7548122 4/9号,地区通过url传递 1 year ago
zhaoln e69980e5f3 修改明细字段 1 year ago
donghaolin badcc44d9e 前四个模块请求封装修改 1 year ago
zhaoln 0f2ea7893c 请求修改 1 year ago
zry a9b1a980f4 zry修改 12 months ago
zhaoln 1e3f50e5b8 功能联调bug修改 12 months ago
zhaoln 4b81ccbaef 新增线上充值页面以及bug修改 12 months ago
zhaoln 3382e18d53 功能联调bug修改 12 months ago
zhaoln b4ee945493 联调加改bug 12 months ago
zhaoln 71a7a115a6 bug 修改和新功能补充 12 months ago
zhaoln b921ec3fff 修改所有表格分页数据 12 months ago
zhaoln 39faec7c2b Merge branch 'test' of http://39.101.133.168:8807/yanjiaqing/gold_vue into zln1 12 months ago
zhaoln 1d39614586 客户信息新增字段所属门店 12 months ago
zhaoln a393f511d4 金豆消费明细页面开发 1 year ago
zhaoln ab3c793266 bug修改 1 year ago
zhaoln ba19fbf42e 金豆充值和余额页面开发联调 1 year ago
zhaoln 2939348502 金豆增加充值页面的开发 1 year ago
zhaoln b28983900e 金豆增加充值页面的开发 1 year ago
zhaoln 43b0f76e21 封装工作台代码 1 year ago
zhaoln afc6726c41 Merge branch 'zln1' of http://39.101.133.168:8807/yanjiaqing/gold_vue into zln1 1 year ago
zhaoln 1be305a252 修改明细字段 1 year ago
donghaolin fb076705f4 4/9号,地区通过url传递 1 year ago
donghaolin 3f95800d3c 前四个模块请求封装修改 1 year ago
donghaolin bab393abd1 Merge branch 'zln1' of http://39.101.133.168:8807/yanjiaqing/gold_vue into zln1 1 year ago
donghaolin 8d5e2ced7c 前4个模块请求封装 1 year ago
zhaoln 51d843e908 请求修改 1 year ago
zhaoln 1a75182d7d 请求封装 1 year ago
  1. 1
      gold-system/.env.development
  2. 1
      gold-system/.env.production
  3. 1
      gold-system/.env.test
  4. 872
      gold-system/package-lock.json
  5. 9
      gold-system/package.json
  6. 15
      gold-system/src/main.ts
  7. 14
      gold-system/src/router/index.js
  8. 12
      gold-system/src/store/area.js
  9. 62
      gold-system/src/util/http.js
  10. 44
      gold-system/src/util/request.js
  11. 661
      gold-system/src/views/audit/rechargeAudit.vue
  12. 592
      gold-system/src/views/audit/refundAudit.vue
  13. 47
      gold-system/src/views/consume/addConsume.vue
  14. 389
      gold-system/src/views/consume/allConsume.vue
  15. 210
      gold-system/src/views/goldBeen/addGoldenBeen.vue
  16. 234
      gold-system/src/views/goldBeen/goldenBeenBalance.vue
  17. 307
      gold-system/src/views/goldBeen/goldenBeenConsum.vue
  18. 486
      gold-system/src/views/goldBeen/goldenBeenDetail.vue
  19. 494
      gold-system/src/views/goldBeen/onLineDetail.vue
  20. 178
      gold-system/src/views/index.vue
  21. 87
      gold-system/src/views/login.vue
  22. 356
      gold-system/src/views/managerecharge/activity.vue
  23. 507
      gold-system/src/views/managerecharge/rate.vue
  24. 451
      gold-system/src/views/permissions/index.vue
  25. 910
      gold-system/src/views/recharge/addRecharge.vue
  26. 550
      gold-system/src/views/recharge/adminRecharge.vue
  27. 517
      gold-system/src/views/recharge/allRecharge.vue
  28. 311
      gold-system/src/views/refund/addRefund.vue
  29. 541
      gold-system/src/views/refund/allRefund.vue
  30. 530
      gold-system/src/views/usergold/index.vue
  31. 356
      gold-system/src/views/usergoldInfo/index.vue
  32. 1369
      gold-system/src/views/workspace/index.vue
  33. 197
      gold-system/src/views/z.vue
  34. 4949
      gold-system/stats.html
  35. 19
      gold-system/tsconfig.app.json
  36. 14
      gold-system/tsconfig.node.json
  37. 1
      gold-system/tsconfig.tsbuildinfo
  38. 96
      gold-system/vite.config.ts

1
gold-system/.env.development

@ -0,0 +1 @@
VITE_API_BASE='http://54.251.137.151:10704/'

1
gold-system/.env.production

@ -0,0 +1 @@
VITE_API_BASE='http://54.251.137.151:10702/'

1
gold-system/.env.test

@ -0,0 +1 @@
VITE_API_BASE='http://54.251.137.151:10704/'

872
gold-system/package-lock.json
File diff suppressed because it is too large
View File

9
gold-system/package.json

@ -3,9 +3,11 @@
"private": true,
"version": "0.0.0",
"type": "module",
"sideEffects": false,
"scripts": {
"dev": "vite --host 0.0.0.0",
"build": "vue-tsc -b && vite build",
"build:test": "vite build --mode test",
"build:prod": "vite build --mode production",
"preview": "vite preview",
"serve": "vite - service serve --host 0.0.0.0 --port 8080"
},
@ -17,6 +19,7 @@
"lodash": "^4.17.21",
"mathjs": "^14.0.1",
"moment": "^2.30.1",
"pinia": "^3.0.2",
"vue": "^3.5.12",
"vue-icons-plus": "^0.1.7",
"vue-json-excel": "^0.3.0",
@ -27,8 +30,12 @@
},
"devDependencies": {
"@types/node": "^22.10.5",
"@types/vue": "^2.0.0",
"@vitejs/plugin-legacy": "^6.0.2",
"@vitejs/plugin-vue": "^5.1.4",
"file-saver": "^2.0.5",
"rollup-plugin-visualizer": "^5.14.0",
"sass": "^1.86.3",
"terser": "^5.38.1",
"typescript": "~5.6.2",
"vite": "^6.1.0",

15
gold-system/src/main.ts

@ -5,9 +5,9 @@ import ElementPlus from 'element-plus'
import zhCn from 'element-plus/es/locale/lang/zh-cn'
import 'element-plus/dist/index.css'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import './assets/css/common.css'; // 引入公共CSS文件
import './assets/css/common.css' // 引入公共CSS文件
import JsonExcel from 'vue-json-excel'
import { createPinia } from 'pinia'
import VxeUI from 'vxe-pc-ui'
import 'vxe-pc-ui/lib/style.css'
import VxeUITable from 'vxe-table'
@ -22,8 +22,13 @@ for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
// 使用 ElementPlus 和路由器
a.use(ElementPlus, {
locale: zhCn,
}).use(router).use(VxeUI).use(VxeUITable).mount('#app');
locale: zhCn
})
.use(router)
.use(VxeUI)
.use(VxeUITable)
.use(createPinia())
.mount('#app')
// 注册 JsonExcel 组件
a.component('downloadExcel', JsonExcel)
a.component('downloadExcel', JsonExcel)

14
gold-system/src/router/index.js

@ -12,7 +12,7 @@ const router = createRouter({
children: [
// 工作台
{ path: '/workspace', name: "workspace", component: () => import("../views/workspace/index.vue") },
{ path: '/workspace/:area?', name: "workspace", component: () => import("../views/workspace/index.vue") },
// 充值审核
{ path: '/rechargeAudit', name: "rechargeAudit", component: () => import("../views/audit/rechargeAudit.vue") },
// 退款审核
@ -43,6 +43,16 @@ const router = createRouter({
{ path: '/permissions', name: "permissions", component: () => import("../views/permissions/index.vue") },
// 没有权限
{ path: '/noPermission', name: "noPermission", component: () => import("../views/noPermissionPage.vue") },
//金豆充值
{ path: '/addGoldenBeen', name: "addGoldenBeen", component: () => import("../views/goldBeen/addGoldenBeen.vue") },
//金豆余额
{ path: '/goldenBeenBalance', name: "goldenBeenBalance", component: () => import("../views/goldBeen/goldenBeenBalance.vue") },
//金豆充值明细
{ path: '/goldenBeenDetail', name: "goldenBeenDetail", component: () => import("../views/goldBeen/goldenBeenDetail.vue") },
//线上充值明细
{ path: '/onLineDetail', name: "onLineDetail", component: () => import("../views/goldBeen/onLineDetail.vue") },
//金豆消费明细
{ path: '/goldenBeenConsum', name: "goldenBeenConsum", component: () => import("../views/goldBeen/goldenBeenConsum.vue") }
]
},
@ -88,4 +98,4 @@ router.beforeEach((to, from, next) => {
}
})
export default router;
export default router;

12
gold-system/src/store/area.js

@ -0,0 +1,12 @@
import { defineStore } from 'pinia'
export const useAreaStore = defineStore('area', {
state: () => ({
currentArea: '全部',
}),
actions: {
updateArea(newVal) {
this.currentArea = newVal
},
},
})

62
gold-system/src/util/http.js

@ -1,48 +1,26 @@
import axios from 'axios';
import request from './request'
export default function(options) {
const { method = 'post', url, data = {}, params = {}, headers = {} } = options
export default function (options) {
//配置每次发送请求都从localStorage中获取名字叫token的数据,
//添加到请求头部的Authorization属性中
const token = localStorage.getItem('token');
//Object.assign用于合并对象的数据
options.data.token = token;
// options.headers = Object.assign(
// { token: token },
// options.headers || {}
// );
//axios() 返回一个promise对象,用于异步请求
//options是一个对象,其中包含了许多用于配置请求的参数,
//例如请求的url、请求方法(GET、POST等)、请求头等
return axios(options)
return request({
method,
url,
data,
params,
headers
})
.then(({ status, data, statusText }) => {
//该函数在请求成功并返回数据时被调用
//status:HTTP状态码,例如200表示请求成功。
//data:服务器返回的数据。
// statusText:HTTP状态文本,例如"OK"表示请求成功。
// console.log(data);
if (status == 200) {
return data;
if (status === 200) {
return data
} else {
throw new e(statusText);
throw new Error(statusText)
}
})
.catch(error => {
if (error?.needsLogin) {
return { needsLogin: true }
}
return Promise.reject(error)
})
.catch(e=>{
// 检查是否是因为token过期导致的401错误
if (e.response && e.response.status === 401) {
// 获取机器码
const machineId = localStorage.getItem('machineId');
// 清除localStorage中的token
localStorage.removeItem('token');
// // 执行重新登录的逻辑,例如跳转到登录页面
router.push("/login?machineId=" + machineId);
// 可以在这里返回一个特定的值或者对象,以便调用者知道需要重新登录
return { needsLogin: true };
} else {
// 其他类型的错误,直接抛出
return Promise.reject(e);
}
});
}
}

44
gold-system/src/util/request.js

@ -0,0 +1,44 @@
import axios from 'axios'
const service = axios.create({
baseURL: import.meta.env.VITE_API_BASE,
timeout: 10000,
headers: {
'Content-Type': 'application/json'
},
// 设置默认请求方法为 POST
})
// 请求拦截器
service.interceptors.request.use(config => {
const token = localStorage.getItem('token')
if (token) {
if (config.data) {
config.data.token = token;
} else {
config.data = { token };
}
// config.headers.Authorization = `${token}`
}
return config
}, error => {
return Promise.reject(error)
})
// 响应拦截器
service.interceptors.response.use(
response => {
return response
},
error => {
// const { response } = error
// if (response && response.status === 401) {
// const machineId = localStorage.getItem('machineId')
// localStorage.removeItem('token')
// window.location.href = `/login?machineId=${machineId}`
// return Promise.resolve({ needsLogin: true })
// }
return Promise.reject(error)
}
)
export default service

661
gold-system/src/views/audit/rechargeAudit.vue

@ -1,86 +1,87 @@
<script setup>
import { ref, onMounted, reactive, computed } from "vue";
import ElementPlus from "element-plus";
import { ElMessage, ElMessageBox } from "element-plus";
import { AiFillRead } from "vue-icons-plus/ai";
import axios from "axios";
import moment from "moment";
import API from "../../api/index.js";
import { ref, onMounted, reactive, computed } from 'vue'
import ElementPlus from 'element-plus'
import { ElMessage, ElMessageBox } from 'element-plus'
import { AiFillRead } from 'vue-icons-plus/ai'
import axios from 'axios'
import request from '@/util/http'
import moment from 'moment'
import API from '../../api/index.js'
//
//
const adminData = ref({});
const adminData = ref({})
const getAdminData = async function () {
try {
const result = await API.post(
"http://54.251.137.151:10702/admin/userinfo",
{}
);
adminData.value = result;
console.log("请求成功", result);
console.log("用户信息", adminData.value);
const result = await request({
url: '/admin/userinfo',
data: {}
})
adminData.value = result
console.log('请求成功', result)
console.log('用户信息', adminData.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
}
};
}
//
const tableData = ref([]);
const tableData = ref([])
// ======================================
// rechargeVo
const rechargeVo = ref({
rechargeWay: "客服充值",
});
rechargeWay: '客服充值'
})
//
const getObj = ref({
pageNum: 1,
pageSize: 50,
});
pageSize: 50
})
//
const total = ref(100);
const total = ref(100)
//
const getTime = ref([]);
const getTime = ref([])
//
const activity = ref([]);
const activity = ref([])
//
const allData = ref([]);
const allData = ref([])
//
const area = ref([]);
const area = ref([])
// ======================================
//
const rejectVisible = ref(false);
const rejectVisible = ref(false)
//
const rejectObj = ref({});
const rejectObj = ref({})
//
const passObj = ref({});
const passObj = ref({})
//
const activeName = ref("all");
const activeName = ref('all')
//
const payWay = [
{
value: "微信",
label: "微信",
value: '微信',
label: '微信'
},
{
value: "支付宝",
label: "支付宝",
value: '支付宝',
label: '支付宝'
},
{
value: "银联",
label: "银联",
value: '银联',
label: '银联'
},
{
value: "信用卡",
label: "信用卡",
value: '信用卡',
label: '信用卡'
},
{
value: "借记卡",
label: "借记卡",
},
];
value: '借记卡',
label: '借记卡'
}
]
// //
// const tableHeight = computed(function () {
@ -88,452 +89,455 @@ const payWay = [
// });
// ref
const Ref = ref(null);
const Ref = ref(null)
//
//
//
const trueGold = ref(0);
const trueCount = ref(0);
const trueRGold = ref(0);
const trueFGold = ref(0);
const trueGold = ref(0)
const trueCount = ref(0)
const trueRGold = ref(0)
const trueFGold = ref(0)
//
const pendingCount = ref(0);
const pendingCount = ref(0)
//
const pendingGold = ref(0);
const pendingRGold = ref(0);
const pendingFGold = ref(0);
const pendingGold = ref(0)
const pendingRGold = ref(0)
const pendingFGold = ref(0)
//
const approvedCount = ref(0);
const approvedCount = ref(0)
//
const approvedGold = ref(0);
const approvedRGold = ref(0);
const approvedFGold = ref(0);
const approvedGold = ref(0)
const approvedRGold = ref(0)
const approvedFGold = ref(0)
//
const rejectedCount = ref(0);
const rejectedCount = ref(0)
//
const rejectedGold = ref(0);
const rejectedRGold = ref(0);
const rejectedFGold = 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 (adminData.value.area === '泰国') {
rechargeVo.value.areas = ['泰国', '越南']
} else if (adminData.value.area !== '总部') {
rechargeVo.value.area = adminData.value.area
}
//
if (typeof val === "number") {
getObj.value.pageNum = val;
if (typeof val === 'number') {
getObj.value.pageNum = val
}
//
if (getTime.value != null) {
if (getTime.value.startDate != "" && getTime.value.endDate != "") {
rechargeVo.value.startDate = getTime.value[0];
rechargeVo.value.endDate = getTime.value[1];
if (getTime.value.startDate != '' && getTime.value.endDate != '') {
rechargeVo.value.startDate = getTime.value[0]
rechargeVo.value.endDate = getTime.value[1]
}
} else {
rechargeVo.value.startDate = "";
rechargeVo.value.endDate = "";
rechargeVo.value.startDate = ''
rechargeVo.value.endDate = ''
}
rechargeVo.value.sortField = sortField.value;
rechargeVo.value.sortOrder = sortOrder.value;
console.log("搜索参数", getObj.value);
rechargeVo.value.sortField = sortField.value
rechargeVo.value.sortOrder = sortOrder.value
console.log('搜索参数', getObj.value)
// POST
const result = await API.post(
"http://54.251.137.151:10702/recharge/recharge",
{
...getObj.value,
rechargeVo: { ...rechargeVo.value },
const result = await request({
url: '/recharge/recharge',
data: {
pageNum: getObj.value.pageNum,
pageSize: getObj.value.pageSize,
rechargeVo: { ...rechargeVo.value }
}
);
})
//
// rechargeVo.value
const detailWithoutSort = { ...rechargeVo.value };
delete detailWithoutSort.sortField;
delete detailWithoutSort.sortOrder;
delete detailWithoutSort.status;
const result2 = await API.post(
"http://54.251.137.151:10702/recharge/recharge/RechargeA",
{
...detailWithoutSort,
}
);
const detailWithoutSort = { ...rechargeVo.value }
delete detailWithoutSort.sortField
delete detailWithoutSort.sortOrder
delete detailWithoutSort.status
const result2 = await request({
url: '/recharge/recharge/RechargeA',
data: detailWithoutSort
})
// result2.data[i].flag="" totalData.value = result2.data[i]0
//
if (result2.data) {
result2.data.forEach((item) => {
switch (item.flag) {
case "待审核":
switch (item.auditStatus) {
case '待审核':
// item.raudit 0
pendingCount.value = item.raudit || 0;
pendingCount.value = item.raudit || 0
// item.sumRaudit 0
pendingGold.value = item.sumRaudit || 0;
pendingRGold.value = item.sumRaudit1 || 0;
pendingFGold.value = item.sumRaudit2 || 0;
break;
case "已通过":
approvedCount.value = item.raudit || 0;
approvedGold.value = item.sumRaudit || 0;
approvedRGold.value = item.sumRaudit1 || 0;
approvedFGold.value = item.sumRaudit2 || 0;
break;
case "已驳回":
rejectedCount.value = item.raudit || 0;
rejectedGold.value = item.sumRaudit || 0;
rejectedRGold.value = item.sumRaudit1 || 0;
rejectedFGold.value = item.sumRaudit2 || 0;
break;
pendingGold.value = item.sumRaudit || 0
pendingRGold.value = item.sumRaudit1 || 0
pendingFGold.value = item.sumRaudit2 || 0
break
case '已通过':
approvedCount.value = item.raudit || 0
approvedGold.value = item.sumRaudit || 0
approvedRGold.value = item.sumRaudit1 || 0
approvedFGold.value = item.sumRaudit2 || 0
break
case '已驳回':
rejectedCount.value = item.raudit || 0
rejectedGold.value = item.sumRaudit || 0
rejectedRGold.value = item.sumRaudit1 || 0
rejectedFGold.value = item.sumRaudit2 || 0
break
}
});
})
}
trueGold.value =
pendingGold.value + approvedGold.value + rejectedGold.value;
trueGold.value = pendingGold.value + approvedGold.value + rejectedGold.value
trueCount.value =
pendingCount.value + approvedCount.value + rejectedCount.value;
pendingCount.value + approvedCount.value + rejectedCount.value
trueRGold.value =
pendingRGold.value + approvedRGold.value + rejectedRGold.value;
pendingRGold.value + approvedRGold.value + rejectedRGold.value
trueFGold.value =
pendingFGold.value + approvedFGold.value + rejectedFGold.value;
pendingFGold.value + approvedFGold.value + rejectedFGold.value
//
console.log("请求成功", result);
console.log("这是分页", getObj.value);
console.log('请求成功', result)
console.log('这是分页', getObj.value)
//
tableData.value = result.data.list;
console.log("tableData", tableData.value);
tableData.value = result.data.list
console.log('tableData', tableData.value)
//
total.value = result.data.total;
console.log("total", total.value);
total.value = result.data.total
console.log('total', total.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const search = function () {
getObj.value.pageNum = 1;
get();
};
getObj.value.pageNum = 1
get()
}
//
const reset = function () {
delete rechargeVo.value.activityId;
delete rechargeVo.value.jwcode;
delete rechargeVo.value.payWay;
delete rechargeVo.value.area;
delete rechargeVo.value.startDate;
delete rechargeVo.value.endDate;
getTime.value = {};
};
delete rechargeVo.value.activityId
delete rechargeVo.value.jwcode
delete rechargeVo.value.payWay
delete rechargeVo.value.area
delete rechargeVo.value.startDate
delete rechargeVo.value.endDate
getTime.value = {}
}
//
const getToday = function () {
const today = new Date();
const today = new Date()
const startDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate()
);
)
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
//
const getYesterday = function () {
const yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
const yesterday = new Date()
yesterday.setDate(yesterday.getDate() - 1)
const startDate = new Date(
yesterday.getFullYear(),
yesterday.getMonth(),
yesterday.getDate()
);
)
const endDate = new Date(
yesterday.getFullYear(),
yesterday.getMonth(),
yesterday.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
// 7
const get7Days = function () {
const today = new Date();
const today = new Date()
const startDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() - 6
);
)
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
//
const adminAll = function () {
console.log("adminAll");
rechargeVo.value.status = "";
getObj.value.pageNum = 1;
get();
};
console.log('adminAll')
rechargeVo.value.status = ''
getObj.value.pageNum = 1
get()
}
//
const adminWait = async function () {
rechargeVo.value.status = 0;
getObj.value.pageNum = 1;
await get();
console.log("adminWait");
trueCount.value = pendingCount.value;
trueGold.value = pendingGold.value;
trueRGold.value = pendingRGold.value;
trueFGold.value = pendingFGold.value;
};
rechargeVo.value.status = 0
getObj.value.pageNum = 1
await get()
console.log('adminWait')
trueCount.value = pendingCount.value
trueGold.value = pendingGold.value
trueRGold.value = pendingRGold.value
trueFGold.value = pendingFGold.value
}
//
const adminPass = async function () {
rechargeVo.value.status = 1;
getObj.value.pageNum = 1;
await get();
console.log("adminPass");
trueCount.value = approvedCount.value;
trueGold.value = approvedGold.value;
trueRGold.value = approvedRGold.value;
trueFGold.value = approvedFGold.value;
};
rechargeVo.value.status = 1
getObj.value.pageNum = 1
await get()
console.log('adminPass')
trueCount.value = approvedCount.value
trueGold.value = approvedGold.value
trueRGold.value = approvedRGold.value
trueFGold.value = approvedFGold.value
}
//
const adminReject = async function () {
rechargeVo.value.status = 2;
getObj.value.pageNum = 1;
await get();
console.log("adminReject");
trueCount.value = rejectedCount.value;
trueGold.value = rejectedGold.value;
trueRGold.value = rejectedRGold.value;
trueFGold.value = rejectedFGold.value;
};
rechargeVo.value.status = 2
getObj.value.pageNum = 1
await get()
console.log('adminReject')
trueCount.value = rejectedCount.value
trueGold.value = rejectedGold.value
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") {
adminWait();
} else if (tab.props.name === "pass") {
adminPass();
} else if (tab.props.name === "reject") {
adminReject();
if (tab.props.name === 'all') {
adminAll()
} else if (tab.props.name === 'wait') {
adminWait()
} else if (tab.props.name === 'pass') {
adminPass()
} else if (tab.props.name === 'reject') {
adminReject()
}
};
}
//
const getActivity = async function () {
try {
// POST
const result = await API.post(
"http://54.251.137.151:10702/recharge/activity/select",
{}
);
const result = await request({
url: '/recharge/activity/select',
data: {}
})
//
console.log("请求成功", result);
console.log('请求成功', result)
//
activity.value = result.data;
console.log("activity", activity.value);
activity.value = result.data
console.log('activity', activity.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const getArea = async function () {
try {
// POST
const result = await API.post(
"http://54.251.137.151:10702/recharge/user/search",
{}
);
const result = await request({
url: '/recharge/user/search',
data: {}
})
//
console.log("请求成功", result);
console.log('请求成功', result)
//
area.value = result.data;
console.log("地区", area.value);
area.value = result.data
console.log('地区', area.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const checkNumber = function () {
if (typeof parseInt(getObj.value.pageNum) === "number") {
console.log(
"总共有多少页" + Math.ceil(total.value / getObj.value.pageSize)
);
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();
console.log('输入的数字合法')
getObj.value.pageNum = parseInt(getObj.value.pageNum)
get()
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
};
}
const handlePageSizeChange = function (val) {
getObj.value.pageSize = val
get()
}
const handleCurrentChange = function (val) {
getObj.value.pageNum = val
get()
}
// ====================================
//
const pass = function (row) {
//
passObj.value = row;
passObj.value.adminId = adminData.value.adminId;
passObj.value.auditId = row.auditId;
passObj.value.status = 1;
passObj.value.rechargeId = row.rechargeId;
passObj.value.detailId = row.detailId;
passObj.value.jwcode = row.jwcode;
passObj.value.paidGold = row.paidGold;
passObj.value.freeGold = row.freeGold;
passObj.value.adminName = adminData.value.adminName;
passObj.value = row
passObj.value.adminId = adminData.value.adminId
passObj.value.auditId = row.auditId
passObj.value.status = 1
passObj.value.rechargeId = row.rechargeId
passObj.value.detailId = row.detailId
passObj.value.jwcode = row.jwcode
passObj.value.paidGold = row.paidGold
passObj.value.freeGold = row.freeGold
passObj.value.adminName = adminData.value.adminName
console.log("通过对象", passObj.value);
};
console.log('通过对象', passObj.value)
}
//
const passConfirm = async function () {
try {
console.log("通过对象", passObj.value);
console.log('通过对象', passObj.value)
// POST
// passObj.value.flag = 0;
const result = await API.post(
"http://54.251.137.151:10702/audit/audit/goldedit",
passObj.value
);
const result = await request({
url: '/audit/audit/goldedit',
data: passObj.value
})
//
console.log("请求成功", result);
console.log('请求成功', result)
//
get();
get()
//
ElMessage({
type: "success",
message: "通过成功!",
});
type: 'success',
message: '通过成功!'
})
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const openRejectVisible = function () {
rejectVisible.value = true;
};
rejectVisible.value = true
}
//
const closeRejectVisible = function () {
rejectVisible.value = false;
};
rejectVisible.value = false
}
//
const reject = function (row) {
//
rejectObj.value.adminId = adminData.value.adminId;
rejectObj.value.auditId = row.auditId;
rejectObj.value.status = 2;
rejectObj.value.reson = "";
rejectObj.value.rechargeId = row.rechargeId;
rejectObj.value.detailId = row.detailId;
console.log("驳回对象", rejectObj.value);
openRejectVisible();
};
rejectObj.value.adminId = adminData.value.adminId
rejectObj.value.auditId = row.auditId
rejectObj.value.status = 2
rejectObj.value.reson = ''
rejectObj.value.rechargeId = row.rechargeId
rejectObj.value.detailId = row.detailId
console.log('驳回对象', rejectObj.value)
openRejectVisible()
}
//
const rejectConfirm = async function () {
Ref.value.validate(async (valid) => {
if (valid) {
try {
console.log("驳回对象", rejectObj.value);
console.log('驳回对象', rejectObj.value)
// POST
const result = await API.post(
"http://54.251.137.151:10702/audit/audit/goldedit",
rejectObj.value
);
const result = await request({
url: '/audit/audit/goldedit',
data: rejectObj.value
})
//
console.log("请求成功", result);
console.log('请求成功', result)
//
get();
get()
//
closeRejectVisible();
closeRejectVisible()
//
ElMessage({
type: "success",
message: "驳回成功!",
});
type: 'success',
message: '驳回成功!'
})
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
});
};
})
}
//
const rules = reactive({
reson: [{ required: true, message: "请输入驳回理由", trigger: "blur" }],
});
reson: [{ required: true, message: '请输入驳回理由', trigger: 'blur' }]
})
//
onMounted(async function () {
await getAdminData();
await getActivity();
await getArea();
await get();
});
await getAdminData()
await getActivity()
await get()
await getArea()
})
//
const sortField = ref("");
const sortOrder = ref("");
const sortField = ref('')
const sortOrder = ref('')
//
const handleSortChange = (column) => {
console.log("排序字段:", column.prop);
console.log("排序方式:", column.order);
if (column.prop === "rechargeGold") {
sortField.value = "recharge_gold";
} else if (column.prop === "freeGold") {
sortField.value = "free_gold";
} else if (column.prop === "rechargeTime") {
sortField.value = "recharge_time";
} else if (column.prop === "createTime") {
sortField.value = "create_time";
} else if (column.prop === "paidGold") {
sortField.value = "paid_gold";
console.log('排序字段:', column.prop)
console.log('排序方式:', column.order)
if (column.prop === 'rechargeGold') {
sortField.value = 'recharge_gold'
} else if (column.prop === 'freeGold') {
sortField.value = 'free_gold'
} else if (column.prop === 'rechargeTime') {
sortField.value = 'recharge_time'
} else if (column.prop === 'createTime') {
sortField.value = 'create_time'
} else if (column.prop === 'paidGold') {
sortField.value = 'paid_gold'
}
sortOrder.value = column.order === "ascending" ? "ASC" : "DESC";
get();
};
sortOrder.value = column.order === 'ascending' ? 'ASC' : 'DESC'
get()
}
</script>
<template>
@ -778,7 +782,7 @@ const handleSortChange = (column) => {
>
<template #default="scope">
{{
moment(scope.row.rechargeTime).format("YYYY-MM-DD HH:mm:ss")
moment(scope.row.rechargeTime).format('YYYY-MM-DD HH:mm:ss')
}}
</template>
</el-table-column>
@ -844,41 +848,12 @@ const handleSortChange = (column) => {
<el-pagination
background
:page-size="getObj.pageSize"
layout="slot"
:page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
>
<div>{{ total }},每页</div>
<el-select
v-model="getObj.pageSize"
class="page-size"
@change="get()"
style="width: 80px"
>
<el-option
v-for="item in [5, 10, 20, 50, 100]"
:key="item"
:label="item"
:value="item"
></el-option>
</el-select>
<div></div>
</el-pagination>
<el-pagination
background
layout="prev, pager, next,slot"
:page-size="getObj.pageSize"
:total="total"
:current-page="getObj.pageNum"
@current-change="get"
>
<div>跳至</div>
<el-input
v-model="getObj.pageNum"
style="width: 40px"
@change="checkNumber"
/>
<div></div>
</el-pagination>
@size-change="handlePageSizeChange"
@current-change="handleCurrentChange"
></el-pagination>
</div>
</el-card>
</el-col>

592
gold-system/src/views/audit/refundAudit.vue

@ -1,72 +1,73 @@
<script setup>
import { ref, onMounted, reactive, computed } from "vue";
import ElementPlus from "element-plus";
import { ElMessage, ElMessageBox } from "element-plus";
import { AiFillRead } from "vue-icons-plus/ai";
import axios from "axios";
import moment from "moment";
import API from "../../api/index.js";
import { ref, onMounted, reactive, computed } from 'vue'
import ElementPlus from 'element-plus'
import request from '@/util/http'
import { ElMessage, ElMessageBox } from 'element-plus'
import { AiFillRead } from 'vue-icons-plus/ai'
import axios from 'axios'
import moment from 'moment'
import API from '../../api/index.js'
//
//
const admin = ref({
adminId: 1,
name: "赵刚",
area: "中国",
});
name: '赵刚',
area: '中国'
})
//
const adminData = ref({});
const adminData = ref({})
const getAdminData = async function () {
try {
const result = await API.post(
"http://54.251.137.151:10702/admin/userinfo",
{}
);
adminData.value = result;
console.log("请求成功", result);
console.log("用户信息", adminData.value);
const result = await request({
url: '/admin/userinfo',
data: {}
})
adminData.value = result
console.log('请求成功', result)
console.log('用户信息', adminData.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
}
};
}
//
const tableData = ref([]);
const tableData = ref([])
// ======================================
// detail
const detail = ref({});
const detail = ref({})
//
const getObj = ref({
pageNum: 1,
pageSize: 50,
});
pageSize: 50
})
//
const total = ref(100);
const total = ref(100)
//
const getTime = ref([]);
const getTime = ref([])
//
const product = ref([]);
const product = ref([])
//
const allData = ref([]);
const allData = ref([])
//
const area = ref([]);
const area = ref([])
// ======================================
//
const rejectVisible = ref(false);
const rejectVisible = ref(false)
//
const rejectObj = ref({});
const rejectObj = ref({})
//
const passObj = ref({});
const passObj = ref({})
//
const activeName = ref("all");
const activeName = ref('all')
// 退
const refundType = [
{
value: "退款商品",
label: "退款商品",
},
];
value: '退款商品',
label: '退款商品'
}
]
// //
// const tableHeight = computed(function () {
@ -74,417 +75,425 @@ const refundType = [
// });
// ref
const Ref = ref(null);
const Ref = ref(null)
//
//
//
const trueGold = ref(0);
const trueCount = ref(0);
const trueGold = ref(0)
const trueCount = ref(0)
//
const pendingCount = ref(0);
const pendingCount = ref(0)
//
const pendingGold = ref(0);
const pendingGold = ref(0)
//
const approvedCount = ref(0);
const approvedCount = ref(0)
//
const approvedGold = ref(0);
const approvedGold = ref(0)
//
const rejectedCount = ref(0);
const rejectedCount = ref(0)
//
const rejectedGold = ref(0);
const rejectedGold = 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 (adminData.value.area === '泰国') {
rechargeVo.value.areas = ['泰国', '越南']
} else if (adminData.value.area !== '总部') {
rechargeVo.value.area = adminData.value.area
}
//
if (typeof val === "number") {
getObj.value.pageNum = val;
if (typeof val === 'number') {
getObj.value.pageNum = val
}
//
if (getTime.value != null) {
if (getTime.value.startDate != "" && getTime.value.endDate != "") {
detail.value.startDate = getTime.value[0];
detail.value.endDate = getTime.value[1];
if (getTime.value.startDate != '' && getTime.value.endDate != '') {
detail.value.startDate = getTime.value[0]
detail.value.endDate = getTime.value[1]
}
} else {
detail.value.startDate = "";
detail.value.endDate = "";
detail.value.startDate = ''
detail.value.endDate = ''
}
detail.value.sortField = sortField.value;
detail.value.sortOrder = sortOrder.value;
console.log("搜索参数", getObj.value);
detail.value.sortField = sortField.value
detail.value.sortOrder = sortOrder.value
console.log('搜索参数', getObj.value)
// POST
const result = await API.post(
"http://54.251.137.151:10702/audit/audit/refund",
{
...getObj.value,
detail: { ...detail.value },
}
);
const detailWithoutSort = { ...detail.value };
delete detailWithoutSort.sortField;
delete detailWithoutSort.sortOrder;
const result2 = await API.post(
"http://54.251.137.151:10702/refund/RefundA",
{
...detailWithoutSort,
const result = await request({
url: '/audit/audit/refund',
data: {
pageNum: getObj.value.pageNum,
pageSize: getObj.value.pageSize,
detail: {
...detail.value
}
}
);
})
const detailWithoutSort = { ...detail.value }
delete detailWithoutSort.sortField
delete detailWithoutSort.sortOrder
const result2 = await request({
url: '/refund/RefundA',
data: detailWithoutSort
})
//
if (result2.data) {
result2.data.forEach((item) => {
switch (item.status) {
case "待审核":
case '待审核':
// item.raudit 0
pendingCount.value = item.raudit || 0;
pendingCount.value = item.raudit || 0
// item.sumRaudit 0
pendingGold.value = item.sumRaudit || 0;
break;
case "已通过":
approvedCount.value = item.raudit || 0;
approvedGold.value = item.sumRaudit || 0;
break;
case "已驳回":
rejectedCount.value = item.raudit || 0;
rejectedGold.value = item.sumRaudit || 0;
break;
pendingGold.value = item.sumRaudit || 0
break
case '已通过':
approvedCount.value = item.raudit || 0
approvedGold.value = item.sumRaudit || 0
break
case '已驳回':
rejectedCount.value = item.raudit || 0
rejectedGold.value = item.sumRaudit || 0
break
}
});
})
}
trueGold.value =
pendingGold.value + approvedGold.value + rejectedGold.value;
trueGold.value = pendingGold.value + approvedGold.value + rejectedGold.value
trueCount.value =
pendingCount.value + approvedCount.value + rejectedCount.value;
pendingCount.value + approvedCount.value + rejectedCount.value
//
console.log("请求成功", result);
console.log('请求成功', result)
//
tableData.value = result.data.list;
console.log("tableData", tableData.value);
tableData.value = result.data.list
console.log('tableData', tableData.value)
//
total.value = result.data.total;
console.log("total", total.value);
total.value = result.data.total
console.log('total', total.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const search = function () {
getObj.value.pageNum = 1;
get();
};
getObj.value.pageNum = 1
get()
}
//
const reset = function () {
detail.value.area = "";
detail.value.jwcode = "";
detail.value.refundType = "";
detail.value.refundGoods = "";
detail.value.startDate = "";
detail.value.endDate = "";
sortField.value = "";
sortOrder.value = "";
getTime.value = {};
};
detail.value.area = ''
detail.value.jwcode = ''
detail.value.refundType = ''
detail.value.refundGoods = ''
detail.value.startDate = ''
detail.value.endDate = ''
sortField.value = ''
sortOrder.value = ''
getTime.value = {}
}
//
const getToday = function () {
const today = new Date();
const today = new Date()
const startDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate()
);
)
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
//
const getYesterday = function () {
const yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
const yesterday = new Date()
yesterday.setDate(yesterday.getDate() - 1)
const startDate = new Date(
yesterday.getFullYear(),
yesterday.getMonth(),
yesterday.getDate()
);
)
const endDate = new Date(
yesterday.getFullYear(),
yesterday.getMonth(),
yesterday.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
// 7
const get7Days = function () {
const today = new Date();
const today = new Date()
const startDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() - 6
);
)
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
//
const adminAll = function () {
console.log("adminAll");
detail.value.status = "";
getObj.value.pageNum = 1;
get();
};
console.log('adminAll')
detail.value.status = ''
getObj.value.pageNum = 1
get()
}
//
const adminWait = async function () {
detail.value.status = 0;
getObj.value.pageNum = 1;
await get();
console.log("adminWait");
trueGold.value = pendingGold.value;
trueCount.value = pendingCount.value;
};
detail.value.status = 0
getObj.value.pageNum = 1
await get()
console.log('adminWait')
trueGold.value = pendingGold.value
trueCount.value = pendingCount.value
}
//
const adminPass = async function () {
detail.value.status = 1;
getObj.value.pageNum = 1;
await get();
console.log("adminPass");
trueGold.value = approvedGold.value;
trueCount.value = approvedCount.value;
};
detail.value.status = 1
getObj.value.pageNum = 1
await get()
console.log('adminPass')
trueGold.value = approvedGold.value
trueCount.value = approvedCount.value
}
//
const adminReject = async function () {
detail.value.status = 2;
getObj.value.pageNum = 1;
await get();
console.log("adminReject");
trueGold.value = rejectedGold.value;
trueCount.value = rejectedCount.value;
};
detail.value.status = 2
getObj.value.pageNum = 1
await get()
console.log('adminReject')
trueGold.value = rejectedGold.value
trueCount.value = rejectedCount.value
}
//
const handleClick = function (tab, event) {
if (tab.props.name === "all") {
adminAll();
} else if (tab.props.name === "wait") {
adminWait();
} else if (tab.props.name === "pass") {
adminPass();
} else if (tab.props.name === "reject") {
adminReject();
if (tab.props.name === 'all') {
adminAll()
} else if (tab.props.name === 'wait') {
adminWait()
} else if (tab.props.name === 'pass') {
adminPass()
} else if (tab.props.name === 'reject') {
adminReject()
}
};
}
//
const getProduct = async function () {
try {
// POST
const result = await API.post("http://54.251.137.151:10702/product", {});
const result = await request({
url: '/product',
data: {}
})
//
console.log("请求成功", result);
console.log('请求成功', result)
//
product.value = result.data;
console.log("产品", product.value);
product.value = result.data
console.log('产品', product.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const getArea = async function () {
try {
// POST
const result = await API.post(
"http://54.251.137.151:10702/recharge/user/search",
{}
);
const result = await request({
url: '/recharge/user/search',
data: {}
})
//
console.log("请求成功", result);
console.log('请求成功', result)
//
area.value = result.data;
console.log("地区", area.value);
area.value = result.data
console.log('地区', area.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const checkNumber = function () {
if (typeof parseInt(getObj.value.pageNum) === "number") {
console.log(
"总共有多少页" + Math.ceil(total.value / getObj.value.pageSize)
);
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)
) {
getObj.value.pageNum = parseInt(getObj.value.pageNum);
console.log("输入的数字合法");
get();
getObj.value.pageNum = parseInt(getObj.value.pageNum)
console.log('输入的数字合法')
get()
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
};
}
// ====================================
//
const pass = function (row) {
//
passObj.value.adminId = adminData.value.adminId;
passObj.value.auditId = row.auditId;
passObj.value.status = 1;
passObj.value.refundId = row.refundId;
passObj.value.adminName = row.adminName;
passObj.value.username = row.username;
passObj.value.area = row.area;
console.log("通过对象", passObj.value);
};
passObj.value.adminId = adminData.value.adminId
passObj.value.auditId = row.auditId
passObj.value.status = 1
passObj.value.refundId = row.refundId
passObj.value.adminName = row.adminName
passObj.value.username = row.username
passObj.value.area = row.area
console.log('通过对象', passObj.value)
}
//
const passConfirm = async function () {
try {
console.log("通过对象", passObj.value);
console.log('通过对象', passObj.value)
// POST
const result = await API.post(
"http://54.251.137.151:10702/audit/audit/edit",
passObj.value
);
const result = await request({
url: '/audit/audit/edit',
data: passObj.value
})
//
console.log("请求成功", result);
console.log('请求成功', result)
//
get();
get()
//
ElMessage({
type: "success",
message: "通过成功!",
});
type: 'success',
message: '通过成功!'
})
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const openRejectVisible = function () {
rejectVisible.value = true;
};
rejectVisible.value = true
}
//
const closeRejectVisible = function () {
rejectVisible.value = false;
};
rejectVisible.value = false
}
//
const reject = function (row) {
//
rejectObj.value.adminId = adminData.value.adminId;
rejectObj.value.auditId = row.auditId;
rejectObj.value.status = 2;
rejectObj.value.reson = "";
rejectObj.value.refundId = row.refundId;
console.log("驳回对象", rejectObj.value);
openRejectVisible();
};
rejectObj.value.adminId = adminData.value.adminId
rejectObj.value.auditId = row.auditId
rejectObj.value.status = 2
rejectObj.value.reson = ''
rejectObj.value.refundId = row.refundId
console.log('驳回对象', rejectObj.value)
openRejectVisible()
}
//
const rejectConfirm = async function () {
Ref.value.validate(async (valid) => {
if (valid) {
try {
console.log("驳回对象", rejectObj.value);
console.log('驳回对象', rejectObj.value)
// POST
const result = await API.post(
"http://54.251.137.151:10702/audit/audit/edit",
rejectObj.value
);
const result = await request({
url: '/audit/audit/edit',
data: rejectObj.value
})
//
console.log("请求成功", result);
console.log('请求成功', result)
//
get();
get()
//
closeRejectVisible();
closeRejectVisible()
//
ElMessage({
type: "success",
message: "驳回成功!",
});
type: 'success',
message: '驳回成功!'
})
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
});
};
})
}
const handlePageSizeChange = function (val) {
getObj.value.pageSize = val
get()
}
const handleCurrentChange = function (val) {
getObj.value.pageNum = val
get()
}
//
const rules = reactive({
reson: [{ required: true, message: "请输入驳回理由", trigger: "blur" }],
});
reson: [{ required: true, message: '请输入驳回理由', trigger: 'blur' }]
})
//
onMounted(async function () {
await getAdminData();
await get();
getProduct();
await getArea();
await getArea();
});
await getAdminData()
await get()
getProduct()
await getArea()
await getArea()
})
//
const sortField = ref("");
const sortOrder = ref("");
const sortField = ref('')
const sortOrder = ref('')
//
const handleSortChange = (column) => {
console.log("排序字段:", column.prop);
console.log("排序方式:", column.order);
if (column.prop === "rechargeCoin") {
sortField.value = "recharge_coin";
} else if (column.prop === "taskCoin") {
sortField.value = "task_coin";
} else if (column.prop === "freeCoin") {
sortField.value = "free_coin";
} else if (column.prop === "createTime") {
sortField.value = "create_time";
console.log('排序字段:', column.prop)
console.log('排序方式:', column.order)
if (column.prop === 'rechargeCoin') {
sortField.value = 'recharge_coin'
} else if (column.prop === 'taskCoin') {
sortField.value = 'task_coin'
} else if (column.prop === 'freeCoin') {
sortField.value = 'free_coin'
} else if (column.prop === 'createTime') {
sortField.value = 'create_time'
}
sortOrder.value = column.order === "ascending" ? "ASC" : "DESC";
get();
};
sortOrder.value = column.order === 'ascending' ? 'ASC' : 'DESC'
get()
}
</script>
<template>
@ -730,7 +739,7 @@ const handleSortChange = (column) => {
width="200px"
>
<template #default="scope">
{{ moment(scope.row.createTime).format("YYYY-MM-DD HH:mm:ss") }}
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
</el-table-column>
<el-table-column
@ -789,41 +798,12 @@ const handleSortChange = (column) => {
<el-pagination
background
:page-size="getObj.pageSize"
layout="slot"
:page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
>
<div>{{ total }},每页</div>
<el-select
v-model="getObj.pageSize"
class="page-size"
@change="get()"
style="width: 80px"
>
<el-option
v-for="item in [5, 10, 20, 50, 100]"
:key="item"
:label="item"
:value="item"
></el-option>
</el-select>
<div></div>
</el-pagination>
<el-pagination
background
layout="prev, pager, next,slot"
:page-size="getObj.pageSize"
:total="total"
:current-page="getObj.pageNum"
@current-change="get"
>
<div>跳至</div>
<el-input
v-model="getObj.pageNum"
style="width: 40px"
@change="checkNumber"
/>
<div></div>
</el-pagination>
@size-change="handlePageSizeChange"
@current-change="handleCurrentChange"
></el-pagination>
</div>
</el-card>
</el-col>

47
gold-system/src/views/consume/addConsume.vue

@ -8,15 +8,16 @@ import { ElMessageBox } from "element-plus";
import API from "../../api/index.js";
import moment from "moment";
import _ from "lodash";
import request from "@/util/http";
//
const adminData = ref({});
const getAdminData = async function () {
try {
const result = await API.post(
"http://54.251.137.151:10702/admin/userinfo",
{}
);
const result = await request({
url: "/admin/userinfo",
data: {},
});
adminData.value = result;
addConsume.value.adminId = adminData.value.adminId;
addConsume.value.name = adminData.value.name;
@ -43,10 +44,10 @@ const add = async function () {
addConsume.value.taskCoin = Number(addConsume.value.taskCoin * 100);
addConsume.value.productName = indexs.value.productName;
// POST
const result = await API.post(
"http://54.251.137.151:10702/consume/add",
addConsume.value
);
const result = await request({
url: "/consume/add",
data: addConsume.value,
});
if (result.code === 0) {
ElMessage.error(result.msg);
return;
@ -144,9 +145,12 @@ const user = ref({
const getUser = async function (jwcode) {
try {
// POST
const result = await API.post("http://54.251.137.151:10702/recharge/user", {
jwcode: jwcode,
area: adminData.value.area,
const result = await request({
url: "/recharge/user",
data: {
jwcode: jwcode,
area: adminData.value.area,
},
});
console.log("请求成功", result);
@ -172,9 +176,12 @@ const userGold = ref({});
const getUserGold = async function (jwcode) {
try {
// POST
const result = await API.post("http://54.251.137.151:10702/recharge/user", {
jwcode: jwcode,
area: adminData.value.area,
const result = await request({
url: "/recharge/user",
data: {
jwcode: jwcode,
area: adminData.value.area,
},
});
//
console.log("请求成功", result);
@ -252,7 +259,10 @@ const goods = ref([]);
const getGoods = async function () {
try {
// POST
const result = await API.post("http://54.251.137.151:10702/product", {});
const result = await request({
url: "/product",
data: {},
});
//
console.log("请求成功", result);
@ -268,8 +278,11 @@ const index = ref([]);
const getIndexs = async function (type) {
try {
// POST
const result = await API.post("http://54.251.137.151:10702/product/index", {
type: type,
const result = await request({
url: "/product/index",
data: {
type: type,
},
});
//
console.log("请求成功", result);

389
gold-system/src/views/consume/allConsume.vue

@ -1,70 +1,71 @@
<script setup>
import { ref, onMounted, reactive, computed } from "vue";
import ElementPlus from "element-plus";
import { AiFillRead } from "vue-icons-plus/ai";
import { ElMessage, ElMessageBox } from "element-plus";
import axios from "axios";
import API from "../../api/index.js";
import { ref, onMounted, reactive, computed } from 'vue'
import ElementPlus from 'element-plus'
import { AiFillRead } from 'vue-icons-plus/ai'
import { ElMessage, ElMessageBox } from 'element-plus'
import axios from 'axios'
import API from '../../api/index.js'
import request from '@/util/http'
//
//
const adminData = ref({});
const adminData = ref({})
const getAdminData = async function () {
try {
const result = await API.post(
"http://54.251.137.151:10702/admin/userinfo",
{}
);
adminData.value = result;
console.log("请求成功", result);
console.log("用户信息", adminData.value);
const result = await request({
url: '/admin/userinfo',
data: {}
})
adminData.value = result
console.log('请求成功', result)
console.log('用户信息', adminData.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
}
};
}
//
const tableData = ref([]);
const tableData = ref([])
// ======================================
// detailVo
const detailVo = ref({});
const detailVo = ref({})
//
const getObj = ref({
pageNum: 1,
pageSize: 50,
});
pageSize: 50
})
//
const total = ref(100);
const total = ref(100)
//
const getTime = ref([]);
const getTime = ref([])
//
const activity = ref([]);
const activity = ref([])
//
const allData = ref([]);
const allData = ref([])
//
const area = ref([]);
const area = ref([])
//
const activeName = ref("all");
const activeName = ref('all')
//
const consumePlatform = [
{
value: "4",
label: "金币系统",
value: '4',
label: '金币系统'
},
{
value: "1",
label: "ERP系统",
value: '1',
label: 'Homily Chart'
},
{
value: "2",
label: "Homily Chart",
value: '2',
label: 'Homily Link'
},
{
value: "3",
label: "Homily Link",
},
];
value: '3',
label: 'ERP系统'
}
]
// //
// const tableHeight = computed(function () {
@ -72,251 +73,260 @@ const consumePlatform = [
// });
//
//
const tableDataTotal = ref({});
const rechargeCoin = ref(0);
const freeCoin = ref(0);
const taskCoin = ref(0);
const totalCoin = ref(0);
const tableDataTotal = ref({})
const rechargeCoin = ref(0)
const freeCoin = ref(0)
const taskCoin = ref(0)
const totalCoin = ref(0)
// =========================================================================================================================================================
//
const get = async function (val) {
try {
//
if (adminData.value.area != "总部") {
detailVo.value.area = adminData.value.area;
if (adminData.value.area != '总部') {
detailVo.value.area = adminData.value.area
}
//
if (typeof val === "number") {
getObj.value.pageNum = val;
if (typeof val === 'number') {
getObj.value.pageNum = val
}
//
if (getTime.value != null) {
if (getTime.value.startDate != "" && getTime.value.endDate != "") {
detailVo.value.startDate = getTime.value[0];
detailVo.value.endDate = getTime.value[1];
if (getTime.value.startDate != '' && getTime.value.endDate != '') {
detailVo.value.startDate = getTime.value[0]
detailVo.value.endDate = getTime.value[1]
}
} else {
detailVo.value.startDate = "";
detailVo.value.endDate = "";
detailVo.value.startDate = ''
detailVo.value.endDate = ''
}
detailVo.value.sortField = sortField.value;
detailVo.value.sortOrder = sortOrder.value;
console.log("搜索参数", getObj.value);
detailVo.value.sortField = sortField.value
detailVo.value.sortOrder = sortOrder.value
console.log('搜索参数', getObj.value)
// POST
const result = await API.post(
"http://54.251.137.151:10702/consume/select",
{
const result = await request({
url: '/consume/select',
data: {
...getObj.value,
consumeDetail: { ...detailVo.value },
consumeDetail: { ...detailVo.value }
}
);
})
//
// detail.value
const detailWithoutSort = { ...detailVo.value };
delete detailWithoutSort.sortField;
delete detailWithoutSort.sortOrder;
const result2 = await API.post(
"http://54.251.137.151:10702/consume/SumConsume",
{
...detailWithoutSort,
const detailWithoutSort = { ...detailVo.value }
delete detailWithoutSort.sortField
delete detailWithoutSort.sortOrder
const result2 = await request({
url: '/consume/SumConsume',
data: {
...detailWithoutSort
}
);
})
//
console.log("请求成功", result);
console.log("请求成功2", result2);
console.log('请求成功', result)
console.log('请求成功2', result2)
//
tableData.value = result.data.list;
tableDataTotal.value = result2.data;
tableData.value = result.data.list
tableDataTotal.value = result2.data
if (result2.data == null) {
console.log("请求成功2", result2);
console.log('请求成功2', result2)
tableDataTotal.value = {
sumRcion: 0,
sumFcion: 0,
sumTcion: 0,
sumcion: 0,
};
sumcion: 0
}
}
console.log("tableDataT", tableDataTotal);
console.log('tableDataT', tableDataTotal)
//
rechargeCoin.value = parseFloat(
(tableDataTotal.value.sumRcion / 100).toFixed(2)
);
)
freeCoin.value = parseFloat(
(tableDataTotal.value.sumFcion / 100).toFixed(2)
);
)
taskCoin.value = parseFloat(
(tableDataTotal.value.sumTcion / 100).toFixed(2)
);
)
totalCoin.value = parseFloat(
(tableDataTotal.value.sumcion / 100).toFixed(2)
);
console.log("tableData", tableData.value);
)
console.log('tableData', tableData.value)
//
total.value = result.data.total;
console.log("total", total.value);
total.value = result.data.total
console.log('total', total.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const search = function () {
getObj.value.pageNum = 1;
get();
};
getObj.value.pageNum = 1
get()
}
//
const reset = function () {
detailVo.value.productName = "";
detailVo.value.consumePlatform = "";
detailVo.value.consumeType = "";
detailVo.value.startDate = "";
detailVo.value.endDate = "";
sortField.value = "";
sortOrder.value = "";
getTime.value = {};
};
detailVo.value.productName = ''
detailVo.value.consumePlatform = ''
detailVo.value.consumeType = ''
detailVo.value.startDate = ''
detailVo.value.endDate = ''
sortField.value = ''
sortOrder.value = ''
getTime.value = {}
}
//
const getToday = function () {
const today = new Date();
const today = new Date()
const startDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate()
);
)
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
//
const getYesterday = function () {
const yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
const yesterday = new Date()
yesterday.setDate(yesterday.getDate() - 1)
const startDate = new Date(
yesterday.getFullYear(),
yesterday.getMonth(),
yesterday.getDate()
);
)
const endDate = new Date(
yesterday.getFullYear(),
yesterday.getMonth(),
yesterday.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
// 7
const get7Days = function () {
const today = new Date();
const today = new Date()
const startDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() - 6
);
)
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
//
const handleClick = function (tab, event) {
if (tab.props.name === "all") {
adminAll();
} else if (tab.props.name === "wait") {
adminWait();
} else if (tab.props.name === "pass") {
adminPass();
} else if (tab.props.name === "reject") {
adminReject();
if (tab.props.name === 'all') {
adminAll()
} else if (tab.props.name === 'wait') {
adminWait()
} else if (tab.props.name === 'pass') {
adminPass()
} else if (tab.props.name === 'reject') {
adminReject()
}
};
}
//
onMounted(async function () {
await getAdminData();
await get();
await getAdminData()
await get()
// getActivity();
// await getArea();
});
})
//
const checkNumber = function () {
if (typeof parseInt(getObj.value.pageNum) === "number") {
console.log(
"总共有多少页" + Math.ceil(total.value / getObj.value.pageSize)
);
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)
) {
getObj.value.pageNum = parseInt(getObj.value.pageNum);
console.log("输入的数字合法");
get();
getObj.value.pageNum = parseInt(getObj.value.pageNum)
console.log('输入的数字合法')
get()
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
};
}
//
const goods = ref([]);
const goods = ref([])
const getGoods = async function () {
try {
// POST
const result = await API.post("http://54.251.137.151:10702/product", {});
const result = await request({
url: '/product',
data: {}
})
//
console.log("请求成功", result);
console.log('请求成功', result)
//
goods.value = result.data;
console.log("allData", allData.value);
console.log("地区", area.value);
goods.value = result.data
console.log('allData', allData.value)
console.log('地区', area.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
getGoods();
}
getGoods()
//
const sortField = ref("");
const sortOrder = ref("");
const sortField = ref('')
const sortOrder = ref('')
//
const handleSortChange = (column) => {
console.log("排序字段:", column.prop);
console.log("排序方式:", column.order);
if (column.prop === "rechargeCoin") {
sortField.value = "recharge_coin";
} else if (column.prop === "taskCoin") {
sortField.value = "task_coin";
} else if (column.prop === "freeCoin") {
sortField.value = "free_coin";
} else if (column.prop === "createTime") {
sortField.value = "create_time";
console.log('排序字段:', column.prop)
console.log('排序方式:', column.order)
if (column.prop === 'rechargeCoin') {
sortField.value = 'recharge_coin'
} else if (column.prop === 'taskCoin') {
sortField.value = 'task_coin'
} else if (column.prop === 'freeCoin') {
sortField.value = 'free_coin'
} else if (column.prop === 'createTime') {
sortField.value = 'create_time'
}
sortOrder.value = column.order === "ascending" ? "ASC" : "DESC";
get();
};
sortOrder.value = column.order === 'ascending' ? 'ASC' : 'DESC'
get()
}
const handlePageSizeChange = function (val) {
getObj.value.pageSize = val
get()
}
const handleCurrentChange = function (val) {
getObj.value.pageNum = val
get()
}
</script>
<template>
@ -463,9 +473,9 @@ const handleSortChange = (column) => {
>
<template #default="scope">
<!-- 使用非严格相等比较 -->
<span v-if="scope.row.consumePlatform == 1">ERP系统</span>
<span v-if="scope.row.consumePlatform == 3">Homily Link</span>
<span v-if="scope.row.consumePlatform == 2">Homily Chart</span>
<span v-if="scope.row.consumePlatform == 1">Homily Chart</span>
<span v-if="scope.row.consumePlatform == 2">Homily Link</span>
<span v-if="scope.row.consumePlatform == 3">ERP系统</span>
<span v-if="scope.row.consumePlatform == 4">金币系统</span>
</template>
</el-table-column>
@ -541,41 +551,12 @@ const handleSortChange = (column) => {
<el-pagination
background
:page-size="getObj.pageSize"
layout="slot"
:total="total"
>
<div>{{ total }},每页</div>
<el-select
v-model="getObj.pageSize"
class="page-size"
@change="get()"
style="width: 80px"
>
<el-option
v-for="item in [5, 10, 20, 50, 100]"
:key="item"
:label="item"
:value="item"
></el-option>
</el-select>
<div></div>
</el-pagination>
<el-pagination
background
layout="prev, pager, next, slot"
:page-size="getObj.pageSize"
:page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
:current-page="getObj.pageNum"
@current-change="get"
>
<div>跳至</div>
<el-input
v-model="getObj.pageNum"
style="width: 40px"
@change="checkNumber"
/>
<div></div>
</el-pagination>
@size-change="handlePageSizeChange"
@current-change="handleCurrentChange"
></el-pagination>
</div>
</el-card>
</el-col>

210
gold-system/src/views/goldBeen/addGoldenBeen.vue

@ -0,0 +1,210 @@
<template>
<div class="add-goldenbeen">
<div class="head-top">新增充值</div>
<div class="add-box">
<el-form
:model="beenObj"
ref="ruleFormRef"
:rules="rules"
label-width="auto"
style="max-width: 600px"
class="add-form"
>
<el-form-item prop="jwcode" label="精网号">
<el-input v-model="beenObj.jwcode" style="width: 220px" />
<el-button
type="primary"
@click="getUser(beenObj.jwcode)"
style="margin-left: 20px"
>查询</el-button
>
</el-form-item>
<el-form-item prop="type" label="充值类型">
<el-radio-group v-model="beenObj.type">
<el-radio :value="0">增加</el-radio>
<el-radio :value="1">减少</el-radio>
</el-radio-group>
</el-form-item>
<div style="display: flex">
<el-form-item prop="payBeean" label="付费金豆">
<el-input-number
v-model="beenObj.payBeean"
:controls="false"
:min="0"
/>
</el-form-item>
<el-form-item prop="freeBeean" label="免费金豆">
<el-input-number
v-model="beenObj.freeBeean"
:controls="false"
:min="0"
/>
</el-form-item>
</div>
<el-form-item prop="remark" label="备注">
<el-input
v-model="beenObj.remark"
style="width: 300px"
:rows="2"
maxlength="100"
show-word-limit
type="textarea"
/>
</el-form-item>
<!-- <el-form-item prop="submitter" label="提交人">
<el-input
style="width: 300px"
:value="beenObj.submitter"
disabled
placeholder="提交人姓名"
/>
</el-form-item> -->
<el-form-item>
<div class="btn-group">
<el-button @click="resetData(ruleFormRef)">重置</el-button>
<el-button type="primary" @click="addBean(ruleFormRef)">
提交
</el-button>
</div>
</el-form-item>
</el-form>
<!-- 客户信息栏 -->
<el-card>
<el-text size="large" style="margin-left: 20px">客户信息</el-text>
<div class="custom-box">
<el-text>姓名:{{ user.nickname }}</el-text>
<el-text>当前付费金豆:{{ user.jinbiBuy }}</el-text>
<el-text>精网号:{{ user.jwcode }}</el-text>
<el-text>当前免费金豆:{{ user.jinbiFree }}</el-text>
<!-- <el-text>负责客服:</el-text> -->
<el-text>消费次数:{{ user.number }}</el-text>
<el-text>所属门店:{{ user.masterShop }}</el-text>
</div>
</el-card>
</div>
</div>
</template>
<script setup lang="ts">
import { reactive, ref } from 'vue'
import API from '@/util/http'
import type { FormInstance } from 'element-plus'
import { ElMessage } from 'element-plus'
type userType = {
[key: string]: number | string
}
const ruleFormRef = ref<FormInstance>()
const beenObj = ref({
jwcode: '',
remark: '',
type: 0, //01
payBeean: 0,
freeBeean: 0
})
let user: userType = reactive({})
const rules = ref({
jwcode: [{ required: true, message: '请输入精网号', trigger: 'blur' }],
remark: [{ required: true, message: '请输入备注', trigger: 'blur' }],
// submitter: [{ required: true, message: '', trigger: 'blur' }],
type: [{ required: true, message: '请选择充值类型', trigger: 'change' }],
payBeean: [{ required: true, message: '请输入付费金豆', trigger: 'blur' }],
freeBeean: [{ required: true, message: '请输入免费金豆', trigger: 'blur' }]
})
const addBean = (formEl) => {
//
try {
formEl.validate(async (valid) => {
if (valid) {
//
const result = await API({
url: '/dou/add',
data: {
jwcode: beenObj.value.jwcode,
content: beenObj.value.remark,
moneyFree: Number(beenObj.value.freeBeean),
moneyBuy: Number(beenObj.value.payBeean),
time: Math.floor(Date.now() / 1000),
data: beenObj.value.type
}
})
if (result.code === 200) {
ElMessage.success('充值成功')
beenObj.value.jwcode = ''
beenObj.value.remark = ''
beenObj.value.payBeean = 0
beenObj.value.freeBeean = 0
} else if (result.code === 0) {
ElMessage.error(result.msg)
return
}
console.log('请求成功', result)
} else {
ElMessage.error('表单验证失败')
}
})
} catch (error) {
ElMessage.error('提交失败')
}
}
const resetData = (formEl) => {
if (!formEl) return
formEl.resetFields()
}
const getUser = async function (jwcode) {
try {
// POST
const result = await API({
url: '/dou/search',
data: {
jwcode: jwcode
}
})
if (result.code === 0) {
ElMessage.error(result.msg)
} else {
if (!result.data.jwcode) {
ElMessage.error('精网号不存在')
return
}
Object.assign(user, result.data)
}
} catch (error) {
console.log('请求失败', error)
ElMessage.error('查询失败,请检查精网号是否正确')
}
}
</script>
<style scoped>
.add-box {
display: flex;
justify-content: center;
align-items: center;
column-gap: 50px;
}
.btn-group {
display: flex;
justify-content: flex-end;
width: 100%;
}
.custom-box {
padding: 20px;
display: flex;
flex-wrap: wrap;
align-items: center;
row-gap: 20px;
box-sizing: border-box;
.el-text {
width: 200px;
}
}
.el-card {
width: 500px;
}
.head-top {
padding: 20px;
box-sizing: border-box;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
margin-bottom: 20px;
border-radius: 5px;
}
</style>

234
gold-system/src/views/goldBeen/goldenBeenBalance.vue

@ -0,0 +1,234 @@
<template>
<div class="filter-box">
<el-form :model="detailY" ref="ruleFormRef">
<el-form-item prop="jwcode" label="精网号">
<el-input
v-model="detailY.jwcode"
placeholder="请输入精网号"
style="width: 220px"
/>
</el-form-item>
<el-form-item prop="area" label="地区">
<el-select
v-model="detailY.area"
placeholder="请选择所属地区"
style="width: 240px"
clearable
>
<el-option
v-for="item in areaArray"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" size="small" @click="search()"
>查询</el-button
>
<el-button type="primary" size="small" @click="reset(ruleFormRef)"
>重置</el-button
>
</el-form-item>
</el-form>
</div>
<div class="table-box">
<p>
现有金豆:&nbsp;&nbsp;付费金豆:{{ getObj.jinbiBuy }}&nbsp;&nbsp;免费金豆:{{
getObj.jinbiFree
}}&nbsp;&nbsp;历史消费:{{ getObj.jinbiCostTotal }}
</p>
<el-table
:data="tableData"
style="width: 100%"
:default-sort="{ prop: 'jinbiCostTotal', order: 'descending' }"
height="584px"
@sort-change="handleSortChange"
>
<el-table-column type="index" label="序号" width="100px" fixed="left">
<template #default="scope">
<span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span>
</template>
</el-table-column>
<el-table-column fixed="left" prop="nickname" label="姓名" width="150" />
<el-table-column fixed="left" prop="jwcode" label="精网号" width="120" />
<el-table-column prop="ipAddress" label="所属地区" width="120" />
<el-table-column prop="jinbi" sortable label="金豆数量" width="120">
</el-table-column>
<el-table-column prop="jinbiBuy" sortable label="付费金豆" width="120">
</el-table-column>
<el-table-column prop="jinbiFree" sortable label="免费金豆" width="120">
</el-table-column>
<el-table-column
sortable
width="120"
prop="jinbiCostTotal"
label="历史消费"
></el-table-column>
<el-table-column
sortable
prop="jinbiCostbeenTotal"
width="160"
label="历史付费金豆"
></el-table-column>
<el-table-column
sortable
prop="jinbifreebeenTotal"
width="160"
label="历史免费金豆"
></el-table-column>
</el-table>
<!-- 分页 -->
<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>
</div>
</div>
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue'
import type { FormInstance } from 'element-plus'
import API from '@/util/http'
//
const tableData = ref([])
//
const total = ref(100)
//
const detailY = reactive({ jwcode: '', area: '' })
const ruleFormRef = ref<FormInstance>()
let areaArray = ref<string[]>([])
let getObj = ref({
pageNum: 1,
pageSize: 50,
jinbiBuy: 0,
jinbiCostTotal: 0,
jinbiFree: 0
})
const search = function () {
getInit({})
getCount()
}
const handleCurrentChange = function (val) {
getObj.value.pageNum = val
getInit({})
}
//
const getInit = async function ({
sortField = '',
sortOrder = ''
}: {
sortField?: string
sortOrder?: string
}) {
try {
// POST
const result = await API({
url: '/dou/getYve',
data: {
pageNum: getObj.value.pageNum,
pageSize: getObj.value.pageSize,
yve: {
jwcode: detailY.jwcode,
ipAddress: detailY.area,
sortField: sortField,
sortOrder: sortOrder
}
}
})
tableData.value = result.data.list
total.value = result.data.total
} catch (error) {
console.log('请求失败', error)
//
}
}
const handleSortChange = (column) => {
const { prop, order } = column
if (order === 'ascending') {
getInit({ sortField: prop, sortOrder: 'ASC' })
} else if (order === 'descending') {
getInit({ sortField: prop, sortOrder: 'DESC' })
}
}
const handlePageSizeChange = (val) => {
getObj.value.pageSize = val
getObj.value.pageNum = 1
getInit({})
}
//
const reset = function (formEl: FormInstance | undefined) {
if (!formEl) return
formEl.resetFields()
}
const getArea = async () => {
const result = await API({
url: '/dou/getIp'
})
console.log('获取地区', result.data)
if (result.code == 200) {
areaArray.value = result.data
}
}
const getCount = async () => {
const result = await API({
url: '/dou/getYveTotal'
})
if (result.code == 200) {
const { jinbiBuy, jinbiFree, jinbiCostTotal } = result.data
getObj.value.jinbiBuy = jinbiBuy
getObj.value.jinbiFree = jinbiFree
getObj.value.jinbiCostTotal = jinbiCostTotal
}
}
getArea()
getCount()
getInit({})
</script>
<style scoped lang="scss">
.filter-box {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
padding: 20px;
padding-bottom: 0px;
box-sizing: border-box;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
margin-bottom: 20px;
border-radius: 5px;
.el-form {
display: flex;
flex-wrap: wrap;
row-gap: 20px;
column-gap: 20px;
}
}
.table-box {
width: 100%;
padding: 20px;
box-sizing: border-box;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
border-radius: 5px;
}
.pagination {
display: flex;
align-items: center;
margin-top: 20px;
}
</style>

307
gold-system/src/views/goldBeen/goldenBeenConsum.vue

@ -0,0 +1,307 @@
<template>
<div class="filter-box">
<el-form :model="detailY" ref="ruleFormRef">
<el-form-item prop="jwcode" label="精网号">
<el-input
v-model="detailY.jwcode"
placeholder="请输入精网号"
style="width: 220px"
/>
</el-form-item>
<el-form-item prop="ipAddress" label="地区">
<el-select
v-model="detailY.ipAddress"
placeholder="请选择所属地区"
style="width: 240px"
clearable
>
<el-option
v-for="item in areaList"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item prop="sourceType" label="消费类型">
<el-select
v-model="detailY.sourceType"
placeholder="请选择消费类型"
style="width: 240px"
clearable
>
<el-option
v-for="item in consumList"
:key="item.value"
:label="item.text"
:value="item.value"
/>
</el-select>
</el-form-item>
<!-- <el-form-item prop="channel" label="频道">
<el-select
v-model="detailY.channel"
placeholder="请选择频道"
style="width: 240px"
clearable
filterable
>
<el-option
v-for="item in channelList"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-form-item> -->
<el-form-item prop="sourceName" label="直播间">
<el-input
v-model="detailY.sourceName"
placeholder="请输入直播间"
style="width: 220px"
/>
</el-form-item>
<el-form-item prop="createTime" label="消费时间">
<el-date-picker
v-model="detailY.createTime"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="YYYY-MM-DD HH:mm:ss"
format="YYYY-MM-DD HH:mm:ss"
style="width: 240px"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="search">查询</el-button>
<el-button type="success" @click="reset(ruleFormRef)">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="table-box">
<p>合计数:实际用户金豆数:{{ beenCount }}</p>
<el-table :data="tableData" style="width: 100%" height="584px">
<el-table-column type="index" label="序号" width="100px" fixed="left">
<template #default="scope">
<span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span>
</template>
</el-table-column>
<el-table-column fixed="left" prop="nickname" label="姓名" width="150" />
<el-table-column fixed="left" prop="jwcode" label="精网号" width="120" />
<el-table-column prop="ipAddress" label="地区" width="120" />
<el-table-column prop="sourceType" label="消费类型" width="120">
<template #default="scope">
<span>{{
consumList.find((item) => item.value === scope.row.sourceType)?.text
}}</span>
</template>
</el-table-column>
<el-table-column prop="jinbiCostTotal" label="金豆价格" width="120">
</el-table-column>
<!-- <el-table-column prop="chanel" label="频道" width="120">
</el-table-column> -->
<el-table-column prop="room" label="直播间" width="120">
</el-table-column>
<el-table-column
prop="createTime"
label="消费时间"
width="210"
show-overflow-tooltip
>
<template #default="scope">
<span>{{
moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss')
}}</span>
</template>
</el-table-column>
<!-- <el-table-column fixed="right" label="操作" min-width="120">
<template #default>
<el-tooltip class="box-item" effect="light" placement="top-start">
<template #default>
<el-button link type="primary" size="small"> 返还金豆 </el-button>
</template>
<template #content>
<div>是否申请返还该条消费</div>
<el-button size="small">确定 </el-button>
<el-button size="small">取消 </el-button>
</template>
</el-tooltip>
</template>
</el-table-column> -->
</el-table>
<!-- 分页 -->
<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>
</div>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import type { FormInstance } from 'element-plus'
import { ElMessage } from 'element-plus'
import moment from 'moment'
import API from '@/util/http'
//
const tableData = ref([])
//
const total = ref(100)
const areaList = ref<string[]>([])
const beenCount = ref(0)
const consumList = ref<any>([
{ value: 1, text: '发礼物' },
{ value: 2, text: '发红包' },
{ value: 3, text: '发福袋' },
{ value: 4, text: '付费直播' },
{ value: 5, text: '加⼊粉丝团' },
{ value: 6, text: '发弹幕' },
{ value: 7, text: '铁粉单次付费' },
{ value: 8, text: '铁粉连续包⽉' },
{ value: 9, text: '打赏⽂章' },
{ value: 10, text: '打赏视频' },
{ value: 11, text: '付费购买' }
])
const channelList = ref<string[]>([])
const liveroomList = ref<string[]>([])
const ruleFormRef = ref<FormInstance>()
//
const detailY = ref({
jwcode: '',
ipAddress: '',
createTime: '',
// channel: '', //
sourceName: '', //
sourceType: '' //
})
const getObj = ref({
pageNum: 1,
pageSize: 50
})
//
const getInit = async function () {
try {
console.log('搜索参数', getObj.value)
const [startTime, endTime] = detailY.value.createTime
// POST
const result = await API({
url: '/dou/getSpend',
method: 'post',
data: {
...getObj.value,
spend: {
jwcode: detailY.value.jwcode, //
ipAddress: detailY.value.ipAddress, //
sourceName: detailY.value.sourceName, //
sourceType: detailY.value.sourceType, //
startTime, //
endTime //
}
}
})
tableData.value = result.data.list
console.log('tableData', tableData.value)
total.value = result.data.total
console.log('total', total.value)
} catch (error) {
console.log('请求失败', error)
//
}
}
//
const search = function () {
getObj.value.pageNum = 1
getInit()
getCount()
}
//
const reset = function (formEl) {
formEl.resetFields()
}
const handlePageSizeChange = (val) => {
getObj.value.pageSize = val
getObj.value.pageNum = 1
getInit()
}
const handleCurrentChange = function (val) {
getObj.value.pageNum = val
getInit()
}
//
const getCount = async () => {
const result = await API({
url: '/dou/getSpendTotal',
data: {
jwcode: detailY.value.jwcode,
ipAddress: detailY.value.ipAddress,
sourceName: detailY.value.sourceName,
sourceType: detailY.value.sourceType,
startTime: detailY.value.createTime[0],
endTime: detailY.value.createTime[1]
}
})
if (result.code == 200) {
//const { jinbiBuy, jinbiFree, jinbiCostTotal } = result.data
console.log('合计数', result.data)
beenCount.value = result.data || 0
}
}
//
const getArea = async () => {
try {
const result = await API({
url: '/dou/getIp'
})
areaList.value = result.data
} catch (error) {
console.log('请求失败', error)
}
}
//
getInit()
getCount()
getArea()
</script>
<style scoped lang="scss">
.filter-box {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
padding: 20px;
padding-bottom: 0px;
box-sizing: border-box;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
margin-bottom: 20px;
border-radius: 5px;
.el-form {
display: flex;
flex-wrap: wrap;
row-gap: 20px;
column-gap: 20px;
}
}
.table-box {
width: 100%;
padding: 20px;
box-sizing: border-box;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
border-radius: 5px;
}
.pagination {
display: flex;
align-items: center;
margin-top: 10px;
}
</style>

486
gold-system/src/views/goldBeen/goldenBeenDetail.vue

@ -0,0 +1,486 @@
<template>
<div class="filter-box">
<el-form :model="detailY" ref="ruleFormRef">
<el-form-item prop="jwcode" label="精网号">
<el-input
v-model="detailY.jwcode"
placeholder="请输入精网号"
style="width: 220px"
/>
</el-form-item>
<el-form-item prop="deptName" label="地区">
<el-select
v-model="detailY.deptName"
placeholder="请选择所属地区"
style="width: 240px"
clearable
>
<el-option
v-for="item in areaList"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item prop="orderNo" label="订单号">
<el-input
v-model="detailY.orderNo"
placeholder="请输入订单号"
style="width: 220px"
/>
</el-form-item>
<el-form-item prop="type" label="充值类型">
<el-input
v-model="detailY.type"
placeholder="请输入充值类型"
style="width: 220px"
/>
</el-form-item>
<!-- <el-form-item prop="payStyle" label="充值平台">
<el-select
v-model="detailY.payStyle"
placeholder="请选择充值平台"
style="width: 240px"
clearable
>
<el-option
v-for="item in platformList"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-form-item> -->
<el-form-item prop="createTime" label="充值时间">
<el-date-picker
v-model="detailY.createTime"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="width: 240px"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
:unlinkPanels="true"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="search">查询</el-button>
<el-button type="success" @click="reset(ruleFormRef)">重置</el-button>
<el-button type="primary" @click="exportExcel">导出excel</el-button>
</el-form-item>
</el-form>
</div>
<div class="table-box">
<el-card
>金豆总数充值金豆总数{{ countValue }}合计金额数:{{
priceValue
}}</el-card
>
<el-table :data="tableData" style="width: 100%" height="584px">
<el-table-column type="index" label="序号" width="100px" fixed="left">
<template #default="scope">
<span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span>
</template>
</el-table-column>
<el-table-column fixed="left" prop="nickname" label="姓名" width="150" />
<el-table-column fixed="left" prop="jwcode" label="精网号" width="120" />
<el-table-column prop="ipAddress" label="地区" width="120" />
<el-table-column prop="orderNo" label="订单号" width="120" />
<el-table-column prop="money" label="金豆数量" width="120">
</el-table-column>
<el-table-column prop="moneyBuy" label="付费金豆" width="120">
</el-table-column>
<el-table-column prop="moneyFree" label="免费金豆" width="120">
</el-table-column>
<el-table-column prop="price" label="金额"></el-table-column>
<el-table-column prop="type" label="类型"></el-table-column>
<!-- <el-table-column prop="payStyle" label="充值平台" width="140">
</el-table-column>
<el-table-column prop="notes" label="备注" width="210"></el-table-column> -->
<el-table-column
prop="time"
label="充值时间"
width="210"
show-overflow-tooltip
>
<template #default="scope">
<span>{{
!!scope.row.time
? moment.unix(scope.row.time).format('YYYY-MM-DD HH:mm:ss')
: '-'
}}</span>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<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>
</div>
</div>
<!-- 这是导出excel的弹窗 -->
<el-dialog
v-model="dialogVisible"
title="请选择导出条件"
width="500"
:close-on-click-modal="false"
@close="
() => {
dialogVisible = false
isExport = false
}
"
>
<template #footer>
<el-form
ref="ruleFormRef"
style="max-width: 600px"
:model="excelData"
:rules="rules"
label-width="auto"
class="demo-ruleForm"
status-icon
>
<el-form-item prop="activityName" label="精网号:">
<el-input
v-model="excelData.jwcode"
placeholder="请输入精网号"
style="width: 220px"
/>
</el-form-item>
<el-form-item label="所属地区:"
><el-select
v-model="excelData.area"
placeholder="请选择所属地区"
style="width: 240px"
clearable
>
<el-option
v-for="item in areaList"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="更新时间:">
<el-radio-group v-model="excelData.timegap">
<el-radio value="1">今天</el-radio>
<el-radio value="3">近三天</el-radio>
<el-radio value="7">近一周</el-radio>
<el-radio value="30">近一个月</el-radio>
</el-radio-group>
</el-form-item>
<el-button
type="primary"
size="small"
style="margin-left: 10px"
@click="exportConfirm()"
>确定</el-button
>
</el-form>
</template>
</el-dialog>
</template>
<script setup lang="ts">
import { reactive, ref } from 'vue'
import { FormInstance } from 'element-plus'
import { ElMessage } from 'element-plus'
import moment from 'moment'
import API from '@/util/http'
import { utils, write } from 'xlsx'
import { saveAs } from 'file-saver'
//
const tableData = ref([])
//
const total = ref(100)
const dialogVisible = ref(false)
const excelData = reactive({
jwcode: '',
area: '',
timegap: '',
startTime: '',
endTime: ''
})
const priceValue = ref(0)
const countValue = ref(0)
const areaList = ref<string[]>([])
const isExport = ref<boolean>(false)
const rules = ref({
jwcode: [{ required: true, message: '请输入精网号', trigger: 'blur' }],
area: [{ required: true, message: '请选择所属地区', trigger: 'change' }]
})
const handlePageSizeChange = (val) => {
getObj.value.pageSize = val
getObj.value.pageNum = 1
getInit({})
}
const handleCurrentChange = function (val) {
getObj.value.pageNum = val
getInit({})
}
const platformList = ref<string[]>([
// 'stripe',
// 'ios',
// 'FirstData',
// 'paymentasia',
// 'system',
// ''
])
const typeList = ref<string[]>([
'金币换金豆',
'金币换免费金豆',
'赠送金豆',
'购买金豆',
'客服操作'
])
//
const detailY = ref({
jwcode: '',
deptName: '',
orderNo: '',
payStyle: '',
type: '',
createTime: ''
})
const getObj = ref({
pageNum: 1,
pageSize: 50
})
const exportExcel = function () {
dialogVisible.value = true
isExport.value = true
}
const exportConfirm = function () {
if (excelData.timegap == '1') {
excelData.startTime = moment().startOf('day').format('YYYY-MM-DD HH:mm:ss')
excelData.endTime = moment().endOf('day').format('YYYY-MM-DD HH:mm:ss')
} else if (excelData.timegap == '3') {
excelData.startTime = moment()
.subtract(3, 'days')
.startOf('day')
.format('YYYY-MM-DD HH:mm:ss')
excelData.endTime = moment().endOf('day').format('YYYY-MM-DD HH:mm:ss')
} else if (excelData.timegap == '7') {
excelData.startTime = moment()
.subtract(7, 'days')
.startOf('day')
.format('YYYY-MM-DD')
excelData.endTime = moment().endOf('day').format('YYYY-MM-DD HH:mm:ss')
} else if (excelData.timegap == '30') {
excelData.startTime = moment()
.subtract(30, 'days')
.startOf('day')
.format('YYYY-MM-DD HH:mm:ss')
excelData.endTime = moment().endOf('day').format('YYYY-MM-DD HH:mm:ss')
}
getInit(
{
sortField: '',
sortOrder: ''
},
(data) => {
console.log('导出数据', data)
//
data = data.map((item) => {
return {
姓名: item.name,
精网号: item.jwcode,
地区: item.deptName,
订单号: item.orderNo,
充值平台: item.payStyle,
金豆数量: item.count,
充值时间: moment(item.successTime).format('YYYY-MM-DD'),
金额: item.price
}
})
if (data.length == 0) {
ElMessage.error('没有数据')
isExport.value = false
dialogVisible.value = false
return
}
console.log('导出数据', data)
excelExport(data)
}
)
}
//excel
const excelExport = async function (data) {
const worksheet = utils.json_to_sheet(data)
const workbook = utils.book_new()
utils.book_append_sheet(workbook, worksheet, 'Sheet1')
const wbout = write(workbook, { bookType: 'xlsx', type: 'array' })
saveAs(
new Blob([wbout], { type: 'application/octet-stream' }),
'数据导出.xlsx'
)
isExport.value = false
dialogVisible.value = false
}
const ruleFormRef = ref<FormInstance>()
//
const getInit = async function (
{
sortField = '',
sortOrder = ''
}: {
sortField?: string
sortOrder?: string
},
callback?: Function
) {
try {
console.log('搜索参数', getObj.value)
const [startTime, endTime] = detailY.value.createTime
console.log(startTime, endTime)
// POST
const result = await API({
url: '/dou/getPay',
data: {
pay: {
jwcode: isExport.value ? excelData.jwcode : detailY.value.jwcode,
deptName: isExport.value ? excelData.area : detailY.value.deptName,
startTime: isExport.value ? excelData.startTime : startTime || '',
endTime: isExport.value ? excelData.endTime : endTime || '',
payStyle: isExport.value ? '' : detailY.value.payStyle,
type: isExport.value ? '' : detailY.value.type,
orderNo: isExport.value ? '' : detailY.value.orderNo,
sortField,
sortOrder
},
pageNum: isExport.value ? '' : getObj.value.pageNum,
pageSize: isExport.value ? '' : getObj.value.pageSize
}
})
if (isExport.value) {
!!callback && callback(result.data)
} else {
tableData.value = result.data.list
total.value = result.data.total
}
} catch (error) {
console.log('请求失败', error)
//
}
}
// const handleSortChange = (column) => {
// const { prop, order } = column
// if (order === 'ascending') {
// getInit({ sortField: prop, sortOrder: 'ASC' })
// } else if (order === 'descending') {
// getInit({ sortField: prop, sortOrder: 'DESC' })
// }
// }
//
const search = function () {
getObj.value.pageNum = 1
getInit({})
getCount()
}
//
const reset = function (formEl) {
formEl.resetFields()
}
//
const getArea = async () => {
try {
const result = await API({
url: '/dou/getPayIp'
})
areaList.value = result.data
} catch (error) {
console.log('请求失败', error)
}
}
//
const getPayType = async () => {
try {
const result = await API({
url: '/dou/getStyle'
})
platformList.value = result.data
// typeList.value = result.data
} catch (error) {
console.log('请求失败', error)
}
}
//
const getCount = async () => {
try {
const result = await API({
url: '/dou/getTotal',
data: {
jwcode: detailY.value.jwcode,
//deptName: detailY.value.deptName,
startTime: detailY.value.createTime[0],
endTime: detailY.value.createTime[1],
orderNo: detailY.value.orderNo,
type: detailY.value.type
// payStyle: detailY.value.payStyle
}
})
if (!!result.data) {
const { price, count } = result.data
console.log('金豆总数', price, count)
priceValue.value = price
countValue.value = count
} else {
priceValue.value = 0
countValue.value = 0
}
} catch (error) {
console.log('请求失败', error)
}
}
getInit({})
getArea()
getPayType()
getCount()
</script>
<style scoped lang="scss">
.filter-box {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
padding: 20px;
padding-bottom: 0px;
box-sizing: border-box;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
margin-bottom: 20px;
border-radius: 5px;
.el-form {
display: flex;
flex-wrap: wrap;
row-gap: 20px;
column-gap: 20px;
}
}
.table-box {
width: 100%;
padding: 20px;
box-sizing: border-box;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
border-radius: 5px;
}
.pagination {
display: flex;
align-items: center;
margin-top: 10px;
}
</style>

494
gold-system/src/views/goldBeen/onLineDetail.vue

@ -0,0 +1,494 @@
<template>
<div class="filter-box">
<el-form :model="detailY" ref="ruleFormRef">
<el-form-item prop="jwcode" label="精网号">
<el-input
v-model="detailY.jwcode"
placeholder="请输入精网号"
style="width: 220px"
/>
</el-form-item>
<el-form-item prop="deptName" label="地区">
<el-select
v-model="detailY.deptName"
placeholder="请选择所属地区"
style="width: 240px"
clearable
>
<el-option
v-for="item in areaList"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item prop="orderNo" label="订单号">
<el-input
v-model="detailY.orderNo"
placeholder="请输入订单号"
style="width: 220px"
/>
</el-form-item>
<!-- <el-form-item prop="type" label="充值类型">
<el-input
v-model="detailY.type"
placeholder="请输入充值类型"
style="width: 220px"
/>
</el-form-item> -->
<el-form-item prop="payStyle" label="充值平台">
<el-select
v-model="detailY.payStyle"
placeholder="请选择充值平台"
style="width: 240px"
clearable
>
<el-option
v-for="item in platformList"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item prop="createTime" label="充值时间">
<el-date-picker
v-model="detailY.createTime"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="width: 240px"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
:unlinkPanels="true"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="search">查询</el-button>
<el-button type="success" @click="reset(ruleFormRef)">重置</el-button>
<el-button type="primary" @click="exportExcel">导出excel</el-button>
</el-form-item>
</el-form>
</div>
<div class="table-box">
<p>金豆总数充值金豆总数{{ countValue }}合计金额数:{{ priceValue }}</p>
<el-table :data="tableData" style="width: 100%" height="584px">
<el-table-column type="index" label="序号" width="100px" fixed="left">
<template #default="scope">
<span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span>
</template>
</el-table-column>
<el-table-column fixed="left" prop="name" label="姓名" width="150" />
<el-table-column fixed="left" prop="jwcode" label="精网号" width="120" />
<el-table-column prop="deptName" label="地区" width="120" />
<el-table-column prop="orderNo" label="订单号" width="120" />
<el-table-column prop="count" label="金豆数量" width="120">
</el-table-column>
<!-- <el-table-column prop="moneyBuy" label="付费金豆" width="120">
</el-table-column>
<el-table-column prop="moneyFree" label="免费金豆" width="120">
</el-table-column> -->
<el-table-column prop="price" label="金额"></el-table-column>
<!-- <el-table-column prop="type" label="类型"></el-table-column> -->
<el-table-column prop="payStyle" label="充值平台" width="140">
</el-table-column>
<!-- <el-table-column prop="notes" label="备注" width="210"></el-table-column> -->
<el-table-column
prop="successTime"
label="充值时间"
width="210"
show-overflow-tooltip
>
<template #default="scope">
<span>{{
!!scope.row.successTime
? moment.unix(scope.row.time).format('YYYY-MM-DD HH:mm:ss')
: '-'
}}</span>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<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>
</div>
</div>
<!-- 这是导出excel的弹窗 -->
<el-dialog
v-model="dialogVisible"
title="请选择导出条件"
width="500"
:close-on-click-modal="false"
@close="
() => {
dialogVisible = false
isExport = false
}
"
>
<template #footer>
<el-form
ref="ruleFormRef"
style="max-width: 600px"
:model="excelData"
:rules="rules"
label-width="auto"
class="demo-ruleForm"
status-icon
>
<el-form-item prop="activityName" label="精网号:">
<el-input
v-model="excelData.jwcode"
placeholder="请输入精网号"
style="width: 220px"
/>
</el-form-item>
<el-form-item label="所属地区:"
><el-select
v-model="excelData.area"
placeholder="请选择所属地区"
style="width: 240px"
clearable
>
<el-option
v-for="item in areaList"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="更新时间:">
<el-radio-group v-model="excelData.timegap">
<el-radio value="1">今天</el-radio>
<el-radio value="3">近三天</el-radio>
<el-radio value="7">近一周</el-radio>
<el-radio value="30">近一个月</el-radio>
</el-radio-group>
</el-form-item>
<el-button
type="primary"
size="small"
style="margin-left: 10px"
@click="exportConfirm()"
>确定</el-button
>
</el-form>
</template>
</el-dialog>
</template>
<script setup lang="ts">
import { reactive, ref } from 'vue'
import { FormInstance } from 'element-plus'
import { ElMessage } from 'element-plus'
import moment from 'moment'
import API from '@/util/http'
import { utils, write } from 'xlsx'
import { saveAs } from 'file-saver'
//
const tableData = ref([])
//
const total = ref(100)
const dialogVisible = ref(false)
const excelData = reactive({
jwcode: '',
area: '',
timegap: '',
startTime: '',
endTime: ''
})
const priceValue = ref(0)
const countValue = ref(0)
const areaList = ref<string[]>([])
const isExport = ref<boolean>(false)
const rules = ref({
jwcode: [{ required: true, message: '请输入精网号', trigger: 'blur' }],
area: [{ required: true, message: '请选择所属地区', trigger: 'change' }]
})
const handlePageSizeChange = (val) => {
getObj.value.pageSize = val
getObj.value.pageNum = 1
getInit({})
}
const handleCurrentChange = function (val) {
getObj.value.pageNum = val
getInit({})
}
const platformList = ref<string[]>([
// 'stripe',
// 'ios',
// 'FirstData',
// 'paymentasia',
// 'system',
// ''
])
const typeList = ref<string[]>([
'金币换金豆',
'金币换免费金豆',
'赠送金豆',
'购买金豆',
'客服操作'
])
//
const detailY = ref({
jwcode: '',
deptName: '',
orderNo: '',
payStyle: '',
type: '',
createTime: ''
})
const getObj = ref({
pageNum: 1,
pageSize: 50
})
const exportExcel = function () {
dialogVisible.value = true
isExport.value = true
}
const exportConfirm = function () {
if (excelData.timegap == '1') {
excelData.startTime = moment().startOf('day').format('YYYY-MM-DD HH:mm:ss')
excelData.endTime = moment().endOf('day').format('YYYY-MM-DD HH:mm:ss')
} else if (excelData.timegap == '3') {
excelData.startTime = moment()
.subtract(3, 'days')
.startOf('day')
.format('YYYY-MM-DD HH:mm:ss')
excelData.endTime = moment().endOf('day').format('YYYY-MM-DD HH:mm:ss')
} else if (excelData.timegap == '7') {
excelData.startTime = moment()
.subtract(7, 'days')
.startOf('day')
.format('YYYY-MM-DD')
excelData.endTime = moment().endOf('day').format('YYYY-MM-DD HH:mm:ss')
} else if (excelData.timegap == '30') {
excelData.startTime = moment()
.subtract(30, 'days')
.startOf('day')
.format('YYYY-MM-DD HH:mm:ss')
excelData.endTime = moment().endOf('day').format('YYYY-MM-DD HH:mm:ss')
}
getInit(
{
sortField: '',
sortOrder: ''
},
(data) => {
console.log('导出数据', data)
//
data = data.map((item) => {
return {
姓名: item.name,
精网号: item.jwcode,
地区: item.deptName,
订单号: item.orderNo,
充值平台: item.payStyle,
金豆数量: item.count,
充值时间: moment(item.successTime).format('YYYY-MM-DD'),
金额: item.price
}
})
if (data.length == 0) {
ElMessage.error('没有数据')
isExport.value = false
dialogVisible.value = false
return
}
console.log('导出数据', data)
excelExport(data)
}
)
}
//excel
const excelExport = async function (data) {
const worksheet = utils.json_to_sheet(data)
const workbook = utils.book_new()
utils.book_append_sheet(workbook, worksheet, 'Sheet1')
const wbout = write(workbook, { bookType: 'xlsx', type: 'array' })
saveAs(
new Blob([wbout], { type: 'application/octet-stream' }),
'数据导出.xlsx'
)
isExport.value = false
dialogVisible.value = false
}
const ruleFormRef = ref<FormInstance>()
//
const getInit = async function (
{
sortField = '',
sortOrder = ''
}: {
sortField?: string
sortOrder?: string
},
callback?: Function
) {
try {
console.log('搜索参数', getObj.value)
const [startTime, endTime] = detailY.value.createTime
console.log(startTime, endTime)
// POST
const result = await API({
url: '/dou/SearchPay',
data: {
pay: {
jwcode: isExport.value ? excelData.jwcode : detailY.value.jwcode,
deptName: isExport.value ? excelData.area : detailY.value.deptName,
startTime: isExport.value ? excelData.startTime : startTime || '',
endTime: isExport.value ? excelData.endTime : endTime || '',
payStyle: isExport.value ? '' : detailY.value.payStyle,
// type: isExport.value ? '' : detailY.value.type,
orderNo: isExport.value ? '' : detailY.value.orderNo,
sortField,
sortOrder
},
pageNum: isExport.value ? '' : getObj.value.pageNum,
pageSize: isExport.value ? '' : getObj.value.pageSize
}
})
if (isExport.value) {
!!callback && callback(result.data)
} else {
tableData.value = result.data.list
total.value = result.data.total
}
} catch (error) {
console.log('请求失败', error)
//
}
}
// const handleSortChange = (column) => {
// const { prop, order } = column
// if (order === 'ascending') {
// getInit({ sortField: prop, sortOrder: 'ASC' })
// } else if (order === 'descending') {
// getInit({ sortField: prop, sortOrder: 'DESC' })
// }
// }
//
const search = function () {
getObj.value.pageNum = 1
getInit({})
getCount()
}
//
const reset = function (formEl) {
formEl.resetFields()
}
//
const getPayPlatform = async () => {
try {
const result = await API({
url: '/dou/SearchStyle'
})
platformList.value = result.data
} catch (error) {
console.log('请求失败', error)
}
}
//
const getArea = async () => {
try {
const result = await API({
url: '/dou/SearchPayIp'
})
areaList.value = result.data
} catch (error) {
console.log('请求失败', error)
}
}
//
const getPayType = async () => {
try {
const result = await API({
url: '/dou/getStyle'
})
platformList.value = result.data
// typeList.value = result.data
} catch (error) {
console.log('请求失败', error)
}
}
//
const getCount = async () => {
try {
const result = await API({
url: '/dou/getRechargeTotal',
data: {
jwcode: detailY.value.jwcode,
deptName: detailY.value.deptName,
startTime: detailY.value.createTime[0],
endTime: detailY.value.createTime[1],
orderNo: detailY.value.orderNo,
payStyle: detailY.value.payStyle
}
})
if (!!result.data) {
console.log('合计数', result.data)
const { priceTotal, countTotal } = result.data
console.log('金豆总数', priceTotal, countTotal)
priceValue.value = priceTotal
countValue.value = countTotal
} else {
priceValue.value = 0
countValue.value = 0
}
} catch (error) {
console.log('请求失败', error)
}
}
getInit({})
getArea()
getPayType()
getCount()
getPayPlatform()
</script>
<style scoped lang="scss">
.filter-box {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
padding: 20px;
padding-bottom: 0px;
box-sizing: border-box;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
margin-bottom: 20px;
border-radius: 5px;
.el-form {
display: flex;
flex-wrap: wrap;
row-gap: 20px;
column-gap: 20px;
}
}
.table-box {
width: 100%;
padding: 20px;
box-sizing: border-box;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
border-radius: 5px;
}
.pagination {
display: flex;
align-items: center;
margin-top: 10px;
}
</style>

178
gold-system/src/views/index.vue

@ -1,70 +1,81 @@
<script setup>
import { ref, onMounted, reactive, computed } from "vue";
import { useRouter } from "vue-router";
import ElementPlus from "element-plus";
import { VscGlobe } from "vue-icons-plus/vsc";
import { ElMessage } from "element-plus";
import axios from "axios";
import { ElMessageBox } from "element-plus";
import API from "../api/index.js";
import dmmn from "../assets/动漫美女.png";
const router = useRouter();
const imgrule1 = dmmn;
const messageVisible = ref(false);
import { ref, onMounted, reactive, computed, watch } from 'vue'
import { useRouter } from 'vue-router'
import ElementPlus from 'element-plus'
import { VscGlobe } from 'vue-icons-plus/vsc'
import { ElMessage } from 'element-plus'
import axios from 'axios'
import { ElMessageBox } from 'element-plus'
import API from '@/util/http'
import dmmn from '../assets/动漫美女.png'
import { useRoute } from 'vue-router'
import { storeToRefs } from 'pinia'
import { useAreaStore } from '@/store/area'
const router = useRouter()
const imgrule1 = dmmn
const messageVisible = ref(false)
const areaStore = useAreaStore()
const { currentArea, updateArea } = storeToRefs(areaStore)
//
const adminData = ref({
name: "",
});
name: ''
})
const getAdminData = async function () {
try {
const result = await API.post(
"http://54.251.137.151:10702/admin/userinfo",
{}
);
adminData.value = result;
console.log("请求成功", result);
console.log("用户信息", adminData.value);
const result = await API({ url: '/admin/userinfo', data: {} })
adminData.value = result
console.log('请求成功', result)
console.log('用户信息', adminData.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
}
};
}
//
const areas = ref([])
const getAreas = async function () {
try {
const result = await API({ url: '/recharge/user/search', data: {} })
areas.value = result.data
console.log('请求成功', result)
} catch (error) {
console.log('请求失败', error)
}
}
//
const openMessage = function () {
messageVisible.value = true;
};
messageVisible.value = true
}
const closeMessage = function () {
messageVisible.value = false;
};
messageVisible.value = false
}
const message = function () {
openMessage();
};
openMessage()
}
// machineId
function logout() {
const machineId = localStorage.getItem("machineId");
console.log("machineId:", machineId);
localStorage.removeItem("token");
const machineId = localStorage.getItem('machineId')
console.log('machineId:', machineId)
localStorage.removeItem('token')
// localStorage.clear();
router.push("/login?machineId=" + machineId);
router.push('/login?machineId=' + machineId)
//
// window.location.reload();
ElMessage.success("退出成功");
ElMessage.success('退出成功')
}
//
onMounted(async function () {
//
getAdminData();
});
//
const handleSelect = (index) => {
console.log("Selected index:", index);
router.push(index);
};
getAdminData()
//
getAreas()
})
//
const changeDataByArea = (item) => {
areaStore.updateArea(item)
}
</script>
<template>
@ -90,13 +101,11 @@ const handleSelect = (index) => {
<div style="font-size: 16px; font-weight: bold">海外金币管理系统</div>
</div>
<el-menu
router="true"
:router="true"
background-color="#08193d"
active-text-color="#ffd04b"
text-color="white"
class="el-menu-vertical-demo"
@open="handleOpen"
@close="handleClose"
>
<el-menu-item
index="/workspace"
@ -161,15 +170,19 @@ const handleSelect = (index) => {
<el-icon>
<Folder />
</el-icon>
<span>金币充值</span>
<span>充值</span>
</template>
<el-menu-item index="/addRecharge">新增充值</el-menu-item>
<!-- <el-menu-item index="/adminRecharge">客服充值明细</el-menu-item>
<el-menu-item index="/allRecharge">所有充值明细</el-menu-item> -->
<el-sub-menu index="5">
<template #title>金币充值</template>
<el-menu-item index="/addRecharge">新增充值</el-menu-item>
<el-menu-item index="/adminRecharge">客服充值明细</el-menu-item>
<el-menu-item index="/allRecharge">所有充值明细</el-menu-item>
</el-sub-menu>
</el-sub-menu>
<el-sub-menu
index="5"
index="6"
v-if="
adminData.permission == 1 ||
adminData.permission == 2 ||
@ -180,14 +193,17 @@ const handleSelect = (index) => {
<el-icon>
<Folder />
</el-icon>
<span>金币消费</span>
<span>消费</span>
</template>
<el-menu-item index="/addConsume">新增消费</el-menu-item>
<el-menu-item index="/allConsume">所有消费明细</el-menu-item>
<el-sub-menu index="7">
<template #title>金币消费</template>
<el-menu-item index="/addConsume">新增消费</el-menu-item>
<el-menu-item index="/allConsume">所有消费明细</el-menu-item>
</el-sub-menu>
</el-sub-menu>
<el-sub-menu
index="6"
index="8"
v-if="
adminData.permission == 1 ||
adminData.permission == 2 ||
@ -198,12 +214,24 @@ const handleSelect = (index) => {
<el-icon>
<Folder />
</el-icon>
<span>金币退款</span>
<span>退款</span>
</template>
<el-menu-item index="/addRefund">新增退款</el-menu-item>
<el-menu-item index="/allRefund">退款明细</el-menu-item>
<el-sub-menu index="9">
<template #title>金币退款</template>
<el-menu-item index="/addRefund">新增退款</el-menu-item>
<el-menu-item index="/allRefund">退款明细</el-menu-item>
</el-sub-menu>
</el-sub-menu>
<el-sub-menu index="10">
<template #title
><el-icon> <Folder /> </el-icon></template
>
<el-menu-item index="/addGoldenBeen">金豆充值</el-menu-item>
<el-menu-item index="/goldenBeenDetail">金豆充值明细</el-menu-item>
<el-menu-item index="/onLineDetail">线上充值明细</el-menu-item>
<el-menu-item index="/goldenBeenConsum">金豆消费明细</el-menu-item>
<el-menu-item index="/goldenBeenBalance">客户金豆余额</el-menu-item>
</el-sub-menu>
<el-menu-item
index="/usergold"
v-if="
@ -251,15 +279,25 @@ const handleSelect = (index) => {
left: 15%;
right: 0;
z-index: 101;
position: fixed;
background: white;
"
>
<el-menu
:default-active="activeIndex"
class="el-menu-demo"
mode="horizontal"
:ellipsis="false"
>
<el-menu class="el-menu-demo" mode="horizontal" :ellipsis="false">
<el-sub-menu index="1" class="area">
<template #title>
<VscGlobe />
<!-- {{ currentArea }} -->
</template>
<!-- <el-menu-item
v-for="(item, index) in areas"
:key="index"
@click="changeDataByArea(item)"
>
{{ item }}
</el-menu-item> -->
</el-sub-menu>
</el-menu>
<el-menu class="el-menu-demo" mode="horizontal" :ellipsis="false">
<el-sub-menu index="1" class="admin">
<template #title>
<el-image
@ -272,9 +310,6 @@ const handleSelect = (index) => {
<el-menu-item @click="message()">查看个人信息</el-menu-item>
<el-menu-item index="1-2" @click="logout">退出登录</el-menu-item>
</el-sub-menu>
<el-menu-item index="2">
<VscGlobe />
</el-menu-item>
</el-menu>
</el-header>
<!-- 修改 el-main 样式 -->
@ -334,4 +369,7 @@ const handleSelect = (index) => {
border: none; /* 去除边框 */
padding: 0; /* 去除内边距 */
}
.el-menu-demo {
float: right; /* 将菜单向右浮动 */
}
</style>

87
gold-system/src/views/login.vue

@ -1,71 +1,71 @@
<script setup>
import { ref, onMounted, reactive, computed } from "vue";
import { ElMessage } from "element-plus";
import axios from "axios";
import { useRouter } from "vue-router";
import { VscGlobe } from "vue-icons-plus/vsc";
import { ref, onMounted, reactive, computed } from 'vue'
import { ElMessage } from 'element-plus'
import axios from 'axios'
import request from '@/util/http'
import { useRouter } from 'vue-router'
import { VscGlobe } from 'vue-icons-plus/vsc'
//
var url = window.location.href; //
var url = window.location.href //
//machineId=
var machineId = null;
var machineId = null
// machineId
function getMachineId() {
var parts = url.split("machineId=");
var parts = url.split('machineId=')
if (parts.length > 1) {
machineId = parts[1].split("&")[0]; // &
machineId = parts[1].split('&')[0] // &
}
// machineId = decodeURIComponent(machineId); //machineId
console.log("MachineId字符串:", machineId); // machineId
console.log('MachineId字符串:', machineId) // machineId
// machineId
if (machineId) {
localStorage.setItem("machineId", machineId);
localStorage.setItem('machineId', machineId)
}
}
getMachineId();
getMachineId()
const router = useRouter(); //
let formData = new FormData();
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 form = ref({ jwcode: '', password: '', token: '', machineId: machineId })
//
const login = async function () {
try {
const result = await axios.post(
"http://54.251.137.151:10702/admin/login",
form.value
);
if (result.data.code == 200) {
localStorage.setItem("token", result.data.msg);
localStorage.setItem("permission", result.data.data.permission);
const result = await request({
url: '/admin/login',
data: form.value
})
console.log('resultresult', result)
if (result.code == 200) {
localStorage.setItem('token', result.msg)
localStorage.setItem('permission', result.data.permission)
if (
result.data.data.permission == "5" ||
result.data.data.permission == "1" ||
result.data.data.permission == "2" ||
result.data.data.permission == "3"
result.data.permission == '5' ||
result.data.permission == '1' ||
result.data.permission == '2' ||
result.data.permission == '3'
) {
router.push("/workspace");
} else if (result.data.data.permission == "4") {
router.push("/noPermission");
router.push('/usergold')
} else if (result.data.permission == '4') {
router.push('/noPermission')
}
ElMessage.success("登录成功");
console.log("请求成功", result);
ElMessage.success('登录成功')
console.log('请求成功', result)
} else {
form.value.password = "";
form.value.jwcode = "";
ElMessage.error(result.data.msg);
form.value.password = ''
form.value.jwcode = ''
ElMessage.error(result.msg)
}
} catch (error) {
console.log("请求失败", error);
ElMessage.error("登录失败,请检查账号密码");
console.log('请求失败', error)
ElMessage.error('登录失败,请检查账号密码')
//
}
};
}
</script>
<template>
<el-row class="login-page">
@ -79,12 +79,7 @@ const login = async function () {
<!-- <div style="height: 100vh; width: 1000px" class="container"></div> -->
<el-col :span="6" :offset="3" class="form">
<!-- 登录表单 -->
<el-form
:model="form"
size="large"
autocomplete="off"
@keyup.enter.native="login()"
>
<el-form :model="form" size="large" autocomplete="off">
<el-form-item>
<h1 style="color: #409eff">金币系统登录</h1>
</el-form-item>
@ -101,7 +96,7 @@ const login = async function () {
<el-form-item class="flex"> </el-form-item>
<!-- 登录按钮 -->
<el-form-item>
<button class="button" @click="login()">
<button type="button" class="button" @click="login()">
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"

356
gold-system/src/views/managerecharge/activity.vue

@ -1,176 +1,177 @@
<script setup>
import { ref, onMounted, reactive, computed } from "vue";
import ElementPlus from "element-plus";
import { ElMessage, ElMessageBox } from "element-plus";
import axios from "axios";
import moment from "moment";
import API from "../../api/index.js";
import _ from "lodash";
import { ref, onMounted, reactive, computed } from 'vue'
import ElementPlus from 'element-plus'
import { ElMessage, ElMessageBox } from 'element-plus'
import axios from 'axios'
import moment from 'moment'
import API from '../../api/index.js'
import _ from 'lodash'
import request from '@/util/http'
//
const adminData = ref({});
const adminData = ref({})
const getAdminData = async function () {
try {
const result = await API.post(
"http://54.251.137.151:10702/admin/userinfo",
{}
);
adminData.value = result;
addObj.value.adminId = adminData.value.adminId;
console.log("请求成功", result);
console.log("用户信息", adminData.value);
const result = await request({
url: '/admin/userinfo',
data: {}
})
adminData.value = result
addObj.value.adminId = adminData.value.adminId
console.log('请求成功', result)
console.log('用户信息', adminData.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
}
};
}
//
//
const tableData = ref([]);
const tableData = ref([])
//
const total = ref(100);
const total = ref(100)
//
const getTime = ref([]);
const getTime = ref([])
//
const activity = ref({});
const activity = ref({})
//
const getObj = ref({
pageNum: 1,
pageSize: 10,
});
pageSize: 10
})
//
const addObj = ref({
add: "",
});
add: ''
})
//
//
const delObj = ref({});
const delObj = ref({})
// //
// const tableHeight = computed(function () {
// return (getObj.value.pageSize + 1) * 50 + "px";
// });
// ref
const Ref = ref(null);
const Ref = ref(null)
//
//
const get = async function (val) {
try {
//
if (typeof val === "number") {
getObj.value.pageNum = val;
if (typeof val === 'number') {
getObj.value.pageNum = val
}
//
if (getTime.value != null) {
if (getTime.value.startDate != "" && getTime.value.endDate != "") {
activity.value.startDate = getTime.value[0];
activity.value.endDate = getTime.value[1];
if (getTime.value.startDate != '' && getTime.value.endDate != '') {
activity.value.startDate = getTime.value[0]
activity.value.endDate = getTime.value[1]
}
} else {
activity.value.startDate = "";
activity.value.endDate = "";
activity.value.startDate = ''
activity.value.endDate = ''
}
console.log("搜索参数", getObj.value);
console.log('搜索参数', getObj.value)
// POST
const result = await API.post(
"http://54.251.137.151:10702/recharge/activity/select",
{
const result = await request({
url: '/recharge/activity/select',
data: {
...getObj.value,
activity: { ...activity.value },
activity: { ...activity.value }
}
);
})
//
console.log("请求成功", result);
console.log('请求成功', result)
//
tableData.value = result.data.list;
console.log("tableData", tableData.value);
tableData.value = result.data.list
console.log('tableData', tableData.value)
//
total.value = result.data.total;
console.log("total", total.value);
total.value = result.data.total
console.log('total', total.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const search = function () {
getObj.value.pageNum = 1;
get();
};
getObj.value.pageNum = 1
get()
}
//
const reset = function () {
getObj.value = {};
getObj.value.pageNum = 1;
getObj.value.pageSize = 10;
getTime.value = {};
activity.value = {};
};
getObj.value = {}
getObj.value.pageNum = 1
getObj.value.pageSize = 10
getTime.value = {}
activity.value = {}
}
//
const addActivityVisible = ref(false);
const addActivityVisible = ref(false)
//
const openAddActivityVisible = function () {
addActivityVisible.value = true;
};
addActivityVisible.value = true
}
//
const closeAddActivityVisible = function (done) {
addActivityVisible.value = false;
};
addActivityVisible.value = false
}
//
const addActicity = function () {
console.log("Date", new Date());
console.log('Date', new Date())
//
addObj.value = {};
addObj.value.adminId = adminData.value.adminId;
addObj.value.adminName = adminData.value.name;
addObj.value.freeGold = "0";
addObj.value.rechargeRatio = 0;
addObj.value.startTime = null;
addObj.value.endTime = null;
openAddActivityVisible();
};
addObj.value = {}
addObj.value.adminId = adminData.value.adminId
addObj.value.adminName = adminData.value.name
addObj.value.freeGold = '0'
addObj.value.rechargeRatio = 0
addObj.value.startTime = null
addObj.value.endTime = null
openAddActivityVisible()
}
//
const add = async function () {
Ref.value.validate(async (valid) => {
console.log("valid", valid);
console.log('valid', valid)
if (valid) {
try {
console.log("添加对象", addObj.value);
console.log('添加对象', addObj.value)
// POST
const result = await API.post(
"http://54.251.137.151:10702/recharge/activity/add",
addObj.value
);
const result = await request({
url: '/recharge/activity/add',
data: addObj.value
})
//
console.log("请求成功", result);
console.log('请求成功', result)
//
get();
get()
//
closeAddActivityVisible();
closeAddActivityVisible()
//
ElMessage({
type: "success",
message: "活动添加成功!",
});
type: 'success',
message: '活动添加成功!'
})
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
});
};
})
}
// 使 _.throttle trailing false
const throttledAdd = _.throttle(add, 5000, { trailing: false });
const throttledAdd = _.throttle(add, 5000, { trailing: false })
//
// let onceFunction = true;
//
@ -187,116 +188,132 @@ const throttledAdd = _.throttle(add, 5000, { trailing: false });
// =========================================================
//
const del = function (row) {
delObj.value.activityId = row.activityId;
console.log("delObj", delObj.value);
};
delObj.value.activityId = row.activityId
console.log('delObj', delObj.value)
}
//
const delConfirm = async function () {
try {
console.log("delObj", delObj.value);
console.log('delObj', delObj.value)
// POST
const result = await API.post(
"http://54.251.137.151:10702/recharge/activity/edit",
delObj.value
);
//
console.log("请求成功", result);
//
get();
const result = await request({
url: '/recharge/activity/edit',
data: delObj.value
})
if (result.code == 200) {
ElMessage({
type: 'success',
message: '删除成功'
})
//
console.log('请求成功', result)
//
get()
} else {
ElMessage({
type: 'error',
message: '删除失败'
})
}
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
const handlePageSizeChange = function (val) {
getObj.value.pageSize = val
get()
}
const handleCurrentChange = function (val) {
getObj.value.pageNum = val
get()
}
//
//
const handleStartTimeChange = () => {
Ref.value.validateField("endTime");
};
Ref.value.validateField('endTime')
}
const checkFreeGoldRadio = function (rule, value, callback) {
if (addObj.value.freeGold == 1) {
if (value == "0" || value == null || value == "") {
callback(new Error("请输入免费金币兑换比"));
if (value == '0' || value == null || value == '') {
callback(new Error('请输入免费金币兑换比'))
} else if (value < 0 || isNaN(value)) {
callback(new Error("请输入正确的格式"));
callback(new Error('请输入正确的格式'))
} else {
callback();
callback()
}
} else {
callback();
callback()
}
};
}
const checkStartTime = function (rule, value, callback) {
if (value < new Date()) {
callback(new Error("开始时间不能小于当前时间"));
callback(new Error('开始时间不能小于当前时间'))
} else {
callback();
callback()
}
};
}
const checkEndTime = function (rule, value, callback) {
if (value < new Date()) {
callback(new Error("结束时间不能小于当前时间"));
callback(new Error('结束时间不能小于当前时间'))
} else if (value <= addObj.value.startTime) {
callback(new Error("结束时间不能小于开始时间"));
callback(new Error('结束时间不能小于开始时间'))
} else {
callback();
callback()
}
};
}
const rules = reactive({
activityName: [
{ required: true, message: "请输入活动名称", trigger: "blur" },
{ required: true, message: '请输入活动名称', trigger: 'blur' }
],
freeGold: [
{ required: true, message: "请选择是否赠送免费金币", trigger: "blur" },
{ required: true, message: '请选择是否赠送免费金币', trigger: 'blur' }
],
rechargeRatio: [{ validator: checkFreeGoldRadio, trigger: "blur" }],
rechargeRatio: [{ validator: checkFreeGoldRadio, trigger: 'blur' }],
startTime: [
{ required: true, message: "请选择开始时间", trigger: "blur" },
{ validator: checkStartTime, trigger: "blur" },
{ required: true, message: '请选择开始时间', trigger: 'blur' },
{ validator: checkStartTime, trigger: 'blur' }
],
endTime: [
{ required: true, message: "请选择结束时间", trigger: "blur" },
{ validator: checkEndTime, trigger: "blur" },
],
});
{ required: true, message: '请选择结束时间', trigger: 'blur' },
{ validator: checkEndTime, trigger: 'blur' }
]
})
//
const checkNumber = function () {
if (typeof parseInt(getObj.value.pageNum) === "number") {
console.log(
"总共有多少页" + Math.ceil(total.value / getObj.value.pageSize)
);
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)
) {
getObj.value.pageNum = parseInt(getObj.value.pageNum);
console.log("输入的数字合法");
get();
getObj.value.pageNum = parseInt(getObj.value.pageNum)
console.log('输入的数字合法')
get()
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
};
}
//
onMounted(async function () {
await getAdminData();
get();
});
await getAdminData()
get()
})
</script>
<template>
@ -359,12 +376,12 @@ onMounted(async function () {
<el-table-column prop="activityName" label="活动名称" />
<el-table-column prop="startTime" label="开始时间">
<template #default="scope">
{{ moment(scope.row.startTime).format("YYYY-MM-DD HH:mm:ss") }}
{{ moment(scope.row.startTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
</el-table-column>
<el-table-column prop="endTime" label="结束时间">
<template #default="scope">
{{ moment(scope.row.endTime).format("YYYY-MM-DD HH:mm:ss") }}
{{ moment(scope.row.endTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
</el-table-column>
<el-table-column prop="rechargeRatio" label="免费兑换比">
@ -397,7 +414,7 @@ onMounted(async function () {
<el-table-column prop="name" label="添加人" />
<el-table-column prop="createTime" label="添加时间">
<template #default="scope">
{{ moment(scope.row.createTime).format("YYYY-MM-DD HH:mm:ss") }}
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
</el-table-column>
<el-table-column prop="operation" label="操作">
@ -428,41 +445,12 @@ onMounted(async function () {
<el-pagination
background
:page-size="getObj.pageSize"
layout="slot"
:total="total"
>
<div>{{ total }},每页</div>
<el-select
v-model="getObj.pageSize"
class="page-size"
@change="get()"
style="width: 80px"
>
<el-option
v-for="item in [5, 10, 20, 50, 100]"
:key="item"
:label="item"
:value="item"
></el-option>
</el-select>
<div></div>
</el-pagination>
<el-pagination
background
layout="prev, pager, next, slot"
:page-size="getObj.pageSize"
:page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
:current-page="getObj.pageNum"
@current-change="get"
>
<div>跳至</div>
<el-input
v-model="getObj.pageNum"
style="width: 40px"
@change="checkNumber"
/>
<div></div>
</el-pagination>
@size-change="handlePageSizeChange"
@current-change="handleCurrentChange"
></el-pagination>
</div>
</el-card>
</el-col>

507
gold-system/src/views/managerecharge/rate.vue

@ -1,315 +1,327 @@
<script setup>
import { ref, onMounted, computed, reactive } from "vue";
import { ElMessage, ElMessageBox } from "element-plus";
import axios from "axios";
import { createApp } from "vue";
import moment from "moment";
import API from "../../api/index.js";
import _ from "lodash";
import { ref, onMounted, computed, reactive } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import axios from 'axios'
import { createApp } from 'vue'
import moment from 'moment'
import API from '../../api/index.js'
import _ from 'lodash'
import request from '@/util/http'
//
const adminData = ref({
name: "",
});
name: ''
})
const getAdminData = async function () {
try {
const result = await API.post(
"http://54.251.137.151:10702/admin/userinfo",
{}
);
adminData.value = result;
rateAdd.value.adminId = adminData.value.adminId;
rateEdit.value.adminId = adminData.value.adminId;
console.log("请求成功", result);
console.log("用户信息", user.value);
const result = await request({
url: '/admin/userinfo',
data: {}
})
adminData.value = result
rateAdd.value.adminId = adminData.value.adminId
rateEdit.value.adminId = adminData.value.adminId
console.log('请求成功', result)
console.log('用户信息', user.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
}
};
getAdminData();
}
getAdminData()
const regeAdd = ref(false);
const regeEdit = ref(false);
const regeAdd = ref(false)
const regeEdit = ref(false)
//
const tableData = ref([]);
const tableData = ref([])
//
const getObj = ref({
pageNum: 1,
pageSize: 10,
});
const total = ref(0);
pageSize: 10
})
const total = ref(0)
//
//
const value1 = ref({
startTime: "",
endTime: "",
}); //
startTime: '',
endTime: ''
}) //
function handleDateChange(value) {
if (value && value.length === 2) {
value1.value.startTime = value[0]; //
value1.value.endTime = value[1]; //
value1.value.startTime = value[0] //
value1.value.endTime = value[1] //
}
console.log(value1);
console.log(value1)
}
const time = ref({});
const time = ref({})
const get = async function (val) {
//
if (value1.value != null) {
if (value1.value.startDate != "" && value1.value.endDate != "") {
time.value.startTime = value1.value[0];
time.value.endTime = value1.value[1];
if (value1.value.startDate != '' && value1.value.endDate != '') {
time.value.startTime = value1.value[0]
time.value.endTime = value1.value[1]
}
} else {
time.value.startTime = "";
time.value.endTime = "";
time.value.startTime = ''
time.value.endTime = ''
}
try {
//
if (typeof val === "number") {
getObj.value.pageNum = val;
if (typeof val === 'number') {
getObj.value.pageNum = val
}
console.log("搜索参数", getObj.value);
console.log('搜索参数', getObj.value)
// POST
const result = await API.post("http://54.251.137.151:10702/rates/search", {
...getObj.value,
rate: { ...time.value },
});
const result = await request({
url: '/rates/search',
data: {
...getObj.value,
rate: { ...time.value }
}
})
//
console.log("请求成功", result);
console.log('请求成功', result)
//
tableData.value = result.data.list;
console.log("tableData", tableData.value);
tableData.value = result.data.list
console.log('tableData', tableData.value)
// UI
//
total.value = result.data.total;
console.log("total", total.value);
total.value = result.data.total
console.log('total', total.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const search = function () {
getObj.value.pageNum = 1;
get();
};
getObj.value.pageNum = 1
get()
}
//
const rateAdd = ref({});
const rateAdd = ref({})
const addRate = async function () {
rateAdd.value.adminId = adminData.value.adminId;
rateAdd.value.adminId = adminData.value.adminId
if (rateAdd.value.startTime) {
const date = new Date(rateAdd.value.startTime);
date.setHours(0, 0, 0, 0);
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`;
).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);
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`;
).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} 23:59:59`
}
try {
console.log("搜索参数", getObj.value);
console.log('搜索参数', getObj.value)
// POST
const result = await API.post(
"http://54.251.137.151:10702/rates/add",
rateAdd.value
);
const result = await request({
url: '/rates/add',
data: rateAdd.value
})
if (result.code == 0) {
ElMessage.error(result.msg);
ElMessage.error(result.msg)
}
//
console.log("请求成功", result);
get();
console.log('请求成功', result)
get()
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
const add = () => {
Ref.value.validate(async (valid) => {
if (valid) {
ElMessageBox.confirm("确认添加?")
ElMessageBox.confirm('确认添加?')
.then(() => {
addRate();
rateAdd.value = {};
addRate()
rateAdd.value = {}
value1.value = {
startTime: "",
endTime: "",
};
regeAdd.value = false;
startTime: '',
endTime: ''
}
regeAdd.value = false
})
.catch(() => {
regeAdd.value = false;
});
regeAdd.value = false
})
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
});
};
})
}
const handlePageSizeChange = function (val) {
getObj.value.pageSize = val
get()
}
const handleCurrentChange = function (val) {
getObj.value.pageNum = val
get()
}
// 使 _.throttle trailing false
const throttledAdd = _.throttle(add, 5000, { trailing: false });
const throttledAdd = _.throttle(add, 5000, { trailing: false })
//
const rateEdit = ref({});
const rateEdit = ref({})
//
const getEditData = async function (row) {
try {
console.log("搜索参数", getObj.value);
console.log('搜索参数', getObj.value)
// POST
const result = await API.post(
"http://54.251.137.151:10702/rates/searchById?rateId=" + row.rateId,
{}
);
const result = await request({
url: '/rates/searchById?rateId=' + row.rateId,
data: {}
})
//
console.log("请求成功", result);
console.log('请求成功', result)
//
rateEdit.value = result.data;
rateEdit.value.adminId = adminData.value.adminId;
console.log("这是编辑的数值", rateEdit.value);
rateEdit.value = result.data
rateEdit.value.adminId = adminData.value.adminId
console.log('这是编辑的数值', rateEdit.value)
} catch (error) {
console.log("请求失败", 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);
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`;
).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);
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`;
).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} 23:59:59`
}
try {
console.log("搜索参数", rateEdit.value);
console.log('搜索参数', rateEdit.value)
// POST
const result = await API.post(
"http://54.251.137.151:10702/rates/update",
rateEdit.value
);
const result = await request({
url: '/rates/update',
data: rateEdit.value
})
//
console.log("请求成功", result);
get();
console.log('请求成功', result)
get()
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
const edit = () => {
ElMessageBox.confirm("确认修改?")
ElMessageBox.confirm('确认修改?')
.then(() => {
editRate();
regeEdit.value = false;
editRate()
regeEdit.value = false
})
.catch(() => {
regeEdit.value = false;
});
};
regeEdit.value = false
})
}
//
const deleteRate = async function (row) {
try {
// POST
const result = await API.post(
"http://54.251.137.151:10702/rates/delete/ " + row.rateId,
{}
);
const result = await request({
url: '/rates/delete/ ' + row.rateId,
data: {}
})
//
console.log("请求成功", result);
get();
console.log('请求成功', result)
get()
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
onMounted(async function () {
get();
});
get()
})
//
function handlePageChange(currentPage, pageSize) {
get();
get()
}
//
const options = [
{
value: "USD",
label: "USD",
value: 'USD',
label: 'USD'
},
{
value: "HKD",
label: "HKD",
value: 'HKD',
label: 'HKD'
},
{
value: "THB",
label: "THB",
value: 'THB',
label: 'THB'
},
{
value: "VND",
label: "VND",
value: 'VND',
label: 'VND'
},
{
value: "CAD",
label: "CAD",
value: 'CAD',
label: 'CAD'
},
{
value: "MYR",
label: "MYR",
value: 'MYR',
label: 'MYR'
},
{
value: "KRW",
label: "KRW",
value: 'KRW',
label: 'KRW'
},
{
value: "JPY",
label: "JPY",
value: 'JPY',
label: 'JPY'
},
{
value: "CNY",
label: "CNY",
},
];
value: 'CNY',
label: 'CNY'
}
]
function formatDate(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");
const hours = date.getHours().toString().padStart(2, "0");
const minutes = date.getMinutes().toString().padStart(2, "0");
const seconds = date.getSeconds().toString().padStart(2, "0");
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
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')
const hours = date.getHours().toString().padStart(2, '0')
const minutes = date.getMinutes().toString().padStart(2, '0')
const seconds = date.getSeconds().toString().padStart(2, '0')
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}`;
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}`
}
// //
@ -319,82 +331,80 @@ function formatDateTwe(value) {
//
// ref
const Ref = ref(null);
const Ref = ref(null)
const handleStartTimeChange = () => {
Ref.value.validateField("endTime");
};
Ref.value.validateField('endTime')
}
const checkStartTime = function (rule, value, callback) {
if (value <= new Date()) {
callback(new Error("开始时间不能小于当前时间"));
callback(new Error('开始时间不能小于当前时间'))
} else {
callback();
callback()
}
};
}
const checkEndTime = function (rule, value, callback) {
if (value <= new Date()) {
callback(new Error("结束时间不能小于当前时间"));
callback(new Error('结束时间不能小于当前时间'))
} else if (value <= rateAdd.value.startTime) {
callback(new Error("结束时间不能小于开始时间"));
callback(new Error('结束时间不能小于开始时间'))
} else {
callback();
callback()
}
};
}
const checkFreeGoldRadio = function (rule, value, callback) {
if (value == "0" || value == null || value == "") {
callback(new Error("请输入汇率比"));
if (value == '0' || value == null || value == '') {
callback(new Error('请输入汇率比'))
} else if (value < 0 || isNaN(value)) {
callback(new Error("请输入正确的格式"));
callback(new Error('请输入正确的格式'))
} else {
callback();
callback()
}
};
}
const rules = reactive({
currency: [{ required: true, message: "请选择货币名称", trigger: "blur" }],
exchangeRate: [{ validator: checkFreeGoldRadio, trigger: "blur" }],
currency: [{ required: true, message: '请选择货币名称', trigger: 'blur' }],
exchangeRate: [{ validator: checkFreeGoldRadio, trigger: 'blur' }],
startTime: [
{ required: true, message: "请选择开始时间", trigger: "blur" },
{ validator: checkStartTime, trigger: "blur" },
{ required: true, message: '请选择开始时间', trigger: 'blur' },
{ validator: checkStartTime, trigger: 'blur' }
],
endTime: [
{ required: true, message: "请选择结束时间", trigger: "blur" },
{ validator: checkEndTime, trigger: "blur" },
],
});
{ required: true, message: '请选择结束时间', trigger: 'blur' },
{ validator: checkEndTime, trigger: 'blur' }
]
})
//
const handledelete = function () {
value1.value = {};
startTime.value = "";
endTime.value = "";
};
value1.value = {}
startTime.value = ''
endTime.value = ''
}
//
const checkNumber = function () {
if (typeof parseInt(getObj.value.pageNum) === "number") {
console.log(
"总共有多少页" + Math.ceil(total.value / getObj.value.pageSize)
);
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)
) {
getObj.value.pageNum = parseInt(getObj.value.pageNum);
console.log("输入的数字合法");
get();
getObj.value.pageNum = parseInt(getObj.value.pageNum)
console.log('输入的数字合法')
get()
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
};
}
// =========================================================
//
@ -403,25 +413,37 @@ const checkNumber = function () {
const delConfirm = async function (row) {
try {
// POST
const result = await API.post(
"http://54.251.137.151:10702/rates/delete/ " + row.rateId,
{}
);
//
console.log("请求成功", result);
get();
const result = await request({
url: '/rates/delete/ ' + row.rateId,
data: {}
})
if (result.code == 200) {
ElMessage({
type: 'success',
message: '删除成功'
})
//
console.log('请求成功', result)
//
get()
} else {
ElMessage({
type: 'error',
message: '删除失败'
})
}
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
function handleInput(value) {
// 7使
rateAdd.value.exchangeRate = value
.replace(/(\.\d{7})\d+/, "$1")
.replace(/^(\d+)(\.\d{0,7})?$/, "$1$2");
.replace(/(\.\d{7})\d+/, '$1')
.replace(/^(\d+)(\.\d{0,7})?$/, '$1$2')
}
</script>
@ -541,8 +563,10 @@ function handleInput(value) {
<el-button
type="text"
@click="
regeEdit = true;
getEditData(scope.row);
() => {
regeEdit = true
getEditData(scope.row)
}
"
>编辑</el-button
>
@ -573,41 +597,12 @@ function handleInput(value) {
<el-pagination
background
:page-size="getObj.pageSize"
layout="slot"
:page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
>
<div>{{ total }},每页</div>
<el-select
v-model="getObj.pageSize"
class="page-size"
@change="get()"
style="width: 80px"
>
<el-option
v-for="item in [5, 10, 20, 50, 100]"
:key="item"
:label="item"
:value="item"
></el-option>
</el-select>
<div></div>
</el-pagination>
<el-pagination
background
layout="prev, pager, next, slot"
:page-size="getObj.pageSize"
:total="total"
:current-page="getObj.pageNum"
@current-change="get"
>
<div>跳至</div>
<el-input
v-model="getObj.pageNum"
style="width: 40px"
@change="checkNumber"
/>
<div></div>
</el-pagination>
@size-change="handlePageSizeChange"
@current-change="handleCurrentChange"
></el-pagination>
</div>
</el-card>
</el-col>

451
gold-system/src/views/permissions/index.vue

@ -1,158 +1,163 @@
<script setup>
import { ref, onMounted, reactive, computed } from "vue";
import ElementPlus from "element-plus";
import { ElMessage, ElMessageBox } from "element-plus";
import axios from "axios";
import moment from "moment";
import { ta } from "element-plus/es/locales.mjs";
import API from "../../api/index.js";
import { UserFilled } from "@element-plus/icons-vue";
import _ from "lodash";
import { ref, onMounted, reactive, computed } from 'vue'
import ElementPlus from 'element-plus'
import { ElMessage, ElMessageBox } from 'element-plus'
import axios from 'axios'
import moment from 'moment'
import { ta } from 'element-plus/es/locales.mjs'
import API from '../../api/index.js'
import { UserFilled } from '@element-plus/icons-vue'
import _ from 'lodash'
import request from '@/util/http'
//
const tableData = ref([]);
const tableData = ref([])
// ===========================================
//
const total = ref(100);
const total = ref(100)
// detailY
const admin = ref({});
const admin = ref({})
//
const getObj = ref({
pageNum: 1,
pageSize: 10,
});
pageSize: 10
})
//
const permissionAddVisible = ref(false);
const permissionAddVisible = ref(false)
//
const permissionEditVisible = ref(false);
const permissionEditVisible = ref(false)
//
const area = ref([]);
const area = ref([])
//
const store = ref([]);
const store = ref([])
//
const permissionAddObj = ref({});
const permissionAddObj = ref({})
//
const addAdmin = ref({});
const addAdmin = ref({})
//
const permissionEditObj = ref({});
const permissionEditObj = ref({})
//
const delObj = ref({});
const delObj = ref({})
//
const get = async function (val) {
try {
//
if (typeof val === "number") {
getObj.value.pageNum = val;
if (typeof val === 'number') {
getObj.value.pageNum = val
}
console.log("搜索参数", getObj.value);
console.log('搜索参数', getObj.value)
// POST
const result = await API.post("http://54.251.137.151:10702/admin/search", {
...getObj.value,
admin: { ...admin.value },
});
tableData.value = result.data.list;
console.log("tableData", tableData.value);
total.value = result.data.total;
const result = await request({
url: '/admin/search',
data: {
...getObj.value,
admin: { ...admin.value }
}
})
tableData.value = result.data.list
console.log('tableData', tableData.value)
total.value = result.data.total
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
}
};
}
//
const search = function () {
getObj.value.pageNum = 1;
get();
};
getObj.value.pageNum = 1
get()
}
//
const reset = function () {
admin.value = {};
};
admin.value = {}
}
//
const getArea = async function () {
try {
const result = await API.post("http://54.251.137.151:10702/admin/area", {});
area.value = result.data;
const result = await request({
url: '/admin/area',
data: {}
})
area.value = result.data
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const getStore = async function () {
try {
const result = await API.post(
"http://54.251.137.151:10702/admin/store",
{}
);
store.value = result.data;
const result = await request({
url: '/admin/store',
data: {}
})
store.value = result.data
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const checkNumber = function () {
if (typeof parseInt(getObj.value.pageNum) === "number") {
console.log(
"总共有多少页" + Math.ceil(total.value / getObj.value.pageSize)
);
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)
) {
getObj.value.pageNum = parseInt(getObj.value.pageNum);
console.log("输入的数字合法");
get();
getObj.value.pageNum = parseInt(getObj.value.pageNum)
console.log('输入的数字合法')
get()
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
};
}
//
const openPermissionAddVisible = function () {
permissionAddVisible.value = true;
};
permissionAddVisible.value = true
}
//
const closePermissionAddVisible = function () {
permissionAddVisible.value = false;
};
permissionAddVisible.value = false
}
//
const permissionAddInit = function () {
permissionAddObj.value = {};
openPermissionAddVisible();
};
permissionAddObj.value = {}
openPermissionAddVisible()
}
//
const getAdminByJwcodeWithoutPermission = async function () {
try {
const result = await API.post(
"http://54.251.137.151:10702/admin/selectNo",
permissionAddObj.value
);
const result = await request({
url: '/admin/selectNo',
data: permissionAddObj.value
})
if (result.code == 200) {
permissionAddObj.value = result.data[0];
ElMessage.success("精网号查询成功");
permissionAddObj.value = result.data[0]
ElMessage.success('精网号查询成功')
} else {
ElMessage.error(result.msg);
ElMessage.error(result.msg)
}
console.log("精网号查询没有权限的用户", permissionAddObj.value);
console.log('精网号查询没有权限的用户', permissionAddObj.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
// const permissionAdd = async function () {
// try {
@ -174,9 +179,10 @@ const getAdminByJwcodeWithoutPermission = async function () {
// }
// console.log("", permissionAddObj.value);
// const result = await API.post(
// "http://54.251.137.151:10702/admin/update",
// permissionAddObj.value
// const result = await request(
// {
// url: "/admin/update",
// data: permissionAddObj.value}
// );
// //
@ -197,210 +203,218 @@ const getAdminByJwcodeWithoutPermission = async function () {
// };
const permissionAdd = async function () {
Ref.value.validate(async (valid) => {
console.log("valid", valid);
console.log('valid', valid)
if (valid) {
try {
addAdmin.value.adminFlag = 1;
addAdmin.value.status1 = 1;
const result = await API.post(
"http://54.251.137.151:10702/admin/add",
addAdmin.value
);
addAdmin.value.adminFlag = 1
addAdmin.value.status1 = 1
const result = await request({
url: '/admin/add',
data: addAdmin.value
})
if (result.code == 200) {
ElMessage.success("添加成功");
ElMessage.success('添加成功')
} else {
ElMessage.error(result.msg);
ElMessage.error(result.msg)
}
addAdmin.value = {};
get();
addAdmin.value = {}
get()
closePermissionAddVisible();
closePermissionAddVisible()
} catch (error) {
console.log("新增用户权限失败", error);
console.log('新增用户权限失败', error)
//
ElMessage.error("新增用户权限失败");
closePermissionAddVisible();
ElMessage.error('新增用户权限失败')
closePermissionAddVisible()
}
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
});
};
})
}
//
const rules = reactive({
jwcode: [{ required: true, message: "请输入精网号", trigger: "blur" }],
name: [{ required: true, message: "请输入用户名", trigger: "blur" }],
store: [{ required: true, message: "请输入职称", trigger: "blur" }],
machineId: [{ required: true, message: "请输入精网号", trigger: "blur" }],
area: [{ required: true, message: "请选择所属地区", trigger: "blur" }],
permission: [{ required: true, message: "请选择权限", trigger: "blur" }],
});
jwcode: [{ required: true, message: '请输入精网号', trigger: 'blur' }],
name: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
store: [{ required: true, message: '请输入职称', trigger: 'blur' }],
machineId: [{ required: true, message: '请输入精网号', trigger: 'blur' }],
area: [{ required: true, message: '请选择所属地区', trigger: 'blur' }],
permission: [{ required: true, message: '请选择权限', trigger: 'blur' }]
})
//
// ref
const Ref = ref(null);
const Ref = ref(null)
// 使 _.throttle trailing false
const throttledPermissionAdd = _.throttle(permissionAdd, 5000, {
trailing: false,
});
trailing: false
})
//
const permissionList = [
{
label: "总部",
value: "1",
label: '总部',
value: '1'
},
{
label: "地区经理",
value: "5",
label: '地区经理',
value: '5'
},
{
label: "财务",
value: "3",
label: '财务',
value: '3'
},
{
label: "客服",
value: "2",
},
];
label: '客服',
value: '2'
}
]
//
//
const areaList = ref([]);
const areaList = ref([])
const getAreas = async function () {
try {
// POST
const result = await API.post(
"http://54.251.137.151:10702/recharge/user/search",
{}
);
const result = await request({
url: '/recharge/user/search',
data: {}
})
//
console.log("请求成功", result);
console.log('请求成功', result)
//
areaList.value = result.data;
console.log("地区", area.value);
areaList.value = result.data
console.log('地区', area.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
getAreas();
}
getAreas()
//
const openPermissionEditVisible = function () {
permissionEditVisible.value = true;
};
permissionEditVisible.value = true
}
//
const closePermissionEditVisible = function () {
permissionEditVisible.value = false;
};
permissionEditVisible.value = false
}
//
const permissionEditInit = function (row) {
permissionEditObj.value = {};
permissionEditObj.value.jwcode = row.jwcode;
permissionEditObj.value.name = row.name;
permissionEditObj.value.area = row.area;
permissionEditObj.value.store = row.store;
permissionEditObj.value.permission = row.permission;
console.log("编辑用户权限", permissionEditObj.value);
openPermissionEditVisible();
};
permissionEditObj.value = {}
permissionEditObj.value.jwcode = row.jwcode
permissionEditObj.value.name = row.name
permissionEditObj.value.area = row.area
permissionEditObj.value.store = row.store
permissionEditObj.value.permission = row.permission
console.log('编辑用户权限', permissionEditObj.value)
openPermissionEditVisible()
}
//
const permissionEdit = async function () {
try {
const result = await API.post(
"http://54.251.137.151:10702/admin/update",
permissionEditObj.value
);
const result = await request({
url: '/admin/update',
data: permissionEditObj.value
})
//
console.log("请求成功", result);
console.log('请求成功', result)
ElMessage.success("编辑用户权限成功");
ElMessage.success('编辑用户权限成功')
get();
get()
closePermissionEditVisible();
closePermissionEditVisible()
} catch (error) {
console.log("编辑用户权限失败", error);
console.log('编辑用户权限失败', error)
//
ElMessage.error("编辑用户权限失败");
ElMessage.error('编辑用户权限失败')
closePermissionEditVisible();
closePermissionEditVisible()
}
};
}
const throttledPermissionEdit = _.throttle(permissionEdit, 5000, {
trailing: false,
});
trailing: false
})
//
const del = function (row) {
delObj.value = {};
console.log(row, "删除初始化");
delObj.value.jwcode = row.jwcode;
};
delObj.value = {}
console.log(row, '删除初始化')
delObj.value.jwcode = row.jwcode
}
//
const delConfirm = async function () {
try {
delObj.value.permission = "4";
console.log(delObj.value);
delObj.value.permission = '4'
console.log(delObj.value)
const result = await API.post(
"http://54.251.137.151:10702/admin/update",
delObj.value
);
const result = await request({
url: '/admin/update',
data: delObj.value
})
//
console.log("请求成功", result);
console.log('请求成功', result)
ElMessage.success("删除权限成功");
delObj.value = {};
get();
ElMessage.success('删除权限成功')
delObj.value = {}
get()
} catch (error) {
console.log("删除权限失败", error);
console.log('删除权限失败', error)
//
ElMessage.error("删除权限失败");
ElMessage.error('删除权限失败')
}
};
}
//
const editStatus = async function (row) {
try {
console.log(row);
console.log(row)
permissionEditObj.value = {};
permissionEditObj.value.jwcode = row.jwcode;
permissionEditObj.value.status1 = row.status1;
permissionEditObj.value = {}
permissionEditObj.value.jwcode = row.jwcode
permissionEditObj.value.status1 = row.status1
console.log("修改用户权限状态", permissionEditObj.value);
console.log('修改用户权限状态', permissionEditObj.value)
const result = await API.post(
"http://54.251.137.151:10702/admin/update",
permissionEditObj.value
);
const result = await request({
url: '/admin/update',
data: permissionEditObj.value
})
//
console.log("请求成功", result);
console.log('请求成功', result)
ElMessage.success(
permissionEditObj.value.status1 == 1 ? "启用成功" : "禁用成功"
);
permissionEditObj.value = {};
get();
permissionEditObj.value.status1 == 1 ? '启用成功' : '禁用成功'
)
permissionEditObj.value = {}
get()
} catch (error) {
console.log("修改用户权限失败", error);
console.log('修改用户权限失败', error)
//
}
};
}
//
onMounted(async function () {
await get();
await getArea();
await getStore();
});
await get()
await getArea()
await getStore()
})
const handlePageSizeChange = function (val) {
getObj.value.pageSize = val
get()
}
const handleCurrentChange = function (val) {
getObj.value.pageNum = val
get()
}
</script>
<template>
@ -558,41 +572,12 @@ onMounted(async function () {
<el-pagination
background
:page-size="getObj.pageSize"
layout="slot"
:page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
>
<div>{{ total }},每页</div>
<el-select
v-model="getObj.pageSize"
class="page-size"
@change="get()"
style="width: 80px"
>
<el-option
v-for="item in [5, 10, 20, 50, 100]"
:key="item"
:label="item"
:value="item"
></el-option>
</el-select>
<div></div>
</el-pagination>
<el-pagination
background
layout="prev, pager, next,slot"
:page-size="getObj.pageSize"
:total="total"
:current-page="getObj.pageNum"
@current-change="get"
>
<div>跳至</div>
<el-input
v-model="getObj.pageNum"
style="width: 40px"
@change="checkNumber"
/>
<div></div>
</el-pagination>
@size-change="handlePageSizeChange"
@current-change="handleCurrentChange"
></el-pagination>
</div>
</el-card>
</el-col>

910
gold-system/src/views/recharge/addRecharge.vue
File diff suppressed because it is too large
View File

550
gold-system/src/views/recharge/adminRecharge.vue

@ -1,82 +1,79 @@
<script setup>
import { ref, onMounted, reactive, computed } from "vue";
import ElementPlus from "element-plus";
import { ElMessage, ElMessageBox } from "element-plus";
import { AiFillRead } from "vue-icons-plus/ai";
import axios from "axios";
import moment from "moment";
import API from "../../api/index.js";
import { ref, onMounted, reactive, computed } from 'vue'
import ElementPlus from 'element-plus'
import { ElMessage, ElMessageBox } from 'element-plus'
import { AiFillRead } from 'vue-icons-plus/ai'
import axios from 'axios'
import moment from 'moment'
import API from '@/util/http'
//
const adminData = ref({});
const adminData = ref({})
const getAdminData = async function () {
try {
const result = await API.post(
"http://54.251.137.151:10702/admin/userinfo",
{}
);
adminData.value = result;
rechargeVo.value.adminId = adminData.value.adminId;
console.log("请求成功", result);
console.log("用户信息", adminData.value);
const result = await API({ url: '/admin/userinfo', data: {} })
adminData.value = result
rechargeVo.value.adminId = adminData.value.adminId
console.log('请求成功', result)
console.log('用户信息', adminData.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
}
};
}
//
//
const tableData = ref([]);
const tableData = ref([])
// ===========================================
// recharge
const rechargeVo = ref({
adminId: adminData.value.adminId,
});
adminId: adminData.value.adminId
})
//
const getObj = ref({
pageNum: 1,
pageSize: 50,
});
pageSize: 50
})
//
const total = ref(100);
const total = ref(100)
//
const getTime = ref([]);
const getTime = ref([])
//
const activity = ref([]);
const activity = ref([])
//
const allData = ref([]);
const allData = ref([])
//
const area = ref([]);
const area = ref([])
//
const activeName = ref("all");
const activeName = ref('all')
//
const payWay = [
{
value: "微信",
label: "微信",
value: '微信',
label: '微信'
},
{
value: "支付宝",
label: "支付宝",
value: '支付宝',
label: '支付宝'
},
{
value: "银联",
label: "银联",
value: '银联',
label: '银联'
},
{
value: "信用卡",
label: "信用卡",
value: '信用卡',
label: '信用卡'
},
{
value: "借记卡",
label: "借记卡",
value: '借记卡',
label: '借记卡'
},
{
value: "现金充值",
label: "现金充值",
},
];
value: '现金充值',
label: '现金充值'
}
]
// ==========================================================
//
const delObj = ref({});
const delObj = ref({})
// //
// const tableHeight = computed(function () {
@ -85,360 +82,356 @@ const delObj = ref({});
//
//
const trueGold = ref(0);
const trueRGold = ref(0);
const trueFGold = ref(0);
const trueGold = ref(0)
const trueRGold = ref(0)
const trueFGold = ref(0)
//
const totalmoney = ref(0);
const totalRcoin = ref(0);
const totalFcoin = ref(0);
const totalmoney = ref(0)
const totalRcoin = ref(0)
const totalFcoin = ref(0)
//
const pendingGold = ref(0);
const pendingRGold = ref(0);
const pendingFGold = ref(0);
const pendingGold = ref(0)
const pendingRGold = ref(0)
const pendingFGold = ref(0)
//
const approvedGold = ref(0);
const approvedRGold = ref(0);
const approvedFGold = ref(0);
const approvedGold = ref(0)
const approvedRGold = ref(0)
const approvedFGold = ref(0)
//
const rejectedGold = ref(0);
const rejectedRGold = ref(0);
const rejectedFGold = 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 (adminData.value.area === '泰国') {
rechargeVo.value.areas = ['泰国', '越南']
} else if (adminData.value.area !== '总部') {
rechargeVo.value.area = adminData.value.area
}
//
if (typeof val === "number") {
getObj.value.pageNum = val;
if (typeof val === 'number') {
getObj.value.pageNum = val
}
//
if (getTime.value != null) {
if (getTime.value.startDate != "" && getTime.value.endDate != "") {
rechargeVo.value.startDate = getTime.value[0];
rechargeVo.value.endDate = getTime.value[1];
if (getTime.value.startDate != '' && getTime.value.endDate != '') {
rechargeVo.value.startDate = getTime.value[0]
rechargeVo.value.endDate = getTime.value[1]
}
} else {
rechargeVo.value.startDate = "";
rechargeVo.value.endDate = "";
rechargeVo.value.startDate = ''
rechargeVo.value.endDate = ''
}
//
rechargeVo.value.sortField = sortField.value;
rechargeVo.value.sortOrder = sortOrder.value;
console.log("搜索参数", getObj.value);
rechargeVo.value.sortField = sortField.value
rechargeVo.value.sortOrder = sortOrder.value
console.log('搜索参数', getObj.value)
// POST
const result = await API.post(
"http://54.251.137.151:10702/recharge/recharge",
{
...getObj.value,
rechargeVo: { ...rechargeVo.value },
}
);
const result = await API({
url: '/recharge/recharge',
data: { ...getObj.value, rechargeVo: { ...rechargeVo.value } }
})
// rechargeVo.value
const detailWithoutSort = ref({
area: rechargeVo.value.area,
adminId: rechargeVo.value.adminId,
startDate: rechargeVo.value.startDate,
endDate: rechargeVo.value.endDate,
});
const result2 = await API.post(
"http://54.251.137.151:10702/recharge/recharge/RechargeA",
{
...detailWithoutSort.value,
endDate: rechargeVo.value.endDate
})
const result2 = await API({
url: '/recharge/recharge/RechargeA',
data: {
...detailWithoutSort.value
}
);
})
// result2
if (!result2 || !result2.data || result2.data.length === 0) {
totalmoney.value = 0;
totalRcoin.value = 0;
totalFcoin.value = 0;
totalmoney.value = 0
totalRcoin.value = 0
totalFcoin.value = 0
}
if (result2.data) {
result2.data.forEach((item) => {
switch (item.flag) {
case "待审核":
switch (item.auditStatus) {
case '待审核':
// item.raudit 0
// item.sumRaudit 0
pendingGold.value = item.sumRaudit || 0;
pendingRGold.value = item.sumRaudit1 || 0;
pendingFGold.value = item.sumRaudit2 || 0;
break;
case "已通过":
approvedGold.value = item.sumRaudit || 0;
approvedRGold.value = item.sumRaudit1 || 0;
approvedFGold.value = item.sumRaudit2 || 0;
break;
case "已驳回":
rejectedGold.value = item.sumRaudit || 0;
rejectedRGold.value = item.sumRaudit1 || 0;
rejectedFGold.value = item.sumRaudit2 || 0;
break;
pendingGold.value = item.sumRaudit || 0
pendingRGold.value = item.sumRaudit1 || 0
pendingFGold.value = item.sumRaudit2 || 0
break
case '已通过':
approvedGold.value = item.sumRaudit || 0
approvedRGold.value = item.sumRaudit1 || 0
approvedFGold.value = item.sumRaudit2 || 0
break
case '已驳回':
rejectedGold.value = item.sumRaudit || 0
rejectedRGold.value = item.sumRaudit1 || 0
rejectedFGold.value = item.sumRaudit2 || 0
break
}
});
})
}
trueGold.value =
pendingGold.value + approvedGold.value + rejectedGold.value;
trueGold.value = pendingGold.value + approvedGold.value + rejectedGold.value
trueRGold.value =
pendingRGold.value + approvedRGold.value + rejectedRGold.value;
pendingRGold.value + approvedRGold.value + rejectedRGold.value
trueFGold.value =
pendingFGold.value + approvedFGold.value + rejectedFGold.value;
pendingFGold.value + approvedFGold.value + rejectedFGold.value
//
console.log("请求成功", result);
console.log('请求成功', result)
//
tableData.value = result.data.list;
console.log("tableData", tableData.value);
tableData.value = result.data.list
console.log('tableData', tableData.value)
//
total.value = result.data.total;
console.log("total", total.value);
total.value = result.data.total
console.log('total', total.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const search = function () {
getObj.value.pageNum = 1;
get();
};
getObj.value.pageNum = 1
get()
}
//
const reset = function () {
delete rechargeVo.value.activityId;
delete rechargeVo.value.payWay;
delete rechargeVo.value.area;
delete rechargeVo.value.startDate;
delete rechargeVo.value.endDate;
delete sortField.value;
delete sortOrder.value;
getTime.value = {};
};
delete rechargeVo.value.activityId
delete rechargeVo.value.payWay
delete rechargeVo.value.area
delete rechargeVo.value.startDate
delete rechargeVo.value.endDate
delete sortField.value
delete sortOrder.value
getTime.value = {}
}
//
const getToday = function () {
const today = new Date();
const today = new Date()
const startDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate()
);
)
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
const handlePageSizeChange = function (val) {
getObj.value.pageSize = val
get()
}
const handleCurrentChange = function (val) {
getObj.value.pageNum = val
get()
}
//
const getYesterday = function () {
const yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
const yesterday = new Date()
yesterday.setDate(yesterday.getDate() - 1)
const startDate = new Date(
yesterday.getFullYear(),
yesterday.getMonth(),
yesterday.getDate()
);
)
const endDate = new Date(
yesterday.getFullYear(),
yesterday.getMonth(),
yesterday.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
// 7
const get7Days = function () {
const today = new Date();
const today = new Date()
const startDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() - 6
);
)
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
//
const adminAll = function () {
console.log("adminAll");
rechargeVo.value.status = "";
getObj.value.pageNum = 1;
get();
};
console.log('adminAll')
rechargeVo.value.status = ''
getObj.value.pageNum = 1
get()
}
//
const adminWait = async function () {
rechargeVo.value.status = 0;
getObj.value.pageNum = 1;
await get();
console.log("adminWait");
rechargeVo.value.status = 0
getObj.value.pageNum = 1
await get()
console.log('adminWait')
trueGold.value = pendingGold.value;
trueRGold.value = pendingRGold.value;
trueFGold.value = pendingFGold.value;
};
trueGold.value = pendingGold.value
trueRGold.value = pendingRGold.value
trueFGold.value = pendingFGold.value
}
//
const adminPass = async function () {
rechargeVo.value.status = 1;
getObj.value.pageNum = 1;
await get();
trueGold.value = approvedGold.value;
trueRGold.value = approvedRGold.value;
trueFGold.value = approvedFGold.value;
console.log("adminPass");
};
rechargeVo.value.status = 1
getObj.value.pageNum = 1
await get()
trueGold.value = approvedGold.value
trueRGold.value = approvedRGold.value
trueFGold.value = approvedFGold.value
console.log('adminPass')
}
//
const adminReject = async function () {
rechargeVo.value.status = 2;
getObj.value.pageNum = 1;
await get();
console.log("adminReject");
trueGold.value = rejectedGold.value;
trueRGold.value = rejectedRGold.value;
trueFGold.value = rejectedFGold.value;
};
rechargeVo.value.status = 2
getObj.value.pageNum = 1
await get()
console.log('adminReject')
trueGold.value = rejectedGold.value
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") {
adminWait();
} else if (tab.props.name === "pass") {
adminPass();
} else if (tab.props.name === "reject") {
adminReject();
if (tab.props.name === 'all') {
adminAll()
} else if (tab.props.name === 'wait') {
adminWait()
} else if (tab.props.name === 'pass') {
adminPass()
} else if (tab.props.name === 'reject') {
adminReject()
}
};
}
//
const getActivity = async function () {
try {
// POST
const result = await API.post(
"http://54.251.137.151:10702/recharge/activity/select",
{}
);
const result = await API({ url: '/recharge/activity/select', data: {} })
//
console.log("请求成功", result);
console.log('请求成功', result)
//
activity.value = result.data;
console.log("activity", activity.value);
activity.value = result.data
console.log('activity', activity.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
//
const getArea = async function () {
try {
// POST
const result = await API.post(
"http://54.251.137.151:10702/recharge/user/search",
{}
);
const result = await API({ url: 'recharge/user/search', data: {} })
//
console.log("请求成功", result);
console.log('请求成功', result)
//
area.value = result.data;
console.log("地区", area.value);
area.value = result.data
console.log('地区', area.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
// =================================
//
const del = function (row) {
delObj.value.rechargeId = row.rechargeId;
console.log("delObj1", delObj.value);
};
delObj.value.rechargeId = row.rechargeId
console.log('delObj1', delObj.value)
}
//
const delConfirm = async function () {
try {
console.log("delObj2", delObj.value);
const result = await API.post(
"http://54.251.137.151:10702/recharge/recharge/edit",
delObj.value
);
console.log("删除成功", result);
console.log('delObj2', delObj.value)
const result = await API({
url: '/recharge/recharge/edit',
data: delObj.value
})
console.log('删除成功', result)
//
get();
get()
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const checkNumber = function () {
if (typeof parseInt(getObj.value.pageNum) === "number") {
console.log(
"总共有多少页" + Math.ceil(total.value / getObj.value.pageSize)
);
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)
) {
getObj.value.pageNum = parseInt(getObj.value.pageNum);
console.log("输入的数字合法");
get();
getObj.value.pageNum = parseInt(getObj.value.pageNum)
console.log('输入的数字合法')
get()
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
};
}
//
onMounted(async function () {
await getAdminData();
await get();
await getActivity();
await getArea();
});
await getAdminData()
await get()
await getActivity()
await getArea()
})
//
const sortField = ref("");
const sortOrder = ref("");
const sortField = ref('')
const sortOrder = ref('')
//
const handleSortChange = (column) => {
console.log("排序字段:", column.prop);
console.log("排序方式:", column.order);
if (column.prop === "paidGold") {
sortField.value = "recharge_gold";
} else if (column.prop === "freeGold") {
sortField.value = "free_gold";
} else if (column.prop === "rechargeTime") {
sortField.value = "recharge_time";
} else if (column.prop === "createTime") {
sortField.value = "create_time";
} else if (column.prop === "paidMoney") {
sortField.value = "paid_gold";
console.log('排序字段:', column.prop)
console.log('排序方式:', column.order)
if (column.prop === 'paidGold') {
sortField.value = 'recharge_gold'
} else if (column.prop === 'freeGold') {
sortField.value = 'free_gold'
} else if (column.prop === 'rechargeTime') {
sortField.value = 'recharge_time'
} else if (column.prop === 'createTime') {
sortField.value = 'create_time'
} else if (column.prop === 'paidMoney') {
sortField.value = 'paid_gold'
}
sortOrder.value = column.order === "ascending" ? "ASC" : "DESC";
get();
};
sortOrder.value = column.order === 'ascending' ? 'ASC' : 'DESC'
get()
}
</script>
<template>
@ -546,8 +539,8 @@ const handleSortChange = (column) => {
<el-tab-pane label="已通过" name="pass"></el-tab-pane>
<el-tab-pane label="已驳回" name="reject"></el-tab-pane>
<div>
充值金额{{ trueRGold }}新币永久金币{{
trueRGold
充值金额{{ trueRGold.toFixed(2) }}新币永久金币{{
trueRGold.toFixed(2)
}}金币免费金币{{ trueFGold }}金币
</div>
</el-tabs>
@ -667,7 +660,7 @@ const handleSortChange = (column) => {
>
<template #default="scope">
{{
moment(scope.row.rechargeTime).format("YYYY-MM-DD HH:mm:ss")
moment(scope.row.rechargeTime).format('YYYY-MM-DD HH:mm:ss')
}}
</template>
</el-table-column>
@ -710,41 +703,12 @@ const handleSortChange = (column) => {
<el-pagination
background
:page-size="getObj.pageSize"
layout="slot"
:page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
>
<div>{{ total }},每页</div>
<el-select
v-model="getObj.pageSize"
class="page-size"
@change="get()"
style="width: 80px"
>
<el-option
v-for="item in [5, 10, 20, 50, 100]"
:key="item"
:label="item"
:value="item"
></el-option>
</el-select>
<div></div>
</el-pagination>
<el-pagination
background
layout="prev, pager, next,slot"
:page-size="getObj.pageSize"
:total="total"
:current-page="getObj.pageNum"
@current-change="get"
>
<div>跳至</div>
<el-input
v-model="getObj.pageNum"
style="width: 40px"
@change="checkNumber"
/>
<div></div>
</el-pagination>
@size-change="handlePageSizeChange"
@current-change="handleCurrentChange"
></el-pagination>
</div>
</el-card>
</el-col>

517
gold-system/src/views/recharge/allRecharge.vue

@ -1,67 +1,61 @@
<script setup>
import { ref, onMounted, reactive, computed } from "vue";
import ElementPlus from "element-plus";
import { ElMessage, ElMessageBox } from "element-plus";
import { AiFillRead } from "vue-icons-plus/ai";
import axios from "axios";
import moment from "moment";
import API from "../../api/index.js";
import { ref, onMounted, reactive, computed } from 'vue'
import ElementPlus from 'element-plus'
import { ElMessage, ElMessageBox } from 'element-plus'
import { AiFillRead } from 'vue-icons-plus/ai'
import axios from 'axios'
import moment from 'moment'
import API from '@/util/http'
//
//
const adminData = ref({});
const adminData = ref({})
const getAdminData = async function () {
try {
const result = await API.post(
"http://54.251.137.151:10702/admin/userinfo",
{}
);
adminData.value = result;
console.log("请求成功", result);
console.log("用户信息", adminData.value);
const result = await API({ url: '/admin/userinfo', data: {} })
adminData.value = result
console.log('请求成功', result)
console.log('用户信息', adminData.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
}
};
}
//
const tableData = ref([]);
const tableData = ref([])
// ======================================
// rechargeVo
const rechargeVo = ref({});
const rechargeVo = ref({})
//
const getObj = ref({
pageNum: 1,
pageSize: 50,
});
pageSize: 50
})
//
const total = ref(100);
const total = ref(100)
//
const getTime = ref([]);
const getTime = ref([])
//
const activity = ref([]);
const activity = ref([])
//
const allData = ref([]);
const allData = ref([])
//
const area = ref([]);
const area = ref([])
//
const activeName = ref("all");
const activeName = ref('all')
//
const rechargeWay = ref([]);
const rechargeWay = ref([])
//
const getPayWay = async function () {
try {
const result = await API.post(
"http://54.251.137.151:10702/recharge/recharge/getWay",
{}
);
rechargeWay.value = result.data.filter((item) => item);
console.log("请求成功", result);
console.log("充值方式", rechargeWay.value);
const result = await API({ url: '/recharge/recharge/getWay', data: {} })
rechargeWay.value = result.data.filter((item) => item)
console.log('请求成功', result)
console.log('充值方式', rechargeWay.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
}
};
}
// //
// const tableHeight = computed(function () {
@ -71,340 +65,338 @@ const getPayWay = async function () {
//
//
//
const trueGold = ref(0);
const trueRGold = ref(0);
const trueFGold = ref(0);
const trueGold = ref(0)
const trueRGold = ref(0)
const trueFGold = ref(0)
//
const totalmoney = ref(0);
const totalRcoin = ref(0);
const totalFcoin = ref(0);
const totalmoney = ref(0)
const totalRcoin = ref(0)
const totalFcoin = ref(0)
//
const pendingGold = ref(0);
const pendingRGold = ref(0);
const pendingFGold = ref(0);
const pendingGold = ref(0)
const pendingRGold = ref(0)
const pendingFGold = ref(0)
//
const approvedGold = ref(0);
const approvedRGold = ref(0);
const approvedFGold = ref(0);
const approvedGold = ref(0)
const approvedRGold = ref(0)
const approvedFGold = ref(0)
//
const rejectedGold = ref(0);
const rejectedRGold = ref(0);
const rejectedFGold = 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 (adminData.value.area === '泰国') {
rechargeVo.value.areas = ['泰国', '越南']
} else if (adminData.value.area !== '总部') {
rechargeVo.value.area = adminData.value.area
}
//
if (typeof val === "number") {
getObj.value.pageNum = val;
if (typeof val === 'number') {
getObj.value.pageNum = val
}
//
if (getTime.value != null) {
if (getTime.value.startDate != "" && getTime.value.endDate != "") {
rechargeVo.value.startDate = getTime.value[0];
rechargeVo.value.endDate = getTime.value[1];
if (getTime.value.startDate != '' && getTime.value.endDate != '') {
rechargeVo.value.startDate = getTime.value[0]
rechargeVo.value.endDate = getTime.value[1]
}
} else {
rechargeVo.value.startDate = "";
rechargeVo.value.endDate = "";
rechargeVo.value.startDate = ''
rechargeVo.value.endDate = ''
}
//
rechargeVo.value.sortField = sortField.value;
rechargeVo.value.sortOrder = sortOrder.value;
console.log("搜索参数", getObj.value);
rechargeVo.value.sortField = sortField.value
rechargeVo.value.sortOrder = sortOrder.value
console.log('搜索参数', getObj.value)
// POST
const result = await API.post(
"http://54.251.137.151:10702/recharge/recharge",
{
...getObj.value,
rechargeVo: { ...rechargeVo.value },
}
);
const result = await API({
url: '/recharge/recharge',
data: { ...getObj.value, rechargeVo: { ...rechargeVo.value } }
})
// rechargeVo.value
const detailWithoutSort = ref({
area: rechargeVo.value.area,
adminId: rechargeVo.value.adminId,
startDate: rechargeVo.value.startDate,
endDate: rechargeVo.value.endDate,
});
const result2 = await API.post(
"http://54.251.137.151:10702/recharge/recharge/RechargeA",
{
...detailWithoutSort.value,
endDate: rechargeVo.value.endDate
})
const result2 = await API({
url: '/recharge/recharge/RechargeA',
data: {
...detailWithoutSort.value
}
);
})
// result2
if (!result2 || !result2.data || result2.data.length === 0) {
totalmoney.value = 0;
totalRcoin.value = 0;
totalFcoin.value = 0;
totalmoney.value = 0
totalRcoin.value = 0
totalFcoin.value = 0
}
if (result2.data) {
result2.data.forEach((item) => {
switch (item.flag) {
case "待审核":
switch (item.auditStatus) {
case '待审核':
// item.raudit 0
// item.sumRaudit 0
pendingGold.value = item.sumRaudit || 0;
pendingRGold.value = item.sumRaudit1 || 0;
pendingFGold.value = item.sumRaudit2 || 0;
break;
case "已通过":
approvedGold.value = item.sumRaudit || 0;
approvedRGold.value = item.sumRaudit1 || 0;
approvedFGold.value = item.sumRaudit2 || 0;
break;
case "已驳回":
rejectedGold.value = item.sumRaudit || 0;
rejectedRGold.value = item.sumRaudit1 || 0;
rejectedFGold.value = item.sumRaudit2 || 0;
break;
pendingGold.value = item.sumRaudit || 0
pendingRGold.value = item.sumRaudit1 || 0
pendingFGold.value = item.sumRaudit2 || 0
break
case '已通过':
approvedGold.value = item.sumRaudit || 0
approvedRGold.value = item.sumRaudit1 || 0
approvedFGold.value = item.sumRaudit2 || 0
break
case '已驳回':
rejectedGold.value = item.sumRaudit || 0
rejectedRGold.value = item.sumRaudit1 || 0
rejectedFGold.value = item.sumRaudit2 || 0
break
}
});
})
}
trueGold.value =
pendingGold.value + approvedGold.value + rejectedGold.value;
trueGold.value = pendingGold.value + approvedGold.value + rejectedGold.value
trueRGold.value =
pendingRGold.value + approvedRGold.value + rejectedRGold.value;
pendingRGold.value + approvedRGold.value + rejectedRGold.value
trueFGold.value =
pendingFGold.value + approvedFGold.value + rejectedFGold.value;
pendingFGold.value + approvedFGold.value + rejectedFGold.value
//
console.log("请求成功", result);
console.log('请求成功', result)
//
tableData.value = result.data.list;
console.log("tableData", tableData.value);
tableData.value = result.data.list
console.log('tableData', tableData.value)
//
total.value = result.data.total;
console.log("total", total.value);
total.value = result.data.total
console.log('total', total.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const search = function () {
getObj.value.pageNum = 1;
get();
};
getObj.value.pageNum = 1
get()
}
//
const reset = function () {
rechargeVo.value.activityId = "";
rechargeVo.value.rechargeWay = "";
rechargeVo.value.area = "";
rechargeVo.value.startDate = "";
rechargeVo.value.endDate = "";
sortField.value = "";
sortOrder.value = "";
getTime.value = {};
};
rechargeVo.value.activityId = ''
rechargeVo.value.rechargeWay = ''
rechargeVo.value.area = ''
rechargeVo.value.startDate = ''
rechargeVo.value.endDate = ''
sortField.value = ''
sortOrder.value = ''
getTime.value = {}
}
//
const getToday = function () {
const today = new Date();
const today = new Date()
const startDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate()
);
)
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
//
const getYesterday = function () {
const yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
const yesterday = new Date()
yesterday.setDate(yesterday.getDate() - 1)
const startDate = new Date(
yesterday.getFullYear(),
yesterday.getMonth(),
yesterday.getDate()
);
)
const endDate = new Date(
yesterday.getFullYear(),
yesterday.getMonth(),
yesterday.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
// 7
const get7Days = function () {
const today = new Date();
const today = new Date()
const startDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() - 6
);
)
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
//
const adminAll = function () {
console.log("adminAll");
rechargeVo.value.status = "";
getObj.value.pageNum = 1;
get();
};
console.log('adminAll')
rechargeVo.value.status = ''
getObj.value.pageNum = 1
get()
}
//
const adminWait = async function () {
rechargeVo.value.status = 0;
getObj.value.pageNum = 1;
await get();
console.log("adminWait");
trueGold.value = pendingGold.value;
trueRGold.value = pendingRGold.value;
trueFGold.value = pendingFGold.value;
};
rechargeVo.value.status = 0
getObj.value.pageNum = 1
await get()
console.log('adminWait')
trueGold.value = pendingGold.value
trueRGold.value = pendingRGold.value
trueFGold.value = pendingFGold.value
}
//
const adminPass = async function () {
rechargeVo.value.status = 1;
getObj.value.pageNum = 1;
await get();
console.log("adminPass");
trueGold.value = approvedGold.value;
trueRGold.value = approvedRGold.value;
trueFGold.value = approvedFGold.value;
};
rechargeVo.value.status = 1
getObj.value.pageNum = 1
await get()
console.log('adminPass')
trueGold.value = approvedGold.value
trueRGold.value = approvedRGold.value
trueFGold.value = approvedFGold.value
}
//
const adminReject = async function () {
rechargeVo.value.status = 2;
getObj.value.pageNum = 1;
await get();
trueGold.value = rejectedGold.value;
trueRGold.value = rejectedRGold.value;
trueFGold.value = rejectedFGold.value;
console.log("adminReject");
};
rechargeVo.value.status = 2
getObj.value.pageNum = 1
await get()
trueGold.value = rejectedGold.value
trueRGold.value = rejectedRGold.value
trueFGold.value = rejectedFGold.value
console.log('adminReject')
}
//
const handleClick = function (tab, event) {
if (tab.props.name === "all") {
adminAll();
} else if (tab.props.name === "wait") {
adminWait();
} else if (tab.props.name === "pass") {
adminPass();
} else if (tab.props.name === "reject") {
adminReject();
if (tab.props.name === 'all') {
adminAll()
} else if (tab.props.name === 'wait') {
adminWait()
} else if (tab.props.name === 'pass') {
adminPass()
} else if (tab.props.name === 'reject') {
adminReject()
}
};
}
//
const getActivity = async function () {
try {
// POST
const result = await API.post(
"http://54.251.137.151:10702/recharge/activity/select",
{}
);
const result = await API({ url: '/recharge/activity/select', data: {} })
//
console.log("请求成功", result);
console.log('请求成功', result)
//
activity.value = result.data;
console.log("activity", activity.value);
activity.value = result.data
console.log('activity', activity.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
//
const getArea = async function () {
console.log('888888888880000000')
try {
// POST
const result = await API.post(
"http://54.251.137.151:10702/recharge/user/search",
{}
);
const result = await API({ url: '/recharge/user/search', data: {} })
//
console.log("请求成功", result);
console.log('请求成功地区', result.data)
//
area.value = result.data;
console.log("地区", area.value);
area.value = result.data
console.log('地区', area.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const checkNumber = function () {
if (typeof parseInt(getObj.value.pageNum) === "number") {
console.log(
"总共有多少页" + Math.ceil(total.value / getObj.value.pageSize)
);
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)
) {
getObj.value.pageNum = parseInt(getObj.value.pageNum);
console.log("输入的数字合法");
get();
getObj.value.pageNum = parseInt(getObj.value.pageNum)
console.log('输入的数字合法')
get()
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
};
}
//
onMounted(async function () {
await getAdminData();
await get();
await getActivity();
await getArea();
await getPayWay();
});
getAdminData()
get()
getActivity()
getPayWay()
})
getArea()
const handlePageSizeChange = function (val) {
getObj.value.pageSize = val
get()
}
const handleCurrentChange = function (val) {
getObj.value.pageNum = val
get()
}
//
const sortField = ref("");
const sortOrder = ref("");
const sortField = ref('')
const sortOrder = ref('')
//
const handleSortChange = (column) => {
console.log("排序字段:", column.prop);
console.log("排序方式:", column.order);
if (column.prop === "paidGold") {
sortField.value = "recharge_gold";
} else if (column.prop === "freeGold") {
sortField.value = "free_gold";
} else if (column.prop === "rechargeTime") {
sortField.value = "recharge_time";
} else if (column.prop === "createTime") {
sortField.value = "create_time";
} else if (column.prop === "paidMoney") {
sortField.value = "paid_gold";
console.log('排序字段:', column.prop)
console.log('排序方式:', column.order)
if (column.prop === 'paidGold') {
sortField.value = 'recharge_gold'
} else if (column.prop === 'freeGold') {
sortField.value = 'free_gold'
} else if (column.prop === 'rechargeTime') {
sortField.value = 'recharge_time'
} else if (column.prop === 'createTime') {
sortField.value = 'create_time'
} else if (column.prop === 'paidMoney') {
sortField.value = 'paid_gold'
}
sortOrder.value = column.order === "ascending" ? "ASC" : "DESC";
get();
};
sortOrder.value = column.order === 'ascending' ? 'ASC' : 'DESC'
get()
}
</script>
<template>
@ -512,9 +504,9 @@ const handleSortChange = (column) => {
<el-tab-pane label="已通过" name="pass"></el-tab-pane>
<el-tab-pane label="已驳回" name="reject"></el-tab-pane>
<div>
充值金额{{ trueRGold / 100 }}新币永久金币{{
trueRGold / 100
}}金币免费金币{{ totalFcoin / 100 }}金币
充值金额{{ (trueRGold / 100).toFixed(2) }}新币永久金币{{
(trueRGold / 100).toFixed(2)
}}金币免费金币{{ (totalFcoin / 100).toFixed(2) }}金币
</div>
</el-tabs>
<!-- 设置表格容器的高度和滚动样式 -->
@ -606,7 +598,7 @@ const handleSortChange = (column) => {
<template #default="scope">
<el-image
:preview-src-list="[scope.row.rechargeVoucher]"
preview-teleported="true"
:preview-teleported="true"
:src="scope.row.rechargeVoucher"
alt="凭证"
style="width: 50px; height: 50px"
@ -650,7 +642,7 @@ const handleSortChange = (column) => {
>
<template #default="scope">
{{
moment(scope.row.rechargeTime).format("YYYY-MM-DD HH:mm:ss")
moment(scope.row.rechargeTime).format('YYYY-MM-DD HH:mm:ss')
}}
</template>
</el-table-column>
@ -668,41 +660,12 @@ const handleSortChange = (column) => {
<el-pagination
background
:page-size="getObj.pageSize"
layout="slot"
:total="total"
>
<div>{{ total }},每页</div>
<el-select
v-model="getObj.pageSize"
class="page-size"
@change="get()"
style="width: 80px"
>
<el-option
v-for="item in [5, 10, 20, 50, 100]"
:key="item"
:label="item"
:value="item"
></el-option>
</el-select>
<div></div>
</el-pagination>
<el-pagination
background
layout="prev, pager, next,slot"
:page-size="getObj.pageSize"
:page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
:current-page="getObj.pageNum"
@current-change="get"
>
<div>跳至</div>
<el-input
v-model="getObj.pageNum"
style="width: 40px"
@change="checkNumber"
/>
<div></div>
</el-pagination>
@size-change="handlePageSizeChange"
@current-change="handleCurrentChange"
></el-pagination>
</div>
</el-card>
</el-col>

311
gold-system/src/views/refund/addRefund.vue

@ -1,237 +1,234 @@
<script setup>
import { onMounted, reactive } from "vue";
import { ref, computed, watch } from "vue";
import { ElMessage } 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 { onMounted, reactive } from 'vue'
import { ref, computed, watch } from 'vue'
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'
const addRe = ref({
typeR: "0",
});
typeR: '0'
})
//
const adminData = ref({});
const adminData = ref({})
const getAdminData = async function () {
try {
const result = await API.post(
"http://54.251.137.151:10702/admin/userinfo",
{}
);
adminData.value = result;
addRefund.value.adminId = adminData.value.adminId;
console.log("请求成功", result);
console.log("用户信息", user.value);
const result = await API({ url: '/admin/userinfo', data: {} })
adminData.value = result
addRefund.value.adminId = adminData.value.adminId
console.log('请求成功', result)
console.log('用户信息', user.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
}
};
}
// 退
const addRefund = ref({
updateType: "3",
updateType: '3',
allCoin: 0,
orderCode: "",
refundGoods: "",
orderCode: '',
refundGoods: '',
freeCoin: 0,
rechargeCoin: 0,
taskCoin: 0,
});
taskCoin: 0
})
//
const cancel = function () {
addRefund.value = {};
addRefund.value.updateType = "3";
addRefund.value.rechargeCoin = 0;
addRefund.value.freeCoin = 0;
addRefund.value.taskCoin = 0;
addRefund.value.allCoin = 0;
addRe.value.typeR = 0;
addRefund.value.adminId = adminData.value.adminId;
};
addRefund.value = {}
addRefund.value.updateType = '3'
addRefund.value.rechargeCoin = 0
addRefund.value.freeCoin = 0
addRefund.value.taskCoin = 0
addRefund.value.allCoin = 0
addRe.value.typeR = 0
addRefund.value.adminId = adminData.value.adminId
}
// 退
const add = async function () {
try {
// POST
const result = await API.post(
"http://54.251.137.151:10702/refund/add",
addRefund.value
);
const result = await API({ url: '/refund/add', data: addRefund.value })
if (result.code === 0) {
ElMessage.error(result.msg);
return;
ElMessage.error(result.msg)
return
}
console.log("请求成功", result);
ElMessage.success("添加成功");
console.log('请求成功', result)
ElMessage.success('添加成功')
//
addRefund.value = {};
addRefund.value.adminId = adminData.value.adminId;
addRefund.value.updateType = "3";
addRefund.value.allCoin = 0;
addRefund.value.orderCode = "";
addRefund.value.refundGoods = "";
addRefund.value.freeCoin = 0;
addRefund.value.rechargeCoin = 0;
addRefund.value.taskCoin = 0;
addRefund.value.typeR = 0;
user.value = {};
addRefund.value = {}
addRefund.value.adminId = adminData.value.adminId
addRefund.value.updateType = '3'
addRefund.value.allCoin = 0
addRefund.value.orderCode = ''
addRefund.value.refundGoods = ''
addRefund.value.freeCoin = 0
addRefund.value.rechargeCoin = 0
addRefund.value.taskCoin = 0
addRefund.value.typeR = 0
user.value = {}
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
const addBefore = () => {
Ref.value.validate(async (valid) => {
if (valid) {
ElMessageBox.confirm("确认添加?")
ElMessageBox.confirm('确认添加?')
.then(() => {
add();
console.log("添加成功");
addRefund.value.allCoin = 0;
(addRefund.value.freeCoin = 0),
add()
console.log('添加成功')
addRefund.value.allCoin = 0
;(addRefund.value.freeCoin = 0),
(addRefund.value.rechargeCoin = 0),
(addRefund.value.taskCoin = 0),
(addRefund.value = {});
(addRefund.value = {})
})
.catch(() => {
console.log("取消添加");
});
console.log('取消添加')
})
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
});
};
})
}
//
//
const Ref = ref(null);
const startChange = (val) => {};
const Ref = ref(null)
const startChange = (val) => {}
const rules = reactive({
jwcode: [{ required: true, message: "请输入精网号", trigger: "blur" }],
refundType: [{ required: true, message: "请选择退款类型", trigger: "blur" }],
orderCode: [{ required: true, message: "请选择退款商品", trigger: "blur" }],
taskCoin: [{ required: true, message: "请输入任务金币", trigger: "blur" }],
freeCoin: [{ required: true, message: "请输入免费金币", trigger: "blur" }],
jwcode: [{ required: true, message: '请输入精网号', trigger: 'blur' }],
refundType: [{ required: true, message: '请选择退款类型', trigger: 'blur' }],
orderCode: [{ required: true, message: '请选择退款商品', trigger: 'blur' }],
taskCoin: [{ required: true, message: '请输入任务金币', trigger: 'blur' }],
freeCoin: [{ required: true, message: '请输入免费金币', trigger: 'blur' }],
rechargeCoin: [
{ required: true, message: "请输入永久金币", trigger: "blur" },
{ required: true, message: '请输入永久金币', trigger: 'blur' }
],
allCoin: [
{ required: true, message: "请选择付款方式", trigger: "blur" },
{ required: true, message: '请选择付款方式', trigger: 'blur' },
{
validator: (rule, value) => {
if (value === 0) {
return Promise.reject(new Error("总金币不能为0"));
return Promise.reject(new Error('总金币不能为0'))
}
return Promise.resolve();
return Promise.resolve()
},
trigger: "blur",
},
],
});
trigger: 'blur'
}
]
})
//
const user = ref({
firstRechargeTime: "",
});
firstRechargeTime: ''
})
const getUser = async function (jwcode) {
try {
// POST
const result = await API.post("http://54.251.137.151:10702/recharge/user", {
jwcode: jwcode,
area: adminData.value.area,
});
console.log("请求成功", result);
const result = await API({
url: '/recharge/user',
data: {
jwcode: jwcode,
area: adminData.value.area
}
})
console.log('请求成功', result)
if (result.code === 0) {
ElMessage.error(result.msg);
ElMessage.error(result.msg)
} else {
user.value = result.data;
user.value = result.data
user.value.A =
Number(user.value.pendingRechargeTimes) +
Number(user.value.pendingSpendTimes);
console.log("用户信息", user.value);
ElMessage.success(result.msg);
Number(user.value.pendingSpendTimes)
console.log('用户信息', user.value)
ElMessage.success(result.msg)
}
} catch (error) {
console.log("请求失败", error);
ElMessage.error("查询失败,请检查精网号是否正确");
console.log('请求失败', error)
ElMessage.error('查询失败,请检查精网号是否正确')
//
}
};
}
const calculatedAllGold = computed(() => {
const sum =
Number(addRefund.value.freeCoin) +
Number(addRefund.value.rechargeCoin) +
Number(addRefund.value.taskCoin);
return !isNaN(sum) ? sum : 0;
});
Number(addRefund.value.taskCoin)
return !isNaN(sum) ? sum : 0
})
watch(calculatedAllGold, (newVal) => {
addRefund.value.allCoin = newVal;
});
addRefund.value.allCoin = newVal
})
const AAA = computed(() => {
return addRefund.value.jwcode;
});
return addRefund.value.jwcode
})
watch(AAA, (newVal) => {});
watch(AAA, (newVal) => {})
// 退
const refundType = [
{
value: "退款商品",
label: "退款商品",
},
];
value: '退款商品',
label: '退款商品'
}
]
//
const goods = ref([]);
const goods = ref([])
const getGoods = async function (jwcode) {
try {
// POST
const result = await API.post(
"http://54.251.137.151:10702/consume/getDeatil",
{
const result = await API({
url: '/consume/getDeatil',
data: {
jwcode: jwcode,
area: adminData.value.area,
area: adminData.value.area
}
);
console.log("请求成功", result);
})
console.log('请求成功', result)
if (result.code === 0) {
ElMessage.error(result.msg);
ElMessage.error(result.msg)
} else {
//
goods.value = result.data;
console.log("用户信息", goods.value);
ElMessage.success(result.msg);
goods.value = result.data
console.log('用户信息', goods.value)
ElMessage.success(result.msg)
}
} catch (error) {
console.log("请求失败", error);
ElMessage.error("查询失败,请检查精网号是否正确");
console.log('请求失败', error)
ElMessage.error('查询失败,请检查精网号是否正确')
//
}
};
}
const calculatedRechargeGoods = computed(() => {
return (
+addRefund.value.freeCoin +
+addRefund.value.rechargeCoin +
+addRefund.value.taskCoin
);
});
)
})
watch(calculatedRechargeGoods, (newVal) => {
addRefund.value.allCoin = newVal;
});
addRefund.value.allCoin = newVal
})
watch(calculatedRechargeGoods, (newVal) => {
addRefund.value.allCoin = newVal;
console.log("计算的总金币", newVal);
});
addRefund.value.allCoin = newVal
console.log('计算的总金币', newVal)
})
//
@ -239,42 +236,42 @@ watch(calculatedRechargeGoods, (newVal) => {
const getProductByOrderCode = async function (item) {
try {
// POST
const result = await API.post(
"http://54.251.137.151:10702/refund/searchByOrderCode?orderCode=" + item,
{}
);
addRefund.value.contactId = result.data.detailyId;
addRefund.value.refundGoods = result.data.productName;
addRefund.value.orderCode = result.data.orderCode;
addRefund.value.taskCoin = (result.data.taskCoin * -1) / 100;
addRefund.value.freeCoin = (result.data.freeCoin * -1) / 100;
addRefund.value.rechargeCoin = (result.data.rechargeCoin * -1) / 100;
const result = await API({
url: '/refund/searchByOrderCode?orderCode=' + item,
data: {}
})
addRefund.value.contactId = result.data.detailyId
addRefund.value.refundGoods = result.data.productName
addRefund.value.orderCode = result.data.orderCode
addRefund.value.taskCoin = (result.data.taskCoin * -1) / 100
addRefund.value.freeCoin = (result.data.freeCoin * -1) / 100
addRefund.value.rechargeCoin = (result.data.rechargeCoin * -1) / 100
addRefund.value.allCoin =
(result.data.taskCoin * -1 +
result.data.freeCoin * -1 +
result.data.rechargeCoin * -1) /
100;
console.log("请求成功", addRefund.value);
100
console.log('请求成功', addRefund.value)
if (result.data.code === 0) {
ElMessage.error(result.data.msg);
ElMessage.error(result.data.msg)
} else {
ElMessage.success("选择成功");
ElMessage.success('选择成功')
}
} catch (error) {
console.log("请求失败", error);
ElMessage.error("查询失败,请检查精网号是否正确");
console.log('请求失败', error)
ElMessage.error('查询失败,请检查精网号是否正确')
//
}
};
}
const handleSelectionChange = (value) => {
getProductByOrderCode(value);
console.log("选择的订单号", value);
const selectedItem = goods.value.find((item) => item.detailId === value);
};
getProductByOrderCode(value)
console.log('选择的订单号', value)
const selectedItem = goods.value.find((item) => item.detailId === value)
}
//
onMounted(async function () {
await getAdminData();
});
await getAdminData()
})
</script>
<template>
@ -446,7 +443,7 @@ onMounted(async function () {
<el-col :span="10">
<el-form-item label="首次充值日期">
<p v-if="user.firstRechargeDate">
{{ moment(user.firstRechargeDate).format("YYYY-MM-DD HH:mm:ss") }}
{{ moment(user.firstRechargeDate).format('YYYY-MM-DD HH:mm:ss') }}
</p>
</el-form-item>
</el-col>

541
gold-system/src/views/refund/allRefund.vue

@ -1,57 +1,54 @@
<script setup>
import { ref, onMounted, reactive, computed } from "vue";
import ElementPlus from "element-plus";
import { AiFillRead } from "vue-icons-plus/ai";
import { ElMessage, ElMessageBox } from "element-plus";
import axios from "axios";
import moment from "moment";
import API from "../../api/index.js";
import { ref, onMounted, reactive, computed } from 'vue'
import ElementPlus from 'element-plus'
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({});
const adminData = ref({})
const getAdminData = async function () {
try {
const result = await API.post(
"http://54.251.137.151:10702/admin/userinfo",
{}
);
const result = await API({ url: '/admin/userinfo', data: {} })
adminData.value = result;
console.log("请求成功", result);
console.log("用户信息", adminData.value);
adminData.value = result
console.log('请求成功', result)
console.log('用户信息', adminData.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
}
};
}
//
const tableData = ref([]);
const tableData = ref([])
// ======================================
// detail
const detail = ref({});
const detail = ref({})
//
const getObj = ref({
pageNum: 1,
pageSize: 50,
});
pageSize: 50
})
//
const total = ref(100);
const total = ref(100)
//
const getTime = ref([]);
const getTime = ref([])
//
const allData = ref([]);
const allData = ref([])
//
const area = ref([]);
const area = ref([])
//
const activeName = ref("all");
const activeName = ref('all')
// 退
const consumeType = [
{
value: "退款商品",
label: "退款商品",
},
];
value: '退款商品',
label: '退款商品'
}
]
// //
// const tableHeight = computed(function () {
@ -60,371 +57,375 @@ const consumeType = [
//
//
const trueGold = ref(0);
const trueRgold = ref(0);
const trueFgold = ref(0);
const trueTgold = ref(0);
const trueGold = ref(0)
const trueRgold = ref(0)
const trueFgold = ref(0)
const trueTgold = ref(0)
//
const pendingRgold = ref(0);
const pendingFgold = ref(0);
const pendingTgold = ref(0);
const pendingRgold = ref(0)
const pendingFgold = ref(0)
const pendingTgold = ref(0)
//
const pendingGold = ref(0);
const pendingGold = ref(0)
//
const approvedRgold = ref(0);
const approvedFgold = ref(0);
const approvedTgold = ref(0);
const approvedRgold = ref(0)
const approvedFgold = ref(0)
const approvedTgold = ref(0)
//
const approvedGold = ref(0);
const approvedGold = ref(0)
//
const rejectedRgold = ref(0);
const rejectedFgold = ref(0);
const rejectedTgold = ref(0);
const rejectedRgold = ref(0)
const rejectedFgold = ref(0)
const rejectedTgold = ref(0)
//
const rejectedGold = ref(0);
const rejectedGold = ref(0)
// ==============================================================
//
const get = async function (val) {
try {
//
if (adminData.value.area === "泰国") {
detail.value.areas = ["泰国", "越南"];
} else if (adminData.value.area !== "总部") {
detail.value.area = adminData.value.area;
if (adminData.value.area === '泰国') {
detail.value.areas = ['泰国', '越南']
} else if (adminData.value.area !== '总部') {
detail.value.area = adminData.value.area
}
//
if (typeof val === "number") {
getObj.value.pageNum = val;
if (typeof val === 'number') {
getObj.value.pageNum = val
}
//
if (getTime.value != null) {
if (getTime.value.startDate != "" && getTime.value.endDate != "") {
detail.value.startDate = getTime.value[0];
detail.value.endDate = getTime.value[1];
if (getTime.value.startDate != '' && getTime.value.endDate != '') {
detail.value.startDate = getTime.value[0]
detail.value.endDate = getTime.value[1]
}
} else {
detail.value.startDate = "";
detail.value.endDate = "";
detail.value.startDate = ''
detail.value.endDate = ''
}
//
detail.value.sortField = sortField.value;
detail.value.sortOrder = sortOrder.value;
console.log("搜索参数", getObj.value);
detail.value.sortField = sortField.value
detail.value.sortOrder = sortOrder.value
console.log('搜索参数', getObj.value)
// POST
const result = await API.post("http://54.251.137.151:10702/refund/search", {
...getObj.value,
detail: { ...detail.value },
});
const result = await API({
url: '/refund/search',
data: {
...getObj.value,
detail: { ...detail.value }
}
})
// detail.value
const detailWithoutSort = { ...detail.value };
delete detailWithoutSort.sortField;
delete detailWithoutSort.sortOrder;
const detailWithoutSort = { ...detail.value }
delete detailWithoutSort.sortField
delete detailWithoutSort.sortOrder
const result2 = await API.post(
"http://54.251.137.151:10702/refund/RefundA",
{
...detailWithoutSort,
const result2 = await API({
url: '/refund/RefundA',
data: {
...detailWithoutSort
}
);
})
//
if (result2.data) {
result2.data.forEach((item) => {
switch (item.status) {
case "待审核":
case '待审核':
// item.raudit 0
pendingRgold.value = item.sumRaudit1 || 0;
pendingFgold.value = item.sumRaudit2 || 0;
pendingTgold.value = item.sumRaudit3 || 0;
pendingRgold.value = item.sumRaudit1 || 0
pendingFgold.value = item.sumRaudit2 || 0
pendingTgold.value = item.sumRaudit3 || 0
// item.sumRaudit 0
pendingGold.value = item.sumRaudit || 0;
break;
case "已通过":
approvedRgold.value = item.sumRaudit1 || 0;
approvedFgold.value = item.sumRaudit2 || 0;
approvedTgold.value = item.sumRaudit3 || 0;
approvedGold.value = item.sumRaudit || 0;
break;
case "已驳回":
rejectedRgold.value = item.sumRaudit1 || 0;
rejectedFgold.value = item.sumRaudit2 || 0;
rejectedTgold.value = item.sumRaudit3 || 0;
rejectedGold.value = item.sumRaudit || 0;
break;
pendingGold.value = item.sumRaudit || 0
break
case '已通过':
approvedRgold.value = item.sumRaudit1 || 0
approvedFgold.value = item.sumRaudit2 || 0
approvedTgold.value = item.sumRaudit3 || 0
approvedGold.value = item.sumRaudit || 0
break
case '已驳回':
rejectedRgold.value = item.sumRaudit1 || 0
rejectedFgold.value = item.sumRaudit2 || 0
rejectedTgold.value = item.sumRaudit3 || 0
rejectedGold.value = item.sumRaudit || 0
break
}
});
})
}
trueFgold.value =
pendingFgold.value + approvedFgold.value + rejectedFgold.value;
pendingFgold.value + approvedFgold.value + rejectedFgold.value
trueRgold.value =
pendingRgold.value + approvedRgold.value + rejectedRgold.value;
pendingRgold.value + approvedRgold.value + rejectedRgold.value
trueTgold.value =
pendingTgold.value + approvedTgold.value + rejectedTgold.value;
trueGold.value =
pendingGold.value + approvedGold.value + rejectedGold.value;
pendingTgold.value + approvedTgold.value + rejectedTgold.value
trueGold.value = pendingGold.value + approvedGold.value + rejectedGold.value
//
console.log("请求成功", result);
console.log('请求成功', result)
//
tableData.value = result.data.list;
console.log("tableData", tableData.value);
tableData.value = result.data.list
console.log('tableData', tableData.value)
//
total.value = result.data.total;
console.log("total", total.value);
total.value = result.data.total
console.log('total', total.value)
//
handleClick();
handleClick()
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const search = function () {
getObj.value.pageNum = 1;
get();
};
getObj.value.pageNum = 1
get()
}
//
const reset = function () {
detail.value.refundGoods = "";
detail.value.refundType = "";
detail.value.area = "";
detail.value.startDate = "";
detail.value.endDate = "";
sortField.value = "";
sortOrder.value = "";
getTime.value = {};
};
detail.value.refundGoods = ''
detail.value.refundType = ''
detail.value.area = ''
detail.value.startDate = ''
detail.value.endDate = ''
sortField.value = ''
sortOrder.value = ''
getTime.value = {}
}
//
const getToday = function () {
const today = new Date();
const today = new Date()
const startDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate()
);
)
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
//
const getYesterday = function () {
const yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
const yesterday = new Date()
yesterday.setDate(yesterday.getDate() - 1)
const startDate = new Date(
yesterday.getFullYear(),
yesterday.getMonth(),
yesterday.getDate()
);
)
const endDate = new Date(
yesterday.getFullYear(),
yesterday.getMonth(),
yesterday.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
// 7
const get7Days = function () {
const today = new Date();
const today = new Date()
const startDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() - 6
);
)
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
//
const adminAll = function () {
console.log("adminAll");
detail.value.status = "";
getObj.value.pageNum = 1;
console.log('adminAll')
detail.value.status = ''
getObj.value.pageNum = 1
get();
get()
trueFgold.value =
pendingFgold.value + approvedFgold.value + rejectedFgold.value;
pendingFgold.value + approvedFgold.value + rejectedFgold.value
trueRgold.value =
pendingRgold.value + approvedRgold.value + rejectedRgold.value;
pendingRgold.value + approvedRgold.value + rejectedRgold.value
trueTgold.value =
pendingTgold.value + approvedTgold.value + rejectedTgold.value;
trueGold.value = pendingGold.value + approvedGold.value + rejectedGold.value;
};
pendingTgold.value + approvedTgold.value + rejectedTgold.value
trueGold.value = pendingGold.value + approvedGold.value + rejectedGold.value
}
//
const adminWait = async function () {
detail.value.status = 0;
getObj.value.pageNum = 1;
await get();
console.log("adminWait");
trueFgold.value = pendingFgold.value;
trueRgold.value = pendingRgold.value;
trueTgold.value = pendingTgold.value;
trueGold.value = pendingGold.value;
};
detail.value.status = 0
getObj.value.pageNum = 1
await get()
console.log('adminWait')
trueFgold.value = pendingFgold.value
trueRgold.value = pendingRgold.value
trueTgold.value = pendingTgold.value
trueGold.value = pendingGold.value
}
//
const adminPass = async function () {
detail.value.status = 1;
getObj.value.pageNum = 1;
await get();
console.log("adminPass");
trueFgold.value = approvedFgold.value;
trueRgold.value = approvedRgold.value;
trueTgold.value = approvedTgold.value;
trueGold.value = approvedGold.value;
};
detail.value.status = 1
getObj.value.pageNum = 1
await get()
console.log('adminPass')
trueFgold.value = approvedFgold.value
trueRgold.value = approvedRgold.value
trueTgold.value = approvedTgold.value
trueGold.value = approvedGold.value
}
//
const adminReject = async function () {
detail.value.status = 2;
getObj.value.pageNum = 1;
await get();
console.log("adminReject");
trueFgold.value = rejectedFgold.value;
trueRgold.value = rejectedRgold.value;
trueTgold.value = rejectedTgold.value;
trueGold.value = rejectedGold.value;
};
detail.value.status = 2
getObj.value.pageNum = 1
await get()
console.log('adminReject')
trueFgold.value = rejectedFgold.value
trueRgold.value = rejectedRgold.value
trueTgold.value = rejectedTgold.value
trueGold.value = rejectedGold.value
}
//
// tab.props.nameall
const tabName = ref("all");
const tabName = ref('all')
const handleClick = function (tab, event) {
if (tab.props.name === "all") {
adminAll();
} else if (tab.props.name === "wait") {
adminWait();
} else if (tab.props.name === "pass") {
adminPass();
} else if (tab.props.name === "reject") {
adminReject();
if (tab.props.name === 'all') {
adminAll()
} else if (tab.props.name === 'wait') {
adminWait()
} else if (tab.props.name === 'pass') {
adminPass()
} else if (tab.props.name === 'reject') {
adminReject()
}
};
}
//
const getArea = async function () {
try {
// POST
const result = await API.post(
"http://54.251.137.151:10702/recharge/user/search",
{}
);
const result = await API({ url: '/recharge/user/search', data: {} })
//
console.log("请求成功", result);
console.log('请求成功', result)
//
area.value = result.data;
console.log("地区", area.value);
area.value = result.data
console.log('地区', area.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const delObj = ref({});
const delObj = ref({})
const del = function (row) {
delObj.value.detailId = row.detailId;
console.log("delObj", delObj.value);
};
delObj.value.detailId = row.detailId
console.log('delObj', delObj.value)
}
//
const delConfirm = async function () {
try {
console.log("delObj", delObj.value);
console.log('delObj', delObj.value)
// POST
const result = await API.post(
"http://54.251.137.151:10702/refund/softDelete?detailId=" +
delObj.value.detailId,
{}
);
const result = await API({
url: '/refund/softDelete?detailId=' + delObj.value.detailId,
data: {}
})
//
console.log("请求成功", result);
console.log('请求成功', result)
//
get();
get()
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const goods = ref([]);
const goods = ref([])
const getGoods = async function () {
try {
// POST
const result = await API.post("http://54.251.137.151:10702/product", {});
const result = await API({ url: '/product', data: {} })
//
console.log("请求成功", result);
console.log('请求成功', result)
//
goods.value = result.data;
console.log("allData", allData.value);
console.log("地区", area.value);
goods.value = result.data
console.log('allData', allData.value)
console.log('地区', area.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
getGoods();
}
getGoods()
//
const checkNumber = function () {
if (typeof parseInt(getObj.value.pageNum) === "number") {
console.log(
"总共有多少页" + Math.ceil(total.value / getObj.value.pageSize)
);
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)
) {
getObj.value.pageNum = parseInt(getObj.value.pageNum);
console.log("输入的数字合法");
get();
getObj.value.pageNum = parseInt(getObj.value.pageNum)
console.log('输入的数字合法')
get()
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
};
}
//
onMounted(async function () {
await getAdminData();
await get();
await getArea();
});
await getAdminData()
await get()
await getArea()
})
//
const sortField = ref("");
const sortOrder = ref("");
const sortField = ref('')
const sortOrder = ref('')
//
const handleSortChange = (column) => {
console.log("排序字段:", column.prop);
console.log("排序方式:", column.order);
if (column.prop === "rechargeCoin") {
sortField.value = "recharge_coin";
} else if (column.prop === "taskCoin") {
sortField.value = "task_coin";
} else if (column.prop === "freeCoin") {
sortField.value = "free_coin";
} else if (column.prop === "createTime") {
sortField.value = "create_time";
console.log('排序字段:', column.prop)
console.log('排序方式:', column.order)
if (column.prop === 'rechargeCoin') {
sortField.value = 'recharge_coin'
} else if (column.prop === 'taskCoin') {
sortField.value = 'task_coin'
} else if (column.prop === 'freeCoin') {
sortField.value = 'free_coin'
} else if (column.prop === 'createTime') {
sortField.value = 'create_time'
}
sortOrder.value = column.order === "ascending" ? "ASC" : "DESC";
get();
};
sortOrder.value = column.order === 'ascending' ? 'ASC' : 'DESC'
get()
}
const handlePageSizeChange = function (val) {
getObj.value.pageSize = val
get()
}
const handleCurrentChange = function (val) {
getObj.value.pageNum = val
get()
}
</script>
<template>
@ -460,6 +461,7 @@ const handleSortChange = (column) => {
size="large"
style="width: 240px"
clearable
>
<el-option
v-for="item in goods"
@ -647,7 +649,7 @@ const handleSortChange = (column) => {
width="180px"
>
<template #default="scope">
{{ moment(scope.row.createTime).format("YYYY-MM-DD HH:mm:ss") }}
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
</el-table-column>
<el-table-column
@ -684,41 +686,12 @@ const handleSortChange = (column) => {
<el-pagination
background
:page-size="getObj.pageSize"
layout="slot"
:page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
>
<div>{{ total }},每页</div>
<el-select
v-model="getObj.pageSize"
class="page-size"
@change="get()"
style="width: 80px"
>
<el-option
v-for="item in [5, 10, 20, 50, 100]"
:key="item"
:label="item"
:value="item"
></el-option>
</el-select>
<div></div>
</el-pagination>
<el-pagination
background
layout="prev, pager, next,slot"
:page-size="getObj.pageSize"
:total="total"
:current-page="getObj.pageNum"
@current-change="get"
>
<div>跳至</div>
<el-input
v-model="getObj.pageNum"
style="width: 40px"
@change="checkNumber"
/>
<div></div>
</el-pagination>
@size-change="handlePageSizeChange"
@current-change="handleCurrentChange"
></el-pagination>
</div>
</el-card>
</el-col>

530
gold-system/src/views/usergold/index.vue

@ -1,64 +1,65 @@
<script setup>
import { ref, onMounted, reactive, computed } from "vue";
import ElementPlus from "element-plus";
import { ElMessage, ElMessageBox } from "element-plus";
import axios from "axios";
import moment from "moment";
import { ta } from "element-plus/es/locales.mjs";
import API from "../../api/index.js";
import * as XLSX from "xlsx";
import { ref, onMounted, reactive, computed } from 'vue'
import ElementPlus from 'element-plus'
import { ElMessage, ElMessageBox } from 'element-plus'
import axios from 'axios'
import moment from 'moment'
import { ta } from 'element-plus/es/locales.mjs'
import API from '@/util/http'
import { writeFile, utils } from 'xlsx'
//
//
const adminData = ref({});
const adminData = ref({})
const getAdminData = async function () {
try {
const result = await API.post(
"http://54.251.137.151:10702/admin/userinfo",
{}
);
adminData.value = result;
console.log("请求成功", result);
console.log("用户信息", adminData.value);
const result = await API({
url: '/admin/userinfo',
method: 'post',
data: {}
})
adminData.value = result
console.log('请求成功', result)
console.log('用户信息', adminData.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
}
};
}
//
const tableData = ref([]);
const tableData = ref([])
//
// const tableAllData = ref([]);
//
const rechargeCoin = ref(0);
const freeCoin = ref(0);
const taskCoin = ref(0);
const rechargeCoin = ref(0)
const freeCoin = ref(0)
const taskCoin = ref(0)
// ===========================================
//
const total = ref(100);
const total = ref(100)
//
const getTime = ref([]);
const getTime = ref([])
// detailY
const detailY = ref({});
const detailY = ref({})
//
const getAllObj = ref({});
const getAllObj = ref({})
//
const getObj = ref({
pageNum: 1,
pageSize: 50,
});
pageSize: 50
})
//excel
const getPutEX = ref(false);
const getPutEX = ref(false)
//
const num = [
{
value: "1",
label: "增加",
value: '1',
label: '增加'
},
{
value: "2",
label: "减少",
},
];
value: '2',
label: '减少'
}
]
// //
// const tableHeight = computed(function () {
@ -71,49 +72,50 @@ const num = [
const get = async function (val) {
try {
//
if (adminData.value.area === "泰国") {
detailY.value.areas = ["泰国", "越南"];
} else if (adminData.value.area !== "总部") {
detailY.value.area = adminData.value.area;
if (adminData.value.area === '泰国') {
detailY.value.areas = ['泰国', '越南']
} else if (adminData.value.area !== '总部') {
detailY.value.area = adminData.value.area
}
//
if (typeof val === "number") {
getObj.value.pageNum = val;
if (typeof val === 'number') {
getObj.value.pageNum = val
}
//
if (getTime.value != null) {
if (getTime.value.startDate != "" && getTime.value.endDate != "") {
detailY.value.startDate = getTime.value[0];
detailY.value.endDate = getTime.value[1];
if (getTime.value.startDate != '' && getTime.value.endDate != '') {
detailY.value.startDate = getTime.value[0]
detailY.value.endDate = getTime.value[1]
}
} else {
detailY.value.startDate = "";
detailY.value.endDate = "";
detailY.value.startDate = ''
detailY.value.endDate = ''
}
//
detailY.value.sortField = sortField.value;
detailY.value.sortOrder = sortOrder.value;
console.log("搜索参数", getObj.value);
detailY.value.sortField = sortField.value
detailY.value.sortOrder = sortOrder.value
console.log('搜索参数', getObj.value)
// POST
const result = await API.post("http://54.251.137.151:10702/detailY", {
...getObj.value,
detailY: { ...detailY.value },
});
const result = await API({
url: '/detailY',
method: 'post',
data: { ...getObj.value, detailY: { ...detailY.value } }
})
// const result2 = await API.post("http://54.251.137.151:10702/detailY", {
// ...getAllObj.value,
// detailY: { ...detailY.value },
// });
//
console.log("请求成功", result);
console.log('请求成功', result)
// console.log("2", result2);
//
tableData.value = result.data.list;
console.log("tableData", tableData.value);
tableData.value = result.data.list
console.log('tableData', tableData.value)
// tableAllData.value = result2.data;
// console.log("tableAllData", tableAllData.value);
//
total.value = result.data.total;
console.log("total", total.value);
total.value = result.data.total
console.log('total', total.value)
// 100
// 100
// rechargeCoin.value = parseFloat((tableAllData.value.sumR / 100).toFixed(2));
@ -131,120 +133,118 @@ const get = async function (val) {
// taskCoin.value
// );
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const search = function () {
getObj.value.pageNum = 1;
get();
};
getObj.value.pageNum = 1
get()
}
//
const reset = function () {
//
delete detailY.value.jwcode;
delete detailY.value.jwcode
//
delete detailY.value.num;
delete detailY.value.num
//
delete detailY.value.startDate;
delete detailY.value.startDate
//
delete detailY.value.endDate;
delete detailY.value.endDate
//
delete detailY.value.area;
delete sortField.value;
delete sortOrder.value;
getTime.value = {};
delete detailY.value.area
delete sortField.value
delete sortOrder.value
getTime.value = {}
//
delete detailY.value.consumePlatform;
};
delete detailY.value.consumePlatform
}
//
const getToday = function () {
const today = new Date();
const today = new Date()
const startDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate()
);
)
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
//
const getYesterday = function () {
const yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
const yesterday = new Date()
yesterday.setDate(yesterday.getDate() - 1)
const startDate = new Date(
yesterday.getFullYear(),
yesterday.getMonth(),
yesterday.getDate()
);
)
const endDate = new Date(
yesterday.getFullYear(),
yesterday.getMonth(),
yesterday.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
// 7
const get7Days = function () {
const today = new Date();
const today = new Date()
const startDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() - 6
);
)
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
//
const checkNumber = function () {
if (typeof parseInt(getObj.value.pageNum) === "number") {
console.log(
"总共有多少页" + Math.ceil(total.value / getObj.value.pageSize)
);
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)
) {
getObj.value.pageNum = parseInt(getObj.value.pageNum);
console.log("输入的数字合法");
get();
getObj.value.pageNum = parseInt(getObj.value.pageNum)
console.log('输入的数字合法')
get()
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
};
}
//
onMounted(async function () {
await getAdminData();
await get();
});
await getAdminData()
await get()
})
// excel
// Excel
@ -262,243 +262,250 @@ const json_fields = (row) => {
row.createAdmin, //
row.createTime,
row.name,
row.id,
];
};
row.id
]
}
//
const json_meta = [
[
{
key: "charset",
value: "utf-8",
},
],
];
key: 'charset',
value: 'utf-8'
}
]
]
const headers = [
"精网号",
"地区",
"平台信息",
"数量",
"更新类型",
"永久金币",
"免费金币",
"任务金币",
"提交人",
"更新时间",
"用户名",
"id",
];
'精网号',
'地区',
'平台信息',
'数量',
'数量更新类型',
'永久金币',
'免费金币',
'任务金币',
'提交人',
'更新时间',
'用户名',
'id'
]
const exportExcel = () => {
// json_fields
const data = excelInfo.value.map(json_fields);
const ws = XLSX.utils.aoa_to_sheet(data);
const data = excelInfo.value.map(json_fields)
const ws = utils.aoa_to_sheet(data)
//
XLSX.utils.sheet_add_aoa(ws, [headers], { origin: "A1" });
const wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
XLSX.writeFile(wb, "客户金币明细.xlsx");
};
const today = new Date();
utils.sheet_add_aoa(ws, [headers], { origin: 'A1' })
const wb = utils.book_new()
utils.book_append_sheet(wb, ws, 'Sheet1')
writeFile(wb, '客户金币明细.xlsx')
}
const today = new Date()
const startDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate()
);
)
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
);
)
const putExcel = ref({
startDate: startDate,
endDate: endDate,
});
const excelInfo = ref({});
const loading = ref(false);
endDate: endDate
})
const excelInfo = ref({})
const loading = ref(false)
const areyour = async function () {
try {
loading.value = true;
const result = await API.post(
"http://54.251.137.151:10702/detailY/searchAll",
{
...putExcel.value,
}
);
excelInfo.value = result.data;
loading.value = true
const result = await API({
url: '/detailY/searchAll',
method: 'post',
data: { ...putExcel.value }
})
excelInfo.value = result.data
// excelInfo
if (Array.isArray(excelInfo.value)) {
excelInfo.value.forEach((item) => {
if (item.rechargeCoin) {
item.rechargeCoin = item.rechargeCoin / 100;
item.rechargeCoin = item.rechargeCoin / 100
}
if (item.freeCoin) {
item.freeCoin = item.freeCoin / 100;
item.freeCoin = item.freeCoin / 100
}
if (item.taskCoin) {
item.taskCoin = item.taskCoin / 100;
item.taskCoin = item.taskCoin / 100
}
});
})
}
areyouright.value = true;
areyouright.value = true
ElMessage({
type: "success",
message: "查询成功",
});
loading.value = false;
type: 'success',
message: '查询成功'
})
loading.value = false
} catch (error) {
console.log("请求失败", error);
loading.value = false;
console.log('请求失败', error)
loading.value = false
}
};
}
const areyouright = ref(false);
const areyouright = ref(false)
//
const area = [
{
value: "马来西亚",
label: "马来西亚",
value: '马来西亚',
label: '马来西亚'
},
{
value: "新加坡",
label: "新加坡",
value: '新加坡',
label: '新加坡'
},
{
value: "香港",
label: "香港",
value: '香港',
label: '香港'
},
{
value: "泰国",
label: "泰国",
value: '泰国',
label: '泰国'
},
{
value: "加拿大",
label: "加拿大",
value: '加拿大',
label: '加拿大'
},
{
value: "越南HCM",
label: "越南HCM",
},
];
value: '越南HCM',
label: '越南HCM'
}
]
//
const platform = [
{
value: "4",
label: "金币系统",
value: '4',
label: '金币系统'
},
{
value: "1",
label: "ERP系统",
value: '1',
label: 'ERP系统'
},
{
value: "2",
label: "Homily Chart",
value: '2',
label: 'Homily Chart'
},
{
value: "3",
label: "Homily Link",
value: '3',
label: 'Homily Link'
},
{
value: "0",
label: "初始化金币",
},
];
const TimeGet = ref("1");
value: '0',
label: '初始化金币'
}
]
const TimeGet = ref('1')
//
const getT = function () {
const today = new Date();
const today = new Date()
const startDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate()
);
)
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
);
putExcel.value.startDate = startDate;
putExcel.value.endDate = endDate;
console.log("putExcel", putExcel.value);
};
)
putExcel.value.startDate = startDate
putExcel.value.endDate = endDate
console.log('putExcel', putExcel.value)
}
//3
const get3 = function () {
const today = new Date();
const today = new Date()
const startDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() - 2
);
)
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
);
putExcel.value.startDate = startDate;
putExcel.value.endDate = endDate;
console.log("putExcel", putExcel.value);
};
)
putExcel.value.startDate = startDate
putExcel.value.endDate = endDate
console.log('putExcel', putExcel.value)
}
// 7
const get7 = function () {
const today = new Date();
const today = new Date()
const startDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() - 6
);
)
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
);
putExcel.value.startDate = startDate;
putExcel.value.endDate = endDate;
console.log("putExcel", putExcel.value);
};
)
putExcel.value.startDate = startDate
putExcel.value.endDate = endDate
console.log('putExcel', putExcel.value)
}
// 30
const get30 = function () {
const today = new Date();
const today = new Date()
const startDate = new Date(
today.getFullYear(),
today.getMonth() - 1,
today.getDate()
);
)
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
);
putExcel.value.startDate = startDate;
putExcel.value.endDate = endDate;
console.log("putExcel", putExcel.value);
};
)
putExcel.value.startDate = startDate
putExcel.value.endDate = endDate
console.log('putExcel', putExcel.value)
}
//
const sortField = ref("");
const sortOrder = ref("");
const sortField = ref('')
const sortOrder = ref('')
//
const handleSortChange = (column) => {
console.log("排序字段:", column.prop);
console.log("排序方式:", column.order);
if (column.prop === "rechargeCoin") {
sortField.value = "recharge_coin";
} else if (column.prop === "taskCoin") {
sortField.value = "task_coin";
} else if (column.prop === "freeCoin") {
sortField.value = "free_coin";
} else if (column.prop === "createTime") {
sortField.value = "create_time";
} else if (column.prop === "gold") {
sortField.value = "gold";
console.log('排序字段:', column.prop)
console.log('排序方式:', column.order)
if (column.prop === 'rechargeCoin') {
sortField.value = 'recharge_coin'
} else if (column.prop === 'taskCoin') {
sortField.value = 'task_coin'
} else if (column.prop === 'freeCoin') {
sortField.value = 'free_coin'
} else if (column.prop === 'createTime') {
sortField.value = 'create_time'
} else if (column.prop === 'gold') {
sortField.value = 'gold'
}
sortOrder.value = column.order === "ascending" ? "ASC" : "DESC";
get();
};
sortOrder.value = column.order === 'ascending' ? 'ASC' : 'DESC'
}
get()
const handlePageSizeChange = function (val) {
getObj.value.pageSize = val
get()
}
const handleCurrentChange = function (val) {
getObj.value.pageNum = val
get()
}
</script>
<template>
@ -607,7 +614,7 @@ const handleSortChange = (column) => {
</el-col>
<el-col :span="6">
<div class="head-card-element">
<el-text class="mx-1" size="large">更新类型</el-text>
<el-text class="mx-1" size="large">数量更新类型</el-text>
<el-select
v-model="detailY.num"
placeholder="请选择更新类型"
@ -785,7 +792,7 @@ const handleSortChange = (column) => {
>
<template #default="scope">
<span>{{
moment(scope.row.createTime).format("YYYY-MM-DD HH:mm:ss")
moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss')
}}</span>
</template>
</el-table-column>
@ -798,41 +805,12 @@ const handleSortChange = (column) => {
<el-pagination
background
:page-size="getObj.pageSize"
layout="slot"
:page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
>
<div>{{ total }},每页</div>
<el-select
v-model="getObj.pageSize"
class="page-size"
@change="get()"
style="width: 80px"
>
<el-option
v-for="item in [5, 10, 20, 50, 100]"
:key="item"
:label="item"
:value="item"
></el-option>
</el-select>
<div></div>
</el-pagination>
<el-pagination
background
layout="prev, pager, next,slot"
:page-size="getObj.pageSize"
:total="total"
:current-page="getObj.pageNum"
@current-change="get"
>
<div>跳至</div>
<el-input
v-model="getObj.pageNum"
style="width: 40px"
@change="checkNumber"
/>
<div></div>
</el-pagination>
@size-change="handlePageSizeChange"
@current-change="handleCurrentChange"
></el-pagination>
</div>
</el-card>
</el-col>

356
gold-system/src/views/usergoldInfo/index.vue

@ -1,69 +1,70 @@
<script setup>
import { ref, onMounted, reactive, computed } from "vue";
import ElementPlus from "element-plus";
import { ElMessage, ElMessageBox } from "element-plus";
import axios from "axios";
import moment from "moment";
import { ta } from "element-plus/es/locales.mjs";
import API from "../../api/index.js";
import { ref, onMounted, reactive, computed } from 'vue'
import ElementPlus from 'element-plus'
import { ElMessage, ElMessageBox } from 'element-plus'
import axios from 'axios'
import moment from 'moment'
import { ta } from 'element-plus/es/locales.mjs'
import API from '@/util/http'
//
//
const adminData = ref({});
const adminData = ref({})
const dialogVisible = ref(false)
const getAdminData = async function () {
try {
const result = await API.post(
"http://54.251.137.151:10702/admin/userinfo",
{}
);
adminData.value = result;
console.log("请求成功", result);
console.log("用户信息", adminData.value);
const result = await API({ url: '/admin/userinfo', data: {} })
adminData.value = result
console.log('请求成功', result)
console.log('用户信息', adminData.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
}
};
}
//
const tableData = ref([]);
const tableData = ref([])
//
const tableAllData = ref([]);
const tableAllData = ref([])
//
const rechargeCoin = ref(0);
const freeCoin = ref(0);
const taskCoin = ref(0);
const rechargeCoin = ref(0)
const freeCoin = ref(0)
const taskCoin = ref(0)
//
const tableCountData = ref([])
const userInfo = ref({})
// ===========================================
//
const total = ref(100);
const total = ref(100)
//
const getTime = ref([]);
const getTime = ref([])
// detailY
const detailY = ref({});
const detailY = ref({})
//
const getAllObj = ref({});
const getAllObj = ref({})
//
const getObj = ref({
pageNum: 1,
pageSize: 50,
});
pageSize: 50
})
//
const sortField = ref("");
const sortOrder = ref("");
const sortField = ref('')
const sortOrder = ref('')
//
const updateType = [
{
value: "0",
label: "充值",
value: '0',
label: '充值'
},
{
value: "1",
label: "消费",
value: '1',
label: '消费'
},
{
value: "2",
label: "退款",
},
];
value: '2',
label: '退款'
}
]
// //
// const tableHeight = computed(function () {
@ -77,156 +78,168 @@ const get = async function (val) {
try {
//
//
if (adminData.value.area === "泰国") {
detailY.value.areas = ["泰国", "越南"];
} else if (adminData.value.area !== "总部") {
detailY.value.area = adminData.value.area;
if (adminData.value.area === '泰国') {
detailY.value.areas = ['泰国', '越南']
} else if (adminData.value.area !== '总部') {
detailY.value.area = adminData.value.area
}
//
if (typeof val === "number") {
getObj.value.pageNum = val;
if (typeof val === 'number') {
getObj.value.pageNum = val
}
//
if (getTime.value != null) {
if (getTime.value.startDate != "" && getTime.value.endDate != "") {
detailY.value.startDate = getTime.value[0];
detailY.value.endDate = getTime.value[1];
if (getTime.value.startDate != '' && getTime.value.endDate != '') {
detailY.value.startDate = getTime.value[0]
detailY.value.endDate = getTime.value[1]
}
} else {
detailY.value.startDate = "";
detailY.value.endDate = "";
detailY.value.startDate = ''
detailY.value.endDate = ''
}
//
detailY.value.sortField = sortField.value;
detailY.value.sortOrder = sortOrder.value;
console.log("搜索参数", getObj.value);
detailY.value.sortField = sortField.value
detailY.value.sortOrder = sortOrder.value
console.log('搜索参数', getObj.value)
// POST
const result = await API.post(
"http://54.251.137.151:10702/detailY/select",
{
...getObj.value,
detailYgold: { ...detailY.value },
}
);
const result = await API({
url: '/detailY/select',
data: { ...getObj.value, detailYgold: { ...detailY.value } }
})
//
const result2 = await API.post("http://54.251.137.151:10702/detailY", {
...getAllObj.value,
detailY: { ...detailY.value },
});
const result2 = await API({
url: '/detailY',
data: {
...getAllObj.value,
detailY: { ...detailY.value }
}
})
//
console.log("请求成功", result);
console.log('请求成功', result)
// console.log("2", result2);
//
tableData.value = result.data.list;
console.log("tableData", tableData.value);
tableAllData.value = result2.data;
tableData.value = result.data.list
console.log('tableData', tableData.value)
tableAllData.value = result2.data
// 100
//
rechargeCoin.value = parseFloat((tableAllData.value.sumR / 100).toFixed(2));
freeCoin.value = parseFloat((tableAllData.value.sumF / 100).toFixed(2));
taskCoin.value = parseFloat((tableAllData.value.sumT / 100).toFixed(2));
rechargeCoin.value = parseFloat((tableAllData.value.sumR / 100).toFixed(2))
freeCoin.value = parseFloat((tableAllData.value.sumF / 100).toFixed(2))
taskCoin.value = parseFloat((tableAllData.value.sumT / 100).toFixed(2))
// console.log("tableAllData", tableAllData.value);
//
total.value = result.data.total;
console.log("total", total.value);
total.value = result.data.total
console.log('total', total.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const search = function () {
getObj.value.pageNum = 1;
get();
};
getObj.value.pageNum = 1
get()
}
//
const reset = function () {
detailY.value = {};
sortField.value = "";
sortOrder.value = "";
get();
};
detailY.value = {}
sortField.value = ''
sortOrder.value = ''
get()
}
const cellClick = function (row, column) {
console.log('cellClick', column.label)
if (column.label == '姓名') {
dialogVisible.value = true
userInfo.value = row
}
}
//
const checkNumber = function () {
if (typeof parseInt(getObj.value.pageNum) === "number") {
console.log(
"总共有多少页" + Math.ceil(total.value / getObj.value.pageSize)
);
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)
) {
getObj.value.pageNum = parseInt(getObj.value.pageNum);
console.log("输入的数字合法");
get();
getObj.value.pageNum = parseInt(getObj.value.pageNum)
console.log('输入的数字合法')
get()
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
};
}
//
const handleSortChange = (column) => {
console.log("排序字段:", column.prop);
console.log("排序方式:", column.order);
if (column.prop === "buyJb") {
sortField.value = "buy_jb";
} else if (column.prop === "taskJb") {
sortField.value = "core_jb";
} else if (column.prop === "free6") {
sortField.value = "free_6";
} else if (column.prop === "free12") {
sortField.value = "free_12";
console.log('排序字段:', column.prop)
console.log('排序方式:', column.order)
if (column.prop === 'buyJb') {
sortField.value = 'buy_jb'
} else if (column.prop === 'taskJb') {
sortField.value = 'core_jb'
} else if (column.prop === 'free6') {
sortField.value = 'free_6'
} else if (column.prop === 'free12') {
sortField.value = 'free_12'
}
sortOrder.value = column.order === "ascending" ? "ASC" : "DESC";
get();
};
sortOrder.value = column.order === 'ascending' ? 'ASC' : 'DESC'
get()
}
//
const area = [
{
value: "马来西亚",
label: "马来西亚",
value: '马来西亚',
label: '马来西亚'
},
{
value: "新加坡",
label: "新加坡",
value: '新加坡',
label: '新加坡'
},
{
value: "香港",
label: "香港",
value: '香港',
label: '香港'
},
{
value: "泰国",
label: "泰国",
value: '泰国',
label: '泰国'
},
{
value: "加拿大",
label: "加拿大",
value: '加拿大',
label: '加拿大'
},
{
value: "越南HCM",
label: "越南HCM",
},
];
value: '越南HCM',
label: '越南HCM'
}
]
//
onMounted(async function () {
await getAdminData();
await get();
});
await getAdminData()
await get()
})
const handlePageSizeChange = function (val) {
getObj.value.pageSize = val
get()
}
const handleCurrentChange = function (val) {
getObj.value.pageNum = val
get()
}
</script>
<template>
@ -284,6 +297,7 @@ onMounted(async function () {
<div style="height: 626px; overflow-y: auto">
<el-table
:data="tableData"
@cellClick="cellClick"
style="width: 100%"
height="715px"
@sort-change="handleSortChange"
@ -385,48 +399,55 @@ onMounted(async function () {
<el-pagination
background
:page-size="getObj.pageSize"
layout="slot"
:page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
>
<div>{{ total }},每页</div>
<el-select
v-model="getObj.pageSize"
class="page-size"
@change="get()"
style="width: 80px"
>
<el-option
v-for="item in [5, 10, 20, 50, 100]"
:key="item"
:label="item"
:value="item"
></el-option>
</el-select>
<div></div>
</el-pagination>
<el-pagination
background
layout="prev, pager, next,slot"
:page-size="getObj.pageSize"
:total="total"
:current-page="getObj.pageNum"
@current-change="get"
>
<div>跳至</div>
<el-input
v-model="getObj.pageNum"
style="width: 40px"
@change="checkNumber"
/>
<div></div>
</el-pagination>
@size-change="handlePageSizeChange"
@current-change="handleCurrentChange"
></el-pagination>
</div>
</el-card>
</el-col>
</el-row>
<!-- 客户信息弹框 -->
<el-dialog
title="客户信息"
v-model="dialogVisible"
width="50%"
@before-close="dialogVisible = false"
>
<el-card>
<div class="custom-box">
<div>姓名{{ userInfo.name }}</div>
<br />
<div>精网号{{ userInfo.jwcode }}</div>
<div>地区{{ userInfo.area }}</div>
<div>历史充值{{ userInfo.rcoin }}</div>
<div>历史消费{{ userInfo.scoin }}</div>
</div>
</el-card>
<!-- t -->
<div style="height: 450px; overflow-y: auto">
<el-table :data="tableCountData" style="width: 100%" height="715px">
<el-table-column type="index" label="序号" width="100px" fixed="left">
<template #default="scope">
<span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span>
</template>
</el-table-column>
<el-table-column prop="" label="商品" width="120" />
<el-table-column sortable prop="" label="消费金币总数" width="180" />
<el-table-column sortable prop="" label="永久金币" width="120" />
<el-table-column sortable prop="" label="免费金币" width="120" />
<el-table-column sortable prop="" label="任务金币" width="120" />
<el-table-column sortable prop="" label="时间" width="120" />
</el-table>
</div>
</el-dialog>
</template>
<style scoped>
<style scoped lang="scss">
.pagination {
display: flex;
}
@ -446,4 +467,15 @@ onMounted(async function () {
.head-card-btn {
margin-left: auto;
}
.custom-box {
display: flex;
flex-wrap: wrap;
row-gap: 5px;
div:nth-child(1) {
flex: 1 0 100%;
}
div {
margin-right: 20px;
}
}
</style>

1369
gold-system/src/views/workspace/index.vue
File diff suppressed because it is too large
View File

197
gold-system/src/views/z.vue

@ -1,125 +1,140 @@
<script setup>
import { ref, onMounted, reactive, computed, nextTick } from "vue";
import { ref, onMounted, reactive, computed, nextTick } from 'vue'
//
const allData = ref([]);
const tableData = ref([]);
const elTableHeight = ref('');
const theadHeight = ref('');
const contentHeight = ref(0);
const showRowCount = ref(0);
const falseBox = ref(null);
const scollBoxHeight = ref(0);
const scrollTopRowCount = ref(0);
const allData = ref([])
const tableData = ref([])
const elTableHeight = ref('')
const theadHeight = ref('')
const contentHeight = ref(0)
const showRowCount = ref(0)
const falseBox = ref(null)
const scollBoxHeight = ref(0)
const scrollTopRowCount = ref(0)
//
onMounted(async function () {
allData.value = [];
for (let i = 0; i < 10000; i++) {
allData.value.push({
name: '张三' + i,
age: 20 + i,
address: '北京市海淀区' + i,
salary: 50000 + i,
date: '2022-01-01'
})
}
scollBoxHeight.value = 45 * allData.value.length + 45; //
nextTick(() => {
elTableHeight.value = document.querySelector('.table-box .el-table').offsetHeight;
theadHeight.value = document.querySelector('.table-box .el-table__header-wrapper').offsetHeight;
console.log("elTableHeight", elTableHeight.value);
console.log("theadHeight", theadHeight.value);
contentHeight.value = elTableHeight.value - theadHeight.value;
console.log("contentHeight", contentHeight.value);
showRowCount.value = Math.floor(contentHeight.value / 45);
console.log("showRowCount", showRowCount.value);
// <showRowCount>
tableData.value = JSON.parse(JSON.stringify(allData.value)).splice(0, showRowCount.value);
allData.value = []
for (let i = 0; i < 10000; i++) {
allData.value.push({
name: '张三' + i,
age: 20 + i,
address: '北京市海淀区' + i,
salary: 50000 + i,
date: '2022-01-01'
})
falseBox.value = document.querySelector('.false-box');
falseBox.value.addEventListener('scroll', function (e) {
scrollTopRowCount.value = Math.ceil(e.target.scrollTop / 45);
// <scrollTopRowCount> <showRowCount>
tableData.value = JSON.parse(JSON.stringify(allData.value)).splice(scrollTopRowCount.value, showRowCount.value);
});
}
scollBoxHeight.value = 45 * allData.value.length + 45 //
nextTick(() => {
elTableHeight.value = document.querySelector(
'.table-box .el-table'
).offsetHeight
theadHeight.value = document.querySelector(
'.table-box .el-table__header-wrapper'
).offsetHeight
console.log('elTableHeight', elTableHeight.value)
console.log('theadHeight', theadHeight.value)
contentHeight.value = elTableHeight.value - theadHeight.value
console.log('contentHeight', contentHeight.value)
showRowCount.value = Math.floor(contentHeight.value / 45)
console.log('showRowCount', showRowCount.value)
// <showRowCount>
tableData.value = JSON.parse(JSON.stringify(allData.value)).splice(
0,
showRowCount.value
)
})
falseBox.value = document.querySelector('.false-box')
falseBox.value.addEventListener('scroll', function (e) {
scrollTopRowCount.value = Math.ceil(e.target.scrollTop / 45)
// <scrollTopRowCount> <showRowCount>
tableData.value = JSON.parse(JSON.stringify(allData.value)).splice(
scrollTopRowCount.value,
showRowCount.value
)
})
})
</script>
<template>
<div class="box" style="width: 1000px; height: 500px; overflow: hidden; position: relative;">
<!-- false-box这是一个用来显示滚动条的方法 -->
<div class="false-box"
style="width: 100%; height: 100%; position: absolute; top: 0%; left: 0%; overflow: auto;">
<div class="scroll-box" :style="{ 'height': scollBoxHeight + 'px' }">
<!-- scroll-box是用来撑起盒子的方法 -->
</div>
</div>
<div class="table-box">
<el-table class="el-table" :data="allData" style="width: 100%">
<el-table-column prop="name" label="姓名" width="180">
</el-table-column>
<el-table-column prop="age" label="年龄" width="180">
</el-table-column>
<el-table-column prop="address" label="地址">
</el-table-column>
<el-table-column prop="salary" label="薪资" width="180">
</el-table-column>
<el-table-column prop="date" label="日期" width="180">
</el-table-column>
</el-table>
</div>
<div
class="box"
style="width: 1000px; height: 500px; overflow: hidden; position: relative"
>
<!-- false-box这是一个用来显示滚动条的方法 -->
<div
class="false-box"
style="
width: 100%;
height: 100%;
position: absolute;
top: 0%;
left: 0%;
overflow: auto;
"
>
<div class="scroll-box" :style="{ height: scollBoxHeight + 'px' }">
<!-- scroll-box是用来撑起盒子的方法 -->
</div>
</div>
<div class="table-box">
<el-table class="el-table" :data="allData" style="width: 100%">
<el-table-column prop="name" label="姓名" width="180">
</el-table-column>
<el-table-column prop="age" label="年龄" width="180"> </el-table-column>
<el-table-column prop="address" label="地址"> </el-table-column>
<el-table-column prop="salary" label="薪资" width="180">
</el-table-column>
<el-table-column prop="date" label="日期" width="180">
</el-table-column>
</el-table>
</div>
</div>
</template>
<style scoped>
.box {
width: 1000px;
height: 500px;
overflow: hidden;
position: relative;
width: 1000px;
height: 500px;
overflow: hidden;
position: relative;
}
.false-box {
width: 100%;
height: 100%;
position: absolute;
top: 0%;
left: 0%;
overflow: auto;
width: 100%;
height: 100%;
position: absolute;
top: 0%;
left: 0%;
overflow: auto;
}
.scroll-box {
width: 100%;
height: 1000px;
position: absolute;
top: 0%;
left: 0%;
width: 100%;
height: 1000px;
position: absolute;
top: 0%;
left: 0%;
}
.table-box {
width: calc(100% - 20px);
height: 100%;
position: absolute;
top: 0%;
left: 0%;
width: calc(100% - 20px);
height: 100%;
position: absolute;
top: 0%;
left: 0%;
}
::v-deep .el-table {
width: 100%;
height: 100%;
:deep(.el-table) {
width: 100%;
height: 100%;
}
.el-table .el-table__row {
height: 45px;
height: 45px;
}
.el-table .el-table__row td {
padding: 0px
padding: 0px;
}
</style>
</style>

4949
gold-system/stats.html
File diff suppressed because it is too large
View File

19
gold-system/tsconfig.app.json

@ -1,12 +1,14 @@
{
"compilerOptions": {
"strict": true,
"skipLibCheck": true,
"composite": true,
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
"target": "ES2020",
"noEmitOnError": false,
"useDefineForClassFields": true,
"module": "ESNext",
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"skipLibCheck": true,
/* Bundler mode */
"moduleResolution": "Bundler",
@ -14,15 +16,26 @@
"isolatedModules": true,
"moduleDetection": "force",
"noEmit": true,
"emitDeclarationOnly": false,
"jsx": "preserve",
/* Linting */
"strict": true,
// "strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
"noUncheckedSideEffectImports": true,
"noImplicitAny": false,
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
}
},
"include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"]
"include": [
"src/**/*.ts",
"src/**/*.tsx",
"src/**/*.d.ts",
"src/**/*.vue",
"src/util/http.js"
]
}

14
gold-system/tsconfig.node.json

@ -5,20 +5,24 @@
"lib": ["ES2023"],
"module": "ESNext",
"skipLibCheck": true,
"composite": true,
"noEmitOnError": false,
/* Bundler mode */
"moduleResolution": "Bundler",
"allowImportingTsExtensions": true,
"isolatedModules": true,
"moduleDetection": "force",
"noEmit": true,
"emitDeclarationOnly": false,
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
"noUncheckedSideEffectImports": true
},
"include": ["vite.config.ts"]
"noUncheckedSideEffectImports": true,
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
}
}
}

1
gold-system/tsconfig.tsbuildinfo

@ -0,0 +1 @@
{"root":["./src/main.ts","./src/vite-env.d.ts","./src/app.vue","./src/views/index.vue","./src/views/login.vue","./src/views/nopermissionpage.vue","./src/views/z.vue","./src/views/audit/rechargeaudit.vue","./src/views/audit/refundaudit.vue","./src/views/consume/addconsume.vue","./src/views/consume/allconsume.vue","./src/views/goldbeen/addgoldenbeen.vue","./src/views/goldbeen/goldenbeenbalance.vue","./src/views/goldbeen/goldenbeendetail.vue","./src/views/managerecharge/activity.vue","./src/views/managerecharge/rate.vue","./src/views/permissions/index.vue","./src/views/recharge/addrecharge.vue","./src/views/recharge/adminrecharge.vue","./src/views/recharge/allrecharge.vue","./src/views/refund/addrefund.vue","./src/views/refund/allrefund.vue","./src/views/usergold/index.vue","./src/views/usergoldinfo/index.vue","./src/views/workspace/index.vue"],"errors":true,"version":"5.6.3"}

96
gold-system/vite.config.ts

@ -1,42 +1,70 @@
import { defineConfig } from 'vite'
import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import { lazyImport, VxeResolver } from 'vite-plugin-lazy-import'
import legacy from '@vitejs/plugin-legacy';
import legacy from '@vitejs/plugin-legacy'
import path from 'path'
import { visualizer } from 'rollup-plugin-visualizer'
// https://vite.dev/config/
export default defineConfig({
esbuild: {
supported: {
bigint: true
}
},
plugins: [vue(),
legacy({
targets: ['defaults', 'not IE 11', 'chrome >=73'],
modernPolyfills: true
}),
lazyImport({
resolvers: [
VxeResolver({
libraryName: 'vxe-table'
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd())
console.log('当前环境:', mode)
console.log('当前环境变量:', env)
return {
esbuild: {
supported: {
bigint: true
},
treeShaking: true
},
plugins: [
vue(),
visualizer({
open: true, // 打包完成后自动展示
gzipSize: true, // 显示gzip压缩后的大小
brotliSize: true // 显示brotli压缩后的大小
}),
legacy({
targets: ['defaults', 'not IE 11', 'chrome >=73'],
modernPolyfills: true
}),
VxeResolver({
libraryName: 'vxe-pc-ui'
lazyImport({
resolvers: [
VxeResolver({
libraryName: 'vxe-table'
}),
VxeResolver({
libraryName: 'vxe-pc-ui'
})
]
})
]
})
],
server: {
proxy: {
'/hwjb': {
// target: 'http://54.251.137.151:10704',
target: 'http://192.168.8.93:10702',
// target: 'http://54.251.137.151:10702',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/hwjb/, ''),
},
],
resolve: {
alias: {
'@': path.resolve(__dirname, './src')
}
},
},
// base: process.env.NODE_ENV === "production" ? "/gold_html_dev/" : "/",
base: process.env.NODE_ENV === "production" ? "./" : "/",
base: process.env.NODE_ENV === 'production' ? './' : '/',
build: {
sourcemap: false, // 关闭 sourcemap
minify: 'terser',
terserOptions: {
compress: {
drop_console: true, // 生产环境去除console
drop_debugger: true // 生产环境去除 debugger
}
},
rollupOptions: {
output: {
manualChunks: {
echarts: ['echarts'],
xlsx: ['xlsx'],
lodash: ['lodash'],
vue: ['vue', 'vue-router', 'pinia'],
elementPlus: ['element-plus']
}
}
}
}
}
})
Loading…
Cancel
Save