uat_us
caiyiling 2024-03-26 13:52:02 +08:00
commit 956e3b7152
12 changed files with 107 additions and 18 deletions

View File

@ -35,6 +35,9 @@ VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!
# 是否开启文档签署验证 true:是 false:否
VUE_APP_WORD_FOR_PERMISSION = false
# 公司名称
VUE_APP_COMPANY_NAME = "Extensive Imaging"
# dicom文件地址
VUE_APP_DICOM_PATH = 'https://zyypacs.oss-cn-shanghai.aliyuncs.com'

View File

@ -29,6 +29,9 @@ VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!
# 是否开启文档签署验证 true:是 false:否
VUE_APP_WORD_FOR_PERMISSION = true
# 公司名称
VUE_APP_COMPANY_NAME = "Extensive Imaging"
# dicom文件地址
# VUE_APP_DICOM_PATH = 'http://101.132.193.237:7080'
VUE_APP_DICOM_PATH = 'https://zyypacs-prod.oss-cn-shanghai.aliyuncs.com'

View File

@ -31,6 +31,9 @@ VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!
# 是否开启文档签署验证 true:是 false:否
VUE_APP_WORD_FOR_PERMISSION = true
# 公司名称
VUE_APP_COMPANY_NAME = "Extensive Imaging"
# dicom文件地址
VUE_APP_DICOM_PATH = 'https://zyypacs-uat.oss-cn-shanghai.aliyuncs.com'

View File

@ -28,6 +28,9 @@ VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!
# 是否开启文档签署验证 true:是 false:否
VUE_APP_WORD_FOR_PERMISSION = true
# 公司名称
VUE_APP_COMPANY_NAME = "Elevate Imaging"
# dicom文件地址
VUE_APP_DICOM_PATH = 'https://zyypacs-usa.oss-us-west-1.aliyuncs.com'

View File

