未启动项目部分页面不可访问
continuous-integration/drone/push Build is passing Details

main
wangxiaoshuang 2024-05-24 13:52:59 +08:00
parent aea319dc36
commit b8cb34367b
1 changed files with 270 additions and 174 deletions

View File

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