Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
schedule
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fengzhaoyu
schedule
Commits
2e608be9
Commit
2e608be9
authored
Apr 16, 2020
by
liang ce
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改outlook流程
parent
53ee4609
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
189 additions
and
128 deletions
+189
-128
http.js
api/http.js
+4
-4
request.js
api/request.js
+8
-0
app.json
app.json
+2
-1
relatedApp.acss
components/relatedApp/relatedApp.acss
+3
-2
relatedApp.axml
components/relatedApp/relatedApp.axml
+25
-7
relatedApp.js
components/relatedApp/relatedApp.js
+26
-3
bindingOutlook.axml
pages/bindingOutlook/bindingOutlook.axml
+3
-2
bindingOutlook.js
pages/bindingOutlook/bindingOutlook.js
+12
-2
meetingRoomList.acss
pages/meetingRoomList/meetingRoomList.acss
+16
-17
meetingRoomList.axml
pages/meetingRoomList/meetingRoomList.axml
+56
-56
meetingRoomList.js
pages/meetingRoomList/meetingRoomList.js
+15
-15
place.axml
pages/place/place.axml
+1
-1
exampleStore.js
stores/exampleStore.js
+18
-18
No files found.
api/http.js
View file @
2e608be9
...
...
@@ -11,7 +11,7 @@ export default function http(data) {
method
:
data
.
method
,
dataType
:
"json"
,
data
:
data
.
data
,
success
:
function
(
res
)
{
success
:
function
(
res
)
{
if
(
res
.
data
.
code
==
0
)
{
resolve
(
res
);
}
else
{
...
...
@@ -21,7 +21,7 @@ export default function http(data) {
});
}
},
fail
:
function
(
res
)
{
fail
:
function
(
res
)
{
dd
.
alert
({
content
:
"网络异常"
,
buttonText
:
"确定"
...
...
@@ -53,10 +53,10 @@ export default function http(data) {
method
:
data
.
method
,
data
:
data
.
data
,
dataType
:
"json"
,
success
:
function
(
res
)
{
success
:
function
(
res
)
{
resolve
(
res
);
},
fail
:
function
(
res
)
{
fail
:
function
(
res
)
{
rejects
(
res
);
}
});
...
...
api/request.js
View file @
2e608be9
...
...
@@ -310,3 +310,11 @@ export function authorizationCodeReplacementToken(data) {
url
:
`https://third-authentication-beta.mingwork.com/microsoft/authorizationCodeReplacementToken`
});
}
// 发送给后端outlook code
export
function
getThirdUserPlatForm
(
data
)
{
return
$http
({
method
:
"get"
,
data
:
data
,
url
:
`/admin/third/user/getThirdUserPlatForm`
});
}
app.json
View file @
2e608be9
...
...
@@ -11,7 +11,8 @@
"pages/uploadFile/uploadFile"
,
"pages/participantsDetail/participantsDetail"
,
"pages/applicationDetails/applicationDetails"
,
"pages/attendeeList/attendeeList"
"pages/attendeeList/attendeeList"
,
"pages/outlookDetails/outlookDetails"
],
"window"
:
{
"allowsBounceVertical"
:
"YES"
...
...
components/relatedApp/relatedApp.acss
View file @
2e608be9
...
...
@@ -91,10 +91,10 @@
color: rgba(27, 38, 61, .5)
}
.
O
utlook {
.
o
utlook {
background: url(../../assests/outlookLogo.png) center /100% 100%;
}
.
Z
oom {
.
z
oom {
background: url(../../assests/zoomLogo.png) center /100% 100%;
}
\ No newline at end of file
components/relatedApp/relatedApp.axml
View file @
2e608be9
...
...
@@ -4,17 +4,17 @@
<template is="avater" data="{{item: userInfo}}"/>
<view>{{ userInfo.username }}</view>
</view>
<view class="hasAssociated">
<view class="hasAssociated"
a:if="{{relatedAppList.length === 1}}"
>
<view class="associated">
已关联应用
</view>
<view class="applicationList">
<view class="applicationLogo
Zoom
">
<view class="applicationList"
a:for="{{relatedAppList}}" a:if="{{item.platform !== 'dingTalk'}}"
>
<view class="applicationLogo
{{item.platform}}
">
</view>
<view class="applicationMsg">
<view>
<view>
Outlook日历
{{item.thirdUserIdentify}}
</view>
<view>
支持会议日程双向同步,实时同步日程信息等
...
...
@@ -26,12 +26,12 @@
</view>
</view>
</view>
<view class="unAssociated">
<view class="unAssociated"
a:if="{{relatedAppList.length === 3}}"
>
<view class="associated">
可关联应用
</view>
<view class="applicationList">
<view class="applicationLogo
O
utlook">
<view class="applicationList"
a:if="{{relatedAppPlatformList.indexOf('outlook') === -1}}"
>
<view class="applicationLogo
o
utlook">
</view>
<view class="applicationMsg" catchTap="bindingOutlook">
<view>
...
...
@@ -47,5 +47,22 @@
</view>
</view>
</view>
<view class="applicationList" a:if="{{relatedAppPlatformList.indexOf('zoom') === -1}}">
<view class="applicationLogo zoom">
</view>
<view class="applicationMsg">
<view>
<view>
Zoom
</view>
<view>
支持快速发起音视频会议
</view>
</view>
<view class="operateIcon">
<text class="iconfont iconright"></text>
</view>
</view>
</view>
</view>
</view>
\ No newline at end of file
components/relatedApp/relatedApp.js
View file @
2e608be9
Component
({
import
{
getThirdUserPlatForm
}
from
"../../api/request"
;
import
create
from
"dd-store"
;
create
.
Component
({
mixins
:
[],
data
:
{
userInfo
:
{}
$data
:
null
,
userInfo
:
{},
relatedAppList
:
[],
relatedAppPlatformList
:
[]
},
props
:
{},
didMount
()
{
...
...
@@ -9,9 +14,27 @@ Component({
userInfo
:
JSON
.
parse
(
getApp
().
globalData
.
userInfo
)
});
},
didUpdate
()
{},
didUpdate
()
{
if
(
this
.
$store
.
data
.
relatedAppNeedUpdate
)
{
this
.
$store
.
data
.
relatedAppNeedUpdate
=
false
;
this
.
update
();
this
.
getDate
();
}
},
didUnmount
()
{},
methods
:
{
getDate
()
{
getThirdUserPlatForm
().
then
(
res
=>
{
let
relatedAppPlatformList
=
[];
res
.
data
.
data
.
forEach
(
item
=>
{
relatedAppPlatformList
.
push
(
item
.
platform
);
});
this
.
setData
({
relatedAppList
:
res
.
data
.
data
,
relatedAppPlatformList
:
relatedAppPlatformList
});
});
},
preventSort
()
{
return
false
;
},
...
...
pages/bindingOutlook/bindingOutlook.axml
View file @
2e608be9
<web-view id="web-view-1" src="{{url}}" onMessage="test"></web-view>
\ No newline at end of file
<web-view id="web-view-1" src="{{url}}" onMessage="test">
</web-view>
\ No newline at end of file
pages/bindingOutlook/bindingOutlook.js
View file @
2e608be9
...
...
@@ -2,8 +2,10 @@ import {
getOutlookUrl
,
authorizationCodeReplacementToken
}
from
"../../api/request"
;
Page
({
import
create
from
"dd-store"
;
create
.
Page
({
data
:
{
$data
:
null
,
url
:
""
},
onLoad
()
{
...
...
@@ -16,12 +18,20 @@ Page({
});
},
test
(
e
)
{
const
code
=
e
.
detail
.
code
;
console
.
log
(
code
);
const
data
=
{
code
:
code
,
state
:
`
${
getApp
().
globalData
.
userid
}
,
${
dd
.
corpId
}
`
};
authorizationCodeReplacementToken
(
data
).
then
(
res
=>
{
console
.
log
(
res
);
if
(
res
.
data
.
data
)
{
this
.
$store
.
data
.
relatedAppNeedUpdate
=
true
;
this
.
update
();
dd
.
navigateBack
({
delta
:
1
});
}
});
}
});
pages/meetingRoomList/meetingRoomList.acss
View file @
2e608be9
...
...
@@ -7,7 +7,7 @@
left: 0;
top: 0;
z-index: 99;
border-bottom:
1
px solid rgba(25, 31, 37, 0.12);
border-bottom:
2r
px solid rgba(25, 31, 37, 0.12);
font-size: 26rpx;
letter-spacing: -0.31rpx;
height: 96rpx;
...
...
@@ -107,11 +107,7 @@
height: 24rpx;
width: 24rpx;
border-radius: 2rpx;
box-sizing: border-box;
margin-top: 6rpx;
margin-right: 6rpx;
background: #F3F6FA;
border: 1px solid rgba(27, 38, 61, 0.10);
margin: 2rpx;
}
.reserveRoomTimeBarBg>view:nth-of-type(47), .reserveRoomTimeBarBg>view:nth-of-type(48) {
...
...
@@ -124,12 +120,12 @@
.expired {
background: url(../../assests/cancel.png) center /100% 100% !important;
border:
1
px solid rgba(27, 38, 61, 0.04) !important;
border:
2r
px solid rgba(27, 38, 61, 0.04) !important;
}
.reservation {
background: #F3F6FA!important;
border:
1
px solid rgba(27, 38, 61, 0.1) !important;
border:
2r
px solid rgba(27, 38, 61, 0.1) !important;
}
.occupied {
...
...
@@ -144,7 +140,7 @@
.reserveRoomTimeBarNum {
display: flex;
margin-top: 1
2
rpx;
margin-top: 1
0
rpx;
font-size: 20rpx;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: bold;
...
...
@@ -153,9 +149,7 @@
.reserveRoomTimeBarNum>view {
text-align: center;
margin-right: 6rpx;
flex: 1;
width: 24rpx;
}
/* 弹框的样式 */
...
...
@@ -163,18 +157,23 @@
.modalContent, .calendarMoadl {
width: 100%;
height: 732rpx;
overflow: hidden;
margin-top: 10rpx;
}
.modalContent {
position: relative;
}
.modalHeader {
height: 32rpx;
line-height: 1;
position: relative;
right: 32rpx;
top: -32rpx;
font-size: 32rpx;
padding: 0 32rpx;
text-align: right;
color: #0A0A0A;
box-sizing: border-box;
z-index: 99999;
height: 32rpx;
}
.modalHeader>view {
...
...
@@ -184,7 +183,7 @@
.changeDay {
width: 100%;
border-bottom:
1
px solid rgba(25, 31, 37, 0.12);
border-bottom:
2r
px solid rgba(25, 31, 37, 0.12);
font-size: 30rpx;
text-align: center;
display: flex;
...
...
@@ -248,7 +247,7 @@
height: 100rpx;
line-height: 100rpx;
box-sizing: border-box;
border-bottom:
1
px solid rgba(25, 31, 37, 0.12);
border-bottom:
2r
px solid rgba(25, 31, 37, 0.12);
}
.OccupyTimeList>view:nth-of-type(2) view {
...
...
pages/meetingRoomList/meetingRoomList.axml
View file @
2e608be9
...
...
@@ -4,9 +4,9 @@
<view class="iconfont iconicon_open"></view>
</view>
</view>
<
scroll-view scroll-y="{{canScroll}}"
class="roomScrollView">
<
view
class="roomScrollView">
<view class="reserveMeeting">
<view class="meetingRoomContent" a:for="{{reserveRoomList}}" data-roomid="{{item.meetingRoomId}}" data-roomname="{{item.
meetingRoomFullN
ame}}" onTap="changeRoomTime">
<view class="meetingRoomContent" a:for="{{reserveRoomList}}" data-roomid="{{item.meetingRoomId}}" data-roomname="{{item.
n
ame}}" onTap="changeRoomTime">
<view class="roomMessage">
<view class="reserveRoomMsg">
<view class="reserveRoomTitle">
...
...
@@ -50,67 +50,67 @@
<view class="noRoomTip">当前暂无会议室</view>
</view>
</view>
</scroll-view>
<popup show="{{isShowModal}}" onClose="onCancel" position="bottom">
<view a:if="{{!isShowCalendar}}" class="modalContent">
<view class="modalHeader">
<text onTap="onDetermine">确定</text>
</view>
<view class="modalTimeSlot">
<text a:if="{{!modalFooter.startTime || !modalFooter.endTime}}">请选择会议时间</text>
<text a:if="{{modalFooter.startTime && modalFooter.endTime}}">{{modalFooter.startTime}}至{{modalFooter.isOneDay ? modalFooter.endTime.substr(11,16):modalFooter.endTime}} 共{{modalFooter.allMinutes}}分钟</text>
</view>
<view class="changeDay">
<view class="{{dataNum == '0' ? 'dataNumSelected' : ''}}" onTap="chooseDate" data-num="0">
<view>{{TimeSlot.todayTime.split('/')[1]}}月{{TimeSlot.todayTime.split('/')[2]}}日</view>
<view>今天</view>
</view>
<view class="{{dataNum == '1' ? 'dataNumSelected' : ''}}" onTap="chooseDate" data-num="1">
<view>{{TimeSlot.tomorrowTime.split('/')[1]}}月{{TimeSlot.tomorrowTime.split('/')[2]}}日</view>
<view>明天</view>
</view>
<view class="{{dataNum == '2' ? 'dataNumSelected' : ''}}" onTap="chooseDate" data-num="2">
<view>{{TimeSlot.afterTomorrowTime.split('/')[1]}}月{{TimeSlot.afterTomorrowTime.split('/')[2]}}日</view>
<view>后天</view>
</view>
<view class="{{dataNum == '3' ? 'dataNumSelected' : ''}}" onTap="chooseDate" data-num="3">
<view>
自定义日期
<view>
<popup show="{{isShowModal}}" onClose="onCancel" position="bottom">
<view a:if="{{!isShowCalendar}}" class="modalContent">
<view class="modalHeader" onTap="onDetermine">
确定
</view>
<view>
<text a:if="{{dataNum == '3'}}">{{meetingTime.date.split('/')[1]}}月{{meetingTime.date.split('/')[2]}}日</text>
<view class="modalTimeSlot">
<text a:if="{{!modalFooter.startTime || !modalFooter.endTime}}">请选择会议时间</text>
<text a:if="{{modalFooter.startTime && modalFooter.endTime}}">{{modalFooter.startTime}}至{{modalFooter.isOneDay ? modalFooter.endTime.substr(11,16):modalFooter.endTime}} 共{{modalFooter.allMinutes}}分钟</text>
</view>
</view>
</view>
<scroll-view scroll-y='{{true}}' class="modalOccupyTimeSlot" scroll-into-view="{{toThisTime}}">
<view class="OccupyTimeList" a:for="{{modalList}}" data-index="{{index}}" onTap="onChangeModalTime" id="{{item.reserveStartTime.substr(11,15)}}">
<view>
<view a:if="{{item.status==='BeOverdue'}}" class="beOverdue">
<text class="iconfont iconicon_Agreed1"></text>
<view class="changeDay">
<view class="{{dataNum == '0' ? 'dataNumSelected' : ''}}" onTap="chooseDate" data-num="0">
<view>{{TimeSlot.todayTime.split('/')[1]}}月{{TimeSlot.todayTime.split('/')[2]}}日</view>
<view>今天</view>
</view>
<view a:elif="{{item.status==='Uncheck'}}" class="Unchecked">
<text class="iconfont iconicon_uncheck"></text>
<view class="{{dataNum == '1' ? 'dataNumSelected' : ''}}" onTap="chooseDate" data-num="1">
<view>{{TimeSlot.tomorrowTime.split('/')[1]}}月{{TimeSlot.tomorrowTime.split('/')[2]}}日</view>
<view>明天</view>
</view>
<view a:elif="{{item.status==='checked'}}" class="checked">
<text class="iconfont iconicon_Agreed1"></text>
<view class="{{dataNum == '2' ? 'dataNumSelected' : ''}}" onTap="chooseDate" data-num="2">
<view>{{TimeSlot.afterTomorrowTime.split('/')[1]}}月{{TimeSlot.afterTomorrowTime.split('/')[2]}}日</view>
<view>后天</view>
</view>
<view class="{{dataNum == '3' ? 'dataNumSelected' : ''}}" onTap="chooseDate" data-num="3">
<view>
自定义日期
</view>
<view>
<text a:if="{{dataNum == '3'}}">{{meetingTime.date.split('/')[1]}}月{{meetingTime.date.split('/')[2]}}日</text>
</view>
</view>
</view>
<view>
<view>{{item.reserveStartTime.substr(10,15)}} ~ {{item.reserveEndTime.substr(10,15)}}</view>
<view class="expiredStatus" a:if="{{item.reserveStatus === 'expired'}}">
<scroll-view scroll-y='{{true}}' class="modalOccupyTimeSlot" scroll-into-view="{{toThisTime}}">
<view class="OccupyTimeList" a:for="{{modalList}}" data-index="{{index}}" onTap="onChangeModalTime" id="{{item.reserveStartTime.substr(11,15)}}">
<view>
<view a:if="{{item.status==='BeOverdue'}}" class="beOverdue">
<text class="iconfont iconicon_Agreed1"></text>
</view>
<view a:elif="{{item.status==='Uncheck'}}" class="Unchecked">
<text class="iconfont iconicon_uncheck"></text>
</view>
<view a:elif="{{item.status==='checked'}}" class="checked">
<text class="iconfont iconicon_Agreed1"></text>
</view>
</view>
<view>
<view>{{item.reserveStartTime.substr(10,15)}} ~ {{item.reserveEndTime.substr(10,15)}}</view>
<view class="expiredStatus" a:if="{{item.reserveStatus === 'expired'}}">
已过期
</view>
<view class="occupiedStatus" a:if="{{item.reserveStatus === 'occupied'}}">
</view>
<view class="occupiedStatus" a:if="{{item.reserveStatus === 'occupied'}}">
已被{{item.scheduleList[0].organizerName}}预定
</view>
</view>
</view>
</view>
</
scroll-
view>
</view>
</scroll-view>
</view>
<view class="calendarMoadl" a:else>
<view class="calendarTip">
<view class="calendarMoadl" a:else>
<view class="calendarTip">
自定义时间
</view>
<calendar type="single" haveYear="{{false}}" selectedDate="{{meetingTime.date}}" onSelect="handleSelect" onMonthChange="onMonthChange" onYearChange="onYearChange" onSelectHasDisableDate="onSelectHasDisableDate" />
</view>
</popup>
\ No newline at end of file
</view>
<calendar type="single" haveYear="{{false}}" selectedDate="{{meetingTime.date}}" onSelect="handleSelect" onMonthChange="onMonthChange" onYearChange="onYearChange" onSelectHasDisableDate="onSelectHasDisableDate" />
</view>
</popup>
\ No newline at end of file
pages/meetingRoomList/meetingRoomList.js
View file @
2e608be9
...
...
@@ -38,8 +38,7 @@ create.Page({
20
,
21
,
22
,
23
,
24
23
],
search
:
{
category
:
""
,
...
...
@@ -74,8 +73,8 @@ create.Page({
}
},
onLoad
(
query
)
{
let
date
=
new
Date
(
this
.
$store
.
data
.
startTime
.
replace
(
/-/g
,
"/"
));
//
let date = new Date();
//
let date = new Date(this.$store.data.startTime.replace(/-/g, "/"));
let
date
=
new
Date
();
let
year
=
date
.
getFullYear
();
let
month
=
padZero
(
date
.
getMonth
()
+
1
);
let
day
=
padZero
(
date
.
getDate
());
...
...
@@ -1216,18 +1215,19 @@ create.Page({
this
.
$store
.
data
.
locationName
=
this
.
data
.
meetingTime
.
meetingRoomName
;
this
.
$store
.
data
.
roomId
=
this
.
data
.
meetingTime
.
meetingRoomId
;
}
if
(
this
.
$store
.
data
.
locationName
!=
this
.
$store
.
data
.
originalData
.
location
.
locationName
||
this
.
$store
.
data
.
roomId
!=
this
.
$store
.
data
.
originalData
.
meetingRoomId
)
{
(
this
.
$store
.
data
.
updateInfo
=
{
updateType
:
"modify_location"
,
isUpate
:
true
}),
this
.
update
();
if
(
this
.
$store
.
data
.
originalData
&&
this
.
$store
.
data
.
locationName
)
{
if
(
this
.
$store
.
data
.
locationName
!=
this
.
$store
.
data
.
originalData
.
location
.
locationName
||
this
.
$store
.
data
.
roomId
!=
this
.
$store
.
data
.
originalData
.
meetingRoomId
)
{
(
this
.
$store
.
data
.
updateInfo
=
{
updateType
:
"modify_location"
,
isUpate
:
true
}),
this
.
update
();
}
}
dd
.
navigateBack
({
delta
:
2
});
...
...
pages/place/place.axml
View file @
2e608be9
...
...
@@ -24,7 +24,7 @@
<text>{{item.capacityNum}}</text>
</view>
<view class="equipment" a:if="{{item.equipFacilityLabelList}}">
<text class="iconfont iconshebei icon_facility1" style="margin-right: 9rpx;"></text>
<text class="iconfont iconshebei icon
icon
_facility1" style="margin-right: 9rpx;"></text>
<text a:for="{{item.equipFacilityLabelList}}" a:for-item="equipmentList">{{equipmentList.name}}</text>
</view>
</view>
...
...
stores/exampleStore.js
View file @
2e608be9
class
Store
{
data
=
{
locationName
:
''
,
participatorList
:
[],
participatorUserId
:
[],
// 参会人的userId
roomId
:
''
,
startTime
:
''
,
endTime
:
''
,
originUsers
:
[],
originUsersId
:
[],
originalData
:
null
,
indexNeedUpdate
:
false
,
tabBarIndex
:
'0'
,
updateInfo
:
{
updateType
:
''
,
isUpate
:
false
},
data
=
{
locationName
:
""
,
participatorList
:
[],
participatorUserId
:
[],
// 参会人的userId
roomId
:
""
,
startTime
:
""
,
endTime
:
""
,
originUsers
:
[],
originUsersId
:
[],
originalData
:
null
,
indexNeedUpdate
:
false
,
relatedAppNeedUpdate
:
false
,
tabBarIndex
:
"0"
,
updateInfo
:
{
updateType
:
""
,
isUpate
:
false
}
};
}
export
default
new
Store
()
\ No newline at end of file
export
default
new
Store
();
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