diff --git a/jero-web/src/components/jero/JCategorySelect.vue b/jero-web/src/components/jero/JCategorySelect.vue index 7945aaae..cab251ff 100644 --- a/jero-web/src/components/jero/JCategorySelect.vue +++ b/jero-web/src/components/jero/JCategorySelect.vue @@ -9,7 +9,7 @@ :loadData="asyncLoadTreeData" :value="treeValue" v-bind="_attrs" - v-on="$listeners" + v-on="childListeners" :treeData="treeData" :multiple="multiple" @change="onChange"> @@ -79,6 +79,22 @@ } }, + computed:{ + _attrs() { + let attrs + attrs = { ...this.$attrs } + return attrs + }, + //透传给下级组件的事件,需要排除本组件使用的change事件 + childListeners() { + const vm = this; + let result = Object.assign({}, + this.$listeners, + ) + delete result.change; + return result; + } + }, watch: { value () { this.loadItemByCode() @@ -93,13 +109,6 @@ this.loadItemByCode() }) }, - computed:{ - _attrs() { - let attrs - attrs = { ...this.$attrs } - return attrs - } - }, methods: { /**加载一级节点 */ loadRoot(){ @@ -159,7 +168,7 @@ /* * 使用$listeners向上暴露事件---和$emit一起使用出现的问题:change事件会执行两遍 * 解决办法:改变选中时提交的事件名*/ - this.$emit('select-change', value, obj) + this.$emit('change', value, obj) }, asyncLoadTreeData (treeNode) { return new Promise((resolve) => { @@ -211,7 +220,7 @@ /* * 使用$listeners向上暴露事件---和$emit一起使用出现的问题:change事件会执行两遍 * 解决办法:改变选中时提交的事件名*/ - this.$emit('select-change', ''); + this.$emit('change', ''); this.treeValue = '' } else if (Array.isArray(value)) { let labels = [] @@ -254,7 +263,7 @@ //2.2新增 在组件内定义 指定父组件调用时候的传值属性和事件类型 这个牛逼 model: { prop: 'value', - event: 'select-change' + event: 'change' } } diff --git a/jero-web/src/components/jero/JDate.vue b/jero-web/src/components/jero/JDate.vue index 5d218949..e1bb7289 100644 --- a/jero-web/src/components/jero/JDate.vue +++ b/jero-web/src/components/jero/JDate.vue @@ -11,7 +11,7 @@ :showTime="true" :format="dateFormat" v-bind="$attrs" - v-on="$listeners" + v-on="childListeners" :getCalendarContainer="getCalendarContainer"> @@ -25,7 +25,7 @@ :showTime="false" :format="dateFormat" v-bind="$attrs" - v-on="$listeners" + v-on="childListeners" :getCalendarContainer="getCalendarContainer"> @@ -36,7 +36,7 @@ :disabled="disabled || readOnly" :format="dateFormat" v-bind="$attrs" - v-on="$listeners" + v-on="childListeners" @change="handleMonthChange"> @@ -49,7 +49,7 @@ :disabled="disabled || readOnly" :open="yearShowOne" v-bind="$attrs" - v-on="$listeners" + v-on="childListeners" :getCalendarContainer="getCalendarContainer" @openChange="openChangeOne" @panelChange="panelChangeOne"> @@ -101,13 +101,26 @@ return { yearShowOne:false, //控制年份模态框的显示与否 year:'', // mode==“year” 专用 - momVal:!dateStr?null:moment(dateStr,this.dateFormat), + momVal:!dateStr?null:moment(dateStr,this.dateFormat) + } + }, + computed: { + //透传给下级组件的事件,需要排除本组件使用的change事件 + childListeners() { + const vm = this; + let result = Object.assign({}, + this.$listeners, + ) + delete result.change; + return result; } }, watch: { value (val) { let fm = this.dateFormat - moment.prototype.toJSON = function(){return moment(this).format(fm)} + moment.prototype.toJSON = function(){ + return moment(this).format(fm) + } if(!val){ this.momVal = null }else{ @@ -118,10 +131,10 @@ methods: { moment, handleDateChange(mom,dateStr){ - this.$emit('date-change', dateStr); + this.$emit('change', dateStr); }, handleMonthChange(mom,dateStr){ - this.$emit('date-change',dateStr) + this.$emit('change',dateStr) }, /** * 弹出日历和关闭日历的回调 @@ -135,13 +148,13 @@ this.yearShowOne = false let year = moment(value,this.dateFormat).year().toString() // 处理成字符串 this.year = value //组件显示的 - this.$emit('date-change',year) + this.$emit('change',year) } }, //2.2新增 在组件内定义 指定父组件调用时候的传值属性和事件类型 model: { prop: 'value', - event: 'date-change' + event: 'change' } } diff --git a/jero-web/src/components/jero/JImageUpload.vue b/jero-web/src/components/jero/JImageUpload.vue index 906ff2e0..e6e66a56 100644 --- a/jero-web/src/components/jero/JImageUpload.vue +++ b/jero-web/src/components/jero/JImageUpload.vue @@ -13,7 +13,7 @@ :isMultiple="isMultiple" :showUploadList="isMultiple" v-bind="$attrs" - v-on="$listeners" + v-on="childListeners" @change="handleChange" @preview="handlePreview" :class="!isMultiple?'imgupload':''"> @@ -84,6 +84,17 @@ } //update-end-author:wangshuai date:20201021 for:LOWCOD-969 新增number属性,用于判断上传数量 }, + computed: { + //透传给下级组件的事件,需要排除本组件使用的change事件 + childListeners() { + const vm = this; + let result = Object.assign({}, + this.$listeners, + ) + delete result.change; + return result; + } + }, watch:{ value: { handler(val,oldValue) { @@ -194,7 +205,7 @@ if(arr.length>0){ path = arr.join(",") } - this.$emit('image-change', path); + this.$emit('change', path); }, handleDelete(file){ //如有需要新增 删除逻辑 @@ -209,7 +220,7 @@ }, model: { prop: 'value', - event: 'image-change' + event: 'change' } } diff --git a/jero-web/src/components/jero/JInput.vue b/jero-web/src/components/jero/JInput.vue index 5a03d4b1..8774ee89 100644 --- a/jero-web/src/components/jero/JInput.vue +++ b/jero-web/src/components/jero/JInput.vue @@ -3,7 +3,7 @@ :value="inputVal" @input="backValue" v-bind="$props" - v-on="$listeners" + v-on="childListeners" > @@ -40,6 +40,22 @@ default: false }, }, + data(){ + return { + inputVal:'' + } + }, + computed: { + //透传给下级组件的事件,需要排除本组件使用的change事件 + childListeners() { + const vm = this; + let result = Object.assign({}, + this.$listeners, + ) + delete result.change; + return result; + } + }, watch:{ value:{ immediate:true, @@ -52,15 +68,6 @@ this.backValue({ target: { value: this.inputVal } }) }, }, - model: { - prop: 'value', - event: 'input_change' - }, - data(){ - return { - inputVal:'' - } - }, methods:{ initVal(){ if(!this.value){ @@ -108,8 +115,12 @@ break; default: } - this.$emit('input_change', text); + this.$emit('change', text); } + }, + model: { + prop: 'value', + event: 'change' } } diff --git a/jero-web/src/components/jero/JSelectMultiple.vue b/jero-web/src/components/jero/JSelectMultiple.vue index 0a7ea411..e47804d1 100644 --- a/jero-web/src/components/jero/JSelectMultiple.vue +++ b/jero-web/src/components/jero/JSelectMultiple.vue @@ -5,8 +5,6 @@ :value="arrayValue" @change="onChange" option-filter-prop="children" - v-bind="$attrs" - v-on="$listeners" > + > {{ item.text }} @@ -16,7 +15,7 @@ :disabled="disabled" @change="handleChange" v-bind="$attrs" - v-on="$listeners"/> + v-on="childListeners"/> diff --git a/jero-web/src/components/jero/JTable.vue b/jero-web/src/components/jero/JTable.vue index bcd1181d..43c2a1dd 100644 --- a/jero-web/src/components/jero/JTable.vue +++ b/jero-web/src/components/jero/JTable.vue @@ -67,6 +67,10 @@ diff --git a/jero-web/src/components/jero/JTreeDict.vue b/jero-web/src/components/jero/JTreeDict.vue index f4ff8ff8..cec5e638 100644 --- a/jero-web/src/components/jero/JTreeDict.vue +++ b/jero-web/src/components/jero/JTreeDict.vue @@ -12,7 +12,7 @@ @change="onChange" @search="onSearch" v-bind="_attrs" - v-on="$listeners"> + v-on="childListeners"> @@ -93,6 +93,15 @@ let attrs attrs = { ...this.$attrs } return attrs + }, + //透传给下级组件的事件,需要排除本组件使用的change事件 + childListeners() { + const vm = this; + let result = Object.assign({}, + this.$listeners, + ) + delete result.change; + return result; } }, created(){ @@ -101,7 +110,7 @@ }, model: { prop: 'value', - event: 'select-change' + event: 'change' }, methods:{ loadViewInfo(){ @@ -191,9 +200,9 @@ /* * 使用$listeners向上暴露事件---和$emit一起使用出现的问题:change事件会执行两遍 * 解决办法:改变选中时提交的事件名*/ - this.$emit('select-change', ''); + this.$emit('change', ''); }else{ - this.$emit('select-change', value.value); + this.$emit('change', value.value); } this.treeValue = value }, diff --git a/jero-web/src/components/jero/JTreeSelect.vue b/jero-web/src/components/jero/JTreeSelect.vue index 2682c350..e95fa5c8 100644 --- a/jero-web/src/components/jero/JTreeSelect.vue +++ b/jero-web/src/components/jero/JTreeSelect.vue @@ -15,7 +15,7 @@ :multiple="multiple" :show-search="!multiple" v-bind="_attrs" - v-on="$listeners" + v-on="childListeners" @change="onChange">