Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
P
pica.cloud.web-education-admin
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
成员
成员
收起侧边栏
Close sidebar
动态
分支图
统计图
提交
打开侧边栏
com.pica.cloud.education.frontend
pica.cloud.web-education-admin
提交
3efab049
提交
3efab049
编写于
11月 25, 2020
作者:
kai.wang
浏览文件
操作
浏览文件
下载
差异文件
解决fetch.js冲突
上级
7bfee120
039a365e
变更
7
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
429 行增加
和
8 行删除
+429
-8
mebman.vue
src/components/yqrange/mebman.vue
+39
-5
checkOrg.vue
src/components/yqrange/member-management/checkOrg.vue
+1
-1
org.vue
src/components/yqrange/member-management/org.vue
+2
-1
region.vue
src/components/yqrange/member-management/region.vue
+367
-0
renyuan.vue
src/components/yqrange/member-management/renyuan.vue
+1
-1
fetch.js
src/utils/fetch.js
+1
-0
yqrangeApi.js
src/utils/yqrange/yqrangeApi.js
+18
-0
未找到文件。
src/components/yqrange/mebman.vue
浏览文件 @
3efab049
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
<div
class=
"member-management"
id=
"screenSet"
>
<div
class=
"member-management"
id=
"screenSet"
>
<el-row
type=
"flex"
justify=
"space-around"
class=
"mm-nav"
align=
"middle"
>
<el-row
type=
"flex"
justify=
"space-around"
class=
"mm-nav"
align=
"middle"
>
<el-col
:span=
"20"
>
<el-col
:span=
"20"
>
<el-button
:type=
"areabtn"
round
class=
"margin-l"
@
click=
"checkTab(0)"
v-show=
'isAraeEdit'
>
可访问本圈的地区
</el-button>
<el-button
:type=
"orgbtn"
round
class=
"margin-l"
@
click=
"checkTab(1)"
>
可访问本圈的机构 (
{{
orgTotal
}}
)
</el-button>
<el-button
:type=
"orgbtn"
round
class=
"margin-l"
@
click=
"checkTab(1)"
>
可访问本圈的机构 (
{{
orgTotal
}}
)
</el-button>
<el-button
:type=
"plebtn"
round
class=
"margin-l"
@
click=
"checkTab(2)"
>
可访问本圈的人员 (
{{
pleTotal
}}
)
</el-button>
<el-button
:type=
"plebtn"
round
class=
"margin-l"
@
click=
"checkTab(2)"
>
可访问本圈的人员 (
{{
pleTotal
}}
)
</el-button>
<span
class=
"text inlin"
@
click=
"goBalck"
>
黑名单
</span>
<span
class=
"text inlin"
@
click=
"goBalck"
>
黑名单
</span>
...
@@ -11,6 +12,12 @@
...
@@ -11,6 +12,12 @@
</el-col>
</el-col>
</el-row>
</el-row>
<div
class=
"member-main"
>
<div
class=
"member-main"
>
<region
v-show=
"tab == 0"
:circleId=
'circleId'
:roleType=
'roleType'
@
setOrgAndPeople=
"setOrgAndPeople"
></region>
<org
<org
v-show=
"tab == 1"
v-show=
"tab == 1"
:circleId=
'circleId'
:circleId=
'circleId'
...
@@ -26,6 +33,7 @@
...
@@ -26,6 +33,7 @@
@
setPleTotal=
"setPleTotal"
@
setPleTotal=
"setPleTotal"
ref=
'renyaun'
ref=
'renyaun'
></renyaun>
></renyaun>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
...
@@ -34,6 +42,7 @@
...
@@ -34,6 +42,7 @@
import
*
as
commonUtil
from
"@/utils/utils"
;
import
*
as
commonUtil
from
"@/utils/utils"
;
import
org
from
'@/components/yqrange/member-management/org'
import
org
from
'@/components/yqrange/member-management/org'
import
renyaun
from
'@/components/yqrange/member-management/renyuan'
import
renyaun
from
'@/components/yqrange/member-management/renyuan'
import
region
from
'@/components/yqrange/member-management/region'
import
{
getCircleRole
}
from
'@/utils/yqrange/rangeApi'
import
{
getCircleRole
}
from
'@/utils/yqrange/rangeApi'
export
default
{
export
default
{
props
:
{
props
:
{
...
@@ -51,20 +60,34 @@ export default {
...
@@ -51,20 +60,34 @@ export default {
},
},
data
()
{
data
()
{
return
{
return
{
tab
:
1
,
tab
:
0
,
org
btn
:
'primary'
,
area
btn
:
'primary'
,
plebtn
:
''
,
plebtn
:
''
,
orgbtn
:
''
,
orgTotal
:
0
,
orgTotal
:
0
,
pleTotal
:
0
,
pleTotal
:
0
,
role
:
0
role
:
0
,
isAraeEdit
:
false
,
//是否显示可访问本圈的地区
}
}
},
},
components
:
{
components
:
{
org
,
org
,
renyaun
renyaun
,
region
},
},
created
()
{
created
()
{
this
.
getRole
()
this
.
getRole
()
let
idType
=
localStorage
.
getItem
(
"storageIdType"
);
if
(
idType
==
1
){
//内部可以访问本圈的地区
this
.
isAraeEdit
=
true
this
.
tab
=
0
this
.
areabtn
=
'primary'
}
else
{
this
.
isAraeEdit
=
false
this
.
tab
=
1
this
.
orgbtn
=
'primary'
}
},
},
// 挂载到Dom完成时
// 挂载到Dom完成时
mounted
:
function
()
{
mounted
:
function
()
{
...
@@ -87,9 +110,15 @@ export default {
...
@@ -87,9 +110,15 @@ export default {
if
(
v
==
1
)
{
if
(
v
==
1
)
{
this
.
orgbtn
=
'primary'
this
.
orgbtn
=
'primary'
this
.
plebtn
=
''
this
.
plebtn
=
''
}
else
{
this
.
areabtn
=
''
}
else
if
(
v
==
2
)
{
this
.
orgbtn
=
''
this
.
orgbtn
=
''
this
.
plebtn
=
'primary'
this
.
plebtn
=
'primary'
this
.
areabtn
=
''
}
else
{
this
.
areabtn
=
'primary'
this
.
orgbtn
=
''
this
.
plebtn
=
''
}
}
},
},
setOrgTotal
(
n
)
{
setOrgTotal
(
n
)
{
...
@@ -98,6 +127,11 @@ export default {
...
@@ -98,6 +127,11 @@ export default {
setPleTotal
(
n
)
{
setPleTotal
(
n
)
{
this
.
pleTotal
=
n
this
.
pleTotal
=
n
},
},
//刷新机构和人员
setOrgAndPeople
(){
this
.
$refs
.
org
.
initRange
();
this
.
$refs
.
renyaun
.
initRange
();
},
goManger
()
{
goManger
()
{
this
.
$router
.
push
(
`/admin-manage?circleId=
${
this
.
circleId
}
&circleName=
${
this
.
circleName
}
`
)
this
.
$router
.
push
(
`/admin-manage?circleId=
${
this
.
circleId
}
&circleName=
${
this
.
circleName
}
`
)
},
},
...
...
src/components/yqrange/member-management/checkOrg.vue
浏览文件 @
3efab049
...
@@ -45,7 +45,7 @@
...
@@ -45,7 +45,7 @@
<el-button
size=
"small"
@
click=
"resetOrgOrPerson()"
:disabled=
"checked"
huang
>
取消搜索
</el-button>
<el-button
size=
"small"
@
click=
"resetOrgOrPerson()"
:disabled=
"checked"
huang
>
取消搜索
</el-button>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<
el-checkbox
v-if=
"showSelectAll"
v-model=
"checked"
@
change=
"handleCheckAllChange"
>
全部(
{{
totalOrganization
}}
)
</el-checkbox
>
<
!--
<el-checkbox
v-if=
"showSelectAll"
v-model=
"checked"
@
change=
"handleCheckAllChange"
>
全部(
{{
totalOrganization
}}
)
</el-checkbox>
--
>
<el-table
class=
"rim"
ref=
"multipleOrganization"
:data=
"tableOrganization"
tooltip-effect=
"dark"
@
select-all=
"selectAllOrganization"
@
select=
"selectOrganization"
>
<el-table
class=
"rim"
ref=
"multipleOrganization"
:data=
"tableOrganization"
tooltip-effect=
"dark"
@
select-all=
"selectAllOrganization"
@
select=
"selectOrganization"
>
<el-table-column
type=
"selection"
:selectable=
"selectableTableList"
></el-table-column>
<el-table-column
type=
"selection"
:selectable=
"selectableTableList"
></el-table-column>
<el-table-column
prop=
"orgName"
label=
"医院名称"
align=
"center"
></el-table-column>
<el-table-column
prop=
"orgName"
label=
"医院名称"
align=
"center"
></el-table-column>
...
...
src/components/yqrange/member-management/org.vue
浏览文件 @
3efab049
...
@@ -47,13 +47,14 @@
...
@@ -47,13 +47,14 @@
<el-table-column
prop=
"cityName"
label=
"所属城市"
align=
"center"
></el-table-column>
<el-table-column
prop=
"cityName"
label=
"所属城市"
align=
"center"
></el-table-column>
<el-table-column
prop=
"countyName"
label=
"所属区县"
align=
"center"
></el-table-column>
<el-table-column
prop=
"countyName"
label=
"所属区县"
align=
"center"
></el-table-column>
<el-table-column
prop=
"townName"
label=
"所属街道"
align=
"center"
></el-table-column>
<el-table-column
prop=
"townName"
label=
"所属街道"
align=
"center"
></el-table-column>
<el-table-column
prop=
"sourceName"
label=
"来源"
align=
"center"
></el-table-column>
<el-table-column
<el-table-column
fixed=
"right"
fixed=
"right"
label=
"操作"
label=
"操作"
align=
"center"
align=
"center"
width=
"140"
>
width=
"140"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
<el-button
@
click=
"detel(scope.row)"
type=
"text"
size=
"small"
style=
"color:red"
>
删除
</el-button>
<el-button
@
click=
"detel(scope.row)"
type=
"text"
size=
"small"
style=
"color:red"
v-if=
"scope.row.source != 1"
>
删除
</el-button>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<div
slot=
"empty"
>
<div
slot=
"empty"
>
...
...
src/components/yqrange/member-management/region.vue
0 → 100644
浏览文件 @
3efab049
<
template
>
<div
class=
"organization"
>
<el-row
:gutter=
"20"
>
<el-col
class=
"rim"
:span=
"12"
>
<el-tree
default-expand-all
:data=
"treeData"
show-checkbox
node-key=
"regionId"
ref=
"tree"
highlight-current
:props=
"defaultProps"
@
check=
"onChecked"
>
<span
class=
"custom-tree-node"
slot-scope=
"
{ node, data }">
<span>
{{
node
.
label
}}
</span>
<span>
<el-button
v-if=
"node.level
<
5
"
type=
"text"
icon=
"el-icon-caret-bottom"
size=
"small"
@
click=
"() => append(data,node)"
></el-button>
</span>
</span>
</el-tree>
</el-col>
</el-row>
<div
style=
"margin-top: 60px;margin-left: 250px;"
>
<el-button
type=
"primary"
size=
"small"
@
click=
"save"
>
保存
</el-button>
</div>
</div>
</
template
>
<
script
>
import
{
openLoading
,
closeLoading
}
from
"@/utils/utils"
;
import
{
doUpload
,
getFilePath
}
from
"@/utils/qiniu-util"
;
import
*
as
operationData
from
"@/utils/operation"
;
import
{
moRelSearch
,
morDeleteOrg
}
from
'@/utils/yqrange/memberApi'
;
import
{
getOrgProvincesReq
}
from
'@/utils/yqrange/rangeApi'
;
import
{
getCircleTree
,
postCircleTree
}
from
'@/utils/yqrange/yqrangeApi'
;
let
vm
=
null
;
export
default
{
props
:
{
circleId
:
{
type
:
Number
|
String
,
default
:
1
},
roleType
:
{
type
:
Number
|
String
,
default
:
1
},
},
data
()
{
return
{
allSelectedKeys
:
[],
updatedTree
:
false
,
organizationRegion
:
[],
defaultProps
:
{
children
:
"children"
,
label
:
"name"
,
isLeaf
:
"isLeaf"
},
treeData
:
[]
}
},
created
()
{
vm
=
this
;
this
.
getAdministrative
();
},
mounted
()
{
},
methods
:
{
//通过key设置tree
// setCheckedKeys(tagsRegion) {
// let treeKeyList = [];
// for (let index = 0; index
<
tagsRegion
.
length
;
index
++
)
{
// treeKeyList[index] = tagsRegion].key;
// }
// this.$refs.tree.setCheckedKeys(treeKeyList);
// },
//初始化范围树
setTreeData
(
administrative
)
{
let
treeIdList
=
[];
for
(
let
i
=
0
;
i
<
administrative
.
length
;
i
++
)
{
treeIdList
.
push
(
administrative
[
i
]);
}
console
.
log
(
treeIdList
);
this
.
$refs
.
tree
.
setCheckedKeys
(
treeIdList
);
},
//查询行政范围(树)
getAdministrative
()
{
let
req
=
{
circleId
:
this
.
circleId
//826,874,832
};
openLoading
(
vm
);
getCircleTree
(
req
).
then
(
res
=>
{
closeLoading
(
vm
);
if
(
res
.
code
==
"000000"
)
{
let
administrativeAll
=
res
.
data
.
regionTreeDto
;
//获取已选的区域
let
administrative
=
[];
res
.
data
.
provinceIds
.
forEach
(
element
=>
{
administrative
.
push
(
element
);
});
res
.
data
.
cityIds
.
forEach
(
element
=>
{
administrative
.
push
(
element
);
});
res
.
data
.
countryIds
.
forEach
(
element
=>
{
administrative
.
push
(
element
);
});
res
.
data
.
townIds
.
forEach
(
element
=>
{
administrative
.
push
(
element
);
});
// let administrative = res.data.administrative;
this
.
treeData
=
[];
this
.
treeData
[
0
]
=
administrativeAll
;
console
.
log
(
"administrative"
,
administrative
);
this
.
setTreeData
(
administrative
);
}
});
},
onChecked
(
node
,
data
)
{
console
.
log
(
"11node"
,
node
);
console
.
log
(
"11data"
,
data
);
vm
.
checkUpdate
(
node
,
data
);
//重构归并树
let
checkedTree
=
operationData
.
getSimpleCheckedNodes
(
this
.
$refs
.
tree
.
store
);
console
.
log
(
"checkedtree"
,
checkedTree
);
let
halfCheckedTree
=
this
.
$refs
.
tree
.
getHalfCheckedKeys
();
console
.
log
(
"halfcheckedtree"
,
halfCheckedTree
);
let
allSelectedKeys
=
operationData
.
setSelectedKeys
(
checkedTree
,
halfCheckedTree
);
//重构内容
this
.
allSelectedKeys
=
allSelectedKeys
;
//处理原始数据
//1. 设置选中数据
let
selectedData
=
data
.
checkedKeys
;
let
halfSelectedData
=
data
.
halfCheckedKeys
;
let
selectedAll
=
{};
selectedData
.
forEach
(
element
=>
{
selectedAll
[
element
]
=
1
;
});
//2.设置半选数据
halfSelectedData
.
forEach
(
element
=>
{
selectedAll
[
element
]
=
2
;
});
console
.
log
(
"seledAll"
,
selectedAll
);
// selectedAll.forEach(element => {
//特殊处理全国选择状态
let
allSelectRegionId
=
this
.
treeData
[
0
].
regionId
;
let
isExit
=
selectedAll
[
allSelectRegionId
];
if
(
isExit
){
this
.
treeData
[
0
].
checkStatus
=
isExit
}
else
{
this
.
treeData
[
0
].
checkStatus
=
0
;
}
this
.
dealOrgData
(
this
.
treeData
[
0
].
children
,
selectedAll
);
},
// type 1:选中 2:半选
dealOrgData
(
orgData
,
selectedAll
){
orgData
.
forEach
(
element
=>
{
let
type
=
selectedAll
[
element
.
regionId
];
if
(
type
){
//如果是在选中列表(包含半选)里面
console
.
log
(
"elementregionid"
,
type
);
element
.
checkStatus
=
type
;
if
(
element
.
children
){
this
.
dealOrgData
(
element
.
children
,
selectedAll
);
}
}
else
{
element
.
checkStatus
=
0
;
if
(
element
.
children
){
this
.
dealOrgData
(
element
.
children
,
selectedAll
);
}
}
});
},
checkUpdate
(
node
,
data
)
{
let
flag
=
-
1
;
flag
=
data
.
checkedKeys
.
indexOf
(
node
.
regionId
);
console
.
log
(
"flag"
,
flag
);
if
(
flag
>=
0
){
//选中
this
.
$refs
.
tree
.
setChecked
(
data
,
false
)
}
else
{
//取消
}
// this.dealTreeData(flag,node,this.treeData[0].children,false);
// if (vm.status4Flag == 1 && flag >= 0) {
// console.log(node, data, flag, vm.status4Flag);
// vm.nowCheck = node;
// vm.warnType = 0;
// vm.dialogWarn = true;
// // this.$refs.tree.setChecked(data,false)
// }
},
//处理原始数据 isHaveFlag 是否直接赋值
dealTreeData
(
flag
,
node
,
orgTreeData
,
isHaveFlag
){
orgTreeData
.
forEach
(
element
=>
{
if
(
isHaveFlag
){
element
.
checkStatus
=
flag
>
0
?
1
:
0
}
else
{
if
(
element
.
regionId
==
node
.
regionId
){
element
.
checkStatus
=
flag
>
0
?
1
:
0
}
}
if
(
element
.
children
){
//处理原始数据
this
.
dealTreeData
(
flag
,
node
,
element
.
children
,
true
);
}
});
},
//1.如果选中父,子节点存在,全部选中
//子节点选中
appendCheck
(
administrative
,
checked
)
{
let
checkList
=
[];
checkList
=
this
.
$refs
.
tree
.
getCheckedKeys
();
if
(
checked
)
{
for
(
let
i
=
0
;
i
<
administrative
.
length
;
i
++
)
{
checkList
.
push
(
administrative
[
i
].
regionId
);
}
}
this
.
$nextTick
(
function
()
{
this
.
$refs
.
tree
.
setCheckedKeys
(
checkList
);
});
},
//添加子节点
append
(
data
,
node
)
{
console
.
log
(
"data:"
,
data
);
console
.
log
(
"node:"
,
node
);
if
(
node
.
level
-
1
==
1
)
{
let
req
=
{
provinceId
:
node
.
data
.
regionId
};
vm
.
GET
(
"basic-data/position/cities"
,
req
).
then
(
res
=>
{
vm
.
setMoreOption
(
data
,
res
.
data
.
cityList
,
"cities"
,
node
);
});
}
else
if
(
node
.
level
-
1
==
2
)
{
let
req
=
{
cityId
:
node
.
data
.
regionId
};
vm
.
GET
(
"basic-data/position/counties"
,
req
).
then
(
res
=>
{
vm
.
setMoreOption
(
data
,
res
.
data
.
countyList
,
"counties"
,
node
);
//添加数据
});
}
else
if
(
node
.
level
-
1
==
3
)
{
let
req
=
{
countyId
:
node
.
data
.
regionId
};
vm
.
GET
(
"basic-data/position/towns"
,
req
).
then
(
res
=>
{
vm
.
setMoreOption
(
data
,
res
.
data
.
townList
,
"towns"
,
node
);
});
}
},
//设置数据
// data 父节点,newdata新节点
setMoreOption
(
data
,
newdata
,
type
,
node
)
{
if
(
data
.
children
!=
null
)
return
;
let
statusValue
=
0
;
if
(
node
.
checked
==
true
)
{
statusValue
=
1
;
}
let
option
=
[];
for
(
let
i
=
0
;
i
<
newdata
.
length
;
i
++
)
{
let
obj
=
{};
if
(
type
==
"cities"
)
{
obj
.
name
=
newdata
[
i
].
cityName
;
obj
.
regionId
=
newdata
[
i
].
cityId
;
}
else
if
(
type
==
"counties"
)
{
obj
.
name
=
newdata
[
i
].
countyName
;
obj
.
regionId
=
newdata
[
i
].
countyId
;
// obj.leaf = true;
}
else
if
(
type
==
"towns"
)
{
obj
.
name
=
newdata
[
i
].
townName
;
obj
.
regionId
=
newdata
[
i
].
townId
;
// obj.leaf = true;
}
obj
.
checkStatus
=
statusValue
;
// obj.disabled = false;
obj
.
children
=
null
;
obj
.
id
=
null
option
.
push
(
obj
);
}
console
.
log
(
"childrenlist:"
,
option
);
data
.
children
=
option
;
vm
.
appendCheck
(
option
,
node
.
checked
);
},
//保存
save
(){
console
.
log
(
"treedata"
,
this
.
treeData
[
0
]);
let
res
=
this
.
treeData
[
0
];
openLoading
(
vm
);
postCircleTree
(
res
).
then
(
res
=>
{
closeLoading
(
vm
);
if
(
res
.
code
==
"000000"
)
{
this
.
$message
(
"保存成功"
);
this
.
$emit
(
'setOrgAndPeople'
);
}
else
{
this
.
$message
(
res
.
message
);
}
}).
catch
(
err
=>
{
this
.
$message
.
error
(
'请求失败'
);
});
},
}
}
</
script
>
<
style
>
/*.organization .el-dialog {*/
/*max-height: 90%;*/
/*overflow: scroll;*/
/*}*/
</
style
>
<
style
lang=
"scss"
>
.rim
{
.el-icon-caret-right
:before
{
content
:
" "
!
important
;
}
}
</
style
>
<
style
lang=
"scss"
scoped
>
.organization
{
.add-organization
{
margin-left
:
36px
;
line-height
:
20px
;
width
:
120px
;
cursor
:
pointer
;
padding-top
:
10px
;
i
{
font-size
:
18px
;
margin-right
:
2px
;
}
.rim
{
border
:
1px
solid
#dddddd
;
}
}
}
</
style
>
src/components/yqrange/member-management/renyuan.vue
浏览文件 @
3efab049
...
@@ -257,7 +257,7 @@ export default {
...
@@ -257,7 +257,7 @@ export default {
value
:
0
value
:
0
},
},
{
{
label
:
'可访问本圈的机构'
,
label
:
'可访问本圈的
地区/
机构'
,
value
:
1
value
:
1
},
},
{
{
...
...
src/utils/fetch.js
浏览文件 @
3efab049
...
@@ -56,6 +56,7 @@ service.interceptors.request.use(config => {
...
@@ -56,6 +56,7 @@ service.interceptors.request.use(config => {
// console.log('环境变量>>>> ', process.env.BUILD_ENV);
// console.log('环境变量>>>> ', process.env.BUILD_ENV);
// config.headers['token'] = '00AB2FF7626D4F5FB627399EDF23F5DC';
// config.headers['token'] = '00AB2FF7626D4F5FB627399EDF23F5DC';
config
.
headers
[
'token'
]
=
localStorage
.
getItem
(
'storageToken'
)
config
.
headers
[
'token'
]
=
localStorage
.
getItem
(
'storageToken'
)
}
else
{
}
else
{
config
.
headers
[
'token'
]
=
localStorage
.
getItem
(
'storageToken'
)
config
.
headers
[
'token'
]
=
localStorage
.
getItem
(
'storageToken'
)
}
}
...
...
src/utils/yqrange/yqrangeApi.js
浏览文件 @
3efab049
...
@@ -276,3 +276,21 @@ export const getExamAwardList = (params) => {
...
@@ -276,3 +276,21 @@ export const getExamAwardList = (params) => {
})
})
};
};
export
const
getCircleTree
=
(
params
)
=>
{
return
fetch
({
headers
,
url
:
getBaseUrl
(
`circle/region/tree/
${
params
.
circleId
}
`
),
method
:
'get'
,
data
:
params
,
description
:
'根据圈子id获取树结构'
,
})
};
export
const
postCircleTree
=
(
params
)
=>
{
return
fetch
({
headers
,
url
:
getBaseUrl
(
'circle/region/tree'
),
method
:
'post'
,
data
:
params
,
description
:
'保存区域'
,
})
};
写
预览
Markdown
格式
0%
请重试
or
附加一个文件
附加文件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录