{{ $t("common:dialogTitle:sign") }}
{{
@@ -264,8 +597,15 @@ import {
// uploadJudgeTaskImage,
saveJudgeVisitTaskResult,
submitJudgeVisitTaskResult,
- getReadingPastResultList
+ getReadingPastResultList,
+ getQuestionCalculateRelation
} from '@/api/trials'
+import {
+ getSingleVisitJudgeAnswer,
+ getJudgeForm,
+ setJudgeForm,
+ submitJudgeForm
+} from '@/api/trials/reading'
import { getAutoCutNextTask } from '@/api/user'
import { setSkipReadingCache } from '@/api/reading'
import const_ from '@/const/sign-code'
@@ -274,6 +614,7 @@ import SignForm from '@/views/trials/components/newSignForm'
import DicomEvent from '@/views/trials/trials-panel/reading/dicoms/components/DicomEvent'
// import store from '@/store'
import { changeURLStatic } from '@/utils/history.js'
+import LengthTool from '../dicoms/tools/Length/LengthTool'
export default {
name: 'AdReview',
components: { SignForm },
@@ -320,6 +661,7 @@ export default {
}
},
data() {
+ const taskInfo = JSON.parse(localStorage.getItem('taskInfo') || '{}')
return {
adInfo: {},
judgeQuestion: [],
@@ -348,25 +690,34 @@ export default {
isFixed: false,
images: [],
remark: '',
- submitLockAction: ''
+ submitLockAction: '',
+ taskInfo,
+ judgeAnswers: [],
+ r1VisitTaskId: '',
+ r2VisitTaskId: '',
+ judgeQs: [],
+ judgeForm: {
+ judgeResultRemark: ''
+ },
+ judgeSelectedArmMap: {},
+ readingTaskState: 2,
+ calculationList: [],
+ classArr: []
}
},
- // watch: {
- // visitTaskId: {
- // immediate: true,
- // handler(val) {
- // this.$nextTick(() => {
- // this.getAdInfo()
- // if (this.isReadingShowPreviousResults) {
- // this.getPriorAdList()
- // }
- // })
- // }
- // }
- // },
- mounted() {
+ async mounted() {
this.criterionType = parseInt(this.$route.query.criterionType)
this.getAdInfo()
+ if (this.taskInfo.ArbitrationRule === 1) {
+ await this.getVisitJudgeAnswer()
+ } else {
+
+ }
+ if (this.taskInfo.JudgeModeEnum === 1) {
+ this.getJudgeForm()
+ this.getQuestionCalculateRelation()
+ }
+
if (this.isReadingShowPreviousResults) {
this.getPriorAdList()
}
@@ -390,6 +741,7 @@ export default {
visitTaskId: this.visitTaskId
})
if (res.IsSuccess) {
+ this.readingTaskState = res.Result.ReadingTaskState
var judgeQS = []
if (res.Result.VisitInfoList.length > 0) {
res.Result.VisitInfoList[0].VisitTaskInfoList.map((v, index) => {
@@ -453,6 +805,402 @@ export default {
this.loading = false
}
},
+ async getVisitJudgeAnswer() {
+ try {
+ this.loading = true
+ const res = await getSingleVisitJudgeAnswer({ visitTaskId: this.visitTaskId })
+ if (res.IsSuccess) {
+ this.judgeAnswers = res.Result.QuestionList
+ this.r1VisitTaskId = res.Result.R1VisitTaskId
+ this.r2VisitTaskId = res.Result.R2VisitTaskId
+
+ }
+ } catch (e) {
+ console.log(e)
+ } finally {
+ this.loading = false
+ }
+ },
+ async getJudgeForm() {
+ try {
+ this.loading = true
+ const res = await getJudgeForm({ visitTaskId: this.visitTaskId })
+ if (res.IsSuccess) {
+ const { QuestionList, JudgeResultImagePathList } = res.Result
+ this.fileList = []
+ if (JudgeResultImagePathList.length > 0) {
+ JudgeResultImagePathList.map((url) => {
+ if (url) {
+ this.fileList.push({ name: '', url: url })
+ }
+ })
+ }
+ this.judgeQs = QuestionList.filter(item => item.ShowQuestion === 0)
+ // 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,
+ val
+ )
+ if (item.Type === 'class') {
+ this.classArr.push({ triggerId: item.ClassifyQuestionId, classId: item.ReadingQuestionId, classifyAlgorithms: item.ClassifyAlgorithms, classifyType: item.ClassifyType })
+ }
+ this.$set(this.judgeSelectedArmMap, item.ReadingQuestionId, null)
+ // if (item.Answer === this.getJudgeAnswerValue(item, 1)) {
+ // this.$set(this.judgeSelectedArmMap, item.ReadingQuestionId, 1)
+ // } else if (item.Answer === this.getJudgeAnswerValue(item, 2)) {
+ // this.$set(this.judgeSelectedArmMap, item.ReadingQuestionId, 2)
+ // } else {
+ // this.$set(this.judgeSelectedArmMap, item.ReadingQuestionId, '')
+ // }
+ })
+ }
+ } catch (e) {
+ console.log(e)
+ } finally {
+ this.loading = false
+ }
+ },
+ async getQuestionCalculateRelation() {
+ try {
+ const res = await getQuestionCalculateRelation({ TrialReadingCriterionId: this.$route.query.TrialReadingCriterionId, IsGetJudge: true })
+ this.calculationList = res.Result
+ } catch (e) {
+ console.log(e)
+ }
+ },
+ 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,
+ val
+ )
+ // 自动分类
+ this.classArr.map(i => {
+ if (i.triggerId === question.ReadingQuestionId) {
+ let answer = null
+ const list = JSON.parse(i.classifyAlgorithms)
+ if (i.classifyType === 0) {
+ const o = list.find(v => {
+ return (
+ parseFloat(val) >= parseFloat(v.gt) &&
+ parseFloat(val) < parseFloat(v.lt)
+ )
+ })
+ answer = o ? o.label : 'NE'
+ } else if (i.classifyType === 1) {
+ const o = list.find(v => {
+ return v.val.includes(val)
+ })
+ answer = o ? o.label : null
+ }
+ this.$set(this.judgeForm, i.classId, answer)
+ }
+ })
+ // 自动计算
+ this.calculationList.forEach(v => {
+ let find = v.CalculateQuestionList.filter(o => {
+ return o.TableQuestionId === question.ReadingQuestionId
+ })
+ // find的自动计算值number
+ if (find) {
+ var num = this.logic(v)
+ if (num !== false) {
+ this.$set(this.judgeForm, v.QuestionId, num)
+ }
+ }
+ })
+ },
+ logic(rules, num = 0) {
+ let isNE = false, isNAN = false
+ try {
+ if (rules.CalculateQuestionList.length === 0) {
+ return false
+ }
+ let dataArr = []
+ rules.CalculateQuestionList.forEach((o, i) => {
+ if (i === 0) {
+ if (rules.CustomCalculateMark > 4 && rules.CustomCalculateMark < 10) {
+ switch (rules.CustomCalculateMark) {
+ case 5:
+ this.judgeForm[o.QuestionId].forEach((q, qi) => {
+ if (!isNaN(parseFloat(q[o.TableQuestionId]))) {
+ if (qi === 0) {
+ num = parseFloat(q[o.TableQuestionId])
+ } else {
+ num *= parseFloat(q[o.TableQuestionId])
+ }
+ } else {
+ isNAN = true
+ }
+
+ if (q[o.TableQuestionId] === 'NE') {
+ isNE = true
+ }
+ })
+ break;
+ case 6:
+ this.judgeForm[o.QuestionId].forEach((q, qi) => {
+ if (!isNaN(parseFloat(q[o.TableQuestionId]))) {
+ if (qi === 0) {
+ num = parseFloat(q[o.TableQuestionId])
+ } else {
+ num += parseFloat(q[o.TableQuestionId])
+ }
+ } else {
+ isNAN = true
+ }
+
+ if (q[o.TableQuestionId] === 'NE') {
+ isNE = true
+ }
+ })
+ break;
+ case 7:
+ this.judgeForm[o.QuestionId].forEach((q, qi) => {
+ if (!isNaN(parseFloat(q[o.TableQuestionId]))) {
+ if (qi === 0) {
+ num = parseFloat(q[o.TableQuestionId])
+ } else {
+ num += parseFloat(q[o.TableQuestionId])
+ }
+ } else {
+ isNAN = true
+ }
+
+ if (q[o.TableQuestionId] === 'NE') {
+ isNE = true
+ }
+ })
+ num = this.judgeForm[o.QuestionId].length === 0 ? 0 : num / this.judgeForm[o.QuestionId].length
+ break;
+ case 8:
+ var arr = []
+ this.judgeForm[o.QuestionId].forEach(q => {
+ if (!isNaN(parseFloat(q[o.TableQuestionId]))) {
+ arr.push(q[o.TableQuestionId])
+ } else {
+ isNAN = true
+ }
+
+ if (q[o.TableQuestionId] === 'NE') {
+ isNE = true
+ }
+ })
+ num = arr.length === 0 ? 0 : Math.max(...arr)
+ break;
+ case 9:
+ var arr = []
+ this.judgeForm[o.QuestionId].forEach(q => {
+ if (!isNaN(parseFloat(q[o.TableQuestionId]))) {
+ arr.push(q[o.TableQuestionId])
+ } else {
+ isNAN = true
+ }
+ if (q[o.TableQuestionId] === 'NE') {
+ isNE = true
+ }
+ })
+ num = arr.length === 0 ? 0 : Math.min(...arr)
+ break;
+ }
+ } else {
+ switch (rules.CustomCalculateMark) {
+ case 15:
+ if (!isNaN(parseFloat(this.judgeForm[o.TableQuestionId]))) {
+ num = Math.abs(this.judgeForm[o.TableQuestionId])
+ }
+ else {
+ isNAN = true
+ }
+ if (this.judgeForm[o.TableQuestionId] === 'NE') {
+ isNE = true
+ }
+ break;
+ default:
+ if (this.judgeForm[o.TableQuestionId] === 'NE') {
+ isNE = true
+ }
+ if (!isNaN(parseFloat(this.judgeForm[o.TableQuestionId]))) {
+ num = parseFloat(this.judgeForm[o.TableQuestionId])
+ } else {
+ isNAN = true
+ }
+ if (!isNaN(num)) {
+ dataArr.push(num)
+ }
+ break;
+ }
+
+ }
+ } else {
+ if (this.judgeForm[o.TableQuestionId] === 'NE') {
+ isNE = true
+ }
+ switch (rules.CustomCalculateMark) {
+ case 1:
+ if (!isNaN(parseFloat(this.judgeForm[o.TableQuestionId]))) {
+ num += parseFloat(this.judgeForm[o.TableQuestionId])
+ } else {
+ isNAN = true
+ }
+
+ break;
+ case 2:
+ if (!isNaN(parseFloat(this.judgeForm[o.TableQuestionId]))) {
+ num -= parseFloat(this.judgeForm[o.TableQuestionId])
+ } else {
+ isNAN = true
+ }
+
+ break;
+ case 3:
+ if (!isNaN(parseFloat(this.judgeForm[o.TableQuestionId]))) {
+ num *= parseFloat(this.judgeForm[o.TableQuestionId])
+ } else {
+ isNAN = true
+ }
+
+ break;
+ case 4:
+ if (!isNaN(parseFloat(this.judgeForm[o.TableQuestionId]))) {
+ if (parseFloat(this.judgeForm[o.TableQuestionId]) === 0) {
+ num = 0
+ } else {
+ num /= parseFloat(this.judgeForm[o.TableQuestionId])
+ }
+ } else {
+ isNAN = true
+ }
+
+ break;
+ case 10:
+ if (!isNaN(parseFloat(this.judgeForm[o.TableQuestionId]))) {
+ dataArr.push(parseFloat(this.judgeForm[o.TableQuestionId]))
+ } else {
+ isNAN = true
+ }
+ num = dataArr.length === 0 ? 0 : dataArr.reduce((acc, curr) => {
+ return acc + (typeof curr === "number" ? curr : 0);
+ }, 0) / dataArr.length;
+ break;
+ case 11:
+ if (!isNaN(parseFloat(this.judgeForm[o.TableQuestionId]))) {
+ dataArr.push(parseFloat(this.judgeForm[o.TableQuestionId]))
+ } else {
+ isNAN = true
+ }
+ num = Math.max(...dataArr);
+ break;
+ case 12:
+ if (!isNaN(parseFloat(this.judgeForm[o.TableQuestionId]))) {
+ dataArr.push(parseFloat(this.judgeForm[o.TableQuestionId]))
+ } else {
+ isNAN = true
+ }
+ num = Math.min(...dataArr);
+ break;
+ case 13:
+ if (!isNaN(parseFloat(this.judgeForm[o.TableQuestionId]))) {
+ dataArr.push(parseFloat(this.judgeForm[o.TableQuestionId]))
+ } else {
+ isNAN = true
+ }
+ num = dataArr.length === 0 ? 0 : dataArr.reduce((acc, curr) => acc && curr) ? 1 : 0
+ break;
+ case 14:
+ if (!isNaN(parseFloat(this.judgeForm[o.TableQuestionId]))) {
+ dataArr.push(parseFloat(this.judgeForm[o.TableQuestionId]))
+ } else {
+ isNAN = true
+ }
+ num = dataArr.length === 0 ? 0 : dataArr.reduce((acc, curr) => acc || curr, 0) ? 1 : 0;
+ break;
+ case 15:
+ if (!isNaN(parseFloat(this.judgeForm[o.TableQuestionId]))) {
+ num = Math.abs(this.judgeForm[o.TableQuestionId])
+ }
+ else {
+ isNAN = true
+ }
+ break;
+ }
+ }
+ })
+ } catch (e) {
+ console.log(e)
+ }
+ if (isNE) {
+ return 'NE'
+ }
+ if (isNAN) {
+ return null
+ }
+ if (rules.ValueType === 2) {
+ num = num * 100
+ }
+ if (rules.CustomCalculateMark === 13 || rules.CustomCalculateMark === 14) {
+ return num
+ } else {
+ return num.toFixed(this.digitPlaces)
+ }
+
+ },
+ getJudgeAnswerValue(question, armEnum) {
+ const row = this.judgeAnswers.find((item) => {
+ return item.ReadingQuestionId === question.ReadingQuestionId
+ })
+ 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]
+ return answer === '' || answer === null || answer === undefined
+ })
+ if (missingQuestion) {
+ let msg = this.$t('trials:ad-review:msg:validMsg').replace('xxx', missingQuestion.QuestionName)
+ this.$message.error(msg)
+ return false
+ }
+ return true
+ },
async getPriorAdList() {
this.priorLoading = true
try {
@@ -499,9 +1247,9 @@ export default {
this.submitLockAction = 'save'
this.loading = true
try {
- const valid = await this.$refs['adForm'].validate()
+ const valid = await this.$refs.adForm.validate()
if (!valid) return false
- var paths = []
+ const paths = []
this.fileList.map((file) => {
if (file.url) {
paths.push(file.url)
@@ -523,7 +1271,7 @@ export default {
if (this.submitLockAction) return false
this.submitLockAction = 'submit'
try {
- const valid = await this.$refs['adForm'].validate()
+ const valid = await this.$refs.adForm.validate()
if (!valid) return false
const { ImageAssessmentReportConfirmation } = const_.processSignature
this.signCode = ImageAssessmentReportConfirmation
@@ -543,61 +1291,163 @@ export default {
},
// 签名并确认
async signConfirm(signInfo) {
- this.loading = true
- var paths = []
- this.fileList.map((file) => {
- paths.push(file.url)
- })
- var params = {
- data: {
- visitTaskId: this.visitTaskId,
- judgeResultTaskId: this.adForm.judgeResultTaskId,
- judgeResultRemark: this.adForm.judgeResultRemark,
- judgeResultImagePathList: paths
- },
- signInfo: signInfo
- }
try {
- const res = await submitJudgeVisitTaskResult(params)
- if (res.IsSuccess) {
- this.$message.success(this.$t('common:message:savedSuccessfully'))
- this.isEdit = false
- this.$refs['signForm'].btnLoading = false
- this.signVisible = false
- // window.location.reload()
- // window.opener.postMessage('refreshTaskList', window.location)
- // 设置当前任务阅片状态为已读
- this.adInfo.ReadingTaskState = 2
- const res = await getAutoCutNextTask({imageToolType: this.imageToolType})
- var isAutoTask = res.Result.AutoCutNextTask
- if (isAutoTask) {
- // store.dispatch('reading/resetVisitTasks')
- window.location.reload()
- } else {
- // '当前阅片任务已完成,是否进入下一个阅片任务?'
- const confirm = await this.$confirm(
- this.$t('trials:adReview:title:msg2'),
- {
- type: 'warning',
- distinguishCancelAndClose: true
- }
- )
- if (confirm === 'confirm') {
- // store.dispatch('reading/resetVisitTasks')
- // DicomEvent.$emit('getNextTask')
+ this.loading = true
+ const paths = this.fileList.reduce((acc, file) => {
+ if (file.url) acc.push(file.url)
+ return acc
+ }, [])
+
+ if (this.taskInfo.JudgeModeEnum === 1) {
+ // 访视点
+ const qsList = []
+ let reg = new RegExp(/^[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}$/)
+ Object.keys(this.judgeForm).forEach(key => {
+ if (reg.test(key)) {
+ qsList.push({
+ readingQuestionId: key,
+ answer: this.judgeForm[key]
+ })
+ }
+ })
+ const params = {
+ data: {
+ visitTaskId: this.visitTaskId,
+ judgeResultRemark: this.judgeForm.judgeResultRemark,
+ judgeResultImagePathList: paths,
+ questionList: qsList
+ },
+ signInfo: signInfo
+ }
+ const res = await submitJudgeForm(params)
+ if (res.IsSuccess) {
+ this.$message.success(this.$t('common:message:savedSuccessfully'))
+ this.isEdit = false
+ this.$refs['signForm'].btnLoading = false
+ this.signVisible = false
+ // 设置当前任务阅片状态为已读
+ this.readingTaskState = 2
+ const res = await getAutoCutNextTask({ imageToolType: this.imageToolType })
+ const isAutoTask = res.Result.AutoCutNextTask
+ if (isAutoTask) {
window.location.reload()
} else {
- changeURLStatic('visitTaskId', this.visitTaskId)
+ // '当前阅片任务已完成,是否进入下一个阅片任务?'
+ const confirm = await this.$confirm(
+ this.$t('trials:adReview:title:msg2'),
+ {
+ type: 'warning',
+ distinguishCancelAndClose: true
+ }
+ )
+ if (confirm === 'confirm') {
+ window.location.reload()
+ } else {
+ changeURLStatic('visitTaskId', this.visitTaskId)
+ }
}
+ window.opener.postMessage('refreshTaskList', window.location)
}
- window.opener.postMessage('refreshTaskList', window.location)
+ this.loading = false
+ } else {
+ const params = {
+ data: {
+ visitTaskId: this.visitTaskId,
+ judgeResultTaskId: this.adForm.judgeResultTaskId,
+ judgeResultRemark: this.adForm.judgeResultRemark,
+ judgeResultImagePathList: paths
+ },
+ signInfo: signInfo
+ }
+ const res = await submitJudgeVisitTaskResult(params)
+ if (res.IsSuccess) {
+ this.$message.success(this.$t('common:message:savedSuccessfully'))
+ this.isEdit = false
+ this.$refs['signForm'].btnLoading = false
+ this.signVisible = false
+ // 设置当前任务阅片状态为已读
+ this.adInfo.ReadingTaskState = 2
+ const res = await getAutoCutNextTask({ imageToolType: this.imageToolType })
+ const isAutoTask = res.Result.AutoCutNextTask
+ if (isAutoTask) {
+ window.location.reload()
+ } else {
+ // '当前阅片任务已完成,是否进入下一个阅片任务?'
+ const confirm = await this.$confirm(
+ this.$t('trials:adReview:title:msg2'),
+ {
+ type: 'warning',
+ distinguishCancelAndClose: true
+ }
+ )
+ if (confirm === 'confirm') {
+ window.location.reload()
+ } else {
+ changeURLStatic('visitTaskId', this.visitTaskId)
+ }
+ }
+ window.opener.postMessage('refreshTaskList', window.location)
+ }
+ this.loading = false
}
- this.loading = false
} catch (e) {
+ console.log(e)
+ } finally {
this.loading = false
this.$refs['signForm'] ? this.$refs['signForm'].btnLoading = false : ''
}
},
+ async handleSaveJudgeForm() {
+ if (this.submitLockAction) return false
+ this.submitLockAction = 'save'
+ this.loading = true
+ try {
+ const valid = this.validateJudgeSelections()
+ if (!valid) return false
+ const qsList = []
+ let reg = new RegExp(/^[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}$/)
+ Object.keys(this.judgeForm).forEach(key => {
+ if (reg.test(key)) {
+ qsList.push({
+ readingQuestionId: key,
+ answer: this.judgeForm[key]
+ })
+ }
+ })
+ const paths = this.fileList.reduce((acc, file) => {
+ if (file.url) acc.push(file.url)
+ return acc
+ }, [])
+ await setJudgeForm({
+ visitTaskId: this.visitTaskId,
+ judgeResultRemark: this.judgeForm.judgeResultRemark,
+ judgeResultImagePathList: paths,
+ questionList: qsList
+ })
+ this.$message.success(this.$t('common:message:savedSuccessfully'))
+ return true
+ } catch (e) {
+ console.log(e)
+ return false
+ } finally {
+ this.loading = false
+ this.submitLockAction = ''
+ }
+ },
+ async handleSubmitJudgeForm() {
+ if (this.submitLockAction) return false
+ this.submitLockAction = 'submit'
+ try {
+ const valid = this.validateJudgeSelections()
+ if (!valid) return false
+ const { ImageAssessmentReportConfirmation } = const_.processSignature
+ this.signCode = ImageAssessmentReportConfirmation
+ this.signVisible = true
+ return true
+ } finally {
+ this.submitLockAction = ''
+ }
+ },
handleViewDetail(visitTaskId) {
if (this.openWindow) {
this.openWindow.close()
@@ -614,12 +1464,12 @@ export default {
var path = ''
if (readingTool === 0 || readingTool === 2 || readingTool === 3) {
path = `/readingDicoms?TrialReadingCriterionId=${trialReadingCriterionId}&trialId=${this.trialId
- }&subjectCode=${this.subjectCode}&subjectId=${this.subjectId
- }&visitTaskId=${visitTaskId}&isReadingTaskViewInOrder=${isReadingTaskViewInOrder}&criterionType=${criterionType}&readingTool=${readingTool}&TokenKey=${token}&key=${new Date().getTime()}`
+ }&subjectCode=${this.subjectCode}&subjectId=${this.subjectId
+ }&visitTaskId=${visitTaskId}&isReadingTaskViewInOrder=${isReadingTaskViewInOrder}&criterionType=${criterionType}&readingTool=${readingTool}&TokenKey=${token}&key=${new Date().getTime()}`
} else {
path = `/noneDicomReading?TrialReadingCriterionId=${trialReadingCriterionId}&trialId=${this.trialId
- }&subjectCode=${this.subjectCode}&subjectId=${this.subjectId
- }&visitTaskId=${visitTaskId}&isReadingTaskViewInOrder=${isReadingTaskViewInOrder}&criterionType=${criterionType}&readingTool=${readingTool}&TokenKey=${token}&key=${new Date().getTime()}`
+ }&subjectCode=${this.subjectCode}&subjectId=${this.subjectId
+ }&visitTaskId=${visitTaskId}&isReadingTaskViewInOrder=${isReadingTaskViewInOrder}&criterionType=${criterionType}&readingTool=${readingTool}&TokenKey=${token}&key=${new Date().getTime()}`
}
var routeData = this.$router.resolve({ path })
this.openWindow = window.open(routeData.href, '_blank')
@@ -647,14 +1497,14 @@ export default {
var path = ''
if (readingTool === 0 || readingTool === 2 || readingTool === 3) {
path = `/readingDicoms?TrialReadingCriterionId=${trialReadingCriterionId}&trialId=${this.trialId
- }&subjectCode=${this.subjectCode}&subjectId=${this.subjectId
- }&visitTaskId=${task.VisitTaskId
- }&isReadingTaskViewInOrder=${isReadingTaskViewInOrder}&criterionType=${criterionType}&readingTool=${readingTool}&TokenKey=${token}&key=${new Date().getTime()}`
+ }&subjectCode=${this.subjectCode}&subjectId=${this.subjectId
+ }&visitTaskId=${task.VisitTaskId
+ }&isReadingTaskViewInOrder=${isReadingTaskViewInOrder}&criterionType=${criterionType}&readingTool=${readingTool}&TokenKey=${token}&key=${new Date().getTime()}`
} else {
path = `/noneDicomReading?TrialReadingCriterionId=${trialReadingCriterionId}&trialId=${this.trialId
- }&subjectCode=${this.subjectCode}&subjectId=${this.subjectId
- }&visitTaskId=${task.VisitTaskId
- }&isReadingTaskViewInOrder=${isReadingTaskViewInOrder}&criterionType=${criterionType}&readingTool=${readingTool}&TokenKey=${token}&key=${new Date().getTime()}`
+ }&subjectCode=${this.subjectCode}&subjectId=${this.subjectId
+ }&visitTaskId=${task.VisitTaskId
+ }&isReadingTaskViewInOrder=${isReadingTaskViewInOrder}&criterionType=${criterionType}&readingTool=${readingTool}&TokenKey=${token}&key=${new Date().getTime()}`
}
var routeData = this.$router.resolve({ path })
this.openWindow = window.open(routeData.href, '_blank')
@@ -676,33 +1526,18 @@ export default {
var path = ''
if (readingTool === 0 || readingTool === 2 || readingTool === 3) {
path = `/readingDicoms?TrialReadingCriterionId=${trialReadingCriterionId}&trialId=${this.trialId
- }&subjectCode=${this.subjectCode}&subjectId=${this.subjectId
- }&visitTaskId=${task.GlobalVisitTaskId
- }&isReadingTaskViewInOrder=${isReadingTaskViewInOrder}&criterionType=${criterionType}&readingTool=${readingTool}&TokenKey=${token}&key=${new Date().getTime()}`
+ }&subjectCode=${this.subjectCode}&subjectId=${this.subjectId
+ }&visitTaskId=${task.GlobalVisitTaskId
+ }&isReadingTaskViewInOrder=${isReadingTaskViewInOrder}&criterionType=${criterionType}&readingTool=${readingTool}&TokenKey=${token}&key=${new Date().getTime()}`
} else {
path = `/noneDicomReading?TrialReadingCriterionId=${trialReadingCriterionId}&trialId=${this.trialId
- }&subjectCode=${this.subjectCode}&subjectId=${this.subjectId
- }&visitTaskId=${task.GlobalVisitTaskId
- }&isReadingTaskViewInOrder=${isReadingTaskViewInOrder}&criterionType=${criterionType}&readingTool=${readingTool}&TokenKey=${token}&key=${new Date().getTime()}`
+ }&subjectCode=${this.subjectCode}&subjectId=${this.subjectId
+ }&visitTaskId=${task.GlobalVisitTaskId
+ }&isReadingTaskViewInOrder=${isReadingTaskViewInOrder}&criterionType=${criterionType}&readingTool=${readingTool}&TokenKey=${token}&key=${new Date().getTime()}`
}
var routeData = this.$router.resolve({ path })
this.openWindow = window.open(routeData.href, '_blank')
},
- // uploadScreenshot(param) {
- // this.loading = true
- // this.uploadDisabled = false
- // const formData = new FormData()
- // formData.append('file', param.file)
- // uploadJudgeTaskImage(this.$route.query.trialId, this.visitTaskId, formData).then(res => {
- // this.loading = false
- // if (res.IsSuccess) {
- // this.fileList.push({ name: res.Result.FileName, url: `${res.Result.Path}` })
- // }
- // this.uploadDisabled = true
- // }).catch(() => {
- // this.loading = false
- // })
- // },
async uploadScreenshot(param) {
this.loading = true
this.uploadDisabled = false
@@ -804,6 +1639,38 @@ export default {
margin: 10px 0;
}
+ .judge-remark-tip {
+ margin-bottom: 8px;
+ color: #606266;
+ font-size: 13px;
+ line-height: 20px;
+ word-break: break-word;
+ width: 500px;
+ }
+
+ .judge-remark-input {
+ width: 500px;
+ }
+
+ .judge-form-actions {
+ display: flex;
+ align-items: center;
+ justify-content: flex-start;
+ gap: 12px;
+ white-space: nowrap;
+ }
+
+ .judge-select-radio-group {
+ display: flex;
+ gap: 16px;
+ }
+
+ .judge-answer-text {
+ min-width: 0;
+ line-height: 20px;
+ word-break: break-word;
+ }
+
.disabled {
::v-deep .el-upload--picture-card {
display: none;
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/IVUS/QuestionList.vue b/src/views/trials/trials-panel/reading/dicoms/components/IVUS/QuestionList.vue
index 4883bf46..eae6f145 100644
--- a/src/views/trials/trials-panel/reading/dicoms/components/IVUS/QuestionList.vue
+++ b/src/views/trials/trials-panel/reading/dicoms/components/IVUS/QuestionList.vue
@@ -236,7 +236,7 @@
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/QuestionFormItem.vue b/src/views/trials/trials-panel/setting/reading-unit/components/QuestionFormItem.vue
index ea46a0c3..196259e7 100644
--- a/src/views/trials/trials-panel/setting/reading-unit/components/QuestionFormItem.vue
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/QuestionFormItem.vue
@@ -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)
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsPreview.vue b/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsPreview.vue
index 6b4a2551..f3065898 100644
--- a/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsPreview.vue
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsPreview.vue
@@ -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)
diff --git a/src/views/trials/trials-panel/setting/reading-unit/index.vue b/src/views/trials/trials-panel/setting/reading-unit/index.vue
index 53694695..9bf8c85b 100644
--- a/src/views/trials/trials-panel/setting/reading-unit/index.vue
+++ b/src/views/trials/trials-panel/setting/reading-unit/index.vue
@@ -240,7 +240,6 @@ export default {
if (ReadingTool === 3) {
this.readingSegmentTools = getCustomizeStandardsSegmentDicomTools(readingSegmentTools)
}
- console.log(this.readingSegmentTools, 'this.readingSegmentTools')
},
setIsClinicalReading(isClinicalReading) {
this.isClinicalReading = isClinicalReading;
@@ -300,11 +299,15 @@ export default {
this.$refs["arbitrationRules" + this.TrialReadingCriterionId]
.length
) {
- var arbitrationRules = await this.$refs[
+ const arbitrationRulesRef = this.$refs[
"arbitrationRules" + this.TrialReadingCriterionId
- ][0].saveAllSync();
+ ][0];
+ var judgeRuleSaved = await arbitrationRulesRef.saveJugeRule(false);
+ var arbitrationRules = judgeRuleSaved
+ ? await arbitrationRulesRef.saveAllSync()
+ : false;
isCheckList.push({
- isCheck: arbitrationRules,
+ isCheck: judgeRuleSaved && arbitrationRules,
msg: this.$t("trials:readingUnit:adRules"), // '仲裁规则'
});
}
@@ -448,9 +451,6 @@ export default {
this.$refs[
"arbitrationRules" + this.TrialReadingCriterionId
][0].getList();
- this.$refs[
- "arbitrationRules" + this.TrialReadingCriterionId
- ][0].getTrialJudgyInfo();
}
},
},
diff --git a/vue.config.js b/vue.config.js
index c14bcf88..47177a6f 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -135,7 +135,8 @@ module.exports = defineConfig({
test: /\.wasm$/,
type: 'asset/resource'
}
- ]
+ ],
+ exprContextCritical: false,
},
optimization: {
splitChunks: {