WidgetFormItem.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <template>
  2. <div>
  3. <div class="widget-view"
  4. :class="{
  5. active: select.key == element.key,
  6. 'is_req': element.options.required,
  7. 'is_hidden': element.options.hidden,
  8. }"
  9. @click.stop="handleSelectWidget(index)"
  10. @mouseover.stop="handleMouseover"
  11. @mouseout="handleMouseout"
  12. v-if="element && element.key && element.type != 'divider' && element.type != 'alert'"
  13. ref="widgetFormItem"
  14. >
  15. <el-form-item
  16. :class="{
  17. [element.options && element.options.customClass]: element.options.customClass?true: false,
  18. 'fm-label-wrap': element.options.labelWrap
  19. }"
  20. :label="element.options.hideLabel ? '' : element.name"
  21. :label-width="element.options.hideLabel ? '0px' : (element.options.isLabelWidth ? element.options.labelWidth + 'px' : '')"
  22. >
  23. <div v-if="element.options.tip" class="fm-item-tooltip" v-html="element.options.tip.replace(/\n/g, '<br/>')"></div>
  24. <widget-element-item :element="element" :is-table="false" :key="element.key"></widget-element-item>
  25. </el-form-item>
  26. <div class="widget-view-action" v-if="select.key == element.key">
  27. <i class="fm-iconfont icon-icon_clone" @click.stop="handleWidgetClone(index)" :title="$t('fm.tooltip.clone')"></i>
  28. <i class="fm-iconfont icon-trash" @click.stop="handleWidgetDelete(index)" :title="$t('fm.tooltip.trash')"></i>
  29. </div>
  30. <div class="widget-view-drag" v-if="select.key == element.key">
  31. <i class="fm-iconfont icon-drag drag-widget"></i>
  32. </div>
  33. <div class="widget-view-model" :style="{'color': element.options.dataBind ? '' : '#666'}">
  34. <span>{{element.model}}</span>
  35. </div>
  36. <div class="widget-view-type ">
  37. <span>{{element.type ? this.$t('fm.components.fields.' + element.type) : ''}}</span>
  38. </div>
  39. </div>
  40. <div class="widget-view no-put"
  41. v-if="element && element.key && (element.type == 'divider' || element.type == 'alert')"
  42. :class="{active: select.key == element.key, 'is_hidden': element.options.hidden}"
  43. @click.stop="handleSelectWidget(index)"
  44. style="padding-bottom: 0;"
  45. @mouseover.stop="handleMouseover"
  46. @mouseout="handleMouseout"
  47. ref="widgetFormItem"
  48. >
  49. <el-form-item label-width="0">
  50. <el-divider
  51. :content-position="element.options.contentPosition"
  52. v-bind="element.options.customProps"
  53. v-if="element.type == 'divider'">
  54. {{element.name}}
  55. </el-divider>
  56. <el-alert v-if="element.type == 'alert'"
  57. :title="element.options.title"
  58. :type="element.options.type"
  59. :description="element.options.description"
  60. :closable="element.options.closable"
  61. :center="element.options.center"
  62. :show-icon="element.options.showIcon"
  63. :effect="element.options.effect"
  64. :style="{width: element.options.width}"
  65. v-bind="element.options.customProps"
  66. ></el-alert>
  67. </el-form-item>
  68. <div class="widget-view-action" v-if="select.key == element.key">
  69. <i class="fm-iconfont icon-icon_clone" @click.stop="handleWidgetClone(index)" :title="$t('fm.tooltip.clone')"></i>
  70. <i class="fm-iconfont icon-trash" @click.stop="handleWidgetDelete(index)" :title="$t('fm.tooltip.trash')"></i>
  71. </div>
  72. <div class="widget-view-drag" v-if="select.key == element.key">
  73. <i class="fm-iconfont icon-drag drag-widget"></i>
  74. </div>
  75. <div class="widget-view-model " :style="{'color': element.options.dataBind ? '' : '#666'}">
  76. <span>{{element.model}}</span>
  77. </div>
  78. <div class="widget-view-type ">
  79. <span>{{element.type ? this.$t('fm.components.fields.' + element.type) : ''}}</span>
  80. </div>
  81. </div>
  82. </div>
  83. </template>
  84. <script>
  85. import WidgetElementItem from './WidgetElementItem.vue'
  86. import { widgetFormItemMixin } from '../mixins/widgetFormItem.js'
  87. export default {
  88. name: 'WidgetFormItem',
  89. components: {
  90. WidgetElementItem
  91. },
  92. mixins: [widgetFormItemMixin]
  93. }
  94. </script>