Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
CFFP-HB
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chao Sun
CFFP-HB
Commits
b30043d5
Commit
b30043d5
authored
Jan 05, 2023
by
sunerhu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.修改登陆页面暂时隐藏注册邀请码
2.修改项目中日期格式不正确。 3.添加公共js 日期文件
parent
ca779ad8
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
529 additions
and
302 deletions
+529
-302
components/login/login.vue
+2
-2
components/myteam/time-picker.vue
+7
-4
manifest.json
+12
-0
pages/courseDetail/courseDetail.vue
+86
-40
pages/invitationRegister/invitationlogin.vue
+1
-1
pages/myPoints/myPoints.vue
+6
-4
pages/myShare/myShare.vue
+80
-57
pages/orderConfirm/orderConfirm.vue
+277
-193
pages/saleCourseLists/saleCourseLists.vue
+3
-1
util/currentDate.js
+55
-0
No files found.
components/login/login.vue
View file @
b30043d5
...
...
@@ -12,9 +12,9 @@
{{
loginTypeName
}}
</view>
<form>
<view
class=
"inputItem"
v-if=
"loginType==='register'"
>
<!--
<view
class=
"inputItem"
v-if=
"loginType==='register'"
>
<input
class=
"uni-input"
name=
"invitationCode"
placeholder=
"输入邀请码(非必填)"
v-model=
"invitation_code"
/>
</view>
</view>
-->
<view
class=
"inputItem"
v-if=
"loginType!=='agentlogin'"
>
<input
class=
"uni-input"
name=
"mobileNo"
placeholder=
"输入手机号"
v-model=
"form.mobile"
maxlength=
"11"
/>
</view>
...
...
components/myteam/time-picker.vue
View file @
b30043d5
...
...
@@ -10,6 +10,7 @@
</
template
>
<
script
>
import
{
fmdata
}
from
'@/util/currentDate.js'
export
default
{
props
:{
fields
:{
...
...
@@ -22,16 +23,18 @@
name
:
"time-picker"
,
data
()
{
return
{
queryDate
:
`
${
new
Date
().
getFullYear
()}
-
${
new
Date
().
getMonth
()
+
1
}
`
,
queryDate
:
fmdata
(
new
Date
(),
'M'
),
// queryDate: `${new Date().getFullYear()}-${new Date().getMonth() + 1}`,
maxDate
:
`
${
new
Date
().
getFullYear
()}
-
${
new
Date
().
getMonth
()
+
1
}
`
,
};
},
mounted
()
{
if
(
this
.
fields
==
"month"
){
this
.
queryDate
=
`
${
new
Date
().
getFullYear
()}
-
${
new
Date
().
getMonth
()
+
1
}
`
// this.queryDate = `${new Date().getFullYear()}-${new Date().getMonth() + 1}`
this
.
queryDate
=
fmdata
(
new
Date
(),
'M'
);
}
else
if
(
this
.
fields
==
"year"
)
{
this
.
queryDate
=
`
${
new
Date
().
getFullYear
()}
`
console
.
log
(
this
.
queryDate
,
'cak'
)
//
this.queryDate = `${new Date().getFullYear()}`
this
.
queryDate
=
fmdata
(
new
Date
(),
'Y'
);
}
else
{
return
false
}
...
...
manifest.json
View file @
b30043d5
...
...
@@ -136,6 +136,10 @@
}
}
}
},
"nvueLaunchMode"
:
""
,
"uniStatistics"
:
{
"enable"
:
false
}
},
/*
快应用特有相关
*/
...
...
@@ -187,6 +191,14 @@
}
}
}
},
"uniStatistics"
:
{
"enable"
:
false
},
"optimization"
:
{
"treeShaking"
:
{
"enable"
:
true
}
}
},
"_spaceID"
:
"mp-68e17e23-e517-4839-8210-27480303cc51"
,
...
...
pages/courseDetail/courseDetail.vue
View file @
b30043d5
...
...
@@ -22,8 +22,8 @@
<!-- v-show="!sliceshare" -->
<view
class=
"courseBannerBox"
v-if=
"!sliceshare"
>
<video
v-if=
"isRenderVideo"
id=
"myVideo"
:src=
"courseInfo.filePathOss"
:initial-time=
"viewTime"
object-fit=
"contain"
class=
"videoBox"
:poster=
"courseInfo.fileFirstImage"
:title=
"courseInfo.fileTitle"
@
play=
"playVideo"
@
pause=
"pause"
@
timeupdate=
"timeupdate"
style=
"width: 100vw;height: 320rpx;"
></video>
object-fit=
"contain"
class=
"videoBox"
:poster=
"courseInfo.fileFirstImage"
:title=
"courseInfo.fileTitle"
@
play=
"playVideo"
@
pause=
"pause"
@
timeupdate=
"timeupdate"
style=
"width: 100vw;height: 320rpx;"
></video>
</view>
<!-- 课程详情图 -->
...
...
@@ -39,6 +39,17 @@
</view>
<text>
唤醒App
</text>
</view>
<!-- v-if="isWeixin == true" -->
<!--
<view
class=
"awakenApp"
>
<wx-open-launch-app
id=
"launch-btn"
appid=
"wxb591d0034cdcf0cd"
extinfo=
"extinfo"
>
<script
type=
"text/wxtag-template"
>
<button
class=
"btn"
>
打开/下载App
</button>
</script>
</wx-open-launch-app>
</view>
-->
<strong>
</strong>
</view>
</view>
<view
class=
"dataBox"
>
...
...
@@ -139,6 +150,7 @@
},
data
()
{
return
{
isWeixin
:
false
,
isRenderVideo
:
false
,
fileId
:
null
,
lecturerId
:
null
,
...
...
@@ -170,9 +182,9 @@
shareCode
:
null
,
sharelogin
:
false
,
startTime
:
''
,
newCourseInfo
:{},
isPauseFlag
:
true
,
CONFIG
:
{
newCourseInfo
:
{},
isPauseFlag
:
true
,
CONFIG
:
{
android
:
'https://a.app.qq.com/o/simple.jsp?pkgname=com.xiaoxiao.shihaoo'
,
ios
:
'https://apps.apple.com/cn/app/%E6%98%AF%E5%A5%BD/id1457958161'
,
scheme
:
'com.qdxxzy.user://'
...
...
@@ -188,9 +200,9 @@
this
.
userId
=
val
uni
.
setStorageSync
(
'cffp_userId'
,
this
.
userId
);
this
.
courseDetail
();
setTimeout
(()
=>
{
setTimeout
(()
=>
{
this
.
getuserRead
(
this
.
courseInfo
.
status
)
},
500
)
},
500
)
}
else
{
this
.
sharelogin
=
false
}
...
...
@@ -250,7 +262,6 @@
jumpapp
()
{
let
platform
=
uni
.
getSystemInfoSync
().
platform
if
(
platform
==
'ios'
)
{
// var loadDateTime = new Date();
window
.
location
.
href
=
"https://mcffp.anjibao.cn/app/"
;
// window.setTimeout(function() { //如果没有安装app,便会执行setTimeout跳转下载页
// var timeOutDateTime = new Date();
...
...
@@ -262,28 +273,16 @@
// }, 500);
}
else
if
(
platform
==
'android'
)
{
window
.
location
.
href
=
"cffpapp://"
;
// window.open('cffpapp://');
// var loadDateTime = new Date();
// window.setTimeout(function() { //如果没有安装app,便会执行setTimeout跳转下载页
// var timeOutDateTime = new Date();
// if (timeOutDateTime - loadDateTime
<
500
)
{
// } else {
// // window.location = "https://mdev.anjibao.cn/cffp/app.ipa"; //ios下载地址
// window.location = "www.baidu.com"; //ios下载地址
// }
// }, 500);
// window.location.href = "cffpapp://";
}
},
goBack
()
{
let
back
=
getCurrentPages
();
if
(
back
&&
back
.
length
>
1
)
{
if
(
back
&&
back
.
length
>
1
)
{
uni
.
navigateBack
({
delta
:
1
});
}
else
{
}
else
{
history
.
back
();
}
},
...
...
@@ -413,7 +412,7 @@
}
if
(
this
.
courseInfo
.
status
==
2
)
{
this
.
findVideoPlayback
();
}
else
{
}
else
{
this
.
isRenderVideo
=
true
;
}
}
...
...
@@ -450,16 +449,16 @@
});
}
else
{
this
.
videoContext
.
pause
();
if
(
this
.
fileId
!=
item
.
fileId
)
{
if
(
this
.
fileId
!=
item
.
fileId
)
{
// 当点击的课程和当前播放的课程不一致时,执行此方法
uni
.
showLoading
({
title
:
'加载中'
});
this
.
newCourseInfo
=
{
fileId
:
item
.
fileId
,
packFileId
:
item
.
packFileId
,
fileId
:
item
.
fileId
,
packFileId
:
item
.
packFileId
,
}
if
(
this
.
isPauseFlag
)
{
if
(
this
.
isPauseFlag
)
{
this
.
pause
()
}
}
...
...
@@ -478,8 +477,8 @@
viewTime
:
Math
.
floor
(
this
.
viewTime
),
playbackStatus
:
this
.
viewTime
>=
this
.
totalTime
?
'2'
:
'1'
}
return
new
Promise
((
resolve
,
reject
)
=>
{
if
(
this
.
viewTime
==
0
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
if
(
this
.
viewTime
==
0
)
{
resolve
(
'success'
);
return
;
}
...
...
@@ -488,10 +487,10 @@
this
.
playbackId
=
res
[
'data'
][
'id'
];
console
.
log
(
'save已经执行完毕'
);
resolve
(
'success'
);
}
else
{
}
else
{
reject
(
'fail'
)
}
}).
catch
((
err
)
=>
{
}).
catch
((
err
)
=>
{
reject
(
'fail'
)
})
})
...
...
@@ -509,7 +508,7 @@
api
.
findVideoPlayback
(
param
).
then
(
res
=>
{
if
(
res
[
'success'
])
{
this
.
videoPlaybackInfo
=
res
[
'data'
];
console
.
log
(
'查询视频播放轨迹结果====='
,
this
.
videoPlaybackInfo
)
console
.
log
(
'查询视频播放轨迹结果====='
,
this
.
videoPlaybackInfo
)
this
.
viewTime
=
this
.
videoPlaybackInfo
.
viewTime
this
.
viewTime
=
this
.
videoPlaybackInfo
.
viewTime
?
this
.
videoPlaybackInfo
.
viewTime
:
0
;
this
.
totalTime
=
this
.
videoPlaybackInfo
.
totalTime
?
this
.
videoPlaybackInfo
.
totalTime
:
0
;
...
...
@@ -518,7 +517,7 @@
// 跳转到指定位置
this
.
videoContext
.
seek
(
this
.
viewTime
);
uni
.
hideLoading
();
}
else
{
}
else
{
this
.
isRenderVideo
=
true
;
this
.
totalTime
=
this
.
viewTime
=
0
;
// 跳转到指定位置
...
...
@@ -529,9 +528,9 @@
},
// 点击播放
playVideo
(
e
)
{
console
.
log
(
'playVideo'
,
this
.
totalTime
,
this
.
viewTime
)
console
.
log
(
'playVideo'
,
this
.
totalTime
,
this
.
viewTime
)
this
.
isPauseFlag
=
false
;
if
(
this
.
viewTime
>=
this
.
totalTime
)
{
if
(
this
.
viewTime
>=
this
.
totalTime
)
{
this
.
viewTime
=
0
;
this
.
videoContext
.
seek
(
this
.
viewTime
);
}
...
...
@@ -547,14 +546,14 @@
},
// // 暂停播放
async
pause
()
{
if
(
this
.
courseInfo
.
status
!=
1
){
if
(
this
.
courseInfo
.
status
!=
1
)
{
console
.
log
(
'pause'
)
this
.
isPauseFlag
=
true
;
if
(
this
.
timer
)
{
clearInterval
(
this
.
timer
)
}
const
result
=
await
this
.
saveVideoPlayback
()
if
(
result
==
'success'
&&
this
.
newCourseInfo
.
fileId
)
{
if
(
result
==
'success'
&&
this
.
newCourseInfo
.
fileId
)
{
console
.
log
(
'新的课程要进行赋值查询了'
)
this
.
fileId
=
this
.
newCourseInfo
.
fileId
;
this
.
courseInfo
.
packFileId
=
this
.
newCourseInfo
.
packFileId
;
...
...
@@ -615,6 +614,27 @@
var
url
=
window
.
location
.
href
.
split
(
'#'
)[
0
]
hshare
(
data
,
url
)
},
// 唤醒app 测试
JsApiTicketApi
()
{
let
WxConfigRequestVO
=
{
url
:
window
.
location
.
href
.
split
(
'#'
)[
0
],
systemType
:
'1'
}
api
.
Wxshare
(
WxConfigRequestVO
).
then
(
res
=>
{
console
.
log
(
res
,
'第三步'
);
jWeixin
.
config
({
debug
:
false
,
//调试的时候需要 在app上回弹出errmg:config ok 的时候就证明没问题了 这时候就可以改为false
appId
:
res
.
data
.
appId
,
//appid
timestamp
:
res
.
data
.
timestamp
,
//时间戳
nonceStr
:
res
.
data
.
nonceStr
,
//随机串
signature
:
res
.
data
.
signature
,
//签名
jsApiList
:
res
.
data
.
jsApiList
//必填 是下面需要用到的方法集合
})
if
(
callback
)
{
callback
()
}
})
},
},
...
...
@@ -624,6 +644,8 @@
if
(
option
.
coursesharing
)
{
this
.
userId
=
''
this
.
coursesharing
=
option
.
coursesharing
// this.isWeixin = true; // 是微信端
// this.JsApiTicketApi();
this
.
serialsNo
=
option
.
serialsNo
this
.
shareCode
=
option
.
shareCode
this
.
shareUserId
=
option
.
shareUserId
...
...
@@ -636,7 +658,6 @@
uni
.
setStorageSync
(
'h5_coursesharing'
,
this
.
coursesharing
);
this
.
getshareData
()
}
let
dataForm
=
uni
.
getStorageSync
(
'userinfodataForm'
)
this
.
realName
=
dataForm
.
realName
// this.switchTab(1);
...
...
@@ -645,11 +666,36 @@
this
.
switchTab
(
1
);
this
.
loginType
=
uni
.
getStorageSync
(
'loginType'
)
},
// mounted() {
// let _this = this;
// var btn = document.getElementById('launch-btn');
// alert(btn)
// btn.addEventListener('launch', function(e) {
// alert('success')
// console.log('success');
// });
// btn.addEventListener('error', function(e) {
// console.log('fail', e.detail);
// alert('fail')
// uni.showModal({
// title: '系统消息',
// content: '您的手机未找到当前应用,是否去下载?',
// success: function(res) {
// if (res.confirm) {
// window.location.href = _this.versionsData.versionResources
// console.log('用户点击确定');
// } else if (res.cancel) {
// console.log('用户点击取消');
// }
// }
// });
// });
// },
onReady
()
{
this
.
videoContext
=
uni
.
createVideoContext
(
'myVideo'
);
},
onUnload
()
{
if
(
this
.
courseInfo
.
status
!=
1
&&
this
.
viewTime
!=
0
)
{
if
(
this
.
courseInfo
.
status
!=
1
&&
this
.
viewTime
!=
0
)
{
this
.
videoContext
.
pause
();
this
.
saveVideoPlayback
();
if
(
this
.
timer
)
{
...
...
pages/invitationRegister/invitationlogin.vue
View file @
b30043d5
...
...
@@ -199,7 +199,7 @@
padding
:
20
rpx
;
.grey{
min-width
:
100
rpx
;
font-size
:
2
4
rpx
;
font-size
:
2
2
rpx
;
color
:
#CECECE
;
}
}
...
...
pages/myPoints/myPoints.vue
View file @
b30043d5
...
...
@@ -66,11 +66,12 @@
</
template
>
<
script
>
import
{
fmdata
}
from
'@/util/currentDate.js'
import
api
from
'../../api/api'
;
export
default
{
data
(){
return
{
fortuneDate
:
`
${
new
Date
().
getFullYear
()}
-
${
new
Date
().
getMonth
()
+
1
}
-
${
new
Date
().
getDate
()}
`
,
fortuneDate
:
fmdata
(
new
Date
(),
'D'
)
,
maxDate
:
`
${
new
Date
().
getFullYear
()}
-
${
new
Date
().
getMonth
()
+
1
}
`
,
navList
:[{
name
:
'日积分'
,
timeFlag
:
'D'
},{
name
:
'月积分'
,
timeFlag
:
'M'
},{
name
:
'年积分'
,
timeFlag
:
'Y'
}],
timeFlag
:
'D'
,
...
...
@@ -92,14 +93,15 @@
selectNav
(
navItem
){
this
.
timeFlag
=
navItem
.
timeFlag
;
if
(
this
.
timeFlag
==
'D'
){
this
.
fortuneDate
=
`
${
new
Date
().
getFullYear
()}
-
${
new
Date
().
getMonth
()
+
1
}
-
${
new
Date
().
getDate
()}
`
this
.
fortuneDate
=
fmdata
(
new
Date
(),
'D'
);
}
if
(
this
.
timeFlag
==
'M'
){
this
.
fortuneDate
=
`
${
new
Date
().
getFullYear
()}
-
${
new
Date
().
getMonth
()
+
1
}
`
this
.
fortuneDate
=
fmdata
(
new
Date
(),
'M'
);
this
.
fields
=
'month'
}
if
(
this
.
timeFlag
==
'Y'
){
this
.
fortuneDate
=
`
${
new
Date
().
getFullYear
()}
`
this
.
fortuneDate
=
fmdata
(
new
Date
(),
'Y'
);
// this.fortuneDate=`${new Date().getFullYear()}`
this
.
fields
=
'year'
}
this
.
findByUserIdForFortuneStatistic
();
...
...
pages/myShare/myShare.vue
View file @
b30043d5
...
...
@@ -43,7 +43,10 @@
<view
class=
"shareOrderInfoItem"
v-for=
"item in userShareCourses"
:key=
"item.fileId"
>
<view
class=
"timeBox"
>
{{
item
.
shareDate
}}
</view>
<view
class=
"courseInfoContent"
>
<course-item
:thumbnailPath=
"item.displayImage"
:title=
"item.fileTitle"
:summaryBox=
"item.fileSynopsis"
:dataList=
"
{coursePrice:item.coursePrice,salesNumber:item.salesNumber}" :fileLecturerId="item.fileLecturerId">
</course-item>
<course-item
:thumbnailPath=
"item.displayImage"
:title=
"item.fileTitle"
:summaryBox=
"item.fileSynopsis"
:dataList=
"
{coursePrice:item.coursePrice,salesNumber:item.salesNumber}"
:fileLecturerId="item.fileLecturerId">
</course-item>
</view>
<view
class=
"countsContent"
>
<view
@
click=
"goDetail(item.fileId,1)"
>
...
...
@@ -71,34 +74,38 @@
<
script
>
import
api
from
"@/api/api"
;
import
courseItem
from
"@/components/courseItem/courseItem.vue"
;
import
{
fmdata
}
from
'@/util/currentDate.js'
export
default
{
components
:{
components
:
{
courseItem
},
data
()
{
return
{
queryDate
:
`
${
new
Date
().
getFullYear
()}
-
${
new
Date
().
getMonth
()
+
1
}
`
,
maxDate
:
`
${
new
Date
().
getFullYear
()}
-
${
new
Date
().
getMonth
()
+
1
}
`
,
userId
:
uni
.
getStorageSync
(
'cffp_userId'
),
queryDate
:
fmdata
(
new
Date
(),
'M'
),
// queryDate:`${new Date().getFullYear()}-${new Date().getMonth() + 1}`,
maxDate
:
`
${
new
Date
().
getFullYear
()}
-
${
new
Date
().
getMonth
()
+
1
}
`
,
userId
:
uni
.
getStorageSync
(
'cffp_userId'
),
coursesCountInfos
:
{
shareFrequencyMonth
:
0
,
integralMonth
:
0
,
shareSectionMonth
:
0
,
shareFrequencyCount
:
0
,
integralCount
:
0
,
shareSectionCount
:
0
shareFrequencyMonth
:
0
,
integralMonth
:
0
,
shareSectionMonth
:
0
,
shareFrequencyCount
:
0
,
integralCount
:
0
,
shareSectionCount
:
0
},
userShareCourses
:[]
userShareCourses
:
[]
}
},
methods
:
{
goBack
(){
goBack
()
{
let
back
=
getCurrentPages
();
if
(
back
&&
back
.
length
>
1
)
{
if
(
back
&&
back
.
length
>
1
)
{
uni
.
navigateBack
({
delta
:
1
});
}
else
{
}
else
{
history
.
back
();
}
},
...
...
@@ -107,58 +114,58 @@
this
.
userShareCount
();
this
.
userShareQuery
();
},
userShareCount
(){
userShareCount
()
{
const
params
=
{
userId
:
this
.
userId
,
queryDate
:
this
.
queryDate
userId
:
this
.
userId
,
queryDate
:
this
.
queryDate
}
api
.
userShareCount
(
params
).
then
(
res
=>
{
api
.
userShareCount
(
params
).
then
(
res
=>
{
console
.
log
(
res
)
if
(
res
[
'success'
])
{
if
(
res
[
'success'
])
{
this
.
coursesCountInfos
=
res
[
'data'
]
?
res
[
'data'
]
:
this
.
coursesCountInfos
;
Object
.
keys
(
this
.
coursesCountInfos
).
forEach
((
item
)
=>
{
if
(
!
this
.
coursesCountInfos
[
item
])
{
Object
.
keys
(
this
.
coursesCountInfos
).
forEach
((
item
)
=>
{
if
(
!
this
.
coursesCountInfos
[
item
])
{
this
.
coursesCountInfos
[
item
]
=
0
;
}
})
}
else
{
}
else
{
this
.
coursesCountInfos
=
{
shareFrequencyMonth
:
0
,
integralMonth
:
0
,
shareSectionMonth
:
0
,
shareFrequencyCount
:
0
,
integralCount
:
0
,
shareSectionCount
:
0
shareFrequencyMonth
:
0
,
integralMonth
:
0
,
shareSectionMonth
:
0
,
shareFrequencyCount
:
0
,
integralCount
:
0
,
shareSectionCount
:
0
};
console
.
log
(
this
.
coursesCountInfos
)
}
})
},
userShareQuery
(){
userShareQuery
()
{
const
params
=
{
userId
:
this
.
userId
,
queryDate
:
this
.
queryDate
userId
:
this
.
userId
,
queryDate
:
this
.
queryDate
}
console
.
log
(
this
.
userShareCourses
)
api
.
userShareQuery
(
params
).
then
(
res
=>
{
api
.
userShareQuery
(
params
).
then
(
res
=>
{
console
.
log
(
res
)
if
(
res
[
'success'
])
{
if
(
res
[
'success'
])
{
this
.
userShareCourses
=
res
[
'data'
][
'userShareCourses'
];
}
else
{
}
else
{
this
.
userShareCourses
=
[];
}
})
},
// 查看详情
goDetail
(
val
,
type
)
{
goDetail
(
val
,
type
)
{
uni
.
navigateTo
({
url
:
`/pages/commonDetail/commonDetail?fileId=
${
val
}
&type=
${
type
}
`
url
:
`/pages/commonDetail/commonDetail?fileId=
${
val
}
&type=
${
type
}
`
})
},
// 查看积分
viewIntegral
(){
viewIntegral
()
{
uni
.
navigateTo
({
url
:
`/pages/myPoints/myPoints`
url
:
`/pages/myPoints/myPoints`
})
}
},
...
...
@@ -173,29 +180,33 @@
</
script
>
<
style
lang=
"scss"
>
.container
{
.container
{
height
:
100%
;
.timeSelectContent{
.timeSelectContent
{
background-color
:
#fff
;
padding
:
20
rpx
0
;
display
:
flex
;
justify-content
:
center
;
align-items
:
baseline
;
color
:
#333
;
.xiajiantou{
.xiajiantou
{
color
:
#999
;
font-size
:
24
rpx
;
transform
:
rotate
(
90deg
);
margin-left
:
8
rpx
;
}
}
.shareStatisticalContent
{
.shareStatisticalContent
{
background-color
:
#fff
;
margin
:
10
rpx
20
rpx
;
padding
:
20
rpx
14
rpx
;
display
:
flex
;
flex-wrap
:
wrap
;
.statisticItem{
.statisticItem
{
flex
:
1
;
min-width
:
33%
;
display
:
flex
;
...
...
@@ -203,29 +214,35 @@
align-items
:
center
;
border-right
:
1px
solid
#F4F4F4
;
margin-bottom
:
10
rpx
;
&:nth-of-type(3n){
&:nth-of-type(3n)
{
border-right
:
none
;
}
text
{
text
{
color
:
#333
;
font-size
:
36
rpx
;
&:last-child{
&:last-child
{
color
:
#666
;
font-size
:
28
rpx
;
}
&
.colorText
{
&
.colorText
{
color
:
#F15A1F
;
}
}
}
}
.shareDetailContent
{
h3{
.shareDetailContent
{
h3
{
color
:
#333
;
font-size
:
36
rpx
;
position
:
relative
;
margin
:
10
rpx
0
10
rpx
58
rpx
;
&::before{
&::before
{
content
:
''
;
display
:
block
;
position
:
absolute
;
...
...
@@ -237,27 +254,33 @@
background-color
:
#FA882F
;
}
}
.shareOrderInfoItem
{
.shareOrderInfoItem
{
margin
:
0
20
rpx
;
.timeBox{
.timeBox
{
font-size
:
28
rpx
;
color
:
#999
;
margin
:
10
rpx
0
10
rpx
50
rpx
;
}
.countsContent
{
.countsContent
{
background-color
:
#fff
;
display
:
flex
;
border-bottom-left-radius
:
20
rpx
;
border-bottom-right-radius
:
20
rpx
;
padding
:
10
rpx
10
rpx
20
rpx
10
rpx
;
view{
view
{
flex
:
1
;
font-size
:
24
rpx
;
display
:
flex
;
align-items
:
center
;
text{
text
{
color
:
#666
;
&:last-child{
&:last-child
{
margin-left
:
10
rpx
;
color
:
#0A2F99
;
font-weight
:
bold
;
...
...
pages/orderConfirm/orderConfirm.vue
View file @
b30043d5
...
...
@@ -3,7 +3,10 @@
<!-- 课程详情 -->
<template
v-if=
"courseInfoItem"
>
<view
class=
"courseItemBox"
>
<course-item
:thumbnailPath=
"courseInfoItem.displayImage"
:title=
"courseInfoItem.fileTitle"
:summaryBox=
"courseInfoItem.fileSynopsis"
:dataList=
"
{coursePrice:courseInfoItem.coursePrice,salesNumber:courseInfoItem.salesNumber}" :fileLecturerId="courseInfoItem.fileLecturerId" :fileId="fileId">
</course-item>
<course-item
:thumbnailPath=
"courseInfoItem.displayImage"
:title=
"courseInfoItem.fileTitle"
:summaryBox=
"courseInfoItem.fileSynopsis"
:dataList=
"
{coursePrice:courseInfoItem.coursePrice,salesNumber:courseInfoItem.salesNumber}"
:fileLecturerId="courseInfoItem.fileLecturerId" :fileId="fileId">
</course-item>
</view>
</
template
>
<!-- 价格明细 -->
...
...
@@ -12,10 +15,15 @@
<view><text>
现价
</text><text>
¥{{Number(courseInfoItem.coursePrice).toFixed(2)}}
</text></view>
<view>
<text
@
click=
"toggle(1,'bottom')"
>
积分抵扣
<i
class=
"iconfont icon-31tishi"
></i></text>
<text
class=
"integralBox"
@
click=
"toggle(2,'bottom')"
v-if=
"intergralInfo.preFortune"
>
{{!isDeduction ? '未选' : '已选'}}积分,可抵扣{{deductionCore}}
<i
class=
"iconfont icon-youjiantou"
></i></text>
<text
class=
"integralBox"
@
click=
"toggle(2,'bottom')"
v-if=
"intergralInfo.preFortune"
>
{{isDeduction != 'true' ? '未选' : '已选'}}积分,可抵扣{{deductionCore}}
<i
class=
"iconfont icon-youjiantou"
></i></text>
<text
style=
"color: #666666;font-size: 30rpx;"
v-else
>
暂无积分
</text>
</view>
<view><text>
合计
</text><text>
¥{{Number(totalPrice).toFixed(2)}}
</text></view>
<view><text>
合计
</text>
<text
v-if=
"isRedirect == 1"
>
{{calculatedPrice}}
</text>
<text
v-else
>
¥{{Number(totalPrice).toFixed(2)}}
</text>
</view>
</view>
<!-- 支付方式 -->
<view
class=
"paymentMethodContent"
>
...
...
@@ -40,7 +48,7 @@
</view>
</view>
<!-- #ifdef APP-PLUS -->
<view
class=
"paymentItem"
@
click=
"selectPaymentMethod(1)"
>
<!-- <view class="paymentItem" @click="selectPaymentMethod(1)"
>
<view>
<i class="iconfont icon-py_weixinzhifu"></i>
<text>微信支付</text>
...
...
@@ -48,17 +56,31 @@
<view class="selectRadio" :class="{'actived':paymentMethod===1}">
<i class="iconfont icon-duihao"></i>
</view>
</view>
</view>
-->
<!-- #endif -->
</view>
<!-- 底部 -->
<view
class=
"totalContent"
>
<view
class=
"priceInfoBox"
>
<view>
合计:
<strong
style=
"font-size: 36rpx;"
>
¥{{totalPrice}}
</strong></view>
<view>
共优惠:
<strong
style=
"color:#F15A1F"
v-if=
"isDeduction == true"
>
¥{{Number(deductionCore * intergralInfo.preFortune).toFixed(2)}}
</strong>
<view>
合计:
<strong
v-if=
"isRedirect == 1"
>
{{calculatedPrice}}
</strong>
<strong
v-else
style=
"font-size: 36rpx;"
>
¥{{totalPrice}}
</strong>
</view>
<view
class=
""
v-if=
"isRedirect == 1"
>
<view>
共优惠:
<strong
style=
"color:#F15A1F"
>
¥
<text
v-if=
"isDeduction == 'true'"
>
{{deductionCore}}
</text>
<text
style=
"color:#F15A1F"
v-else
>
0
</text>
</strong>
</view>
</view>
<view
class=
""
v-else
>
<view>
共优惠:
<strong
style=
"color:#F15A1F"
v-if=
"isDeduction == 'true'"
>
¥{{Number(deductionCore * intergralInfo.preFortune).toFixed(2)}}
</strong>
<text
style=
"color:#F15A1F"
v-else
>
0
</text>
</view>
</view>
</view>
<view
class=
"confirmOrder"
:class=
"{'gray':paymentBtnDisabled}"
@
click=
"pay()"
>
提交订单
</view>
</view>
<view
v-html=
"payForm"
>
...
...
@@ -74,11 +96,11 @@
</view>
<view
v-if=
"popupType===1"
><text>
1积分=1元,积分抵扣如同现金,所有课程均可使用.
</text></view>
<view
v-if=
"popupType===2"
>
<view
class=
"deductionInfoItem"
:class=
"{'actived':isDeduction}"
@
click=
"selectDeduction(true)"
>
<view
class=
"deductionInfoItem"
:class=
"{'actived':isDeduction
== 'true'
}"
@
click=
"selectDeduction(true)"
>
<view
style=
"display: flex;"
>
<text>
可抵扣
</text>
<view
class=
"integralInfoBox"
>
<text
class=
"deductionCount"
>
¥{{deductionCore * intergralInfo.preFortune || '0'}}
</text>
<text
class=
"deductionCount"
>
¥{{deductionCore * intergralInfo.preFortune || '0'}}
</text>
<text>
需{{deductionCore}}积分兑换
</text>
</view>
</view>
...
...
@@ -86,7 +108,7 @@
<i
class=
"iconfont icon-duihao"
></i>
</view>
</view>
<view
class=
"deductionInfoItem"
:class=
"{'actived':
!isDeduction
}"
@
click=
"selectDeduction(false)"
>
<view
class=
"deductionInfoItem"
:class=
"{'actived':
isDeduction == 'false'
}"
@
click=
"selectDeduction(false)"
>
<view>
<text>
不使用积分抵扣
</text>
</view>
...
...
@@ -143,49 +165,53 @@
<
script
>
import
api
from
"@/api/api"
;
import
courseItem
from
"@/components/courseItem/courseItem.vue"
;
import
{
nextTick
}
from
"vue"
;
import
{
nextTick
}
from
"vue"
;
import
common
from
'../../common/common'
;
export
default
{
components
:{
components
:
{
courseItem
},
data
()
{
return
{
courseInfoItem
:{},
fileId
:
null
,
paymentMethod
:
2
,
popupTitle
:
'积分抵扣规则'
,
popupType
:
1
,
isDeduction
:
false
,
courseInfoItem
:
{},
fileId
:
null
,
paymentMethod
:
2
,
popupTitle
:
'积分抵扣规则'
,
popupType
:
1
,
isDeduction
:
'false'
,
userId
:
uni
.
getStorageSync
(
'cffp_userId'
),
intergralInfo
:{},
orderId
:
''
,
paymentBtnDisabled
:
false
,
action
:
''
,
params
:
''
,
actionType
:
''
,
charset
:
''
,
contentType
:
''
,
payForm
:
''
,
deviceType
:
''
,
tipsFlag
:
false
,
isRedirect
:
null
,
amount
:
0
,
calculatedPrice
:
0
intergralInfo
:
{},
orderId
:
''
,
paymentBtnDisabled
:
false
,
action
:
''
,
params
:
''
,
actionType
:
''
,
charset
:
''
,
contentType
:
''
,
payForm
:
''
,
deviceType
:
''
,
tipsFlag
:
false
,
isRedirect
:
null
,
amount
:
0
,
calculatedPrice
:
0
}
},
computed
:{
totalPrice
(){
if
(
this
.
isDeduction
==
true
){
return
(
this
.
courseInfoItem
.
coursePrice
-
(
this
.
deductionCore
*
this
.
intergralInfo
.
preFortune
)).
toFixed
(
2
)
}
else
{
computed
:
{
totalPrice
()
{
if
(
this
.
isDeduction
==
"true"
)
{
return
(
this
.
courseInfoItem
.
coursePrice
-
(
this
.
deductionCore
*
this
.
intergralInfo
.
preFortune
))
.
toFixed
(
2
)
}
else
{
return
this
.
courseInfoItem
.
coursePrice
;
}
},
deductionCore
(){
if
(
this
.
courseInfoItem
.
coursePrice
/
this
.
intergralInfo
.
preFortune
<
this
.
intergralInfo
.
yesExchangeFortune
){
deductionCore
()
{
if
(
this
.
courseInfoItem
.
coursePrice
/
this
.
intergralInfo
.
preFortune
<
this
.
intergralInfo
.
yesExchangeFortune
)
{
return
parseFloat
((
this
.
courseInfoItem
.
coursePrice
/
this
.
intergralInfo
.
preFortune
)).
toFixed
(
2
)
}
else
{
}
else
{
return
this
.
intergralInfo
.
yesExchangeFortune
}
}
...
...
@@ -193,26 +219,26 @@
methods
:
{
// 支付
pay
(){
if
(
this
.
paymentBtnDisabled
)
{
pay
()
{
if
(
this
.
paymentBtnDisabled
)
{
return
false
;
}
this
.
paymentBtnDisabled
=
true
;
let
param
=
{
orderId
:
this
.
orderId
,
amount
:
this
.
isRedirect
==
1
?
this
.
calculatedPrice
:
this
.
totalPrice
,
paymentMethod
:
this
.
paymentMethod
,
userId
:
this
.
userId
,
integralExchange
:
this
.
isDeduction
?
parseFloat
(
this
.
deductionCore
)
:
0
,
paymentType
:
''
,
isPayOrAuth
:
''
,
fileId
:
this
.
fileId
}
if
(
this
.
paymentMethod
==
1
)
{
orderId
:
this
.
orderId
,
amount
:
this
.
isRedirect
==
1
?
this
.
calculatedPrice
:
this
.
totalPrice
,
paymentMethod
:
this
.
paymentMethod
,
userId
:
this
.
userId
,
integralExchange
:
this
.
isDeduction
==
"true"
?
this
.
deductionCore
:
0
,
paymentType
:
''
,
isPayOrAuth
:
''
,
fileId
:
this
.
fileId
}
if
(
this
.
paymentMethod
==
1
)
{
// APP:微信app支付
// #ifdef APP-PLUS
param
.
paymentType
=
1
;
api
.
unifiedPay
(
param
).
then
(
res
=>
{
api
.
unifiedPay
(
param
).
then
(
res
=>
{
console
.
log
(
res
)
this
.
paymentBtnDisabled
=
false
;
})
...
...
@@ -220,62 +246,66 @@
// #ifdef H5
param
.
paymentType
=
2
;
//deviceType:PC为1,移动端为2,微信为3
if
(
this
.
deviceType
==
3
){
if
(
this
.
deviceType
==
3
)
{
let
_this
=
this
param
.
isPayOrAuth
=
1
;
api
.
wxAuthorize
(
param
).
then
((
res
)
=>
{
this
.
paymentBtnDisabled
=
false
;
if
(
this
.
amount
==
'0'
){
// } else {
api
.
wxAuthorize
(
param
).
then
((
res
)
=>
{
_this
.
paymentBtnDisabled
=
false
;
if
(
res
[
'success'
])
{
if
(
param
.
amount
==
'0.00'
)
{
uni
.
navigateTo
({
url
:
`/pages/orderStatus/orderStatus?orderId=
${
this
.
orderId
}
&fileId=
${
this
.
fileId
}
&orderStatus=2&userId=
${
this
.
userId
}
&isRedirect=1
`
url
:
`/pages/orderStatus/orderStatus?orderId=
${
_this
.
orderId
}
&fileId=
${
_this
.
fileId
}
&orderStatus=2&userId=
${
_this
.
userId
}
`
})
return
false
}
if
(
res
[
'success'
]){
}
else
{
window
.
location
.
href
=
res
[
'data'
][
'paymentForm'
][
'action'
];
}
})
}
else
{
}
})
// }
}
else
{
//微信二维码支付
}
// #endif
}
else
if
(
this
.
paymentMethod
==
2
)
{
}
else
if
(
this
.
paymentMethod
==
2
)
{
// APP:支付宝app支付
// #ifdef APP-PLUS
param
.
paymentType
=
1
;
api
.
unifiedPay
(
param
).
then
(
res
=>
{
api
.
unifiedPay
(
param
).
then
(
res
=>
{
this
.
paymentBtnDisabled
=
false
;
if
(
res
[
'success'
])
{
if
(
res
[
'success'
])
{
const
aliOrderString
=
res
[
'data'
][
'aliOrderString'
];
let
_this
=
this
if
(
aliOrderString
)
{
if
(
aliOrderString
)
{
uni
.
requestPayment
({
provider
:
'alipay'
,
orderInfo
:
aliOrderString
,
success
:
function
(
resp
)
{
success
:
function
(
resp
)
{
uni
.
navigateTo
({
url
:
`/pages/orderStatus/orderStatus?orderId=
${
_this
.
orderId
}
&fileId=
${
_this
.
fileId
}
&orderStatus=2&userId=
${
_this
.
userId
}
&isRedirect=1`
url
:
`/pages/orderStatus/orderStatus?orderId=
${
_this
.
orderId
}
&fileId=
${
_this
.
fileId
}
&orderStatus=2&userId=
${
_this
.
userId
}
&isRedirect=1`
})
},
fail
:
function
(
err
)
{
fail
:
function
(
err
)
{
console
.
log
(
'fail:'
+
JSON
.
stringify
(
err
));
uni
.
navigateTo
({
url
:
`/pages/orderStatus/orderStatus?orderId=
${
_this
.
orderId
}
&fileId=
${
_this
.
fileId
}
&orderStatus=1&userId=
${
_this
.
userId
}
&isRedirect=1`
url
:
`/pages/orderStatus/orderStatus?orderId=
${
_this
.
orderId
}
&fileId=
${
_this
.
fileId
}
&orderStatus=1&userId=
${
_this
.
userId
}
&isRedirect=1`
})
}
});
}
else
{
}
else
{
uni
.
navigateTo
({
url
:
`/pages/orderStatus/orderStatus?orderId=
${
this
.
orderId
}
&fileId=
${
this
.
fileId
}
&orderStatus=2&userId=
${
this
.
userId
}
&isRedirect=1`
url
:
`/pages/orderStatus/orderStatus?orderId=
${
this
.
orderId
}
&fileId=
${
this
.
fileId
}
&orderStatus=2&userId=
${
this
.
userId
}
&isRedirect=1`
})
}
}
else
{
}
else
{
uni
.
showModal
({
content
:
res
[
'message'
],
success
:
function
(
res
)
{
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
console
.
log
(
'用户点击确定'
);
}
else
if
(
res
.
cancel
)
{
...
...
@@ -291,37 +321,47 @@
//支付宝h5支付
console
.
log
(
JSON
.
stringify
(
param
))
param
.
paymentType
=
2
;
// this.amount = this.totalPrice;
if
(
this
.
deviceType
==
3
){
this
.
amount
=
this
.
totalPrice
;
if
(
this
.
deviceType
==
3
)
{
if
(
param
.
amount
==
'0.00'
)
{
this
.
getunifiedPay
(
param
)
return
false
}
else
{
this
.
tipsFlag
=
true
;
//
this.amount = this.totalPrice;
this
.
amount
=
this
.
totalPrice
;
this
.
paymentBtnDisabled
=
false
;
let
deductionCore
=
this
.
isDeduction
==
true
?
parseFloat
(
this
.
deductionCore
)
:
0
;
let
url
=
window
.
location
.
href
+
`&isRedirect=1&amount=
${
this
.
amount
}
&isDeduction=
${
this
.
isDeduction
}
&deductionCore=
${
deductionCore
}
&jumptime=
${
new
Date
()}
`
;
window
.
history
.
replaceState
(
null
,
''
,
url
);
let
deductionCore
=
this
.
isDeduction
==
"true"
?
parseFloat
(
this
.
deductionCore
)
:
0
;
let
url
=
window
.
location
.
href
+
`&isRedirect=1&amount=
${
this
.
amount
}
&isDeduction=
${
this
.
isDeduction
}
&deductionCore=
${
deductionCore
}
&jumptime=
${
new
Date
()}
`
;
window
.
history
.
replaceState
(
null
,
''
,
url
);
return
;
}
api
.
unifiedPay
(
param
).
then
((
res
)
=>
{
}
this
.
getunifiedPay
(
param
)
//#endif
}
},
getunifiedPay
(
param
){
api
.
unifiedPay
(
param
).
then
((
res
)
=>
{
const
data
=
res
[
'data'
];
this
.
paymentBtnDisabled
=
false
;
if
(
res
[
'success'
]){
debugger
;
if
(
data
.
orderStatus
!=
''
&&
data
.
orderStatus
!=
null
){
if
(
res
[
'success'
])
{
if
(
data
.
orderStatus
!=
null
&&
data
.
orderStatus
!=
''
)
{
uni
.
navigateTo
({
url
:
`/pages/orderStatus/orderStatus?orderId=
${
this
.
orderId
}
&fileId=
${
this
.
fileId
}
&orderStatus=2&userId=
${
this
.
userId
}
&isRedirect=1
`
url
:
`/pages/orderStatus/orderStatus?orderId=
${
this
.
orderId
}
&fileId=
${
this
.
fileId
}
&orderStatus=2&userId=
${
this
.
userId
}
`
})
return
false
}
this
.
payForm
=
res
[
'data'
][
'aliOrderString'
];
//
this.$nextTick(() => {
//
console.log(document.forms)
//
document.forms['punchout_form'].submit();
//
})
}
else
{
this
.
$nextTick
(()
=>
{
console
.
log
(
document
.
forms
)
document
.
forms
[
'punchout_form'
].
submit
();
})
}
else
{
uni
.
showModal
({
content
:
res
[
'message'
],
success
:
function
(
res
)
{
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
console
.
log
(
'用户点击确定'
);
}
else
if
(
res
.
cancel
)
{
...
...
@@ -331,128 +371,133 @@
});
}
})
//#endif
}
},
// 积分查询
queryByUserIdFortuneStatistic
(){
api
.
queryByUserIdFortuneStatistic
({
userId
:
this
.
userId
}).
then
(
res
=>
{
if
(
res
[
'success'
]){
queryByUserIdFortuneStatistic
()
{
api
.
queryByUserIdFortuneStatistic
({
userId
:
this
.
userId
}).
then
(
res
=>
{
if
(
res
[
'success'
])
{
this
.
intergralInfo
=
res
[
'data'
];
this
.
intergralInfo
.
preFortune
=
1.0
;
}
})
},
// 课程详情页面
courseDetail
(){
api
.
courseDetail
({
fileId
:
this
.
fileId
,
userId
:
this
.
userId
}).
then
(
res
=>
{
console
.
log
(
'课程详情'
,
res
);
if
(
res
[
'success'
]){
courseDetail
()
{
api
.
courseDetail
({
fileId
:
this
.
fileId
,
userId
:
this
.
userId
}).
then
(
res
=>
{
console
.
log
(
'课程详情'
,
res
);
if
(
res
[
'success'
])
{
this
.
courseInfoItem
=
res
[
'data'
][
'data'
];
}
})
},
// 选择支付方式
selectPaymentMethod
(
value
){
selectPaymentMethod
(
value
)
{
this
.
paymentMethod
=
value
;
},
// 从下往上弹出
toggle
(
val
,
type
)
{
toggle
(
val
,
type
)
{
// type 1为积分抵扣规则,2为优惠详情
this
.
popupType
=
val
;
// open 方法传入参数 等同在 uni-popup 组件上绑定 type属性
if
(
this
.
popupType
===
3
)
{
if
(
this
.
isDeduction
)
{
if
(
this
.
popupType
===
3
)
{
if
(
this
.
isDeduction
)
{
this
.
$refs
.
popup1
.
open
(
type
);
}
}
else
{
}
else
{
this
.
$refs
.
popup
.
open
(
type
);
}
if
(
this
.
popupType
===
1
)
{
if
(
this
.
popupType
===
1
)
{
this
.
popupTitle
=
'积分抵扣规则'
}
else
if
(
this
.
popupType
===
2
)
{
}
else
if
(
this
.
popupType
===
2
)
{
this
.
popupTitle
=
'优惠详情'
}
else
if
(
this
.
popupType
===
3
)
{
}
else
if
(
this
.
popupType
===
3
)
{
this
.
popupTitle
=
'积分兑换'
}
},
// 关闭弹出层
closePopup
(
val
){
if
(
val
===
1
)
{
closePopup
(
val
)
{
if
(
val
===
1
)
{
this
.
$refs
.
popup
.
close
()
}
else
{
}
else
{
this
.
$refs
.
popup1
.
close
()
}
},
// 选择是否抵扣
selectDeduction
(
type
){
this
.
isDeduction
=
type
;
selectDeduction
(
type
)
{
this
.
isDeduction
=
String
(
type
)
;
},
// 确认积分兑换
confirmIntergralDeduction
(){
confirmIntergralDeduction
()
{
},
},
onLoad
(
option
){
onLoad
(
option
)
{
this
.
fileId
=
option
.
fileId
;
this
.
orderId
=
option
.
orderId
;
if
(
option
.
userId
)
{
if
(
option
.
userId
)
{
this
.
userId
=
option
.
userId
}
this
.
courseDetail
();
this
.
queryByUserIdFortuneStatistic
()
this
.
deviceType
=
common
.
checkDeviceType
();
if
(
this
.
deviceType
==
3
)
{
if
(
this
.
deviceType
==
3
)
{
this
.
paymentMethod
=
1
;
}
this
.
isRedirect
=
option
.
isRedirect
;
if
(
this
.
isRedirect
==
1
)
{
if
(
this
.
isRedirect
==
1
)
{
this
.
deductionCore
=
option
.
deductionCore
;
this
.
amount
=
Number
(
option
.
amount
);
this
.
isDeduction
=
option
.
isDeduction
;
this
.
isDeduction
=
String
(
option
.
isDeduction
)
;
this
.
calculatedPrice
=
Number
(
this
.
amount
);
console
.
log
(
JSON
.
stringify
(
option
))
setTimeout
(()
=>
{
setTimeout
(()
=>
{
this
.
pay
();
},
500
)
},
500
)
}
},
mounted
()
{
}
mounted
()
{}
}
</
script
>
<
style
lang=
"scss"
>
.container
{
.container
{
position
:
relative
;
height
:
95vh
;
.courseItemBox{
.courseItemBox
{
padding
:
20
rpx
30
rpx
;
background-color
:
#fff
;
}
.popup-content
{
.title{
.popup-content
{
.title
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
baseline
;
h3{
h3
{
text-align
:
center
;
color
:
#333
;
font-size
:
32
rpx
;
margin-bottom
:
30
rpx
;
}
.iconfont
{
.iconfont
{
color
:
#999
;
}
}
text
{
text
{
color
:
#666
;
font-size
:
30
rpx
;
}
.deductionInfoItem
{
.deductionInfoItem
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
...
...
@@ -463,20 +508,24 @@
border-radius
:
20
rpx
;
min-height
:
90
rpx
;
margin-top
:
30
rpx
;
.integralInfoBox{
.integralInfoBox
{
display
:
flex
;
flex-direction
:
column
;
margin-left
:
10
rpx
;
text{
text
{
font-size
:
30
rpx
;
color
:
#333333
;
}
.deductionCount
{
.deductionCount
{
font-size
:
36
rpx
;
color
:
#F15A1F
;
}
}
.selectRadio
{
.selectRadio
{
color
:
#D8D8D8
;
width
:
40
rpx
;
height
:
40
rpx
;
...
...
@@ -486,24 +535,28 @@
justify-content
:
center
;
align-items
:
center
;
}
&
.actived
{
&
.actived
{
border
:
3
rpx
solid
#20269B
;
background-color
:
#fff
;
.selectRadio{
.selectRadio
{
background-color
:
#20269B
;
color
:
#fff
;
}
}
}
.integralDeductionContent
{
.intergralItem{
.integralDeductionContent
{
.intergralItem
{
display
:
flex
;
justify-content
:
space-between
;
margin-bottom
:
10
rpx
;
}
}
.confirmBtn
{
.confirmBtn
{
border-radius
:
80
rpx
;
height
:
80
rpx
;
width
:
60%
;
...
...
@@ -515,25 +568,30 @@
align-items
:
center
;
}
}
.popup1-content
{
.popup1-content
{
padding
:
30
rpx
34
rpx
20
rpx
42
rpx
;
border-radius
:
20
rpx
;
.title{
.title
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
baseline
;
h3{
h3
{
text-align
:
center
;
color
:
#333
;
font-size
:
32
rpx
;
margin-bottom
:
30
rpx
;
}
.iconfont
{
.iconfont
{
color
:
#999
;
}
}
.integralDeductionContent
{
.intergralItem{
.integralDeductionContent
{
.intergralItem
{
display
:
flex
;
justify-content
:
space-between
;
color
:
#333
;
...
...
@@ -541,7 +599,8 @@
margin-bottom
:
10
rpx
;
}
}
.confirmBtn
{
.confirmBtn
{
border-radius
:
80
rpx
;
height
:
80
rpx
;
width
:
60%
;
...
...
@@ -553,64 +612,81 @@
align-items
:
center
;
}
}
.priceInfoContent
,
.paymentMethodContent
,
.totalContent
{
.priceInfoContent
,
.paymentMethodContent
,
.totalContent
{
background-color
:
#fff
;
margin
:
0
10
rpx
;
padding
:
20
rpx
;
}
.priceInfoContent
{
view{
.priceInfoContent
{
view
{
display
:
flex
;
justify-content
:
space-between
;
text{
&:last-child{
text
{
&:last-child
{
font-weight
:
bold
;
}
&
.integralBox
{
&
.integralBox
{
color
:
#FA6900
;
font-weight
:
normal
;
.iconfont{
.iconfont
{
color
:
#999
;
}
}
}
.iconfont
{
.iconfont
{
margin-left
:
10
rpx
;
}
}
}
.priceInfoContent
,
.paymentMethodContent
{
.priceInfoContent
,
.paymentMethodContent
{
border-bottom
:
5px
solid
#fbfbfb
;
color
:
#333
;
h4{
h4
{
font-size
:
32
rpx
;
margin-bottom
:
20
rpx
;
}
view
{
view
{
margin-bottom
:
10
rpx
;
}
}
.paymentMethodContent
{
.paymentItem{
.paymentMethodContent
{
.paymentItem
{
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
view{
view
{
display
:
flex
;
align-items
:
center
;
}
.icon-zhifubao
{
.icon-zhifubao
{
color
:
#5A9EF7
;
font-size
:
60
rpx
;
margin-right
:
20
rpx
;
}
.icon-py_weixinzhifu
{
.icon-py_weixinzhifu
{
color
:
#09BB07
;
font-size
:
60
rpx
;
margin-right
:
20
rpx
;
}
.selectRadio
{
.selectRadio
{
width
:
40
rpx
;
height
:
40
rpx
;
display
:
flex
;
...
...
@@ -619,7 +695,8 @@
border-radius
:
50%
;
border
:
1px
solid
#D8D8D8
;
color
:
transparent
;
&.actived{
&.actived
{
background-color
:
#0A2F99
;
color
:
#fff
;
}
...
...
@@ -627,7 +704,8 @@
}
}
.totalContent
{
.totalContent
{
position
:
absolute
;
bottom
:
0
;
left
:
0
;
...
...
@@ -637,26 +715,31 @@
align-items
:
center
;
justify-content
:
space-between
;
box-sizing
:
border-box
;
.priceInfoBox{
.priceInfoBox
{
font-size
:
30
rpx
;
color
:
#333
;
view
:
first-child
{
view
:
first-child
{
margin-bottom
:
10
rpx
;
}
}
.confirmOrder
{
.confirmOrder
{
background-color
:
#20269B
;
color
:
#fff
;
padding
:
14
rpx
38
rpx
;
border-radius
:
80
rpx
;
}
.gray
{
.gray
{
background
:
#666
;
}
}
}
.markBox
{
.markBox
{
position
:
fixed
;
left
:
0
;
top
:
0
;
...
...
@@ -669,35 +752,36 @@
justify-content
:
flex-end
;
z-index
:
100000
;
background
:
rgba
(
0
,
0
,
0
,
0.8
);
}
//
.iconfont
{
//
position
:
absolute
;
//
right
:
8%
;
//
font-size
:
40px
;
//
top
:
2px
;
//
font-weight
:
bold
;
//
}
.guideImgBox
{
}
//
.iconfont
{
//
position
:
absolute
;
//
right
:
8%
;
//
font-size
:
40px
;
//
top
:
2px
;
//
font-weight
:
bold
;
//
}
.guideImgBox
{
margin
:
20px
auto
;
uni-image{
width
:
25%
!important
;
uni-image
{
width
:
25%
!important
;
position
:
absolute
;
right
:
0
;
top
:
0
;
top
:
0
;
}
}
}
.tips
{
.tips
{
margin-top
:
20%
;
padding
:
0
30px
;
}
}
.tips
p
{
.tips
p
{
font-size
:
18px
;
margin-top
:
10px
;
text-align
:
justify
;
letter-spacing
:
1px
;
}
}
</
style
>
pages/saleCourseLists/saleCourseLists.vue
View file @
b30043d5
...
...
@@ -79,13 +79,15 @@
<
script
>
import
api
from
"@/api/api"
;
import
courseItem
from
"@/components/courseItem/courseItem.vue"
;
import
{
fmdata
}
from
'@/util/currentDate.js'
export
default
{
components
:{
courseItem
},
data
()
{
return
{
queryDate
:
`
${
new
Date
().
getFullYear
()}
-
${
new
Date
().
getMonth
()
+
1
}
`
,
queryDate
:
fmdata
(
new
Date
(),
'M'
),
// queryDate:`${new Date().getFullYear()}-${new Date().getMonth() + 1
<
10
?
'0'
+
(
new
Date
().
getMonth
()
+
1
):
new
Date
().
getMonth
()
+
1
}
`,
maxDate:`
$
{
new
Date
().
getFullYear
()}
-
$
{
new
Date
().
getMonth
()
+
1
}
`,
userId: uni.getStorageSync('cffp_userId'),
coursesCountInfos:{},
...
...
util/currentDate.js
0 → 100644
View file @
b30043d5
export
function
fmdata
(
val
,
filets
)
{
var
date
=
new
Date
(
Number
(
val
));
//时间戳为10位需*1000,时间戳为13位的话不需乘1000
var
Y
=
date
.
getFullYear
();
var
M
=
(
date
.
getMonth
()
+
1
<
10
?
"0"
+
(
date
.
getMonth
()
+
1
)
:
date
.
getMonth
()
+
1
);
// var D = date.getDate() + " ";
var
D
=
(
date
.
getDate
()
<
10
?
"0"
+
(
date
.
getDate
())
:
date
.
getDate
())
+
" "
;
var
h
=
date
.
getHours
()
+
":"
;
var
m
=
date
.
getMinutes
()
+
":"
;
var
s
=
(
date
.
getSeconds
()
<
10
?
"0"
+
(
date
.
getSeconds
())
:
date
.
getSeconds
());
if
(
filets
==
'D'
)
{
return
Y
+
"-"
+
M
+
"-"
+
D
;
}
if
(
filets
==
'M'
)
{
return
Y
+
"-"
+
M
;
}
if
(
filets
==
'Y'
)
{
return
Y
;
}
// return Y + M + D + h + m + s;
}
export
function
fmdataTime
(
val
)
{
var
date
=
new
Date
(
Number
(
val
));
//时间戳为10位需*1000,时间戳为13位的话不需乘1000
var
Y
=
date
.
getFullYear
()
+
"-"
;
var
M
=
(
date
.
getMonth
()
+
1
<
10
?
"0"
+
(
date
.
getMonth
()
+
1
)
:
date
.
getMonth
()
+
1
)
+
"-"
;
// var D = date.getDate() + " ";
var
D
=
(
date
.
getDate
()
<
10
?
"0"
+
(
date
.
getDate
())
:
date
.
getDate
())
+
" "
;
var
h
=
date
.
getHours
()
+
":"
;
// var m = date.getMinutes() + ":";
var
m
=
(
date
.
getMinutes
()
<
10
?
"0"
+
(
date
.
getMinutes
())
:
date
.
getMinutes
())
+
":"
;
var
s
=
(
date
.
getSeconds
()
<
10
?
"0"
+
(
date
.
getSeconds
())
:
date
.
getSeconds
());
return
h
+
m
+
s
;
}
// format(date, fmt) {
// let ret;
// const opt = {
// "Y+": date.getFullYear().toString(), // 年
// "m+": (date.getMonth() + 1).toString(), // 月
// "d+": date.getDate().toString(), // 日
// "H+": date.getHours().toString(), // 时
// "M+": date.getMinutes().toString(), // 分
// "S+": date.getSeconds().toString() // 秒
// // 有其他格式化字符需求可以继续添加,必须转化成字符串
// };
// for (let k in opt) {
// ret = new RegExp("(" + k + ")").exec(fmt);
// if (ret) {
// fmt = fmt.replace(
// ret[1],
// ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, "0")
// );
// }
// }
// // str=str.Substring(0,i);
// return fmt;
// },
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment