fix: prevent duplicate data.

pull/3445/head
ruibaby 2019-12-23 21:18:18 +08:00
parent 59d088dc4d
commit dbd1fc014d
4 changed files with 35 additions and 8 deletions

View File

@ -45,10 +45,12 @@
<a-button <a-button
type="danger" type="danger"
@click="handleSaveDraft" @click="handleSaveDraft"
:disabled="saving"
>保存草稿</a-button> >保存草稿</a-button>
<a-button <a-button
@click="handlePreview" @click="handlePreview"
style="margin-left: 8px;" style="margin-left: 8px;"
:disabled="saving"
>预览</a-button> >预览</a-button>
<a-button <a-button
type="primary" type="primary"
@ -95,7 +97,8 @@ export default {
selectedCategoryIds: [], selectedCategoryIds: [],
selectedPostMetas: [], selectedPostMetas: [],
isSaved: false, isSaved: false,
contentChanges: 0 contentChanges: 0,
saving: false
} }
}, },
beforeRouteEnter(to, from, next) { beforeRouteEnter(to, from, next) {
@ -177,11 +180,13 @@ export default {
if (!this.postToStage.title) { if (!this.postToStage.title) {
this.postToStage.title = moment(new Date()).format('YYYY-MM-DD-HH-mm-ss') this.postToStage.title = moment(new Date()).format('YYYY-MM-DD-HH-mm-ss')
} }
this.saving = true
if (this.postToStage.id) { if (this.postToStage.id) {
// Update the post // Update the post
postApi.update(this.postToStage.id, this.postToStage, false).then(response => { postApi.update(this.postToStage.id, this.postToStage, false).then(response => {
this.$log.debug('Updated post', response.data.data) this.$log.debug('Updated post', response.data.data)
this.$message.success('保存草稿成功!') this.$message.success('保存草稿成功!')
this.saving = false
}) })
} else { } else {
// Create the post // Create the post
@ -189,6 +194,7 @@ export default {
this.$log.debug('Created post', response.data.data) this.$log.debug('Created post', response.data.data)
this.$message.success('保存草稿成功!') this.$message.success('保存草稿成功!')
this.postToStage = response.data.data this.postToStage = response.data.data
this.saving = false
}) })
} }
}, },
@ -215,12 +221,14 @@ export default {
if (!this.postToStage.title) { if (!this.postToStage.title) {
this.postToStage.title = moment(new Date()).format('YYYY-MM-DD-HH-mm-ss') this.postToStage.title = moment(new Date()).format('YYYY-MM-DD-HH-mm-ss')
} }
this.saving = true
if (this.postToStage.id) { if (this.postToStage.id) {
// Update the post // Update the post
postApi.update(this.postToStage.id, this.postToStage, false).then(response => { postApi.update(this.postToStage.id, this.postToStage, false).then(response => {
this.$log.debug('Updated post', response.data.data) this.$log.debug('Updated post', response.data.data)
postApi.preview(this.postToStage.id).then(response => { postApi.preview(this.postToStage.id).then(response => {
window.open(response.data, '_blank') window.open(response.data, '_blank')
this.saving = false
}) })
}) })
} else { } else {
@ -230,6 +238,7 @@ export default {
this.postToStage = response.data.data this.postToStage = response.data.data
postApi.preview(this.postToStage.id).then(response => { postApi.preview(this.postToStage.id).then(response => {
window.open(response.data, '_blank') window.open(response.data, '_blank')
this.saving = false
}) })
}) })
} }

View File

