19 Commits

Author SHA1 Message Date
wangxiaoshuang 9d8db73c4f 靶段标注上传下载列表显示受试者编号
continuous-integration/drone/push Build is passing
2026-08-27 15:14:46 +08:00
wangxiaoshuang 7fa26be9d1 pm靶段标注开放预览
continuous-integration/drone/push Build is passing
2026-08-27 14:40:54 +08:00
wangxiaoshuang 389a0b281e 后处理上传删除按钮限定IR 2026-08-27 14:16:31 +08:00
wangxiaoshuang 94d7f370d3 靶段标注排序问题
continuous-integration/drone/push Build is passing
2026-08-27 14:04:16 +08:00
wangxiaoshuang 6151a73104 已阅的任务后处理禁用上传 2026-08-27 13:28:25 +08:00
wangxiaoshuang 52e6863df7 1
continuous-integration/drone/push Build is passing
2026-08-27 11:10:41 +08:00
wangxiaoshuang dd7e39faee IVUS和OCT允许上传判断修改
continuous-integration/drone/push Build is passing
2026-08-27 10:59:59 +08:00
wangxiaoshuang 88cf1f5752 后处理上传下载排序改为升序
continuous-integration/drone/push Build is passing
2026-08-27 10:27:35 +08:00
wangxiaoshuang cf36795651 IVUS和OCT上传下载校验修改
continuous-integration/drone/push Build is passing
2026-08-27 10:12:47 +08:00
caiyiling b9804432d4 1 2026-08-25 15:44:48 +08:00
caiyiling a8fcf315c4 图标更改
continuous-integration/drone/push Build is passing
2026-08-25 14:37:41 +08:00
caiyiling 3ea8b8b771 图标更改
continuous-integration/drone/push Build is passing
2026-08-25 13:41:54 +08:00
caiyiling 017d0198fe 触发裁判指标逻辑更改
continuous-integration/drone/push Build is passing
2026-08-25 11:21:46 +08:00
caiyiling 4d7971b30b Merge branch 'uat' of https://gitea.frp.extimaging.com/XCKJ/irc_web into uat
continuous-integration/drone/push Build is passing
2026-08-25 09:36:47 +08:00
caiyiling fc2ad8f5ba 裁判阅片更改 2026-08-25 09:36:28 +08:00
wangxiaoshuang a0ec05e665 上传文件铭感词检验添加国际化 2026-08-25 09:16:28 +08:00
wangxiaoshuang 08181b9aa2 1
continuous-integration/drone/push Build is passing
2026-08-24 15:11:34 +08:00
wangxiaoshuang ab27f86b68 IVUS和OCT模板下载
continuous-integration/drone/push Build is pending
2026-08-24 14:13:53 +08:00
caiyiling 95987af7cc 自动分类问题来源是数值类型时默认值改为NE 2026-08-21 15:40:11 +08:00
21 changed files with 121 additions and 58 deletions
+2 -2
View File
@@ -81,11 +81,11 @@ export function verifyIRStudyAllowUpload(data) {
})
}
// 影像下载成功确认
export function downloadImageSuccess(params) {
export function downloadImageSuccess(data) {
return request({
url: '/DownloadAndUpload/downloadImageSuccess',
method: 'post',
params
data
})
}
// 影像下载记录列表
+16 -1
View File
@@ -213,6 +213,14 @@ export function getIVUSTemplate(param) {
data: param
})
}
export function getIVUSTemplatesZip(param) {
return requestDownload({
url: '/IVUSCalculate/getIVUSTemplatesZip',
method: 'post',
responseType: 'blob',
data: param
})
}
export function uploadIVUSTemplate(param) {
return request({
url: `/IVUSCalculate/uploadIVUSTemplate`,
@@ -229,7 +237,14 @@ export function getOCTFCTTemplate(param) {
data: param
})
}
export function getOCTFCTTemplatesZip(param) {
return requestDownload({
url: '/OCTCalculate/getOCTFCTTemplatesZip',
method: 'post',
responseType: 'blob',
data: param
})
}
export function uploadOCTFCTTemplate(param) {
return request({
url: `/OCTCalculate/uploadOCTFCTTemplate`,
@@ -24,7 +24,7 @@
</div>
<!--上传列表@selection-change="handleSelectionChange" @sort-change="handleSortByColumn"-->
<el-table ref="dicomFilesTable" v-adaptive="{ bottomOffset: 85 }" height="100" :data="list" :loading="loading"
class="dicomFiles-table" :default-sort="{ prop: 'TaskBlindName', order: 'descending' }">
class="dicomFiles-table" :default-sort="{ prop: 'TaskBlindName', order: 'ascending' }">
<!-- <el-table-column
type="selection"
width="55"
@@ -32,8 +32,8 @@
/> -->
<el-table-column type="index" width="40" />
<!--受试者-->
<el-table-column :label="$t('download:table:subjectCode')" min-width="130" prop="SubjectCode"
show-overflow-tooltip v-if="isReadingTaskViewInOrder !== 0" />
<el-table-column :label="$t('download:table:subjectCode')" prop="SubjectCode" show-overflow-tooltip
v-if="isReadingTaskViewInOrder !== 0 || IsImageSegment" />
<!--访视名称-->
<el-table-column prop="VisitName" :label="$t('download:table:VisitName')" sortable v-if="IsImageSegment" />
<!--任务名称-->
@@ -67,8 +67,8 @@
</el-table-column>
<el-table-column :label="$t('common:action:action')" fixed="right" width="150">
<template slot-scope="scope">
<!--预览--->
<el-button circle icon="el-icon-view" :title="$t('download:button:preview')" :disabled="forbid"
<!--预览:disabled="forbid"--->
<el-button circle icon="el-icon-view" :title="$t('download:button:preview')"
@click.stop="preview(scope.row)" />
<!--下载--->
<el-button circle icon="el-icon-download" :title="$t('download:button:download')"
@@ -297,7 +297,7 @@ export default {
if (res.IsSuccess) {
this.downloadId = res.OtherInfo.PreDownloadId
this.IsReadingTaskViewInOrder = res.OtherInfo.IsReadingTaskViewInOrder
this.downloadImage(res.Result)
this.downloadImage(res.Result, data.SubjectVisitTaskList)
}
} catch (err) {
this.btnLoading = false
@@ -305,12 +305,12 @@ export default {
}
},
// 打包下载
async downloadImage(data) {
async downloadImage(data, params) {
try {
let { files, name, fileType } = this.formatDownloadFile(data)
let res = await downLoadFile(files, name, 'zip')
if (res && this.downloadId) {
this.downloadImageSuccess()
this.downloadImageSuccess(params)
}
} catch (err) {
console.log(err)
@@ -449,13 +449,13 @@ export default {
return { files, name }
},
// 影像下载成功确认
async downloadImageSuccess() {
async downloadImageSuccess(data) {
try {
let params = {
TrialImageDownloadId: this.downloadId,
}
if (this.isReading) {
params.VisitTaskId = this.TaskId
params.VisitTaskIdList = data.map(item => item.TaskId)
}
await downloadImageSuccess(params)
} catch (err) {
@@ -8,10 +8,11 @@
</div>
</div>
<!--检查列表-->
<el-table :data="list" style="width: 100%" height="300" :loading="loading">
<el-table :data="list" style="width: 100%" height="300" :loading="loading"
:default-sort="{ prop: 'TaskBlindName', order: 'ascending' }">
<!--受试者-->
<el-table-column prop="SubjectCode" :label="$t('upload:dicom:table:subjectCode')" sortable
v-if="isReadingTaskViewInOrder !== 0" />
v-if="isReadingTaskViewInOrder !== 0 || IsImageSegment" />
<!--访视名称-->
<el-table-column prop="VisitName" :label="$t('download:table:VisitName')" v-if="IsImageSegment" sortable />
<!--任务名称-->
@@ -43,8 +44,10 @@
<template slot-scope="scope">
<div class="btnBox">
<!--上传--->
<form id="inputForm" :ref="`uploadForm_${scope.row.Id}`" enctype="multipart/form-data"
v-if="!forbid && (!isReading || isDownloaded)">
<form id="inputForm" :ref="`uploadForm_${scope.row.Id}`" enctype="multipart/form-data" v-if="hasPermi(['role:ir']) && !forbid && (!isReading || scope.row.IsIRImageDownloaded || (!scope.row.IsIRImageDownloaded && Criterion && Criterion.CriterionType &&
Criterion.CriterionType != 19 &&
Criterion.CriterionType != 20
)) && scope.row.ReadingTaskState < 2">
<div class="form-group" style="margin-right: 10px">
<div :id="`directoryInputWrapper_${scope.row.Id}`" class="btn btn-link file-input">
<el-button circle icon="el-icon-upload2" :disabled="btnLoading" :loading="btnLoading"
@@ -64,16 +67,17 @@
<el-button circle :disabled="!scope.row.UploadStudyList ||
scope.row.UploadStudyList.length <= 0 ||
scope.row.ReadingTaskState === 2
" icon="el-icon-delete" :title="$t('upload:dicom:button:delete')" @click.stop="remove(scope.row)" />
" v-if="hasPermi(['role:ir'])" icon="el-icon-delete" :title="$t('upload:dicom:button:delete')"
@click.stop="remove(scope.row)" />
</div>
</template>
</el-table-column>
</el-table>
<div style="margin: 10px 0" class="top">
<span>{{ $t('upload:dicom:uploadTitle') }}</span>
<div class="btnBox" v-if="!forbid && (!isReading || isDownloaded)">
<div class="btnBox" v-if="!forbid">
<span style="margin-right: 10px">{{ $store.state.trials.uploadTip }}</span>
<form id="inputForm" ref="uploadForm" enctype="multipart/form-data">
<form id="inputForm" ref="uploadForm" enctype="multipart/form-data" v-if="!isReading">
<div class="form-group">
<div id="directoryInputWrapper" class="btn btn-link file-input">
<el-button type="primary" :disabled="btnLoading" :loading="btnLoading" size="mini">{{
@@ -12,10 +12,10 @@
</div>
<!--检查列表 @sort-change="handleSortByColumn"-->
<el-table :data="list" style="width: 100%" v-adaptive="{ bottomOffset: 60 }" :loading="loading"
:default-sort="{ prop: 'TaskBlindName', order: 'descending' }">
:default-sort="{ prop: 'TaskBlindName', order: 'ascending' }">
<!--受试者 sortable="custom"-->
<el-table-column prop="SubjectCode" :label="$t('upload:nonedicom:table:subject')"
v-if="isReadingTaskViewInOrder !== 0" />
v-if="isReadingTaskViewInOrder !== 0 || IsImageSegment" />
<!--访视名称-->
<el-table-column prop="VisitName" :label="$t('upload:nonedicom:table:VisitName')" sortable
v-if="IsImageSegment" />
@@ -110,12 +110,16 @@
<el-button circle :disabled="scope.row.UploadedFileCount <= 0" icon="el-icon-view"
:title="$t('upload:nonedicom:button:preview')" @click.stop="handlePreviewNoneDicomFiles(scope.row)" />
<!--上传--->
<el-button circle icon="el-icon-upload2" :title="$t('upload:nonedicom:button:upload')" v-if="!forbid"
@click.native.prevent="handleUpload(scope.row)" :disabled="isReading && !isDownloaded" />
<el-button circle icon="el-icon-upload2" :title="$t('upload:nonedicom:button:upload')" v-if="hasPermi(['role:ir']) && !forbid && (!isReading || scope.row.IsIRImageDownloaded || (!scope.row.IsIRImageDownloaded && Criterion && Criterion.CriterionType &&
Criterion.CriterionType != 19 &&
Criterion.CriterionType != 20
)) && scope.row.ReadingTaskState < 2" @click.native.prevent="handleUpload(scope.row)" />
<!-- <el-button circle icon="el-icon-upload2" :title="$t('upload:nonedicom:button:upload')"
@click.native.prevent="handleUpload(scope.row)" /> -->
<!--删除--->
<el-button :disabled="scope.row.UploadedFileCount <= 0 ||
scope.row.ReadingTaskState === 2
" circle icon="el-icon-delete" :title="$t('upload:nonedicom:button:delete')"
" v-if="hasPermi(['role:ir'])" circle icon="el-icon-delete" :title="$t('upload:nonedicom:button:delete')"
@click.stop="remove(scope.row)" />
</template>
</el-table-column>
@@ -397,7 +401,7 @@ export default {
}
},
// 扫描待上传文件
beginScanFiles(e) {
async beginScanFiles(e) {
var files = [...e.target.files]
var sameFiles = [], zipFiles = [], f = false
files.forEach((file) => {
@@ -405,7 +409,7 @@ export default {
.substring(file.name.lastIndexOf('.'))
.toLocaleLowerCase()
if (extendName === '.zip' && this.IsImageSegment) {
if (file.name.indexOf('筛选期') > -1 || file.name.indexOf('研究结束') > -1) f = true
if (file.name.indexOf(this.$t("trials:uploadNonDicoms:checkValue:SelectionPeriod")) > -1 || file.name.indexOf("trials:uploadNonDicoms:checkValue:researchOver") > -1) f = true
zipFiles.push(file)
}
if (
@@ -416,11 +420,13 @@ export default {
}
})
if (zipFiles.length > 0) {
zipFiles.forEach(async file => {
for (let i = 0; i < zipFiles.length; i++) {
let file = zipFiles[i]
let list = await this.readZipFileListRaw(file)
if (!f) f = list.some(i => i.path.indexOf('筛选期') > -1 || i.path.indexOf('研究结束') > -1)
if (!f) f = list.some(i => i.path.indexOf(this.$t("trials:uploadNonDicoms:checkValue:SelectionPeriod")) > -1 || i.path.indexOf(this.$t("trials:uploadNonDicoms:checkValue:researchOver")) > -1)
list = null
})
if (f) break
}
}
if (f) return this.$confirm(this.$t("trials:uploadNonDicoms:confirm:zipNameNonCompliant"), '', {
type: "warning"
@@ -684,8 +690,8 @@ export default {
},
(percentage, checkpoint, lastPer) => {
item.uploadFileSize += checkpoint.size * (percentage - lastPer)
if (item.uploadFileSize > file.fileSize) {
item.uploadFileSize = file.fileSize > 0 ? file.fileSize : 1
if (item.uploadFileSize > file.size) {
item.uploadFileSize = file.size > 0 ? file.size : 1
}
},
{
+1
View File
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1787639576282" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5836" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M511.974687 0.000434A511.992298 511.992298 0 1 1 0.00047 511.992732 511.30523 511.30523 0 0 1 511.974687 0.000434z m93.350858 188.979888l-87.366133 153.053459-295.168071 0.090404c-28.567568 0-51.728995 19.147503-51.728995 42.760949s23.161427 42.760949 51.728995 42.760948h246.331994l-93.911361 164.643213h-152.420633c-28.567568 0-51.728995 19.147503-51.728995 42.760949s23.125266 42.79711 51.728995 42.79711h103.584556l-39.416012 69.19499a34.498051 34.498051 0 1 0 59.919571 34.172597l58.852806-103.385668h395.027995c28.567568 0 51.728995-19.147503 51.728995-42.760948s-23.161427-42.760949-51.728995-42.760949H454.58642l93.983684-164.661294h252.190153c28.567568 0 51.728995-19.147503 51.728995-42.760948s-23.161427-42.760949-51.728995-42.760949l-203.372157-0.090404 67.893176-118.862781a34.485394 34.485394 0 1 0-59.901489-34.190678z" fill="#1296db" p-id="5837"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -396,7 +396,12 @@
:label="$t('trials:readingTracking:config:questionName')"
show-overflow-tooltip
width="600"
/>
>
<template slot-scope="scope">
<svg-icon v-show="scope.row.IsTriggerJudge" icon-class="notEqual" class="svg-icon"/>
{{ scope.row.QuestionName }}
</template>
</el-table-column>
<el-table-column
prop="judgeResult"
:label="$t('trials:adReview:title:result')"
@@ -435,7 +440,7 @@
<el-radio-group
v-show="!(scope.row.Type === 'class' || scope.row.DataSource === 1)"
v-model="judgeSelectedArmMap[scope.row.ReadingQuestionId]"
:disabled="readingTaskState >= 2"
:disabled="readingTaskState >= 2 || !scope.row.IsTriggerJudge"
@change="(val) => handleJudgeArmChange(scope.row, val)"
>
<el-radio :label="1">
@@ -834,10 +839,22 @@ export default {
// this.judgeQs = QuestionList
this.$set(this.judgeForm, 'judgeResultRemark', res.Result.JudgeResultRemark || '')
QuestionList.map((item) => {
let val = null
if (!item.Answer && item.Type === 'number' && !item.IsTriggerJudge) {
val = this.getJudgeAnswerAverageValue(item)
} else if (!item.Answer && !item.IsTriggerJudge) {
const row = this.judgeAnswers.find(v => {
return v.ReadingQuestionId === item.ReadingQuestionId
})
if (!row) return null
val = row.R1Answer
} else {
val = item.Answer
}
this.$set(
this.judgeForm,
item.ReadingQuestionId,
item.Answer
val
)
if (item.Type === 'class') {
this.classArr.push({ triggerId: item.ClassifyQuestionId, classId: item.ReadingQuestionId, classifyAlgorithms: item.ClassifyAlgorithms, classifyType: item.ClassifyType })
@@ -869,6 +886,13 @@ export default {
handleJudgeArmChange(question, armEnum) {
this.$set(this.judgeSelectedArmMap, question.ReadingQuestionId, armEnum)
let val = this.getJudgeAnswerValue(question, armEnum)
// if (armEnum === 1 || armEnum === 2) {
// val = this.getJudgeAnswerValue(question, armEnum)
// } else if (armEnum === 3) {
// val = this.getJudgeAnswerAverageValue(question, armEnum)
// }
this.$set(
this.judgeForm,
question.ReadingQuestionId,
@@ -886,7 +910,7 @@ export default {
parseFloat(val) < parseFloat(v.lt)
)
})
answer = o ? o.label : null
answer = o ? o.label : 'NE'
} else if (i.classifyType === 1) {
const o = list.find(v => {
return v.val.includes(val)
@@ -1152,6 +1176,19 @@ export default {
if (!row) return null
return armEnum === 1 ? row.R1Answer : row.R2Answer
},
getJudgeAnswerAverageValue(question) {
const row = this.judgeAnswers.find((item) => {
return item.ReadingQuestionId === question.ReadingQuestionId
})
if (!row) return null
let val = ((Number(row.R1Answer) + Number(row.R2Answer)) / 2)
let digitPlaces = parseInt(this.taskInfo.DigitPlaces)
if (digitPlaces > -1) {
return val.toFixed(digitPlaces)
} else {
return val
}
},
validateJudgeSelections() {
const missingQuestion = this.judgeQs.find((question) => {
const answer = this.judgeForm[question.ReadingQuestionId]
@@ -236,7 +236,7 @@
</template>
<script>
import { saveTaskQuestion, submitTableQuestion, deleteReadingRowAnswer } from '@/api/trials'
import { resetReadingTask, getIVUSTemplate } from '@/api/reading'
import { resetReadingTask, getIVUSTemplatesZip } from '@/api/reading'
import { getToken } from '@/utils/auth'
import DicomEvent from './../DicomEvent'
import store from '@/store'
@@ -867,7 +867,7 @@ export default {
const params = {
visitTaskId: this.visitTaskId
}
await getIVUSTemplate(params)
await getIVUSTemplatesZip(params)
} catch (e) {
console.log(e)
}
@@ -235,7 +235,7 @@
</template>
<script>
import { saveTaskQuestion, submitTableQuestion, deleteReadingRowAnswer } from '@/api/trials'
import { resetReadingTask, getOCTFCTTemplate, getOCTLipidAngleTemplate } from '@/api/reading'
import { resetReadingTask, getOCTFCTTemplatesZip, getOCTLipidAngleTemplate } from '@/api/reading'
import DicomEvent from './../DicomEvent'
import store from '@/store'
import { getToken } from '@/utils/auth'
@@ -890,7 +890,7 @@ export default {
visitTaskId: this.visitTaskId
}
if (lesionType === 104) {
await getOCTFCTTemplate(params)
await getOCTFCTTemplatesZip(params)
} else {
await getOCTLipidAngleTemplate(params)
}
@@ -434,7 +434,7 @@ export default {
parseFloat(obj.val) < parseFloat(v.lt)
)
})
answer = o ? o.label : null
answer = o ? o.label : 'NE'
} else if (i.classifyType === 1) {
let o = list.find(v => {
return v.val.includes(obj.val)
@@ -234,7 +234,7 @@ export default {
parseFloat(obj.val) < parseFloat(v.lt)
)
})
answer = o ? o.label : null
answer = o ? o.label : 'NE'
} else if (i.classifyType === 1) {
let o = list.find(v => {
return v.val.includes(obj.val)
@@ -757,7 +757,7 @@ export default {
parseFloat(obj.val) < parseFloat(v.lt)
)
})
answer = o ? o.label : null
answer = o ? o.label : 'NE'
} else if (i.classifyType === 1) {
let o = list.find(v => {
return v.val.includes(obj.val)
@@ -453,7 +453,7 @@ export default {
parseFloat(obj.val) < parseFloat(v.lt)
)
})
answer = o ? o.label : null
answer = o ? o.label : 'NE'
} else if (i.classifyType === 1) {
const o = list.find(v => {
return v.val.includes(obj.val)
@@ -1268,7 +1268,7 @@ export default {
parseFloat(val) < parseFloat(v.lt)
)
})
answer = o ? o.label : null
answer = o ? o.label : 'NE'
} else if (i.classifyType === 1) {
const o = list.find(v => {
return v.val.includes(val)
@@ -378,7 +378,7 @@ export default {
parseFloat(obj.val) < parseFloat(v.lt)
)
})
answer = o ? o.label : null
answer = o ? o.label : 'NE'
} else if (i.classifyType === 1) {
let o = list.find(v => {
return v.val.includes(obj.val)
@@ -50,7 +50,7 @@
:label="$t('trials:pendingReadingTasks:table:NoneDicomStudyCount')" show-overflow-tooltip
sortable="custom" /> -->
<!-- 标记访视数量 -->
<el-table-column prop="MarkVisitCount"
<el-table-column prop="MarkIVUSVisitCount"
:label="$t('trials:pendingReadingTasks:table:MarkVisitCount')" show-overflow-tooltip
sortable="custom">
<template slot-scope="scope">
@@ -59,7 +59,7 @@
</template>
</el-table-column>
<!-- 标记访视数量 -->
<el-table-column prop="MarkVisitCount"
<el-table-column prop="MarkOCTVisitCount"
:label="$t('trials:pendingReadingTasks:table:MarkOCTVisitCount')"
show-overflow-tooltip sortable="custom">
<template slot-scope="scope">
@@ -311,7 +311,7 @@ export default {
parseFloat(obj.val) < parseFloat(v.lt)
)
})
answer = o ? o.label : null
answer = o ? o.label : 'NE'
} else if (i.classifyType === 1) {
const o = list.find(v => {
return v.val.includes(obj.val)
@@ -6,7 +6,7 @@
<el-form v-loading="loading" :label-width="'100px'">
<!-- 仲裁对象 -->
<el-form-item :label="$t('trials:adRules:title:arbitrationRule')">
<el-radio-group v-model="JudgyInfo.ArbitrationRule" :disabled="isSign">
<el-radio-group v-model="JudgyInfo.ArbitrationRule" :disabled="isSign || !hasPermi(['trials:trials-panel:setting:reading-unit:edit'])">
<el-radio v-for="item of $d.ArbitrationRule" :key="item.id"
:disabled="!JudgyInfo.IsReadingTaskViewInOrder || true" :label="item.value" @change="changeArbitrationRule">
{{ item.label }}
@@ -15,7 +15,7 @@
</el-form-item>
<!-- 仲裁模式JudgeModeEnum 整体结果择一判定指标组合判定-->
<el-form-item :label="$t('trials:adRules:title:judgeMode')">
<el-radio-group v-model="JudgyInfo.JudgeModeEnum" :disabled="isSign">
<el-radio-group v-model="JudgyInfo.JudgeModeEnum" :disabled="isSign || !hasPermi(['trials:trials-panel:setting:reading-unit:edit'])">
<el-radio
v-for="item of $d.JudgeMode"
:key="item.id"
@@ -28,7 +28,7 @@
</el-form-item>
<!-- 裁判规则JudgeRuleEnum 访视一致规则访视差异规则-->
<el-form-item :label="$t('trials:adRules:title:judgeRule')">
<el-radio-group v-model="JudgyInfo.JudgeRuleEnum" :disabled="isSign">
<el-radio-group v-model="JudgyInfo.JudgeRuleEnum" :disabled="isSign || !hasPermi(['trials:trials-panel:setting:reading-unit:edit'])">
<el-radio
v-for="item of $d.JudgeRule"
:key="item.id"
@@ -761,7 +761,7 @@ export default {
parseFloat(obj.val) < parseFloat(v.lt)
)
})
answer = o ? o.label : null
answer = o ? o.label : 'NE'
} else if (i.classifyType === 1) {
let o = list.find(v => {
return v.val.includes(obj.val)
@@ -197,7 +197,7 @@ export default {
parseFloat(obj.val) < parseFloat(v.lt)
)
})
answer = o ? o.label : null
answer = o ? o.label : 'NE'
} else if (i.classifyType === 1) {
let o = list.find(v => {
return v.val.includes(obj.val)
@@ -354,8 +354,8 @@ export default {
},
(percentage, checkpoint, lastPer) => {
item.uploadFileSize += checkpoint.size * (percentage - lastPer)
if (item.uploadFileSize > file.fileSize) {
item.uploadFileSize = file.fileSize > 0 ? file.fileSize : 1
if (item.uploadFileSize > file.size) {
item.uploadFileSize = file.size > 0 ? file.size : 1
}
}
)
@@ -882,8 +882,8 @@ export default {
},
(percentage, checkpoint, lastPer) => {
item.uploadFileSize += checkpoint.size * (percentage - lastPer)
if (item.uploadFileSize > file.fileSize) {
item.uploadFileSize = file.fileSize > 0 ? file.fileSize : 1
if (item.uploadFileSize > file.size) {
item.uploadFileSize = file.size > 0 ? file.size : 1
}
},
{