未启动项目部分页面不可访问
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> <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 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-tab-pane
<el-tabs v-if="!item.tabHiddn" v-model="trialsTabChild" @tab-click="clickTab"> 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"> <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="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)" :label="$t(item1.LanguageMark)"
:name="item1.path" :name="item1.path"
/> />
@ -16,263 +42,333 @@
</el-tabs> </el-tabs>
</el-tab-pane> </el-tab-pane>
</el-tabs> </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 /> <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 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> <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 => { return v.name === 'Trials' }), trialsRouter: this.$store.getters.routes.find((v) => {
return v.name === "Trials";
}),
trialsTab: null, trialsTab: null,
trialsTabChild: null, trialsTabChild: null,
tabTrialsId: null, tabTrialsId: null,
options: [], options: [],
TrialConfig: {}, TrialConfig: {},
TrialStatusStr: null, TrialStatusStr: "Initializing",
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('lastWorkbench', `${v.path}${query ? '?' : ''}${query}`) zzSessionStorage.setItem(
var firstGoIn = this.trialsRouter.children.find(v => { return v.name === 'TrialsPanel' }).children[0] "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)) // 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({ path: `${firstGoIn.path}${query ? '?' : ''}${query}` }) this.$router.replace({
path: `${firstGoIn.path}${query ? "?" : ""}${query}`,
});
if (firstGoIn.children && firstGoIn.children.length > 0) { 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=/' // document.cookie = 'TrialId=' + this.$route.query.trialId + ';path=/'
}, },
trialId(v) { trialId(v) {
getUserDocumentList({ TrialId: this.$route.query.trialId }).then(async res => { getUserDocumentList({ TrialId: this.$route.query.trialId }).then(
var total = res.OtherInfo.NeedSignCount async (res) => {
var TrialStatusStr = res.OtherInfo.TrialStatusStr var total = res.OtherInfo.NeedSignCount;
this.IsAdditionalAssessment = res.OtherInfo.IsAdditionalAssessment var TrialStatusStr = res.OtherInfo.TrialStatusStr;
this.TrialStatusStr = TrialStatusStr this.IsAdditionalAssessment = res.OtherInfo.IsAdditionalAssessment;
await store.dispatch('user/setTotalNeedSignTrialDocCount', total) this.TrialStatusStr = TrialStatusStr;
await store.dispatch('user/setTrialStatusStr', TrialStatusStr) await store.dispatch("user/setTotalNeedSignTrialDocCount", total);
this.TrialConfig = res.OtherInfo.TrialConfig await store.dispatch("user/setTrialStatusStr", TrialStatusStr);
this.IsAllOnlySRReading = res.OtherInfo.IsAllOnlySRReading this.TrialConfig = res.OtherInfo.TrialConfig;
}) this.IsAllOnlySRReading = res.OtherInfo.IsAllOnlySRReading;
} }
);
},
}, },
mounted() { mounted() {
var query = `` console.log(this.trialsRouter);
var url = window.location.href var query = ``;
if (~url.indexOf('?')) { var url = window.location.href;
query = url.split('?')[1] if (~url.indexOf("?")) {
query = url.split("?")[1];
} }
getUserDocumentList({ TrialId: this.$route.query.trialId }).then(async res => { getUserDocumentList({ TrialId: this.$route.query.trialId }).then(
var total = res.OtherInfo.NeedSignCount async (res) => {
var TrialStatusStr = res.OtherInfo.TrialStatusStr var total = res.OtherInfo.NeedSignCount;
this.IsAdditionalAssessment = res.OtherInfo.IsAdditionalAssessment var TrialStatusStr = res.OtherInfo.TrialStatusStr;
this.TrialStatusStr = TrialStatusStr this.IsAdditionalAssessment = res.OtherInfo.IsAdditionalAssessment;
await store.dispatch('user/setTotalNeedSignTrialDocCount', total) this.TrialStatusStr = TrialStatusStr;
await store.dispatch('user/setTrialStatusStr', TrialStatusStr) await store.dispatch("user/setTotalNeedSignTrialDocCount", total);
this.TrialConfig = res.OtherInfo.TrialConfig await store.dispatch("user/setTrialStatusStr", TrialStatusStr);
this.IsAllOnlySRReading = res.OtherInfo.IsAllOnlySRReading 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] 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)) // 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({ path: `${firstGoIn.path}${query ? '?' : ''}${query}` }) this.$router.replace({
path: `${firstGoIn.path}${query ? "?" : ""}${query}`,
});
if (firstGoIn.children && firstGoIn.children.length > 0) { 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: { 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 = [ var consistencyList = ["/trials/trials-panel/visit/consistency-check"];
'/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 = [ var mmConfirmList = ["/trials/trials-panel/reading/confirmation"];
'/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 (!this.TrialConfig.IsImageConsistencyVerification && ~consistencyList.indexOf(path)) { if (
isShow = false !this.TrialConfig.IsImageConsistencyVerification &&
~consistencyList.indexOf(path)
) {
isShow = false;
} }
if (!this.IsAdditionalAssessment && ~additionalAssessmentList.indexOf(path)) { if (
isShow = false !this.IsAdditionalAssessment &&
~additionalAssessmentList.indexOf(path)
) {
isShow = false;
} }
if (!this.TrialConfig.IsMedicalReview && ~medicalAuditList.indexOf(path)) { if (
isShow = false !this.TrialConfig.IsMedicalReview &&
~medicalAuditList.indexOf(path)
) {
isShow = false;
} }
if (this.IsAllOnlySRReading && ~piReadingList.indexOf(path) && this.hasPermi(['role:pi'])) { if (
isShow = false this.IsAllOnlySRReading &&
~piReadingList.indexOf(path) &&
this.hasPermi(["role:pi"])
) {
isShow = false;
} }
if (this.TrialConfig.EnrollConfirmDefaultUserType !== 10 && this.TrialConfig.PDProgressDefaultUserType !== 10 && mmConfirmList.includes(path)) { if (
isShow = false this.TrialConfig.EnrollConfirmDefaultUserType !== 10 &&
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({ path: `/trials/trials-panel?trialId=${trial.Id}&trialCode=${trial.TrialCode}` }) this.$router.push({
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 => { return v.name === 'TrialsPanel' }).children var trialsPanelList = this.trialsRouter.children.find((v) => {
var isHasChild = trialsPanelList.find(c => { return c.path === v.name }) && trialsPanelList.find(c => { return c.path === v.name }).children return v.name === "TrialsPanel";
if (trialsPanelList.find(c => { return c.path === v.name }) && trialsPanelList.find(c => { return c.path === v.name }).tabHiddn) { }).children;
return 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) { if (isHasChild && isHasChild.length > 0) {
this.trialsTabChild = isHasChild[0].path this.trialsTabChild = isHasChild[0].path;
this.$router.push({ path: `${this.trialsTabChild}${query ? '?' : ''}${query}` }) this.$router.push({
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 .3s; transition: color, transform 0.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;
}
} }
.el-tabs__header{ span {
margin-bottom: 3px; margin-left: 3px;
} font-size: 14px;
position: relative;
.el-input--medium .el-input__inner{
height: 44px;line-height: 44px;width: 280px;
border: none;
text-align: right;
} }
} }
.base-model-wrapper{ .el-tabs__header {
.el-dialog__header{ margin-bottom: 3px;
padding: 10px; }
.el-dialog__headerbtn{ position: relative;
top: 10px; .el-input--medium .el-input__inner {
right: 10px; height: 44px;
} line-height: 44px;
} width: 280px;
.el-dialog__body{ border: none;
padding:10px 10px 10px 10px; text-align: right;
.base-modal-body{ }
min-height: 100px; }
max-height:650px; .base-model-wrapper {
overflow-y: auto; .el-dialog__header {
padding: 10px; padding: 10px;
border: 1px solid #e0e0e0; .el-dialog__headerbtn {
} top: 10px;
} right: 10px;
.el-dialog__footer{
padding: 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> </style>