| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- import {executeExpression, isExpression, extractExpression} from '../util/expression'
- export const generateCollapseMixin = {
- 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'],
- data () {
- return {
- dataModels: this.model,
- tabActive: this.element.tabs.length ? [this.element.tabs[0].name] : '',
- }
- },
- computed: {
- currentOptions () {
- if (this.isSubform) {
- return {
- fieldNode: this.fieldNode ? `${this.fieldNode}.${this.element.model}` : this.element.model,
- rowIndex: this.rowIndex,
- row: this.model
- }
- } else {
- return {
- fieldNode: this.fieldNode ? `${this.fieldNode}.${this.element.model}` : this.element.model,
- }
- }
- },
- elementDisplay () {
- let curFullField = this.fieldNode ? this.fieldNode + '.' + this.element.model : this.element.model
- let curField = this.group ? this.group + '.' + this.element.model : this.element.model
- if (this.dynamicHideFields[curFullField] != undefined) {
- return !this.dynamicHideFields[curFullField]
- }
- if (this.dynamicHideFields[curField] != undefined) {
- return !this.dynamicHideFields[curField]
- }
- if (typeof this.element.options.hidden === 'boolean') {
- return !this.element.options.hidden
- } else {
- if (isExpression(this.element.options.hidden)) {
- return !executeExpression(extractExpression(this.element.options.hidden), this.currentOptions, this.formContext)
- }
- }
- return true
- }
- },
- inject: ['generateComponentInstance', 'deleteComponentInstance', 'dynamicHideFields', 'formContext'],
- mounted () {
- this.generateComponentInstance && this.generateComponentInstance(this.fieldNode ? `${this.fieldNode}.${this.element.model}` : this.element.model, this)
- },
- beforeUnmount () {
- this.deleteComponentInstance && this.deleteComponentInstance(this.fieldNode ? `${this.fieldNode}.${this.element.model}` : this.element.model)
- },
- methods: {
- activateCollapse (title) {
- if (typeof title === 'string') {
- const currentCollapse = this.element.tabs.find(item => item.title == title)
- if (currentCollapse) {
- this.tabActive = currentCollapse.name
- }
- }
- if (typeof title === 'object' && Array.isArray(title)) {
- const collapses = title.map(item => {
- const current = this.element.tabs.find(iitem => iitem.title == item)
- if (current) {
- return current.name
- }
- return ''
- })
- this.tabActive = collapses
- }
- }
- },
- watch: {
- model: {
- deep: true,
- handler (val) {
- this.dataModels = this.model
- }
- }
- }
- }
|