diff --git a/components/callPhone/callPhone.vue b/components/callPhone/callPhone.vue new file mode 100644 index 0000000..81e6c62 --- /dev/null +++ b/components/callPhone/callPhone.vue @@ -0,0 +1,60 @@ + + + + + \ No newline at end of file diff --git a/config/api.js b/config/api.js index 3185068..736c70b 100644 --- a/config/api.js +++ b/config/api.js @@ -66,6 +66,14 @@ export const schoolCommentPage = (params) => http.get('business/school-comment/p export const updatePassword = (data) => http.put('system/user/profile/update-password', data) // 获得考场分页 export const simulationPage = (params) => http.get('business/booking/simulation-record/page', {params}) +// 获得考场列分页 +export const businessSitePage = (params) => http.get('business/site/page', {params}) +// 教练绑定教练车 +export const coachBinding = (data) => http.post('business/coach/binding', data) +// 取消绑定教练车 +export const coachUnbinding = (data) => http.put('business/coach/unbinding', data) + + diff --git a/config/request.js b/config/request.js index b9b54bc..2f189ae 100644 --- a/config/request.js +++ b/config/request.js @@ -1,9 +1,6 @@ import { H5_API, WX_API,httpPrefix } from './site.config.js' - -import { checkToken } from './utils' - const ContentType = ['application/json;charset=utf-8', 'application/x-www-form-urlencoded','multipart/form-data', 'application/x-www-form-urlencoded; charset=UTF-8']; @@ -24,7 +21,6 @@ module.exports = (vm) => { // 请求拦截 uni.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作 - console.log(config) let contentTypeIndex = config.header.contentType if(contentTypeIndex) { // alert(contentTypeIndex) @@ -42,53 +38,23 @@ module.exports = (vm) => { if(noToken&&config.header.Authorization) { delete config.header.Authorization } - - // get请求映射params参数 - // console.log(config.method) - // if (config.method === 'GET' && config.params) { - // // config.params = qs.stringify(config.params, { allowDots: true }) - // let url = config.url + '?'; - // for (const propName of Object.keys(config.params)) { - // const value = config.params[propName]; - // const part = encodeURIComponent(propName) + '=' - // if (value !== null && typeof(value) !== "undefined") { - - // if (typeof value === 'object') { - // for (const key of Object.keys(value)) { - // let params = propName + '[' + key + ']'; - // const subPart = params + '=' - // console.log(qs.stringify(value[key])) - // url += subPart + decodeURIComponent(value[key]) + "&"; - - // } - - // } else { - // url += part + encodeURI(value) + "&"; - // } - // } - // } - // url = url.slice(0, -1); - // // console.log(url) - // config.params = {}; - // config.url = url; - // } return config }, config => { // 可使用async await 做异步操作 return Promise.reject(config) }) // 响应拦截 - uni.$u.http.interceptors.response.use((response) => { /* 对响应成功做点什么 可使用async await 做异步操作*/ + uni.$u.http.interceptors.response.use(async (response) => { /* 对响应成功做点什么 可使用async await 做异步操作*/ const data = response.data - // console.log('请求结果') - // console.log(data) - if(data.code==406) { - // vm.$store.dispatch('refreshToken') - uni.$u.toast('登录过期,请重新登录') - setTimeout(()=>{ - vm.$store.commit('goLogin') - },1500) - return false + if(data.code==406&&response.config.url!='system/auth/refresh-token') { + await vm.$store.dispatch('refreshToken') + let obj = response.config + let method = obj.method.toLowerCase() + if(method=='get') { + return uni.$u.http[method](obj.url, {params: obj.params}) + }else{ + return uni.$u.http[method](obj.url, obj.data ) + } } if(data.code==401) { vm.$store.commit('goLogin') @@ -110,11 +76,7 @@ module.exports = (vm) => { return new Promise(() => { }) } } - // 如果不需要token就把header里的token删除,并且不需要去刷新token - let noToken = response.config.custom?.noToken - if(!noToken) { - checkToken(vm) - } + return data === undefined ? {} : data }, (response) => { // 对响应错误做点什么 (statusCode !== 200) diff --git a/pages.json b/pages.json index a118bf9..7fce8b7 100644 --- a/pages.json +++ b/pages.json @@ -300,7 +300,7 @@ "style": { "navigationBarTitleText": "考场信息", "navigationStyle": "custom", - "enablePullDownRefresh": false, + "enablePullDownRefresh": true, "backgroundTextStyle": "dark" } }, @@ -314,6 +314,15 @@ } }, { + "path": "myCar/notBound/notBound", + "style": { + "navigationBarTitleText": "未绑定车辆", + "navigationStyle": "custom", + "enablePullDownRefresh": true, + "backgroundTextStyle": "dark" + } + }, + { "path": "teachingData/teachingData", "style": { "navigationBarTitleText": "教学数据", diff --git a/pages/recordEntry/operate/mySchedule/plan/plan.vue b/pages/recordEntry/operate/mySchedule/plan/plan.vue index 39dfb8f..c3170a4 100644 --- a/pages/recordEntry/operate/mySchedule/plan/plan.vue +++ b/pages/recordEntry/operate/mySchedule/plan/plan.vue @@ -55,9 +55,7 @@ {{item.startTime}} - {{item.endTime}} {{item.personCount}}人 - + 训练科目 @@ -65,10 +63,16 @@ + - 教练车 - - + 选择教练车 + + + + + + + @@ -90,11 +94,12 @@ @cancel="show=false" > + \ No newline at end of file diff --git a/pages/userCenter/studentComment/studentComment.vue b/pages/userCenter/studentComment/studentComment.vue index e570631..3c89c08 100644 --- a/pages/userCenter/studentComment/studentComment.vue +++ b/pages/userCenter/studentComment/studentComment.vue @@ -3,10 +3,10 @@ - + - 全部(0) + 全部(缺字段) 匿名(1) 有图(2) 有视频(3) @@ -16,6 +16,11 @@ + + + + + @@ -26,17 +31,12 @@ data() { return { list: [], - tabData: [ - {id: 0, lab: '全部'}, - {id: 1, lab: '有图'}, - {id: 2, lab: '匿名'}, - {id: 3, lab: '有视频'}, - ], params: { pageNo: 1, pageSize: 20, - schoolId: '1590992062959960065', - condition: 0 + schoolId: '', + condition: 0, + studentName: '' }, // 0查全部 1有图 2最新 3有视频 total: 20, @@ -58,6 +58,10 @@ } }, methods: { + searchFn(val) { + this.params.studentName = val + this.initList() + }, changeTab(val) { this.params.condition = val this.initList() @@ -65,13 +69,16 @@ initList() { this.list = [] this.params.pageNo = 1 + this.status = 'loading' this.schoolCommentPageFn() }, async schoolCommentPageFn() { if(this.identity=='校长') { var {data: res} = await schoolCommentPage(this.params) }else { - var {data: res} = await coachCommentPage(this.params) + let obj = Object.assign({},this.params) + obj.coachId = this.vuex_coachId + var {data: res} = await coachCommentPage(obj) } this.params.pageNo ++ let arr = res.list.map(item=>{ @@ -89,13 +96,7 @@ } console.log(res) }, - searchFn(val) { - console.log(val) - this.params.name = val - this.list = [] - this.params.pageNo = 1 - this.schoolCommentPageFn() - } + } } diff --git a/store/modules/user.js b/store/modules/user.js index a2e5d53..b369c0b 100644 --- a/store/modules/user.js +++ b/store/modules/user.js @@ -14,7 +14,8 @@ const user = { coach: '实操教练', examSiteCoach: '考场模拟教练', bookingSimulationTeacher: '模拟器老师' - } + }, + apiOk: true }, mutations: { // 更新用户身份 @@ -42,6 +43,9 @@ const user = { return config }) }, + update_apiOk(state, payload) { + state.apiOk = payload + }, goLogin(state) { uni.clearStorageSync() state.vuex_loginInfo = {} @@ -62,16 +66,29 @@ const user = { }, // 刷新token async refreshToken({state, commit}) { - const http = uni.$u.http - let config = { header: {'content-type': 'application/x-www-form-urlencoded; charset=UTF-8'}, custom: { noToken: true } } - let refreshToken = state.vuex_loginInfo.refreshToken - const res = await http.post('system/auth/refresh-token?refreshToken='+ refreshToken, config) - console.log('刷新token结果') - console.log(res) - commit('update_vuex_loginInfo',res.data) - uni.$u.http.setConfig((config) => { - config.header.Authorization = 'Bearer ' + res.data.accessToken - return config + return new Promise(async(resolve, reject)=>{ + if(!state.apiOk) { + return state.refreshTokenFn + } + commit('update_apiOk',false) + state.refreshTokenFn = null + const http = uni.$u.http + let config = { header: {'content-type': 'application/x-www-form-urlencoded; charset=UTF-8'}, custom: { noToken: true } } + let refreshToken = state.vuex_loginInfo.refreshToken + state.refreshTokenFn = await http.post('system/auth/refresh-token?refreshToken='+ refreshToken, config) + if(state.refreshTokenFn.data||state.refreshTokenFn.data.accessToken) { + commit('update_apiOk',true) + commit('update_vuex_loginInfo',state.refreshTokenFn.data) + uni.$u.http.setConfig((config) => { + config.header.Authorization = 'Bearer ' + state.refreshTokenFn.data.accessToken + return config + }) + resolve(state.refreshTokenFn) + }else { + commit('update_apiOk',true) + commit('goLogin') + reject('刷新token失败了') + } }) }, getCity({commit}) {