Commit dddb2c7c authored by 和慭琛's avatar 和慭琛

授权登录接口对接 50%

parent 9f54994c
# -------------------------------- admin-ignore -----------------------------
# 参照 admin/.gitignore
# -------------------------------- h5-ignore -----------------------------
# 参照 h5/.gitignore
# -------------------------------- uniapp-ignore -----------------------------
# 参照 uniapp/.gitignore
.idea/
#uniapp/plugins/
#uniapp/static/
...@@ -13,6 +13,9 @@ import { ...@@ -13,6 +13,9 @@ import {
import { import {
searchApiFun searchApiFun
} from '@/common/api/search.js'; } from '@/common/api/search.js';
import {
take_orderApiFun
} from '@/common/api/take_order.js';
let apiFun = function(vm) { let apiFun = function(vm) {
let codeApi = codeApiFun(vm); let codeApi = codeApiFun(vm);
...@@ -20,6 +23,7 @@ let apiFun = function(vm) { ...@@ -20,6 +23,7 @@ let apiFun = function(vm) {
let commonApi = commonApiFun(vm); let commonApi = commonApiFun(vm);
let mineApi = mineApiFun(vm); let mineApi = mineApiFun(vm);
let searchApi = searchApiFun(vm); let searchApi = searchApiFun(vm);
let take_orderApi = take_orderApiFun(vm);
let apiUrl = { let apiUrl = {
...codeApi, ...codeApi,
...@@ -27,6 +31,7 @@ let apiFun = function(vm) { ...@@ -27,6 +31,7 @@ let apiFun = function(vm) {
...commonApi, ...commonApi,
...mineApi, ...mineApi,
...searchApi, ...searchApi,
...take_orderApi,
} }
return apiUrl return apiUrl
} }
......
...@@ -10,11 +10,22 @@ let mineApiFun = function(vm){ ...@@ -10,11 +10,22 @@ let mineApiFun = function(vm){
/* 获取我的收藏列表 */ /* 获取我的收藏列表 */
let listCollection = async (params = {}) => await vm.$u.get('/addons/ask/api.person/collection', params); let listCollection = async (params = {}) => await vm.$u.get('/addons/ask/api.person/collection', params);
/* 通过unionid查询用户 */
let getSSOID = async (params = {}) => await vm.$u.get('/wxh-support-rest/rest/ssoinfo/v2/findByUnionId', params);
/* 根据ssoid获取logincode */
let getLoginCode = async (params = {}) => await vm.$u.get('/wxh-support-rest/rest/ssoinfo/v2/getLoginCode', params);
/* 通过appsecret查询用户token */
let getToken = async (params = {}) => await vm.$u.get('/wxh-support-rest/rest/worker/login/applets/', params);
const mineApi = { const mineApi = {
getPerson, getPerson,
listQuestion, listQuestion,
listAnswer, listAnswer,
listCollection listCollection,
getSSOID,
getLoginCode,
getToken
} }
return mineApi return mineApi
} }
......
import globalUrl from '@/common/base_url.js'
let take_orderApiFun = function(vm){
/* 通过unionid查询用户 */
let getSSOID = async (params = {}) => await vm.$u.get('/wxh-support-rest/rest/ssoinfo/v2/findByUnionId', params);
/* 根据ssoid获取logincode */
let getLoginCode = async (params = {}) => await vm.$u.get('/wxh-support-rest/rest/ssoinfo/v2/getLoginCode', params);
/* 通过appsecret查询用户token */
let getToken = async (params = {}) => await vm.$u.get('/wxh-support-rest/rest/worker/login/applets/', params);
const take_orderApi = {
getSSOID,
getLoginCode,
getToken
}
return take_orderApi
}
module.exports = {
take_orderApiFun
}
\ No newline at end of file
...@@ -86,7 +86,7 @@ const install = (Vue, vm) => { ...@@ -86,7 +86,7 @@ const install = (Vue, vm) => {
//设置session_id //设置session_id
// config.header.sid = getSessionId(vm); // config.header.sid = getSessionId(vm);
config.header.uid = vm.vuex_user.id || 0; //config.header.uid = vm.vuex_user.id || 0;
config.header['x-requested-with'] = 'xmlhttprequest'; config.header['x-requested-with'] = 'xmlhttprequest';
// if(config.method=='POST'){ // if(config.method=='POST'){
// config.data['__token__'] = vm.vuex__token__; // config.data['__token__'] = vm.vuex__token__;
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
} }
}, },
{ {
"path": "pages/take/finish", "path": "pages/take/finish",
"style": { "style": {
...@@ -19,6 +20,8 @@ ...@@ -19,6 +20,8 @@
} }
}, },
{ {
"path": "pages/take/rob", "path": "pages/take/rob",
"style": { "style": {
...@@ -54,6 +57,13 @@ ...@@ -54,6 +57,13 @@
"style": { "style": {
"navigationBarTitleText": "下单" "navigationBarTitleText": "下单"
} }
},
{
"path": "pages/login/wxlogin",
"style": {
"navigationBarTitleText": "授权登录"
}
} }
], ],
......
...@@ -103,6 +103,7 @@ ...@@ -103,6 +103,7 @@
}, },
onShow() { onShow() {
this.getWorkerType() this.getWorkerType()
this.getPerson()
this.checkClean() this.checkClean()
}, },
methods: { methods: {
...@@ -190,7 +191,24 @@ ...@@ -190,7 +191,24 @@
console.log('请求工种类型:') console.log('请求工种类型:')
console.log(res) console.log(res)
}, },
//*/ //*/
getPerson: async function() {
uni.showLoading({
title: '加载中'
})
let res = await this.$u.api.getPerson()
uni.hideLoading()
uni.stopPullDownRefresh();
if (!res.code) {
this.$u.toast(res.msg)
return
}
console.log('getPerson 请求成功')
console.log(data)
const data = res.data
},
} }
......
<template>
<view class="">
<view class="backView">
<button class="loginBtn" open-type="getUserInfo" lang="zh_CN" @getuserinfo="getUserInfo">
<text class="u-font-32 white">授权登录</text>
</button>
</view>
</view>
</template>
<script>
export default {
data() {
return {
productType:'家电安装',
}
},
onLoad() {
},
methods: {
//用户授权得到用户的信息
getUserInfo: async function(e) {
// this.getSSOID()
// return
console.log('获取用户信息')
console.log(e.detail.userInfo)
if (e.detail.errMsg == 'getUserInfo:fail auth deny') {
//this.$u.toast('未授权');
uni.showModal({
title: '授权失败',
content: '请允许获取用户信息的授权',
showCancel: false
});
} else {
try {
let code = await this.getCode();
let rawData = e.detail
let data = {
code: code,
nickname: rawData.userInfo.nickName,
avatar: rawData.userInfo.avatarUrl,
encryptedData: rawData.encryptedData,
iv: rawData.iv
}
this.getUnionID(code)
//this.toLogin(data);
} catch (e) {
this.$u.toast(e);
}
}
},
//小程序获取code
getCode: async function() {
let that = this
return new Promise((resolve, reject) => {
uni.login({
// #ifdef MP-ALIPAY
scopes: 'auth_user',
// #endif
success: function(res) {
console.log('getCode成功')
console.log(res)
if (res.code) {
//that.getUnionID(res.code)
resolve(res.code);
} else {
//login成功,但是没有取到code
reject('未取得code');
}
},
fail: function(res) {
reject('用户授权失败wx.login');
}
});
});
},
//微信授权
toLogin: async function(data) {
uni.showLoading({
title:'授权中……'
})
let res = await this.$u.api.gowxLogin(data);
console.log('微信授权')
console.log(res)
uni.hideLoading()
if (res.code!==1) {
this.$u.toast(res.msg);
return;
}
if (res.data) {
let app = getApp();
this.setLoginStatus()
// this.success(res.data.user.id);
}
},
//获取unionID
getUnionID: async function(code) {
uni.request({
url: 'http://192.168.0.208:8192'+
'/wxh-support-rest/rest/ssoinfo/getUsersByCode',
method: 'GET',
data: {
code: code,
},
success: (res) => {
console.log('获取unionID 成功')
console.log(res)
if(res.data.code==200){
this.getSSOID(res.data.data.unionid)
}
},
fail: (e) => {
console.log('获取unionID 失败')
console.log(e)
}
})
},
//获取SSOID
getSSOID: async function(unionID) {
uni.request({
url: 'http://192.168.0.208:8192'
+ '/wxh-support-rest/rest/ssoinfo/v2/findByUnionId',
method: 'GET',
data: {
unionid: unionID,
},
success: (res) => {
console.log('获取SSOID 成功')
console.log(res)
},
fail: (e) => {
console.log('获取SSOID 失败')
console.log(e)
}
})
},
//获取loginCode
getLoginCode: async function() {
uni.request({
url: 'http://192.168.0.208:8192'
+ '/wxh-support-rest/rest/ssoinfo/v2/getLoginCode',
method: 'GET',
data: {
ssoId: '93140',
},
success: (res) => {
console.log('获取loginCode 成功')
console.log(res)
if(res.data.code==200){
this.getToken(res.data.data.loginCode)
}
},
fail: (e) => {
console.log('获取loginCode 失败')
console.log(e)
}
})
},
//获取token
getToken: async function(loginCode) {
uni.request({
url: 'http://192.168.0.208:8192'
+ '/wxh-support-rest/rest/worker/login/applets/'
+loginCode,
method: 'GET',
data: {
},
success: (res) => {
console.log('获取token 成功')
console.log(res)
},
fail: (e) => {
console.log('获取token 失败')
console.log(e)
}
})
},
}
}
</script>
<style>
.backView{
background-color: #FFFFFF;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.loginBtn{
background-color: #4CD964;
width: 400rpx;
height: 80rpx;
border-radius: 40rpx;
display: flex;
align-items: center;
justify-content: center;
}
.white{
color: #FFFFFF;
}
</style>
<template>
<view class="">
<!-- 顶部导航 -->
<fa-navbar :title="barTitle"></fa-navbar>
<view class="content">
<view class="u-p-t-30 u-flex-col u-col-center">
<image class="logo" :src="$util.getStaticUrl('login_logo.png')" mode="aspectFit" />
<text class="title">蓝领星球</text>
</view>
<view class="btn-box">
<template v-if="needAuth">
<view class="auth-tip">我们需要取得您的授权,以关联您的蓝领星球账号</view>
<view class="u-flex u-row-between">
<button class="login-refuse btn" @click="handleRefuse">拒绝</button>
<!-- #ifdef MP-WEIXIN -->
<button class="login-accept btn" open-type="getUserInfo" lang="zh_CN" @getuserinfo="getUserInfo">接受</button>
<!-- #endif -->
<!-- #ifdef MP-ALIPAY -->
<button class="login-accept btn" @click="getALICode">授权登录</button>
<!-- <u-button shape="circle" @click="getALICode">授权登录</u-button> -->
<!-- #endif -->
</view>
</template>
<template v-else>
<view class="auth-tip">授权成功,立即登录</view>
<!-- #ifdef MP-WEIXIN -->
<button class="login-now btn" open-type="getPhoneNumber" throttle-time="1000" @getphonenumber="getPhoneNumber">立即登录</button>
<!-- #endif -->
</template>
</view>
<view class="tips-list u-m-t-80">
<view class="tips-item u-flex" v-for="(item,index) in tipsList" :key="index">
<image class="icon" :src="item.img" />
<view>
<view class="title">{{item.title}}</view>
<view class="txt">{{item.intro}}</view>
</view>
</view>
</view>
<u-top-tips ref="uTips" :navbar-height="statusBarHeight + navbarHeight"></u-top-tips>
</view>
<!-- 底部导航 -->
<fa-tabbar></fa-tabbar>
</view>
</template>
<script>
import {
login
} from '@/common/fa.mixin.js';
export default {
mixins: [login],
data() {
return {
// 状态栏高度,H5中,此值为0,因为H5不可操作状态栏
statusBarHeight: uni.getSystemInfoSync().statusBarHeight,
// 导航栏内容区域高度,不包括状态栏高度在内
navbarHeight: 44,
needAuth: true,
barTitle: '微信授权',
tipsList: [{
img: this.$util.getStaticUrl('icon/login_search.png'),
title: '搜答案',
intro: '利用AI检索技术,精准解决您的技术难题'
},{
img: this.$util.getStaticUrl('icon/login_datum.png'),
title: '查资料',
intro: '海量厂家资料、操作手册、技术资料,免费供阅'
},{
img: this.$util.getStaticUrl('icon/login_ask.png'),
title: '问专家',
intro: '提供社群互动,专家1v1 服务,为您排忧解难'
}
]
};
},
onLoad() {
this.setLoginStatus()
},
methods: {
handleRefuse() {
//this.$u.toast('未授权');
uni.showModal({
title: '授权失败',
content: '请允许获取用户信息的授权',
showCancel: false
});
setTimeout(() => {
this.$Router.back(1)
}, 1000);
},
getCode: async function() {
return new Promise((resolve, reject) => {
uni.login({
// #ifdef MP-ALIPAY
scopes: 'auth_user',
// #endif
success: function(res) {
if (res.code) {
resolve(res.code);
} else {
//login成功,但是没有取到code
reject('未取得code');
}
},
fail: function(res) {
reject('用户授权失败wx.login');
}
});
});
},
//用户授权得到用户的信息
getUserInfo: async function(e) {
this.$u.vuex('vuex_other_user', e.detail.userInfo)
if (e.detail.errMsg == 'getUserInfo:fail auth deny') {
//this.$u.toast('未授权');
uni.showModal({
title: '授权失败',
content: '请允许获取用户信息的授权',
showCancel: false
});
} else {
try {
let code = await this.getCode();
let rawData = e.detail
let data = {
code: code,
nickname: rawData.userInfo.nickName,
avatar: rawData.userInfo.avatarUrl,
encryptedData: rawData.encryptedData,
iv: rawData.iv
}
//有推荐码的话,带上
// if (this.vuex_invitecode) {
// data.invitecode = this.vuex_invitecode;
// }
this.toLogin(data);
} catch (e) {
this.$u.toast(e);
}
}
},
//微信授权
toLogin: async function(data) {
uni.showLoading({
title:'授权中……'
})
let res = await this.$u.api.gowxLogin(data);
uni.hideLoading()
if (res.code!==1) {
this.$u.toast(res.msg);
return;
}
if (res.data) {
let app = getApp();
app.identify(this.vuex_other_user, res.data.openid, res.data.unionid);
// app.identify(res.data);
this.$u.vuex('vuex_third', res.data);
this.$u.vuex('vuex_wx_uid', res.data.user_id + 'uid');
this.setLoginStatus()
// this.success(res.data.user.id);
}
},
// 绑定手机号
towxBindPhone: async function(data) {
uni.showLoading({
title:'登录中……'
})
let res = await this.$u.api.gowxBindPhone(data);
uni.hideLoading()
if (!res.code) {
this.$u.toast(res.msg);
return;
}
if (res.data) {
let app = getApp();
this.$u.vuex('vuex_token', res.data.userInfo.token);
if (!this.vuex_worktypeId) {
this.$u.vuex('vuex_worktype_visible', true);
}
let user = {
mobile: res.data.userInfo.mobile,
uid: res.data.userInfo.user_id
}
app.setUserId(res.data.userInfo.wxhuid)
app.setUser(user)
this.$Router.back(1)
return;
}
},
clickOneTime: function(e) {
let func = function() {
this.getPhoneNumber(e)
}
this.$u.debounce(func, 500)
},
getPhoneNumber: async function(e) {
/*
let func = function(){
this.toNext(e)
}
this.$u.debounce(func, 500)
*/
if (e.detail.errMsg == 'getPhoneNumber:fail user deny') {
//this.$u.toast('未授权');
uni.showModal({
title: '授权失败',
content: '请允许获取用户信息的授权',
showCancel: false
});
} else {
try {
let code = await this.getCode();
let rawData = e.detail
let data = {
code: code,
encryptedData: rawData.encryptedData,
iv: rawData.iv,
}
//有推荐码的话,带上
// if (this.vuex_invitecode) {
// data.invitecode = this.vuex_invitecode;
// }
this.towxBindPhone(data);
} catch (e) {
this.$u.toast(e);
}
}
},
setLoginStatus() {
// console.log(this.vuex_wx_uid,'this.vuex_wx_uid')
if (this.vuex_wx_uid) {
this.needAuth = false
this.barTitle = '授权登录'
}
},
// #ifdef MP-ALIPAY
getALICode() {
let that = this;
uni.login({
scopes: 'auth_user',
success: res => {
if (res.authCode) {
uni.getUserInfo({
provider: 'alipay',
success: function(infoRes) {
if (infoRes.errMsg == 'getUserInfo:ok') {
let user_info = {
nickname: infoRes.nickName,
avatar: infoRes.avatar
};
that.aLiLoginStep1(res.authCode, user_info);
}
},
fail: function(errorRes) {
this.$u.toast('未取得用户昵称头像信息');
}
});
} else {
this.$u.toast('未取得code');
}
},
fail: function(res) {
this.$u.toast('用户授权失败my.login');
}
});
},
aLiLoginStep1: async function(code, user_info) {
let data = {
code: code,
user_info: user_info
};
let res = await this.$u.api.alilogin1(data);
if (!res.code) {
this.$u.toast(res.msg);
return;
}
}
// #endif
}
};
</script>
<style lang="scss">
page {
background-color: #FFFFFF;
}
.btn {
margin: 0;
padding: 0;
width: 318rpx;
height: 86rpx;
line-height: 86rpx;
border-radius: 49rpx;
color: #ffffff;
font-weight: bold;
}
.btn::before,
.btn::after {
border: none;
}
.logo {
margin-bottom: 15rpx;
width: 208rpx;
height: 152rpx;
}
.title {
font-size: 40rpx;
font-weight: bold;
color: #333333;
line-height: 1;
}
.auth-tip {
margin-top: 80rpx;
margin-bottom: 40rpx;
text-align: center;
font-size: 28rpx;
color: #888888;
line-height: 1;
}
.btn-box {
padding: 0 40rpx;
margin-bottom: 80rpx;
}
.btn.login-refuse {
color: #333333;
background: #EDEDED;
}
.btn.login-accept {
background: #07C160;
box-shadow: 6rpx 6rpx 40rpx rgba(7, 193, 96, 0.5);
}
.btn.login-now {
width: 670rpx;
// height: 98rpx;
background: #07C160;
border-radius: 49rpx;
color: #ffffff;
font-weight: bold;
box-shadow: 6rpx 6rpx 40rpx rgba(7, 193, 96, 0.5);
}
.tips-list {
padding: 28rpx 40rpx;
.tips-item {
margin-bottom: 55rpx;
.icon {
margin-right: 36rpx;
width: 60rpx;
height: 60rpx;
}
.title {
margin-bottom: 21rpx;
font-size: 28rpx;
color: #333333;
}
.txt {
font-size: 24rpx;
color: #888888;
}
}
}
</style>
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
<view class="photoTypeView" v-if="item.type=='photo'"> <view class="photoTypeView" v-if="item.type=='photo'">
<text class="u-font-24 u-m-l-24 u-m-t-24">{{item.title}}</text> <text class="u-font-24 u-m-l-24 u-m-t-24">{{item.title}}</text>
<view class="photoBackView u-p-b-24" v-if="item.images.length>0"> <view class="photoBackView u-p-b-24" v-if="item.images.length>0">
<view class="photoItemView" v-for="(item,ikey) in item.images":key="ikey"> <view class="photoItemView" @click="photoClick(item)" v-for="(item,ikey) in item.images":key="ikey">
<image class="photoImage" :src="item.image" mode="aspectFill"></image> <image class="photoImage" :src="item.image" mode="aspectFill"></image>
</view> </view>
</view> </view>
...@@ -78,6 +78,7 @@ ...@@ -78,6 +78,7 @@
this.scanCode(item) this.scanCode(item)
} }
}, },
scanCode: function (item) { scanCode: function (item) {
...@@ -87,7 +88,12 @@ ...@@ -87,7 +88,12 @@
console.log('条码内容:' + res.result); console.log('条码内容:' + res.result);
} }
}); });
} },
photoClick: function (item) {
console.log(item.image)
//console.log(key)
},
} }
......
...@@ -6,7 +6,8 @@ ...@@ -6,7 +6,8 @@
"pages/take/index", "pages/take/index",
"pages/take/detail", "pages/take/detail",
"pages/index/record", "pages/index/record",
"pages/index/success" "pages/index/success",
"pages/login/wxlogin"
], ],
"subPackages": [], "subPackages": [],
"window": { "window": {
...@@ -15,6 +16,5 @@ ...@@ -15,6 +16,5 @@
"navigationBarBackgroundColor": "#F8F8F8", "navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#F8F8F8" "backgroundColor": "#F8F8F8"
}, },
"usingComponents": {}, "usingComponents": {}
"sitemapLocation": "sitemap9.json"
} }
\ No newline at end of file
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
/* WEBPACK VAR INJECTION */(function(createApp) {__webpack_require__(/*! uni-pages */ 4);var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 2)); /* WEBPACK VAR INJECTION */(function(createApp) {__webpack_require__(/*! uni-pages */ 4);var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 2));
var _App = _interopRequireDefault(__webpack_require__(/*! ./App */ 5)); var _App = _interopRequireDefault(__webpack_require__(/*! ./App */ 5));
var _uviewUi = _interopRequireDefault(__webpack_require__(/*! uview-ui */ 83)); var _uviewUi = _interopRequireDefault(__webpack_require__(/*! uview-ui */ 13));
...@@ -23,11 +23,11 @@ var _uviewUi = _interopRequireDefault(__webpack_require__(/*! uview-ui */ 83)); ...@@ -23,11 +23,11 @@ var _uviewUi = _interopRequireDefault(__webpack_require__(/*! uview-ui */ 83));
var _httpInterceptor = _interopRequireDefault(__webpack_require__(/*! @/common/http.interceptor.js */ 109)); var _httpInterceptor = _interopRequireDefault(__webpack_require__(/*! @/common/http.interceptor.js */ 39));
var _httpApi = _interopRequireDefault(__webpack_require__(/*! @/common/http.api.js */ 111));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);if (enumerableOnly) symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;});keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i] != null ? arguments[i] : {};if (i % 2) {ownKeys(Object(source), true).forEach(function (key) {_defineProperty(target, key, source[key]);});} else if (Object.getOwnPropertyDescriptors) {Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));} else {ownKeys(Object(source)).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}}return target;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}_vue.default.use(_uviewUi.default);_vue.default.config.productionTip = false;_App.default.mpType = 'app';var app = new _vue.default(_objectSpread({}, _App.default));createApp(app).$mount(); // http拦截器,将此部分放在new Vue()和app.$mount()之间,才能App.vue中正常使用 var _httpApi = _interopRequireDefault(__webpack_require__(/*! @/common/http.api.js */ 41));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);if (enumerableOnly) symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;});keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i] != null ? arguments[i] : {};if (i % 2) {ownKeys(Object(source), true).forEach(function (key) {_defineProperty(target, key, source[key]);});} else if (Object.getOwnPropertyDescriptors) {Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));} else {ownKeys(Object(source)).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}}return target;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}_vue.default.use(_uviewUi.default);_vue.default.config.productionTip = false;_App.default.mpType = 'app';var app = new _vue.default(_objectSpread({}, _App.default));createApp(app).$mount(); // http拦截器,将此部分放在new Vue()和app.$mount()之间,才能App.vue中正常使用
_vue.default.use(_httpInterceptor.default, app); // http接口API抽离,免于写url或者一些固定的参数 _vue.default.use(_httpInterceptor.default, app); // http接口API抽离,免于写url或者一些固定的参数
_vue.default.use(_httpApi.default, app); _vue.default.use(_httpApi.default, app);
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["createApp"])) /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1)["createApp"]))
......
This diff is collapsed.
{
"navigationBarTitleText": "授权登录",
"usingComponents": {}
}
\ No newline at end of file
<view><view class="backView"><button class="loginBtn" open-type="getUserInfo" lang="zh_CN" data-event-opts="{{[['getuserinfo',[['getUserInfo',['$event']]]]]}}" bindgetuserinfo="__e"><text class="u-font-32 white">授权登录</text></button></view></view>
\ No newline at end of file
.backView{
background-color: #FFFFFF;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-box-align: center;
-webkit-align-items: center;
align-items: center;
-webkit-box-pack: center;
-webkit-justify-content: center;
justify-content: center;
}
.loginBtn{
background-color: #4CD964;
width: 400rpx;
height: 80rpx;
-webkit-border-radius: 40rpx;
border-radius: 40rpx;
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-box-align: center;
-webkit-align-items: center;
align-items: center;
-webkit-box-pack: center;
-webkit-justify-content: center;
justify-content: center;
}
.white{
color: #FFFFFF;
}
<view><view class="topView"><view class="nameView"><text class="u-font-24 u-m-l-24">{{"联系人:"+orderInfo.name}}</text><text data-event-opts="{{[['tap',[['phoneCallClick',['$0'],['orderInfo.phone']]]]]}}" class="u-font-24 u-m-l-24 underLine" bindtap="__e">{{orderInfo.phone}}</text></view><text class="u-font-24 u-m-l-24 u-m-t-24">{{"地址:"+orderInfo.address}}</text><view class="typeView"><text class="u-font-24 u-m-l-24">{{"类型:("+orderInfo.guard+") "+orderInfo.type}}</text><text class="u-font-24 u-m-r-24">{{"产品:"+orderInfo.product}}</text></view></view><block wx:for="{{orderInfo.typeList}}" wx:for-item="item" wx:for-index="ikey"><block wx:if="{{item.type=='click'||item.type=='scan'}}"><view data-event-opts="{{[['tap',[['clickTypeClick',['$0'],[[['orderInfo.typeList','',ikey]]]]]]]}}" class="clickTypeView" bindtap="__e"><text class="u-font-24 u-m-l-24">{{item.title}}</text><image class="arrowIcon u-m-r-24" src mode></image></view></block><block wx:if="{{item.type=='photo'}}"><view class="inputTypeView"><text class="u-font-24 u-m-l-24">{{item.title}}</text><input class="input u-m-r-24" type="text" value="" placeholder="请输入内容"/></view></block><block wx:if="{{item.type=='photo'}}"><view class="photoTypeView"><text class="u-font-24 u-m-l-24 u-m-t-24">{{item.title}}</text><block wx:if="{{item.images.length>0}}"><view class="photoBackView u-p-b-24"><block wx:for="{{item.images}}" wx:for-item="item" wx:for-index="ikey" wx:key="ikey"><view class="photoItemView"><image class="photoImage" src="{{item.image}}" mode="aspectFill"></image></view></block></view></block></view></block><block wx:if="{{item.type=='textArea'}}"><view class="textAreaTypeView bottomPadding"><text class="u-font-24 u-m-l-24 u-m-t-24">{{item.title}}</text><view class="textAreaView"><textarea class="textArea u-m-l-24 u-m-r-24 u-m-t-24 u-m-b-24" value="" placeholder="请输入备注"></textarea></view></view></block></block><view class="bottomView"><text class="bottomTitle">完工</text></view></view> <view><view class="topView"><view class="nameView"><text class="u-font-24 u-m-l-24">{{"联系人:"+orderInfo.name}}</text><text data-event-opts="{{[['tap',[['phoneCallClick',['$0'],['orderInfo.phone']]]]]}}" class="u-font-24 u-m-l-24 underLine" bindtap="__e">{{orderInfo.phone}}</text></view><text class="u-font-24 u-m-l-24 u-m-t-24">{{"地址:"+orderInfo.address}}</text><view class="typeView"><text class="u-font-24 u-m-l-24">{{"类型:("+orderInfo.guard+") "+orderInfo.type}}</text><text class="u-font-24 u-m-r-24">{{"产品:"+orderInfo.product}}</text></view></view><block wx:for="{{orderInfo.typeList}}" wx:for-item="item" wx:for-index="ikey"><block wx:if="{{item.type=='click'||item.type=='scan'}}"><view data-event-opts="{{[['tap',[['clickTypeClick',['$0'],[[['orderInfo.typeList','',ikey]]]]]]]}}" class="clickTypeView" bindtap="__e"><text class="u-font-24 u-m-l-24">{{item.title}}</text><image class="arrowIcon u-m-r-24" src mode></image></view></block><block wx:if="{{item.type=='photo'}}"><view class="inputTypeView"><text class="u-font-24 u-m-l-24">{{item.title}}</text><input class="input u-m-r-24" type="text" value="" placeholder="请输入内容"/></view></block><block wx:if="{{item.type=='photo'}}"><view class="photoTypeView"><text class="u-font-24 u-m-l-24 u-m-t-24">{{item.title}}</text><block wx:if="{{item.images.length>0}}"><view class="photoBackView u-p-b-24"><block wx:for="{{item.images}}" wx:for-item="item" wx:for-index="ikey" wx:key="ikey"><view data-event-opts="{{[['tap',[['photoClick',['$0'],[[['orderInfo.typeList','',ikey],['images','',ikey]]]]]]]}}" class="photoItemView" bindtap="__e"><image class="photoImage" src="{{item.image}}" mode="aspectFill"></image></view></block></view></block></view></block><block wx:if="{{item.type=='textArea'}}"><view class="textAreaTypeView bottomPadding"><text class="u-font-24 u-m-l-24 u-m-t-24">{{item.title}}</text><view class="textAreaView"><textarea class="textArea u-m-l-24 u-m-r-24 u-m-t-24 u-m-b-24" value="" placeholder="请输入备注"></textarea></view></view></block></block><view class="bottomView"><text class="bottomTitle">完工</text></view></view>
\ No newline at end of file \ No newline at end of file
...@@ -4,14 +4,42 @@ ...@@ -4,14 +4,42 @@
"ignore": [] "ignore": []
}, },
"setting": { "setting": {
"urlCheck": false "urlCheck": false,
"es6": true,
"enhance": false,
"postcss": true,
"preloadBackgroundData": false,
"minified": true,
"newFeature": false,
"coverView": true,
"nodeModules": false,
"autoAudits": false,
"showShadowRootInWxmlPanel": true,
"scopeDataCheck": false,
"uglifyFileName": false,
"checkInvalidKey": true,
"checkSiteMap": true,
"uploadWithSourceMap": true,
"compileHotReLoad": false,
"useMultiFrameRuntime": false,
"useApiHook": true,
"babelSetting": {
"ignore": [],
"disablePlugins": [],
"outputPath": ""
},
"enableEngineNative": false,
"useIsolateContext": true,
"useCompilerModule": true,
"userConfirmedUseCompilerModuleSwitch": false,
"packNpmManually": false,
"packNpmRelationList": [],
"minifyWXSS": true
}, },
"compileType": "miniprogram", "compileType": "miniprogram",
"libVersion": "", "libVersion": "",
"appid": "touristappid", "appid": "touristappid",
"projectname": "take-order", "projectname": "take-order",
"simulatorType": "wechat",
"simulatorPluginLibVersion": {},
"condition": { "condition": {
"search": { "search": {
"list": [] "list": []
......
{
"desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html",
"rules": [{
"action": "allow",
"page": "*"
}]
}
\ No newline at end of file
{
"desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html",
"rules": [{
"action": "allow",
"page": "*"
}]
}
\ No newline at end of file
{
"desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html",
"rules": [{
"action": "allow",
"page": "*"
}]
}
\ 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