diff --git a/.vscode/settings.json b/.vscode/settings.json
index 3e631c8..226e472 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -33,5 +33,8 @@
"editor.tabSize": 2,
"[wxml]": {
"editor.defaultFormatter": "wechat.miniprogram.wxml-language-features"
+ },
+ "[css]": {
+ "editor.defaultFormatter": "HookyQR.beautify"
}
}
diff --git a/app.json b/app.json
index bb07cc2..5d0303b 100644
--- a/app.json
+++ b/app.json
@@ -2,10 +2,13 @@
"pages": [
"pages/home/home",
"pages/login/login",
+ "pages/login/authorize-avatar-name/index",
+ "pages/login/phone-register/index",
"pages/usercenter/index",
"pages/usercenter/person-info/index",
"pages/usercenter/address/list/index",
"pages/usercenter/address/edit/index",
+ "pages/usercenter/set/index",
"pages/goods/list/index",
"pages/goods/details/index",
"pages/goods/category/index",
diff --git a/package.json b/package.json
index 9f66c13..fb4f344 100644
--- a/package.json
+++ b/package.json
@@ -24,6 +24,7 @@
]
},
"dependencies": {
+ "@vant/weapp": "^1.10.19",
"dayjs": "^1.9.3",
"tdesign-miniprogram": "^1.0.0",
"tslib": "^1.11.1"
diff --git a/pages/login/authorize-avatar-name/index.js b/pages/login/authorize-avatar-name/index.js
new file mode 100644
index 0000000..c8e10ca
--- /dev/null
+++ b/pages/login/authorize-avatar-name/index.js
@@ -0,0 +1,107 @@
+// pages/login/authorize-avatar-name/index.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ image: "https://cdn-we-retail.ym.tencent.com/miniapp/usercenter/icon-user-center-avatar@2x.png",
+ },
+
+ login() {
+ var that = this;
+ // 基础库要在2.27.1以下才可以使用
+ wx.getUserProfile({
+ //获取用户信息。页面产生点击事件(例如 button 上 bindtap 的回调中)后才可调用,每次请求都会弹出授权窗口,用户同意后返回 userInfo,用于替换 wx.getUserInfo
+ lang: 'zh_CN',
+ desc: '用于在后台更好的识别您的身份', //声明获取用户个人信息后的用途
+ success(user) {
+ //接口调用成功的回调函数
+ const data = {
+ encryptedData: user.encryptedData,
+ iv: user.iv,
+ // signature: user.signature,
+ // rawData: user.rawData,
+ userInfo: user.userInfo,
+ };
+
+ // app.request({
+ // url: `login`,
+ // method: 'POST',
+ // data: data,
+ // success: async function (res) {
+ // // wx.setStorageSync('userInfo', res);
+ // app.put('userInfo', res, 86400);
+ // const userInfo = app.get('userInfo');
+
+ // // 如果第一次登录就注册一个客户账号
+
+
+ // },
+ // });
+ },
+ fail() {
+ wx.switchTab({
+ url: '/pages/home/home',
+ });
+ },
+ });
+ },
+
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/login/authorize-avatar-name/index.json b/pages/login/authorize-avatar-name/index.json
new file mode 100644
index 0000000..f01f281
--- /dev/null
+++ b/pages/login/authorize-avatar-name/index.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "t-avatar": "tdesign-miniprogram/avatar/avatar",
+ "van-button": "@vant/weapp/button/index"
+ },
+ "navigationBarTitleText": "授权登录"
+}
\ No newline at end of file
diff --git a/pages/login/authorize-avatar-name/index.wxml b/pages/login/authorize-avatar-name/index.wxml
new file mode 100644
index 0000000..25ad392
--- /dev/null
+++ b/pages/login/authorize-avatar-name/index.wxml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 申请获取以下权限
+ 获得你的公开信息(昵称、头像等)
+
+
+
+
+ 授权登录
+
+ 暂不登录
+
+
+
\ No newline at end of file
diff --git a/pages/login/authorize-avatar-name/index.wxss b/pages/login/authorize-avatar-name/index.wxss
new file mode 100644
index 0000000..b743276
--- /dev/null
+++ b/pages/login/authorize-avatar-name/index.wxss
@@ -0,0 +1,61 @@
+/* pages/login/authorize-avatar-name/index.wxss */
+
+.mainContainer {
+ width: 85%;
+ margin: 0 auto;
+}
+
+/* 头部头像盒子 */
+.top-avatar-box {
+ margin-top: 50rpx;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+}
+
+.avatar-img-box {
+ width: 180rpx;
+ height: 180rpx;
+ border-radius: 50%;
+ overflow: hidden;
+ padding: 5rpx;
+ box-shadow: 0 0 15rpx 5rpx #e8e8e8;
+}
+
+.avatar-img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+}
+
+.avatar-line {
+ width: 100%;
+ height: 1px;
+ background-color: #e3e3e3;
+ margin-top: 50rpx;
+}
+
+
+/* 权限文字盒子 */
+.authorize-content-box {
+ margin: 80rpx 0;
+}
+
+.authorize-content-title {
+ font-size: 35rpx;
+ margin-bottom:40rpx;
+ color: #585858;
+}
+
+.authorize-content-text{
+ font-size:30rpx;
+ color: #888888;
+}
+
+
+/* 授权按钮盒子 */
+.authorize-btn{
+ margin-bottom: 25rpx;
+}
+
diff --git a/pages/login/login.js b/pages/login/login.js
index 458784e..092a499 100644
--- a/pages/login/login.js
+++ b/pages/login/login.js
@@ -1,93 +1,58 @@
// pages/login/login.js
-const app = getApp();
+import {
+ login
+} from '~/services/login/login';
Page({
/**
* 页面的初始数据
*/
data: {
- back: true,
- code: '',
+ bg_image: "",
+ checked: true,
+ code: ""
},
- login() {
- var that = this;
- wx.getUserProfile({
- //获取用户信息。页面产生点击事件(例如 button 上 bindtap 的回调中)后才可调用,每次请求都会弹出授权窗口,用户同意后返回 userInfo,用于替换 wx.getUserInfo
- lang: 'zh_CN',
- desc: '用于在后台更好的识别您的身份', //声明获取用户个人信息后的用途
- success(user) {
- //接口调用成功的回调函数
- const data = {
- encryptedData: user.encryptedData,
- iv: user.iv,
- // signature: user.signature,
- // rawData: user.rawData,
- code: that.data.code,
- };
- // console.log(data);
+ // 获取手机号
+ getPhoneNumber(e) {
+ let that = this
+ if (e.detail.code) {
+ let phoneCode = e.detail.code
+ let data = {
+ CustomerXcxOpenid: that.data.code,
+ Code: phoneCode
+ }
- app.request({
- url: `login`,
- method: 'POST',
- data: data,
- success: async function (res) {
- // wx.setStorageSync('userInfo', res);
- app.put('userInfo', res, 86400);
- const userInfo = app.get('userInfo');
+ // 登录请求
+ login(data)
+ } else {}
+ },
- // 如果第一次登录就注册一个客户账号
- app.request({
- url: `login/addCustomer`,
- method: 'POST',
- data: {
- CustomerId: 0,
- CustomerGuid: 0,
- CustomerXcxOpenid: userInfo.openId,
- CustomerXcxName: userInfo.nickName,
- CustomerXcxImg: userInfo.avatarUrl,
- CustomerSex: userInfo.gender,
- },
- success(res) {
- app.put('Authorization', res.data, 86400);
-
- const pages = getCurrentPages(); //获取小程序页面栈
- const beforePage = pages[pages.length - 2]; //获取上个页面的实例对象 -3是上上一个页面
- that.setData({
- back: false,
- });
- wx.navigateBack({
- delta: 2,
- });
- beforePage.onLoad();
- // console.log(wx.getStorageSync('userInfo'));
- wx.showToast({
- icon: 'success',
- title: '登录成功',
- });
- },
- });
- },
- });
- },
- fail() {
- wx.switchTab({
- url: '/pages/home/home',
- });
- },
+ // 跳转到手机号登录
+ gotoPhoneRegister() {
+ wx.navigateTo({
+ url: `/pages/login/phone-register/index`,
});
},
+
+ // 选择是否已同意
+ onChangeChecked() {
+ this.setData({
+ checked: !this.data.checked
+ })
+ },
+
/**
* 生命周期函数--监听页面加载
*/
onLoad() {
- var that = this;
-
+ let that = this
+ // 获取OpenId
wx.login({
success(res) {
that.setData({
- code: res.code,
- });
+ code: res.code
+ })
},
});
},
@@ -111,17 +76,9 @@ Page({
* 生命周期函数--监听页面卸载
*/
onUnload() {
- var that = this;
- //设置缓存允许下次跳转登录页
- wx.setStorage({
- key: 'isshowLogin',
- data: false,
+ wx.navigateTo({
+ url: `/pages/home/home`
});
- if (that.data.back === true) {
- wx.reLaunch({
- url: '/pages/home/home',
- });
- }
},
/**
@@ -138,4 +95,4 @@ Page({
* 用户点击右上角分享
*/
onShareAppMessage() {},
-});
+});
\ No newline at end of file
diff --git a/pages/login/login.json b/pages/login/login.json
index c6b900b..0a1b88a 100644
--- a/pages/login/login.json
+++ b/pages/login/login.json
@@ -1,4 +1,7 @@
{
- "usingComponents": {},
+ "usingComponents": {
+ "van-button": "@vant/weapp/button/index",
+ "van-checkbox": "@vant/weapp/checkbox/index"
+ },
"navigationBarTitleText": "授权登录"
-}
+}
\ No newline at end of file
diff --git a/pages/login/login.wxml b/pages/login/login.wxml
index e2b1368..604820a 100644
--- a/pages/login/login.wxml
+++ b/pages/login/login.wxml
@@ -1,8 +1,30 @@
-
-
-
- 授权登录
- 快转铺请求授权以下消息
- 获取您的公开信息(名称、头像等)
- 授权名称/头像
+
+
+
+
+
+
+
+
+
+
+
+
+ 微信一键登录
+
+ 手机号登录/注册
+
+
+
+
+
+ 我已阅读并同意
+ 《阿尔文电商用户协议》
+ 《阿尔文电商隐私政策》
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/login/login.wxss b/pages/login/login.wxss
index 6f21075..aa4faf5 100644
--- a/pages/login/login.wxss
+++ b/pages/login/login.wxss
@@ -1,44 +1,61 @@
-/* pages/login/login.wxss */
-page{
- background-color: black;
-}
-.loginBox{
- width: 75%;
- display: flex;
- flex-wrap: wrap;
- margin: 0 auto;
- padding: 30rpx;
- margin-top: 50%;
- background-color: white;
-}
-.loginBox .title{
+
+/* 背景图盒子 */
+.bg-box{
width: 100%;
- text-align: center;
- font-size: 38rpx;
- font-weight: 600;
- margin-bottom: 5rpx;
+ height: 100vh;
+ position: absolute;
+ top: 0;
+ left: 0;
+ overflow: hidden;
+ z-index: -1;
}
-.loginBox .NeedLabel{
- display: flex;
- align-items: center;
- color: rgb(190, 190, 190);
- font-size: 30rpx;
- margin: 15rpx 0;
-}
-.NeedLabel view{
- width: 15rpx;
- height: 15rpx;
- border-radius: 50%;
- margin-right: 15rpx;
- background-color: rgb(190, 190, 190);
-}
-.loginBox .button{
+.bg-box-img{
width: 100%;
- text-align: center;
- padding: 25rpx 0;
- border-radius: 15rpx;
- color: white;
- font-size: 36rpx;
- background-color: rgb(30, 153, 30);
-}
\ No newline at end of file
+ height: 100%;
+}
+
+
+
+
+/* 登录盒子 */
+.login-pos-box{
+ height: 100vh;
+ position: relative;
+ display: flex;
+ justify-content: center;
+}
+
+.login-container-box{
+ width: 90%;
+ position: absolute;
+ bottom: 25%;
+ height: 430rpx;
+ background-color: white;
+ border-radius: 20rpx;
+}
+
+.login-box{
+ padding: 50rpx 40rpx;
+}
+
+.phone-btn{
+ color: black !important;
+ font-weight: bold;
+}
+
+.agree-box{
+ margin-top: 50rpx;
+ display: flex;
+}
+
+.agree-text{
+ font-size: 25rpx;
+ color: #555555;
+ margin-top: -3rpx;
+}
+
+.agree-link{
+ font-size: 26rpx;
+ color: red;
+}
diff --git a/pages/login/phone-register/index.js b/pages/login/phone-register/index.js
new file mode 100644
index 0000000..5f47eb1
--- /dev/null
+++ b/pages/login/phone-register/index.js
@@ -0,0 +1,115 @@
+// pages/login/phone-register/index.js
+import {
+ sendPhoneCode
+} from '~/services/login/phone-register';
+
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ logoImg: "https://tool.aerwen.net/prod-api/Open/20230602/8969EAF2294B1FF4.png",
+ phoneNumber: "", //手机号
+ phoneError: false, // 手机号验证
+ verifyCode: "", //验证码
+ },
+
+
+ /** 发送验证码 */
+ send() {
+ if (!this.data.phoneNumber) {
+ wx.showToast({
+ icon: 'error',
+ title: '请输入手机号',
+ });
+ return;
+ }
+ const isPhoneNumber = /^[1][3,4,5,7,8,9][0-9]{9}$/.test(this.data.phoneNumber);
+ if(!isPhoneNumber){
+ wx.showToast({
+ icon: 'error',
+ title: '手机号格式不正确',
+ });
+ return;
+ }
+
+ let data = {
+ PhoneNumber: this.data.phoneNumber,
+ }
+ sendPhoneCode(data)
+ },
+
+
+ /** 手机号验证 */
+ onPhoneInput(e) {
+ const {
+ phoneError
+ } = this.data;
+ const isPhoneNumber = /^[1][3,4,5,7,8,9][0-9]{9}$/.test(e.detail.value);
+ if (phoneError === isPhoneNumber) {
+ this.setData({
+ phoneError: !isPhoneNumber,
+ phoneNumber: e.detail.value,
+ });
+ }
+ },
+
+
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad(options) {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面显示
+ */
+ onShow() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面隐藏
+ */
+ onHide() {
+
+ },
+
+ /**
+ * 生命周期函数--监听页面卸载
+ */
+ onUnload() {
+
+ },
+
+ /**
+ * 页面相关事件处理函数--监听用户下拉动作
+ */
+ onPullDownRefresh() {
+
+ },
+
+ /**
+ * 页面上拉触底事件的处理函数
+ */
+ onReachBottom() {
+
+ },
+
+ /**
+ * 用户点击右上角分享
+ */
+ onShareAppMessage() {
+
+ }
+})
\ No newline at end of file
diff --git a/pages/login/phone-register/index.json b/pages/login/phone-register/index.json
new file mode 100644
index 0000000..c5eacd0
--- /dev/null
+++ b/pages/login/phone-register/index.json
@@ -0,0 +1,7 @@
+{
+ "usingComponents": {
+ "t-input": "tdesign-miniprogram/input/input",
+ "van-button": "@vant/weapp/button/index"
+ },
+ "navigationBarTitleText": ""
+}
\ No newline at end of file
diff --git a/pages/login/phone-register/index.wxml b/pages/login/phone-register/index.wxml
new file mode 100644
index 0000000..7c530b1
--- /dev/null
+++ b/pages/login/phone-register/index.wxml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+ 阿尔文电商
+ 一家有感情的电商模板
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 发送验证码
+
+
+
+
+
+ 登录/注册
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/login/phone-register/index.wxss b/pages/login/phone-register/index.wxss
new file mode 100644
index 0000000..131feec
--- /dev/null
+++ b/pages/login/phone-register/index.wxss
@@ -0,0 +1,43 @@
+/* 手机号登录页Css */
+
+/* Logo盒子 */
+.logo-box{
+ margin-top: 50rpx;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ text-align: center;
+}
+
+.logo-img{
+ width: 230rpx;
+ height: 230rpx;
+}
+
+.logo-title{
+ font-size: 40rpx;
+ letter-spacing: 4rpx;
+ font-weight: bold;
+}
+
+.logo-text{
+ font-size: 28rpx;
+ margin-top: 20rpx;
+ color: #999999;
+ letter-spacing: 2rpx;
+}
+
+
+/* 表单 */
+.register-form{
+ margin-top: 100rpx;
+}
+.register-form-box{
+ width: 90%;
+ margin: 0 auto;
+}
+
+.submit-btn{
+ margin-top: 50rpx;
+}
\ No newline at end of file
diff --git a/pages/usercenter/components/user-center-card/index.js b/pages/usercenter/components/user-center-card/index.js
index 47593c4..2b801aa 100644
--- a/pages/usercenter/components/user-center-card/index.js
+++ b/pages/usercenter/components/user-center-card/index.js
@@ -31,5 +31,8 @@ Component({
gotoUserEditPage() {
this.triggerEvent('gotoUserEditPage');
},
+ gotoLogin(){
+ wx.navigateTo({ url: '/pages/login/login' });
+ }
},
});
diff --git a/pages/usercenter/components/user-center-card/index.wxml b/pages/usercenter/components/user-center-card/index.wxml
index ad11e7d..110abe8 100644
--- a/pages/usercenter/components/user-center-card/index.wxml
+++ b/pages/usercenter/components/user-center-card/index.wxml
@@ -1,7 +1,11 @@
+
+ var toHide = function (array) { var mphone = array.substring(0, 3) + '****' + array.substring(7); return mphone; }
+ module.exports.toHide = toHide;
+
-