Commit f070a93d by fengzhaoyu

Merge branch 'release/2.0.0' of http://gitlab.roboming.com/fengzhaoyu/schedule into release/2.0.0

# Conflicts:
#	pages/meetingDetail/meetingDetail.js
parents 0057ce20 ab0de148
...@@ -149,7 +149,7 @@ export function getMeetingRoomRepeatAffairs(groupId, page) { ...@@ -149,7 +149,7 @@ export function getMeetingRoomRepeatAffairs(groupId, page) {
export function getMeetingRoomAffairs(id) { export function getMeetingRoomAffairs(id) {
return $http({ return $http({
method: "get", method: "get",
url: `/meet/meeting-log/detail/${id}` url: `/meet/comment/listByMeetingId?meetingId=${id}&platform=dingTalk`
}); });
} }
//会议室创建新任务 //会议室创建新任务
...@@ -168,6 +168,21 @@ export function updateMeetingTask(data) { ...@@ -168,6 +168,21 @@ export function updateMeetingTask(data) {
url: `/meet/comment/handler` url: `/meet/comment/handler`
}); });
} }
// 修改动态
export function updateMoment(data) {
return $http({
method: 'post',
data: JSON.stringify(data),
url: '/meet/comment/modify'
})
}
// 删除动态
export function deleteMoment(id) {
return $http({
method: 'get',
url: `/meet/comment/remove?commentId=${id}`
})
}
//删除任务 //删除任务
export function deleteMeetingTask(id) { export function deleteMeetingTask(id) {
return $http({ return $http({
......
...@@ -25,3 +25,32 @@ view { ...@@ -25,3 +25,32 @@ view {
.gray { .gray {
background: rgba(10, 10, 10, 0.2)!important; background: rgba(10, 10, 10, 0.2)!important;
} }
/* 底部长条的红色按钮 */
.save {
position: fixed;
bottom: 0;
left: 0;
right: 0;
padding: 32rpx;
background: #fff;
position: fixed;
}
.button {
width: 100%;
height: 72rpx;
background: #EA0C28;
border-radius: 48rpx;
font-size: 32rpx;
color: #FFFFFF;
text-align: center;
line-height: 72rpx;
}
.tabBarBottom {
height: 68rpx;
width: 100%;
background: #fff;
}
\ No newline at end of file
...@@ -11,7 +11,8 @@ ...@@ -11,7 +11,8 @@
"pages/uploadFile/uploadFile", "pages/uploadFile/uploadFile",
"pages/participantsDetail/participantsDetail", "pages/participantsDetail/participantsDetail",
"pages/applicationDetails/applicationDetails", "pages/applicationDetails/applicationDetails",
"pages/attendeeList/attendeeList" "pages/attendeeList/attendeeList",
"pages/createTask/createTask"
], ],
"window": { "window": {
"allowsBounceVertical": "YES" "allowsBounceVertical": "YES"
......
@import "../../template/avater/index.acss";
.avater {
width: 48rpx;
height: 48rpx;
margin-right: 16rpx;
}
.notes-edit {
min-height: 400rpx;
padding: 32rpx;
margin-bottom: 16rpx;
}
.comment {
background: rgba(246, 248, 249, 0.63);
border-radius: 4px;
padding: 16rpx;
}
.comment-text {
flex: 1;
font-size: 24rpx;
line-height: 40rpx;
}
.comment-text>view:first-child {
color: #0A0A0A;
}
.comment-text>view:last-child {
color: rgba(25, 31, 37, 0.4);
}
.comment>view {
position: relative;
display: flex;
}
.delete-btn {
position: absolute;
right: 16rpx;
bottom: 16rpx;
}
\ No newline at end of file
<view a:if="{{isEdit}}">
<form onSubmit="complete">
<textarea class="notes-edit" name="textarea" auto-height placeholder="输入评论内容"></textarea>
<button form-type="submit" class="picker-complete">完成</button>
</form>
</view>
<view a:else class="comment" a:for="{{replyCommentList}}">
<view>
<import src="../../template/avater/index.axml"/>
<template is="avater" data="{{item: item.creator }}"/>
<view class="comment-text">
<view>{{item.creator.name}}: {{item.remark}}</view>
<view>{{item.updateTime}}</view>
</view>
<view class="delete-btn" onTap="deleteComment" data-commentId="{{item.commentId}}">
删除
</view>
</view>
</view>
\ No newline at end of file
Component({
mixins: [],
data: {},
props: {},
didMount() { },
didUpdate() { },
didUnmount() { },
methods: {
complete: function (e) {
const value = e.detail.value.textarea;
if (!value) {
return dd.showToast({ content: '请输入评论内容' })
}
this.props.onGetComment(e.detail.value.textarea)
},
deleteComment: function (e) {
this.props.onDeleteComment(e.currentTarget.dataset.commentId)
}
},
});
{
"component": true
}
\ No newline at end of file
...@@ -4,3 +4,9 @@ ...@@ -4,3 +4,9 @@
padding: 16rpx; padding: 16rpx;
margin-top: 16rpx; margin-top: 16rpx;
} }
.notes-edit {
min-height: 400rpx;
padding: 32rpx;
margin-bottom: 16rpx;
}
\ No newline at end of file
<view class="notes"> <view a:if="{{isEdit}}">
{{notes}} <form onSubmit="complete">
<textarea value="{{notes ? notes.meetingNotes : ''}}" class="notes-edit" name="textarea" auto-height placeholder="输入笔记内容"></textarea>
<button form-type="submit" class="picker-complete">完成</button>
</form>
</view>
<view a:else class="notes">
{{meetingNotes}}
</view> </view>
\ No newline at end of file
Component({ import create from 'dd-store';
import pageStore from '../../pages/meetingDetail/store';
create.Component({
store: pageStore,
mixins: [], mixins: [],
data: {}, data: {
notes: null //store
},
props: {}, props: {},
didMount() {}, didMount() { },
didUpdate() {}, didUpdate() { },
didUnmount() {}, didUnmount() { },
methods: {}, methods: {
complete: function (e) {
const value = e.detail.value.textarea;
if (!value) {
return dd.showToast({ content: '请输入笔记内容' })
}
this.props.onGetNotes(e.detail.value.textarea)
},
},
}); });
...@@ -86,6 +86,9 @@ ...@@ -86,6 +86,9 @@
position: absolute; position: absolute;
color: rgb(10, 10, 10); color: rgb(10, 10, 10);
font-size: 32rpx; font-size: 32rpx;
line-height: 40rpx;
right: 32rpx; right: 32rpx;
top: 32rpx; top: 32rpx;
border: 0;
background-color: transparent!important;
} }
\ No newline at end of file
...@@ -7,7 +7,7 @@ Component({ ...@@ -7,7 +7,7 @@ Component({
position: 'bottom', position: 'bottom',
mask: true, mask: true,
animation: true, animation: true,
zIndex: 1000 zIndex: 999
}, },
methods: { methods: {
onMaskTap: function onMaskTap() { onMaskTap: function onMaskTap() {
......
<import src="../../template/avater/index.axml"/> <import src="../../template/avater/index.axml"/>
<block a:for="{{$data.participatorList}}"> <block a:for="{{$data.participatorList}}">
<view class="column" data-item="{{item}}" onTap="radioChange"> <view class="column" data-item="{{item}}" onTap="radioChange">
<template is="radio" data="{{status: item.userId == currentTask.acceptorId, item: item}}"/> <template is="radio" data="{{status: item.userId == currentTask.excutorId, item: item}}"/>
<template is="avater" data="{{item}}"/> <template is="avater" data="{{item: {...item, name: item.username}}}"/>
<view class="name">{{item.username}}</view> <view class="name">{{item.username}}</view>
</view> </view>
</block> </block>
......
...@@ -14,8 +14,13 @@ create.Page({ ...@@ -14,8 +14,13 @@ create.Page({
}, },
radioChange(e) { radioChange(e) {
const item = e.target.dataset.item; const item = e.target.dataset.item;
this.store.data.currentTask.acceptorInfo = item; this.store.data.currentTask.excutor = {
this.store.data.currentTask.acceptorId = item.userId; ...item,
name: item.username,
id: item.userId,
avatar: item.headUrl
};
this.store.data.currentTask.excutorId = item.userId;
this.update(); this.update();
dd.navigateBack(); dd.navigateBack();
} }
......
...@@ -209,29 +209,6 @@ input { ...@@ -209,29 +209,6 @@ input {
color: #BBBEC5; color: #BBBEC5;
} }
.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;
}
.noValueIcon { .noValueIcon {
color: rgba(216, 216, 216, 1)!important; color: rgba(216, 216, 216, 1)!important;
} }
...@@ -262,12 +239,6 @@ input { ...@@ -262,12 +239,6 @@ input {
color: rgba(10, 10, 10, 0.4) color: rgba(10, 10, 10, 0.4)
} }
.tabBarBottom {
height: 68rpx;
width: 100%;
background: #fff;
}
.iconicon_description1 { .iconicon_description1 {
color: rgba(10, 10, 10, 0.4)!important; color: rgba(10, 10, 10, 0.4)!important;
} }
......
@import "../../template/avater/index.acss";
page {
background: #fff;
overflow: hidden;
}
.task-column {
box-sizing: border-box;
padding: 0 42rpx 0 32rpx;
width: 100%;
display: flex;
align-items: center;
}
.edit-column {
color: rgba(27, 38, 61, 1);
margin: 46rpx 0;
height: 84rpx;
}
.task-time {
margin-top: 46rpx;
}
.edit-column input {
flex: 1;
margin-left: 8rpx;
font-size: 40rpx;
caret-color: #3070F2;
padding: 0;
height: 84rpx;
}
.participator-top {
height: 62rpx;
line-height: 62rpx;
}
.icon {
color: #1B263D;
font-size: 34rpx;
}
.participator-title {
color: rgba(25, 31, 37, 1);
font-size: 34rpx;
flex: 1;
margin-left: 26rpx;
}
.participator-bottom {
padding: 14rpx 42rpx 14rpx 96rpx;
}
.people {
text-align: center;
width: 80rpx;
margin-right: 16rpx;
}
.people>.avater, .fake-avater {
width: 80rpx;
height: 80rpx;
line-height: 80rpx;
position: relative;
}
.fake-name {
height: 48rpx;
}
.name {
font-size: 24rpx;
line-height: 40rpx;
color: rgba(25, 31, 37, 0.56);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
height: 40rpx;
}
.error {
color: red;
font-size: 24rpx;
flex: 1;
}
.edit-column>.checkbox {
width: 32rpx!important;
height: 32rpx!important;
line-height: 32rpx!important;
}
.btn-disabled {
opacity: 0.4;
}
\ No newline at end of file
<import src="../../template/avater/index.axml"/>
<view class="task-column edit-column">
<input onInput="inputChange" value="{{currentTask.title}}" placeholder="请输入任务标题"/>
</view>
<view>
<view class="task-column participator-top" data-excutorId="{{currentTask.excutorId}}" onTap="handleExcutorChange">
<text class="iconicon_attender iconfont icon"></text>
<text class="participator-title">{{currentTask.excutorId ? '执行人' : '设置执行人'}}</text>
<text class="iconright iconfont icon"></text>
</view>
<view class="participator-bottom" a:if="{{currentTask.excutorId}}">
<view class="people" data-excutorId="{{currentTask.excutorId}}" onTap="handleExcutorChange">
<template is="avater" data="{{item: currentTask.excutor}}"/>
<view class="name">{{currentTask.excutor.name}}</view>
</view>
</view>
</view>
<view class="task-column participator-top task-time" data-excutorId="{{currentTask.endTime}}" onTap="handleOpenTime">
<text class="iconicon_conflict iconfont icon"></text>
<text class="participator-title">{{currentTask.endTime ? `${currentTask.endTime} 截止`: '设置截止时间'}}</text>
</view>
<view class="save" onTap="addTask">
<view class="button {{limitClick ? 'gray' : ''}}">
立即创建
</view>
<view class="tabBarBottom" a:if="{{isIPX}}">
</view>
</view>
<popup a:if="{{show}}" title="设置截止时间" show="{{show}}" mask="true" onClose="closePopup">
<meeting-time-picker onComplete="onComplete" startTime="{{currentTask.startTime}}" endTime="{{currentTask.endTime}}" isIPX="{{isIPX}}"/>
</popup>
\ No newline at end of file
import create from 'dd-store';
import pageStore from '../meetingDetail/store';
import { debounce } from '../../utils/utils';
import { checkFullScren } from "../../utils/checkFullScren";
import { updateMeetingTask } from '../../api/request';
create.Page({
store: pageStore,
data: {
currentTask: {},
show: false,
isIPX: false,
limitClick: false
},
onLoad(query) {
this.setData({
meetingId: query.meetingId,
isIPX: checkFullScren()
})
},
inputChange: debounce(function (e) {
const value = e.detail.value;
this.store.data.currentTask.title = value;
this.update();
}, 100),
handleExcutorChange(e) {
//执行人页面删除执行人
if (e.target.dataset.excutorId) {
dd.navigateTo({ url: `/pages/excutorList/excutorList` })
}
//参会人列表页面选择参会人
else {
dd.navigateTo({ url: `/pages/attendeeList/attendeeList` })
}
},
handleOpenTime() {
this.setData({
show: true
})
},
closePopup() {
this.setData({
show: false
})
},
onComplete(event) {
this.store.data.currentTask.startTime = `${event.startTime}:00`;
this.store.data.currentTask.endTime = `${event.endTime}:00`;
this.update();
this.closePopup();
},
addTask() {
if (this.data.limitClick) {
return
}
this.setData({ limitClick: true });
updateMeetingTask({
meetingId: this.data.meetingId,
platform: 'dingTalk',
taskCreateModel: {
endTime: this.store.data.currentTask.endTime.replace(/\//g, '-'),
title: this.store.data.currentTask.title,
innerTaskExecutorList: [this.store.data.currentTask.excutor]
}
}).then(res => {
if (res.data.code == 0) {
//重置
this.store.data.currentTask = {};
this.update();
// 修改动态列表
dd.navigateBack();
}
this.setData({ limitClick: false });
})
}
});
{
"defaultTitle": "创建任务",
"usingComponents": {
"popup": "../../components/popup/index",
"meeting-time-picker": "../../components/meetingTimePicker/meetingTimePicker"
}
}
\ No newline at end of file
<import src="../../template/avater/index.axml"/> <import src="../../template/avater/index.axml"/>
<view class="column" a:if="{{currentTask.acceptorId}}"> <view class="column" a:if="{{currentTask.excutorId}}">
<template is="avater" data="{{item: currentTask.acceptorInfo}}"/> <template is="avater" data="{{item: currentTask.excutor}}"/>
<view class="name">{{currentTask.acceptorInfo.username}} <view class="name">{{currentTask.excutor.name}}
<text class="iconfont iconicon_close" onTap="deleteExcutor"></text> <text class="iconfont iconicon_close" onTap="deleteExcutor"></text>
</view> </view>
</view> </view>
\ No newline at end of file
...@@ -15,8 +15,8 @@ create.Page({ ...@@ -15,8 +15,8 @@ create.Page({
cancelButtonText: '取消', cancelButtonText: '取消',
success: (res) => { success: (res) => {
if (res.confirm) { if (res.confirm) {
this.store.data.currentTask.acceptorInfo = null; this.store.data.currentTask.excutor = null;
this.store.data.currentTask.acceptorId = ''; this.store.data.currentTask.excutorId = '';
this.update(); this.update();
dd.navigateBack(); dd.navigateBack();
} }
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
</view> </view>
<file-list a:if="{{dynamicItem.fileDetailList}}" fileView="{{dynamicItem}}" isCanEdit="{{false}}"/> <file-list a:if="{{dynamicItem.fileDetailList}}" fileView="{{dynamicItem}}" isCanEdit="{{false}}"/>
<task-list a:if="{{dynamicItem.meetingTaskSimpleViewModel}}" onChangeTaskStatusOnList="onChangeTaskStatusOnList" taskView="{{dynamicItem.meetingTaskSimpleViewModel}}" commentId="{{dynamicItem.commentId}}" meetingId="{{item.meetingId}}" isCanEdit="{{false}}"/> <task-list a:if="{{dynamicItem.meetingTaskSimpleViewModel}}" onChangeTaskStatusOnList="onChangeTaskStatusOnList" taskView="{{dynamicItem.meetingTaskSimpleViewModel}}" commentId="{{dynamicItem.commentId}}" meetingId="{{item.meetingId}}" isCanEdit="{{false}}"/>
<notes a:if="{{dynamicItem.notes}}" notes="{{dynamicItem.notes}}"/> <notes a:if="{{dynamicItem.notes}}" meetingNotes="{{dynamicItem.notes}}"/>
</view> </view>
</block> </block>
</view> </view>
......
...@@ -5,6 +5,12 @@ ...@@ -5,6 +5,12 @@
/* height: calc(100vh - 200rpx); */ /* height: calc(100vh - 200rpx); */
} }
.meeting-title {
font-size: 32rpx;
color: rgba(10, 10, 10, 0.56);
margin-top: 8px;
}
page { page {
background: #fff; background: #fff;
} }
...@@ -26,10 +32,19 @@ page { ...@@ -26,10 +32,19 @@ page {
.compose-column { .compose-column {
position: relative; position: relative;
padding-left: 104rpx; padding-left: 104rpx;
margin-bottom: 48rpx; margin-bottom: 24rpx;
padding-top: 16rpx; padding-top: 16rpx;
} }
.compose-column-operation {
display: flex;
justify-content: flex-end;
}
.compose-column-operation>text {
margin-right: 32rpx;
}
.compose-column>.avater { .compose-column>.avater {
width: 80rpx; width: 80rpx;
height: 80rpx; height: 80rpx;
...@@ -486,9 +501,9 @@ input { ...@@ -486,9 +501,9 @@ input {
font-size: 36rpx; font-size: 36rpx;
} }
.footerBottom>view:last-child { /* .footerBottom>view:last-child {
margin: 0 24rpx 0 0; margin: 0 24rpx 0 0;
} } */
.devider { .devider {
background: rgba(227, 228, 228, 1); background: rgba(227, 228, 228, 1);
......
...@@ -159,7 +159,7 @@ ...@@ -159,7 +159,7 @@
</view> </view>
</view> </view>
<view class="footerBottom"> <view class="footerBottom">
<view onTap="showCreateTask" data-pop="{{title: '创建任务', type: 'createTask'}}"> <view onTap="goCreateTask">
<text class="iconfont iconicon_task1"></text>任务 <text class="iconfont iconicon_task1"></text>任务
</view> </view>
<!--<view onTap="addMeetingFile"><text class="iconfont iconicon_data"></text>文件</view> --> <!--<view onTap="addMeetingFile"><text class="iconfont iconicon_data"></text>文件</view> -->
...@@ -169,10 +169,10 @@ ...@@ -169,10 +169,10 @@
文件 文件
</view> </view>
</view> </view>
<text class="devider"></text> <view onTap="openNoteModal">
<view onTap="onShareAppMessage"> <text class="iconfont iconicon_task1"></text>笔记
<text class="iconfont iconicon_share1"></text>
</view> </view>
<!--<text class="devider"></text><view onTap="onShareAppMessage"><text class="iconfont iconicon_share1"></text></view> -->
</view> </view>
<view class="tabBarBottom" a:if="{{isIPX}}"> <view class="tabBarBottom" a:if="{{isIPX}}">
</view> </view>
...@@ -189,26 +189,27 @@ ...@@ -189,26 +189,27 @@
<view class="affair-list {{isExpand? '' : 'affair-list-margin-top'}} {{!isExpand&&$data.participatorList.length>1 ? 'addPadding' : ''}}" onTap="hideFileOperate"> <view class="affair-list {{isExpand? '' : 'affair-list-margin-top'}} {{!isExpand&&$data.participatorList.length>1 ? 'addPadding' : ''}}" onTap="hideFileOperate">
<view a:if="{{!isExpand}}" class="affair-list-title">会议动态</view> <view a:if="{{!isExpand}}" class="affair-list-title">会议动态</view>
<block a:if="{{!affairLoading}}"> <block a:if="{{!affairLoading}}">
<block a:if="{{affairList && affairList.length > 0}}" a:for="{{affairList}}" key="{{item.id}}"> <block a:if="{{affairList && affairList.length > 0}}" a:for="{{affairList}}" key="{{item.commentId}}">
<view a:if="{{item.category == '3' && item.taskViewList && item.taskViewList.length > 0}}" class='compose-column'> <view class='compose-column'>
<view class="avater task-avater"> <template is="avater" data="{{item: item.creator }}"/>
<text class="iconfont iconicon_task1"></text>
</view>
<view class="title"> <view class="title">
会议任务 {{item.creator.name}}
<text>{{item.createTime}}</text> <text>{{item.updateTime}}</text>
</view> </view>
<task-list onShowPop="showPop" onSetCurrentTask="setCurrentTask" taskList="{{item.taskViewList}}" onChangeTaskStatusOnList="changeTaskStatusOnList"/> <task-list a:if="{{item.meetingTaskSimpleViewModel}}" onChangeTaskStatusOnList="onChangeTaskStatusOnList" taskView="{{item.meetingTaskSimpleViewModel}}" commentId="{{item.commentId}}" meetingId="{{meetingId}}" isCanEdit="{{false}}"/>
<file-list a:if="{{item.fileDetailList}}" fileView="{{item}}"/>
<notes a:if="{{item.notes}}" meetingNotes="{{item.notes}}"/>
<view class="meeting-title" a:if="{{item.commentType === 'meeting'}}">创建了会议</view>
</view> </view>
<view a:if="{{item.category == '2' && item.fileView && item.fileView.fileInfos && item.fileView.fileInfos.length > 0 }}" class='compose-column'> <view class="compose-column-operation">
<template is="avater" data="{{item: item.fileView.creatorInfo}}"/> <text a:if="{{item.fileDetailList}}" onTap="editRemark">描述</text>
<view class="title"> <text a:if="{{item.notes}}" onTap="editNotes" data-meetingNotes="{{item.notes}}" data-commentId="{{item.commentId}}">编辑</text>
{{item.fileView.creatorInfo.username}} <text onTap="handleDeleteMoment" data-commentId="{{item.commentId}}">删除</text>
<text>{{item.createTime}}</text> <text data-commentId="{{item.commentId}}" onTap="openComentModal">评论</text>
</view> </view>
<file-list fileView="{{item.fileView}}" organizer="{{organizer}}" currentPeople="{{currentPeople}}" onDeleteMeetingFile="deleteMeetingFile"/> <view class="compose-column">
<comment a:if="{{item.replyCommentList}}" replyCommentList="{{item.replyCommentList}}" onDeleteComment="deleteComment"/>
</view> </view>
<view a:if="{{item.content && ((item.category == 1 || item.taskViewList && item.taskViewList.length > 0) || ( item.fileView && item.fileView.fileInfos && item.fileView.fileInfos.length > 0 ))}}" class='simple-column'>{{item.content}} {{item.createTime}}</view>
</block> </block>
<view class="affair-placeholder" a:if="{{!affairList || affairList.length == 0}}"> <view class="affair-placeholder" a:if="{{!affairList || affairList.length == 0}}">
<template is="affair-placeholder" data="{{title: '添加文件', tip: '我们不开无准备的会,快来上传会议文件吧。'}}"/> <template is="affair-placeholder" data="{{title: '添加文件', tip: '我们不开无准备的会,快来上传会议文件吧。'}}"/>
...@@ -216,22 +217,21 @@ ...@@ -216,22 +217,21 @@
<view class="loading-more" onTap="loadAffairMore" a:if="{{current < pages}}">点击加载更多动态...</view> <view class="loading-more" onTap="loadAffairMore" a:if="{{current < pages}}">点击加载更多动态...</view>
</block> </block>
<view a:else></view> <view a:else></view>
<popup a:if="{{popupShow}}" title="{{popupTitle}}" show="{{popupShow}}" mask="true" onClose="closePopup"> <popup a:show="{{popupShow}}" title="{{popupTitle}}" show="{{popupShow}}" mask="true" onClose="closePopup">
<meeting-time-picker a:if="{{'time' === comType}}" onComplete="onComplete" startTime="{{$data.startTime}}" endTime="{{$data.endTime}}" isIPX="{{isIPX}}"></meeting-time-picker> <meeting-time-picker a:if="{{'time' === comType}}" onComplete="onComplete" startTime="{{$data.startTime}}" endTime="{{$data.endTime}}" isIPX="{{isIPX}}"></meeting-time-picker>
<hlist a:if="{{'participator' === comType}}" dataComList="{{comHListData.contactData}}" onSelectComHList="selectComHList"></hlist> <hlist a:if="{{'participator' === comType}}" dataComList="{{comHListData.contactData}}" onSelectComHList="selectComHList"></hlist>
<list multiple="{{comListData.multiple}}" onCompelete="selectAheadtimes" comSelectList="{{comListData.aheadTimesListId}}" complete="{{comType=='aheadTime' ? true : false}}"a:if="{{comType=='repeat' || comType=='aheadTime'}}" dataComList="{{comType=='repeat' ? comListData.repeatList : comListData.aheadTimesList}}" onComSelectList="selectComList" comSelectListId="{{comType=='repeat' ? comListData.comSelectListId : comListData.aheadTimesListId}}" iconType="{{comListData.iconType}}"></list> <list multiple="{{comListData.multiple}}" onCompelete="selectAheadtimes" comSelectList="{{comListData.aheadTimesListId}}" complete="{{comType=='aheadTime' ? true : false}}" a:if="{{comType=='repeat' || comType=='aheadTime'}}" dataComList="{{comType=='repeat' ? comListData.repeatList : comListData.aheadTimesList}}" onComSelectList="selectComList" comSelectListId="{{comType=='repeat' ? comListData.comSelectListId : comListData.aheadTimesListId}}" iconType="{{comListData.iconType}}"></list>
<list a:if="{{comType == 'meetingWayModel'}}" dataComList="{{relatedAppPlatform.includes('zoom') ? comListData.meetingWayList: [comListData.meetingWayList[0]] }}" onComSelectList="selectComList" comSelectListId="{{comListData.meetingWayModelId}}" iconType="{{comListData.iconType}}"></list> <list a:if="{{comType == 'meetingWayModel'}}" dataComList="{{relatedAppPlatform.includes('zoom') ? comListData.meetingWayList: [comListData.meetingWayList[0]] }}" onComSelectList="selectComList" comSelectListId="{{comListData.meetingWayModelId}}" iconType="{{comListData.iconType}}"></list>
<notes a:if="{{comType == 'notesModal'}}" isEdit="{{true}}" onGetNotes="getNotes"/>
<comment a:if="{{comType == 'commentModal'}}" isEdit="{{true}}" onGetComment="getComment"/>
</popup> </popup>
<!-- 分享的弹窗 --> <!-- 分享的弹窗 -->
<popup a:if="{{comShareData.isShow}}" show="{{comShareData.isShow}}" title="{{comShareData.shareTitle}}" mask="{{true}}" onClose="closeShare"> <!--<popup a:if="{{comShareData.isShow}}" show="{{comShareData.isShow}}" title="{{comShareData.shareTitle}}" mask="{{true}}" onClose="closeShare"><sharelist dataComList="{{comShareData.shareDataList}}" onSelectComHList="closeShare"></sharelist></popup> -->
<sharelist dataComList="{{comShareData.shareDataList}}" onSelectComHList="closeShare"></sharelist> <!--<popup show="{{show}}" onClose="closePop" title="{{pop.title}}">
</popup>
<popup a:if="{{show}}" show="{{show}}" onClose="closePop" title="{{pop.title}}">
<!-- 任务创建弹出框 --> <!-- 任务创建弹出框 -->
<task-panel a:if="{{pop.type === 'createTask'}}" onComplete="complete" action='create'/> <!--<task-panel a:if="{{pop.type === 'createTask'}}" onComplete="complete" action='create'/> -->
<!-- 任务修改弹出框 --> <!-- 任务修改弹出框 -->
<task-panel a:if="{{pop.type === 'updateTask'}}" action='update' onDeleteTask="deleteTask"/> <!--<task-panel a:if="{{pop.type === 'updateTask'}}" action='update' onDeleteTask="deleteTask"/></popup> -->
</popup>
</view> </view>
</view> </view>
</block> </block>
......
...@@ -2,7 +2,7 @@ import create from 'dd-store'; ...@@ -2,7 +2,7 @@ import create from 'dd-store';
import { checkFullScren } from "../../utils/checkFullScren"; import { checkFullScren } from "../../utils/checkFullScren";
import pageStore from './store'; import pageStore from './store';
import { saveFileInfo, getMeetingRoomAffairs, createMeetingTask, deleteMeetingTask, updateMeetingTask, uploadPermissions } from '../../api/request'; import { saveFileInfo, getMeetingRoomAffairs, createMeetingTask, deleteMeetingTask, updateMeetingTask, uploadPermissions } from '../../api/request';
import { getuploadResource, isParticipate, deleteSchedule, getScheduleDetail, getUserScheduleInTime, modifySchedule, getMeetingRoomRepeatAffairs } from '../../api/request.js' import { getOssPermission, getuploadResource, isParticipate, deleteSchedule, getScheduleDetail, getUserScheduleInTime, modifySchedule, getMeetingRoomRepeatAffairs, updateMoment, deleteMoment } from '../../api/request.js'
import { throttle, getCreateShowTime } from './../../utils/utils.js' import { throttle, getCreateShowTime } from './../../utils/utils.js'
import { observer } from '/utils/observer.js' import { observer } from '/utils/observer.js'
import { resolve } from 'path'; import { resolve } from 'path';
...@@ -1550,31 +1550,13 @@ create.Page({ ...@@ -1550,31 +1550,13 @@ create.Page({
dealAffairData(affairList) { dealAffairData(affairList) {
return affairList.map(it => { return affairList.map(it => {
if (it.createTime) { if (it.createTime) {
it.createTime = getCreateShowTime(it.createTime); it.updateTime = getCreateShowTime(it.updateTime);
} }
if (it.category == '2' && it.fileView) { if (it.replyCommentList) {
if (it.fileView.creatorInfo) { it.replyCommentList.map(item => {
it.fileView.creatorInfo = JSON.parse(it.fileView.creatorInfo); item.updateTime = getCreateShowTime(item.updateTime);
} return item
if (it.fileView.fileInfos) {
it.fileView.fileInfos = JSON.parse(it.fileView.fileInfos)
}
return it
}
else if (it.category === '3' && it.taskViewList) {
it.taskViewList.map(o => {
if (o.acceptorInfo) {
o.acceptorInfo = JSON.parse(o.acceptorInfo)
}
if (o.creatorInfo) {
o.creatorInfo = JSON.parse(o.creatorInfo)
}
if (o.taskInfos) {
o.taskInfos = JSON.parse(o.taskInfos)
}
return o
}) })
return it
} }
return it return it
}) })
...@@ -1880,6 +1862,108 @@ create.Page({ ...@@ -1880,6 +1862,108 @@ create.Page({
} }
}) })
} }
},
// 创建任务
goCreateTask(e) {
dd.navigateTo({ url: '/pages/createTask/createTask?meetingId=' + this.store.data.scheduleId })
},
// 创建会议笔记
openNoteModal() {
this.setData({
popupShow: true,
popupTitle: '创建会议笔记',
comType: 'notesModal'
})
},
// 编辑笔记
editNotes(e) {
this.store.data.notes = {
meetingNotes: e.currentTarget.dataset.meetingNotes,
commentId: e.currentTarget.dataset.commentId,
notice: true,
meetingId: this.store.data.scheduleId
}
this.update();
this.setData({
popupShow: true,
popupTitle: '编辑会议笔记',
comType: 'notesModal'
})
},
getNotes(notes) {
//编辑
if (this.store.data.notes) {
updateMoment({
...this.store.data.notes,
platform: 'dingTalk',
meetingNotes: notes
}).then(res => {
if (res.data.code == 0) {
this.closePopup();
// clear
this.store.data.notes = null;
this.update();
}
})
return
}
//创建
updateMeetingTask({
platform: 'dingTalk',
meetingId: this.store.data.scheduleId,
notesModel: {
meetingNotes: notes
}
}).then(res => {
if (res.data.code == 0) {
this.closePopup();
}
})
},
//添加评论
openComentModal(e) {
this.store.data.parentCommentId = e.currentTarget.dataset.commentId,
this.update();
this.setData({
popupShow: true,
popupTitle: '添加评论',
comType: 'commentModal'
})
},
getComment(comment) {
updateMeetingTask({
parentCommentId: this.store.data.parentCommentId,
platform: 'dingTalk',
remark: comment,
notice: false,
meetingId: this.store.data.scheduleId,
}).then(res => {
if (res.data.code == 0) {
this.closePopup();
}
})
},
// 删除动态
handleDeleteMoment(e) {
this.deleteComment(e.currentTarget.dataset.commentId)
},
// 删除评论,删除动态
deleteComment(commnetId) {
dd.confirm({
title: '删除',
content: '确认要删除吗?',
confirmButtonText: '确定',
cancelButtonText: '取消',
success: (res) => {
if (res.confirm) {
deleteMoment(commnetId).then(res => {
if (res.code === 0) {
}
})
}
}
})
} }
}); });
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
"usingComponents": { "usingComponents": {
"popup": "../../components/popup/index", "popup": "../../components/popup/index",
"task-list": "../../components/taskList/taskList", "task-list": "../../components/taskList/taskList",
"notes": "../../components/notes/notes",
"comment": "../../components/comment/comment",
"file-list": "../../components/fileList/fileList", "file-list": "../../components/fileList/fileList",
"task-panel": "../../components/taskPanel/taskPanel", "task-panel": "../../components/taskPanel/taskPanel",
"list": "../../components/list/list", "list": "../../components/list/list",
......
...@@ -2,12 +2,13 @@ class Store { ...@@ -2,12 +2,13 @@ class Store {
data = { data = {
affairList: [], affairList: [],
currentTask: { currentTask: {
id: '', endTime: '',
acceptorInfo: null, excutor: null,
acceptorId: '', title: '',
taskStatus: '', excutorId: ''
taskInfos: null
}, },
notes: null,
parentCommentId: '',
fileInfos: null, fileInfos: null,
description: '', description: '',
oldFileInfos: '', oldFileInfos: '',
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
<view class="avater"> <view class="avater">
<image a:if="{{item.avatar}}" mode="scaleToFill" src="{{item.avatar}}" /> <image a:if="{{item.avatar}}" mode="scaleToFill" src="{{item.avatar}}" />
<text a:else>{{item.name.slice(0, split || 2)}} <text a:else>{{item.name.slice(0, split || 2)}}
{{item.name}}
</text> </text>
</view> </view>
</template> </template>
\ No newline at end of file
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