Commit f171a843 authored by Morson's avatar Morson

提交更新页面

parent 5b812f62
......@@ -2,6 +2,7 @@
import "./../.env.js";
import { AnalysysAgent } from "@/utils/analysys_paas.js";
import util from "@/utils/util.js";
import login from "@/utils/login.js";
export default {
globalData: {
// 开发环境
......@@ -50,16 +51,19 @@ export default {
// 用户入驻信息
settledInfo: {},
},
onLaunch: function () {
onLaunch: async function () {
// 应用初始化(全局只触发一次)
AnalysysAgent.registerSuperProperty("platform", "self-support");
// 版本更新
this.updateApp();
},
onShow: function () {
onShow: async function () {
// 应用启动,或从后台进入前台显示
this.autoLogin();
// 等待自动授权登录接口调用结束
await this.autoLogin();
},
onHide: function () {
// 应用从前台进入后台
......@@ -91,48 +95,38 @@ export default {
},
/**
* 用户自动登录
* 微信用户自动登录
*/
autoLogin() {
async autoLogin() {
let that = this;
uni.login({
async success(res) {
if (res.code) {
let params = {
code: res.code,
wxAppNo: that.globalData.wxAppNo, // 自营平台小程序
};
let result = await that.$u.api.loginWechatAuth(params);
if (result) {
if (result.code == 200 && result.data) {
that.setUserData(result.data);
}
} else {
uni.showModal({
title: "请求失败",
content: result.message,
showCancel: false,
});
}
uni.hideLoading();
} else {
uni.showModal({
title: "登录失败",
content: "未获取到code",
});
}
},
fail() {},
});
await login.oauth().then(async res => {
if (res.code) {
let params = {
code: res.code,
wxAppNo: that.globalData.wxAppNo, // 自营平台小程序
};
let result = await that.$u.api.loginWechatAuth(params)
if (result && result.code == 200 && result.data) {
that.setUserData(result.data);
}
} else {
uni.showModal({
title: "登录失败",
content: "未获取到code",
});
}
})
},
setUserData(userInfo) {
if (userInfo && userInfo.token) {
// 如果已经登录则直接获取相关信息
util.setOpenid(userInfo.wxopenid);
this.$u.vuex('vuex_token', userInfo.token);
uni.setStorageSync("user-info", userInfo);
this.$u.vuex('vuex_user', userInfo);
this.$u.vuex('vuex_wx_uid', userInfo.wxopenid);
} else {
this.$u.vuex('vuex_token', '');
this.$u.vuex('vuex_user', null);
this.$u.vuex('vuex_wx_uid', '');
}
},
......
import util from '@/utils/util.js'
let prefix = "";
prefix = "http://apidoc.banshouhui.com:3000/mock/31";
let orderApiFun = function(vm){
let listByRecommendOrder = async (params = {}) => await vm.$u.get('/wxh-worker-rest/rest/recommend/order', params);
let listByRecommendOrder = async (params = {}) => await vm.$u.get(prefix + '/wxh-worker-rest/rest/recommend/order', params);
/**
* 工单数量查询接口
*/
let listOrderCount = async (params = {}) => await vm.$u.get('http://apidoc.banshouhui.com:3000/mock/31/wxh-worker-rest/rest/'+ vm.vuex_token+'/order/queryOrdersCount/V2', params);
let listOrderCount = async (params = {}) => await vm.$u.get(prefix + '/wxh-worker-rest/rest/'+ vm.vuex_token+'/order/queryOrdersCount/V2', params);
/**
* 工单列表接口
*/
let listOrder = async (params = {}) => await vm.$u.get('http://apidoc.banshouhui.com:3000/mock/31/wxh-worker-rest/rest/'+ vm.vuex_token+'/order/revision/list', params);
let listOrder = async (params = {}) => await vm.$u.get(prefix + '/wxh-worker-rest/rest/'+ vm.vuex_token+'/order/revision/list', params);
/**
* 获取师傅的预约日历
*/
let workerCalendar = async (params = {}) => await vm.$u.get('http://apidoc.banshouhui.com:3000/mock/31/wxh-worker-rest/rest/'+ vm.vuex_token+'/wokerOrder/appointment/calendar', params);
let workerCalendar = async (params = {}) => await vm.$u.get(prefix + '/wxh-worker-rest/rest/'+ vm.vuex_token+'/wokerOrder/appointment/calendar', params);
/**
* 师傅预约
*/
let workerAppointment = async (params = {}) => await vm.$u.post('http://apidoc.banshouhui.com:3000/mock/31/wxh-worker-rest/rest/order/traceAndAppointment/traceOrder/'+ vm.vuex_token+'/order/{orderId}', params,{'content-type': 'application/x-www-form-urlencoded'});
let workerAppointment = async (params = {}) => await vm.$u.post(prefix + '/wxh-worker-rest/rest/order/traceAndAppointment/traceOrder/'+ vm.vuex_token+'/order/{orderId}', params,{'content-type': 'application/x-www-form-urlencoded'});
// 联系顾客时间更新接口,暂时没有
/**
* 师傅签到接口
*/
let maintainWorkerCheckin = async (params = {}) => await vm.$u.post('http://apidoc.banshouhui.com:3000/mock/31/wxh-worker-rest/rest/'+ vm.vuex_token+'/order/{orderId}/maintainWorkerCheckin', params,{'content-type': 'application/x-www-form-urlencoded'});
let maintainWorkerCheckin = async (params = {}) => await vm.$u.post(prefix + '/wxh-worker-rest/rest/'+ vm.vuex_token+'/order/{orderId}/maintainWorkerCheckin', params,{'content-type': 'application/x-www-form-urlencoded'});
/* 过程反馈查询接口 */
let feedbackConfig = async (params = {}) => await vm.$u.get(`${prefix}/wxh-worker-rest/rst/order/v2/getFeedBack/` + vm.vuex_token, params)
const orderApi = {
listByRecommendOrder,
......@@ -35,7 +39,8 @@ let orderApiFun = function(vm){
listOrder,
workerCalendar,
workerAppointment,
maintainWorkerCheckin
maintainWorkerCheckin,
feedbackConfig
}
return orderApi
}
......
......@@ -40,7 +40,6 @@ const install = (Vue, vm) => {
// toLoginPage()
// return false
// }
// // const token = app && app.globalData && app.globalData.token || ''
if(config.url.indexOf('access-token=')>=0 && config.params['access-token']){
// 给默认参数增加access-token (Java端)
if(reg.test(config.url)){
......@@ -55,7 +54,6 @@ const install = (Vue, vm) => {
}
// config.header.token = vm.vuex_token || 'RTOKENe56f873b5823477fa2e15572f8fa7eb3a5fb6f7b';
config.header['x-requested-with'] = 'xmlhttprequest';
return config;
}
......@@ -94,13 +92,7 @@ const install = (Vue, vm) => {
message:msg
};
case 401:
//需要登录的接口,当token 过期时,清掉本地token,到登录页面
// if (!token) {
// uni.navigateTo({
// url: '/pages/login/index'
// });
// return;
// }
// token失效,跳转登录
toLoginPage()
case 403://没有权限访问
case 500:
......
{
"easycom": {
"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
"easycom": {
"autoscan": true,
"custom": {
"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
}
},
"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
{
......
......@@ -53,30 +53,40 @@ export default {
}
},
methods: {
// 授权用户信息
// 微信授权用户信息
getUserProfile() {
var that = this
uni.getUserProfile({
desc: '用于授权登录',
success: function (res) {
const userInfo = res.userInfo;
app.globalData.authUserInfo = userInfo
app.globalData.authUserInfo.nickName = app.globalData.authUserInfo.nickName || ''
app.globalData.authUserInfo.avatarUrl = app.globalData.authUserInfo.avatarUrl || ''
uni.showLoading({
title: '授权中..',
mask: true
});
that.authLogin()
},
fail: function (res) {
uni.showModal({
title: '授权失败',
content: '请允许获取用户信息的授权',
showCancel: false
});
}
})
if(uni.getUserProfile) {
// 每次触发 uni.getUserProfile 均会弹出授权窗口,用户授权后可成功获取用户信息
uni.getUserProfile({
desc: '用于授权登录',
success: function (res) {
const userInfo = res.userInfo;
app.globalData.authUserInfo = userInfo
app.globalData.authUserInfo.nickName = app.globalData.authUserInfo.nickName || ''
app.globalData.authUserInfo.avatarUrl = app.globalData.authUserInfo.avatarUrl || ''
uni.showLoading({
title: '授权中..',
mask: true
});
that.authLogin()
},
fail: function (res) {
uni.showModal({
title: '授权失败',
content: '请允许获取用户信息的授权',
showCancel: false
});
}
})
} else {
// 可能由于账号配置,或者其他原因导致无法调起微信用户授权
uni.showModal({
title: '授权失败',
content: '请确认你的用户授权是否可用',
showCancel: false
});
}
},
authLogin() {
var that = this
......
<!-- 过程反馈 -->
<template>
<view class="feedback-box bg">
<u-navbar back-icon-color="#FFFFFF" :background="background" title="过程反馈" title-color="#fff" :border-bottom="false"></u-navbar>
<u-navbar back-icon-color="#FFFFFF" :background="background" title="过程反馈" titleColor="#FFFFFF" :border-bottom="false"></u-navbar>
<view class="content u-p-l-30 u-p-r-30">
<view class="width-320 u-m-t-20">
<!-- <view class="width-320 u-m-t-20">
<u-subsection
:bold="false"
:current="curNow"
:list="list"
:current="curSub"
:list="subList"
active-color="white"
bg-color="white"
height="72"
......@@ -15,24 +15,49 @@
button-color="#2272FF"
border-radius="36"
></u-subsection>
</view> -->
<view class="top-tab">
<u-tabs
:list="tabList"
:current="curTab"
height="80"
gutter="89"
bar-height="4"
bar-width="44"
bg-color="none"
active-color="#FFFFFF"
inactive-color="#FFFFFF"
font-size="32"
@change="changeTab"
></u-tabs>
</view>
<!-- <view class="con-box">
</view> -->
<view class="con-box">
<view class="title">{{feedback.own.title}}</view>
<view class="u-flex u-flex-wrap">
<view :class="{'txt-item':true,'active':true}" v-for="(txt,index) in feedback.own.list" :key="index">
<text class="txt">{{txt}}</text>
<view
v-for="(item, index) in options[curTab]"
:key="index"
@click="changeOwn(index)"
:class="{'txt-item':true,'active': (curOwn == index)}">
<text class="txt">{{index}}</text>
</view>
</view>
</view>
<view class="con-box">
<u-gap height="30"></u-gap>
<view class="title">{{feedback.type.title}}</view>
<view class="u-flex u-flex-wrap">
<view :class="{'txt-item':true,'active':false}" v-for="(txt,index) in feedback.type.list" :key="index">
<view
v-for="(txt, index) in options[curTab][curOwn]"
:key="index"
@click="changeType(txt)"
:class="{'txt-item':true,'active': (curType == txt)}">
<text class="txt">{{txt}}</text>
</view>
</view>
<u-input class="textarea" height="156" type="textarea" placeholder="请补充详细说明,以便于记录您的接单信用分"></u-input>
<u-input v-show="showRemark" class="textarea" height="156" type="textarea" placeholder="请补充详细说明,以便于记录您的接单信用分"></u-input>
</view>
<appoint-time @dateChange="dateChange" @timeChange="timeChange" @weekChange="weekChange"></appoint-time>
</view>
......@@ -47,31 +72,105 @@
export default {
data() {
return {
orderId: null,
categoryId: null,
showRemark: false,
background: {
backgroundColor: 'none',
},
// questionList: ['个人', '客户', '现场/客户'],
tabList: [],
curTab: 0,
curOwn: "",
curType: "",
remark: "",
appointTime: "",
feedback: {
own:{
title:'问题归属',
list:['个人', '客户', '现场/客户'],
},
type:{
title:'问题类型',
list:['有事耽搁', '未带齐工具', '个人改约','其他']
},
appoint:{
title:'预约时间',
}
},
list:['报备','预约'],
curNow: 1
config: null,
options: []
};
},
components:{
appointTime
},
watch: {
vuex_token(val) {
this.initPageData()
}
},
computed: {
},
onLoad(e) {
this.orderId = 1
this.categoryId = 88
if(e) {
this.orderId = e.orderId || null
this.categoryId = e.categoryId || null
}
this.initPageData()
},
methods: {
async initPageData() {
let self = this
let params = {categoryId: self.categoryId}
let res = await self.$u.api.feedbackConfig(params)
if(res && res.code == 200) {
self.config = res.data
self.initParams()
self.buildConfig()
}
},
buildConfig() {
let self = this
if(self.config) {
let tabs = Object.keys(self.config)
let list = Object.values(self.config)
tabs.forEach(function(tab, index){
self.tabList[index] = {name: tab}
self.options[index] = list[index]
})
}
},
initParams() {
let self = this
if(self.config) {
let tabs = Object.keys(self.config)
let list = Object.values(self.config)
let ownVal = Object.keys(list[self.curTab])[0]
let types = Object.values(list[self.curTab][ownVal])
self.curOwn = ownVal
self.curType = types[0]
if(self.curTab) {
self.showRemark = true
} else {
self.showRemark = false
self.remark = ""
}
}
},
/**
* 切换tab项
*/
changeTab(index) {
this.curTab = index;
this.initParams()
},
changeOwn(key) {
this.curOwn = key;
},
changeType(key) {
this.curType = key;
},
/**
* 拒单
*/
......@@ -107,12 +206,28 @@
background-size: 750rpx 600rpx;
background-repeat: no-repeat;
}
.feedback-box {
.header {
padding: 12rpx 30rpx 40rpx 30rpx;
display: flex;
justify-content: space-between;
align-items: center;
.title {
font-size: 40rpx;
font-weight: bold;
color: #FFFFFF;
}
}
}
/deep/ .u-subsection{
padding:4rpx!important;
}
.top-tab{
text-align: center;
}
.con-box{
margin-top:30rpx;
padding:30rpx 30rpx 30rpx 20rpx;
padding: 30rpx 30rpx 28rpx 30rpx;
border-radius: 12rpx;
background-color: #FFFFFF;
.title{
......
......@@ -76,9 +76,57 @@ function signup(data) {
}
function oauth() {
return new Promise(function (resolve, reject) {
uni.getProvider({
service: 'oauth',
success: function (res) {
console.log(res.provider)
if (~res.provider.indexOf('weixin')) {
// weixin 微信登录
login('weixin').then(res=>{resolve(res)}).catch(err=>{reject(err)})
} else if (~res.provider.indexOf('qq')) {
// qq QQ登录
login('qq').then(res=>{resolve(res)}).catch(err=>{reject(err)})
} else if (~res.provider.indexOf('sinaweibo')) {
// sinaweibo 新浪微博登录
login('sinaweibo').then(res=>{resolve(res)}).catch(err=>{reject(err)})
} else if (~res.provider.indexOf('xiaomi')) {
// xiaomi 小米登录
login('xiaomi').then(res=>{resolve(res)}).catch(err=>{reject(err)})
} else if (~res.provider.indexOf('univerify')) {
// univerify 一键登录 App
login('univerify').then(res=>{resolve(res)}).catch(err=>{reject(err)})
} else if (~res.provider.indexOf('apple')) {
// apple Apple登录
login('apple').then(res=>{resolve(res)}).catch(err=>{reject(err)})
}
}
});
});
}
function login(provider) {
return new Promise(function (resolve, reject) {
uni.login({
provider: provider,
success(res) {
console.log(JSON.stringify(res));
resolve(res);
},
fail(err) {
console.log(JSON.stringify(err));
reject(err);
}
});
});
}
module.exports = {
appLogin: appLogin,
authorization: authorization,
signup: signup
signup: signup,
oauth: oauth
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment