Compare commits
3 Commits
553014be79
...
38eef44d79
| Author | SHA1 | Date |
|---|---|---|
|
|
38eef44d79 | |
|
|
ff1b4f6f21 | |
|
|
ef336eafe6 |
|
|
@ -94,6 +94,10 @@
|
||||||
{{ $t('login:button:forgetPassword') }}
|
{{ $t('login:button:forgetPassword') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="PrivacyPolicy">
|
||||||
|
<span>{{ $t('login:message:PrivacyPolicy') }}</span>
|
||||||
|
<span style="cursor: pointer;color:#428bca">《{{ $t('login:message:PrivacyPolicyName') }}》</span>
|
||||||
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -265,7 +265,7 @@ export default {
|
||||||
...mapGetters(['language']),
|
...mapGetters(['language']),
|
||||||
isBaseline() {
|
isBaseline() {
|
||||||
var i = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
|
var i = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
|
||||||
return this.visitTaskList[i].IsBaseLine
|
return this.visitTaskList[i] ? this.visitTaskList[i].IsBaseLine : false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
|
|
|
||||||
|
|
@ -260,9 +260,9 @@ export default {
|
||||||
this.defaultWindowLevel.windowCenter = windowCenter
|
this.defaultWindowLevel.windowCenter = windowCenter
|
||||||
this.imageInfo.wwwc = `${Math.round(windowWidth)}/${Math.round(windowCenter)}`
|
this.imageInfo.wwwc = `${Math.round(windowWidth)}/${Math.round(windowCenter)}`
|
||||||
}
|
}
|
||||||
// const toolGroupId = `viewport-${this.viewportIndex}`
|
const toolGroupId = this.viewportId
|
||||||
// const toolGroup = ToolGroupManager.getToolGroup(toolGroupId)
|
const toolGroup = cornerstoneTools.ToolGroupManager.getToolGroup(toolGroupId)
|
||||||
// toolGroup.setToolEnabled('ScaleOverlay')
|
toolGroup.setToolEnabled('ScaleOverlay')
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -255,7 +255,7 @@ export default {
|
||||||
...mapGetters(['language']),
|
...mapGetters(['language']),
|
||||||
isBaseline() {
|
isBaseline() {
|
||||||
var i = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
|
var i = this.visitTaskList.findIndex(i => i.VisitTaskId === this.visitTaskId)
|
||||||
return this.visitTaskList[i].IsBaseLine
|
return this.visitTaskList[i] ? this.visitTaskList[i].IsBaseLine : false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
|
|
|
||||||
|
|
@ -1,59 +1,34 @@
|
||||||
<template>
|
<template>
|
||||||
<div
|
<div ref="viewport" class="viewport-wrapper" v-loading="loading" :element-loading-text="NSTip"
|
||||||
ref="viewport"
|
element-loading-background="rgba(0, 0, 0, 0.8)" @mouseup="sliderMouseup" @mousemove="sliderMousemove"
|
||||||
class="viewport-wrapper"
|
@mouseleave="sliderMouseleave">
|
||||||
v-loading="loading"
|
|
||||||
:element-loading-text="NSTip"
|
|
||||||
element-loading-background="rgba(0, 0, 0, 0.8)"
|
|
||||||
@mouseup="sliderMouseup"
|
|
||||||
@mousemove="sliderMousemove"
|
|
||||||
@mouseleave="sliderMouseleave"
|
|
||||||
>
|
|
||||||
<div v-if="series && taskInfo" class="left-top-text">
|
<div v-if="series && taskInfo" class="left-top-text">
|
||||||
<div
|
<div v-if="taskInfo.IsExistsClinicalData" class="cd-info" :title="$t('trials:reading:button:clinicalData')">
|
||||||
v-if="taskInfo.IsExistsClinicalData"
|
<svg-icon style="cursor: pointer;" icon-class="documentation" class="svg-icon"
|
||||||
class="cd-info"
|
@click.stop="viewCD(series.TaskInfo.VisitTaskId)" />
|
||||||
:title="$t('trials:reading:button:clinicalData')"
|
|
||||||
>
|
|
||||||
<svg-icon
|
|
||||||
style="cursor: pointer;"
|
|
||||||
icon-class="documentation"
|
|
||||||
class="svg-icon"
|
|
||||||
@click.stop="viewCD(series.TaskInfo.VisitTaskId)"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
<h2
|
<h2 v-if="taskInfo.IsReadingShowSubjectInfo" class="subject-info">
|
||||||
v-if="taskInfo.IsReadingShowSubjectInfo"
|
|
||||||
class="subject-info"
|
|
||||||
>
|
|
||||||
{{ `${series.TaskInfo.SubjectCode} ${series.TaskInfo.TaskBlindName} ` }}
|
{{ `${series.TaskInfo.SubjectCode} ${series.TaskInfo.TaskBlindName} ` }}
|
||||||
</h2>
|
</h2>
|
||||||
<div>Series: #{{ series.SeriesNumber }}</div>
|
<div>Series: #{{ series.SeriesNumber }}</div>
|
||||||
<div v-if="series.Stack">Image: #{{ `${series.SliceIndex + 1}/${series.Stack.length}` }}</div>
|
<div v-if="series.Stack">Image: #{{ `${series.SliceIndex + 1}/${series.Stack.length}` }}</div>
|
||||||
<div>{{ series.Modality }}</div>
|
<div>{{ series.Modality }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div v-if="series && taskInfo && taskInfo.IsReadingTaskViewInOrder === 1" class="top-center-tool">
|
||||||
v-if="series && taskInfo && taskInfo.IsReadingTaskViewInOrder === 1"
|
|
||||||
class="top-center-tool"
|
|
||||||
>
|
|
||||||
<div class="toggle-visit-container">
|
<div class="toggle-visit-container">
|
||||||
<div
|
<div class="arrw_icon"
|
||||||
class="arrw_icon"
|
:style="{ cursor: series.TaskInfo.VisitTaskNum !== 0 ? 'pointer' : 'not-allowed', color: series.TaskInfo.VisitTaskNum !== 0 ? '#fff' : '#6b6b6b' }"
|
||||||
:style="{ cursor: series.TaskInfo.VisitTaskNum !== 0 ? 'pointer' : 'not-allowed', color: series.TaskInfo.VisitTaskNum !== 0 ? '#fff': '#6b6b6b' }"
|
|
||||||
@click.stop.prevent="toggleTask($event, series.TaskInfo.VisitTaskNum, -1)"
|
@click.stop.prevent="toggleTask($event, series.TaskInfo.VisitTaskNum, -1)"
|
||||||
@dblclick.stop="preventDefault($event)"
|
@dblclick.stop="preventDefault($event)">
|
||||||
>
|
|
||||||
<i class="el-icon-caret-left" />
|
<i class="el-icon-caret-left" />
|
||||||
</div>
|
</div>
|
||||||
<div class="arrow_text">
|
<div class="arrow_text">
|
||||||
{{ series.TaskInfo.TaskBlindName }}
|
{{ series.TaskInfo.TaskBlindName }}
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div class="arrw_icon"
|
||||||
class="arrw_icon"
|
:style="{ cursor: series.TaskInfo.VisitTaskNum < taskInfo.VisitNum ? 'pointer' : 'not-allowed', color: series.TaskInfo.VisitTaskNum < taskInfo.VisitNum ? '#fff' : '#6b6b6b' }"
|
||||||
:style="{ cursor: series.TaskInfo.VisitTaskNum < taskInfo.VisitNum ? 'pointer' : 'not-allowed', color: series.TaskInfo.VisitTaskNum < taskInfo.VisitNum ? '#fff': '#6b6b6b' }"
|
|
||||||
@click.stop.prevent="toggleTask($event, series.TaskInfo.VisitTaskNum, 1)"
|
@click.stop.prevent="toggleTask($event, series.TaskInfo.VisitTaskNum, 1)"
|
||||||
@dblclick.stop="preventDefault($event)"
|
@dblclick.stop="preventDefault($event)">
|
||||||
>
|
|
||||||
<i class="el-icon-caret-right" />
|
<i class="el-icon-caret-right" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -65,11 +40,13 @@
|
||||||
<div v-show="mousePosition.index.length > 0">
|
<div v-show="mousePosition.index.length > 0">
|
||||||
Pos: {{ mousePosition.index[0] }}, {{ mousePosition.index[1] }}
|
Pos: {{ mousePosition.index[0] }}, {{ mousePosition.index[1] }}
|
||||||
</div>
|
</div>
|
||||||
<div v-if="(series.Modality === 'CT' || series.Modality === 'DR' || series.Modality === 'CR') && mousePosition.value">
|
<div
|
||||||
|
v-if="(series.Modality === 'CT' || series.Modality === 'DR' || series.Modality === 'CR') && mousePosition.value">
|
||||||
HU: {{ mousePosition.value }}
|
HU: {{ mousePosition.value }}
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="(series.Modality === 'PT' && mousePosition.value)">
|
<div v-else-if="(series.Modality === 'PT' && mousePosition.value)">
|
||||||
{{mousePosition.modalityUnit}}: {{ digitPlaces === -1 ?mousePosition.value.toFixed(3) :mousePosition.value.toFixed(digitPlaces) }}
|
{{ mousePosition.modalityUnit }}: {{ digitPlaces === -1 ? mousePosition.value.toFixed(3)
|
||||||
|
: mousePosition.value.toFixed(digitPlaces) }}
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="mousePosition.value">
|
<div v-else-if="mousePosition.value">
|
||||||
Density: {{ mousePosition.value }}
|
Density: {{ mousePosition.value }}
|
||||||
|
|
@ -83,8 +60,9 @@
|
||||||
</div>
|
</div>
|
||||||
<div v-if="series" class="right-bottom-text">
|
<div v-if="series" class="right-bottom-text">
|
||||||
<div v-show="imageInfo.location">Location: {{ `${Number(imageInfo.location).toFixed(digitPlaces)} mm` }}</div>
|
<div v-show="imageInfo.location">Location: {{ `${Number(imageInfo.location).toFixed(digitPlaces)} mm` }}</div>
|
||||||
<div v-show="series.SliceThickness">Slice Thickness: {{ `${Number(series.SliceThickness).toFixed(digitPlaces)} mm` }}</div>
|
<div v-show="series.SliceThickness">Slice Thickness: {{ `${Number(series.SliceThickness).toFixed(digitPlaces)} mm`
|
||||||
<div v-show="imageInfo.wwwc ">WW/WL: {{ imageInfo.wwwc }}</div>
|
}}</div>
|
||||||
|
<div v-show="imageInfo.wwwc">WW/WL: {{ imageInfo.wwwc }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="orientation-top">
|
<div class="orientation-top">
|
||||||
{{ markers.top }}
|
{{ markers.top }}
|
||||||
|
|
@ -100,7 +78,8 @@
|
||||||
{{ markers.left }}
|
{{ markers.left }}
|
||||||
</div>
|
</div>
|
||||||
<div ref="sliderBox" class="right-slider-box" @click.stop="clickSlider($event)">
|
<div ref="sliderBox" class="right-slider-box" @click.stop="clickSlider($event)">
|
||||||
<div :style="{top: sliderInfo.height + '%'}" class="slider" @click.stop.prevent="() => {return}" @mousedown.stop="sliderMousedown($event)" />
|
<div :style="{ top: sliderInfo.height + '%' }" class="slider" @click.stop.prevent="() => { return }"
|
||||||
|
@mousedown.stop="sliderMousedown($event)" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -195,7 +174,7 @@ export default {
|
||||||
this.element.addEventListener('CORNERSTONE_STACK_NEW_IMAGE', this.stackNewImage)
|
this.element.addEventListener('CORNERSTONE_STACK_NEW_IMAGE', this.stackNewImage)
|
||||||
// this.element.addEventListener('CORNERSTONE_VOI_MODIFIED', this.voiModified)
|
// this.element.addEventListener('CORNERSTONE_VOI_MODIFIED', this.voiModified)
|
||||||
// this.element.addEventListener('CORNERSTONE_CAMERA_MODIFIED', this.cameraModified)
|
// this.element.addEventListener('CORNERSTONE_CAMERA_MODIFIED', this.cameraModified)
|
||||||
|
|
||||||
this.element.addEventListener('CORNERSTONE_IMAGE_RENDERED', this.imageRendered)
|
this.element.addEventListener('CORNERSTONE_IMAGE_RENDERED', this.imageRendered)
|
||||||
this.element.addEventListener('CORNERSTONE_TOOLS_MOUSE_MOVE', this.cornerstoneToolsMouseMove)
|
this.element.addEventListener('CORNERSTONE_TOOLS_MOUSE_MOVE', this.cornerstoneToolsMouseMove)
|
||||||
this.element.addEventListener('mouseleave', () => {
|
this.element.addEventListener('mouseleave', () => {
|
||||||
|
|
@ -219,9 +198,9 @@ export default {
|
||||||
// this.imageInfo.wwwc = `${Math.round(detail.image.windowWidth)}/${Math.round(detail.image.windowCenter)}`
|
// this.imageInfo.wwwc = `${Math.round(detail.image.windowWidth)}/${Math.round(detail.image.windowCenter)}`
|
||||||
this.getOrientationMarker()
|
this.getOrientationMarker()
|
||||||
this.$emit('renderAnnotations', this.series)
|
this.$emit('renderAnnotations', this.series)
|
||||||
// const toolGroupId = `viewport-${this.viewportIndex}`
|
const toolGroupId = this.viewportId
|
||||||
// const toolGroup = ToolGroupManager.getToolGroup(toolGroupId)
|
const toolGroup = cornerstoneTools.ToolGroupManager.getToolGroup(toolGroupId)
|
||||||
// toolGroup.setToolEnabled('ScaleOverlay')
|
toolGroup.setToolEnabled('ScaleOverlay')
|
||||||
},
|
},
|
||||||
imageRendered(e) {
|
imageRendered(e) {
|
||||||
const renderingEngine = getRenderingEngine(this.renderingEngineId)
|
const renderingEngine = getRenderingEngine(this.renderingEngineId)
|
||||||
|
|
@ -385,7 +364,7 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
cachePTMetadata(images) {
|
cachePTMetadata(images) {
|
||||||
images.map(i=>{
|
images.map(i => {
|
||||||
const instanceMetadata = getPTImageIdInstanceMetadata(i.imageId)
|
const instanceMetadata = getPTImageIdInstanceMetadata(i.imageId)
|
||||||
if (typeof instanceMetadata.CorrectedImage === 'string') {
|
if (typeof instanceMetadata.CorrectedImage === 'string') {
|
||||||
instanceMetadata.CorrectedImage = instanceMetadata.CorrectedImage.split('\\')
|
instanceMetadata.CorrectedImage = instanceMetadata.CorrectedImage.split('\\')
|
||||||
|
|
@ -416,7 +395,7 @@ export default {
|
||||||
}
|
}
|
||||||
this.prefetchMetadataInformation(obj.ImageIds, obj.Modality)
|
this.prefetchMetadataInformation(obj.ImageIds, obj.Modality)
|
||||||
await viewport.setStack(this.series.Stack, obj.SliceIndex)
|
await viewport.setStack(this.series.Stack, obj.SliceIndex)
|
||||||
|
|
||||||
viewport.render()
|
viewport.render()
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(e)
|
console.log(e)
|
||||||
|
|
@ -549,10 +528,11 @@ export default {
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.viewport-wrapper {
|
.viewport-wrapper {
|
||||||
width:100%;
|
width: 100%;
|
||||||
height:100%;
|
height: 100%;
|
||||||
position: relative;
|
position: relative;
|
||||||
cursor: default !important;
|
cursor: default !important;
|
||||||
|
|
||||||
.left-top-text {
|
.left-top-text {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 5px;
|
left: 5px;
|
||||||
|
|
@ -560,26 +540,31 @@ export default {
|
||||||
color: #ddd;
|
color: #ddd;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
|
|
||||||
.cd-info {
|
.cd-info {
|
||||||
color: #ddd;
|
color: #ddd;
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.subject-info {
|
.subject-info {
|
||||||
color:#f44336;
|
color: #f44336;
|
||||||
padding: 5px 0px;
|
padding: 5px 0px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-center-tool {
|
.top-center-tool {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left:50%;
|
left: 50%;
|
||||||
top: 5px;
|
top: 5px;
|
||||||
transform: translateX(-50%);
|
transform: translateX(-50%);
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
|
|
||||||
.toggle-visit-container {
|
.toggle-visit-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
.arrw_icon{
|
|
||||||
|
.arrw_icon {
|
||||||
width: 20px;
|
width: 20px;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
background-color: #3f3f3f;
|
background-color: #3f3f3f;
|
||||||
|
|
@ -587,15 +572,17 @@ export default {
|
||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
border-radius: 10%;
|
border-radius: 10%;
|
||||||
}
|
}
|
||||||
.arrow_text{
|
|
||||||
|
.arrow_text {
|
||||||
height: 20px;
|
height: 20px;
|
||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
background-color: #00000057;
|
background-color: #00000057;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
padding:0 10px;
|
padding: 0 10px;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.right-top-text {
|
.right-top-text {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 5px;
|
right: 5px;
|
||||||
|
|
@ -604,6 +591,7 @@ export default {
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.left-bottom-text {
|
.left-bottom-text {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 5px;
|
left: 5px;
|
||||||
|
|
@ -612,6 +600,7 @@ export default {
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.right-bottom-text {
|
.right-bottom-text {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 5px;
|
right: 5px;
|
||||||
|
|
@ -620,6 +609,7 @@ export default {
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.right-slider-box {
|
.right-slider-box {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 1px;
|
right: 1px;
|
||||||
|
|
@ -631,7 +621,8 @@ export default {
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
.right-slider-box:after{
|
|
||||||
|
.right-slider-box:after {
|
||||||
content: '';
|
content: '';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: -20px;
|
bottom: -20px;
|
||||||
|
|
@ -640,15 +631,17 @@ export default {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background: #333;
|
background: #333;
|
||||||
}
|
}
|
||||||
|
|
||||||
.slider {
|
.slider {
|
||||||
height: 20px;
|
height: 20px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
z-index:10;
|
z-index: 10;
|
||||||
background: #9e9e9e;
|
background: #9e9e9e;
|
||||||
cursor: move
|
cursor: move
|
||||||
}
|
}
|
||||||
|
|
||||||
.orientation-top {
|
.orientation-top {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
|
|
@ -657,6 +650,7 @@ export default {
|
||||||
transform: translateX(-50%);
|
transform: translateX(-50%);
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.orientation-bottom {
|
.orientation-bottom {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
|
|
@ -665,6 +659,7 @@ export default {
|
||||||
transform: translateX(-50%);
|
transform: translateX(-50%);
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.orientation-left {
|
.orientation-left {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
|
|
@ -673,6 +668,7 @@ export default {
|
||||||
transform: translateY(-50%);
|
transform: translateY(-50%);
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.orientation-right {
|
.orientation-right {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
style="font-weight: bold;font-size: 14px;margin: 5px 0px;">
|
style="font-weight: bold;font-size: 14px;margin: 5px 0px;">
|
||||||
<div style="display: flex;justify-content: space-between;align-items: center;color:#fff;margin: 10px 0 5px">
|
<div style="display: flex;justify-content: space-between;align-items: center;color:#fff;margin: 10px 0 5px">
|
||||||
<span :title="question.Remark">{{ question.QuestionName }}</span>
|
<span :title="question.Remark">{{ question.QuestionName }}</span>
|
||||||
<el-button size="mini" v-if="readingTaskState < 2" @click="openAddTableCol(question)">
|
<el-button size="mini" v-if="readingTaskState < 2 && !question.IsPreinstall" @click="openAddTableCol(question)">
|
||||||
{{ $t('common:button:add') }}
|
{{ $t('common:button:add') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -39,7 +39,7 @@
|
||||||
{{ $t('common:button:edit') }}
|
{{ $t('common:button:edit') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button type="text" size="mini" :disabled="addOrEdit.visible"
|
<el-button type="text" size="mini" :disabled="addOrEdit.visible"
|
||||||
v-if="scope.row.IsCurrentTaskAdd === 'True' || !question.IsCopyLesions || isBaseline"
|
v-if="(scope.row.IsCurrentTaskAdd === 'True' || !question.IsCopyLesions || isBaseline) && !question.IsPreinstall"
|
||||||
@click="deleteTableCol(question, scope.$index)">
|
@click="deleteTableCol(question, scope.$index)">
|
||||||
{{ $t('common:button:delete') }}
|
{{ $t('common:button:delete') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|
|
||||||
|
|
@ -15,14 +15,14 @@
|
||||||
:class="[question.Type === 'group' ? 'mb' : question.Type === 'upload' || question.Type === 'screenshot' ? 'uploadWrapper' : '']">
|
:class="[question.Type === 'group' ? 'mb' : question.Type === 'upload' || question.Type === 'screenshot' ? 'uploadWrapper' : '']">
|
||||||
<!-- 输入框 -->
|
<!-- 输入框 -->
|
||||||
<el-input v-if="question.Type === 'input'" v-model="questionForm[question.Id]"
|
<el-input v-if="question.Type === 'input'" v-model="questionForm[question.Id]"
|
||||||
:disabled="question.TableQuestionType === 2 || (question.IsCopy && type === 'edit' && !isBaseline && questionForm.IsCurrentTaskAdd === 'False')" />
|
:disabled="question.TableQuestionType === 2 || (question.IsCopy && type === 'edit' && !isBaseline && questionForm.IsCurrentTaskAdd === 'False') || question.IsPreinstall" />
|
||||||
<!-- 多行文本输入框 -->
|
<!-- 多行文本输入框 -->
|
||||||
<el-input v-if="question.Type === 'textarea'" v-model="questionForm[question.Id]" type="textarea"
|
<el-input v-if="question.Type === 'textarea'" v-model="questionForm[question.Id]" type="textarea"
|
||||||
:disabled="question.TableQuestionType === 2 || (question.IsCopy && type === 'edit' && !isBaseline && questionForm.IsCurrentTaskAdd === 'False')"
|
:disabled="question.TableQuestionType === 2 || (question.IsCopy && type === 'edit' && !isBaseline && questionForm.IsCurrentTaskAdd === 'False') || question.IsPreinstall"
|
||||||
:autosize="{ minRows: 2, maxRows: 4 }" />
|
:autosize="{ minRows: 2, maxRows: 4 }" />
|
||||||
<!-- 下拉框 -->
|
<!-- 下拉框 -->
|
||||||
<el-select v-if="question.Type === 'select'" v-model="questionForm[question.Id]" clearable
|
<el-select v-if="question.Type === 'select'" v-model="questionForm[question.Id]" clearable
|
||||||
:disabled="(question.TableQuestionType === 2 || question.QuestionGenre === 2) || (question.IsCopy && type === 'edit' && !IsBaseline && questionForm.IsCurrentTaskAdd === 'False')"
|
:disabled="(question.TableQuestionType === 2 || question.IsPreinstall || question.QuestionGenre === 2) || (question.IsCopy && type === 'edit' && !IsBaseline && questionForm.IsCurrentTaskAdd === 'False')"
|
||||||
@change="((val) => { formItemChange(val, question) })">
|
@change="((val) => { formItemChange(val, question) })">
|
||||||
<template v-if="question.TableQuestionType === 1">
|
<template v-if="question.TableQuestionType === 1">
|
||||||
<el-option v-for="item in organList" :key="item.Id" :label="item[question.DataTableColumn]"
|
<el-option v-for="item in organList" :key="item.Id" :label="item[question.DataTableColumn]"
|
||||||
|
|
@ -44,7 +44,7 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
<!-- 单选 -->
|
<!-- 单选 -->
|
||||||
<el-radio-group v-if="question.Type === 'radio'" v-model="questionForm[question.Id]"
|
<el-radio-group v-if="question.Type === 'radio'" v-model="questionForm[question.Id]"
|
||||||
:disabled="question.TableQuestionType === 2 || (question.IsCopy && type === 'edit' && !isBaseline && questionForm.IsCurrentTaskAdd === 'False')"
|
:disabled="question.TableQuestionType === 2 || question.IsPreinstall || (question.IsCopy && type === 'edit' && !isBaseline && questionForm.IsCurrentTaskAdd === 'False')"
|
||||||
@change="((val) => { formItemChange(val, question) })">
|
@change="((val) => { formItemChange(val, question) })">
|
||||||
<el-radio v-for="val in question.TypeValue.split('|')" :key="val" :label="val">
|
<el-radio v-for="val in question.TypeValue.split('|')" :key="val" :label="val">
|
||||||
{{ val }}
|
{{ val }}
|
||||||
|
|
@ -52,7 +52,7 @@
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
<!-- 复选框 -->
|
<!-- 复选框 -->
|
||||||
<el-checkbox-group v-if="question.Type === 'checkbox'"
|
<el-checkbox-group v-if="question.Type === 'checkbox'"
|
||||||
:disabled="question.TableQuestionType === 2 || (question.IsCopy && type === 'edit' && !isBaseline && questionForm.IsCurrentTaskAdd === 'False')"
|
:disabled="question.TableQuestionType === 2 || question.IsPreinstall || (question.IsCopy && type === 'edit' && !isBaseline && questionForm.IsCurrentTaskAdd === 'False')"
|
||||||
v-model="questionForm[question.Id]">
|
v-model="questionForm[question.Id]">
|
||||||
<el-checkbox v-for="val in question.TypeValue.split('|')" :key="val" :label="val">
|
<el-checkbox v-for="val in question.TypeValue.split('|')" :key="val" :label="val">
|
||||||
{{ val }}
|
{{ val }}
|
||||||
|
|
@ -62,11 +62,11 @@
|
||||||
<el-input v-if="question.Type === 'class' && question.ClassifyShowType === 1"
|
<el-input v-if="question.Type === 'class' && question.ClassifyShowType === 1"
|
||||||
v-model="questionForm[question.Id]" />
|
v-model="questionForm[question.Id]" />
|
||||||
<el-select v-if="question.Type === 'class' && question.ClassifyShowType === 2" v-model="questionForm[question.Id]"
|
<el-select v-if="question.Type === 'class' && question.ClassifyShowType === 2" v-model="questionForm[question.Id]"
|
||||||
:disabled="!question.ClassifyEditType" @change="(val) => { formItemChange(val, question) }">
|
:disabled="!question.ClassifyEditType || question.IsPreinstall" @change="(val) => { formItemChange(val, question) }">
|
||||||
<el-option v-for="val in question.TypeValue.split('|')" :key="val" :label="val.trim()" :value="val.trim()" />
|
<el-option v-for="val in question.TypeValue.split('|')" :key="val" :label="val.trim()" :value="val.trim()" />
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-radio-group v-if="question.Type === 'class' && question.ClassifyShowType === 3"
|
<el-radio-group v-if="question.Type === 'class' && question.ClassifyShowType === 3"
|
||||||
v-model="questionForm[question.Id]" :disabled="!question.ClassifyEditType"
|
v-model="questionForm[question.Id]" :disabled="!question.ClassifyEditType || question.IsPreinstall"
|
||||||
@change="(val) => { formItemChange(val, question) }">
|
@change="(val) => { formItemChange(val, question) }">
|
||||||
<el-radio v-for="item of question.TypeValue.split('|')" :key="item.trim()" :label="item.trim()">
|
<el-radio v-for="item of question.TypeValue.split('|')" :key="item.trim()" :label="item.trim()">
|
||||||
{{ item.trim() }}
|
{{ item.trim() }}
|
||||||
|
|
@ -86,7 +86,7 @@
|
||||||
@blur="questionsMarkStatus[question.Id] && questionsMarkStatus[question.Id].isMarked ? () => { } : handleMarkedQsBlur(questionForm[question.Id], questionForm, question.Id, question)"
|
@blur="questionsMarkStatus[question.Id] && questionsMarkStatus[question.Id].isMarked ? () => { } : handleMarkedQsBlur(questionForm[question.Id], questionForm, question.Id, question)"
|
||||||
v-model="questionForm[question.Id]"
|
v-model="questionForm[question.Id]"
|
||||||
:title="questionsMarkStatus[rowId ? `${rowId}_${question.Id}` : question.Id] ? questionsMarkStatus[rowId ? `${rowId}_${question.Id}` : question.Id].OrderMarkName : question.Remark"
|
:title="questionsMarkStatus[rowId ? `${rowId}_${question.Id}` : question.Id] ? questionsMarkStatus[rowId ? `${rowId}_${question.Id}` : question.Id].OrderMarkName : question.Remark"
|
||||||
:disabled="(questionsMarkStatus[question.Id] && questionsMarkStatus[question.Id].isMarked && question.ImageMarkEnum === 2) || question.ImageMarkEnum === 1"
|
:disabled="(questionsMarkStatus[question.Id] && questionsMarkStatus[question.Id].isMarked && question.ImageMarkEnum === 2) || question.ImageMarkEnum === 1 || question.IsPreinstall"
|
||||||
style="width: 150px;margin-right: 5px;">
|
style="width: 150px;margin-right: 5px;">
|
||||||
<template v-if="question.Unit !== 0" slot="append">
|
<template v-if="question.Unit !== 0" slot="append">
|
||||||
{{ question.Unit !== 4 ? $fd('ValueUnit', question.Unit) : question.CustomUnit }}
|
{{ question.Unit !== 4 ? $fd('ValueUnit', question.Unit) : question.CustomUnit }}
|
||||||
|
|
@ -144,21 +144,21 @@
|
||||||
<template v-else-if="question.ValueType === 2" slot="prefix">%</template>
|
<template v-else-if="question.ValueType === 2" slot="prefix">%</template>
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-input type="text" v-else-if="question.Type === 'number' && question.DataSource !== 1"
|
<el-input type="text" v-else-if="question.Type === 'number' && question.DataSource !== 1"
|
||||||
:disabled="question.TableQuestionType === 2 || (question.IsCopy && type === 'edit' && !isBaseline && questionForm.IsCurrentTaskAdd === 'False')"
|
:disabled="question.TableQuestionType === 2 || (question.IsCopy && type === 'edit' && !isBaseline && questionForm.IsCurrentTaskAdd === 'False') || question.IsPreinstall"
|
||||||
@change="((val) => { formItemNumberChange(val, question) })" @input="numberInput(question.Id)"
|
@change="((val) => { formItemNumberChange(val, question) })" @input="numberInput(question.Id)"
|
||||||
@blur="handleBlur(questionForm[question.Id], questionForm, question.Id)" v-model="questionForm[question.Id]">
|
@blur="handleBlur(questionForm[question.Id], questionForm, question.Id)" v-model="questionForm[question.Id]">
|
||||||
<template slot="append" v-if="question.Unit !== 0">{{ question.Unit !== 4 ? $fd('ValueUnit', question.Unit) :
|
<template slot="append" v-if="question.Unit !== 0">{{ question.Unit !== 4 ? $fd('ValueUnit', question.Unit) :
|
||||||
question.CustomUnit }}</template>
|
question.CustomUnit }}</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
<el-input type="text" v-else-if="question.Type === 'number' && question.DataSource === 1"
|
<el-input type="text" v-else-if="question.Type === 'number' && question.DataSource === 1"
|
||||||
:disabled="question.DataSource === 1" @input="numberInput(question.Id, true)"
|
:disabled="question.DataSource === 1" @input="numberInput(question.Id, true) || question.IsPreinstall"
|
||||||
@blur="handleCalculationBlur(calculationValue)" v-model="calculationValue">
|
@blur="handleCalculationBlur(calculationValue)" v-model="calculationValue">
|
||||||
<template slot="append" v-if="question.Unit !== 0">{{ question.Unit !== 4 ? $fd('ValueUnit', question.Unit) :
|
<template slot="append" v-if="question.Unit !== 0">{{ question.Unit !== 4 ? $fd('ValueUnit', question.Unit) :
|
||||||
question.CustomUnit }}</template>
|
question.CustomUnit }}</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
</template>
|
</template>
|
||||||
<!-- 上传图像 -->
|
<!-- 上传图像 -->
|
||||||
<el-upload v-if="question.Type === 'upload' || question.Type === 'screenshot'" :disabled="readingTaskState === 2"
|
<el-upload v-if="question.Type === 'upload' || question.Type === 'screenshot'" :disabled="readingTaskState === 2 || question.IsPreinstall"
|
||||||
action :accept="question.FileType" :limit="question.ImageCount === 0 ? 100 : question.ImageCount"
|
action :accept="question.FileType" :limit="question.ImageCount === 0 ? 100 : question.ImageCount"
|
||||||
:on-preview="handlePictureCardPreview"
|
:on-preview="handlePictureCardPreview"
|
||||||
:before-upload="(file) => { return handleBeforeUpload(file, question.FileType, question.Type) }"
|
:before-upload="(file) => { return handleBeforeUpload(file, question.FileType, question.Type) }"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue