irc_web/.svn/pristine/b1/b1647bfef2f925280011171b0e9...

856 lines
30 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div class="ImageReviewTask-list app-container">
<el-collapse v-model="activeNames">
<!-- <el-collapse-item
title="Image Quality Assessment"
name="ImageQualityAssessment"
> -->
<el-form ref="qualifiedForm" :model="reportResult">
<el-form-item
prop="Qualified"
label="Qualified for Review:"
label-width="200px"
:rules="[{ required: true, message: '', trigger: 'blur' }]"
>
<el-radio-group
v-model="reportResult.Qualified"
:disabled="isReportSaved"
>
<el-radio :label="true">Qualified</el-radio>
<el-radio :label="false">Non-Qualified</el-radio>
</el-radio-group>
<div v-if="reportResult.Qualified===false">
<el-radio-group
v-model="reportResult.AffectRead"
:disabled="isReportSaved"
>
<el-radio :label="true">Affect</el-radio>
<el-radio :label="false">Non-Affect</el-radio>
</el-radio-group>
<el-input
v-model="reportResult.AffectReadNote"
type="textarea"
:rows="4"
placeholder="Please input Reason Or Note"
/>
</div>
</el-form-item>
</el-form>
<!-- </el-collapse-item> -->
<el-collapse-item
title="Non-nodular Target Lesions (Non-lymph Node Target Lesions)"
name="Non-lymphNodeTarget"
disabled
>
<el-table
ref="Non-lymphNodeTarget"
:data="NonlymphNodeTargetList"
stripe
size="small"
>
<el-table-column type="index" width="60" />
<el-table-column
prop="TULNKID"
label="Lesion No"
show-overflow-tooltip
min-width="100"
/>
<el-table-column
prop="Anatomy"
label="Anatomy"
show-overflow-tooltip
min-width="100"
>
<template slot-scope="scope">{{
scope.row.TULOC + ' ' + scope.row.TULAT + ' ' + scope.row.TUDIR
}}</template>
</el-table-column>
<el-table-column
prop="TRORRES"
label="Long Axis Measurement(mm)"
show-overflow-tooltip
min-width="150"
/>
<el-table-column label="Anatomy Description" min-width="100">
<template slot-scope="scope">
<el-input
v-model="scope.row.LocDescription"
type="text"
placeholder=""
size="small"
:disabled="isReportSaved"
/>
</template>
</el-table-column>
<el-table-column
prop="Note"
label="Comments"
show-overflow-tooltip
min-width="100"
>
<template slot-scope="scope">
<el-input
v-model="scope.row.Note"
type="text"
placeholder=""
size="small"
:disabled="isReportSaved"
/>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
<el-collapse-item
title="Nodular Target Lesions (Lymph Node Target Lesions)"
name="LymphNodeTarget"
disabled
>
<el-table
ref="Non-lymphNodeTarget"
:data="LymphNodeTargetList"
stripe
size="small"
>
<el-table-column type="index" width="60" />
<el-table-column
prop="TULNKID"
label="Lesion No"
show-overflow-tooltip
min-width="100"
/>
<el-table-column
prop="Anatomy"
label="Anatomy"
show-overflow-tooltip
min-width="100"
>
<template slot-scope="scope">{{
scope.row.TULOC + ' ' + scope.row.TULAT + ' ' + scope.row.TUDIR
}}</template>
</el-table-column>
<el-table-column
prop="TRORRES"
label="Short Axis Measurement(mm)"
show-overflow-tooltip
min-width="150"
/>
<el-table-column
prop="LocDescription"
label="Anatomy Description"
min-width="100"
>
<template slot-scope="scope">
<el-input
v-model="scope.row.LocDescription"
type="text"
placeholder=""
size="small"
:disabled="isReportSaved"
/>
</template>
</el-table-column>
<el-table-column
prop="Note"
label="Comments"
show-overflow-tooltip
min-width="100"
>
<template slot-scope="scope">
<el-input
v-model="scope.row.Note"
type="text"
placeholder=""
size="small"
:disabled="isReportSaved"
/>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
<el-collapse-item
title="Non-target Lesion"
name="Non-targetLesion"
disabled
>
<el-table
ref="Non-lymphNodeTarget"
:data="NontargetLesionList"
stripe
size="small"
>
<el-table-column type="index" width="60" />
<el-table-column
prop="TULNKID"
label="Lesion No"
show-overflow-tooltip
min-width="100"
/>
<el-table-column
prop="Anatomy"
label="Anatomy"
show-overflow-tooltip
min-width="100"
>
<template slot-scope="scope">{{
scope.row.TULOC + ' ' + scope.row.TULAT + ' ' + scope.row.TUDIR
}}</template>
</el-table-column>
<el-table-column
prop="LocDescription"
label="Anatomy Description"
show-overflow-tooltip
min-width="100"
>
<template slot-scope="scope">
<el-input
v-model="scope.row.LocDescription"
type="text"
placeholder=""
size="small"
:disabled="isReportSaved"
/>
</template>
</el-table-column>
<el-table-column
prop="Note"
label="Comments"
show-overflow-tooltip
min-width="100"
:disabled="isReportSaved"
>
<template slot-scope="scope">
<el-input
v-model="scope.row.Note"
type="text"
placeholder=""
size="small"
/>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
<el-collapse-item
title="Measurements Calculation"
name="MeasurementsCalculation"
disabled
>
<el-row :gutter="20">
<el-col
:span="6"
><div class="grid-content bg-purple">
<span style="margin-left: 10px">SOD(mm):</span>
<el-input v-model="SOD" disabled /></div></el-col>
<el-col
:span="6"
:offset="6"
><div class="grid-content bg-purple">
<span style="margin-left: 10px">Non-nodular Lesions SOD(mm):</span>
<el-input v-model="NonnodularLesionsSOD" disabled /></div></el-col>
</el-row>
</el-collapse-item>
<el-collapse-item
title="Disease Situation"
name="DiseaseSituation"
disabled
>
<el-form ref="situationForm" :model="reportResult" label-width="100px">
<el-form-item
prop="DiseaseSituation"
label="Disease present or absent:"
label-width="200px"
:rules="[{ required: true, message: '', trigger: 'blur' }]"
>
<el-radio-group
v-model="reportResult.DiseaseSituation"
:disabled="isReportSaved"
>
<el-radio :label="1">Present</el-radio>
<el-radio :label="2">Absent</el-radio>
<el-radio :label="3">NE</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item prop="Comments" label="Comments">
<el-input
v-model="reportResult.Comment"
type="textarea"
:rows="2"
style="margin: 10px"
placeholder="Comment"
:disabled="isReportSaved"
/>
</el-form-item>
</el-form>
<!-- <div style="margin: 10px 0px">
<span style="margin-left: 10px">Disease present or absent:</span>
<el-radio-group
v-model="reportResult.DiseaseSituation"
:disabled="isReportSaved"
>
<el-radio :label="1">Present</el-radio>
<el-radio :label="2">Absent</el-radio>
<el-radio :label="3">NE</el-radio>
</el-radio-group>
<el-input
type="textarea"
:rows="2"
style="margin: 10px"
placeholder="Comment"
v-model="reportResult.Comment"
:disabled="isReportSaved"
>
</el-input>
</div> -->
</el-collapse-item>
</el-collapse>
<div id="footer">
<el-button
type="primary"
style="float: left; margin-left: 500px"
:disabled="isReportSaved"
@click="addBaseLine"
>Save</el-button>
<el-button
type="primary"
style="float: left; margin-left: 600px"
:disabled="isReportSaved"
@click="submiteReport"
>Submit Report</el-button>
</div>
</div>
</template>
<script>
import {
addBaseLineLesion,
getBLLineLesion,
submiteReport,
saveImageLabelList
} from '@/api/reading'
export default {
name: 'WorkloadTask',
data() {
return {
isReportSaved: false,
pageTPInfo: '',
activeNames: [
'ImageQualityAssessment',
'Non-lymphNodeTarget',
'LymphNodeTarget',
'Non-targetLesion',
'MeasurementsCalculation',
'DiseaseSituation'
],
NonlymphNodeTargetEditVisible: false,
LymphNodeTargetEditVisible: false,
NontargetLesionEditVisible: false,
lymphNodeTargetFormModel: {},
nonlymphNodeTargetFormModel: {},
nontargetLesionFormModel: {},
NonlymphNodeTargetList: [
// {
// TULNKID: '',
// TULOC: 'lung',
// TULAT: ' left',
// TUDIR: 'lower lobe',
// TRORRES: '10',
// LocDescription: 'Tumor Identification',
// Note: 'cc'
// }
],
LymphNodeTargetList: [
// {
// TULNKID: 'T05',
// TULOC: 'lymph node hilum of liver',
// TULAT: ' ',
// TUDIR: '',
// TRORRES: '27.7',
// LocDescription: 'Tumor Identification',
// Note: 'cc'
// },
],
NontargetLesionList: [],
imageLabelList: [],
imageDataHasUpdate: false,
reportResult: {
TpCode: '',
Qualified: '',
DiseaseProgression: '',
NotEvaluable: '',
Timepoint: '',
TrialCode: '',
SubjectCode: '',
VisitNum: '',
VisitName: '',
DiseaseSituation: '',
Comment: '',
TPId: '',
DicomStudyId: ''
}
}
},
computed: {
// 计算属性的 getter
SOD: function() {
var sum = 0
this.NonlymphNodeTargetList.forEach((t) => (sum += parseInt(t.TRORRES)))
this.LymphNodeTargetList.forEach((t) => (sum += parseInt(t.TRORRES)))
return sum
},
NonnodularLesionsSOD: function() {
var sum = 0
this.NonlymphNodeTargetList.forEach((t) => (sum += parseInt(t.TRORRES)))
return sum
}
},
created() {
this.pageTPInfo = this.$route.query
this.reportResult.TpCode = this.pageTPInfo.WorkloadCode
this.reportResult.TrialCode = this.pageTPInfo.TrialCode
this.reportResult.SubjectCode = this.pageTPInfo.SubjectCode
this.reportResult.VisitNum = this.pageTPInfo.VisitNum
this.reportResult.VisitName = this.pageTPInfo.VisitName
this.reportResult.TPId = this.pageTPInfo.WorkloadId
this.reportResult.DicomStudyId = this.pageTPInfo.StudyId
this.isReportSaved = this.pageTPInfo.Status === 80
this.getBLLineLesion()
},
mounted() {
var that = this
window.addEventListener('storage', function(e) {
// 判断是影像界面 设置了数据 设置的key而且一定是'measureData' 防止其他界面操作localStorage 从而进入
if (e.url.indexOf('baseLine') !== -1 && e.key === 'measureData') {
var measureData = JSON.parse(e.newValue)
var tpData = measureData[that.pageTPInfo.WorkloadCode]
if (measureData) {
that.imageDataHasUpdate = true
that.imageLabelList = []
tpData.forEach((t) => that.imageLabelList.push(t))
var lesionType1 = tpData.filter((t) => t.lesionType === 1)
var lesionType2 = tpData.filter((t) => t.lesionType === 2)
var lesionType3 = tpData.filter((t) => t.lesionType === 3)
// that.NonlymphNodeTargetList = []
if (lesionType1.length > 0) {
lesionType1.forEach((element) => {
var location = element.lesionLocation.split('-')
element.TRORRES = element.lesionValue.substring(
0,
element.lesionValue.length - 2
)
element.TULOC = location[0] || ''
element.TULAT = location[1] || ''
element.TUDIR = location[2] || ''
var old = that.NonlymphNodeTargetList.filter(
(t) =>
t.lesionValue === element.lesionValue &&
t.lesionLocation === element.lesionLocation
)[0]
if (old) {
element.LocDescription = old.LocDescription
element.Note = old.Note
}
})
that.NonlymphNodeTargetList = lesionType1
}
// that.LymphNodeTargetList = []
if (lesionType2.length > 0) {
lesionType2.forEach((element) => {
var location = element.lesionLocation.split('-')
element.TRORRES = element.lesionValue.substring(
0,
element.lesionValue.length - 2
)
element.TULOC = location[0] || ''
element.TULAT = location[1] || ''
element.TUDIR = location[2] || ''
var old = that.LymphNodeTargetList.filter(
(t) =>
t.lesionValue === element.lesionValue &&
t.lesionLocation === element.lesionLocation
)[0]
if (old) {
element.LocDescription = old.LocDescription
element.Note = old.Note
}
})
that.LymphNodeTargetList = lesionType2
}
// that.NontargetLesionList = []
if (lesionType3.length > 0) {
lesionType3.forEach((element) => {
var location = element.lesionLocation.split('-')
element.TULOC = location[0] || ''
element.TULAT = location[1] || ''
element.TUDIR = location[2] || ''
var old = that.NontargetLesionList.filter(
(t) => t.lesionLocation === element.lesionLocation
)[0]
if (old) {
element.LocDescription = old.LocDescription
element.Note = old.Note
}
})
that.NontargetLesionList = lesionType3
}
// 删除localStorage本次数据
delete measureData[that.pageTPInfo.WorkloadCode]
localStorage.setItem('measureData', JSON.stringify(measureData))
}
}
})
},
methods: {
getBLLineLesion() {
var that = this
getBLLineLesion(
this.pageTPInfo.TrialCode,
this.pageTPInfo.SubjectCode,
this.pageTPInfo.WorkloadCode
).then((res) => {
if (res.Result.LesionInformation.length > 0) {
that.NonlymphNodeTargetList = res.Result.LesionInformation.filter(
(t) => t.LesionType === 1
)
that.LymphNodeTargetList = res.Result.LesionInformation.filter(
(t) => t.LesionType === 2
)
that.NontargetLesionList = res.Result.LesionInformation.filter(
(t) => t.LesionType === 3
)
}
if (res.Result.ReportResult) {
that.reportResult = res.Result.ReportResult
}
that.reportResult.TpCode = this.pageTPInfo.WorkloadCode
})
},
addBaseLine() {
var that = this
this.$refs.qualifiedForm.validate((valid) => {
if (valid) {
this.$refs.situationForm.validate((valid) => {
if (valid) {
// 验证规则 靶病灶 总数量不大于5每个器官不多于2
var errorMsgArray = []
if (that.NonlymphNodeTargetList.length + that.LymphNodeTargetList.length > 5) {
errorMsgArray.push('The number of target lesions should not exceed 5 .')
}
var TULOCArray1 = that.NonlymphNodeTargetList.map((obj, index) => {
if (obj.TULOC) return obj.TULOC
})
var TULOCArray2 = that.LymphNodeTargetList.map((obj, index) => {
if (obj.TULOC) return obj.TULOC
})
var TULOCArray = TULOCArray1.concat(TULOCArray2)
// 统计每个器官的数量,并返回最高的次数
var top = that.getCount(TULOCArray, 1)
if (top[0].count > 2) {
errorMsgArray.push('The number of lesions in the same organ should not exceed 2 ')
var tips = errorMsgArray.join('\n')
this.$alert(tips, 'target lesion', {
confirmButtonText: '确定'
})
// return
}
var postArray = []
// 非淋巴结靶病灶
this.NonlymphNodeTargetList.forEach((element) => {
postArray.push({
LesionType: 1, // 病灶类型
STUDYID: this.pageTPInfo.TrialCode, // 项目Id
USUBJID: this.pageTPInfo.SubjectCode, // 受试者Id
TUSPID: this.pageTPInfo.Sponsor,
// TUSEQ="" //病灶序号 不传递
// TUGRPID:"",//病灶分组
// TUREFID:"" //医学影像 ID
// TULNKID:"" //关联测量结果及TUGRPID一起标识分裂及合并
TUTESTCD: 'TUMIDENT',
TUTEST: 'Tumor Identification',
TUORRES: 'TARGET', // 标识结果 1target 2None target 3 New
TUSTRESC: 'TARGET',
TUNAM: 'zhizhun', // /完成肿瘤标识的供应商名称或标识
LocDescription: element.LocDescription, // 部位描述
TULOC: element.TULOC, // 解剖学位置
TULAT: element.TULAT, // 左侧 右侧。。。
TUDIR: element.TUDIR, // 方向
TUPORTOT: '', // 更详细的分布,安排,分配的修饰语, 比如,全部的,单一的,部分的,多数的。
TUMETHOD: '', // 标识肿瘤的方法
TUEVAL: '', // 评估者的角色。 例如:研究者,独立评估者。
TUEVALID: '', // 这个特定的评估者变量是与 TUEVAL一起使用来提供更详 细的信息
TUACPTFL: '', // 双人阅片 这个标帜用来认定能够被接受的一条评估记录。
VISITNUM: this.pageTPInfo.VisitNum,
VISIT: this.pageTPInfo.VisitName,
VISITDY: 0,
EPOCH: '', // 时期
TUDTC: '', // 检查日期
TUDY: 0, // 检查日
TRTESTCD: '', // 检查简称
TRTEST: '', // 检查项名称
TRORRES: element.TRORRES, // 原始结果
TRORRESU: '', // 原始单位
TRSTRESC: '', // 标准化结果
TRSTRESN: 0, // 标准化结果N
TRSTRESU: '', // // 标准化单位
TRSTAT: '', // 未做状态
TRREASND: '', // 未做原因
Note: element.Note,
TRGRPID: '', // 用于关联域内同一受试者的一组相关记录
TRDTC: '', // 检查日期
TRDY: 0 // 检查日
})
})
// 淋巴结靶病灶
this.LymphNodeTargetList.forEach((element) => {
postArray.push({
LesionType: 2, // 病灶类型
STUDYID: this.pageTPInfo.TrialCode, // 项目Id
USUBJID: this.pageTPInfo.SubjectCode, // 受试者Id
TUSPID: this.pageTPInfo.Sponsor,
// TUSEQ="" //病灶序号 不传递
// TUGRPID:"",//病灶分组
// TUREFID:"" //医学影像 ID
// TULNKID:"" //关联测量结果及TUGRPID一起标识分裂及合并
TUTESTCD: 'TUMIDENT',
TUTEST: 'Tumor Identification',
TUORRES: 'TARGET', // 标识结果 1target 2None target 3 New
TUSTRESC: 'TARGET',
TUNAM: 'zhizhun', // /完成肿瘤标识的供应商名称或标识
LocDescription: element.LocDescription, // 部位描述
TULOC: element.TULOC, // 解剖学位置
TULAT: element.TULAT, // 左侧 右侧。。。
TUDIR: element.TUDIR, // 方向
TUPORTOT: '', // 更详细的分布,安排,分配的修饰语, 比如,全部的,单一的,部分的,多数的。
TUMETHOD: '', // 标识肿瘤的方法
TUEVAL: '', // 评估者的角色。 例如:研究者,独立评估者。
TUEVALID: '', // 这个特定的评估者变量是与 TUEVAL一起使用来提供更详 细的信息
TUACPTFL: '', // 双人阅片 这个标帜用来认定能够被接受的一条评估记录。
VISITNUM: this.pageTPInfo.VisitNum,
VISIT: this.pageTPInfo.VisitName,
VISITDY: 0,
EPOCH: '', // 时期
TUDTC: '', // 检查日期
TUDY: 0, // 检查日
TRTESTCD: '', // 检查简称
TRTEST: '', // 检查项名称
TRORRES: element.TRORRES, // 原始结果
TRORRESU: '', // 原始单位
TRSTRESC: '', // 标准化结果
TRSTRESN: 0, // 标准化结果N
TRSTRESU: '', // // 标准化单位
TRSTAT: '', // 未做状态
TRREASND: '', // 未做原因
Note: element.Note,
TRGRPID: '', // 用于关联域内同一受试者的一组相关记录
TRDTC: '', // 检查日期
TRDY: 0 // 检查日
})
})
// 非靶病灶
this.NontargetLesionList.forEach((element) => {
postArray.push({
LesionType: 3, // 病灶类型
STUDYID: this.pageTPInfo.TrialCode, // 项目Id
USUBJID: this.pageTPInfo.SubjectCode, // 受试者Id
TUSPID: this.pageTPInfo.Sponsor,
// TUSEQ="" //病灶序号 不传递
// TUGRPID:"",//病灶分组
// TUREFID:"" //医学影像 ID
// TULNKID:"" //关联测量结果及TUGRPID一起标识分裂及合并
TUTESTCD: 'TUMIDENT',
TUTEST: 'Tumor Identification',
TUORRES: 'None TARGET', // 标识结果 1target 2None target 3 New
TUSTRESC: 'None TARGET',
TUNAM: 'zhizhun', // /完成肿瘤标识的供应商名称或标识
LocDescription: element.LocDescription, // 部位描述
TULOC: element.TULOC, // 解剖学位置
TULAT: element.TULAT, // 左侧 右侧。。。
TUDIR: element.TUDIR, // 方向
TUPORTOT: '', // 更详细的分布,安排,分配的修饰语, 比如,全部的,单一的,部分的,多数的。
TUMETHOD: '', // 标识肿瘤的方法
TUEVAL: '', // 评估者的角色。 例如:研究者,独立评估者。
TUEVALID: '', // 这个特定的评估者变量是与 TUEVAL一起使用来提供更详 细的信息
TUACPTFL: '', // 双人阅片 这个标帜用来认定能够被接受的一条评估记录。
VISITNUM: this.pageTPInfo.VisitNum,
VISIT: this.pageTPInfo.VisitName,
VISITDY: 0,
EPOCH: '', // 时期
TUDTC: '', // 检查日期
TUDY: 0, // 检查日
TRTESTCD: '', // 检查简称
TRTEST: '', // 检查项名称
TRORRES: element.TRORRES, // 原始结果
TRORRESU: '', // 原始单位
TRSTRESC: '', // 标准化结果
TRSTRESN: 0, // 标准化结果N
TRSTRESU: '', // // 标准化单位
TRSTAT: '', // 未做状态
TRREASND: '', // 未做原因
Note: element.Note,
TRGRPID: '', // 用于关联域内同一受试者的一组相关记录
TRDTC: '', // 检查日期
TRDY: 0 // 检查日
})
})
this.$confirm('Sure fill in all the information?', {
type: 'warning',
distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}).then(() => {
addBaseLineLesion({
lesionInformation: postArray,
reportResult: this.reportResult,
sumOfDiameter: this.SOD,
sumDiameterOfNonLymphNode: this.NonnodularLesionsSOD
}).then((res) => {
// this.isReportSaved = true;
this.getBLLineLesion()
this.$message.success('saved successfully')
})
})
if (that.imageDataHasUpdate) {
that.saveImageLabel()
}
}
})
}
})
},
saveImageLabel() {
var param = {}
param.TpCode = this.pageTPInfo.WorkloadCode
param.ImageLabelList = []
this.imageLabelList.forEach((element) => {
param.ImageLabelList.push({
StudyId: this.pageTPInfo.StudyId,
LabelValue: JSON.stringify(element),
SeriesId: element.seriesId,
InstanceId: element.instanceId
})
})
saveImageLabelList(param).then((res) => {
this.imageDataHasUpdate = false
this.$message.success('saved imgeLable successfully')
})
},
submiteReport() {
submiteReport(this.pageTPInfo.WorkloadId).then((res) => {
this.$message.success('Report saved successfully')
this.isReportSaved = true
})
},
getCount(arr, rank, ranktype) {
var obj = {}; var k; var arr1 = []
for (var i = 0, len = arr.length; i < len; i++) {
k = arr[i]
if (obj[k]) { obj[k]++ } else { obj[k] = 1 }
}
// 保存结果{el-'元素'count-出现次数}
for (var o in obj) {
arr1.push({ el: o, count: obj[o] })
}
// 排序(降序)
arr1.sort(function(n1, n2) {
return n2.count - n1.count
})
// 如果ranktype为1则为升序反转数组
if (ranktype === 1) {
arr1 = arr1.reverse()
}
var rank1 = rank || arr1.length
return arr1.slice(0, rank1)
// getCount([1,2,3,1,2,5,2,4,1,2,6,2,1,3,2])//默认情况,返回所有元素出现的次数
// getCount([1,2,3,1,2,5,2,4,1,2,6,2,1,3,2],3)//传参rank=3只返回出现次数排序前三的
// getCount([1,2,3,1,2,5,2,4,1,2,6,2,1,3,2],null,1)//传参ranktype=1,rank=null升序返回所有元素出现次数
// getCount([1,2,3,1,2,5,2,4,1,2,6,2,1,3,2],3,1)//传参rank=3ranktype=1只返回出现次数排序升序前三的
}
}
}
</script>
<style lang="scss">
.ImageReviewTask-list {
height: 100%;
.el-collapse-item.is-disabled .el-collapse-item__header {
color: black;
font-weight: bold;
}
.el-collapse-item__header {
background-color: #f0f0f0;
height: 50px;
line-height: 50px;
padding: 0 5px;
}
.el-collapse-item__wrap {
padding: 0 5px;
}
.el-collapse {
margin-bottom: 100px;
}
#footer {
position: fixed;
bottom: 30px;
width: 100%;
// height: 30px; /*脚部的高度*/
// background: #6cf;
// clear: both;
}
}
</style>