更新消息多次触发action
This commit is contained in:
@@ -1,10 +1,10 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="body">
|
<view class="body">
|
||||||
<CustomNavbar @back="back" titke="申请消息"></CustomNavbar>
|
<CustomNavbar @back="back" titke="申请消息"></CustomNavbar>
|
||||||
<view v-for="(value,key) in data" class="newsList" @click="goList(value)" :key="key">
|
<view v-for="(value, key) in messageList" class="newsList" @click="goList(value)" :key="key">
|
||||||
<view class="newsIcon">
|
<view class="newsIcon">
|
||||||
<image :src="value.icon" mode=""></image>
|
<image :src="value.icon" mode=""></image>
|
||||||
<view v-if="news_recruit.unread[value.id] > 0" class="point"></view>
|
<!-- <view v-if="news_recruit.unread[value.id] > 0" class="point"></view> -->
|
||||||
</view>
|
</view>
|
||||||
<view class="newsListRight">
|
<view class="newsListRight">
|
||||||
<view class="head">
|
<view class="head">
|
||||||
@@ -26,9 +26,6 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {
|
|
||||||
mapGetters
|
|
||||||
} from 'vuex'
|
|
||||||
import CustomTabbar from '@/components/CustomTabbar/custom_tabbar.vue'
|
import CustomTabbar from '@/components/CustomTabbar/custom_tabbar.vue'
|
||||||
import CustomNavbar from '@/components/CustomNavbar/navbar.vue';
|
import CustomNavbar from '@/components/CustomNavbar/navbar.vue';
|
||||||
|
|
||||||
@@ -36,7 +33,129 @@
|
|||||||
components: { CustomTabbar, CustomNavbar },
|
components: { CustomTabbar, CustomNavbar },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loading: false
|
loading: false,
|
||||||
|
size: 20,
|
||||||
|
messageList: [{
|
||||||
|
id: "0",
|
||||||
|
title: "消息通知",
|
||||||
|
icon: "../../../static/img/notice.svg",
|
||||||
|
page: {
|
||||||
|
current: 0,
|
||||||
|
size: this.size,
|
||||||
|
total: this.size,
|
||||||
|
},
|
||||||
|
data: [],
|
||||||
|
prop: {
|
||||||
|
title: "title",
|
||||||
|
desc: (value) => {
|
||||||
|
if (value.data[0]) return value.data[0][0]["desc"];
|
||||||
|
},
|
||||||
|
time: "createTime",
|
||||||
|
isRead: "isRead",
|
||||||
|
listDesc: "desc",
|
||||||
|
},
|
||||||
|
navigateTo(item) {
|
||||||
|
uni.$once("getNewsDetail", (cb) => {
|
||||||
|
cb(item);
|
||||||
|
});
|
||||||
|
uni.navigateTo({
|
||||||
|
url: "/pages/news/newsDetail?type=0",
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
id: "1",
|
||||||
|
title: "任务申请",
|
||||||
|
icon: "../../../static/img/renwu.png",
|
||||||
|
page: {
|
||||||
|
current: 0,
|
||||||
|
size: this.size,
|
||||||
|
total: this.size,
|
||||||
|
},
|
||||||
|
data: [],
|
||||||
|
prop: {
|
||||||
|
title: "missionTitle",
|
||||||
|
desc: (value) => {
|
||||||
|
if (value.data[0])
|
||||||
|
return `您收到${value.data[0][0]["companyName"]}的任务`;
|
||||||
|
},
|
||||||
|
time: "createTime",
|
||||||
|
isRead: "status",
|
||||||
|
listDesc: "companyName",
|
||||||
|
},
|
||||||
|
navigateTo(item, dispatch) {
|
||||||
|
// dispatch("readNew", {
|
||||||
|
// key: "1",
|
||||||
|
// id: item.id,
|
||||||
|
// });
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/projectInfo/projectInfo?type=1&missionNo=${encodeURIComponent(
|
||||||
|
item.missionNo
|
||||||
|
)}&id=${encodeURIComponent(item.id)}`,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
id: "1",
|
||||||
|
title: "岗位申请",
|
||||||
|
icon: "../../../static/img/job_recruit.svg",
|
||||||
|
page: {
|
||||||
|
current: 0,
|
||||||
|
size: this.size,
|
||||||
|
total: this.size,
|
||||||
|
},
|
||||||
|
data: [],
|
||||||
|
prop: {
|
||||||
|
title: "missionTitle",
|
||||||
|
desc: (value) => {
|
||||||
|
if (value.data[0])
|
||||||
|
return `您收到${value.data[0][0]["companyName"]}的任务`;
|
||||||
|
},
|
||||||
|
time: "createTime",
|
||||||
|
isRead: "status",
|
||||||
|
listDesc: "companyName",
|
||||||
|
},
|
||||||
|
navigateTo(item, dispatch) {
|
||||||
|
// dispatch("readNew", {
|
||||||
|
// key: "1",
|
||||||
|
// id: item.id,
|
||||||
|
// });
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/projectInfo/projectInfo?type=1&missionNo=${encodeURIComponent(
|
||||||
|
item.missionNo
|
||||||
|
)}&id=${encodeURIComponent(item.id)}`,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
id: "1",
|
||||||
|
title: "个人户申请",
|
||||||
|
icon: "../../../static/img/own_recruit.svg",
|
||||||
|
page: {
|
||||||
|
current: 0,
|
||||||
|
size: this.size,
|
||||||
|
total: this.size,
|
||||||
|
},
|
||||||
|
data: [],
|
||||||
|
prop: {
|
||||||
|
title: "missionTitle",
|
||||||
|
desc: (value) => {
|
||||||
|
if (value.data[0])
|
||||||
|
return `您收到${value.data[0][0]["companyName"]}的任务`;
|
||||||
|
},
|
||||||
|
time: "createTime",
|
||||||
|
isRead: "status",
|
||||||
|
listDesc: "companyName",
|
||||||
|
},
|
||||||
|
navigateTo(item, dispatch) {
|
||||||
|
// dispatch("readNew", {
|
||||||
|
// key: "1",
|
||||||
|
// id: item.id,
|
||||||
|
// });
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/projectInfo/projectInfo?type=1&missionNo=${encodeURIComponent(
|
||||||
|
item.missionNo
|
||||||
|
)}&id=${encodeURIComponent(item.id)}`,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onLoad() { },
|
onLoad() { },
|
||||||
@@ -49,16 +168,16 @@
|
|||||||
uni.$emit('newsReadChange')
|
uni.$emit('newsReadChange')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onPullDownRefresh() {
|
// onPullDownRefresh() {
|
||||||
this.loading = true
|
// this.loading = true
|
||||||
this.$store.dispatch("newsInit").then(() => {
|
// this.$store.dispatch("newsInit").then(() => {
|
||||||
this.loading = false
|
// this.loading = false
|
||||||
uni.stopPullDownRefresh();
|
// uni.stopPullDownRefresh();
|
||||||
}).catch(() => {
|
// }).catch(() => {
|
||||||
this.loading = false
|
// this.loading = false
|
||||||
uni.stopPullDownRefresh();
|
// uni.stopPullDownRefresh();
|
||||||
})
|
// })
|
||||||
},
|
// },
|
||||||
methods: {
|
methods: {
|
||||||
goList(item) {
|
goList(item) {
|
||||||
// if (item.data.length === 0) {
|
// if (item.data.length === 0) {
|
||||||
@@ -95,13 +214,6 @@
|
|||||||
uni.reLaunch({ url: '/pages/my/my' })
|
uni.reLaunch({ url: '/pages/my/my' })
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
computed: {
|
|
||||||
...mapGetters(['news_recruit']),
|
|
||||||
data() {
|
|
||||||
console.log(this.news_recruit.data,'--------------------==========');
|
|
||||||
return this.news_recruit.data
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ const getters = {
|
|||||||
userChecked:state=>state.user.userChecked,
|
userChecked:state=>state.user.userChecked,
|
||||||
area: state => state.area,
|
area: state => state.area,
|
||||||
news: state=> state.news,
|
news: state=> state.news,
|
||||||
news_recruit: state=> state.news_recruit,
|
|
||||||
auth: state => state.auth,
|
auth: state => state.auth,
|
||||||
authPass: (state,getters) => getters.auth.laborState && getters.auth.realNameState && getters.auth.bankCardState && getters.auth.insureState,
|
authPass: (state,getters) => getters.auth.laborState && getters.auth.realNameState && getters.auth.bankCardState && getters.auth.insureState,
|
||||||
authInfo: state => state.auth.authInfo,
|
authInfo: state => state.auth.authInfo,
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import user from './models/user.js'
|
|||||||
import area from './models/area.js'
|
import area from './models/area.js'
|
||||||
import auth from './models/auth.js'
|
import auth from './models/auth.js'
|
||||||
import news from './models/news.js'
|
import news from './models/news.js'
|
||||||
import news_recruit from './models/news_recruit.js'
|
|
||||||
import vip from './models/vip.js'
|
import vip from './models/vip.js'
|
||||||
import face from './models/face.js'
|
import face from './models/face.js'
|
||||||
import authentication from './models/authentication.js'
|
import authentication from './models/authentication.js'
|
||||||
@@ -18,7 +17,6 @@ const store = new Vuex.Store({
|
|||||||
area,
|
area,
|
||||||
auth,
|
auth,
|
||||||
news,
|
news,
|
||||||
news_recruit,
|
|
||||||
vip,
|
vip,
|
||||||
face,
|
face,
|
||||||
authentication
|
authentication
|
||||||
|
|||||||
@@ -1,337 +0,0 @@
|
|||||||
import {
|
|
||||||
inviteCount,
|
|
||||||
inviteList,
|
|
||||||
inviteRead,
|
|
||||||
inviteRemove,
|
|
||||||
noticeCount,
|
|
||||||
noticeList,
|
|
||||||
noticeRead,
|
|
||||||
noticeRemove,
|
|
||||||
} from "@/api/news.js";
|
|
||||||
import website from "@/config/website.js";
|
|
||||||
const size = 20;
|
|
||||||
const handler = {
|
|
||||||
0: {
|
|
||||||
count: noticeCount,
|
|
||||||
getList: noticeList,
|
|
||||||
read: noticeRead,
|
|
||||||
remove: noticeRemove,
|
|
||||||
},
|
|
||||||
1: {
|
|
||||||
count: inviteCount,
|
|
||||||
getList: inviteList,
|
|
||||||
read: inviteRead,
|
|
||||||
remove: inviteRemove,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
function getCount(data) {
|
|
||||||
let sum = 0;
|
|
||||||
for (let key in data) {
|
|
||||||
sum += data[key];
|
|
||||||
}
|
|
||||||
return sum;
|
|
||||||
}
|
|
||||||
|
|
||||||
let refreshTimer = null;
|
|
||||||
|
|
||||||
function startRefreshToken(dispatch) {
|
|
||||||
refreshTimer = setInterval(() => {
|
|
||||||
dispatch("newsInit");
|
|
||||||
}, website.newsRefreshTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
function stopRefreshToken() {
|
|
||||||
clearInterval(refreshTimer);
|
|
||||||
}
|
|
||||||
|
|
||||||
const news = {
|
|
||||||
state: {
|
|
||||||
count: 0,
|
|
||||||
data: {
|
|
||||||
0: {
|
|
||||||
id: "0",
|
|
||||||
title: "消息通知",
|
|
||||||
icon: "../../../static/img/notice.svg",
|
|
||||||
page: {
|
|
||||||
current: 0,
|
|
||||||
size,
|
|
||||||
total: size,
|
|
||||||
},
|
|
||||||
data: [],
|
|
||||||
prop: {
|
|
||||||
title: "title",
|
|
||||||
desc: (value) => {
|
|
||||||
if (value.data[0]) return value.data[0][0]["desc"];
|
|
||||||
},
|
|
||||||
time: "createTime",
|
|
||||||
isRead: "isRead",
|
|
||||||
listDesc: "desc",
|
|
||||||
},
|
|
||||||
navigateTo(item) {
|
|
||||||
uni.$once("getNewsDetail", (cb) => {
|
|
||||||
cb(item);
|
|
||||||
});
|
|
||||||
uni.navigateTo({
|
|
||||||
url: "/pages/news/newsDetail?type=0",
|
|
||||||
});
|
|
||||||
},
|
|
||||||
},
|
|
||||||
1: {
|
|
||||||
id: "1",
|
|
||||||
title: "任务申请",
|
|
||||||
icon: "../../../static/img/renwu.png",
|
|
||||||
page: {
|
|
||||||
current: 0,
|
|
||||||
size,
|
|
||||||
total: size,
|
|
||||||
},
|
|
||||||
data: [],
|
|
||||||
prop: {
|
|
||||||
title: "missionTitle",
|
|
||||||
desc: (value) => {
|
|
||||||
if (value.data[0])
|
|
||||||
return `您收到${value.data[0][0]["companyName"]}的任务`;
|
|
||||||
},
|
|
||||||
time: "createTime",
|
|
||||||
isRead: "status",
|
|
||||||
listDesc: "companyName",
|
|
||||||
},
|
|
||||||
navigateTo(item, dispatch) {
|
|
||||||
dispatch("readNew", {
|
|
||||||
key: "1",
|
|
||||||
id: item.id,
|
|
||||||
});
|
|
||||||
uni.navigateTo({
|
|
||||||
url: `/pages/projectInfo/projectInfo?type=1&missionNo=${encodeURIComponent(
|
|
||||||
item.missionNo
|
|
||||||
)}&id=${encodeURIComponent(item.id)}`,
|
|
||||||
});
|
|
||||||
},
|
|
||||||
},
|
|
||||||
2: {
|
|
||||||
id: "1",
|
|
||||||
title: "岗位申请",
|
|
||||||
icon: "../../../static/img/job_recruit.svg",
|
|
||||||
page: {
|
|
||||||
current: 0,
|
|
||||||
size,
|
|
||||||
total: size,
|
|
||||||
},
|
|
||||||
data: [],
|
|
||||||
prop: {
|
|
||||||
title: "missionTitle",
|
|
||||||
desc: (value) => {
|
|
||||||
if (value.data[0])
|
|
||||||
return `您收到${value.data[0][0]["companyName"]}的任务`;
|
|
||||||
},
|
|
||||||
time: "createTime",
|
|
||||||
isRead: "status",
|
|
||||||
listDesc: "companyName",
|
|
||||||
},
|
|
||||||
navigateTo(item, dispatch) {
|
|
||||||
dispatch("readNew", {
|
|
||||||
key: "1",
|
|
||||||
id: item.id,
|
|
||||||
});
|
|
||||||
uni.navigateTo({
|
|
||||||
url: `/pages/projectInfo/projectInfo?type=1&missionNo=${encodeURIComponent(
|
|
||||||
item.missionNo
|
|
||||||
)}&id=${encodeURIComponent(item.id)}`,
|
|
||||||
});
|
|
||||||
},
|
|
||||||
},
|
|
||||||
// "3": {
|
|
||||||
// id: "1",
|
|
||||||
// title: "技能推送",
|
|
||||||
// icon: "../../../static/img/jineng.svg",
|
|
||||||
// page: {
|
|
||||||
// current: 0,
|
|
||||||
// size,
|
|
||||||
// total: size
|
|
||||||
// },
|
|
||||||
// data: [],
|
|
||||||
// prop: {
|
|
||||||
// title: 'missionTitle',
|
|
||||||
// desc: (value) => {
|
|
||||||
// if (value.data[0])
|
|
||||||
// return `您收到${value.data[0][0]['companyName']}的任务`
|
|
||||||
// },
|
|
||||||
// time: 'createTime',
|
|
||||||
// isRead: 'status',
|
|
||||||
// listDesc: 'companyName',
|
|
||||||
// },
|
|
||||||
// navigateTo(item, dispatch) {
|
|
||||||
// dispatch('readNew', {
|
|
||||||
// key: '1',
|
|
||||||
// id: item.id
|
|
||||||
// })
|
|
||||||
// uni.navigateTo({
|
|
||||||
// url: `/pages/projectInfo/projectInfo?type=1&missionNo=${encodeURIComponent(item.missionNo)}&id=${encodeURIComponent(item.id)}`
|
|
||||||
// })
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
4: {
|
|
||||||
id: "1",
|
|
||||||
title: "个人户申请",
|
|
||||||
icon: "../../../static/img/own_recruit.svg",
|
|
||||||
page: {
|
|
||||||
current: 0,
|
|
||||||
size,
|
|
||||||
total: size,
|
|
||||||
},
|
|
||||||
data: [],
|
|
||||||
prop: {
|
|
||||||
title: "missionTitle",
|
|
||||||
desc: (value) => {
|
|
||||||
if (value.data[0])
|
|
||||||
return `您收到${value.data[0][0]["companyName"]}的任务`;
|
|
||||||
},
|
|
||||||
time: "createTime",
|
|
||||||
isRead: "status",
|
|
||||||
listDesc: "companyName",
|
|
||||||
},
|
|
||||||
navigateTo(item, dispatch) {
|
|
||||||
dispatch("readNew", {
|
|
||||||
key: "1",
|
|
||||||
id: item.id,
|
|
||||||
});
|
|
||||||
uni.navigateTo({
|
|
||||||
url: `/pages/projectInfo/projectInfo?type=1&missionNo=${encodeURIComponent(
|
|
||||||
item.missionNo
|
|
||||||
)}&id=${encodeURIComponent(item.id)}`,
|
|
||||||
});
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
unread: {
|
|
||||||
0: 0,
|
|
||||||
1: 0,
|
|
||||||
},
|
|
||||||
allUnread: 0,
|
|
||||||
dic: {},
|
|
||||||
},
|
|
||||||
actions: {
|
|
||||||
newsInit({ dispatch }) {
|
|
||||||
const ps = [];
|
|
||||||
ps.push(dispatch("getUnreadNum"));
|
|
||||||
|
|
||||||
for (let key in handler) {
|
|
||||||
ps.push(dispatch("newsReload", key));
|
|
||||||
}
|
|
||||||
return Promise.all(ps);
|
|
||||||
},
|
|
||||||
newsReload({ dispatch, commit }, id) {
|
|
||||||
commit("CLEAR_NEWS_DATA", id);
|
|
||||||
return dispatch("newsGetNextPage", id);
|
|
||||||
},
|
|
||||||
getUnreadNum({ commit }) {
|
|
||||||
for (let key in handler) {
|
|
||||||
handler[key].count().then((result) => {
|
|
||||||
commit("SET_UNREADNUM", {
|
|
||||||
id: key,
|
|
||||||
count: result,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
newsGetNextPage({ state, commit }, id) {
|
|
||||||
const item = state.data[id];
|
|
||||||
const page = item.page;
|
|
||||||
const current = page.current + 1;
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
if (parseInt(page.total / page.size) + 1 < current) {
|
|
||||||
resolve();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
handler[id]
|
|
||||||
.getList(current, page.size)
|
|
||||||
.then((res) => {
|
|
||||||
const data = res.data.data;
|
|
||||||
commit("ADD_NEWS_DATA", {
|
|
||||||
id,
|
|
||||||
data: data.records,
|
|
||||||
current,
|
|
||||||
total: data.total,
|
|
||||||
});
|
|
||||||
resolve(res);
|
|
||||||
})
|
|
||||||
.catch(reject);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
removeNew({ commit }, { id, key, group, index }) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
commit("REMOVE_NEWS", {
|
|
||||||
id,
|
|
||||||
key,
|
|
||||||
group,
|
|
||||||
index,
|
|
||||||
});
|
|
||||||
handler[key].remove(id).then(resolve, reject);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
readNew({ commit }, { key, id }) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
commit("READ_NEWS", {
|
|
||||||
key,
|
|
||||||
id,
|
|
||||||
});
|
|
||||||
handler[key].read(id).then(resolve, reject);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
endRefreshNewsTimer() {
|
|
||||||
stopRefreshToken();
|
|
||||||
},
|
|
||||||
startRefreshNewsTimer({ state, commit, dispatch }) {
|
|
||||||
dispatch("newsInit").then(() => {
|
|
||||||
startRefreshToken(dispatch);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
},
|
|
||||||
mutations: {
|
|
||||||
SET_UNREADNUM: (state, { id, count }) => {
|
|
||||||
state.unread[id] = count;
|
|
||||||
state.allUnread = getCount(state.unread);
|
|
||||||
},
|
|
||||||
CLEAR_NEWS_DATA: (state, id) => {
|
|
||||||
state.data[id].page = {
|
|
||||||
current: 0,
|
|
||||||
size,
|
|
||||||
};
|
|
||||||
state.data[id].data = [];
|
|
||||||
},
|
|
||||||
ADD_NEWS_DATA: (state, { id, data, current, total }) => {
|
|
||||||
data.forEach((item) => {
|
|
||||||
state.dic[item.id] = item;
|
|
||||||
});
|
|
||||||
state.data[id].page.total = total;
|
|
||||||
state.data[id].page.current = current;
|
|
||||||
if (data.length > 0) {
|
|
||||||
state.data[id].data.push(data);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
REMOVE_NEWS: (state, { id, key, group, index }) => {
|
|
||||||
const readProp = state.data[key].prop["isRead"];
|
|
||||||
if (state.dic[id][readProp] === 0) {
|
|
||||||
state.unread[key]--;
|
|
||||||
state.allUnread--;
|
|
||||||
}
|
|
||||||
state.dic[id] = undefined;
|
|
||||||
const data = state.data[key].data;
|
|
||||||
data[group].splice(index, 1);
|
|
||||||
if (data[group].length === 0) {
|
|
||||||
data.splice(group, 1);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
READ_NEWS: (state, { key, id }) => {
|
|
||||||
const readProp = state.data[key].prop["isRead"];
|
|
||||||
if (state.dic[id][readProp] === 0) {
|
|
||||||
state.dic[id][readProp] = 1;
|
|
||||||
state.unread[key]--;
|
|
||||||
state.allUnread--;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
getters: {},
|
|
||||||
};
|
|
||||||
export default news;
|
|
||||||
@@ -3,8 +3,8 @@ module.exports = {
|
|||||||
port: 1887,
|
port: 1887,
|
||||||
proxy: {
|
proxy: {
|
||||||
'/api': {
|
'/api': {
|
||||||
// target: 'http://39.98.184.58:8000', // 公网
|
target: 'http://39.98.184.58:8000', // 公网
|
||||||
target: 'http://192.168.3.173:8000', // 本地服务接口地址
|
// target: 'http://192.168.3.173:8000', // 本地服务接口地址
|
||||||
ws: true,
|
ws: true,
|
||||||
pathRewrite: {
|
pathRewrite: {
|
||||||
'^/api': '/'
|
'^/api': '/'
|
||||||
|
|||||||
Reference in New Issue
Block a user