{"remainingRequest":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xq-web-bpm\\src\\components\\form\\PropertyPanel.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\src\\components\\form\\PropertyPanel.vue","mtime":1675071992022},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xq-web-bpm\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["import \"core-js/modules/es7.object.get-own-property-descriptors\";\nimport \"core-js/modules/es6.object.keys\";\nimport _defineProperty from \"D:/jenkins/workspace/xq-web-bpm/node_modules/@babel/runtime/helpers/esm/defineProperty\";\nimport \"core-js/modules/es6.string.ends-with\";\nimport \"core-js/modules/es6.regexp.replace\";\nimport \"core-js/modules/es6.array.find\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es7.array.includes\";\nimport \"core-js/modules/es6.string.includes\";\nimport \"core-js/modules/es6.function.name\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport form from '@/api/form.js';\nimport { Base64 } from 'js-base64';\nimport deepmerge from 'deepmerge';\nimport { advanceComponents, basicComponents, layoutComponents } from '@/api/controlsConfig.js';\nimport LayoutProperty from '@/components/form/LayoutProperty.vue';\nimport AdvancedProperty from '@/components/form/AdvancedProperty.vue';\nimport BasicsProperty from '@/components/form/BasicsProperty.vue';\nimport htEditor from '@/components/common/HtEditor.vue';\nimport i18nMessageEdit from '@/components/system/I18nMessageEdit.vue';\nimport WidgetFormBus from '@/components/form/bus/WidgetFormBus.js';\nimport utils from '@/hotent-ui-util.js';\n\nvar EipSysTypeSelector = function EipSysTypeSelector() {\n  return import('@/components/selector/EipSysTypeSelector.vue');\n};\n\nexport default {\n  name: 'property-panel',\n  props: ['data', 'boDefData', 'formData', 'mainBoFields', 'subTables', 'sunTablesMap'],\n  components: {\n    LayoutProperty: LayoutProperty,\n    AdvancedProperty: AdvancedProperty,\n    BasicsProperty: BasicsProperty,\n    htEditor: htEditor,\n    i18nMessageEdit: i18nMessageEdit,\n    EipSysTypeSelector: EipSysTypeSelector\n  },\n  data: function data() {\n    return {\n      formCollapseActiveNames: 'formBasic',\n      basicComponents: basicComponents,\n      layoutComponents: layoutComponents,\n      advanceComponents: advanceComponents,\n      copyAdvanceComponents: '',\n      activeTabName: 'field',\n      avtiveCollapseName: 'basic',\n      field: this.data,\n      formObj: this.formData,\n      dialogincluddingFileVisible: false,\n      //引入脚本dialog\n      formSettingVisible: false,\n      //表单配置dialog\n      formSetting: {\n        align: 'right',\n        customColon: false,\n        fontColor: 'rgb(150, 151, 153)'\n      },\n      formHtmlUrl: '',\n      //获取表单HTML url\n      formHtml: '',\n      //表单html数据\n      formExpand: \"\",\n      //表单json数据\n      isWatch: false,\n      includeFiles: {\n        diyFile: '',\n        diyCss: '',\n        diyJs: ''\n      },\n      //引入脚本和样式对象\n      tableFields: [],\n      filterListType: ['number', 'currency', 'date', 'amap'],\n      clobFieldList: [\"textarea\", \"dialog\", \"imageViewer\", \"related-process\", \"signature\", \"button\", \"immediate-single\", \"immediate-textarea\", \"milepost\", \"eip-cascader\", \"dataView\", \"text\", \"QRcode\", \"iframe\", \"image\"],\n      //大文本类型字段允许绑定的控件\n      allBoData: [],\n      formVarData: [],\n      returnData: [],\n      cmOptions: {\n        value: '',\n        mode: 'vue',\n        readOnly: false,\n        smartIndent: true,\n        tabSize: 2,\n        theme: 'base16-light',\n        lineNumbers: true,\n        line: true\n      },\n      cmOptions2: {\n        value: '',\n        mode: 'javascript',\n        readOnly: false,\n        smartIndent: true,\n        tabSize: 2,\n        theme: 'base16-light',\n        lineNumbers: true,\n        line: true\n      },\n      i18nMessageKey: '',\n      createKeyMap: {\n        text: true,\n        image: true,\n        'immediate-single': true,\n        'immediate-textarea': true\n      },\n      sunTables: [],\n      currentBoSubEntity: '',\n      fieldIndexData: {},\n      noAttrFieldList: []\n    };\n  },\n  created: function created() {\n    var _this2 = this;\n\n    var me_ = this; //表单初始化时收集无属性控件字段\n\n    WidgetFormBus.$on(\"initNoAttrField\", function (obj) {\n      if (_this2.isNoAttrField(obj) && obj.tableName) {\n        me_.noAttrFieldListChange(obj, true);\n      }\n    });\n  },\n  methods: {\n    //重置表单配置信息\n    formSettingReset: function formSettingReset() {\n      this.formSetting = {\n        align: 'right',\n        customColon: false,\n        fontColor: 'rgb(150, 151, 153)'\n      };\n      this.formData.formSetting = '';\n    },\n    //打开表单配置弹框\n    formSettingClick: function formSettingClick() {\n      if (this.formData.formSetting) {\n        this.formSetting = JSON.parse(this.formData.formSetting);\n      }\n\n      this.formSettingVisible = true;\n    },\n    //保存表单配置信息\n    formSettingOk: function formSettingOk() {\n      this.formData.formSetting = JSON.stringify(this.formSetting);\n      this.formSettingVisible = false;\n    },\n    saveValidate: function saveValidate() {\n      var _this3 = this;\n\n      var this_ = this;\n      utils.validateForm(this, 'editBpmForm').then(function () {\n        //手机表单保存时 表单类型指定为手机表单类型\n        if (this_.formData.formType && this_.formData.formType != 'mobile') {\n          this_.formData.formType = 'pc';\n        } // this.formData.name = this.formData.formName;\n\n\n        this_.$emit('saveEnd');\n      }).catch(function (reason) {\n        var rules = reason.map(function (obj) {\n          return obj.rule;\n        });\n\n        if (this_.formData && this_.formData.typeName && this_.formData.name && this_.formData.formKey) {\n          if (rules.includes('isExist')) {\n            _this3.$message.error('表单别名重复');\n          } else if (rules.includes('regex')) {\n            _this3.$message.error('只能输入字母、数字、下划线，且以字母开头');\n          }\n        } else {\n          //获取到报错后的规则数组\n          if (rules.includes('required')) {\n            _this3.$message.error('请完整填写表单内容');\n          } else if (rules.includes('isExist')) {\n            _this3.$message.error('表单别名重复');\n          }\n        }\n\n        _this3.activeTabName = 'form';\n      });\n    },\n    filterFields: function filterFields(obj) {\n      if ((obj.columnType == \"clob\" || obj.dataType == \"clob\") && this.clobFieldList.indexOf(this.field.ctrlType) == -1) {\n        return false;\n      }\n\n      if (this.filterListType.indexOf(this.field.ctrlType) > -1) {\n        if (this.field.ctrlType == \"date\" && this.field.options.dataType != \"date\") {\n          this.field.options.dataType = \"date\";\n        }\n\n        return obj.dataType == this.field.options.dataType;\n      } else if (obj.nodeType == 'sub') {\n        return false;\n      } else {\n        return true;\n      }\n    },\n    //高级控件\n    filterAdvanceFields: function filterAdvanceFields(obj) {\n      //子/孙表不能选择的控件类型 返回false 不能选择\n      var types = ['dataView', 'QRcode', 'milepost'];\n\n      if (this.field.boSubEntity && types.includes(obj.ctrlType)) {\n        return false;\n      }\n\n      return true;\n    },\n    //常用控件\n    filterFieldsByCurrentField: function filterFieldsByCurrentField(obj) {\n      //子/孙表不能选择的控件类型 返回false 不能选择\n      var types = ['related-process', 'amap'];\n\n      if (this.field.boSubEntity && types.includes(obj.ctrlType)) {\n        return false;\n      }\n\n      if (!obj.options.dataType) {\n        return true;\n      }\n\n      if (!this.field.options) {\n        return true;\n      }\n\n      if (!this.field.options.dataType) {\n        return true;\n      }\n\n      if (this.field.options.dataType == obj.options.dataType) {\n        return true;\n      }\n\n      var dataTypes = obj.options.dataType.split('|');\n\n      if (dataTypes.indexOf('string') != -1) {\n        dataTypes.push('varchar');\n        dataTypes.push('nvarchar');\n      } // 数字控件不能绑定日期控件\n\n\n      if (this.field.options.dataType == 'number') {\n        return obj.options.dataType != 'date';\n      } // 日期控件不能绑定数字控件\n\n\n      if (this.field.options.dataType == 'date') {\n        return obj.options.dataType != 'number';\n      } // 大文本类型默认多行文本\n\n\n      if (this.field.options.dataType == 'clob') {\n        if (obj.ctrlType == 'textarea') {\n          return true;\n        }\n      } // 字符串类型可以选择所有字段\n\n\n      var charArr = ['string', 'varchar', 'nvarchar']; // 需要兼容以前的代码  this.field.options.dataType == \"\"\n\n      var result = this.field.options.dataType.split('|').filter(function (item) {\n        return dataTypes.indexOf(item) != -1 || charArr.indexOf(item) != -1;\n      });\n\n      if (result && result.length >= 1) {\n        return true;\n      }\n\n      return false;\n    },\n\n    /**\r\n     * 新旧属性的替换,并保留原有的双向绑定,\r\n     * 具体逻辑为:\r\n     * 1.新属性有值的,旧属性没有的,新增\r\n     * 2.新属性没有的,旧属性有的,删除\r\n     * 3.新属性有的,旧属性也有,,则保留旧属性(desc等一些特殊key 需要特殊逻辑处理)\r\n     */\n    attributeToReplace: function attributeToReplace(oldV, newV) {\n      for (var key in oldV) {\n        //2.新属性没有的,旧属性有的,删除\n        if (key != \"key\" && newV[key] === undefined && (oldV[key] || oldV[key] === \"\")) {\n          delete oldV[key];\n        }\n      }\n\n      for (var _key in newV) {\n        var value = newV[_key]; //1.新属性有值的,旧属性没有的,新增\n\n        if (oldV[_key] === undefined || oldV[_key] === '') {\n          this.$set(oldV, _key, value); //3.新属性有的,旧属性也有,,则保留旧属性(options等一些特殊key 需要特殊逻辑处理)\n        } else {\n          if (_key === 'options') {\n            // 保留绑定的dataType\n            var boDataType = oldV[_key].dataType;\n            oldV[_key] = value;\n\n            if (boDataType) {\n              oldV[_key].dataType = boDataType;\n            }\n          }\n        }\n      } //旧属性有值 和新属性的值不一样 要重置\n\n\n      for (var keys in oldV) {\n        if (!(oldV[keys] instanceof Object)) {\n          if (oldV[keys] != newV[keys] && newV[keys] != undefined) {\n            oldV[keys] = newV[keys];\n          }\n        }\n      }\n    },\n    //切换控件类型对应改变属性\n    changeCtrlType: function changeCtrlType(isClean) {\n      var me_ = this;\n      var selectObj = deepmerge({}, me_.field, {\n        clone: true\n      });\n      basicComponents.forEach(function (item) {\n        if (me_.field.ctrlType == item.ctrlType) {\n          // me_.field = deepmerge({}, item, { clone: true });\n          var i = deepmerge({}, item, {\n            clone: true\n          });\n          i.parentNodeType = me_.data.parentNodeType;\n          i.boSubEntity = me_.data.boSubEntity;\n          me_.attributeToReplace(me_.field, i);\n          me_.field.key = me_.data.key;\n\n          if (!isClean) {\n            me_.field.boDefId = selectObj.boDefId;\n            me_.field.target = selectObj.target;\n            me_.field.boAttrId = selectObj.boAttrId;\n            me_.field.fieldPath = selectObj.fieldPath;\n            me_.field.name = selectObj.name;\n            me_.field.desc = selectObj.desc;\n            me_.field.title = selectObj.desc;\n            me_.field.entId = selectObj.entId;\n            me_.field.boDefAlias = selectObj.boDefAlias;\n            me_.field.tableName = selectObj.tableName;\n            me_.field.columnType = selectObj.columnType;\n            me_.field.options.format = selectObj.options.format;\n            me_.field.options.inputFormat = selectObj.options.format;\n            me_.field.options.decimalDigits = selectObj.decimalLen;\n            me_.field.options.maxDecimalDigits = selectObj.decimalLen;\n          } //me_.$emit(\"data:update\",  me_.field);\n          //WidgetFormBus.$emit(\"changeCtrlType\", me_.field);\n\n        }\n      });\n      advanceComponents.forEach(function (item) {\n        if (me_.field.ctrlType == item.ctrlType) {\n          // me_.field = deepmerge({}, item, { clone: true });\n          var e = deepmerge({}, item, {\n            clone: true\n          });\n          e.parentNodeType = me_.data.parentNodeType;\n          e.boSubEntity = me_.data.boSubEntity;\n          me_.attributeToReplace(me_.field, e);\n          me_.field.key = me_.data.key;\n\n          if (!isClean) {\n            me_.field.boDefId = selectObj.boDefId;\n            me_.field.target = selectObj.target;\n            me_.field.boAttrId = selectObj.boAttrId;\n            me_.field.fieldPath = selectObj.fieldPath;\n            me_.field.name = selectObj.name;\n            me_.field.desc = selectObj.desc;\n            me_.field.title = selectObj.desc;\n            me_.field.entId = selectObj.entId;\n            me_.field.boDefAlias = selectObj.boDefAlias;\n            me_.field.tableName = selectObj.tableName;\n            me_.field.columnType = selectObj.columnType;\n            me_.field.options.format = selectObj.format;\n            me_.field.options.inputFormat = selectObj.format;\n            me_.field.options.decimalDigits = selectObj.decimalLen;\n            me_.field.options.maxDecimalDigits = selectObj.decimalLen;\n          } // WidgetFormBus.$emit(\"changeCtrlType\", me_.field);\n\n        }\n      });\n      me_.$nextTick(function () {\n        me_.$emit('update:data', me_.field);\n      });\n    },\n    //引入脚本和样式对象保存\n    includeFilesOk: function includeFilesOk() {\n      var _this4 = this;\n\n      if (!this.formHtml) {\n        this.$message.warning('模板HTML不能为空！');\n        return;\n      }\n\n      this.dialogincluddingFileVisible = false;\n      form.saveFormJs({\n        formId: this.formData.id,\n        diyJs: this.includeFiles.diyJs,\n        formHtml: Base64.encode(this.formHtml, 'utf-8'),\n        formExpand: Base64.encode(this.formExpand, 'utf-8')\n      }).then(function (resp) {\n        if (resp.state) {\n          _this4.$message.success(resp.message);\n        }\n      });\n    },\n    variablesClick: function variablesClick(data) {\n      this.includeFiles.diyJs += data.value;\n    },\n    afterformHtml: function afterformHtml(data) {\n      this.formExpand = data.bpmForm.formExpand;\n      this.formHtml = data.bpmForm.formHtml;\n      this.includeFiles.diyJs = data.bpmForm.diyJs;\n    },\n    includdingFile: function includdingFile() {\n      this.dialogincluddingFileVisible = true;\n      this.formHtmlUrl = '/form/form/v1/previewDesignVue?formId=' + this.formData.id;\n      this.includeFiles = this.formData.includeFiles ? Base64.decode(this.formData.includeFiles, 'utf-8') : {\n        diyFile: ' ',\n        diyCss: ' ',\n        diyJs: ' '\n      };\n    },\n    handleClick: function handleClick(tab, event) {\n      console.info(tab);\n    },\n    // 改变地图地址绑定的字段 设置fieldPath\n    changeMap: function changeMap(value) {\n      var selectObj = null;\n      this.tableFields.forEach(function (boData) {\n        if (!selectObj) {\n          selectObj = boData.children.find(function (opt) {\n            return opt.name === value;\n          });\n\n          if (selectObj) {\n            selectObj.boDefAlias = boData.boDefAlias || boData.fieldPath.split('.')[0];\n            selectObj.tableName = boData.name;\n          }\n        }\n      });\n      this.field.options.addressMap = selectObj.path + '.' + selectObj.name;\n    },\n    // 改变绑定的字段 设置fieldPath\n    change: function change(value) {\n      var _this5 = this;\n\n      var selectObj = null;\n      this.fieldIndexData = {};\n      this.tableFields.forEach(function (boData) {\n        boData.children.forEach(function (v, i) {\n          var keyName = v.name;\n\n          if (value.indexOf('.') != -1) {\n            keyName = v.path + '.' + v.name;\n          }\n\n          if (v.isRequired && keyName == value) {\n            if (!_this5.fieldIndexData.fieldName) {\n              _this5.fieldIndexData.fieldName = v.fieldName;\n              _this5.fieldIndexData.index = i;\n            }\n          }\n        });\n\n        if (!selectObj) {\n          selectObj = boData.children.find(function (opt) {\n            return opt.name === value;\n          });\n\n          if (value.indexOf('.') != -1) {\n            selectObj = boData.children.find(function (opt) {\n              return opt.path + '.' + opt.name === value;\n            });\n          }\n\n          if (selectObj) {\n            selectObj.boDefAlias = boData.boDefAlias || boData.path.split('.')[0];\n            selectObj.tableName = boData.name;\n          }\n        }\n      });\n\n      if (!selectObj) {\n        if (this.field.parentNodeType == 'sub') {\n          this.field.fieldPath = 'item.' + value;\n          this.field.name = 'item.' + value;\n        } else {\n          this.$message.warning('只允许子表绑定虚拟字段');\n        }\n\n        return;\n      }\n\n      this.field.boDefId = selectObj.boDefId;\n      this.field.boAttrId = selectObj.id;\n\n      if (this.field.parentNodeType == 'sub') {\n        this.field.fieldPath = 'item.' + selectObj.name;\n      } else {\n        this.field.fieldPath = selectObj.path + '.' + selectObj.name;\n      }\n\n      this.field.options.dataType = selectObj.dataType;\n      this.field.name = selectObj.name;\n      this.field.desc = selectObj.desc;\n      this.field.title = selectObj.desc;\n      this.field.entId = selectObj.entId;\n      this.field.boDefAlias = selectObj.boDefAlias;\n      this.field.tableName = selectObj.tableName;\n      this.field.columnType = selectObj.columnType;\n\n      if (selectObj.dataType == 'date') {\n        this.field.options.format = selectObj.format;\n        this.field.options.inputFormat = selectObj.format;\n      } else if (selectObj.dataType == 'number') {\n        this.field.options.maxDecimalDigits = selectObj.decimalLen;\n        this.field.options.decimalDigits = selectObj.decimalLen;\n      }\n    },\n    //给无属性控件设置关联ent属性\n    changeNoAttrFile: function changeNoAttrFile(value) {\n      var _this = this;\n\n      this.tableFields.forEach(function (ent) {\n        if (ent.name == value) {\n          _this.$set(_this.field, 'entId', ent.id);\n\n          _this.$set(_this.field, 'boDefId', ent.boDefId);\n        }\n      });\n    },\n    isChangeWatch: function isChangeWatch() {\n      this.isWatch = true;\n    },\n    editI18nMessage: function editI18nMessage(after) {\n      this.i18nMessageKey = this.field.fieldPath || this.field.path;\n\n      if (this.createKeyMap[this.field.ctrlType]) {\n        this.i18nMessageKey = this.formData.formKey + '.' + this.field.ctrlType + Math.random() * 5000;\n      }\n\n      if (this.i18nMessageKey && after) {\n        this.i18nMessageKey += after;\n      }\n\n      this.$refs.i18nMessageEdit.handleOpen();\n    },\n    afterSaveI18n: function afterSaveI18n(data) {\n      data.key = data.key.replace('$', '#');\n\n      if (data.prop.endsWith('placeholder')) {\n        this.field.options.placeholder = data.key;\n        this.field.options.placeholder_zh = data.desc;\n      } else if (data.prop.endsWith('tip')) {\n        this.tooltip = data.key;\n      } else {\n        this.field.desc = data.key;\n        this.field.desc_zh = data.desc;\n      }\n    },\n    isNoAttrField: function isNoAttrField(field) {\n      if (!field) {\n        field = this.field;\n      }\n\n      if (field.ctrlType == 'text' || field.ctrlType == 'immediate-single' || field.ctrlType == 'immediate-textarea' || field.ctrlType == 'button' && !field.options.bindEventjson.isShowInput) {\n        return true;\n      }\n\n      return false;\n    },\n    noAttrFieldListChange: function noAttrFieldListChange(field, isAdd) {\n      var _this6 = this;\n\n      //无属性控件的变化实时其更新联动列表\n      var inList = false;\n      this.noAttrFieldList.forEach(function (item) {\n        if (item.key === field.key) {\n          if (isAdd) {\n            inList = true;\n          } else {\n            _this6.noAttrFieldList.remove(item);\n\n            return;\n          }\n        }\n      });\n\n      if (isAdd && !inList) {\n        if (field.ctrlType == 'button') {\n          field.desc = field.options.bindEventjson.name;\n        }\n\n        this.noAttrFieldList.push(field);\n      }\n    }\n  },\n  watch: {\n    data: function data(val) {\n      this.field = val;\n    },\n    field: {\n      handler: function handler(val) {\n        var _this7 = this;\n\n        // 下拉框 多选isMultiple 属性废弃 使用options.multiple属性 为了兼容以前的代码 将isMultiple true 值赋值给 options.multiple属性\n        if (val.ctrlType == 'select' && val.isMultiple) {\n          val.options.multiple = true;\n          val.isMultiple = false;\n        }\n\n        if (val.parentNodeType == 'sub' || val.parentNodeType == 'sun') {\n          if (val.boSubEntity) {\n            this.currentBoSubEntity = val.boSubEntity;\n            this.tableFields = this.subTables.filter(function (item) {\n              return item.name === val.boSubEntity;\n            });\n\n            if (this.tableFields.length > 0) {\n              for (var e = 0; e < this.tableFields.length; e++) {\n                if (this.tableFields[e].children.length > 0) {\n                  for (var w = 0; w < this.tableFields[e].children.length; w++) {\n                    this.tableFields[e].children[w].keyName = this.tableFields[e].children[w].name;\n                  }\n                }\n              }\n            }\n          } //如果是孙表，则选取子表里的孙表供选择绑定\n\n\n          if ((val.ctrlType == 'suntable' || val.ctrlType == 'sunDiv') && this.currentBoSubEntity) {\n            this.sunTables = this.sunTablesMap[this.currentBoSubEntity] || [];\n          } //如果是孙表里的控件，则找到这个一个孙表供其选择属性\n\n\n          if (val.parentNodeType == 'sun') {\n            for (var subName in this.sunTablesMap) {\n              var sunTabs = this.sunTablesMap[subName];\n\n              if (sunTabs) {\n                sunTabs.forEach(function (sunTab) {\n                  if (sunTab.name == _this7.currentBoSubEntity) {\n                    _this7.tableFields = [sunTab];\n                  }\n                });\n\n                if (this.tableFields.length > 0) {\n                  for (var o = 0; o < this.tableFields.length; o++) {\n                    if (this.tableFields[o].children.length > 0) {\n                      for (var h = 0; h < this.tableFields[o].children.length; h++) {\n                        this.tableFields[o].children[h].keyName = this.tableFields[o].children[h].name;\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        } else {\n          if (this.mainBoFields.length > 0) {\n            for (var y = 0; y < this.mainBoFields.length; y++) {\n              if (this.mainBoFields[y].children.length > 0) {\n                for (var t = 0; t < this.mainBoFields[y].children.length; t++) {\n                  this.mainBoFields[y].children[t].keyName = this.mainBoFields[y].children[t].path + '.' + this.mainBoFields[y].children[t].name;\n                }\n              }\n            }\n          }\n\n          if (val && val.ctrlType == 'time') {\n            this.tableFields = JSON.parse(JSON.stringify(this.mainBoFields));\n            this.tableFields.forEach(function (table) {\n              if (table.children) {\n                var newFileds = [];\n                table.children = table.children.filter(function (f) {\n                  return f.dataType != 'date' && f.dataType != 'number';\n                });\n              }\n            });\n          } else {\n            this.mainBoFields.forEach(function (item) {\n              for (var q = 0; q < item.children.length; q++) {\n                for (var i = 0; i < item.children.length - 1 - q; i++) {\n                  if (item.children[i].index > item.children[i + 1].index) {\n                    var temp = item.children[i];\n                    item.children[i] = item.children[i + 1];\n                    item.children[i + 1] = temp;\n                  }\n                }\n              }\n            });\n            this.tableFields = this.mainBoFields;\n          }\n        } //合并数组对象\n\n\n        var allBoData = [];\n        var formVarData = [];\n        var returnData = []; //对话框返回值选择的字段信息 主表对应主表，子表对应子表，孙表对应孙表。\n\n        var returnTypes = ['select', 'dropdown', 'dialog'];\n\n        if ((val.ctrlType == 'suntable' || val.ctrlType == 'sunDiv') && this.currentBoSubEntity || val.parentNodeType == 'sun') {\n          this.mainBoFields.forEach(function (mainBoField) {\n            formVarData.push(_objectSpread({}, mainBoField));\n            allBoData.push(_objectSpread({}, mainBoField));\n          });\n\n          if (this.sunTables && this.sunTables.length > 0) {\n            this.sunTables.forEach(function (sunTable) {\n              if (val.parentNodeType == 'sun') {\n                if (sunTable.name == val.boSubEntity) {\n                  allBoData.push(_objectSpread({}, sunTable));\n                  formVarData.push(_objectSpread({}, sunTable));\n                  returnData.push(_objectSpread({}, sunTable));\n                }\n              } else {\n                allBoData.push(_objectSpread({}, sunTable));\n                formVarData.push(_objectSpread({}, sunTable));\n                returnData.push(_objectSpread({}, sunTable));\n              }\n            });\n          }\n        } else {\n          if (val.parentNodeType != 'sub' && returnTypes.includes(val.ctrlType)) {\n            //添加主表字段\n            this.mainBoFields.forEach(function (mainBoField) {\n              returnData.push(_objectSpread({}, mainBoField));\n            });\n          } else if (val.parentNodeType == 'sub' && returnTypes.includes(val.ctrlType)) {\n            //添加子表字段\n            this.subTables.forEach(function (subTable) {\n              returnData.push(_objectSpread({}, subTable));\n            });\n          } //添加主表字段\n\n\n          this.mainBoFields.forEach(function (mainBoField) {\n            allBoData.push(_objectSpread({}, mainBoField));\n          });\n          this.subTables.forEach(function (subTable) {\n            allBoData.push(_objectSpread({}, subTable));\n            var sunTabs = _this7.sunTablesMap[subTable.name];\n\n            if (sunTabs) {\n              sunTabs.forEach(function (sunTab) {\n                allBoData.push(_objectSpread({}, sunTab));\n              });\n            }\n          });\n          formVarData = allBoData;\n        } //判断无属性控件 按钮\n\n\n        if (this.isNoAttrField() && this.tableFields && this.tableFields.length > 0) {\n          if (!val.name) {\n            this.$set(val, 'name', 'c_' + val.key);\n          }\n\n          if (!val.boDefAlias) {\n            this.$set(val, 'boDefAlias', this.tableFields[0].boDefAlias);\n          }\n\n          if (!val.tableName) {\n            this.$set(val, 'tableName', this.tableFields[0].name);\n            this.changeNoAttrFile(this.tableFields[0].name);\n          }\n\n          this.noAttrFieldListChange(val, true);\n        } else if (val.ctrlType == 'button' && val.options.bindEventjson.isShowInput) {\n          this.noAttrFieldListChange(val, false);\n        }\n\n        this.allBoData = allBoData;\n        this.formVarData = formVarData;\n        this.returnData = returnData;\n        this.$emit('update:data', val); //通过模板生成的表单字段需更改为 建模别名.字段名 （解决2个不同的建模，但主表建模字段一样）\n\n        if (val.target && val.parentNodeType != 'sub' && val.parentNodeType != 'sun') {\n          val.target = val.boDefAlias + '.' + val.name;\n        }\n      },\n      deep: true\n    },\n    'field.ctrlType': {\n      handler: function handler(newVal, oldVal) {\n        if (oldVal == undefined || newVal == undefined || newVal == oldVal) {\n          return;\n        }\n\n        if (!this.isWatch) {\n          return;\n        }\n\n        if (oldVal == 'number' || oldVal == 'currency') {\n          if (newVal == 'date' || newVal == 'time') {\n            this.changeCtrlType(true);\n          } else {\n            this.changeCtrlType(false);\n          }\n        } else if (oldVal == 'date' || oldVal == 'time') {\n          if (newVal == 'number' || newVal == 'currency') {\n            this.changeCtrlType(true);\n          } else {\n            this.changeCtrlType(false);\n          }\n        } else if (newVal == 'select') {\n          this.changeCtrlType(false);\n        } else {\n          if (newVal == 'number' || newVal == 'currency') {\n            if (this.field.columnType == 'number') {\n              this.changeCtrlType(false);\n            } else {\n              this.changeCtrlType(true);\n            }\n          } else if (newVal == 'date' || newVal == 'time') {\n            if (this.field.columnType == 'date') {\n              this.changeCtrlType(false);\n            } else {\n              this.changeCtrlType(true);\n            }\n          } else {\n            this.changeCtrlType(false);\n          }\n        }\n\n        this.isWatch = false;\n      }\n    }\n  },\n  mounted: function mounted() {\n    // 声明\n    this.$validator = this.$root.$validator; // 复制高级字段列表\n\n    this.copyAdvanceComponents = this.advanceComponents.slice();\n  },\n  destroyed: function destroyed() {}\n};",null]}