Compare commits

..

No commits in common. "b8cb34367b2398548d1e545bf57332852d01a664" and "4b1afb1edde4d5bbbc0647c4c6dff814e6c657e5" have entirely different histories.

2 changed files with 173 additions and 270 deletions

View File

@ -2,39 +2,13 @@
<template> <template>
<div class="trialsTab"> <div class="trialsTab">
<el-tabs v-model="trialsTab" @tab-click="clickTab"> <el-tabs v-model="trialsTab" @tab-click="clickTab">
<el-tab-pane <el-tab-pane v-for="item of trialsRouter.children.find(v => {return v.name == 'TrialsPanel'}).children" :key="`tab${item.path}`" :disabled="TotalNeedSignTrialDocCount !== 0" :label="$t(item.LanguageMark)" :name="item.path">
v-for="item of trialsRouter.children.find((v) => { <el-tabs v-if="!item.tabHiddn" v-model="trialsTabChild" @tab-click="clickTab">
return v.name == 'TrialsPanel';
}).children"
:key="`tab${item.path}`"
:disabled="
TotalNeedSignTrialDocCount !== 0 ||
(TrialStatusStr === 'Initializing' && item.PermissionStr!=='trials:trials-panel:trial-information')
"
:label="$t(item.LanguageMark)"
:name="item.path"
>
<el-tabs
v-if="!item.tabHiddn"
v-model="trialsTabChild"
@tab-click="clickTab"
>
<template v-for="item1 of item.children"> <template v-for="item1 of item.children">
<el-tab-pane <el-tab-pane
v-if="TrialConfig && isShow(item1.path)" v-if="TrialConfig && isShow(item1.path)"
:key="`tab1${item1.path}`" :key="`tab1${item1.path}`"
:disabled=" :disabled="TotalNeedSignTrialDocCount !== 0 || (TrialStatusStr === 'Initializing' && (item1.path === '/trials/trials-panel/setting/personnel-manage' || item1.path === '/trials/trials-panel/setting/qc-question' || item1.path === '/trials/trials-panel/setting/reading-unit' || item1.path === '/trials/trials-panel/setting/medical-audit' || item1.path === '/trials/trials-panel/setting/email-manage'))"
TotalNeedSignTrialDocCount !== 0 ||
(TrialStatusStr === 'Initializing' &&
(item1.path ===
'/trials/trials-panel/setting/personnel-manage' ||
item1.path === '/trials/trials-panel/setting/qc-question' ||
item1.path ===
'/trials/trials-panel/setting/reading-unit' ||
item1.path ===
'/trials/trials-panel/setting/medical-audit' ||
item1.path === '/trials/trials-panel/setting/email-manage'))
"
:label="$t(item1.LanguageMark)" :label="$t(item1.LanguageMark)"
:name="item1.path" :name="item1.path"
/> />
@ -42,333 +16,263 @@
</el-tabs> </el-tabs>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<div <div style="position: absolute;top: 0;right: 0;display: flex;justify-content: space-between;align-items: center">
style="
position: absolute;
top: 0;
right: 0;
display: flex;
justify-content: space-between;
align-items: center;
"
>
<trials-select /> <trials-select />
<div> <div>
<i class="iconfont" style="font-size: 30px; color: #ccc">&#xe680;</i> <i class="iconfont" style="font-size: 30px;color:#ccc">&#xe680;</i>
</div> </div>
<!-- 返回项目列表 --> <!-- 返回项目列表 -->
<div <div class="my_icon_box" :title="$t('trials:trials:title:backTrialList')" @click="goBack">
class="my_icon_box"
:title="$t('trials:trials:title:backTrialList')"
@click="goBack"
>
<i class="iconfont">&#xe670;</i> <i class="iconfont">&#xe670;</i>
<!-- 返回 --> <!-- 返回 -->
<span>{{ $t("trials:trials:title:back") }}</span> <span>{{ $t('trials:trials:title:back') }}</span>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { mapGetters } from "vuex"; import { mapGetters } from 'vuex'
import { getTrialSelect } from "@/api/trials"; import { getTrialSelect } from '@/api/trials'
import TrialsSelect from "@/components/TrialsSelect/index.vue"; import TrialsSelect from '@/components/TrialsSelect/index.vue'
import { getUserDocumentList } from "@/api/trials"; import { getUserDocumentList } from '@/api/trials'
import store from "@/store"; import store from '@/store'
export default { export default {
name: "TrialsTab", name: 'TrialsTab',
components: { components: {
TrialsSelect, TrialsSelect
}, },
data() { data() {
return { return {
trialsRouter: this.$store.getters.routes.find((v) => { trialsRouter: this.$store.getters.routes.find(v => { return v.name === 'Trials' }),
return v.name === "Trials";
}),
trialsTab: null, trialsTab: null,
trialsTabChild: null, trialsTabChild: null,
tabTrialsId: null, tabTrialsId: null,
options: [], options: [],
TrialConfig: {}, TrialConfig: {},
TrialStatusStr: "Initializing", TrialStatusStr: null,
trialId: null, trialId: null,
IsAdditionalAssessment: false, IsAdditionalAssessment: false,
IsAllOnlySRReading: false, IsAllOnlySRReading: false
}; }
}, },
computed: { computed: {
...mapGetters(["TotalNeedSignTrialDocCount"]), ...mapGetters(['TotalNeedSignTrialDocCount'])
}, },
watch: { watch: {
$route(v, ov) { $route(v, ov) {
this.trialId = this.$route.query.trialId; this.trialId = this.$route.query.trialId
this.selectedTab(); this.selectedTab()
var query = ``; var query = ``
var url = window.location.href; var url = window.location.href
if (~url.indexOf("?")) { if (~url.indexOf('?')) {
query = url.split("?")[1]; query = url.split('?')[1]
} }
zzSessionStorage.setItem( zzSessionStorage.setItem('lastWorkbench', `${v.path}${query ? '?' : ''}${query}`)
"lastWorkbench", var firstGoIn = this.trialsRouter.children.find(v => { return v.name === 'TrialsPanel' }).children[0]
`${v.path}${query ? "?" : ""}${query}`
);
var firstGoIn = this.trialsRouter.children.find((v) => {
return v.name === "TrialsPanel";
}).children[0];
// var firstGoIn = this.trialsRouter.children.find(v => { return v.name === 'TrialsPanel' }).children.find(v => this.isShow(v.path)) // var firstGoIn = this.trialsRouter.children.find(v => { return v.name === 'TrialsPanel' }).children.find(v => this.isShow(v.path))
if (this.trialsTab === "/trials/trials-panel") { if (this.trialsTab === '/trials/trials-panel') {
this.$router.replace({ this.$router.replace({ path: `${firstGoIn.path}${query ? '?' : ''}${query}` })
path: `${firstGoIn.path}${query ? "?" : ""}${query}`,
});
if (firstGoIn.children && firstGoIn.children.length > 0) { if (firstGoIn.children && firstGoIn.children.length > 0) {
this.$router.replace({ this.$router.replace({ path: `${firstGoIn.children[0].path}${query ? '?' : ''}${query}` })
path: `${firstGoIn.children[0].path}${query ? "?" : ""}${query}`,
});
} }
} }
// document.cookie = 'TrialId=' + this.$route.query.trialId + ';path=/' // document.cookie = 'TrialId=' + this.$route.query.trialId + ';path=/'
}, },
trialId(v) { trialId(v) {
getUserDocumentList({ TrialId: this.$route.query.trialId }).then( getUserDocumentList({ TrialId: this.$route.query.trialId }).then(async res => {
async (res) => { var total = res.OtherInfo.NeedSignCount
var total = res.OtherInfo.NeedSignCount; var TrialStatusStr = res.OtherInfo.TrialStatusStr
var TrialStatusStr = res.OtherInfo.TrialStatusStr; this.IsAdditionalAssessment = res.OtherInfo.IsAdditionalAssessment
this.IsAdditionalAssessment = res.OtherInfo.IsAdditionalAssessment; this.TrialStatusStr = TrialStatusStr
this.TrialStatusStr = TrialStatusStr; await store.dispatch('user/setTotalNeedSignTrialDocCount', total)
await store.dispatch("user/setTotalNeedSignTrialDocCount", total); await store.dispatch('user/setTrialStatusStr', TrialStatusStr)
await store.dispatch("user/setTrialStatusStr", TrialStatusStr); this.TrialConfig = res.OtherInfo.TrialConfig
this.TrialConfig = res.OtherInfo.TrialConfig; this.IsAllOnlySRReading = res.OtherInfo.IsAllOnlySRReading
this.IsAllOnlySRReading = res.OtherInfo.IsAllOnlySRReading; })
} }
);
},
}, },
mounted() { mounted() {
console.log(this.trialsRouter); var query = ``
var query = ``; var url = window.location.href
var url = window.location.href; if (~url.indexOf('?')) {
if (~url.indexOf("?")) { query = url.split('?')[1]
query = url.split("?")[1];
} }
getUserDocumentList({ TrialId: this.$route.query.trialId }).then( getUserDocumentList({ TrialId: this.$route.query.trialId }).then(async res => {
async (res) => { var total = res.OtherInfo.NeedSignCount
var total = res.OtherInfo.NeedSignCount; var TrialStatusStr = res.OtherInfo.TrialStatusStr
var TrialStatusStr = res.OtherInfo.TrialStatusStr; this.IsAdditionalAssessment = res.OtherInfo.IsAdditionalAssessment
this.IsAdditionalAssessment = res.OtherInfo.IsAdditionalAssessment; this.TrialStatusStr = TrialStatusStr
this.TrialStatusStr = TrialStatusStr; await store.dispatch('user/setTotalNeedSignTrialDocCount', total)
await store.dispatch("user/setTotalNeedSignTrialDocCount", total); await store.dispatch('user/setTrialStatusStr', TrialStatusStr)
await store.dispatch("user/setTrialStatusStr", TrialStatusStr); this.TrialConfig = res.OtherInfo.TrialConfig
this.TrialConfig = res.OtherInfo.TrialConfig; this.IsAllOnlySRReading = res.OtherInfo.IsAllOnlySRReading
this.IsAllOnlySRReading = res.OtherInfo.IsAllOnlySRReading; })
} this.selectedTab()
); this.getTrialList()
this.selectedTab(); var firstGoIn = this.trialsRouter.children.find(v => { return v.name === 'TrialsPanel' }).children[0]
this.getTrialList();
var firstGoIn = this.trialsRouter.children.find((v) => {
return v.name === "TrialsPanel";
}).children[0];
// var firstGoIn = this.trialsRouter.children.find(v => { return v.name === 'TrialsPanel' }).children.find(v => this.isShow(v.path)) // var firstGoIn = this.trialsRouter.children.find(v => { return v.name === 'TrialsPanel' }).children.find(v => this.isShow(v.path))
if (this.trialsTab === "/trials/trials-panel") { if (this.trialsTab === '/trials/trials-panel') {
this.$router.replace({ this.$router.replace({ path: `${firstGoIn.path}${query ? '?' : ''}${query}` })
path: `${firstGoIn.path}${query ? "?" : ""}${query}`,
});
if (firstGoIn.children && firstGoIn.children.length > 0) { if (firstGoIn.children && firstGoIn.children.length > 0) {
this.$router.replace({ this.$router.replace({ path: `${firstGoIn.children[0].path}${query ? '?' : ''}${query}` })
path: `${firstGoIn.children[0].path}${query ? "?" : ""}${query}`,
});
} }
} }
}, },
methods: { methods: {
isShow(path) { isShow(path) {
var isShow = true; var isShow = true
var qualityList = [ var qualityList = [
"/trials/trials-panel/visit/crc-question", '/trials/trials-panel/visit/crc-question',
"/trials/trials-panel/visit/qc-check", '/trials/trials-panel/visit/qc-check',
"/trials/trials-panel/visit/qc-question", '/trials/trials-panel/visit/qc-question',
"/trials/trials-panel/setting/qc-question", '/trials/trials-panel/setting/qc-question'
]; ]
var consistencyList = ["/trials/trials-panel/visit/consistency-check"]; var consistencyList = [
'/trials/trials-panel/visit/consistency-check'
]
var additionalAssessmentList = [ var additionalAssessmentList = [
"/trials/trials-panel/subject/brain-metastasis", '/trials/trials-panel/subject/brain-metastasis'
]; ]
var medicalAuditList = [ var medicalAuditList = [
"/trials/trials-panel/setting/medical-audit", '/trials/trials-panel/setting/medical-audit',
"/trials/trials-panel/reading/medicalFeedback", '/trials/trials-panel/reading/medicalFeedback',
"/trials/trials-panel/reading/mimMedicalAudit", '/trials/trials-panel/reading/mimMedicalAudit',
"/trials/trials-panel/reading/pmMedicalFeedback", '/trials/trials-panel/reading/pmMedicalFeedback'
]; ]
var piReadingList = [ var piReadingList = [
"/trials/trials-panel/reading/readingTask", '/trials/trials-panel/reading/readingTask',
"/trials/trials-panel/reading/read-task", '/trials/trials-panel/reading/read-task',
"/trials/trials-panel/reading/medicalFeedback", '/trials/trials-panel/reading/medicalFeedback',
"/trials/trials-panel/reading/rereadTask", '/trials/trials-panel/reading/rereadTask'
]; ]
var mmConfirmList = ["/trials/trials-panel/reading/confirmation"]; var mmConfirmList = [
'/trials/trials-panel/reading/confirmation'
]
if (this.TrialConfig.QCProcessEnum === 0 && ~qualityList.indexOf(path)) { if (this.TrialConfig.QCProcessEnum === 0 && ~qualityList.indexOf(path)) {
isShow = false; isShow = false
} }
if ( if (!this.TrialConfig.IsImageConsistencyVerification && ~consistencyList.indexOf(path)) {
!this.TrialConfig.IsImageConsistencyVerification && isShow = false
~consistencyList.indexOf(path)
) {
isShow = false;
} }
if ( if (!this.IsAdditionalAssessment && ~additionalAssessmentList.indexOf(path)) {
!this.IsAdditionalAssessment && isShow = false
~additionalAssessmentList.indexOf(path)
) {
isShow = false;
} }
if ( if (!this.TrialConfig.IsMedicalReview && ~medicalAuditList.indexOf(path)) {
!this.TrialConfig.IsMedicalReview && isShow = false
~medicalAuditList.indexOf(path)
) {
isShow = false;
} }
if ( if (this.IsAllOnlySRReading && ~piReadingList.indexOf(path) && this.hasPermi(['role:pi'])) {
this.IsAllOnlySRReading && isShow = false
~piReadingList.indexOf(path) &&
this.hasPermi(["role:pi"])
) {
isShow = false;
} }
if ( if (this.TrialConfig.EnrollConfirmDefaultUserType !== 10 && this.TrialConfig.PDProgressDefaultUserType !== 10 && mmConfirmList.includes(path)) {
this.TrialConfig.EnrollConfirmDefaultUserType !== 10 && isShow = false
this.TrialConfig.PDProgressDefaultUserType !== 10 &&
mmConfirmList.includes(path)
) {
isShow = false;
} }
return isShow; return isShow
}, },
goBack() { goBack() {
this.$router.push({ path: "/trials/trials-list" }); this.$router.push({ path: '/trials/trials-list' })
}, },
selectTrials(v) { selectTrials(v) {
var trial = this.options.find((o) => { var trial = this.options.find(o => {
return o.Id === v; return o.Id === v
}); })
this.$router.push({ this.$router.push({ path: `/trials/trials-panel?trialId=${trial.Id}&trialCode=${trial.TrialCode}` })
path: `/trials/trials-panel?trialId=${trial.Id}&trialCode=${trial.TrialCode}`,
});
}, },
getTrialList() { getTrialList() {
getTrialSelect() getTrialSelect()
.then((res) => { .then(res => {
this.options = res.Result; this.options = res.Result
this.tabTrialsId = this.$route.query.trialId; this.tabTrialsId = this.$route.query.trialId
})
.catch(() => {
}) })
.catch(() => {});
}, },
selectedTab() { selectedTab() {
var path = this.$route.path; var path = this.$route.path
if (this.$route.path.split("/").length > 4) { if (this.$route.path.split('/').length > 4) {
this.trialsTab = this.getValue(path); this.trialsTab = this.getValue(path)
this.trialsTabChild = path; this.trialsTabChild = path
} else { } else {
this.trialsTab = path; this.trialsTab = path
} }
}, },
getValue(url) { getValue(url) {
var site = url.lastIndexOf("/"); var site = url.lastIndexOf('\/')
return url.substring(0, site); return url.substring(0, site)
}, },
clickTab(v) { clickTab(v) {
try { try {
var query = ``; var query = ``
var url = window.location.href; var url = window.location.href
if (~url.indexOf("?")) { if (~url.indexOf('?')) {
query = url.split("?")[1]; query = url.split('?')[1]
} }
this.$router.push({ path: `${v.name}${query ? "?" : ""}${query}` }); this.$router.push({ path: `${v.name}${query ? '?' : ''}${query}` })
var trialsPanelList = this.trialsRouter.children.find((v) => { var trialsPanelList = this.trialsRouter.children.find(v => { return v.name === 'TrialsPanel' }).children
return v.name === "TrialsPanel"; var isHasChild = trialsPanelList.find(c => { return c.path === v.name }) && trialsPanelList.find(c => { return c.path === v.name }).children
}).children; if (trialsPanelList.find(c => { return c.path === v.name }) && trialsPanelList.find(c => { return c.path === v.name }).tabHiddn) {
var isHasChild = return
trialsPanelList.find((c) => {
return c.path === v.name;
}) &&
trialsPanelList.find((c) => {
return c.path === v.name;
}).children;
if (
trialsPanelList.find((c) => {
return c.path === v.name;
}) &&
trialsPanelList.find((c) => {
return c.path === v.name;
}).tabHiddn
) {
return;
} }
isHasChild = isHasChild isHasChild =isHasChild ? isHasChild.filter(i => this.isShow(i.path)) : []
? isHasChild.filter((i) => this.isShow(i.path))
: [];
if (isHasChild && isHasChild.length > 0) { if (isHasChild && isHasChild.length > 0) {
this.trialsTabChild = isHasChild[0].path; this.trialsTabChild = isHasChild[0].path
this.$router.push({ this.$router.push({ path: `${this.trialsTabChild}${query ? '?' : ''}${query}` })
path: `${this.trialsTabChild}${query ? "?" : ""}${query}`,
});
} }
} catch (e) { } catch (e) {
console.log(e); console.log(e)
} }
}, }
}, }
}; }
</script> </script>
<style lang="scss"> <style lang="scss">
.trialsTab { .trialsTab{
.my_icon_box { .my_icon_box{
padding: 0 20px 0 0; padding:0 20px 0 0;
transition: color, transform 0.3s; transition: color,transform .3s;
cursor: pointer; cursor: pointer;
color: #666; color: #666;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
&:hover { &:hover{
color: #428bca; color: #428bca;
}
span{
margin-left: 3px;
font-size: 14px;
}
} }
span { .el-tabs__header{
margin-left: 3px; margin-bottom: 3px;
font-size: 14px; }
position: relative;
.el-input--medium .el-input__inner{
height: 44px;line-height: 44px;width: 280px;
border: none;
text-align: right;
} }
} }
.el-tabs__header { .base-model-wrapper{
margin-bottom: 3px; .el-dialog__header{
} padding: 10px;
position: relative; .el-dialog__headerbtn{
.el-input--medium .el-input__inner { top: 10px;
height: 44px; right: 10px;
line-height: 44px; }
width: 280px; }
border: none; .el-dialog__body{
text-align: right; padding:10px 10px 10px 10px;
} .base-modal-body{
} min-height: 100px;
.base-model-wrapper { max-height:650px;
.el-dialog__header { overflow-y: auto;
padding: 10px; padding: 10px;
.el-dialog__headerbtn { border: 1px solid #e0e0e0;
top: 10px; }
right: 10px; }
} .el-dialog__footer{
}
.el-dialog__body {
padding: 10px 10px 10px 10px;
.base-modal-body {
min-height: 100px;
max-height: 650px;
overflow-y: auto;
padding: 10px; padding: 10px;
border: 1px solid #e0e0e0;
} }
} }
.el-dialog__footer {
padding: 10px;
}
}
</style> </style>

View File

@ -57,7 +57,6 @@
'role:rcrc', 'role:rcrc',
'role:rir', 'role:rir',
'role:zys', 'role:zys',
'role:qa',
]) ])
" "
index="3" index="3"