自定义组件使用说明

Sen
• 发表于:2023年04月07日 17:44 • 更新于:2023年12月13日 16:59
1625

概述

白码低代码平台自定义页内支持自定义组件,可自由编辑代码,点击组件库中的基础——自定义即可添加一个空的自定义组件,如下图。

https://pan.bnocode.com/project/642283bde81aad5e5587ce87/attachment/20230406/1680775471069_4.pnghttps://pan.bnocode.com/project/642283bde81aad5e5587ce87/attachment/20230406/1680775483970_5.png

组件id如下图,可点击复制

https://pan.bnocode.com/project/642283bde81aad5e5587ce87/attachment/20230407/1680835853250_%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6.png

组件vue编程

https://pan.bnocode.com/project/642283bde81aad5e5587ce87/attachment/20230406/1680775497850_6.png

自定义页路径:

${host}/app/${project}/${page}?query={key:value}

host:域名,公有云固定是https://v1.bnocode.com/ 私有化时使用系统域名

project:项目id

page:自定义页id

query:传递路由参数值

组件属性

在白码自定义页内创建的每个组件,都带有白码封装的几个属性,可通过代码直接调用,如下表。


属性key

说明

示例

$$bpProp["key"]

通过页面属性的key获取页面属性

this.$$bpProp["key"]

$$bpView["viewid"]

通过组件id获取组件对象

this.$$bpView["viewid"]

$$bpView["viewid"].$$bv

Data["$data"]

通过组件id获取组件的数据(无代码部分设置的数据源)

this.$$bpView["viewid"].$$bvData["$data"]

$$bpView["viewid"].$$bvData["$field"]

通过组件id和属性key获取组件的属性(无代码部分设置的属性)

this.$$bpView["viewid"].$$bvData["$field"]

$$bvStyle

获取无代码部分设置的样式css

this.$$bvStyle

$$bvAction.key

调用组件定义好的事件

this.$$bvAction.key

$$bpStore["viewid"]

通过组件id获取组件store

this.$$bpStore["viewid"]


可调用接口

在前端,白码也封装了一些可调用的接口,用于满足各种业务场景。

1.  调用命令

this.$$cmd({type,value},{selected,callback})

可调用功能、跳转页面、查看数据详情、查看集合、右侧弹窗提示、打开确认弹窗

注意事项:调用功能时,如果用户是外部用户,则需要功能权限,否则不需要功能权限。

参数说明

参数名

类型

是否必须

说明

备注/示例

type

string

选择调用命令的类型,有调用功能、跳转页面、查看数据详情、查看集合、右侧弹窗提示、打开确认弹窗

调用功能:program

跳转页面:redirect

查看数据详情:detail

查看集合:collection

右侧弹窗提示:tips

打开确认弹窗:confirm

value

object

根据不同类型需要传入不同的参数值

{}

type为"program"

value.flow

string

传入需调用的功能id

“638950f6c02b7810006b8306”

value.skip

boolean

调用功能时是否直接提交功能不弹窗,true/false,默认是false(弹窗)

true

value.data

object

调用功能时需要传的值

{"步骤id":{"字段id":"传值"}}

selected

object

调用功能时,需要传第一个选择步骤的值,把选择的对象传过去可实现隐藏第一步

{}

callback

function

调用功能后的回调函数,可得到功能返回值

function(res){console.log(res)}

type为"redirect"

value.url

string

需跳转的页面url,绝对路径相对路径都可以

"/app/“638950f6c02b7810006b8306/“638950f6c02b7810006b8306"

value.blank

boolean

是否新页面打开,默认否

true/false

type为“detail”

value.entity

string

需要查看数据详情的entity

“638950f6c02b7810006b8306”

value.id

string

需要查看数据详情的数据_id

“638950f6c02b7810006b8306”

value.title

string

数据详情弹窗的标题文本

"客户详情"

type为"collection"

value.entity

string

需要查看集合的entity

“638950f6c02b7810006b8306”

value.entityKey

string

需要查看集合的数据表的关联主表的字段id,例如要看订单明细的集合,就要传订单明细表的关联订单的字段id

“638950f6c02b7810006b8306”

value.parent

string

需要查看集合的主表数据_id,例如要看订单明细的集合,就要传对应订单表的数据_id

“638950f6c02b7810006b8306”

type为"tips"

value.title

string

提示的标题

“提示”

value.content

string

提示的内容

"操作成功"

type为"confirm"

value.title

string

提示的标题

“提示”

value.content

string

提示的内容

"操作成功"

value.onOk

function

点击确定后运行的回调函数

function(){}

示例

① 调用功能


代码如下:         复制代码

this.$$cmd({
    type:"program",
    value:{
        flow:"功能id",
        skip:false,
        data:{
            "步骤id":{
                "字段id":"传值"
            }
        }
    }
},{
    seleceted:{},
    callback:function(res){//回调函数
        console.log(res.data)
    }
})


② 跳转页面


代码如下:         复制代码

this.$$cmd({
    type:"redirect",
    value:{
        url:"",
        blank:false
    }
})


③ 查看数据详情


代码如下:         复制代码

this.$$cmd({
    type:"detail",
    value:{
        entity:"",
        id:"",
        title:""
    }
})


④ 查看集合


代码如下:         复制代码

this.$$cmd({
    type:"collection",
    value:{
        entity:"",
        entityKey:"",
        parent:""
    }
})


