1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import request from '../utils/request.mjs';
- import { initFields } from '../utils/field.mjs';
- import btnList from '../example/btn.mjs';
- import allRoutes, { RoutesTitle } from '../example/routes.mjs';
- import fs from 'fs';
- export default {
- prompts: [],
- actions: (prompts) => {
- return [
- // function () {
- // fs.rmSync(`src/router/routes`, { recursive: true, force: true })
- // return `-- \\src\\router\\routes`
- // },
- // function () {
- // fs.rmSync(`src/pages`, { recursive: true, force: true })
- // return `-- \\src\\pages`
- // },
- ].concat(...Object.keys(allRoutes).map(rKey => {
- const routes = allRoutes[rKey]
- const RoutePlopList = []
- return [
- {
- type: 'add',
- path: `src/router/routes/${rKey}.ts`,
- templateFile: 'plop/template/routes.ts.hbs',
- data: {
- title: RoutesTitle[rKey],
- routes: JSON.stringify(routes, (key, value) => {
- if (['plop'].includes(key)) {
- RoutePlopList.push(value)
- return undefined
- }
- return value
- }, 2).replaceAll(/"___|___"/g, '').replaceAll("~/pages", `~/pages/${rKey}`)
- }
- },
- ...RoutePlopList.map(RoutePlop => ({
- type: 'add',
- path: `src/pages/${rKey}/${RoutePlop.filePath}.vue`,
- templateFile: `plop/template/${RoutePlop.template}.vue.hbs`,
- data: async () => {
- console.log('\x1b[33m%s\x1b[0m', 'RoutePlop :>> ', RoutePlop.template, RoutePlop.filePath, RoutePlop.props);
- switch (RoutePlop.template) {
- case 'index': {
- const res = await request(RoutePlop.url + '/index')
- console.log('> request ', RoutePlop.url + '/index', ' status: ', res.data.code);
- const fields = initFields(res.data)
- return {
- url: RoutePlop.url,
- props: RoutePlop.props,
- ...btnList,
- ...fields,
- detailName: RoutePlop.routeName.replaceAll('INDEX', 'DETAIL'),
- // start from aid, then bid;cid....
- detailParam: String.fromCodePoint(97 + (RoutePlop.props?.length ?? 0)) + 'id'
- }
- }
- case 'tab': {
- console.log('tab_list :>> ', RoutePlop.children);
- return {
- tab_list: RoutePlop.children
- }
- }
- case 'detail': {
- const res = await request(RoutePlop.url + '/index')
- const fields = initFields(res.data)
- return {
- url: RoutePlop.url,
- props: RoutePlop.props,
- detailParam: RoutePlop.props.at(-1),
- ...fields
- }
- }
- default: {
- return {}
- }
- }
- }
- }))
- ]
- }))
- }
- }
|