部分问题修复
continuous-integration/drone/push Build is passing Details

main
wangxiaoshuang 2025-09-12 17:36:38 +08:00
parent 1bef8a027a
commit 72f2e0a459
8 changed files with 59 additions and 65 deletions

View File

@ -15,7 +15,7 @@ Vue.use(vcrontab); //使用方式:
import App from './App' import App from './App'
import store from './store' import store from './store'
import router from './router' import router from './router'
import WHITELIST from "./utils/whiteList"
import '@/icons' // icon import '@/icons' // icon
import '@/permission' // permission control import '@/permission' // permission control
import md5 from 'js-md5' import md5 from 'js-md5'
@ -295,7 +295,7 @@ async function VueInit() {
if (eval(process.env.VUE_APP_LOGIN_FOR_PERMISSION)) { if (eval(process.env.VUE_APP_LOGIN_FOR_PERMISSION)) {
setInterval(() => { setInterval(() => {
var lang = zzSessionStorage.getItem('lang') ? zzSessionStorage.getItem('lang') : 'zh' var lang = zzSessionStorage.getItem('lang') ? zzSessionStorage.getItem('lang') : 'zh'
if (_vm.$route.path === '/ReviewersResearchForm' || _vm.$route.path === '/ReviewersResearch' || _vm.$route.path === '/' || _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') { if (WHITELIST.includes(_vm.$route.path)) {
return return
} }
if (_vm.$store.state.user.userId !== zzSessionStorage.getItem('userId')) { if (_vm.$store.state.user.userId !== zzSessionStorage.getItem('userId')) {
@ -355,7 +355,7 @@ async function VueInit() {
/* eslint-disable */ /* eslint-disable */
waitOperate(eval(process.env.VUE_APP_LOGOUT_FOR_PERMISSION) ? () => { waitOperate(eval(process.env.VUE_APP_LOGOUT_FOR_PERMISSION) ? () => {
var lang = zzSessionStorage.getItem('lang') ? zzSessionStorage.getItem('lang') : 'zh' var lang = zzSessionStorage.getItem('lang') ? zzSessionStorage.getItem('lang') : 'zh'
if (_vm.$route.path === '/ReviewersResearchForm' || _vm.$route.path === '/ReviewersResearch' || _vm.$route.path === '/' || _vm.$route.path === '/login' || _vm.$route.path === '/email-recompose' || _vm.$route.path === '/recompose' || _vm.$route.path === '/resetpassword' || _vm.$route.path === '/error') { if (WHITELIST.includes(_vm.$route.path)) {
count = 0; count = 0;
localStorage.setItem('count', '0') localStorage.setItem('count', '0')
return return
@ -383,7 +383,7 @@ async function VueInit() {
} : () => { }, process.env.VUE_APP_LOGOUT_FOR_TIME, } : () => { }, process.env.VUE_APP_LOGOUT_FOR_TIME,
eval(process.env.VUE_APP_LOCK_FOR_PERMISSION) ? () => { eval(process.env.VUE_APP_LOCK_FOR_PERMISSION) ? () => {
var lang = zzSessionStorage.getItem('lang') ? zzSessionStorage.getItem('lang') : 'zh' 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 === '/email-recompose' || _vm.$route.path === '/recompose' || _vm.$route.path === '/resetpassword' || _vm.$route.path === '/error') { if (WHITELIST.includes(_vm.$route.path)) {
count = 0; count = 0;
localStorage.setItem('count', '0') localStorage.setItem('count', '0')
if (_vm.$route.path === '/login') { if (_vm.$route.path === '/login') {

View File

@ -7,13 +7,13 @@ import 'nprogress/nprogress.css'
import { getToken, removeToken } from '@/utils/auth' import { getToken, removeToken } from '@/utils/auth'
import Vue from 'vue' import Vue from 'vue'
import { OSSclient } from './utils/oss' import { OSSclient } from './utils/oss'
import WHITELIST from './utils/whiteList'
import moment from "moment"; import moment from "moment";
// import getPageTitle from '@/utils/get-page-title' // import getPageTitle from '@/utils/get-page-title'
NProgress.configure({ showSpinner: false }) NProgress.configure({ showSpinner: false })
const whiteList = ['/activate', '/ReviewersResearch', '/login', '/error', '/resetpassword', '/recompose', '/email-recompose', '/trialStats', '/showdicom', '/imagesShare', '/audit', '/preview', '/researchLogin', '/blindResumeInfo', '/trialsResume', '/joinVerify', '/showNoneDicoms', '/noneDicomReading', '/clinicalData', '/readingDicoms', '/readingPage', '/visitDicomReview', '/visitNondicomReview', '/globalReview', '/adReview', '/oncologyReview', '/nonedicoms'] const whiteList = WHITELIST
// 影像页关闭
Vue.prototype.$openWindow = null Vue.prototype.$openWindow = null
Vue.prototype.$setOpenWindow = (openWindow) => { Vue.prototype.$setOpenWindow = (openWindow) => {
if (Vue.prototype.$openWindow) { if (Vue.prototype.$openWindow) {

View File

@ -2,6 +2,7 @@ import axios from 'axios'
import { Message, MessageBox, Alert } from 'element-ui' import { Message, MessageBox, Alert } from 'element-ui'
import store from '@/store' import store from '@/store'
import router from '@/router' import router from '@/router'
import WHITELIST from "./whiteList"
import Vue from 'vue' import Vue from 'vue'
const ROUTER = require('@/router'); const ROUTER = require('@/router');
axios.defaults.withCredentials = false axios.defaults.withCredentials = false
@ -25,7 +26,7 @@ service.interceptors.request.use(
} }
try { try {
if (eval(process.env.VUE_APP_LOGIN_FOR_PERMISSION)) { if (eval(process.env.VUE_APP_LOGIN_FOR_PERMISSION)) {
if (!path || path === '/ReviewersResearchForm' || path === '/ReviewersResearch' || path === '/' || path === '/login' || path === '/researchForm' || path === '/researchLogin' || path === '/email-recompose' || path === '/recompose' || path === '/resetpassword' || path === '/error') { if (!path || WHITELIST.some(item => item === path)) {
return config return config
} }
if (store.state.user.userId !== zzSessionStorage.getItem('userId')) { if (store.state.user.userId !== zzSessionStorage.getItem('userId')) {

2
src/utils/whiteList.js Normal file
View File

@ -0,0 +1,2 @@
const WHITELIST = ['/', "/curriculumVitae", 'researchDetail_m', '/researchForm', '/ReviewersResearch', '/login', '/error', '/resetpassword', '/recompose', '/email-recompose', '/trialStats', '/showdicom', '/imagesShare', '/audit', '/preview', '/researchLogin', '/researchLogin_m', '/blindResumeInfo', '/trialsResume', '/joinVerify', '/showNoneDicoms', '/noneDicomReading', '/clinicalData', '/readingDicoms', '/readingPage', '/visitDicomReview', '/visitNondicomReview', '/globalReview', '/adReview', '/oncologyReview', '/nonedicoms']
export default WHITELIST

View File

@ -39,7 +39,8 @@
<el-form-item :label="$t('system:hospital:isCanConnectInternet')" <el-form-item :label="$t('system:hospital:isCanConnectInternet')"
v-hasPermi="['system:hospital:connectInternet']"> v-hasPermi="['system:hospital:connectInternet']">
<el-switch v-model="hospital.IsCanConnectInternet" active-color="#13ce66" <el-switch v-model="hospital.IsCanConnectInternet" active-color="#13ce66"
inactive-color="#ff4949" active-text="是" inactive-text="否" :disabled="disabled"> inactive-color="#ff4949" :active-text="$fd('YesOrNo', true)"
:inactive-text="$fd('YesOrNo', false)" :disabled="disabled">
</el-switch> </el-switch>
</el-form-item> </el-form-item>
<el-form-item :label="$t('system:hospital:logo')" prop="HospitalLogoPath"> <el-form-item :label="$t('system:hospital:logo')" prop="HospitalLogoPath">

View File

@ -170,27 +170,27 @@ export default {
IdentityUserIdList: [] IdentityUserIdList: []
}, },
rules: { rules: {
Affiliation: [ // Affiliation: [
{ required: true, message: 'Please specify', trigger: 'blur' }, // { required: true, message: 'Please specify', trigger: 'blur' },
], // ],
Code: [ Code: [
{ required: true, message: 'Please specify', trigger: 'blur' }, { required: true, message: 'Please specify', trigger: 'blur' },
], ],
ContactName: [ // ContactName: [
{ required: true, message: 'Please specify', trigger: 'blur' }, // { required: true, message: 'Please specify', trigger: 'blur' },
], // ],
ContactPhone: [ // ContactPhone: [
{ required: true, message: 'Please specify', trigger: 'blur' }, // { required: true, message: 'Please specify', trigger: 'blur' },
], // ],
Name: [ Name: [
{ required: true, message: 'Please specify', trigger: 'blur' }, { required: true, message: 'Please specify', trigger: 'blur' },
], ],
CallingAE: [ // CallingAE: [
{ required: true, message: 'Please specify', trigger: 'blur' }, // { required: true, message: 'Please specify', trigger: 'blur' },
], // ],
IdentityUserIdList: [ // IdentityUserIdList: [
{ required: true, type: 'array', message: 'Please select', trigger: 'blur' }, // { required: true, type: 'array', message: 'Please select', trigger: 'blur' },
], // ],
}, },
GAUserList: [], GAUserList: [],
status: 'add' status: 'add'

View File

@ -62,7 +62,7 @@
<el-table-column :label="$t('system:hospital:table:updateTime')" prop="UpdateTime" min-width="150" <el-table-column :label="$t('system:hospital:table:updateTime')" prop="UpdateTime" min-width="150"
show-overflow-tooltip /> show-overflow-tooltip />
<el-table-column :label="$t('common:action:action')" fixed="right" prop="" min-width="200" <el-table-column :label="$t('common:action:action')" fixed="right" prop="" min-width="250"
show-overflow-tooltip> show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" :disabled="scope.row.IsDefault" type="text" icon="el-icon-circle-check" <el-button size="mini" :disabled="scope.row.IsDefault" type="text" icon="el-icon-circle-check"

View File

@ -2,31 +2,25 @@
<div class="role"> <div class="role">
<div ref="leftContainer" class="left"> <div ref="leftContainer" class="left">
<el-form :inline="true"> <el-form :inline="true">
<el-form-item label="关键字"> <el-form-item :label="$t('il8n:search:keyword')">
<el-input <el-input v-model="queryParams.SearchFilter" placeholder="" clearable size="small"
v-model="queryParams.SearchFilter" @keyup.enter.native="getList" />
placeholder="请输入关键字"
clearable
size="small"
@keyup.enter.native="getList"
/>
</el-form-item> </el-form-item>
<el-form-item label="状态"> <el-form-item :label="$t('il8n:table:state')">
<el-select v-model="queryParams.GroupId" placeholder="角色组" clearable size="small"> <el-select v-model="queryParams.GroupId" placeholder="" clearable size="small">
<el-option <el-option v-for="item of dict.type.UserTypeGroup" :key="item.value" :label="item.label"
v-for="item of dict.type.UserTypeGroup" :value="item.value" />
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getList"></el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="getList">{{
<el-button v-hasPermi="['system:role:add']" type="primary" icon="el-icon-plus" size="mini" @click="handleAddRole"></el-button> $t('system:dicom:search:search') }}</el-button>
<el-button v-hasPermi="['system:role:add']" type="primary" icon="el-icon-plus" size="mini"
@click="handleAddRole">{{ $t('common:button:new') }}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table v-loading="loading" v-adaptive="{bottomOffset:30}" size="small" height="100" :data="list" class="table"> <el-table v-loading="loading" v-adaptive="{ bottomOffset: 30 }" size="small" height="100" :data="list"
class="table">
<el-table-column type="index" width="50" /> <el-table-column type="index" width="50" />
<el-table-column label="User Type" prop="UserTypeName" min-width="220" show-overflow-tooltip /> <el-table-column label="User Type" prop="UserTypeName" min-width="220" show-overflow-tooltip />
<el-table-column label="Shortname" prop="UserTypeShortName" min-width="120" show-overflow-tooltip /> <el-table-column label="Shortname" prop="UserTypeShortName" min-width="120" show-overflow-tooltip />
@ -41,23 +35,13 @@
{{ $fd('UserType', scope.row.UserTypeEnum) }} {{ $fd('UserType', scope.row.UserTypeEnum) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="Description" prop="Description" min-width="220" show-overflow-tooltip /> <!-- <el-table-column label="Description" prop="Description" min-width="220" show-overflow-tooltip /> -->
<el-table-column label="Action" width="280" v-if="hasPermi(['system:role:edit', 'system:role:delete'])"> <el-table-column label="Action" width="280" v-if="hasPermi(['system:role:edit', 'system:role:delete'])">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button v-hasPermi="['system:role:edit']" size="mini" type="text" icon="el-icon-edit"
v-hasPermi="['system:role:edit']" @click="handleEditRole(scope.row)">{{ $t('common:action:edit') }}</el-button>
size="mini" <el-button v-hasPermi="['system:role:delete']" size="mini" type="text" icon="el-icon-delete"
type="text" @click="handleDeleteRole(scope.row)">{{ $t('common:button:delete') }}</el-button>
icon="el-icon-edit"
@click="handleEditRole(scope.row)"
>Edit</el-button>
<el-button
v-hasPermi="['system:role:delete']"
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDeleteRole(scope.row)"
>Delete</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -167,31 +151,37 @@ export default {
display: flex; display: flex;
padding: 10px; padding: 10px;
border-radius: 5px; border-radius: 5px;
.left { .left {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
width: 0; width: 0;
flex-grow: 4; flex-grow: 4;
// border-right: 1px solid #ccc; // border-right: 1px solid #ccc;
.filter-container { .filter-container {
display: flex; display: flex;
align-items: center; align-items: center;
margin: 5px; margin: 5px;
} }
.data-table { .data-table {
flex: 1; flex: 1;
padding: 5px 0px; padding: 5px 0px;
} }
.pagination-container { .pagination-container {
text-align: right; text-align: right;
} }
} }
.right { .right {
width: 0; width: 0;
flex-grow: 6; flex-grow: 6;
overflow-y: auto; overflow-y: auto;
border-right: 1px solid #ccc; border-right: 1px solid #ccc;
} }
.selected-row { .selected-row {
background-color: cadetblue; background-color: cadetblue;
} }