Browse Source

bug修改

dev
zhaoln 1 month ago
committed by donghaolin
parent
commit
e10c0efb81
  1. 2
      gold-system/src/router/index.js
  2. 599
      gold-system/src/views/audit/rechargeAudit.vue
  3. 17
      gold-system/src/views/goldBeen/addGoldenBeen.vue
  4. 290
      gold-system/src/views/goldBeen/goldenBeenConsum.vue
  5. 384
      gold-system/src/views/goldBeen/goldenBeenDetail.vue
  6. 2
      gold-system/src/views/index.vue
  7. 2
      gold-system/src/views/recharge/adminRecharge.vue
  8. 2
      gold-system/stats.html

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

@ -49,6 +49,8 @@ const router = createRouter({
{ path: '/goldenBeenBalance', name: "goldenBeenBalance", component: () => import("../views/goldBeen/goldenBeenBalance.vue") }, { path: '/goldenBeenBalance', name: "goldenBeenBalance", component: () => import("../views/goldBeen/goldenBeenBalance.vue") },
//金豆充值明细 //金豆充值明细
{ path: '/goldenBeenDetail', name: "goldenBeenDetail", component: () => import("../views/goldBeen/goldenBeenDetail.vue") }, { path: '/goldenBeenDetail', name: "goldenBeenDetail", component: () => import("../views/goldBeen/goldenBeenDetail.vue") },
//金豆消费明细
{ path: '/goldenBeenConsum', name: "goldenBeenConsum", component: () => import("../views/goldBeen/goldenBeenConsum.vue") }
] ]
}, },

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

