FormDesignRender.vue 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <template>
  2. <component ref="form" :is="config.name" :mode="mode" v-bind="config.props" v-model="_value" />
  3. </template>
  4. <script>
  5. import components from '@/views/common/form/ComponentExport'
  6. export default {
  7. name: "FormRender",
  8. components: components,
  9. props:{
  10. mode:{
  11. type: String,
  12. default: 'DESIGN'
  13. },
  14. value: {
  15. default: undefined
  16. },
  17. config:{
  18. type: Object,
  19. default: ()=>{
  20. return {}
  21. }
  22. }
  23. },
  24. computed: {
  25. _value: {
  26. get() {
  27. const valueType = this.config.valueType
  28. const value = valueType === "Number" && this.value ? Number(this.value) : this.value;
  29. return value;
  30. },
  31. set(val) {
  32. const valueType = this.config.valueType
  33. const value = valueType === "Number" ? Number(val) : val
  34. this.$emit("input", value);
  35. }
  36. }
  37. },
  38. data() {
  39. return {}
  40. },
  41. methods: {
  42. validate(call){
  43. this.$refs.form.validate(call)
  44. }
  45. }
  46. }
  47. </script>
  48. <style lang="less" scoped>
  49. </style>