Skip to content
项目
Groups
代码片段
帮助
正在加载...
Sign in / Register
Toggle navigation
W
workoffice
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图表
统计图
Create a new issue
作业
提交
议题看板
Open sidebar
冷广德
workoffice
Commits
b0561b7e
提交
b0561b7e
authored
4月 21, 2020
作者:
lgd
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1.mes页面未完成
2.//TODO erp用户是否选择新部门为空,质检接口数据无对应问题,内部交易订单审核,审核规则,领用申请列表/退件列表/参数,坩埚下单,mes,刷新token
上级
2712289c
显示空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
442 行增加
和
7 行删除
+442
-7
WorkApp.java
app/src/main/java/com/wd/workoffice/app/WorkApp.java
+1
-2
MesTicketActivity.java
.../com/wd/workoffice/ui/activity/mes/MesTicketActivity.java
+71
-0
MesTicketListActivity.java
.../wd/workoffice/ui/activity/mes/MesTicketListActivity.java
+191
-0
MesTicketAdapter.java
...n/java/com/wd/workoffice/ui/adapter/MesTicketAdapter.java
+33
-0
StarAdapter.java
...c/main/java/com/wd/workoffice/ui/adapter/StarAdapter.java
+36
-0
MesFragment.java
app/src/main/java/com/wd/workoffice/ui/fg/MesFragment.java
+1
-3
MsgListFragment.java
...rc/main/java/com/wd/workoffice/ui/fg/MsgListFragment.java
+1
-1
WorkUtils.java
app/src/main/java/com/wd/workoffice/util/WorkUtils.java
+3
-0
MesTicketListFilterData.java
...wd/workoffice/util/ddmfilter/MesTicketListFilterData.java
+104
-0
view_ticket.xml
app/src/main/res/layout/view_ticket.xml
+1
-1
没有找到文件。
app/src/main/java/com/wd/workoffice/app/WorkApp.java
浏览文件 @
b0561b7e
...
@@ -51,8 +51,7 @@ public class WorkApp extends BaseApp {
...
@@ -51,8 +51,7 @@ public class WorkApp extends BaseApp {
RtfMesHelper
.
getInstance
().
init
(
MesApiService
.
DOMAIN
,
chain
->
{
RtfMesHelper
.
getInstance
().
init
(
MesApiService
.
DOMAIN
,
chain
->
{
Request
original
=
chain
.
request
();
Request
original
=
chain
.
request
();
Request
request
=
original
.
newBuilder
()
Request
request
=
original
.
newBuilder
()
.
header
(
"Authorization"
,
"Bearer "
+
UserKeeper
.
getInstance
().
getToken
())
.
header
(
"Cookie"
,
"SESSION=1f01ac55-973d-44c8-ac99-c9b990d454b1"
)
.
header
(
"userId"
,
UserKeeper
.
getInstance
().
getUserId
())
.
method
(
original
.
method
(),
original
.
body
())
.
method
(
original
.
method
(),
original
.
body
())
.
build
();
.
build
();
...
...
app/src/main/java/com/wd/workoffice/ui/activity/mes/MesTicketActivity.java
0 → 100644
浏览文件 @
b0561b7e
package
com
.
wd
.
workoffice
.
ui
.
activity
.
mes
;
import
android.os.Bundle
;
import
android.view.View
;
import
android.widget.LinearLayout
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.wd.workoffice.R
;
import
com.wd.workoffice.app.BaseBean
;
import
com.wd.workoffice.app.WorkToolBarActivity
;
import
com.wd.workoffice.retrofit.RtfUtils
;
import
com.wd.workoffice.retrofit.WorkObserver
;
import
butterknife.BindView
;
import
butterknife.ButterKnife
;
import
butterknife.OnClick
;
import
flexible.xd.android_base.network.rtfhttp.Transformer
;
import
io.reactivex.disposables.Disposable
;
/**
* 工单
* author : flexible
* email : lgd19940421@163.com
* github: https://github.com/FlexibleXd
**/
public
class
MesTicketActivity
extends
WorkToolBarActivity
{
@BindView
(
R
.
id
.
ll_ticket
)
LinearLayout
llTicket
;
@BindView
(
R
.
id
.
ll_data
)
LinearLayout
llData
;
@BindView
(
R
.
id
.
ll_quality
)
LinearLayout
llQuality
;
@BindView
(
R
.
id
.
ll_search
)
LinearLayout
llSearch
;
@Override
protected
void
initView
()
{
ButterKnife
.
bind
(
this
);
}
@Override
protected
void
initData
()
{
}
@Override
protected
void
initEvent
()
{
}
@Override
protected
int
layoutId
()
{
return
R
.
layout
.
activity_mes_ticket
;
}
@OnClick
({
R
.
id
.
ll_ticket
,
R
.
id
.
ll_data
,
R
.
id
.
ll_quality
,
R
.
id
.
ll_search
})
public
void
onViewClicked
(
View
view
)
{
switch
(
view
.
getId
())
{
case
R
.
id
.
ll_ticket
:
startActivity
(
MesTicketListActivity
.
class
);
break
;
case
R
.
id
.
ll_data
:
break
;
case
R
.
id
.
ll_quality
:
break
;
case
R
.
id
.
ll_search
:
break
;
}
}
}
app/src/main/java/com/wd/workoffice/ui/activity/mes/MesTicketListActivity.java
0 → 100644
浏览文件 @
b0561b7e
package
com
.
wd
.
workoffice
.
ui
.
activity
.
mes
;
import
android.text.TextUtils
;
import
android.view.Menu
;
import
android.view.MenuItem
;
import
android.view.View
;
import
com.alibaba.fastjson.JSON
;
import
com.chad.library.adapter.base.BaseQuickAdapter
;
import
com.scwang.smartrefresh.layout.SmartRefreshLayout
;
import
com.wd.workoffice.R
;
import
com.wd.workoffice.app.BaseBean
;
import
com.wd.workoffice.app.BaseMesBean
;
import
com.wd.workoffice.app.WorkToolBarActivity
;
import
com.wd.workoffice.bean.InStockBean
;
import
com.wd.workoffice.bean.ProDetail
;
import
com.wd.workoffice.bean.listener.FourMenuClickListener
;
import
com.wd.workoffice.bean.listener.ThreeMenuClickListener
;
import
com.wd.workoffice.bean.mesBean.TicketBean
;
import
com.wd.workoffice.bean.workEnum.PagePermissionType
;
import
com.wd.workoffice.retrofit.RtfUtils
;
import
com.wd.workoffice.retrofit.WorkObserver
;
import
com.wd.workoffice.ui.activity.bat.work.WorkInStockDetailActivity
;
import
com.wd.workoffice.ui.activity.bat.work.WorkInStockSearchActivity
;
import
com.wd.workoffice.ui.adapter.MesTicketAdapter
;
import
com.wd.workoffice.ui.adapter.WorkInStockAdapter
;
import
com.wd.workoffice.util.WorkUtils
;
import
com.wd.workoffice.util.ddmfilter.InSotckFilterData
;
import
com.wd.workoffice.util.ddmfilter.MesTicketListFilterData
;
import
com.wd.workoffice.widget.DropDownMenu
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
androidx.recyclerview.widget.RecyclerView
;
import
butterknife.BindView
;
import
butterknife.ButterKnife
;
import
flexible.xd.android_base.network.rtfhttp.Transformer
;
import
io.reactivex.disposables.Disposable
;
/**
* author : flexible
* email : lgd19940421@163.com
* github: https://github.com/FlexibleXd
**/
public
class
MesTicketListActivity
extends
WorkToolBarActivity
{
@BindView
(
R
.
id
.
ddm_choose
)
DropDownMenu
ddmChoose
;
private
RecyclerView
rvData
;
private
int
page
=
1
;
private
Map
<
String
,
Object
>
param
;
private
SmartRefreshLayout
srlRefresh
;
private
List
<
TicketBean
.
ListBean
>
dataList
;
private
MesTicketAdapter
dataAdapter
;
@Override
protected
void
initView
()
{
ButterKnife
.
bind
(
this
);
MesTicketListFilterData
filterData
=
new
MesTicketListFilterData
(
this
,
ddmChoose
,
new
FourMenuClickListener
()
{
@Override
public
void
clickOne
(
String
value
)
{
if
(
TextUtils
.
equals
(
value
,
"全部状态"
))
{
param
.
put
(
"level"
,
""
);
}
else
if
(
TextUtils
.
equals
(
value
,
"一级库"
))
{
param
.
put
(
"level"
,
"1"
);
}
else
{
param
.
put
(
"level"
,
"2"
);
}
page
=
1
;
param
.
put
(
"pageNum"
,
page
);
getData
();
}
@Override
public
void
clickTwo
(
String
value
)
{
if
(
TextUtils
.
equals
(
value
,
"全部类型"
))
{
param
.
put
(
"type"
,
""
);
}
else
if
(
TextUtils
.
equals
(
value
,
"厂内库"
))
{
param
.
put
(
"type"
,
"IN"
);
}
else
{
param
.
put
(
"type"
,
"OUT"
);
}
page
=
1
;
param
.
put
(
"page"
,
page
);
getData
();
}
@Override
public
void
clickThree
(
String
value
)
{
if
(
TextUtils
.
equals
(
value
,
"全部状态"
))
{
param
.
put
(
"status"
,
""
);
}
else
if
(
TextUtils
.
equals
(
value
,
"未启用"
))
{
param
.
put
(
"status"
,
"0"
);
}
else
{
param
.
put
(
"status"
,
"1"
);
}
page
=
1
;
param
.
put
(
"pageNum"
,
page
);
getData
();
}
@Override
public
void
clickFour
(
String
value
)
{
}
});
rvData
=
filterData
.
getRvData
();
srlRefresh
=
filterData
.
getSrlRefresh
();
}
@Override
protected
void
initData
()
{
dataList
=
new
ArrayList
<>();
dataAdapter
=
new
MesTicketAdapter
(
R
.
layout
.
item_mes_ticket
,
dataList
);
dataAdapter
.
bindToRecyclerView
(
rvData
);
dataAdapter
.
setEmptyView
(
R
.
layout
.
view_empty_content
,
rvData
);
param
=
WorkUtils
.
pageMesKey
();
param
.
put
(
"pageNum"
,
page
);
getData
();
}
private
void
getData
()
{
RtfUtils
.
getMesRtf
().
ticketList
(
WorkUtils
.
convertMapToBody
(
param
)).
compose
(
Transformer
.
schedule
()).
subscribe
(
new
WorkObserver
<
BaseMesBean
>()
{
@Override
public
void
doOnSubscribe
(
Disposable
d
)
{
}
@Override
public
void
onFail
(
String
errorMsg
)
{
hideLoading
();
toast
(
errorMsg
);
}
@Override
public
void
onSuccess
(
BaseMesBean
data
)
{
hideLoading
();
if
(!
data
.
isSuccess
())
{
toast
(
data
.
getMessage
());
return
;
}
List
<
TicketBean
.
ListBean
>
getList
=
JSON
.
parseObject
(
data
.
getData
().
toString
(),
TicketBean
.
class
).
getList
();
if
(
page
==
1
)
{
srlRefresh
.
finishRefresh
();
dataList
.
clear
();
dataList
.
addAll
(
getList
);
dataAdapter
.
notifyDataSetChanged
();
dataAdapter
.
loadMoreComplete
();
}
else
{
dataAdapter
.
loadMoreComplete
();
dataList
.
addAll
(
getList
);
dataAdapter
.
notifyDataSetChanged
();
}
if
(
getList
.
size
()
==
0
)
{
dataAdapter
.
loadMoreEnd
();
}
else
{
page
++;
}
}
});
}
@Override
protected
void
initEvent
()
{
srlRefresh
.
setOnRefreshListener
(
refreshLayout
->
{
page
=
1
;
param
.
put
(
"pageNum"
,
page
);
getData
();
});
dataAdapter
.
setOnLoadMoreListener
(()
->
{
param
.
put
(
"pageNum"
,
page
);
getData
();
},
rvData
);
dataAdapter
.
setOnItemClickListener
(
new
BaseQuickAdapter
.
OnItemClickListener
()
{
@Override
public
void
onItemClick
(
BaseQuickAdapter
adapter
,
View
view
,
int
position
)
{
}
});
}
@Override
protected
int
layoutId
()
{
return
R
.
layout
.
activity_mes_ticket_list
;
}
}
app/src/main/java/com/wd/workoffice/ui/adapter/MesTicketAdapter.java
0 → 100644
浏览文件 @
b0561b7e
package
com
.
wd
.
workoffice
.
ui
.
adapter
;
import
com.chad.library.adapter.base.BaseQuickAdapter
;
import
com.chad.library.adapter.base.BaseViewHolder
;
import
com.wd.workoffice.R
;
import
com.wd.workoffice.bean.MsgBean
;
import
com.wd.workoffice.bean.mesBean.TicketBean
;
import
java.util.List
;
import
flexible.xd.android_base.utils.TimeUtils
;
/**
* Created by flexible on 2018/8/13.
*/
public
class
MesTicketAdapter
extends
BaseQuickAdapter
<
TicketBean
.
ListBean
,
BaseViewHolder
>
{
public
MesTicketAdapter
(
int
layoutResId
,
List
data
)
{
super
(
layoutResId
,
data
);
}
@Override
protected
void
convert
(
BaseViewHolder
helper
,
TicketBean
.
ListBean
item
)
{
helper
.
setText
(
R
.
id
.
tv_name
,
item
.
getAssetName
());
helper
.
setText
(
R
.
id
.
tv_pro_name
,
item
.
getFailureName
());
helper
.
setText
(
R
.
id
.
tv_status
,
item
.
getStatus
()
+
""
);
helper
.
setText
(
R
.
id
.
tv_time
,
TimeUtils
.
millis2String
(
item
.
getCreateDateTime
()));
}
}
app/src/main/java/com/wd/workoffice/ui/adapter/StarAdapter.java
0 → 100644
浏览文件 @
b0561b7e
package
com
.
wd
.
workoffice
.
ui
.
adapter
;
import
com.chad.library.adapter.base.BaseQuickAdapter
;
import
com.chad.library.adapter.base.BaseViewHolder
;
import
com.wd.workoffice.R
;
import
com.wd.workoffice.bean.ProductBean
;
import
java.util.List
;
/**
* Created by flexible on 2018/8/13.
*/
public
class
StarAdapter
extends
BaseQuickAdapter
<
Object
,
BaseViewHolder
>
{
int
score
;
// 1 - 5
public
StarAdapter
(
int
layoutResId
,
List
data
)
{
super
(
layoutResId
,
data
);
}
@Override
public
int
getItemCount
()
{
return
5
;
}
@Override
protected
void
convert
(
BaseViewHolder
helper
,
Object
item
)
{
if
(
helper
.
getAdapterPosition
()>=
score
){
helper
.
setImageResource
(
R
.
id
.
iv_img
,
R
.
mipmap
.
ticket_star_gray
);
}
else
{
helper
.
setImageResource
(
R
.
id
.
iv_img
,
R
.
mipmap
.
ticket_star_yellow
);
}
}
}
app/src/main/java/com/wd/workoffice/ui/fg/MesFragment.java
浏览文件 @
b0561b7e
...
@@ -73,7 +73,7 @@ public class MesFragment extends WorkBaseFg {
...
@@ -73,7 +73,7 @@ public class MesFragment extends WorkBaseFg {
R
.
mipmap
.
mes_icon9
,
R
.
mipmap
.
mes_icon10
,
R
.
mipmap
.
mes_icon10
};
R
.
mipmap
.
mes_icon9
,
R
.
mipmap
.
mes_icon10
,
R
.
mipmap
.
mes_icon10
};
String
[]
dataName
=
new
String
[]{
"订单追踪"
,
"质量报表"
,
"质量分析"
,
"质量绩效"
,
String
[]
dataName
=
new
String
[]{
"订单追踪"
,
"质量报表"
,
"质量分析"
,
"质量绩效"
,
"质量追溯"
,
"质量反馈"
,
"过程检测"
,
"报废管理"
,
"检维修记录"
,
"设备监控"
"质量追溯"
,
"质量反馈"
,
"过程检测"
,
"报废管理"
,
"检维修记录"
,
"设备监控"
,
"
设备监控"
,
"
工单管理"
};
,
"工单管理"
};
@Override
@Override
...
@@ -148,8 +148,6 @@ public class MesFragment extends WorkBaseFg {
...
@@ -148,8 +148,6 @@ public class MesFragment extends WorkBaseFg {
case
9
:
case
9
:
break
;
break
;
case
10
:
case
10
:
break
;
case
11
:
startActivity
(
MesTicketActivity
.
class
);
startActivity
(
MesTicketActivity
.
class
);
break
;
break
;
}
}
...
...
app/src/main/java/com/wd/workoffice/ui/fg/MsgListFragment.java
浏览文件 @
b0561b7e
...
@@ -151,7 +151,7 @@ public class MsgListFragment extends WorkBaseFg {
...
@@ -151,7 +151,7 @@ public class MsgListFragment extends WorkBaseFg {
}
}
private
void
msgRead
(
int
id
)
{
private
void
msgRead
(
int
id
)
{
Map
<
String
,
Object
>
readParam
=
WorkUtils
.
pageKey
();
Map
<
String
,
Object
>
readParam
=
WorkUtils
.
simpleParam
();
readParam
.
put
(
"id"
,
id
);
readParam
.
put
(
"id"
,
id
);
RtfUtils
.
getRtf
().
msgRead
(
WorkUtils
.
convertMapToBody
(
readParam
)).
compose
(
Transformer
.
schedule
()).
subscribe
(
new
WorkObserver
<
BaseBean
>()
{
RtfUtils
.
getRtf
().
msgRead
(
WorkUtils
.
convertMapToBody
(
readParam
)).
compose
(
Transformer
.
schedule
()).
subscribe
(
new
WorkObserver
<
BaseBean
>()
{
@Override
@Override
...
...
app/src/main/java/com/wd/workoffice/util/WorkUtils.java
浏览文件 @
b0561b7e
...
@@ -63,11 +63,14 @@ public class WorkUtils {
...
@@ -63,11 +63,14 @@ public class WorkUtils {
param
.
put
(
"size"
,
Config
.
SIZE
);
param
.
put
(
"size"
,
Config
.
SIZE
);
return
param
;
return
param
;
}
}
public
static
Map
<
String
,
Object
>
pageMesKey
()
{
public
static
Map
<
String
,
Object
>
pageMesKey
()
{
Map
<
String
,
Object
>
param
=
new
HashMap
<>();
Map
<
String
,
Object
>
param
=
new
HashMap
<>();
param
.
put
(
"length"
,
Config
.
SIZE
);
param
.
put
(
"length"
,
Config
.
SIZE
);
param
.
put
(
"paramMap"
,
new
HashMap
<>());
return
param
;
return
param
;
}
}
/**
/**
* code: SUPPLIER-供应商 CUSTOMER-客户 TRANSPORTERS-运输商
* code: SUPPLIER-供应商 CUSTOMER-客户 TRANSPORTERS-运输商
*
*
...
...
app/src/main/java/com/wd/workoffice/util/ddmfilter/MesTicketListFilterData.java
0 → 100644
浏览文件 @
b0561b7e
package
com
.
wd
.
workoffice
.
util
.
ddmfilter
;
import
android.content.Context
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
com.scwang.smartrefresh.layout.SmartRefreshLayout
;
import
com.wd.workoffice.R
;
import
com.wd.workoffice.app.WorkApp
;
import
com.wd.workoffice.bean.listener.FourMenuClickListener
;
import
com.wd.workoffice.bean.listener.ThreeMenuClickListener
;
import
com.wd.workoffice.ui.adapter.FilterAdapter
;
import
com.wd.workoffice.widget.DropDownMenu
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
androidx.recyclerview.widget.LinearLayoutManager
;
import
androidx.recyclerview.widget.RecyclerView
;
/**
* author : flexible
* email : lgd19940421@163.com
* github: https://github.com/FlexibleXd
**/
public
class
MesTicketListFilterData
{
DropDownMenu
menu
;
private
List
<
View
>
viewList
;
private
View
mainView
;
private
RecyclerView
rvData
;
private
SmartRefreshLayout
srlRefresh
;
private
List
<
String
>
statusList
=
Arrays
.
asList
(
"客户姓名"
,
"产品名称"
,
"制单日期"
,
"任务状态"
);
private
List
<
String
>
typeList
=
Arrays
.
asList
(
"全部类型"
,
"厂内库"
,
"场外库"
);
FourMenuClickListener
listener
;
String
[]
TABLIST
=
new
String
[]{
"客户姓名"
,
"产品名称"
,
"制单日期"
,
"任务状态"
};
Context
context
;
public
MesTicketListFilterData
(
Context
context
,
DropDownMenu
menu
,
FourMenuClickListener
listener
)
{
this
.
context
=
context
;
this
.
menu
=
menu
;
this
.
listener
=
listener
;
initView
();
}
private
void
initView
()
{
mainView
=
LayoutInflater
.
from
(
context
).
inflate
(
R
.
layout
.
view_ticket
,
null
);
rvData
=
mainView
.
findViewById
(
R
.
id
.
rv_data
);
srlRefresh
=
mainView
.
findViewById
(
R
.
id
.
srl_refresh
);
rvData
.
setLayoutManager
(
new
LinearLayoutManager
(
context
,
RecyclerView
.
VERTICAL
,
false
));
viewList
=
new
ArrayList
<>();
addTabView
(
typeList
,
1
);
addTabView
(
statusList
,
2
);
addTabView
(
typeList
,
3
);
addTabView
(
typeList
,
4
);
menu
.
setDropDownMenu
(
Arrays
.
asList
(
TABLIST
),
viewList
,
mainView
);
}
private
void
addTabView
(
List
<
String
>
dataList
,
int
type
)
{
View
view
=
LayoutInflater
.
from
(
WorkApp
.
getApp
()).
inflate
(
R
.
layout
.
view_filter_pro
,
null
);
RecyclerView
rvData
=
view
.
findViewById
(
R
.
id
.
rv_filter
);
rvData
.
setLayoutManager
(
new
LinearLayoutManager
(
WorkApp
.
getApp
(),
RecyclerView
.
VERTICAL
,
false
));
FilterAdapter
filterAdapter
=
new
FilterAdapter
(
R
.
layout
.
item_filter
,
dataList
);
filterAdapter
.
bindToRecyclerView
(
rvData
);
viewList
.
add
(
view
);
filterAdapter
.
setOnItemClickListener
((
adapter
,
v
,
position
)
->
{
filterAdapter
.
setChoosePos
(
position
);
menu
.
setTabText
(
dataList
.
get
(
position
));
if
(
listener
!=
null
)
{
switch
(
type
)
{
case
1
:
listener
.
clickOne
(
dataList
.
get
(
position
));
break
;
case
2
:
listener
.
clickTwo
(
dataList
.
get
(
position
));
break
;
}
}
menu
.
closeMenu
();
filterAdapter
.
notifyDataSetChanged
();
});
}
public
SmartRefreshLayout
getSrlRefresh
()
{
return
srlRefresh
;
}
public
void
setSrlRefresh
(
SmartRefreshLayout
srlRefresh
)
{
this
.
srlRefresh
=
srlRefresh
;
}
public
RecyclerView
getRvData
()
{
return
rvData
;
}
public
void
setRvData
(
RecyclerView
rvData
)
{
this
.
rvData
=
rvData
;
}
}
app/src/main/res/layout/view_ticket.xml
浏览文件 @
b0561b7e
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
<LinearLayout
<LinearLayout
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"
wrap_cont
ent"
android:layout_height=
"
match_par
ent"
android:orientation=
"vertical"
>
android:orientation=
"vertical"
>
<LinearLayout
<LinearLayout
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论