|
@@ -377,7 +377,17 @@ export default {
|
|
|
fieldUtil.isEnumListType(this.fieldItem) == false &&
|
|
fieldUtil.isEnumListType(this.fieldItem) == false &&
|
|
|
fieldUtil.isManyToManySetType(this.fieldItem) == false
|
|
fieldUtil.isManyToManySetType(this.fieldItem) == false
|
|
|
) {
|
|
) {
|
|
|
- if (currentValue != oldValue) {
|
|
|
|
|
|
|
+ // add by jack 20240220
|
|
|
|
|
+ // 修复bug:当modelData.data的值从外部修改以后,修改执行 watch->'modelData.data' 中的 this.displayValue = ? 方法
|
|
|
|
|
+ // 执行完成以后,watch->displayValue 又会执行,会触发valueChanged事件,这会导致 callout/calloutjs 会被多次执行。
|
|
|
|
|
+ // 所以在触发 valueChanged 的之前,先判断currentValue与modelData中的值是否相等,
|
|
|
|
|
+ // 如果相等,说明是外部修改了modelData,然后执行了 watch->'modelData.data' 方法修改了 displayValue,此时不触发valueChanged事件。
|
|
|
|
|
+ // 如果不相等,说明是DOM修改了,触发修改了displayValue,此时触发valueChanged事件。
|
|
|
|
|
+
|
|
|
|
|
+ const modelDataFieldDisplayValue = this.getModelDataFieldDisplayValue();
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ if (currentValue != oldValue && currentValue != modelDataFieldDisplayValue) {
|
|
|
var newFieldValue = {
|
|
var newFieldValue = {
|
|
|
displayValue: [currentValue],
|
|
displayValue: [currentValue],
|
|
|
fieldType: 'String',
|
|
fieldType: 'String',
|
|
@@ -419,6 +429,20 @@ export default {
|
|
|
mounted: function () {},
|
|
mounted: function () {},
|
|
|
|
|
|
|
|
methods: {
|
|
methods: {
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取modelData中字段的显示值
|
|
|
|
|
+ */
|
|
|
|
|
+ getModelDataFieldDisplayValue : function(){
|
|
|
|
|
+ if(this.modelData == null
|
|
|
|
|
+ || this.fieldItem == null
|
|
|
|
|
+ || this.modelData[this.fieldItem.fieldName] == null
|
|
|
|
|
+ || this.modelData[this.fieldItem.fieldName].displayValue == null){
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ return this.modelData[this.fieldItem.fieldName].displayValue[this.fieldItem.entityFieldIndex];
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
// 值改变事件
|
|
// 值改变事件
|
|
|
valueChanged: function (newFieldValue) {
|
|
valueChanged: function (newFieldValue) {
|
|
|
this.$emit('valueChanged', newFieldValue);
|
|
this.$emit('valueChanged', newFieldValue);
|