Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
company_app
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
毛细亚
company_app
Commits
e666a99a
提交
e666a99a
authored
5月 11, 2026
作者:
施汉文
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor: 优化多个页面UI样式与举报弹窗功能
上级
5629faa0
显示空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
163 行增加
和
24 行删除
+163
-24
git-commit-message.md
.trae/rules/git-commit-message.md
+8
-0
textEditor.vue
src/components/textEditor.vue
+47
-5
ViolationRecord.vue
src/views/ViolationRecord.vue
+3
-1
index.vue
src/views/popup/reportPopup/index.vue
+49
-1
roleInfo.vue
src/views/roleInfo.vue
+56
-17
没有找到文件。
.trae/rules/git-commit-message.md
0 → 100644
浏览文件 @
e666a99a
---
alwaysApply
:
true
scene
:
git_message
---
在此处编写规则,自定义 AI 生成提交信息的风格。
必须简洁明了,一眼能看出完成或修改或优化的内容,不要写详细描述,不要超过两行。
\ No newline at end of file
src/components/textEditor.vue
浏览文件 @
e666a99a
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
<!-- 简单版的图文编辑器 可以上传 截图上传图片 能实现简单的图文编辑功能 -->
<!-- 简单版的图文编辑器 可以上传 截图上传图片 能实现简单的图文编辑功能 -->
<div
class=
"textEditor"
>
<div
class=
"textEditor"
>
<div
<div
v-if=
"showViewImage"
class=
"rowFlex columnCenter textEditorTitle"
class=
"rowFlex columnCenter textEditorTitle"
@
click
.
stop=
"watchImage"
@
click
.
stop=
"watchImage"
>
>
...
@@ -34,7 +35,9 @@
...
@@ -34,7 +35,9 @@
title=
"查看大图"
title=
"查看大图"
append-to-body
append-to-body
center
center
top=
"80%"
width=
"600px"
top=
"0"
custom-class=
"watchImageDialog"
:visible
.
sync=
"showScoleImage"
:visible
.
sync=
"showScoleImage"
>
>
<div
class=
"showScoleImageContent columnFlex allCenter"
v-html=
"remark"
></div>
<div
class=
"showScoleImageContent columnFlex allCenter"
v-html=
"remark"
></div>
...
@@ -46,7 +49,24 @@
...
@@ -46,7 +49,24 @@
import
{
base64toFile
}
from
'@/utils/index'
import
{
base64toFile
}
from
'@/utils/index'
export
default
{
export
default
{
name
:
'textEditor'
,
name
:
'textEditor'
,
props
:
[
'remark'
,
'contenteditable'
,
'domid'
],
// remark 原来的图文内容 contenteditable 是否可编辑 domid 编辑器的 DomId resultReamrk 方法吐出最后的编辑好的内容
props
:
{
remark
:
{
type
:
String
,
default
:
''
},
contenteditable
:
{
type
:
Boolean
,
default
:
false
},
domid
:
{
type
:
String
,
default
:
''
},
showViewImage
:
{
type
:
Boolean
,
default
:
true
}
},
// remark 原来的图文内容 contenteditable 是否可编辑 domid 编辑器的 DomId resultReamrk 方法吐出最后的编辑好的内容
data
()
{
data
()
{
return
{
return
{
srcList
:
[],
srcList
:
[],
...
@@ -59,7 +79,9 @@
...
@@ -59,7 +79,9 @@
mounted
()
{
mounted
()
{
this
.
$nextTick
(()
=>
{
this
.
$nextTick
(()
=>
{
this
.
chatMessage
=
document
.
getElementById
(
`
${
this
.
domid
}
`
)
this
.
chatMessage
=
document
.
getElementById
(
`
${
this
.
domid
}
`
)
this
.
remark
&&
this
.
remark
.
length
>
0
&&
this
.
contenteditable
?
this
.
chatMessage
.
innerHTML
=
this
.
remark
:
''
if
(
this
.
remark
&&
this
.
remark
.
length
>
0
&&
this
.
contenteditable
&&
this
.
chatMessage
)
{
this
.
chatMessage
.
innerHTML
=
this
.
remark
}
})
})
},
},
methods
:
{
methods
:
{
...
@@ -71,9 +93,17 @@
...
@@ -71,9 +93,17 @@
},
},
async
watchImage
()
{
async
watchImage
()
{
if
(
this
.
remark
.
trim
().
length
>
0
)
{
if
(
this
.
remark
.
trim
().
length
>
0
)
{
if
(
!
this
.
chatMessage
)
{
this
.
chatMessage
=
document
.
getElementById
(
`
${
this
.
domid
}
`
)
}
if
(
this
.
chatMessage
)
{
this
.
chatMessage
.
innerHTML
=
this
.
remark
this
.
chatMessage
.
innerHTML
=
this
.
remark
}
this
.
srcList
=
[]
this
.
srcList
=
[]
const
imgList
=
this
.
chatMessage
.
querySelectorAll
(
'img'
)
// 使用临时 div 来解析图片,而不依赖 DOM 元素
const
tempDiv
=
document
.
createElement
(
'div'
)
tempDiv
.
innerHTML
=
this
.
remark
const
imgList
=
tempDiv
.
querySelectorAll
(
'img'
)
if
(
imgList
&&
imgList
.
length
>
0
)
{
if
(
imgList
&&
imgList
.
length
>
0
)
{
for
(
let
index
=
0
;
index
<
imgList
.
length
;
index
++
)
{
for
(
let
index
=
0
;
index
<
imgList
.
length
;
index
++
)
{
this
.
srcList
.
push
(
imgList
[
index
].
src
)
this
.
srcList
.
push
(
imgList
[
index
].
src
)
...
@@ -171,6 +201,18 @@
...
@@ -171,6 +201,18 @@
margin-top
:
10px
;
margin-top
:
10px
;
margin-right
:
10px
;
margin-right
:
10px
;
}
}
.watchImageDialog
{
position
:
absolute
;
top
:
50%
;
left
:
50%
;
margin
:
0
!important
;
transform
:
translate
(
-50%
,
-50%
);
max-width
:
90vw
;
}
.watchImageDialog
.el-dialog__body
{
max-height
:
70vh
;
overflow-y
:
auto
;
}
.showScoleImageContent
{
.showScoleImageContent
{
width
:
100%
;
width
:
100%
;
overflow
:
auto
;
overflow
:
auto
;
...
@@ -178,7 +220,7 @@
...
@@ -178,7 +220,7 @@
}
}
.showScoleImageContent
img
{
.showScoleImageContent
img
{
max-width
:
8
0%
;
max-width
:
10
0%
;
margin-bottom
:
20px
;
margin-bottom
:
20px
;
}
}
</
style
>
</
style
>
src/views/ViolationRecord.vue
浏览文件 @
e666a99a
<
template
>
<
template
>
<div
class=
"violationRecord"
>
<div
class=
"violationRecord"
>
<el-form
v-loading=
"loading"
class=
"violationRecordContent"
label-width=
"90px"
>
<el-form
v-loading=
"loading"
class=
"violationRecordContent"
label-width=
"90px"
>
<div
class=
"flex justify-end"
>
<el-button
type=
"primary"
size=
"small"
@
click=
"reportPopupShow = true"
>
举报
</el-button>
<el-button
type=
"primary"
size=
"small"
@
click=
"reportPopupShow = true"
>
举报
</el-button>
</div>
<div
v-if=
"violationList.length > 0"
>
<div
v-if=
"violationList.length > 0"
>
<div
v-for=
"(item, index) in violationList"
:key=
"index"
class=
"contentItem"
>
<div
v-for=
"(item, index) in violationList"
:key=
"index"
class=
"contentItem"
>
<el-form-item
label=
"违规时间:"
>
<el-form-item
label=
"违规时间:"
>
...
@@ -206,7 +208,7 @@ export default {
...
@@ -206,7 +208,7 @@ export default {
.violationRecordContent
{
.violationRecordContent
{
width
:
100%
;
width
:
100%
;
padding
:
20px
;
padding
:
0
20px
;
height
:
auto
;
height
:
auto
;
}
}
...
...
src/views/popup/reportPopup/index.vue
浏览文件 @
e666a99a
...
@@ -129,12 +129,21 @@
...
@@ -129,12 +129,21 @@
</el-option>
</el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"详情"
prop=
"remark"
class=
"detail-form-item"
>
<el-form-item
prop=
"remark"
class=
"detail-form-item"
>
<div
slot=
"label"
class=
"detail-label"
>
<span>
详情
</span>
<span
class=
"view-image-btn"
@
mousedown
.
stop
.
prevent=
"handleViewImage"
>
<i
class=
"el-icon-view"
></i>
<span>
查看大图
</span>
</span>
</div>
<textEditor
<textEditor
ref=
"textEditorRef"
:remark
.
sync=
"reportForm.remark"
:remark
.
sync=
"reportForm.remark"
domid=
"report_content"
domid=
"report_content"
class=
"report-editor"
class=
"report-editor"
:contenteditable=
"true"
:contenteditable=
"true"
:show-view-image=
"false"
@
resultReamrk=
"resultReamrk"
@
resultReamrk=
"resultReamrk"
/>
/>
</el-form-item>
</el-form-item>
...
@@ -579,6 +588,15 @@
...
@@ -579,6 +588,15 @@
resultReamrk
(
text
)
{
resultReamrk
(
text
)
{
// console.log(text, '最后编辑器的内容')
// console.log(text, '最后编辑器的内容')
},
},
handleViewImage
()
{
console
.
log
(
'handleViewImage clicked'
)
console
.
log
(
'textEditorRef:'
,
this
.
$refs
.
textEditorRef
)
if
(
this
.
$refs
.
textEditorRef
&&
this
.
$refs
.
textEditorRef
.
watchImage
)
{
this
.
$refs
.
textEditorRef
.
watchImage
()
}
else
{
console
.
log
(
'textEditorRef or watchImage not found'
)
}
},
/**
/**
* 根据 eco_user_list 同步提交字段 eco_user(全部姓名用顿号拼接)
* 根据 eco_user_list 同步提交字段 eco_user(全部姓名用顿号拼接)
*/
*/
...
@@ -1007,9 +1025,39 @@
...
@@ -1007,9 +1025,39 @@
}
}
}
}
.detail-form-item
{
position
:
relative
;
}
::v-deep
.detail-form-item
{
::v-deep
.detail-form-item
{
.el-form-item__label
{
.el-form-item__label
{
padding-bottom
:
8px
;
padding-bottom
:
8px
;
width
:
100%
;
}
}
.detail-label
{
display
:
flex
;
align-items
:
center
;
justify-content
:
flex-start
;
width
:
100%
;
gap
:
12px
;
}
.view-image-btn
{
display
:
inline-flex
;
align-items
:
center
;
gap
:
4px
;
cursor
:
pointer
;
color
:
#00bf8a
;
font-family
:
PingFang
SC
,
sans-serif
;
font-size
:
13px
;
font-weight
:
400
;
line-height
:
22px
;
user-select
:
none
;
.el-icon-view
{
font-size
:
14px
;
}
}
}
}
...
...
src/views/roleInfo.vue
浏览文件 @
e666a99a
...
@@ -68,30 +68,69 @@ export default {
...
@@ -68,30 +68,69 @@ export default {
height
:
100%
;
height
:
100%
;
.el-tabs__header
{
.el-tabs__header
{
margin
:
0
;
margin
:
0px
15px
10px
15px
!important
;
padding
:
0
15px
;
padding
:
2px
!important
;
background
:
#F5F6F7
!important
;
border-radius
:
4px
!important
;
box-sizing
:
border-box
!important
;
height
:
auto
!important
;
overflow
:
visible
!important
;
border
:
none
!important
;
}
.el-tabs__nav-wrap
{
overflow
:
visible
!important
;
height
:
auto
!important
;
padding
:
0
!important
;
margin
:
0
!important
;
&::after
{
display
:
none
!important
;
}
}
.el-tabs__nav
{
width
:
100%
!important
;
display
:
flex
!important
;
border
:
none
!important
;
height
:
auto
!important
;
margin
:
0
!important
;
padding
:
0
!important
;
gap
:
2px
!important
;
}
}
.el-tabs__item
{
.el-tabs__item
{
height
:
40px
;
flex
:
1
!important
;
line-height
:
40px
;
height
:
22px
!important
;
font-size
:
16px
;
line-height
:
22px
!important
;
color
:
#333333
;
padding
:
0
!important
;
margin
:
0
!important
;
font-family
:
'PingFang SC'
,
sans-serif
!important
;
font-size
:
13px
!important
;
font-weight
:
400
!important
;
color
:
#6D7176
!important
;
text-align
:
center
!important
;
border-radius
:
2px
!important
;
border
:
none
!important
;
transition
:
all
0.2s
!important
;
white-space
:
nowrap
!important
;
overflow
:
visible
!important
;
text-overflow
:
unset
!important
;
&.is-active
{
&.is-active
{
color
:
#3491fa
;
background
:
#FFFFFF
!important
;
}
color
:
#131920
!important
;
box-shadow
:
0px
2px
8px
0px
rgba
(
0
,
0
,
0
,
0.05
)
!important
;
}
}
.el-tabs__active-bar
{
&
:first-child
,
background-color
:
#3491fa
;
&
:last-child
{
height
:
3px
;
margin
:
0
!important
;
border-radius
:
1.5px
;
}
}
}
.el-tabs__nav-wrap
::after
{
.el-tabs__active-bar
{
height
:
1px
;
display
:
none
!important
;
background-color
:
#e4e7ed
;
}
}
.el-tab-pane
{
.el-tab-pane
{
...
@@ -100,8 +139,8 @@ export default {
...
@@ -100,8 +139,8 @@ export default {
}
}
.el-tabs__content
{
.el-tabs__content
{
height
:
calc
(
100%
-
4
0
px
);
height
:
calc
(
100%
-
4
6
px
);
padding
:
0
5px
5px
;
padding
:
0
;
}
}
}
}
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论