chubiao 1 năm trước cách đây
mục cha
commit
9a809f01bc
6 tập tin đã thay đổi với 193 bổ sung19 xóa
  1. 10 0
      api/dict.js
  2. 5 9
      api/login.js
  3. 99 2
      common/request.js
  4. 1 1
      package.json
  5. 11 1
      pages.json
  6. 67 6
      pages/login/login.vue

+ 10 - 0
api/dict.js

@@ -0,0 +1,10 @@
+import request from '@/common/request.js'
+
+// 登录方法
+export const login = (data) => {
+	return request({
+		url: '/auth/firstLogin',
+		method: 'post',
+		data: data
+	})
+}

+ 5 - 9
api/login.js

@@ -1,4 +1,4 @@
-import request from '@/utils/request'
+import request from '@/common/request.js'
 
 // 注册方法
 export function register(data) {
@@ -10,16 +10,12 @@ export function register(data) {
 }
 
 // 登录方法
-export function login(username, password) {
-	const data = {
-		username,
-		password
-	}
+export const login = (data) => {
 	return request({
 		url: '/auth/firstLogin',
-		headers: {
-			isToken: false
-		},
+		// headers: {
+		// 	isToken: false
+		// },
 		method: 'post',
 		data: data
 	})

+ 99 - 2
common/request.js

@@ -16,7 +16,14 @@ const request = config => {
 		config.header['Authorization'] = 'Bearer ' +
 			'eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjo3MDA0NDMsInVzZXJfa2V5IjoiNjFlMDVkMWItODY1Zi00MGIwLThiOWItM2VjY2I0ZGEzYjAwIiwidXNlcm5hbWUiOiJ5bGpnMjIwMjgyMDAzMiJ9.K16sZmP0X54BsIt5dpPBm5Jw8VLoQR3Vt1VJ8IpdRNChDwZNthxfCBAKPkUAilFtb5NuBIppH54dktTPSV5mNA'
 	}
+
 	console.log("请求:", config, BASE_URL + config.url)
+
+	uni.showLoading({
+		title: '请求中...'
+	})
+
+
 	return new Promise((resolve, reject) => {
 		uni.request({
 			header: config.header,
@@ -30,10 +37,9 @@ const request = config => {
 			const code = res.statusCode || 200
 			const msg = res.data.msg || '未知错误,请反馈给管理员'
 
-
 			if (res.data.code == 500) {
 				uni.showToast({
-					icon:'error',
+					icon: 'error',
 					title: '接口未知异常',
 				})
 				reject(msg)
@@ -58,6 +64,9 @@ const request = config => {
 			}
 
 			resolve(res.data.data)
+			uni.hideLoading()
+
+
 		}).catch(error => {
 			console.log("请求失败:", error)
 			let {
@@ -70,10 +79,98 @@ const request = config => {
 			} else if (message.includes('Request failed with status code')) {
 				message = '系统接口' + message.substr(message.length - 3) + '异常'
 			}
+
+			uni.hideLoading()
 			toast(message)
 			reject(error)
 		})
 	})
 }
 
+
+// function request(req) {
+
+// 	let data = req.data
+// 	const method = req.method
+// 	const url = req.url
+// 	let loading = false
+// 	if (req.data.loading) {
+// 		loading = data.loading
+// 		delete data.loading
+// 	}
+
+// 	let header = {
+// 		'Content-Type': 'application/json',
+// 		'timestamp': Date.parse(new Date()),
+// 		// 'token': uni.getStorageSync('user').access_token,
+// 		'Authorization': 'Bearer ' + uni.getStorageSync('user').access_token
+// 	}
+// 	if (loading) {
+// 		uni.hideLoading()
+// 		uni.showLoading({
+// 			title: '请求中',
+// 			mask: true
+// 		})
+// 	}
+// 	return new Promise((resolve, reject) => {
+// 		console.log('REQ ==>', url)
+// 		console.log(data)
+// 		uni.request({
+// 			url: BASE_URL + url,
+// 			data: data,
+// 			header: header,
+// 			method: method.toUpperCase(),
+// 			timeout: 1000 * 60 * 3, //超时三分钟
+// 			success: async (res) => {
+// 				uni.hideLoading()
+// 				console.log("RES <==", url)
+// 				console.log(res)
+
+
+// 				if (res.statusCode == 200 && res.data.code == 200) {
+// 					resolve(res.data.data)
+// 				} else if (res.statusCode == 401) {
+// 					//处理token验证出错
+// 					console.log('Token过期')
+// 					if (!uni.getStorageSync('user')) {
+// 						//其他设备登录了
+// 						uni.reLaunch({
+// 							url: '/pages/login/login'
+// 						});
+// 					} else {
+// 						//token续租
+// 						let r = await login(uni.getStorageSync('user').login)
+// 						let result = await request(req)
+// 					}
+// 				} else {
+// 					console.error(res.data.msg)
+// 					if (res.data.msg == '登录状态已过期') {
+// 						uni.reLaunch({
+// 							url: '/pages/login/pages/login'
+// 						})
+// 					}
+// 					uni.showToast({
+// 						title: res.data.msg,
+// 						icon: "none",
+// 						position: "bottom",
+// 						duration: 3000
+// 					})
+// 					reject(false)
+// 				}
+// 			},
+// 			fail: (err) => {
+// 				uni.hideLoading()
+// 				uni.showToast({
+// 					title: '服务器休息中,请稍后再试',
+// 					icon: "none",
+// 					position: "center",
+// 					duration: 3000
+// 				});
+// 				console.error(url, err)
+// 				reject(err)
+// 			}
+// 		});
+// 	})
+// }
+
 export default request

+ 1 - 1
package.json

@@ -7,4 +7,4 @@
 		"@dcloudio/uni-app": "^2.0.2-3090920231225001",
 		"uview-ui": "^2.0.36"
 	}
-}
+}

+ 11 - 1
pages.json

@@ -65,5 +65,15 @@
 		"navigationBarBackgroundColor": "#F8F8F8",
 		"backgroundColor": "#F8F8F8"
 	},
-	"uniIdRouter": {}
+	"uniIdRouter": {},
+	"condition" : { //模式配置,仅开发期间生效
+		"current": 0, //当前激活的模式(list 的索引项)
+		"list": [
+			{
+				"name": "login", //模式名称
+				"path": "pages/login/login", //启动页面,必选
+				"query": "" //启动参数,在页面的onLoad函数里面得到
+			}
+		]
+	}
 }

