Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
transport-show-h5
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
transport-show-h5
Commits
99f9990d
提交
99f9990d
authored
8月 26, 2020
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
页面初始化创建游客用户
上级
fe03411b
隐藏空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
118 行增加
和
93 行删除
+118
-93
account.js
src/api/account.js
+4
-0
base_api.js
src/api/base_api.js
+6
-6
CourseItem2.vue
src/components/CourseItem2.vue
+25
-8
Before.js
src/components/beforeEnter/Before.js
+3
-0
main.js
src/main.js
+1
-7
courseChapter.vue
src/pages/course/learn/components/courseChapter.vue
+4
-1
item.vue
src/pages/course/learn/item.vue
+1
-14
update.vue
src/pages/my/alarm/components/update.vue
+7
-30
index.vue
src/pages/my/alarm/index.vue
+11
-2
index.js
src/router/index.js
+3
-0
routes.js
src/router/routes.js
+4
-8
index.js
src/store/index.js
+49
-17
没有找到文件。
src/api/account.js
浏览文件 @
99f9990d
...
@@ -43,3 +43,7 @@ export function bindVisitor(data) {
...
@@ -43,3 +43,7 @@ export function bindVisitor(data) {
export
function
getIsVip
()
{
export
function
getIsVip
()
{
return
httpRequest
.
get
(
'/zy/user/is-vip'
)
return
httpRequest
.
get
(
'/zy/user/is-vip'
)
}
}
// 创建游客用户
export
function
createGuestUser
()
{
return
httpRequest
.
get
(
'/zy/user/create-guest-user'
)
}
src/api/base_api.js
浏览文件 @
99f9990d
...
@@ -2,6 +2,7 @@ import axios from 'axios'
...
@@ -2,6 +2,7 @@ import axios from 'axios'
import
_
from
'lodash'
import
_
from
'lodash'
import
store
from
'../store'
import
store
from
'../store'
import
router
from
'../router'
import
router
from
'../router'
export
default
class
API
{
export
default
class
API
{
constructor
(
config
)
{
constructor
(
config
)
{
/* 创建一个 自定义配置axios实例 */
/* 创建一个 自定义配置axios实例 */
...
@@ -15,9 +16,6 @@ export default class API {
...
@@ -15,9 +16,6 @@ export default class API {
baseURL
:
config
.
apiBaseURL
||
''
,
baseURL
:
config
.
apiBaseURL
||
''
,
/* 即将被发送的自定义请求头 */
/* 即将被发送的自定义请求头 */
headers
:
{
headers
:
{
// Accept: '*/*',
// cookie: 'VEdULTgxNy1nLW5ULWMwWjlESnNpMGVLaEw4M3VwZFN4SDhJLUZzMHo2aEVPcHJUWHoyTGNCbGhPZWpCR0o2Y1BFTnRBc1hKSHZNLXNlcnZlckBAQDE5Mi4xNjguMTAuMTQ1QEBATW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM18yXzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzEzLjAuMyBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMUBAQDY2NDU1NjUyNDc1ODUyNTU0MjQ=',
// 'Accept-Language': '',
'Content-Type'
:
'application/x-www-form-urlencoded'
'Content-Type'
:
'application/x-www-form-urlencoded'
}
}
})
})
...
@@ -34,9 +32,11 @@ export default class API {
...
@@ -34,9 +32,11 @@ export default class API {
const
beforeSuccess
=
_config
.
beforeSuccess
?
_config
.
beforeSuccess
:
this
.
_reqSuccess
const
beforeSuccess
=
_config
.
beforeSuccess
?
_config
.
beforeSuccess
:
this
.
_reqSuccess
/* 具体执行请求失败后业务逻辑前,先执行该方法 */
/* 具体执行请求失败后业务逻辑前,先执行该方法 */
const
beforeFail
=
_config
.
beforeFail
?
_config
.
beforeFail
:
this
.
_reqFail
const
beforeFail
=
_config
.
beforeFail
?
_config
.
beforeFail
:
this
.
_reqFail
const
guestUser
=
store
.
state
.
guestUser
||
{}
const
headers
=
{
const
headers
=
{
tenant
:
'transport'
tenant
:
'transport'
,
// 'Content-Type': 'application/x-www-form-urlencoded'
userId
:
guestUser
.
user_id
,
studentId
:
guestUser
.
student_id
}
}
_config
.
headers
=
_
.
assignIn
(
_config
.
headers
,
headers
)
_config
.
headers
=
_
.
assignIn
(
_config
.
headers
,
headers
)
/* 判别 传输方式 */
/* 判别 传输方式 */
...
@@ -114,7 +114,7 @@ export default class API {
...
@@ -114,7 +114,7 @@ export default class API {
}
}
}
}
if
(
status
===
500
)
{
if
(
status
===
500
)
{
window
.
alert
(
res
.
response
.
message
)
window
.
alert
(
data
.
message
)
}
}
}
}
err
=
new
Error
(
JSON
.
stringify
(
res
.
response
))
err
=
new
Error
(
JSON
.
stringify
(
res
.
response
))
...
...
src/components/CourseItem2.vue
浏览文件 @
99f9990d
...
@@ -6,15 +6,23 @@
...
@@ -6,15 +6,23 @@
<div
class=
"course-item-content"
>
<div
class=
"course-item-content"
>
<div
class=
"course-item__title"
>
{{
data
.
title
}}
</div>
<div
class=
"course-item__title"
>
{{
data
.
title
}}
</div>
<div
class=
"course-item__tools"
>
<div
class=
"course-item__tools"
>
<div
class=
"course-item__text course-item__text__course"
>
含
{{
data
.
course_num
}}
节课
</div>
<div>
<div
class=
"course-item__text course-item__text__freevideo"
>
{{
data
.
free_video_num
}}
个免费视频
</div>
</div>
<div
class=
"course-item__text course-item__text__video"
>
{{
data
.
video_num
}}
节视频课
</div>
<div
class=
"course-item__text course-item__text__video"
>
{{
data
.
video_num
}}
节视频课
</div>
<div
class=
"course-item__text course-item__text__course"
>
含
{{
data
.
course_num
}}
节课
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"course-item-bottom"
v-show=
"isOpen"
>
<div
class=
"course-item-bottom"
v-show=
"isOpen"
>
<div
class=
"course-child"
v-for=
"item in data.child"
:key=
"item.id"
@
click=
"onClick(item)"
>
<div
{{
item
.
course_name
}}
class=
"course-child"
</div>
v-for=
"item in data.child"
:key=
"item.id"
@
click=
"onClick(item)"
>
{{
item
.
course_name
}}
</div>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
...
@@ -65,7 +73,7 @@ export default {
...
@@ -65,7 +73,7 @@ export default {
.course-item-pic
{
.course-item-pic
{
width
:
3
.15rem
;
width
:
3
.15rem
;
height
:
2rem
;
height
:
2rem
;
margin-right
:
10px
;
margin-right
:
0
.15rem
;
overflow
:
hidden
;
overflow
:
hidden
;
}
}
.course-item-content
{
.course-item-content
{
...
@@ -86,22 +94,31 @@ export default {
...
@@ -86,22 +94,31 @@ export default {
.course-item__text
{
.course-item__text
{
display
:
inline-block
;
display
:
inline-block
;
height
:
0
.48rem
;
height
:
0
.48rem
;
margin-left
:
0
.15rem
;
padding
:
0
0
.2rem
;
padding
:
0
0
.2rem
;
font-size
:
0
.24rem
;
font-size
:
0
.24rem
;
line-height
:
0
.48rem
;
line-height
:
0
.48rem
;
text-align
:
center
;
box-sizing
:
border-box
;
}
}
.course-item__text
:first-child
{
.course-item__text
+
.course-item__text
{
margin-left
:
0
;
margin-left
:
0
.1rem
;
}
}
.course-item__text__course
{
.course-item__text__course
{
color
:
#fff
;
color
:
#fff
;
background-color
:
#75b0ff
;
background-color
:
#75b0ff
;
}
}
.course-item__text__video
{
.course-item__text__video
{
min-width
:
1
.8rem
;
color
:
#fff
;
color
:
#fff
;
background-color
:
#5ad0b2
;
background-color
:
#5ad0b2
;
}
}
.course-item__text__freevideo
{
min-width
:
1
.8rem
;
margin-bottom
:
0
.1rem
;
color
:
#fff
;
background-color
:
#d05a5a
;
}
.course-child
{
.course-child
{
font-size
:
13px
;
font-size
:
13px
;
color
:
#666
;
color
:
#666
;
...
...
src/components/beforeEnter/Before.js
浏览文件 @
99f9990d
...
@@ -5,6 +5,9 @@ export default class Before {
...
@@ -5,6 +5,9 @@ export default class Before {
}
}
async
update
(
to
,
from
,
next
)
{
async
update
(
to
,
from
,
next
)
{
// 创建游客用户
await
store
.
dispatch
(
'createGuestUser'
)
if
(
to
.
meta
.
requiredLogin
)
{
if
(
to
.
meta
.
requiredLogin
)
{
const
isLogin
=
store
.
state
.
isLogin
||
(
await
store
.
dispatch
(
'checkLogin'
))
const
isLogin
=
store
.
state
.
isLogin
||
(
await
store
.
dispatch
(
'checkLogin'
))
if
(
isLogin
)
{
if
(
isLogin
)
{
...
...
src/main.js
浏览文件 @
99f9990d
import
Vue
from
'vue'
// 引入vue框架
import
Vue
from
'vue'
// 引入vue框架
import
VueRouter
from
'vue-router'
// 使用 vue-router
import
router
from
'./router'
// router定义
import
router
from
'./router'
// router定义
import
store
from
'
@
/store'
import
store
from
'
.
/store'
import
VueI18n
from
'vue-i18n'
// 使用 国际化
import
VueI18n
from
'vue-i18n'
// 使用 国际化
import
createI18n
from
'./assets/languages'
// 国际化定义
import
createI18n
from
'./assets/languages'
// 国际化定义
import
App
from
'./app.vue'
// 初始化 vue页面
import
App
from
'./app.vue'
// 初始化 vue页面
import
'./style.scss'
// 公共样式
import
'./style.scss'
// 公共样式
import
'./assets/rem/rem.js'
import
'./assets/rem/rem.js'
...
@@ -24,7 +22,6 @@ Vue.use(Vant)
...
@@ -24,7 +22,6 @@ Vue.use(Vant)
require
(
'promise.prototype.finally'
).
shim
()
require
(
'promise.prototype.finally'
).
shim
()
/* 兼容处理 end */
/* 兼容处理 end */
Vue
.
use
(
VueRouter
)
Vue
.
use
(
VueI18n
)
Vue
.
use
(
VueI18n
)
const
i18n
=
createI18n
()
const
i18n
=
createI18n
()
...
@@ -57,6 +54,3 @@ window.G.$instance_vue = new Vue({
...
@@ -57,6 +54,3 @@ window.G.$instance_vue = new Vue({
i18n
,
i18n
,
render
:
h
=>
h
(
App
)
render
:
h
=>
h
(
App
)
}).
$mount
(
'#app'
)
}).
$mount
(
'#app'
)
// 获取环境
store
.
dispatch
(
'getEnv'
)
src/pages/course/learn/components/courseChapter.vue
浏览文件 @
99f9990d
...
@@ -7,7 +7,10 @@
...
@@ -7,7 +7,10 @@
</
template
>
</
template
>
<ul>
<ul>
<li
v-for=
"subItem in item.children"
:key=
"subItem.id"
@
click=
"onClick(subItem)"
>
<li
v-for=
"subItem in item.children"
:key=
"subItem.id"
@
click=
"onClick(subItem)"
>
<div
class=
"name"
>
{{subItem.name}}
</div>
<div
class=
"name"
>
{{subItem.name}}
<
template
v-if=
"subItem.free"
>
(免费)
</
template
>
</div>
<!-- <div class="progress">{{subItem.video_progress | progressText}}</div> -->
<!-- <div class="progress">{{subItem.video_progress | progressText}}</div> -->
</li>
</li>
</ul>
</ul>
...
...
src/pages/course/learn/item.vue
浏览文件 @
99f9990d
...
@@ -24,7 +24,6 @@
...
@@ -24,7 +24,6 @@
</template>
</template>
<
script
>
<
script
>
import
{
random
}
from
'lodash'
import
CourseChapter
from
'./components/courseChapter.vue'
import
CourseChapter
from
'./components/courseChapter.vue'
import
CourseTag
from
'../tag/index.vue'
import
CourseTag
from
'../tag/index.vue'
import
*
as
api
from
'@/api/course.js'
import
*
as
api
from
'@/api/course.js'
...
@@ -46,9 +45,6 @@ export default {
...
@@ -46,9 +45,6 @@ export default {
computed
:
{
computed
:
{
courseId
()
{
courseId
()
{
return
this
.
$route
.
params
.
id
return
this
.
$route
.
params
.
id
},
isVip
()
{
return
this
.
$store
.
state
.
isVip
}
}
},
},
methods
:
{
methods
:
{
...
@@ -68,16 +64,7 @@ export default {
...
@@ -68,16 +64,7 @@ export default {
}
}
},
},
beforeMount
()
{
beforeMount
()
{
// 检测是否是付费用户
this
.
getCourse
()
this
.
$store
.
dispatch
(
'checkIsVip'
).
then
(
isVip
=>
{
if
(
isVip
)
{
this
.
getCourse
()
}
else
{
const
routes
=
{
0
:
'/pay'
,
1
:
'/payPage'
}
const
path
=
routes
[
random
(
1
)]
||
'/pay'
this
.
$router
.
replace
(
path
)
}
})
}
}
}
}
</
script
>
</
script
>
...
...
src/pages/my/alarm/components/update.vue
浏览文件 @
99f9990d
...
@@ -4,12 +4,12 @@
...
@@ -4,12 +4,12 @@
<div
class=
"alarm-form"
>
<div
class=
"alarm-form"
>
<div
class=
"alarm-form-time"
>
<div
class=
"alarm-form-time"
>
<div
class=
"alarm-form-time__lable"
>
提醒时间
</div>
<div
class=
"alarm-form-time__lable"
>
提醒时间
</div>
<van-picker
<van-
datetime-
picker
v-model=
"ruleForm.time"
v-model=
"ruleForm.time"
:columns=
"timeColumns"
type=
"time"
:filter=
"filter"
:item-height=
"30"
:item-height=
"30"
:default-index=
"defaultIndex"
:show-toolbar=
"false"
@
change=
"onChangeTime"
/>
/>
</div>
</div>
<div
class=
"alarm-form-item"
>
<div
class=
"alarm-form-item"
>
...
@@ -35,12 +35,7 @@ export default {
...
@@ -35,12 +35,7 @@ export default {
name
:
'AlarmUpdate'
,
name
:
'AlarmUpdate'
,
props
:
{
props
:
{
isUpdate
:
{
type
:
Boolean
,
default
:
false
},
isUpdate
:
{
type
:
Boolean
,
default
:
false
},
data
:
{
data
:
{
type
:
Object
,
default
:
()
=>
({})
}
type
:
Object
,
default
()
{
return
{}
}
}
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -50,7 +45,6 @@ export default {
...
@@ -50,7 +45,6 @@ export default {
status
:
1
status
:
1
},
},
weeks
:
[
'周一'
,
'周二'
,
'周三'
,
'周四'
,
'周五'
,
'周六'
,
'周日'
],
weeks
:
[
'周一'
,
'周二'
,
'周三'
,
'周四'
,
'周五'
,
'周六'
,
'周日'
],
defaultIndex
:
13
,
submitLoading
:
false
submitLoading
:
false
}
}
},
},
...
@@ -62,7 +56,6 @@ export default {
...
@@ -62,7 +56,6 @@ export default {
return
return
}
}
const
weeks
=
data
.
week_json
?
JSON
.
parse
(
data
.
week_json
)
:
[]
const
weeks
=
data
.
week_json
?
JSON
.
parse
(
data
.
week_json
)
:
[]
this
.
defaultIndex
=
this
.
timeColumns
.
findIndex
(
item
=>
item
===
data
.
time
)
this
.
ruleForm
=
Object
.
assign
({},
this
.
ruleForm
,
data
,
{
this
.
ruleForm
=
Object
.
assign
({},
this
.
ruleForm
,
data
,
{
week_json
:
weeks
week_json
:
weeks
})
})
...
@@ -73,10 +66,6 @@ export default {
...
@@ -73,10 +66,6 @@ export default {
title
()
{
title
()
{
return
this
.
isUpdate
?
'修改提醒时间'
:
'新增提醒时间'
return
this
.
isUpdate
?
'修改提醒时间'
:
'新增提醒时间'
},
},
// 时间选择项
timeColumns
()
{
return
this
.
genTimeColumns
()
},
// 重复类型
// 重复类型
selectedResultType
()
{
selectedResultType
()
{
const
weeks
=
this
.
ruleForm
.
week_json
.
sort
()
const
weeks
=
this
.
ruleForm
.
week_json
.
sort
()
...
@@ -155,22 +144,9 @@ export default {
...
@@ -155,22 +144,9 @@ export default {
},
},
filter
(
type
,
options
)
{
filter
(
type
,
options
)
{
if
(
type
===
'minute'
)
{
if
(
type
===
'minute'
)
{
return
options
.
filter
(
option
=>
option
%
30
===
0
)
return
options
.
filter
(
option
=>
option
%
5
===
0
)
}
}
return
options
return
options
},
// 生成提醒时间数据
genTimeColumns
()
{
const
columns
=
[]
for
(
let
i
=
0
;
i
<=
23
;
i
++
)
{
const
temp
=
i
<
10
?
`0
${
i
}
`
:
i
columns
.
push
(
`
${
temp
}
:00`
)
columns
.
push
(
`
${
temp
}
:30`
)
}
return
columns
},
onChangeTime
(
picker
,
value
,
index
)
{
this
.
ruleForm
.
time
=
value
}
}
}
}
}
}
...
@@ -193,6 +169,7 @@ export default {
...
@@ -193,6 +169,7 @@ export default {
.alarm-form-time
{
.alarm-form-time
{
position
:
relative
;
position
:
relative
;
margin-bottom
:
20px
;
margin-bottom
:
20px
;
padding
:
0
60px
;
}
}
.alarm-form-time__lable
{
.alarm-form-time__lable
{
position
:
absolute
;
position
:
absolute
;
...
...
src/pages/my/alarm/index.vue
浏览文件 @
99f9990d
...
@@ -11,7 +11,7 @@
...
@@ -11,7 +11,7 @@
</
template
>
</
template
>
<van-empty
description=
"暂无内容"
v-else
/>
<van-empty
description=
"暂无内容"
v-else
/>
<div
class=
"add-button"
>
<div
class=
"add-button"
>
<div
class=
"inner"
@
click=
"
popupVisible = true
"
></div>
<div
class=
"inner"
@
click=
"
onAdd
"
></div>
</div>
</div>
<!-- 添加/修改 -->
<!-- 添加/修改 -->
<van-popup
v-model=
"popupVisible"
position=
"bottom"
@
closed=
"onClosed"
>
<van-popup
v-model=
"popupVisible"
position=
"bottom"
@
closed=
"onClosed"
>
...
@@ -49,6 +49,7 @@ export default {
...
@@ -49,6 +49,7 @@ export default {
popupVisible
:
false
,
popupVisible
:
false
,
isUpdate
:
false
,
isUpdate
:
false
,
activeItem
:
null
,
activeItem
:
null
,
hasFollow
:
false
,
followPopupVisible
:
false
followPopupVisible
:
false
}
}
},
},
...
@@ -56,7 +57,8 @@ export default {
...
@@ -56,7 +57,8 @@ export default {
// 检查是否关注公众号
// 检查是否关注公众号
checkFollowWechat
()
{
checkFollowWechat
()
{
api
.
checkFollowWechat
().
then
(
response
=>
{
api
.
checkFollowWechat
().
then
(
response
=>
{
this
.
followPopupVisible
=
!
response
.
flag
this
.
hasFollow
=
response
.
flag
this
.
followPopupVisible
=
!
this
.
hasFollow
})
})
},
},
// 获取提醒列表
// 获取提醒列表
...
@@ -85,6 +87,13 @@ export default {
...
@@ -85,6 +87,13 @@ export default {
onClosed
()
{
onClosed
()
{
this
.
isUpdate
=
false
this
.
isUpdate
=
false
this
.
activeItem
=
null
this
.
activeItem
=
null
},
onAdd
()
{
if
(
this
.
hasFollow
)
{
this
.
popupVisible
=
true
}
else
{
this
.
followPopupVisible
=
true
}
}
}
},
},
beforeMount
()
{
beforeMount
()
{
...
...
src/router/index.js
浏览文件 @
99f9990d
import
Vue
from
'vue'
import
Router
from
'vue-router'
import
Router
from
'vue-router'
import
routes
from
'./routes'
import
routes
from
'./routes'
Vue
.
use
(
Router
)
export
default
new
Router
({
export
default
new
Router
({
routes
,
routes
,
mode
:
'history'
,
// 还有一个 hash 默认
mode
:
'history'
,
// 还有一个 hash 默认
...
...
src/router/routes.js
浏览文件 @
99f9990d
...
@@ -79,22 +79,19 @@ export default [
...
@@ -79,22 +79,19 @@ export default [
{
{
path
:
'/course/learn/:id'
,
path
:
'/course/learn/:id'
,
name
:
'courseLearnItem'
,
name
:
'courseLearnItem'
,
component
:
()
=>
import
(
'../pages/course/learn/item.vue'
),
component
:
()
=>
import
(
'../pages/course/learn/item.vue'
)
meta
:
{
requiredLogin
:
true
}
},
},
// 课程学习详情
// 课程学习详情
{
{
path
:
'/course/learn/:id/tag'
,
path
:
'/course/learn/:id/tag'
,
name
:
'courseLearnTag'
,
name
:
'courseLearnTag'
,
component
:
()
=>
import
(
'../pages/course/tag/index.vue'
),
component
:
()
=>
import
(
'../pages/course/tag/index.vue'
)
meta
:
{
requiredLogin
:
true
}
},
},
// 课程知识点
// 课程知识点
{
{
path
:
'/course/learn/:courseId/tag/:chapterId'
,
path
:
'/course/learn/:courseId/tag/:chapterId'
,
name
:
'courseTag'
,
name
:
'courseTag'
,
component
:
()
=>
import
(
'../pages/course/tag/list.vue'
),
component
:
()
=>
import
(
'../pages/course/tag/list.vue'
)
meta
:
{
requiredLogin
:
true
}
},
},
// 课程知识点详情
// 课程知识点详情
{
{
...
@@ -106,8 +103,7 @@ export default [
...
@@ -106,8 +103,7 @@ export default [
{
{
path
:
'/course/tag/:id'
,
path
:
'/course/tag/:id'
,
name
:
'courseTagItem'
,
name
:
'courseTagItem'
,
component
:
()
=>
import
(
'../pages/course/tag/item.vue'
),
component
:
()
=>
import
(
'../pages/course/tag/item.vue'
)
meta
:
{
requiredLogin
:
true
}
},
},
// 登录
// 登录
{
{
...
...
src/store/index.js
浏览文件 @
99f9990d
...
@@ -2,15 +2,17 @@ import Vue from 'vue'
...
@@ -2,15 +2,17 @@ import Vue from 'vue'
import
Vuex
from
'vuex'
import
Vuex
from
'vuex'
import
Cookies
from
'js-cookie'
import
Cookies
from
'js-cookie'
import
{
getUser
,
logout
,
getIsVip
}
from
'@/api/account'
import
{
getUser
,
logout
,
getIsVip
,
createGuestUser
}
from
'@/api/account'
Vue
.
use
(
Vuex
)
Vue
.
use
(
Vuex
)
export
default
new
Vuex
.
Store
({
const
store
=
new
Vuex
.
Store
({
state
:
{
state
:
{
user
:
{},
user
:
{},
token
:
''
,
token
:
''
,
isVip
:
false
,
isVip
:
false
,
isLogin
:
false
,
isLogin
:
false
,
isWeapp
:
/miniProgram/
.
test
(
navigator
.
userAgent
)
isWeapp
:
/miniProgram/
.
test
(
navigator
.
userAgent
),
guestUser
:
{
user_id
:
''
,
student_id
:
''
}
},
},
mutations
:
{
mutations
:
{
setToken
(
state
,
token
)
{
setToken
(
state
,
token
)
{
...
@@ -27,6 +29,10 @@ export default new Vuex.Store({
...
@@ -27,6 +29,10 @@ export default new Vuex.Store({
},
},
setIsVip
(
state
,
isVip
)
{
setIsVip
(
state
,
isVip
)
{
state
.
isVip
=
isVip
state
.
isVip
=
isVip
},
setGuestUser
(
state
,
user
)
{
state
.
guestUser
=
user
window
.
localStorage
.
setItem
(
'guestUser'
,
JSON
.
stringify
(
user
))
}
}
},
},
actions
:
{
actions
:
{
...
@@ -40,6 +46,15 @@ export default new Vuex.Store({
...
@@ -40,6 +46,15 @@ export default new Vuex.Store({
commit
(
'setUser'
,
response
)
commit
(
'setUser'
,
response
)
})
})
},
},
// 退出登录
logout
({
commit
})
{
return
logout
().
then
(
response
=>
{
commit
(
'setUser'
,
{})
commit
(
'setIsLogin'
,
false
)
return
response
})
},
// 检测登录状态
async
checkLogin
({
commit
})
{
async
checkLogin
({
commit
})
{
const
isLogin
=
await
getUser
()
const
isLogin
=
await
getUser
()
.
then
(
response
=>
{
.
then
(
response
=>
{
...
@@ -55,22 +70,39 @@ export default new Vuex.Store({
...
@@ -55,22 +70,39 @@ export default new Vuex.Store({
commit
(
'setIsLogin'
,
isLogin
)
commit
(
'setIsLogin'
,
isLogin
)
return
isLogin
return
isLogin
},
},
logout
({
commit
})
{
// 检测是否付费
return
logout
().
then
(
response
=>
{
commit
(
'setUser'
,
{})
commit
(
'setIsLogin'
,
false
)
return
response
})
},
async
checkIsVip
({
commit
,
state
})
{
async
checkIsVip
({
commit
,
state
})
{
if
(
state
.
isVip
)
{
if
(
!
state
.
isVip
)
{
return
state
.
isVip
await
getIsVip
().
then
(
response
=>
commit
(
'setIsVip'
,
response
.
is_vip
))
}
}
const
isVip
=
await
getIsVip
()
return
state
.
isVip
.
then
(
response
=>
response
.
is_vip
)
},
.
catch
(()
=>
false
)
// 创建游客用户
commit
(
'setIsVip'
,
isVip
)
async
createGuestUser
({
commit
,
state
})
{
return
isVip
const
{
user_id
:
userId
,
student_id
:
studentId
}
=
state
.
guestUser
if
(
!
userId
||
!
studentId
)
{
await
createGuestUser
().
then
(
response
=>
commit
(
'setGuestUser'
,
response
))
}
return
state
.
guestUser
},
// 加载本地游客信息
loadGuestUser
({
commit
,
state
})
{
const
localGuestUser
=
window
.
localStorage
.
getItem
(
'guestUser'
)
let
guestUser
=
{
user_id
:
''
,
student_id
:
''
}
if
(
localGuestUser
)
{
try
{
guestUser
=
JSON
.
parse
(
localGuestUser
)
}
catch
(
error
)
{
console
.
log
(
error
)
}
}
commit
(
'setGuestUser'
,
guestUser
)
}
}
}
}
})
})
export
default
store
// 获取环境
store
.
dispatch
(
'getEnv'
)
store
.
dispatch
(
'loadGuestUser'
)
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论