编程扩展
Roy
• 发表于:2021年07月31日 21:17 • 更新于:2021年07月31日 21:17
667

概述

白码无代码系统搭建平台可以满足99%的业务需求,但仍存在某些不方便或无法实现的功能,为此我们引入了少量的js编程扩展,以满足更复杂的业务需求。


https://pan.bnocode.com/project/5ccfc7ad044c8e018c8c5d36/attachment/20200511/1589186815445_%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20200511164650.png            

编程方法体:

代码如下:         复制代码

async function runProcess($model, $plugin, $params){
    //$model: 模板,对步骤数据的操作
    //$plugin: 对数据库数据的操作
    //$params: 传入参数
}

平台调试模式

编程功能需要引用各种数据id,为了方便查询,平台开放的调试模式,开启调试模式后的数据表属性、功能步骤等将显示id。

开启调试模式:F12——console——输入vue.$store.commit("debug/enable")

关闭调试模式:F12——console——输入vue.$store.commit("debug/disable")

数据id获取方式

数据表id

entity_表名

示例:

https://pan.bnocode.com/project/5ccfc7ad044c8e018c8c5d36/attachment/20200511/1589187201505_20200511164916.gif


属性id

field_数据表名称>属性名称

示例:

https://pan.bnocode.com/project/5ccfc7ad044c8e018c8c5d36/attachment/20200511/1589187211530_20200511165021.gif

步骤id

procedure_步骤名称

示例:

https://pan.bnocode.com/project/5ccfc7ad044c8e018c8c5d36/attachment/20201117/1605611611627_image.png

$model

--getValue(procedure)

根据步骤id获取指定步骤的json(数组)

输入参数

参数名称

说明

procedure

步骤id

代码如下:         复制代码

async function runProcess($model, $plugin, $params){  
     let item = await $model.getValue("5fa8e53cbda8786925bde095");
     let list = await $model.getValue("5eb9416bb75b4176eca49a23");
}

返回值

若获取的步骤类型是“数据”,则返回一个jsonkey为属性idvalue为对应的属性值;

若获取的步骤类型是“集合”,则返回一个json list


--setValue(procedure, value)

将指定步骤设为指定的json(数组)

输入参数

参数名称

说明

procedure

步骤id

value

设定的值,jsonjson数组

代码如下:         复制代码

async function runProcess($model, $plugin, $params){
       await $model.setValue("5fa8e5fb931f9d126257caf9",{});
       await $model.setValue("5fa8e5f9931f9d1262af6",[{},{},{}]);
   }

无返回值

--error(code, msg)

弹窗警告提示并中断流程(不再执行后续步骤)

输入参数

参数名称

说明

code

自定义错误码,目前没有其他作用,建议直接填写-1

msg

前端弹窗显示的报警信息

代码如下:         复制代码

async function runProcess($model, $plugin, $params){
       await $model.error(-1,"产品库存不足!");
   }


https://pan.bnocode.com/project/5ccfc7ad044c8e018c8c5d36/attachment/20201117/1605613627256_image.pnghttps://pan.bnocode.com/project/5ccfc7ad044c8e018c8c5d36/attachment/20201117/1605613629771_image.png

无返回值

--log(msg)

在前端输出日志,常用于编程结果调试

输入参数

参数名称

说明

msg

输出的日志内容,同一个功能中多次调用不会覆盖

代码如下:         复制代码

async function runProcess($model, $plugin, $params){;
       await $model.log("日志内容");
   }


https://pan.bnocode.com/project/5ccfc7ad044c8e018c8c5d36/attachment/20201117/1605613698305_image.png

无返回值

--command(type, value)

1. 设置功能提交成功后的提示

2. 设置功能提交成功后进行页面的跳转

3. 设置功能提交后自动调用一个功能(弹窗显示,并非直接提交)

输入参数

 

参数名称

说明

type

操作类型,需传入tips,redirect,program中的一个,分别对应提示、页面跳转、调用功能

value

不同的操作类型需要传入不同的参数

value.title

typetips时,使用该参数,功能提交成功提示的标题,不使用该参数时,默认为“提示”

value.content

typetips时,使用该参数,功能提交成功提示的内容

value.url

