人人都能成为视图开发小能手

分享  收藏
5 / 183

😄
录制_2025_04_15_15_00_14_653.mp4

首先打开视图开发文档视图插件开发文档 | HAP

配置好环境,我这是 Win11 +vscode + node js v18.20.5(最开始是 22 后面出问题将下来才能开发)

新建插件 下一步,下一步就好了

开启终端,可以开两个,便于加模块,服务也不会停
以官方合并表格例子为例(不要傻傻的 cd 到文件夹了,右键开终端)
image.png
image.png

在任意一个终端 启动项目(启动前先配置好自己的视图 id)
image.png
配置好直接安装项目
image.png

运行
image.png
视图贴上调式地址(vscode 保存文件后自动刷新)
image.png
编辑项目中的 index 或者 APP js 文件,保存后所见即所得

image.png

好,进阶内容(主要用 react,最好用一套模板内容)
组件总览 - Ant Design

UI 用 ant-design ,理论上什么 UI 都是可以的只要你懂 HTML

数据调用部分,看文档 mdye JSSDK API
这里不做赘述
我要讲的是数据转换
因为这个 API 返回的内容,是带系统字段封装的内容的,比如成员,地区,子表,多选,单选,附件,定位等等
这个就给表格取数据带来很大的困扰,因为它不是固定的,但有类型可去做 Options 的解析
不懂的的可以先拉个全字段的表 输出一下

const { appId, worksheetId, viewId, controls } = config;
 console.log("系统字段类型", config.controls);

就会看到这样一串内容
image.png

这个就是我们需要解析成表格需要的内容

比如 附件字段返回的 内容就是

{
    "value": "[{\"fileId\":\"dc7fb652-e83a-4a8f-ba05-2edc1365e3e0\",\"originalFilename\":\"运行中\",\"ext\":\".png\",\"refId\":\"\",\"previewUrl\":\"https://p1.mingdaoyun.cn/1f3e6e3c-2087-4cc2-b9eb-3b2fcefcc6bf/4f58974f-553b-4d67-809e-ded8f16d90a0/67a42861207a91951fe9ac2a/20250206/1V4ocbeJ8Eeu5Z6Efw8v33dd1Da5aReu8x8k9ObH43d61PaX8adw0n8e8P7f2p6W.png?e=1744791507&token=PGtAPYyCYxCQ1zckbL-ecATOk42z8P3jdPahEnzt:qkbLNxC0i2FKwedwXoNeR4dOZAI=&imageView2/1/w/21/h/24\",\"createTime\":\"2025-02-06T11:14:59.827+08:00\",\"filesize\":1100,\"fileUrl\":\"https://p1.mingdaoyun.cn/1f3e6e3c-2087-4cc2-b9eb-3b2fcefcc6bf/4f58974f-553b-4d67-809e-ded8f16d90a0/67a42861207a91951fe9ac2a/20250206/1V4ocbeJ8Eeu5Z6Efw8v33dd1Da5aReu8x8k9ObH43d61PaX8adw0n8e8P7f2p6W.png?\",\"waterMarkInfo\":\"\",\"shareUrl\":\"\"}]",
    "control": {
        "controlId": "67a42861207a91951fe9ac2d",
        "controlName": "工牌头像",
        "type": 14,
        "attribute": 0,
        "row": 6,
        "col": 1,
        "hint": "",
        "default": "",
        "dot": 0,
        "unit": "",
        "enumDefault": 0,
        "enumDefault2": 0,
        "defaultMen": [],
        "dataSource": "",
        "sourceControlId": "",
        "sourceControlType": 0,
        "showControls": [],
        "noticeItem": 0,
        "userPermission": 0,
        "options": [],
        "required": false,
        "half": false,
        "relationControls": [],
        "viewId": "",
        "unique": false,
        "coverCid": "",
        "strDefault": "",
        "desc": "",
        "fieldPermission": "",
        "advancedSetting": {
            "sorttype": "zh",
            "watermark": "",
            "getsave": "0",
            "getinput": "0",
            "isdecrypt": "1"
        },
        "alias": "",
        "size": 6,
        "editAttrs": [],
        "deleteAccountId": "",
        "deleteTime": "0001-01-01 08:00:00",
        "encryId": "",
        "sectionId": "",
        "remark": "",
        "lastEditTime": "0001-01-01 00:00:00",
        "disabled": false,
        "checked": false
    }
}

我们要转成 文件名加 链接的样子 像这样
image.png

我们就要对 value 进行解析

image.png

更前一步,不是有个 type 么,可以设置一下做不同的解析,
image.png

得到的内容就是表格展示的,几乎可以完全复刻系统字段
image.png

再一个就是视图中的跳转,当然不是 a 链接那种,那种跳出去就出去
这里呢,我们用到一个 react 的 路由模块 react-router-dom

值得注意的是视图的根路径 path 并不是“/”而是"/p/www/widgetview"
这也是很多刷新异常的原因,只要你这样设置路由路径 path="/homo" 刷新之后 就是 No found not match 之类的

<Route path="/p/www/widgetview" element={<Home/>}></Route>

路由配置

image.png

导航链接
image.png

这个就是不管怎么跳,怎么刷新(非浏览器地址刷新)地址就是路由的地址

😄 😕 哪里不对,欢迎指正!!!
感兴趣自己折腾去