637 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			637 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			Plaintext
		
	
	
| import {
 | |
|   getRelatedVisitTask,
 | |
|   getTableAnswerRowInfoList,
 | |
|   getDicomReadingQuestionAnswer,
 | |
|   getReadingQuestionAndAnswer,
 | |
|   getReadingOrganList
 | |
| }
 | |
|   from '@/api/trials'
 | |
| import { getReadingVisitStudyList } from '@/api/trials'
 | |
| const hangingAgreement = [
 | |
|   { name: 'A', row: 1, col: 1 },
 | |
|   { name: 'A|A', row: 1, col: 2 },
 | |
|   { name: 'A|B', row: 1, col: 2 },
 | |
|   { name: 'A|A|A|A', row: 2, col: 2 }
 | |
| ]
 | |
| const getDefaultState = () => {
 | |
|   return {
 | |
|     // visitTaskList: [],
 | |
|     visitTaskList: sessionStorage.getItem('visitTaskList') ? JSON.parse(sessionStorage.getItem('visitTaskList')) : [],
 | |
|     organList: [],
 | |
|     seriesStack: [],
 | |
|     activeHangingAgreement: hangingAgreement[0]
 | |
| 
 | |
|   }
 | |
| }
 | |
| function getQuestions(questions) {
 | |
|   questions.forEach(item => {
 | |
|     if (item.Type === 'table' && item.TableQuestions && item.TableQuestions.Answers.length > 0) {
 | |
|       item.TableQuestions.Answers.forEach(answerObj => {
 | |
|         answerObj.lesionPart = getQuestionAnswer(item.TableQuestions.Questions, 8, answerObj)
 | |
|         answerObj.loctation = getQuestionAnswer(item.TableQuestions.Questions, 6, answerObj)
 | |
|         answerObj.lesionLength = getQuestionAnswer(item.TableQuestions.Questions, 0, answerObj)
 | |
|         answerObj.lesionShort = getQuestionAnswer(item.TableQuestions.Questions, 1, answerObj)
 | |
|         answerObj.isDicomReading = answerObj.IsDicomReading === 'True'
 | |
|         var isLymphLesion = getQuestionAnswer(item.TableQuestions.Questions, 2, answerObj)
 | |
|         isLymphLesion = isLymphLesion ? parseInt(isLymphLesion) : null
 | |
|         answerObj.isLymphLesion = isLymphLesion
 | |
| 
 | |
|         answerObj.lesionState = getQuestionAnswer(item.TableQuestions.Questions, 7, answerObj)
 | |
| 
 | |
|         if (answerObj.RowId) {
 | |
|           answerObj.saveTypeEnum = isNaN(parseInt(answerObj.lesionState)) ? 1 : 2
 | |
|         } else {
 | |
|           answerObj.saveTypeEnum = 0
 | |
|         }
 | |
|       })
 | |
|     }
 | |
|     if (item.Childrens.length > 0) {
 | |
|       getQuestions(item.Childrens)
 | |
|     }
 | |
|   })
 | |
|   return questions
 | |
| }
 | |
| function findQuestionAndRemoveLesion(questions, obj) {
 | |
|   for (var i = 0; i < questions.length; i++) {
 | |
|     if (questions[i].Type === 'table' && questions[i].TableQuestions && (questions[i].LesionType === obj.lesionType) && questions[i].TableQuestions.Answers.length > 0) {
 | |
|       var idx = questions[i].TableQuestions.Answers.findIndex(i => String(i.RowIndex) === String(obj.rowIndex))
 | |
|       if (idx > -1) {
 | |
|         questions[i].TableQuestions.Answers.splice(idx, 1)
 | |
|         break
 | |
|       }
 | |
|     }
 | |
|     if (questions[i].Childrens.length > 0) {
 | |
|       findQuestionAndRemoveLesion(questions[i].Childrens, obj)
 | |
|     }
 | |
|   }
 | |
|   return questions
 | |
| }
 | |