typeredirect时,使用该参数,需跳转页面的url,若跳转到白码应用内部的页面可添加参数,具体格式请参考示例

value.blank

typeredirect时,使用该参数,非必须参数,跳转页面时是否在新页面打开,传入true时在新页面打开,传入false时在当前页打开,默认false

value.flow

typeprogram时,使用该参数,需调用的功能id,可在功能流程编辑页面的url获取,如下图

value.data

typeprogram时,使用该参数,调用的功能时默认填写的数据

https://pan.bnocode.com/project/5ccfc7ad044c8e018c8c5d36/attachment/20201117/1605614489934_image.png 

注意:“tips”可以和“program”或“redirect”同时使用,即功能提交成功后发出提示并功能调用/跳转页面此外,当使用tips时,value传入空json时,功能提交后无提示,即$model.command(tips,{})

代码如下:         复制代码

async function runProcess($model, $plugin, $params){
       await $model.command("tips",{
           title:"发布成功",
           content:"内容发布成功!"
       });
   
       await $model.command("redirect",{
           blank:false;
           url:"/display/5fa8e5f6931f9d126257caf2?query="+JSON.stringify({
           itemid:"5fa8e5fb931f9d126257caf9"
           });
       });
   
       await $model.command("program",{
        flow:"5fb20321e091f85e9d69fe23",//功能id
           data:{
            "5fb1fa1ce091f85e9d69fc78":{//步骤id
                   "5fb1fa1473276c5e9b02f06e":"123"//属性id:属性值
            }
           }
       });
   }




$plugin

--data.getData(entity, id)

