widgetCollapse.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import _ from 'lodash'
  2. import { CloneLayout } from '../util/layout-clone.js'
  3. import { EventBus } from '../util/event-bus.js'
  4. import { generateKeyToTD, generateKeyToTH, generateKeyToCol, fixDraggbleList, addClass, removeClass } from '../util'
  5. export const widgetCollapseMixin = {
  6. props: ['element', 'select', 'index', 'data', 'platform', 'formKey', 'subform'],
  7. emits: ['select-change', 'update:select'],
  8. inject: ['getDragging', 'setDragging'],
  9. data () {
  10. return {
  11. tabActive: this.element.tabs.map(t => t.name),
  12. selectWidget: this.select || {}
  13. }
  14. },
  15. methods: {
  16. handleMouseover (e) {
  17. !this.getDragging() && addClass(this.$refs['widgetCollapse'], 'is-hover')
  18. },
  19. handleMouseout (e) {
  20. removeClass(this.$refs['widgetCollapse'], 'is-hover')
  21. },
  22. handlePut (a, b, c) {
  23. if (c.className.split(' ').indexOf('widget-dialog') >=0 || c.className.split(' ').indexOf('dialog-put') >= 0 || c.children[0].className.split(' ').indexOf('dialog-put') >= 0) {
  24. return false
  25. }
  26. return true
  27. },
  28. handleSelectWidget (index) {
  29. this.selectWidget = this.data.list[index]
  30. },
  31. handleWidgetDelete (index) {
  32. if (this.data.list.length == 1) {
  33. this.$emit('select-change', -1)
  34. } else {
  35. if (this.data.list.length - 1 == index) {
  36. this.$emit('select-change', index - 1)
  37. } else {
  38. this.$emit('select-change', index)
  39. }
  40. }
  41. this.data.list.splice(index, 1)
  42. setTimeout(() => {
  43. EventBus.$emit('on-history-add-' + this.formKey)
  44. }, 20)
  45. },
  46. handleTabClone (index) {
  47. let cloneData = _.cloneDeep(this.data.list[index])
  48. this.data.list.splice(index + 1, 0, CloneLayout(cloneData))
  49. this.$nextTick(() => {
  50. this.selectWidget = this.data.list[index + 1]
  51. this.$nextTick(() => { EventBus.$emit('on-history-add-' + this.formKey) })
  52. })
  53. },
  54. handleWidgetTabUpdate (evt) {
  55. this.$nextTick(() => { EventBus.$emit('on-history-add-' + this.formKey) })
  56. },
  57. handleWidgetTabAdd ($event, element, tabIndex) {
  58. const newIndex = $event.newIndex
  59. const key = Math.random().toString(36).slice(-8)
  60. fixDraggbleList(element.tabs[tabIndex].list, newIndex)
  61. element.tabs[tabIndex].list[newIndex] = _.cloneDeep(element.tabs[tabIndex].list[newIndex])
  62. element.tabs[tabIndex].list[newIndex] = {
  63. ...element.tabs[tabIndex].list[newIndex],
  64. options: {
  65. ...element.tabs[tabIndex].list[newIndex].options,
  66. remoteFunc: element.tabs[tabIndex].list[newIndex].options.remoteFunc || 'func_'+key,
  67. remoteOption: element.tabs[tabIndex].list[newIndex].options.remoteOption || 'option_'+key,
  68. tableColumn: false,
  69. subform: this.subform ? true : false
  70. },
  71. key: element.tabs[tabIndex].list[newIndex].key ? element.tabs[tabIndex].list[newIndex].key : key,
  72. model: element.tabs[tabIndex].list[newIndex].model ? element.tabs[tabIndex].list[newIndex].model : element.tabs[tabIndex].list[newIndex].type + '_' + key,
  73. rules: element.tabs[tabIndex].list[newIndex].rules ? [...element.tabs[tabIndex].list[newIndex].rules] : []
  74. }
  75. if (element.tabs[tabIndex].list[newIndex].type == 'report') {
  76. element.tabs[tabIndex].list[newIndex].rows = generateKeyToTD(element.tabs[tabIndex].list[newIndex].rows)
  77. element.tabs[tabIndex].list[newIndex].headerRow = generateKeyToTH(element.tabs[tabIndex].list[newIndex].headerRow)
  78. }
  79. if (element.tabs[tabIndex].list[newIndex].type == 'grid') {
  80. element.tabs[tabIndex].list[newIndex].columns = generateKeyToCol(element.tabs[tabIndex].list[newIndex].columns)
  81. }
  82. setTimeout(() => {
  83. this.selectWidget = element.tabs[tabIndex].list[newIndex]
  84. EventBus.$emit('on-history-add-' + this.formKey)
  85. }, 50)
  86. },
  87. handleSelectChange (index, item) {
  88. setTimeout(() => {
  89. index >=0 ? (this.selectWidget = item.list[index]) : (this.selectWidget = {})
  90. })
  91. }
  92. },
  93. watch: {
  94. select (val) {
  95. this.selectWidget = val
  96. },
  97. selectWidget (val) {
  98. this.$emit('update:select', val)
  99. }
  100. }
  101. }