Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
W
wechatapp.shangjiadao.com
Project
Project
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wangxuelai
wechatapp.shangjiadao.com
Commits
b6602395
Commit
b6602395
authored
Jan 02, 2020
by
sujie@126.com
Browse files
Options
Browse Files
Download
Plain Diff
dd
parents
7cdaadcf
8e80cdda
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
854 additions
and
142 deletions
+854
-142
app.js
app.js
+19
-0
app.json
app.json
+2
-1
teacherindex.wxml
business/pages/classservice/teacherindex.wxml
+1
-1
index.js
business/pages/coursemgt/index.js
+1
-1
index.js
business/pages/deskcenter/index.js
+8
-97
index.wxml
business/pages/deskcenter/index.wxml
+10
-26
index.wxss
business/pages/deskcenter/index.wxss
+46
-7
info.wxml
business/pages/organizationalmgt/info.wxml
+1
-1
buycourse.js
business/pages/studentcenter/buycourse.js
+428
-0
buycourse.json
business/pages/studentcenter/buycourse.json
+6
-0
buycourse.wxml
business/pages/studentcenter/buycourse.wxml
+111
-0
buycourse.wxss
business/pages/studentcenter/buycourse.wxss
+194
-0
api.js
constants/api.js
+1
-0
constants.js
constants/constants.js
+5
-5
parameter.js
constants/parameter.js
+7
-0
staticlog.js
js/staticlog.js
+1
-0
classservice.js
service/business/classservice.js
+11
-1
landpage.wxml
src/pages/myschedule/landpage.wxml
+2
-2
No files found.
app.js
View file @
b6602395
...
...
@@ -41,6 +41,12 @@ App({
},
onShow
:
function
(
params
)
{
// 小程序启动,或从后台进入前台显示时
const
{
path
,
query
,
scene
,
shareTicket
,
referrerInfo
}
=
params
;
// if (visitor.version != constants.storageVersion) {
// LocalStorage.removeItem('teacher');
// LocalStorage.removeItem('user');
// LocalStorage.removeItem('dakarole');
// LocalStorage.removeItem('visitor');
// }
if
(
path
==
'business/pages/loginregistermgt/login'
){
this
.
globalData
.
fromUrl
=
path
;
this
.
globalData
.
query
=
{};
...
...
@@ -54,6 +60,18 @@ App({
this
.
globalData
.
fromUrl
=
'ucenter/index'
;
this
.
globalData
.
query
=
{};
}
if
(
path
==
'ucenter/index'
)
{
const
visitor
=
LocalStorage
.
getItem
(
'visitor'
);
if
(
visitor
&&
visitor
.
version
!=
constants
.
storageVersion
)
{
LocalStorage
.
removeItem
(
'teacher'
);
LocalStorage
.
removeItem
(
'user'
);
LocalStorage
.
removeItem
(
'dakarole'
);
LocalStorage
.
removeItem
(
'visitor'
);
wx
.
reLaunch
({
url
:
'ucenter/index'
});
}
}
if
(
path
!=
'ucenter/index'
)
{
this
.
canEnterSystem
(
path
);
}
...
...
@@ -117,6 +135,7 @@ App({
},
canEnterSystem
(
path
)
{
const
visitor
=
LocalStorage
.
getItem
(
'visitor'
);
console
.
log
(
visitor
,
'visitor'
);
// 新版本通知
// if (LocalStorage.getItem('versionNotice') != 1 && path != 'src/pages/versionnotice/index') {
// wx.redirectTo({
...
...
app.json
View file @
b6602395
...
...
@@ -22,7 +22,8 @@
"index"
,
"studentdetail"
,
"editstudent"
,
"rewardstudent"
"rewardstudent"
,
"buycourse"
]
},
{
...
...
business/pages/classservice/teacherindex.wxml
View file @
b6602395
...
...
@@ -94,7 +94,7 @@
<view class="item-title">班级</view>
</view>
</permission-box>
<permission-box cinfigid="
1
">
<permission-box cinfigid="
0
">
<view class="item" bindtap="gorollcalllist" data-page="myschedule" slot="menubtn">
<form report-submit="true" bindsubmit="formIdCreate" class="createidform">
<button form-type="submit" class="createidbutton">生成form</button>
...
...
business/pages/coursemgt/index.js
View file @
b6602395
...
...
@@ -134,7 +134,7 @@ Page({
this
.
setData
({
[
`courseList[
${
this
.
data
.
page
-
1
}
]`
]:
data
.
list
},
()
=>
{
if
(
this
.
data
.
c
lass
Tatol
>
this
.
caculateArrLength
(
this
.
data
.
courseList
))
{
if
(
this
.
data
.
c
ourse
Tatol
>
this
.
caculateArrLength
(
this
.
data
.
courseList
))
{
let
page
=
this
.
data
.
page
+
1
;
this
.
setData
({
page
,
...
...
business/pages/deskcenter/index.js
View file @
b6602395
...
...
@@ -4,7 +4,8 @@ import {
loginTime
}
from
'../../../service/business/ucenter.js'
;
import
{
LocalStorage
LocalStorage
,
formatDay
}
from
'../../../utilities/index.js'
;
import
{
commonwaitjobGet
,
...
...
@@ -58,16 +59,10 @@ Page({
windowWidth
:
app
.
globalData
.
windowWidth
,
windowHeight
:
app
.
globalData
.
windowHeight
,
total
:
0
,
ringChart
:{
1
:
''
,
2
:
''
,
3
:
''
},
todocallTotal
:
0
,
modalshow
:
false
,
modelHideClass
:
false
,
analyzeDashStatic
:
{},
//面板数据
hideCanvasRing
:
true
,
guideDailogShow
:
false
,
guideIndex
:
1
},
...
...
@@ -102,59 +97,11 @@ Page({
},
200
)
}
},
onReady
(){
let
that
=
this
;
let
query
=
wx
.
createSelectorQuery
();
let
watchTop
=
0
;
query
.
select
(
'.ring-chart-box'
).
boundingClientRect
()
query
.
exec
(
res
=>
{
watchTop
=
res
[
0
].
top
+
20
;
this
.
data
.
watchTop
=
watchTop
;
// ringchart进入页面一般都看不到
// if(watchTop<this.data.windowHeight-120){
// this.setData({
// hideCanvasRing: false
// })
// }else{
// this.setData({
// hideCanvasRing: true
// })
// }
})
},
onPageScroll
(
e
){
let
that
=
this
;
let
watchTop
=
this
.
data
.
watchTop
;
let
scrollTop
=
e
.
scrollTop
;
if
(
watchTop
>
this
.
data
.
windowHeight
){
if
(
scrollTop
>=
Math
.
abs
(
watchTop
-
this
.
data
.
windowHeight
-
300
)){
this
.
setData
({
hideCanvasRing
:
false
})
}
else
{
this
.
setData
({
hideCanvasRing
:
true
})
}
}
else
{
if
(
scrollTop
>=
Math
.
abs
(
this
.
data
.
windowHeight
-
watchTop
+
20
)){
this
.
setData
({
hideCanvasRing
:
false
})
}
else
{
this
.
setData
({
hideCanvasRing
:
true
})
}
}
},
analyzeDashboardGet
(){
let
date
=
new
Date
();
let
today
=
date
.
getFullYear
()
+
"-"
+
(
date
.
getMonth
()
+
1
)
+
"-"
+
(
date
.
getDate
()
<
10
?
(
'0'
+
date
.
getDate
())
:
date
.
getDate
());
let
today
=
new
Date
().
getTime
()
/
1000
;
analyzeDashboardGet
({
school_id
:
this
.
data
.
sid
,
start_date
:
today
start_date
:
formatDay
(
today
)
}).
then
(
res
=>
{
const
{
code
,
data
}
=
res
;
if
(
code
==
200
)
{
...
...
@@ -416,12 +363,12 @@ Page({
}).
then
((
res
)
=>
{
const
{
code
,
data
}
=
res
;
if
(
code
==
200
){
data
.
list
.
forEach
((
ele
)
=>
{
ele
.
calc_rate
=
`
${(
ele
.
course_time_rate
*
100
).
toFixed
(
2
)}
`
;
})
this
.
setData
({
classCours
:
data
.
list
classCours
:
data
.
list
})
data
.
list
.
forEach
((
ele
,
index
)
=>
{
this
.
initRingChart
(
index
+
1
,
ele
)
});
}
}).
catch
((
res
)
=>
{
...
...
@@ -465,42 +412,6 @@ Page({
dataLabel
:
false
});
},
initRingChart
(
index
,
data
){
let
canvasWidth
=
(
this
.
data
.
windowWidth
-
48
)
/
3
;
this
.
data
.
ringChart
[
index
]
=
new
wxCharts
({
animation
:
true
,
canvasId
:
`ringCanvas
${
index
}
`
,
type
:
'ring'
,
extra
:
{
ringWidth
:
14
,
pie
:
{
offsetAngle
:
-
90
}
},
title
:
{
name
:
`
${(
data
.
course_time_rate
*
100
).
toFixed
(
2
)}
%`
,
color
:
'#000000'
,
fontSize
:
12
},
series
:
[{
name
:
'已完成'
,
data
:
data
.
course_time_rate
*
100
,
stroke
:
false
,
color
:
'#FFB97A'
,
},
{
name
:
'除去已完成'
,
data
:
100
-
data
.
course_time_rate
*
100
,
stroke
:
false
,
color
:
'#FFEBD9'
,
}],
disablePieStroke
:
true
,
width
:
canvasWidth
,
height
:
200
,
dataLabel
:
false
,
legend
:
false
,
padding
:
0
});
},
nextGuide
(
e
){
const
{
index
}
=
e
.
currentTarget
.
dataset
;
if
(
index
==
5
){
...
...
business/pages/deskcenter/index.wxml
View file @
b6602395
...
...
@@ -152,33 +152,17 @@
<text class="subtitle-text">(近6个月)</text>
</view>
<view class="chart-box" wx:if="{{classCours.length>0}}">
<view class="chart-item" wx:if="{{classCours[0]}}">
<view class="canvas-box" >
<canvas canvas-id="ringCanvas1" class="ringcanvas" hidden="{{modalshow || hideCanvasRing}}"></canvas>
<block wx:for="{{classCours}}" wx:key="index">
<view class="chart-item">
<view class="canvas-box2" style="background-image: conic-gradient(#FFB97A 0 {{item.calc_rate}}%, #FFEBD9 {{item.calc_rate}}% 100%)">
<view class="num">{{item.calc_rate}}%</view>
</view>
<view class="content-box">
<view class="name">{{item.title}}</view>
<view class="count">{{item.course_time}}课时</view>
</view>
</view>
<view class="content-box">
<view class="name" >{{classCours[0].title}}</view>
<view class="count" >{{classCours[0].course_time}}课时</view>
</view>
</view>
<view class="chart-item" wx:if="{{classCours[1]}}">
<view class="canvas-box" >
<canvas canvas-id="ringCanvas2" class="ringcanvas" hidden="{{modalshow || hideCanvasRing}}"></canvas>
</view>
<view class="content-box">
<view class="name" >{{classCours[1].title}}</view>
<view class="count" >{{classCours[1].course_time}}课时</view>
</view>
</view>
<view class="chart-item" wx:if="{{classCours[2]}}">
<view class="canvas-box" >
<canvas canvas-id="ringCanvas3" class="ringcanvas" hidden="{{modalshow || hideCanvasRing}}"></canvas>
</view>
<view class="content-box">
<view class="name" >{{classCours[2].title}}</view>
<view class="count" >{{classCours[2].course_time}}课时</view>
</view>
</view>
</block>
</view>
<view class="empty-content" wx:else>
<view class="empty-text">暂无课程分析数据~</view>
...
...
business/pages/deskcenter/index.wxss
View file @
b6602395
...
...
@@ -310,17 +310,52 @@ page{
.ring-chart-box .chart-box{
display: flex;
position: relative;
padding: 55rpx 0 5rpx
}
.ring-chart-box .chart-box .chart-item .canvas-box2{
width: 170rpx;
height: 170rpx;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
position: relative;
}
.ring-chart-box .chart-box .chart-item .canvas-box2::after{
content: '';
width: 180rpx;
height: 180rpx;
border-radius: 50%;
border: 1px solid #FFB97A;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
}
.ring-chart-box .chart-box .chart-item .canvas-box2 .num{
width: 110rpx;
height: 110rpx;
color: #000;
font-size: 24rpx;
display: flex;
align-items: center;
justify-content: center;
background: #fff;
border-radius: 50%;
}
.ring-chart-box .chart-box .chart-item{
flex: 1;
/* overflow: hidden; */
max-width: 33.33%;
padding: 20rpx 0;
width: 33.33%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.ring-chart-box .chart-box .chart-item .canvas-box{
position: relative;
height: 85px;
/* margin-top: -120rpx; */
}
.ring-chart-box .chart-box .chart-item .canvas-box::after{
content: '';
...
...
@@ -335,7 +370,8 @@ page{
}
.content-box{
position: relative;
/* margin-top: -120rpx; */
padding-top: 24rpx;
width: 100%;
}
.ring-chart-box .chart-box .chart-item .name{
font-size: 24rpx;
...
...
@@ -347,6 +383,7 @@ page{
overflow: hidden;
text-overflow:ellipsis;
white-space: nowrap;
padding: 0 5rpx;
}
.ring-chart-box .chart-box .chart-item .count{
font-size:24rpx;
...
...
@@ -715,4 +752,6 @@ cover-view{
}
.guide-step5 .guide-line{
top: 710rpx;
}
\ No newline at end of file
}
business/pages/organizationalmgt/info.wxml
View file @
b6602395
...
...
@@ -3,7 +3,7 @@
<view class="box" wx:if="{{sid && sid!=0}}">
<view class="box-title">
<view class="title">资料设置
{{sid==0 || dakarole==1? 0: 7}}
</view>
<view class="title">资料设置</view>
</view>
<view class="line-item">
<view class="item-label">头像</view>
...
...
business/pages/studentcenter/buycourse.js
0 → 100644
View file @
b6602395
// business/pages/studentcenter/buycourse.js
import
{
studentclasseslistGet
,
studentclassesGet
}
from
'../../../service/business/studentmgt'
;
import
{
coursemakePost
,
}
from
'../../../service/business/classservice'
import
{
courseList
,
}
from
'../../../service/business/coursemgt.js'
;
var
app
=
getApp
();
Page
({
/**
* 页面的初始数据
*/
data
:
{
imageRoot
:
app
.
globalData
.
imageRoot
,
imageVersion
:
app
.
globalData
.
imageVersion
,
localImageRoot
:
"../../../images"
,
submiting
:
false
,
sid
:
0
,
params
:
{
student_id
:
''
,
course_id
:
''
,
mode_type
:
1
,
buy
:
''
,
give
:
''
,
class_ids
:
''
,
remark
:
''
},
courseList
:
[],
page
:
1
,
perPage
:
10
,
hasmore
:
true
,
emptyPage
:
false
,
selectCourseShow
:
false
,
selectClassShow
:
false
,
selectCourse
:
''
,
classList
:[],
selectClassNames
:
''
,
},
/**
* 生命周期函数--监听页面加载
*/
onLoad
:
function
(
options
)
{
const
{
sid
,
studentId
,
id
}
=
options
;
this
.
setData
({
sid
,
studentId
,
id
,
'params.student_id'
:
studentId
})
if
(
id
){
wx
.
setNavigationBarTitle
({
title
:
'续费课程'
})
this
.
studentclassesGet
()
}
this
.
getCourseList
(
'init'
)
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady
:
function
()
{
},
/**
* 生命周期函数--监听页面显示
*/
onShow
:
function
()
{
this
.
getCourseList
(
'init'
)
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide
:
function
()
{
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload
:
function
()
{
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh
:
function
()
{
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom
:
function
()
{
},
/**
* 用户点击右上角分享
*/
onShareAppMessage
:
function
()
{
},
getCourseList
(
type
)
{
if
(
!
this
.
data
.
hasmore
)
{
return
;
}
if
(
this
.
data
.
listLoading
)
{
return
}
wx
.
showLoading
({
title
:
'加载中'
,
})
this
.
setData
({
listLoading
:
true
})
courseList
({
page
:
this
.
data
.
page
,
perPage
:
this
.
data
.
perPage
,
school_id
:
this
.
data
.
sid
}).
then
((
res
)
=>
{
const
{
code
,
data
}
=
res
;
this
.
setData
({
listLoading
:
false
})
wx
.
hideLoading
();
if
(
code
!=
200
)
{
// 失败的处理
}
else
{
if
(
data
.
total
)
{
this
.
setData
({
courseTatol
:
data
.
total
})
}
switch
(
type
)
{
case
'init'
:
//页面进来第一次加载
this
.
setData
({
courseList
:
data
.
list
},
()
=>
{
if
(
data
.
total
>
this
.
data
.
courseList
.
length
)
{
let
page
=
this
.
data
.
page
+
1
;
this
.
setData
({
page
,
})
}
else
{
// 没有更多了
this
.
setData
({
hasmore
:
false
})
}
})
break
;
case
'down'
:
// 页面下拉刷新
this
.
setData
({
courseList
:
data
.
list
},
()
=>
{
if
(
data
.
total
>
this
.
data
.
courseList
.
length
)
{
let
page
=
this
.
data
.
page
+
1
;
this
.
setData
({
page
,
})
}
else
{
// 没有更多了
this
.
setData
({
hasmore
:
false
})
}
})
wx
.
stopPullDownRefresh
();
break
;
case
'up'
:
// 页面上拉刷新
const
courseList
=
this
.
data
.
courseList
;
this
.
setData
({
courseList
:
courseList
.
concat
(
data
.
list
)
},
()
=>
{
console
.
log
(
this
.
data
.
courseTatol
,
this
.
data
.
courseList
.
length
)
if
(
this
.
data
.
courseTatol
>
this
.
data
.
courseList
.
length
)
{
let
page
=
this
.
data
.
page
+
1
;
this
.
setData
({
page
,
})
}
else
{
// 没有更多了
this
.
setData
({
hasmore
:
false
})
}
})
break
;
default
:
break
;
}
if
(
this
.
data
.
courseList
.
length
==
0
)
{
this
.
setData
({
emptyPage
:
true
})
}
else
{
this
.
setData
({
emptyPage
:
false
,
})
}
}
}).
catch
((
e
)
=>
{
wx
.
hideLoading
();
this
.
setData
({
listLoading
:
false
})
})
},
studentclassesGet
(){
const
{
studentId
,
id
}
=
this
.
data
;
studentclassesGet
({
student_id
:
studentId
,
extra
:
'course'
,
id
,
type
:
1
}).
then
((
res
)
=>
{
const
{
code
,
data
}
=
res
;
if
(
code
==
200
){
if
(
data
){
this
.
setData
({
selectCourse
:
data
.
course
,
"params.mode_type"
:
data
.
course_mode
,
selectClassNames
:
data
.
course
.
classes
.
map
((
ele
)
=>
{
return
ele
.
title
}).
join
(
','
)
})
}
}
})
},
studentclasseslistGet
(){
if
(
this
.
data
.
selectCourse
&&
this
.
data
.
selectCourse
.
id
){
studentclasseslistGet
({
school_id
:
this
.
data
.
sid
,
course_id
:
this
.
data
.
selectCourse
.
id
,
graduation_status
:
1
}).
then
((
res
)
=>
{
const
{
code
,
data
}
=
res
;
if
(
code
==
200
){
data
.
list
.
forEach
((
item
)
=>
{
item
.
isSelected
=
false
})
this
.
setData
({
classList
:
data
.
list
})
}
})
}
else
{
// wx.showToast({
// title: '',
// icon: 'none',
// duration: 2000
// })
}
},
showselectCourse
(){
if
(
this
.
data
.
id
){
return
}
this
.
setData
({
selectCourseShow
:
true
})
},
hideselectCourse
(
e
){
const
{
flag
}
=
e
.
target
.
dataset
;
if
(
flag
){
this
.
setData
({
selectCourseShow
:
false
})
}
},
scrolltolowerCourse
(){
this
.
getCourseList
(
'up'
);
},
selectCourseHandle
(
e
){
const
{
item
}
=
e
.
currentTarget
.
dataset
;
this
.
setData
({
selectCourse
:
item
,
selectCourseShow
:
false
})
this
.
studentclasseslistGet
();
},
showselectClass
(
e
){
if
(
this
.
data
.
selectCourse
){
this
.
setData
({
selectClassShow
:
true
})
}
else
{
wx
.
showToast
({
title
:
'请先选择课程'
,
icon
:
'none'
,
duration
:
2000
})
}
},
hideselectClass
(
e
){
const
{
flag
}
=
e
.
target
.
dataset
;
if
(
flag
){
this
.
setData
({
selectClassShow
:
false
})
}
},
selectClassHandle
(
e
){
const
{
item
,}
=
e
.
currentTarget
.
dataset
;
const
{
classList
}
=
this
.
data
;
let
selectClassNames
=
this
.
data
.
selectClassNames
;
classList
.
find
(
ele
=>
ele
.
id
==
item
.
id
).
isSelected
=
!
item
.
isSelected
;
selectClassNames
=
classList
.
map
((
ele
)
=>
{
if
(
ele
.
isSelected
){
return
ele
.
title
}
}).
join
(
','
);
this
.
setData
({
classList
,
selectClassNames
})
},
remarkInput
(
e
){
const
{
value
}
=
e
.
detail
;
this
.
setData
({
"params.remark"
:
value
})
},
selectModeType
(
e
){
if
(
this
.
data
.
id
){
return
}
const
{
type
}
=
e
.
currentTarget
.
dataset
;
this
.
setData
({
"params.mode_type"
:
type
,
"params.buy"
:
''
,
"params.give"
:
''
})
},
buyInput
(
e
){
let
value
;
if
(
this
.
data
.
params
.
mode_type
==
1
){
value
=
this
.
checkData
(
e
.
detail
.
value
);
}
else
{
value
=
parseInt
(
e
.
detail
.
value
)
}
this
.
setData
({
"params.buy"
:
value
})
},
giveInput
(
e
){
let
value
;
if
(
this
.
data
.
params
.
mode_type
==
1
){
value
=
this
.
checkData
(
e
.
detail
.
value
);
}
else
{
value
=
parseInt
(
e
.
detail
.
value
)
}
this
.
setData
({
"params.give"
:
value
})
},
save
(){
const
{
selectCourse
,
classList
,
params
}
=
this
.
data
;
const
class_ids
=
classList
.
map
(
ele
=>
{
if
(
ele
.
isSelected
){
return
ele
.
id
}
})
Object
.
assign
(
params
,
{
course_id
:
selectCourse
.
id
,
class_ids
:
class_ids
.
join
(
','
)
})
if
(
!
this
.
data
.
selectCourse
){
wx
.
showToast
({
title
:
'请选择课程'
,
icon
:
'none'
,
duration
:
2000
})
}
if
(
params
.
mode_type
==
3
&&
class_ids
.
length
==
0
){
wx
.
showToast
({
title
:
'请选择班级'
,
icon
:
'none'
,
duration
:
2000
})
}
if
(
this
.
data
.
submiting
){
return
;
}
this
.
data
.
submiting
=
true
;
coursemakePost
(
params
).
then
((
res
)
=>
{
const
{
code
,
data
}
=
res
;
if
(
code
==
200
){
wx
.
showToast
({
title
:
'购课成功'
,
icon
:
'success'
,
duration
:
2000
})
wx
.
navigateBack
({
delta
:
1
})
}
this
.
data
.
submiting
=
false
;
}).
catch
(()
=>
{
this
.
data
.
submiting
=
false
;
})
},
checkData
(
value
)
{
let
str
=
value
.
replace
(
/
[^\d\.]
/g
,
''
);
const
pointIndex
=
str
.
search
(
/
\.
/
);
if
(
pointIndex
!==
-
1
)
{
str
=
str
.
substr
(
0
,
pointIndex
+
1
).
replace
(
/
\.
/
,
'.5'
);
}
return
str
;
},
})
\ No newline at end of file
business/pages/studentcenter/buycourse.json
0 → 100644
View file @
b6602395
{
"navigationBarTitleText"
:
"购买课程"
,
"usingComponents"
:
{
"expiredTip"
:
"../../components/expiredTip"
}
}
\ No newline at end of file
business/pages/studentcenter/buycourse.wxml
0 → 100644
View file @
b6602395
<!--business/pages/studentcenter/buycourse.wxml-->
<wxs src="../../../filter/index.wxs" module="filter" />
<view class="container">
<view class="form-box">
<view class="form-item">
<view class="form-label boder-lable">购买课程</view>
<view class="form-content" bindtap="showselectCourse">
<text class="content-text" selectable="false" space="false" decode="false">{{selectCourse ? selectCourse.title : '请选择'}}</text>
<image class="arrowsmall" src="{{imageRoot}}2b/organizationalmgt/right.png?{{imageVersion}}"></image>
</view>
</view>
<view class="line20"></view>
<view class="form-item-group">
<view class="form-item">
<view class="form-label boder-lable">收费模式</view>
<view class="form-content select-content">
<view class="select-item" data-type="{{1}}" bindtap="selectModeType">
<view class="icon {{params.mode_type == 1 ? 'act-icon' : ''}}">
<view class="inner" wx:if="{{params.mode_type == 1}}"></view>
</view>
<view class="text">课时</view>
</view>
<view class="select-item " data-type="{{2}}" bindtap="selectModeType">
<view class="icon {{params.mode_type == 2 ? 'act-icon' : ''}}">
<view class="inner" wx:if="{{params.mode_type == 2}}"></view>
</view>
<view class="text">天数</view>
</view>
<view class="select-item " style="margin-right: 0;" data-type="{{3}}" bindtap="selectModeType">
<view class="icon {{params.mode_type == 3 ? 'act-icon' : ''}}">
<view class="inner" wx:if="{{params.mode_type == 3}}"></view>
</view>
<view class="text">班级</view>
</view>
</view>
</view>
<block wx:if="{{params.mode_type == 1}}">
<view class="form-item">
<view class="form-label">购买课时</view>
<view class="form-content">
<input type="number" class="form-input" value="{{params.buy}}" placeholder="请输入" bindinput="buyInput"/>
<image class="arrowsmall" src="{{imageRoot}}2b/organizationalmgt/right.png?{{imageVersion}}"></image>
</view>
</view>
<view class="form-item">
<view class="form-label">赠送课时</view>
<view class="form-content">
<input type="number" class="form-input" value="{{params.give}}" placeholder="请输入" bindinput="giveInput"/>
<image class="arrowsmall" src="{{imageRoot}}2b/organizationalmgt/right.png?{{imageVersion}}"></image>
</view>
</view>
</block>
<block wx:if="{{params.mode_type == 2}}">
<view class="form-item">
<view class="form-label">购买天数</view>
<view class="form-content">
<input type="number" class="form-input" value="{{params.buy}}" placeholder="请输入" bindinput="buyInput"/>
<image class="arrowsmall" src="{{imageRoot}}2b/organizationalmgt/right.png?{{imageVersion}}"></image>
</view>
</view>
<view class="form-item">
<view class="form-label">赠送天数</view>
<view class="form-content">
<input type="number" class="form-input" value="{{params.give}}" placeholder="请输入" bindinput="giveInput"/>
<image class="arrowsmall" src="{{imageRoot}}2b/organizationalmgt/right.png?{{imageVersion}}"></image>
</view>
</view>
</block>
<block wx:if="{{params.mode_type == 3}}">
<view class="form-item">
<view class="form-label">选择班级</view>
<view class="form-content" bindtap="showselectClass">
<text class="content-text" selectable="false" space="false" decode="false">{{ selectClassNames ? selectClassNames : '请选择'}}</text>
<image class="arrowsmall" src="{{imageRoot}}2b/organizationalmgt/right.png?{{imageVersion}}"></image>
</view>
</view>
</block>
</view>
<view class="line20"></view>
<view class="form-item">
<view class="form-label boder-lable">备注</view>
<view class="form-content">
<input type="text" class="form-input" value="{{params.remark}}" placeholder="请输入" bindinput="remarkInput"/>
<image class="arrowsmall" src="{{imageRoot}}2b/organizationalmgt/right.png?{{imageVersion}}"></image>
</view>
</view>
</view>
<view class="form-fixbtn" bindtap="save">
保存
</view>
</view>
<view class="select-student-dailog" wx:if="{{selectCourseShow}}" bindtap="hideselectCourse" data-flag="{{1}}">
<view class="dailog-content dailog-class-content">
<scroll-view class="student-list class-list" scroll-y="true" lower-threhold="200" bindscrolltolower="scrolltolowerCourse">
<view class="class-item {{selectCourse.id == item.id ? 'act-class' : ''}}" wx:for="{{courseList}}" wx:key="index" data-item="{{item}}" bindtap="selectCourseHandle">{{item.title}}</view>
</scroll-view>
<view class="line-16"></view>
<view class="cancle-btn" bindtap="hideselectCourse" data-flag="{{1}}">取消</view>
</view>
</view>
<view class="select-student-dailog" wx:if="{{selectClassShow}}" bindtap="hideselectClass" data-flag="{{1}}">
<view class="dailog-content dailog-class-content">
<scroll-view class="student-list class-list" scroll-y="true" lower-threhold="200">
<view class="class-item {{item.isSelected ? 'act-class' : ''}}" wx:for="{{classList}}" wx:key="index" data-item="{{item}}" bindtap="selectClassHandle">{{item.title}}</view>
</scroll-view>
<view class="line-16"></view>
<view class="cancle-btn" bindtap="hideselectClass" data-flag="{{1}}">确定</view>
</view>
</view>
<expiredTip/>
business/pages/studentcenter/buycourse.wxss
0 → 100644
View file @
b6602395
/* business/pages/studentcenter/buycourse.wxss */
@import '../../../style/commonform.wxss';
page{
background: #F7F7F9;
}
.container{
}
.form-box{
padding-top: 30rpx;
background: #fff;
}
.form-box .form-item::after{
width: calc(100% - 25rpx);
}
.form-box .form-item{
/* display: none; */
position: none;
}
.form-box .form-item .boder-lable{
font-size:28rpx;
font-family:PingFang SC;
font-weight:bold;
color:rgba(0,0,0,1);
}
.form-box .form-item .form-content{
justify-content: flex-end;
}
.form-box .form-item .form-content .content-text{
font-size:26rpx;
font-family:PingFang SC;
font-weight:400;
color:rgba(140,140,140,1);
overflow: hidden;
text-overflow:ellipsis;
white-space: nowrap;
}
.select-content{
justify-content: flex-start;
}
.select-content .select-item{
display: flex;
align-items: center;
margin-right: 72rpx;
}
.select-content .select-item .icon{
width:31rpx;
height:31rpx;
background:rgba(255,255,255,1);
border: 2rpx solid rgba(116,116,116,1);
border-radius:50%;
margin-right: 14rpx;
display: flex;
align-items: center;
justify-content: center;
}
.select-content .select-item .act-icon{
border: 2px solid rgba(101,184,244,1);
}
.select-content .select-item .text{
font-size:26rpx;
font-family:PingFang SC;
font-weight:400;
color:rgba(140,140,140,1);
}
.select-content .select-item .icon .inner{
width:19rpx;
height:19rpx;
background:rgba(101,184,244,1);
border-radius:50%;
}
.select-student-dailog{
width: 100%;
height: 100%;
position: fixed;
left: 0;
top: 0;
background:rgba(0,0,0,.5);
z-index: 100;
}
.select-student-dailog .dailog-content{
width: 100%;
position: absolute;
left: 0;
bottom: 0;
background:rgba(255,255,255,1);
border-radius:20rpx 20rpx 0px 0px;
}
.select-student-dailog .dailog-content .search-box{
width:525rpx;
height:60rpx;
background:rgba(247,247,249,1);
border-radius:30rpx;
margin: 40rpx auto;
display: flex;
align-items: center;
}
.select-student-dailog .dailog-content .search-box .icon{
width:30rpx;
height:30rpx;
margin: 0 26rpx;
}
.select-student-dailog .dailog-content .search-box .ipt{
flex: 1;
}
.select-student-dailog .dailog-content .search-box .search-btn{
width:107rpx;
height:60rpx;
background:rgba(101,184,244,1);
border-radius:30rpx;
font-size:26rpx;
font-family:PingFang SC;
font-weight:400;
color:rgba(255,255,255,1);
line-height:60rpx;
text-align: center;
}
.select-student-dailog .dailog-content .student-list{
display: flex;
flex-wrap: wrap;
max-height: 475rpx;
}
.select-student-dailog .dailog-content .student-list .student-item{
display: inline-block;
width: 25%;
text-align: center;
margin-bottom: 60rpx;
}
.select-student-dailog .dailog-content .student-list .student-item .avatar-box{
padding-bottom: 16rpx;
}
.select-student-dailog .dailog-content .student-list .student-item .avatar-box image{
width:107rpx;
height:107rpx;
border-radius:50%;
}
.select-student-dailog .dailog-content .student-list .student-item .name{
font-size:26rpx;
font-family:PingFang SC;
font-weight:bold;
color:rgba(0,0,0,1);
line-height:1;
padding-bottom: 20rpx;
}
.select-student-dailog .dailog-content .student-list .student-item .count{
font-size:22rpx;
font-family:PingFang SC;
font-weight:400;
color:rgba(137,138,136,1);
line-height:1;
}
.dailog-class-content .cancle-btn{
height: 106rpx;
font-size:28rpx;
font-family:PingFang SC;
font-weight:bold;
color:rgba(0,0,0,1);
display: flex;
align-items: center;
justify-content: center;
}
.select-student-dailog .dailog-class-content .class-list .class-item{
height: 95rpx;
padding: 33rpx 66rpx;
font-size:28rpx;
font-family:PingFang SC;
font-weight:bold;
color:rgba(0,0,0,1);
border-bottom: 1px solid rgba(0,0,0,.05);
line-height: 1;
overflow: hidden;
text-overflow:ellipsis;
white-space: nowrap;
text-align: center;
}
.select-student-dailog .dailog-class-content .class-list .class-item:last-of-type{
border: none;
}
.select-student-dailog .dailog-class-content .class-list .act-class{
color:rgba(83,200,255,1);
}
.select-student-dailog .dailog-class-content{
/* height:600rpx; */
background:rgba(255,255,255,1);
border-radius:20rpx 20rpx 0px 0px;
}
.select-student-dailog .dailog-class-content .class-list{
max-height:475rpx;
}
.line20{
width: 100%;
height: 20rpx;
background:rgba(247,247,249,1);
}
\ No newline at end of file
constants/api.js
View file @
b6602395
...
...
@@ -313,6 +313,7 @@ const apis = {
scheduleremind
:
`
${
api
}
member/erp/schedules/schedule_remind`
,
//B端-上课提醒列表
behaviorlog
:
`
${
api
}
member/data/behavior`
,
//B端-上课提醒列表
scheduleleave
:
`
${
api
}
member/erp/student/leave/schedule_leave`
,
//B端-上课提醒请假列表
coursemake
:
`
${
api
}
member/erp/course/make`
,
//购买和续课
},
common
:
{
memberSession
:
`
${
api
}
member/session`
,
...
...
constants/constants.js
View file @
b6602395
export
default
{
imageRoot
:
'https://cdn.img.shangjiadao.cn/qingxiao/daka/images/'
,
host
:
'https://qxapi.qingxiao.online/daka'
,
host2
:
'https://wx.m.shangjiadao.cn'
,
storageVersion
:
'
4
.0'
,
//
host: 'https://qxapi.qingxiao.online/daka',
//
host2: 'https://wx.m.shangjiadao.cn',
storageVersion
:
'
5
.0'
,
imageVersion
:
'20191104'
,
//
host: 'https://clock.wp53.cn',
//
host2: 'https://test.wp53.cn',
host
:
'https://clock.wp53.cn'
,
host2
:
'https://test.wp53.cn'
,
appId
:
'wxc1246ea029394785'
,
miniProgram
:
{
clock
:
'wxdeee20e52a1fd7ee'
...
...
constants/parameter.js
View file @
b6602395
...
...
@@ -509,5 +509,12 @@ export default [
sharer_source_id
:
'id'
,
qrcode_source_id
:
''
,
source_type_model
:
12
},
{
"root"
:
"src/pages/myschedule/landpage"
,
"name"
:
"课程表"
,
sharer_source_id
:
'sid'
,
qrcode_source_id
:
''
,
source_type_model
:
1
}
]
js/staticlog.js
View file @
b6602395
...
...
@@ -90,6 +90,7 @@ const staticLog = function () {
source_id
:
getSourceId
(
currentPage
,
options
,
originScene
).
pageSourceId
||
''
,
from_path
:
originPage
||
''
,
from_id
:
getSourceId
(
originPage
,
originParams
,
originScene
).
pageSourceId
||
''
,
from_type_model
:
getSourceId
(
originPage
,
originParams
,
originScene
).
sourcetypemodel
||
''
,
source_type_model
:
getSourceId
(
currentPage
,
originParams
,
originScene
).
sourcetypemodel
||
''
,
scene
:
originScene
||
''
,
param
:
JSON
.
stringify
({
...
...
service/business/classservice.js
View file @
b6602395
...
...
@@ -256,6 +256,15 @@ function scheduleleaveGet (data) {
errorresolve
:
1
,
})
}
function
coursemakePost
(
data
)
{
return
wxRequest
({
role
:
'2b'
,
url
:
apis
.
business
.
classservice
.
coursemake
,
data
,
method
:
'POST'
,
errorresolve
:
2
,
})
}
export
{
statisticalGet
,
schedulesGet
,
...
...
@@ -284,5 +293,6 @@ export {
classrecentlyrecordsGet
,
scheduleremindGet
,
behaviorlogPost
,
scheduleleaveGet
scheduleleaveGet
,
coursemakePost
}
\ No newline at end of file
src/pages/myschedule/landpage.wxml
View file @
b6602395
...
...
@@ -132,9 +132,9 @@
</view>
</view>
<view class="modal-dialog modal-backLeave" hidden="{{!modalBackLeaveShow}}" catchtouchmove='true'>
<view class="modal-dialog modal-backLeave" hidden="{{!modalBackLeaveShow}}" catchtouchmove='true'
style="z-index: 101;"
>
<view class="modal-mask"></view>
<view class="modal-box">
<view class="modal-box"
style="z-index: 102;"
>
<view class="modal-content">
<view class="tip-content">确定要撤销请假操作吗?</view>
</view>
...
...
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