获取数据库中一条数据(json

输入参数

参数名称

说明

entity

数据表id

id

数据id,每一条数据中key_id对用的value即为数据id

代码如下:         复制代码

async function runProcess($model, $plugin, $params){
       let item = await $plugin.data.getData("5fa8e5fb931f9d126257caf9","5fa8e5fb931f9d126257caf9");
   }    


若传入的两个参数正确,返回一条数据的jsonkey为属性idvalue为对应的属性值;

若参数不正确,则返回undefined

注意:获取的数据中关联类型的属性,对应的属性值为关联的数据id,图片/文件类型则为对应的url字符串


--data.removeData(entity, id)

删除数据库中一条数据

输入参数

参数名称

说明

entity

数据表id

id

数据id,每一条数据中key_id对用的value即为数据id

代码如下:         复制代码

async function runProcess($model, $plugin, $params){
       await $plugin.data.removeDate("5fa8e5fb931f9d126257caf9","5fa8e5fb931f9d126257caf9");
   }

无返回值

--data.saveData(entity, form)

指定一个数据表新增一条数据

输入参数

参数名称

说明

entity

数据表id

form

保存数据的属性值

form.key

属性id,不可使用_id(新增后会自动生成)

form.value

属性值

代码如下:         复制代码

async function runProcess($model, $plugin, $params){        await $plugin.data.saveData("5fa8e5fb931f9d126257caf9",{         "5fa8e5fb931f9d126257caf9":100,
        "5fb1fa1ce091f85e9d69fc78":"口罩"
       });
   }

返回值

若调用成功,则返回保存数据的json。


--data.updateData(entity,id,form)

修改一条数据的内容

输入参数

参数名称

说明

entity

数据表id

id

数据id

form

要修改的属性内容

form.key

要修改的属性id,不可使用_id

form.value

对应的属性值

代码如下:         复制代码

async function runProcess($model, $plugin, $params){
     await $plugin.data.updateData("5fb1fa1473276c5e9b02f06e","5fa8e5f6931f9d126257caf2",{
     "5fa8e5fb931f9d126257caf9":"200",
     "5fa8e5f9931f9d1262af6":"411"
       });
   }

无返回值

--data.queryData(entity, query, option)

获取指定数据表的多条数据(可以理解为获取集合的步骤)

输入参数

参数名称

说明

entity

数据表id

query

获取数据的筛选条件

query.key

属性id

query.value

属性值

option

非必须参数,设置获取的数据量,不使用此参数时默认最多获取100条数据

option.page.index

分页获取

Option.page.size

每页多少条数据

代码如下:         复制代码

async function runProcess($model, $plugin, $params){
     let list1 = await $plugin.data.queryData("5fa8e5f9931f9d1262af6",{
         "5fb1fa1473276c5e9b02f06e":"口罩",
           "5fa8e5f6931f9d126257caf2":"kn95"
         },{
            page:{
                   index:1,
                size:100
            }
           });
   
      let list2 = await $plugin.data.queryData("5fa8e5f9931f9d1262af6",{
            "5fa8e5f6931f9d126257caf2":"kn95"
            });
   }



--data.bulk(entity, bulk)

指定一个数据表进行批量操作(新增/修改/删除),运行效率比前面的通过循环调用save/update/remove更高

输入参数

参数名称

说明

entity

数据表id

bulk

操作内容

bulk.insert

批量保存数据操作,key为属性idvalue为属性值,不可使用_id

bulk.update

批量修改数据操作,_id为需要修改的属性id(必须参数),key为属性idvalue为属性值

bulk.remove

批量删除数据操作,_id为需要删除的数据id(必须参数)

代码如下:         复制代码

async function runProcess($model, $plugin, $params){
        await $plugin.data.bulk("5fa8e5f9931f9d1262af6",{
                insert:[{"5fa8e5fb931f9d126257caf9":"123"},
                            {"5fa8e5fb931f9d126257caf9":"456"}],              
                update:[{_id:"5fb20321e091f85e9d69fe23","5fb1fa1473276c5e9b02f06e":"个"},
                               {_id:"5fa8e5fb931f9d126257caf9","5fb1fa1473276c5e9b02f06e":"件"}] 
                remove:[{_id:"5eb9416bb75b4176eca49a23"},
                              {_id:"5fa8e53cbda8786925bde095"}]
        });   
}




--program.exec(flow, form, version)

直接调用已有的功能并自动提交

输入参数

参数名称

说明

flow

功能id,可在功能流程编辑页面的url获取

form

调用功能中填写的数据

form.procedure

步骤id

form.procedure.key(新增/关联获取数据类型步骤)

步骤中需填写的属性id

form.procedure.value(新增/关联获取数据类型步骤)

步骤中需填写的属性值

form.procedure.data.key(新增/关联获取集合类型步骤)

步骤中需填写的属性id

form.procedure.data.value(新增/关联获取集合类型步骤)

步骤中需填写的属性值

form.procedure._id(选择数据类型步骤)

选择步骤中,只需_id一个key

form.procedure.value(选择数据类型步骤)

选择步骤中,选择的数据id

version

非必须参数,调用功能的指定版本,不使用此参数时默认调用线上最新版本

代码如下:         复制代码

async function runProcess($model, $plugin, $params){
       let result = await $plugin.program.exec("5fa8e5f6931f9d126257caf2",{
               "5fa8e5fb931f9d126257caf9":{//选择数据步骤
                _id:"5fb20321e091f85e9d69fe23"
           },
               "5fb1fa1ce091f85e9d69fc78":{//新增/关联获取数据步骤
                "5fb1fa1473276c5e9b02f06e":"123"
           },
            "5fa8e5fb931f9d126257caf9":[//集合步骤
            {
                "5fa8e5fb931f9d126257caf9":"444"
            },
            {                 
                "5fa8e5fb931f9d126257caf9":"777"
            }
           ]
           });
   }

$params

该参数来自编程前添加,方便编程

 https://pan.bnocode.com/project/5ccfc7ad044c8e018c8c5d36/attachment/20200513/1589360968392_param1.png            

如上图所示,若添加了3个参数,则$params的值为:

{

param_1:2020-10-10,

param_2:[{},{},{}...],

param_3:100

}



本文是否对您有帮助?
有帮助
没帮助
您是否遇到了以下问题?
内容过期或不准确
缺少场景、事例
链接有误
太简单,步骤待完善
其他
提交反馈
如需获取即时帮助,请联系
小助理
微信扫码添加小助理
让你的想法快速变成软件吧~
编程扩展
联系我们
售前咨询电话
020-88520693
意见箱 · 建议反馈
您的宝贵建议,使白码更完美!
白码小助理
加入白码社区,学习更多开发小技巧!
微信扫码添加白码小助理