| function findQuestionAndUpdateLesion(questions, obj) {
 | |
|   for (var i = 0; i < questions.length; i++) {
 | |
|     var item = questions[i]
 | |
|     if (item.Type === 'table' && item.Id === obj.questionId) {
 | |
|       var idx = item.TableQuestions.Answers.findIndex(i => i.RowIndex === obj.rowIndex)
 | |
|       item.TableQuestions.Answers[idx].isLymphLesion = obj.isLymphLesion
 | |
|       item.TableQuestions.Answers[idx].loctation = obj.lesionOrgan
 | |
|       item.TableQuestions.Answers[idx].lesionPart = obj.lesionPart
 | |
|       item.TableQuestions.Answers[idx].lesionLength = obj.lesionLength
 | |
|       item.TableQuestions.Answers[idx].lesionShort = obj.lesionShort
 | |
|       item.TableQuestions.Answers[idx].saveTypeEnum = obj.saveTypeEnum
 | |
|       item.TableQuestions.Answers[idx].lesionState = obj.lesionState
 | |
|       for (const i in obj.anwsers) {
 | |
|         if (i === 'MeasureData' && obj.anwsers[i]) {
 | |
|           item.TableQuestions.Answers[idx].InstanceId = obj.anwsers[i].instanceId
 | |
|           item.TableQuestions.Answers[idx].SeriesId = obj.anwsers[i].seriesId
 | |
|           item.TableQuestions.Answers[idx][i] = JSON.stringify(obj.anwsers[i])
 | |
|         } else {
 | |
|           item.TableQuestions.Answers[idx][i] = String(obj.anwsers[i])
 | |
|         }
 | |
|       }
 | |
|       break
 | |
|     }
 | |
|     if (item.Childrens.length > 0) {
 | |
|       this.findQuestionAndUpdateLesion(item.Childrens, obj)
 | |
|     }
 | |
|   }
 | |
|   return questions
 | |
| }
 | |
| function findQuestionAndAddLesion(questions, obj) {
 | |
|   for (var i = 0; i < questions.length; i++) {
 | |
|     if (questions[i].Type === 'table' && questions[i].TableQuestions && (questions[i].LesionType === obj.lesionType)) {
 | |
|       var sourceObj = {}
 | |
|       questions[i].TableQuestions.Questions.forEach(item => {
 | |
|         sourceObj[item.Id] = ''
 | |
|       })
 | |
|       var targetObj = Object.assign(sourceObj, obj.lesionObj)
 | |
|       targetObj.IsCurrentTaskAdd = 'True'
 | |
|       questions[i].TableQuestions.Answers.push(targetObj)
 | |
|       break
 | |
|     }
 | |
|     if (questions[i].Childrens.length > 0) {
 | |
|       findQuestionAndAddLesion(questions[i].Childrens, obj)
 | |
|     }
 | |
|   }
 | |
|   return questions
 | |
| }
 | |
| function getQuestionAnswer(questions, questionMark, answers) {
 | |
|   var idx = questions.findIndex(i => i.QuestionMark === questionMark)
 | |
|   if (idx > -1) {
 | |
|     var questionId = questions[idx].Id
 | |
|     return answers[questionId]
 | |
|   } else {
 | |
|     return ''
 | |
|   }
 | |
| }
 | |
| 
 | |
| const state = getDefaultState
 | |
| 
 | |
| const mutations = {
 | |
| }
 | |
| 
 | |
