Commit 84c1fb33 by fengzhaoyu

保存

parent 278ffddb
......@@ -4,7 +4,7 @@ setGlobalStore(exampleStore);
App({
onLaunch(options) {
this.checkFullScren()
// 第一次打开
// options.query == {number:1}
// console.info('App onLaunch');
......@@ -13,7 +13,25 @@ App({
// 从后台被 scheme 重新打开
// options.query == {number:1}
},
// 检测全面屏
checkFullScren() {
dd.getSystemInfo({
success: (res) => {
// dd.alert({
// content: res.model.indexOf('iPhone 11') != -1
// })
if (true) {
// dd.alert({
// content: res.model.indexOf('iPhone 11') != -1
// })
this.globalData.isIPX = true
}
}
})
},
globalData: {
isIPX: false,
loading: false,
token: '',
avatar: '',
......
......@@ -54,7 +54,8 @@ input {
}
.remark .placeholder {
font-size: 28rpx
font-size: 28rpx;
font-family: PingFangSC-Regular;
}
.place, .time, .participator, .meetingWay {
......@@ -88,13 +89,13 @@ input {
justify-content: space-between;
}
.meetingWay .close, .place .close, .participator .iconicon_open {
.meetingWay .close, .place .close, .participator .iconright {
color: #9599A2;
}
.close {
font-size: 32rpx;
color: rgba(10, 10, 10, 0.4)
color: rgba(10, 10, 10, 0.3)
}
.repeatModal {
......
......@@ -7,7 +7,7 @@
</view>
</view>
<view class="remark" a:if="{{isShowRemark}}">
<input placeholder-class="placeholder" placeholder="请添加描述" class="text" onInput="onInput" data-type="remark" value="{{remark}}" focus="{{false}}" />
<input placeholder-class="placeholder" placeholder="请添加描述" class="text" onInput="onInput" data-type="remark" value="{{remark}}" focus="{{true}}" />
</view>
</view>
<!-- $data.$data.roomId locationName 地点 -->
......@@ -68,7 +68,7 @@
{{conflictPeople.length}}人会议安排冲突
</view>
</view>
<view class="iconicon_open iconfont icon" style=" vertical-align: middle" catchTap="nextPage" data-nextPage="participantsDetail"></view>
<view class="iconright iconfont icon" style=" vertical-align: middle" catchTap="nextPage" data-nextPage="participantsDetail"></view>
</view>
<view class="participatorListBottom" catchTap="nextPage" data-nextPage="participantsDetail">
<view class="people" a:for="{{$data.participatorList.length > 10 ? [...$data.participatorList].splice(0, 11) : $data.participatorList}}">
......
.tabBar {
height: 120rpx;
width: 100%;
background: url('../../assests/tabBarBg.png');
background-size: cover;
display: flex;
position: fixed;
left: 0;
bottom: 0;
padding-top: 4rpx;
/* box-shadow: 0 -4rpx 8rpx 0 rgba(0,0,0,0.04);
border-radius: 0 64rpx 0 64rpx 0 0 0; */
}
.tabBar>view {
.tabBarContaint {
display: flex;
height: 120rpx;
background: url('../../assests/tabBarBg.png');
background-size: cover;
padding-top: 4rpx;
}
.tabBarContaint>view {
flex: 1;
font-size: 28rpx;
}
.tabBar>view:nth-of-type(1) {
.tabBarContaint>view:nth-of-type(1) {
text-align: left;
}
.tabBar>view:nth-of-type(2) {
.tatabBarContaintbBar>view:nth-of-type(2) {
text-align: right;
}
......@@ -99,4 +102,10 @@
.tabBarView .iconicon_days {
color: #FFFFFF !important;
}
.tabBarBottom {
height: 15rpx;
width: 100%;
background: #fff;
}
\ No newline at end of file
......@@ -7,22 +7,26 @@
</my-schedule>
</view>
<view class="tabBar">
<view onTap="changeTabBar" data-tabbar='0'>
<view class="tabBarView tabBarView1 {{$data.tabBarIndex === '0' ? 'ischooseTabBar' : ''}}">
<view class="iconfont iconicon_dynamic"></view>
<view>动态</view>
<view class="tabBarContaint">
<view onTap="changeTabBar" data-tabbar='0'>
<view class="tabBarView tabBarView1 {{$data.tabBarIndex === '0' ? 'ischooseTabBar' : ''}}">
<view class="iconfont iconicon_dynamic"></view>
<view>动态</view>
</view>
</view>
</view>
<view onTap="changeTabBar" data-tabbar='1'>
<view class="tabBarView tabBarView2 {{$data.tabBarIndex === '1' ? 'ischooseTabBar' : ''}}">
<view class="iconfont iconicon_Calendarbox1">
<text class="iconfont iconicon_days iconicon_days{{iconDay}}">
</text>
<view onTap="changeTabBar" data-tabbar='1'>
<view class="tabBarView tabBarView2 {{$data.tabBarIndex === '1' ? 'ischooseTabBar' : ''}}">
<view class="iconfont iconicon_Calendarbox1">
<text class="iconfont iconicon_days iconicon_days{{iconDay}}">
</text>
</view>
<view>日程</view>
</view>
<view>日程</view>
</view>
<view class="createMeeting" onTap="createMeeting">
<text class="iconfont iconicon_add1"></text>
</view>
</view>
<view class="createMeeting" onTap="createMeeting">
<text class="iconfont iconicon_add1"></text>
<view class="tabBarBottom">
</view>
</view>
\ No newline at end of file
......@@ -4,12 +4,14 @@ create.Page({
data: {
$data: null,
iconDay: "",
isLocation: false
isLocation: false,
isIPX: false,
},
onLoad() {
let iconDay = new Date().getDate();
this.setData({
iconDay: iconDay
iconDay: iconDay,
isIPX: getApp().globalData.isIPX
});
dd.setNavigationBar({
title: "动态"
......
......@@ -194,7 +194,8 @@ input {
}
.remark .placeholder {
font-size: 28rpx
font-size: 28rpx;
font-family: PingFangSC-Regular;
}
.meetingWay {
......@@ -232,13 +233,13 @@ input {
justify-content: space-between;
}
.meetingWay .close, .place .close, .participator .iconicon_open {
.meetingWay .close, .place .close, .participator .iconright {
color: #9599A2;
}
.close {
font-size: 32rpx;
color: rgba(10, 10, 10, 0.4)
color: rgba(10, 10, 10, 0.3)
}
.repeatModal {
......@@ -583,4 +584,10 @@ input {
.participateText {
vertical-align: middle
}
.tabBarBottom {
height: 20rpx;
background: #fff;
width: 100%;
}
\ No newline at end of file
......@@ -98,7 +98,7 @@
{{conflictPeople.length}}人会议安排冲突
</view>
</view>
<view class="iconicon_open iconfont icon" style=" vertical-align: middle" catchTap="nextPage" data-nextPage="participantsDetail"></view>
<view class="iconright iconfont icon" style=" vertical-align: middle" catchTap="nextPage" data-nextPage="participantsDetail"></view>
</view>
<view class="participatorListBottom" catchTap="nextPage" data-nextPage="participantsDetail">
<view class="people" a:for="{{$data.participatorList.length > 10 ? [...$data.participatorList].splice(0, 11) : $data.participatorList}}">
......@@ -193,6 +193,8 @@
<text class="iconfont iconicon_share1"></text>
</view>
</view>
<view class="tabBarBottom">
</view>
</view>
<centerpopup centerPopup="{{centerPopup.showCenterPopup}}" centerPopupList="{{centerPopup.centerPopupList}}" onSelectSend="onSelectSend"></centerpopup>
<toast showToast="{{conToastData.showToast}}" title="{{conToastData.title}}" onToastHidden="onToastHidden"></toast>
......
import create from 'dd-store';
// import exampleStore from '/stores/exampleStore'
import pageStore from './store';
import { getMeetingRoomAffairs, createMeetingTask, deleteMeetingTask, updateMeetingTask, uploadPermissions } from '../../api/request';
import { isParticipate, deleteSchedule, getScheduleDetail, getUserScheduleInTime, modifySchedule } from '../../api/request.js'
......@@ -110,7 +109,7 @@ create.Page({
placeholder: ''
},
onShow() {
this.conflictPeople()
// this.conflictPeople()
setTimeout(() => {
this.update()
}, 100)
......@@ -121,6 +120,63 @@ create.Page({
'conToastData.title': '保存成功',
})
}
if (this.$store.data.updateInfo.isUpate) {
switch (this.$store.data.updateInfo.updateType) {
case 'operate_user':
if (this.$store.data.participatorList !== this.$store.data.originUsers) {
if (this.data.repeatable === 1) {
this.setData({
'conSelectPopupData.selectType': 'common',
'conSelectPopupData.showSelectPopup': true,
editType: this.$store.data.updateInfo.updateType
})
} else {
this.isChange(this.$store.data.updateInfo.updateType, 'only')
}
} else {
this.reSetUsers()
this.$store.data.updateInfo = {
isUpate: false,
updateType: ''
}
}
break;
case 'modify_location':
if ((this.$store.data.locationName !== this.$store.data.originalData.locationName) || (this.$store.data.roomId !== this.$store.data.originalData.meetingRoomId)) {
if (this.data.repeatable === 1) {
this.setData({
'conSelectPopupData.selectType': 'common',
'conSelectPopupData.showSelectPopup': true,
editType: this.$store.data.updateInfo.updateType
})
} else {
this.isChange(this.$store.data.updateInfo.updateType, 'only')
}
} else {
this.reSetLocation()
this.$store.data.updateInfo = {
isUpate: false,
updateType: ''
}
}
break;
}
} else {
// if (this.$store.data.updateInfo.updateType === 'operate_user') {
// this.reSetUsers()
// } else if (this.$store.data.updateInfo.updateType === 'modify_location') {
// this.reSetTime()
// this.reSetLocation()
// }
// this.$store.data.updateInfo = {
// isUpate: false,
// updateType: ''
// }
}
},
onLoad(event) {
this.reset()
......@@ -154,12 +210,14 @@ create.Page({
if (res.data.code === 0) {
let participatorList = []
let originUsers = []
let originUsersId = []
let participatorUserId = []
let repeatListMap = new Map()
for (let value of res.data.data.userList) {
if (value.participator) {
participatorList.push(value.participator)
participatorUserId.push(value.participator.userId)
originUsersId.push(value.participator.userId)
originUsers.push(value.participator)
if (value.userId === getApp().globalData.userid) {
this.setData({
......@@ -194,14 +252,14 @@ create.Page({
})
}
this.$store.data.originalData = res.data.data
this.$store.data.originUsers = participatorList
this.$store.data.originUsers = originUsers
this.$store.data.locationName = res.data.data.location.locationName
this.$store.data.roomId = res.data.data.meetingRoomId < 0 ? '' : res.data.data.meetingRoomId
this.$store.data.startTime = res.data.data.startTime.replace(/-/g, "/")
this.$store.data.endTime = res.data.data.endTime.replace(/-/g, "/")
this.$store.data.participatorList = participatorList
this.$store.data.participatorUserId = participatorUserId
this.$store.data.originUsersId = participatorUserId
this.$store.data.originUsersId = originUsersId
this.update()
this.conflictPeople()
this.store.data.scheduleId = res.data.data.id;
......@@ -273,6 +331,10 @@ create.Page({
this.$store.data.participatorList = []
this.$store.data.participatorUserId = []
this.$store.data.locationName = ''
this.$store.data.updateInfo = {
updateType: '',
isUpate: false
}
this.$store.data.startTime = this.getTimes()
this.$store.data.endTime = this.getTimes(new Date(this.getTimes()).setMinutes(new Date(this.$store.data.startTime).getMinutes() + 120))
this.update()
......@@ -283,9 +345,13 @@ create.Page({
nextPage(event) {
switch (event.target.dataset.nextPage) {
case 'location':
this.$store.data.updateInfo.updateType = 'modify_location'
this.update()
dd.navigateTo({ url: `./../place/place?scheduleItem=${JSON.stringify(this.data.scheduleItem)}&repeatable=${this.data.repeatable}` })
break
case 'participantsDetail':
this.$store.data.updateInfo.updateType = 'operate_user'
this.update()
dd.navigateTo({ url: `./../participantsDetail/participantsDetail?scheduleItem=${JSON.stringify(this.data.scheduleItem)}` })
break
}
......@@ -498,9 +564,7 @@ create.Page({
} else {
_that.$store.data.originUsers.forEach((item, index) => {
participatorList.push(item)
if (item.platform === 'dingtalk') {
participatorUserId.push(item.userId)
}
participatorUserId.push(item.userId)
})
res.users.forEach((item, index) => {
participatorList.push({ userId: item.userId, username: item.name, headUrl: item.avatar, platform: 'dingtalk' })
......@@ -628,6 +692,7 @@ create.Page({
for (let value of this.$store.data.participatorList) {
userIds.push(value.userId)
}
let data = {
startTime: this.$store.data.startTime.replace(/\//g, "-"),
endTime: this.$store.data.endTime.replace(/\//g, "-"),
......@@ -867,23 +932,34 @@ create.Page({
})
break
case 'operate_user':
let addUserList = this.arrayPoor(this.$store.data.originUsers, this.$store.data.participatorList).addUserList
let deleteUserList = this.arrayPoor(this.$store.data.originUsers, this.$store.data.participatorList).deleteUserList
let dataUser = {
addUserList: addUserList,
deleteUserList: deleteUserList,
modifyModel: modifyModel,
modifyContent: 'operate_user'
if (this.$store.data.originUsers != this.$store.data.participatorList) {
let addUserList = this.arrayPoor(this.$store.data.originUsers, this.$store.data.participatorList).addUserList
let deleteUserList = this.arrayPoor(this.$store.data.originUsers, this.$store.data.participatorList).deleteUserList
let dataUser = {
addUserList: addUserList,
deleteUserList: deleteUserList,
modifyModel: modifyModel,
modifyContent: 'operate_user'
}
this.modifySchedule(dataUser, needNotice).catch(err => {
this.$store.data.participatorList = this.$store.data.originUsers
this.$store.data.participatorUserId = this.$store.data.originUsersId
this.$store.data.updateInfo = {
updateType: '',
isUpate: false
}
this.update()
}).then(res => {
this.$store.data.originUsers = this.$store.data.participatorList
this.$store.data.originUsersId = this.$store.data.participatorUserId
this.$store.data.updateInfo = {
updateType: '',
isUpate: false
}
this.update()
})
}
this.modifySchedule(dataUser, needNotice).catch(err => {
this.$store.data.participatorList = this.$store.data.originUsers
this.$store.data.participatorUserId = this.$store.data.originUsersId
this.update()
}).then(res => {
this.$store.data.originUsers = this.$store.data.participatorList
this.$store.data.originUsersId = this.$store.data.participatorUserId
this.update()
})
break
case 'repeat':
let repeatListMap = new Map()
......@@ -964,7 +1040,7 @@ create.Page({
latitude: '-999',
locationName: this.$store.data.locationName
},
meetingRoomId: this.$store.data.meetingRoomId
meetingRoomId: this.$store.data.roomId
}
this.modifySchedule(dataLocation, needNotice).catch(err => {
this.$store.data.locationName = this.$store.data.originalData.location.locationName
......@@ -978,6 +1054,17 @@ create.Page({
}
this.$store.data.originalData.meetingRoomId = this.$store.data.roomId ? -1 : this.$store.data.roomId
this.update()
if (this.$store.data.startTime != this.$store.data.originalData.startTime.replace(/-/g, '/') || this.$store.data.endTime != this.$store.data.originalData.endTime.replace(/-/g, '/')) {
let dat2Time1 = {
modifyModel: modifyModel,
startTime: this.$store.data.startTime.replace(/\//g, "-"),
endTime: this.$store.data.endTime.replace(/\//g, "-"),
modifyContent: 'modify_time'
}
this.isChange(dat2Time1)
}
})
break
case 'modify_time':
......@@ -1485,6 +1572,6 @@ create.Page({
desc: '明我会议室描述',
path: 'pages/index/index'
};
}
},
});
......@@ -76,7 +76,6 @@ input {
right: 0;
padding: 32rpx;
background: #fff;
box-shadow: 0 -2px 4px 0 rgba(0, 0, 0, 0.04);
bottom: 0;
}
......
import { getUserScheduleInTime, modifySchedule } from '../../api/request.js'
import { getUserScheduleInTime } from '../../api/request.js'
import { throttle } from './../../utils/utils.js'
import create from 'dd-store'
import { observer } from '/utils/observer.js'
// 传递给组件toast的所有数据
const conToastData = {
showToast: false,
title: '保存成功'
}
create.Page({
data: {
$data: null,
userList: [],
userListId: [],
outlookContact: [],
value: '',
conflictPeople: [],
scheduleItem: '',
// 传给组件 hList 水平排列 所有数据 comHListData
comHListData: {
contactData: [
{ id: 0, text: '钉钉联系人', imageUrl: '../../assests/dingContact.png' },
{ id: 1, text: '手动添加邮箱', imageUrl: '../../assests/emailContact.png' }
]
},
popupShow: false,
// 传递给组件selectPopup 的数据
conSelectPopupData: {
selectPopupId: '',
showSelectPopup: false,
selectType: 'common',
editSaveList: [{ text: '仅保存此会议', id: 'only' }, { text: '保存此次及以后会议', id: 'future' }]
},
// 传递给组件centerPopup 的数据
centerPopup: {
showCenterPopup: false,
centerPopupList: [
{ id: 0, text: '不发送通知' },
{ id: 1, text: '发送通知' },
{ id: -1, text: '取消编辑' }
],
centerPopupId: ''
},
// 传递给组件toast的所有数据
conToastData: {
showToast: false,
title: '保存成功'
},
currentPeople: ''
conToastData: conToastData,
currentPeople: '',
value: '',
},
onLoad(event) {
const _that = this
if (event.scheduleItem) {
let scheduleItem = JSON.parse(event.scheduleItem)
this.setData({
scheduleItem: scheduleItem
})
}
let outlookContact = []
for (let value of this.$store.data.participatorList) {
if (value.platform === 'outlook') {
......@@ -61,14 +38,7 @@ create.Page({
outlookContact: outlookContact,
currentPeople: getApp().globalData.userid
})
observer.register({
notice(scheduleItem) {
_that.setData({
'scheduleItem.scheduleTemplateId': scheduleItem
})
console.log(scheduleItem);
}
})
this.conflictPeople()
},
onShow() {
......@@ -82,27 +52,28 @@ create.Page({
// 添加email
addEmail() {
let reg = /^\w+((.\w+)|(-\w+))@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+).[A-Za-z0-9]+$/
if (reg.test(this.data.value)) {
let outlookContact = this.data.outlookContact
outlookContact.push({
userId: this.data.value,
username: this.data.value,
headUrl: '',
platform: 'outlook'
})
outlookContact = this.setArrary(outlookContact)
this.setData({
value: '',
outlookContact: outlookContact
})
this.conflictPeople()
}
else if (!!this.data.value) { }
else {
dd.alert({
content: '请输入正确的邮箱格式',
buttonText: '确定'
})
if (!!this.data.value) {
if (reg.test(this.data.value)) {
let outlookContact = this.data.outlookContact
outlookContact.push({
userId: this.data.value,
username: this.data.value,
headUrl: '',
platform: 'outlook'
})
outlookContact = this.setArrary(outlookContact)
this.setData({
value: '',
outlookContact: outlookContact
})
this.conflictPeople()
}
else {
dd.alert({
content: '请输入正确的邮箱格式',
buttonText: '确定'
})
}
}
},
// 关闭
......@@ -128,50 +99,37 @@ create.Page({
}
return Object.values(containt)
},
// 创建的时候保存
createSave() {
dd.navigateBack({
delta: 1
})
},
// 编辑的时候保存
editSave() {
this.$store.data.updateInfo.isUpate = true
this.$store.data.updateInfo.updateType = 'operate_user'
this.update()
dd.navigateBack({
delta: 1
})
},
// 保存
save() {
// concat 拼接后生成新的数组 push 返回的是长度
let participatorList = []
let participatorListId = []
for (let value of this.$store.data.participatorList) {
if (value.platform !== 'outlook') {
participatorList.push(value)
participatorListId.push(value.userId)
}
this.$store.data.participatorList.push({ userId: getApp().globalData.userid, username: getApp().globalData.name, headUrl: getApp().globalData.avatar, platform: 'dingtalk' })
this.$store.data.participatorUserId.push(getApp().globalData.userid)
for (let value of this.data.outlookContact) {
this.$store.data.participatorList.push(value)
this.$store.data.participatorUserId.push(value.userId)
}
participatorListId.push(getApp().globalData.userid)
participatorList.push({ userId: getApp().globalData.userid, username: getApp().globalData.name, headUrl: getApp().globalData.avatar, platform: 'dingtalk' })
participatorList.push(...this.data.outlookContact)
participatorList = this.setArrary(participatorList)
this.data.outlookContact.forEach(item => {
participatorListId.push(item.userId)
})
this.setData({
userList: participatorList,
userListId: [...new Set(participatorListId)]
})
this.$store.data.participatorList = this.setArrary(this.$store.data.participatorList)
this.$store.data.participatorUserId = [...new Set(this.$store.data.participatorUserId)]
this.update()
if (!!this.data.scheduleItem) {
if (this.$store.data.originalData.repeatable === 1) {
this.setData({
'conSelectPopupData.showSelectPopup': true
})
} else {
let addUserList = this.arrayPoor(this.$store.data.originUsers, this.data.userList).addUserList
let deleteUserList = this.arrayPoor(this.$store.data.originUsers, this.data.userList).deleteUserList
let dataUser = {
addUserList: addUserList,
deleteUserList: deleteUserList,
modifyModel: 'only',
modifyContent: 'operate_user'
}
this.modifySchedule(dataUser)
}
this.editSave()
} else {
this.$store.data.participatorList = participatorList
this.update()
dd.navigateBack({
delta: 1
})
this.createSave()
}
},
// 选择弹窗
......@@ -182,86 +140,12 @@ create.Page({
'centerPopup.showCenterPopup': true
})
},
// 选择发不发通知
onSelectSend(event) {
this.setData({
'centerPopup.showCenterPopup': false
})
if (event.currentTarget.dataset.item.id > -1) {
let addUserList = this.arrayPoor(this.$store.data.originUsers, this.data.userList).addUserList
let deleteUserList = this.arrayPoor(this.$store.data.originUsers, this.data.userList).deleteUserList
let dataUser = {
addUserList: addUserList,
deleteUserList: deleteUserList,
modifyModel: this.data.conSelectPopupData.selectPopupId,
modifyContent: 'operate_user'
}
this.modifySchedule(dataUser, event.currentTarget.dataset.item.id)
} else {
this.operateUserE(false)
}
},
// toast 消失之后的回调
onToastHidden() {
this.setData({
'conToastData.showToast': false
})
},
// 保存编辑
modifySchedule(data, needNotice = 0) {
let obj = {
needNotice: needNotice,
scheduleId: this.data.scheduleItem.id,
templateId: this.data.scheduleItem.scheduleTemplateId,
planDate: this.data.scheduleItem.planDate
}
return new Promise((resolve, rejects) => {
modifySchedule(Object.assign(data, obj)).then(res => {
if (res.data.code === 0) {
this.$store.data.indexNeedUpdate = true
this.update()
if (this.$store.data.originalData.repeatable === 1) {
observer.notice(res.data.data)
}
this.operateUserS()
return resolve(res)
} else {
this.operateUserE()
return rejects(res)
}
}).catch(err => {
this.operateUserE()
return rejects(err)
})
})
},
// 数组取差值 原先的数组与现在的比较 增加与减少
arrayPoor(origin, now) {
let originMap = new Map()
let nowMap = new Map()
let add = []
let del = []
for (let x of origin) {
originMap.set(x.userId, x)
}
for (let x of now) {
nowMap.set(x.userId, x)
let status1 = originMap.get(x.userId)
if (!status1) {
add.push(x)
}
}
for (let x of origin) {
let status2 = nowMap.get(x.userId)
if (!status2) {
del.push(x)
}
}
return {
addUserList: add,
deleteUserList: del
}
},
// 会议冲突
conflictPeople() {
let userIds = []
......@@ -307,31 +191,10 @@ create.Page({
})
this.operateUserE(false)
},
// 参会人修改成功
operateUserS() {
this.$store.data.participatorList = this.data.userList
this.$store.data.participatorUserId = this.data.userListId
this.$store.data.indexNeedUpdate = true
this.$store.data.originUsers = this.$store.data.participatorList
this.$store.data.originUsersId = this.$store.data.participatorUserId
this.update()
dd.navigateBack({
delta: 1
})
},
// 参会人修改失败
operateUserE(x = true) {
if (x) {
this.setData({
'conToastData.showToast': true,
'conToastData.title': '保存失败'
})
}
},
// 页面卸载
onUnload() {
// 页面被关闭
observer.unregister()
},
}
});
......@@ -85,4 +85,27 @@ page {
.peopleList:last-of-type .info {
border: none
}
.save {
position: fixed;
bottom: 0;
left: 0;
right: 0;
padding: 32rpx;
background: #fff;
position: fixed;
bottom: 0;
}
.button {
font-family: PingFangSC-Regular;
width: 686rpx;
height: 72rpx;
background: #EA0C28;
border-radius: 48rpx;
font-size: 32rpx;
color: #FFFFFF;
text-align: center;
line-height: 72rpx;
}
\ No newline at end of file
......@@ -8,7 +8,7 @@
</view>
<view class="info">
<text class="name">{{item.username}}</text>
<text a:if="{{(!scheduleItem || currentPeople === $data.originalData.organizer) ? !(item.userId == currentPeople) : false}}" class="close iconicon_close iconfont" data-userId="{{item.userId}}" onTap="delParticipants"></text>
<text a:if="{{(!scheduleItem || currentPeople === $data.originalData.organizer) ? !(item.userId == currentPeople) : !($data.originUsersId.includes(item.userId)) }}" class="close iconicon_close iconfont" data-userId="{{item.userId}}" onTap="delParticipants"></text>
</view>
</view>
</view>
......@@ -16,10 +16,13 @@
<text class="iconfont iconicon_add "></text>
<text>添加参会人</text>
</view>
<popup title="{{popupTitle}}" show="{{popupShow}}" mask="true" onClose="closePopup">
<!-- 保存 -->
<view class="save" onTap="saveInfo" a:if="{{scheduleItem}}">
<view class="button">
完成
</view>
</view>
<popup title="{{comPopupData.title}}" show="{{comPopupData.popupShow}}" mask="true" onClose="closePopup">
<hlist dataComList="{{comHListData.contactData}}" onSelectComHList="selectComHList"></hlist>
</popup>
<toast showToast="{{conToastData.showToast}}" title="{{conToastData.title}}" onToastHidden="onToastHidden"></toast>
<centerpopup centerPopup="{{centerPopup.showCenterPopup}}" centerPopupList="{{centerPopup.centerPopupList}}" onSelectSend="onSelectSend"></centerpopup>
<selectpopup showSelectPopup="{{conSelectPopupData.showSelectPopup}}" selectPopupList="{{conSelectPopupData.editSaveList}}" onSelectPopup="onSelectPopup" onSelectPopupCancel="onSelectPopupCancel"></selectpopup>
</view>
\ No newline at end of file
import create from 'dd-store'
import pageStore from './store';
import { modifySchedule, addSchedule, getUserScheduleInTime, getHomeUserSchedule } from '../../api/request.js'
import { observer } from '/utils/observer.js'
// 传给组件 hList 水平排列 所有数据 comHListData
const comHListData = {
contactData: [
{ id: 'dd', text: '钉钉联系人', imageUrl: '../../assests/dingContact.png' },
{ id: 'outlook', text: '手动添加邮箱', imageUrl: '../../assests/emailContact.png' }
]
}
// 传给组件 comPopup 的数据
const comPopupData = {
popupTitle: '添加参会人',
popupShow: false
}
create.Page({
data: {
store: pageStore,
$data: null,
scheduleItem: '',
conflictPeople: [],
// 传给组件 hList 水平排列 所有数据 comHListData
comHListData: {
contactData: [
{ id: 0, text: '钉钉联系人', imageUrl: '../../assests/dingContact.png' },
{ id: 1, text: '手动添加邮箱', imageUrl: '../../assests/emailContact.png' }
]
},
popupShow: false,
// 传递给组件selectPopup 的数据
conSelectPopupData: {
selectPopupId: '',
showSelectPopup: false,
selectType: 'common',
editSaveList: [{ text: '仅保存此会议', id: 'only' }, { text: '保存此次及以后会议', id: 'future' }]
},
// 传递给组件centerPopup 的数据
centerPopup: {
showCenterPopup: false,
centerPopupList: [
{ id: 0, text: '不发送通知' },
{ id: 1, text: '发送通知' },
{ id: -1, text: '取消编辑' }
],
centerPopupId: ''
},
// 传递给组件toast的所有数据
conToastData: {
showToast: false,
title: '保存成功'
},
currentPeople: ''
// 登陆当前账户的人 权限
currentPeople: '',
comHListData: comHListData,
comPopupData: comPopupData,
isClick: false
},
onLoad(event) {
const _that = this
if (event.scheduleItem) {
let scheduleItem = JSON.parse(event.scheduleItem)
this.setData({
scheduleItem: scheduleItem,
scheduleItem: scheduleItem
})
// for (let value of this.$store.data.participatorList) {
// this.store.data.contactPeople.push(value)
// this.store.data.contactPeopleId.push(value.userId)
// this.update()
// }
}
this.setData({
currentPeople: getApp().globalData.userid
})
dd.setNavigationBar({
title: `参会人(${this.$store.data.participatorList.length}人)`
})
observer.register({
notice(scheduleItem) {
_that.setData({
'scheduleItem.scheduleTemplateId': scheduleItem
})
console.log(scheduleItem);
}
})
this.conflictPeople()
},
onShow() {
dd.setNavigationBar({
title: `参会人(${this.$store.data.participatorList.length}人)`
})
},
// 关闭popup 点击mark
closePopup() {
this.setData({
popupShow: false,
})
},
// 出现popup
showPopup() {
this.setData({
popupShow: true
})
},
// 选择完水平 HList 的回调
selectComHList(event) {
switch (event.currentTarget.dataset.item.id) {
case 0:
this.addParticipator()
this.setData({
popupShow: false
})
break;
case 1:
this.setData({
popupShow: false
})
dd.navigateTo({ url: `./../outLookContact/outLookContact?scheduleItem=${JSON.stringify(this.data.scheduleItem)}` })
break;
}
},
// 保存信息
saveInfo() {
dd.navigateBack({
delta: 1
})
},
// toast 消失之后的回调
onToastHidden() {
this.setData({
'conToastData.showToast': false
})
this.conflictPeople()
},
// 添加参会人
// 添加参会人 钉钉选人
addParticipator() {
const _that = this
let require = []
......@@ -121,14 +67,16 @@ create.Page({
outLookConcat.push(participator)
}
}
if (!_that.data.scheduleItem || this.data.organizer === getApp().globalData.userid) {
select = this.$store.data.participatorUserId
if (!_that.data.scheduleItem || this.$store.data.originalData.organizer === getApp().globalData.userid) {
console.log(_that.$store.data.participatorUserId)
select = _that.$store.data.participatorUserId
require = [getApp().globalData.userid]
} else {
select = []
select = _that.$store.data.participatorUserId
require = [...this.$store.data.originUsersId]
}
select = _that.selectedelRequired(require, select).pickedUsers
select = _that.selectedelRequired([...require], [...select]).pickedUsers
dd.complexChoose({
title: "选择参会人", //标题
multiple: true, //是否多选
......@@ -136,135 +84,118 @@ create.Page({
requiredUsers: require, //必选用户(不可取消选中状态)
responseUserOnly: true, //返回人,或者返回人和部门
success: function (res) {
let participatorList = []
let participatorUserId = []
if (!_that.data.scheduleItem || _that.data.organizer === getApp().globalData.userid) {
participatorList.push({ userId: getApp().globalData.userid, username: getApp().globalData.name, headUrl: getApp().globalData.avatar, platform: 'dingtalk' })
participatorUserId.push(getApp().globalData.userid)
let people = []
let peopleId = []
if (!_that.data.scheduleItem || _that.$store.data.originalData.organizer === getApp().globalData.userid) {
people.push({ userId: getApp().globalData.userid, username: getApp().globalData.name, headUrl: getApp().globalData.avatar, platform: 'dingtalk' })
res.users.forEach((item, index) => {
participatorList.push({ userId: item.userId, username: item.name, headUrl: item.avatar, platform: 'dingtalk' })
participatorUserId.push(item.userId)
people.push({ userId: item.userId, username: item.name, headUrl: item.avatar, platform: 'dingtalk' })
})
} else {
_that.$store.data.originUsers.forEach((item, index) => {
participatorList.push(item)
if (item.platform === 'dingtalk') {
participatorUserId.push(item.userId)
}
people.push(item)
})
res.users.forEach((item, index) => {
participatorList.push({ userId: item.userId, username: item.name, headUrl: item.avatar, platform: 'dingtalk' })
participatorUserId.push(item.userId)
people.push({ userId: item.userId, username: item.name, headUrl: item.avatar, platform: 'dingtalk' })
})
}
participatorList = _that.setArrary(participatorList.concat(outLookConcat))
participatorUserId = [...new Set(participatorUserId)]
_that.$store.data.participatorList = participatorList
_that.$store.data.participatorUserId = participatorUserId
_that.update()
_that.conflictPeople()
if (!!_that.data.scheduleItem) {
if (_that.$store.data.originalData.repeatable) {
_that.setData({
'conSelectPopupData.showSelectPopup': true
})
} else {
let addUserList = _that.arrayPoor(_that.$store.data.originUsers, _that.$store.data.participatorList).addUserList
let deleteUserList = _that.arrayPoor(_that.$store.data.originUsers, _that.$store.data.participatorList).deleteUserList
let dataUser = {
addUserList: addUserList,
deleteUserList: deleteUserList,
modifyModel: 'only',
modifyContent: 'operate_user'
}
_that.modifySchedule(dataUser)
}
people = _that.setArrary(people.concat(outLookConcat))
for (let value of people) {
peopleId.push(value.userId)
}
people = _that.setArrary(people.concat(outLookConcat))
_that.$store.data.participatorList = people
_that.$store.data.participatorUserId = peopleId
_that.update()
},
fail: function (err) {
}
})
},
// 选择弹窗
onSelectPopup(event) {
this.setData({
'conSelectPopupData.showSelectPopup': false,
'conSelectPopupData.selectPopupId': event.currentTarget.dataset.item.id,
'centerPopup.showCenterPopup': true
// 删除参会人
delParticipants(event) {
let userId = event.target.dataset.userId
this.$store.data.participatorList.forEach((item, index) => {
if (userId === item.userId) {
let people = [...this.$store.data.participatorList]
people.splice(index, 1)
this.$store.data.participatorList = people
this.update()
return
}
})
this.$store.data.participatorUserId.forEach((item, index) => {
if (userId === item) {
let peopleId = [...this.$store.data.participatorUserId]
peopleId.splice(index, 1)
console.log(peopleId)
this.$store.data.participatorUserId = peopleId
this.update()
return
}
})
this.conflictPeople()
},
// 选择发不发通知
onSelectSend(event) {
// 编辑时候的保存
editSave() {
this.setData({
'centerPopup.showCenterPopup': false
isClick: true
})
if (event.currentTarget.dataset.item.id > -1) {
let addUserList = this.arrayPoor(this.$store.data.originUsers, this.$store.data.participatorList).addUserList
let deleteUserList = this.arrayPoor(this.$store.data.originUsers, this.$store.data.participatorList).deleteUserList
let dataUser = {
addUserList: addUserList,
deleteUserList: deleteUserList,
modifyModel: this.data.conSelectPopupData.selectPopupId,
modifyContent: 'operate_user'
}
this.modifySchedule(dataUser, event.currentTarget.dataset.item.id)
} else {
this.operateUserE(false)
if (this.$store.data.originUsers != this.$store.data.participatorList) {
this.$store.data.updateInfo.isUpate = true
this.$store.data.updateInfo.updateType = 'operate_user'
this.update()
}
},
// 参会人修改成功
operateUserS() {
this.$store.data.indexNeedUpdate = true
this.$store.data.originUsers = this.$store.data.participatorList
this.$store.data.originUsersId = this.$store.data.participatorUserId
this.update()
dd.setNavigationBar({
title: `参会人(${this.$store.data.participatorList.length}人)`
dd.navigateBack({
delta: 1
})
},
// 参会人修改失败
operateUserE() {
this.$store.data.participatorList = this.$store.data.originUsers
this.$store.data.participatorUserId = this.$store.data.originUsersId
this.update()
dd.setNavigationBar({
title: `参会人(${this.$store.data.participatorList.length}人)`
// 保存信息
saveInfo() {
this.editSave()
},
// 展示弹窗
showPopup() {
this.setData({
'comPopupData.popupShow': true
})
},
// onSelectPopupCancel 点击取消
onSelectPopupCancel() {
// 隐藏弹窗
closePopup() {
this.setData({
'conSelectPopupData.showSelectPopup': false,
'centerPopup.showCenterPopup': false
'comPopupData.popupShow': false
})
this.operateUserE(false)
},
// 保存编辑
modifySchedule(data, needNotice = 0) {
let obj = {
needNotice: needNotice,
scheduleId: this.data.scheduleItem.id,
templateId: this.data.scheduleItem.scheduleTemplateId,
planDate: this.data.scheduleItem.planDate
// 选择添加人员的方式
selectComHList(event) {
switch (event.currentTarget.dataset.item.id) {
// 选择dd加人
case "dd":
this.setData({
'comPopupData.popupShow': false
})
this.addParticipator()
break;
// 选择通过outlook添加邮箱联系人
case "outlook":
this.setData({
'comPopupData.popupShow': false
})
dd.navigateTo({ url: `./../outLookContact/outLookContact?scheduleItem=${JSON.stringify(this.data.scheduleItem)}` })
break;
}
return new Promise((resolve, rejects) => {
modifySchedule(Object.assign(data, obj)).then(res => {
if (res.data.code === 0) {
this.$store.data.indexNeedUpdate = true
this.update()
this.operateUserS()
if (this.$store.data.originalData.repeatable === 1) {
observer.notice(res.data.data)
}
return resolve(res)
} else {
this.operateUserE()
return rejects(res)
}
}).catch(err => {
this.operateUserE()
return rejects(err)
})
},
// 选择弹窗
onSelectPopup(event) {
this.setData({
'conSelectPopupData.showSelectPopup': false,
'conSelectPopupData.selectPopupId': event.currentTarget.dataset.item.id,
'centerPopup.showCenterPopup': true
})
},
// 数组取差值 原先的数组与现在的比较 增加与减少
......@@ -294,67 +225,7 @@ create.Page({
deleteUserList: del
}
},
// 删除参会人
delParticipants(event) {
const _that = this
if (!!this.data.scheduleItem) {
dd.confirm({
title: '删除参会人',
content: '确认删除参会人吗?',
confirmButtonText: '确定',
cancelButtonText: '取消',
success: (success) => {
if (!!success.confirm) {
if (!!_that.$store.data.originalData.repeatable) {
_that.delete(event)
_that.setData({
'conSelectPopupData.showSelectPopup': true
})
} else {
_that.delete(event)
let addUserList = _that.arrayPoor(_that.$store.data.originUsers, _that.$store.data.participatorList).addUserList
let deleteUserList = _that.arrayPoor(_that.$store.data.originUsers, _that.$store.data.participatorList).deleteUserList
let dataUser = {
addUserList: addUserList,
deleteUserList: deleteUserList,
modifyModel: 'only',
modifyContent: 'operate_user'
}
_that.modifySchedule(dataUser)
}
}
}
})
} else {
this.delete(event)
}
},
// 删除操作
delete(event) {
let userId = event.target.dataset.userId
this.$store.data.participatorList.forEach((item, index) => {
if (userId === item.userId) {
let participatorList = [...this.$store.data.participatorList]
participatorList.splice(index, 1)
this.$store.data.participatorList = participatorList
this.update()
return
}
})
this.$store.data.participatorUserId.forEach((item, index) => {
if (userId === item) {
let participatorUserId = [...this.$store.data.participatorUserId]
participatorUserId.splice(index, 1)
this.$store.data.participatorUserId = participatorUserId
this.update()
return
}
})
this.conflictPeople()
},
// 数组去重
setArrary(arr, userId) {
console.log(arr)
......@@ -367,9 +238,10 @@ create.Page({
// 会议冲突
conflictPeople() {
let userIds = []
for (let value of this.$store.data.participatorList) {
userIds.push(value.userId)
for (let item of this.$store.data.participatorList) {
userIds.push(item.userId)
}
let data = {
startTime: this.$store.data.startTime.replace(/\//g, "-"),
endTime: this.$store.data.endTime.replace(/\//g, "-"),
......@@ -400,7 +272,7 @@ create.Page({
})
},
// 已选用户去中去掉必选用户
selectedelRequired(req, pic) {
selectedelRequired([...req], [...pic]) {
for (let i = 0; i < req.length; i++) {
for (let m = 0; m < pic.length; m++) {
if (req[i] == pic[m]) {
......@@ -416,7 +288,17 @@ create.Page({
},
// 页面卸载
onUnload() {
// 页面被关闭
observer.unregister()
if (this.data.isClick === false && !!this.data.scheduleItem) {
this.reSetPeople()
}
},
// 重置人
reSetPeople() {
this.$store.data.updateInfo.isUpate = false
this.$store.data.updateInfo.updateType = ''
this.$store.data.participatorList = this.$store.data.originUsers
this.$store.data.participatorUserId = this.$store.data.originUsersId
this.update()
}
});
class Store {
data = {
contactPeople: [],
contactPeopleId: []
}
}
export default new Store()
\ No newline at end of file
......@@ -34,15 +34,6 @@ create.Page({
},
onLoad(e) {
if (e.scheduleItem) {
const _that = this
observer.register({
notice(scheduleItem) {
_that.setData({
'scheduleItem.scheduleTemplateId': scheduleItem
})
console.log(scheduleItem);
}
})
this.setData({
repeatable: e.repeatable,
scheduleItem: JSON.parse(e.scheduleItem)
......@@ -65,34 +56,15 @@ create.Page({
selectPlace(event) {
this.$store.data.locationName = event.target.dataset.locationName
this.$store.data.roomId = ''
this.update()
if (!!this.data.scheduleItem) {
if (this.data.repeatable != 0) {
this.setData({
'conSelectPopupData.showSelectPopup': true
})
} else {
let data = {
location: {
longitude: -999,
latitude: -999,
locationName: this.$store.data.locationName
},
meetingRoomId: this.$store.data.roomId,
modifyModel: 'only',
modifyContent: 'modify_location'
}
this.modifySchedule(data, 0).then(res => {
this.editLocationS()
}).catch(err => {
this.editLocationE()
})
if (!!this.data.scheduleItem)
this.$store.data.updateInfo = {
updateType: 'modify_location',
isUpate: true
}
} else {
dd.navigateBack({
delta: 1
})
}
this.update()
dd.navigateBack({
delta: 1
})
},
onSelectPopup(event) {
......@@ -184,34 +156,15 @@ create.Page({
selectMeetingRoom(e) {
this.$store.data.locationName = e.target.dataset.locationName
this.$store.data.roomId = e.target.dataset.locationid
this.update()
if (!!this.data.scheduleItem) {
if (this.data.repeatable != 0) {
this.setData({
'conSelectPopupData.showSelectPopup': true
})
} else {
let data = {
location: {
longitude: -999,
latitude: -999,
locationName: this.$store.data.locationName
},
meetingRoomId: this.$store.data.roomId,
modifyModel: 'only',
modifyContent: 'modify_location'
}
this.modifySchedule(data, 0).then(res => {
this.editLocationS()
}).catch(err => {
this.editLocationE()
})
if (!!this.data.scheduleItem)
this.$store.data.updateInfo = {
updateType: 'modify_location',
isUpate: true
}
} else {
dd.navigateBack({
delta: 1
})
}
this.update()
dd.navigateBack({
delta: 1
})
},
inputPlace(event) {
this.setData({
......
......@@ -10,6 +10,10 @@ class Store {
originUsersId: [],
originalData: null,
indexNeedUpdate: false,
updateInfo: {
updateType: '',
isUpate: false
},
tabBarIndex: '0',
locationSchedule: () => { }
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment