Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
T
TrainSys
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
苏州培训方案
TrainSys
提交
357d9de2
提交
357d9de2
编写于
11月 01, 2023
作者:
ibizdev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
zhujiamin 发布系统代码 [TrainSys,网页端]
上级
69ee7db8
变更
12
展开全部
显示空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
301 行增加
和
88 行删除
+301
-88
package.json
app_Web/package.json
+7
-7
pnpm-lock.yaml
app_Web/pnpm-lock.yaml
+41
-41
app-register.ts
app_Web/src/app-register.ts
+2
-0
extend-action-timeline.tsx
.../common/extend-action-timeline/extend-action-timeline.tsx
+5
-3
ibiz-date-range.tsx
...nts/editor/date-range/ibiz-date-range/ibiz-date-range.tsx
+170
-0
index.ts
app_Web/src/components/editor/date-range/index.ts
+1
-0
index.ts
app_Web/src/components/editor/index.ts
+1
-0
i-view-register.ts
app_Web/src/i-view-register.ts
+1
-0
date-range-provider.ts
app_Web/src/provider/editor/date-range-provider.ts
+31
-0
index.ts
app_Web/src/provider/editor/index.ts
+5
-0
PSSYSAPP.json
.../ibizlab/trainsys/PSSYSAPPS/TemplatePublish/PSSYSAPP.json
+4
-4
PSSYSAPP.json
...ces/model/cn/ibizlab/trainsys/PSSYSAPPS/Web/PSSYSAPP.json
+33
-33
未找到文件。
app_Web/package.json
浏览文件 @
357d9de2
...
@@ -13,13 +13,13 @@
...
@@ -13,13 +13,13 @@
"dependencies"
:
{
"dependencies"
:
{
"@floating-ui/dom"
:
"^1.0.11"
,
"@floating-ui/dom"
:
"^1.0.11"
,
"@ibiz-template/command"
:
"^0.0.1-beta.50"
,
"@ibiz-template/command"
:
"^0.0.1-beta.50"
,
"@ibiz-template/controller"
:
"^0.0.1-beta.12
8
"
,
"@ibiz-template/controller"
:
"^0.0.1-beta.12
9
"
,
"@ibiz-template/core"
:
"^0.0.1-beta.12
8
"
,
"@ibiz-template/core"
:
"^0.0.1-beta.12
9
"
,
"@ibiz-template/model"
:
"^0.0.1-beta.12
8
"
,
"@ibiz-template/model"
:
"^0.0.1-beta.12
9
"
,
"@ibiz-template/runtime"
:
"^0.0.1-beta.12
8
"
,
"@ibiz-template/runtime"
:
"^0.0.1-beta.12
9
"
,
"@ibiz-template/service"
:
"^0.0.1-beta.12
8
"
,
"@ibiz-template/service"
:
"^0.0.1-beta.12
9
"
,
"@ibiz-template/theme"
:
"^0.0.1-beta.12
8
"
,
"@ibiz-template/theme"
:
"^0.0.1-beta.12
9
"
,
"@ibiz-template/vue-util"
:
"^0.0.1-beta.12
8
"
,
"@ibiz-template/vue-util"
:
"^0.0.1-beta.12
9
"
,
"@ibiz/dynamic-model-api"
:
"^2.1.28"
,
"@ibiz/dynamic-model-api"
:
"^2.1.28"
,
"@riophae/vue-treeselect"
:
"^0.4.0"
,
"@riophae/vue-treeselect"
:
"^0.4.0"
,
"dayjs"
:
"^1.11.7"
,
"dayjs"
:
"^1.11.7"
,
...
...
app_Web/pnpm-lock.yaml
浏览文件 @
357d9de2
此差异已折叠。
点击以展开。
app_Web/src/app-register.ts
浏览文件 @
357d9de2
...
@@ -97,6 +97,7 @@ import {
...
@@ -97,6 +97,7 @@ import {
IBizPickerLink
,
IBizPickerLink
,
IBizCheckbox
,
IBizCheckbox
,
IBizDatePicker
,
IBizDatePicker
,
IBizDateRange
,
IBizDropdown
,
IBizDropdown
,
IBizFileUpload
,
IBizFileUpload
,
IBizInput
,
IBizInput
,
...
@@ -213,6 +214,7 @@ export const AppRegister = {
...
@@ -213,6 +214,7 @@ export const AppRegister = {
v
.
component
(
'IBizCheckbox'
,
IBizCheckbox
);
v
.
component
(
'IBizCheckbox'
,
IBizCheckbox
);
v
.
component
(
'IBizRadio'
,
IBizRadio
);
v
.
component
(
'IBizRadio'
,
IBizRadio
);
v
.
component
(
'IBizDatePicker'
,
IBizDatePicker
);
v
.
component
(
'IBizDatePicker'
,
IBizDatePicker
);
v
.
component
(
'IBizDateRange'
,
IBizDateRange
);
v
.
component
(
'IBizDropdown'
,
IBizDropdown
);
v
.
component
(
'IBizDropdown'
,
IBizDropdown
);
v
.
component
(
'IBizPicker'
,
IBizPicker
);
v
.
component
(
'IBizPicker'
,
IBizPicker
);
v
.
component
(
'IBizPickerDropDown'
,
IBizPickerDropDown
);
v
.
component
(
'IBizPickerDropDown'
,
IBizPickerDropDown
);
...
...
app_Web/src/components/common/extend-action-timeline/extend-action-timeline.tsx
浏览文件 @
357d9de2
...
@@ -250,9 +250,11 @@ export const ExtendActionTimeLine = defineComponent({
...
@@ -250,9 +250,11 @@ export const ExtendActionTimeLine = defineComponent({
</
div
>
</
div
>
<
div
class=
{
ns
.
be
(
'task'
,
'bottom'
)
}
>
<
div
class=
{
ns
.
be
(
'task'
,
'bottom'
)
}
>
<
div
class=
{
ns
.
be
(
'task'
,
'full-message'
)
}
>
<
div
class=
{
ns
.
be
(
'task'
,
'full-message'
)
}
>
{
task
.
fullMessage
{
task
.
fullMessage
?
(
?
`审批意见: ${task.fullMessage}`
`审批意见: ${task.fullMessage}`
:
task
.
fullMessage
}
)
:
(
<
div
>
</
div
>
)
}
</
div
>
</
div
>
</
div
>
</
div
>
{
task
.
tasks
&&
task
.
tasks
.
length
>=
1
&&
(
{
task
.
tasks
&&
task
.
tasks
.
length
>=
1
&&
(
...
...
app_Web/src/components/editor/date-range/ibiz-date-range/ibiz-date-range.tsx
0 → 100644
浏览文件 @
357d9de2
import
{
ref
,
watch
,
defineComponent
,
Ref
,
computed
}
from
'vue'
;
import
{
getDatePickerProps
,
getEditorEmits
,
useNamespace
,
}
from
'@ibiz-template/vue-util'
;
import
'@ibiz-template/theme/style/components/editor/ibiz-date-range/ibiz-date-range.scss'
;
export
const
IBizDateRange
=
defineComponent
({
name
:
'IBizDateRange'
,
props
:
getDatePickerProps
(),
emits
:
getEditorEmits
(),
setup
(
props
,
{
emit
})
{
const
ns
=
useNamespace
(
'date-range'
);
const
c
=
props
.
controller
;
const
editorModel
=
c
!
.
model
;
// 类型
const
type
=
ref
(
'daterange'
);
switch
(
editorModel
.
editorType
)
{
case
'DATERANGE'
:
type
.
value
=
'datetimerange'
;
break
;
case
'DATERANGE_NOTIME'
:
type
.
value
=
'daterange'
;
break
;
default
:
type
.
value
=
'datetimerange'
;
}
// 格式
const
format
=
ref
(
'yyyy-MM-dd'
);
// 值格式化
const
valueFormat
=
c
!
.
valueFormat
;
if
(
valueFormat
)
{
// 根据值格式化改变type
if
(
valueFormat
===
'YYYY-MM'
)
{
type
.
value
=
'month'
;
}
else
if
(
valueFormat
===
'YYYY'
)
{
type
.
value
=
'year'
;
}
const
tempFormat
:
string
=
valueFormat
.
replace
(
'YYYY'
,
'yyyy'
)
.
replace
(
'DD'
,
'dd'
);
format
.
value
=
tempFormat
;
}
// 值分割符
let
valueSeparator
=
','
;
// 在范围选择器里取消两个日期面板之间的联动
let
unlinkPanels
=
false
;
// 选择范围时的分隔符
let
rangeSeparator
=
'至'
;
if
(
editorModel
.
editorParams
)
{
if
(
editorModel
.
editorParams
.
valueSeparator
)
{
valueSeparator
=
editorModel
.
editorParams
.
valueSeparator
;
}
if
(
editorModel
.
editorParams
.
rangeSeparator
)
{
rangeSeparator
=
editorModel
.
editorParams
.
rangeSeparator
;
}
if
(
editorModel
.
editorParams
.
unlinkPanels
)
{
unlinkPanels
=
Object
.
is
(
'true'
,
editorModel
.
editorParams
.
unlinkPanels
);
}
}
// 关系表单项集合
const
refFormItem
:
Ref
<
string
[]
>
=
ref
([]);
const
editorItems
=
editorModel
.
source
.
getPSEditorItems
();
if
(
editorItems
&&
editorItems
.
length
>
0
)
{
const
editorItemNames
:
string
[]
=
editorItems
.
map
(
(
item
:
IData
)
=>
item
.
id
,
);
refFormItem
.
value
=
editorItemNames
;
}
const
curValue
=
computed
({
get
()
{
let
value
:
string
[]
=
[];
if
(
refFormItem
.
value
.
length
>
0
)
{
refFormItem
.
value
.
forEach
((
name
:
string
)
=>
{
if
(
props
.
data
[
name
])
{
value
.
push
(
props
.
data
[
name
]);
}
});
}
else
if
(
props
.
value
&&
typeof
props
.
value
===
'string'
)
{
value
=
props
.
value
.
split
(
valueSeparator
);
}
return
value
;
},
set
(
dates
:
string
[])
{
if
(
dates
&&
dates
.
length
>
0
)
{
emit
(
'change'
,
dates
.
join
(
valueSeparator
));
if
(
refFormItem
.
value
.
length
>
0
)
{
dates
.
forEach
((
date
:
string
,
index
:
number
)
=>
{
emit
(
'change'
,
date
,
refFormItem
.
value
[
index
]);
});
}
}
else
{
emit
(
'change'
,
null
);
if
(
refFormItem
.
value
.
length
>
0
)
{
refFormItem
.
value
.
forEach
((
date
:
string
,
index
:
number
)
=>
{
emit
(
'change'
,
null
,
refFormItem
.
value
[
index
]);
});
}
}
},
});
// 处理值变更
const
handleChange
=
(
dates
:
string
[],
_dateType
:
IData
)
=>
{
curValue
.
value
=
dates
;
};
const
onOpenChange
=
(
isOpen
:
boolean
)
=>
{
emit
(
'operate'
,
isOpen
);
};
const
inputRef
=
ref
();
if
(
props
.
autoFocus
)
{
watch
(
inputRef
,
newVal
=>
{
if
(
newVal
)
{
const
input
=
newVal
.
$el
.
getElementsByTagName
(
'input'
)[
0
];
input
.
click
();
}
});
}
return
{
ns
,
c
,
editorModel
,
type
,
format
,
handleChange
,
onOpenChange
,
inputRef
,
rangeSeparator
,
curValue
,
unlinkPanels
,
};
},
render
()
{
return
(
<
div
class=
{
[
this
.
ns
.
b
(),
this
.
disabled
?
this
.
ns
.
m
(
'disabled'
)
:
''
,
this
.
readonly
?
this
.
ns
.
m
(
'readonly'
)
:
''
,
]
}
>
<
i
-
date
-
picker
ref=
'inputRef'
value=
{
this
.
curValue
}
transfer
type=
{
this
.
type
}
format=
{
this
.
format
}
placeholder=
{
this
.
c
!
.
placeHolder
}
disabled=
{
this
.
disabled
}
readonly=
{
this
.
readonly
}
separator=
{
this
.
rangeSeparator
}
split
-
panels=
{
this
.
unlinkPanels
}
on
-
on
-
open
-
change=
{
this
.
onOpenChange
}
// 弹出日历和关闭日历时触发
on
-
on
-
change=
{
this
.
handleChange
}
// 日期发生变化时触发
></
i
-
date
-
picker
>
</
div
>
);
},
});
app_Web/src/components/editor/date-range/index.ts
0 → 100644
浏览文件 @
357d9de2
export
{
IBizDateRange
}
from
'./ibiz-date-range/ibiz-date-range'
;
app_Web/src/components/editor/index.ts
浏览文件 @
357d9de2
...
@@ -7,4 +7,5 @@ export * from './date-picker';
...
@@ -7,4 +7,5 @@ export * from './date-picker';
export
*
from
'./dropdown-list'
;
export
*
from
'./dropdown-list'
;
export
*
from
'./data-picker'
;
export
*
from
'./data-picker'
;
export
*
from
'./upload'
;
export
*
from
'./upload'
;
export
*
from
'./date-range'
;
export
{
NotSupportedEditor
}
from
'./not-supported-editor/not-supported-editor'
;
export
{
NotSupportedEditor
}
from
'./not-supported-editor/not-supported-editor'
;
app_Web/src/i-view-register.ts
浏览文件 @
357d9de2
...
@@ -113,5 +113,6 @@ export const IViewRegister = {
...
@@ -113,5 +113,6 @@ export const IViewRegister = {
}
}
});
});
v
.
component
(
'ITimePicker'
,
TimePicker
);
v
.
component
(
'ITimePicker'
,
TimePicker
);
v
.
component
(
'IDatePicker'
,
DatePicker
);
},
},
};
};
app_Web/src/provider/editor/date-range-provider.ts
0 → 100644
浏览文件 @
357d9de2
import
{
DatePickerEditorModel
}
from
'@ibiz-template/model'
;
import
{
DateRangeEditorController
,
FormItemController
,
GridEditItemController
,
IEditorProvider
,
}
from
'@ibiz-template/controller'
;
/**
* 日期范围选择器编辑器适配器
*
* @author lxm
* @date 2022-09-19 22:09:03
* @export
* @class DatePickerEditorProvider
* @implements {EditorProvider}
*/
export
class
DateRangeEditorProvider
implements
IEditorProvider
{
formEditor
:
string
=
'IBizDateRange'
;
gridEditor
:
string
=
'IBizGridDateRange'
;
async
createController
(
editorModel
:
DatePickerEditorModel
,
parentController
:
FormItemController
|
GridEditItemController
,
):
Promise
<
DateRangeEditorController
>
{
const
c
=
new
DateRangeEditorController
(
editorModel
,
parentController
);
await
c
.
init
();
return
c
;
}
}
app_Web/src/provider/editor/index.ts
浏览文件 @
357d9de2
...
@@ -6,6 +6,7 @@ import { DropDownListEditorProvider } from './drop-down-list-provider';
...
@@ -6,6 +6,7 @@ import { DropDownListEditorProvider } from './drop-down-list-provider';
import
{
DatePickerEditorProvider
}
from
'./date-picker-provider'
;
import
{
DatePickerEditorProvider
}
from
'./date-picker-provider'
;
import
{
FileUploaderEditorProvider
}
from
'./file-uploader-provider'
;
import
{
FileUploaderEditorProvider
}
from
'./file-uploader-provider'
;
import
{
DataPickerEditorProvider
}
from
'./data-picker-provider'
;
import
{
DataPickerEditorProvider
}
from
'./data-picker-provider'
;
import
{
DateRangeEditorProvider
}
from
'./date-range-provider'
;
/**
/**
* 预置默认的编辑器适配器
* 预置默认的编辑器适配器
...
@@ -54,6 +55,10 @@ export function presetEditorProvider(): void {
...
@@ -54,6 +55,10 @@ export function presetEditorProvider(): void {
editorRegister
.
register
(
'DATEPICKEREX_NODAY'
,
datePickerProvider
);
editorRegister
.
register
(
'DATEPICKEREX_NODAY'
,
datePickerProvider
);
editorRegister
.
register
(
'DATEPICKEREX_NODAY_NOSECOND'
,
datePickerProvider
);
editorRegister
.
register
(
'DATEPICKEREX_NODAY_NOSECOND'
,
datePickerProvider
);
// 日期范围选择器
const
dateRangeEditorProvider
=
new
DateRangeEditorProvider
();
editorRegister
.
register
(
'DATERANGE'
,
dateRangeEditorProvider
);
// 文件上传
// 文件上传
editorRegister
.
register
(
editorRegister
.
register
(
'FILEUPLOADER'
,
'FILEUPLOADER'
,
...
...
trainsys-core/src/main/resources/model/cn/ibizlab/trainsys/PSSYSAPPS/TemplatePublish/PSSYSAPP.json
浏览文件 @
357d9de2
...
@@ -1432,16 +1432,16 @@
...
@@ -1432,16 +1432,16 @@
"codeName"
:
"VMGroup2"
,
"codeName"
:
"VMGroup2"
,
"name"
:
"视图消息组2"
,
"name"
:
"视图消息组2"
,
"getPSAppViewMsgGroupDetails"
:
[
{
"getPSAppViewMsgGroupDetails"
:
[
{
"name"
:
"视图消息"
,
"name"
:
"视图消息
2
"
,
"getPSAppViewMsg"
:
{
"getPSAppViewMsg"
:
{
"modelref"
:
true
,
"modelref"
:
true
,
"id"
:
"ViewMsg
2
"
"id"
:
"ViewMsg
3
"
}
}
},
{
},
{
"name"
:
"视图消息
2
"
,
"name"
:
"视图消息"
,
"getPSAppViewMsg"
:
{
"getPSAppViewMsg"
:
{
"modelref"
:
true
,
"modelref"
:
true
,
"id"
:
"ViewMsg
3
"
"id"
:
"ViewMsg
2
"
}
}
}
]
}
]
},
{
},
{
...
...
trainsys-core/src/main/resources/model/cn/ibizlab/trainsys/PSSYSAPPS/Web/PSSYSAPP.json
浏览文件 @
357d9de2
...
@@ -11189,16 +11189,16 @@
...
@@ -11189,16 +11189,16 @@
"codeName" : "VMGroup2",
"codeName" : "VMGroup2",
"name" : "视图消息组2",
"name" : "视图消息组2",
"getPSAppViewMsgGroupDetails" : [ {
"getPSAppViewMsgGroupDetails" : [ {
"name" : "视图消息",
"name" : "视图消息
2
",
"getPSAppViewMsg" : {
"getPSAppViewMsg" : {
"modelref" : true,
"modelref" : true,
"id" : "ViewMsg
2
"
"id" : "ViewMsg
3
"
}
}
}, {
}, {
"name" : "视图消息
2
",
"name" : "视图消息",
"getPSAppViewMsg" : {
"getPSAppViewMsg" : {
"modelref" : true,
"modelref" : true,
"id" : "ViewMsg
3
"
"id" : "ViewMsg
2
"
}
}
} ]
} ]
}, {
}, {
...
@@ -11259,6 +11259,12 @@
...
@@ -11259,6 +11259,12 @@
"codeName" : "VMGroup4",
"codeName" : "VMGroup4",
"name" : "视图消息位置测试",
"name" : "视图消息位置测试",
"getPSAppViewMsgGroupDetails" : [ {
"getPSAppViewMsgGroupDetails" : [ {
"name" : "消息位置-视图内容区",
"getPSAppViewMsg" : {
"modelref" : true,
"id" : "ViewMsg9"
}
}, {
"name" : "消息位置-视图上方",
"name" : "消息位置-视图上方",
"getPSAppViewMsg" : {
"getPSAppViewMsg" : {
"modelref" : true,
"modelref" : true,
...
@@ -11276,34 +11282,21 @@
...
@@ -11276,34 +11282,21 @@
"modelref" : true,
"modelref" : true,
"id" : "ViewMsg10"
"id" : "ViewMsg10"
}
}
}, {
"name" : "消息位置-视图内容区",
"getPSAppViewMsg" : {
"modelref" : true,
"id" : "ViewMsg9"
}
} ]
} ]
}, {
}, {
"codeName" : "VMGroup8",
"codeName" : "VMGroup8",
"name" : "【静态测试】",
"name" : "【静态测试】",
"getPSAppViewMsgGroupDetails" : [ {
"getPSAppViewMsgGroupDetails" : [ {
"name" : "消息类型-警告信息",
"name" : "消息位置-视图下方",
"getPSAppViewMsg" : {
"modelref" : true,
"id" : "ViewMsg5"
},
"position" : "POPUP"
}, {
"name" : "关闭模式-本次删除-上方-警告",
"getPSAppViewMsg" : {
"getPSAppViewMsg" : {
"modelref" : true,
"modelref" : true,
"id" : "ViewMsg
13
"
"id" : "ViewMsg
8
"
}
}
}, {
}, {
"name" : "消息类型-
错误
信息",
"name" : "消息类型-
常规
信息",
"getPSAppViewMsg" : {
"getPSAppViewMsg" : {
"modelref" : true,
"modelref" : true,
"id" : "ViewMsg
6
"
"id" : "ViewMsg
4
"
},
},
"position" : "POPUP"
"position" : "POPUP"
}, {
}, {
...
@@ -11313,17 +11306,17 @@
...
@@ -11313,17 +11306,17 @@
"id" : "ViewMsg11"
"id" : "ViewMsg11"
}
}
}, {
}, {
"name" : "消息类型-
常规
信息",
"name" : "消息类型-
警告
信息",
"getPSAppViewMsg" : {
"getPSAppViewMsg" : {
"modelref" : true,
"modelref" : true,
"id" : "ViewMsg
4
"
"id" : "ViewMsg
5
"
},
},
"position" : "POPUP"
"position" : "POPUP"
}, {
}, {
"name" : "消息位置-视图
下方
",
"name" : "消息位置-视图
内容区
",
"getPSAppViewMsg" : {
"getPSAppViewMsg" : {
"modelref" : true,
"modelref" : true,
"id" : "ViewMsg
8
"
"id" : "ViewMsg
9
"
}
}
}, {
}, {
"name" : "关闭模式-默认删除-上方-错误",
"name" : "关闭模式-默认删除-上方-错误",
...
@@ -11332,22 +11325,23 @@
...
@@ -11332,22 +11325,23 @@
"id" : "ViewMsg12"
"id" : "ViewMsg12"
}
}
}, {
}, {
"name" : "
消息位置-视图内容区
",
"name" : "
关闭模式-本次删除-上方-警告
",
"getPSAppViewMsg" : {
"getPSAppViewMsg" : {
"modelref" : true,
"modelref" : true,
"id" : "ViewMsg
9
"
"id" : "ViewMsg
13
"
}
}
}, {
"name" : "消息类型-错误信息",
"getPSAppViewMsg" : {
"modelref" : true,
"id" : "ViewMsg6"
},
"position" : "POPUP"
} ]
} ]
}, {
}, {
"codeName" : "VMGroup5",
"codeName" : "VMGroup5",
"name" : "视图消息关闭模式",
"name" : "视图消息关闭模式",
"getPSAppViewMsgGroupDetails" : [ {
"getPSAppViewMsgGroupDetails" : [ {
"name" : "关闭模式-无删除",
"getPSAppViewMsg" : {
"modelref" : true,
"id" : "ViewMsg11"
}
}, {
"name" : "关闭模式-默认删除",
"name" : "关闭模式-默认删除",
"getPSAppViewMsg" : {
"getPSAppViewMsg" : {
"modelref" : true,
"modelref" : true,
...
@@ -11359,6 +11353,12 @@
...
@@ -11359,6 +11353,12 @@
"modelref" : true,
"modelref" : true,
"id" : "ViewMsg13"
"id" : "ViewMsg13"
}
}
}, {
"name" : "关闭模式-无删除",
"getPSAppViewMsg" : {
"modelref" : true,
"id" : "ViewMsg11"
}
} ]
} ]
}, {
}, {
"codeName" : "VMGroup6",
"codeName" : "VMGroup6",
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录