| const actions = {
 | |
|   getOrganInfo({ state }, visitTaskId) {
 | |
|     return new Promise(resolve => {
 | |
|       getReadingOrganList({ visitTaskId: visitTaskId }).then(res => {
 | |
|         state.organList = res.Result
 | |
|         sessionStorage.setItem('organList', state.organList.length > 0 ? JSON.stringify(state.organList) : '')
 | |
|         resolve()
 | |
|       }).catch(() => { resolve() })
 | |
|     })
 | |
|   },
 | |
|   getVisitTasks({ state }, visitTaskId) {
 | |
|     return new Promise(resolve => {
 | |
|       getRelatedVisitTask({ visitTaskId: visitTaskId }).then(res => {
 | |
|         res.Result.forEach(item => {
 | |
|           item.questionsInit = false
 | |
|           item.readingQuestionsInit = false
 | |
|           item.measureDataInit = false
 | |
|           item.IsInit = false
 | |
|         })
 | |
|         state.visitTaskList = res.Result
 | |
|         sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
 | |
|         resolve()
 | |
|       }).catch(() => { resolve() })
 | |
|     })
 | |
|   },
 | |
|   resetVisitTasks({ state }) {
 | |
|     return new Promise(resolve => {
 | |
|       sessionStorage.setItem('visitTaskList', '')
 | |
|       state.visitTaskList = []
 | |
|       resolve()
 | |
|     })
 | |
|   },
 | |
|   getMasterSeries({ state }, obj) {
 | |
|     return new Promise(resolve => {
 | |
|       var seriesInfo = {}
 | |
|       getReadingVisitStudyList(obj.trialId, obj.visitId, obj.visitTaskId).then(res => {
 | |
|         var idx = res.Result.findIndex(study => study.IsCriticalSequence)
 | |
|         if (idx > -1) {
 | |
|           var study = res.Result[idx]
 | |
|           seriesInfo.StudyId = study.StudyId
 | |
|           seriesInfo.StudyCode = study.StudyCode
 | |
|           seriesInfo.Modalities = study.Modalities
 | |
|           seriesInfo.SeriesCount = study.SeriesCount
 | |
|           seriesInfo.InstanceCount = study.InstanceCount
 | |
|           seriesInfo.InstanceCount = study.InstanceCount
 | |
|           seriesInfo.IsDicom = study.IsDicom
 | |
|           seriesInfo.PreviewImageCount = 0
 | |
|           seriesInfo.IsCriticalSequence = study.IsCriticalSequence
 | |
|           var seriesList = []
 | |
|           study.SeriesList.forEach((series, index) => {
 | |
|             const imageIds = []
 | |
| 
 | |
|             series.InstancePathList.forEach((path) => {
 | |
|               imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? process.env.VUE_APP_DICOM_PATH : process.env.VUE_APP_DICOM_USA_PATH}${path}`)
 | |
|             })
 | |
|             seriesList.push({
 | |
|               isDicom: study.IsDicom,
 | |
|               imageIds: imageIds,
 | |
|               instanceList: series.InstanceList,
 | |
|               seriesId: series.Id,
 | |
|               imageIdIndex: 0,
 | |
|               seriesUid: series.SeriesInstanceUid,
 | |
|               seriesNumber: series.SeriesNumber,
 | |
|               sliceThickness: series.SliceThickness,
 | |
|               modality: series.Modality,
 | |
|               description: series.Description,
 | |
|               previewImageUrl: study.IsDicom ? `/api/series/preview/${series.Id}` : `/api/Common/LocalFilePreview?relativePath=${series.NoneDicomFileFirstFile}`,
 | |
|               instanceCount: series.InstanceCount,
 | |
|               prefetchInstanceCount: series.InstanceCount,
 | |
|               loadStatus: true,
 | |
|               imageloadedArr: series.InstanceList,
 | |
|               studyId: study.StudyId,
 | |
|               studyIndex: 0,
 | |
|               seriesIndex: index,
 | |
|               taskBlindName: obj.taskBlindName,
 | |
|               visitTaskId: obj.visitTaskId,
 | |
|               readingTaskState: state.visitTaskList[index].ReadingTaskState,
 | |
|               isBaseLineTask: state.visitTaskList[index].IsBaseLineTask,
 | |
|               isCurrentTask: state.visitTaskList[index].IsCurrentTask,
 | |
|               isLoading: false,
 | |
|               isBeMark: series.IsBeMark
 | |
|             })
 | |
|           })
 | |
|           seriesInfo.SeriesList = seriesList
 | |
|         }
 | |
|         var studyList = state.visitTaskList[idx].StudyList
 | |
|         studyList.unshift(seriesInfo)
 | |
|         studyList.forEach((study, sIdx) => {
 | |
|           study.SeriesList.forEach(series => {
 | |
|             series.studyIndex = sIdx
 | |
|           })
 | |
|         })
 | |
|         state.visitTaskList[idx].StudyList = studyList
 | |
|         resolve(seriesInfo)
 | |
|       }).catch(() => { resolve() })
 | |
|     })
 | |
|   },
 | |
|   getNextVisitTask({ state }, obj) {
 | |
|     return new Promise(resolve => {
 | |
|       getRelatedVisitTask({ visitTaskId: obj.visitTaskId }).then(res => {
 | |
|         state.visitTaskList.forEach(item => {
 | |
|           item.ReadingTaskState = 2
 | |
|           item.IsCurrentTask = false
 | |
|         })
 | |
|         var idx = res.Result.findIndex(item => item.IsCurrentTask === true)
 | |
|         if (idx > -1) {
 | |
|           var obj = res.Result[idx]
 | |
|           obj.questionsInit = false
 | |
|           obj.readingQuestionsInit = false
 | |
|           obj.measureDataInit = false
 | |
|           obj.IsInit = false
 | |
|           state.visitTaskList.push(obj)
 | |
|         }
 | |
| 
 | |
|         sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
 | |
|         resolve()
 | |
|       }).catch(() => { resolve() })
 | |
|     })
 | |
|   },
 | |
|   setVisitTaskReadingTaskState({ state }, obj) {
 | |
|     return new Promise(resolve => {
 | |
|       var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
 | |
|       if (index > -1) {
 | |
|         state.visitTaskList[index].ReadingTaskState = obj.readingTaskState
 | |
|         state.visitTaskList[index].StudyList.forEach(study => {
 | |
|           study.SeriesList.forEach(series => {
 | |
|             series.readingTaskState = obj.readingTaskState
 | |
|           })
 | |
|         })
 | |
|       }
 | |
|       sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
 | |
|       resolve()
 | |
|     })
 | |
|   },
 | |
| 
 | |
|   getDicomReadingQuestionAnswer({ state }, obj) {
 | |
|     return new Promise(resolve => {
 | |
|       var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
 | |
|       if (state.visitTaskList[index].questionsInit) {
 | |
|         resolve()
 | |
|       } else {
 | |
|         var params = {
 | |
|           trialId: obj.trialId,
 | |
|           visitTaskId: obj.visitTaskId
 | |
|         }
 | |
|         getDicomReadingQuestionAnswer(params).then(res => {
 | |
|           state.visitTaskList[index].Questions = res.Result
 | |
|           state.visitTaskList[index].questionsInit = true
 | |
|           sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
 | |
|           resolve()
 | |
|         }).catch(() => { resolve() })
 | |
|       }
 | |
|     })
 | |
|   },
 | |
|   refreshDicomReadingQuestionAnswer({ state }, obj) {
 | |
|     return new Promise(resolve => {
 | |
|       var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
 | |
| 
 | |
|       var params = {
 | |
|         trialId: obj.trialId,
 | |
|         visitTaskId: obj.visitTaskId
 | |
|       }
 | |
|       getDicomReadingQuestionAnswer(params).then(res => {
 | |
|         state.visitTaskList[index].Questions = res.Result
 | |
|         state.visitTaskList[index].questionsInit = true
 | |
|         sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
 | |
|         resolve()
 | |
|       }).catch(() => { resolve() })
 | |
|     })
 | |
|   },
 | |
|   getReadingQuestionAndAnswer({ state }, obj) {
 | |
|     return new Promise(resolve => {
 | |
|       var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
 | |
|       if (state.visitTaskList[index].readingQuestionsInit) {
 | |
|         resolve()
 | |
|       } else {
 | |
|         var params = {
 | |
|           trialId: obj.trialId,
 | |
|           visitTaskId: obj.visitTaskId
 | |
|         }
 | |
|         getReadingQuestionAndAnswer(params).then(res => {
 | |
|           var list = getQuestions(res.Result.SinglePage)
 | |
|           state.visitTaskList[index].ReadingQuestions = list
 | |
|           state.visitTaskList[index].readingQuestionsInit = true
 | |
|           sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
 | |
|           resolve()
 | |
|         }).catch(() => { resolve() })
 | |
|       }
 | |
|     })
 | |
|   },
 | |
|   refreshReadingQuestionAndAnswer({ state }, obj) {
 | |
|     return new Promise(resolve => {
 | |
|       var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
 | |
|       var params = {
 | |
|         trialId: obj.trialId,
 | |
|         visitTaskId: obj.visitTaskId
 | |
|       }
 | |
|       getReadingQuestionAndAnswer(params).then(res => {
 | |
|         var list = getQuestions(res.Result.SinglePage)
 | |
|         state.visitTaskList[index].ReadingQuestions = list
 | |
|         state.visitTaskList[index].readingQuestionsInit = true
 | |
|         sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
 | |
|         resolve()
 | |
|       }).catch(() => { resolve() })
 | |
|     })
 | |
|   },
 | |
|   setReadingQuestionAndAnswer({ state }, obj) {
 | |
|     return new Promise(resolve => {
 | |
|       var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
 | |
|       if (index > -1) {
 | |
|         state.visitTaskList[index].ReadingQuestions = obj.questions
 | |
|       }
 | |
|       sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
 | |
|       resolve()
 | |
|     })
 | |
|   },
 | |
|   addReadingQuestionAndAnswer({ state }, obj) {
 | |
|     return new Promise(resolve => {
 | |
|       var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
 | |
|       if (index > -1) {
 | |
|         var questions = state.visitTaskList[index].ReadingQuestions
 | |
|         questions = findQuestionAndAddLesion(questions, obj)
 | |
|         state.visitTaskList[index].ReadingQuestions = questions
 | |
|       }
 | |
|       sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
 | |
|       resolve()
 | |
|     })
 | |
|   },
 | |
|   updateReadingQuesstionAndAnswer({ state }, obj) {
 | |
|     return new Promise(resolve => {
 | |
|       var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
 | |
|       if (index > -1) {
 | |
|         var questions = state.visitTaskList[index].ReadingQuestions
 | |
|         questions = findQuestionAndUpdateLesion(questions, obj)
 | |
|         state.visitTaskList[index].ReadingQuestions = questions
 | |
|       }
 | |
|       sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
 | |
|       resolve()
 | |
|     })
 | |
|   },
 | |
|   removeReadingQuestionAndAnswer({ state }, obj) {
 | |
|     return new Promise(resolve => {
 | |
|       var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
 | |
|       if (index > -1) {
 | |
|         var questions = state.visitTaskList[index].ReadingQuestions
 | |
|         questions = findQuestionAndRemoveLesion(questions, obj)
 | |
|         state.visitTaskList[index].ReadingQuestions = questions
 | |
|       }
 | |
|       sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
 | |
|       resolve()
 | |
|     })
 | |
|   },
 | |
| 
 | |
|   getMeasuredData({ state }, visitTaskId) {
 | |
|     return new Promise(resolve => {
 | |
|       var index = state.visitTaskList.findIndex(i => i.VisitTaskId === visitTaskId)
 | |
|       if (state.visitTaskList[index].measureDataInit) {
 | |
|         resolve()
 | |
|       } else {
 | |
|         getTableAnswerRowInfoList(visitTaskId).then(res => {
 | |
|           var arr = []
 | |
|           res.Result.forEach(el => {
 | |
|             if (el.MeasureData) {
 | |
|               el.MeasureData = JSON.parse(el.MeasureData)
 | |
| 
 | |
|               el.MeasureData.data.remark = el.OrderMarkName
 | |
|               arr.push(el)
 | |
|             }
 | |
|           })
 | |
|           state.visitTaskList[index].MeasureData = arr
 | |
|           state.visitTaskList[index].measureDataInit = true
 | |
|           sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
 | |
|           resolve()
 | |
|         }).catch(() => { resolve() })
 | |
|       }
 | |
|     })
 | |
|   },
 | |
|   refreshMeasuredData({ state }, visitTaskId) {
 | |
|     return new Promise(resolve => {
 | |
|       var index = state.visitTaskList.findIndex(i => i.VisitTaskId === visitTaskId)
 | |
| 
 | |
|       getTableAnswerRowInfoList(visitTaskId).then(res => {
 | |
|         var arr = []
 | |
|         res.Result.forEach(el => {
 | |
|           if (el.MeasureData) {
 | |
|             el.MeasureData = JSON.parse(el.MeasureData)
 | |
| 
 | |
|             el.MeasureData.data.remark = el.OrderMarkName
 | |
|             arr.push(el)
 | |
|           }
 | |
|         })
 | |
|         state.visitTaskList[index].MeasureData = arr
 | |
|         state.visitTaskList[index].measureDataInit = true
 | |
|         sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
 | |
|         resolve()
 | |
|       }).catch(() => { resolve() })
 | |
|     })
 | |
|   },
 | |
|   getNoneDicomMeasuredData({ state }, visitTaskId) {
 | |
|     return new Promise(resolve => {
 | |
|       var index = state.visitTaskList.findIndex(i => i.VisitTaskId === visitTaskId)
 | |
|       var measureData = state.visitTaskList[index].MeasureData
 | |
|       var noneDicomMeasureData = measureData.filter(item => !item.IsDicomReading)
 | |
|       resolve(noneDicomMeasureData)
 | |
|     })
 | |
|   },
 | |
|   addMeasuredData({ state }, obj) {
 | |
|     return new Promise(resolve => {
 | |
|       var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
 | |
|       var measureData = state.visitTaskList[index].MeasureData
 | |
|       // var idx = measureData.findIndex(item => item.MeasureData.uuid === obj.data.MeasureData.data.uuid)
 | |
|       var idx = measureData.findIndex(item => item.QuestionId === obj.data.QuestionId && item.RowIndex === obj.data.RowIndex)
 | |
|       if (idx > -1) {
 | |
|         state.visitTaskList[index].MeasureData[idx].MeasureData = obj.data.MeasureData
 | |
|         console.log('更新标记成功', idx)
 | |
|       } else {
 | |
|         state.visitTaskList[index].MeasureData.push(obj.data)
 | |
|         console.log('新增标记成功')
 | |
|       }
 | |
|       sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
 | |
|       resolve()
 | |
|     })
 | |
|   },
 | |
|   removeMeasuredData({ state }, obj) {
 | |
|     return new Promise(resolve => {
 | |
|       var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
 | |
|       var measureData = state.visitTaskList[index].MeasureData
 | |
| 
 | |
|       // var uuid = obj.measureData.data.uuid
 | |
|       // var idx = measureData.findIndex(item => item.MeasureData && item.MeasureData.data && item.MeasureData.data.uuid === uuid)
 | |
|       var idx = measureData.findIndex(item => item.QuestionId === obj.questionId && item.RowIndex === obj.rowIndex)
 | |
|       if (idx > -1) {
 | |
|         measureData.splice(idx, 1)
 | |
| 
 | |
|         state.visitTaskList[index].MeasureData = measureData
 | |
|         console.log('移除标记成功', idx)
 | |
|       }
 | |
|       sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
 | |
|       resolve()
 | |
|     })
 | |
|   },
 | |
|   updateMeasureDataStatus({ state }, obj) {
 | |
|     return new Promise(resolve => {
 | |
|       var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
 | |
|       var measureData = state.visitTaskList[index].MeasureData
 | |
|       var idx = measureData.findIndex(item => item.QuestionId === obj.questionId && item.RowIndex === obj.rowIndex)
 | |
|       if (idx > -1) {
 | |
|         measureData[idx].MeasureData.data.status = obj.status
 | |
|         state.visitTaskList[index].MeasureData = measureData
 | |
|       }
 | |
|       console.log(state.visitTaskList[index].MeasureData)
 | |
|       sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
 | |
|       resolve()
 | |
|     })
 | |
|   },
 | |
|   getStudyInfo({ state }, obj) {
 | |
|     return new Promise(resolve => {
 | |
|       var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
 | |
|       if (state.visitTaskList[index].studyListInit) {
 | |
|         resolve()
 | |
|       } else {
 | |
|         var studyList = []
 | |
|         // getVisitStudyList
 | |
|         // getReadingVisitStudyList
 | |
|         getReadingVisitStudyList(obj.trialId, obj.subjectVisitId, obj.visitTaskId).then(res => {
 | |
|           res.Result.forEach((study, studyIndex) => {
 | |
|             const data = {}
 | |
|             data.StudyId = study.StudyId
 | |
|             data.StudyCode = study.StudyCode
 | |
|             data.Modalities = study.Modalities
 | |
|             data.SeriesCount = study.SeriesCount
 | |
|             data.InstanceCount = study.InstanceCount
 | |
|             data.InstanceCount = study.InstanceCount
 | |
|             data.IsDicom = study.IsDicom
 | |
|             data.PreviewImageCount = 0
 | |
|             data.IsCriticalSequence = study.IsCriticalSequence
 | |
|             var seriesList = []
 | |
|             study.SeriesList.forEach((series, seriesIndex) => {
 | |
|               const imageIds = []
 | |
|               try {
 | |
|                 // if (~window.location.href.indexOf('3c210000-3e2c-0016-4247-08dabf28e96b')) {
 | |
|                 series.InstancePathList.forEach((path) => {
 | |
|                   // var path = id.split('/')[id.split('/').length - 1]
 | |
|                   imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? process.env.VUE_APP_DICOM_PATH : process.env.VUE_APP_DICOM_USA_PATH}${path}`)
 | |
|                 })
 | |
|                 // } else {
 | |
|                 //   series.InstanceList.forEach((id) => {
 | |
|                 //     imageIds.push(`wadouri:${process.env.VUE_APP_DICOM_PATH}/instance/content/${id}`)
 | |
|                 //   })
 | |
|                 // }
 | |
|               } catch (e) {
 | |
|                 console.log(e)
 | |
|               }
 | |
|               seriesList.push({
 | |
|                 isDicom: study.IsDicom,
 | |
|                 imageIds: imageIds,
 | |
|                 instanceList: series.InstanceList,
 | |
|                 seriesId: series.Id,
 | |
|                 imageIdIndex: 0,
 | |
|                 seriesUid: series.SeriesInstanceUid,
 | |
|                 seriesNumber: series.SeriesNumber,
 | |
|                 sliceThickness: series.SliceThickness,
 | |
|                 modality: series.Modality,
 | |
|                 description: series.Description,
 | |
|                 previewImageUrl: study.IsDicom ? `/api/series/preview/${series.Id}` : `/api/Common/LocalFilePreview?relativePath=${series.NoneDicomFileFirstFile}`,
 | |
|                 instanceCount: series.InstanceCount,
 | |
|                 prefetchInstanceCount: 0,
 | |
|                 loadStatus: false,
 | |
|                 imageloadedArr: [],
 | |
|                 studyId: study.StudyId,
 | |
|                 studyIndex: studyIndex,
 | |
|                 seriesIndex: seriesIndex,
 | |
|                 taskBlindName: obj.taskBlindName,
 | |
|                 visitTaskId: obj.visitTaskId,
 | |
|                 readingTaskState: state.visitTaskList[index].ReadingTaskState,
 | |
|                 isBaseLineTask: state.visitTaskList[index].IsBaseLineTask,
 | |
|                 isCurrentTask: state.visitTaskList[index].IsCurrentTask,
 | |
|                 isLoading: false,
 | |
|                 isBeMark: series.IsBeMark
 | |
|               })
 | |
|             })
 | |
|             data.SeriesList = seriesList
 | |
|             studyList.push(data)
 | |
|           })
 | |
|           state.visitTaskList[index].StudyList = studyList
 | |
|           state.visitTaskList[index].studyListInit = true
 | |
|           sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
 | |
|           resolve()
 | |
|         }).catch(() => { resolve() })
 | |
