4 Commits

  1. 2
      .env.development
  2. 34
      src/views/audit/rechargeAudit.vue
  3. 14
      src/views/audit/refundAudit.vue
  4. 266
      src/views/consume/addCoinConsume.vue
  5. 32
      src/views/consume/beanConsume.vue
  6. 284
      src/views/consume/coinConsumeDetail.vue
  7. 2
      src/views/home.vue
  8. 2
      src/views/index.vue
  9. 315
      src/views/managerecharge/rate.vue
  10. 1299
      src/views/recharge/addCoinRecharge.vue
  11. 38
      src/views/recharge/beanRecharge.vue
  12. 490
      src/views/recharge/coinRechargeDetail.vue
  13. 38
      src/views/refund/addCoinRefund.vue
  14. 32
      src/views/refund/beanRefund.vue
  15. 74
      src/views/refund/coinRefundDetail.vue
  16. 6
      src/views/usergold/clientCountBalance.vue
  17. 6
      src/views/usergold/clientCountDetail.vue
  18. 2
      src/views/workspace/index.vue

2
.env.development

@ -4,5 +4,5 @@
# VITE_API_BASE='http://54.251.137.151:10704/' # VITE_API_BASE='http://54.251.137.151:10704/'
# VITE_API_BASE='http://192.168.8.225:8080/' # VITE_API_BASE='http://192.168.8.225:8080/'
# VITE_API_BASE='http://192.168.8.94:8080/' # VITE_API_BASE='http://192.168.8.94:8080/'
VITE_API_BASE='http://192.168.8.247:8081/'
VITE_API_BASE='http://18.143.76.3:10704/'

34
src/views/audit/rechargeAudit.vue

