优化一下产品库加载
This commit is contained in:
		| @@ -1,4 +1,5 @@ | |||||||
| import store from "../store"; | import store from "../store"; | ||||||
|  | import {waiting} from "../utils"; | ||||||
|  |  | ||||||
| export default { | export default { | ||||||
|   routes: () => store.state.apps.map(e => { |   routes: () => store.state.apps.map(e => { | ||||||
| @@ -15,47 +16,63 @@ export default { | |||||||
|   }, |   }, | ||||||
|   loadApps() { |   loadApps() { | ||||||
|     //新App的自动化格式 |     //新App的自动化格式 | ||||||
|     let files = require.context('../../packages', true, /\.(\/.+)\/App[A-Z][^\/]+\.vue$/) |     waiting.init({innerHTML: '应用加载中..'}) | ||||||
|     files.keys().map(path => { |     let apps = require.context('../../', true, /\.(\/.+)\/App[A-Z][^\/]+\.vue$/, "lazy") | ||||||
|       if (files(path).default) { |     Promise.all(apps.keys().map(path => apps(path).then(file => { | ||||||
|         let {name, label} = files(path).default, |       if (file.default) { | ||||||
|             addApp = { |         let {name, label} = file.default, | ||||||
|               name, label: label || name, |  | ||||||
|               path: path.replace(/\.(\/.+\/App.+)\.vue$/, '/packages$1'), |  | ||||||
|               entry: 'appEntry', |  | ||||||
|               module: files(path).default |  | ||||||
|             } |  | ||||||
|         //命名规范入口文件必须以App开头 |  | ||||||
|         store.commit("addApp", addApp) |  | ||||||
|       } |  | ||||||
|     }) |  | ||||||
|     let cores = require.context('../../core', true, /\.(\/.+)\/App[^\/]+\.vue$/) |  | ||||||
|     cores.keys().map(path => { |  | ||||||
|       if (cores(path).default) { |  | ||||||
|         let {name, label} = cores(path).default, |  | ||||||
|             addApp = { |  | ||||||
|               name, label: label || name, |  | ||||||
|               path: path.replace(/\.(\/.+\/App.+)\.vue$/, '/core$1'), |  | ||||||
|               entry: 'appEntry', |  | ||||||
|               module: cores(path).default |  | ||||||
|             } |  | ||||||
|         //命名规范入口文件必须以App开头 |  | ||||||
|         store.commit("addApp", addApp) |  | ||||||
|       } |  | ||||||
|     }) |  | ||||||
|     let project = require.context('../../project', true, /\.(\/.+)\/App[^\/]+\.vue$/) |  | ||||||
|     project.keys().map(path => { |  | ||||||
|       if (project(path).default) { |  | ||||||
|         let {name, label} = project(path).default, |  | ||||||
|             addApp = { |             addApp = { | ||||||
|               name: [path.replace(/\.\/([^\/]+)\/.*/, '$1'), name].join("_"), label: label || name, |               name: [path.replace(/\.\/([^\/]+)\/.*/, '$1'), name].join("_"), label: label || name, | ||||||
|               path: path.replace(/\.(\/.+\/App.+)\.vue$/, '/project$1'), |               path: path.replace(/\.(\/.+\/App.+)\.vue$/, '/$1'), | ||||||
|               entry: 'appEntry', |               entry: 'appEntry', | ||||||
|               module: project(path).default |               module: file.default | ||||||
|             } |             } | ||||||
|  |         waiting.setContent(`加载${name}...`) | ||||||
|         //命名规范入口文件必须以App开头 |         //命名规范入口文件必须以App开头 | ||||||
|         store.commit("addApp", addApp) |         return store.commit("addApp", addApp) | ||||||
|       } |       } else return 0 | ||||||
|     }) |     }))).then(() => waiting.close()) | ||||||
|  |     // let files = require.context('../../packages', true, /\.(\/.+)\/App[A-Z][^\/]+\.vue$/) | ||||||
|  |     // files.keys().map(path => { | ||||||
|  |     //   if (files(path).default) { | ||||||
|  |     //     let {name, label} = files(path).default, | ||||||
|  |     //         addApp = { | ||||||
|  |     //           name, label: label || name, | ||||||
|  |     //           path: path.replace(/\.(\/.+\/App.+)\.vue$/, '/packages$1'), | ||||||
|  |     //           entry: 'appEntry', | ||||||
|  |     //           module: files(path).default | ||||||
|  |     //         } | ||||||
|  |     //     //命名规范入口文件必须以App开头 | ||||||
|  |     //     store.commit("addApp", addApp) | ||||||
|  |     //   } | ||||||
|  |     // }) | ||||||
|  |     // let cores = require.context('../../core', true, /\.(\/.+)\/App[^\/]+\.vue$/) | ||||||
|  |     // cores.keys().map(path => { | ||||||
|  |     //   if (cores(path).default) { | ||||||
|  |     //     let {name, label} = cores(path).default, | ||||||
|  |     //         addApp = { | ||||||
|  |     //           name, label: label || name, | ||||||
|  |     //           path: path.replace(/\.(\/.+\/App.+)\.vue$/, '/core$1'), | ||||||
|  |     //           entry: 'appEntry', | ||||||
|  |     //           module: cores(path).default | ||||||
|  |     //         } | ||||||
|  |     //     //命名规范入口文件必须以App开头 | ||||||
|  |     //     store.commit("addApp", addApp) | ||||||
|  |     //   } | ||||||
|  |     // }) | ||||||
|  |     // let project = require.context('../../project', true, /\.(\/.+)\/App[^\/]+\.vue$/) | ||||||
|  |     // project.keys().map(path => { | ||||||
|  |     //   if (project(path).default) { | ||||||
|  |     //     let {name, label} = project(path).default, | ||||||
|  |     //         addApp = { | ||||||
|  |     //           name: [path.replace(/\.\/([^\/]+)\/.*/, '$1'), name].join("_"), label: label || name, | ||||||
|  |     //           path: path.replace(/\.(\/.+\/App.+)\.vue$/, '/project$1'), | ||||||
|  |     //           entry: 'appEntry', | ||||||
|  |     //           module: project(path).default | ||||||
|  |     //         } | ||||||
|  |     //     //命名规范入口文件必须以App开头 | ||||||
|  |     //     store.commit("addApp", addApp) | ||||||
|  |     //   } | ||||||
|  |     // }) | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -58,22 +58,42 @@ const $decimalCalc = (...arr) => { | |||||||
|   //返回计算值 |   //返回计算值 | ||||||
|   return intArr.reduce((t, a) => t + a) / precision |   return intArr.reduce((t, a) => t + a) / precision | ||||||
| } | } | ||||||
| /** | export const waiting = { | ||||||
|  * @param { function } func |   init(ops, count) { | ||||||
|  |     if (document.body) { | ||||||
|  * @param { number } wait 延迟执行毫秒数 |       let div = document.createElement('div') | ||||||
|  |       div.id = "ai-waiting" | ||||||
|  * @param { boolean } immediate  true 表立即执行,false 表非立即执行 |       div.className = "el-loading-mask is-fullscreen" | ||||||
|  */ |       div.style.zIndex = '202204271710' | ||||||
|  |       div.style.textAlign = 'center' | ||||||
|  |       div.style.lineHeight = '100vh' | ||||||
|  |       div.style.color = '#26f' | ||||||
|  |       div.style.background = 'rgba(0,0,0,.8)' | ||||||
|  |       document.body.appendChild(div) | ||||||
|  |     } else if (count < 10) { | ||||||
|  |       setTimeout(() => this.init(ops, ++count), 500) | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   getDom() { | ||||||
|  |     return document.querySelector('#ai-waiting') | ||||||
|  |   }, | ||||||
|  |   setContent(html) { | ||||||
|  |     let div = this.getDom() | ||||||
|  |     div.innerHTML = html | ||||||
|  |   }, | ||||||
|  |   close() { | ||||||
|  |     let div = this.getDom() | ||||||
|  |     div.parentElement.removeChild(div) | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
| export default { | export default { | ||||||
|   ...tools, |   ...tools, | ||||||
|   addChildParty, |   addChildParty, | ||||||
|   $confirm, |   $confirm, | ||||||
|   $permissions, |   $permissions, | ||||||
|   $decimalCalc |   $decimalCalc, | ||||||
|  |   $waiting: waiting | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -46,10 +46,12 @@ | |||||||
|     "@vue/cli-service": "^3.6.0", |     "@vue/cli-service": "^3.6.0", | ||||||
|     "axios": "^0.19.2", |     "axios": "^0.19.2", | ||||||
|     "babel-eslint": "^10.1.0", |     "babel-eslint": "^10.1.0", | ||||||
|  |     "chalk": "^5.0.1", | ||||||
|     "core-js": "^2.6.11", |     "core-js": "^2.6.11", | ||||||
|     "element-ui": "^2.13.2", |     "element-ui": "^2.13.2", | ||||||
|     "eslint": "^5.16.0", |     "eslint": "^5.16.0", | ||||||
|     "eslint-plugin-vue": "^5.0.0", |     "eslint-plugin-vue": "^5.0.0", | ||||||
|  |     "fs-extra": "^10.1.0", | ||||||
|     "image-webpack-loader": "^6.0.0", |     "image-webpack-loader": "^6.0.0", | ||||||
|     "inquirer": "^6.5.2", |     "inquirer": "^6.5.2", | ||||||
|     "node-sass": "npm:sass@^1.43.4", |     "node-sass": "npm:sass@^1.43.4", | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user