1.0.10 • Published 1 month ago

@shmily-winters/elpis v1.0.10

Weekly downloads
-
License
ISC
Repository
-
Last release
1 month ago

elpis

一个企业级应用框架

model配置

{
  mode: "dashboard", // 模板类型,不同模板类型对应不一样的模板数据结构
  name: "", // 名称
  desc: "", // 描述
  icon: "", // icon
  homePage: "", // 首页(项目配置)
  menu: [
    {
      key: "", // 菜单唯一描述
      name: "", // 菜单名称
      menuType: "", // 枚举值 group / module

      // 当 menuType == group 时, 可填写
      subMenu: [
        {
          // 可递归 menuItem
        }, //...
      ],
      // 当 menuType === module 时, 可填写
      moduleType: "", // 枚举值: sider/iframe/custom/schema

      // 当 moduleType === sider 时
      siderConfig: {
        menu: [
          {
            // 可递归 menuItem(除 moduleType === sider)
          },
        ],
      },

      // 当 moduleType === iframe 时
      iframeConfig: {
        path: "", // iframe 路径
      },

      // 当 moduleType === custom 时
      customConfig: {
        path: "", // 自定义路由路径
      },

      // 当 moduleType === schema 时
      schemaConfig: {
        api: "/api/user", // 数据源API (遵循 RESTFUL 规范)
        schema: {
          // 板块数据结构
          type: "object",
          properties: {
            key: {
              ...schema, // 标准 schema 配置
              type: "", // 字段类型
              label: "", // 字段中文名
              // 字段在 table 中的相关配置
              tableOption: {
                ...elTableColumnConfig, // element-ui table-column 配置
                toFixed: 0, // 保留小数点位数
                visible: true, // 默认为 true (false 时表示不在表单中显示)
              },
              // 字段在 search-bar 中的相关配置
              searchOption: {
                ...eleComponentConfig, // 标准 el-component-column 配置
                comType: "", // 配置组件类型
                default: "", // 默认值

                //comType === select 时
                enumList: [
                  // 下拉框可选项
                  {
                    label: "",
                    value: "",
                  },
                ],

                //comType === dynamic-select 时
                api: "", // api (遵循 RESTFUL 规范)
              },
              // 字段在不同动态 component 中的相关配置,前缀对应 componentConfig 中的键值
              // 如:componentConfig.createForm ==> createFormOption
              // 字段在 createForm 中相关配置
              createFormOption: {
                ...eleComponentConfig, // 准 el-component 配置
                comType: "", // 控件类型 input/select/input-number/...
                visible: true, // 是否显示, 默认为 true
                disabled: false, // 是否禁用, 默认为 false
                default: "", // 默认值

                // comType === 'select' 时
                enumList: [], // 枚举列表
              },
              // 字段在 editForm 中相关配置
              editFormOption: {
                ...eleComponentConfig, // 准 el-component 配置
                comType: "", // 控件类型 input/select/input-number/...
                visible: true, // 是否显示, 默认为 true
                disabled: false, // 是否禁用, 默认为 false
                default: "", // 默认值

                // comType === 'select' 时
                enumList: [], // 枚举列表
              },
              // 字段在 detailPanel 中相关配置
              detailPanelOption: {
                ...eleComponentConfig, // 准 el-component 配置
              },
            },
            // ...
          },
          required: [], // 必填字段
        },
        // table 相关配置
        tableConfig: {
          headerButtons: [
            {
              label: "", // 按钮中文名
              eventKey: "", // 按钮事件名
              // 按钮事件具体配置
              eventOption: {
                // 当 eventKey === 'showComponent'
                comName: "", // 打开的组件名称
              },
              ...elButtonConfig, // element-ui button 配置
            }, // ...
          ],
          rowButtons: [
            {
              label: "", // 按钮中文名
              eventKey: "", // 按钮事件名
              eventOption: {
                // 当 eventKey === 'showComponent'
                comName: "", // 打开的组件名称

                // 当 eventKey === 'remove'
                params: {
                  // paramKey = 参数的键值
                  // rowValueKey = 参数值格式为 schema::tableKey 时, 从 table 中找到相应的字段
                  paramKey: rowValueKey,
                },
              }, // 按钮配置
              ...elButtonConfig, // element-ui button 配置
            }, // ...
          ],
        },
        // search-bar 相关配置
        searchConfig: {},
        // 动态组件相关配置
        componentConfig: {
          // create-form 表单相关配置
          createForm: {
            title: "", // 表单标题
            saveBtnText: "", // 保存按钮文本
          },
          // edit-form 表单相关配置
          editForm: {
            mainKey: "", // 表单主键,用于唯一标识要修改的数据对象
            title: "", // 表单标题
            saveBtnText: "", // 保存按钮文本
          },
          detailPanel: {
            mainKey: "", // 详情主键,用于唯一标识数据对象
            title: "", // 标题
          },
          // ...支持用户动态扩展
        },
      },
    }, //...
  ],
};

服务启动

const { serverStart } = require('@shmily-winters/elpis');

// 启动 elpis 服务
const app = serverStart({});

自定义服务端

  • router-schema
  • router
  • controller = controller

前端构建

const { frontendBuild } = require('@shmily-winters/elpis');

// 编译构建前端工程
frontendBuild(process.env_ENV);

webpack 扩展

  • 配置在 app/webpack.config.js

自定义页面扩展

  • app/pages/ 目录下写入口 entry.xxx.js

dashboard / custom-view 自定义页面扩展

  • app/pages/dashboard/xxx 下写页面

dashboard / schema-view / component 动态组件扩展

  1. app/pages/dashboard/complex-view/schema-view/components/ 下写组件
  2. 配置到 app/pages/dashboard/complex-view/schema-view/components/components-config.js

schema-form 控件扩展

  1. app/pages/widgets/schema-form/complex-view/ 下写控件
  2. 配置到 app/pages/widgets/schema-form/form-item-config.js

schema-search-bar 控件扩展

  1. app/pages/widgets/schema-search-bar/complex-view/ 下写控件
  2. 配置到 app/pages/widgets/schema-search-bar/search-item-config.js