Component.vue 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <template>
  2. <a-col @click="handleSelect" :span="detail.type==='divider'?24:24/config.layout">
  3. <a-form-item :label="detail.label" v-if="detail.type!=='divider'">
  4. <!-- 输入框 -->
  5. <a-input v-if="detail.type==='input'" v-bind="detail.attrs" v-decorator="[detail.value, { rules: [{ required: detail.required, message: detail.attrs.placeholder}] }]" />
  6. <!-- 数字输入框 -->
  7. <a-input-number style="width:100%" v-if="detail.type==='number'" v-bind="detail.attrs" v-decorator="[detail.value, { rules: [{ required: detail.required, message: detail.attrs.placeholder}] }]" />
  8. <!-- 文本域 -->
  9. <a-textarea v-if="detail.type==='textarea'" v-bind="detail.attrs" v-decorator="[detail.value, { rules: [{ required: detail.required, message: detail.attrs.placeholder}] }]" />
  10. <!-- 下拉框 -->
  11. <a-select v-if="detail.type==='select'" v-bind="detail.attrs" v-decorator="[detail.value, { rules: [{ required: detail.required, message: detail.attrs.placeholder}] }]" >
  12. <!-- <a-select-option v-for="item in detail.options" :value="item.value" :key="item.value">
  13. {{ item.label }}
  14. </a-select-option> -->
  15. </a-select>
  16. <!-- 日期时间 -->
  17. <a-date-picker style="width:100%" v-if="detail.type==='date'" v-bind="detail.attrs" v-decorator="[detail.value, { rules: [{ required: detail.required, message: detail.attrs.placeholder}] }]" />
  18. <!-- 文件上传 -->
  19. <UploadFile v-if="detail.type==='uploadFile'" v-bind="detail.attrs" v-decorator="[detail.value, { rules: [{ required: detail.required, message: detail.attrs.placeholder}] }]" />
  20. <!-- 图片上传 -->
  21. <UploadImg v-if="detail.type==='uploadImg'" v-bind="detail.attrs" v-decorator="[detail.value, { rules: [{ required: detail.required, message: detail.attrs.placeholder}] }]" />
  22. <!-- 选择数据 -->
  23. <template v-if="detail.type==='dataSelect'">
  24. <a-input style="width:70%" v-bind="detail.attrs" v-decorator="[detail.value, { rules: [{ required: detail.required, message: detail.attrs.placeholder}] }]" />
  25. <a-button style="width:30%" type="primary" @click="handleSelectData">选择</a-button>
  26. </template>
  27. </a-form-item>
  28. <!-- 分割线 -->
  29. <a-divider v-bind="detail.attrs" v-if="detail.type==='divider'">
  30. <template v-if="detail.label">
  31. {{ detail.label }}
  32. </template>
  33. </a-divider>
  34. </a-col>
  35. </template>
  36. <script>
  37. import UploadFile from '@/components/Upload/CUploadFile.vue'
  38. import UploadImg from '@/components/Upload/CUploadImg.vue'
  39. export default {
  40. name: 'MComponent',
  41. components: {
  42. UploadFile,
  43. UploadImg
  44. },
  45. props: {
  46. detail: {
  47. type: Object,
  48. required: true,
  49. default: () => {}
  50. },
  51. config: {
  52. type: Object,
  53. required: true
  54. }
  55. },
  56. methods: {
  57. handleSelect () {
  58. this.$emit('select', this.detail)
  59. },
  60. handleSelectData () {
  61. this.$emit('selectInfo', this.detail)
  62. }
  63. }
  64. }
  65. </script>
  66. <style>
  67. </style>