@ -116,13 +116,13 @@ const get = async function (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.startTime != '' && getTime.value.endTime != '') {
rechargeVo.value.startTime = getTime.value[0]
rechargeVo.value.endTime = getTime.value[1]
} }
} else { } else {
rechargeVo.value.startDate = ''
rechargeVo.value.endDate = ''
rechargeVo.value.startTime = ''
rechargeVo.value.endTime = ''
} }
rechargeVo.value.sortField = sortField.value rechargeVo.value.sortField = sortField.value
rechargeVo.value.sortOrder = sortOrder.value rechargeVo.value.sortOrder = sortOrder.value
@ -201,24 +201,24 @@ const reset = function () {
delete rechargeVo.value.jwcode delete rechargeVo.value.jwcode
delete rechargeVo.value.payWay delete rechargeVo.value.payWay
delete rechargeVo.value.area delete rechargeVo.value.area
delete rechargeVo.value.startDate
delete rechargeVo.value.endDate
delete rechargeVo.value.startTime
delete rechargeVo.value.endTime
getTime.value = {} getTime.value = {}
} }
// //
const getToday = function () { const getToday = function () {
const today = new Date() const today = new Date()
const startDate = new Date(
const startTime = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() today.getDate()
) )
const endDate = new Date(
const endTime = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() + 1 today.getDate() + 1
) )
getTime.value = [startDate, endDate]
getTime.value = [startTime, endTime]
console.log('getTime', getTime.value) console.log('getTime', getTime.value)
get() get()
} }
@ -226,34 +226,34 @@ const getToday = function () {
const getYesterday = function () { const getYesterday = function () {
const yesterday = new Date() const yesterday = new Date()
yesterday.setDate(yesterday.getDate() - 1) yesterday.setDate(yesterday.getDate() - 1)
const startDate = new Date(
const startTime = new Date(
yesterday.getFullYear(), yesterday.getFullYear(),
yesterday.getMonth(), yesterday.getMonth(),
yesterday.getDate() yesterday.getDate()
) )
const endDate = new Date(
const endTime = new Date(
yesterday.getFullYear(), yesterday.getFullYear(),
yesterday.getMonth(), yesterday.getMonth(),
yesterday.getDate() + 1 yesterday.getDate() + 1
) )
getTime.value = [startDate, endDate]
getTime.value = [startTime, endTime]
console.log('getTime', getTime.value) console.log('getTime', getTime.value)
get() get()
} }
// 7 // 7
const get7Days = function () { const get7Days = function () {
const today = new Date() const today = new Date()
const startDate = new Date(
const startTime = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() - 6 today.getDate() - 6
) )
const endDate = new Date(
const endTime = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() + 1 today.getDate() + 1
) )
getTime.value = [startDate, endDate]
getTime.value = [startTime, endTime]
console.log('getTime', getTime.value) console.log('getTime', getTime.value)
get() get()
} }
@ -317,7 +317,7 @@ const getActivity = async function () {
const getArea = async function () { const getArea = async function () {
try { try {
const result = await request({ const result = await request({
url: '/recharge/user/search',
url: 'http://18.143.76.3:10704/general/market',
data: {} data: {}
}) })
area.value = result.data area.value = result.data

14
src/views/audit/refundAudit.vue

@ -136,8 +136,8 @@ const searchForm = ref({
refundType: '', refundType: '',
refundGoods: '', refundGoods: '',
area: '', area: '',
startDate: '',
endDate: ''
startTime: '',
endTime: ''
}) })
const checkTab = ref(1) // STATUS123statusInteger const checkTab = ref(1) // STATUS123statusInteger
@ -190,7 +190,7 @@ const fetchProducts = async () => {
// //
const fetchAreas = async () => { const fetchAreas = async () => {
try { try {
const result = await request({ url: 'http://192.168.8.247:8081/general/market' })
const result = await request({ url: 'http://18.143.76.3:10704/general/market' })
areaOptions.value = result.data || [] areaOptions.value = result.data || []
} catch (error) { } catch (error) {
console.error('获取地区列表失败', error) console.error('获取地区列表失败', error)
@ -210,8 +210,8 @@ const get = async () => {
} }
// //
if (dateRange.value?.length === 2) { if (dateRange.value?.length === 2) {
params.detail.startDate = moment(dateRange.value[0]).format('YYYY-MM-DD HH:mm:ss')
params.detail.endDate = moment(dateRange.value[1]).format('YYYY-MM-DD HH:mm:ss')
params.detail.startTime = moment(dateRange.value[0]).format('YYYY-MM-DD HH:mm:ss')
params.detail.endTime = moment(dateRange.value[1]).format('YYYY-MM-DD HH:mm:ss')
} }
const res = await request({ const res = await request({
@ -262,8 +262,8 @@ const resetSearch = () => {
refundType: '', refundType: '',
refundGoods: '', refundGoods: '',
area: adminInfo.value.area === '总部' ? '' : adminInfo.value.area, area: adminInfo.value.area === '总部' ? '' : adminInfo.value.area,
startDate: '',
endDate: ''
startTime: '',
endTime: ''
} }
dateRange.value = [] dateRange.value = []
handleSearch() handleSearch()

266
src/views/consume/addCoinConsume.vue

@ -1,9 +1,13 @@
<script setup> <script setup>
import {onMounted, reactive, ref, watch} from "vue"; import {onMounted, reactive, ref, watch} from "vue";
import {ElMessage, ElMessageBox} from "element-plus"; import {ElMessage, ElMessageBox} from "element-plus";
import moment from "moment"; import moment from "moment";
import request from "@/util/http"; import request from "@/util/http";
/*
====================工具方法==============================
*/
// //
const trimJwCode = () => { const trimJwCode = () => {
if (addConsume.value.jwcode) { if (addConsume.value.jwcode) {
@ -20,25 +24,11 @@ const trimJwCode = () => {
} }
} }
//
/*
====================数据=================================
*/
//
const adminData = ref({}); const adminData = ref({});
const getAdminData = async function () {
try {//await
const result = await request({
url: "/admin/userinfo",
data: {},
});
adminData.value = result;
addConsume.value.adminId = adminData.value.adminId;
addConsume.value.name = adminData.value.name;
console.log("请求成功", result);
console.log("用户信息", adminData.value);
} catch (error) {
console.log("请求失败", error);
}
};
// //
const user = ref({ const user = ref({
jwcode: null, jwcode: null,
@ -58,12 +48,11 @@ const user = ref({
nowFreeGold: null, nowFreeGold: null,
nowSumGold: null nowSumGold: null
}) })
// //
const addConsume = ref({ const addConsume = ref({
// jwcode // jwcode
jwcode: null, // jwcode: null, //
goodsName: "",// // todo 3
goodsName: "",//
sumGold: null, // sumGold: null, //
freeGold: null, // freeGold: null, //
permanentGold: null, // permanentGold: null, //
@ -72,6 +61,40 @@ const addConsume = ref({
adminId: null,// id adminId: null,// id
}); });
//
const Ref = ref(null);
//
const rules = reactive({
jwcode: [{required: true, message: "请输入精网号", trigger: "blur"}],
goodsName: [{required: true, message: "请选择消费商品", trigger: "change"}], // change
sumGold: [
{required: true, message: "消费金币总数不能为空", trigger: "blur"},
],
});
//
const goods = ref([]);
/*
====================方法=================================
*/
const getAdminData = async function () {
try {//await
const result = await request({
url: "/admin/userinfo",
data: {},
});
adminData.value = result;
addConsume.value.adminId = adminData.value.adminId;
addConsume.value.name = adminData.value.name;
console.log("请求成功", result);
console.log("用户信息", adminData.value);
} catch (error) {
console.log("请求失败", error);
}
};
// //
function calculateCoins(sumGold) { function calculateCoins(sumGold) {
@ -106,55 +129,11 @@ function calculateCoins(sumGold) {
return {free: 0, permanent: 0, task: 0}; return {free: 0, permanent: 0, task: 0};
} }
//
watch(
() => addConsume.value.sumGold,
(newValue) => {
if (newValue > 0) {
const {free, permanent, task} = calculateCoins(newValue);
addConsume.value.freeGold = free;
addConsume.value.permanentGold = permanent;
addConsume.value.taskGold = task;
} else {
addConsume.value.freeGold = null;
addConsume.value.permanentGold = null;
addConsume.value.taskGold = null;
}
}
);
//
const add = async function () {
try {
//
if (!validateInput()) {
return;
}
//
formatConsumeData();
// POST
const result = await request({
// url: "/consume/add",
url: "http://192.168.8.247:8081/consume/add",
data: addConsume.value,
});
//
handleResponse(result);
//
resetForm();
} catch (error) {
console.error("请求失败", error);
ElMessage.error("添加失败,请检查网络连接或联系管理员");
}
};
// //
function validateInput() { function validateInput() {
const sumGold = addConsume.value.sumGold; const sumGold = addConsume.value.sumGold;
trimJwCode();
trimJwCode();
if (user.value.jwcode == null) { if (user.value.jwcode == null) {
ElMessage.error("请先查询用户信息"); ElMessage.error("请先查询用户信息");
addConsume.value.sumGold = null; addConsume.value.sumGold = null;
@ -183,43 +162,48 @@ function validateInput() {
return true; return true;
} }
//
const add = async function () {
try {
//
if (!validateInput()) {
return;
}
// 使
calculateCoins(addConsume.value.sumGold);
console.log("addConsume.value", addConsume.value)
// POST
const result = await request({
// url: "/consume/add",
url: "http://18.143.76.3:10704/consume/add",
data: addConsume.value,
//
function formatConsumeData() {
//
addConsume.value.sumGold = Number(addConsume.value.sumGold);
addConsume.value.freeGold = Number(addConsume.value.freeGold);
addConsume.value.permanentGold = Number(addConsume.value.permanentGold);
addConsume.value.taskGold = Number(addConsume.value.taskGold);
});
// 使
const {usedFreeGold, usedPermanentGold, usedTaskGold} =
calculateCoins(
addConsume.value.sumGold,
addConsume.value.freeGold,
addConsume.value.permanentGold,
addConsume.value.taskGold
);
// 使
addConsume.value.usedFreeGold = usedFreeGold;
addConsume.value.usedPermanentGold = usedPermanentGold;
addConsume.value.usedTaskGold = usedTaskGold;
}
console.log("add请求", result);
//
handleResponse(result);
//
resetForm();
} catch (error) {
console.error("请求失败", error);
ElMessage.error("添加失败,请检查网络连接或联系管理员");
}
};
// //
function handleResponse(result) { function handleResponse(result) {
if (result.code !== 0) {
console.log("响应结果", result)
if (result.code === 200) {
ElMessage.success("添加成功"); ElMessage.success("添加成功");
console.log("请求成功", result); console.log("请求成功", result);
} else { } else {
ElMessage.error(result.msg || "添加失败,未知错误"); ElMessage.error(result.msg || "添加失败,未知错误");
} }
} }
// //
function resetForm() { function resetForm() {
//
addConsume.value = { addConsume.value = {
jwcode: null, jwcode: null,
goodsName: "", goodsName: "",
@ -231,7 +215,9 @@ function resetForm() {
adminId: adminData.value.adminId, adminId: adminData.value.adminId,
adminName: adminData.value.adminName, adminName: adminData.value.adminName,
}; };
console.log("重置表单") console.log("重置表单")
user.value = { user.value = {
jwcode: null, jwcode: null,
name: "", name: "",
@ -253,20 +239,15 @@ function resetForm() {
// user.value.jwcode = null; // user.value.jwcode = null;
// user.value = null; // user.value = null;
} }
//
const addBefore = () => { const addBefore = () => {
Ref.value.validate(async (valid) => { Ref.value.validate(async (valid) => {
if (valid) { if (valid) {
ElMessageBox.confirm("确认添加?") ElMessageBox.confirm("确认添加?")
.then(() => { .then(() => {
addConsume.value.freeGold = Number(addConsume.value.freeGold);
addConsume.value.permanentGold = Number(addConsume.value.permanentGold);
addConsume.value.taskGold = Number(-addConsume.value.taskGold);
// trimJwCode();
console.log("这里是jwcode", addConsume.value.jwcode) console.log("这里是jwcode", addConsume.value.jwcode)
add(); add();
console.log("添加成功");
imageUrl.value = "";
console.log("添加成功",);
addConsume.value = {}; addConsume.value = {};
}) })
.catch(() => { .catch(() => {
@ -281,39 +262,6 @@ const addBefore = () => {
} }
}); });
}; };
//
//
const Ref = ref(null);
const rules = reactive({
jwcode: [{required: true, message: "请输入精网号", trigger: "blur"}],
goodsName: [{required: true, message: "请选择消费商品", trigger: "change"}], // change
// taskCoin: [{required: true, message: "", trigger: "blur"}],
// freeCoin: [{required: true, message: "", trigger: "blur"}],
// rechargeCoin: [
// {required: true, message: "", trigger: "blur"},
// ],
sumGold: [
{required: true, message: "消费金币总数不能为空", trigger: "blur"},
],
/* indexName: [
{
required: true,
validator: (rule, value, callback) => {
if (isHC.value === 1 && !value) {
callback(new Error("请选择指标"));
} else {
callback();
}
},
trigger: ["change", "blur"],
},
]*/
});
// //
const getUser = async function (jwcode) { const getUser = async function (jwcode) {
trimJwCode(); trimJwCode();
@ -321,7 +269,7 @@ const getUser = async function (jwcode) {
// POST // POST
const result = await request({ const result = await request({
// url: "user/selectUser", // url: "user/selectUser",
url: "http://192.168.8.247:8081/user/selectUser", // todo ip
url: "http://18.143.76.3:10704/user/selectUser", // todo ip
data: { data: {
// //
jwcode: addConsume.value.jwcode, jwcode: addConsume.value.jwcode,
@ -344,10 +292,7 @@ const getUser = async function (jwcode) {
// //
} }
}; };
//
const goods = ref([]);
// ()
const getGoods = async function () { const getGoods = async function () {
try { try {
// POST // POST
@ -372,15 +317,30 @@ const getGoods = async function () {
} }
}; };
// const getGoodsList = async () => {
// const result = await request({ url: '/goods/list' });
// goodsList.value = result.map(item => ({
// label: item.name,
// value: item.name
// }));
// };
/*
====================监听=================================
*/
//
watch(
() => addConsume.value.sumGold,
(newValue) => {
if (newValue > 0) {
const {free, permanent, task} = calculateCoins(newValue);
addConsume.value.freeGold = free;
addConsume.value.permanentGold = permanent;
addConsume.value.taskGold = task;
} else {
addConsume.value.freeGold = null;
addConsume.value.permanentGold = null;
addConsume.value.taskGold = null;
}
}
);
/*
====================挂载=================================
*/
// //
onMounted(async function () { onMounted(async function () {
await getAdminData(); await getAdminData();
@ -388,7 +348,6 @@ onMounted(async function () {
}); });
</script> </script>
<template> <template>
@ -429,22 +388,6 @@ onMounted(async function () {
<div style="display: flex; align-items: center; gap: 20px;"> <div style="display: flex; align-items: center; gap: 20px;">
<el-form-item prop="productName" label="商品名称" style="flex: 1; margin-right: 0px"> <el-form-item prop="productName" label="商品名称" style="flex: 1; margin-right: 0px">
<!-- <el-autocomplete
v-model="addConsume.goodsName"
:fetch-suggestions="queryProductSearch"
placeholder="请选择商品"
style="width: 300px"
@select="handleProductSelect"
value-key="name"
clearable
:trigger-on-focus="true"
>
<template #default="{ item }">
<div>{{ item.name }}</div>
</template>
</el-autocomplete>-->
<el-select <el-select
v-model="addConsume.goodsName" v-model="addConsume.goodsName"
placeholder="请选择商品" placeholder="请选择商品"
@ -530,10 +473,9 @@ onMounted(async function () {
<el-button type="primary" @click="addBefore"> 提交</el-button> <el-button type="primary" @click="addBefore"> 提交</el-button>
</el-form> </el-form>
<!-- todo 这里少客户信息栏的卸载 -->
<!-- 客户信息栏 --> <!-- 客户信息栏 -->
<el-card style="width: 850px; float: right" class="customer-info">
<el-card v-if="user.jwcode" style="width: 850px; float: right" class="customer-info">
<el-form <el-form
:model="user" :model="user"
label-width="auto" label-width="auto"

32
src/views/consume/beanConsume.vue

@ -91,13 +91,13 @@ const get = async function (val) {
} }
// //
if (getTime.value != null) { 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.startTime != '' && getTime.value.endTime != '') {
detailVo.value.startTime = getTime.value[0]
detailVo.value.endTime = getTime.value[1]
} }
} else { } else {
detailVo.value.startDate = ''
detailVo.value.endDate = ''
detailVo.value.startTime = ''
detailVo.value.endTime = ''
} }
detailVo.value.sortField = sortField.value detailVo.value.sortField = sortField.value
detailVo.value.sortOrder = sortOrder.value detailVo.value.sortOrder = sortOrder.value
@ -172,8 +172,8 @@ const reset = function () {
detailVo.value.productName = '' detailVo.value.productName = ''
detailVo.value.consumePlatform = '' detailVo.value.consumePlatform = ''
detailVo.value.consumeType = '' detailVo.value.consumeType = ''
detailVo.value.startDate = ''
detailVo.value.endDate = ''
detailVo.value.startTime = ''
detailVo.value.endTime = ''
sortField.value = '' sortField.value = ''
sortOrder.value = '' sortOrder.value = ''
getTime.value = {} getTime.value = {}
@ -181,17 +181,17 @@ const reset = function () {
// //
const getToday = function () { const getToday = function () {
const today = new Date() const today = new Date()
const startDate = new Date(
const startTime = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() today.getDate()
) )
const endDate = new Date(
const endTime = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() + 1 today.getDate() + 1
) )
getTime.value = [startDate, endDate]
getTime.value = [startTime, endTime]
console.log('getTime', getTime.value) console.log('getTime', getTime.value)
get() get()
} }
@ -199,34 +199,34 @@ const getToday = function () {
const getYesterday = function () { const getYesterday = function () {
const yesterday = new Date() const yesterday = new Date()
yesterday.setDate(yesterday.getDate() - 1) yesterday.setDate(yesterday.getDate() - 1)
const startDate = new Date(
const startTime = new Date(
yesterday.getFullYear(), yesterday.getFullYear(),
yesterday.getMonth(), yesterday.getMonth(),
yesterday.getDate() yesterday.getDate()
) )
const endDate = new Date(
const endTime = new Date(
yesterday.getFullYear(), yesterday.getFullYear(),
yesterday.getMonth(), yesterday.getMonth(),
yesterday.getDate() + 1 yesterday.getDate() + 1
) )
getTime.value = [startDate, endDate]
getTime.value = [startTime, endTime]
console.log('getTime', getTime.value) console.log('getTime', getTime.value)
get() get()
} }
// 7 // 7
const get7Days = function () { const get7Days = function () {
const today = new Date() const today = new Date()
const startDate = new Date(
const startTime = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() - 6 today.getDate() - 6
) )
const endDate = new Date(
const endTime = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() + 1 today.getDate() + 1
) )
getTime.value = [startDate, endDate]
getTime.value = [startTime, endTime]
console.log('getTime', getTime.value) console.log('getTime', getTime.value)
get() get()
} }

284
src/views/consume/coinConsumeDetail.vue

@ -1,14 +1,18 @@
<script setup> <script setup>
import {onMounted, ref, watch} from 'vue'
import {computed, onMounted, ref} from 'vue'
import {dayjs, ElMessage} from 'element-plus' import {dayjs, ElMessage} from 'element-plus'
import request from '@/util/http' import request from '@/util/http'
//
//
const formatTime = (val) => val ? dayjs(val).format('YYYY-MM-DD HH:mm:ss') : '' const formatTime = (val) => val ? dayjs(val).format('YYYY-MM-DD HH:mm:ss') : ''
// //
// //
const adminData = ref({}) const adminData = ref({})
const getAdminData = async function () { const getAdminData = async function () {
try { try {
const result = await request({ const result = await request({
@ -22,10 +26,12 @@ const getAdminData = async function () {
console.log('请求失败', error) console.log('请求失败', error)
} }
} }
// //
const tableData = ref([]) const tableData = ref([])
// ====================================== // ======================================
// detailVo
// consumeUser
const consumeUser = ref({ const consumeUser = ref({
jwcode: null, jwcode: null,
payPlatform: "", payPlatform: "",
@ -41,8 +47,10 @@ 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({
startTime: '', startTime: '',
@ -50,17 +58,15 @@ const getTime = ref({
}) })
// //
const activity = ref([]) const activity = ref([])
//
const allData = ref([])
//
const area = ref([])
//
const market = ref([])
//
const activeName = ref('all')
//
const sortField = ref('')
const sortOrder = ref('')
// //
// todo
const consumePlatform = [ const consumePlatform = [
{ {
value: '金币系统', value: '金币系统',
@ -81,11 +87,6 @@ const consumePlatform = [
} }
] ]
// //
// const tableHeight = computed(function () {
// return (getObj.value.pageSize + 1) * 41 + "px";
// });
//
// //
const tableDataTotal = ref({}) const tableDataTotal = ref({})
@ -93,23 +94,26 @@ const permanentGold = ref(0)
const freeGold = ref(0) const freeGold = ref(0)
const taskGold = ref(0) const taskGold = ref(0)
const totalGold = ref(0) const totalGold = ref(0)
//
const permanentGolds = ref(0)
const freeGolds = ref(0)
const taskGolds = ref(0)
//
const sumGold = computed(() => permanentGolds.value + freeGolds.value + taskGolds.value)
//
// ========================================================================================================================================================= // =========================================================================================================================================================
// //
const ConsumeSelectBy = async function (val) { const ConsumeSelectBy = async function (val) {
try { try {
/* // 地区赋值
if (adminData.value.area != '总部') {
consumeUser.value.area = adminData.value.area
}*/
// //
if (typeof val === 'number') { if (typeof val === 'number') {
getObj.value.pageNum = val getObj.value.pageNum = val
} }
// //
console.log('时间时间111', getTime.value[0])
console.log('时间时间22', formatTime(getTime.value[0]))
if (getTime.value != null) { if (getTime.value != null) {
if (getTime.value.startTime != '' && getTime.value.endTime != '') { if (getTime.value.startTime != '' && getTime.value.endTime != '') {
@ -128,14 +132,19 @@ const ConsumeSelectBy = async function (val) {
console.log('搜索参数1', getObj.value) console.log('搜索参数1', getObj.value)
console.log('搜索参数2', consumeUser.value) console.log('搜索参数2', consumeUser.value)
// POST // POST
const result = await request({ const result = await request({
// url: 'consumeUser/selectBy', // url: 'consumeUser/selectBy',
url: 'http://192.168.8.247:8081/consume/selectBy',
url: 'http://18.143.76.3:10704/consume/selectBy',
data: { data: {
pageNum: getObj.value.pageNum, pageNum: getObj.value.pageNum,
pageSize: getObj.value.pageSize, pageSize: getObj.value.pageSize,
consumeUser: consumeUser.value
consumeUser: {
...consumeUser.value,
sortField: sortField.value,
sortOrder: sortOrder.value
}
} }
}) })
@ -144,48 +153,61 @@ const ConsumeSelectBy = async function (val) {
const detailWithoutSort = {...consumeUser.value} const detailWithoutSort = {...consumeUser.value}
delete detailWithoutSort.sortField delete detailWithoutSort.sortField
delete detailWithoutSort.sortOrder delete detailWithoutSort.sortOrder
//
const resultTotalGold = await request({
// url: 'http://18.143.76.3:10704/consume/statsGold',
url: 'http://18.143.76.3:10704/consume/statsGold',
// data: {
// pageNum: getObj.value.pageNum,
// pageSize: getObj.value.pageSize,
// consumeUser: consumeUser.value
// }
const result2 = await request({
// url: 'http://192.168.8.247:8081/consume/statsGold',
url: 'http://192.168.8.247:8081/consume/statsGold',
data: {
...detailWithoutSort
}
}) })
//
console.log('请求成功', result)
console.log('请求成功2', result2)
console.log("总计",resultTotalGold)
if (resultTotalGold.code === 200 && resultTotalGold.data) {
const data = resultTotalGold.data
console.log('获取到的金币数据:', data)
permanentGolds.value = Number(data.permanentGolds) || 0
freeGolds.value = Number(data.freeGolds) || 0
taskGolds.value = Number(data.taskGolds) || 0
}
// //
tableData.value = result.data.list tableData.value = result.data.list
tableDataTotal.value = result2.data
if (result2.data == null) {
console.log('请求成功2', result2)
tableDataTotal.value = resultTotalGold.data
if (resultTotalGold.data == null) {
console.log('请求成功2', resultTotalGold)
// 西 // 西
tableDataTotal.value = {
sumRcion: 0,
sumFcion: 0,
sumTcion: 0,
sumcion: 0
}
tableDataTotal.value = resultTotalGold.data
} }
console.log('tableDataT', tableDataTotal)
const sumGoldList = tableData.value.map(item => item.sumGold);
console.log("sumGold",sumGoldList); // sumGold
//
permanentGold.value = parseFloat(
(tableDataTotal.value.sumRcion / 100).toFixed(2)
)
freeGold.value = parseFloat(
(tableDataTotal.value.sumFcion / 100).toFixed(2)
)
taskGold.value = parseFloat(
(tableDataTotal.value.sumTcion / 100).toFixed(2)
)
totalGold.value = parseFloat(
(tableDataTotal.value.sumcion / 100).toFixed(2)
)
console.log('@@@@@@@@@@tableDataT', tableDataTotal.value.list)
// totalGold.value = tableData.value.sum
// //
// permanentGold.value = parseFloat(
// (tableDataTotal.value.list.sumGold / 100).toFixed(2)
// )
// freeGold.value = parseFloat(
// (tableDataTotal.value.sumFcion / 100).toFixed(2)
// )
// taskGold.value = parseFloat(
// (tableDataTotal.value.sumTcion / 100).toFixed(2)
// )
// totalGold.value = parseFloat(
// (tableDataTotal.value.sumcion / 100).toFixed(2)
// )
console.log('tableData', tableData.value) console.log('tableData', tableData.value)
// //
total.value = result.data.total total.value = result.data.total
console.log('total', total.value) console.log('total', total.value)
@ -274,60 +296,14 @@ const get7Days = function () {
console.log('getTime', getTime.value) console.log('getTime', getTime.value)
ConsumeSelectBy() ConsumeSelectBy()
} }
//
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()
}
}
//
onMounted(async function () {
await getAdminData()
await ConsumeSelectBy()
// getActivity();
await getArea();
})
//
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('输入的数字合法')
ConsumeSelectBy()
} else {
//
ElMessage({
type: 'error',
message: '请检查输入内容'
})
}
} else {
//
ElMessage({
type: 'error',
message: '请检查输入内容'
})
}
}
// //
const goods = ref([]) const goods = ref([])
const getGoods = async function () { const getGoods = async function () {
try { try {
// POST // POST
const result = await request({ const result = await request({
url: 'http://192.168.8.247:8081/general/goods',
url: 'http://18.143.76.3:10704/general/goods',
data: {} data: {}
}) })
// //
@ -340,22 +316,20 @@ const getGoods = async function () {
// //
} }
} }
getGoods()
//
const getArea = async function () {
//
const getMarket = async function () {
try { try {
// //
const result = await request({ const result = await request({
// todo
// url: '/general/market', // url: '/general/market',
url: 'http://192.168.8.247:8081/general/market', // todo
url: 'http://18.143.76.3:10704/general/market', // todo
data: {} data: {}
}) })
console.log('请求地区列表成功', result) console.log('请求地区列表成功', result)
// //
area.value = result.data
console.log('地区数据', area.value)
market.value = result.data
console.log('地区数据', market.value)
} catch (error) { } catch (error) {
console.log('请求地区列表失败', error) console.log('请求地区列表失败', error)
ElMessage({ ElMessage({
@ -366,33 +340,65 @@ const getArea = async function () {
} }
//
const sortField = ref('')
const sortOrder = ref('')
// //
const handleSortChange = (column) => { const handleSortChange = (column) => {
console.log('排序字段:', column.prop) console.log('排序字段:', column.prop)
console.log('排序方式:', column.order) console.log('排序方式:', column.order)
if (column.prop === 'permanentGold') { if (column.prop === 'permanentGold') {
sortField.value = 'recharge_coin'
sortField.value = 'permanentGold'
} else if (column.prop === 'taskGold') { } else if (column.prop === 'taskGold') {
sortField.value = 'task_coin'
sortField.value = 'taskGold' //
} else if (column.prop === 'freeGold') { } else if (column.prop === 'freeGold') {
sortField.value = 'free_coin'
sortField.value = 'freeGold'
} else if (column.prop === 'createTime') { } else if (column.prop === 'createTime') {
sortField.value = 'create_time' sortField.value = 'create_time'
} }
sortOrder.value = column.order === 'ascending' ? 'DESC' : 'ASC'
//
sortOrder.value = column.order === 'ascending' ? 'ASC' : 'DESC'
ConsumeSelectBy() ConsumeSelectBy()
} }
const handlePageSizeChange = function (val) { const handlePageSizeChange = function (val) {
getObj.value.pageSize = val getObj.value.pageSize = val
ConsumeSelectBy() ConsumeSelectBy()
} }
const handleCurrentChange = function (val) { const handleCurrentChange = function (val) {
getObj.value.pageNum = val getObj.value.pageNum = val
ConsumeSelectBy() ConsumeSelectBy()
} }
//
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('输入的数字合法')
ConsumeSelectBy()
} else {
//
ElMessage({
type: 'error',
message: '请检查输入内容'
})
}
} else {
console.log('输入的数字不合法')
}
}
//
onMounted(async function () {
await getAdminData()
await ConsumeSelectBy()
// getActivity();
await getMarket()
await getGoods()
})
</script> </script>
<template> <template>
@ -431,7 +437,7 @@ const handleCurrentChange = function (val) {
clearable clearable
> >
<el-option <el-option
v-for="(item, index) in area"
v-for="(item, index) in market"
:key="index" :key="index"
:label="item" :label="item"
:value="item" :value="item"
@ -458,25 +464,7 @@ const handleCurrentChange = function (val) {
</el-select> </el-select>
</div> </div>
</el-col> </el-col>
<!-- <el-col :span="8">
<div class="head-card-element">
<el-text class="mx-1" size="large">消费类型</el-text>
<el-select
v-model="consumeUser.consumeType"
placeholder="请选择消费类型"
size="large"
style="width: 240px"
clearable
>
<el-option
v-for="item in consumeType"
:key="item"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
</el-col> -->
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="21"> <el-col :span="21">
@ -495,10 +483,7 @@ const handleCurrentChange = function (val) {
> >
<el-button @click="getYesterday()"></el-button> <el-button @click="getYesterday()"></el-button>
<el-button @click="get7Days()">近7天</el-button> <el-button @click="get7Days()">近7天</el-button>
<!-- </div>
</el-col>
<el-col :span="3">
<div class="head-card-btn"> -->
<el-button type="success" @click="reset()">重置</el-button> <el-button type="success" @click="reset()">重置</el-button>
<el-button type="primary" @click="search()">查询</el-button> <el-button type="primary" @click="search()">查询</el-button>
@ -513,9 +498,9 @@ const handleCurrentChange = function (val) {
<el-col> <el-col>
<el-card> <el-card>
<div> <div>
消耗金额{{ Math.abs(totalGold) }}新币永久金币{{ Math.abs(permanentGold) }}免费金币{{
Math.abs(freeGold)
}}任务金币{{ Math.abs(taskGold) }}
消耗金额{{ Math.abs(sumGold) }}新币永久金币{{ Math.abs(permanentGolds) }}免费金币{{
Math.abs(freeGolds)
}}任务金币{{ Math.abs(taskGolds) }}
</div> </div>
<!-- 设置表格容器的高度和滚动样式 --> <!-- 设置表格容器的高度和滚动样式 -->
<div style="height: 576px; overflow-y: auto"> <div style="height: 576px; overflow-y: auto">
@ -561,15 +546,10 @@ const handleCurrentChange = function (val) {
<template #default="scope"> <template #default="scope">
<!-- 使用非严格相等比较 --> <!-- 使用非严格相等比较 -->
{{ scope.row.payPlatform }} {{ scope.row.payPlatform }}
<!-- <span scope.row.consumePlatform == 1">Homily Chart</span>-->
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column
prop="consumeType"
label="消费类型"
width="120px"
/> -->
<el-table-column <el-table-column
prop="sumGold" prop="sumGold"
label="消费金币总数" label="消费金币总数"
@ -587,7 +567,7 @@ const handleCurrentChange = function (val) {
<el-table-column <el-table-column
prop="permanentGold" prop="permanentGold"
label="永久金币" label="永久金币"
sortable="custom"
sortable="custom"
width="110px" width="110px"
> >
<template #default="scope"> <template #default="scope">
@ -605,9 +585,9 @@ const handleCurrentChange = function (val) {
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="taskCold"
prop="taskGold"
label="任务金币" label="任务金币"
sortable="custom"
sortable="custom"
width="110px" width="110px"
> >
<template #default="scope"> <template #default="scope">
@ -625,7 +605,7 @@ const handleCurrentChange = function (val) {
<el-table-column <el-table-column
prop="createTime" prop="createTime"
label="消费时间" label="消费时间"
sortable="custom"
sortable="custom"
width="180px" width="180px"
/> />
</el-table> </el-table>

2
src/views/home.vue

@ -36,7 +36,7 @@ const currentArea = ref('全部')
const getAreas = async function () { const getAreas = async function () {
try { try {
const result = await API({ url: 'http://192.168.8.247:8081/general/market', data: {} })
const result = await API({ url: 'http://18.143.76.3:10704/general/market', data: {} })
areas.value = result.data areas.value = result.data
console.log('请求成功', result) console.log('请求成功', result)
} catch (error) { } catch (error) {

2
src/views/index.vue

@ -36,7 +36,7 @@ const currentArea = ref('全部')
const getAreas = async function () { const getAreas = async function () {
try { try {
const result = await API({ url: '/recharge/user/search', data: {} })
const result = await API({ url: 'http://18.143.76.3:10704/general/market', data: {} })
areas.value = result.data areas.value = result.data
console.log('请求成功', result) console.log('请求成功', result)
} catch (error) { } catch (error) {

315
src/views/managerecharge/rate.vue

@ -1,15 +1,14 @@
<script setup> <script setup>
import {onMounted, reactive, ref} from 'vue' import {onMounted, reactive, ref} from 'vue'
import {ElMessage, ElMessageBox} from 'element-plus' import {ElMessage, ElMessageBox} from 'element-plus'
import moment from 'moment'
import _ from 'lodash'
import request from '@/util/http' import request from '@/util/http'
//
//
const adminData = ref({ const adminData = ref({
adminId: '',
name: '' name: ''
}) })
const getAdminData = async function () { const getAdminData = async function () {
try { try {
const result = await request({ const result = await request({
@ -17,21 +16,22 @@ const getAdminData = async function () {
data: {} data: {}
}) })
adminData.value = result adminData.value = result
rateAdd.value.adminId = adminData.value.adminId
rateEdit.value.adminId = adminData.value.adminId rateEdit.value.adminId = adminData.value.adminId
console.log('请求成功', result) console.log('请求成功', result)
} catch (error) { } catch (error) {
console.log('请求失败', error) console.log('请求失败', error)
} }
} }
getAdminData()
const regeAdd = ref(false)
//
const regeEdit = ref(false) const regeEdit = ref(false)
//
// (id )
const editFormRef = ref(null) const editFormRef = ref(null)
// //
const tableData = ref([]) const tableData = ref([])
// //
const getObj = ref({ const getObj = ref({
pageNum: 1, pageNum: 1,
@ -39,196 +39,95 @@ const getObj = ref({
}) })
const total = ref(0) const total = ref(0)
//
// time
const timeRange = ref([])
// YYYY-MM-DD HH:mm:ss
const formatDateTime = (date) => {
return moment(date).format('YYYY-MM-DD HH:mm:ss')
}
// const startTime = ref('2023-01-01 00:00:00')
// const endTime = ref('2025-12-31 23:59:59')
const get = async function (val) {
const getAllRate = async function (val) {
try { try {
// //
if (typeof val === 'number') { if (typeof val === 'number') {
getObj.value.pageNum = val; getObj.value.pageNum = val;
} }
//
const time = {}
if (timeRange.value.length === 2) {
time.startTime = moment(timeRange.value[0]).format('YYYY-MM-DD HH:mm:ss')
time.endTime = moment(timeRange.value[1]).format('YYYY-MM-DD HH:mm:ss')
} else { //
time.startTime = '2023-01-01 00:00:00'
time.endTime = '2025-12-31 23:59:59'
}
console.log('搜索参数', {
...getObj.value,
rate: {...time}
});
// POST // POST
const result = await request({ const result = await request({
url: '/rates/search',
url: 'http://18.143.76.3:10704/rate/selectAll',
method: 'POST', method: 'POST',
data: { data: {
...getObj.value,
rate: {...time}
pageNum: getObj.value.pageNum,
pageSize: getObj.value.pageSize,
} }
}); });
// //
console.log('请求成功', result);
console.log('这是汇率列表 请求成功', result);
// //
tableData.value = result.data.list; tableData.value = result.data.list;
// //
total.value = result.data.total; total.value = result.data.total;
} catch (error) { } catch (error) {
console.log('请求失败', error); console.log('请求失败', error);
ElMessage.error('请求失败'); ElMessage.error('请求失败');
} }
} }
//
const search = function () {
getObj.value.pageNum = 1
get()
}
//
const rateAdd = ref({})
const addRate = async function () {
rateAdd.value.adminId = adminData.value.adminId
if (rateAdd.value.startTime) {
const date = new Date(rateAdd.value.startTime)
date.setHours(0, 0, 0, 0)
rateAdd.value.startTime = `${date.getFullYear()}-${String(
date.getMonth() + 1
).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} 00:00:00`
}
if (rateAdd.value.endTime) {
const date = new Date(rateAdd.value.endTime)
date.setHours(23, 59, 59, 999)
rateAdd.value.endTime = `${date.getFullYear()}-${String(
date.getMonth() + 1
).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} 23:59:59`
}
try {
console.log('搜索参数', getObj.value)
// POST
const result = await request({
url: '/rates/add',
data: rateAdd.value
})
if (result.code == 0) {
ElMessage.error(result.msg)
} else {
ElMessage({
type: 'success',
message: '新增汇率成功'
})
}
//
console.log('请求成功', result)
get()
} catch (error) {
console.log('请求失败', error)
}
}
const add = () => {
Ref.value.validate(async (valid) => {
if (valid) {
ElMessageBox.confirm('确认添加?')
.then(() => {
addRate()
rateAdd.value = {}
timeRange.value = {
startTime: '',
endTime: ''
}
regeAdd.value = false
})
.catch(() => {
regeAdd.value = false
})
} else {
//
ElMessage({
type: 'error',
message: '请检查输入内容'
})
}
})
}
const handlePageSizeChange = function (val) { const handlePageSizeChange = function (val) {
getObj.value.pageSize = val getObj.value.pageSize = val
get()
getAllRate()
} }
const handleCurrentChange = function (val) { const handleCurrentChange = function (val) {
getObj.value.pageNum = val getObj.value.pageNum = val
get()
getAllRate()
} }
// 使 _.throttle trailing false
const throttledAdd = _.throttle(add, 5000, {trailing: false})
//
const rateEdit = ref({})
//
const rateEdit = ref({
id: null,
rateName: '',
num: null,
adminId: null,
updateTime: Date.now(),
})
// //
const getEditData = async function (row) { const getEditData = async function (row) {
//
if (editFormRef.value) {
editFormRef.value.resetFields()
}
try { try {
console.log('搜索参数', getObj.value) console.log('搜索参数', getObj.value)
// POST // POST
const result = await request({ const result = await request({
url: '/rates/searchById?rateId=' + row.rateId,
data: {}
url: 'http://18.143.76.3:10704/rate/selectById',
data: {id: row.id}
}) })
// //
console.log('请求成功', result)
console.log('根据id查 请求成功', result)
// //
rateEdit.value = result.data
// rateEdit.value = result.data
//
rateEdit.value.id = row.id
rateEdit.value.rateName = row.rateName
rateEdit.value.num = row.num
console.log('根据id获取的数据', rateEdit.value)
rateEdit.value.adminId = adminData.value.adminId rateEdit.value.adminId = adminData.value.adminId
} catch (error) { } catch (error) {
console.log('请求失败', error) console.log('请求失败', error)
} }
} }
const editRate = async function () { const editRate = async function () {
if (rateEdit.value.startTime) {
const date = new Date(rateEdit.value.startTime)
date.setHours(0, 0, 0, 0)
rateEdit.value.startTime = `${date.getFullYear()}-${String(
date.getMonth() + 1
).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} 00:00:00`
}
if (rateEdit.value.endTime) {
const date = new Date(rateEdit.value.endTime)
date.setHours(23, 59, 59, 999)
rateEdit.value.endTime = `${date.getFullYear()}-${String(
date.getMonth() + 1
).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} 23:59:59`
}
try { try {
console.log('搜索参数', rateEdit.value) console.log('搜索参数', rateEdit.value)
// POST // POST
const result = await request({ const result = await request({
url: '/rates/update',
url: 'http://18.143.76.3:10704/rate/update',
data: rateEdit.value data: rateEdit.value
}) })
// //
console.log('请求成功', result) console.log('请求成功', result)
get()
await getAllRate()
} catch (error) { } catch (error) {
console.log('请求失败', error) console.log('请求失败', error)
} }
@ -247,29 +146,26 @@ const edit = () => {
// //
const cancelEdit = () => { const cancelEdit = () => {
regeEdit.value = false regeEdit.value = false
if (editFormRef.value) {
editFormRef.value.resetFields()
}
} }
const handleEditDialogClose = () => { const handleEditDialogClose = () => {
if (editFormRef.value) { if (editFormRef.value) {
editFormRef.value.resetFields()
getAllRate()
} }
} }
// //
onMounted(async function () { onMounted(async function () {
get()
await getAllRate()
await getAdminData()
}) })
//
function handlePageChange(currentPage, pageSize) {
get()
}
// //
const options = [
const rateName = [
{ {
value: 'USD', value: 'USD',
label: 'USD' label: 'USD'
@ -320,37 +216,7 @@ function formatDate(value) {
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}` return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
} }
function formatDateTwe(value) {
if (!value) return ''
const date = new Date(value)
const year = date.getFullYear()
const month = (date.getMonth() + 1).toString().padStart(2, '0')
const day = date.getDate().toString().padStart(2, '0')
return `${year}-${month}-${day}`
}
//
// ref
const Ref = ref(null)
const handleStartTimeChange = () => {
Ref.value.validateField('endTime')
}
const checkStartTime = function (rule, value, callback) {
if (value <= new Date()) {
callback(new Error('开始时间不能小于当前时间'))
} else {
callback()
}
}
const checkEndTime = function (rule, value, callback) {
if (value <= new Date()) {
callback(new Error('结束时间不能小于当前时间'))
} else if (value <= rateAdd.value.startTime) {
callback(new Error('结束时间不能小于开始时间'))
} else {
callback()
}
}
const checkFreeGoldRadio = function (rule, value, callback) { const checkFreeGoldRadio = function (rule, value, callback) {
if (value == '0' || value == null || value == '') { if (value == '0' || value == null || value == '') {
callback(new Error('请输入汇率比')) callback(new Error('请输入汇率比'))
@ -361,57 +227,37 @@ const checkFreeGoldRadio = function (rule, value, callback) {
} }
} }
const rules = reactive({ const rules = reactive({
currency: [{required: true, message: '请选择货币名称', trigger: 'blur'}],
exchangeRate: [{validator: checkFreeGoldRadio, trigger: 'blur'}],
// startTime: [
// {required: true, message: '', trigger: 'blur'},
// {validator: checkStartTime, trigger: 'blur'}
// ],
// endTime: [
// {required: true, message: '', trigger: 'blur'},
// {validator: checkEndTime, trigger: 'blur'}
// ]
rateName: [{required: true, message: '请选择货币名称', trigger: 'blur'}],
num: [{validator: checkFreeGoldRadio, trigger: 'blur'}],
}) })
//
function handleInput(value) { function handleInput(value) {
//
const invalidChars = /[^0-9.]/.test(value);
if (invalidChars) {
ElMessage.warning('只能输入数字和小数点');
}
//
//
let validValue = value.replace(/[^\d.]/g, ''); let validValue = value.replace(/[^\d.]/g, '');
//
validValue = validValue.replace(/\.{2,}/g, '.');
//
if (validValue.split('.').length > 2) {
validValue = validValue.replace(/\.$/, '');
ElMessage.warning('注意!只能使用一个小数点');
//
const parts = validValue.split('.');
if (parts.length > 2) {
validValue = parts[0] + '.' + parts.slice(1).join('');
ElMessage.warning('请输入正确格式');
} }
// 7
const originalDecimalPart = validValue.split('.')[1] || '';
validValue = validValue.replace(/(\.\d{7})\d+/, '$1');
//
const newDecimalPart = validValue.split('.')[1] || '';
if (originalDecimalPart.length > 7 && originalDecimalPart !== newDecimalPart) {
// 7
const [integerPart, decimalPart = ''] = validValue.split('.');
if (decimalPart.length > 7) {
validValue = `${integerPart}.${decimalPart.slice(0, 7)}`;
ElMessage.warning('最多只能输入7位小数'); ElMessage.warning('最多只能输入7位小数');
} }
//
//
// rateAdd.value.exchangeRate = validValue;
// rateEdit.value.exchangeRate = validValue;
//
if (validValue && !/^\d+(\.\d{0,7})?$/.test(validValue)) {
//
const isValidFormat = /^\d+(\.\d{0,7})?$/.test(validValue);
if (value && !isValidFormat) {
ElMessage.warning('请输入正确的数字格式'); ElMessage.warning('请输入正确的数字格式');
} }
//
rateEdit.value.num = validValue;
return validValue;
} }
// //
@ -424,10 +270,8 @@ const formSize = ref('default')
<el-row> <el-row>
<el-col> <el-col>
<el-card class="box-card" style="max-width: 100%"> <el-card class="box-card" style="max-width: 100%">
<!-- 添加 -->
<!-- 表格 --> <!-- 表格 -->
<div> <div>
<!-- 这里有个小bug应该是>0-->
<el-table <el-table
:data="tableData" :data="tableData"
v-if="(tableData.flag = 1)" v-if="(tableData.flag = 1)"
@ -444,18 +288,18 @@ const formSize = ref('default')
}}</span> }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="currency" label="货币名称" :span="2"/>
<el-table-column prop="exchangeRate" label="汇率" :span="2">
<el-table-column prop="rateName" label="货币名称" :span="2"/>
<el-table-column prop="num" label="汇率" :span="2">
<template #default="scope"> <template #default="scope">
<p> <p>
{{ scope.row.exchangeRate }} 1
{{ scope.row.num }} 1
</p> </p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="createTime" label="添加时间" :span="3">
<el-table-column prop="updateTime" label="添加时间" :span="3">
<template #default="scope"> <template #default="scope">
<span>{{ formatDate(scope.row.createTime) }}</span>
<span>{{ formatDate(scope.row.updateTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" :span="3"> <el-table-column label="操作" :span="3">
@ -475,6 +319,7 @@ const formSize = ref('default')
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<!-- 分页 --> <!-- 分页 -->
<div class="pagination"> <div class="pagination">
<el-pagination <el-pagination
@ -510,31 +355,31 @@ const formSize = ref('default')
:size="formSize" :size="formSize"
status-icon status-icon
> >
<el-form-item prop="currency" label="货币名称:">
<el-form-item prop="rateName" label="货币名称:">
<el-select <el-select
v-model="rateEdit.currency"
v-model="rateEdit.rateName"
placeholder="请选择" placeholder="请选择"
style="width: 240px" style="width: 240px"
> >
<el-option <el-option
v-for="item in options"
v-for="item in rateName"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value" :value="item.value"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item prop="exchangeRate" label="汇率:">
<el-form-item prop="num" label="汇率:">
<el-input <el-input
v-model="rateEdit.exchangeRate"
v-model="rateEdit.num"
@update:modelValue="handleInput" @update:modelValue="handleInput"
style="width: 120px" style="width: 120px"
/> />
<p class="unit">:1</p> <p class="unit">:1</p>
<p class="rate-tip"> <p class="rate-tip">
(提示当前规则每 (提示当前规则每
<span>{{ rateEdit.exchangeRate }}</span>
<span>{{ rateEdit.currency }}</span>
<span>{{ rateEdit.num }}</span>
<span>{{ rateEdit.rateName }}</span>
可兑换 1 新币) 可兑换 1 新币)
</p> </p>
</el-form-item> </el-form-item>

1299
src/views/recharge/addCoinRecharge.vue
File diff suppressed because it is too large
View File

38
src/views/recharge/beanRecharge.vue

@ -118,13 +118,13 @@ const get = async function (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.startTime != '' && getTime.value.endTime != '') {
rechargeVo.value.startTime = getTime.value[0]
rechargeVo.value.endTime = getTime.value[1]
} }
} else { } else {
rechargeVo.value.startDate = ''
rechargeVo.value.endDate = ''
rechargeVo.value.startTime = ''
rechargeVo.value.endTime = ''
} }
// //
rechargeVo.value.sortField = sortField.value rechargeVo.value.sortField = sortField.value
@ -139,8 +139,8 @@ const get = async function (val) {
const detailWithoutSort = ref({ const detailWithoutSort = ref({
area: rechargeVo.value.area, area: rechargeVo.value.area,
adminId: rechargeVo.value.adminId, adminId: rechargeVo.value.adminId,
startDate: rechargeVo.value.startDate,
endDate: rechargeVo.value.endDate
startTime: rechargeVo.value.startTime,
endTime: rechargeVo.value.endTime
}) })
const result2 = await API({ const result2 = await API({
url: '/recharge/recharge/RechargeA', url: '/recharge/recharge/RechargeA',
@ -206,8 +206,8 @@ const reset = function () {
delete rechargeVo.value.activityId delete rechargeVo.value.activityId
delete rechargeVo.value.payWay delete rechargeVo.value.payWay
delete rechargeVo.value.area delete rechargeVo.value.area
delete rechargeVo.value.startDate
delete rechargeVo.value.endDate
delete rechargeVo.value.startTime
delete rechargeVo.value.endTime
delete sortField.value delete sortField.value
delete sortOrder.value delete sortOrder.value
getTime.value = {} getTime.value = {}
@ -215,17 +215,17 @@ const reset = function () {
// //
const getToday = function () { const getToday = function () {
const today = new Date() const today = new Date()
const startDate = new Date(
const startTime = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() today.getDate()
) )
const endDate = new Date(
const endTime = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() + 1 today.getDate() + 1
) )
getTime.value = [startDate, endDate]
getTime.value = [startTime, endTime]
console.log('getTime', getTime.value) console.log('getTime', getTime.value)
get() get()
} }
@ -241,34 +241,34 @@ const handleCurrentChange = function (val) {
const getYesterday = function () { const getYesterday = function () {
const yesterday = new Date() const yesterday = new Date()
yesterday.setDate(yesterday.getDate() - 1) yesterday.setDate(yesterday.getDate() - 1)
const startDate = new Date(
const startTime = new Date(
yesterday.getFullYear(), yesterday.getFullYear(),
yesterday.getMonth(), yesterday.getMonth(),
yesterday.getDate() yesterday.getDate()
) )
const endDate = new Date(
const endTime = new Date(
yesterday.getFullYear(), yesterday.getFullYear(),
yesterday.getMonth(), yesterday.getMonth(),
yesterday.getDate() + 1 yesterday.getDate() + 1
) )
getTime.value = [startDate, endDate]
getTime.value = [startTime, endTime]
console.log('getTime', getTime.value) console.log('getTime', getTime.value)
get() get()
} }
// 7 // 7
const get7Days = function () { const get7Days = function () {
const today = new Date() const today = new Date()
const startDate = new Date(
const startTime = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() - 6 today.getDate() - 6
) )
const endDate = new Date(
const endTime = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() + 1 today.getDate() + 1
) )
getTime.value = [startDate, endDate]
getTime.value = [startTime, endTime]
console.log('getTime', getTime.value) console.log('getTime', getTime.value)
get() get()
} }
@ -343,7 +343,7 @@ const getActivity = async function () {
const getArea = async function () { const getArea = async function () {
try { try {
// POST // POST
const result = await API({ url: 'recharge/user/search', data: {} })
const result = await API({ url: 'http://18.143.76.3:10704/general/market', data: {} })
// //
console.log('请求成功', result) console.log('请求成功', result)
// //

490
src/views/recharge/coinRechargeDetail.vue

@ -12,7 +12,7 @@ const getAdminData = async function () {
try { try {
const result = await API({ url: '/admin/userinfo', data: {} }) const result = await API({ url: '/admin/userinfo', data: {} })
adminData.value = result adminData.value = result
rechargeVo.value.adminId = adminData.value.adminId
rechargeUser.value.adminId = adminData.value.adminId
console.log('请求成功', result) console.log('请求成功', result)
console.log('用户信息', adminData.value) console.log('用户信息', adminData.value)
} catch (error) { } catch (error) {
@ -24,7 +24,7 @@ const getAdminData = async function () {
const tableData = ref([]) const tableData = ref([])
// =========================================== // ===========================================
// recharge // recharge
const rechargeVo = ref({
const rechargeUser = ref({
adminId: adminData.value.adminId adminId: adminData.value.adminId
}) })
// //
@ -41,11 +41,24 @@ const activity = ref([])
// //
const allData = ref([]) const allData = ref([])
// //
const area = ref([])
//
const activeName = ref('all')
const market = ref([])
//
const formatTime = (val) => val ? moment(val).format('YYYY-MM-DD HH:mm:ss') : ''
// money permanentGold freeGold
const money = ref(0)
const permanentGold = ref(0)
const freeGold = ref(0)
//
const permanentGolds = ref(0)
const freeGolds = ref(0)
// //
const payWay = [
const payModel = [
{ {
value: '微信', value: '微信',
label: '微信' label: '微信'
@ -75,113 +88,122 @@ const payWay = [
// //
const delObj = ref({}) const delObj = ref({})
// //
// const tableHeight = computed(function () {
// return (getObj.value.pageSize + 2) * 60 + "px";
// });
//
//
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 pendingGold = ref(0)
const pendingRGold = ref(0)
const pendingFGold = 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 getActivity = async function () {
try {
// POST
const result = await API({ url: '/recharge/activity/select', data: {} })
//
console.log('请求成功', result)
//
activity.value = result.data
console.log('activity', activity.value)
} catch (error) {
console.log('请求失败', error)
//
}
}
//
//
const getArea = async function () {
try {
// POST
const result = await API({ url: 'http://18.143.76.3:10704/general/market', data: {} })
//
console.log('请求成功', result)
//
market.value = result.data
console.log('地区', market.value)
} catch (error) {
console.log('请求失败', error)
//
}
}
//
const isLoadingPlatform = ref(false)
//
const platform = ref([])
//
const getPlatform = async () => {
isLoadingPlatform.value = true;
try {
const result = await API({
url: 'http://18.143.76.3:10704/general/platform',
method: 'post',
data: {}//
})
// { value, label }
if(Array.isArray(result.data)) {
platform.value = result.data.map(item => ({ value: item, label: item }));
} else {
console.error('充值类型格式错误',result)
ElMessage.error('充值类型格式错误,请联系管理员')
}
} catch (error) {
console.error('获取充值类型失败:', error);
ElMessage.error('获取充值类型失败,请稍后重试');
} finally {
isLoadingPlatform.value = false
}
}
// =========================================================================== // ===========================================================================
// //
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 (typeof val === 'number') { if (typeof val === 'number') {
getObj.value.pageNum = val 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.startTime != '' && getTime.value.endTime != '') {
rechargeUser.value.startTime = formatTime(getTime.value[0])
rechargeUser.value.endTime = formatTime(getTime.value[1])
} }
} else { } else {
rechargeVo.value.startDate = ''
rechargeVo.value.endDate = ''
rechargeUser.value.startTime = ''
rechargeUser.value.endTime = ''
} }
// //
rechargeVo.value.sortField = sortField.value
rechargeVo.value.sortOrder = sortOrder.value
rechargeUser.value.sortField = sortField.value
rechargeUser.value.sortOrder = sortOrder.value
console.log('搜索参数', getObj.value) console.log('搜索参数', getObj.value)
// POST // POST
const result = await API({ const result = await API({
url: '/recharge/recharge',
data: { ...getObj.value, rechargeVo: { ...rechargeVo.value } }
url: 'http://18.143.76.3:10704/recharge/selectBy',
data: {
...getObj.value,
rechargeUser: { ...rechargeUser.value }
}
}) })
// rechargeVo.value
// rechargeUser.value
const detailWithoutSort = ref({ const detailWithoutSort = ref({
area: rechargeVo.value.area,
adminId: rechargeVo.value.adminId,
startDate: rechargeVo.value.startDate,
endDate: rechargeVo.value.endDate
market: rechargeUser.value.market,
adminId: rechargeUser.value.adminId,
startTime: rechargeUser.value.startTime,
endTime: rechargeUser.value.endTime,
jwcode: rechargeUser.value.jwcode,
goodsName: rechargeUser.value.goodsName,
payPlatform: rechargeUser.value.payPlatform
}) })
const result2 = await API({
url: '/recharge/recharge/RechargeA',
const resultTotalGold = await API({
url: 'http://18.143.76.3:10704/recharge/statsGold',
data: { data: {
...detailWithoutSort.value ...detailWithoutSort.value
} }
}) })
// result2
if (!result2 || !result2.data || result2.data.length === 0) {
totalmoney.value = 0
totalRcoin.value = 0
totalFcoin.value = 0
}
if (result2.data) {
result2.data.forEach((item) => {
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
}
})
if (resultTotalGold.code === 200 && resultTotalGold.data) {
const data = resultTotalGold.data
console.log('获取到的金币数据:', data)
permanentGolds.value = Number(data.permanentGolds) || 0
freeGolds.value = Number(data.freeGolds) || 0
} }
trueGold.value = pendingGold.value + approvedGold.value + rejectedGold.value
trueRGold.value =
pendingRGold.value + approvedRGold.value + rejectedRGold.value
trueFGold.value =
pendingFGold.value + approvedFGold.value + rejectedFGold.value
// //
console.log('请求成功', result) console.log('请求成功', result)
@ -203,29 +225,31 @@ const search = function () {
} }
// //
const reset = function () { const reset = function () {
delete rechargeVo.value.activityId
delete rechargeVo.value.payWay
delete rechargeVo.value.area
delete rechargeVo.value.startDate
delete rechargeVo.value.endDate
delete rechargeUser.value.jwcode
delete rechargeUser.value.activity
delete rechargeUser.value.payPlatform
delete rechargeUser.value.market
delete rechargeUser.value.startTime
delete rechargeUser.value.endTime
delete sortField.value delete sortField.value
delete sortOrder.value delete sortOrder.value
getTime.value = {} getTime.value = {}
get()
} }
// //
const getToday = function () { const getToday = function () {
const today = new Date() const today = new Date()
const startDate = new Date(
const startTime = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() today.getDate()
) )
const endDate = new Date(
const endTime = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() + 1 today.getDate() + 1
) )
getTime.value = [startDate, endDate]
getTime.value = [startTime, endTime]
console.log('getTime', getTime.value) console.log('getTime', getTime.value)
get() get()
} }
@ -241,119 +265,38 @@ const handleCurrentChange = function (val) {
const getYesterday = function () { const getYesterday = function () {
const yesterday = new Date() const yesterday = new Date()
yesterday.setDate(yesterday.getDate() - 1) yesterday.setDate(yesterday.getDate() - 1)
const startDate = new Date(
const startTime = new Date(
yesterday.getFullYear(), yesterday.getFullYear(),
yesterday.getMonth(), yesterday.getMonth(),
yesterday.getDate() yesterday.getDate()
) )
const endDate = new Date(
const endTime = new Date(
yesterday.getFullYear(), yesterday.getFullYear(),
yesterday.getMonth(), yesterday.getMonth(),
yesterday.getDate() + 1 yesterday.getDate() + 1
) )
getTime.value = [startDate, endDate]
getTime.value = [startTime, endTime]
console.log('getTime', getTime.value) console.log('getTime', getTime.value)
get() get()
} }
// 7 // 7
const get7Days = function () { const get7Days = function () {
const today = new Date() const today = new Date()
const startDate = new Date(
const startTime = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() - 6 today.getDate() - 6
) )
const endDate = new Date(
const endTime = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() + 1 today.getDate() + 1
) )
getTime.value = [startDate, endDate]
getTime.value = [startTime, endTime]
console.log('getTime', getTime.value) console.log('getTime', getTime.value)
get() get()
} }
//
const adminAll = function () {
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
}
//
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')
}
//
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
}
//
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()
}
}
//
const getActivity = async function () {
try {
// POST
const result = await API({ url: '/recharge/activity/select', data: {} })
//
console.log('请求成功', result)
//
activity.value = result.data
console.log('activity', activity.value)
} catch (error) {
console.log('请求失败', error)
//
}
}
//
//
const getArea = async function () {
try {
// POST
const result = await API({ url: 'http://192.168.8.247:8081/general/market', data: {} })
//
console.log('请求成功', result)
//
area.value = result.data
console.log('地区', area.value)
} catch (error) {
console.log('请求失败', error)
//
}
}
// ================================= // =================================
// //
const del = function (row) { const del = function (row) {
@ -399,7 +342,7 @@ const checkNumber = function () {
// //
ElMessage({ ElMessage({
type: 'error', type: 'error',
message: '请检查输入内容'
message: '数字输入有误'
}) })
} }
} }
@ -410,6 +353,7 @@ onMounted(async function () {
await get() await get()
await getActivity() await getActivity()
await getArea() await getArea()
await getPlatform()
}) })
// //
const sortField = ref('') const sortField = ref('')
@ -419,7 +363,7 @@ const handleSortChange = (column) => {
console.log('排序字段:', column.prop) console.log('排序字段:', column.prop)
console.log('排序方式:', column.order) console.log('排序方式:', column.order)
if (column.prop === 'paidGold') {
if (column.prop === 'money') {
sortField.value = 'paid_gold' sortField.value = 'paid_gold'
} else if (column.prop === 'freeGold') { } else if (column.prop === 'freeGold') {
sortField.value = 'free_gold' sortField.value = 'free_gold'
@ -432,6 +376,7 @@ const handleSortChange = (column) => {
} }
sortOrder.value = column.order === 'ascending' ? 'ASC' : 'DESC' sortOrder.value = column.order === 'ascending' ? 'ASC' : 'DESC'
console.log('传递给后端的排序字段:', sortField.value) console.log('传递给后端的排序字段:', sortField.value)
console.log('传递给后端的排序方式:', sortOrder.value) console.log('传递给后端的排序方式:', sortOrder.value)
get() get()
} }
@ -445,25 +390,25 @@ const handleSortChange = (column) => {
<el-col :span="5"> <el-col :span="5">
<div class="head-card-element"> <div class="head-card-element">
<el-text class="mx-1" size="large">精网号</el-text> <el-text class="mx-1" size="large">精网号</el-text>
<el-input v-model="rechargeVo.jwcode" placeholder="请输入精网号" style="width: 150px" clearable />
<el-input v-model="rechargeUser.jwcode" placeholder="请输入精网号" style="width: 150px" clearable />
</div> </div>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<div class="head-card-element"> <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="rechargeVo.activityId" placeholder="请选择活动名称" style="width: 180px"
<el-select v-model="rechargeUser.activity" placeholder="请选择活动名称" style="width: 180px"
clearable> clearable>
<el-option v-for="item in activity" :key="item.activityId" :label="item.activityName"
:value="item.activityId" />
<el-option v-for="item in activity" :key="item.activity" :label="item.activity"
:value="item.activity" />
</el-select> </el-select>
</div> </div>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<div class="head-card-element" v-if="adminData.area == '总部'">
<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="rechargeVo.area" placeholder="请选择所属地区" style="width: 180px" clearable>
<el-option v-for="item in area" :key="item" :label="item" :value="item" />
<el-select v-model="rechargeUser.market" placeholder="请选择所属地区" style="width: 180px" clearable>
<el-option v-for="item in market" :key="item" :label="item" :value="item" />
</el-select> </el-select>
</div> </div>
</el-col> </el-col>
@ -471,8 +416,8 @@ const handleSortChange = (column) => {
<el-col :span="6"> <el-col :span="6">
<div class="head-card-element"> <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="rechargeVo.rechargeWay" placeholder="请选择支付方式" style="width: 180px" clearable>
<el-option v-for="item in rechargeWay" :key="item.value" :label="item.label" :value="item.value" />
<el-select v-model="rechargeUser.payPlatform" placeholder="请选择充值方式" style="width: 180px" clearable>
<el-option v-for="item in platform" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
</div> </div>
</el-col> </el-col>
@ -511,9 +456,9 @@ const handleSortChange = (column) => {
<el-col> <el-col>
<el-card> <el-card>
<div> <div>
充值金额{{ trueRGold.toFixed(2) }}新币永久金币{{
trueRGold.toFixed(2)
}}金币免费金币{{ trueFGold }}金币
充值金额{{ permanentGolds.toFixed(2) }}新币永久金币{{
permanentGolds.toFixed(2)
}}金币免费金币{{ freeGolds }}金币
</div> </div>
<!-- 设置表格容器的高度和滚动样式 --> <!-- 设置表格容器的高度和滚动样式 -->
<div style="height: 520px; overflow-y: auto;margin-top: 10px;"> <div style="height: 520px; overflow-y: auto;margin-top: 10px;">
@ -537,7 +482,7 @@ const handleSortChange = (column) => {
</el-table-column> </el-table-column>
<el-table-column <el-table-column
fixed="left" fixed="left"
prop="username"
prop="name"
label="姓名" label="姓名"
width="80px" width="80px"
/> />
@ -547,21 +492,21 @@ const handleSortChange = (column) => {
label="精网号" label="精网号"
width="80px" width="80px"
/> />
<el-table-column prop="area" label="所属地区" width="100px" />
<el-table-column prop="market" label="所属地区" width="100px" />
<el-table-column <el-table-column
prop="activityName"
prop="activity"
label="活动名称" label="活动名称"
width="100px" width="100px"
/> />
<el-table-column prop="" label="货币名称" width="110px" />
<el-table-column prop="rateName" label="货币名称" width="110px" />
<el-table-column <el-table-column
prop="paidGold"
prop="money"
sortable="custom" sortable="custom"
label="充值金额" label="充值金额"
width="110px" width="110px"
/> />
<el-table-column <el-table-column
prop="paidGold"
prop="permanentGold"
label="永久金币" label="永久金币"
sortable="custom" sortable="custom"
width="110px" width="110px"
@ -573,11 +518,11 @@ const handleSortChange = (column) => {
width="110px" width="110px"
/> />
<el-table-column <el-table-column
prop="rechargeWay"
prop="payPlatform"
label="充值方式" label="充值方式"
width="100px" width="100px"
/> />
<el-table-column prop="payWay" label="支付方式" width="100px" />
<el-table-column prop="payModel" label="支付方式" width="100px" />
<el-table-column <el-table-column
prop="remark" prop="remark"
label="备注" label="备注"
@ -585,50 +530,9 @@ const handleSortChange = (column) => {
show-overflow-tooltip show-overflow-tooltip
/> />
<!-- <el-table-column
prop="rechargeVoucher"
label="支付凭证"
width="150px"
>
<template #default="scope">
<el-image
:preview-src-list="[scope.row.rechargeVoucher]"
preview-teleported="true"
:src="scope.row.rechargeVoucher"
alt="凭证"
style="width: 50px; height: 50px"
/>
</template>
</el-table-column> -->
<el-table-column prop="name" label="提交人" width="100px" />
<!-- <el-table-column prop="status" label="状态" width="100px">
<template #default="scope">
<span v-if="scope.row.status === 1">
<div class="status">
<span class="green-dot"></span>
<span>已通过</span>
</div>
</span>
<span v-if="scope.row.status === 0">
<div class="status">
<span class="grey-dot"></span>
<span>待审核</span>
</div>
</span>
<span v-if="scope.row.status === 2">
<div class="status">
<span class="red-dot"></span>
<span>已驳回</span>
</div>
</span>
</template>
</el-table-column>
<el-table-column
prop="reson"
label="驳回理由"
width="200px"
show-overflow-tooltip
/> -->
<el-table-column prop="adminName" label="提交人" width="100px" />
<el-table-column <el-table-column
prop="rechargeTime" prop="rechargeTime"
sortable sortable
@ -641,37 +545,7 @@ const handleSortChange = (column) => {
}} }}
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column
prop="createTime"
sortable="custom"
label="提交时间"
width="200px"
/>
<el-table-column
fixed="right"
prop="operation"
label="操作"
width="150px"
>
<template #default="scope">
<el-popconfirm
title="确定将此条活动删除吗?"
@confirm="delConfirm"
>
<template #reference>
<el-button type="primary" text @click="del(scope.row)">
删除
</el-button>
</template>
<template #actions="{ confirm, cancel }">
<el-button size="small" @click="cancel">取消</el-button>
<el-button type="primary" size="small" @click="confirm">
确定
</el-button>
</template>
</el-popconfirm>
</template>
</el-table-column> -->
</el-table> </el-table>
</div> </div>
@ -691,60 +565,8 @@ const handleSortChange = (column) => {
</el-col> </el-col>
</el-row> </el-row>
<!-- 编辑弹窗 -->
<el-dialog
v-model="editRechargeVisible"
title="新增活动"
width="500"
:before-close="closeEditRechargeVisible"
>
<template #footer>
<el-form :model="editObj" label-width="auto" style="max-width: 600px">
<el-form-item label="活动名称:">
<el-input
v-model="addObj.activityName"
placeholder="请输入活动名称"
style="width: 220px"
/>
</el-form-item>
<el-form-item label="免费金币:">
<el-radio-group v-model="addObj.freeGold">
<el-radio value="0">无赠送</el-radio>
<el-radio value="1">有赠送</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="免费金币兑换比:">
<el-input
v-model="addObj.rechargeRatio"
placeholder="请输入"
style="width: 80px"
/>1
<div style="color: grey">(提示当前规则每10新币可兑换1免费金币)</div>
</el-form-item>
<el-form-item label="开始时间:">
<el-time-picker v-model="addObj.startTime" />
</el-form-item>
<el-form-item label="结束时间:">
<el-time-picker v-model="addObj.endTime" />
</el-form-item>
<el-form-item label="添加人:">
<el-input v-model="addObj.adminName" disabled style="width: 220px" />
</el-form-item>
</el-form>
<div class="dialog-footer">
<el-button @click="closeAddActivityVisible">取消</el-button>
<el-button type="primary" @click="closeAddActivityVisible">
提交
</el-button>
</div>
</template>
</el-dialog>
</template> </template>
<style scoped> <style scoped>

38
src/views/refund/addCoinRefund.vue

@ -143,7 +143,7 @@ const getUser = async function (jwcode) {
try { try {
// POST // POST
const result = await API({ const result = await API({
url: 'http://192.168.8.247:8081/user/selectUser',
url: 'http://18.143.76.3:10704/user/selectUser',
data: { data: {
jwcode: addRefund.value.jwcode jwcode: addRefund.value.jwcode
} }
@ -166,23 +166,23 @@ const getUser = async function (jwcode) {
// //
} }
} }
const calculatedAllGold = computed(() => {
const sum =
Number(addRefund.value.freeCoin) +
Number(addRefund.value.rechargeCoin) +
Number(addRefund.value.taskCoin)
return !isNaN(sum) ? sum : 0
})
// const calculatedAllGold = computed(() => {
// const sum =
// Number(addRefund.value.freeCoin) +
// Number(addRefund.value.rechargeCoin) +
// Number(addRefund.value.taskCoin)
// return !isNaN(sum) ? sum : 0
// })
watch(calculatedAllGold, (newVal) => {
addRefund.value.allCoin = newVal
})
// watch(calculatedAllGold, (newVal) => {
// addRefund.value.allCoin = newVal
// })
const AAA = computed(() => {
return addRefund.value.jwcode
})
// const AAA = computed(() => {
// return addRefund.value.jwcode
// })
watch(AAA, (newVal) => {})
// watch(AAA, (newVal) => {})
// 退 // 退
// const refundType = [ // const refundType = [
@ -200,7 +200,7 @@ const getRefundTypes = async function () {
try { try {
// 退 // 退
const result = await API({ const result = await API({
// url: 'http://192.168.8.247:8081/', //退
// url: 'http://18.143.76.3:10704/', //退
data: {} }) data: {} })
console.log('退款类型请求成功', result) console.log('退款类型请求成功', result)
// refundType // refundType
@ -221,7 +221,7 @@ const getGoods = async function (jwcode) {
try { try {
// POST // POST
const result = await API({ const result = await API({
url: 'http://39.101.133.168:8828/live_mall/api/product/all',
// url: 'http://39.101.133.168:8828/live_mall/api/product/all', //
data: { data: {
jwcode: addRefund.value.jwcode, jwcode: addRefund.value.jwcode,
market: adminData.value.market market: adminData.value.market
@ -239,7 +239,7 @@ const getGoods = async function (jwcode) {
} }
} catch (error) { } catch (error) {
console.log('请求失败', error) console.log('请求失败', error)
ElMessage.error('查询失败,请检查精网号是否正确')
ElMessage.error('查询商品失败,请检查精网号是否正确')
// //
} }
} }
@ -287,7 +287,7 @@ const getProductByOrderCode = async function (item) {
} }
} catch (error) { } catch (error) {
console.log('请求失败', error) console.log('请求失败', error)
ElMessage.error('查询失败,请检查精网号是否正确')
ElMessage.error('查询订单失败,请检查精网号是否正确')
// //
} }
} }

32
src/views/refund/beanRefund.vue

@ -96,13 +96,13 @@ const get = async function (val) {
} }
// //
if (getTime.value != null) { 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.startTime != '' && getTime.value.endTime != '') {
detail.value.startTime = getTime.value[0]
detail.value.endTime = getTime.value[1]
} }
} else { } else {
detail.value.startDate = ''
detail.value.endDate = ''
detail.value.startTime = ''
detail.value.endTime = ''
} }
// //
detail.value.sortField = sortField.value detail.value.sortField = sortField.value
@ -187,8 +187,8 @@ const reset = function () {
detail.value.refundGoods = '' detail.value.refundGoods = ''
detail.value.refundType = '' detail.value.refundType = ''
detail.value.area = '' detail.value.area = ''
detail.value.startDate = ''
detail.value.endDate = ''
detail.value.startTime = ''
detail.value.endTime = ''
sortField.value = '' sortField.value = ''
sortOrder.value = '' sortOrder.value = ''
getTime.value = {} getTime.value = {}
@ -196,17 +196,17 @@ const reset = function () {
// //
const getToday = function () { const getToday = function () {
const today = new Date() const today = new Date()
const startDate = new Date(
const startTime = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() today.getDate()
) )
const endDate = new Date(
const endTime = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() + 1 today.getDate() + 1
) )
getTime.value = [startDate, endDate]
getTime.value = [startTime, endTime]
console.log('getTime', getTime.value) console.log('getTime', getTime.value)
get() get()
} }
@ -214,34 +214,34 @@ const getToday = function () {
const getYesterday = function () { const getYesterday = function () {
const yesterday = new Date() const yesterday = new Date()
yesterday.setDate(yesterday.getDate() - 1) yesterday.setDate(yesterday.getDate() - 1)
const startDate = new Date(
const startTime = new Date(
yesterday.getFullYear(), yesterday.getFullYear(),
yesterday.getMonth(), yesterday.getMonth(),
yesterday.getDate() yesterday.getDate()
) )
const endDate = new Date(
const endTime = new Date(
yesterday.getFullYear(), yesterday.getFullYear(),
yesterday.getMonth(), yesterday.getMonth(),
yesterday.getDate() + 1 yesterday.getDate() + 1
) )
getTime.value = [startDate, endDate]
getTime.value = [startTime, endTime]
console.log('getTime', getTime.value) console.log('getTime', getTime.value)
get() get()
} }
// 7 // 7
const get7Days = function () { const get7Days = function () {
const today = new Date() const today = new Date()
const startDate = new Date(
const startTime = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() - 6 today.getDate() - 6
) )
const endDate = new Date(
const endTime = new Date(
today.getFullYear(), today.getFullYear(),
today.getMonth(), today.getMonth(),
today.getDate() + 1 today.getDate() + 1
) )
getTime.value = [startDate, endDate]
getTime.value = [startTime, endTime]
console.log('getTime', getTime.value) console.log('getTime', getTime.value)
get() get()
} }

74
src/views/refund/coinRefundDetail.vue

@ -1,18 +1,36 @@
<script setup> <script setup>
// 退 // 退
import { ref, onMounted, reactive, computed } from 'vue'
import {ref, onMounted, reactive, computed} from 'vue'
import ElementPlus from 'element-plus' import ElementPlus from 'element-plus'
import { AiFillRead } from 'vue-icons-plus/ai'
import { ElMessage, ElMessageBox } from 'element-plus'
import {AiFillRead} from 'vue-icons-plus/ai'
import {ElMessage, ElMessageBox} from 'element-plus'
import axios from 'axios' import axios from 'axios'
import moment from 'moment' import moment from 'moment'
import API from '@/util/http' import API from '@/util/http'
import request from '@/util/http'
//
const trimJwCode = () => {
if (refundUser.value.jwcode) {
//
const trimmed = refundUser.value.jwcode.toString().replace(/\s/g, '');
const numeric = Number(trimmed);
//
if (!isNaN(numeric)) {
refundUser.value.jwcode = numeric;
} else {
ElMessage.error("精网号格式不正确,请输入数字");
}
}
}
// //
// //
const adminData = ref({}) const adminData = ref({})
const getAdminData = async function () { const getAdminData = async function () {
try { try {
const result = await API({ url: '/admin/userinfo', data: {} })
const result = await API({url: '/admin/userinfo', data: {}})
adminData.value = result adminData.value = result
console.log('请求成功', result) console.log('请求成功', result)
@ -58,7 +76,7 @@ const getRefundTypes = async function () {
try { try {
// 退 // 退
const result = await API({ const result = await API({
// url: 'http://192.168.8.247:8081/', //退
// url: 'http://18.143.76.3:10704/', //退
data: {} }) data: {} })
console.log('退款类型请求成功', result) console.log('退款类型请求成功', result)
// refundType // refundType
@ -80,6 +98,8 @@ const getSelectBy = async function (val) {
if (typeof val === 'number') { if (typeof val === 'number') {
getObj.value.pageNum = val getObj.value.pageNum = val
} }
// todo
// //
if (getTime.value != null) { if (getTime.value != null) {
if (getTime.value.startTime != '' && getTime.value.endTime != '') { if (getTime.value.startTime != '' && getTime.value.endTime != '') {
@ -90,13 +110,15 @@ const getSelectBy = async function (val) {
refundUser.value.startTime = '' refundUser.value.startTime = ''
refundUser.value.endTime = '' refundUser.value.endTime = ''
} }
// todo
// //
refundUser.value.sortField = sortField.value refundUser.value.sortField = sortField.value
refundUser.value.sortOrder = sortOrder.value refundUser.value.sortOrder = sortOrder.value
console.log('搜索参数', getObj.value) console.log('搜索参数', getObj.value)
// POST // POST
const result = await API({ const result = await API({
url: 'http://192.168.8.247:8081/refund/selectBy',
url: 'http://18.143.76.3:10704/refund/selectBy',
data: { data: {
...getObj.value, ...getObj.value,
refundUser: { ...refundUser.value } refundUser: { ...refundUser.value }
@ -108,7 +130,7 @@ const getSelectBy = async function (val) {
delete detailWithoutSort.sortOrder delete detailWithoutSort.sortOrder
const resultTotalGold = await API({ const resultTotalGold = await API({
url: 'http://192.168.8.247:8081/refund/statsGold',
url: 'http://18.143.76.3:10704/refund/statsGold',
data: { data: {
...detailWithoutSort ...detailWithoutSort
} }
@ -145,12 +167,7 @@ const search = function () {
} }
// //
const reset = function () { const reset = function () {
refundUser.value.jwcode= ''
refundUser.value.goodsName = ''
refundUser.value.refundType = ''
refundUser.value.market = ''
refundUser.value.startTime = ''
refundUser.value.endTime = ''
refundUser.value = {}
sortField.value = '' sortField.value = ''
sortOrder.value = '' sortOrder.value = ''
getTime.value = {} getTime.value = {}
@ -223,11 +240,11 @@ const handleClick = function (tab, event) {
} }
} }
//
const getArea = async function () {
//
const getMarket = async function () {
try { try {
// POST // POST
const result = await API({ url: 'http://192.168.8.247:8081/general/market', data: {} })
const result = await API({ url: 'http://18.143.76.3:10704/general/market', data: {} })
// //
console.log('请求成功', result) console.log('请求成功', result)
// //
@ -268,9 +285,12 @@ const goods = ref([])
const getGoods = async function () { const getGoods = async function () {
try { try {
// POST // POST
const result = await API({ url: '/product', data: {} })
const result = await request({
url: 'http://18.143.76.3:10704/general/goods',
data: {}
})
// //
console.log('请求成功', result)
console.log('请求成功product', result)
// //
goods.value = result.data goods.value = result.data
@ -280,7 +300,7 @@ const getGoods = async function () {
// //
} }
} }
getGoods()
// //
const checkNumber = function () { const checkNumber = function () {
@ -312,7 +332,7 @@ const checkNumber = function () {
onMounted(async function () { onMounted(async function () {
await getAdminData() await getAdminData()
await getSelectBy() await getSelectBy()
await getArea()
await getMarket()
await getRefundTypes() await getRefundTypes()
}) })
// //
@ -374,6 +394,7 @@ const handleCurrentChange = function (val) {
style="width: 180px" style="width: 180px"
clearable clearable
> >
<!-- todo 这需要改-->
<el-option <el-option
v-for="item in refundType" v-for="item in refundType"
:key="item.value" :key="item.value"
@ -435,7 +456,8 @@ const handleCurrentChange = function (val) {
end-placeholder="结束时间" end-placeholder="结束时间"
/> />
<el-button style="margin-left: 10px" @click="getToday()" <el-button style="margin-left: 10px" @click="getToday()"
></el-button
>
</el-button
> >
<el-button @click="getYesterday()"></el-button> <el-button @click="getYesterday()"></el-button>
<el-button @click="get7Days()">近7天</el-button> <el-button @click="get7Days()">近7天</el-button>
@ -477,6 +499,7 @@ const handleCurrentChange = function (val) {
<span>{{ <span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span> }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@ -511,17 +534,17 @@ const handleCurrentChange = function (val) {
prop="permanentGold" prop="permanentGold"
label="永久金币" label="永久金币"
width="110px" width="110px"
sortable="custom"
sortable="custom"
/> />
<el-table-column <el-table-column
prop="freeGold" prop="freeGold"
sortable="custom"
sortable="custom"
label="免费金币" label="免费金币"
width="110px" width="110px"
/> />
<el-table-column <el-table-column
prop="taskGold" prop="taskGold"
sortable="custom"
sortable="custom"
label="任务金币" label="任务金币"
width="110px" width="110px"
/> />
@ -536,7 +559,7 @@ const handleCurrentChange = function (val) {
<el-table-column <el-table-column
prop="createTime" prop="createTime"
sortable="custom"
sortable="custom"
label="提交时间" label="提交时间"
width="180px" width="180px"
> >
@ -581,6 +604,7 @@ const handleCurrentChange = function (val) {
.head-card-btn { .head-card-btn {
margin-left: auto; margin-left: auto;
} }
.pagination { .pagination {
display: flex; display: flex;
margin-top: 20px; margin-top: 20px;

6
src/views/usergold/clientCountBalance.vue

@ -30,7 +30,7 @@ const getmarket = async () => {
isLoadingmarket.value = true; isLoadingmarket.value = true;
try { try {
const result = await API({ const result = await API({
url: 'http://192.168.8.220:8081/general/market'
url: 'http://18.143.76.3:10704/general/market'
}); });
console.log('获取地区数据成功',result) console.log('获取地区数据成功',result)
// { value, label } // { value, label }
@ -118,7 +118,7 @@ const get = async function (val) {
//console.log('', requestData); //console.log('', requestData);
const result = await API({ const result = await API({
url: 'http://192.168.8.220:8081/goldDetail/getGold',
url: 'http://18.143.76.3:10704/goldDetail/getGold',
method: 'post', method: 'post',
data: { ...getObj.value, user: { ...user.value } } data: { ...getObj.value, user: { ...user.value } }
}) })
@ -129,7 +129,7 @@ const get = async function (val) {
// //
const resultGoldTotal = await API({ const resultGoldTotal = await API({
url: 'http://192.168.8.220:8081/goldDetail/goldTotal',
url: 'http://18.143.76.3:10704/goldDetail/goldTotal',
data: { data: {
...getAllObj.value, ...getAllObj.value,
user: { ...user.value } user: { ...user.value }

6
src/views/usergold/clientCountDetail.vue

@ -42,7 +42,7 @@ const getPlatform = async () => {
isLoadingPlatform.value = true; isLoadingPlatform.value = true;
try { try {
const result = await API({ const result = await API({
url: 'http://192.168.8.220:8081/general/platform',
url: 'http://18.143.76.3:10704/general/platform',
method: 'post', method: 'post',
data: {}// data: {}//
}) })
@ -85,7 +85,7 @@ const getArea = async () => {
isLoadingArea.value = true; isLoadingArea.value = true;
try { try {
const result = await API({ const result = await API({
url: 'http://192.168.8.220:8081/general/market'
url: 'http://18.143.76.3:10704/general/market'
}); });
// { value, label } // { value, label }
if (Array.isArray(result.data) && typeof result.data[0] === 'string') { if (Array.isArray(result.data) && typeof result.data[0] === 'string') {
@ -168,7 +168,7 @@ const get = async function (val) {
//console.log('', requestData); //console.log('', requestData);
const result = await API({ const result = await API({
url: 'http://192.168.8.220:8081/goldDetail/getGoldDetail',
url: 'http://18.143.76.3:10704/goldDetail/getGoldDetail',
method: 'post', method: 'post',
data: { ...getObj.value, goldDetail: { ...goldDetail.value } } data: { ...getObj.value, goldDetail: { ...goldDetail.value } }
}) })

2
src/views/workspace/index.vue

@ -223,7 +223,7 @@ const handleDateRangeChange = () => {
const getAreas = async () => { const getAreas = async () => {
try { try {
const result = await API({ const result = await API({
url: 'http://192.168.8.247:8081/general/market',
url: 'http://18.143.76.3:10704/general/market',
data: {} data: {}
}) })
middleCategory.value = result.data.map(item => item.name) middleCategory.value = result.data.map(item => item.name)

Loading…
Cancel
Save