Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
company_app
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
毛细亚
company_app
Commits
cac1397a
提交
cac1397a
authored
11月 03, 2025
作者:
毛细亚
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新企微侧边栏
上级
c446a18e
隐藏空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
364 行增加
和
24 行删除
+364
-24
game.js
src/api/game.js
+14
-0
applyGift.vue
src/views/components/giftRecord/applyGift.vue
+8
-8
confirmLayer.vue
src/views/components/giftRecord/confirmLayer.vue
+2
-1
oneDay.vue
src/views/components/giftRecord/giftDetails/oneDay.vue
+2
-2
roleRecharge.vue
src/views/components/giftRecord/giftDetails/roleRecharge.vue
+3
-2
roleTimeRecharge.vue
...ws/components/giftRecord/giftDetails/roleTimeRecharge.vue
+2
-1
SendEmailDialog.vue
src/views/components/taskList/SendEmailDialog.vue
+212
-0
taskDetails.vue
src/views/components/taskList/taskDetails.vue
+83
-5
uesrTask.vue
src/views/components/taskList/uesrTask.vue
+38
-5
没有找到文件。
src/api/game.js
浏览文件 @
cac1397a
...
...
@@ -1453,3 +1453,17 @@ export function useRightList(data) {
})
})
}
// 发送邮件
export
function
sendEmail
(
data
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
cross_systemRequest
({
system
:
'zhangyou'
,
api
:
'/api/operator_task/sendEmail'
,
params
:
data
}).
then
((
res
)
=>
{
resolve
(
res
)
}).
catch
((
error
)
=>
{
reject
(
error
)
})
})
}
src/views/components/giftRecord/applyGift.vue
浏览文件 @
cac1397a
...
...
@@ -8,7 +8,7 @@
>
<div>
<el-form
ref=
"ruleForm"
:model=
"ruleForm"
label-width=
"100px"
class=
"content"
>
<el-form-item
label=
"选择角色"
>
<el-form-item
label=
"选择角色
:
"
>
<el-select
v-model=
"ruleForm.role_id"
placeholder=
"请选择角色"
style=
"width:90%;margin-bottom:10px;"
@
change=
"selectRole"
>
<el-option
v-for=
"(item,index) in roleList"
...
...
@@ -19,7 +19,7 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"活动类型"
>
<el-form-item
label=
"活动类型
:
"
>
<el-select
v-model=
"ruleForm.gift_type"
placeholder=
"请选择"
style=
"width:90%;margin-bottom:10px;"
@
change=
"giftTypeResult"
>
<el-option
v-for=
"(item,index) in giftTypeList"
...
...
@@ -31,7 +31,7 @@
</el-select>
</el-form-item>
<!-- 活动类型为角色累充的时候 活动可以多选其他的都为单选 -->
<el-form-item
label=
"选择活动"
prop=
"rule_id"
>
<el-form-item
label=
"选择活动
:
"
prop=
"rule_id"
>
<el-select
v-model=
"ruleForm.rule_id"
:disabled=
"activeList.length==0"
placeholder=
"请选择"
style=
"width:90%;margin-bottom:10px;"
:multiple=
"ruleForm.gift_type==1 || ruleForm.gift_type == 4 || ruleForm.gift_type== 5 "
clearable
@
change=
"activeListResult"
>
<el-option
v-for=
"(item,index) in activeList"
...
...
@@ -56,11 +56,11 @@
</el-form>
<!-- 申请礼包 -->
<!-- 角色累充 -->
<roleRecharge
v-if=
"showGiftDetails && (ruleForm.gift_type==1 || ruleForm.gift_type==4 || ruleForm.gift_type==5) && roleActiveInfo.length>0"
:show
.
sync=
"showGiftDetails"
:request-loading=
"requestLoading"
:active-info=
"roleActiveInfo"
:gift-info=
"giftDetailsInfo"
title=
"礼包详情"
/>
<roleRecharge
v-if=
"showGiftDetails && (ruleForm.gift_type==1 || ruleForm.gift_type==4 || ruleForm.gift_type==5) && roleActiveInfo.length>0"
:show
.
sync=
"showGiftDetails"
:request-loading=
"requestLoading"
:active-info=
"roleActiveInfo"
:
task_id=
"task_id"
:
gift-info=
"giftDetailsInfo"
title=
"礼包详情"
/>
<!-- 时间段累充 和 单日累充 积分关的情况 -->
<roleTimeRecharge
v-if=
"showGiftDetails && (ruleForm.gift_type==2 || (ruleForm.gift_type==3 && activeInfo.exchange_score_status==2 ) ) && activeInfo.id "
:change-date=
"changeDate"
:request-loading=
"requestLoading"
:show
.
sync=
"showGiftDetails"
:active-info=
"activeInfo"
:gift-info=
"giftDetailsInfo"
title=
"礼包详情"
@
changeDateResult=
"changeDateResult"
@
giftDetailsInfo=
"requestDetailsInfo"
/>
<roleTimeRecharge
v-if=
"showGiftDetails && (ruleForm.gift_type==2 || (ruleForm.gift_type==3 && activeInfo.exchange_score_status==2 ) ) && activeInfo.id "
:change-date=
"changeDate"
:request-loading=
"requestLoading"
:
task_id=
"task_id"
:
show
.
sync=
"showGiftDetails"
:active-info=
"activeInfo"
:gift-info=
"giftDetailsInfo"
title=
"礼包详情"
@
changeDateResult=
"changeDateResult"
@
giftDetailsInfo=
"requestDetailsInfo"
/>
<!-- 单日累充 积分开的情况 -->
<oneDayCharge
v-if=
"showGiftDetails && ruleForm.gift_type==3 && activeInfo.exchange_score_status==1 && activeInfo.id"
:show
.
sync=
"showGiftDetails"
:request-loading=
"requestLoading"
:active-info=
"activeInfo"
:change-date=
"changeDate"
:gift-info=
"giftDetailsInfo"
title=
"礼包详情"
@
changeDateResult=
"changeDateResult"
@
giftDetailsInfo=
"requestDetailsInfo"
/>
<oneDayCharge
v-if=
"showGiftDetails && ruleForm.gift_type==3 && activeInfo.exchange_score_status==1 && activeInfo.id"
:show
.
sync=
"showGiftDetails"
:
task_id=
"task_id"
:
request-loading=
"requestLoading"
:active-info=
"activeInfo"
:change-date=
"changeDate"
:gift-info=
"giftDetailsInfo"
title=
"礼包详情"
@
changeDateResult=
"changeDateResult"
@
giftDetailsInfo=
"requestDetailsInfo"
/>
</div>
</el-drawer>
</
template
>
...
...
@@ -79,8 +79,8 @@
oneDayCharge
,
// 单日累充
roleTimeRecharge
// 角色时间段累充
},
// type 3:image 4:video
props
:
[
'show'
,
'width'
,
'title'
],
// type 3:image 4:video
task_id // 账号任务点击礼包申请过来传递的任务id member_id // 我的任务 任务详情 点击 礼包申请的时候 需要用到任务详情的 member_id,这时候需要传递过来
props
:
[
'show'
,
'width'
,
'title'
,
'task_id'
,
'member_id'
],
data
()
{
return
{
roleList
:
[],
...
...
src/views/components/giftRecord/confirmLayer.vue
浏览文件 @
cac1397a
...
...
@@ -68,7 +68,7 @@
export
default
{
name
:
'confirmLayer'
,
// type 3:image 4:video
props
:
[
'show'
,
'width'
,
'title'
,
'activeInfo'
,
'remark'
],
props
:
[
'show'
,
'width'
,
'title'
,
'activeInfo'
,
'remark'
,
'task_id'
],
data
()
{
return
{
loading
:
false
...
...
@@ -104,6 +104,7 @@
role_id
,
remark
:
this
.
remark
,
recharge_date
:
this
.
activeInfo
[
0
].
recharge_date
||
''
,
task_id
:
this
.
task_id
||
null
,
create_user
:
this
.
cser_name
,
rule
:
rule
}
...
...
src/views/components/giftRecord/giftDetails/oneDay.vue
浏览文件 @
cac1397a
...
...
@@ -127,7 +127,7 @@
<el-button
class=
"btn"
size=
"small"
@
click=
"close"
>
取 消
</el-button>
</span>
<!-- 确认弹窗 -->
<confirmLayer
v-if=
"showConfirmLayer"
:remark=
"remark"
:active-info=
"[activeInfo]"
:show
.
sync=
"showConfirmLayer"
title=
"请核对申请奖品信息"
@
close=
"close"
/>
<confirmLayer
v-if=
"showConfirmLayer"
:remark=
"remark"
:
task_id=
"task_id"
:
active-info=
"[activeInfo]"
:show
.
sync=
"showConfirmLayer"
title=
"请核对申请奖品信息"
@
close=
"close"
/>
</div>
</el-drawer>
</
template
>
...
...
@@ -142,7 +142,7 @@ export default {
components
:
{
confirmLayer
},
props
:
[
'show'
,
'width'
,
'title'
,
'info'
,
'body'
,
'giftInfo'
,
'activeInfo'
,
'changeDate'
,
'requestLoading'
],
props
:
[
'show'
,
'width'
,
'title'
,
'info'
,
'body'
,
'giftInfo'
,
'activeInfo'
,
'changeDate'
,
'requestLoading'
,
'task_id'
],
data
()
{
return
{
remark
:
''
,
...
...
src/views/components/giftRecord/giftDetails/roleRecharge.vue
浏览文件 @
cac1397a
...
...
@@ -57,7 +57,7 @@
<el-button
size=
"small"
class=
"btn"
@
click=
"close"
>
取 消
</el-button>
</span>
<!-- 确认弹窗 -->
<confirmLayer
:is-submit=
"isSubmit"
:remark=
"remark"
:active-info=
"activeInfo"
:show
.
sync=
"showConfirmLayer"
title=
"请核对申请奖品信息"
@
close=
"close"
/>
<confirmLayer
:is-submit=
"isSubmit"
:remark=
"remark"
:
task_id=
"task_id"
:
active-info=
"activeInfo"
:show
.
sync=
"showConfirmLayer"
title=
"请核对申请奖品信息"
@
close=
"close"
/>
</div>
</el-drawer>
</
template
>
...
...
@@ -72,7 +72,7 @@ export default {
components
:
{
confirmLayer
},
props
:
[
'show'
,
'width'
,
'title'
,
'info'
,
'body'
,
'giftInfo'
,
'activeInfo'
,
'requestLoading'
],
props
:
[
'show'
,
'width'
,
'title'
,
'info'
,
'body'
,
'giftInfo'
,
'activeInfo'
,
'requestLoading'
,
'task_id'
],
data
()
{
return
{
isSubmit
:
false
,
...
...
@@ -121,6 +121,7 @@ export default {
role_id
,
remark
:
this
.
remark
,
recharge_date
:
this
.
activeInfo
[
0
].
recharge_date
||
''
,
task_id
:
this
.
task_id
||
null
,
create_user
:
this
.
cser_name
,
rule
:
rule
}
...
...
src/views/components/giftRecord/giftDetails/roleTimeRecharge.vue
浏览文件 @
cac1397a
...
...
@@ -247,6 +247,7 @@
<confirmLayer
v-if=
"showConfirmLayer"
:remark=
"remark"
:task_id=
"task_id"
:active-info=
"[activeInfo]"
:show
.
sync=
"showConfirmLayer"
title=
"请核对申请奖品信息"
...
...
@@ -266,7 +267,7 @@ export default {
components
:
{
confirmLayer
},
props
:
[
'show'
,
'width'
,
'title'
,
'info'
,
'body'
,
'giftInfo'
,
'activeInfo'
,
'changeDate'
,
'requestLoading'
],
props
:
[
'show'
,
'width'
,
'title'
,
'info'
,
'body'
,
'giftInfo'
,
'activeInfo'
,
'changeDate'
,
'requestLoading'
,
'task_id'
],
data
()
{
return
{
remark
:
''
,
...
...
src/views/components/taskList/SendEmailDialog.vue
0 → 100644
浏览文件 @
cac1397a
<!--
* @Description: 发送邮件弹窗组件
* @Date: 2025-10-15
-->
<
template
>
<el-dialog
:visible
.
sync=
"dialogVisible"
title=
"发送邮件"
width=
"300px"
:close-on-click-modal=
"false"
:before-close=
"handleClose"
append-to-body
>
<el-form
ref=
"emailForm"
:model=
"formData"
:rules=
"formRules"
label-width=
"80px"
class=
"email-form"
>
<el-form-item
label=
"邮件标题:"
prop=
"email_title"
>
<el-input
v-model=
"formData.email_title"
placeholder=
"请输入邮件标题"
maxlength=
"100"
show-word-limit
clearable
/>
</el-form-item>
<el-form-item
label=
"邮件内容:"
prop=
"email_content"
>
<el-input
v-model=
"formData.email_content"
type=
"textarea"
:rows=
"8"
placeholder=
"请输入邮件内容"
maxlength=
"1000"
show-word-limit
clearable
/>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"small"
@
click=
"handleClose"
>
取消
</el-button>
<el-button
type=
"primary"
:loading=
"sending"
@
click=
"handleConfirm"
size=
"small"
>
确定
</el-button>
</div>
</el-dialog>
</
template
>
<
script
>
import
{
sendEmail
}
from
'@/api/game'
export
default
{
name
:
'SendEmailDialog'
,
props
:
{
// 控制弹窗显示
visible
:
{
type
:
Boolean
,
default
:
false
},
// 任务ID
taskId
:
{
type
:
[
String
,
Number
],
required
:
true
}
},
data
()
{
return
{
// 弹窗显示状态
dialogVisible
:
false
,
// 发送中状态
sending
:
false
,
// 表单数据
formData
:
{
email_title
:
''
,
email_content
:
''
},
// 表单验证规则
formRules
:
{
email_title
:
[
{
required
:
true
,
message
:
'请输入邮件标题'
,
trigger
:
'blur'
},
{
min
:
1
,
max
:
100
,
message
:
'邮件标题长度在 1 到 100 个字符'
,
trigger
:
'blur'
}
],
email_content
:
[
{
required
:
true
,
message
:
'请输入邮件内容'
,
trigger
:
'blur'
},
{
min
:
1
,
max
:
1000
,
message
:
'邮件内容长度在 1 到 1000 个字符'
,
trigger
:
'blur'
}
]
}
}
},
watch
:
{
visible
(
val
)
{
this
.
dialogVisible
=
val
if
(
!
val
)
{
// 关闭时重置表单
this
.
resetForm
()
}
}
},
methods
:
{
/**
* 关闭弹窗
*/
handleClose
()
{
this
.
dialogVisible
=
false
this
.
$emit
(
'update:visible'
,
false
)
this
.
resetForm
()
},
/**
* 重置表单
*/
resetForm
()
{
this
.
formData
=
{
email_title
:
''
,
email_content
:
''
}
// 清除表单验证
this
.
$nextTick
(()
=>
{
this
.
$refs
.
emailForm
&&
this
.
$refs
.
emailForm
.
clearValidate
()
})
},
/**
* 确认发送邮件
*/
handleConfirm
()
{
// 表单验证
this
.
$refs
.
emailForm
.
validate
((
valid
)
=>
{
if
(
valid
)
{
this
.
sendEmailRequest
()
}
else
{
console
.
log
(
'表单验证失败'
)
return
false
}
})
},
/**
* 发送邮件请求
*/
async
sendEmailRequest
()
{
try
{
this
.
sending
=
true
const
params
=
{
id
:
this
.
taskId
,
email_title
:
this
.
formData
.
email_title
,
email_content
:
this
.
formData
.
email_content
}
const
res
=
await
sendEmail
(
params
)
if
(
res
.
status_code
===
1
)
{
this
.
$message
({
message
:
res
.
msg
||
'邮件发送成功'
,
type
:
'success'
})
// 通知父组件发送成功
this
.
$emit
(
'send-success'
)
// 关闭弹窗
this
.
handleClose
()
}
}
catch
(
error
)
{
console
.
error
(
'发送邮件失败:'
,
error
)
}
finally
{
this
.
sending
=
false
}
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.email-form
{
::v-deep
.el-form-item
{
margin-bottom
:
22px
;
}
::v-deep
.el-textarea__inner
{
resize
:
vertical
;
font-family
:
inherit
;
}
::v-deep
.el-input__count
{
background-color
:
transparent
;
}
}
.dialog-footer
{
text-align
:
right
;
padding
:
10px
20px
0
;
border
:
none
;
.el-button
{
min-width
:
80px
;
}
}
</
style
>
src/views/components/taskList/taskDetails.vue
浏览文件 @
cac1397a
...
...
@@ -221,13 +221,35 @@
</div>
</div>
</div>
<el-button
v-if=
"kfhList.length == 0 && taskDetails.status != 3 && !is_finished"
<!-- 发送邮件按钮 -->
<!-- -->
<el-button
v-if=
"kfhList.length == 0 && assionInfo?.email?.is_send_email == 1 && !assionInfo?.email?.send_status && assionInfo.status != 3"
type=
"primary"
size=
"small"
style=
"margin-top: 20px"
style=
"margin-top: 20px; margin-right: 10px"
@
click=
"showEmailDialog = true"
>
发送邮件
</el-button>
<!-- 礼包申请按钮 单日申请礼包任务和累充礼包申请时显示 -->
<!-- v-if="(assionInfo.plan_type == 19 || assionInfo.plan_type == 21) && assionInfo.status != 3" -->
<el-button
v-if=
"(assionInfo.plan_type == 19 || assionInfo.plan_type == 21) && assionInfo.status != 3"
type=
"primary"
size=
"small"
style=
"margin-top: 20px; margin-right: 10px"
:loading=
"loading"
@
click=
"giftApply()"
>
礼包申请
</el-button>
<!-- 完成任务按钮 -->
<el-button
v-if=
"kfhList.length == 0 && taskDetails.status != 3 && !is_finished"
type=
"primary"
size=
"small"
style=
"margin-top: 20px"
@
click=
"showLayer = true"
>
完成任务
</el-button>
</div>
</div>
</el-drawer>
...
...
@@ -301,6 +323,24 @@
</el-form>
</div>
</layer>
<!-- 发送邮件弹窗 -->
<SendEmailDialog
:visible
.
sync=
"showEmailDialog"
:task-id=
"assionInfo.id"
@
send-success=
"handleEmailSendSuccess"
/>
<!-- 礼包申请弹窗 -->
<applyGift
v-if=
"showApplyGift"
:show
.
sync=
"showApplyGift"
:member_id=
"assionInfo.member_id"
title=
"礼包申请"
width=
"25%"
:task_id=
"task_id"
@
requestData=
"handleGiftApplySuccess"
/>
</div>
</
template
>
<
script
>
...
...
@@ -315,13 +355,17 @@
}
from
'@/api/game'
import
{
memberBindExternalUser
}
from
'@/api/works'
import
layer
from
'@/components/dialog.vue'
import
SendEmailDialog
from
'./SendEmailDialog.vue'
import
applyGift
from
'@/views/components/giftRecord/applyGift.vue'
export
default
{
computed
:
{
...
mapState
(
'game'
,
[
'taskDetails'
]),
...
mapState
(
'user'
,
[
'userInfo'
])
},
components
:
{
layer
layer
,
SendEmailDialog
,
applyGift
},
props
:
[
'show'
],
data
()
{
...
...
@@ -337,6 +381,9 @@
assionInfo
:
{},
current
:
0
,
showLayer
:
false
,
showEmailDialog
:
false
,
// 控制发送邮件弹窗显示
showApplyGift
:
false
,
// 控制礼包申请弹窗显示
task_id
:
null
,
// 礼包申请任务ID
dialogRemake
:
''
,
webForm
:
{
trace_result
:
''
,
...
...
@@ -541,7 +588,38 @@
}
catch
(
error
)
{
this
.
loading
=
false
}
}
},
/**
* 处理邮件发送成功的回调
* 设置任务的邮件发送状态为已发送
*/
handleEmailSendSuccess
()
{
// 标记任务已发送邮件
this
.
assionInfo
.
send_status
=
1
// 可以选择刷新任务详情
// this.requestTaskDetails()
},
/**
* 显示礼包申请弹窗
* @param {Object} item - 任务信息对象,包含任务ID
*/
giftApply
()
{
this
.
task_id
=
this
.
assionInfo
.
id
||
null
this
.
showApplyGift
=
true
},
/**
* 处理礼包申请完成后的回调
* 关闭弹窗并显示成功提示
*/
handleGiftApplySuccess
()
{
this
.
showApplyGift
=
false
this
.
$message
({
message
:
'礼包申请已提交'
,
type
:
'success'
})
}
}
}
</
script
>
...
...
src/views/components/taskList/uesrTask.vue
浏览文件 @
cac1397a
...
...
@@ -76,9 +76,11 @@
</div>
</div>
<div
class=
"btns rowFlex allCenter"
style=
"margin-top: 20px"
>
<el-button
:disabled=
"item.status == 3"
:loading=
"remarkLoading"
<el-button
size=
"small"
:disabled=
"item.status == 3"
:loading=
"remarkLoading"
@
click=
"saveRemak(item, index)"
>
保存
</el-button>
<el-button
type=
"primary"
:disabled=
"item.status == 3"
:loading=
"taskLoading"
<!-- 单日申请礼包任务才展示礼包申请按钮 v-if="item.plan_type == 19 || item.plan_type == 21" 新增 累充礼包申请时 和 单日礼包申请一样 显示 礼包申请按钮 -->
<el-button
type=
"primary"
size=
"small"
v-if=
"item.plan_type == 19 || item.plan_type == 21"
:loading=
"taskLoading"
@
click=
"giftApply(item)"
>
礼包申请
</el-button>
<el-button
type=
"primary"
size=
"small"
:disabled=
"item.status == 3"
:loading=
"taskLoading"
@
click=
"completeTask(item, index)"
>
保存并完成任务
</el-button>
</div>
</el-collapse-item>
...
...
@@ -92,17 +94,28 @@
</div>
</div>
</div>
<!-- 礼包申请弹窗 -->
<applyGift
v-if=
"showApplyGift"
:show
.
sync=
"showApplyGift"
title=
"礼包申请"
width=
"25%"
:task_id=
"task_id"
@
requestData=
"handleGiftApplySuccess"
/>
</div>
</template>
<
script
>
import
{
taskTrack
,
taskRecord
,
logsSave
,
searchcondition
}
from
'@/api/game'
import
{
mapState
}
from
'vuex'
import
textEditor
from
'@/components/textEditor.vue'
import
noContent
from
'@/components/noContent.vue'
import
noContent
from
'@/components/noContent.vue'
import
applyGift
from
'@/views/components/giftRecord/applyGift.vue'
export
default
{
components
:
{
textEditor
,
noContent
,
applyGift
},
data
()
{
return
{
...
...
@@ -131,6 +144,8 @@
showLayer
:
false
,
taskLoading
:
false
,
remarkLoading
:
false
,
showApplyGift
:
false
,
task_id
:
null
,
pageInfo
:
{
page
:
0
,
page_size
:
20
,
...
...
@@ -189,8 +204,26 @@
this
.
searchTrackList
()
this
.
searchconditionError
()
},
methods
:
{
searchcondition
()
{
methods
:
{
/**
* 显示礼包申请弹窗
*/
giftApply
(
item
)
{
this
.
task_id
=
item
.
id
||
null
this
.
showApplyGift
=
true
},
/**
* 处理礼包申请完成后的回调
* 关闭弹窗并显示成功提示
*/
handleGiftApplySuccess
()
{
this
.
showApplyGift
=
false
this
.
$message
({
message
:
'礼包申请已提交'
,
type
:
'success'
})
},
searchcondition
()
{
const
data
=
{
type
:
'dictionaries'
,
table_name
:
'zs_operator_plan'
,
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论