API修改

This commit is contained in:
SNAkira 2025-03-25 17:28:59 +08:00
parent 2f36aa1588
commit 964feff08c
11 changed files with 42 additions and 192 deletions

5
.env.development Normal file
View File

@ -0,0 +1,5 @@
NODE_ENV='development'
VITE_API_URL='http://www.hylszsh.cn/Api/'
VITE_OSS_URL='http://www.hylszsh.cn/Api/StaticFiles/'

5
.env.production Normal file
View File

@ -0,0 +1,5 @@
NODE_ENV='production'
VITE_API_URL='http://www.hylszsh.cn/Api/'
VITE_OSS_URL='http://www.hylszsh.cn/Api/StaticFiles/'

View File

@ -8,12 +8,10 @@
},
"dependencies": {
"@element-plus/icons-vue": "^2.3.1",
"axios": "^1.7.9",
"canvas2image": "^1.0.5",
"element-plus": "^2.9.4",
"html2canvas": "^1.4.1",
"jquery": "^3.7.1",
"pan.template.h5": "file:",
"postcss-px-to-viewport": "^1.1.1",
"vant": "^4.9.9",
"vue": "^3.2.45",

View File

@ -1,11 +0,0 @@
import http from '../utils/http';
const CommonAPI = {
Post(name, data, index, size) {
if (index)
return http.post(`Common/${name}`, { data: data, PageIndex: index, PageSize: size });
return http.post(`Common/${name}`, { data: data });
},
}
export default CommonAPI;

View File

@ -1,17 +0,0 @@
import http from '../utils/http'
const MemberAPI = {
WXAuthorize(data) {
return http.get('Wechat/Authorize', { path: data });
},
Login(data) {
return http.get('Auth/Token', data);
},
Post(name, data, index, size) {
if (index)
return http.post(`Member/${name}`, { data: data, PageIndex: index, PageSize: size });
return http.post(`Member/${name}`, { data: data });
},
}
export default MemberAPI;

View File

@ -1,21 +0,0 @@
import http from '../utils/http'
const PayAPI = {
PayInfo(data) {
return http.post('Member/PayInfo', { data: data });
},
WalletPay(data) {
return http.post('Member/WalletPay', { data, data });
},
Wechat_JS(data) {
return http.get('Pay/Wechat_JS', data);
},
AliPay_H5(data) {
return http.get('Pay/AliPay_H5', data);
},
// Wechat_Mini(data) {
// return http.get('Pay/Wechat_Mini', data);
// },
}
export default PayAPI;

View File

@ -253,12 +253,31 @@ app.config.globalProperties.$goIndex = () => {
app.config.globalProperties.$CheckStates = [{ label: '待审核', color: 'primary' }, { label: '已通过', color: 'success' }, { label: '已拒绝', color: 'danger' }];
// api
import MemberAPI from './api/member';
import CommonAPI from './api/common';
import PayAPI from './api/pay';
app.config.globalProperties.$MemberAPI = MemberAPI;
app.config.globalProperties.$CommonAPI = CommonAPI;
app.config.globalProperties.$PayAPI = PayAPI;
app.config.globalProperties.$api = {
post(e, data) {
return new Promise((resolve, reject) => {
fetch(`${import.meta.env.VITE_API_URL}${e}`, {
method: 'POST',
headers: {
'content-type': 'application/json'
},
body: JSON.stringify(data),
}).then(rep => {
rep.json().then(data => {
if (data.Code == 0) {
resolve(data.Data);
}
else
reject(data.Message);
}).catch(err => {
reject(err);
});
}).catch(err => {
reject(err);
});
});
},
};
app.config.globalProperties.$isWechat = () => { return navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger' };
app.config.globalProperties.$isWechatMini = () => { return window.__wxjs_environment == 'miniprogram' };

View File

@ -1,36 +0,0 @@
import {request} from './request'
const http = {
get(url, params) {
const config = {
method: 'get',
url: url
}
if (params) config.params = params
return request(config)
},
post(url, params) {
const config = {
method: 'post',
url: url
}
if (params) config.data = params
return request(config)
},
put(url, params) {
const config = {
method: 'put',
url: url
}
if (params) config.params = params
return request(config)
},
delete(url, params) {
const config = {
method: 'post',
url: url
}
if (params) config.params = params
return request(config)
}
}
export default http

View File

@ -1,68 +0,0 @@
import axios from 'axios'
export function request(config) {
const instance = axios.create({
baseURL: import.meta.env.VITE_API_URL,
timeout: 60000,
})
instance.interceptors.request.use(config => {
config.headers['Member-Token'] = localStorage.getItem('member_token') || '';
config.headers['Content-Type'] = 'application/json';
if (config.data) {
config.data.ts = Date.now();
} else {
config.data = {
data: {},
ts: Date.now(),
};
}
return config;
}, error => {
return Promise.error(error)
}
)
instance.interceptors.response.use(rep => {
if (rep.data.errcode) {
if (rep.data.errcode == 41000) {
localStorage.setItem('member_token', rep.data.access_token);
return new Promise((resolve, reject) => {
axios.request(rep.config).then(data => {
if (data.data.errcode)
reject(data.data);
else
resolve(data.data);
}).catch(err => {
if (err.isAxiosError) {
switch (err.code) {
case 'ERR_NETWORK': reject('服务器连接失败');
case 'ECONNABORTED': reject('网络繁忙,请重试');
default: reject(err.message);
}
}
reject(err);
});
});
}
else if ([41001, 40001, 40002].includes(rep.data.errcode)) {
localStorage.removeItem('member_token');
location.replace('#/Login');
return Promise.reject({ errcode: rep.data.errcode, errmsg: '请先登录' });
}
else
return Promise.reject(rep.data);
}
else
return Promise.resolve(rep.data);
}, error => {
if (error.isAxiosError) {
switch (error.code) {
case 'ERR_NETWORK': return Promise.reject('服务器连接失败');
case 'ECONNABORTED': return Promise.reject('网络繁忙,请重试');
default: return Promise.reject(error.message);
}
}
return Promise.reject(error)
})
return instance(config);
}
export default request

View File

@ -114,6 +114,10 @@ export default {
},
mounted() {
this.scrollDiy();
this.$api.post('Carousel/Get', { Type: 1 }).then(data => {
console.log(data);
});
},
data() {
return {

View File

@ -1,19 +1,9 @@
<template>
<router-view v-slot="{ Component }">
<keep-alive :include="cacheRoutes">
<component :is="Component" :key="$route.fullPath" @changeTabbar="changeActive" @updateCart="updateCart" />
<component :is="Component" :key="$route.fullPath" @changeTabbar="changeActive" />
</keep-alive>
</router-view>
<!-- <van-tabbar v-model="data.DefaultActive" placeholder @change="changeActive" active-color="#f53b32"
inactive-color="#666" fixed>
<van-tabbar-item v-for="(item, index) in data.Tabbars" :name="item.Name" :badge="getBadge(item)" :dot="item.Dot"
@click="refresh(item.Name)">
<span>{{ item.Label }}</span>
<template #icon="props">
<img :src="props.active ? item.Icon_Active : item.Icon_Inactive" />
</template>
</van-tabbar-item>
</van-tabbar> -->
<div>
</div>
@ -25,30 +15,17 @@ export default {
mounted() {
this.init();
},
beforeRouteEnter() {
if (this)
this.updateCart();
},
computed: {
getBadge() {
return (e) => {
if (e.Name == 'Cart')
return this.cartQty || '';
return '';
}
}
},
data() {
return {
data: {},
sysConfig: {},
cartQty: 0,
cacheRoutes: this.$router.getRoutes().filter(x => x.meta.cache).map(x => x.name),
}
},
methods: {
init() {
if (this.$route.name = '/')
location.replace('#/Home');
},
refresh(e) {
if (e == this.data.DefaultActive)
@ -60,10 +37,5 @@ export default {
location.reload();
},
},
beforeRouteEnter(to, from, next) {
next(vm => {
vm.updateCart();
});
}
}
</script>