import {isURL} from '@tievd/cube-block/lib/utils/validate' import onlineCommons from '@jeecg/antd-online-mini' import getCubeComponentPath from '@tievd/cube-block/lib/utils/cubeComponentPath' // 生成首页路由 export function generateIndexRouter(data) { let indexRouter = [ { path: '/', name: 'dashboard', //component: () => import('@/components/layouts/BasicLayout'), component: resolve => require(['@/components/layouts/TabLayout'], resolve), meta: {title: '首页'}, redirect: '/dashboard/analysis', children: [...generateChildRouters(data)] }, { path: '*', redirect: '/404', hidden: true } ] return indexRouter } // 生成嵌套路由(子路由) function generateChildRouters(data) { const routers = [] for (let item of data) { let component = '' if (item.component.indexOf('layouts') >= 0) { component = 'components/' + item.component } else { component = 'views/' + item.component } // eslint-disable-next-line let URL = (item.meta.url || '').replace(/{{([^}}]+)?}}/g, (s1, s2) => eval(s2)) // URL支持{{ window.xxx }}占位符变量 if (isURL(URL)) { item.meta.url = URL } let componentPath if (item.component == 'modules/online/cgform/OnlCgformHeadList') { componentPath = onlineCommons.OnlCgformHeadList } else if (item.component == 'modules/online/cgform/OnlCgformCopyList') { componentPath = onlineCommons.OnlCgformCopyList } else if (item.component == 'modules/online/cgform/auto/OnlCgformAutoList') { componentPath = onlineCommons.OnlCgformAutoList } else if (item.component == 'modules/online/cgform/auto/OnlCgformTreeList') { componentPath = onlineCommons.OnlCgformTreeList } else if (item.component == 'modules/online/cgform/auto/erp/OnlCgformErpList') { componentPath = onlineCommons.OnlCgformErpList } else if (item.component == 'modules/online/cgform/auto/tab/OnlCgformTabList') { componentPath = onlineCommons.OnlCgformTabList } else if (item.component == 'modules/online/cgform/auto/innerTable/OnlCgformInnerTableList') { componentPath = onlineCommons.OnlCgformInnerTableList } else if (item.component == 'modules/online/cgreport/OnlCgreportHeadList') { componentPath = onlineCommons.OnlCgreportHeadList } else if (item.component == 'modules/online/cgreport/auto/OnlCgreportAutoList') { componentPath = onlineCommons.OnlCgreportAutoList } else { componentPath = resolve => require(['@/' + component + '.vue'], resolve) } componentPath = getCubeComponentPath(item.component, componentPath) let menu = { path: item.path, name: item.name, redirect: item.redirect, component: componentPath, //component: resolve => require(['@/' + component+'.vue'], resolve), hidden: item.hidden, meta: { title: item.meta.title, icon: item.meta.icon, url: item.meta.url, permissionList: item.meta.permissionList, keepAlive: item.meta.keepAlive, /*update_begin author:wuxianquan date:20190908 for:赋值 */ internalOrExternal: item.meta.internalOrExternal, /*update_end author:wuxianquan date:20190908 for:赋值 */ componentName: item.meta.componentName } } if (item.alwaysShow) { menu.alwaysShow = true menu.redirect = menu.path } if (item.children && item.children.length > 0) { menu.children = [...generateChildRouters(item.children)] } //--update-begin----author:scott---date:20190320------for:根据后台菜单配置,判断是否路由菜单字段,动态选择是否生成路由(为了支持参数URL菜单)------ //判断是否生成路由 if (item.route && item.route === '0') { //console.log(' 不生成路由 item.route: '+item.route); //console.log(' 不生成路由 item.path: '+item.path); } else { routers.push(menu) } //--update-end----author:scott---date:20190320------for:根据后台菜单配置,判断是否路由菜单字段,动态选择是否生成路由(为了支持参数URL菜单)------ } return routers } // 去除对象空值 export function clearEmptyPro(data) { let curVal; let toString = Object.prototype.toString; let dataType = toString.call(data); if (data || dataType === "[object Number]" || dataType === "[object Boolean]") { switch (dataType) { case "[object Object]": if (Object.keys(data).length > 0) { let momObj = {}; for (let key in data) { let value = clearEmptyPro(data[key]); let valueType = toString.call(value); valueType === "[object Boolean]" || valueType === "[object Number]" || value ? momObj[key] = value : ""; } curVal = momObj; } else { return; } break; case "[object Array]": if (data.length > 0) { let momValue = []; data.forEach((e) => { let value = clearEmptyPro(e); let valueType = toString.call(value); valueType === "[object Boolean]" || valueType === "[object Number]" || value ? momValue.push(value) : ""; }); momValue.length > 0 ? curVal = momValue : ""; } else { return; } break; case "[object Boolean]": default: curVal = data; break; } } else { return; } return curVal; } // 分钟转换 时分 export function ChangeHourMinutestr(str) { if (str !== 0 && str !== "" && str !== null && str !== undefined) { let hour = (Math.floor(str / 60)).toString() let minute = (str % 60).toString() return `${hour > 0 ? hour + '小时' : ''}${minute > 0 ? minute + "分钟 " : ""}` } else { return ''; } } export const validateTxtSpec = (rule, value, callback) => { if (value != null && value !== '') { if (value.indexOf(' ') !== -1) { callback(new Error('不能包含空格')) } else { callback() } } else { callback() } } export const validateIPAddress = (rule, value, callback) => { if (value == null) { return callback(new Error('IP地址不能为空')); } let regexp = /^((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}$/; let valdata = value.split(','); let isCorrect = true; if (valdata.length) { for (let i = 0; i < valdata.length; i++) { if (regexp.test(valdata[i]) == false) { isCorrect = false; } } } if (!isCorrect) { callback(new Error('请输入正确的IP地址')); } else { callback() } }