@ -1,87 +1,87 @@
<script setup> <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 request from "@/util/http";
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 () { const getAdminData = async function () {
try { try {
const result = await request({ const result = await request({
url: "/admin/userinfo",
data: {},
});
adminData.value = result;
console.log("请求成功", result);
console.log("用户信息", adminData.value);
url: '/admin/userinfo',
data: {}
})
adminData.value = result
console.log('请求成功', result)
console.log('用户信息', adminData.value)
} catch (error) { } catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
}
} }
};
// //
const tableData = ref([]);
const tableData = ref([])
// ====================================== // ======================================
// rechargeVo // rechargeVo
const rechargeVo = ref({ const rechargeVo = ref({
rechargeWay: "客服充值",
});
rechargeWay: '客服充值'
})
// //
const getObj = ref({ const getObj = ref({
pageNum: 1, 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 = [ 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 () { // const tableHeight = computed(function () {
@ -89,450 +89,447 @@ const payWay = [
// }); // });
// ref // 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) { const get = async function (val) {
try { 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 != 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 { } 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 // POST
const result = await request({ const result = await request({
url: "/recharge/recharge",
url: '/recharge/recharge',
data: { data: {
pageNum: getObj.value.pageNum, pageNum: getObj.value.pageNum,
pageSize: getObj.value.pageSize, pageSize: getObj.value.pageSize,
rechargeVo: { ...rechargeVo.value },
},
});
rechargeVo: { ...rechargeVo.value }
}
})
// //
// rechargeVo.value // rechargeVo.value
const detailWithoutSort = { ...rechargeVo.value };
delete detailWithoutSort.sortField;
delete detailWithoutSort.sortOrder;
delete detailWithoutSort.status;
const detailWithoutSort = { ...rechargeVo.value }
delete detailWithoutSort.sortField
delete detailWithoutSort.sortOrder
delete detailWithoutSort.status
const result2 = await request({ const result2 = await request({
url: "/recharge/recharge/RechargeA",
data: detailWithoutSort,
});
url: '/recharge/recharge/RechargeA',
data: detailWithoutSort
})
// result2.data[i].flag="" totalData.value = result2.data[i]0 // result2.data[i].flag="" totalData.value = result2.data[i]0
// //
if (result2.data) { if (result2.data) {
result2.data.forEach((item) => { result2.data.forEach((item) => {
switch (item.flag) {
case "待审核":
switch (item.auditStatus) {
case '待审核':
// item.raudit 0 // item.raudit 0
pendingCount.value = item.raudit || 0;
pendingCount.value = item.raudit || 0
// item.sumRaudit 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 = trueCount.value =
pendingCount.value + approvedCount.value + rejectedCount.value;
pendingCount.value + approvedCount.value + rejectedCount.value
trueRGold.value = trueRGold.value =
pendingRGold.value + approvedRGold.value + rejectedRGold.value;
pendingRGold.value + approvedRGold.value + rejectedRGold.value
trueFGold.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) { } catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
// //
} }
};
}
// //
const search = function () { const search = function () {
getObj.value.pageNum = 1;
get();
};
getObj.value.pageNum = 1
get()
}
// //
const reset = function () { 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 getToday = function () {
const today = new Date();
const today = new Date()
const startDate = new Date( const startDate = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() today.getDate()
);
)
const endDate = new Date( const endDate = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() + 1 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 getYesterday = function () {
const yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
const yesterday = new Date()
yesterday.setDate(yesterday.getDate() - 1)
const startDate = new Date( const startDate = new Date(
yesterday.getFullYear(), yesterday.getFullYear(),
yesterday.getMonth(), yesterday.getMonth(),
yesterday.getDate() yesterday.getDate()
);
)
const endDate = new Date( const endDate = new Date(
yesterday.getFullYear(), yesterday.getFullYear(),
yesterday.getMonth(), yesterday.getMonth(),
yesterday.getDate() + 1 yesterday.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
// 7 // 7
const get7Days = function () { const get7Days = function () {
const today = new Date();
const today = new Date()
const startDate = new Date( const startDate = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() - 6 today.getDate() - 6
);
)
const endDate = new Date( const endDate = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() + 1 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 () { 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 () { 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 () { 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 () { 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) { 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 () { const getActivity = async function () {
try { try {
// POST // POST
const result = await request({ const result = await request({
url: "/recharge/activity/select",
data: {},
});
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) { } catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
// //
} }
};
}
// //
const getArea = async function () { const getArea = async function () {
try { try {
// POST // POST
const result = await request({ const result = await request({
url: "/recharge/user/search",
data: {},
});
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) { } catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
// //
} }
};
}
// //
const checkNumber = function () { 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 ( if (
getObj.value.pageNum > 0 && getObj.value.pageNum > 0 &&
getObj.value.pageNum <= Math.ceil(total.value / getObj.value.pageSize) 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 { } else {
// //
ElMessage({ ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
} }
} else { } else {
// //
ElMessage({ ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
} }
};
// ==================================== // ====================================
// //
const pass = function (row) { 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 () { const passConfirm = async function () {
try { try {
console.log("通过对象", passObj.value);
console.log('通过对象', passObj.value)
// POST // POST
// passObj.value.flag = 0; // passObj.value.flag = 0;
const result = await request({ const result = await request({
url: "/audit/audit/goldedit",
data: passObj.value,
});
url: '/audit/audit/goldedit',
data: passObj.value
})
// //
console.log("请求成功", result);
console.log('请求成功', result)
// //
get();
get()
// //
ElMessage({ ElMessage({
type: "success",
message: "通过成功!",
});
type: 'success',
message: '通过成功!'
})
} catch (error) { } catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
// //
} }
};
}
// //
const openRejectVisible = function () { const openRejectVisible = function () {
rejectVisible.value = true;
};
rejectVisible.value = true
}
// //
const closeRejectVisible = function () { const closeRejectVisible = function () {
rejectVisible.value = false;
};
rejectVisible.value = false
}
// //
const reject = function (row) { 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 () { const rejectConfirm = async function () {
Ref.value.validate(async (valid) => { Ref.value.validate(async (valid) => {
if (valid) { if (valid) {
try { try {
console.log("驳回对象", rejectObj.value);
console.log('驳回对象', rejectObj.value)
// POST // POST
const result = await request({ const result = await request({
url: "/audit/audit/goldedit",
data: rejectObj.value,
});
url: '/audit/audit/goldedit',
data: rejectObj.value
})
// //
console.log("请求成功", result);
console.log('请求成功', result)
// //
get();
get()
// //
closeRejectVisible();
closeRejectVisible()
// //
ElMessage({ ElMessage({
type: "success",
message: "驳回成功!",
});
type: 'success',
message: '驳回成功!'
})
} catch (error) { } catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
// //
} }
} else { } else {
// //
ElMessage({ ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
})
} }
});
};
// //
const rules = reactive({ const rules = reactive({
reson: [{ required: true, message: "请输入驳回理由", trigger: "blur" }],
});
reson: [{ required: true, message: '请输入驳回理由', trigger: 'blur' }]
})
// //
onMounted(async function () { onMounted(async function () {
await getAdminData();
await getActivity();
await get();
});
await getAdminData()
await getActivity()
await get()
})
// //
const sortField = ref("");
const sortOrder = ref("");
const sortField = ref('')
const sortOrder = ref('')
// //
const handleSortChange = (column) => { 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";
}
sortOrder.value = column.order === "ascending" ? "ASC" : "DESC";
get();
};
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()
}
</script> </script>
<template> <template>
@ -777,7 +774,7 @@ const handleSortChange = (column) => {
> >
<template #default="scope"> <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> </template>
</el-table-column> </el-table-column>

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

@ -1,6 +1,6 @@
<template> <template>
<div class="add-goldenbeen"> <div class="add-goldenbeen">
<div>新增充值</div>
<div class="head-top">新增充值</div>
<div class="add-box"> <div class="add-box">
<el-form <el-form
:model="beenObj" :model="beenObj"
@ -112,6 +112,7 @@ const rules = ref({
}) })
const addBean = (formEl) => { const addBean = (formEl) => {
// //
try {
formEl.validate(async (valid) => { formEl.validate(async (valid) => {
if (valid) { if (valid) {
// //
@ -141,6 +142,9 @@ const addBean = (formEl) => {
ElMessage.error('表单验证失败') ElMessage.error('表单验证失败')
} }
}) })
} catch (error) {
ElMessage.error('提交失败')
}
} }
const resetData = (formEl) => { const resetData = (formEl) => {
if (!formEl) return if (!formEl) return
@ -158,6 +162,10 @@ const getUser = async function (jwcode) {
if (result.code === 0) { if (result.code === 0) {
ElMessage.error(result.msg) ElMessage.error(result.msg)
} else { } else {
if (!result.data.jwcode) {
ElMessage.error('精网号不存在')
return
}
Object.assign(user, result.data) Object.assign(user, result.data)
} }
} catch (error) { } catch (error) {
@ -192,4 +200,11 @@ const getUser = async function (jwcode) {
.el-card { .el-card {
width: 500px; 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> </style>

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

@ -0,0 +1,290 @@
<template>
<div class="filter-box">
<el-form>
<el-form-item label="精网号">
<el-input
v-model="detailY.jwcode"
placeholder="请输入精网号"
style="width: 220px"
/>
</el-form-item>
<el-form-item label="地区">
<el-select
v-model="detailY.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-select
v-model="detailY.good"
placeholder="请选择商品"
style="width: 240px"
clearable
>
<el-option
v-for="item in goodList"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="频道">
<el-select
v-model="detailY.channel"
placeholder="请选择频道"
style="width: 240px"
clearable
>
<el-option
v-for="item in channelList"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="直播间">
<el-select
v-model="detailY.liveroom"
placeholder="请选择直播间"
style="width: 240px"
clearable
>
<el-option
v-for="item in liveroomList"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="消费时间">
<el-date-picker
v-model="detailY.createTime"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-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">重置</el-button>
</el-form-item>
</el-form>
</div>
<div class="table-box">
<p>金豆总数充值金豆总数合计新币数</p>
<el-table
:data="tableData"
style="width: 100%"
:default-sort="{ prop: 'createTime', order: 'descending' }"
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="username" label="姓名" width="150" />
<el-table-column fixed="left" prop="jwcode" label="精网号" width="120" />
<el-table-column prop="area" label="所属地区" width="120" />
<el-table-column prop="type" label="类型" width="110">
<!-- 模板内容 -->
<template #default="scope">
<span v-if="scope.row.updateType == 1">
<span>消费</span>
</span>
<span v-if="scope.row.updateType == 0">
<span>充值</span>
</span>
<span v-if="scope.row.updateType == 2">
<span>退款</span>
</span>
<span v-if="scope.row.updateType == 3">
<span>其他</span>
</span>
</template>
</el-table-column>
<el-table-column prop="order" label="订单号" width="120" />
<el-table-column prop="been" label="金豆数量" width="120">
</el-table-column>
<el-table-column prop="paybeen" label="付费金豆" width="120">
</el-table-column>
<el-table-column prop="freebeen" label="免费金豆" width="120">
</el-table-column>
<el-table-column prop="count" label="金额"></el-table-column>
<el-table-column prop="consumePlatform" label="充值平台" width="140">
<template #default="scope">
<!-- 使用非严格相等比较 -->
<span v-if="scope.row.consumePlatform == 0">初始化金币</span>
<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 == 4">金币系统</span>
</template>
</el-table-column>
<el-table-column prop="notes" label="备注" width="210"></el-table-column>
<el-table-column
prop="createTime"
sortable="“custom”"
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>
<!-- 分页 -->
<div class="pagination">
<el-pagination
background
:page-size="getObj.pageSize"
layout="slot"
:total="total"
>
<div>{{ total }},每页</div>
<el-select
v-model="getObj.pageSize"
class="page-size"
@change="getInit({})"
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="getInit({})"
>
<div>跳至</div>
<el-input v-model="getObj.pageNum" style="width: 40px" />
<div></div>
</el-pagination>
</div>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
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 goodList = ref<string[]>(['礼物', '铁粉', '客服操作'])
const channelList = ref<string[]>([])
const liveroomList = ref<string[]>([])
//
const detailY = ref({
jwcode: '',
area: '',
createTime: '',
channel: '',
liveroom: '',
good: ''
})
const getObj = ref({
pageNum: 1,
pageSize: 50
})
//
const getInit = async function ({
sortField = '',
sortOrder = ''
}: {
sortField?: string
sortOrder?: string
}) {
try {
console.log('搜索参数', getObj.value)
// POST
const result = await API({
url: '/detailY',
method: 'post',
data: {
...getObj.value,
detailY: { ...detailY.value },
sortField,
sortOrder
}
})
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 () {}
//
const reset = function () {}
//
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>

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

@ -16,10 +16,10 @@
clearable clearable
> >
<el-option <el-option
v-for="item in area"
:key="item.value"
:label="item.label"
:value="item.value"
v-for="item in areaList"
:key="item"
:label="item"
:value="item"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -30,6 +30,21 @@
style="width: 220px" style="width: 220px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="充值类型">
<el-select
v-model="detailY.type"
placeholder="请选择充值类型"
style="width: 240px"
clearable
>
<el-option
v-for="item in typeList"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="充值平台"> <el-form-item label="充值平台">
<el-select <el-select
v-model="detailY.platform" v-model="detailY.platform"
@ -38,10 +53,10 @@
clearable clearable
> >
<el-option <el-option
v-for="item in area"
:key="item.value"
:label="item.label"
:value="item.value"
v-for="item in platformList"
:key="item"
:label="item"
:value="item"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -58,7 +73,7 @@
<el-form-item> <el-form-item>
<el-button type="primary" @click="search">查询</el-button> <el-button type="primary" @click="search">查询</el-button>
<el-button type="success" @click="reset">重置</el-button> <el-button type="success" @click="reset">重置</el-button>
<el-button type="info">导出excel</el-button>
<el-button type="primary">导出excel</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
@ -99,19 +114,10 @@
</el-table-column> </el-table-column>
<el-table-column prop="order" label="订单号" width="120" /> <el-table-column prop="order" label="订单号" width="120" />
<el-table-column prop="been" label="金豆数量" width="120"> <el-table-column prop="been" label="金豆数量" width="120">
<template #default="scope">
<span>{{ scope.row.gold / 100 }}</span>
</template>
</el-table-column> </el-table-column>
<el-table-column prop="paybeen" label="付费金豆" width="120"> <el-table-column prop="paybeen" label="付费金豆" width="120">
<template #default="scope">
<span>{{ scope.row.paybeen / 100 }}</span>
</template>
</el-table-column> </el-table-column>
<el-table-column prop="freebeen" label="免费金豆" width="120"> <el-table-column prop="freebeen" label="免费金豆" width="120">
<template #default="scope">
<span>{{ scope.row.freebeen / 100 }}</span>
</template>
</el-table-column> </el-table-column>
<el-table-column prop="count" label="金额"></el-table-column> <el-table-column prop="count" label="金额"></el-table-column>
<el-table-column prop="consumePlatform" label="充值平台" width="140"> <el-table-column prop="consumePlatform" label="充值平台" width="140">
@ -151,7 +157,7 @@
<el-select <el-select
v-model="getObj.pageSize" v-model="getObj.pageSize"
class="page-size" class="page-size"
@change="get()"
@change="getInit({})"
style="width: 80px" style="width: 80px"
> >
<el-option <el-option
@ -169,135 +175,74 @@
:page-size="getObj.pageSize" :page-size="getObj.pageSize"
:total="total" :total="total"
:current-page="getObj.pageNum" :current-page="getObj.pageNum"
@current-change="get"
@current-change="getInit({})"
> >
<div>跳至</div> <div>跳至</div>
<el-input
v-model="getObj.pageNum"
style="width: 40px"
@change="checkNumber"
/>
<el-input v-model="getObj.pageNum" style="width: 40px" />
<div></div> <div></div>
</el-pagination> </el-pagination>
</div> </div>
</div> </div>
<!-- 这是导出excel的弹窗 -->
<el-dialog
v-model="getPutEX"
title="请选择导出条件"
width="500"
:close-on-click-modal="false"
>
<template #footer>
<el-form
v-loading="loading"
ref="ruleFormRef"
style="max-width: 600px"
:model="putExcel"
:rules="rules"
label-width="auto"
class="demo-ruleForm"
:size="formSize"
status-icon
>
<el-form-item prop="activityName" label="精网号:">
<el-input
v-model="putExcel.jwcode"
placeholder="请输入精网号"
style="width: 220px"
/>
</el-form-item>
<el-form-item label="所属地区:"
><el-select
v-model="putExcel.area"
placeholder="请选择所属地区"
style="width: 240px"
clearable
>
<el-option
v-for="item in area"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="更新时间:">
<el-radio-group v-model="TimeGet">
<el-radio value="1" @click="getT()">今天</el-radio>
<el-radio value="3" @click="get3()">近三天</el-radio>
<el-radio value="7" @click="get7()">近一周</el-radio>
<el-radio value="30" @click="get30()">近一个月</el-radio>
</el-radio-group>
</el-form-item>
<el-button
type="primary"
size="small"
style="margin-left: 10px"
@click="areyour()"
>确定</el-button
>
</el-form>
</template>
</el-dialog>
<el-dialog
v-model="areyouright"
title=""
width="500"
:close-on-click-modal="false"
>
<el-button type="success" @click="exportExcel()">导出</el-button>
</el-dialog>
</template> </template>
<script setup>
import { ref, onMounted, reactive, computed } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
<script setup lang="ts">
import { ref } from 'vue'
import { ElMessage } from 'element-plus'
import moment from 'moment' import moment from 'moment'
import API from '@/util/http' import API from '@/util/http'
// import * as XLSX from 'xlsx'
import { utils, writeFile } from 'xlsx'
//
const adminData = ref({})
// //
const tableData = ref([]) const tableData = ref([])
// //
const total = ref(100) const total = ref(100)
const areaList = ref<string[]>([])
const platformList = ref<string[]>([
'stripe',
'ios',
'FirstData',
'paymentasia',
'system',
'金币系统'
])
const typeList = ref<string[]>([
'金币换金豆',
'金币换免费金豆',
'赠送金豆',
'购买金豆',
'客服操作'
])
// //
const detailY = ref({})
const detailY = ref({
jwcode: '',
area: '',
order: '',
platform: '',
createTime: '',
type: ''
})
const getObj = ref({
pageNum: 1,
pageSize: 50
})
// //
const get = async function (val) {
const getInit = async function ({
sortField = '',
sortOrder = ''
}: {
sortField?: string
sortOrder?: string
}) {
try { try {
//
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 (getTime.value != null) {
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.sortField = sortField.value
detailY.value.sortOrder = sortOrder.value
console.log('搜索参数', getObj.value) console.log('搜索参数', getObj.value)
// POST // POST
const result = await API({ const result = await API({
url: '/detailY', url: '/detailY',
method: 'post', method: 'post',
data: { ...getObj.value, detailY: { ...detailY.value } }
data: {
...getObj.value,
detailY: { ...detailY.value },
sortField,
sortOrder
}
}) })
tableData.value = result.data.list tableData.value = result.data.list
console.log('tableData', tableData.value) console.log('tableData', tableData.value)
@ -313,191 +258,8 @@ const search = function () {}
// //
const reset = function () {} const reset = function () {}
//
const checkNumber = function () {
if (typeof parseInt(getObj.value.pageNum) === 'number') {
console.log('总共有多少页' + Math.ceil(total.value / getObj.value.pageSize))
if (
getObj.value.pageNum > 0 &&
getObj.value.pageNum <= Math.ceil(total.value / getObj.value.pageSize)
) {
getObj.value.pageNum = parseInt(getObj.value.pageNum)
console.log('输入的数字合法')
get()
} else {
//
ElMessage({
type: 'error',
message: '请检查输入内容'
})
}
} else {
//
ElMessage({
type: 'error',
message: '请检查输入内容'
})
}
}
// //
onMounted(async function () {
await getAdminData()
await get()
})
// excel
// Excel
//
const json_fields = (row) => {
return [
row.jwcode, //
row.area, //
row.platform, //
row.consumePlatform, //
row.gold, //
row.rechargeCoin, //
row.freeCoin, //
row.taskCoin, //
row.createAdmin, //
row.createTime,
row.name,
row.id
]
}
const headers = [
'精网号',
'地区',
'平台信息',
'数量',
'更新类型',
'永久金币',
'免费金币',
'任务金币',
'提交人',
'更新时间',
'用户名',
'id'
]
const exportExcel = () => {
// json_fields
const data = excelInfo.value.map(json_fields)
const ws = utils.aoa_to_sheet(data)
//
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)
const areyour = async function () {
try {
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
}
if (item.freeCoin) {
item.freeCoin = item.freeCoin / 100
}
if (item.taskCoin) {
item.taskCoin = item.taskCoin / 100
}
})
}
areyouright.value = true
ElMessage({
type: 'success',
message: '查询成功'
})
loading.value = false
} catch (error) {
console.log('请求失败', error)
loading.value = false
}
}
const areyouright = ref(false)
//
const area = [
{
value: '马来西亚',
label: '马来西亚'
},
{
value: '新加坡',
label: '新加坡'
},
{
value: '香港',
label: '香港'
},
{
value: '泰国',
label: '泰国'
},
{
value: '加拿大',
label: '加拿大'
},
{
value: '越南HCM',
label: '越南HCM'
}
]
//
const platform = [
{
value: '4',
label: '金币系统'
},
{
value: '1',
label: 'ERP系统'
},
{
value: '2',
label: 'Homily Chart'
},
{
value: '3',
label: 'Homily Link'
},
{
value: '0',
label: '初始化金币'
}
]
const TimeGet = ref('1')
getInit({})
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.filter-box { .filter-box {

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

@ -230,7 +230,7 @@ const changeDataByArea = (item) => {
> >
<el-menu-item index="/addGoldenBeen">金豆充值</el-menu-item> <el-menu-item index="/addGoldenBeen">金豆充值</el-menu-item>
<!-- <el-menu-item index="/goldenBeenDetail">金豆充值明细</el-menu-item> <!-- <el-menu-item index="/goldenBeenDetail">金豆充值明细</el-menu-item>
<el-menu-item>金豆消费明细</el-menu-item>-->
<el-menu-item index="/goldenBeenConsum">金豆消费明细</el-menu-item> -->
<el-menu-item index="/goldenBeenBalance">客户金豆余额</el-menu-item> <el-menu-item index="/goldenBeenBalance">客户金豆余额</el-menu-item>
</el-sub-menu> </el-sub-menu>
<el-menu-item <el-menu-item

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

@ -156,7 +156,7 @@ const get = async function (val) {
} }
if (result2.data) { if (result2.data) {
result2.data.forEach((item) => { result2.data.forEach((item) => {
switch (item.flag) {
switch (item.auditStatus) {
case '待审核': case '待审核':
// item.raudit 0 // item.raudit 0
// item.sumRaudit 0 // item.sumRaudit 0

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

Loading…
Cancel
Save