|       }
 | |
|     })
 | |
|   },
 | |
| 
 | |
|   updateStudyList({ state }, obj) {
 | |
|     return new Promise(resolve => {
 | |
|       var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
 | |
|       var studyList = state.visitTaskList[index].StudyList
 | |
|       for (var i = 0; i < studyList.length; i++) {
 | |
|         for (var j = 0; j < studyList[i].SeriesList.length; j++) {
 | |
|           if (studyList[i].SeriesList[j].seriesUid === obj.seriesUid || !studyList[i].SeriesList[j].seriesUid) {
 | |
|             var idx = studyList[i].SeriesList[j].imageIds.findIndex(image => image === obj.imageId)
 | |
|             if (idx > -1 && studyList[i].SeriesList[j].imageloadedArr.indexOf(obj.imageId) < 0) {
 | |
|               ++studyList[i].SeriesList[j].prefetchInstanceCount
 | |
|               studyList[i].SeriesList[j].imageloadedArr.push(obj.imageId)
 | |
|               if (studyList[i].SeriesList[j].prefetchInstanceCount >= studyList[i].SeriesList[j].instanceCount) {
 | |
|                 studyList[i].SeriesList[j].prefetchInstanceCount = studyList[i].SeriesList[j].instanceCount
 | |
|                 // 设置当前序列状态为已下载完成
 | |
|                 studyList[i].SeriesList[j].loadStatus = true
 | |
|               }
 | |
|               break
 | |
|             }
 | |
|           }
 | |
|         }
 | |
|       }
 | |
|       state.visitTaskList[index].StudyList = studyList
 | |
|       sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
 | |
|       resolve()
 | |
|     })
 | |
|   },
 | |
