UNPKG

ed-frame-vue

Version:

easydata 基础组件

207 lines (194 loc) 6.28 kB
import {getVarType} from "./utils"; /** * @name getControlProp * @param control * @param controlProps * @returns {any} * @description 获取ControlProp信息 */ export function getControlProp(control, controlProps) { return (controlProps && controlProps[control.id]) ? JSON.parse(controlProps[control.id].controlProps) : {} } /** * 初始化上传组件 headers 数据 * @name initHeaders * @returns {{"Authorization": string}} */ export function initHeaders() { return {"Authorization": 'Bearer ' + localStorage.getItem('ACCESS_TOKEN')} } /** * @name getDefault * @param props * @return {{}} * @description 获取默认属性值 */ export function getDefault(props) { let obj = {} for (const key in props) { obj[key] = typeof props[key].default !== 'function' ? props[key].default : {} } return obj } /** * 解析formData数据 * @name setFormData * @param formData * @param controlInfos * @param that * @returns {{}|any} */ export function setFormData(formData, controlInfos, that) { if (getVarType(formData) === 'object') { const {key, keyInfo, keyInfoObject, id, keyInfoView} = formData let data = keyInfoView? keyInfoView : keyInfoObject ? keyInfoObject : keyInfo ? keyInfo : key ? key : formData if (getVarType(data) === 'string') { return Object.assign({}, JSON.parse(data), {id: id}) } else if (data && getVarType(data) === 'object') { return removeTag(Object.assign({}, data, {id: id}), controlInfos, that) } else { return {} } } else if (getVarType(formData) === 'array') { return formData.map(item => { if (getVarType(item.keyInfo) === 'string') { item.keyInfo = JSON.parse(item.keyInfo) } if (item.detailKey) { item.detailKey = JSON.parse(item.detailKey) } return item }) } else { return {} } } /** * @name setTableData * @param tableData * @return {*} */ export function setTableData(tableData) { tableData.map(item => { const {key, keyInfo, keyInfoObject} = item let data = keyInfoObject ? keyInfoObject : keyInfo ? keyInfo : key Object.keys(data).map(i => { if (getVarType(data[i]) === 'object') { data[i] = data[i].value } else if (getVarType(data[i]) === 'array') { let d = '' data[i].map(t => d += `${t.value},`) data[i] = d.replace(/,$/gi, ""); } }) item.key = data item.keyInfo = data item.keyInfoObject = data item.data= null }) return tableData } /** * @name setFormDataDefault * @param controlInfos * @param controlProps * @param dataSource * @return {{}} * @description 获取配置的默认值 */ export function setDefaultFormData({controlInfos, controlProps, dataSource, isSearchForm}) { let formData = {} controlInfos.map((control, index) => { let props = getControlProp(control, controlProps) formData[control.controlName] = "" if (props.hasOwnProperty('defaultValue')) { formData[control.controlName] = props.defaultValue === 'true' ? true : props.defaultValue === 'false' ? false : props.defaultValue } else { if (["checkbox", "upload"].includes(control.controlType)) { formData[control.controlName] = [] _isCheckedDataSource(control, props, formData, true) }else if(['select', 'radio'].includes(control.controlType)) { _isCheckedDataSource(control, props, formData, props.multiple) //todo 暂时放这里,应该map循环只对isShow == true的做处理 (在切换显示隐藏formItem时会有问题) } else if(control.controlType === '_switch' && !isSearchForm && control.isShow) { if(props && props.hasOwnProperty('inactiveValue')) { formData[control.controlName] = props.inactiveValue }else { formData[control.controlName] = false } }else if(control.controlType === 'inputNumber') { formData[control.controlName] = undefined } } }) return formData } function _isCheckedDataSource(control, props, formData, multiple = false) { if (props.dataSource) { if(multiple){ formData[control.controlName] = [] let data = props.dataSource.filter(i => i.isChecked) if(data.length > 0){ data.map(item => formData[control.controlName].push(item.value)) } } else { let data = props.dataSource.find(i => i.isChecked) formData[control.controlName] = data ? data.value : "" } } } /** * @name removeTag * @param data * @param controlInfos * @param that * @return {*} */ export function removeTag(data, controlInfos, that) { if (controlInfos) { for (const key in data) { if (data[key] == null || data[key] == undefined) { delete data[key] continue } const controlInfo = controlInfos.filter(t => t.controlName === key); if (controlInfo && controlInfo.length === 1) { //部分控件做转换 if (['select', 'cascader', '_switch', 'checkbox', 'radio'].includes(controlInfo[0].controlType)) { if (getVarType(data[key]) === 'object') { if (data[key].label && getVarType(data[key].value) !== 'undefined') { data[key] = data[key].value; } } else if (getVarType(data[key]) === 'array') { data[key] = data[key].map(item => { if (item.label && getVarType(item.value) !== 'undefined') { return item.value; } return item; }) } } else if (controlInfo[0].controlType === 'popup') { if (getVarType(data[key]) === 'object' && that) { that.popupFormModel[key] = data[key] data[key] = data[key].label } else if (getVarType(data[key]) === 'array' && that) { that.popupFormModel[key] = data[key] let arr = [] data[key].forEach(item => { arr.push(item.label) }) data[key] = arr } } } } } return data } export function getKeyInfo(data){ const {key, keyInfo, keyInfoObject} = data if(keyInfoObject) return keyInfoObject if(keyInfo) return getVarType(keyInfo) === 'string' ? JSON.parse(keyInfo) : keyInfo if(key) return key }