index copy.mjs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import request from '../utils/request.mjs';
  2. import { initFields } from '../utils/field.mjs';
  3. import btnList from '../example/btn.mjs';
  4. import allRoutes from '../example/routes.mjs';
  5. import fs from 'fs';
  6. export default {
  7. prompts: [],
  8. actions: (prompts) => {
  9. const routes = allRoutes
  10. const RoutePlopList = []
  11. return [
  12. {
  13. type: 'add',
  14. path: 'src/router/routes.ts',
  15. templateFile: 'plop/template/routes.ts.hbs',
  16. data: {
  17. routes: JSON.stringify(routes, (key, value) => {
  18. if (['plop'].includes(key)) {
  19. RoutePlopList.push(value)
  20. return undefined
  21. }
  22. return value
  23. }, 2).replaceAll(/"___|___"/g, '')
  24. }
  25. },
  26. function () {
  27. fs.rmSync(`src/pages`, { recursive: true, force: true })
  28. return `-- \\src\\pages`
  29. },
  30. ...RoutePlopList.map(RoutePlop => ({
  31. type: 'add',
  32. path: `src/pages/${RoutePlop.filePath}.vue`,
  33. templateFile: `plop/template/${RoutePlop.template}.vue.hbs`,
  34. data: async () => {
  35. console.log('RoutePlop. :>> ', RoutePlop.url);
  36. switch (RoutePlop.template) {
  37. case 'index': {
  38. const res = await request(RoutePlop.url + '/index')
  39. const fields = initFields(res.data)
  40. return {
  41. url: RoutePlop.url,
  42. ...btnList,
  43. ...fields,
  44. detailName: RoutePlop.routeName.replaceAll('INDEX', 'DETAIL')
  45. }
  46. }
  47. case 'tab': {
  48. return {
  49. tab_list: RoutePlop.children
  50. }
  51. }
  52. case 'detail': {
  53. const res = await request(RoutePlop.url + '/index')
  54. const fields = initFields(res.data)
  55. return {
  56. url: RoutePlop.url,
  57. ...fields
  58. }
  59. }
  60. default: {
  61. return {}
  62. }
  63. }
  64. }
  65. }))
  66. ]
  67. }
  68. }