Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
company_app
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
毛细亚
company_app
Commits
a00120de
提交
a00120de
authored
4月 27, 2026
作者:
施汉文
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
新增抽屉组件并在举报弹窗中替换原有实现,优化了样式和结构
上级
1afeb6e9
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
373 行增加
和
114 行删除
+373
-114
Drawer.vue
src/components/common/Drawer.vue
+70
-0
index.vue
src/views/popup/reportPopup/index.vue
+303
-114
没有找到文件。
src/components/common/Drawer.vue
0 → 100644
浏览文件 @
a00120de
<
template
>
<el-drawer
:visible=
"visible"
:title=
"title"
:size=
"size"
:append-to-body=
"true"
@
close=
"$emit('close')"
:show-close=
"false"
>
<template
#
title
>
<div
class=
"flex items-center"
>
<svg-icon
@
click=
"$emit('close')"
svgName=
"icon-fanhui"
class=
"mr-[8px] w-[20px] text-[20px] cursor-pointer"
></svg-icon>
<span
class=
"text-[13px] text-[#131920] leading-[13px]"
>
{{
title
}}
</span>
</div>
</
template
>
<slot></slot>
<span
class=
"dialog-footer rowFlex"
>
<slot
name=
"footer"
>
<el-button
class=
"btn"
size=
"small"
@
click=
"$emit('close')"
>
取 消
</el-button>
<el-button
class=
"btn"
type=
"primary"
size=
"small"
:disabled=
"okDisabled"
@
click=
"$emit('ok')"
>
确 定
</el-button>
</slot>
</span>
</el-drawer>
</template>
<
script
>
export
default
{
name
:
"Ui-Drawer"
,
props
:
[
"visible"
,
"size"
,
"title"
,
"okDisabled"
],
};
</
script
>
<
style
scoped
>
::v-deep
.el-drawer__header
{
padding
:
12px
0px
;
margin
:
0
12px
;
}
.dialog-footer
{
width
:
100%
;
position
:
absolute
;
bottom
:
0
;
padding-top
:
20px
;
padding-bottom
:
20px
;
border-top
:
0
;
justify-content
:
flex-end
;
background
:
#fff
;
z-index
:
10
;
.btn
{
width
:
60px
;
height
:
32px
;
border-radius
:
6px
;
}
}
</
style
>
src/views/popup/reportPopup/index.vue
浏览文件 @
a00120de
<
template
>
<
el-d
rawer
:lock-scroll=
"true
"
<
D
rawer
class=
"report-popup-drawer
"
title=
"举报申请"
:visible=
"show"
size=
"400px"
:append-to-body=
"true"
size=
"362px"
@
close=
"close"
>
<div
class=
"drawer-content-main"
>
...
...
@@ -27,79 +26,84 @@
@
result=
"mainGameResult"
/>
</el-form-item>
<el-form-item
label=
""
>
<el-radio-group
v-model=
"reportForm.report_role_id_type"
>
<el-radio
label=
"cp_role_id"
>
CP角色ID
</el-radio>
<el-radio
label=
"role_id"
>
掌游角色ID
</el-radio>
</el-radio-group>
</el-form-item>
<!--被举报人 -->
<inputTags
:input-select-list
.
sync=
"reportForm.cp_role_id"
label-text=
"被举报人CP角色ID"
placeholder=
"请输入被举报人"
:disabled=
"reportForm.main_game_id === ''"
rule-prop=
"cp_role_id"
@
inputChange=
"inputChange"
/>
<inputTags
:input-select-list
.
sync=
"reportForm.role_name"
label-text=
"被举报人角色名"
placeholder=
"输入CP角色ID后自动获取"
:disabled=
"true"
rule-prop=
"role_name"
/>
<inputTags
:input-select-list
.
sync=
"reportForm.server_name"
label-text=
"被举报人区服"
placeholder=
"输入CP角色ID后自动获取"
:disabled=
"true"
rule-prop=
"server_name"
/>
<!-- 仅 currUserList 有生态运营数据时展示 -->
<template
v-if=
"hasEcoUserData"
>
<el-form-item
label=
"被举报人生态运营"
prop=
"eco_user"
>
<div
class=
"role-card"
>
<el-form-item
label=
""
class=
"role-type-item"
>
<el-radio-group
v-model=
"reportForm.report_role_id_type"
>
<el-radio
label=
"cp_role_id"
>
CP角色ID
</el-radio>
<el-radio
label=
"role_id"
>
掌游角色ID
</el-radio>
</el-radio-group>
</el-form-item>
<!--被举报人 -->
<inputTags
:input-select-list
.
sync=
"reportForm.cp_role_id"
label-text=
"被举报人CP角色ID"
placeholder=
"请输入被举报人"
:disabled=
"reportForm.main_game_id === ''"
rule-prop=
"cp_role_id"
@
inputChange=
"inputChange"
/>
<inputTags
:input-select-list
.
sync=
"reportForm.role_name"
label-text=
"被举报人角色名"
placeholder=
"输入CP角色ID后自动获取"
:disabled=
"true"
rule-prop=
"role_name"
/>
<inputTags
:input-select-list
.
sync=
"reportForm.server_name"
label-text=
"被举报人区服"
placeholder=
"输入CP角色ID后自动获取"
:disabled=
"true"
rule-prop=
"server_name"
/>
<!-- 仅 currUserList 有生态运营数据时展示 -->
<template
v-if=
"hasEcoUserData"
>
<el-form-item
label=
"被举报人生态运营"
prop=
"eco_user"
>
<el-input
:value=
"ecoUserNamesDisplay"
style=
"width: 100%"
type=
"input"
disabled
/>
</el-form-item>
</
template
>
</div>
<div
class=
"role-card"
>
<el-form-item
label=
""
class=
"role-type-item"
>
<el-radio-group
v-model=
"reportForm.role_id_type"
>
<el-radio
label=
"cp_role_id"
>
CP角色ID
</el-radio>
<el-radio
label=
"role_id"
>
掌游角色ID
</el-radio>
</el-radio-group>
</el-form-item>
<!-- 举报人 -->
<el-form-item
label=
"举报人CP角色ID"
prop=
"report_cp_role_id"
>
<el-input
:value=
"ecoUserNamesDisplay
"
v-model=
"reportForm.report_cp_role_id
"
style=
"width: 100%"
type=
"input"
placeholder=
"请输入举报人"
@
change=
"change_report_role_id"
></el-input>
</el-form-item>
<el-form-item
label=
"举报人角色名"
prop=
"report_role_name"
>
<el-input
v-model=
"reportForm.report_role_name"
style=
"width: 100%"
placeholder=
"输入CP角色ID后自动获取"
disabled
/
>
></el-input
>
</el-form-item>
</
template
>
<el-form-item
label=
""
>
<el-radio-group
v-model=
"reportForm.role_id_type"
>
<el-radio
label=
"cp_role_id"
>
CP角色ID
</el-radio>
<el-radio
label=
"role_id"
>
掌游角色ID
</el-radio>
</el-radio-group>
</el-form-item>
<!-- 举报人 -->
<el-form-item
label=
"举报人CP角色ID"
prop=
"report_cp_role_id"
>
<el-input
v-model=
"reportForm.report_cp_role_id"
style=
"width: 100%"
placeholder=
"请输入举报人"
@
change=
"change_report_role_id"
></el-input>
</el-form-item>
<el-form-item
label=
"举报人角色名"
prop=
"report_role_name"
>
<el-input
v-model=
"reportForm.report_role_name"
style=
"width: 100%"
placeholder=
"输入CP角色ID后自动获取"
disabled
></el-input>
</el-form-item>
<el-form-item
label=
"举报人区服"
prop=
"report_server_name"
>
<el-input
v-model=
"reportForm.report_server_name"
placeholder=
"输入CP角色ID后自动获取"
style=
"width: 100%"
disabled
></el-input>
</el-form-item>
<el-form-item
label=
"举报人区服"
prop=
"report_server_name"
>
<el-input
v-model=
"reportForm.report_server_name"
placeholder=
"输入CP角色ID后自动获取"
style=
"width: 100%"
disabled
></el-input>
</el-form-item>
</div>
<
template
v-if=
"hasEcoUserData"
>
<el-form-item
label=
"是否有生态运营"
prop=
"is_negotiation"
>
<el-radio-group
v-model=
"reportForm.is_negotiation"
>
...
...
@@ -108,7 +112,7 @@
</el-radio-group>
</el-form-item>
</
template
>
<el-form-item
label=
"违规操作"
prop=
"violation_type"
>
<el-select
v-model=
"reportForm.violation_type"
...
...
@@ -125,28 +129,28 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"详情"
prop=
"remark"
>
<el-form-item
label=
"详情"
prop=
"remark"
class=
"detail-form-item"
>
<textEditor
:remark
.
sync=
"reportForm.remark"
domid=
"report_content"
style=
"width: 100%; margin-bottom: 60px
"
class=
"report-editor
"
:contenteditable=
"true"
@
resultReamrk=
"resultReamrk"
/>
</el-form-item>
</el-form>
</div>
<span
class=
"dialog-footer rowFlex"
>
<el-button
class=
"btn"
type=
"primary"
:loading=
"loading"
@
click=
"submit"
>
确 定
</el-button>
<el-button
class=
"btn"
@
click=
"close"
>
取 消
</el-button>
</span>
</div>
</el-drawer>
<
template
#
footer
>
<el-button
class=
"btn"
@
click=
"close"
>
取消
</el-button>
<el-button
class=
"btn"
type=
"primary"
:loading=
"loading"
@
click=
"submit"
>
确定
</el-button>
</
template
>
</Drawer>
</template>
<
script
type=
"text/javascript"
>
import
mainGameSelect
from
'@/components/mainGame.vue'
...
...
@@ -154,11 +158,13 @@
import
{
searchcondition
,
reportAdd
,
currUserList
}
from
'@/api/game'
import
{
mapState
}
from
'vuex'
import
inputTags
from
'@/components/inputTags/index.vue'
import
Drawer
from
'@/components/common/Drawer.vue'
export
default
{
components
:
{
mainGameSelect
,
textEditor
,
inputTags
inputTags
,
Drawer
},
computed
:
{
...
mapState
(
'game'
,
[
'accountSelect'
]),
...
...
@@ -679,20 +685,222 @@
</
script
>
<
style
lang=
"scss"
scoped
>
//
::v-deep
.el-drawer
{
//
height
:
100%
;
//
}
::v-deep
.report-popup-drawer
{
max-width
:
100vw
;
.el-drawer__header
{
height
:
46px
;
padding
:
12px
0
;
margin
:
0
12px
;
border-bottom
:
1px
solid
#ebedf0
;
box-sizing
:
border-box
;
.flex
{
width
:
100%
;
}
span
{
color
:
#131920
;
font-family
:
PingFang
SC
,
PingFangSC-Medium
,
sans-serif
;
font-size
:
13px
;
font-weight
:
500
;
line-height
:
22px
;
}
}
.el-drawer__body
{
position
:
relative
;
height
:
calc
(
100%
-
46px
);
overflow
:
hidden
;
background
:
#fff
;
box-sizing
:
border-box
;
}
.dialog-footer
{
height
:
56px
;
padding
:
12px
;
border-top
:
1px
solid
#ebedf0
;
box-sizing
:
border-box
;
gap
:
12px
;
.btn
{
display
:
inline-flex
;
align-items
:
center
;
justify-content
:
center
;
width
:
auto
;
min-width
:
60px
;
padding
:
0
16px
;
border-radius
:
6px
;
font-size
:
14px
;
line-height
:
22px
;
span
{
line-height
:
22px
;
}
}
}
}
.drawer-content-main
{
width
:
100%
;
height
:
100%
;
overflow
:
auto
;
height
:
calc
(
100%
-
56px
);
overflow-y
:
auto
;
overflow-x
:
hidden
;
}
.drawer-content
{
width
:
100%
;
height
:
auto
;
padding
:
20px
;
padding-top
:
0
;
padding
:
12px
12px
24px
;
box-sizing
:
border-box
;
}
.reportForm
{
display
:
flex
;
flex-direction
:
column
;
gap
:
20px
;
}
.role-card
{
display
:
flex
;
flex-direction
:
column
;
gap
:
12px
;
width
:
100%
;
padding
:
12px
;
border-radius
:
4px
;
background
:
#f6f8f9
;
box-sizing
:
border-box
;
}
.report-editor
{
display
:
block
;
width
:
100%
;
}
::v-deep
.reportForm
{
.el-form-item
{
margin-bottom
:
0
;
}
.el-form-item__label
{
display
:
flex
;
align-items
:
center
;
padding
:
0
0
8px
;
color
:
#6d7176
;
font-family
:
PingFang
SC
,
PingFangSC-Regular
,
sans-serif
;
font-size
:
13px
;
font-weight
:
400
;
line-height
:
22px
;
}
.el-form-item.is-required
:not
(
.is-no-asterisk
)
>
.el-form-item__label
::before
{
color
:
#f53f3f
;
margin-right
:
4px
;
}
.el-input__inner
,
.el-select
.el-input__inner
{
height
:
34px
;
padding
:
5px
12px
;
border-color
:
#d6d9e0
;
border-radius
:
6px
;
color
:
#323335
;
font-size
:
14px
;
line-height
:
22px
;
}
.el-input.is-disabled
.el-input__inner
{
border-color
:
#d6d9e0
;
background-color
:
#f7f8fa
;
color
:
#c9cdd4
;
cursor
:
not-allowed
;
}
.el-input__inner
::placeholder
,
.el-textarea__inner
::placeholder
{
color
:
#c9cdd4
;
}
.role-type-item
.el-form-item__content
{
line-height
:
22px
;
}
.el-radio-group
{
display
:
flex
;
align-items
:
center
;
gap
:
40px
;
line-height
:
22px
;
}
.el-radio
{
margin-right
:
0
;
color
:
#323335
;
font-size
:
14px
;
line-height
:
22px
;
}
.el-radio__label
{
padding-left
:
8px
;
color
:
#323335
;
font-size
:
14px
;
line-height
:
22px
;
}
.el-radio__input.is-checked
.el-radio__inner
{
border-color
:
#00bf8a
;
background
:
#00bf8a
;
}
.el-radio__input.is-checked
+
.el-radio__label
{
color
:
#323335
;
}
.el-select
.el-input
.el-select__caret
{
color
:
#86909c
;
font-size
:
14px
;
}
}
::v-deep
.role-card
{
.inputItem
{
margin-bottom
:
0
;
}
.alias_list
{
min-height
:
34px
;
padding
:
0
6px
;
border-color
:
#d6d9e0
;
border-radius
:
6px
;
background
:
#fff
;
box-sizing
:
border-box
;
}
.alias_list_disabled
{
background
:
#f7f8fa
;
}
.alias_input
{
height
:
32px
;
padding-left
:
6px
;
color
:
#323335
;
font-size
:
14px
;
line-height
:
22px
;
}
.alias_input
::placeholder
{
color
:
#c9cdd4
;
}
.alias_item
{
margin
:
3px
4px
3px
0
;
}
}
::v-deep
.detail-form-item
{
.el-form-item__label
{
padding-bottom
:
8px
;
}
}
.selectItem
{
...
...
@@ -724,23 +932,5 @@
margin-right
:
10px
;
}
.dialog-footer
{
width
:
100%
;
height
:
auto
;
position
:
absolute
;
right
:
0px
;
bottom
:
0px
;
padding-right
:
10px
;
padding-top
:
20px
;
padding-bottom
:
20px
;
border-top
:
1px
solid
rgba
(
0
,
0
,
0
,
0.06
);
justify-content
:
flex-end
;
background
:
#fff
;
.btn
{
width
:
84px
;
height
:
32px
;
}
}
</
style
>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论