StdDataEntry.tsx 1023 B

1234567891011121314151617181920212223242526272829
  1. import {defineComponent} from 'vue'
  2. import {Form} from 'ant-design-vue'
  3. import StdFormItem from '@/components/StdDataEntry/StdFormItem.vue'
  4. import './style.less'
  5. export default defineComponent({
  6. props: ['dataList', 'dataSource', 'error', 'layout'],
  7. emits: ['update:dataSource'],
  8. setup(props, {slots}) {
  9. return () => {
  10. const template: any = []
  11. props.dataList.forEach((v: any) => {
  12. if (v.edit.type) {
  13. template.push(
  14. <StdFormItem dataIndex={v.dataIndex} label={v.title()} extra={v.extra} error={props.error}>
  15. {v.edit.type(v.edit, props.dataSource, v.dataIndex)}
  16. </StdFormItem>
  17. )
  18. }
  19. })
  20. if (slots.action) {
  21. template.push(<div class={'std-data-entry-action'}>{slots.action()}</div>)
  22. }
  23. return <Form layout={props.layout || 'vertical'}>{template}</Form>
  24. }
  25. }
  26. })