|   setStatus({ state }, obj) {
 | |
|     var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
 | |
|     state.visitTaskList[index].IsInit = true
 | |
|     sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
 | |
|   },
 | |
|   setSeriesStack({ state }, seriesStack) {
 | |
|     state.seriesStack = seriesStack
 | |
|   }
 | |
|   // getSeriesShowInCanvas({ state }, activeSeries) {
 | |
|   //   if (activeSeries) {
 | |
|   //     // 存在激活的series
 | |
| 
 | |
|   //   } else {
 | |
|   //     // 初始化
 | |
|   //     var idx = state.visitTaskList.findIndex(i => i.IsCurrentTask)
 | |
|   //     if (idx > -1 && state.activeHangingAgreement) {
 | |
|   //       if (state.activeHangingAgreement.name === 'A') {
 | |
|   //         const serires = getFirstSeries(state.visitTaskList[idx].StudyList)
 | |
|   //         state.seriesStack = [serires]
 | |
|   //       } else if (state.activeHangingAgreement.name === 'A|A') {
 | |
|   //         const serires = getFirstSeries(state.visitTaskList[idx].StudyList)
 | |
|   //         state.seriesStack = [serires, serires]
 | |
|   //       } else if (state.activeHangingAgreement.name === 'A|B') {
 | |
|   //         // 获取上一个任务的第一个序列
 | |
|   //         var visitTaskNum = state.visitTaskList[idx].VisitTaskNum
 | |
|   //         if (visitTaskNum > 0) {
 | |
|   //           var prevIdx = state.visitTaskList.findIndex(i => i.VisitTaskNum === visitTaskNum - 1)
 | |
|   //           const prevSerires = getFirstSeries(state.visitTaskList[prevIdx].StudyList)
 | |
|   //           const serires = getFirstSeries(state.visitTaskList[idx].StudyList)
 | |
|   //           state.seriesStack = [serires, prevSerires]
 | |
|   //         } else {
 | |
|   //           const serires = getFirstSeries(state.visitTaskList[idx].StudyList)
 | |
|   //           state.seriesStack = [serires, serires]
 | |
|   //         }
 | |
|   //       }
 | |
|   //     }
 | |
|   //   }
 | |
|   // }
 | |
| }
 | |
| 
 | |
| export default {
 | |
|   namespaced: true,
 | |
|   state,
 | |
|   mutations,
 | |
|   actions
 | |
| }
 | |
| 
 |