import { getItemListByPosition, getItemPrototypeListByPosition, } from '../util/util'; import { getButtonListByPosition, getButtonPrototypeListByPosition, } from './button'; import { ButtonPosition } from '@/type/button-position'; const onFieldInputValueChange = { title: '当用户输入改变时(onChange)', value: 'onFieldInputValueChange', position: [ ButtonPosition.formItemEvent, ButtonPosition.formDialogItemEvent, ButtonPosition.cnArrayTableItemEvent, ButtonPosition.cnArraySubAreaCardItemEvent, ], // getDefaultProps: () => { // return { // }; // }, // getPrototypeList:(position)=>{ // if([EventPosition.formItemEvent,EventPosition.formDialogItemEvent].includes(position)) { // return [ // { // title: '自定义脚本', // name: 'jsFunction', // setter: // } // ] // } // } }; const onFieldValueChange = (config) => { const { position } = config || {}; let title = '【已废弃】改用 用户输入改变时'; if (ButtonPosition.filterItemEvent === position) { title = '当用户输入改变时(onChange)'; } return { title, value: 'onFieldValueChange', position: [ ButtonPosition.filterItemEvent, ButtonPosition.formItemEvent, ButtonPosition.formDialogItemEvent, ButtonPosition.cnArrayTableItemEvent, ], // getDefaultProps: () => { // return { // }; // }, // getPrototypeList:(position)=>{ // if([EventPosition.formItemEvent,EventPosition.formDialogItemEvent].includes(position)) { // return [ // { // title: '自定义脚本', // name: 'jsFunction', // setter: // } // ] // } // } }; }; const onChange = (config) => { const { position } = config || {}; let title = '标签页切换时(onChange)'; if (ButtonPosition.treeEvent === position) { title = '树节点点击时(onChange)'; } return { title, value: 'onChange', position: [ButtonPosition.tabEvent, ButtonPosition.treeEvent], }; }; const onStepItemClick = { title: '步骤项点击时(onClick)', value: 'onStepItemClick', position: [ButtonPosition.stepEvent], }; const onTabRequestFinish = { title: '远程请求加载完成时', value: 'onTabRequestFinish', position: [ButtonPosition.tabEvent], }; const onSearch = { title: '点击查询按钮时', value: 'onSearch', position: [ButtonPosition.filterEvent], }; const onBlur = { title: '输入框失去焦点时(onBlur)', value: 'onBlur', position: [ ButtonPosition.formItemEvent, ButtonPosition.formDialogItemEvent, ButtonPosition.cnArrayTableItemEvent, ButtonPosition.cnArraySubAreaCardItemEvent, ], }; const onFieldReact = { title: '动态计算本字段的值(onFieldReact)', value: 'onFieldReact', position: [ ButtonPosition.formItemEvent, ButtonPosition.formDialogItemEvent, ButtonPosition.cnArrayTableItemEvent, ], }; const onDrop = { title: '拖拽完成后(onDrop)', value: 'onDrop', position: [ButtonPosition.treeEvent], }; const onBack = { title: '导航栏点击返回后(onBack)', value: 'onBack', position: [ButtonPosition.navBarEvent], }; const onListItemClick = { title: '列表项点击时', value: 'onListItemClick', position: [ButtonPosition.listItemClick], }; const onEntryPointsItemClick = { title: '子项点击时', value: 'onEntryPointsItemClick', position: [ButtonPosition.entryPointsItemClick], } const onStatisticCardClick = { title: '指标卡选中时(需开启选中)', value: 'onStatisticCardClick', position: [ButtonPosition.statisticCardEvent], }; const onStatisticCardItemClick = { title: '指标卡点击时(onClick)', value: 'onStatisticCardItemClick', position: [ButtonPosition.statisticCardEvent], }; const onStatisticCardRequestFinish = { title: '指标卡远程请求完成后', value: 'onStatisticCardRequestFinish', position: [ButtonPosition.statisticCardEvent], }; export const componentMap = { onFieldInputValueChange, onChange, onTabRequestFinish, onFieldValueChange, onSearch, onBlur, onStepItemClick, onFieldReact, onDrop, onBack, onListItemClick, onEntryPointsItemClick, onStatisticCardClick, onStatisticCardItemClick, onStatisticCardRequestFinish }; // // 获取列表 // export function getValidatorListByPosition(position) { // const defaultValidatorList = Object.keys(componentMap); // const result = []; // if (position !== undefined) { // defaultValidatorList.forEach((name) => { // const item = componentMap[name]; // if (item && item.position && item.position.includes(position)) { // result.push(item); // } // }); // } // return result; // } export function createEventSetters(config = {}) { const { position, initialValue, title } = config; const eventList = getItemListByPosition({ position, componentMap, }); const eventPrototypeList = getItemPrototypeListByPosition({ position, componentMap, primaryKey: 'name', }); if (eventList?.length === 0) { return []; } // const tempButtonList = getButtonListByPosition(position); // let configure = []; // if (buttonPrototypeList?.length > 0 || eventPrototypeList?.length > 0) { // configure.push({ // name: 'options', // display: 'plain', // title: '请完善事件的配置', // setter: { // componentName: 'ObjectSetter', // props: { // config: { // items: [ // ...eventPrototypeList, // ...buttonPrototypeList, // ], // }, // }, // }, // }); // configure = [...buttonPrototypeList]; // } return [ { name: 'events', title: title || '配置字段的回调事件', display: 'accordion', collapsed: true, setter: { componentName: 'ArraySetter', props: { mode: 'list', itemSetter: { componentName: 'ObjectSetter', // initialValue: { // "type": "JSFunction", // "value": "() => {return {primaryKey: String(Math.floor(Math.random() * 10000)),children: \"Title\",optType:\"link\" };}" // }, initialValue: initialValue || { optType: 'jsAction', }, props: (field) => { const configure = [ ...getButtonPrototypeListByPosition(position, { __field: field, }), ]; let defaultButtonList = [ { label: '动作编排', value: 'flowAction', }, { label: 'js脚本(不推荐使用,建议动作编排)', value: 'jsAction', }, ]; if ( [ ButtonPosition.filterItemEvent, ButtonPosition.formItemEvent, ButtonPosition.formDialogItemEvent, ButtonPosition.tabEvent, ButtonPosition.filterEvent, ButtonPosition.treeEvent, ButtonPosition.cnArraySubAreaCardItemEvent, ButtonPosition.listItemClick, ButtonPosition.entryPointsItemClick, ].includes(position) ) { const buttonList = getButtonListByPosition(position); if (Array.isArray(buttonList) && buttonList.length > 0) { const extraButtonList = buttonList .filter((item) => { return ( item?.value !== 'jsAction' && item?.value !== 'flowAction' ); }) .map((item) => ({ label: item.title, value: item.value })); defaultButtonList = [ ...extraButtonList, ...defaultButtonList, ]; } } if (Array.isArray(configure)) { configure.forEach((item) => { if (item) { item.condition = function (prop) { if (item?.__optType) { const tempResult = item?.__optType === prop?.parent?.getValue?.()?.optType; if (typeof item?.originalCondition === 'function') { return tempResult && item?.originalCondition(prop); } return tempResult; } }; } }); } return { config: { items: [ { name: 'name', display: 'inline', title: '事件类型', isRequired: true, setter: { componentName: 'SelectSetter', props: { options: eventList, }, }, // extraProps: { // setValue(target, value) { // const defaultProps = getItemDefaultProps(componentMap, position, value); // if (defaultProps && Object.keys(defaultProps)?.length > 0) { // target?.parent?.setPropValue?.('options', defaultProps); // } else { // target?.parent?.setPropValue?.('options', {}); // } // }, // }, }, { name: 'optType', title: '动作类型', isRequired: true, // defaultValue: 'jsAction', // extraProps: { // setValue(target, value) { // const currentRowValue = target?.parent?.getValue(); // const newButtonInitialValue = getItemDefaultProps(position, value); // target?.parent.setValue({ // ...currentRowValue, // optType: value, // options: newButtonInitialValue, // }); // }, // }, // "extraProps": { // "setValue": { // "type": "JSFunction", // "value": "(target, value) => {console.log(value,1111)}" // } // }, // initialValue: tempButtonList[0]?.value, setter: { componentName: 'SelectSetter', props: { options: defaultButtonList, }, }, }, ...configure, ], }, }; }, }, }, }, }, ]; return []; }