index.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <template>
  2. <div>
  3. <Modal
  4. draggable
  5. class-name="vertical-center-modal"
  6. :title="title"
  7. v-model="show"
  8. :width="400"
  9. >
  10. <Form :label-width="labelWidth || 100">
  11. <FormItem
  12. v-for="(item, index) of forms"
  13. :key="index"
  14. :label="item.title"
  15. >
  16. <div
  17. :is="item.name"
  18. v-model="item.value"
  19. :placeholder="item.placeholder || ''"
  20. :class="[
  21. item.name == 'RadioGroup' || item.name == 'CheckboxGroup'
  22. ? 'checkbox-item'
  23. : '',
  24. ]"
  25. :key="index"
  26. :size="item.size ? item.size : 'default'"
  27. :clearable="!item.clearable ? true : false"
  28. :disabled="item.disabled"
  29. :filterable="item.filterable"
  30. :multiple="item.multiple"
  31. :type="item.type"
  32. v-if="!item.isDate"
  33. :style="item.width ? 'width:' + item.width + 'px' : ''"
  34. @on-change="item.change == true ? change(forms, index) : ''"
  35. >
  36. <Option
  37. v-for="(row, key) of item.option"
  38. :key="key"
  39. :label="row.label || row[item.optionName]"
  40. :value="row.value || row[item.optionValue]"
  41. ></Option>
  42. <Checkbox
  43. v-for="(_item, _index) in item.checklist"
  44. :key="_index"
  45. :label="_item.value || _item[item.checkValue]"
  46. >{{ _item.label || _item[item.checkName] }}</Checkbox
  47. >
  48. <Radio
  49. v-for="(_item, _index) in item.radiolist"
  50. :key="_index"
  51. :label="_item.value"
  52. >{{ _item.label }}</Radio
  53. >
  54. </div>
  55. <div class="items" v-if="item.isDate">
  56. <DatePicker
  57. :type="item.type ? item.type : 'date'"
  58. v-model="item.start_value"
  59. :placeholder="item.start_placeholder"
  60. ></DatePicker>
  61. ~
  62. <DatePicker
  63. :type="item.type ? item.type : 'date'"
  64. v-model="item.end_value"
  65. :placeholder="item.end_placeholder"
  66. ></DatePicker>
  67. </div>
  68. </FormItem>
  69. </Form>
  70. <div class="modal-footer" slot="footer">
  71. <Button @click="cancel">取消</Button>
  72. <Button type="primary" @click="then">确认</Button>
  73. </div>
  74. </Modal>
  75. </div>
  76. </template>
  77. <script>
  78. export default {
  79. methods: {
  80. then() {
  81. this.$emit('then')
  82. },
  83. cancel() {
  84. this.$emit('cancel')
  85. },
  86. change(forms, index) {
  87. forms.forEach(element => element.select = false)
  88. forms[index].select = true
  89. this.$emit('change')
  90. }
  91. }
  92. }
  93. </script>
  94. <style lang="scss" scoped>
  95. .margin {
  96. width: 150px;
  97. margin: 10px;
  98. }
  99. .checkbox-item,
  100. .items {
  101. width: auto;
  102. display: inline-block;
  103. }
  104. .iten-title {
  105. color: #333;
  106. }
  107. </style>