commit
87332ae9d8
|
|
@ -37,7 +37,7 @@ export default {
|
|||
// console.log(type, No);
|
||||
if (type !== "Chrome" && type !== "Edge") {
|
||||
this.tip = this.$t("browser:tip:changeBorwser");
|
||||
this.getSystemInfo()
|
||||
// this.getSystemInfo()
|
||||
return (this.visible = true);
|
||||
}
|
||||
let res = await this.getInfo();
|
||||
|
|
@ -53,10 +53,10 @@ export default {
|
|||
this.tip += "、";
|
||||
}
|
||||
});
|
||||
this.getSystemInfo()
|
||||
// this.getSystemInfo()
|
||||
return (this.visible = true);
|
||||
}
|
||||
this.getSystemInfo()
|
||||
// this.getSystemInfo()
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,14 +1,13 @@
|
|||
<template>
|
||||
<div class="trials-navbar" style="position: relative">
|
||||
<div class="leftMenu">
|
||||
<img v-if="language === 'zh'" src="@/assets/zzlogo2.png" alt="" />
|
||||
<img
|
||||
v-else-if="NODE_ENV === 'usa'"
|
||||
v-if="NODE_ENV === 'usa'"
|
||||
src="@/assets/title-logo.png"
|
||||
alt=""
|
||||
class="title-logo"
|
||||
/>
|
||||
<img v-else src="@/assets/zzlogo4.png" alt="" />
|
||||
<img v-else src="@/assets/system.png" alt="" style="width: 150px;height: 50px;margin-bottom: -7px;"/>
|
||||
<span style="white-space: nowrap" v-if="NODE_ENV !== 'usa'">
|
||||
<!-- 中心影像系统(EICS) -->
|
||||
{{ $t('trials:trials:title:eics') }}
|
||||
|
|
|
|||
|
|
@ -495,17 +495,18 @@
|
|||
<h2 v-else style="color:#ddd">
|
||||
Developing...
|
||||
</h2>
|
||||
<div v-if="iseCRFShowInDicomReading && currentReadingTaskState < 2" v-show="listShow" class="form-footer">
|
||||
<el-button type="primary" size="small" @click="skipTask">
|
||||
<!-- 跳过 -->
|
||||
{{ $t('trials:readingReport:button:skip') }}
|
||||
</el-button>
|
||||
<el-button type="primary" size="small" @click="submit">
|
||||
<!-- 提交 -->
|
||||
{{ $t('common:button:submit') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="iseCRFShowInDicomReading && currentReadingTaskState < 2" v-show="listShow" class="form-footer">
|
||||
<el-button type="primary" size="small" @click="skipTask">
|
||||
<!-- 跳过 -->
|
||||
{{ $t('trials:readingReport:button:skip') }}
|
||||
</el-button>
|
||||
<el-button type="primary" size="small" @click="submit">
|
||||
<!-- 提交 -->
|
||||
{{ $t('common:button:submit') }}
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
</transition>
|
||||
|
||||
|
||||
|
|
@ -704,6 +705,7 @@ import { getAutoCutNextTask } from '@/api/user'
|
|||
import const_ from '@/const/sign-code'
|
||||
import { changeURLStatic } from '@/utils/history.js'
|
||||
import SystemInfo from "@/utils/systemInfo";
|
||||
import md5 from 'js-md5'
|
||||
export default {
|
||||
name: 'DicomViewer',
|
||||
components: {
|
||||
|
|
@ -987,6 +989,7 @@ export default {
|
|||
|
||||
},
|
||||
mounted() {
|
||||
console.log(this.iseCRFShowInDicomReading, this.currentReadingTaskState, this.listShow)
|
||||
this.getHotKeys()
|
||||
this.getWwcTpl()
|
||||
this.getTrialCriterion()
|
||||
|
|
@ -1138,6 +1141,7 @@ export default {
|
|||
let windowHeight = document.documentElement.clientHeight;
|
||||
this.AspectRatio = windowWidth / windowHeight
|
||||
};
|
||||
this.getSystemInfoReading()
|
||||
},
|
||||
beforeDestroy() {
|
||||
DicomEvent.$off('updateImage')
|
||||
|
|
@ -2501,6 +2505,30 @@ export default {
|
|||
|
||||
})
|
||||
},
|
||||
async getSystemInfoReading() {
|
||||
return new Promise(async resolve => {
|
||||
let whitelisting = localStorage.getItem('whitelisting') ? JSON.parse(localStorage.getItem('whitelisting')) : []
|
||||
let user = md5(sessionStorage.getItem('identityUserId'))
|
||||
let r = whitelisting.some(item => item === user)
|
||||
if (r) return resolve(true)
|
||||
const systemInfo = new SystemInfo();
|
||||
const allInfo = systemInfo.getAllInfo();
|
||||
let deviceMemory = allInfo.hardware.deviceMemory; // 设备内存
|
||||
let { width, height } = allInfo.screen; // 分辨率
|
||||
// let discrete = allInfo.webgl.gpuType.discrete; // 是否独立显卡
|
||||
// let estimatedMemory = allInfo.webgl.memoryInfo.estimatedMemory; // 显卡内存
|
||||
// parseFloat(deviceMemory) < 16 ||
|
||||
if (width < 1920 || height < 1080) {
|
||||
let res = await this.$confirm(this.$t('browser:tip:Configuration'))
|
||||
whitelisting.push(user)
|
||||
localStorage.setItem('whitelisting', JSON.stringify(whitelisting))
|
||||
resolve(res)
|
||||
} else {
|
||||
resolve(true)
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
@ -2786,7 +2814,7 @@ export default {
|
|||
|
||||
.form-footer {
|
||||
background: #000;
|
||||
padding: 10px 0;
|
||||
padding: 5px 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -112,9 +112,8 @@
|
|||
</el-input>
|
||||
<el-input
|
||||
v-else
|
||||
type="number"
|
||||
@change="(val) => { formItemChange(val, item) }"
|
||||
@input="(val) => questionForm[item.Id] = val.replace(/[^\d.]/g, '')"
|
||||
@input="numberInput(item.Id)"
|
||||
@blur="handleBlur(questionForm[item.Id], questionForm, item)"
|
||||
v-model.trim="questionForm[item.Id]" :disabled="readingTaskState === 2">
|
||||
<template slot="append" v-if="item.Unit !== 0">{{ item.Unit !== 4 ? $fd('ValueUnit', item.Unit) : item.CustomUnit }}</template>
|
||||
|
|
@ -369,7 +368,7 @@ export default {
|
|||
const type = ['number', 'radio', 'select', 'input', 'textarea', 'calculation']
|
||||
questions.forEach(item => {
|
||||
if (type.includes(item.Type)) {
|
||||
const answer = item.Type === 'select' && item.OptionTypeEnum === 1 && item.Answer ? JSON.parse(item.Answer) : item.Type === 'number' || item.Type === 'calculation' ? isNaN(parseFloat(item.Answer)) ? null : item.Answer : item.Answer
|
||||
const answer = item.Type === 'select' && item.OptionTypeEnum === 1 && item.Answer ? JSON.parse(item.Answer) : item.Answer
|
||||
this.$set(this.questionForm, item.Id, answer)
|
||||
}
|
||||
if (item.QuestionType === 1013) {
|
||||
|
|
@ -498,7 +497,6 @@ export default {
|
|||
|
||||
},
|
||||
formItemChange(val, item) {
|
||||
console.log('formItemChange: ', item.QuestionName, val)
|
||||
this.formChanged = true
|
||||
// if (item.Type === 'number') {
|
||||
// this.limitBlur(item.Id, item.ValueType)
|
||||
|
|
@ -546,6 +544,7 @@ export default {
|
|||
}
|
||||
},
|
||||
numberOrNEInput(id) {
|
||||
this.formChanged = true
|
||||
// this.questionForm[id] = this.questionForm[id].toUpperCase();
|
||||
if (!this.questionForm[id]) {
|
||||
return
|
||||
|
|
@ -564,6 +563,11 @@ export default {
|
|||
this.questionForm[id] = value
|
||||
this.$set(this.questionForm, id, value)
|
||||
},
|
||||
numberInput(id) {
|
||||
this.formChanged = true
|
||||
let value = this.questionForm[id].replace(/[^\d.]/g, '')
|
||||
this.$set(this.questionForm, id, value)
|
||||
},
|
||||
handleNumberOrNEBlur(item) {
|
||||
if (this.questionForm[item.Id] && !isNaN(parseFloat(this.questionForm[item.Id]))) {
|
||||
if (item.ValueType === 3) {
|
||||
|
|
@ -802,7 +806,7 @@ export default {
|
|||
uploadTpl(lesionType, TableName) {
|
||||
this.upload.lesionType = lesionType
|
||||
this.upload.TableName = TableName
|
||||
this.upload.title = `导入( ${this.$fd('LesionType', lesionType)} )`
|
||||
this.upload.title = `${this.$fd('LesionType', lesionType)}`
|
||||
this.upload.visible = true
|
||||
},
|
||||
async downloadTpl() {
|
||||
|
|
@ -834,9 +838,8 @@ export default {
|
|||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.measurement-wrapper {
|
||||
height: 100%;
|
||||
height: calc(100% - 50px);
|
||||
overflow-y: auto;
|
||||
|
||||
.container {
|
||||
padding: 10px;
|
||||
|
||||
|
|
|
|||
|
|
@ -56,11 +56,11 @@ export default {
|
|||
var data = new FormData()
|
||||
data.append('file', param.file)
|
||||
data.append('visitTaskId', this.visitTaskId)
|
||||
data.append('readingImportType', 0)
|
||||
data.append('readingImportType', 3)
|
||||
data.append('TableName', this.TableName)
|
||||
await readingImport(data)
|
||||
this.$emit('close')
|
||||
this.$message.success('导入成功!')
|
||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||
loading.close()
|
||||
} catch (e) {
|
||||
loading.close()
|
||||
|
|
|
|||
|
|
@ -67,13 +67,13 @@
|
|||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="readingTaskState < 2" :label="$t('common:action:action')" width="90px"
|
||||
<el-table-column v-if="readingTaskState < 2 && item.LesionType === 104" :label="$t('common:action:action')" width="90px"
|
||||
fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" size="mini" @click="handleAddOrEdit('edit', item, scope.$index)">
|
||||
{{ $t('common:button:edit') }}
|
||||
</el-button>
|
||||
<el-button v-if="item.LesionType === 112 || item.LesionType === 111" type="text" size="mini"
|
||||
<el-button type="text" size="mini"
|
||||
@click="handleDelete(item, scope.$index)">
|
||||
{{ $t('common:button:delete') }}
|
||||
</el-button>
|
||||
|
|
@ -120,9 +120,8 @@
|
|||
</el-input>
|
||||
<el-input
|
||||
v-else
|
||||
type="number"
|
||||
@change="(val) => { formItemChange(val, item) }"
|
||||
@input="(val) => questionForm[item.Id] = val.replace(/[^\d.]/g, '')"
|
||||
@input="numberInput(item.Id)"
|
||||
@blur="handleBlur(questionForm[item.Id], questionForm, item)"
|
||||
v-model.trim="questionForm[item.Id]" :disabled="readingTaskState === 2">
|
||||
<template slot="append" v-if="item.Unit !== 0">{{ item.Unit !== 4 ? $fd('ValueUnit', item.Unit) : item.CustomUnit }}</template>
|
||||
|
|
@ -369,7 +368,7 @@ export default {
|
|||
const type = ['number', 'radio', 'select', 'input', 'textarea', 'calculation']
|
||||
questions.forEach(item => {
|
||||
if (type.includes(item.Type)) {
|
||||
const answer = item.Type === 'select' && item.OptionTypeEnum === 1 && item.Answer ? JSON.parse(item.Answer) : item.Type === 'number' || item.Type === 'calculation' ? isNaN(parseFloat(item.Answer)) ? null : item.Answer : item.Answer
|
||||
const answer = item.Type === 'select' && item.OptionTypeEnum === 1 && item.Answer ? JSON.parse(item.Answer) : item.Answer
|
||||
this.$set(this.questionForm, item.Id, answer)
|
||||
}
|
||||
if (item.QuestionType === 1013) {
|
||||
|
|
@ -541,6 +540,7 @@ export default {
|
|||
}
|
||||
},
|
||||
numberOrNEInput(id) {
|
||||
this.formChanged = true
|
||||
// this.questionForm[id] = this.questionForm[id].toUpperCase();
|
||||
if (!this.questionForm[id]) {
|
||||
return
|
||||
|
|
@ -559,6 +559,11 @@ export default {
|
|||
this.questionForm[id] = value
|
||||
this.$set(this.questionForm, id, value)
|
||||
},
|
||||
numberInput(id) {
|
||||
this.formChanged = true
|
||||
let value = this.questionForm[id].replace(/[^\d.]/g, '')
|
||||
this.$set(this.questionForm, id, value)
|
||||
},
|
||||
handleNumberOrNEBlur(item) {
|
||||
if (this.questionForm[item.Id] && !this.questionForm[item.Id].startsWith('N')) {
|
||||
if (item.ValueType === 3) {
|
||||
|
|
@ -805,7 +810,7 @@ export default {
|
|||
uploadTpl(lesionType, TableName) {
|
||||
this.upload.lesionType = lesionType
|
||||
this.upload.TableName = TableName
|
||||
this.upload.title = `导入( ${this.$fd('LesionType', lesionType)} )`
|
||||
this.upload.title = `${this.$fd('LesionType', lesionType)}`
|
||||
this.upload.visible = true
|
||||
},
|
||||
async downloadTpl(lesionType) {
|
||||
|
|
@ -813,7 +818,7 @@ export default {
|
|||
const params = {
|
||||
visitTaskId: this.visitTaskId
|
||||
}
|
||||
if (lesionType === 112) {
|
||||
if (lesionType === 104) {
|
||||
await getOCTFCTTemplate(params)
|
||||
} else {
|
||||
await getOCTLipidAngleTemplate(params)
|
||||
|
|
@ -841,7 +846,7 @@ export default {
|
|||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.measurement-wrapper {
|
||||
height: 100%;
|
||||
height: calc(100% - 50px);
|
||||
overflow-y: auto;
|
||||
// overflow: hidden;
|
||||
|
||||
|
|
|
|||
|
|
@ -72,15 +72,17 @@ export default {
|
|||
data.append('file', param.file)
|
||||
data.append('visitTaskId', this.visitTaskId)
|
||||
data.append('TableName', this.TableName)
|
||||
if (this.lesionType === 112) {
|
||||
data.append('readingImportType', 1)
|
||||
await readingImport(data)
|
||||
} else {
|
||||
data.append('readingImportType', 2)
|
||||
await readingImport(data)
|
||||
}
|
||||
data.append('readingImportType', 3)
|
||||
await readingImport(data)
|
||||
// if (this.lesionType === 112) {
|
||||
// data.append('readingImportType', 1)
|
||||
// await readingImport(data)
|
||||
// } else {
|
||||
// data.append('readingImportType', 2)
|
||||
// await readingImport(data)
|
||||
// }
|
||||
this.$emit('close')
|
||||
this.$message.success('导入成功!')
|
||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||
loading.close()
|
||||
} catch (e) {
|
||||
loading.close()
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@
|
|||
@change="((val) => { formItemChange(val, question) })" />
|
||||
<!-- 下拉框 -->
|
||||
<el-select v-else-if="question.Type === 'select'" v-model="questionForm[question.Id]"
|
||||
:disabled="readingTaskState >= 2 || ((question.TableQuestionType === 2 || question.QuestionGenre === 2) && !!question.DictionaryCode) || isFirstChangeTask || question.QuestionType === 50 || question.QuestionType === 55"
|
||||
:disabled="readingTaskState >= 2 || ((question.TableQuestionType === 2 || question.QuestionGenre === 2) && !!question.DictionaryCode) || isFirstChangeTask || question.QuestionType === 50 || question.QuestionType === 55 || question.QuestionType === 1026"
|
||||
clearable :multiple="question.OptionTypeEnum === 1" @change="((val) => { formItemChange(val, question) })">
|
||||
<template v-if="question.TableQuestionType === 1">
|
||||
<el-option v-for="item in organList" :key="item.Id" :label="item[question.DataTableColumn]"
|
||||
|
|
|
|||
|
|
@ -234,7 +234,10 @@ export default {
|
|||
obj.forEach(i => {
|
||||
i.IsBaseLineTask = this.isBaseLineTask
|
||||
if (i.Type !== 'group' && i.Type !== 'summary' && i.Id) {
|
||||
const answer = i.Type === 'select' && i.OptionTypeEnum === 1 && i.Answer ? JSON.parse(i.Answer) : i.Answer
|
||||
let answer = i.Type === 'select' && i.OptionTypeEnum === 1 && i.Answer ? JSON.parse(i.Answer) : i.Answer
|
||||
if (i.DictionaryCode && i.Type === 'calculation') {
|
||||
answer = this.$fd(i.DictionaryCode, parseInt(i.Answer))
|
||||
}
|
||||
this.$set(this.questionForm, i.Id, answer ? answer : null)
|
||||
if (i.QuestionType === 44) {
|
||||
// 影响质量评估
|
||||
|
|
|
|||
|
|
@ -500,6 +500,7 @@ import downloadDicomAndNonedicom from '@/components/downloadDicomAndNonedicom'
|
|||
import { getNetWorkSpeed, setNetWorkSpeedSizeAll, workSpeedclose } from "@/utils"
|
||||
import readingChart from '@/components/readingChart'
|
||||
import SystemInfo from "@/utils/systemInfo";
|
||||
import md5 from 'js-md5'
|
||||
const { visibility } = annotation
|
||||
const { ViewportType, Events } = Enums
|
||||
const renderingEngineId = 'myRenderingEngine'
|
||||
|
|
@ -812,6 +813,7 @@ export default {
|
|||
this.open.postMessage({ type: 'addNoneDicomMeasureData', data: data }, window.location)
|
||||
})
|
||||
document.addEventListener("click", this.foo);
|
||||
this.getSystemInfoReading();
|
||||
},
|
||||
methods: {
|
||||
setMPRInfo(obj) {
|
||||
|
|
@ -3567,6 +3569,30 @@ export default {
|
|||
|
||||
})
|
||||
},
|
||||
async getSystemInfoReading() {
|
||||
return new Promise(async resolve => {
|
||||
let whitelisting = localStorage.getItem('whitelisting') ? JSON.parse(localStorage.getItem('whitelisting')) : []
|
||||
let user = md5(sessionStorage.getItem('identityUserId'))
|
||||
let r = whitelisting.some(item => item === user)
|
||||
if (r) return resolve(true)
|
||||
const systemInfo = new SystemInfo();
|
||||
const allInfo = systemInfo.getAllInfo();
|
||||
let deviceMemory = allInfo.hardware.deviceMemory; // 设备内存
|
||||
let { width, height } = allInfo.screen; // 分辨率
|
||||
// let discrete = allInfo.webgl.gpuType.discrete; // 是否独立显卡
|
||||
// let estimatedMemory = allInfo.webgl.memoryInfo.estimatedMemory; // 显卡内存
|
||||
// parseFloat(deviceMemory) < 16 ||
|
||||
if (width < 1920 || height < 1080) {
|
||||
let res = await this.$confirm(this.$t('browser:tip:Configuration'))
|
||||
whitelisting.push(user)
|
||||
localStorage.setItem('whitelisting', JSON.stringify(whitelisting))
|
||||
resolve(res)
|
||||
} else {
|
||||
resolve(true)
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
},
|
||||
beforeDestroy() {
|
||||
DicomEvent.$off('isCanActiveNoneDicomTool')
|
||||
|
|
|
|||
|
|
@ -92,6 +92,7 @@ export default {
|
|||
this.loading = true
|
||||
getTrialCriterionList(this.$route.query.trialId, false).then(res => {
|
||||
this.trialCriterionList = res.Result.filter(item => [1, 18, 2, 3, 7, 10, 17].includes(Number(item.CriterionType)))
|
||||
this.loading = false
|
||||
if (this.trialCriterionList.length > 0) {
|
||||
this.TrialReadingCriterionId = this.trialCriterionList[0].TrialReadingCriterionId
|
||||
this.getList()
|
||||
|
|
|
|||
|
|
@ -145,23 +145,29 @@ export default {
|
|||
titleText: this.$t("trials:reportForms:cjart:title:VisitFinishedStat"),
|
||||
seriesData: [],
|
||||
max: 0,
|
||||
legendData: [
|
||||
this.$t("trials:reportForms:cjart:title:UploadedCount"),
|
||||
this.$t("trials:reportForms:cjart:title:QCFinishedCount"),
|
||||
this.$t("trials:reportForms:cjart:title:CheckFinishedCount"),
|
||||
this.$t("trials:reportForms:cjart:title:ReadingFinishedCount")
|
||||
]
|
||||
legendData: []
|
||||
}
|
||||
res.Result.ReadingFinishedCount = res.Result.CriterionList[0].ReadingFinishedCount
|
||||
let keys = ['UploadedCount', 'QCFinishedCount', 'CheckFinishedCount', 'ReadingFinishedCount']
|
||||
obj.legendData.forEach((item, index) => {
|
||||
let o = {
|
||||
name: item,
|
||||
value: res.Result[keys[index]]
|
||||
keys.forEach((item, index) => {
|
||||
if (res.Result[item] != null) {
|
||||
let o = {
|
||||
name: this.$t(`trials:reportForms:cjart:title:${item}`),
|
||||
value: res.Result[item]
|
||||
}
|
||||
obj.legendData.push(o.name)
|
||||
obj.seriesData.push(o)
|
||||
arr.push(res.Result[item])
|
||||
}
|
||||
obj.seriesData.push(o)
|
||||
arr.push(res.Result[keys[index]])
|
||||
})
|
||||
// obj.legendData.forEach((item, index) => {
|
||||
// let o = {
|
||||
// name: item,
|
||||
// value: res.Result[keys[index]]
|
||||
// }
|
||||
// obj.seriesData.push(o)
|
||||
// arr.push(res.Result[keys[index]])
|
||||
// })
|
||||
obj.max = Math.max(...arr)
|
||||
this.initChart_left(obj)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue