Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
saas-lab
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
saas-lab
Commits
569f1855
提交
569f1855
authored
6月 15, 2023
作者:
lhh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update
上级
d6f4f804
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
335 行增加
和
17 行删除
+335
-17
AppUpload.vue
src/components/base/AppUpload.vue
+9
-3
DMLFormDialog.vue
...modules/admin/lab/experiment/components/DMLFormDialog.vue
+8
-4
GradeRulesDialog.vue
...ules/admin/lab/experiment/components/GradeRulesDialog.vue
+19
-9
QuestionsOrder.vue
...in/lab/experiment/components/Questions/QuestionsOrder.vue
+68
-0
User.vue
...odules/admin/lab/experiment/components/Questions/User.vue
+150
-0
index.ts
src/modules/admin/lab/experiment/index.ts
+2
-1
Questions.vue
src/modules/admin/lab/experiment/views/Questions.vue
+79
-0
没有找到文件。
src/components/base/AppUpload.vue
浏览文件 @
569f1855
...
@@ -70,7 +70,8 @@ const handleSuccess = (response: any, file: any, files: any) => {
...
@@ -70,7 +70,8 @@ const handleSuccess = (response: any, file: any, files: any) => {
name
:
last
.
name
,
name
:
last
.
name
,
url
:
last
.
url
||
last
.
raw
?.
url
,
url
:
last
.
url
||
last
.
raw
?.
url
,
size
:
last
.
size
||
last
.
raw
?.
size
,
size
:
last
.
size
||
last
.
raw
?.
size
,
type
:
last
.
type
||
last
.
raw
?.
type
type
:
last
.
type
||
last
.
raw
?.
type
,
is_download
:
last
.
is_download
||
last
.
raw
?.
is_download
||
false
}
}
])
])
}
else
{
}
else
{
...
@@ -81,7 +82,8 @@ const handleSuccess = (response: any, file: any, files: any) => {
...
@@ -81,7 +82,8 @@ const handleSuccess = (response: any, file: any, files: any) => {
name
:
item
.
name
,
name
:
item
.
name
,
url
:
item
.
url
||
item
.
raw
?.
url
,
url
:
item
.
url
||
item
.
raw
?.
url
,
size
:
item
.
size
||
item
.
raw
?.
size
,
size
:
item
.
size
||
item
.
raw
?.
size
,
type
:
item
.
type
||
item
.
raw
?.
type
type
:
item
.
type
||
item
.
raw
?.
type
,
is_download
:
item
.
is_download
||
item
.
raw
?.
is_download
||
false
}
}
})
})
)
)
...
@@ -128,7 +130,8 @@ const handlePreview: UploadProps['onPreview'] = uploadFile => {
...
@@ -128,7 +130,8 @@ const handlePreview: UploadProps['onPreview'] = uploadFile => {
:on-preview=
"handlePreview"
:on-preview=
"handlePreview"
:on-success=
"handleSuccess"
:on-success=
"handleSuccess"
:file-list=
"fileList"
:file-list=
"fileList"
class=
"uploader"
>
class=
"uploader"
>
<slot>
<slot>
<template
v-if=
"showFileList"
>
<template
v-if=
"showFileList"
>
<template
v-if=
"$attrs['list-type'] === 'picture-card'"
>
<template
v-if=
"$attrs['list-type'] === 'picture-card'"
>
...
@@ -146,6 +149,9 @@ const handlePreview: UploadProps['onPreview'] = uploadFile => {
...
@@ -146,6 +149,9 @@ const handlePreview: UploadProps['onPreview'] = uploadFile => {
<
template
#
tip
>
<
template
#
tip
>
<div
class=
"el-upload__tip"
><slot
name=
"tip"
></slot></div>
<div
class=
"el-upload__tip"
><slot
name=
"tip"
></slot></div>
</
template
>
</
template
>
<
template
#
file=
"{ file }"
>
<slot
name=
"file"
v-bind=
"
{ file }">
</slot>
</
template
>
</el-upload>
</el-upload>
</template>
</template>
...
...
src/modules/admin/lab/experiment/components/DMLFormDialog.vue
浏览文件 @
569f1855
...
@@ -119,7 +119,8 @@ function handleSubmit() {
...
@@ -119,7 +119,8 @@ function handleSubmit() {
title=
"配置数字营销实验"
title=
"配置数字营销实验"
:close-on-click-modal=
"false"
:close-on-click-modal=
"false"
width=
"600px"
width=
"600px"
@
update:modelValue=
"$emit('update:modelValue')"
>
@
update:modelValue=
"$emit('update:modelValue')"
>
<el-form
ref=
"formRef"
:model=
"form"
label-suffix=
":"
>
<el-form
ref=
"formRef"
:model=
"form"
label-suffix=
":"
>
<el-row
justify=
"space-between"
>
<el-row
justify=
"space-between"
>
<el-form-item
label=
"实验名称"
>
{{
data
.
name
}}
</el-form-item>
<el-form-item
label=
"实验名称"
>
{{
data
.
name
}}
</el-form-item>
...
@@ -147,7 +148,8 @@ function handleSubmit() {
...
@@ -147,7 +148,8 @@ function handleSubmit() {
:label=
"item.name"
:label=
"item.name"
:value=
"item.id"
:value=
"item.id"
:key=
"item.id"
:key=
"item.id"
disabled
></el-option>
disabled
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
</el-tab-pane>
</el-tab-pane>
...
@@ -161,7 +163,8 @@ function handleSubmit() {
...
@@ -161,7 +163,8 @@ function handleSubmit() {
v-model=
"form.user_attr_config.items"
v-model=
"form.user_attr_config.items"
multiple
multiple
style=
"margin-left: 40px"
style=
"margin-left: 40px"
v-if=
"!form.user_attr_config.is_all"
>
v-if=
"!form.user_attr_config.is_all"
>
<el-option
v-for=
"item in userAttrList"
:label=
"item.name"
:value=
"item.id"
:key=
"item.id"
></el-option>
<el-option
v-for=
"item in userAttrList"
:label=
"item.name"
:value=
"item.id"
:key=
"item.id"
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
...
@@ -174,7 +177,8 @@ function handleSubmit() {
...
@@ -174,7 +177,8 @@ function handleSubmit() {
v-model=
"form.event_config.items"
v-model=
"form.event_config.items"
multiple
multiple
style=
"margin-left: 40px"
style=
"margin-left: 40px"
v-if=
"!form.event_config.is_all"
>
v-if=
"!form.event_config.is_all"
>
<el-option
v-for=
"item in metaEventList"
:label=
"item.name"
:value=
"item.id"
:key=
"item.id"
></el-option>
<el-option
v-for=
"item in metaEventList"
:label=
"item.name"
:value=
"item.id"
:key=
"item.id"
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
...
...
src/modules/admin/lab/experiment/components/GradeRulesDialog.vue
浏览文件 @
569f1855
...
@@ -100,7 +100,7 @@ function currentRuleNames(value: number) {
...
@@ -100,7 +100,7 @@ function currentRuleNames(value: number) {
// 数字营销实验
// 数字营销实验
return
tempList
.
filter
(
item
=>
[
1
,
5
,
6
,
7
,
8
,
9
].
includes
(
item
.
value
as
number
))
return
tempList
.
filter
(
item
=>
[
1
,
5
,
6
,
7
,
8
,
9
].
includes
(
item
.
value
as
number
))
}
else
{
}
else
{
return
tempList
.
filter
(
item
=>
item
.
value
<=
5
)
return
tempList
.
filter
(
(
item
:
any
)
=>
item
.
value
<=
5
)
}
}
}
}
...
@@ -134,7 +134,8 @@ function rowScore(percent = 0) {
...
@@ -134,7 +134,8 @@ function rowScore(percent = 0) {
title=
"编辑实验成绩规则"
title=
"编辑实验成绩规则"
:close-on-click-modal=
"false"
:close-on-click-modal=
"false"
width=
"800px"
width=
"800px"
@
update:modelValue=
"$emit('update:modelValue')"
>
@
update:modelValue=
"$emit('update:modelValue')"
>
<el-form
ref=
"formRef"
:model=
"form"
label-suffix=
":"
>
<el-form
ref=
"formRef"
:model=
"form"
label-suffix=
":"
>
<el-form-item
label=
"实验名称"
>
{{
data
?.
name
}}
</el-form-item>
<el-form-item
label=
"实验名称"
>
{{
data
?.
name
}}
</el-form-item>
<el-row>
<el-row>
...
@@ -156,7 +157,7 @@ function rowScore(percent = 0) {
...
@@ -156,7 +157,7 @@ function rowScore(percent = 0) {
<el-button
type=
"primary"
:icon=
"Plus"
@
click=
"handleAdd"
></el-button>
<el-button
type=
"primary"
:icon=
"Plus"
@
click=
"handleAdd"
></el-button>
</el-row>
</el-row>
<el-table
:data=
"form.rule_list"
row-key=
"id"
>
<el-table
:data=
"form.rule_list"
row-key=
"id"
>
<el-table-column
prop=
"name"
width=
"
20
0"
>
<el-table-column
prop=
"name"
width=
"
17
0"
>
<template
#
default=
"
{ row }">
<template
#
default=
"
{ row }">
<el-input
v-model=
"row.name"
:maxlength=
"20"
style=
"width: 100%"
v-if=
"row.type === 5"
/>
<el-input
v-model=
"row.name"
:maxlength=
"20"
style=
"width: 100%"
v-if=
"row.type === 5"
/>
<el-select
<el-select
...
@@ -164,7 +165,8 @@ function rowScore(percent = 0) {
...
@@ -164,7 +165,8 @@ function rowScore(percent = 0) {
:disabled=
"row.type === 1"
:disabled=
"row.type === 1"
style=
"width: 100%"
style=
"width: 100%"
@
change=
"handleTypeChange(row)"
@
change=
"handleTypeChange(row)"
v-else
>
v-else
>
<el-option
v-for=
"item in currentRuleNames(row.type)"
:key=
"item.value"
v-bind=
"item"
></el-option>
<el-option
v-for=
"item in currentRuleNames(row.type)"
:key=
"item.value"
v-bind=
"item"
></el-option>
</el-select>
</el-select>
</
template
>
</
template
>
...
@@ -174,20 +176,28 @@ function rowScore(percent = 0) {
...
@@ -174,20 +176,28 @@ function rowScore(percent = 0) {
<el-input-number
v-model=
"row.percent"
:min=
"0"
@
change=
"handlePercentChange(row, $index)"
/>
%
<el-input-number
v-model=
"row.percent"
:min=
"0"
@
change=
"handlePercentChange(row, $index)"
/>
%
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"rule_mode"
>
<el-table-column
prop=
"rule_mode"
width=
"200"
>
<
template
#
default=
"{ row }"
>
<
template
#
default=
"{ row }"
>
<el-radio-group
v-model=
"row.rule_mode"
size=
"small"
>
<el-radio-group
v-model=
"row.rule_mode"
size=
"small"
>
<el-radio
:label=
"1"
>
人工评分
</el-radio>
<el-radio
:label=
"1"
>
人工评分
</el-radio>
<el-radio
:label=
"2"
v-if=
"[2, 3].includes(row.type)"
>
自动评分
</el-radio>
<!--
<el-radio
:label=
"2"
v-if=
"[2, 3].includes(row.type)"
>
自动评分
</el-radio>
-->
<el-radio
:label=
"2"
>
自动评分
</el-radio>
</el-radio-group>
</el-radio-group>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
width=
"
10
0"
>
<el-table-column
width=
"
9
0"
>
<
template
#
default=
"{ row }"
>
满分:
{{
100
||
rowScore
(
row
.
percent
)
}}
</
template
>
<
template
#
default=
"{ row }"
>
满分:
{{
100
||
rowScore
(
row
.
percent
)
}}
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
align=
"right"
width=
"60"
>
<el-table-column
align=
"right"
>
<
template
#
default=
"{ $index, row }"
>
<
template
#
default=
"{ $index, row }"
>
<el-button
text
type=
"primary"
@
click=
"handleRemove($index)"
v-if=
"row.type !== 1"
>
删除
</el-button>
<div
class=
"btn-box"
>
<el-button
style=
"padding: 0"
text
type=
"primary"
@
click=
"handleRemove($index)"
v-if=
"row.type !== 1"
>
编辑
</el-button
>
<el-button
style=
"padding: 0"
text
type=
"primary"
@
click=
"handleRemove($index)"
v-if=
"row.type !== 1"
>
删除
</el-button
>
</div>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
...
...
src/modules/admin/lab/experiment/components/Questions/QuestionsOrder.vue
0 → 100644
浏览文件 @
569f1855
<
script
setup
lang=
"ts"
></
script
>
<
template
>
<div
class=
"order-box"
>
<div
class=
"order-score"
>
<div
class=
"order-score_flex"
>
<span
class=
"el-tooltip question-total-number"
>
0
</span>
<span
class=
"el-tooltip paper-total-score"
>
/100
</span>
<em>
分
</em>
</div>
<div
class=
"tip"
>
注:每模块满分为100,请注意每题分值。
</div>
</div>
<div
class=
"order-list"
>
<div
class=
"title"
>
用户/事件数据
</div>
<div
class=
"list"
>
<div
class=
"li active"
>
1
</div>
<div
class=
"li"
>
2
</div>
</div>
</div>
</div>
</
template
>
<
style
lang=
"scss"
scoped
>
.order-list
{
.list
{
display
:
flex
;
flex-wrap
:
wrap
;
.li
{
border-radius
:
50px
;
width
:
25px
;
font-size
:
14px
;
line-height
:
25px
;
text-align
:
center
;
border
:
2px
solid
#ccc
;
color
:
#666
;
cursor
:
pointer
;
margin
:
10px
5px
;
&
.active
{
color
:
#c01c40
;
border
:
2px
solid
#c01c40
;
}
}
}
}
.order-score_flex
{
display
:
flex
;
align-items
:
flex-end
;
justify-content
:
center
;
}
.order-score
{
font-size
:
40px
;
line-height
:
1
;
margin-bottom
:
20px
;
color
:
#ccc
;
margin-bottom
:
20px
;
padding-bottom
:
20px
;
border-bottom
:
1px
solid
#eee
;
.question-total-number
{
color
:
#c01c40
;
}
em
{
font-size
:
14px
;
}
.tip
{
font-size
:
14px
;
padding-top
:
20px
;
}
}
</
style
>
src/modules/admin/lab/experiment/components/Questions/User.vue
0 → 100644
浏览文件 @
569f1855
<
script
setup
lang=
"ts"
>
import
type
{
FormInstance
,
FormRules
}
from
'element-plus'
import
{
Document
,
CircleCheck
,
CircleClose
}
from
'@element-plus/icons-vue'
import
AppUpload
from
'@/components/base/AppUpload.vue'
import
type
{
UploadFile
}
from
'element-plus'
const
activeName
=
ref
(
'1'
)
const
ruleFormRef
=
ref
<
FormInstance
>
()
const
ruleForm
=
reactive
({
title
:
''
,
content
:
''
,
answer
:
'导入成功'
,
answer_analysis
:
''
,
files
:
[]
})
const
rules
=
reactive
<
FormRules
>
({
title
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}],
answer
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}]
})
const
submitForm
=
async
(
formEl
:
FormInstance
|
undefined
)
=>
{
if
(
!
formEl
)
return
await
formEl
.
validate
((
valid
,
fields
)
=>
{
if
(
valid
)
{
console
.
log
(
ruleForm
,
'ruleForm'
)
console
.
log
(
'submit!'
)
}
else
{
console
.
log
(
'error submit!'
,
fields
)
}
})
}
const
resetForm
=
(
formEl
:
FormInstance
|
undefined
)
=>
{
if
(
!
formEl
)
return
formEl
.
resetFields
()
}
const
num
=
ref
(
0
)
// 移除上传文件
const
handleRemove
=
(
file
:
UploadFile
)
=>
{
if
(
file
)
{
const
index
=
ruleForm
.
files
.
findIndex
((
item
:
any
)
=>
item
.
url
===
file
.
url
)
if
(
index
!=
-
1
)
ruleForm
.
files
.
splice
(
index
,
1
)
}
}
const
handleDownload
=
(
file
:
any
)
=>
{
if
(
file
)
{
const
item
:
any
=
ruleForm
.
files
.
find
((
item
:
any
)
=>
item
.
url
===
file
.
url
)
if
(
item
)
item
.
is_download
=
file
.
is_download
}
}
</
script
>
<
template
>
<el-card
class=
"box-card"
>
<div
class=
"head-box"
>
<el-tabs
v-model=
"activeName"
type=
"card"
class=
"demo-tabs"
>
<el-tab-pane
label=
"用户数据"
name=
"1"
></el-tab-pane>
<el-tab-pane
label=
"事件数据"
name=
"2"
></el-tab-pane>
</el-tabs>
<el-form-item
label=
"本题分值"
class=
"head-r"
>
<el-input-number
v-model=
"num"
:min=
"1"
:max=
"10"
controls-position=
"right"
/>
</el-form-item>
</div>
<el-form
ref=
"ruleFormRef"
:model=
"ruleForm"
:rules=
"rules"
label-width=
"120px"
class=
"demo-ruleForm"
status-icon
>
<el-form-item
label=
"题目标题"
prop=
"title"
>
<el-input
v-model=
"ruleForm.title"
placeholder=
"请输入"
/>
</el-form-item>
<el-form-item
label=
"题干内容"
>
<el-input
v-model=
"ruleForm.content"
:rows=
"5"
type=
"textarea"
placeholder=
"请输入"
/>
</el-form-item>
<el-form-item
label=
"正确答案"
prop=
"answer"
>
导入成功
</el-form-item>
<el-form-item
label=
"答案解析"
>
<el-input
v-model=
"ruleForm.answer_analysis"
:rows=
"5"
type=
"textarea"
placeholder=
"请输入"
/>
</el-form-item>
<el-form-item
label=
"试题文件"
>
<AppUpload
v-model=
"ruleForm.files"
>
<template
#
tip
>
试题文件支持格式包含:png jpg doc docx xls xlsx pdf ppt pptx,大小不超过50M
</
template
>
<
template
#
file=
"{ file }"
>
<!--
{{
file
}}
-->
<div
class=
"upload-box"
>
<div
class=
"upload-loading"
>
<el-icon
style=
"margin-right: 5px"
><Document
/></el-icon>
<p
style=
"margin-right: 5px"
>
{{
file
.
name
}}
</p>
<p
v-if=
"file.status === 'uploading'"
>
{{
file
.
percentage
}}
%
</p>
<template
v-if=
"file.status === 'success'"
>
<el-icon
class=
"succ-icon1"
color=
"#67c23a"
size=
"18"
style=
"margin-left: 30px"
><CircleCheck
/></el-icon>
<el-icon
class=
"succ-icon2"
size=
"18"
style=
"margin-left: 30px"
@
click=
"handleRemove(file)"
><CircleClose
/></el-icon>
</
template
>
</div>
<el-switch
@
change=
"handleDownload(file)"
v-model=
"file.is_download"
size=
"large"
active-text=
"能否下载"
/>
</div>
</template>
</AppUpload>
<!-- <el-input v-model="ruleForm.textarea" :rows="5" type="textarea" placeholder="Please input" /> -->
</el-form-item>
<!-- <el-form-item style="display: flex">
<div>
<el-button @click="resetForm(ruleFormRef)">删除</el-button>
</div>
<div style="margin-left: auto">
<el-button type="primary" @click="submitForm(ruleFormRef)"> 保存 </el-button>
<el-button @click="resetForm(ruleFormRef)">取消</el-button>
</div>
</el-form-item> -->
</el-form>
</el-card>
</template>
<
style
lang=
"scss"
scoped
>
.head-box
{
display
:
flex
;
margin-bottom
:
30px
;
.head-r
{
margin-left
:
auto
;
}
}
.upload-box
{
display
:
flex
;
.upload-loading
{
width
:
300px
;
display
:
flex
;
align-items
:
center
;
&
:hover
{
.succ-icon2
{
display
:
block
;
}
.succ-icon1
{
display
:
none
;
}
}
.succ-icon2
{
display
:
none
;
cursor
:
pointer
;
}
}
}
</
style
>
src/modules/admin/lab/experiment/index.ts
浏览文件 @
569f1855
...
@@ -10,7 +10,8 @@ export const routes: Array<RouteRecordRaw> = [
...
@@ -10,7 +10,8 @@ export const routes: Array<RouteRecordRaw> = [
{
path
:
'experiment'
,
component
:
()
=>
import
(
'./views/Index.vue'
)
},
{
path
:
'experiment'
,
component
:
()
=>
import
(
'./views/Index.vue'
)
},
{
path
:
'experiment/:id'
,
component
:
()
=>
import
(
'./views/View.vue'
),
props
:
true
},
{
path
:
'experiment/:id'
,
component
:
()
=>
import
(
'./views/View.vue'
),
props
:
true
},
{
path
:
'experiment/group/:id'
,
component
:
()
=>
import
(
'./views/Group.vue'
),
props
:
true
},
{
path
:
'experiment/group/:id'
,
component
:
()
=>
import
(
'./views/Group.vue'
),
props
:
true
},
{
path
:
'experiment/report/:id'
,
component
:
()
=>
import
(
'./views/Report.vue'
),
props
:
true
}
{
path
:
'experiment/report/:id'
,
component
:
()
=>
import
(
'./views/Report.vue'
),
props
:
true
},
{
path
:
'experiment/questions'
,
component
:
()
=>
import
(
'./views/Questions.vue'
),
props
:
true
}
]
]
}
}
]
]
src/modules/admin/lab/experiment/views/Questions.vue
0 → 100644
浏览文件 @
569f1855
<
script
setup
lang=
"ts"
>
const
User
=
defineAsyncComponent
(()
=>
import
(
'../components/Questions/User.vue'
))
const
QuestionsOrder
=
defineAsyncComponent
(()
=>
import
(
'../components/Questions/QuestionsOrder.vue'
))
</
script
>
<
template
>
<AppCard>
<div
class=
"content-top"
>
<div
class=
"info"
style=
"display: flex"
>
<p>
实验名称: 2023商业数据分析大赛决赛
</p>
<p>
实验类型: 数字营销实验
</p>
<p>
实验总成绩:100
</p>
</div>
<el-button>
预览
</el-button>
</div>
</AppCard>
<div
class=
"content-bottom"
>
<AppCard
class=
"l-card"
>
<div
class=
"btn-box"
>
<div
class=
"btn-l"
>
<el-button
type=
"primary"
>
添加试题
</el-button>
<el-button>
取消
</el-button>
</div>
<div
class=
"btn-r"
>
<el-button
type=
"primary"
>
保存
</el-button>
</div>
</div>
<User></User>
</AppCard>
<AppCard
class=
"r-card"
>
<QuestionsOrder></QuestionsOrder>
</AppCard>
</div>
</
template
>
<
style
lang=
"scss"
scoped
>
.btn-box
{
display
:
flex
;
margin-bottom
:
20px
;
.btn-r
{
margin-left
:
auto
;
}
}
.app-main
{
overflow
:
inherit
;
}
.content-top
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
.info
{
display
:
flex
;
p
{
margin-right
:
100px
;
}
}
}
.content-bottom
{
margin-top
:
20px
;
display
:
flex
;
.r-card
{
position
:
sticky
;
top
:
80px
;
margin-left
:
20px
;
width
:
30%
;
margin-top
:
0
;
height
:
fit-content
;
:deep
(
.app-card-bd.has-background
)
{
// height: 100%;
box-sizing
:
border-box
;
}
}
.l-card
{
margin-top
:
0
;
flex
:
1
;
height
:
10000px
;
}
}
</
style
>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论