+ 67 - 6
pages/login/login.vue

@@ -1,23 +1,84 @@
 <template>
-	<view class="u-line-1">
-		<u-icon name="photo-fill" color="#2979ff" size="28"></u-icon>
-		<u-input v-model="value" type="number" placeholder="请输入手机号" :border="true" clearable />
+	<view class="u-page">
+		<u--form ref="loginForm" :model="form" :rules="rules" errorType="toast">
+			<u-row justify="center">
+				<u-col span="9">
+					<u-form-item prop="username">
+						<u-input v-model="form.username" type="number" placeholder="请输入手机号" prefixIcon="account"
+							:clearable="true" />
+					</u-form-item>
+				</u-col>
+			</u-row>
+
+			<u-row justify="center">
+				<u-col span="9">
+					<u-form-item prop="password">
+						<u-input v-model="form.password" type="password" placeholder="请输入密码" prefixIcon="lock" :clearable="true" />
+					</u-form-item>
+				</u-col>
+			</u-row>
+
+			<u-row justify="center">
+				<u-col span="9">
+					<u-form-item>
+						<u-button type="primary" text="登录并绑定微信" @click="submitForm"></u-button>
+						<u-text type="info" align="center" text="微信一键登录" @click="quickLogin"></u-text>
+					</u-form-item>
+				</u-col>
+			</u-row>
+		</u--form>
+
 	</view>
 </template>
 
 <script>
+	import { setToken } from '@/common/auth.js'
+	import { toast } from '@/common/common.js'
+	import { login } from '@/api/login.js'
+
 	export default {
 		data() {
 			return {
-				value: '',
+				form: {
+					username: '15143018065',
+					password: 'sckj@2022',
+				},
+				rules: {
+					username: [
+						{ required: true, message: '手机号不能为空', trigger: ['blur', 'change'] },
+						{ len: 11, message: '手机号应为11位数字', trigger: ['blur', 'change'] },
+					],
+					password: [
+						{ required: true, message: '密码不能为空', trigger: ['blur', 'change'] },
+						{ min: 6, message: '密码长度应大于6位', trigger: ['blur', 'change'] },
+					]
+				},
 			}
 		},
-		methods: {
+		onReady() {
+			this.$refs.loginForm.setRules(this.rules)
+		},
 
+		methods: {
+			submitForm() {
+				this.$refs.loginForm.validate().then(() => {
+					login(this.form).then((res) => {
+						if (res.code === 200) {
+							const { data } = res
+							setToken(data.access_token)
+							uni.reLaunch({ url: '/pages/index/index' })
+						} else {
+							toast(res.msg)
+						}
+					})
+				}).catch(() => {})
+			},
+			quickLogin() {
+				console.log('quick login');
+			}
 		}
 	}
 </script>
 
 <style lang="scss">
-	@import "uview-ui/index.scss";
 </style>