更新记录
1.0.0(2023-08-11)
下载此版本
首次提交
平台兼容性
App |
快应用 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节小程序 |
QQ小程序 |
HBuilderX 3.6.0 |
× |
× |
× |
× |
× |
× |
钉钉小程序 |
快手小程序 |
飞书小程序 |
京东小程序 |
× |
× |
× |
× |
H5-Safari |
Android Browser |
微信浏览器(Android) |
QQ浏览器(Android) |
Chrome |
IE |
Edge |
Firefox |
PC-Safari |
× |
× |
× |
× |
× |
× |
× |
× |
× |
常用表单组件(hdfrom)
hdfrom组件、封装了常用的表单组件类型,如:text、select、date、datetime 等组件
属性说明
属性 |
是否必填 |
值类型 |
默认值 |
说明 |
type |
否 |
String |
'text' |
表单组件类型,默认为 input输入框,可选:[text (input),number (数字键盘),textarea (文本域),label (只读标签),date (日期组件),datetime (日期时间组件),select (单选组件),region (省市区组件),textarea (长文本)] |
v-model |
是 |
String或Number |
无 |
与p9data进行双向数据绑定 |
placeholder |
否 |
String |
无 |
占位文字 |
is-must |
否 |
Boolean |
false |
是否为必填项,如果为 true ,将在标题前加上 红点 |
disabled |
否 |
Boolean |
false |
是否禁用 |
clearBtn |
否 |
Boolean |
false |
type为text或number 时,是否显示清除内容图标按钮 |
title |
否 |
String |
无 |
表单组件的label标题 |
titleWidth |
否 |
String |
'180rpx' |
label标题的宽度 |
textRight |
否 |
Boolean |
false |
内容是否右对齐显示 |
selectData |
否 |
Array |
无 |
select模式的数据项,type为select 时该数据为必填,数据格式为:[{name:"名称1",code:"name1"},{name:"名称2",code:"name2"}] |
field |
否 |
String |
无 |
用来标明最终绑定到p9data中的字段,如:name 或者code ,type为select 时该数据为必填 |
defaultSelect |
否 |
Boolean |
true |
type为select 时,是否默认选中第一条数据 |
compWidth |
否 |
String |
'680rpx' |
整体组件宽度 |
showDisicon |
否 |
Boolean |
false |
是否显示禁止编辑按钮,与 disabled 配合使用 |
maxlength |
否 |
String |
无 |
type为textarea 时,可使用该属性限制文本的最大字数 |
areaHeight |
否 |
String |
'200rpx' |
type为textarea 时,可使用该属性指定文本域的高度 |
useOgDate |
否 |
Boolean |
false |
type为date或datetime 时,是否使用原生时间日期选择框 |
事件说明
事件名 |
说明 |
返回值 |
@change |
数据发生改变时的回调,可以使用该事件进行监听处理 |
- |
插槽说明
slot名 |
说明 |
center |
自定义组件中间部分内容 |
right |
自定义组件右侧按钮内容 |
使用说明
:::: code-group
::: code-group-item Template
<<!-- hdform案例 -->
<template>
<view>
<!-- 为了防止出现白条 -->
<view style="height: 24upx"></view>
<view class="hd-form" v-if="showPage">
<!-- label -->
<view class="su-list-cell su-cell">
<hd-form type="label" title="申请状态" bind-value="编辑中" disabled show-disicon />
</view>
<view class="su-list-cell su-cell">
<hd-form type="datetime" title="创建时间" :bind-value="vMainData['createTime']" disabled show-disicon />
</view>
<!-- text -->
<view class="su-list-cell su-cell">
<hd-form type="text" title="姓名" placeholder="输入姓名" v-model="vMainData['name']" />
</view>
<!-- number -->
<view class="su-list-cell su-cell">
<hd-form type="number" title="联系方式" placeholder="输入联系方式" v-model="vMainData['phone']" />
</view>
<!-- select -->
<view class="su-list-cell su-cell">
<hd-form type="select" title="单选类型" :select-data="selectData" field="name" v-model="vMainData['selectType']" placeholder="请选择单选类型" />
</view>
<!-- 多选 -->
<view class="su-list-cell su-cell">
<hd-form type="multiple" title="多选类型" :select-data="selectData" field="name" v-model="vMainData['multipleType']" placeholder="请选择多选类型" />
</view>
<view class="su-list-cell su-cell">
<hd-form type="mlabel" title="下拉类型" placeholder="请选择会议号" :select-data="selectData" v-model="vMainData['selectType']" field="name" />
</view>
<!-- date -->
<view class="su-list-cell su-cell">
<hd-form type="date" title="日期类型" placeholder="请选择日期" is-must v-model="vMainData['dateValue']" />
</view>
<!-- datetime -->
<view class="su-list-cell su-cell">
<hd-form type="datetime" title="时间类型" placeholder="请选择时间" is-must v-model="vMainData['dateTimeValue']" />
</view>
<!-- 省市区 -->
<view class="su-list-cell su-cell">
<hd-form type="region" title="省市区" placeholder="请选择省市区" v-model="vMainData['areaValue']" />
</view>
<!-- 长文本 -->
<view class="su-list-cell su-cell">
<hd-form type="textarea" placeholder="请输入内容" :maxlength="100" v-model="vMainData['textareaValue']" />
</view>
</view>
<!-- 模拟高度 -->
<view style="height: 130upx"></view>
<!-- 底部保存 -->
<view class="su-page-bottom" v-if="showPage">
<button class="su-button">保存</button>
</view>
</view>
</template>
<script>
/**
* hdform案例
*/
export default {
data() {
return {
showPage: false,
//select选择数据
selectData: [],
// 绑定的p9data数据
vMainData: {}
};
},
onLoad() {
this.$nextTick((e) => {
// 模拟select数据
let temp = [];
for (var i in Array.from('hello')) temp.push({ name: `测试选择数据${i * 1 + 1}`, code: `code${i * 1 + 1}` });
this.selectData = temp;
this.showPage = true;
});
},
methods: {
async initData() {}
}
};
</script>
<style lang="scss">
.hd-form {
margin: 24upx;
margin-top: 0;
border-radius: 24upx !important;
background-color: #fff;
}
</style>
:::
::::