diff --git a/src/views/course/AddCurriculum.vue b/src/views/course/AddCurriculum.vue index ee807df..af0b94d 100644 --- a/src/views/course/AddCurriculum.vue +++ b/src/views/course/AddCurriculum.vue @@ -10,7 +10,7 @@ 确定 + @click="saveAdd">确定 @@ -352,10 +352,19 @@ export default { assessmentData: [], assessmentTotal: 0, multipleAssessment: [], - submiting: false // 新增编辑防抖标识 + submiting: false, // 新增编辑防抖标识 + loadIns: null, + updateTime: 0 }; }, watch: { + // 监听信息是否有更改,有的话页面离开的时候要询问是否要保存 + form: { + handler(){ + this.updateTime++ + }, + deep:true + }, configSearch: function(val) { clearTimeout(this.searchTimer); this.searchTimer = setTimeout(() => { @@ -375,15 +384,25 @@ export default { }, methods: { goback() { - if (this.isDetail) { - this.$router.back(); - } else { - this.$confirm("确定返回?未更新的信息将不会保存。", "提示", { - type: "warning" - }).then(() => { - this.$router.back(); - }).catch(() => {}); - } + const id = this.form.cid + const updateTime = this.updateTime + // 更改了信息才需要提示 + if ((id && updateTime > 1) || (!id && updateTime)) { + this.$confirm(`编辑的内容未保存,是否保存?`, '提示', { + type: 'warning' + }).then(() => { + this.saveAdd(1) + }).catch(() => { + this.backPage() + }) + } else { + this.backPage() + } + }, + // 返回上一页 + backPage() { + this.$router.back() + this.loadIns.close() }, getInfoData() { this.$post(`${this.api.curriculumDetail}?cid=${this.form.cid}`).then(res => { @@ -603,8 +622,8 @@ export default { this.$message.info("已取消移除"); }); }, - saveAdd(form) { - this.$refs[form].validate((valid) => { + saveAdd(fromBack) { + this.$refs.form.validate((valid) => { if (valid) { if (this.submiting) return false if (!this.form.coverUrl) { @@ -642,26 +661,34 @@ export default { this.form.systemIdByAssessment.sort((a, b) => a.sort - b.sort) } this.submiting = true + this.loadIns = this.$loading({ + lock: true, + text: 'Loading', + spinner: 'el-icon-loading', + background: 'rgba(0, 0, 0, 0.7)' + }) if (this.form.cid) { this.$post(this.api.modifyCourse, this.form).then((res) => { this.$message.success("编辑成功"); - this.$router.back(); + this.backPage() }).catch((res) => { this.submiting = false + this.loadIns.close() }); } else { this.$post(this.api.createCurriculum, this.form).then((res) => { - this.$confirm("课程创建成功,是否马上进行课程内容设置?", "提示", { + !fromBack ? this.$confirm("课程创建成功,是否马上进行课程内容设置?", "提示", { type: "success", confirmButtonText: "马上设置", cancelButtonText: "稍后操作" }).then(() => { this.$router.push(`/contentSettings?cid=${res.cid}`); }).catch(() => { - this.$router.back(); - }); + this.backPage() + }) : this.backPage() }).catch((res) => { this.submiting = false + this.loadIns.close() }); } } else {