Browse Source

请求封装

test
zhaoln 1 month ago
parent
commit
1a75182d7d
  1. 1
      gold-system/.env.development
  2. 1
      gold-system/.env.production
  3. 62
      gold-system/src/util/http.js
  4. 43
      gold-system/src/util/request.js
  5. 79
      gold-system/src/views/login.vue
  6. 481
      gold-system/src/views/usergold/index.vue
  7. 68
      gold-system/vite.config.ts

1
gold-system/.env.development

@ -0,0 +1 @@
VITE_API_BASE='http://54.251.137.151:10704/'

1
gold-system/.env.production

@ -0,0 +1 @@
VITE_API_BASE='http://54.251.137.151:10702/'

62
gold-system/src/util/http.js

@ -1,48 +1,26 @@
import axios from 'axios';
import request from './request'
export default function requestHandler(options) {
const { method = 'get', url, data = {}, params = {}, headers = {} } = options
export default function (options) {
//配置每次发送请求都从localStorage中获取名字叫token的数据,
//添加到请求头部的Authorization属性中
const token = localStorage.getItem('token');
//Object.assign用于合并对象的数据
options.data.token = token;
// options.headers = Object.assign(
// { token: token },
// options.headers || {}
// );
//axios() 返回一个promise对象,用于异步请求
//options是一个对象,其中包含了许多用于配置请求的参数,
//例如请求的url、请求方法(GET、POST等)、请求头等
return axios(options)
return request({
method,
url,
data,
params,
headers
})
.then(({ status, data, statusText }) => {
//该函数在请求成功并返回数据时被调用
//status:HTTP状态码,例如200表示请求成功。
//data:服务器返回的数据。
// statusText:HTTP状态文本,例如"OK"表示请求成功。
// console.log(data);
if (status == 200) {
return data;
if (status === 200) {
return data
} else {
throw new e(statusText);
throw new Error(statusText)
}
})
.catch(error => {
if (error?.needsLogin) {
return { needsLogin: true }
}
return Promise.reject(error)
})
.catch(e=>{
// 检查是否是因为token过期导致的401错误
if (e.response && e.response.status === 401) {
// 获取机器码
const machineId = localStorage.getItem('machineId');
// 清除localStorage中的token
localStorage.removeItem('token');
// // 执行重新登录的逻辑,例如跳转到登录页面
router.push("/login?machineId=" + machineId);
// 可以在这里返回一个特定的值或者对象,以便调用者知道需要重新登录
return { needsLogin: true };
} else {
// 其他类型的错误,直接抛出
return Promise.reject(e);
}
});
}
}

43
gold-system/src/util/request.js

@ -0,0 +1,43 @@
import axios from 'axios'
const service = axios.create({
baseURL: import.meta.env.VITE_API_BASE,
timeout: 10000,
headers: {
'Content-Type': 'application/json'
}
})
// 请求拦截器
service.interceptors.request.use(config => {
const token = localStorage.getItem('token')
if (token) {
if (config.data) {
config.data.token = token;
} else {
config.data = { token };
}
// config.headers.Authorization = `${token}`
}
return config
}, error => {
return Promise.reject(error)
})
// 响应拦截器
service.interceptors.response.use(
response => {
return response
},
error => {
// const { response } = error
// if (response && response.status === 401) {
// const machineId = localStorage.getItem('machineId')
// localStorage.removeItem('token')
// window.location.href = `/login?machineId=${machineId}`
// return Promise.resolve({ needsLogin: true })
// }
return Promise.reject(error)
}
)
export default service

79
gold-system/src/views/login.vue

@ -1,71 +1,72 @@
<script setup>
import { ref, onMounted, reactive, computed } from "vue";
import { ElMessage } from "element-plus";
import axios from "axios";
import { useRouter } from "vue-router";
import { VscGlobe } from "vue-icons-plus/vsc";
import { ref, onMounted, reactive, computed } from 'vue'
import { ElMessage } from 'element-plus'
import axios from 'axios'
import request from '@/util/http'
import { useRouter } from 'vue-router'
import { VscGlobe } from 'vue-icons-plus/vsc'
//
var url = window.location.href; //
var url = window.location.href //
//machineId=
var machineId = null;
var machineId = null
// machineId
function getMachineId() {
var parts = url.split("machineId=");
var parts = url.split('machineId=')
if (parts.length > 1) {
machineId = parts[1].split("&")[0]; // &
machineId = parts[1].split('&')[0] // &
}
// machineId = decodeURIComponent(machineId); //machineId
console.log("MachineId字符串:", machineId); // machineId
console.log('MachineId字符串:', machineId) // machineId
// machineId
if (machineId) {
localStorage.setItem("machineId", machineId);
localStorage.setItem('machineId', machineId)
}
}
getMachineId();
getMachineId()
const router = useRouter(); //
let formData = new FormData();
const router = useRouter() //
let formData = new FormData()
// FormData
// formData.append("jwcode", form.value.jwcode);
// formData.append("password", form.value.password);
const form = ref({ jwcode: "", password: "", token: "", machineId: machineId });
const form = ref({ jwcode: '', password: '', token: '', machineId: machineId })
//
const login = async function () {
try {
const result = await axios.post(
"http://54.251.137.151:10702/admin/login",
form.value
);
if (result.data.code == 200) {
localStorage.setItem("token", result.data.msg);
localStorage.setItem("permission", result.data.data.permission);
const result = await request({
url: '/admin/login',
method: 'post',
data: form.value
})
console.log('resultresult', result)
if (result.code == 200) {
localStorage.setItem('token', result.msg)
localStorage.setItem('permission', result.data.permission)
if (
result.data.data.permission == "5" ||
result.data.data.permission == "1" ||
result.data.data.permission == "2" ||
result.data.data.permission == "3"
result.data.permission == '5' ||
result.data.permission == '1' ||
result.data.permission == '2' ||
result.data.permission == '3'
) {
router.push("/workspace");
} else if (result.data.data.permission == "4") {
router.push("/noPermission");
router.push('/usergold')
} else if (result.data.permission == '4') {
router.push('/noPermission')
}
ElMessage.success("登录成功");
console.log("请求成功", result);
ElMessage.success('登录成功')
console.log('请求成功', result)
} else {
form.value.password = "";
form.value.jwcode = "";
ElMessage.error(result.data.msg);
form.value.password = ''
form.value.jwcode = ''
ElMessage.error(result.msg)
}
} catch (error) {
console.log("请求失败", error);
ElMessage.error("登录失败,请检查账号密码");
console.log('请求失败', error)
ElMessage.error('登录失败,请检查账号密码')
//
}
};
}
</script>
<template>
<el-row class="login-page">

481
gold-system/src/views/usergold/index.vue

@ -1,64 +1,65 @@
<script setup>
import { ref, onMounted, reactive, computed } from "vue";
import ElementPlus from "element-plus";
import { ElMessage, ElMessageBox } from "element-plus";
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";
import { ref, onMounted, reactive, computed } from 'vue'
import ElementPlus from 'element-plus'
import { ElMessage, ElMessageBox } from 'element-plus'
import axios from 'axios'
import moment from 'moment'
import { ta } from 'element-plus/es/locales.mjs'
import API from '@/util/http'
import * as XLSX from 'xlsx'
//
//
const adminData = ref({});
const adminData = ref({})
const getAdminData = async function () {
try {
const result = await API.post(
"http://54.251.137.151:10702/admin/userinfo",
{}
);
adminData.value = result;
console.log("请求成功", result);
console.log("用户信息", adminData.value);
const result = await API({
url: '/admin/userinfo',
method: 'post',
data: {}
})
adminData.value = result
console.log('请求成功', result)
console.log('用户信息', adminData.value)
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
}
};
}
//
const tableData = ref([]);
const tableData = ref([])
//
// const tableAllData = ref([]);
//
const rechargeCoin = ref(0);
const freeCoin = ref(0);
const taskCoin = ref(0);
const rechargeCoin = ref(0)
const freeCoin = ref(0)
const taskCoin = ref(0)
// ===========================================
//
const total = ref(100);
const total = ref(100)
//
const getTime = ref([]);
const getTime = ref([])
// detailY
const detailY = ref({});
const detailY = ref({})
//
const getAllObj = ref({});
const getAllObj = ref({})
//
const getObj = ref({
pageNum: 1,
pageSize: 50,
});
pageSize: 50
})
//excel
const getPutEX = ref(false);
const getPutEX = ref(false)
//
const num = [
{
value: "1",
label: "增加",
value: '1',
label: '增加'
},
{
value: "2",
label: "减少",
},
];
value: '2',
label: '减少'
}
]
// //
// const tableHeight = computed(function () {
@ -71,49 +72,50 @@ const num = [
const get = async function (val) {
try {
//
if (adminData.value.area === "泰国") {
detailY.value.areas = ["泰国", "越南"];
} else if (adminData.value.area !== "总部") {
detailY.value.area = adminData.value.area;
if (adminData.value.area === '泰国') {
detailY.value.areas = ['泰国', '越南']
} else if (adminData.value.area !== '总部') {
detailY.value.area = adminData.value.area
}
//
if (typeof val === "number") {
getObj.value.pageNum = val;
if (typeof val === 'number') {
getObj.value.pageNum = val
}
//
if (getTime.value != null) {
if (getTime.value.startDate != "" && getTime.value.endDate != "") {
detailY.value.startDate = getTime.value[0];
detailY.value.endDate = getTime.value[1];
if (getTime.value.startDate != '' && getTime.value.endDate != '') {
detailY.value.startDate = getTime.value[0]
detailY.value.endDate = getTime.value[1]
}
} else {
detailY.value.startDate = "";
detailY.value.endDate = "";
detailY.value.startDate = ''
detailY.value.endDate = ''
}
//
detailY.value.sortField = sortField.value;
detailY.value.sortOrder = sortOrder.value;
console.log("搜索参数", getObj.value);
detailY.value.sortField = sortField.value
detailY.value.sortOrder = sortOrder.value
console.log('搜索参数', getObj.value)
// POST
const result = await API.post("http://54.251.137.151:10702/detailY", {
...getObj.value,
detailY: { ...detailY.value },
});
const result = await API({
url: '/detailY',
method: 'post',
data: { ...getObj.value, detailY: { ...detailY.value } }
})
// const result2 = await API.post("http://54.251.137.151:10702/detailY", {
// ...getAllObj.value,
// detailY: { ...detailY.value },
// });
//
console.log("请求成功", result);
console.log('请求成功', result)
// console.log("2", result2);
//
tableData.value = result.data.list;
console.log("tableData", tableData.value);
tableData.value = result.data.list
console.log('tableData', tableData.value)
// tableAllData.value = result2.data;
// console.log("tableAllData", tableAllData.value);
//
total.value = result.data.total;
console.log("total", total.value);
total.value = result.data.total
console.log('total', total.value)
// 100
// 100
// rechargeCoin.value = parseFloat((tableAllData.value.sumR / 100).toFixed(2));
@ -131,120 +133,118 @@ const get = async function (val) {
// taskCoin.value
// );
} catch (error) {
console.log("请求失败", error);
console.log('请求失败', error)
//
}
};
}
//
const search = function () {
getObj.value.pageNum = 1;
get();
};
getObj.value.pageNum = 1
get()
}
//
const reset = function () {
//
delete detailY.value.jwcode;
delete detailY.value.jwcode
//
delete detailY.value.num;
delete detailY.value.num
//
delete detailY.value.startDate;
delete detailY.value.startDate
//
delete detailY.value.endDate;
delete detailY.value.endDate
//
delete detailY.value.area;
delete sortField.value;
delete sortOrder.value;
getTime.value = {};
delete detailY.value.area
delete sortField.value
delete sortOrder.value
getTime.value = {}
//
delete detailY.value.consumePlatform;
};
delete detailY.value.consumePlatform
}
//
const getToday = function () {
const today = new Date();
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
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
//
const getYesterday = function () {
const yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
const yesterday = new Date()
yesterday.setDate(yesterday.getDate() - 1)
const startDate = new Date(
yesterday.getFullYear(),
yesterday.getMonth(),
yesterday.getDate()
);
)
const endDate = new Date(
yesterday.getFullYear(),
yesterday.getMonth(),
yesterday.getDate() + 1
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
// 7
const get7Days = function () {
const today = new Date();
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
);
getTime.value = [startDate, endDate];
console.log("getTime", getTime.value);
get();
};
)
getTime.value = [startDate, endDate]
console.log('getTime', getTime.value)
get()
}
//
const checkNumber = function () {
if (typeof parseInt(getObj.value.pageNum) === "number") {
console.log(
"总共有多少页" + Math.ceil(total.value / getObj.value.pageSize)
);
if (typeof parseInt(getObj.value.pageNum) === 'number') {
console.log('总共有多少页' + Math.ceil(total.value / getObj.value.pageSize))
if (
getObj.value.pageNum > 0 &&
getObj.value.pageNum <= Math.ceil(total.value / getObj.value.pageSize)
) {
getObj.value.pageNum = parseInt(getObj.value.pageNum);
console.log("输入的数字合法");
get();
getObj.value.pageNum = parseInt(getObj.value.pageNum)
console.log('输入的数字合法')
get()
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
} else {
//
ElMessage({
type: "error",
message: "请检查输入内容",
});
type: 'error',
message: '请检查输入内容'
})
}
};
}
//
onMounted(async function () {
await getAdminData();
await get();
});
await getAdminData()
await get()
})
// excel
// Excel
@ -262,243 +262,242 @@ const json_fields = (row) => {
row.createAdmin, //
row.createTime,
row.name,
row.id,
];
};
row.id
]
}
//
const json_meta = [
[
{
key: "charset",
value: "utf-8",
},
],
];
key: 'charset',
value: 'utf-8'
}
]
]
const headers = [
"精网号",
"地区",
"平台信息",
"数量",
"更新类型",
"永久金币",
"免费金币",
"任务金币",
"提交人",
"更新时间",
"用户名",
"id",
];
'精网号',
'地区',
'平台信息',
'数量',
'更新类型',
'永久金币',
'免费金币',
'任务金币',
'提交人',
'更新时间',
'用户名',
'id'
]
const exportExcel = () => {
// json_fields
const data = excelInfo.value.map(json_fields);
const ws = XLSX.utils.aoa_to_sheet(data);
const data = excelInfo.value.map(json_fields)
const ws = XLSX.utils.aoa_to_sheet(data)
//
XLSX.utils.sheet_add_aoa(ws, [headers], { origin: "A1" });
const wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
XLSX.writeFile(wb, "客户金币明细.xlsx");
};
const today = new Date();
XLSX.utils.sheet_add_aoa(ws, [headers], { origin: 'A1' })
const wb = XLSX.utils.book_new()
XLSX.utils.book_append_sheet(wb, ws, 'Sheet1')
XLSX.writeFile(wb, '客户金币明细.xlsx')
}
const today = new Date()
const startDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate()
);
)
const endDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 1
);
)
const putExcel = ref({
startDate: startDate,
endDate: endDate,
});
const excelInfo = ref({});
const loading = ref(false);
endDate: endDate
})
const excelInfo = ref({})
const loading = ref(false)
const areyour = async function () {
try {
loading.value = true;
const result = await API.post(
"http://54.251.137.151:10702/detailY/searchAll",
{
...putExcel.value,
}
);
excelInfo.value = result.data;
loading.value = true
const result = await API({
url: '/detailY/searchAll',
method: 'post',
data: { ...putExcel.value }
})
excelInfo.value = result.data
// excelInfo
if (Array.isArray(excelInfo.value)) {
excelInfo.value.forEach((item) => {
if (item.rechargeCoin) {
item.rechargeCoin = item.rechargeCoin / 100;
item.rechargeCoin = item.rechargeCoin / 100
}
if (item.freeCoin) {
item.freeCoin = item.freeCoin / 100;
item.freeCoin = item.freeCoin / 100
}
if (item.taskCoin) {
item.taskCoin = item.taskCoin / 100;
item.taskCoin = item.taskCoin / 100
}
});
})
}
areyouright.value = true;
areyouright.value = true
ElMessage({
type: "success",
message: "查询成功",
});
loading.value = false;
type: 'success',
message: '查询成功'
})
loading.value = false
} catch (error) {
console.log("请求失败", error);
loading.value = false;
console.log('请求失败', error)
loading.value = false
}
};
}
const areyouright = ref(false);
const areyouright = ref(false)
//
const area = [
{
value: "马来西亚",
label: "马来西亚",
value: '马来西亚',
label: '马来西亚'
},
{
value: "新加坡",
label: "新加坡",
value: '新加坡',
label: '新加坡'
},
{
value: "香港",
label: "香港",
value: '香港',
label: '香港'
},
{
value: "泰国",
label: "泰国",
value: '泰国',
label: '泰国'
},
{
value: "加拿大",
label: "加拿大",
value: '加拿大',
label: '加拿大'
},
{
value: "越南HCM",
label: "越南HCM",
},
];
value: '越南HCM',
label: '越南HCM'
}
]
//
const platform = [
{
value: "4",
label: "金币系统",
value: '4',
label: '金币系统'
},
{
value: "1",
label: "ERP系统",
value: '1',
label: 'ERP系统'
},
{
value: "2",
label: "Homily Chart",
value: '2',
label: 'Homily Chart'
},
{
value: "3",
label: "Homily Link",
value: '3',
label: 'Homily Link'
},
{
value: "0",
label: "初始化金币",
},
];
const TimeGet = ref("1");
value: '0',
label: '初始化金币'
}
]
const TimeGet = ref('1')
//
const getT = function () {
const today = new Date();
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);
};
)
putExcel.value.startDate = startDate
putExcel.value.endDate = endDate
console.log('putExcel', putExcel.value)
}
//3
const get3 = function () {
const today = new Date();
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);
};
)
putExcel.value.startDate = startDate
putExcel.value.endDate = endDate
console.log('putExcel', putExcel.value)
}
// 7
const get7 = function () {
const today = new Date();
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);
};
)
putExcel.value.startDate = startDate
putExcel.value.endDate = endDate
console.log('putExcel', putExcel.value)
}
// 30
const get30 = function () {
const today = new Date();
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);
};
)
putExcel.value.startDate = startDate
putExcel.value.endDate = endDate
console.log('putExcel', putExcel.value)
}
//
const sortField = ref("");
const sortOrder = ref("");
const sortField = ref('')
const sortOrder = ref('')
//
const handleSortChange = (column) => {
console.log("排序字段:", column.prop);
console.log("排序方式:", column.order);
if (column.prop === "rechargeCoin") {
sortField.value = "recharge_coin";
} else if (column.prop === "taskCoin") {
sortField.value = "task_coin";
} else if (column.prop === "freeCoin") {
sortField.value = "free_coin";
} else if (column.prop === "createTime") {
sortField.value = "create_time";
} else if (column.prop === "gold") {
sortField.value = "gold";
console.log('排序字段:', column.prop)
console.log('排序方式:', column.order)
if (column.prop === 'rechargeCoin') {
sortField.value = 'recharge_coin'
} else if (column.prop === 'taskCoin') {
sortField.value = 'task_coin'
} else if (column.prop === 'freeCoin') {
sortField.value = 'free_coin'
} else if (column.prop === 'createTime') {
sortField.value = 'create_time'
} else if (column.prop === 'gold') {
sortField.value = 'gold'
}
sortOrder.value = column.order === "ascending" ? "ASC" : "DESC";
get();
};
sortOrder.value = column.order === 'ascending' ? 'ASC' : 'DESC'
get()
}
</script>
<template>
@ -785,7 +784,7 @@ const handleSortChange = (column) => {
>
<template #default="scope">
<span>{{
moment(scope.row.createTime).format("YYYY-MM-DD HH:mm:ss")
moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss')
}}</span>
</template>
</el-table-column>

68
gold-system/vite.config.ts

@ -1,42 +1,42 @@
import { defineConfig } from 'vite'
import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import { lazyImport, VxeResolver } from 'vite-plugin-lazy-import'
import legacy from '@vitejs/plugin-legacy';
import legacy from '@vitejs/plugin-legacy'
import path from 'path'
// https://vite.dev/config/
export default defineConfig({
esbuild: {
supported: {
bigint: true
}
},
plugins: [vue(),
legacy({
targets: ['defaults', 'not IE 11', 'chrome >=73'],
modernPolyfills: true
}),
lazyImport({
resolvers: [
VxeResolver({
libraryName: 'vxe-table'
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd())
console.log('当前环境:', mode)
console.log('当前环境变量:', env)
return {
esbuild: {
supported: {
bigint: true
}
},
plugins: [
vue(),
legacy({
targets: ['defaults', 'not IE 11', 'chrome >=73'],
modernPolyfills: true
}),
VxeResolver({
libraryName: 'vxe-pc-ui'
lazyImport({
resolvers: [
VxeResolver({
libraryName: 'vxe-table'
}),
VxeResolver({
libraryName: 'vxe-pc-ui'
})
]
})
]
})
],
server: {
proxy: {
'/hwjb': {
// target: 'http://54.251.137.151:10704',
target: 'http://192.168.8.93:10702',
// target: 'http://54.251.137.151:10702',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/hwjb/, ''),
},
],
resolve: {
alias: {
'@': path.resolve(__dirname, './src')
}
},
},
// base: process.env.NODE_ENV === "production" ? "/gold_html_dev/" : "/",
base: process.env.NODE_ENV === "production" ? "./" : "/",
base: process.env.NODE_ENV === 'production' ? './' : '/'
}
})
Loading…
Cancel
Save