processMeta事件:

处理列表元数据和表单元数据

ctx结构:

{
    meta:{
        gridOptions:{  //vxe-table gridOptions 列表选项配置
            columns:[]
        },
        formMeta:{
            rule:[],
            options:{

            },
        },
        formPlugin:{//表单插件
            components:{'Comp':Comp},
            install: formCreate =>{}
        }
    },
    baseUrl, //api基础url
    apiBaseUrl, //自定义api基础url
    tenantId: 'xx', 租户id

}

示例(列表增加一列):

const column = {
    field:"api_url",
    title:"api",
    type: "html",
    formatter({row}){
        //const url = `${ctx.apiBaseUrl}/${row.url}`
        const url = `${ctx.baseUrl}/form/api/custom/${row.tenant_id.replace(':','/')}/${row.url}`
            return `<a  style="display: inline-block;height: 100%;width: 100%;" href="${url}" target="_blank" onclick="event.stopPropagation();">${url}</a>`
    },
}

const columns = ctx.meta.gridOptions.columns
const index = columns.findIndex(col => col.field=='create_by')
columns.splice(index,0,column)
console.log('=====processMeta===end==',ctx)
//ctx.meta.skipCellClickColumns.push('api_url')

processFormMeta事件:

ctx结构:
{
    sence, //场景 add edit detail 
    formMeta:{//表单元数据
        rule:[],  //字段 渲染规则
        options:{},//表单名称,编码等信息
    },
    fApi, //fApi表单操作api
    tenantId: 'xx', 租户id

}

示例(修改下拉框选项):

const fApi = ctx.fApi
const formMeta = ctx.formMeta
const formData = ctx.formData
const sence = ctx.sence //edit detail add

console.log('==processFormMeta=事件==',ctx)
const runtime = formData?.runtime

const layerRule = formMeta.rule.find(rule => rule.field=='layers')
let dictCode
if(runtime=='nodejs'){
  dictCode = 'sdict_fc_layers_options_nodejs'
}else if(runtime=='java'){
  dictCode = 'sdict_fc_layers_options_java'
}

if(dictCode){
  layerRule.effect ={
    dict:{dictCode}
  }
  console.log('==processFormMeta=事件处理完后==',ctx)

}

示例(编辑时禁用字段)

const sence = ctx.sence
const formMeta = ctx.formMeta
//const formData = ctx.formData

if(sence=='edit'){
  const disabledFields = ['type','runtime']
  const disabledRules = formMeta.rule.filter(r =>  disabledFields.includes(r.field))
  for(let i=0;i<disabledRules.length;i++){
     disabledRules[i].props.disabled=true
   }  
}
console.log('processFormMeta disabled field',ctx)
文档更新时间: 2026-01-17 16:29   作者:admin