From ddd7e4638cc9c74401fdb5040a2b5ec4ced1fb50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=86=8A=E9=A3=9E?= Date: Sun, 4 Feb 2024 18:00:34 +0800 Subject: [PATCH 001/374] 1 --- .../customize/CustomizeQuestionFormItem.vue | 10 +- .../CustomizeQuestionTableFormItem.vue | 110 +++++++++++++++++- .../reading-unit/components/QuestionsForm.vue | 13 ++- .../reading-unit/components/TableQsForm.vue | 64 +++++++--- 4 files changed, 172 insertions(+), 25 deletions(-) diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionFormItem.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionFormItem.vue index 2cf652e5..895b68fc 100644 --- a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionFormItem.vue +++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionFormItem.vue @@ -288,7 +288,7 @@ :visit-task-id="visitTaskId" :criterion-id="criterionId" :type="addOrEdit.type" - :CalculationList="CalculationList" + :CalculationList="CalculationTabelList" @formItemTableNumberChange="formItemTableNumberChange" @setFormItemData="setFormItemData" @resetFormItemData="resetFormItemData" @@ -368,7 +368,8 @@ export default { loading: false, RowIndex: 0, RowId: null, - digitPlaces: 0 + digitPlaces: 0, + CalculationTabelList: [] } }, watch: { @@ -411,7 +412,7 @@ export default { } } if (this.question.Type === 'table') { - // this.getQuestionCalculateRelation() + this.getQuestionCalculateRelation() if (this.questionForm[this.question.Id]) { this.QuestionsForm = {} this.question.TableQuestions.Questions.forEach(v => { @@ -511,10 +512,9 @@ export default { }, getQuestionCalculateRelation() { getQuestionCalculateRelation({ - TrialReadingCriterionId: this.criterionId, ReadingQuestionId: this.question.Id }).then(res => { - this.CalculationList = res.Result + this.CalculationTabelList = res.Result }) }, save() { diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionTableFormItem.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionTableFormItem.vue index 7d1bbbb0..ca9732b9 100644 --- a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionTableFormItem.vue +++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionTableFormItem.vue @@ -211,6 +211,12 @@ export default { type: String, required: true }, + CalculationList: { + type: Array, + default() { + return [] + } + }, readingTaskState: { type: Number, required: true @@ -248,14 +254,27 @@ export default { digitPlaces: 0 } }, + // watch: { + // questionForm: { + // deep: true, + // immediate: true, + // handler(v) { + // + // } + // } + // }, watch: { questionForm: { deep: true, immediate: true, - handler(v) { - + handler(v, oldv) { + try { + if (!v[this.question.Id] || !oldv[this.question.Id]) return + } catch (e) { + } + this.formItemNumberChange(this.question.Id, false) } - } + }, }, mounted() { this.digitPlaces = localStorage.getItem('digitPlaces') ? parseInt(localStorage.getItem('digitPlaces')) : 0 @@ -323,8 +342,91 @@ export default { } else { } }, + logic(rules, num = 0) { + try { + if (rules.CalculateQuestionList.length === 0) { + return false + } + var count = 0 + var maxList = [], minList = [] + rules.CalculateQuestionList.forEach((o, i) => { + if (rules.CustomCalculateMark > 4) { + if (i !== 0) { + switch (rules.CustomCalculateMark) { + case 7: + count += parseFloat(this.questionForm[o.TableQuestionId]) + if (i === rules.CalculateQuestionList.length - 1) { + num = count / rules.CalculateQuestionList.length + } + break; + case 8: + maxList.push(this.questionForm[o.TableQuestionId]) + if (i === rules.CalculateQuestionList.length - 1) { + num = Math.max(...maxList) + } + break; + case 9: + minList.push(this.questionForm[o.TableQuestionId]) + if (i === rules.CalculateQuestionList.length - 1) { + num = Math.min(...minList) + } + break; + } + } else { + maxList.push(this.questionForm[o.TableQuestionId]) + minList.push(this.questionForm[o.TableQuestionId]) + count = parseFloat(this.questionForm[o.TableQuestionId]) + num = parseFloat(this.questionForm[o.TableQuestionId]) + } + } else { + switch (rules.CustomCalculateMark) { + case 1: + num += parseFloat(this.questionForm[o.TableQuestionId]) + break; + case 2: + num -= parseFloat(this.questionForm[o.TableQuestionId]) + break; + case 3: + num *= parseFloat(this.questionForm[o.TableQuestionId]) + break; + case 4: + if (parseFloat(this.questionForm[o.TableQuestionId]) === 0) { + num = 0 + } else { + num /= parseFloat(this.questionForm[o.TableQuestionId]) + } + break; + } + } + }) + } catch (e) { + console.log(e) + } + var digitPlaces = parseInt(localStorage.getItem('digitPlaces')) + if (rules.ValueType === 2) { + num = num * 100 + } + return num.toFixed(digitPlaces) + }, formItemNumberChange(v, question) { - this.$emit('formItemTableNumberChange', v, question) + console.log(this.CalculationList) + this.CalculationList.forEach((v, i) => { + console.log('v', v) + var find = v.CalculateQuestionList.filter(o => { + return o.QuestionId === question.Id + }) + console.log('find', find) + // find的自动计算值number + if (find) { + var num = this.logic(v) + console.log(num) + if (num !== false) { + this.$set(this.questionForm, v.QuestionId, num) + // this.$emit('setFormItemData', { key: v.QuestionId, val: num }) + } + } + }) + // this.$emit('formItemTableNumberChange', v, question) }, resetChild(obj) { obj.forEach(i => { diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsForm.vue b/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsForm.vue index a6fd45bf..977bf2f0 100644 --- a/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsForm.vue +++ b/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsForm.vue @@ -447,8 +447,8 @@ + + + + + + + + {{ item.label }} + + + - - {{ item.label }} - +
+ + {{ item.label }} + +
+
+ + {{ item.label }} + +
{ return item.QuestionId === this.form.ParentId From 2a6d0faf115bd6a16c0120e595828f7db448cd38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=86=8A=E9=A3=9E?= Date: Mon, 5 Feb 2024 09:25:14 +0800 Subject: [PATCH 002/374] 1 --- .../CustomizeQuestionTableFormItem.vue | 38 ++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionTableFormItem.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionTableFormItem.vue index ca9732b9..91316b09 100644 --- a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionTableFormItem.vue +++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionTableFormItem.vue @@ -379,23 +379,27 @@ export default { num = parseFloat(this.questionForm[o.TableQuestionId]) } } else { - switch (rules.CustomCalculateMark) { - case 1: - num += parseFloat(this.questionForm[o.TableQuestionId]) - break; - case 2: - num -= parseFloat(this.questionForm[o.TableQuestionId]) - break; - case 3: - num *= parseFloat(this.questionForm[o.TableQuestionId]) - break; - case 4: - if (parseFloat(this.questionForm[o.TableQuestionId]) === 0) { - num = 0 - } else { - num /= parseFloat(this.questionForm[o.TableQuestionId]) - } - break; + if (i !== 0) { + switch (rules.CustomCalculateMark) { + case 1: + num += parseFloat(this.questionForm[o.TableQuestionId]) + break; + case 2: + num -= parseFloat(this.questionForm[o.TableQuestionId]) + break; + case 3: + num *= parseFloat(this.questionForm[o.TableQuestionId]) + break; + case 4: + if (parseFloat(this.questionForm[o.TableQuestionId]) === 0) { + num = 0 + } else { + num /= parseFloat(this.questionForm[o.TableQuestionId]) + } + break; + } + } else { + num = parseFloat(this.questionForm[o.TableQuestionId]) } } }) From f09bf427e5e0d7b91583630ce81671977a8eedcf Mon Sep 17 00:00:00 2001 From: caiyiling <1321909229@qq.com> Date: Mon, 5 Feb 2024 09:43:42 +0800 Subject: [PATCH 003/374] =?UTF-8?q?=E4=B8=B4=E5=BA=8A=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../trials-panel/reading/dicoms/components/DicomCanvas.vue | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue b/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue index 298bef3d..8e1a48f3 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue @@ -14,7 +14,7 @@
- +
@@ -222,7 +222,8 @@ export default { visitTaskId: '', taskBlindName: '', frame: null, - imageRendered: false + imageRendered: false, + isExistsClinicalData:false // preventCache: true }, dicomInfo: { @@ -1058,6 +1059,7 @@ export default { this.stack.seriesIndex = dicomSeries.seriesIndex this.stack.sliceThickness = dicomSeries.sliceThickness this.stack.instanceCount = dicomSeries.instanceCount + this.stack.isExistsClinicalData = dicomSeries.isExistsClinicalData // this.measuredData = dicomSeries.measuredData var idx = this.visitTaskList.findIndex(i => i.VisitTaskId === dicomSeries.visitTaskId) this.stack.visitTaskNum = this.visitTaskList[idx].VisitTaskNum From 6a8308fe5fee6bfec36a4539df37e6dd5e9176a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=86=8A=E9=A3=9E?= Date: Mon, 5 Feb 2024 09:51:03 +0800 Subject: [PATCH 004/374] 1 --- .../reading/dicoms/customize/CustomizeQuestionFormItem.vue | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionFormItem.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionFormItem.vue index 895b68fc..e1c7c3fb 100644 --- a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionFormItem.vue +++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionFormItem.vue @@ -18,6 +18,11 @@ + + + Date: Tue, 20 Feb 2024 10:06:30 +0800 Subject: [PATCH 005/374] =?UTF-8?q?lugano=E7=97=85=E7=81=B6=E5=88=86?= =?UTF-8?q?=E8=A3=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dicoms/components/Lugano/QuestionForm.vue | 65 +++++++++++++++---- .../dicoms/components/Lugano/QuestionList.vue | 64 ++++++++++++++++-- 2 files changed, 111 insertions(+), 18 deletions(-) diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Lugano/QuestionForm.vue b/src/views/trials/trials-panel/reading/dicoms/components/Lugano/QuestionForm.vue index 229eb3f8..5928f3e0 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/Lugano/QuestionForm.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/Lugano/QuestionForm.vue @@ -340,7 +340,8 @@ export default { pictureBaseStr: '', currentMarkTool: '', digitPlaces: 2, - stateDisabled: false + stateDisabled: false, + splitLesionTargetPDD: null } }, mounted() { @@ -363,10 +364,9 @@ export default { }) }, previewImage() { - console.log(this.$refs.viewer[0]) this.$refs.viewer[0].$viewer.show() }, - async initForm() { + async initForm(params) { const loading = this.$loading({ fullscreen: true }) this.questions.forEach(item => { var val = this.answers[item.Id] @@ -448,6 +448,14 @@ export default { const lesionState = !isNaN(parseInt(this.getQuestionVal(7))) ? parseInt(this.getQuestionVal(7)) : '' this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, lesionShort, lesionState, saveTypeEnum: this.questionForm.saveTypeEnum, lesionLength, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: this.questionForm }) } + if (this.lesionType === 0 && params && params.splitLesionTargetPPD) { + // ppd + + var ppd = this.getQuestionVal(12) + ppd = isNaN(parseFloat(ppd)) ? 0 : parseFloat(ppd) + + this.splitLesionTargetPDD = ppd + params.splitLesionTargetPPD + } // 如果当前病灶状态为“疾病进展”,且满足疾病进展的条件,则状态不允许更改 var state = this.getQuestionVal(7)// 长径 @@ -458,9 +466,15 @@ export default { pddIncrease = isNaN(parseFloat(pddIncrease)) ? 0 : parseFloat(pddIncrease) var ldiIncrease = this.getQuestionVal(18)// 相比PPD最低点LDi增加值 ldiIncrease = isNaN(parseFloat(ldiIncrease)) ? 0 : parseFloat(ldiIncrease) - var sdiIncrease = this.getQuestionVal(19)// 相比PPD最低点LDi增加值 + var sdiIncrease = this.getQuestionVal(19)// 相比PPD最低点SDi增加值 sdiIncrease = isNaN(parseFloat(sdiIncrease)) ? 0 : parseFloat(sdiIncrease) + if (!this.isBaseLineTask && state === 4 && this.lesionType === 0 && ldi && pddIncrease && ldiIncrease && sdiIncrease) { + if (this.splitLesionTargetPDD) { + var minPPD = this.getQuestionVal(13) + minPPD = parseFloat(minPPD) + pddIncrease = ((((this.splitLesionTargetPDD - minPPD) / minPPD)) * 100).toFixed(this.digitPlaces) + } /** 疾病进展 * 15mm<当前靶病灶LDi≤20mm * 相比最低点PPD增加百分比 ≥50% @@ -805,6 +819,9 @@ export default { this.$set(this.questionForm, stateId, 0) } } + } else if (this.isCurrentTaskAdd === 'True' && !lesionState && measureData.type === 'Bidirectional') { + const stateId = this.getQuestionId(7) + this.$set(this.questionForm, stateId, 0) } if (this.lesionType === 0) { this.calculatePPD() @@ -941,34 +958,56 @@ export default { } else { this.$set(this.questionForm, sdiIncreaseObj.Id, 'NA') } - + var pddIncreaseNum = null + if (this.splitLesionTargetPDD) { + pddIncreaseNum = ((((this.splitLesionTargetPDD - minPPD) / minPPD)) * 100).toFixed(this.digitPlaces) + } else { + pddIncreaseNum = ((((ppd - minPPD) / minPPD)) * 100).toFixed(this.digitPlaces) + } /** 疾病进展* **/ - if (!this.isBaseLineTask && ldi && pddIncrease && ldiIncrease && sdiIncrease) { + if (!this.isBaseLineTask && ldi && pddIncreaseNum && ldiIncrease && sdiIncrease && this.lesionType === 0 && this.isCurrentTaskAdd === 'False') { /** 疾病进展 * 15mm<当前靶病灶LDi≤20mm * 相比最低点PPD增加百分比 ≥50% * 相比PPD最低点LDi增加值 ≥5 mm 或者 相比PPD最低点SDi增加值≥5 mm **/ - if ((ldi > 15 && ldi <= 20) && (pddIncrease >= 50) && (ldiIncrease >= 5 || sdiIncrease >= 5)) { + if ((ldi > 15 && ldi <= 20) && (pddIncreaseNum >= 50) && (ldiIncrease >= 5 || sdiIncrease >= 5)) { const stateId = this.getQuestionId(7) - console.log(stateId) this.$set(this.questionForm, stateId, 4) this.stateDisabled = true - } else if ((ldi > 20) && (pddIncrease >= 50) && (ldiIncrease >= 10 || sdiIncrease >= 10)) { + } else if ((ldi > 20) && (pddIncreaseNum >= 50) && (ldiIncrease >= 10 || sdiIncrease >= 10)) { /** 疾病进展 * 当前靶病灶LDi>20 mm * 相比最低点PPD增加百分比 ≥50% * 相比PPD最低点LDi增加值 ≥10 mm 或者 相比PPD最低点SDi增加值Sdi ≥10 mm **/ const stateId = this.getQuestionId(7) - console.log(stateId) this.$set(this.questionForm, stateId, 4) this.stateDisabled = true } else { + // 不符合疾病进展是否需要清空修改前疾病进展的状态 + // const lesionState = !isNaN(parseInt(this.getQuestionVal(7))) ? parseInt(this.getQuestionVal(7)) : '' + // if (lesionState === 4) { + // const stateId = this.getQuestionId(7) + // this.$set(this.questionForm, stateId, null) + // } this.stateDisabled = false } + } else { + // 不符合疾病进展是否需要清空修改前疾病进展的状态 + // const lesionState = !isNaN(parseInt(this.getQuestionVal(7))) ? parseInt(this.getQuestionVal(7)) : '' + // if (lesionState === 4) { + // const stateId = this.getQuestionId(7) + // this.$set(this.questionForm, stateId, null) + // } + this.stateDisabled = false } }, + setSplitLesionTargetPPD(v) { + var ppd = this.getQuestionVal(12) + ppd = isNaN(parseFloat(ppd)) ? 0 : parseFloat(ppd) + this.splitLesionTargetPDD = ppd + v + }, returnFloat(num) { if (num) return var value = Math.round(parseFloat(num) * 100) / 100 @@ -1622,12 +1661,12 @@ export default { submitTableQuestion(params).then(async res => { // 保存成功! this.$message.success(this.$t('common:message:savedSuccessfully')) + this.currentMarkTool = measureData ? measureData.type : '' // saveTypeEnum 0:未保存过(新建病灶);1:已保存,信息不完整(随访初始化病灶/分裂病灶,通过状态判断);2:已保存,信息完整 this.$set(this.questionForm, 'saveTypeEnum', 2) this.originalQuestionForm = { ...this.questionForm } - loading.close() var isLymphLesion = this.getQuestionVal(2) isLymphLesion = isLymphLesion ? parseInt(isLymphLesion) : null var lesionOrgan = this.getQuestionVal(6) @@ -1642,6 +1681,10 @@ export default { DicomEvent.$emit('readingPageUpdate', {}) DicomEvent.$emit('getReportInfo', true) DicomEvent.$emit('setMeasuredToolsPassive') + loading.close() + if (parseInt(this.answers.SplitOrMergeType) === 0) { + this.$emit('getReadingQuestionAndAnswer') + } }).catch(() => { loading.close() }) }) }) diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Lugano/QuestionList.vue b/src/views/trials/trials-panel/reading/dicoms/components/Lugano/QuestionList.vue index 830b94a0..f7d5d3dc 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/Lugano/QuestionList.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/Lugano/QuestionList.vue @@ -87,10 +87,15 @@ -
+
- +
@@ -147,7 +152,7 @@
- + + + + diff --git a/vue.config.js b/vue.config.js index 522793bd..c25c05cb 100644 --- a/vue.config.js +++ b/vue.config.js @@ -63,7 +63,8 @@ module.exports = { // target: 'http://123.56.181.144:8000/api', // 国内测试环境 // target: 'http://123.56.94.154:8079', // 国内测试环境2 // target: 'http://123.56.94.154:7000', // 国内测试环境2 - target: 'http://123.56.94.154:30668', + // target: 'http://123.56.94.154:30668', + target: 'http://123.56.94.154:30000', // target: 'http://123.56.181.144:7000', changeOrigin: true, secure: false, From 95d1207a4552e02f2680896a0211566fc40133b4 Mon Sep 17 00:00:00 2001 From: caiyiling <1321909229@qq.com> Date: Tue, 27 Feb 2024 14:02:54 +0800 Subject: [PATCH 048/374] =?UTF-8?q?lugano=E7=97=85=E7=81=B6=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reading/dicoms/components/Fusion/TableQuestionItem.vue | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestionItem.vue b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestionItem.vue index 68fc9234..cfe8d025 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestionItem.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestionItem.vue @@ -727,12 +727,7 @@ export default { if (!valid) return if (!this.isInsideVolume) { this.$alert('当前标记在图像外,不允许保存!', '提示', { - callback: action => { - this.$message({ - type: 'info', - message: `action: ${action}` - }) - } + callback: action => {} }) return } From 6eb8957d1c5598c4f779d114fbe1c72dc989219d Mon Sep 17 00:00:00 2001 From: caiyiling <1321909229@qq.com> Date: Tue, 27 Feb 2024 14:05:00 +0800 Subject: [PATCH 049/374] =?UTF-8?q?lugano=E7=97=85=E7=81=B6=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reading/dicoms/components/Fusion/TableQuestionItem.vue | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestionItem.vue b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestionItem.vue index cfe8d025..a1841d85 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestionItem.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestionItem.vue @@ -726,7 +726,12 @@ export default { this.$refs.measurementForm.validate(async valid => { if (!valid) return if (!this.isInsideVolume) { - this.$alert('当前标记在图像外,不允许保存!', '提示', { + // this.$alert('当前标记在图像外,不允许保存!', '提示', { + // callback: action => {} + // }) + this.$confirm(this.$t('当前标记在图像外,不允许保存!'), { + type: 'warning', + showCancelButton: false, callback: action => {} }) return From 30c411d03fddaddd18ae9e61e859119ed176b488 Mon Sep 17 00:00:00 2001 From: caiyiling <1321909229@qq.com> Date: Tue, 27 Feb 2024 15:01:59 +0800 Subject: [PATCH 050/374] =?UTF-8?q?lugano=E7=97=85=E7=81=B6=E4=BF=9D?= =?UTF-8?q?=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dicoms/components/Fusion/QuestionItem.vue | 16 +++++++++++++--- .../dicoms/components/Fusion/Questions.vue | 5 +++++ .../components/Fusion/TableQuestionItem.vue | 8 ++++++-- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/QuestionItem.vue b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/QuestionItem.vue index 3374aeb2..0a1ebb29 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/QuestionItem.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/QuestionItem.vue @@ -33,12 +33,12 @@ - {{ $t('trials:lugano:button:addAnnotation') }} + {{ $t('trials:lugano:button:addAnnotation') }} - {{ $t('trials:lugano:button:clearAnnotation') }} + {{ $t('trials:lugano:button:clearAnnotation') }} { if (!valid) return + const loading = this.$loading({ fullscreen: true }) if (!this.isInsideVolume) { // this.$alert('当前标记在图像外,不允许保存!', '提示', { // callback: action => {} // }) + loading.close() this.$confirm(this.$t('当前标记在图像外,不允许保存!'), { type: 'warning', showCancelButton: false, callback: action => {} }) + return } // 消失、无法评估状态的病灶限制不能测量SUV值 var lesionState = this.getQuestionVal(7) if ((lesionState === 2 || lesionState === 3) && this.questionForm.OtherMeasureData) { + loading.close() this.$confirm(this.$t('评估状态为无法评估或消失的病灶不能测量SUV值!'), { type: 'warning', showCancelButton: false, @@ -750,6 +754,7 @@ export default { if (this.questionForm.OtherMeasureData) { var suvmax = this.getQuestionVal(20) if (suvmax === 0) { + loading.close() this.$confirm(this.$t('当前病灶suv测量值为0,不允许保存!'), { type: 'warning', showCancelButton: false, @@ -759,7 +764,6 @@ export default { } } - const loading = this.$loading({ fullscreen: true }) var otherMeasureData = this.questionForm.OtherMeasureData ? Object.assign({}, this.questionForm.OtherMeasureData) : null if (otherMeasureData) { for (const k in otherMeasureData.data.cachedStats) { From 1b905f1f9dbc02b5fe7181b3a1d8d786696dc766 Mon Sep 17 00:00:00 2001 From: caiyiling <1321909229@qq.com> Date: Tue, 27 Feb 2024 15:10:41 +0800 Subject: [PATCH 051/374] 1 --- .../trials-panel/reading/dicoms/components/Fusion/Questions.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/Questions.vue b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/Questions.vue index bad39d51..1b6eabbc 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/Questions.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/Questions.vue @@ -289,7 +289,6 @@ export default { }, removeAnnotation(obj) { - console.log('question_removeAnnotation') const { Id } = obj var idx = this.measurements.findIndex(i => i.QuestionId === Id) if (idx === -1) return From 29e535a10a83b6e2a3c162fe8f9f537dc54823d9 Mon Sep 17 00:00:00 2001 From: caiyiling <1321909229@qq.com> Date: Tue, 27 Feb 2024 15:42:47 +0800 Subject: [PATCH 052/374] =?UTF-8?q?lugano=E7=97=85=E7=81=B6=E4=BF=9D?= =?UTF-8?q?=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reading/dicoms/components/Fusion/TableQuestionItem.vue | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestionItem.vue b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestionItem.vue index 7cb8c264..faeba76e 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestionItem.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestionItem.vue @@ -880,6 +880,7 @@ export default { } var suvMax = this.getQuestionVal(20) this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, suvMax, saveTypeEnum: this.questionForm.saveTypeEnum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: anwsers }) + this.isInsideVolume = true }) .catch(() => {}) }, @@ -915,6 +916,7 @@ export default { } var suvMax = this.getQuestionVal(20) this.$emit('resetQuestions', { isLymphLesion, lesionPart, lesionOrgan, suvMax, saveTypeEnum: this.questionForm.saveTypeEnum, rowIndex: this.rowIndex, questionId: this.parentQsId, anwsers: anwsers }) + this.isInsideVolume = true }, handleDelete() { // 是否确认删除? From d224bf87008a712cf85d6e1c0db21f89ba950414 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=86=8A=E9=A3=9E?= Date: Tue, 27 Feb 2024 16:43:38 +0800 Subject: [PATCH 053/374] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 +- src/api/trials.js | 24 ++ src/const/sign-code.vue | 1 + .../reading-unit/components/QuestionsForm.vue | 2 +- .../setting/reading-unit/index.vue | 58 +++- .../components/clinicalData.vue | 8 + .../components/clinicalDataConfirm.vue | 7 + .../components/clinicalDataPM.vue | 8 + .../components/consistencyCheck.vue | 7 + .../components/imageQualityControl.vue | 7 + .../components/imageQuestion.vue | 7 + .../components/imageReupload.vue | 7 + .../components/imageSubmission.vue | 7 + .../components/imageVerification.vue | 7 + .../components/imagesToRead.vue | 7 + .../components/medicalAudit.vue | 7 + .../components/medicalFeedback.vue | 7 + .../components/qcQuestion.vue | 7 + .../components/rereadApproval.vue | 7 + .../components/reviewerApproval.vue | 7 + .../components/reviewerScreen.vue | 7 + .../components/siteResearch.vue | 269 +++++++++-------- .../components/spmRereadApproval.vue | 7 + src/views/trials/trials-workbench/index.vue | 279 +++++++++--------- 24 files changed, 478 insertions(+), 278 deletions(-) diff --git a/.env.development b/.env.development index d48ca615..0819ca53 100644 --- a/.env.development +++ b/.env.development @@ -27,7 +27,7 @@ VUE_APP_LOGOUT_FOR_PERMISSION = false VUE_APP_LOGOUT_FOR_TIME = 1800 # 是否开启密码正则验证 true:是 false:否 -VUE_APP_PASSWORD_FOR_PERMISSION = true +VUE_APP_PASSWORD_FOR_PERMISSION = false # 密码校验规则 VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!%#*?&\$~])[A-Za-z0-9-~_.@^+\$~!%#*?&]{8,32}$ diff --git a/src/api/trials.js b/src/api/trials.js index c0d188d7..a2850c76 100644 --- a/src/api/trials.js +++ b/src/api/trials.js @@ -1747,6 +1747,22 @@ export function deleteTrialExternalUser(id) { method: 'delete' }) } + +export function getUserTobeDoneRecord() { + return request({ + url: `/PersonalWorkstation/getUserTobeDoneRecord`, + method: 'get' + }) +} + +export function getNeedSignTrialDocTrialIdList() { + return request({ + url: `/PersonalWorkstation/getNeedSignTrialDocTrialIdList`, + method: 'get' + }) +} + + export function getBasicStat() { return request({ url: `/PersonalWorkstation/getBasicStat`, @@ -3534,3 +3550,11 @@ export function mergeLesion(param) { data: param }) } + +export function resetAndAsyncCriterion(param) { + return request({ + url: `/Inspection/ReadingCriterion/ResetAndAsyncCriterion`, + method: 'post', + data: param + }) +} diff --git a/src/const/sign-code.vue b/src/const/sign-code.vue index 4c309847..102ae04e 100644 --- a/src/const/sign-code.vue +++ b/src/const/sign-code.vue @@ -27,6 +27,7 @@ export default ReadingUnitConfirmation: 108, // 医学审核问题确认 MedicalAudit: 215,// 医学审核 HeavyReadingApproval: 216,// 重阅审批 + ResetAndAsyncCriterion: 218, //同步签名 } } diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsForm.vue b/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsForm.vue index 977bf2f0..2de63881 100644 --- a/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsForm.vue +++ b/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsForm.vue @@ -167,7 +167,7 @@ { required: true, message: this.$t('common:ruleMessage:select')} ]" > - + {{ $t('trials:readingUnit:button:sync') }} @@ -84,10 +84,24 @@ + + +
+ {{ $t('common:dialogTitle:sign') }} + {{ `(${$t('common:label:sign')}${ currentUser })` }} +
+ +
- - + + + + diff --git a/src/views/trials/trials-workbench/components/spmRereadApproval.vue b/src/views/trials/trials-workbench/components/spmRereadApproval.vue index d369ead7..76c735b6 100644 --- a/src/views/trials/trials-workbench/components/spmRereadApproval.vue +++ b/src/views/trials/trials-workbench/components/spmRereadApproval.vue @@ -65,6 +65,7 @@ @@ -88,6 +89,12 @@ const searchDataDefault = () => { export default { name: 'RereadApproval', components: { Pagination }, + props: { + trialIdList: { + type: Array, + default() { return [] } + } + }, data() { return { listLoading: false, diff --git a/src/views/trials/trials-workbench/index.vue b/src/views/trials/trials-workbench/index.vue index 9b64e4a5..75533b21 100644 --- a/src/views/trials/trials-workbench/index.vue +++ b/src/views/trials/trials-workbench/index.vue @@ -3,139 +3,135 @@
-
-
- - -
- - - -
- -
- - - -
- -
- - - -
- -
- - - -
- -
- - - -
- - - -
- - - -
- -
- - - -
- - - -
- - - -
- -
- - - -
- -
- - - -
- - -
- - - -
- -
- - - -
- -
- - - -
- - -
- - - -
- -
- - - -
- - -
- - - -
- -
- - - -
- - -
- - - -
- -
- - - -
- -
- - - +
+
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ + +
+ + + +
+ +
+ + + +
+ + +
+ + + +
+ +
+ + + +
+ + +
+ + + +
+
+ + + +
+
+ + + +
-
@@ -161,20 +157,39 @@ import QcQuestion from './components/qcQuestion' import ImagesToRead from './components/imagesToRead' import MedicalFeedback from './components/medicalFeedback' import MedicalAudit from './components/medicalAudit' + +import { getUserTobeDoneRecord, getNeedSignTrialDocTrialIdList } from '@/api/trials' + export default { name: 'WorkBench', components: { clinicalDataConfirm, clinicalDataPM, PanelCount, NeedSignTrialDoc, SiteResearch, NeedSignSysDoc, consistencyCheck, clinicalData, RereadApproval, ReviewerScreen, ReviewerApproval, SpmRereadApproval, ImageQuestion, ImageVerification, ImageReupload, ImageSubmission, ImageQualityControl, QcQuestion, ImagesToRead, MedicalFeedback, MedicalAudit }, data() { return { - isSignSystemDoc: false + isSignSystemDoc: false, + trialIdList: [] } }, + mounted() { + this.getUserTobeDoneRecord() + this.getNeedSignTrialDocTrialIdList() + }, methods: { getSignSystemDocCount(count) { this.isSignSystemDoc = count > 0 }, refreshStats() { this.$refs['panelCount'].getData() + }, + getNeedSignTrialDocTrialIdList() { + getNeedSignTrialDocTrialIdList().then(res => { + console.log(res) + this.trialIdList = res.Result + }) + }, + getUserTobeDoneRecord() { + getUserTobeDoneRecord().then(res => { + console.log(res) + }) } } } From 1bbdf57fdb3b8b77a6811a20ff036c12e0e0252c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=86=8A=E9=A3=9E?= Date: Tue, 27 Feb 2024 17:54:01 +0800 Subject: [PATCH 054/374] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../setting/reading-unit/components/ReadingRules.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/ReadingRules.vue b/src/views/trials/trials-panel/setting/reading-unit/components/ReadingRules.vue index 70d04d29..0d16339a 100644 --- a/src/views/trials/trials-panel/setting/reading-unit/components/ReadingRules.vue +++ b/src/views/trials/trials-panel/setting/reading-unit/components/ReadingRules.vue @@ -131,6 +131,7 @@ @change="(v) => { if (!v) { form.IsGlobalReading = v + form.IsOncologyReading = v } }" > @@ -183,7 +184,7 @@ > Date: Wed, 28 Feb 2024 14:14:23 +0800 Subject: [PATCH 055/374] =?UTF-8?q?lugano=E7=97=85=E7=81=B6=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reading/dicoms/components/Fusion/TableQuestionItem.vue | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestionItem.vue b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestionItem.vue index faeba76e..a8d9aeec 100644 --- a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestionItem.vue +++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestionItem.vue @@ -263,6 +263,7 @@ export default { mounted() { this.trialId = this.$route.query.trialId this.initForm() + console.log(this.getQuestionVal(7)) }, beforeDestroy() { @@ -661,7 +662,8 @@ export default { var idx = this.questions.findIndex(i => i.QuestionMark === questionMark) if (idx > -1) { var questionId = this.questions[idx].Id - return this.questionForm[questionId] + var answer = this.questionForm[questionId] ? this.questionForm[questionId] : this.answers[questionId] + return answer } else { return '' } @@ -723,6 +725,7 @@ export default { return new Blob([bytesCode], { type: imgtype }) }, handleSave() { + console.log('handleSave') this.$refs.measurementForm.validate(async valid => { if (!valid) return const loading = this.$loading({ fullscreen: true }) @@ -741,6 +744,8 @@ export default { } // 消失、无法评估状态的病灶限制不能测量SUV值 var lesionState = this.getQuestionVal(7) + console.log(lesionState) + lesionState = parseInt(lesionState) if ((lesionState === 2 || lesionState === 3) && this.questionForm.OtherMeasureData) { loading.close() this.$confirm(this.$t('评估状态为无法评估或消失的病灶不能测量SUV值!'), { From d3a88c0f55cd8be039189d626ce544f4ed0e2c5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=86=8A=E9=A3=9E?= Date: Wed, 28 Feb 2024 16:59:57 +0800 Subject: [PATCH 056/374] =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 +- .../components/EvaluationOfOncologyConfig.vue | 28 +++++++++++++------ .../reading-unit/components/ReadingRules.vue | 3 +- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/.env.development b/.env.development index 0819ca53..ad322b0d 100644 --- a/.env.development +++ b/.env.development @@ -33,7 +33,7 @@ VUE_APP_PASSWORD_FOR_PERMISSION = false VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!%#*?&\$~])[A-Za-z0-9-~_.@^+\$~!%#*?&]{8,32}$ # 是否开启文档签署验证 true:是 false:否 -VUE_APP_WORD_FOR_PERMISSION = false +VUE_APP_WORD_FOR_PERMISSION = true # dicom文件地址 diff --git a/src/views/dictionary/template/components/EvaluationOfOncologyConfig.vue b/src/views/dictionary/template/components/EvaluationOfOncologyConfig.vue index e3e73313..f95ef251 100644 --- a/src/views/dictionary/template/components/EvaluationOfOncologyConfig.vue +++ b/src/views/dictionary/template/components/EvaluationOfOncologyConfig.vue @@ -72,7 +72,7 @@ v-loading="loading" style="width: 100%" ref="multipleTable" - :data="$d.OncologyAssessType" + :data="OncologyAssessType" stripe @selection-change="handleSelectionChange" > @@ -81,13 +81,13 @@ width="55"> @@ -105,7 +105,7 @@ + diff --git a/src/views/trials/trials-panel/reading/mim-medical-audit/components/Issues.vue b/src/views/trials/trials-panel/reading/mim-medical-audit/components/Issues.vue index 7875bc00..7378472c 100644 --- a/src/views/trials/trials-panel/reading/mim-medical-audit/components/Issues.vue +++ b/src/views/trials/trials-panel/reading/mim-medical-audit/components/Issues.vue @@ -1,5 +1,5 @@ diff --git a/src/layout/components/topLang.vue b/src/layout/components/topLang.vue index 9a18a56f..540e4bd1 100644 --- a/src/layout/components/topLang.vue +++ b/src/layout/components/topLang.vue @@ -44,7 +44,7 @@ export default { this.$i18n.locale = lang this.setLanguage(lang) this.$updateDictionary() - // window.location.reload() + window.location.reload() } } } diff --git a/src/views/reviewers/components/Agreements.vue b/src/views/reviewers/components/Agreements.vue index 7226c696..c8a72918 100644 --- a/src/views/reviewers/components/Agreements.vue +++ b/src/views/reviewers/components/Agreements.vue @@ -1,21 +1,21 @@
diff --git a/src/views/reviewers/components/BasicInfo.vue b/src/views/reviewers/components/BasicInfo.vue index 2ebdca92..7340d1ca 100644 --- a/src/views/reviewers/components/BasicInfo.vue +++ b/src/views/reviewers/components/BasicInfo.vue @@ -15,31 +15,31 @@ > - + - + - + - + - + - + - + - + @@ -106,7 +106,7 @@ --> - + Save
+ > {{ $t('common:button:save') }} diff --git a/src/views/reviewers/components/Credentials.vue b/src/views/reviewers/components/Credentials.vue index 996aefc2..5e2af223 100644 --- a/src/views/reviewers/components/Credentials.vue +++ b/src/views/reviewers/components/Credentials.vue @@ -2,7 +2,7 @@
-

Diploma of the highest medical degree 最高医学学位毕业证书 +

{{$t('system:Credentials:title:Diploma of the highest medical degree')}}

@@ -12,7 +12,7 @@
-

Medical Qualification Certificate 医师资格证 +

{{$t('system:Credentials:title:Medical Qualification Certificate')}} @@ -22,7 +22,7 @@ -

Practice License 医师执业证 +

{{$t('system:Credentials:title:Practice License')}} @@ -31,7 +31,7 @@

-
Modality Certificate 大型医用设备上岗证
+
{{$t('system:Credentials:title:Modality Certificate')}}

CT diff --git a/src/views/reviewers/components/EducationTraining.vue b/src/views/reviewers/components/EducationTraining.vue index 0ae527fe..7366de55 100644 --- a/src/views/reviewers/components/EducationTraining.vue +++ b/src/views/reviewers/components/EducationTraining.vue @@ -1,8 +1,9 @@ - + - + - + - +

-

Postgraduate Training (in chronological order)

- Add +

{{ $t('system:reviewer:title:Postgraduate') }}

+ + {{ $t('common:button:add') }}
- + @@ -106,32 +110,32 @@ {{ scope.row.MajorCN?`${scope.row.Major} / ${scope.row.MajorCN}`:scope.row.Major }} - + - + - + - + - + - +