Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
d21318b9
D
Docs
项目概览
OpenHarmony
/
Docs
大约 2 年 前同步成功
通知
161
Star
293
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
d21318b9
编写于
1月 19, 2023
作者:
O
openharmony_ci
提交者:
Gitee
1月 19, 2023
浏览文件
操作
浏览文件
下载
差异文件
!13702 13379挑单到monthly1018
Merge pull request !13702 from 田雨/monthly_20221018
上级
cc117498
53fdb348
变更
13
显示空白变更内容
内联
并排
Showing
13 changed file
with
138 addition
and
154 deletion
+138
-154
zh-cn/application-dev/quick-start/arkts-rendering-control.md
zh-cn/application-dev/quick-start/arkts-rendering-control.md
+1
-1
zh-cn/application-dev/reference/apis/js-apis-curve.md
zh-cn/application-dev/reference/apis/js-apis-curve.md
+2
-2
zh-cn/application-dev/reference/apis/js-apis-router.md
zh-cn/application-dev/reference/apis/js-apis-router.md
+105
-137
zh-cn/application-dev/reference/arkui-ts/figures/animateTo.gif
.../application-dev/reference/arkui-ts/figures/animateTo.gif
+0
-0
zh-cn/application-dev/reference/arkui-ts/figures/animationComponent1.png
...on-dev/reference/arkui-ts/figures/animationComponent1.png
+0
-0
zh-cn/application-dev/reference/arkui-ts/figures/animationComponent2.png
...on-dev/reference/arkui-ts/figures/animationComponent2.png
+0
-0
zh-cn/application-dev/reference/arkui-ts/figures/animationComponent3.png
...on-dev/reference/arkui-ts/figures/animationComponent3.png
+0
-0
zh-cn/application-dev/reference/arkui-ts/figures/animationComponent4.png
...on-dev/reference/arkui-ts/figures/animationComponent4.png
+0
-0
zh-cn/application-dev/reference/arkui-ts/ts-container-listitem.md
...plication-dev/reference/arkui-ts/ts-container-listitem.md
+1
-1
zh-cn/application-dev/reference/arkui-ts/ts-container-scroll.md
...application-dev/reference/arkui-ts/ts-container-scroll.md
+1
-1
zh-cn/application-dev/reference/arkui-ts/ts-transition-animation-component.md
...v/reference/arkui-ts/ts-transition-animation-component.md
+17
-1
zh-cn/application-dev/ui/ui-ts-building-data-model.md
zh-cn/application-dev/ui/ui-ts-building-data-model.md
+1
-1
zh-cn/application-dev/ui/ui-ts-layout-grid-container-new.md
zh-cn/application-dev/ui/ui-ts-layout-grid-container-new.md
+10
-10
未找到文件。
zh-cn/application-dev/quick-start/arkts-rendering-control.md
浏览文件 @
d21318b9
...
@@ -267,7 +267,7 @@ struct MyComponent {
...
@@ -267,7 +267,7 @@ struct MyComponent {
>
>
> - 生成的子组件必须是允许包含在LazyForEach父容器组件中的子组件。
> - 生成的子组件必须是允许包含在LazyForEach父容器组件中的子组件。
>
>
> - 允许LazyForEach包含在if/else条件渲染语句中
,但不允许LazyForEach中出现if/else条件渲染语句
。
> - 允许LazyForEach包含在if/else条件渲染语句中。
>
>
> - 为了高性能渲染,通过DataChangeListener对象的onDataChange方法来更新UI时,仅当itemGenerator中创建的子组件内使用了状态变量时,才会触发组件刷新。
> - 为了高性能渲染,通过DataChangeListener对象的onDataChange方法来更新UI时,仅当itemGenerator中创建的子组件内使用了状态变量时,才会触发组件刷新。
>
>
...
...
zh-cn/application-dev/reference/apis/js-apis-curve.md
浏览文件 @
d21318b9
...
@@ -58,7 +58,7 @@ stepsCurve(count: number, end: boolean):ICurve
...
@@ -58,7 +58,7 @@ stepsCurve(count: number, end: boolean):ICurve
| 参数名 | 类型 | 必填 | 说明 |
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------- | ----| ------------------------------------------------------------ |
| ------ | ------- | ----| ------------------------------------------------------------ |
| count | number | 是 | 阶梯的数量,需要为正整数。 |
| count | number | 是 | 阶梯的数量,需要为正整数。 |
| end | boolean | 是 | 在每个间隔的起点或是终点发生阶跃变化。
<br>
-true:在终点发生阶跃变化。
<br>
-false
:
在起点发生阶跃变化。 |
| end | boolean | 是 | 在每个间隔的起点或是终点发生阶跃变化。
<br>
-true:在终点发生阶跃变化。
<br>
-false
:
在起点发生阶跃变化。 |
**返回值:**
**返回值:**
...
@@ -265,7 +265,7 @@ steps(count: number, end: boolean): string
...
@@ -265,7 +265,7 @@ steps(count: number, end: boolean): string
| 参数名 | 类型 | 必填 | 说明 |
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------- | ----| ------------------------------------------------------------ |
| ------ | ------- | ----| ------------------------------------------------------------ |
| count | number | 是 | 阶梯的数量,需要为正整数。 |
| count | number | 是 | 阶梯的数量,需要为正整数。 |
| end | boolean | 是 | 在每个间隔的起点或是终点发生阶跃变化。
<br>
-true:在终点发生阶跃变化。
<br>
-false
:
在起点发生阶跃变化。 |
| end | boolean | 是 | 在每个间隔的起点或是终点发生阶跃变化。
<br>
-true:在终点发生阶跃变化。
<br>
-false
:
在起点发生阶跃变化。 |
## Curves.cubicBezier<sup>(deprecated)</sup>
## Curves.cubicBezier<sup>(deprecated)</sup>
...
...
zh-cn/application-dev/reference/apis/js-apis-router.md
浏览文件 @
d21318b9
...
@@ -47,8 +47,7 @@ pushUrl(options: RouterOptions): Promise<void>
...
@@ -47,8 +47,7 @@ pushUrl(options: RouterOptions): Promise<void>
**示例:**
**示例:**
```
js
```
js
try
{
router
.
pushUrl
({
router
.
pushUrl
({
url
:
'
pages/routerpage2
'
,
url
:
'
pages/routerpage2
'
,
params
:
{
params
:
{
data1
:
'
message
'
,
data1
:
'
message
'
,
...
@@ -56,16 +55,13 @@ try {
...
@@ -56,16 +55,13 @@ try {
data3
:
[
123
,
456
,
789
]
data3
:
[
123
,
456
,
789
]
}
}
}
}
})
})
.
then
(()
=>
{
.
then
(()
=>
{
// success
// success
})
})
.
catch
(
err
=>
{
.
catch
(
err
=>
{
console
.
error
(
`pushUrl failed, code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
console
.
error
(
`pushUrl failed, code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
})
})
}
catch
(
error
)
{
console
.
error
(
`pushUrl args error code is
${
error
.
code
}
, message is
${
error
.
message
}
`
);
};
```
```
## router.pushUrl<sup>9+</sup>
## router.pushUrl<sup>9+</sup>
...
@@ -96,8 +92,7 @@ pushUrl(options: RouterOptions, callback: AsyncCallback<void>): void
...
@@ -96,8 +92,7 @@ pushUrl(options: RouterOptions, callback: AsyncCallback<void>): void
**示例:**
**示例:**
```
js
```
js
try
{
router
.
pushUrl
({
router
.
pushUrl
({
url
:
'
pages/routerpage2
'
,
url
:
'
pages/routerpage2
'
,
params
:
{
params
:
{
data1
:
'
message
'
,
data1
:
'
message
'
,
...
@@ -105,16 +100,13 @@ try {
...
@@ -105,16 +100,13 @@ try {
data3
:
[
123
,
456
,
789
]
data3
:
[
123
,
456
,
789
]
}
}
}
}
},
(
err
)
=>
{
},
(
err
)
=>
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
`pushUrl failed, code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
console
.
error
(
`pushUrl failed, code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
return
;
return
;
}
}
console
.
info
(
'
pushUrl success
'
);
console
.
info
(
'
pushUrl success
'
);
});
});
}
catch
(
error
)
{
console
.
error
(
`pushUrl args error code is
${
error
.
code
}
, message is
${
error
.
message
}
`
);
};
```
```
## router.pushUrl<sup>9+</sup>
## router.pushUrl<sup>9+</sup>
...
@@ -135,7 +127,7 @@ pushUrl(options: RouterOptions, mode: RouterMode): Promise<void>
...
@@ -135,7 +127,7 @@ pushUrl(options: RouterOptions, mode: RouterMode): Promise<void>
| 类型 | 说明 |
| 类型 | 说明 |
| ------------------- | --------- |
| ------------------- | --------- |
| Promise
<
void
>
| 异常返回结果 |
| Promise
<
void
>
| 异常返回结果
。
|
**错误码:**
**错误码:**
...
@@ -150,8 +142,7 @@ pushUrl(options: RouterOptions, mode: RouterMode): Promise<void>
...
@@ -150,8 +142,7 @@ pushUrl(options: RouterOptions, mode: RouterMode): Promise<void>
**示例:**
**示例:**
```
js
```
js
try
{
router
.
pushUrl
({
router
.
pushUrl
({
url
:
'
pages/routerpage2
'
,
url
:
'
pages/routerpage2
'
,
params
:
{
params
:
{
data1
:
'
message
'
,
data1
:
'
message
'
,
...
@@ -159,16 +150,13 @@ try {
...
@@ -159,16 +150,13 @@ try {
data3
:
[
123
,
456
,
789
]
data3
:
[
123
,
456
,
789
]
}
}
}
}
},
router
.
RouterMode
.
Standard
)
},
router
.
RouterMode
.
Standard
)
.
then
(()
=>
{
.
then
(()
=>
{
// success
// success
})
})
.
catch
(
err
=>
{
.
catch
(
err
=>
{
console
.
error
(
`pushUrl failed, code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
console
.
error
(
`pushUrl failed, code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
})
})
}
catch
(
error
)
{
console
.
error
(
`pushUrl args error code is
${
error
.
code
}
, message is
${
error
.
message
}
`
);
};
```
```
## router.pushUrl<sup>9+</sup>
## router.pushUrl<sup>9+</sup>
...
@@ -200,8 +188,7 @@ pushUrl(options: RouterOptions, mode: RouterMode, callback: AsyncCallback<voi
...
@@ -200,8 +188,7 @@ pushUrl(options: RouterOptions, mode: RouterMode, callback: AsyncCallback<voi
**示例:**
**示例:**
```
js
```
js
try
{
router
.
pushUrl
({
router
.
pushUrl
({
url
:
'
pages/routerpage2
'
,
url
:
'
pages/routerpage2
'
,
params
:
{
params
:
{
data1
:
'
message
'
,
data1
:
'
message
'
,
...
@@ -209,16 +196,13 @@ try {
...
@@ -209,16 +196,13 @@ try {
data3
:
[
123
,
456
,
789
]
data3
:
[
123
,
456
,
789
]
}
}
}
}
},
router
.
RouterMode
.
Standard
,
(
err
)
=>
{
},
router
.
RouterMode
.
Standard
,
(
err
)
=>
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
`pushUrl failed, code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
console
.
error
(
`pushUrl failed, code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
return
;
return
;
}
}
console
.
info
(
'
pushUrl success
'
);
console
.
info
(
'
pushUrl success
'
);
});
});
}
catch
(
error
)
{
console
.
error
(
`pushUrl args error code is
${
error
.
code
}
, message is
${
error
.
message
}
`
);
};
```
```
## router.replaceUrl<sup>9+</sup>
## router.replaceUrl<sup>9+</sup>
...
@@ -253,22 +237,18 @@ replaceUrl(options: RouterOptions): Promise<void>
...
@@ -253,22 +237,18 @@ replaceUrl(options: RouterOptions): Promise<void>
**示例:**
**示例:**
```
js
```
js
try
{
router
.
replaceUrl
({
router
.
replaceUrl
({
url
:
'
pages/detail
'
,
url
:
'
pages/detail
'
,
params
:
{
params
:
{
data1
:
'
message
'
data1
:
'
message
'
}
}
})
})
.
then
(()
=>
{
.
then
(()
=>
{
// success
// success
})
})
.
catch
(
err
=>
{
.
catch
(
err
=>
{
console
.
error
(
`replaceUrl failed, code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
console
.
error
(
`replaceUrl failed, code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
})
})
}
catch
(
error
)
{
console
.
error
(
`replaceUrl args error code is
${
error
.
code
}
, message is
${
error
.
message
}
`
);
};
```
```
## router.replaceUrl<sup>9+</sup>
## router.replaceUrl<sup>9+</sup>
...
@@ -298,22 +278,18 @@ replaceUrl(options: RouterOptions, callback: AsyncCallback<void>): void
...
@@ -298,22 +278,18 @@ replaceUrl(options: RouterOptions, callback: AsyncCallback<void>): void
**示例:**
**示例:**
```
js
```
js
try
{
router
.
replaceUrl
({
router
.
replaceUrl
({
url
:
'
pages/detail
'
,
url
:
'
pages/detail
'
,
params
:
{
params
:
{
data1
:
'
message
'
data1
:
'
message
'
}
}
},
(
err
)
=>
{
},
(
err
)
=>
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
`replaceUrl failed, code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
console
.
error
(
`replaceUrl failed, code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
return
;
return
;
}
}
console
.
info
(
'
replaceUrl success
'
);
console
.
info
(
'
replaceUrl success
'
);
});
});
}
catch
(
error
)
{
console
.
error
(
`replaceUrl args error code is
${
error
.
code
}
, message is
${
error
.
message
}
`
);
};
```
```
## router.replaceUrl<sup>9+</sup>
## router.replaceUrl<sup>9+</sup>
...
@@ -350,22 +326,18 @@ replaceUrl(options: RouterOptions, mode: RouterMode): Promise<void>
...
@@ -350,22 +326,18 @@ replaceUrl(options: RouterOptions, mode: RouterMode): Promise<void>
**示例:**
**示例:**
```
js
```
js
try
{
router
.
replaceUrl
({
router
.
replaceUrl
({
url
:
'
pages/detail
'
,
url
:
'
pages/detail
'
,
params
:
{
params
:
{
data1
:
'
message
'
data1
:
'
message
'
}
}
},
router
.
RouterMode
.
Standard
)
},
router
.
RouterMode
.
Standard
)
.
then
(()
=>
{
.
then
(()
=>
{
// success
// success
})
})
.
catch
(
err
=>
{
.
catch
(
err
=>
{
console
.
error
(
`replaceUrl failed, code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
console
.
error
(
`replaceUrl failed, code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
})
})
}
catch
(
error
)
{
console
.
error
(
`replaceUrl args error code is
${
error
.
code
}
, message is
${
error
.
message
}
`
);
};
```
```
## router.replaceUrl<sup>9+</sup>
## router.replaceUrl<sup>9+</sup>
...
@@ -396,22 +368,18 @@ replaceUrl(options: RouterOptions, mode: RouterMode, callback: AsyncCallback<
...
@@ -396,22 +368,18 @@ replaceUrl(options: RouterOptions, mode: RouterMode, callback: AsyncCallback<
**示例:**
**示例:**
```
js
```
js
try
{
router
.
replaceUrl
({
router
.
replaceUrl
({
url
:
'
pages/detail
'
,
url
:
'
pages/detail
'
,
params
:
{
params
:
{
data1
:
'
message
'
data1
:
'
message
'
}
}
},
router
.
RouterMode
.
Standard
,
(
err
)
=>
{
},
router
.
RouterMode
.
Standard
,
(
err
)
=>
{
if
(
err
)
{
if
(
err
)
{
console
.
error
(
`replaceUrl failed, code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
console
.
error
(
`replaceUrl failed, code is
${
err
.
code
}
, message is
${
err
.
message
}
`
);
return
;
return
;
}
}
console
.
info
(
'
replaceUrl success
'
);
console
.
info
(
'
replaceUrl success
'
);
});
});
}
catch
(
error
)
{
console
.
error
(
`replaceUrl args error code is
${
error
.
code
}
, message is
${
error
.
message
}
`
);
};
```
```
## router.back
## router.back
...
@@ -590,7 +558,7 @@ router.getParams();
...
@@ -590,7 +558,7 @@ router.getParams();
| 名称 | 类型 | 必填 | 说明 |
| 名称 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------------------------------------------------------------ |
| ------ | ------ | ---- | ------------------------------------------------------------ |
| url | string | 是 | 表示目标页面的url,可以用以下两种格式:
<br/>
-
页面绝对路径,由配置文件中pages列表提供,例如:
<br/>
-
pages/index/index
<br/>
-
pages/detail/detail
<br/>
-
特殊值,如果url的值是"/",则跳转到首页。 |
| url | string | 是 | 表示目标页面的url,可以用以下两种格式:
<br/>
-
页面绝对路径,由配置文件中pages列表提供,例如:
<br/>
-
pages/index/index
<br/>
-
pages/detail/detail
<br/>
-
特殊值,如果url的值是"/",则跳转到首页。 |
| params |
O
bject | 否 | 表示路由跳转时要同时传递到目标页面的数据。跳转到目标页面后,使用router.getParams()获取传递的参数,此外,在类web范式中,参数也可以在页面中直接使用,如this.keyValue(keyValue为跳转时params参数中的key值),如果目标页面中已有该字段,则其值会被传入的字段值覆盖。 |
| params |
o
bject | 否 | 表示路由跳转时要同时传递到目标页面的数据。跳转到目标页面后,使用router.getParams()获取传递的参数,此外,在类web范式中,参数也可以在页面中直接使用,如this.keyValue(keyValue为跳转时params参数中的key值),如果目标页面中已有该字段,则其值会被传入的字段值覆盖。 |
> **说明:**
> **说明:**
...
@@ -636,7 +604,7 @@ export default {
...
@@ -636,7 +604,7 @@ export default {
### 基于TS扩展的声明式开发范式
### 基于TS扩展的声明式开发范式
```
ts
```
ts
// 通过router.push跳转至目标页携带params参数
// 通过router.push
Url
跳转至目标页携带params参数
import
router
from
'
@ohos.router
'
import
router
from
'
@ohos.router
'
@
Entry
@
Entry
...
...
zh-cn/application-dev/reference/arkui-ts/figures/animateTo.gif
已删除
100644 → 0
浏览文件 @
cc117498
1.4 MB
zh-cn/application-dev/reference/arkui-ts/figures/animationComponent1.png
0 → 100644
浏览文件 @
d21318b9
86.7 KB
zh-cn/application-dev/reference/arkui-ts/figures/animationComponent2.png
0 → 100644
浏览文件 @
d21318b9
2.0 KB
zh-cn/application-dev/reference/arkui-ts/figures/animationComponent3.png
0 → 100644
浏览文件 @
d21318b9
94.8 KB
zh-cn/application-dev/reference/arkui-ts/figures/animationComponent4.png
0 → 100644
浏览文件 @
d21318b9
62.2 KB
zh-cn/application-dev/reference/arkui-ts/ts-container-listitem.md
浏览文件 @
d21318b9
# ListItem
# ListItem
用来展示列表具体item,
宽度默认充满List组件,
必须配合List来使用。
用来展示列表具体item,必须配合List来使用。
> **说明:**
> **说明:**
>
>
...
...
zh-cn/application-dev/reference/arkui-ts/ts-container-scroll.md
浏览文件 @
d21318b9
...
@@ -131,7 +131,7 @@ scrollToIndex(value: number): void
...
@@ -131,7 +131,7 @@ scrollToIndex(value: number): void
> **说明:**
> **说明:**
>
>
> 仅支持
list
组件。
> 仅支持
Grid、list、WaterFlow
组件。
**参数:**
**参数:**
...
...
zh-cn/application-dev/reference/arkui-ts/ts-transition-animation-component.md
浏览文件 @
d21318b9
...
@@ -60,4 +60,20 @@ struct TransitionExample {
...
@@ -60,4 +60,20 @@ struct TransitionExample {
}
}
```
```

示意图:
\ No newline at end of file
图片完全显示时:

图片消失时配置顺时针旋转180°的过渡效果:

图片完全消失时:

图片显示时配置横向放大一倍的过渡效果:

\ No newline at end of file
zh-cn/application-dev/ui/ui-ts-building-data-model.md
浏览文件 @
d21318b9
...
@@ -59,7 +59,7 @@
...
@@ -59,7 +59,7 @@
]
]
```
```
实际开发中,开发者可以自定义更多的数据资源,当食物资源很多时,建议使用
数据懒加载LazyForEach
。
实际开发中,开发者可以自定义更多的数据资源,当食物资源很多时,建议使用
[
数据懒加载LazyForEach
](
../quick-start/arkts-rendering-control.md#数据懒加载
)
。
5.
创建initializeOnStartUp方法来初始化FoodData的数组。在FoodDataModels.ets中使用了定义在FoodData.ets的FoodData和Category,所以要将FoodData.ets的FoodData类export,在FoodDataModels.ets内import FoodData和Category。
5.
创建initializeOnStartUp方法来初始化FoodData的数组。在FoodDataModels.ets中使用了定义在FoodData.ets的FoodData和Category,所以要将FoodData.ets的FoodData类export,在FoodDataModels.ets内import FoodData和Category。
```
ts
```
ts
...
...
zh-cn/application-dev/ui/ui-ts-layout-grid-container-new.md
浏览文件 @
d21318b9
...
@@ -88,7 +88,7 @@ GridRow({
...
@@ -88,7 +88,7 @@ GridRow({
}.
backgroundColor
(
color
)
}.
backgroundColor
(
color
)
})
})
}
}
```
```


...
@@ -333,8 +333,8 @@ GridCol组件作为GridRow组件的子组件,通过给GridCol传参或者设
...
@@ -333,8 +333,8 @@ GridCol组件作为GridRow组件的子组件,通过给GridCol传参或者设
### order
### order
栅格子组件的序号,决定子组件排列次序。当子组件不设置order或者设置相同的order, 子组件按照代码顺序展示。当子组件设置不同的order时,order较
大的组件在前,较小
的在后。
栅格子组件的序号,决定子组件排列次序。当子组件不设置order或者设置相同的order, 子组件按照代码顺序展示。当子组件设置不同的order时,order较
小的组件在前,较大
的在后。
当子组件部分设置order,部分不设置order时,未设置order的子组件依次排序靠前,设置了order的子组件按照数值从
大到小
排列。
当子组件部分设置order,部分不设置order时,未设置order的子组件依次排序靠前,设置了order的子组件按照数值从
小到大
排列。
-
当类型为number时,子组件在任何尺寸下排序次序一致。
-
当类型为number时,子组件在任何尺寸下排序次序一致。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录