hongxilin 5 months ago
parent
commit
6a18d5ee98
  1. 18
      vue/gold-system/README.md
  2. 16
      vue/gold-system/package-lock.json
  3. 1
      vue/gold-system/package.json
  4. 6
      vue/gold-system/src/main.ts
  5. 19
      vue/gold-system/src/views/audit/rechargeAudit.vue
  6. 10
      vue/gold-system/src/views/audit/refundAudit.vue
  7. 3
      vue/gold-system/src/views/consume/addConsume.vue
  8. 14
      vue/gold-system/src/views/consume/allConsume.vue
  9. 3
      vue/gold-system/src/views/index.vue
  10. 32
      vue/gold-system/src/views/recharge/addRecharge.vue
  11. 2
      vue/gold-system/src/views/refund/addRefund.vue
  12. 9
      vue/gold-system/src/views/refund/allRefund.vue
  13. 233
      vue/gold-system/src/views/usergold/index.vue
  14. 15
      vue/gold-system/src/views/usergoldInfo/index.vue

18
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文件读取问题
npm install vue-json-excel 安装导出 excel 组件

16
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",

1
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"
},

6
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)

19
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);
};

10
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();
});
</script>

3
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("查询失败,请检查精网号是否正确");
}

14
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' }"
>
<el-table-column type="index" label="序号" width="100px" fixed="left">
<el-table-column
type="index"
label="序号"
width="100px"
fixed="left"
>
<template #default="scope">
<span>{{ scope.$index + 1+(getObj.pageNum-1)*getObj.pageSize }}</span>
<span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span>
</template>
</el-table-column>
<el-table-column prop="name" label="姓名" width="150px" />

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

@ -198,9 +198,6 @@ onMounted(async function () {
<el-form-item label="地区" label-width="100px" label-position="left">
<span class="message-font">{{ adminData.area }}</span>
</el-form-item>
<el-form-item label="所属门店" label-width="100px" label-position="left">
<span class="message-font">{{ adminData.store }}</span>
</el-form-item>
<el-form-item label="注册时间" label-width="100px" label-position="left">
<span class="message-font">{{ adminData.createTime }}</span>
</el-form-item>

32
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 () {

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

@ -329,7 +329,7 @@ const handleSelectionChange = (value) => {
</el-select>
</el-form-item>
<el-form-item prop="typeR" label="退款:">
<el-form-item prop="typeR" label="退款方式:">
<el-radio-group v-model="addRefund.typeR">
<el-radio value="0" @change="addRefund.typeR = '0'">全部退款</el-radio>
<el-radio value="1">部分退款</el-radio>

9
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 () {

233
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);
};
</script>
<template>
<el-dialog
v-model="areyouright"
title=""
width="500"
:close-on-click-modal="false"
>
<el-button type="success" @click="exportExcel()">导出</el-button>
</el-dialog>
<!-- 这是导出excel的弹窗 -->
<el-dialog
v-model="getPutEX"
title="请选择导出条件"
width="500"
:close-on-click-modal="false"
>
<template #footer>
<el-form
ref="ruleFormRef"
style="max-width: 600px"
:model="putExcel"
:rules="rules"
label-width="auto"
class="demo-ruleForm"
:size="formSize"
status-icon
>
<el-form-item prop="activityName" label="精网号:">
<el-input
v-model="putExcel.jwcode"
placeholder="请输入精网号"
style="width: 220px"
/>
</el-form-item>
<el-form-item label="所属地区:"
><el-select
v-model="putExcel.area"
placeholder="请选择所属地区"
style="width: 240px"
clearable
>
<el-option
v-for="item in area"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="更新时间:">
<el-radio-group v-model="TimeGet">
<el-radio value="1" @click="getT()">今天</el-radio>
<el-radio value="3" @click="get3()">近三天</el-radio>
<el-radio value="7" @click="get7()">近一周</el-radio>
<el-radio value="30" @click="get30()">近一个月</el-radio>
</el-radio-group>
</el-form-item>
<el-button
type="primary"
size="small"
style="margin-left: 10px"
@click="areyour()"
>确定</el-button
>
</el-form>
</template>
</el-dialog>
<el-row>
<el-col>
<el-card style="margin-bottom: 20px">
@ -254,6 +479,12 @@ onMounted(async function () {
/>
</div>
<div class="head-card-btn">
<el-button
type="success"
style="margin-right: 40px"
@click="getPutEX = true"
>导出Excel表格</el-button
>
<el-button @click="reset()">重置</el-button>
<el-button type="primary" @click="search()">查询</el-button>
</div>
@ -283,7 +514,7 @@ onMounted(async function () {
}}</span>
</template>
</el-table-column>
<el-table-column prop="uname" label="姓名" width="130" />
<el-table-column prop="username" label="姓名" width="130" />
<el-table-column prop="jwcode" label="精网号" width="170" />
<el-table-column prop="area" label="所属地区" width="170" />
<el-table-column

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

@ -74,7 +74,7 @@ const get = async function (val) {
// POST
const result = await API.post("http://192.168.8.93:10010/detailY/select", {
...getObj.value,
detailY: { ...detailY.value },
detailYgold: { ...detailY.value },
});
// const result2 = await API.post("http://192.168.8.93:10010/detailY/select", {
// ...getAllObj.value,
@ -193,7 +193,18 @@ onMounted(async function () {
<el-card>
<div>
<el-table :data="tableData" :height="tableHeight" style="width: 100%">
<el-table-column prop="" label="序号" width="130" />
<el-table-column
type="index"
label="序号"
width="100px"
fixed="left"
>
<template #default="scope">
<span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span>
</template>
</el-table-column>
<el-table-column prop="name" label="姓名" width="130" />
<el-table-column prop="jwcode" label="精网号" width="170" />
<el-table-column prop="area" label="所属地区" width="200" />

Loading…
Cancel
Save