form-directory.jsx 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { computed, h, ref } from 'vue'
  2. import { ElDrawer } from 'element-plus'
  3. import './form-directory.less'
  4. export default {
  5. props: {
  6. directory: Object
  7. },
  8. setup (props) {
  9. const drawerSwitch = ref(false)
  10. const openDrawer = () => {
  11. drawerSwitch.value = true
  12. }
  13. const list = computed(() => {
  14. const result = []
  15. Object.keys(props.directory).forEach(key => {
  16. result.push({ key, config: props.directory[key] })
  17. })
  18. return result
  19. })
  20. const DynamicHead = ({ config }) => {
  21. return h('a', { href: `#${config.key}`, class: 'form-directory-item' }, [
  22. h('h' + config.config.level, {}, [config.config.label])
  23. ])
  24. }
  25. return () => <>
  26. <div class={'form-directory__switch'} onClick={() => openDrawer()}>
  27. <i class={'el-icon-s-order'} style={'font-size: 24px'}/>
  28. </div>
  29. <ElDrawer custom-class={'form-directory__drawer'} v-model={drawerSwitch.value} title={'表单目录'}>
  30. <div class={'form-directory'}>
  31. {list.value.map(v => {
  32. return (<DynamicHead config={v}/>)
  33. })}
  34. </div>
  35. </ElDrawer>
  36. </>
  37. }
  38. }