import { blockService } from '../assets'; import config from '../../types/config'; export interface TemplateItem { text: string; value: string; screenshots?: string; } /** * 页面区块 * @TODO 之后没有文件服务器了,所以后面需要改到区块接口中 * @TODO 另外 nodejs 下不支持 webpack loader,所以这里直接搞成了文件内容 */ const pcList = [ { text: '仪表盘布局', value: 'dashboard' }, { text: '通用页面布局', value: 'page' }, { text: '空白页', value: 'wrapper' }, { text: '首页', value: 'index-page' }, { text: '登录页', value: 'login-page' }, { text: '404 页面', value: '404-page' }, { text: '无权限页面', value: '401-page' }, { text: '禁止访问页面', value: '403-page' }, { text: '服务器错误页面', value: '500-page' }, ]; export const h5List = [ { text: '空白页', value: 'lcap-h5-blank' }, { text: '登录页', value: 'lcap-h5-login' }, { text: '主页', value: 'lcap-h5-navi' }, { text: '个人中心页', value: 'lcap-h5-user' }, { text: '404 页面', value: 'lcap-h5-404' }, { text: '无权限页面', value: 'lcap-h5-401' }, ]; export let TEMPLATE_LIST: Array = pcList; export const TEMPLATE_MAP: { [name: string]: TemplateItem } = {}; export async function loadTemplates() { const ifH5 = config.scope === 'h5'; const { rows } = await blockService.loadList({ query: { keyword: ifH5 ? `template-h5` : `view-template`, }, }); if (ifH5) { TEMPLATE_LIST = h5List; } TEMPLATE_LIST.forEach((item) => TEMPLATE_MAP[item.value] = item); const h5Real: TemplateItem[] = []; const templates = rows.forEach((row: any) => { const item: TemplateItem = { text: row.title, value: row.name.replace(/^@cloud-ui\/s-/, '').replace(/^@lcap\/mobile-ui\//, '').replace(/\.vue$/, ''), screenshots: row.screenshots, }; if (ifH5) { TEMPLATE_LIST.forEach((v) => { if (v.value === item.value) { h5Real.push(item); } }); } else { if (!TEMPLATE_MAP[item.value]) { TEMPLATE_LIST.push(item); TEMPLATE_MAP[item.value] = item; } } }); return ifH5 ? h5Real : TEMPLATE_LIST; }