[二】用amis做一个管理系统 - 基于官方示例的改造

不要等待机会,而是创造机会。                

amis 有两种使用方法:

  • JS SDK,可以用在任意页面中
  • React,可以用在 React 项目中

SDK 版本适合对前端或 React 不了解的开发者。

我们选用sdk方式,整个系统依amis为主题,页面的json配置通过接口获取。

改造思路:

前端依sdk为主 + 自定义事件

后端使用jdk18+springboot3+mybatisplus

1、amis相关操作封装

初始话sdk:创建dom元素,加载amis相关的静态资源

initSdk(version, theme) {
        let id = this.domId;
        let themeCss = {
            'cxd': '/sdk.css',
            'dark': '/dark.css',
        }

        let assets = [
            {src: './assets/amis/sdk-' + version + themeCss[theme], type: 'link'},
            {src: './assets/amis/sdk-' + version + '/helper.css', type: 'link'},
            {src: './assets/amis/sdk-' + version + '/iconfont.css', type: 'link'},
            {src: './assets/amis/sdk-' + version + '/sdk.js', type: 'script'},
            {src: './assets/amis/lib/umd_history.min.js', type: 'script'},
            {src: './assets/amis/lib/vue.min.js', type: 'script'}
        ]
        // 加载相关资源
        domUtils.loadAll(assets);

        if (domUtils.queryOne('#' + id) == null) {
            let dom = domUtils.createDom('div', {"id": id});
            domUtils.appendBody(dom);
        }
    }
更新Schema
/**
     * 更新Schema
     * @param amisJSON
     */
    updateSchema(amisJSON) {
        let that = this;

        // 初始化
        function creteAmis(that, json) {
            if (!that.amisScoped) {
                setTimeout(() => {
                    creteAmis(that, amisJSON);
                }, 100)
                return;
            }
            that.amisScoped.updateSchema(json);
        }

        creteAmis(that, amisJSON);
    }

2、编辑器相关集成

地址:amis-editor-demo(地址已经失效了)

官网地址:amis-editor-demo

3、后端实现

curd操作......略略略

4、表设计

CREATE TABLE `amis_page`  (
  `id` bigint(0) NOT NULL,
  `page_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `page_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '页面名称',
  `page_json` json NULL,
  `page_version` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '版本号',
  `page_desc` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '页面描述',
  `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP,
  `create_by` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这里是一个使用 AMIS一个基于 React 的低代码 UI 框架)实现新建数据库表的示例: 首先,你需要安装 AMIS: ``` npm install amis@next ``` 然后,你需要编写一个 JSON 配置文件来定义表单,可以参考以下示例: ```json { "type": "form", "api": "/api/createTable", "title": "新建数据库表", "controls": [ { "type": "text", "name": "tableName", "label": "表名", "required": true }, { "type": "select", "name": "tableType", "label": "表类型", "options": [ { "label": "InnoDB", "value": "InnoDB" }, { "label": "MyISAM", "value": "MyISAM" } ], "value": "InnoDB" }, { "type": "textarea", "name": "tableDesc", "label": "表描述" }, { "type": "button", "label": "提交", "primary": true, "actionType": "submit" } ] } ``` 这个配置文件定义了一个使用 POST 请求提交表单数据到 `/api/createTable` 接口的表单,包含了表名、表类型和表描述三个字段。 接下来,你需要在后端实现 `/api/createTable` 接口来处理表单数据,这里以 Flask 为例: ```python from flask import Flask, jsonify, request app = Flask(__name__) @app.route('/api/createTable', methods=['POST']) def create_table(): tableName = request.form['tableName'] tableType = request.form['tableType'] tableDesc = request.form.get('tableDesc') # TODO: 在数据库中新建表 return jsonify({"success": True}) ``` 在这个例子中,我们从表单数据中获取了表名、表类型和表描述字段,并在数据库中新建了表。在实际应用中,你需要根据自己的需求来实现这个接口。 最后,你需要在前端加载这个表单并显示出来: ```javascript import React from 'react'; import amis from 'amis'; const schema = { // 这里填写之前定义的 JSON 配置文件内容 }; amis.embed('#root', schema); ``` 这个例子中使用了 `amis.embed` 方法来将表单渲染到指定的 DOM 元素中。你需要将 `#root` 替换为你想要显示表单的 DOM 元素的 ID。 这样,一个使用 AMIS 实现的新建数据库表的示例就完成了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值