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
3061cbc4
Commit
3061cbc4
authored
Nov 03, 2020
by
fengzhaoyu
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'release/2.0.0' of
https://gitlab.mingwork.com/fengzhaoyu/schedule
into release/2.0.0
parents
b077ea55
328ffc6c
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
93 additions
and
345 deletions
+93
-345
request.js
api/request.js
+8
-0
fileList.acss
components/fileList/fileList.acss
+2
-2
fileList.axml
components/fileList/fileList.axml
+2
-1
fileList.js
components/fileList/fileList.js
+39
-16
selectArea.acss
components/selectArea/selectArea.acss
+0
-151
selectArea.axml
components/selectArea/selectArea.axml
+0
-73
selectArea.js
components/selectArea/selectArea.js
+0
-71
selectArea.json
components/selectArea/selectArea.json
+0
-7
config.js
config.js
+1
-1
package-lock.json
package-lock.json
+15
-15
createMeeting.js
pages/createMeeting/createMeeting.js
+1
-1
index.js
pages/index/index.js
+2
-1
meetingDetail.js
pages/meetingDetail/meetingDetail.js
+16
-2
meetingRoomList.axml
pages/meetingRoomList/meetingRoomList.axml
+2
-3
meetingRoomList.js
pages/meetingRoomList/meetingRoomList.js
+3
-0
place.js
pages/place/place.js
+1
-1
exampleStore.js
stores/exampleStore.js
+1
-0
No files found.
api/request.js
View file @
3061cbc4
...
...
@@ -287,4 +287,11 @@ export function setRead(meetingId) {
method
:
'get'
,
url
:
`/meet/comment/read?meetingId=
${
meetingId
}
&platform=dingTalk`
})
}
export
function
previewOssFile
(
fileId
)
{
return
$http
({
method
:
'get'
,
url
:
`/meet/fileDetail?objectName=
${
fileId
}
`
})
}
\ No newline at end of file
components/fileList/fileList.acss
View file @
3061cbc4
...
...
@@ -112,11 +112,11 @@
background: url(../../assests/pdf.png) center /100% 100% !important;
}
.png, .jpg, .svg, .jpeg {
.png, .jpg, .svg, .jpeg
, .picture
{
background: url(../../assests/image.png) center /100% 100% !important;
}
.docx, .txt, .doc, .pages, .wps {
.docx, .txt, .doc, .pages, .wps
, .file
{
background: url(../../assests/docx.png) center /100% 100% !important;
}
...
...
components/fileList/fileList.axml
View file @
3061cbc4
...
...
@@ -4,7 +4,8 @@
</view>
<view class="file-list {{customClass}}" a:for="{{fileList}}">
<view class="file-box {{isCanDelete ? 'file-box-close': ''}}" catchTap="preview" data-file="{{item}}">
<view class="file-icon {{item.mimeType}}"></view>
<view a:if="{{item.platform === 'oss'}}" class="file-icon {{item.fileType}}"></view>
<view a:else class="file-icon {{item.mimeType}}"></view>
<view class="file-title">
<text>{{item.name.slice(0, item.name.length - 5)}}</text>
<text>{{item.name.slice(-5)}}</text>
...
...
components/fileList/fileList.js
View file @
3061cbc4
...
...
@@ -2,7 +2,8 @@
import
create
from
'dd-store'
;
import
{
renderSize
}
from
"../../utils/utils"
import
pageStore
from
'../../pages/meetingDetail/store'
;
import
{
uploadPermissions
}
from
'../../api/request.js'
import
{
uploadPermissions
,
previewOssFile
}
from
'../../api/request.js'
import
openLink
from
"dingtalk-jsapi/api/biz/util/openLink"
;
create
.
Component
({
store
:
pageStore
,
...
...
@@ -57,24 +58,46 @@ create.Component({
if
(
!
this
.
props
.
isPreview
)
{
return
}
const
file
=
e
.
target
.
dataset
.
file
console
.
log
(
file
)
let
data
=
{
ddUserId
:
getApp
().
globalData
.
userid
,
type
:
'download'
,
projectName
:
'MING_MEETING'
,
fileIds
:
file
.
fileId
}
uploadPermissions
(
data
).
then
(
res
=>
{
dd
.
previewFileInDingTalk
({
corpId
:
dd
.
corpId
,
spaceId
:
res
.
data
.
data
,
fileId
:
file
.
fileId
,
fileName
:
file
.
name
,
fileSize
:
file
.
size
,
fileType
:
file
.
mimeType
,
if
(
file
.
platform
===
'oss'
)
{
if
(
file
.
webUrl
)
{
dd
.
previewImage
({
current
:
0
,
urls
:
[
file
.
webUrl
],
});
}
else
{
// 预览文件
previewOssFile
(
encodeURIComponent
(
file
.
fileId
)).
then
(
res
=>
{
openLink
({
url
:
res
.
data
.
data
.
webUrl
});
})
}
}
else
{
let
data
=
{
ddUserId
:
getApp
().
globalData
.
userid
,
type
:
'download'
,
projectName
:
'MING_MEETING'
,
fileIds
:
file
.
fileId
}
uploadPermissions
(
data
).
then
(
res
=>
{
dd
.
previewFileInDingTalk
({
corpId
:
dd
.
corpId
,
spaceId
:
res
.
data
.
data
,
fileId
:
file
.
fileId
,
fileName
:
file
.
name
,
fileSize
:
file
.
size
,
fileType
:
file
.
mimeType
,
})
})
})
}
},
//显示操作框
showOperate
(
e
)
{
...
...
components/selectArea/selectArea.acss
deleted
100755 → 0
View file @
b077ea55
/* 区域选择样式 */
.lableTreeBox {
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, .15);
display: flex;
align-items: flex-end;
z-index: 999;
}
.lableTreeContent {
width: 100%;
height: 527rpx;
background: #FFFFFF;
box-shadow: 0 -2rpx 20rpx 0 rgba(25, 31, 37, 0.12);
border-radius: 19rpx 19rpx 0px 0px;
}
.lableTreeHeader {
width: 100%;
height: 104rpx;
padding: 0 32rpx;
line-height: 104rpx;
font-size: 34rpx;
display: flex;
box-sizing: border-box;
border-bottom: 1px solid rgba(25, 31, 37, 0.12);
}
.lableTreeHeader>view {
flex: 1;
height: 104rpx;
}
.lableTreeHeader>view:nth-of-type(1) {
color: #191F25;
}
.lableTreeHeader>view:nth-of-type(2) {
color: #3296FA;
text-align: right
}
.lableTreeModal {
width: 100%;
padding-right: 32rpx;
box-sizing: border-box;
}
/* tree样式 */
.treeUl {
position: relative;
padding-left: 32rpx;
display: block;
box-sizing: border-box;
}
.treeLi {
display: block;
font-size: 28rpx;
line-height: 70rpx;
}
.treeName {
height: 70rpx;
font-size: 28rpx;
line-height: 70rpx;
width: 100%;
display: flex;
}
.labelIsShow {
width: 24rpx;
margin-right: 24rpx;
}
.treeLabel {
flex: 1;
display: flex;
padding-right: 32rpx;
box-sizing: border-box;
}
.treeLabel>view:nth-of-type(1) {
flex: 1;
}
.lableTreeChecked {
background: rgba(25, 31, 37, 0.05);
border-radius: 4rpx;
}
/* icon */
.labelIsShow .iconsanjiao {
font-size: 20rpx;
color: #D8D8D8;
}
.labelIsShow .iconsanjiao1 {
font-size: 20rpx;
color: #D8D8D8;
}
.labelIsShow .iconxuanzhong1 {
font-size: 32rpx;
color: #3296FA;
}
.treeLabel .iconchengshi- {
font-size: 24rpx;
margin-right: 16rpx;
color: #191F25;
}
.treeLabel .iconjiangzhu1 {
font-size: 24rpx;
margin-right: 16rpx;
color: #191F25;
}
.treeLabel .iconlouceng- {
font-size: 24rpx;
margin-right: 16rpx;
color: #191F25;
margin-left: 8rpx;
}
.treeLabel .iconjianzhu1 {
font-size: 24rpx;
margin-right: 16rpx;
color: #191F25;
}
.labelIsShow {
padding-left: 4rpx;
}
.cancelSelectAre {
font-size: 32rpx;
}
.sureSelectAre {
font-size: 32rpx;
}
\ No newline at end of file
components/selectArea/selectArea.axml
deleted
100644 → 0
View file @
b077ea55
<view class="lableTreeBox">
<view class="lableTreeContent">
<view class="lableTreeHeader">
<view class="cancelSelectAre" catchTap="cancelSelectAre">
取消
</view>
<view class="sureSelectAre" catchTap="sureSelectAre">
确定
</view>
</view>
<view class="lableTreeModal">
<scroll-view scroll-y="{{true}}" style="height: 422rpx;padding-top: 8rpx">
<view class="treeUl">
<block a:for="{{lableTree}}">
<view data-selectid="{{item.id}}" class="treeLi">
<view class="treeName {{ item.id===locationId ? 'lableTreeChecked' : '' }}">
<view class="labelIsShow" data-index="{{[index]}}" data-cycle="1" catchTap="onChangeStatus">
<text class="iconfont iconsanjiao" a:if="{{item.status}}"></text>
<text class="iconfont iconsanjiao1" a:elif="{{!item.status}}"></text>
</view>
<view class="treeLabel" data-id="{{item.id}}" data-name="{{item.name}}" data-cycle="1" catchTap="onChangeAreId">
<view>
<text class="iconfont iconchengshi-"></text><text style="font-size:28rpx">{{item.name}}</text>
</view>
<view a:if="{{item.id===locationId}}" style="color: #1890FF;">
<text class="iconfont iconxuanzhong1"></text>
</view>
</view>
</view>
<view a:if="{{item.children.length > 0 && item.status}}" class="treeUl">
<block a:for="{{item.children}}" a:for-index="index2" a:for-item="item2">
<view data-selectid="{{item2.id}}" class="treeLi">
<view class="treeName {{ item2.id===locationId ? 'lableTreeChecked' : '' }}">
<view class="labelIsShow" data-index="{{[index,index2]}}" data-cycle="2" catchTap="onChangeStatus">
<text class="iconfont iconsanjiao" a:if="{{item2.status}}"></text>
<text class="iconfont iconsanjiao1" a:elif="{{!item2.status}}"></text>
</view>
<view class="treeLabel" data-id="{{item2.id}}" data-name="{{item2.name}}" catchTap="onChangeAreId">
<view>
<text class="iconfont iconjianzhu1"></text><text style="font-size:28rpx">{{item2.name}}</text>
</view>
<view a:if="{{item2.id===locationId}}" style="color: #1890FF;">
<text class="iconfont iconxuanzhong1"></text>
</view>
</view>
</view>
</view>
<view a:if="{{item2.children.length > 0 && item2.status}}" class="treeUl" style="margin-left: 50rpx">
<block a:for="{{item2.children}}" a:for-index="index3" a:for-item="item3">
<view data-selectid="{{item3.id}}" class="treeLi">
<view class="treeName {{ item3.id===locationId ? 'lableTreeChecked' : '' }}">
<view class="treeLabel" data-id="{{item3.id}}" data-name="{{item3.name}}" catchTap="onChangeAreId">
<view>
<text class="iconfont iconlouceng-"></text><text style="font-size:28rpx">{{item3.name}}</text>
</view>
<view a:if="{{item3.id===locationId}}" style="color: #1890FF;">
<text class="iconfont iconxuanzhong1"></text>
</view>
</view>
</view>
</view>
</block>
</view>
</block>
</view>
</view>
</block>
</view>
</scroll-view>
</view>
</view>
</view>
\ No newline at end of file
components/selectArea/selectArea.js
deleted
100644 → 0
View file @
b077ea55
Component
({
mixins
:
[],
data
:
{
lableTree
:
[],
locationName
:
'全部区域'
,
//区域name
locationId
:
''
,
// 区域id
},
props
:
{
locationName
:
''
,
//区域name
locationId
:
''
,
// 区域id
areTreeList
:
[]
},
didMount
()
{
const
addKey
=
data
=>
data
.
map
(
item
=>
({
...
item
,
status
:
true
,
children
:
addKey
(
item
.
children
)
}))
const
lableTree
=
addKey
(
this
.
props
.
areTreeList
)
this
.
setData
({
lableTree
:
lableTree
,
locationId
:
this
.
props
.
locationId
,
locationName
:
this
.
props
.
locationName
,
})
},
didUpdate
()
{},
didUnmount
()
{},
methods
:
{
onChangeStatus
(
e
)
{
let
index
=
e
.
target
.
dataset
.
index
let
cycleTimes
=
e
.
target
.
dataset
.
cycle
if
(
cycleTimes
==
1
)
{
let
listStr
=
`lableTree[
${
index
[
0
]}
].status`
this
.
setData
({
[
listStr
]:
this
.
data
.
lableTree
[
index
[
0
]].
status
?
false
:
true
})
}
else
if
(
cycleTimes
==
2
)
{
let
listStr
=
`lableTree[
${
index
[
0
]}
].children[
${
index
[
1
]}
].status`
this
.
setData
({
[
listStr
]:
this
.
data
.
lableTree
[
index
[
0
]].
children
[
index
[
1
]].
status
?
false
:
true
})
}
// else if (cycleTimes == 3) {
// let listStr = `lableTree[${index[0]}].children[${index[1]}].children[${index[2]}].status`
// this.setData({
// [listStr]: this.data.lableTree[index[0]].children[index[1]].children[index[2]].status ? false : true
// })
// }
},
onChangeAreId
(
e
){
this
.
setData
({
locationId
:
this
.
data
.
locationId
===
e
.
target
.
dataset
.
id
?
''
:
e
.
target
.
dataset
.
id
,
locationName
:
this
.
data
.
locationId
===
e
.
target
.
dataset
.
id
?
'全部区域'
:
e
.
target
.
dataset
.
name
})
},
cancelSelectAre
()
{
let
data
=
{
type
:
'cancel'
}
this
.
props
.
onPropsCS
(
data
)
},
sureSelectAre
()
{
let
data
=
{
type
:
'sure'
,
id
:
this
.
data
.
locationId
,
name
:
this
.
data
.
locationName
}
this
.
props
.
onPropsCS
(
data
)
}
},
});
components/selectArea/selectArea.json
deleted
100644 → 0
View file @
b077ea55
{
"component"
:
true
,
"usingComponents"
:
{
"pang-tree"
:
"./selectArea"
}
}
\ No newline at end of file
config.js
View file @
3061cbc4
export
const
globalUrl
=
"https://gateway-beta.mingwork.com"
;
export
const
globalUrl2
=
"https://third-authentication.mingwork.com"
;
export
const
version
=
0.038
;
package-lock.json
View file @
3061cbc4
...
...
@@ -3,22 +3,22 @@
"lockfileVersion"
:
1
,
"dependencies"
:
{
"dd-store"
:
{
"version"
:
"1.
9
.0"
,
"resolved"
:
"https://registry.npm.taobao.org/dd-store/download/dd-store-1.
9
.0.tgz"
,
"integrity"
:
"sha1-
j1MeKLaZGRm8YKFxSPqeG7oUI5c
="
"version"
:
"1.
10
.0"
,
"resolved"
:
"https://registry.npm.taobao.org/dd-store/download/dd-store-1.
10
.0.tgz"
,
"integrity"
:
"sha1-
//IEtd2pzssgUidYu0bo6FHUyQA
="
},
"dingtalk-jsapi"
:
{
"version"
:
"2.1
0.3
"
,
"resolved"
:
"https://registry.npm.taobao.org/dingtalk-jsapi/download/dingtalk-jsapi-2.1
0.3
.tgz"
,
"integrity"
:
"sha1-
reXC+Fj0rEEUPSlK4XKzTvrrleI
="
,
"version"
:
"2.1
3.7
"
,
"resolved"
:
"https://registry.npm.taobao.org/dingtalk-jsapi/download/dingtalk-jsapi-2.1
3.7.tgz?cache=0&sync_timestamp=1603247662697&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdingtalk-jsapi%2Fdownload%2Fdingtalk-jsapi-2.13.7
.tgz"
,
"integrity"
:
"sha1-
idfKKpylh6PxGnfuFPZp6XYCiHc
="
,
"requires"
:
{
"promise-polyfill"
:
"^7.1.0"
}
},
"luxon"
:
{
"version"
:
"1.2
3
.0"
,
"resolved"
:
"https://registry.npm.taobao.org/luxon/download/luxon-1.2
3
.0.tgz"
,
"integrity"
:
"sha1-
I7dIrQ8tVJTcTSh4wZJ4weZRQQw
="
,
"version"
:
"1.2
5
.0"
,
"resolved"
:
"https://registry.npm.taobao.org/luxon/download/luxon-1.2
5
.0.tgz"
,
"integrity"
:
"sha1-
2GIZ6QvAECwOspnWWy9ele/h/nI
="
,
"optional"
:
true
},
"promise-polyfill"
:
{
...
...
@@ -27,18 +27,18 @@
"integrity"
:
"sha1-qwUwHYwoU2MBYi1pInYyJppwyjs="
},
"rrule"
:
{
"version"
:
"2.6.
4
"
,
"resolved"
:
"https://registry.npm.taobao.org/rrule/download/rrule-2.6.
4
.tgz"
,
"integrity"
:
"sha1-
f08x/aErxySbsXbIkRCam8RI4DU
="
,
"version"
:
"2.6.
6
"
,
"resolved"
:
"https://registry.npm.taobao.org/rrule/download/rrule-2.6.
6
.tgz"
,
"integrity"
:
"sha1-
cAMXJ9pKpkjqDcxSS26V9WWvBj4
="
,
"requires"
:
{
"luxon"
:
"^1.21.3"
,
"tslib"
:
"^1.10.0"
}
},
"tslib"
:
{
"version"
:
"1.1
1
.1"
,
"resolved"
:
"https://registry.npm.taobao.org/tslib/download/tslib-1.1
1
.1.tgz"
,
"integrity"
:
"sha1-
6xXRKIJ/vuKEFUnhcfRe0zisfjU
="
"version"
:
"1.1
4
.1"
,
"resolved"
:
"https://registry.npm.taobao.org/tslib/download/tslib-1.1
4.1.tgz?cache=0&sync_timestamp=1602286854330&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-1.14
.1.tgz"
,
"integrity"
:
"sha1-
zy04vcNKE0vK8QkcQfZhni9nLQA
="
}
}
}
pages/createMeeting/createMeeting.js
View file @
3061cbc4
...
...
@@ -223,7 +223,7 @@ create.Page({
location
:
{
longitude
:
'10'
,
latitude
:
'10'
,
location
Name
:
this
.
$store
.
data
.
locationName
meetingRoom
Name
:
this
.
$store
.
data
.
locationName
},
startTime
:
this
.
$store
.
data
.
startTime
.
replace
(
/
\/
/g
,
"-"
),
endTime
:
this
.
$store
.
data
.
endTime
.
replace
(
/
\/
/g
,
"-"
),
...
...
pages/index/index.js
View file @
3061cbc4
...
...
@@ -23,6 +23,7 @@ import {
import
{
checkFullScren
}
from
"../../utils/checkFullScren"
;
import
create
from
"dd-store"
;
import
pageStore
from
'../meetingDetail/store'
;
import
{
version
}
from
'../../config'
;
// const webSocket = require('../../utils/websocket.js');
const
currentDate
=
new
Date
();
...
...
@@ -874,7 +875,7 @@ create.Page({
maxClickCount
--
;
if
(
maxClickCount
==
0
)
{
dd
.
alert
({
content
:
"0.0.26"
content
:
version
});
maxClickCount
=
5
;
}
...
...
pages/meetingDetail/meetingDetail.js
View file @
3061cbc4
...
...
@@ -103,6 +103,14 @@ create.Page({
}
this
.
update
()
}
if
(
this
.
$store
.
data
.
shouldUpdateShowTime
)
{
this
.
setData
({
showTime
:
getShowTime
(
this
.
$store
.
data
.
startTime
,
this
.
$store
.
data
.
endTime
)
})
this
.
$store
.
data
.
shouldUpdateShowTime
=
false
;
this
.
update
();
}
},
onLoad
(
event
)
{
console
.
log
(
'onload'
)
...
...
@@ -156,6 +164,7 @@ create.Page({
planDate
:
res
.
data
.
data
.
planDate
,
},
title
:
res
.
data
.
data
.
title
,
mrReserveStatus
:
res
.
data
.
data
.
mrReserveStatus
,
meetingRemark
:
res
.
data
.
data
.
remark
,
isShowRemark
:
res
.
data
.
data
.
remark
?
true
:
false
,
showTime
:
getShowTime
(
res
.
data
.
data
.
startTime
.
replace
(
/-/g
,
"/"
),
res
.
data
.
data
.
endTime
.
replace
(
/-/g
,
"/"
)),
...
...
@@ -312,7 +321,7 @@ create.Page({
location
:
{
longitude
:
'-999'
,
latitude
:
'-999'
,
location
Name
:
this
.
$store
.
data
.
locationName
meetingRoom
Name
:
this
.
$store
.
data
.
locationName
},
meetingRoomId
:
!!
this
.
$store
.
data
.
roomId
?
this
.
$store
.
data
.
roomId
:
-
1
}
...
...
@@ -1289,7 +1298,8 @@ create.Page({
mask
:
true
,
type
:
'remarkModal'
}
})
});
this
.
handleCloseOperation
();
},
getRemark
(
remark
)
{
//是否发送通知
...
...
@@ -1391,8 +1401,12 @@ create.Page({
export
function
fixSeperateIndex
(
index
,
list
)
{
let
separate
=
index
;
if
(
list
.
length
==
0
)
{
return
-
1
;
}
if
(
separate
===
list
.
length
-
1
)
{
separate
=
-
1
;
}
...
...
pages/meetingRoomList/meetingRoomList.axml
View file @
3061cbc4
...
...
@@ -54,10 +54,9 @@
</view>
</scroll-view>
<popup show="{{isShowModal}}" onClose="onCancel" position="bottom">
<view onTap="onDetermine" class="picker-complete">完成</view>
<view a:if="{{!isShowCalendar}}" class="modalContent">
<view class="modalHeader">
<text onTap="onDetermine">确定</text>
</view>
<!--<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>
...
...
pages/meetingRoomList/meetingRoomList.js
View file @
3061cbc4
...
...
@@ -1270,6 +1270,9 @@ create.Page({
this
.
update
();
}
}
// 通知详情页面是否需要重新计算时间
this
.
$store
.
data
.
shouldUpdateShowTime
=
true
;
this
.
update
();
dd
.
navigateBack
({
delta
:
2
});
...
...
pages/place/place.js
View file @
3061cbc4
...
...
@@ -100,7 +100,7 @@ create.Page({
location
:
{
longitude
:
-
999
,
latitude
:
-
999
,
location
Name
:
this
.
$store
.
data
.
locationName
meetingRoom
Name
:
this
.
$store
.
data
.
locationName
},
meetingRoomId
:
this
.
$store
.
data
.
roomId
,
modifyModel
:
this
.
data
.
conSelectPopupData
.
selectPopupId
,
...
...
stores/exampleStore.js
View file @
3061cbc4
...
...
@@ -7,6 +7,7 @@ class Store {
roomId
:
''
,
startTime
:
''
,
endTime
:
''
,
shouldUpdateShowTime
:
false
,
currentPeople
:
''
,
originUsers
:
[],
originalData
:
null
,
...
...
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