generateTabItem.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import {executeExpression, isExpression, extractExpression} from '../util/expression'
  2. export const generateTabItemMixin = {
  3. props: ['config', 'element', 'model', 'rules', 'remote', 'blanks', 'display', 'edit', 'remoteOption', 'platform', 'preview', 'containerKey', 'dataSourceValue', 'eventFunction', 'printRead', 'isSubform', 'rowIndex', 'subName', 'subHideFields', 'subDisabledFields', 'isDialog', 'dialogName', 'isGroup', 'group', 'fieldNode'],
  4. data () {
  5. return {
  6. dataModels: this.model,
  7. tabActive: this.element.tabs.length ? this.element.tabs[0].name : '',
  8. }
  9. },
  10. computed: {
  11. currentOptions () {
  12. if (this.isSubform) {
  13. return {
  14. fieldNode: this.fieldNode ? `${this.fieldNode}.${this.element.model}` : this.element.model,
  15. rowIndex: this.rowIndex,
  16. row: this.model
  17. }
  18. } else {
  19. return {
  20. fieldNode: this.fieldNode ? `${this.fieldNode}.${this.element.model}` : this.element.model,
  21. }
  22. }
  23. },
  24. elementDisplay () {
  25. let curFullField = this.fieldNode ? this.fieldNode + '.' + this.element.model : this.element.model
  26. let curField = this.group ? this.group + '.' + this.element.model : this.element.model
  27. if (this.dynamicHideFields[curFullField] != undefined) {
  28. return !this.dynamicHideFields[curFullField]
  29. }
  30. if (this.dynamicHideFields[curField] != undefined) {
  31. return !this.dynamicHideFields[curField]
  32. }
  33. if (typeof this.element.options.hidden === 'boolean') {
  34. return !this.element.options.hidden
  35. } else {
  36. if (isExpression(this.element.options.hidden)) {
  37. return !executeExpression(extractExpression(this.element.options.hidden), this.currentOptions, this.formContext)
  38. }
  39. }
  40. return true
  41. }
  42. },
  43. inject: ['generateComponentInstance', 'deleteComponentInstance', 'dynamicHideFields', 'formContext'],
  44. mounted () {
  45. this.generateComponentInstance && this.generateComponentInstance(this.fieldNode ? `${this.fieldNode}.${this.element.model}` : this.element.model, this)
  46. },
  47. beforeUnmount () {
  48. this.deleteComponentInstance && this.deleteComponentInstance(this.fieldNode ? `${this.fieldNode}.${this.element.model}` : this.element.model)
  49. },
  50. methods: {
  51. activateTab (label) {
  52. const currentTab = this.element.tabs.find(item => item.label == label)
  53. if (currentTab) {
  54. this.tabActive = currentTab.name
  55. }
  56. }
  57. },
  58. watch: {
  59. model: {
  60. deep: true,
  61. handler (val) {
  62. this.dataModels = this.model
  63. }
  64. }
  65. }
  66. }