部分问题修复
continuous-integration/drone/push Build encountered an error
Details
continuous-integration/drone/push Build encountered an error
Details
parent
33a8d8743e
commit
f8b4dd70c8
|
@ -245,13 +245,13 @@ export default {
|
||||||
if (this.IsDicom) {
|
if (this.IsDicom) {
|
||||||
var token = getToken()
|
var token = getToken()
|
||||||
routeData = this.$router.resolve({
|
routeData = this.$router.resolve({
|
||||||
path: `/showdicom?studyId=${row.Id}&TokenKey=${token}&type=Study&visitTaskId=${this.visitTaskId}`,
|
path: `/showdicom?studyId=${row.Id}&TokenKey=${token}&type=Study&visitTaskId=${this.visitTaskId}&isReading=true`,
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
let trialId = this.$route.query.trialId
|
let trialId = this.$route.query.trialId
|
||||||
var token = getToken()
|
var token = getToken()
|
||||||
routeData = this.$router.resolve({
|
routeData = this.$router.resolve({
|
||||||
path: `/showNoneDicoms?trialId=${trialId}&subjectVisitId=${row.SourceSubjectVisitId}&studyId=${row.Id}&TokenKey=${token}`,
|
path: `/showNoneDicoms?trialId=${trialId}&subjectVisitId=${row.SourceSubjectVisitId}&studyId=${row.Id}&TokenKey=${token}&isReading=true`,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
window.open(routeData.href, '_blank')
|
window.open(routeData.href, '_blank')
|
||||||
|
|
|
@ -110,7 +110,8 @@ let timer = null, // 网速定时器
|
||||||
// 获取网速
|
// 获取网速
|
||||||
export function getNetWorkSpeed() {
|
export function getNetWorkSpeed() {
|
||||||
if (timer) return false;
|
if (timer) return false;
|
||||||
if (lastPercentage < 100) return false;
|
// if (lastPercentage < 100) return false;
|
||||||
|
if (imageId && imageId !== Id) return false
|
||||||
imageId = null
|
imageId = null
|
||||||
timer = setInterval(() => {
|
timer = setInterval(() => {
|
||||||
let timeList = Object.keys(bytesReceivedPerSecond).sort((a, b) => a - b);
|
let timeList = Object.keys(bytesReceivedPerSecond).sort((a, b) => a - b);
|
||||||
|
@ -135,8 +136,9 @@ export function setNetWorkSpeedSize(totalPercentage, total, Id) {
|
||||||
if (imageId && imageId !== Id) return false
|
if (imageId && imageId !== Id) return false
|
||||||
imageId = Id
|
imageId = Id
|
||||||
let percentage = totalPercentage - lastPercentage
|
let percentage = totalPercentage - lastPercentage
|
||||||
|
percentage = percentage / 100
|
||||||
lastPercentage = totalPercentage
|
lastPercentage = totalPercentage
|
||||||
console.log(percentage, totalPercentage, total)
|
// console.log(percentage, totalPercentage, total)
|
||||||
let time = new Date().getTime();
|
let time = new Date().getTime();
|
||||||
let timeList = Object.keys(bytesReceivedPerSecond).sort((a, b) => a - b);
|
let timeList = Object.keys(bytesReceivedPerSecond).sort((a, b) => a - b);
|
||||||
let bytesTime = timeList.find(item => time - item < 1000);
|
let bytesTime = timeList.find(item => time - item < 1000);
|
||||||
|
@ -156,6 +158,7 @@ export function workSpeedclose(isForce = false) {
|
||||||
if (!isForce && lastPercentage < 100) {
|
if (!isForce && lastPercentage < 100) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
console.log('workSpeedclose')
|
||||||
if (timer) {
|
if (timer) {
|
||||||
clearInterval(timer);
|
clearInterval(timer);
|
||||||
timer = null;
|
timer = null;
|
||||||
|
|
|
@ -192,7 +192,8 @@ export default {
|
||||||
imageList: [],
|
imageList: [],
|
||||||
showSeriesList: [],
|
showSeriesList: [],
|
||||||
currentLoadIns: [],
|
currentLoadIns: [],
|
||||||
isFromCRCUpload: false
|
isFromCRCUpload: false,
|
||||||
|
isReading: null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created: function () {
|
created: function () {
|
||||||
|
@ -206,6 +207,9 @@ export default {
|
||||||
store.dispatch('user/setToken', this.$router.currentRoute.query.TokenKey)
|
store.dispatch('user/setToken', this.$router.currentRoute.query.TokenKey)
|
||||||
changeURLStatic('TokenKey', '')
|
changeURLStatic('TokenKey', '')
|
||||||
}
|
}
|
||||||
|
if (this.$router.currentRoute.query.isReading) {
|
||||||
|
this.isReading = this.$router.currentRoute.query.isReading
|
||||||
|
}
|
||||||
this.studyId = this.$router.currentRoute.query.studyId
|
this.studyId = this.$router.currentRoute.query.studyId
|
||||||
this.isFromCRCUpload = !!this.$router.currentRoute.query.isFromCRCUpload
|
this.isFromCRCUpload = !!this.$router.currentRoute.query.isFromCRCUpload
|
||||||
if (this.type === 'Series') {
|
if (this.type === 'Series') {
|
||||||
|
@ -244,7 +248,8 @@ export default {
|
||||||
this.seriesCount = data.Result.SeriesCount
|
this.seriesCount = data.Result.SeriesCount
|
||||||
this.description = data.Result.Description
|
this.description = data.Result.Description
|
||||||
}
|
}
|
||||||
const url = `/series/list/${this.studyId}`
|
let isReading = !!this.isReading ? `?IsReading=true` : ''
|
||||||
|
const url = `/series/list/${this.studyId}${isReading}`
|
||||||
this.getSeriesList(url)
|
this.getSeriesList(url)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -149,7 +149,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane v-if="!visitTaskId" :label="$t('trials:dicom-show:relatedVisit')" name="relation-study"
|
<el-tab-pane v-show="!visitTaskId" :label="$t('trials:dicom-show:relatedVisit')" name="relation-study"
|
||||||
class="pane-relation-wrapper">
|
class="pane-relation-wrapper">
|
||||||
<div class="viewerSidethumbinner">
|
<div class="viewerSidethumbinner">
|
||||||
<el-collapse v-model="relationActiveName" @change="handelRelationActiveChange">
|
<el-collapse v-model="relationActiveName" @change="handelRelationActiveChange">
|
||||||
|
@ -171,66 +171,69 @@
|
||||||
<div v-show="study.Description" class="text-desc" style="background-color: #1f1f1f;">
|
<div v-show="study.Description" class="text-desc" style="background-color: #1f1f1f;">
|
||||||
{{ study.Description }}
|
{{ study.Description }}
|
||||||
</div>
|
</div>
|
||||||
<div v-if="study.seriesList" class="viewerSidethumbs ps" style="position: relative;">
|
<div class="viewerSidethumbs ps" style="position: relative;">
|
||||||
<div class="viewerSidethumbinner">
|
<div class="viewerSidethumbinner">
|
||||||
<div v-for="(seriesItem, index) in study.seriesList" :key="index"
|
<div v-for="(seriesItem, index) in study.seriesList" :key="seriesItem.seriesId">
|
||||||
class="viewernavigatorwrapper" style="position: relative;border:1px solid #434343;"
|
<div class="viewernavigatorwrapper" style="position: relative;border:1px solid #434343;"
|
||||||
series-type="relation"
|
series-type="relation"
|
||||||
@click="showRelationSeriesImage($event, seriesItem, studyIndex, index)">
|
@click="showRelationSeriesImage($event, seriesItem, studyIndex, index)">
|
||||||
|
<img class="image-preview" :src="seriesItem.previewImageUrl" crossorigin="anonymous"
|
||||||
|
alt="" style="width: 85px;height:85px;" fit="fill">
|
||||||
|
|
||||||
|
<div class="viewernavitextwrapper">
|
||||||
|
<div style="padding: 1px 5px 1px 1px;display: flex;justify-content: space-between;">
|
||||||
|
<div v-if="seriesItem.keySeries" style="color:red">
|
||||||
|
Key Images
|
||||||
|
</div>
|
||||||
|
<div v-else>#{{ seriesItem.seriesNumber }}</div>
|
||||||
|
<div v-if="seriesItem.isExistMutiFrames && seriesItem.instanceCount > 1">
|
||||||
|
<el-popover placement="right-start" trigger="click"
|
||||||
|
popper-class="instance_frame_wrapper">
|
||||||
|
<div class="frame_list">
|
||||||
|
<div v-for="(instance, idx) in seriesItem.instanceInfoList" :key="instance.Id"
|
||||||
|
class="frame_content"
|
||||||
|
:style="{ 'margin-bottom': idx < seriesItem.instanceInfoList.length - 1 ? '5px' : '0px' }"
|
||||||
|
@click="showMultiFrames(studyIndex, seriesItem, index, instance)">
|
||||||
|
<div>
|
||||||
|
<div>{{ instance.InstanceNumber }}</div>
|
||||||
|
<div>{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame`
|
||||||
|
}}</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<i slot="reference" class="el-icon-connection"
|
||||||
|
style="font-size: 15px;cursor: pointer;" />
|
||||||
|
</el-popover>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div v-show="seriesItem.instanceCount" style="padding: 1px;">
|
||||||
|
{{ seriesItem.modality }}: {{ seriesItem.instanceCount }} image
|
||||||
|
</div>
|
||||||
|
<div v-show="seriesItem.sliceThickness" style="padding: 1px;">
|
||||||
|
T: {{ seriesItem.sliceThickness }}
|
||||||
|
</div>
|
||||||
|
<el-tooltip v-show="seriesItem.description" class="item" effect="dark"
|
||||||
|
:content="seriesItem.description" placement="bottom">
|
||||||
|
<div v-show="seriesItem.description"
|
||||||
|
style="width: 120px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;padding: 1x;">
|
||||||
|
{{ seriesItem.description }}
|
||||||
|
</div>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<!-- <el-image
|
<!-- <el-image
|
||||||
class="image-preview"
|
class="image-preview"
|
||||||
style="height:72px;width:72px;"
|
style="height:72px;width:72px;"
|
||||||
:src="seriesItem.previewImageUrl"
|
:src="seriesItem.previewImageUrl"
|
||||||
fit="fill"
|
fit="fill"
|
||||||
/> -->
|
/> -->
|
||||||
<img class="image-preview" :src="seriesItem.previewImageUrl" crossorigin="anonymous" alt=""
|
<div
|
||||||
style="width: 85px;height:85px;" fit="fill">
|
v-if="seriesItem.prefetchInstanceCount > 0 && seriesItem.prefetchInstanceCount < seriesItem.instanceCount * 100">
|
||||||
|
<el-progress
|
||||||
<div class="viewernavitextwrapper">
|
:percentage="parseInt((seriesItem.prefetchInstanceCount / seriesItem.instanceCount).toFixed(2))" />
|
||||||
<div style="padding: 1px 5px 1px 1px;display: flex;justify-content: space-between;">
|
|
||||||
<div v-if="seriesItem.keySeries" style="color:red">
|
|
||||||
Key Images
|
|
||||||
</div>
|
|
||||||
<div v-else>#{{ seriesItem.seriesNumber }}</div>
|
|
||||||
<div v-if="seriesItem.isExistMutiFrames && seriesItem.instanceCount > 1">
|
|
||||||
<el-popover placement="right-start" trigger="click"
|
|
||||||
popper-class="instance_frame_wrapper">
|
|
||||||
<div class="frame_list">
|
|
||||||
<div v-for="(instance, idx) in seriesItem.instanceInfoList" :key="instance.Id"
|
|
||||||
class="frame_content"
|
|
||||||
:style="{ 'margin-bottom': idx < seriesItem.instanceInfoList.length - 1 ? '5px' : '0px' }"
|
|
||||||
@click="showMultiFrames(studyIndex, seriesItem, index, instance)">
|
|
||||||
<div>
|
|
||||||
<div>{{ instance.InstanceNumber }}</div>
|
|
||||||
<div>{{ `${instance.NumberOfFrames > 0 ? instance.NumberOfFrames : 1} frame`
|
|
||||||
}}</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<i slot="reference" class="el-icon-connection"
|
|
||||||
style="font-size: 15px;cursor: pointer;" />
|
|
||||||
</el-popover>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div v-show="seriesItem.instanceCount" style="padding: 1px;">
|
|
||||||
{{ seriesItem.modality }}: {{ seriesItem.instanceCount }} image
|
|
||||||
</div>
|
|
||||||
<div v-show="seriesItem.sliceThickness" style="padding: 1px;">
|
|
||||||
T: {{ seriesItem.sliceThickness }}
|
|
||||||
</div>
|
|
||||||
<el-tooltip v-show="seriesItem.description" class="item" effect="dark"
|
|
||||||
:content="seriesItem.description" placement="bottom">
|
|
||||||
<div v-show="seriesItem.description"
|
|
||||||
style="width: 120px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;padding: 1x;">
|
|
||||||
{{ seriesItem.description }}
|
|
||||||
</div>
|
|
||||||
</el-tooltip>
|
|
||||||
</div>
|
</div>
|
||||||
<!-- <div style="position: absolute;bottom: -10px;left: 0;width: 100%;">
|
|
||||||
<el-progress v-if="seriesItem.prefetchInstanceCount>0 && seriesItem.prefetchInstanceCount<seriesItem.instanceCount" :percentage="Number(seriesItem.prefetchInstanceCount/seriesItem.instanceCount)*100" />
|
|
||||||
</div> -->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -303,7 +306,8 @@ export default {
|
||||||
currentLoadIns: [],
|
currentLoadIns: [],
|
||||||
isFromCRCUpload: false,
|
isFromCRCUpload: false,
|
||||||
visitTaskId: null,
|
visitTaskId: null,
|
||||||
page: ''
|
page: '',
|
||||||
|
activeSeriesId: null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
@ -435,6 +439,8 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
showSeriesImage(e, studyIndex, seriesIndex, series) {
|
showSeriesImage(e, studyIndex, seriesIndex, series) {
|
||||||
|
this.activeSeriesId = series.seriesId
|
||||||
|
workSpeedclose(true)
|
||||||
const element = e.currentTarget
|
const element = e.currentTarget
|
||||||
const elements = document.querySelectorAll('[series-type]')
|
const elements = document.querySelectorAll('[series-type]')
|
||||||
Array.from(elements).forEach((e) => {
|
Array.from(elements).forEach((e) => {
|
||||||
|
@ -725,9 +731,15 @@ export default {
|
||||||
item.InstanceInfoList.forEach(i => {
|
item.InstanceInfoList.forEach(i => {
|
||||||
if (i.NumberOfFrames && i.NumberOfFrames > 1) {
|
if (i.NumberOfFrames && i.NumberOfFrames > 1) {
|
||||||
for (let j = 0; j < i.NumberOfFrames; j++) {
|
for (let j = 0; j < i.NumberOfFrames; j++) {
|
||||||
|
if (!i.ImageId) {
|
||||||
|
i.ImageId = `wadouri:${localStorage.getItem('location') !== 'USA' ? scope.OSSclientConfig.basePath : scope.OSSclientConfig.basePath}${i.Path}?frame=${j}&instanceId=${i.Id}&idx=${index}|${seriesIndex}&isRelation=1`
|
||||||
|
}
|
||||||
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? scope.OSSclientConfig.basePath : scope.OSSclientConfig.basePath}${i.Path}?frame=${j}&instanceId=${i.Id}&idx=${index}|${seriesIndex}&isRelation=1`)
|
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? scope.OSSclientConfig.basePath : scope.OSSclientConfig.basePath}${i.Path}?frame=${j}&instanceId=${i.Id}&idx=${index}|${seriesIndex}&isRelation=1`)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (!i.ImageId) {
|
||||||
|
i.ImageId = `wadouri:${localStorage.getItem('location') !== 'USA' ? scope.OSSclientConfig.basePath : scope.OSSclientConfig.basePath}${i.Path}?instanceId=${i.Id}&idx=${index}|${seriesIndex}&isRelation=1`
|
||||||
|
}
|
||||||
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? scope.OSSclientConfig.basePath : scope.OSSclientConfig.basePath}${i.Path}?instanceId=${i.Id}&idx=${index}|${seriesIndex}&isRelation=1`)
|
imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? scope.OSSclientConfig.basePath : scope.OSSclientConfig.basePath}${i.Path}?instanceId=${i.Id}&idx=${index}|${seriesIndex}&isRelation=1`)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -751,9 +763,12 @@ export default {
|
||||||
isShowPopper: false
|
isShowPopper: false
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
scope.relationStudyList[index].seriesCount = seriesList.length
|
// scope.relationStudyList[index].seriesCount = seriesList.length
|
||||||
scope.relationStudyList[index].seriesList = seriesList
|
// scope.relationStudyList[index].seriesList = seriesList
|
||||||
scope.relationStudyList[index].showSeries = true
|
// scope.relationStudyList[index].showSeries = true
|
||||||
|
scope.$set(scope.relationStudyList[index], 'seriesCount', seriesList.length)
|
||||||
|
scope.$set(scope.relationStudyList[index], 'seriesList', seriesList)
|
||||||
|
scope.$set(scope.relationStudyList[index], 'showSeries', true)
|
||||||
scope.$forceUpdate()
|
scope.$forceUpdate()
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -762,6 +777,8 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
showRelationSeriesImage(e, series, studyIndex, index) {
|
showRelationSeriesImage(e, series, studyIndex, index) {
|
||||||
|
this.activeSeriesId = series.seriesId
|
||||||
|
workSpeedclose(true)
|
||||||
this.currentRelationIndex = index
|
this.currentRelationIndex = index
|
||||||
const element = e.currentTarget
|
const element = e.currentTarget
|
||||||
const elements = document.querySelectorAll('[series-type]')
|
const elements = document.querySelectorAll('[series-type]')
|
||||||
|
@ -840,8 +857,11 @@ export default {
|
||||||
}
|
}
|
||||||
const studyIndex = params.idx.split('|')[0]
|
const studyIndex = params.idx.split('|')[0]
|
||||||
const seriesIndex = params.idx.split('|')[1]
|
const seriesIndex = params.idx.split('|')[1]
|
||||||
var series = !params.isRelation ? this.studyList[studyIndex].SeriesList[seriesIndex] : null
|
var series = !params.isRelation ? this.studyList[studyIndex].SeriesList[seriesIndex] : this.relationStudyList[studyIndex].seriesList[seriesIndex]
|
||||||
if (!series) return
|
if (!series) return
|
||||||
|
if (!this.activeSeriesId) {
|
||||||
|
this.activeSeriesId = series.seriesId
|
||||||
|
}
|
||||||
var prefetchInstanceCount = series.prefetchInstanceCount
|
var prefetchInstanceCount = series.prefetchInstanceCount
|
||||||
var instanceCount = series.instanceCount
|
var instanceCount = series.instanceCount
|
||||||
if (series.imageloadedArr.indexOf(imageId) < 0) {
|
if (series.imageloadedArr.indexOf(imageId) < 0) {
|
||||||
|
@ -863,8 +883,8 @@ export default {
|
||||||
series.imageloadedArr.push(imageId)
|
series.imageloadedArr.push(imageId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let file = this.studyList[studyIndex].SeriesList[seriesIndex].instanceInfoList.find(item => item.ImageId === imageId)
|
let file = series.instanceInfoList.find(item => item.ImageId === imageId)
|
||||||
if (file) {
|
if (file && this.activeSeriesId === series.seriesId) {
|
||||||
getNetWorkSpeed()
|
getNetWorkSpeed()
|
||||||
setNetWorkSpeedSize(percentComplete, file.FileSize, imageId)
|
setNetWorkSpeedSize(percentComplete, file.FileSize, imageId)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,139 +1,68 @@
|
||||||
<template>
|
<template>
|
||||||
<el-form
|
<el-form ref="questionForm" v-loading="loading" :model="form" label-width="120px" size="small" :rules="rules">
|
||||||
ref="questionForm"
|
|
||||||
v-loading="loading"
|
|
||||||
:model="form"
|
|
||||||
label-width="120px"
|
|
||||||
size="small"
|
|
||||||
:rules="rules"
|
|
||||||
>
|
|
||||||
<div class="base-dialog-body">
|
<div class="base-dialog-body">
|
||||||
<!-- 审核问题 -->
|
<!-- 审核问题 -->
|
||||||
<el-form-item
|
<el-form-item :label="$t('trials:qcCfg:table:questionName')" prop="QuestionName">
|
||||||
:label="$t('trials:qcCfg:table:questionName')"
|
<el-input v-model="form.QuestionName" :disabled="data.IsQuestionQCAuditPassed" />
|
||||||
prop="QuestionName"
|
|
||||||
>
|
|
||||||
<el-input
|
|
||||||
v-model="form.QuestionName"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item-->
|
<!-- <el-form-item-->
|
||||||
<!-- :label="$t('common:title:languageType')"-->
|
<!-- :label="$t('common:title:languageType')"-->
|
||||||
<!-- prop="LanguageType"-->
|
<!-- prop="LanguageType"-->
|
||||||
<!-- >-->
|
<!-- >-->
|
||||||
<!-- <el-select-->
|
<!-- <el-select-->
|
||||||
<!-- v-model="form.LanguageType"-->
|
<!-- v-model="form.LanguageType"-->
|
||||||
<!-- >-->
|
<!-- >-->
|
||||||
<!-- <el-option-->
|
<!-- <el-option-->
|
||||||
<!-- v-for="item of $d.LanguageType"-->
|
<!-- v-for="item of $d.LanguageType"-->
|
||||||
<!-- :key="item.value"-->
|
<!-- :key="item.value"-->
|
||||||
<!-- :value="item.value"-->
|
<!-- :value="item.value"-->
|
||||||
<!-- :label="item.label"-->
|
<!-- :label="item.label"-->
|
||||||
<!-- />-->
|
<!-- />-->
|
||||||
<!-- </el-select>-->
|
<!-- </el-select>-->
|
||||||
<!-- </el-form-item>-->
|
<!-- </el-form-item>-->
|
||||||
<!-- 类型 -->
|
<!-- 类型 -->
|
||||||
<el-form-item
|
<el-form-item :label="$t('trials:qcCfg:table:type')">
|
||||||
:label="$t('trials:qcCfg:table:type')"
|
<el-select v-model="form.Type" @change="((val) => { typeChange(val, form) })"
|
||||||
>
|
:disabled="data.IsQuestionQCAuditPassed">
|
||||||
<el-select
|
<el-option v-for="item of $d.QcType" :key="item.value" :value="item.value" :label="item.label" />
|
||||||
v-model="form.Type"
|
|
||||||
@change="((val)=>{typeChange(val, form)})"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item of $d.QcType"
|
|
||||||
:key="item.value"
|
|
||||||
:value="item.value"
|
|
||||||
:label="item.label"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 选项 -->
|
<!-- 选项 -->
|
||||||
<el-form-item
|
<el-form-item v-if="form.Type === 'select' || form.Type === 'radio'" :label="$t('trials:qcCfg:table:typeValue')"
|
||||||
v-if="form.Type === 'select' || form.Type === 'radio'"
|
prop="TypeValue">
|
||||||
:label="$t('trials:qcCfg:table:typeValue')"
|
<el-input v-model="form.TypeValue" :placeholder="$t('trials:qcCfg:message:typeValue')" type="textarea"
|
||||||
prop="TypeValue"
|
:autosize="{ minRows: 2, maxRows: 4 }" :disabled="data.IsQuestionQCAuditPassed" />
|
||||||
>
|
|
||||||
<el-input
|
|
||||||
v-model="form.TypeValue"
|
|
||||||
:placeholder="$t('trials:qcCfg:message:typeValue')"
|
|
||||||
type="textarea"
|
|
||||||
:autosize="{ minRows: 2, maxRows: 4}"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 父问题 -->
|
<!-- 父问题 -->
|
||||||
<el-form-item
|
<el-form-item :label="$t('trials:qcCfg:table:parentQs')">
|
||||||
:label="$t('trials:qcCfg:table:parentQs')"
|
<el-select v-model="form.ParentId" clearable @change="((val) => { parentQuestionChange(val, form) })"
|
||||||
>
|
:disabled="data.IsQuestionQCAuditPassed">
|
||||||
<el-select
|
<el-option v-for="item of parentOptions" :key="item.Id" :label="item.QuestionName" :value="item.Id" />
|
||||||
v-model="form.ParentId"
|
|
||||||
clearable
|
|
||||||
@change="((val)=>{parentQuestionChange(val, form)})"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item of parentOptions"
|
|
||||||
:key="item.Id"
|
|
||||||
:label="item.QuestionName"
|
|
||||||
:value="item.Id"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 父问题触发值 -->
|
<!-- 父问题触发值 -->
|
||||||
<el-form-item
|
<el-form-item v-if="form.ParentId" :label="$t('trials:qcCfg:table:parentTriggerValue')" prop="ParentTriggerValue">
|
||||||
v-if="form.ParentId"
|
<el-select v-model="form.ParentTriggerValue" :disabled="data.IsQuestionQCAuditPassed">
|
||||||
:label="$t('trials:qcCfg:table:parentTriggerValue')"
|
<el-option v-for="item of parentTriggerValOptions" :key="item" :label="item" :value="item" />
|
||||||
prop="ParentTriggerValue"
|
|
||||||
>
|
|
||||||
<el-select
|
|
||||||
v-model="form.ParentTriggerValue"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item of parentTriggerValOptions"
|
|
||||||
:key="item"
|
|
||||||
:label="item"
|
|
||||||
:value="item"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 序号 -->
|
<!-- 序号 -->
|
||||||
<el-form-item
|
<el-form-item :label="$t('trials:qcCfg:table:order')" prop="ShowOrder">
|
||||||
:label="$t('trials:qcCfg:table:order')"
|
<el-input-number v-model="form.ShowOrder" controls-position="right" :min="0"
|
||||||
prop="ShowOrder"
|
:disabled="data.IsQuestionQCAuditPassed" />
|
||||||
>
|
|
||||||
<el-input-number
|
|
||||||
v-model="form.ShowOrder"
|
|
||||||
controls-position="right"
|
|
||||||
:min="0"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 是否必填 -->
|
<!-- 是否必填 -->
|
||||||
<el-form-item
|
<el-form-item :label="$t('trials:qcCfg:table:isRequired')">
|
||||||
:label="$t('trials:qcCfg:table:isRequired')"
|
<el-radio-group v-model="form.IsRequired">
|
||||||
>
|
<el-radio v-for="item of $d.YesOrNo" :key="`IsRequired${item.value}`" :label="item.value">
|
||||||
<el-radio-group
|
|
||||||
v-model="form.IsRequired"
|
|
||||||
>
|
|
||||||
<el-radio
|
|
||||||
v-for="item of $d.YesOrNo"
|
|
||||||
:key="`IsRequired${item.value}`"
|
|
||||||
:label="item.value"
|
|
||||||
>
|
|
||||||
{{ item.label }}
|
{{ item.label }}
|
||||||
</el-radio>
|
</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 启用状态 -->
|
<!-- 启用状态 -->
|
||||||
<el-form-item
|
<el-form-item :label="$t('trials:qcCfg:table:isEnable')">
|
||||||
:label="$t('trials:qcCfg:table:isEnable')"
|
<el-radio-group v-model="form.IsEnable">
|
||||||
>
|
<el-radio v-for="item of $d.YesOrNo" :key="item.value" :label="item.value">
|
||||||
<el-radio-group
|
|
||||||
v-model="form.IsEnable"
|
|
||||||
>
|
|
||||||
<el-radio
|
|
||||||
v-for="item of $d.YesOrNo"
|
|
||||||
:key="item.value"
|
|
||||||
:label="item.value"
|
|
||||||
>
|
|
||||||
{{ item.label }}
|
{{ item.label }}
|
||||||
</el-radio>
|
</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
|
@ -143,19 +72,11 @@
|
||||||
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
|
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
|
||||||
<el-form-item style="text-align:right;">
|
<el-form-item style="text-align:right;">
|
||||||
<!-- 取消 -->
|
<!-- 取消 -->
|
||||||
<el-button
|
<el-button size="small" type="primary" @click="handleClose">
|
||||||
size="small"
|
|
||||||
type="primary"
|
|
||||||
@click="handleClose"
|
|
||||||
>
|
|
||||||
{{ $t('common:button:cancel') }}
|
{{ $t('common:button:cancel') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- Save -->
|
<!-- Save -->
|
||||||
<el-button
|
<el-button size="small" type="primary" @click="handleSave">
|
||||||
size="small"
|
|
||||||
type="primary"
|
|
||||||
@click="handleSave"
|
|
||||||
>
|
|
||||||
{{ $t('common:button:save') }}
|
{{ $t('common:button:save') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -202,7 +123,7 @@ export default {
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
QuestionName: [{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' },
|
QuestionName: [{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' },
|
||||||
{ max: 300, message: `${this.$t('common:ruleMessage:maxLength')} 300` }],
|
{ max: 300, message: `${this.$t('common:ruleMessage:maxLength')} 300` }],
|
||||||
TypeValue: [
|
TypeValue: [
|
||||||
{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' },
|
{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' },
|
||||||
{ validator: validateTypeVal, trigger: 'blur' },
|
{ validator: validateTypeVal, trigger: 'blur' },
|
||||||
|
@ -308,6 +229,4 @@ export default {
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss"></style>
|
||||||
|
|
||||||
</style>
|
|
||||||
|
|
|
@ -135,8 +135,7 @@
|
||||||
:label="$t('common:action:action')" min-width="150">
|
:label="$t('common:action:action')" min-width="150">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button v-hasPermi="['trials:trials-panel:setting:qc-question:edit']" circle
|
<el-button v-hasPermi="['trials:trials-panel:setting:qc-question:edit']" circle
|
||||||
:title="$t('common:button:edit')" icon="el-icon-edit-outline" @click="handleEdit(scope.row)"
|
:title="$t('common:button:edit')" icon="el-icon-edit-outline" @click="handleEdit(scope.row)" />
|
||||||
:disabled="scope.row.IsQuestionQCAuditPassed" />
|
|
||||||
<el-button v-hasPermi="['trials:trials-panel:setting:qc-question:delete']" circle
|
<el-button v-hasPermi="['trials:trials-panel:setting:qc-question:delete']" circle
|
||||||
:title="$t('common:button:delete')" icon="el-icon-delete" @click="handleDelete(scope.row)"
|
:title="$t('common:button:delete')" icon="el-icon-delete" @click="handleDelete(scope.row)"
|
||||||
:disabled="scope.row.IsQuestionQCAuditPassed" />
|
:disabled="scope.row.IsQuestionQCAuditPassed" />
|
||||||
|
|
|
@ -1042,10 +1042,10 @@ export default {
|
||||||
this.isAudit = true
|
this.isAudit = true
|
||||||
this.currentQCType = this.qType
|
this.currentQCType = this.qType
|
||||||
} else {
|
} else {
|
||||||
this.currentQCType = this.data.AuditState < 6 ? 1 : 2
|
this.currentQCType = this.data.QCProcessEnum === 2 && this.data.PreliminaryAuditUserId ? 2 : 1
|
||||||
|
|
||||||
}
|
}
|
||||||
window.addEventListener('message', this.receiveMsg)
|
window.addEventListener('message', this.receiveMsg)
|
||||||
console.log(this.SecondReviewState, 'SecondReviewState')
|
|
||||||
this.trialId = this.$route.query.trialId
|
this.trialId = this.$route.query.trialId
|
||||||
this.getQCInfo()
|
this.getQCInfo()
|
||||||
this.getDicData()
|
this.getDicData()
|
||||||
|
@ -2133,7 +2133,7 @@ export default {
|
||||||
var token = getToken()
|
var token = getToken()
|
||||||
const routeData = this.$router.resolve({
|
const routeData = this.$router.resolve({
|
||||||
path: `/showvisitdicoms?trialId=${this.data.TrialId}&visitInfo=${this.data.VisitName
|
path: `/showvisitdicoms?trialId=${this.data.TrialId}&visitInfo=${this.data.VisitName
|
||||||
}(${this.data.VisitNum})&subjectVisitId=${this.data.Id}&showDelete=${this.isAudit ? 0 : 1
|
}(${this.data.VisitNum})&subjectVisitId=${this.data.Id}&showDelete=${this.isAudit || this.SecondReviewState > 0 ? 0 : 1
|
||||||
}&TokenKey=${token}`,
|
}&TokenKey=${token}`,
|
||||||
})
|
})
|
||||||
this.open = window.open(routeData.href, '_blank')
|
this.open = window.open(routeData.href, '_blank')
|
||||||
|
@ -2199,7 +2199,7 @@ export default {
|
||||||
path: `/showNoneDicoms?trialId=${trialId}&subjectVisitId=${this.data.Id}&TokenKey=${token}&isReading=1`,
|
path: `/showNoneDicoms?trialId=${trialId}&subjectVisitId=${this.data.Id}&TokenKey=${token}&isReading=1`,
|
||||||
})
|
})
|
||||||
: this.$router.resolve({
|
: this.$router.resolve({
|
||||||
path: `/showNoneDicoms?trialId=${trialId}&subjectVisitId=${this.data.Id}&TokenKey=${token}&isQcCheck=1`,
|
path: `/showNoneDicoms?trialId=${trialId}&subjectVisitId=${this.data.Id}&TokenKey=${token}&isQcCheck=${this.SecondReviewState > 0 ? 0 : 1}`,
|
||||||
})
|
})
|
||||||
this.open = window.open(routeData.href, '_blank')
|
this.open = window.open(routeData.href, '_blank')
|
||||||
},
|
},
|
||||||
|
@ -2211,7 +2211,7 @@ export default {
|
||||||
let trialId = this.$route.query.trialId
|
let trialId = this.$route.query.trialId
|
||||||
var token = getToken()
|
var token = getToken()
|
||||||
const routeData = this.$router.resolve({
|
const routeData = this.$router.resolve({
|
||||||
path: `/showNoneDicoms?trialId=${trialId}&subjectVisitId=${this.data.Id}&studyId=${row.Id}&TokenKey=${token}&isQcCheck=1`,
|
path: `/showNoneDicoms?trialId=${trialId}&subjectVisitId=${this.data.Id}&studyId=${row.Id}&TokenKey=${token}&isQcCheck=${this.SecondReviewState > 0 ? 0 : 1}`,
|
||||||
})
|
})
|
||||||
this.open = window.open(routeData.href, '_blank')
|
this.open = window.open(routeData.href, '_blank')
|
||||||
},
|
},
|
||||||
|
|
|
@ -50,9 +50,10 @@ module.exports = defineConfig({
|
||||||
pathRewrite: {
|
pathRewrite: {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// uat http://101.132.253.119:7010
|
|
||||||
'/api': {
|
'/api': {
|
||||||
target: 'http://106.14.89.110:30000',
|
target: 'http://106.14.89.110:30000',
|
||||||
|
// target: 'http://101.132.253.119:7010', // uat
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
secure: false,
|
secure: false,
|
||||||
pathRewrite: {
|
pathRewrite: {
|
||||||
|
|
Loading…
Reference in New Issue