@ -228,16 +228,19 @@
style="marginRight: 8px" style="marginRight: 8px"
@click="handleDraftClick" @click="handleDraftClick"
v-if="saveDraftButton" v-if="saveDraftButton"
:disabled="saving"
>保存草稿</a-button> >保存草稿</a-button>
<a-button <a-button
@click="handlePublishClick" @click="handlePublishClick"
type="primary" type="primary"
v-if="savePublishButton" v-if="savePublishButton"
:disabled="saving"
>发布</a-button> >发布</a-button>
<a-button <a-button
@click="handlePublishClick" @click="handlePublishClick"
type="primary" type="primary"
v-if="saveButton" v-if="saveButton"
:disabled="saving"
>保存</a-button> >保存</a-button>
</div> </div>
</a-drawer> </a-drawer>
@ -272,7 +275,8 @@ export default {
selectedCategoryIds: this.categoryIds, selectedCategoryIds: this.categoryIds,
categories: [], categories: [],
categoryToCreate: {}, categoryToCreate: {},
customTpls: [] customTpls: [],
saving: false
} }
}, },
props: { props: {
@ -449,13 +453,14 @@ export default {
this.selectedPost.tagIds = this.selectedTagIds this.selectedPost.tagIds = this.selectedTagIds
// Set post metas // Set post metas
this.selectedPost.postMetas = this.selectedPostMetas this.selectedPost.postMetas = this.selectedPostMetas
this.saving = true
if (this.selectedPost.id) { if (this.selectedPost.id) {
// Update the post // Update the post
postApi.update(this.selectedPost.id, this.selectedPost, autoSave).then(response => { postApi.update(this.selectedPost.id, this.selectedPost, autoSave).then(response => {
this.$log.debug('Updated post', response.data.data) this.$log.debug('Updated post', response.data.data)
if (updateSuccess) { if (updateSuccess) {
updateSuccess() updateSuccess()
this.saving = false
this.$emit('onSaved', true) this.$emit('onSaved', true)
this.$router.push({ name: 'PostList' }) this.$router.push({ name: 'PostList' })
} }
@ -466,6 +471,7 @@ export default {
this.$log.debug('Created post', response.data.data) this.$log.debug('Created post', response.data.data)
if (createSuccess) { if (createSuccess) {
createSuccess() createSuccess()
this.saving = false
this.$emit('onSaved', true) this.$emit('onSaved', true)
this.$router.push({ name: 'PostList' }) this.$router.push({ name: 'PostList' })
} }

View File

@ -39,10 +39,12 @@
<a-button <a-button
type="danger" type="danger"
@click="handleSaveDraft" @click="handleSaveDraft"
:disabled="saving"
>保存草稿</a-button> >保存草稿</a-button>
<a-button <a-button
@click="handlePreview" @click="handlePreview"
style="margin-left: 8px;" style="margin-left: 8px;"
:disabled="saving"
>预览</a-button> >预览</a-button>
<a-button <a-button
type="primary" type="primary"
@ -86,7 +88,8 @@ export default {
sheetToStage: {}, sheetToStage: {},
selectedSheetMetas: [], selectedSheetMetas: [],
isSaved: false, isSaved: false,
contentChanges: 0 contentChanges: 0,
saving: false
} }
}, },
beforeRouteEnter(to, from, next) { beforeRouteEnter(to, from, next) {
@ -163,6 +166,7 @@ export default {
methods: { methods: {
handleSaveDraft() { handleSaveDraft() {
this.sheetToStage.status = 'DRAFT' this.sheetToStage.status = 'DRAFT'
this.saving = true
if (!this.sheetToStage.title) { if (!this.sheetToStage.title) {
this.sheetToStage.title = moment(new Date()).format('YYYY-MM-DD-HH-mm-ss') this.sheetToStage.title = moment(new Date()).format('YYYY-MM-DD-HH-mm-ss')
} }
@ -170,12 +174,14 @@ export default {
sheetApi.update(this.sheetToStage.id, this.sheetToStage, false).then(response => { sheetApi.update(this.sheetToStage.id, this.sheetToStage, false).then(response => {
this.$log.debug('Updated sheet', response.data.data) this.$log.debug('Updated sheet', response.data.data)
this.$message.success('保存草稿成功!') this.$message.success('保存草稿成功!')
this.saving = false
}) })
} else { } else {
sheetApi.create(this.sheetToStage, false).then(response => { sheetApi.create(this.sheetToStage, false).then(response => {
this.$log.debug('Created sheet', response.data.data) this.$log.debug('Created sheet', response.data.data)
this.$message.success('保存草稿成功!') this.$message.success('保存草稿成功!')
this.sheetToStage = response.data.data this.sheetToStage = response.data.data
this.saving = false
}) })
} }
}, },
@ -202,14 +208,13 @@ export default {
if (!this.sheetToStage.title) { if (!this.sheetToStage.title) {
this.sheetToStage.title = moment(new Date()).format('YYYY-MM-DD-HH-mm-ss') this.sheetToStage.title = moment(new Date()).format('YYYY-MM-DD-HH-mm-ss')
} }
if (!this.sheetToStage.originalContent) { this.saving = true
this.sheetToStage.originalContent = '开始编辑...'
}
if (this.sheetToStage.id) { if (this.sheetToStage.id) {
sheetApi.update(this.sheetToStage.id, this.sheetToStage, false).then(response => { sheetApi.update(this.sheetToStage.id, this.sheetToStage, false).then(response => {
this.$log.debug('Updated sheet', response.data.data) this.$log.debug('Updated sheet', response.data.data)
sheetApi.preview(this.sheetToStage.id).then(response => { sheetApi.preview(this.sheetToStage.id).then(response => {
window.open(response.data, '_blank') window.open(response.data, '_blank')
this.saving = false
}) })
}) })
} else { } else {
@ -218,6 +223,7 @@ export default {
this.sheetToStage = response.data.data this.sheetToStage = response.data.data
sheetApi.preview(this.sheetToStage.id).then(response => { sheetApi.preview(this.sheetToStage.id).then(response => {
window.open(response.data, '_blank') window.open(response.data, '_blank')
this.saving = false
}) })
}) })
} }

View File

@ -131,10 +131,12 @@
<a-button <a-button
style="marginRight: 8px" style="marginRight: 8px"
@click="handleDraftClick" @click="handleDraftClick"
:disabled="saving"
>保存草稿</a-button> >保存草稿</a-button>
<a-button <a-button
type="primary" type="primary"
@click="handlePublishClick" @click="handlePublishClick"
:disabled="saving"
>发布</a-button> >发布</a-button>
</div> </div>
</a-drawer> </a-drawer>
@ -157,7 +159,8 @@ export default {
thumbDrawerVisible: false, thumbDrawerVisible: false,
settingLoading: true, settingLoading: true,
selectedSheet: this.sheet, selectedSheet: this.sheet,
customTpls: [] customTpls: [],
saving: false
} }
}, },
props: { props: {
@ -272,11 +275,13 @@ export default {
return return
} }
this.selectedSheet.sheetMetas = this.selectedSheetMetas this.selectedSheet.sheetMetas = this.selectedSheetMetas
this.saving = true
if (this.selectedSheet.id) { if (this.selectedSheet.id) {
sheetApi.update(this.selectedSheet.id, this.selectedSheet, autoSave).then(response => { sheetApi.update(this.selectedSheet.id, this.selectedSheet, autoSave).then(response => {
this.$log.debug('Updated sheet', response.data.data) this.$log.debug('Updated sheet', response.data.data)
if (updateSuccess) { if (updateSuccess) {
updateSuccess() updateSuccess()
this.saving = false
this.$emit('onSaved', true) this.$emit('onSaved', true)
this.$router.push({ name: 'SheetList' }) this.$router.push({ name: 'SheetList' })
} }
@ -286,6 +291,7 @@ export default {
this.$log.debug('Created sheet', response.data.data) this.$log.debug('Created sheet', response.data.data)
if (createSuccess) { if (createSuccess) {
createSuccess() createSuccess()
this.saving = false
this.$emit('onSaved', true) this.$emit('onSaved', true)
this.$router.push({ name: 'SheetList' }) this.$router.push({ name: 'SheetList' })
} }