generateCard.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import {executeExpression, isExpression, extractExpression} from '../util/expression'
  2. export const generateCardMixin = {
  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. }
  8. },
  9. inject: ['generateComponentInstance', 'deleteComponentInstance', 'dynamicHideFields', 'formContext'],
  10. mounted () {
  11. this.generateComponentInstance && this.generateComponentInstance(this.fieldNode ? `${this.fieldNode}.${this.element.model}` : this.element.model, this)
  12. },
  13. beforeUnmount () {
  14. this.deleteComponentInstance && this.deleteComponentInstance(this.fieldNode ? `${this.fieldNode}.${this.element.model}` : this.element.model)
  15. },
  16. computed: {
  17. padding () {
  18. return this.element.options.padding || '20px'
  19. },
  20. currentOptions () {
  21. if (this.isSubform) {
  22. return {
  23. fieldNode: this.fieldNode ? `${this.fieldNode}.${this.element.model}` : this.element.model,
  24. rowIndex: this.rowIndex,
  25. row: this.model
  26. }
  27. } else {
  28. return {
  29. fieldNode: this.fieldNode ? `${this.fieldNode}.${this.element.model}` : this.element.model,
  30. }
  31. }
  32. },
  33. elementDisplay () {
  34. let curFullField = this.fieldNode ? this.fieldNode + '.' + this.element.model : this.element.model
  35. let curField = this.group ? this.group + '.' + this.element.model : this.element.model
  36. if (this.dynamicHideFields[curFullField] != undefined) {
  37. return !this.dynamicHideFields[curFullField]
  38. }
  39. if (this.dynamicHideFields[curField] != undefined) {
  40. return !this.dynamicHideFields[curField]
  41. }
  42. if (typeof this.element.options.hidden === 'boolean') {
  43. return !this.element.options.hidden
  44. } else {
  45. if (isExpression(this.element.options.hidden)) {
  46. return !executeExpression(extractExpression(this.element.options.hidden), this.currentOptions, this.formContext)
  47. }
  48. }
  49. return true
  50. }
  51. },
  52. methods: {
  53. },
  54. watch: {
  55. model: {
  56. deep: true,
  57. handler (val) {
  58. this.dataModels = val
  59. }
  60. }
  61. }
  62. }