Commit 6185c65a by xiexiaoqin

feat: meetingdetail

parent 96b72702
{
"editor.formatOnSave": true
}
\ No newline at end of file
import { setGlobalStore } from 'dd-store';
import exampleStore from './stores/exampleStore'
setGlobalStore(exampleStore);
App({ App({
onLaunch(options) { onLaunch(options) {
// 第一次打开 // 第一次打开
// options.query == {number:1} // options.query == {number:1}
// console.info('App onLaunch'); // console.info('App onLaunch');
...@@ -15,7 +20,7 @@ App({ ...@@ -15,7 +20,7 @@ App({
userid: '', userid: '',
name: '', name: '',
// globalUrl:'https://gateway2.mingwork.com', // 线上地址 // globalUrl:'https://gateway2.mingwork.com', // 线上地址
globalUrl:'https://gateway-beta.mingwork.com' //beta地址 globalUrl: 'https://gateway-beta.mingwork.com' //beta地址
// globalUrl:'http://139.196.213.18:9999' //beta地址 // globalUrl:'http://139.196.213.18:9999' //beta地址
// globalUrl:'http://192.168.1.101:9999', //beta地址 // globalUrl:'http://192.168.1.101:9999', //beta地址
// globalUrl:'http://192.168.1.102:9999' //beta地址 // globalUrl:'http://192.168.1.102:9999' //beta地址
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
"pages/scheduleDetail/scheduleDetail", "pages/scheduleDetail/scheduleDetail",
"pages/participantsDetail/participantsDetail", "pages/participantsDetail/participantsDetail",
"pages/createOrEditSchedule/createOrEditSchedule", "pages/createOrEditSchedule/createOrEditSchedule",
"pages/attendeeList/attendeeList",
"pages/meetingDetail/meetingDetail" "pages/meetingDetail/meetingDetail"
] ]
} }
\ No newline at end of file
...@@ -63,13 +63,14 @@ ...@@ -63,13 +63,14 @@
.fillet { .fillet {
background: #fff; background: #fff;
border-radius: 16rpx 16rpx 0 0; border-radius: 16rpx 16rpx 0 0;
left: 0;
} }
.close-icon { .close-icon {
text-align: center; text-align: center;
} }
.close-icon > .iconfont { .close-icon>.iconfont {
color: #9599A2; color: #9599A2;
font-size: 64rpx; font-size: 64rpx;
} }
...@@ -78,5 +79,4 @@ ...@@ -78,5 +79,4 @@
text-align: center; text-align: center;
font-size: 24rpx; font-size: 24rpx;
color: rgba(144, 161, 179, 0.56); color: rgba(144, 161, 179, 0.56);
} }
\ No newline at end of file
@import "../../template/avater/index.acss";
.task-list {
border: 1rpx solid rgba(245, 246, 247, 1);
border-radius: 16rpx;
border-radius: 16rpx;
padding: 14rpx 16rpx 0;
margin-top: 16rpx;
}
.task-list>.task-box {
background: rgba(255, 255, 255, 1);
border-radius: 8rpx;
box-shadow: 0 0 8rpx 0rpx rgba(0, 0, 0, 0.04);
padding: 16rpx 26rpx;
color: rgba(27, 38, 61, 1);
margin-bottom: 14rpx;
position: relative;
display: flex;
align-items: center;
}
.task-box>.task-title {
flex: 1;
font-size: 28rpx;
line-height: 28rpx;
}
.task-box>.task-title>.avater {
width: 48rpx;
height: 48rpx;
position: absolute;
right: 14rpx;
top: 8rpx;
line-height: 48rpx;
}
.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;
}
.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 {
width: 80rpx;
height: 80rpx;
line-height: 80rpx;
position: relative;
}
.name {
font-size: 24rpx;
line-height: 40rpx;
color: rgba(25, 31, 37, 0.56);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.delete-task-wrap {
display: flex;
justify-content: center;
margin: 300rpx auto 34rpx;
}
.delete-task {
border: 1rpx solid rgba(222, 222, 222, 1);
background: #fff;
border-radius: 48rpx;
color: rgba(27, 38, 61, 0.72);
font-size: 28rpx;
line-height: 64rpx;
padding: 0 34rpx;
}
.delete-task .iconfont {
color: rgba(242, 86, 67, 1);
font-size: 28rpx;
margin-right: 18rpx;
}
.checkbox {
border: 3rpx solid rgba(77, 217, 100, 1);
border-radius: 4rpx;
width: 28rpx;
height: 28rpx;
margin-right: 18rpx;
}
.checkbox-active {
background: rgba(77, 217, 100, 1);
}
\ No newline at end of file
<import src="../../template/avater/index.axml"/>
<view class="task-list">
<view class="task-box" a:for='{{taskList}}'>
<template is="checkbox" data="{{status: item.status}}"></template>
<view class="task-title" onTap="showPop" data-task="{{item}}">{{item.title}}
<template is="avater" data="{{item}}"/>
</view>
</view>
</view>
<!-- 弹出框 -->
<popup show="{{show}}" onClose="closePop" title="会议任务">
<view class="task-column edit-column">
<template is="checkbox" data="{{status: currentTask.status}}"></template>
<input onBlur="inputChange" value="{{currentTask.title}}"/>
</view>
<view class="task-column participator-top">
<text class="iconicon_attender1 iconfont icon"></text>
<text class="participator-title">执行人</text>
<text class="iconicon_open iconfont icon" onTap="gotoParticipatorPage"></text>
</view>
<view class="participator-bottom">
<view class="people">
<template is="avater" data="{{item: currentTask}}"/>
<view class="name">{{currentTask.username}}</view>
</view>
</view>
<view class="delete-task-wrap">
<view class="delete-task" onTap="deleteTask">
<text class="iconfont iconicon_noAgreed1"></text>
删除该任务
</view>
</view>
</popup>
<template name="checkbox">
<view class="checkbox {{status ? 'checkbox-active': ''}}" data-status="{{status}}" onTap="CheckChange"></view>
</template>
\ No newline at end of file
// import create from 'dd-store';
// import pageStore from '../../pages/meetingDetail/store';
Component({
// store: pageStore,
mixins: [],
data: {
show: false,
currentTask: null,
// actionList: null
},
props: {},
didMount() {
},
didUpdate() {
},
didUnmount() { },
methods: {
showPop(e) {
this.setData({
currentTask: e.target.dataset.task,
show: true
})
},
closePop() {
this.setData({
show: false
})
},
gotoParticipatorPage() {
dd.navigateTo({ url: `../../pages/attendeeList/attendeeList?userId=${this.data.currentTask.userId}` })
},
deleteTask() {
},
inputChange(e) {
console.log(e.detail.value);
this.props.onInputChange(e.detail.value);
},
CheckChange(e) {
const status = e.target.dataset.status;
this.props.onCheckChange(status);
}
},
});
{
"component": true,
"usingComponents": {
"popup": "../popup/index"
}
}
\ No newline at end of file
@import "../../template/avater/index.acss";
page {
background: #fff;
}
.column {
display: flex;
align-items: center;
width: 100%;
padding-left: 28rpx;
height: 112rpx;
box-sizing: border-box;
}
.avater {
width: 80rpx;
height: 80rpx;
line-height: 80rpx;
margin-left: 44rpx;
margin-right: 16rpx;
}
.radio {
width: 40rpx;
height: 40rpx;
border-radius: 50%;
text-align: center;
line-height: 40rpx;
box-sizing: border-box;
}
.radio-uncheck {
border: 2rpx solid rgba(10, 10, 10, 0.4);
}
.radio-checked {
background: #0F7DFF;
}
.radio-checked>.iconfont {
color: #fff;
font-size: 28rpx;
}
.name {
font-size: 34rpx;
color: #191F25;
border-bottom: 2rpx solid rgba(25, 31, 37, 0.12);
flex: 1;
height: 100%;
line-height: 112rpx;
}
\ No newline at end of file
<import src="../../template/avater/index.axml"/>
<view class="column" a:for="{{participatorList}}">
<view class="radio {{item.userId == userId ? 'radio-checked' : 'radio-uncheck'}}" data-userId="{{item.userId}}" onTap="onCheckChange">
<text a:if="{{item.userId == userId}}" class="iconfont iconicon_ok"></text>
</view>
<template is="avater" data="{{item}}"/>
<view class="name">{{item.username}}</view>
</view>
\ No newline at end of file
import create from 'dd-store';
import PageStore from '../meetingDetail/store';
create.Page({
store: PageStore,
data: {
participatorList: null,
userId: null
},
onLoad(query) {
console.log('onLoad')
console.log(this.store)
this.setData({
...query
})
},
onCheckChange(e) {
//我要通知上一个页面状态变化了,页面和组件共享状态
this.setData({
userId: e.target.dataset.userId
}, () => {
dd.navigateBack();
})
}
});
{
"window": {
"defaultTitle": "任务执行人"
}
}
\ No newline at end of file
...@@ -21,7 +21,8 @@ page { ...@@ -21,7 +21,8 @@ page {
position: relative; position: relative;
padding-left: 104rpx; padding-left: 104rpx;
} }
.compose-column .desc{
.compose-column .desc {
color: rgba(25, 31, 37, 1); color: rgba(25, 31, 37, 1);
font-size: 32rpx; font-size: 32rpx;
line-height: 48rpx; line-height: 48rpx;
...@@ -87,7 +88,7 @@ page { ...@@ -87,7 +88,7 @@ page {
top: 16rpx; top: 16rpx;
} }
.task-box>.checkbox { .checkbox {
border: 3rpx solid rgba(77, 217, 100, 1); border: 3rpx solid rgba(77, 217, 100, 1);
border-radius: 4rpx; border-radius: 4rpx;
width: 28rpx; width: 28rpx;
...@@ -115,23 +116,27 @@ page { ...@@ -115,23 +116,27 @@ page {
color: rgba(25, 31, 37, 1); color: rgba(25, 31, 37, 1);
display: flex; display: flex;
} }
.file-box>.file-title >text:first-child{
.file-box>.file-title>text:first-child {
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
} }
.file-box>.file-title >text:last-child{
.file-box>.file-title>text:last-child {
white-space: nowrap; white-space: nowrap;
} }
.file-box>.file-size { .file-box>.file-size {
color: rgba(25, 31, 37, 0.56); color: rgba(25, 31, 37, 0.56);
font-size: 24rpx; font-size: 24rpx;
line-height: 40rpx; line-height: 40rpx;
} }
.footer{
.footer {
background: #fff; background: #fff;
border-top:2rpx solid rgba(25, 31, 37, 0.12); border-top: 2rpx solid rgba(25, 31, 37, 0.12);
height:94rpx; height: 94rpx;
position: fixed; position: fixed;
bottom: 0; bottom: 0;
left: 0; left: 0;
...@@ -140,18 +145,21 @@ page { ...@@ -140,18 +145,21 @@ page {
justify-content: flex-end; justify-content: flex-end;
width: 100%; width: 100%;
} }
.footer >view{
.footer>view {
width: 35rpx; width: 35rpx;
height:35rpx; height: 35rpx;
background: red; background: red;
margin:0 38rpx; margin: 0 38rpx;
} }
.footer >view:last-child{
margin:0 24rpx 0 0; .footer>view:last-child {
margin: 0 24rpx 0 0;
} }
.devider{
background:rgba(227, 228, 228, 1); .devider {
height:48rpx; background: rgba(227, 228, 228, 1);
width:1rpx; height: 48rpx;
width: 1rpx;
margin: 0 28rpx; margin: 0 28rpx;
} }
\ No newline at end of file
<view class="list"> <view class="list">
<view class='simple-column'>大鹏创建了任务</view> <block a:for="{{actionList}}">
<view class='compose-column'> <view a:if="{{!item.logType}}" class='simple-column'>{{item.content}}</view>
<view class="avater"></view> <view a:if="{{item.logType == 'task'}}" class='compose-column'>
<view class="title"> <view class="avater"></view>
<view class="title">
会议任务 会议任务
<text>15分钟之前</text> <text>{{item.createTime}}</text>
</view>
<view class="task-list">
<view class="task-box">
<view class="checkbox"></view>
树立产品流程图
<view class="avater"></view>
</view>
<view class="task-box">
<view class="checkbox"></view>
树立产品流程图
<view class="avater"></view>
</view> </view>
<task-list taskList="{{item.taskInfos}}" onInputChange="inputChange" onCheckChange="checkChange" onReload="reload"/>
</view> </view>
</view> <view a:if="{{item.logType == 'asseory'}}" class='compose-column'>
<view class='compose-column'> <view class="avater"></view>
<view class="avater"></view> <view class="title">
<view class="title"> {{item.creator}}
小雨 <text>{{item.createTime}}</text>
<text>15分钟之前</text>
</view>
<view class="desc">
产品MVP核心流程中用后中用后
</view>
<view class="task-list">
<view class="file-box">
<view class="file-icon"></view>
<view class="file-title">
<text>产品MVP核心流程中用后中用后</text>
<text>汇总.pdf</text></view>
<view class="file-size">103kb</view>
</view> </view>
<view class="file-box"> <view class="desc">
<view class="file-icon"></view> {{item.description}}
<view class="file-title"> </view>
<text>产品MVP核心流程中用后中用后</text> <view class="task-list">
<text>汇总.pdf</text></view> <view class="file-box">
<view class="file-size">103kb</view> <view class="file-icon"></view>
<view class="file-title">
<text>产品MVP核心流程中用后中用后</text>
<text>汇总.pdf</text></view>
<view class="file-size">103kb</view>
</view>
<view class="file-box">
<view class="file-icon"></view>
<view class="file-title">
<text>产品MVP核心流程中用后中用后</text>
<text>汇总.pdf</text></view>
<view class="file-size">103kb</view>
</view>
</view> </view>
</view> </view>
</view> </block>
<view class='simple-column'>大鹏创建了任务</view>
</view> </view>
<view class="footer"> <view class="footer">
<view></view> <view></view>
<view></view> <view></view>
<text class="devider"></text> <text class="devider"></text>
<view></view> <view></view>
</view> </view>
\ No newline at end of file
<button size="default" type="primary" onTap="showPop">Button</button>
<popup
show="{{show}}"
onClose="closePop"
title="会议任务"
>
<view>
<view class="checkbox"></view>树立产品流程图
</view>
</popup>
\ No newline at end of file
Page({ import create from 'dd-store';
import pageStore from './store';
create.Page({
store: pageStore,
data: { data: {
show:false $data: null,
actionList: null
}, },
onLoad() {}, onLoad() {
showPop(){ this.reload();
this.setData({ console.log(this)
show: true
})
}, },
closePop(){ //点击任务
this.setData({ checkChange() {
show: false
}) this.store.data.actionList.push({
content: '我下覅按时覅偶唉好烦'
});
this.update();
}, },
Complete(data){ //修改任务标题
console.log(data) inputChange() {
this.closePop(); this.store.data.actionList.push({
content: '我修改了人物表图'
});
this.update();
},
reload() {
this.store.data.actionList = [{
id: 1, content: '大actionList鹏13::00创建了会议', logType: ''
},
{
id: 2, creator: '大鹏', createTime: '13::00', logType: 'asseory',
fileInfos: [{
filename: '打算的你到哪搜点', fileSize: '1201'
}]
},
{
id: 2, creator: '大鹏', createTime: '13::00', logType: 'task',
taskInfos: [
{
status: false,
title: '梳理产品流程图', headUrl: '', username: 'name', userId: '1'
},
{
status: true,
title: '梳理产品流程图2', headUrl: '', username: 'name2', userId: '2'
}
]
}
];
this.update();
} }
}); });
{ {
"title": "会议详情", "window": {
"defaultTitle": "会议详情"
},
"usingComponents": { "usingComponents": {
"popup": "../../components/popup/index", "popup": "../../components/popup/index",
"meeting-time-picker": "../../components/meetingTimePicker/meetingTimePicker" "task-list": "../../components/taskList/taskList"
} }
} }
\ No newline at end of file
class Store {
data = {
actionList: []
}
}
export default new Store()
\ No newline at end of file
class Store { class Store {
data = { data = {
participatorList: [], // 参会人列表 participatorList: [
{
status:true,username: 'Ceshi', userId: 1, headUrl: '', platform: 'dingtalk'
},
{
status:false,username: 'Ceshi2', userId: 2, headUrl: '', platform: 'dingtalk'
},
{
status:false,username: 'Ceshi3', userId: 3, headUrl: '', platform: 'dingtalk'
}
], // 参会人列表
locationName: '', locationName: '',
conflictPeople: [], conflictPeople: [],
participatorUserId: [], // 参会人的userId participatorUserId: [], // 参会人的userId
......
.avater {
border-radius: 50%;
background: #3070F2;
color: white;
text-align: center;
}
\ No newline at end of file
<!-- 头像处理 -->
<template name="avater">
<view class="avater">
<image a:if="{{item.headUrl}}" mode="scaleToFill" src="{{item.headUrl}}" />
<text a:else>{{item.platform === "outlook" ? item.username.slice(0, 2) : item.username.slice(-2)}}
</text>
</view>
</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