42 Commits

Author SHA1 Message Date
donghaolin f5be3cb4ab Merge branch 'zln1' into dev合并zln1分支到dev分支 2 months ago
zry 859e2a773a zry修改 2 months ago
zhaoln ca4ab12418 功能联调bug修改 2 months ago
zhaoln 53cc2a3e90 新增线上充值页面以及bug修改 2 months ago
zhaoln 4eee080644 功能联调bug修改 3 months ago
zhaoln 4faca008a3 联调加改bug 3 months ago
zhaoln c3125ea7a9 bug 修改和新功能补充 3 months ago
zhaoln 042ddebe9a 修改所有表格分页数据 3 months ago
zhaoln fdc5824335 客户信息新增字段所属门店 3 months ago
zhaoln a0d59e26ac 金豆消费明细页面开发 3 months ago
zhaoln e10c0efb81 bug修改 3 months ago
zhaoln 9fb24b9b94 金豆充值和余额页面开发联调 3 months ago
zhaoln b19610de40 金豆增加充值页面的开发 3 months ago
zhaoln 53f592fa9d 金豆增加充值页面的开发 3 months ago
zhaoln f6364cd4dd 封装工作台代码 3 months ago
donghaolin 1bf7548122 4/9号,地区通过url传递 3 months ago
zhaoln e69980e5f3 修改明细字段 3 months ago
donghaolin badcc44d9e 前四个模块请求封装修改 3 months ago
zhaoln 0f2ea7893c 请求修改 3 months ago
zry a9b1a980f4 zry修改 2 months ago
zhaoln 1e3f50e5b8 功能联调bug修改 2 months ago
zhaoln 4b81ccbaef 新增线上充值页面以及bug修改 2 months ago
zhaoln 3382e18d53 功能联调bug修改 3 months ago
zhaoln b4ee945493 联调加改bug 3 months ago
zhaoln 71a7a115a6 bug 修改和新功能补充 3 months ago
zhaoln b921ec3fff 修改所有表格分页数据 3 months ago
zhaoln 39faec7c2b Merge branch 'test' of http://39.101.133.168:8807/yanjiaqing/gold_vue into zln1 3 months ago
zhaoln 1d39614586 客户信息新增字段所属门店 3 months ago
zhaoln a393f511d4 金豆消费明细页面开发 3 months ago
zhaoln ab3c793266 bug修改 3 months ago
zhaoln ba19fbf42e 金豆充值和余额页面开发联调 3 months ago
zhaoln 2939348502 金豆增加充值页面的开发 3 months ago
zhaoln b28983900e 金豆增加充值页面的开发 3 months ago
zhaoln 43b0f76e21 封装工作台代码 3 months ago
zhaoln afc6726c41 Merge branch 'zln1' of http://39.101.133.168:8807/yanjiaqing/gold_vue into zln1 3 months ago
zhaoln 1be305a252 修改明细字段 3 months ago
donghaolin fb076705f4 4/9号,地区通过url传递 3 months ago
donghaolin 3f95800d3c 前四个模块请求封装修改 3 months ago
donghaolin bab393abd1 Merge branch 'zln1' of http://39.101.133.168:8807/yanjiaqing/gold_vue into zln1 3 months ago
donghaolin 8d5e2ced7c 前4个模块请求封装 3 months ago
zhaoln 51d843e908 请求修改 3 months ago
zhaoln 1a75182d7d 请求封装 3 months 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