diff --git a/packages/steps/src/step.vue b/packages/steps/src/step.vue index 1527c778a..98ee0ea75 100644 --- a/packages/steps/src/step.vue +++ b/packages/steps/src/step.vue @@ -173,6 +173,10 @@ export default { mounted() { const unwatch = this.$watch('index', val => { this.$watch('$parent.active', this.updateStatus, { immediate: true }); + this.$watch('$parent.processStatus', () => { + const activeIndex = this.$parent.active; + this.updateStatus(activeIndex); + }, { immediate: true }); unwatch(); }); } diff --git a/test/unit/specs/steps.spec.js b/test/unit/specs/steps.spec.js index 527cce896..7955240b6 100644 --- a/test/unit/specs/steps.spec.js +++ b/test/unit/specs/steps.spec.js @@ -59,6 +59,29 @@ describe('Steps', () => { }); }); + it('update processStatus', done => { + vm = createVue({ + template: ` + + + + + `, + data() { + return { processStatus: 'error' }; + } + }); + + vm.$nextTick(_ => { + expect(vm.$el.querySelectorAll('.el-step__head.is-error')).to.length(1); + vm.processStatus = 'process'; + vm.$nextTick(_ => { + expect(vm.$el.querySelectorAll('.el-step__head.is-process')).to.length(1); + done(); + }); + }); + }); + it('finishStatus', done => { vm = createVue(`