Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-promotion-wechat
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-promotion-wechat
Commits
96e38f31
提交
96e38f31
authored
3月 05, 2025
作者:
lidongxu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
'补充完毕登录页面'
上级
782ec655
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
116 行增加
和
51 行删除
+116
-51
pages.json
pages.json
+3
-1
login.vue
pages/login.vue
+90
-32
register.vue
pages/register.vue
+5
-2
start.vue
pages/start.vue
+1
-2
index.vue
pages/work/index.vue
+6
-6
user.js
store/modules/user.js
+10
-7
request.js
utils/request.js
+1
-1
没有找到文件。
pages.json
浏览文件 @
96e38f31
...
@@ -60,7 +60,8 @@
...
@@ -60,7 +60,8 @@
"van-button"
:
"wxcomponents/@vant/weapp/button/index"
,
"van-button"
:
"wxcomponents/@vant/weapp/button/index"
,
"van-icon"
:
"wxcomponents/@vant/weapp/icon/index"
,
"van-icon"
:
"wxcomponents/@vant/weapp/icon/index"
,
"van-image"
:
"wxcomponents/@vant/weapp/image/index"
,
"van-image"
:
"wxcomponents/@vant/weapp/image/index"
,
"van-uploader"
:
"wxcomponents/@vant/weapp/uploader/index"
"van-uploader"
:
"wxcomponents/@vant/weapp/uploader/index"
,
"van-checkbox"
:
"wxcomponents/@vant/weapp/checkbox/index"
}
}
}
}
}
}
\ No newline at end of file
pages/login.vue
浏览文件 @
96e38f31
...
@@ -9,27 +9,56 @@
...
@@ -9,27 +9,56 @@
<view
class=
"login-form-content"
>
<view
class=
"login-form-content"
>
<!-- 登录按钮 -->
<!-- 登录按钮 -->
<view
class=
"action-btn"
>
<view
class=
"action-btn"
>
<view
class=
"mark-btn"
@
click=
"loginMark"
v-if=
"!agreeProtocol"
></view>
<button
open-type=
"getPhoneNumber"
<button
open-type=
"getPhoneNumber"
@
getphonenumber=
"getPhoneNumber"
@
getphonenumber=
"getPhoneNumber"
class=
"login-btn cu-btn block bg-blue lg round"
>
手机号登录
</button>
class=
"login-btn cu-btn block bg-blue lg round"
>
手机号登录
</button>
</view>
</view>
<view
class=
"xieyi text-center"
>
<view
class=
"xieyi text-center"
>
<text
class=
"text-grey1"
>
登录即代表同意
</text>
<van-checkbox
:value=
"agreeProtocol"
@
change=
"agreeFn"
></van-checkbox>
<text
class=
"text-grey1"
>
阅读并同意协议
</text>
<text
@
click=
"$refs.agreementDialog.open()"
<text
@
click=
"$refs.agreementDialog.open()"
class=
"text-blue"
>
《用户协议》
</text>
class=
"text-blue"
>
《用户协议》
</text>
</view>
</view>
</view>
</view>
<uni-popup
ref=
"agreementDialog"
<uni-popup
ref=
"agreementDialog"
mask-click
type=
"dialog"
>
type=
"dialog"
>
<uni-popup-dialog
type=
"info"
<uni-popup-dialog
type=
"info"
confirmText=
"同意"
confirmText=
"同意"
:showClose=
"false"
@
confirm=
"dialogConfirm"
title=
"用户协议"
>
title=
"小卤通 小程序隐私保护指引"
>
<p>
本指引是小卤通小程序开发者 北京王小卤网络科技有限公司(以下简称“开发者”)为处理你的个人信息而制定。
</p>
<h4>
开发者处理的信息
</h4>
<p>
根据法律规定,开发者仅处理实现小程序功能所必要的信息。
</p>
<ul
class=
"agreement_ul"
>
<ul
class=
"agreement_ul"
>
<li>
1.当前小程序仅限王小卤-促销员活动上报使用
</li>
<li>
为了注册促销员账号,开发者将在获取你的明示同意后,收集你的微信昵称、头像。
</li>
<li>
2.小程序需经您同意,获取您的手机号登录当前系统
</li>
<li>
为了锁定上下班打卡地点,开发者将在获取你的明示同意后,收集你的位置信息。
</li>
<li>
3.您的手机号仅用于系统登录,领导联系"
</li>
<li>
开发者 收集你选中的照片或视频信息,用于上传推广照片。
</li>
<li>
为了拍摄推广照片,开发者将在获取你的明示同意后,访问你的摄像头。
</li>
<li>
为了使用手机号注册/登录小程序,开发者将在获取你的明示同意后,收集你的手机号。
</li>
</ul>
</ul>
<h4>
第三方插件信息/SDK信息
</h4>
<p>
关于你的个人信息,你可以通过以下方式与开发者联系,行使查阅、复制、更正、删除等法定权利。
若你在小程序中注册了账号,你可以通过以下方式与开发者联系,申请注销你在小程序中使用的账号。在受理你的申请后,开发者承诺在十五个工作日内完成核查和处理,并按照法律法规要求处理你的相关信息。
</p>
<ul
class=
"agreement_ul"
>
<li>
邮箱:liqiulin@wangxiaolu.com.cn
</li>
</ul>
<h4>
你的权益
</h4>
<p>
关于你的个人信息,你可以通过以下方式与开发者联系,行使查阅、复制、更正、删除等法定权利。
</p>
<h4>
开发者对信息的存储
</h4>
<p>
开发者将会在本指引所明示的用途内使用收集的信息
如开发者使用你的信息超出本指引目的或合理范围,开发者必须在变更使用目的或范围前,再次以小程序通知方式告知并征得你的明示同意。
</p>
<h4>
信息的使用规则
</h4>
<p>
开发者将会在本指引所明示的用途内使用收集的信息
开发者承诺,不会对外公开披露你的信息,如必须公开披露时,开发者应当向你告知公开披露的目的、披露信息的类型及可能涉及的信息,并征得你的单独同意。
</p>
<h4>
信息对外提供
</h4>
<p>
邮箱 : liqiulin@wangxiaolu.com.cn
</p>
<p>
更新日期:2025-02-26
</p>
<p>
生效日期:2025-02-26
</p>
</uni-popup-dialog>
</uni-popup-dialog>
</uni-popup>
</uni-popup>
</view>
</view>
...
@@ -43,57 +72,59 @@ import constant from '../utils/constant';
...
@@ -43,57 +72,59 @@ import constant from '../utils/constant';
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
globalConfig
:
getApp
().
globalData
.
config
globalConfig
:
getApp
().
globalData
.
config
,
agreeProtocol
:
false
}
}
},
},
methods
:
{
methods
:
{
loginMark
()
{
this
.
$modal
.
msgError
(
'请先勾选同意协议'
)
},
// 手机号登录
// 手机号登录
async
getPhoneNumber
(
e
)
{
async
getPhoneNumber
(
e
)
{
// 判断是否提供手机号
if
(
!
e
.
detail
.
code
)
{
return
this
.
$modal
.
msgError
(
"请选择手机号登录"
)
}
this
.
$modal
.
loading
(
"登录中,请耐心等待..."
)
this
.
$modal
.
loading
(
"登录中,请耐心等待..."
)
// 通过微信小程序 API 获取手机号
// 通过微信小程序 API 获取手机号
const
[
,
phoneRes
]
=
await
uni
.
request
({
const
[
err
,
{
data
:
{
phone_info
:
{
phoneNumber
}
}
}
]
=
await
uni
.
request
({
url
:
`https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=
${
getWxAccessToken
()}
`
,
url
:
`https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=
${
getWxAccessToken
()}
`
,
method
:
'POST'
,
method
:
'POST'
,
data
:
{
data
:
{
code
:
e
.
detail
.
code
code
:
e
.
detail
.
code
}
}
})
})
if
(
err
)
return
this
.
$modal
.
msgError
(
'微信 API 获取手机号出错'
)
// 调用微信登录接口,获取 openID
// 调用微信登录接口,获取 openID
const
openId
=
await
this
.
$store
.
dispatch
(
'WxLogin'
)
const
openId
=
await
this
.
$store
.
dispatch
(
'getOpenId'
)
// 调用后台接口,判断手机号是否注册过
// 调用自己后台登录接口
// 注册过跳转到首页打卡,否则去注册页面
const
loginRes
=
await
this
.
$store
.
dispatch
(
'Login'
,
{
phoneNumber
,
openId
})
const
res
=
await
this
.
$store
.
dispatch
(
'Login'
,
{
phoneNumber
:
phoneRes
.
data
.
phone_info
.
phoneNumber
,
openId
:
openId
})
// 手机号从未注册过-需要填写资料完成注册
// 未注册过跳转到注册信息页面
if
(
loginRes
.
code
===
3004
)
{
if
(
res
.
code
===
3004
)
{
setTimeout
(()
=>
{
setTimeout
(()
=>
{
this
.
$tab
.
reLaunch
(
'/pages/register'
)
this
.
$tab
.
reLaunch
(
'/pages/register'
)
},
1500
)
},
1500
)
}
else
{
}
else
{
// 之前注册提交过资料,直接登录成功去首页
storage
.
set
(
constant
.
loginPhone
,
phoneNumber
)
this
.
$tab
.
reLaunch
(
'/pages/home/index'
)
this
.
$tab
.
reLaunch
(
'/pages/home/index'
)
}
}
storage
.
set
(
constant
.
loginPhone
,
phoneRes
.
data
.
phone_info
.
phoneNumber
)
this
.
$modal
.
closeLoading
()
this
.
$modal
.
closeLoading
()
},
},
fail
:
function
()
{
// 同意协议
console
.
log
(
'后端解密手机号失败'
);
dialogConfirm
()
{
this
.
agreeProtocol
=
true
},
agreeFn
(
e
)
{
this
.
agreeProtocol
=
e
.
detail
}
}
},
}
// // 登录成功后,处理函数
// async loginSuccess(result) {
// // 设置用户信息
// await this.$store.dispatch('GetInfo')
// await this.getAuth()
// this.$tab.reLaunch('/pages/home/index')
// },
// 登录成功后,开始获取各种权限
// async getAuth() {
// // 获取地址位置
// return this.$store.dispatch('GetLocation')
// }
}
}
</
script
>
</
script
>
...
@@ -109,6 +140,17 @@ page {
...
@@ -109,6 +140,17 @@ page {
}
}
}
}
.uni-popup-dialog
{
height
:
70vh
;
overflow
:
scroll
;
.uni-dialog-content
{
display
:
flex
;
flex-direction
:
column
!
important
;
}
}
.normal-login-container
{
.normal-login-container
{
width
:
100%
;
width
:
100%
;
...
@@ -130,6 +172,20 @@ page {
...
@@ -130,6 +172,20 @@ page {
margin-top
:
15%
;
margin-top
:
15%
;
width
:
80%
;
width
:
80%
;
.action-btn
{
position
:
relative
;
.mark-btn
{
position
:
absolute
;
left
:
0
;
top
:
0
;
width
:
100%
;
height
:
100%
;
background-color
:
transparent
;
z-index
:
10000
;
}
}
.input-item
{
.input-item
{
margin
:
20px
auto
;
margin
:
20px
auto
;
background-color
:
#f5f6f7
;
background-color
:
#f5f6f7
;
...
@@ -164,6 +220,8 @@ page {
...
@@ -164,6 +220,8 @@ page {
.xieyi
{
.xieyi
{
color
:
#333
;
color
:
#333
;
margin-top
:
20px
;
margin-top
:
20px
;
display
:
flex
;
justify-content
:
center
;
}
}
.login-code
{
.login-code
{
...
...
pages/register.vue
浏览文件 @
96e38f31
<
template
>
<
template
>
<view
class=
"normal-register-container"
>
<view
class=
"normal-register-container"
>
<!-- 基础表单校验 -->
<!-- 基础表单校验 -->
<uni-forms
ref=
"valiForm"
<uni-forms
ref=
"valiForm"
:rules=
"rules"
:rules=
"rules"
...
@@ -44,6 +45,7 @@
...
@@ -44,6 +45,7 @@
</uni-forms-item>
</uni-forms-item>
<button
class=
"bg-blue register-btn"
<button
class=
"bg-blue register-btn"
@
click=
"submit('valiForm')"
>
注册完成
</button>
@
click=
"submit('valiForm')"
>
注册完成
</button>
<view>
本手机号第一次注册,请补充资料完成注册登录
</view>
</uni-forms>
</uni-forms>
</view>
</view>
</
template
>
</
template
>
...
@@ -56,6 +58,7 @@ import constant from '../utils/constant'
...
@@ -56,6 +58,7 @@ import constant from '../utils/constant'
export
default
{
export
default
{
created
()
{
created
()
{
this
.
phone
=
storage
.
get
(
constant
.
loginPhone
)
this
.
phone
=
storage
.
get
(
constant
.
loginPhone
)
this
.
openId
=
storage
.
get
(
constant
.
loginOpenId
)
this
.
openId
=
storage
.
get
(
constant
.
loginOpenId
)
// this.formData.avatarUrl = this.user.avatarUrl
// this.formData.avatarUrl = this.user.avatarUrl
...
@@ -102,7 +105,7 @@ export default {
...
@@ -102,7 +105,7 @@ export default {
async
selectIdenPhotoFrontFn
(
obj
)
{
async
selectIdenPhotoFrontFn
(
obj
)
{
this
.
formData
.
idenFrontUrl
=
await
uploadFile
(
`avatarAndIdentify/
${
this
.
phone
}
/
${
this
.
phone
}
-frontId.png`
,
obj
.
tempFiles
[
0
].
path
)
this
.
formData
.
idenFrontUrl
=
await
uploadFile
(
`avatarAndIdentify/
${
this
.
phone
}
/
${
this
.
phone
}
-frontId.png`
,
obj
.
tempFiles
[
0
].
path
)
},
},
async
selectIdenPhotoBackFn
(
obj
){
async
selectIdenPhotoBackFn
(
obj
)
{
this
.
formData
.
idenBackUrl
=
await
uploadFile
(
`avatarAndIdentify/
${
this
.
phone
}
/
${
this
.
phone
}
-backId.png`
,
obj
.
tempFiles
[
0
].
path
)
this
.
formData
.
idenBackUrl
=
await
uploadFile
(
`avatarAndIdentify/
${
this
.
phone
}
/
${
this
.
phone
}
-backId.png`
,
obj
.
tempFiles
[
0
].
path
)
},
},
submit
(
ref
)
{
submit
(
ref
)
{
...
@@ -193,7 +196,7 @@ page {
...
@@ -193,7 +196,7 @@ page {
}
}
}
}
.register-btn
{
.register-btn
{
border-radius
:
50rpx
;
border-radius
:
50rpx
;
}
}
}
}
...
...
pages/start.vue
浏览文件 @
96e38f31
...
@@ -9,9 +9,8 @@
...
@@ -9,9 +9,8 @@
export
default
{
export
default
{
mounted
()
{
mounted
()
{
setTimeout
(()
=>
{
setTimeout
(()
=>
{
// 跳转到登录页面
this
.
$tab
.
redirectTo
(
'/pages/login'
)
this
.
$tab
.
redirectTo
(
'/pages/login'
)
},
15
00
)
},
20
00
)
}
}
}
}
</
script
>
</
script
>
...
...
pages/work/index.vue
浏览文件 @
96e38f31
...
@@ -56,18 +56,18 @@ export default {
...
@@ -56,18 +56,18 @@ export default {
// 获取推广照片列表
// 获取推广照片列表
async
getPromotionPhotoFn
()
{
async
getPromotionPhotoFn
()
{
const
res
=
await
getPromotionPhotoRecordAPI
(
this
.
$store
.
getters
.
user
.
id
)
const
res
=
await
getPromotionPhotoRecordAPI
(
this
.
$store
.
getters
.
user
.
id
)
this
.
afterTryFileList
=
res
.
data
.
tgscPhotoUrls
?.
map
(
o
=>
({
this
.
afterTryFileList
=
res
.
data
.
tgscPhotoUrls
?
res
.
data
.
tgscPhotoUrls
?.
map
(
o
=>
({
url
:
o
,
url
:
o
,
type
:
'image'
type
:
'image'
}))
}))
:
[]
this
.
afterInterFileList
=
res
.
data
.
tghdPhotoUrls
?.
map
(
o
=>
({
this
.
afterInterFileList
=
res
.
data
.
tghdPhotoUrls
?
res
.
data
.
tghdPhotoUrls
?.
map
(
o
=>
({
url
:
o
,
url
:
o
,
type
:
'image'
type
:
'image'
}))
}))
:
[]
this
.
afterDealFileList
=
res
.
data
.
tgcjPhotoUrls
?.
map
(
o
=>
({
this
.
afterDealFileList
=
res
.
data
.
tgcjPhotoUrls
?
res
.
data
.
tgcjPhotoUrls
?.
map
(
o
=>
({
url
:
o
,
url
:
o
,
type
:
'image'
type
:
'image'
}))
}))
:
[]
},
},
// 推广试吃
// 推广试吃
async
afterTry
(
event
)
{
async
afterTry
(
event
)
{
...
...
store/modules/user.js
浏览文件 @
96e38f31
...
@@ -49,26 +49,29 @@ const user = {
...
@@ -49,26 +49,29 @@ const user = {
actions
:
{
actions
:
{
// 微信登录(获取 openId)
// 微信登录(获取 openId)
WxLogin
({
commit
})
{
getOpenId
({
commit
})
{
return
new
Promise
(
async
(
resolve
,
reject
)
=>
{
return
new
Promise
(
async
(
resolve
,
reject
)
=>
{
// 调用微信登录接口,获取一次性 code
// 调用微信登录接口,获取一次性 code
const
[,
loginRes
]
=
await
uni
.
login
({
const
[
loginErr
,
loginRes
]
=
await
uni
.
login
({
provider
:
'weixin'
provider
:
'weixin'
})
})
// 通过 code 获取永久唯一身份标识 openid
// 通过 code 获取永久唯一身份标识 openid
const
[,
openRes
]
=
await
uni
.
request
({
const
[
openErr
,
openRes
]
=
await
uni
.
request
({
url
:
`https://api.weixin.qq.com/sns/jscode2session?appid=
${
config
.
wxAppId
}
&secret=
${
config
.
wxSecret
}
&js_code=
${
loginRes
.
code
}
&grant_type=authorization_code`
url
:
`https://api.weixin.qq.com/sns/jscode2session?appid=
${
config
.
wxAppId
}
&secret=
${
config
.
wxSecret
}
&js_code=
${
loginRes
.
code
}
&grant_type=authorization_code`
});
});
commit
(
'SET_OPENID'
,
openRes
.
data
.
openid
)
if
(
loginErr
||
openErr
)
{
resolve
(
openRes
.
data
.
openid
)
reject
(
loginErr
||
openErr
)
}
else
{
commit
(
'SET_OPENID'
,
openRes
.
data
.
openid
)
resolve
(
openRes
.
data
.
openid
)
}
})
})
},
},
// 手机号+openId 促销员登录,获取 token 和个人信息
// 手机号+openId 促销员登录,获取 token 和个人信息
Login
({
commit
},
{
phoneNumber
,
openId
})
{
Login
({
commit
},
{
phoneNumber
,
openId
})
{
return
new
Promise
(
async
(
resolve
,
reject
)
=>
{
return
new
Promise
(
async
(
resolve
,
reject
)
=>
{
const
{
data
}
=
await
loginAPI
({
const
{
data
}
=
await
loginAPI
({
phone
:
phoneNumber
,
phone
:
phoneNumber
,
...
...
utils/request.js
浏览文件 @
96e38f31
...
@@ -51,7 +51,7 @@ const request = config => {
...
@@ -51,7 +51,7 @@ const request = config => {
toast
(
msg
)
toast
(
msg
)
reject
(
'500'
)
reject
(
'500'
)
}
else
if
(
code
!==
200
)
{
}
else
if
(
code
!==
200
)
{
//
toast(msg)
toast
(
msg
)
if
(
code
===
3017
)
{
if
(
code
===
3017
)
{
console
.
log
(
'登录状态 token 过期了'
)
console
.
log
(
'登录状态 token 过期了'
)
// 重新登录
// 重新登录
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论