/**
* 用“el-form-item”包裹“组件html”
* @param formJson 表单配置
* @param component 组件(oneText, multiText, select, radio...)
* @param componentHtml 组件html
* @returns {string}
*/
export function formItemWrapper(formJson, component, componentHtml) {
const config = component.__config__
// 标题
let label = `label="${config.label}"`
// 标题宽度
let labelWidth = ''
// 必填
const required = config.required ? 'required' : ''
// 如果配置了标题宽度
if (config.labelWidth && config.labelWidth !== formJson.labelWidth) {
labelWidth = `label-width="${config.labelWidth}px"`
}
// 如果不显示标题
if (config.showLabel === false) {
label = ''
labelWidth = 'label-width="0"'
}
// 用“el-form-item”包裹
return `
${componentHtml}
`
}
/**
* 用“el-col”包裹“el-form-item”
* @param component 组件(oneText, multiText, select, radio...)
* @param formItemHtml formItemHtml
* @returns {string}
*/
export function colWrapper(component, formItemHtml) {
return `
${formItemHtml}
`
}
export function templateWrapper(str) {
return `
${str}
`
}
export function scriptWrapper(str) {
return ``
}
export function styleWrapper(cssStr) {
return ``
}
export function dialogWrapper(formHtml) {
return `
${formHtml}
取消
确定
`
}
/**
* 获取“vModel”属性的HTML
* @param formJson 表单配置
* @param component 组件(oneText, multiText, select, radio...)
* @param parent 父组件(dialog, table...)
* @returns {string}
*/
export function getVModelHtml(formJson, component, parent) {
let vModel = `v-model="${formJson.formModel}.${component.__vModel__}"`
if (component.inTable) { // 如果该组件在表格中
vModel = `v-model="scope.row.${component.__vModel__}"`
} else if (parent && parent.FComponentType === 'dialog') { // 如果该组件在弹框中
vModel = `v-model="${parent.FFormDataParamName}.${component.__vModel__}"`
}
return vModel
}