hongxilin 5 months ago
parent
commit
6a18d5ee98
  1. 2
      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

2
vue/gold-system/README.md

@ -25,3 +25,5 @@ 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