368 lines
12 KiB
Plaintext
368 lines
12 KiB
Plaintext
|
||
import Vue from 'vue'
|
||
import 'normalize.css/normalize.css' // A modern alternative to CSS resets
|
||
|
||
import ElementUI, { MessageBox } from 'element-ui'
|
||
import { getBasicDataAllSelect } from '@/api/dictionary/dictionary'
|
||
// import 'element-ui/lib/theme-chalk/index.css'
|
||
import './assets/css/theme-green/index.css' // 浅绿色主题
|
||
import './assets/css/iconfont/index.css' // 阿里巴巴图标库
|
||
// import locale from 'element-ui/lib/locale/lang/en' // lang i18n
|
||
import i18n from './lang'
|
||
import '@/styles/index.scss' // global css
|
||
|
||
import App from './App'
|
||
import store from './store'
|
||
import router from './router'
|
||
|
||
import '@/icons' // icon
|
||
import '@/permission' // permission control
|
||
import md5 from 'js-md5'
|
||
import VueClipboard from 'vue-clipboard2'
|
||
Vue.use(VueClipboard)
|
||
// import htmlToPdf from './utils/htmlToPdf'
|
||
// Vue.use(htmlToPdf)
|
||
import permission from './utils/permission'
|
||
import { OSSclient } from './utils/oss'
|
||
Vue.use(permission)
|
||
|
||
import Viewer from 'v-viewer'
|
||
import './assets/css/viewer.css'
|
||
|
||
Vue.use(Viewer)
|
||
// Viewer.setDefaults({
|
||
// Options: {
|
||
// 'inline': true,
|
||
// 'button': true,
|
||
// 'navbar': true,
|
||
// 'title': true,
|
||
// 'toolbar': true,
|
||
// 'tooltip': true,
|
||
// 'movable': true,
|
||
// 'zoomable': true,
|
||
// 'rotatable': true,
|
||
// 'scalable': true,
|
||
// 'transition': true,
|
||
// 'fullscreen': true,
|
||
// 'keyboard': true,
|
||
// 'url': 'data-source'
|
||
// }
|
||
// })
|
||
|
||
import hasPermi from './directive/permission'
|
||
Vue.use(hasPermi)
|
||
|
||
// set ElementUI lang to EN
|
||
// Vue.use(ElementUI, { locale, size: 'medium' })
|
||
// 如果想要中文版 element-ui,按如下方式声明
|
||
// Vue.use(ElementUI)
|
||
Vue.use(ElementUI, {
|
||
i18n: (key, value) => i18n.t(key, value),
|
||
size: 'medium'
|
||
})
|
||
|
||
import adaptive from '@/directive/adaptive/index'
|
||
// 表格自适应指令
|
||
Vue.use(adaptive)
|
||
import dialogDrag from '@/directive/dialogDrag'
|
||
// 窗口拖拽
|
||
Vue.use(dialogDrag)
|
||
|
||
import { parseTime, resetForm, selectDictLabel, selectDictLabels, handleTree, params } from '@/utils/ruoyi'
|
||
import { xfHasPermi } from '@/utils/hasPermi'
|
||
// 字典数据组件
|
||
import DictTag from '@/components/DictTag'
|
||
import DictData from '@/components/DictData'
|
||
import { getBasicDataSelect } from '@/api/dictionary/dictionary'
|
||
import { checkConfig } from '@/const/check/index'
|
||
// 全局方法挂载
|
||
var $q = params
|
||
Vue.prototype.checkConfig = checkConfig
|
||
Vue.prototype.$q = $q()
|
||
Vue.prototype.hasPermi = xfHasPermi
|
||
Vue.prototype.getDicts = getBasicDataSelect
|
||
Vue.prototype.selectDictLabel = selectDictLabel
|
||
Vue.prototype.selectDictLabels = selectDictLabels
|
||
Vue.component('DictTag', DictTag)
|
||
// 全局方法挂载
|
||
Vue.prototype.parseTime = parseTime
|
||
Vue.prototype.resetForm = resetForm
|
||
Vue.prototype.selectDictLabel = selectDictLabel
|
||
// Vue.prototype.download = download
|
||
Vue.prototype.handleTree = handleTree
|
||
Vue.prototype.OSSclient = OSSclient
|
||
Vue.prototype.$validatePassword = (rule, value, callback) => {
|
||
/* eslint-disable */
|
||
var reg1 = eval(process.env.VUE_APP_PASSWORD_FOR_PERMISSION) ? new RegExp(`${process.env.VUE_APP_PASSWORD_FOR_REGULAR}`) : /.*/g; //密码必须是8位以上、必须含有字母、数字、特殊符号
|
||
if (!reg1.test(value)) {
|
||
callback(new Error("密码必须是10位以上、必须含有小写字母、大写字母、数字、特殊符号"));
|
||
} else {
|
||
callback();
|
||
}
|
||
}
|
||
|
||
DictData.install()
|
||
|
||
import global_ from './components/Global'
|
||
Vue.prototype.GLOBAL = global_
|
||
Vue.config.productionTip = false
|
||
|
||
var _vm
|
||
async function VueInit () {
|
||
var params
|
||
if (~window.location.href.indexOf('/readingDicoms') || ~window.location.href.indexOf('/noneDicomReading')) {
|
||
params = $q('TrialReadingCriterionId')
|
||
}
|
||
var res = await getBasicDataAllSelect(params)
|
||
let d = function (code) {
|
||
var dictInfo = res.Result
|
||
var lang = zzSessionStorage.getItem('lang')?zzSessionStorage.getItem('lang'):'zh'
|
||
try {
|
||
for (var code in dictInfo) {
|
||
var dictList = (dictInfo[code] && dictInfo[code].length > 0) ? dictInfo[code].map(dict => {
|
||
return {
|
||
id: dict.Id,
|
||
label: lang==='zh' ? dict.ValueCN : dict.Value,
|
||
value: dict.DataTypeEnum === 3 ? eval(dict.Code) : dict.IsEnumInt ? parseInt(dict.Code): dict.Code,
|
||
raw: Object.assign({}, dict),
|
||
IsBaseLineUse: false,
|
||
IsFollowVisitUse: false
|
||
}
|
||
}) : []
|
||
dictInfo[code] = dictList
|
||
}
|
||
} catch (e){
|
||
console.error(e)
|
||
}
|
||
return dictInfo
|
||
}()
|
||
Vue.prototype.$d = d
|
||
Vue.prototype.$fd = function (code, v, type) {
|
||
type = type || 'value'
|
||
return d[code].find(i => {
|
||
return i[type] === v
|
||
}) ? d[code].find(i => {
|
||
return i[type] === v
|
||
}).label : ''
|
||
}
|
||
Vue.prototype.$updateDictionary = function() {
|
||
Vue.prototype.$d = function (code) {
|
||
var dictInfo = res.Result
|
||
console.log(dictInfo)
|
||
var lang = zzSessionStorage.getItem('lang')?zzSessionStorage.getItem('lang'):'zh'
|
||
try {
|
||
for (var code in dictInfo) {
|
||
var dictList = (dictInfo[code] && dictInfo[code].length > 0) ? dictInfo[code].map(dict => {
|
||
return {
|
||
id: dict.raw.Id,
|
||
label: lang==='zh' ? dict.raw.ValueCN : dict.raw.Value,
|
||
value: dict.raw.DataTypeEnum === 3 ? eval(dict.raw.Code) : dict.raw.IsEnumInt ? parseInt(dict.raw.Code): dict.raw.Code,
|
||
raw: Object.assign({}, dict.raw),
|
||
IsBaseLineUse: false,
|
||
IsFollowVisitUse: false
|
||
}
|
||
}) : []
|
||
_vm.$set(dictInfo, code, dictList)
|
||
}
|
||
} catch (e){
|
||
console.error(e)
|
||
}
|
||
console.log(dictInfo)
|
||
return dictInfo
|
||
}()
|
||
_vm.$forceUpdate()
|
||
}
|
||
_vm = new Vue({
|
||
el: '#app',
|
||
router,
|
||
store,
|
||
i18n,
|
||
data: {
|
||
unlock: {
|
||
my_username: null,
|
||
my_password: null
|
||
}
|
||
},
|
||
render: h => h(App)
|
||
})
|
||
var isLock = zzSessionStorage.getItem('isLock')
|
||
var isOpen = false
|
||
let count = 0;
|
||
if (eval(process.env.VUE_APP_LOGIN_FOR_PERMISSION)) {
|
||
setInterval(() => {
|
||
if (_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') {
|
||
return
|
||
}
|
||
if (_vm.$store.state.user.userId !== zzSessionStorage.getItem('userId')) {
|
||
window.location.href = `/login`
|
||
zzSessionStorage.removeItem('lastWorkbench')
|
||
_vm.$alert('同一浏览器只允许同时登陆一个账户', {
|
||
type: 'warning',
|
||
})
|
||
}
|
||
}, 3000)
|
||
}
|
||
const waitOperate = (callback, second, callback2, second2) => {
|
||
let x;
|
||
let y;
|
||
let timer;
|
||
//监听键盘
|
||
function countTime() {
|
||
count++
|
||
if (count == parseInt(second2) || isLock === 'true') {
|
||
callback2();
|
||
}
|
||
if (count >= second) {
|
||
callback();
|
||
count = 0;
|
||
// clearInterval(timer);
|
||
}
|
||
}
|
||
var blob = new Blob([document.querySelector('#worker').textContent]);
|
||
var url = window.URL.createObjectURL(blob);
|
||
var worker = new Worker(url);
|
||
worker.onmessage = function (e, msg) {
|
||
if (localStorage.getItem('count') === '0') {
|
||
count = 0
|
||
localStorage.removeItem('count')
|
||
}
|
||
countTime()
|
||
}
|
||
//监听鼠标
|
||
document.onmousemove = function (event) {
|
||
const x1 = event.clientX;
|
||
const y1 = event.clientY;
|
||
if (x != x1 || y != y1) {
|
||
count = 0;
|
||
localStorage.setItem('count', '0')
|
||
}
|
||
x = x1;
|
||
y = y1;
|
||
};
|
||
document.onkeydown = function () {
|
||
count = 0;
|
||
localStorage.setItem('count', '0')
|
||
};
|
||
}
|
||
const h = _vm.$createElement
|
||
/* eslint-disable */
|
||
waitOperate(eval(process.env.VUE_APP_LOGOUT_FOR_PERMISSION) ? () => {
|
||
if (_vm.$route.path === '/login' || _vm.$route.path === '/email-recompose' || _vm.$route.path === '/recompose' || _vm.$route.path === '/resetpassword' || _vm.$route.path === '/error') {
|
||
return
|
||
}
|
||
_vm.$store.dispatch('user/logout').then(res => {
|
||
window.location.href = `/login`
|
||
})
|
||
_vm.$alert('由于您长时间未操作,为保护您的数据安全已强制将您下线,如果需要继续操作请重新登陆!', {
|
||
type: 'warning',
|
||
})
|
||
} : () => {}, process.env.VUE_APP_LOGOUT_FOR_TIME,
|
||
eval(process.env.VUE_APP_LOCK_FOR_PERMISSION) ? () => {
|
||
if (_vm.$route.path === '/login' || _vm.$route.path === '/email-recompose' || _vm.$route.path === '/recompose' || _vm.$route.path === '/resetpassword' || _vm.$route.path === '/error') {
|
||
if (_vm.$route.path === '/login') {
|
||
zzSessionStorage.removeItem('lastWorkbench')
|
||
zzSessionStorage.removeItem('isLock')
|
||
isLock = null
|
||
}
|
||
return
|
||
}
|
||
if (isOpen) {
|
||
return
|
||
}
|
||
isOpen = true
|
||
zzSessionStorage.setItem('isLock', 'true')
|
||
_vm.$msgbox({
|
||
title: '已锁定',
|
||
confirmButtonText: '解锁',
|
||
showClose: false,
|
||
beforeClose: (action, instance, done) => {
|
||
if (action === 'confirm') {
|
||
if (!_vm.unlock.my_username) {
|
||
_vm.$message.error('请输入您的用户名解锁')
|
||
return
|
||
}
|
||
if (!_vm.unlock.my_password) {
|
||
_vm.$message.error('请输入您的密码解锁')
|
||
return
|
||
}
|
||
var my_username = zzSessionStorage.getItem('my_username')
|
||
var my_password = zzSessionStorage.getItem('my_password')
|
||
if (md5(_vm.unlock.my_password) === my_password && my_username === _vm.unlock.my_username) {
|
||
_vm.$message.success('解锁成功,请继续操作')
|
||
_vm.unlock = {
|
||
my_username: null,
|
||
my_password: null
|
||
}
|
||
isOpen = false
|
||
count = 0;
|
||
isLock = null
|
||
zzSessionStorage.removeItem('isLock')
|
||
localStorage.setItem('count', '0')
|
||
document.querySelector('#my_username').value = null
|
||
document.querySelector('#my_password').value = null
|
||
setTimeout(() => {
|
||
done()
|
||
}, 500)
|
||
} else {
|
||
_vm.$message.error('请输入正确用户名密码')
|
||
}
|
||
}
|
||
},
|
||
message: h('div', {} , [
|
||
h('el-form', {
|
||
props: { labelWidth: "80px" }
|
||
}, [
|
||
h('el-form-item', {
|
||
props: {label: '用户名'},
|
||
}, [
|
||
h('input',{
|
||
props: {
|
||
value: _vm.unlock.my_username
|
||
},
|
||
attrs: {
|
||
id: 'my_username',
|
||
class: 'el-input__inner',
|
||
autocomplete: 'new-password'
|
||
},
|
||
on: {
|
||
change: (event) => {
|
||
_vm.unlock.my_username = event.target.value
|
||
},
|
||
input: (event) => {
|
||
_vm.unlock.my_username = event.target.value
|
||
}
|
||
}
|
||
})
|
||
]),
|
||
h('el-form-item', {
|
||
props: {label: '密码'},
|
||
}, [
|
||
h('input', {
|
||
props: {
|
||
value: _vm.unlock.my_password
|
||
},
|
||
attrs: {
|
||
id: 'my_password',
|
||
class: 'el-input__inner',
|
||
type: 'password',
|
||
autocomplete: 'new-password'
|
||
},
|
||
on: {
|
||
change: (event) => {
|
||
_vm.unlock.my_password = event.target.value
|
||
},
|
||
input: (event) => {
|
||
_vm.unlock.my_password = event.target.value
|
||
}
|
||
}
|
||
})
|
||
])
|
||
])
|
||
])
|
||
})
|
||
} : () => {}, process.env.VUE_APP_LOCK_FOR_TIME)
|
||
}
|
||
VueInit()
|
||
|
||
|