Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
company_app
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
毛细亚
company_app
Commits
4907f587
提交
4907f587
authored
12月 15, 2025
作者:
毛细亚
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
准备更新 7.2 版本
上级
7f2fd673
全部展开
显示空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
630 行增加
和
2 行删除
+630
-2
game.js
src/api/game.js
+58
-0
sendGame.vue
src/views/components/quickSendGame/sendGame.vue
+51
-0
SendTransAppGame.vue
...ws/components/quickSendGame/sendGame/SendTransAppGame.vue
+21
-0
SendTransWxGame.vue
...ews/components/quickSendGame/sendGame/SendTransWxGame.vue
+0
-0
roleInfoPanel.vue
src/views/components/roleInfo/roleInfoPanel.vue
+156
-2
mentorRecord.vue
src/views/userInfo/components/gameInfo/mentorRecord.vue
+344
-0
没有找到文件。
src/api/game.js
浏览文件 @
4907f587
...
...
@@ -1509,3 +1509,61 @@ export function teachingVideoVideoListApi(data) {
})
})
}
// 发送分身包
export
function
memberRegGameCloneLink
(
data
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
cross_systemRequest
({
system
:
'zhangyou'
,
api
:
'/api/member/memberRegGameCloneLink'
,
params
:
data
}).
then
((
res
)
=>
{
resolve
(
res
)
}).
catch
((
error
)
=>
{
reject
(
error
)
})
})
}
// 带教记录列表
export
function
roleTeachingList
(
data
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
cross_systemRequest
({
system
:
'zhangyou'
,
api
:
'/api/role/roleTeachingList'
,
params
:
data
}).
then
((
res
)
=>
{
resolve
(
res
)
}).
catch
((
error
)
=>
{
reject
(
error
)
})
})
}
// 新增带教
export
function
roleTeachingAdd
(
data
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
cross_systemRequest
({
system
:
'zhangyou'
,
api
:
'/api/role/roleTeachingAdd'
,
params
:
data
}).
then
((
res
)
=>
{
resolve
(
res
)
}).
catch
((
error
)
=>
{
reject
(
error
)
})
})
}
// 获取带教次数
export
function
roleTeachingNum
(
data
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
cross_systemRequest
({
system
:
'zhangyou'
,
api
:
'/api/role/roleTeachingNum'
,
params
:
data
}).
then
((
res
)
=>
{
resolve
(
res
)
}).
catch
((
error
)
=>
{
reject
(
error
)
})
})
}
src/views/components/quickSendGame/sendGame.vue
浏览文件 @
4907f587
...
...
@@ -97,6 +97,8 @@
>
下载二维码
</p>
<!-- h5 安卓游戏 IOS游戏 发送分身包 -->
<p
v-if=
"[2,3,4].includes(item.game_type)"
class=
"sendLink"
@
click=
"sendTransferCloneGame(item.game_type)"
>
发送分身包
</p>
</div>
<el-button
slot=
"reference"
...
...
@@ -426,6 +428,7 @@ import {
getClonePackageLink
,
getLandingPageConfig
,
getMemberTransStatus
,
memberRegGameCloneLink
}
from
"@/api/game"
;
import
{
getRecentSendLog
,
...
...
@@ -1135,6 +1138,54 @@ export default {
);
this
.
showSendPage
=
true
;
},
500
),
// 转端发送游戏分身包 h5 安卓游戏 IOS游戏 发送分身包
async
sendTransferCloneGame
(
type
)
{
const
res
=
await
memberRegGameCloneLink
({
member_id
:
this
.
accountSelect
})
if
(
res
.
status_code
==
1
)
{
// 通过 type 判断 用 switch
switch
(
type
)
{
case
2
:
if
(
!
res
?.
data
?.
data
?.
h5_download_url
)
{
this
.
$message
.
warning
(
'H5安卓分身包链接不存在,请联系掌游配置'
)
return
}
break
case
3
:
if
(
!
res
?.
data
?.
data
?.
android_download_url
)
{
this
.
$message
.
warning
(
'安卓分身包链接不存在,请联系掌游配置'
)
return
}
break
case
4
:
if
(
!
res
?.
data
?.
data
?.
ios_download_url
)
{
this
.
$message
.
warning
(
'IOS分身包链接不存在,请联系掌游配置'
)
return
}
break
default
:
this
.
$message
.
warning
(
'不支持的游戏类型'
)
return
}
let
srt
=
''
switch
(
type
)
{
case
'android'
:
srt
=
'安卓分身包链接: '
+
res
.
data
.
data
.
android_download_url
break
case
'ios'
:
srt
=
'IOS分身包链接: '
+
res
.
data
.
data
.
ios_download_url
break
}
const
list
=
[
{
msgtype
:
'text'
,
text
:
{
content
:
srt
}
}
]
this
.
set_sendSkillMessage
(
list
)
}
else
{
this
.
$message
.
warning
(
res
.
msg
)
}
},
// 转端发送游戏二维码
sendDownLoadQrCode
:
throttleStart
(
async
function
(
items
,
type
,
index
)
{
if
(
!
this
.
transMemberStatus
)
{
...
...
src/views/components/quickSendGame/sendGame/SendTransAppGame.vue
浏览文件 @
4907f587
...
...
@@ -321,11 +321,32 @@
}
const
res
=
await
getLandingPageMemberLink
(
params
)
if
(
res
&&
res
.
data
.
data
)
{
const
responseData
=
res
.
data
.
data
// 适配新接口结构:如果有 background_imgs 数组,转换为旧结构格式
let
finalData
=
responseData
if
(
responseData
.
background_imgs
&&
responseData
.
background_imgs
.
length
>
0
)
{
// 新结构:使用第一个背景图的信息
const
firstBg
=
responseData
.
background_imgs
[
0
]
finalData
=
{
channel_qrcode
:
responseData
.
channel_qrcode
||
''
,
background_img
:
firstBg
.
background_img
||
''
,
'x-coordinate'
:
firstBg
[
'x-coordinate'
]
||
0
,
'y-coordinate'
:
firstBg
[
'y-coordinate'
]
||
0
,
background_imgs
:
responseData
.
background_imgs
// 保留原始数据
}
}
else
if
(
!
responseData
.
background_img
)
{
// 如果没有 background_img 也没有 background_imgs,保持原数据结构
finalData
=
responseData
}
this
.
loading
=
false
this
.
close
()
this
.
$emit
(
'confirm'
,
res
.
data
.
data
)
this
.
$emit
(
'confirm'
,
finalData
)
this
.
$message
.
success
(
'发送成功'
)
}
}
catch
(
error
)
{
this
.
loading
=
false
console
.
error
(
'获取链接失败:'
,
error
)
...
...
src/views/components/quickSendGame/sendGame/SendTransWxGame.vue
浏览文件 @
4907f587
差异被折叠。
点击展开。
src/views/components/roleInfo/roleInfoPanel.vue
浏览文件 @
4907f587
...
...
@@ -176,6 +176,17 @@
</p>
</div>
</div>
<!-- 带教记录 -->
<div
class=
"item rowFlex columnCenter spaceBetween"
>
<div
class=
"rowFlex columnCenter"
>
<span
class=
"label"
>
带教记录:
</span>
<el-button
type=
"text"
class=
"text cursor-pointer"
@
click
.
stop=
"openMentorRecordDrawer(items)"
>
{{ items.teach_num || '-' }} 次
</el-button>
</div>
</div>
</div>
</el-collapse-item>
</div>
...
...
@@ -196,24 +207,40 @@
:show
.
sync=
"showAppeal"
:appeal-info=
"appealInfo"
/>
<!-- 带教记录弹窗 -->
<el-drawer
v-model=
"showMentorRecord"
drawer-title=
"带教记录"
drawer-size=
"400px"
:append-to-body=
"true"
>
<mentorRecord
v-if=
"showMentorRecord"
:role-id=
"currentRoleId"
:role-name=
"currentRoleName"
@
refresh=
"handleMentorRecordRefresh"
/>
</el-drawer>
</div>
</template>
<
script
>
import
{
mapState
,
mapMutations
,
mapActions
}
from
"vuex"
;
import
{
getRoleHoLo
,
marketingRoleGrade
,
getServerDayApi
}
from
"@/api/game"
;
import
{
getRoleHoLo
,
marketingRoleGrade
,
getServerDayApi
,
roleTeachingNum
}
from
"@/api/game"
;
import
noContent
from
"@/components/noContent.vue"
;
import
appeal
from
"./layer/appeal.vue"
;
import
watchMember
from
"@/mixins/watchMember"
;
import
{
createDetails
}
from
"@/views/popup/RecentActivitiesPopup/index.js"
;
import
{
createRoleRecentActivityNotPushNum
}
from
"@/views/hooks/useGetCount.js"
;
import
vipLevel
from
"@/views/userInfo/components/gameInfo/vipLevel.vue"
;
import
mentorRecord
from
"@/views/userInfo/components/gameInfo/mentorRecord.vue"
;
export
default
{
name
:
"roleInfo"
,
components
:
{
noContent
,
appeal
,
vipLevel
,
mentorRecord
,
},
data
()
{
return
{
...
...
@@ -232,6 +259,9 @@ export default {
recentActivitiesPopupInstance
:
null
,
//近期要开模块弹框
roleRecentActivityNotPushNumInstance
:
null
,
//侧边栏计数弹框
numRoleIdList
:
[],
showMentorRecord
:
false
,
// 带教记录弹窗显示状态
currentRoleId
:
null
,
// 当前查看带教记录的角色ID
currentRoleName
:
''
// 当前查看带教记录的角色名称
};
},
computed
:
{
...
...
@@ -240,7 +270,11 @@ export default {
watch
:
{
collapseActive
(
newVal
,
oldVal
)
{
if
(
newVal
.
length
>
0
)
{
this
.
handleChange
(
newVal
.
filter
((
item
)
=>
!
oldVal
.
includes
(
item
)));
const
newOpenedItems
=
newVal
.
filter
(
item
=>
!
oldVal
.
includes
(
item
))
this
.
handleChange
(
newOpenedItems
)
// 处理带教次数获取
this
.
handleChangeRoleTeachingNum
(
newOpenedItems
)
}
},
},
...
...
@@ -295,6 +329,66 @@ export default {
});
}
},
/**
* 打开带教记录弹窗
*/
openMentorRecordDrawer
(
roleItem
)
{
this
.
currentRoleId
=
roleItem
.
role_id
this
.
currentRoleName
=
`
${
roleItem
.
role_name
}
-
${
roleItem
.
server_name
}
`
this
.
showMentorRecord
=
true
},
/**
* 带教记录刷新后,更新角色列表中的带教次数
*/
async
handleMentorRecordRefresh
(
roleId
,
teachingListLength
)
{
// 重新获取角色列表,更新带教次数
const
index
=
this
.
roleList
.
findIndex
(
item
=>
item
.
role_id
===
roleId
)
if
(
index
!==
-
1
)
{
this
.
$set
(
this
.
roleList
[
index
],
'teach_num'
,
teachingListLength
)
}
this
.
roleList
=
this
.
roleList
.
concat
([])
},
/**
* 处理角色展开时获取带教次数
* @param {Array} openedRoleIds - 新展开的角色ID数组
*/
handleChangeRoleTeachingNum
(
openedRoleIds
)
{
if
(
!
openedRoleIds
||
openedRoleIds
.
length
===
0
)
{
return
}
// 遍历新展开的角色,获取带教次数
openedRoleIds
.
forEach
(
roleId
=>
{
const
roleItem
=
this
.
roleList
.
find
(
item
=>
item
.
role_id
===
roleId
)
if
(
roleItem
)
{
// 如果已经存在 teach_num 字段,则不请求接口
if
(
roleItem
.
teach_num
===
undefined
||
roleItem
.
teach_num
===
null
)
{
this
.
getRoleTeachingNum
(
roleId
)
}
}
})
},
/**
* 获取角色带教次数
* @param {String|Number} roleId - 角色ID
*/
async
getRoleTeachingNum
(
roleId
)
{
try
{
const
res
=
await
roleTeachingNum
({
role_id
:
roleId
})
console
.
log
(
res
,
'res'
)
if
(
res
.
status_code
===
1
)
{
// 更新对应角色的 teach_num 字段
const
index
=
this
.
roleList
.
findIndex
(
item
=>
item
.
role_id
===
roleId
)
if
(
index
!==
-
1
)
{
this
.
$set
(
this
.
roleList
[
index
],
'teach_num'
,
res
.
data
.
data
?.
role_teaching_num
||
0
)
this
.
roleList
=
[...
this
.
roleList
]
}
}
}
catch
(
error
)
{
console
.
error
(
'获取带教次数失败:'
,
error
)
}
},
async
handleChange
(
v
)
{
const
index
=
this
.
roleList
.
findIndex
(
...
...
@@ -344,6 +438,66 @@ export default {
}
);
},
/**
* 打开带教记录弹窗
*/
openMentorRecordDrawer
(
roleItem
)
{
this
.
currentRoleId
=
roleItem
.
role_id
this
.
currentRoleName
=
`
${
roleItem
.
role_name
}
-
${
roleItem
.
server_name
}
`
this
.
showMentorRecord
=
true
},
/**
* 带教记录刷新后,更新角色列表中的带教次数
*/
async
handleMentorRecordRefresh
(
roleId
,
teachingListLength
)
{
// 重新获取角色列表,更新带教次数
const
index
=
this
.
roleList
.
findIndex
(
item
=>
item
.
role_id
===
roleId
)
if
(
index
!==
-
1
)
{
this
.
$set
(
this
.
roleList
[
index
],
'teach_num'
,
teachingListLength
)
}
this
.
roleList
=
this
.
roleList
.
concat
([])
},
/**
* 处理角色展开时获取带教次数
* @param {Array} openedRoleIds - 新展开的角色ID数组
*/
handleChangeRoleTeachingNum
(
openedRoleIds
)
{
if
(
!
openedRoleIds
||
openedRoleIds
.
length
===
0
)
{
return
}
// 遍历新展开的角色,获取带教次数
openedRoleIds
.
forEach
(
roleId
=>
{
const
roleItem
=
this
.
roleList
.
find
(
item
=>
item
.
role_id
===
roleId
)
if
(
roleItem
)
{
// 如果已经存在 teach_num 字段,则不请求接口
if
(
roleItem
.
teach_num
===
undefined
||
roleItem
.
teach_num
===
null
)
{
this
.
getRoleTeachingNum
(
roleId
)
}
}
})
},
/**
* 获取角色带教次数
* @param {String|Number} roleId - 角色ID
*/
async
getRoleTeachingNum
(
roleId
)
{
try
{
const
res
=
await
roleTeachingNum
({
role_id
:
roleId
})
console
.
log
(
res
,
'res'
)
if
(
res
.
status_code
===
1
)
{
// 更新对应角色的 teach_num 字段
const
index
=
this
.
roleList
.
findIndex
(
item
=>
item
.
role_id
===
roleId
)
if
(
index
!==
-
1
)
{
this
.
$set
(
this
.
roleList
[
index
],
'teach_num'
,
res
.
data
.
data
?.
role_teaching_num
||
0
)
this
.
roleList
=
[...
this
.
roleList
]
}
}
}
catch
(
error
)
{
console
.
error
(
'获取带教次数失败:'
,
error
)
}
}
},
beforeDestroy
()
{
this
.
recentActivitiesPopupInstance
.
destroy
();
...
...
src/views/userInfo/components/gameInfo/mentorRecord.vue
0 → 100644
浏览文件 @
4907f587
<!--
* @Author: 金多虾 937667504@qq.com
* @Date: 2025-12-11 11:01:15
* @LastEditors: 金多虾 937667504@qq.com
* @LastEditTime: 2025-12-15 14:32:47
* @FilePath: /company_wx_frontend/src/views/works/component/gameInfo/roleInfo/mentorRecord.vue
* @Description: 带教记录组件
-->
<
template
>
<div
class=
"mentor-record-page"
>
<!-- 标题栏 -->
<div
class=
"mentor-record-page__header"
>
<p
class=
"mentor-record-page__header-title"
>
{{
roleName
}}
带教记录
</p>
</div>
<!-- 提示信息和添加按钮区域 -->
<div
class=
"mentor-record-page__toolbar"
>
<p
class=
"mentor-record-page__toolbar-tip"
>
当天添加的备注,第二天才会统计带教次数
</p>
<el-button
v-if=
"teachingList.length
<
5
"
type=
"primary"
size=
"small"
@
click=
"showAddForm = !showAddForm"
>
添加记录
</el-button>
</div>
<!-- 新增记录表单 -->
<div
v-if=
"showAddForm && teachingList.length
<
5
"
class=
"mentor-record-page__add-form"
>
<el-input
v-model=
"formData.content"
type=
"textarea"
:rows=
"3"
placeholder=
"请输入"
maxlength=
"500"
show-word-limit
class=
"mentor-record-page__add-form-input"
/>
<div
class=
"mentor-record-page__add-form-buttons"
>
<el-button
size=
"small"
@
click=
"handleCancelAdd"
>
取消
</el-button>
<el-button
type=
"primary"
size=
"small"
:loading=
"submitLoading"
@
click=
"handleSubmitAdd"
>
保存
</el-button>
</div>
</div>
<!-- 带教记录列表 -->
<div
class=
"mentor-record-page__list"
>
<div
v-for=
"(item, index) in teachingList"
:key=
"item.id || index"
class=
"mentor-record-page__list-item"
>
<p
class=
"mentor-record-page__list-item-title"
>
第
{{
item
.
teaching_num
}}
次带教
</p>
<p
class=
"mentor-record-page__list-item-content"
>
{{
item
.
teaching_text
}}
</p>
<div
class=
"mentor-record-page__list-item-footer"
>
<span
class=
"mentor-record-page__list-item-creator"
>
新增人:
{{
item
.
update_user
||
'-'
}}
</span>
<span
class=
"mentor-record-page__list-item-divider"
>
|
</span>
<span
class=
"mentor-record-page__list-item-time"
>
{{
item
.
update_time
}}
</span>
</div>
</div>
<div
v-if=
"teachingList.length === 0 && !loading"
class=
"mentor-record-page__empty"
>
<svg-icon
icon-class=
"noContent"
/>
<p>
暂无带教记录
</p>
</div>
</div>
</div>
</
template
>
<
script
>
import
{
roleTeachingList
,
roleTeachingAdd
}
from
'@/api/game'
import
{
mapState
}
from
'vuex'
export
default
{
name
:
'MentorRecord'
,
props
:
{
roleId
:
{
type
:
[
String
,
Number
],
required
:
true
},
roleName
:
{
type
:
String
,
default
:
''
}
},
data
()
{
return
{
loading
:
false
,
submitLoading
:
false
,
showAddForm
:
false
,
teachingList
:
[],
formData
:
{
content
:
''
}
}
},
watch
:
{
roleId
:
{
immediate
:
true
,
handler
(
newVal
)
{
if
(
newVal
)
{
this
.
getTeachingList
()
}
}
}
},
computed
:
{
...
mapState
(
'user'
,
[
'userInfo'
])
},
methods
:
{
/**
* 获取带教记录列表
*/
async
getTeachingList
()
{
if
(
!
this
.
roleId
)
{
return
}
try
{
this
.
loading
=
true
const
res
=
await
roleTeachingList
({
role_id
:
this
.
roleId
})
if
(
res
.
status_code
===
1
)
{
this
.
teachingList
=
res
.
data
.
data
||
[]
// 按teaching_num倒序排列
this
.
teachingList
.
sort
((
a
,
b
)
=>
{
return
(
b
.
teaching_num
||
0
)
-
(
a
.
teaching_num
||
0
)
})
}
else
{
this
.
$message
({
message
:
res
.
data
.
msg
||
'获取带教记录失败'
,
type
:
'error'
})
}
}
catch
(
error
)
{
console
.
error
(
'获取带教记录失败:'
,
error
)
this
.
$message
({
message
:
'获取带教记录失败,请稍后重试'
,
type
:
'error'
})
}
finally
{
this
.
loading
=
false
}
},
/**
* 新增带教记录
*/
async
handleSubmitAdd
()
{
if
(
!
this
.
formData
.
content
||
!
this
.
formData
.
content
.
trim
())
{
this
.
$message
({
message
:
'请输入带教记录内容'
,
type
:
'warning'
})
return
}
try
{
this
.
submitLoading
=
true
const
res
=
await
roleTeachingAdd
({
role_id
:
this
.
roleId
,
teaching_num
:
this
.
teachingList
.
length
+
1
,
teaching_text
:
this
.
formData
.
content
.
trim
(),
create_user_id
:
this
.
userInfo
.
id
,
create_user
:
this
.
userInfo
.
username
})
if
(
res
.
status_code
===
1
)
{
this
.
$message
({
message
:
res
.
data
.
msg
||
'添加成功'
,
type
:
'success'
})
this
.
formData
.
content
=
''
this
.
showAddForm
=
false
// 重新获取列表
await
this
.
getTeachingList
()
// 通知父组件更新带教次数
this
.
$emit
(
'refresh'
,
this
.
roleId
,
this
.
teachingList
.
length
)
}
else
{
this
.
$message
({
message
:
res
.
data
.
msg
||
'添加失败'
,
type
:
'error'
})
}
}
catch
(
error
)
{
console
.
error
(
'新增带教记录失败:'
,
error
)
this
.
$message
({
message
:
'添加失败,请稍后重试'
,
type
:
'error'
})
}
finally
{
this
.
submitLoading
=
false
}
},
/**
* 取消新增
*/
handleCancelAdd
()
{
this
.
formData
.
content
=
''
this
.
showAddForm
=
false
},
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.mentor-record-page
{
width
:
100%
;
height
:
100%
;
padding
:
12px
;
padding-top
:
0
;
background
:
#fff
;
border-right
:
1px
solid
#ebedf0
;
display
:
flex
;
flex-direction
:
column
;
overflow
:
hidden
;
&__header
{
display
:
flex
;
align-items
:
center
;
padding
:
12px
0
;
padding-top
:
0
;
border-bottom
:
1px
solid
#ebedf0
;
&-title
{
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
font-size
:
14px
;
font-weight
:
500
;
line-height
:
22px
;
color
:
#131920
;
}
}
&
__toolbar
{
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
padding
:
12px
0
;
margin-top
:
12px
;
&-tip
{
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-size
:
12px
;
font-weight
:
400
;
line-height
:
20px
;
color
:
#909399
;
}
}
&
__add-form
{
display
:
flex
;
flex-direction
:
column
;
gap
:
8px
;
margin-bottom
:
12px
;
&-input
{
::v-deep
.el-textarea__inner
{
border
:
1px
solid
#d6d9e0
;
border-radius
:
6px
;
padding
:
4px
6px
;
font-size
:
13px
;
line-height
:
22px
;
color
:
#323335
;
min-height
:
60px
;
resize
:
none
;
&::placeholder
{
color
:
#c9cdd4
;
}
}
}
&
-buttons
{
display
:
flex
;
gap
:
8px
;
justify-content
:
flex-end
;
}
}
&
__list
{
flex
:
1
;
overflow-y
:
auto
;
display
:
flex
;
flex-direction
:
column
;
gap
:
12px
;
&-item
{
background
:
#fff
;
border
:
1px
solid
#ebedf0
;
border-radius
:
6px
;
padding
:
8px
;
display
:
flex
;
flex-direction
:
column
;
gap
:
4px
;
&-title
{
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-size
:
12px
;
font-weight
:
400
;
line-height
:
20px
;
color
:
#6d7176
;
}
&
-content
{
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-size
:
15px
;
font-weight
:
500
;
line-height
:
22px
;
color
:
#131920
;
word-break
:
break-all
;
}
&
-footer
{
display
:
flex
;
align-items
:
center
;
gap
:
4px
;
}
&
-creator
,
&
-time
{
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-size
:
12px
;
font-weight
:
400
;
line-height
:
20px
;
color
:
#b0b2b5
;
}
&
-divider
{
color
:
#ebedf0
;
font-size
:
12px
;
}
}
}
&
__empty
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
justify-content
:
center
;
padding
:
40px
0
;
color
:
#909399
;
font-size
:
14px
;
p
{
margin-top
:
12px
;
}
}
}
</
style
>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论