preview.jsx 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { ref, watchEffect } from 'vue'
  2. import { ElSwitch } from 'element-plus'
  3. import CipDialog from '../cip-dialog'
  4. import CipFormRender from './index'
  5. import CipCodeMirror from '../cip-code-mirror'
  6. // import CipCodeMirror from '../cip-code-mirror'
  7. // import EquipmentRadio from '../cip-form-design/widgets/equipment-radio'
  8. export default {
  9. name: 'CipFormRenderPreview',
  10. props: {
  11. equipment: String,
  12. scheme: Object,
  13. modelValue: Boolean
  14. },
  15. setup (props, { emit }) {
  16. const showOnly = ref(false)
  17. const item = ref({})
  18. watchEffect(() => {
  19. if (props.modelValue) {
  20. item.value = {}
  21. }
  22. })
  23. const emitModelValue = (val) => {
  24. emit('update:modelValue', val)
  25. }
  26. const previewDataDialog = ref(false)
  27. const previewData = (resolve, reject) => {
  28. previewDataDialog.value = true
  29. reject()
  30. }
  31. return () => <>
  32. <CipDialog
  33. title={'预览表单'}
  34. modelValue={props.modelValue}
  35. onUpdate:modelValue={(val) => emitModelValue(val)}
  36. onConfirm={(resolve, reject) => previewData(resolve, reject)}
  37. confirmText={'查看数据'}
  38. >
  39. <div style="margin-bottom: 20px;">切换表单状态(注:使用时不会显示) <ElSwitch v-model={showOnly.value}/></div>
  40. <CipFormRender
  41. v-models={[[item.value, 'model']]}
  42. scheme={props.scheme}
  43. equipment={props.equipment}
  44. showOnly={showOnly.value}
  45. />
  46. </CipDialog>
  47. <CipDialog title={'数据预览'} v-model={previewDataDialog.value} showOnly={true}>
  48. <CipCodeMirror modelValue={item.value} height={'500px'}/>
  49. </CipDialog>
  50. </>
  51. }
  52. }