@ -2,7 +2,7 @@
"name": "EICS",
"version": "1.0.0",
"scripts": {
"dev": "vue-cli-service serve --open",
"dev": "vue-cli-service serve --open --mode development",
"build": "vue-cli-service build",
"build:prod": "vue-cli-service build --mode prod",
"build:uat": "vue-cli-service build --mode uat",

View File

@ -332,6 +332,7 @@ async function VueInit () {
}
const h = _vm.$createElement
/* eslint-disable */
window.VUE_APP_COMPANY_NAME = process.env.VUE_APP_COMPANY_NAME;
waitOperate(eval(process.env.VUE_APP_LOGOUT_FOR_PERMISSION) ? () => {
var lang = zzSessionStorage.getItem('lang')?zzSessionStorage.getItem('lang'):'zh'
if ( _vm.$route.path === '/ReviewersResearchForm' || _vm.$route.path === '/ReviewersResearch' || _vm.$route.path === '/login' || _vm.$route.path === '/researchForm' || _vm.$route.path === '/researchLogin' || _vm.$route.path === '/email-recompose' || _vm.$route.path === '/recompose' || _vm.$route.path === '/resetpassword' || _vm.$route.path === '/error') {

View File

@ -9,11 +9,13 @@
label-width="170px"
@submit.native.prevent
>
<div class="base-dialog-body" style="position: relative;padding-top: 50px">
<el-button @click="openSiteCodeHistory" type="text" style="position: absolute;right: 10px;top: 10px;">{{$t('trials:consistencyAnalysisRule:table:SiteCodeHistory')}}</el-button>
<div class="base-dialog-body" style="position: relative;padding-top: 20px">
<!-- 访视数 -->
<el-form-item :label="$t('trials:consistencyAnalysisRule:table:nowSiteCode')">
{{ OtherInfo.VitrualSiteCode }}
<div style="display:flex;align-items:center;justify-content: space-between;">
<span>{{ OtherInfo.VitrualSiteCode }}</span>
<el-button @click="openSiteCodeHistory" type="text">{{$t('trials:consistencyAnalysisRule:table:SiteCodeHistory')}}</el-button>
</div>
</el-form-item>
<!-- 虚拟中心编号 -->
<el-form-item :label="$t('trials:consistencyAnalysisRule:table:siteCode')" prop="VirtualSiteCode">
@ -50,7 +52,7 @@
v-loading="loading"
:data="list"
stripe
min-height="300"
height="300"
>
<el-table-column
show-overflow-tooltip
@ -139,4 +141,7 @@ export default {
}
</script>
<style lang="scss" scoped>
::v-deep .base-dialog-wrapper .el-dialog__body{
padding-bottom: 30px;
}
</style>

View File

@ -22,7 +22,7 @@
@change="isHaveQuestionChange"
>
<el-radio
v-for="item of $d.YesOrNo"
v-for="item of $d.IsPass"
:key="'IsHaveQuestion' + item.value"
:label="item.value"
>

View File

@ -1,7 +1,8 @@
<template>
<div class="clinical-data_content">
<el-tabs type="card" v-model="clinicalType" v-if="!(data.IsVisit || data.IsBaseLine)">
<el-tab-pane v-for="item in $d.GetClinicalType" :key="item.Id" :label="item.label" :name="item.value.toString()">
<template v-for="item in $d.GetClinicalType">
<el-tab-pane :key="item.Id" :label="item.label" :name="item.value.toString()" v-if="item.value===1">
<div v-if="item.value === 1">
<h4 style="margin:0">
<!-- 提示 -->
@ -9,7 +10,7 @@
</h4>
<h5>
<!-- 当前访视/阅片期需要采集临床数据名称请采集临床数据后按照模板上传并签名确认 -->
{{ $t('trials:readingPeriod:cd:title:tips1') }}
{{ tips1 }}
</h5>
<h5>
{{ $t('trials:readingPeriod:cd:title:tips2') }}
@ -210,6 +211,7 @@
</el-dialog>
</div>
</el-tab-pane>
</template>
</el-tabs>
<div v-else>
<div class="top">
@ -428,6 +430,7 @@ export default {
otherInfo: {},
spanArr: [],
pos: 0,
tips1:null,
}
},
mounted() {
@ -482,7 +485,17 @@ export default {
}
this.loading = true
getReadingClinicalDataList(this.searchData).then(res => {
this.list = res.Result
this.list = res.Result;
let message ="";
this.list.forEach((item,index)=>{
if(index<1){
message += item.ClinicalDataSetName;
}else{
message =message + "、" + item.ClinicalDataSetName;
}
})
this.tips1 = this.$t('trials:readingPeriod:cd:title:tips1').replace('临床数据名称',message);
this.tips1 = this.tips1.replace("xxx",message);
this.pos = 0
this.getSpanArr(this.list)
this.otherInfo = res.OtherInfo

View File

@ -60,6 +60,12 @@
</div>
<span class="el-icon-warning" style="color: #cbb024;cursor: pointer" v-if="scope.row.IsHaveUploadFailed"></span>
</el-tooltip>
<el-tooltip placement="top" v-if="scope.row.notClinicaData">
<div slot="content">
{{ $t('trials:crc-upload:confirm:message') }}
</div>
<span class="el-icon-warning" style="color: red;cursor: pointer"></span>
</el-tooltip>
{{scope.row.StudyCode}}
</template>
</el-table-column>
@ -310,14 +316,14 @@
<div style="max-height: 500px;overflow-y: auto">
{{$t('trials:uploadDicomList:table:Existed')}}:
<div v-if="scope.row.uploadState.record.Existed.length">
<div v-for="item of scope.row.uploadState.record.Existed" style="font-size: 12px;color:#baa72a">{{item}}</div>
<div v-for="item of scope.row.uploadState.record.Existed" :key="item" style="font-size: 12px;color:#baa72a">{{item}}</div>
</div>
<div v-else>
&nbsp;
</div>
{{$t('trials:uploadDicomList:table:Uploaded')}}:
<div v-if="scope.row.uploadState.record.Uploaded.length">
<div v-for="item of scope.row.uploadState.record.Uploaded" style="font-size: 12px;color:#24b837">{{item}}</div>
<div v-for="item of scope.row.uploadState.record.Uploaded" :key="item" style="font-size: 12px;color:#24b837">{{item}}</div>
</div>
<div v-else>
&nbsp;
@ -325,7 +331,7 @@
<br>
{{$t('trials:uploadDicomList:table:Failed')}}:
<div v-if="scope.row.uploadState.record.Failed.length">
<div v-for="item of scope.row.uploadState.record.Failed" style="font-size: 12px;color:#f66">{{item}}</div>
<div v-for="item of scope.row.uploadState.record.Failed" :key="item" style="font-size: 12px;color:#f66">{{item}}</div>
</div>
<div v-else>
&nbsp;
@ -506,7 +512,7 @@
</template>
<script>
import {
dicomUploadInProgress, batchVerifyStudyAllowUpload, getSubjectVisitUploadedStudyList, deleteStudyList, updateModality, preArchiveDicomStudy, addOrUpdateArchiveStudy
dicomUploadInProgress, batchVerifyStudyAllowUpload, getSubjectVisitUploadedStudyList, deleteStudyList, updateModality, preArchiveDicomStudy, addOrUpdateArchiveStudy,getCRCClinicalData
} from '@/api/trials'
import store from '@/store'
import * as dicomParser from 'dicom-parser'
@ -538,6 +544,10 @@ export default {
subjectId: {
type: String,
required: true
},
activeName:{
type: String,
required: true
}
},
data() {
@ -631,17 +641,60 @@ export default {
format(v) {
return v
},
//
getClinicalData(showConfirm = false, data = []) {
// this.data.TrialId = this.$route.query.trialId
var param = {
subjectVisitId: this.subjectVisitId,
trialId: this.trialId,
subjectId: this.data.SubjectId,
isBaseLine: this.data.IsBaseLine
}
getCRCClinicalData(param).then(res => {
if(res.IsSuccess){
let flag = res.Result.some(item=>item.ClinicalDataLevel===4&&item.PDFFileList.length===0)
if(flag){
if(!showConfirm){
data.forEach(item =>{
item.notClinicaData = false;
if(item.Modalities==="CT、PT"||item.Modalities==="PT、CT"||item.Modalities==="PET-CT"){
item.notClinicaData = true;
}
})
this.studyList = data;
return false;
}
this.$confirm(this.$t("trials:crc-upload:confirm:message"), this.$t('trials:uploadDicomList:label:prompt'), {
confirmButtonText: this.$t('trials:reviewTrack:impactList:save'),
cancelButtonText: this.$t("common:button:cancel"),
type: 'warning'
}).then(() => {
this.$emit("update:activeName",'clinical-data');
}).catch(() => {
});
}else{
if(showConfirm) return;
this.studyList = data;
}
}
// this.clinicalDatas = res.Result
// this.loading = false
}).catch(() => {
// this.loading = false
})
},
// dicom
getStudyInfo() {
this.studyLoading = true
getSubjectVisitUploadedStudyList(this.subjectVisitId).then(res => {
this.studyList = res.Result
// this.studyList = res.Result
this.relationInfo = res.OtherInfo
this.trialBodyPartTypes =
this.relationInfo.BodyPartTypes ? this.relationInfo.BodyPartTypes.split('|') : []
this.trialModalitys =
this.relationInfo.Modalitys ? this.relationInfo.Modalitys.split('|') : []
this.studyLoading = false
this.studyLoading = false;
this.getClinicalData(false,res.Result);
}).catch(() => { this.studyLoading = false })
},
//
@ -1315,7 +1368,6 @@ export default {
if (logRes && logRes.url) {
params.study.instanceCount = dicomInfo.failedFileCount
params.RecordPath = scope.$getObjectName(logRes.url)
console.log(JSON.stringify(params))
addOrUpdateArchiveStudy(params).then(res => {
if (dicomInfo.failedFileCount === dicomInfo.fileCount) {
scope.$message.success(scope.$t('trials:uploadDicomList:label:uploaded'))
@ -1323,6 +1375,11 @@ export default {
scope.studyErrorList.push(dicomInfo.accNumber)
}
scope.uploadQueues[index].uploadState.record = Record
let flag = res.Result=== 'PET-CT' || res.Result==='CT、PT' || res.Result === 'PT、CT';
// let flag = params.study.seriesList.some(item=>item.modality==='PT');
if(flag){
scope.getClinicalData(true);
}
scope.getStudyInfo()
if (scope.$route.path !== '/trials/trials-panel/visit/crc-question') {
scope.$emit('getList')

View File

@ -479,7 +479,7 @@
<el-tabs v-model="activeName" type="border-card" style="flex:1;">
<!-- DICOM影像上传 -->
<el-tab-pane :label="$t('trials:uploadedDicoms:tab:uploadDicoms')" name="dicom">
<upload-dicom-files2 v-if="uploadVisible2" :data="rowData" :subject-id="rowData.SubjectId" :subject-visit-id="rowData.Id" @getList="getList" @close="closeUpload" />
<upload-dicom-files2 v-if="uploadVisible2" :data="rowData" :subject-id="rowData.SubjectId" :subject-visit-id="rowData.Id" @getList="getList" @close="closeUpload" :activeName.sync="activeName"/>
<upload-dicom-files v-else :data="rowData" :subject-id="rowData.SubjectId" :subject-visit-id="rowData.Id" @getList="getList" @close="closeUpload" @setOpenWindow="setOpenWindow"/>
</el-tab-pane>
<!-- 非DICOM影像上传 -->

View File

@ -12370,7 +12370,8 @@ class PDFPageView {
c.style.fontWeight = '900'
c.style.color = "rgba(0, 191, 255, 0.1)";
// c.innerText = text;//text为水印内容可以在viewer.html中传入也可以直接替换成固定的字符串如c.innerText = "这是一个水印";
c.innerText = `Extensive Imaging_${obj.userName}\n${new Date().format('yyyy-MM-dd')}`;
console.log(window.VUE_APP_COMPANY_NAME)
c.innerText = `${window.VUE_APP_COMPANY_NAME }_${obj.userName}\n${new Date().format('yyyy-MM-dd')}`;
cover.appendChild(c);
}
}