介绍
通过事件与平台提供的UI组件,规划自定义表单,包括文本框、单选框、人员选择器、查询选择、关联选择、树形选择、下拉框、文本域等组件。
详细步骤
1. 在一个功能列表或表单上添加按钮,并给按钮授权
2. 注册按钮的单击(click)事件
3. 编写JS
4. 最终效果
相关代码
const {
$func, // 功能对象
button, // 按钮对象
} = EventOptions;
const {Modal,Form,Input,Radio,InputSelect,Select,DatePicker,InputNumber} = JE.useUi();
const {h,createVNode,ref,reactive}= JE.useVue();
const { encode, decode} = JE.useUtils();
const formRef = ref('');
let formState = reactive({
"XM": "",
"IPHONE": "",
"SEX": "",
"PRICE":"",
"SLR":"",//受理人
"WLMC":"",//物料名称
"BMS":"",//部门树形选择
"DDZT_CODE":"",//订单状态下拉选择
"DDZT_NAME":"",
"CREATETIME":"",
"ADDRESS": "",
"DESC": "",//描述
})
//回显数据到弹出页面
// Object.assign(formState, decode(value));//可以不要
const htmlArr = [{
name: 'XM',
text: '姓名',
placeholder: '请输入姓名',
required: true,
requiredText: '该输入项为必填项!',
type:Input,
},{
name: 'IPHONE',
text: '手机号',
placeholder: '请输入手机号',
required: true,
requiredText: '该输入项为必填项!',
type:Input,
},{
name: 'PRICE',
text: '价格',
required: true,
requiredText: '请输入价格',
style:{ width: '100%' },
type:InputNumber,//数值框组件
},{
name: 'SEX',
text: '性别',
required: true,
requiredText: '请选择性别',
type:Radio.Group,// 单选框组件
configInfo:'JE_RBAC_SEX,SEX,code,S'
},{
name: 'SLR',
text: '受理人',
placeholder: '请选择受理人',
required: true,
requiredText: '请选择受理人',
type:InputSelect.User,//人员选择组件
configInfo:'JE_RBAC_VUSERQUERY,SLR,USER_NAME,S'
},{
name: 'WLMC',
text: '物料名称',
placeholder: '请选择物料名称',
required: true,
requiredText: '请选择物料名称',
type:InputSelect.Grid, //关联选择组件
configInfo:'VERSION_WL,WLMC,WL_WLMC,S'
},{
name: 'BMS',
text: '部门',
placeholder: '请选择部门',
required: true,
requiredText: '请选择部门',
type:InputSelect.Tree,
configInfo:'JE_RBAC_DEPTTREE,BMS,text,S'
},{
name: 'DDZT_CODE',
text: '订单状态',
placeholder: '请选择订单状态',
required: true,
requiredText: '请选择订单状态',
type:Select,
// options: [{label:'1',value:'1'},{label:'2',value:'2'}],//自定义数据
configInfo:'VIDEO_DEMO_DDZT,DDZT_NAME~DDZT_CODE,text~code,S'
},{
name: 'CREATETIME',
text: '时间',
placeholder: '请选择时间',
required: true,
type:DatePicker,//时间组件
picker:"dateTime",
style:{ width: '100%' }
},{
name: 'ADDRESS',
text: '地址',
placeholder: '请输入地址',
required: false,
type:Input
},{
name: 'DESC',
text: '描述',
placeholder: '请填写描述信息',
height: 100,
type:Input.TextArea
}]
const labelCol1 = { style: 'width:90px;' };
const Vnode = htmlArr.map((item)=>{
return h(Form.Item, {
label: item.text,
name: item.name,
rules:[{
required: item.required,
message: item.requiredText
}]
}, createVNode(item.type,{
value: formState[item.name],
height:item.height,
style:item.style,
placeholder:item.placeholder,
configInfo:item.configInfo, //配置信息
// options: item.options,//下拉框自定义数据时必须写这个,如果用字典就用configInfo就可以
picker:item.picker,
allowClear: true,//清空按钮开启
'onUpdate:value': function (val) {
formState[item.name] = val;
}
})
)
})
//表单弹出
const renderContent = ()=> {
return h(Form,{
ref:formRef,
layout:'vertical',//布局方式:垂直 也可以不写
name:'form',
size: 'small',
autocomplete:"off",
model: formState,
labelCol: labelCol1,
},Vnode)};
Modal.alert({
title: '自定义页面',
width: '600px',
height: 'auto',
content:renderContent,
cancelButton: true,
buttonAlign:'center',//按钮居中
okButton: {
closable: false,
handler: ({$modal})=>{
formRef.value.validate().then(()=>{
// $func.getFuncForm().getModel()[key] = encode(formState);//可以不要
//将数据插入列表,然后做一系列业务处理
// $func.getFuncGrid().store.insert(formState);
$modal.close();
}).catch((error) => {
console.error(error);
});
},
}
});
最后编辑: 呼丽华 文档更新时间: 2024-11-08 17:00 作者:呼丽华