⑤ 右侧弹窗提示


代码如下:         复制代码

this.$$cmd({
    type:"tips",
    value:{
        title:"",
        content:""
    }
})


⑥ 打开确认弹窗


代码如下:         复制代码

this.$$cmd({
    type:"confirm",
    value:{
        title:"",
        content:"",
        onOk:function(){
            
        }
    }
})

⑦ 发起http请求


代码如下:         复制代码

this.axios.request({
    method:"post",//请求类型get/post
    url:"",//请求接口
    data:{}//请求体
}).then(res=>{
    //res响应内容 res.data响应体
    console.log(res)
})

2.  异步查询数据表数据

vue.$store.dispatch("data/show",{dataset,query}).then(res=>{})

参数说明


https://pan.bnocode.com/project/642283bde81aad5e5587ce87/attachment/20230406/1680776919472_8.png

示例

代码如下:         复制代码

vue.$store.dispatch("data/show", {
    dataset: "数据表id/数据集id",//使用数据表id查询时会受到主数据集影响
    query: {
        query: {//查询条件
            "field": value
        },
        empty: false,
        cache:300,//缓存秒数
        page: {
            index: 1,
            size: 100
        }
    }
}).then(res => {
    let data = res.data.data;//查询到的数据collection
});


3.异步查询数据集的分组数据

vue.$store.dispatch("data/show",{flow,query}).then(res=>{})

参数说明

https://pan.bnocode.com/project/642283bde81aad5e5587ce87/attachment/20230407/1680833298952_9.png

示例

代码如下:         复制代码

//获取数据集分组数据(异步)
vue.$store.dispatch("data/show",{
    flow:"数据集id",
    query:{
        field:{
            group:true,
            key:"分组字段field"
        }
    }
}).then((res)=>{
    console.log(res);//返回值
})


4.开启/关闭全局loading动画

开启:vue.$store.dispatch("view/loading/setVisible",true)

关闭:vue.$store.dispatch("view/loading/setVisible",false)

5.通过经纬度值获取位置信息

注意:私有化环境需要联系客服购买此功能!公有云环境可直接使用。

经纬度值需要自行从其他途径获取,例如企业微信的客户端api

vue.$store.dispatch("helper/lbs/getPoi",{type:"weixin",lat,lng})

示例

代码如下:         复制代码

vue.$store.dispatch("helper/lbs/getPoi",{
        type:"weixin",
        lat:"经度",
        lng:"纬度"
    }).then((list)=>{
        console.log(list)
    })


6.轻提示

vue.$toast("提示内容")

7.弹窗确认提示

弹出一个窗口作为确认提示,点击确定后运行一个函数。

vue.$$modal.confirm("title","html",{onOk(){}})

参数说明

https://pan.bnocode.com/project/642283bde81aad5e5587ce87/attachment/20230407/1680833574312_10.png

示例

代码如下:         复制代码

vue.$$model.confirm("确认提交","确认提交数据吗",{
    onOk(){
        alert("提交成功")
    }
})


8.移动端扫描二维码

vue.$$modal.scan({type:"qrcode"}).then(code=>{})

code为扫描结果

9.移动端扫描条形码

vue.$$modal.scan({mode:"barcode",decoder:"code_128_reader"}).then(code=>{})

decoder为条形码类型,可选的类型有:code_128_reader、...

10.上传文件

vue.$$util.api.upload(fileName,file).then(res=>{

    console.log(res)

})

fileName是文件名,需要带文件后缀,file是文件,res返回值如下

https://pan.bnocode.com/project/642283bde81aad5e5587ce87/attachment/20230407/1680833773662_11.png

使用示例

代码如下:         复制代码

vue.$$util.api.upload(fileName,file).then(res=>{
    let url = res.url || res.key || "";
})

组件(库)

在白码平台,目前前端开发中已引入了如下组件(库)。

https://pan.bnocode.com/project/642283bde81aad5e5587ce87/attachment/20230407/1680833856332_12.png

①其中iview组件库处于非template/render模式,需要做标签转换,其他无需转换,如下表。

组件

原标签

转换标签

按钮

Button

i-button

日期选择器

DatePicker

i-datepicker

时间选择器

TimePicker

i-timePicker

表单

Form

i-form

FormItem

i-form-item

单选框

RadioGroup

i-radioGroup

多选框

CheckboxGroup

i-checkboxgroup

栅格

Col

i-col

导航菜单

Menu

i-menu

MenuItem

menu-item

标签页

Tabs

i-tabs

TabPane

i-tabPane

下拉菜单

Dropdown

i-dropdown

DropdownMenu

i-dropdownMenu

DropdownItem

i-dropdownItem

面包屑

Breadcrumb

i-breadcrumb

BreadcrumbItem

i-breadcrumb-item

输入框

Input

i-input

开关

Switch

i-switch

表格

Table

i-table

选择器

Select

i-select

Option

i-option

OptionGroup

i-option-group

数字输入框

InputNumber

Input-Number

上传

Upload

i-upload

颜色选择器

ColorPicker

Color-Picker

进度条

Progress

i-Progress


.....


②vant组件的轻提示功能使用示例,其他用法可参考官方文档

Vant 2 - Mobile UI Components built on Vue

代码如下:         复制代码

let option = {
    message:"加载中...",
    forbidClick:true
}
vue.$toast.loading(option)


如有其他组件库/组件需要引入,请联系客服。

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