diff --git a/vue/gold-system/README.md b/vue/gold-system/README.md index bfa6e28..405492f 100644 --- a/vue/gold-system/README.md +++ b/vue/gold-system/README.md @@ -6,22 +6,24 @@ Learn more about the recommended Project Setup and IDE Support in the [Vue Docs npm install 下载依赖包 -npm run dev 启动项目 +npm run dev 启动项目 -npm install vue-router 下载vue-router组件 +npm install vue-router 下载 vue-router 组件 -npm install axios 下载axios组件 +npm install axios 下载 axios 组件 -npm install element-plus --save 下载element-plus组件 +npm install element-plus --save 下载 element-plus 组件 -npm install @element-plus/icons-vue 下载element-plus图标库 +npm install @element-plus/icons-vue 下载 element-plus 图标库 -npm install vue-icons-plus --save 下载外部图标库 +npm install vue-icons-plus --save 下载外部图标库 -npm install echarts 安装echarts组件 +npm install echarts 安装 echarts 组件 -npm install moment 安装moment组件 +npm install moment 安装 moment 组件 npm install mathjs 安装mathjs组件,解决数据计算问题 -npm install xlsx 安装xlsx组件,解决excel文件读取问题 \ No newline at end of file +npm install xlsx 安装xlsx组件,解决excel文件读取问题 + +npm install vue-json-excel 安装导出 excel 组件 diff --git a/vue/gold-system/package-lock.json b/vue/gold-system/package-lock.json index 377520f..04f9117 100644 --- a/vue/gold-system/package-lock.json +++ b/vue/gold-system/package-lock.json @@ -16,6 +16,7 @@ "moment": "^2.30.1", "vue": "^3.5.12", "vue-icons-plus": "^0.1.7", + "vue-json-excel": "^0.3.0", "vue-router": "^4.5.0", "xlsx": "^0.18.5" }, @@ -1237,6 +1238,12 @@ "node": ">=0.4.0" } }, + "node_modules/downloadjs": { + "version": "1.4.7", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/downloadjs/-/downloadjs-1.4.7.tgz", + "integrity": "sha512-LN1gO7+u9xjU5oEScGFKvXhYf7Y/empUIIEAGBs1LzUq/rg5duiDrkuH5A2lQGd5jfMOb9X9usDa2oVXwJ0U/Q==", + "license": "MIT" + }, "node_modules/echarts": { "version": "5.5.1", "resolved": "https://mirrors.huaweicloud.com/repository/npm/echarts/-/echarts-5.5.1.tgz", @@ -1830,6 +1837,15 @@ "vue": ">=2.7.0" } }, + "node_modules/vue-json-excel": { + "version": "0.3.0", + "resolved": "https://mirrors.huaweicloud.com/repository/npm/vue-json-excel/-/vue-json-excel-0.3.0.tgz", + "integrity": "sha512-FrSh0tVUpw4K+ilLO8g0Qp52eFJw/hkk3rZPTEKo9qVkJgVfQtZwzj3UWc5ACYxA3jLk9HtjK+f9xKHCN4Kgag==", + "license": "MIT", + "dependencies": { + "downloadjs": "^1.4.7" + } + }, "node_modules/vue-router": { "version": "4.5.0", "resolved": "https://mirrors.huaweicloud.com/repository/npm/vue-router/-/vue-router-4.5.0.tgz", diff --git a/vue/gold-system/package.json b/vue/gold-system/package.json index 34e2410..5d314de 100644 --- a/vue/gold-system/package.json +++ b/vue/gold-system/package.json @@ -18,6 +18,7 @@ "moment": "^2.30.1", "vue": "^3.5.12", "vue-icons-plus": "^0.1.7", + "vue-json-excel": "^0.3.0", "vue-router": "^4.5.0", "xlsx": "^0.18.5" }, diff --git a/vue/gold-system/src/main.ts b/vue/gold-system/src/main.ts index 5f84645..0e243ac 100644 --- a/vue/gold-system/src/main.ts +++ b/vue/gold-system/src/main.ts @@ -6,13 +6,19 @@ import zhCn from 'element-plus/es/locale/lang/zh-cn' import 'element-plus/dist/index.css' import * as ElementPlusIconsVue from '@element-plus/icons-vue' import './assets/css/common.css'; // 引入公共CSS文件 +import JsonExcel from 'vue-json-excel' const app = createApp(App) +// 全局注册 ElementPlus 图标 for (const [key, component] of Object.entries(ElementPlusIconsVue)) { app.component(key, component) } +// 使用 ElementPlus 和路由器 app.use(ElementPlus, { locale: zhCn, }).use(router).mount('#app'); + +// 注册 JsonExcel 组件 +app.component('downloadExcel', JsonExcel) \ No newline at end of file diff --git a/vue/gold-system/src/views/audit/rechargeAudit.vue b/vue/gold-system/src/views/audit/rechargeAudit.vue index 1cc8b90..5017093 100644 --- a/vue/gold-system/src/views/audit/rechargeAudit.vue +++ b/vue/gold-system/src/views/audit/rechargeAudit.vue @@ -14,6 +14,24 @@ const admin = ref({ area: "中国", }); +//这是获取用户信息的接口 +const adminData = ref({}); +const getAdminData = async function () { + try { + const result = await API.post( + "http://192.168.8.93:10010/admin/userinfo", + {} + ); + adminData.value = result; + addConsume.value.adminId = adminData.value.adminId; + console.log("请求成功", result); + console.log("用户信息", adminData.value); + } catch (error) { + console.log("请求失败", error); + } +}; +getAdminData(); + // 充值明细表格 const tableData = ref([]); // 搜索====================================== @@ -306,6 +324,7 @@ const pass = function (row) { 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); }; diff --git a/vue/gold-system/src/views/audit/refundAudit.vue b/vue/gold-system/src/views/audit/refundAudit.vue index b6b3151..bf44a3f 100644 --- a/vue/gold-system/src/views/audit/refundAudit.vue +++ b/vue/gold-system/src/views/audit/refundAudit.vue @@ -49,12 +49,12 @@ const activeName = ref("all"); // 退款类型选项 const refundType = [ { - value: "退金币", - label: "退金币", + value: "退款金币", + label: "退款金币", }, { - value: "退商品", - label: "退商品", + value: "退款商品", + label: "退款商品", }, ]; @@ -228,6 +228,7 @@ const getProduct = async function () { // 在这里可以处理错误逻辑,比如显示错误提示等 } }; + // 获取地区 const getArea = async function () { try { @@ -378,6 +379,7 @@ onMounted(async function () { await get(); getProduct(); await getArea(); + await getArea(); }); diff --git a/vue/gold-system/src/views/consume/addConsume.vue b/vue/gold-system/src/views/consume/addConsume.vue index 6d3b7e7..e3efd6a 100644 --- a/vue/gold-system/src/views/consume/addConsume.vue +++ b/vue/gold-system/src/views/consume/addConsume.vue @@ -18,6 +18,7 @@ const getAdminData = async function () { ); adminData.value = result; addConsume.value.adminId = adminData.value.adminId; + addConsume.value.name = adminData.value.name; console.log("请求成功", result); console.log("用户信息", adminData.value); } catch (error) { @@ -193,6 +194,8 @@ const getUserGold = async function (jwcode) { console.log("请求成功", result); // 存储表格数据 userGold.value = result.data; + addConsume.value.username = result.data.name; + addConsume.value.area = result.data.area; if (result.data.code === 0) { ElMessage.error("查询失败,请检查精网号是否正确"); } diff --git a/vue/gold-system/src/views/consume/allConsume.vue b/vue/gold-system/src/views/consume/allConsume.vue index a02f516..5dbceb9 100644 --- a/vue/gold-system/src/views/consume/allConsume.vue +++ b/vue/gold-system/src/views/consume/allConsume.vue @@ -83,7 +83,7 @@ const get = async function (val) { // 发送POST请求 const result = await API.post("http://192.168.8.93:10010/consume/select", { ...getObj.value, - detailVo: { ...detailVo.value }, + consumeDetail: { ...detailVo.value }, }); // 将响应结果存储到响应式数据中 @@ -111,6 +111,7 @@ const reset = function () { detailVo.value.consumeType = ""; detailVo.value.startDate = ""; detailVo.value.endDate = ""; + getTime.value = {}; }; // 今天 const getToday = function () { @@ -333,9 +334,16 @@ getGoods(); style="width: 100%" :default-sort="{ prop: 'createTime ', order: 'descending' }" > - + - {{ scope.$index + 1+(getObj.pageNum-1)*getObj.pageSize }} + {{ + scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize + }} diff --git a/vue/gold-system/src/views/index.vue b/vue/gold-system/src/views/index.vue index b15ef29..6e2b4a9 100644 --- a/vue/gold-system/src/views/index.vue +++ b/vue/gold-system/src/views/index.vue @@ -198,9 +198,6 @@ onMounted(async function () { {{ adminData.area }} - - {{ adminData.store }} - {{ adminData.createTime }} diff --git a/vue/gold-system/src/views/recharge/addRecharge.vue b/vue/gold-system/src/views/recharge/addRecharge.vue index e4daef8..befae03 100644 --- a/vue/gold-system/src/views/recharge/addRecharge.vue +++ b/vue/gold-system/src/views/recharge/addRecharge.vue @@ -251,38 +251,6 @@ function handleActivityChange(value) { getActivityById(value); console.log("看看", addRecharge.value); } -const calculatedFreeGold = computed(() => { - if (!addRecharge.value.rechargeRatio == 0) { - const paidGold = Number(addRecharge.value.paidGold) || 0; - const activityId = Number(addRecharge.value.rechargeRatio) || 1; // 避免除以0 - const number = Number(paidGold / activityId); //计算总数 - console.log("看看", number); - if (number < 1) { - return 0; - } else { - return Number(Math.ceil(number)); - } - } - if (addRecharge.value.rechargeRatio == 0) { - const paidGold = Number(addRecharge.value.paidGold) || 0; - return 0; - } -}); -const calculatedRechargeGold = computed(() => { - if (!Rate.value == 0) { - const paidGold = Number(addRecharge.value.paidGold) || 0; - const rate = Number(Rate.value) || 0; // 避免乘以0 - return Number(Math.ceil(paidGold * rate)); - } -}); - -watch(calculatedFreeGold, (newVal) => { - addRecharge.value.freeGold = Number(newVal); -}); - -watch(calculatedRechargeGold, (newVal) => { - addRecharge.value.rechargeGold = Number(newVal); -}); //这是重置重置表单的方法 const deleteRecharge = function () { diff --git a/vue/gold-system/src/views/refund/addRefund.vue b/vue/gold-system/src/views/refund/addRefund.vue index 154f5b3..9704a3e 100644 --- a/vue/gold-system/src/views/refund/addRefund.vue +++ b/vue/gold-system/src/views/refund/addRefund.vue @@ -329,7 +329,7 @@ const handleSelectionChange = (value) => { - + 全部退款 部分退款 diff --git a/vue/gold-system/src/views/refund/allRefund.vue b/vue/gold-system/src/views/refund/allRefund.vue index fafe524..7d6b2bc 100644 --- a/vue/gold-system/src/views/refund/allRefund.vue +++ b/vue/gold-system/src/views/refund/allRefund.vue @@ -32,12 +32,12 @@ const activeName = ref("all"); // 退款类型 const consumeType = [ { - value: "退商品", - label: "退商品", + value: "退款金币", + label: "退款金币", }, { - value: "退金币", - label: "退金币", + value: "退款商品", + label: "退款商品", }, ]; @@ -97,6 +97,7 @@ const reset = function () { detail.value.area = ""; detail.value.startDate = ""; detail.value.endDate = ""; + getTime.value = {}; }; // 今天 const getToday = function () { diff --git a/vue/gold-system/src/views/usergold/index.vue b/vue/gold-system/src/views/usergold/index.vue index f8cd92d..cab7179 100644 --- a/vue/gold-system/src/views/usergold/index.vue +++ b/vue/gold-system/src/views/usergold/index.vue @@ -6,6 +6,7 @@ import axios from "axios"; import moment from "moment"; import { ta } from "element-plus/es/locales.mjs"; import API from "../../api/index.js"; +import * as XLSX from "xlsx"; // 充值明细表格 const tableData = ref([]); @@ -29,6 +30,8 @@ const getObj = ref({ pageNum: 1, pageSize: 50, }); +//开启条件筛选导出excel +const getPutEX = ref(false); // 支付方式选项 const updateType = [ @@ -210,9 +213,231 @@ const checkNumber = function () { onMounted(async function () { await get(); }); + +// 这是导出excel表格的方法 +// 导出Excel的方法 +// 定义字段映射 +const json_fields = (row) => { + return [ + row.uname, // 姓名 + row.jwcode, // 精网号 + row.area, // 所属地区 + row.consumePlatform, // 平台信息 + row.firstexam_score, // 更新数量 + row.freeCoin, // 免费金币 + row.rechageCoin, // 充值金币 + row.taskCoin, // 任务金币 + row.name, // 提交人 + moment(row.createTime).format("YYYY-MM-DD HH:mm:ss"), // 更新时间,假设你想要格式化时间 + ]; +}; + +// 定义元数据 +const json_meta = [ + [ + { + key: "charset", + value: "utf-8", + }, + ], +]; +const exportExcel = () => { + const ws = XLSX.utils.json_to_sheet(excelInfo.value, json_fields); + const wb = XLSX.utils.book_new(); + XLSX.utils.book_append_sheet(wb, ws, "Sheet1"); + XLSX.writeFile(wb, "客户金币明细.xlsx"); +}; + +const putExcel = ref({}); +const excelInfo = ref({}); +const areyour = async function (val) { + try { + const result = await API.post( + "http://192.168.8.93:10010/detailY/searchAll", + { ...putExcel.value } + ); + excelInfo.value = result.data; + areyouright.value = true; + ElMessage({ + type: "success", + message: "导出成功", + }); + } catch (error) { + console.log("请求失败", error); + } +}; + +const areyouright = ref(false); + +//选地区 +const area = [ + { + value: "马来西亚", + label: "马来西亚", + }, + { + value: "新加坡", + label: "新加坡", + }, + { + value: "香港", + label: "香港", + }, + { + value: "泰国", + label: "泰国", + }, + { + value: "加拿大", + label: "加拿大", + }, + { + value: "越南HCM", + label: "越南HCM", + }, +]; + +const TimeGet = ref("1"); + +// 今天 +const getT = function () { + const today = new Date(); + const startDate = new Date( + today.getFullYear(), + today.getMonth(), + today.getDate() + ); + const endDate = new Date( + today.getFullYear(), + today.getMonth(), + today.getDate() + 1 + ); + putExcel.value.startDate = startDate; + putExcel.value.endDate = endDate; + console.log("putExcel", putExcel.value); +}; +//3天 +const get3 = function () { + const today = new Date(); + const startDate = new Date( + today.getFullYear(), + today.getMonth(), + today.getDate() - 2 + ); + const endDate = new Date( + today.getFullYear(), + today.getMonth(), + today.getDate() + 1 + ); + putExcel.value.startDate = startDate; + putExcel.value.endDate = endDate; + console.log("putExcel", putExcel.value); +}; +// 7天 +const get7 = function () { + const today = new Date(); + const startDate = new Date( + today.getFullYear(), + today.getMonth(), + today.getDate() - 6 + ); + const endDate = new Date( + today.getFullYear(), + today.getMonth(), + today.getDate() + 1 + ); + putExcel.value.startDate = startDate; + putExcel.value.endDate = endDate; + console.log("putExcel", putExcel.value); +}; +// 30天 +const get30 = function () { + const today = new Date(); + const startDate = new Date( + today.getFullYear(), + today.getMonth() - 1, + today.getDate() + ); + const endDate = new Date( + today.getFullYear(), + today.getMonth(), + today.getDate() + 1 + ); + putExcel.value.startDate = startDate; + putExcel.value.endDate = endDate; + console.log("putExcel", putExcel.value); +}; + + 导出 + + + + + + + + + + + + + + + + 今天 + 近三天 + 近一周 + 近一个月 + + + 确定 + + + + @@ -254,6 +479,12 @@ onMounted(async function () { /> + 导出Excel表格 重置 查询 @@ -283,7 +514,7 @@ onMounted(async function () { }} - + - + + + {{ + scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize + }} + +