Browse Source

feat: 使用uview完成api请求

refact
xuesinan 4 years ago
parent
commit
1b3efd8026
  1. 12
      App.vue
  2. 1
      CHANGELOG.md
  3. 91
      apis/tall.js
  4. 21
      common/js/config.js
  5. 60
      common/js/request.js
  6. 59
      common/js/util.js
  7. 20
      main.js
  8. 6
      package.json
  9. 3
      store/index.js
  10. 211
      store/socket/actions.js
  11. 10
      store/socket/index.js
  12. 26
      store/socket/mutations.js
  13. 7
      store/socket/state.js
  14. 17
      store/user/actions.js
  15. 9
      store/user/mutations.js
  16. 96
      utils/request.js
  17. 3
      utils/tall.js

12
App.vue

@ -1,7 +1,8 @@
<script>
import { ref, computed } from 'vue';
import store from '@/store/index.js';
import util from '@/common/js/util.js'
import ui from '@/utils/ui.js';
import storage from '@/utils/storage.js';
export default {
setup() {
@ -24,14 +25,15 @@ export default {
// token userId
if (!options.query || !options.query.u) {
// u (userId)
uni.showToast({title: '缺少用户信息参数', icon: 'none'});
ui.showToast('缺少用户信息参数');
} else {
const data = await store.dispatch('user/getToken', options.query.u);
// const data = await this.getToken(options.query.u);
// this.noPhone(data.phone);
const data = await store.dispatch('user/getTokenByUserId', options.query.u);
this.noPhone(data.phone);
}
}
/* #endif */
store.dispatch('socket/initSocket');
},
methods: {

1
CHANGELOG.md

@ -4,6 +4,7 @@
范围|描述|commitId
--|--|--
- | first commit | [8dc26de](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/8dc26de)
- | vue3 | [12ed2ad](https://101.201.226.163:50022/TALL/TALL-MUI-4/commits/12ed2ad)
范围|描述|commitId

91
apis/tall.js

@ -3,79 +3,44 @@ const apiUrl = 'https://test.tall.wiki/gateway'; // 测试
const tall = `${apiUrl}/tall3/v3.0`;
// 登录
export const login = {
async index(params) {
try {
const data = await uni.$u.http.post(`${tall}/users/signin`, params);
return data;
} catch (error) {
throw new Error(error);
}
},
};
// export const login = {
// async index(params) {
// try {
// const data = await uni.$u.http.post(`${tall}/users/signin`, params);
// return data;
// } catch (error) {
// throw new Error(error);
// }
// },
// };
export const getToken = userId => uni.config.globalProperties.$u.get(`${tall}/users/userId`, { userId });
const install = (Vue, vm) => {
vm.$u.api = { ...vm.$u.api } || {};
export function setupTall(app) {
uni.$u.api = { ...uni.$u.api } || {};
// 登录
vm.$u.api.signin = params => login.index(params);
// app.config.globalProperties.$u.api.signin = params => login.index(params);
// 获取图片验证码
vm.$u.api.getImageCode = () => vm.$u.get(`${tall}/users/code`);
// app.config.globalProperties.$u.api.getImageCode = () => app.config.globalProperties.$u.get(`${tall}/users/code`);
// 获取短信验证码
vm.$u.api.getSmsCode = params => vm.$u.get(`${tall}/users/smscode`, params);
// app.config.globalProperties.$u.api.getSmsCode = params => app.config.globalProperties.$u.get(`${tall}/users/smscode`, params);
// 根据userId获取token
vm.$u.api.getToken = userId => vm.$u.get(`${tall}/users/userId`, { userId });
uni.$u.api.getToken = userId => uni.$u.get(`${tall}/users/userId`, { userId });
// 绑定手机号
vm.$u.api.phoneBind = (phone, smsCode) => vm.$u.http.post(`${tall}/users/binding`, { phone, smsCode });
// app.config.globalProperties.$u.api.phoneBind = (phone, smsCode) => app.config.globalProperties.$u.http.post(`${tall}/users/binding`, { phone, smsCode });
// 是否合并账号
vm.$u.api.phoneMerge = (phone, isMerge) => vm.$u.http.post(`${tall}/users/merge`, { phone, isMerge });
// app.config.globalProperties.$u.api.phoneMerge = (phone, isMerge) => app.config.globalProperties.$u.http.post(`${tall}/users/merge`, { phone, isMerge });
// 修改用户信息
vm.$u.api.updateUserInfo = params => vm.$u.http.post(`${tall}/users/userInfo`, params);
// app.config.globalProperties.$u.api.updateUserInfo = params => app.config.globalProperties.$u.http.post(`${tall}/users/userInfo`, params);
// 获取项目列表
vm.$u.api.getProjects = (startTime, endTime) => vm.$u.post(`${tall}/project/query`, { startTime, endTime });
// app.config.globalProperties.$u.api.getProjects = (startTime, endTime) => app.config.globalProperties.$u.post(`${tall}/project/query`, { startTime, endTime });
// 查询日历是否有小红点
vm.$u.api.findRedPoint = (startTime, endTime) => vm.$u.post(`${tall}/project/day`, { startTime, endTime });
// app.config.globalProperties.$u.api.findRedPoint = (startTime, endTime) => app.config.globalProperties.$u.post(`${tall}/project/day`, { startTime, endTime });
// 设置项目顺序
vm.$u.api.setProjectSort = params => vm.$u.post(`${tall}/project/setProjectSort`, params);
// app.config.globalProperties.$u.api.setProjectSort = params => app.config.globalProperties.$u.post(`${tall}/project/setProjectSort`, params);
// 设置项目父子结构
vm.$u.api.setProjectRelation = params => vm.$u.post(`${tall}/project/setProjectRelation`, params);
// app.config.globalProperties.$u.api.setProjectRelation = params => app.config.globalProperties.$u.post(`${tall}/project/setProjectRelation`, params);
// 删除某个项目
vm.$u.api.delProject = projectId => vm.$u.post(`${tall}/project/deleteProject`, { projectId });
};
export default {
install
};
// export function setupTall(app) {
// app.config.globalProperties.$u.api = { ...app.config.globalProperties.$u.api } || {};
// // 登录
// // app.config.globalProperties.$u.api.signin = params => login.index(params);
// // 获取图片验证码
// // app.config.globalProperties.$u.api.getImageCode = () => app.config.globalProperties.$u.get(`${tall}/users/code`);
// // 获取短信验证码
// // app.config.globalProperties.$u.api.getSmsCode = params => app.config.globalProperties.$u.get(`${tall}/users/smscode`, params);
// // 根据userId获取token
// const getToken = userId => app.config.globalProperties.$u.get(`${tall}/users/userId`, { userId });
// // 绑定手机号
// // app.config.globalProperties.$u.api.phoneBind = (phone, smsCode) => app.config.globalProperties.$u.http.post(`${tall}/users/binding`, { phone, smsCode });
// // 是否合并账号
// // app.config.globalProperties.$u.api.phoneMerge = (phone, isMerge) => app.config.globalProperties.$u.http.post(`${tall}/users/merge`, { phone, isMerge });
// // 修改用户信息
// // app.config.globalProperties.$u.api.updateUserInfo = params => app.config.globalProperties.$u.http.post(`${tall}/users/userInfo`, params);
// // 获取项目列表
// // app.config.globalProperties.$u.api.getProjects = (startTime, endTime) => app.config.globalProperties.$u.post(`${tall}/project/query`, { startTime, endTime });
// // 查询日历是否有小红点
// // app.config.globalProperties.$u.api.findRedPoint = (startTime, endTime) => app.config.globalProperties.$u.post(`${tall}/project/day`, { startTime, endTime });
// // 设置项目顺序
// // app.config.globalProperties.$u.api.setProjectSort = params => app.config.globalProperties.$u.post(`${tall}/project/setProjectSort`, params);
// // 设置项目父子结构
// // app.config.globalProperties.$u.api.setProjectRelation = params => app.config.globalProperties.$u.post(`${tall}/project/setProjectRelation`, params);
// // 删除某个项目
// // app.config.globalProperties.$u.api.delProject = projectId => app.config.globalProperties.$u.post(`${tall}/project/deleteProject`, { projectId });
// }
// app.config.globalProperties.$u.api.delProject = projectId => app.config.globalProperties.$u.post(`${tall}/project/deleteProject`, { projectId });
}

21
common/js/config.js

@ -0,0 +1,21 @@
var config = {
baseUrl: 'https://test.tall.wiki',
apiUrl: 'https://test.tall.wiki/gateway',
msgUrl: 'wss://test.tall.wiki/websocket/message/v4.0/ws';
projectPath: 'https://test.tall.wiki/tall-project',
// baseUrl: 'https://www.tall.wiki',
// apiUrl: 'https://www.tall.wiki/gateway',
// msgUrl: 'wss://www.tall.wiki/websocket/message/v4.0/ws';
// projectPath: 'https://www.tall.wiki/tall-project',
version: 'v4.0.0'
VUE_APP_BASE_URL=
VUE_APP_API_URL=
VUE_APP_MSG_URL=
VUE_APP_PROJECT_PATH=
};
export default config;

60
common/js/request.js

@ -1,60 +0,0 @@
const install = (Vue, vm) => {
Vue.prototype.$u.http.setConfig({
baseUrl: '',
showLoading: true, // 是否显示请求中的loading
loadingText: '玩命加载中...',
loadingTime: 800,
loadingMask: true, // 展示loading的时候,是否给一个透明的蒙层,防止触摸穿透
// 配置请求头信息
header: {
'content-type': 'application/json;charset=UTF-8'
},
});
// 请求拦截部分,如配置,每次请求前都会执行
Vue.prototype.$u.http.interceptor.request = config => {
const token = vm.$store.state.user.token || uni.$t.storage.getStorageSync(uni.$t.app.tokenKey);
if (token) {
config.header.Authorization = `Bearer ${token}`;
}
return config;
};
// 响应拦截,如配置,每次请求结束都会执行本方法
Vue.prototype.$u.http.interceptor.response = res => {
if (res.code === 200) {
// res为服务端返回值,可能有code,result等字段
// 这里对res.result进行返回,将会在this.$u.post(url).then(res => {})的then回调中的res的到
// 如果配置了originalData为true,请留意这里的返回值
return res.data;
} else if (res.code === 401) {
// 假设201为token失效,这里跳转登录
vm.$u.toast('验证失败,请重新登录');
setTimeout(() => {
// 此为uView的方法,详见路由相关文档
vm.$u.route('/pages/user/login');
}, 1500);
return false;
} else {
// 如果返回false,则会调用Promise的reject回调,
// 并将进入this.$u.post(url).then().catch(res=>{})的catch回调中,res为服务端的返回值
return false;
}
};
Vue.prototype.$u.post = (url, param = {}, header = {}) => {
return Vue.prototype.$u.http.request({
url,
method: 'POST',
header,
data: {
param
},
});
};
};
export default {
install
};

59
common/js/util.js

@ -1,59 +0,0 @@
export default {
/**
* 显示toast
* @param {string} title 提示内容
* @param {number} duration 显示时间 默认2000
*/
showToast(title, duration = 2000) {
return uni.showToast({
title,
icon: 'none',
duration,
mask: true,
});
},
// 隐藏toast
hideToast() {
return uni.hideToast();
},
/**
* 显示加载雪花
* @param {string} title
*/
showLoading(title = '玩命加载中...') {
return uni.showLoading({
title,
mask: true,
});
},
// 隐藏loading
hideLoading() {
return uni.hideLoading();
},
/**
* 显示modal弹出框
* @param {string} title 标题
* @param {string} content 内容
* @param {boolean} showCancel 是否显示取消按钮 默认true
*/
showModal(title, content, showCancel = true) {
return new Promise(function(resolve, reject) {
uni.showModal({
title,
content,
showCancel,
success: ({
confirm,
cancel
}) => {
confirm && resolve();
cancel && reject();
},
});
});
},
};

20
main.js

@ -2,11 +2,11 @@ import { createSSRApp } from 'vue';
import App from './App';
import uView from './uni_modules/vk-uview-ui'; // 引入 uView UI
import store from "./store";
import tall from '@/apis/tall.js';
import request from '@/utils/request.js';
// import Tall from '@/utils/tall.js';
// import { setupHttp } from '@/utils/request.js'
// import { setupTall } from '@/apis/tall.js'
// import tall from '@/apis/tall.js';
// import request from '@/utils/request.js';
// import uTall from '@/utils/tall.js';
import { setupHttp } from '@/utils/request.js'
import { setupTall } from '@/apis/tall.js'
export function createApp() {
const app = createSSRApp(App)
@ -15,12 +15,12 @@ export function createApp() {
app.use(store);
// app.use(request);
// app.use(tall);
// app.use(Tall);
// setupHttp(app);
// setupTall(app);
// app.use(uTall);
setupHttp(app);
setupTall(app);
app.config.globalProperties.$tall = tall;
app.config.globalProperties.$request = request;
// app.config.globalProperties.$tall = tall;
// app.config.globalProperties.$request = request;
return {
app

6
package.json

@ -3,7 +3,9 @@
"version": "1.0.0",
"description": "",
"main": "main.js",
"dependencies": {},
"dependencies": {
"axios": "^0.24.0"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^5.8.1",
"@typescript-eslint/parser": "^5.8.1",
@ -51,4 +53,4 @@
},
"author": "",
"license": "ISC"
}
}

3
store/index.js

@ -1,5 +1,6 @@
import { createStore } from 'vuex';
import user from './user/index.js';
import socket from './socket/index.js';
// 不属于具体模块的 应用级的 store内容
const state = {
@ -40,5 +41,5 @@ export default createStore({
state,
getters,
mutations,
modules: {user}
modules: {user, socket}
});

211
store/socket/actions.js

@ -0,0 +1,211 @@
const WS_BASE_URL = 'wss://test.tall.wiki/websocket/message/v4.0/ws'; // 测试
// const WS_BASE_URL = 'wss://www.tall.wiki/websocket/message/v4.0/ws'; // 生产
let prevTime = 0;
let socketMsgQueue = []; // socket消息队列
let sendHeartTimer = null;
const actions = {
// 初始化socket
initSocket({ commit, dispatch, state, rootState }) {
if (state.lockSocket) return;
const {
token
} = rootState.user;
if (!token) return;
commit('setLockSocket', true);
commit('setSocket', uni.connectSocket({
url: WS_BASE_URL,
complete: () => {}
}));
dispatch('onSocketOpen');
dispatch('onSocketMessage');
dispatch('onSocketClose');
state.socket.onError(errMsg => console.error(errMsg));
commit('setLockSocket', false);
},
// 监听ws打开
onSocketOpen({
dispatch,
commit,
state
}) {
// eslint-disable-next-line no-unused-vars
state.socket.onOpen(res => {
// console.log('ws open: ', res);
commit('setConnected', true);
prevTime = Date.now();
// this.auth();
dispatch('auth');
for (let i = 0; i < socketMsgQueue.length; i++) {
dispatch('sendSocketMessage', socketMsgQueue[i]);
}
socketMsgQueue = [];
});
},
// 监听收到的ws消息
onSocketMessage({
dispatch,
state
}) {
state.socket.onMessage(res => {
// console.log('收到消息:', res);
prevTime = Date.now();
if (!res || !res.data || !JSON.parse(res.data)) return;
const resData = JSON.parse(res.data);
const {
messageSet,
ackId
} = resData;
// 处理消息体对象
messageSet.forEach(item => dispatch('handleMessagesData', item));
ackId && dispatch('sendSocketMessage', {
type: 'Ack',
data: {
ackId
}
});
});
},
/**
* 处理收到的消息内容
* @param {object} item 单个消息体对象
*/
handleMessagesData({
dispatch,
commit
}, item) {
const data = JSON.parse(item.data);
switch (data.type) {
case 'Sync': // 开始某个节点
commit('messages/messagesAdd', {
message: data,
type: 'syncMessages'
}, {
root: true
});
break;
case 'taskStatus': // 任务状态修改相关消息
commit('task/setTaskStatus', data.data, {
root: true
});
break;
// case 'Chrome': // !收到开始游戏的消息
// console.log('handleMessagesData', data);
// // @ts-ignore
// util.openGameApp({
// type: data.data.type,
// projectId: data.data.projectId,
// id: data.data.recordId,
// token: rootState.user.token,
// });
// break;
// case 'Deliver': // 交付物相关消息
// commit('messages/messagesAdd', { type: 'checkMessages', message: data }, { root: true });
// break;
case 'ChannelStatus':
dispatch('handleAuthMessage', data);
break;
// case 'switchoverProject': // 康复相关消息
// dispatch('home/getProjectById', data.data.projectId, { root: true });
// break;
// case 'startDrill': // 康复开始训练相关消息
// console.log('setStartDrillInfo', data.data);
// commit('home/setStartDrillMessages', data.data, { root: true });
// break;
default:
break;
}
},
// 发送消息
sendSocketMessage({
state
}, data) {
if (state.connected) {
const msg = JSON.stringify({
toDomain: 'Server',
data: JSON.stringify(data)
});
state.socket.send({
data: msg
});
} else {
socketMsgQueue.push(data);
}
},
// 监听关闭事件
onSocketClose({
dispatch,
commit,
state
}) {
// console.log('onSocketClose');
state.socket.onClose(() => {
commit('setConnected', false);
if (sendHeartTimer) clearInterval(sendHeartTimer);
setTimeout(() => {
dispatch('initSocket');
}, 300);
});
},
// websocket发送channelId进行认证
auth({
dispatch,
rootState
}) {
const {
token
} = rootState.user;
if (!token) return;
const data = {
type: 'Auth',
data: {
token
}
};
dispatch('sendSocketMessage', data);
},
// 心跳检测
sendHeart({
dispatch,
state
}) {
if (sendHeartTimer) clearInterval(sendHeartTimer);
sendHeartTimer = setInterval(() => {
if (Date.now() - prevTime >= 15000) {
dispatch('sendSocketMessage', {
type: 'Ping'
});
if (Date.now() - prevTime >= 20000) {
state.socket.close();
}
}
}, 5000);
},
/**
* 处理auth认证返回的ChannelStatus消息
* @param {object} data 消息内容对象
*/
handleAuthMessage({
commit,
dispatch
}, data) {
if (data.data.authed) {
dispatch('sendHeart');
} else {
uni.$u.toast('消息系统认证失败, 请退出重新登录');
uni.$t.removeStorageSync('anyringToken');
commit('setSocket', null);
}
},
};
export default actions;

10
store/socket/index.js

@ -0,0 +1,10 @@
import state from './state';
import mutations from './mutations';
import actions from './actions';
export default {
namespaced: true,
state,
mutations,
actions
};

26
store/socket/mutations.js

@ -0,0 +1,26 @@
const mutations = {
// 设置socket实例
setSocket(state, socket) {
state.socket = socket;
},
/**
* 设置socket连接状态
* @param {Object} state
* @param {boolean} connected 是否连接 true -> 连接
*/
setConnected(state, connected) {
state.connected = connected;
},
/**
* 设置连接锁 正在连接中 锁上 避免多个连接同时发出
* @param {Object} state
* @param {boolean} lockSocket 是否正在连接的过程中
*/
setLockSocket(state, lockSocket) {
state.lockSocket = lockSocket;
},
};
export default mutations;

7
store/socket/state.js

@ -0,0 +1,7 @@
const state = {
socket: null, // websocket实例
connected: false, // 是否处于连接状态
lockSocket: false, // 是否正在连接状态
};
export default state;

17
store/user/actions.js

@ -1,5 +1,5 @@
import util from '@/common/js/util.js';
import { getToken } from '@/apis/tall.js';
// import { getToken } from '@/apis/tall.js';
import ui from '@/utils/ui.js';
const actions = {
/**
@ -7,14 +7,15 @@ const actions = {
* @param {any} commit
* @param {string} userId 用户id
*/
async getToken({ commit }, userId) {
async getTokenByUserId({ commit }, userId) {
try {
const data = await getToken(userId);
commit('setToken', data.token);
commit('setUser', data);
return data;
const res = await uni.$u.api.getToken(userId);
commit('setToken', res.token);
commit('setUser', res);
return res;
} catch (error) {
util.showToast(error.msg || '获取个人信息失败');
console.log('222', error);
ui.showToast(error.msg || '获取个人信息失败');
}
},
};

9
store/user/mutations.js

@ -1,3 +1,5 @@
import storage from '@/utils/storage.js';
const mutations = {
/**
* 设置存储token
@ -6,7 +8,10 @@ const mutations = {
*/
setToken(state, token) {
state.token = token || '';
uni.$t.storage.setStorageSync(uni.$t.app.tokenKey, token || '');
storage.setStorageSync('anyringToken', token || '');
// uni.$t.storage.setStorageSync('anyringToken', token || '');
// sessionStorage.setItem('token', user.token);
// sessionStorage.setItem('user', JSON.stringify(user));
},
/**
@ -17,7 +22,7 @@ const mutations = {
setUser(state, user) {
if (!user) return;
state.user = { ...user };
uni.$t.storage.setStorageSync('user', JSON.stringify(user));
storage.setStorageSync('user', JSON.stringify(user));
},
};

96
utils/request.js

@ -1,5 +1,9 @@
const install = (Vue, vm) => {
Vue.prototype.$u.http.setConfig({
import store from '@/store/index.js';
import storage from '@/utils/storage.js';
import ui from '@/utils/ui.js';
export function setupHttp(app) {
app.config.globalProperties.$u.http.setConfig({
baseUrl: '',
showLoading: true, // 是否显示请求中的loading
loadingText: '玩命加载中...',
@ -10,19 +14,19 @@ const install = (Vue, vm) => {
'content-type': 'application/json;charset=UTF-8'
},
});
// 请求拦截部分,如配置,每次请求前都会执行
Vue.prototype.$u.http.interceptor.request = config => {
const token = vm.$store.state.user.token || uni.$t.storage.getStorageSync(uni.$t.app.tokenKey);
app.config.globalProperties.$u.http.interceptor.request = config => {
const token = store.state.user.token || storage.getStorageSync('anyringToken');
if (token) {
config.header.Authorization = `Bearer ${token}`;
}
return config;
};
// 响应拦截,如配置,每次请求结束都会执行本方法
Vue.prototype.$u.http.interceptor.response = res => {
app.config.globalProperties.$u.http.interceptor.response = res => {
if (res.code === 200) {
// res为服务端返回值,可能有code,result等字段
// 这里对res.result进行返回,将会在this.$u.post(url).then(res => {})的then回调中的res的到
@ -30,10 +34,12 @@ const install = (Vue, vm) => {
return res.data;
} else if (res.code === 401) {
// 假设201为token失效,这里跳转登录
vm.$u.toast('验证失败,请重新登录');
ui.showToast('验证失败,请重新登录');
setTimeout(() => {
// 此为uView的方法,详见路由相关文档
vm.$u.route('/pages/user/login');
uni.navigateTo({
url: '/pages/user/login'
})
}, 1500);
return false;
} else {
@ -42,9 +48,9 @@ const install = (Vue, vm) => {
return false;
}
};
Vue.prototype.$u.post = (url, param = {}, header = {}) => {
return Vue.prototype.$u.http.request({
app.config.globalProperties.$u.post = (url, param = {}, header = {}) => {
return app.config.globalProperties.$u.http.request({
url,
method: 'POST',
header,
@ -53,66 +59,4 @@ const install = (Vue, vm) => {
},
});
};
};
export default {
install
};
// export function setupHttp(app) {
// app.config.globalProperties.$u.http.setConfig({
// baseUrl: '',
// showLoading: true, // 是否显示请求中的loading
// loadingText: '玩命加载中...',
// loadingTime: 800,
// loadingMask: true, // 展示loading的时候,是否给一个透明的蒙层,防止触摸穿透
// // 配置请求头信息
// header: {
// 'content-type': 'application/json;charset=UTF-8'
// },
// });
// // 请求拦截部分,如配置,每次请求前都会执行
// app.config.globalProperties.$u.http.interceptor.request = config => {
// const token = vm.$store.state.user.token || uni.$t.storage.getStorageSync(uni.$t.app.tokenKey);
// if (token) {
// config.header.Authorization = `Bearer ${token}`;
// }
// return config;
// };
// // 响应拦截,如配置,每次请求结束都会执行本方法
// app.config.globalProperties.$u.http.interceptor.response = res => {
// if (res.code === 200) {
// // res为服务端返回值,可能有code,result等字段
// // 这里对res.result进行返回,将会在this.$u.post(url).then(res => {})的then回调中的res的到
// // 如果配置了originalData为true,请留意这里的返回值
// return res.data;
// } else if (res.code === 401) {
// // 假设201为token失效,这里跳转登录
// vm.$u.toast('验证失败,请重新登录');
// setTimeout(() => {
// // 此为uView的方法,详见路由相关文档
// vm.$u.route('/pages/user/login');
// }, 1500);
// return false;
// } else {
// // 如果返回false,则会调用Promise的reject回调,
// // 并将进入this.$u.post(url).then().catch(res=>{})的catch回调中,res为服务端的返回值
// return false;
// }
// };
// app.config.globalProperties.$u.post = (url, param = {}, header = {}) => {
// return app.config.globalProperties.$u.http.request({
// url,
// method: 'POST',
// header,
// data: {
// param
// },
// });
// };
// }
}

3
utils/tall.js

@ -26,7 +26,8 @@ const $t = {
uni.$t = $t;
const install = Vue => {
Vue.prototype.$t = $t;
// Vue.prototype.$t = $t;
Vue.config.globalProperties.$t = $t;
};
export default {

Loading…
Cancel
Save