fix: parent category cannot be selected in post settings #365 (halo-dev/console#367)

pull/3445/head
Ryan Wang 2021-10-29 22:35:56 +08:00 committed by GitHub
parent 02dea4e3af
commit 1648b28852
8 changed files with 119 additions and 138 deletions

View File

@ -28,7 +28,7 @@
"axios": "^0.21.4",
"dayjs": "^1.10.7",
"enquire.js": "^2.1.6",
"filepond": "^4.29.1",
"filepond": "^4.30.3",
"filepond-plugin-file-validate-type": "^1.2.6",
"filepond-plugin-image-preview": "^4.6.10",
"flv.js": "^1.6.2",
@ -44,7 +44,7 @@
"vue-dplayer": "0.0.10",
"vue-filepond": "^6.0.3",
"vue-ls": "^3.2.2",
"vue-router": "^3.5.2",
"vue-router": "^3.5.3",
"vuedraggable": "^2.24.3",
"vuejs-logger": "^1.10.2",
"vuex": "^3.6.2"
@ -52,9 +52,9 @@
"devDependencies": {
"@babel/polyfill": "^7.12.1",
"@vue/cli-plugin-babel": "^3.12.1",
"@vue/cli-plugin-eslint": "^4.5.13",
"@vue/cli-plugin-unit-jest": "^4.5.13",
"@vue/cli-service": "^4.5.13",
"@vue/cli-plugin-eslint": "^4.5.15",
"@vue/cli-plugin-unit-jest": "^4.5.15",
"@vue/cli-service": "^4.5.15",
"@vue/eslint-config-prettier": "^6.0.0",
"@vue/test-utils": "^1.2.2",
"babel-core": "7.0.0-bridge.0",

View File

@ -6,9 +6,9 @@ specifiers:
'@codemirror/lang-html': ^0.19.3
'@codemirror/lang-java': ^0.19.1
'@vue/cli-plugin-babel': ^3.12.1
'@vue/cli-plugin-eslint': ^4.5.13
'@vue/cli-plugin-unit-jest': ^4.5.13
'@vue/cli-service': ^4.5.13
'@vue/cli-plugin-eslint': ^4.5.15
'@vue/cli-plugin-unit-jest': ^4.5.15
'@vue/cli-service': ^4.5.15
'@vue/eslint-config-prettier': ^6.0.0
'@vue/test-utils': ^1.2.2
ant-design-vue: ^1.7.8
@ -23,7 +23,7 @@ specifiers:
eslint-plugin-html: ^6.2.0
eslint-plugin-prettier: ^3.4.1
eslint-plugin-vue: ^6.2.2
filepond: ^4.29.1
filepond: ^4.30.3
filepond-plugin-file-validate-type: ^1.2.6
filepond-plugin-image-preview: ^4.6.10
flv.js: ^1.6.2
@ -45,7 +45,7 @@ specifiers:
vue-dplayer: 0.0.10
vue-filepond: ^6.0.3
vue-ls: ^3.2.2
vue-router: ^3.5.2
vue-router: ^3.5.3
vue-template-compiler: ^2.6.14
vuedraggable: ^2.24.3
vuejs-logger: ^1.10.2
@ -59,9 +59,9 @@ dependencies:
axios: 0.21.4
dayjs: 1.10.7
enquire.js: 2.1.6
filepond: 4.29.1
filepond-plugin-file-validate-type: 1.2.6_filepond@4.29.1
filepond-plugin-image-preview: 4.6.10_filepond@4.29.1
filepond: 4.30.3
filepond-plugin-file-validate-type: 1.2.6_filepond@4.30.3
filepond-plugin-image-preview: 4.6.10_filepond@4.30.3
flv.js: 1.6.2
halo-editor: 2.8.3
marked: 2.1.3
@ -73,9 +73,9 @@ dependencies:
vue-contextmenujs: 1.3.13
vue-count-to: 1.0.13
vue-dplayer: 0.0.10
vue-filepond: 6.0.3_filepond@4.29.1+vue@2.6.14
vue-filepond: 6.0.3_filepond@4.30.3+vue@2.6.14
vue-ls: 3.2.2
vue-router: 3.5.2
vue-router: 3.5.3
vuedraggable: 2.24.3
vuejs-logger: 1.10.2
vuex: 3.6.2_vue@2.6.14
@ -83,9 +83,9 @@ dependencies:
devDependencies:
'@babel/polyfill': 7.12.1
'@vue/cli-plugin-babel': 3.12.1
'@vue/cli-plugin-eslint': 4.5.13_a58cf9e4d577795b8c257bee96d49483
'@vue/cli-plugin-unit-jest': 4.5.13_4e86dea06beb54eccc1910d899f74f0d
'@vue/cli-service': 4.5.13_6e991adc599438a4ab84a9dd52158ae9
'@vue/cli-plugin-eslint': 4.5.15_159f9ca94908a7070131e2c321d72521
'@vue/cli-plugin-unit-jest': 4.5.15_3ca2529360d3dc6148df6c0445843a57
'@vue/cli-service': 4.5.15_6e991adc599438a4ab84a9dd52158ae9
'@vue/eslint-config-prettier': 6.0.0_6cba795d40c78049f8228de49cc26ac7
'@vue/test-utils': 1.2.2_9065e7474e033a8e4b95615fc8e6c36c
babel-core: 7.0.0-bridge.0
@ -2022,8 +2022,8 @@ packages:
camelcase: 5.3.1
dev: true
/@vue/cli-overlay/4.5.13:
resolution: {integrity: sha512-jhUIg3klgi5Cxhs8dnat5hi/W2tQJvsqCxR0u6hgfSob0ORODgUBlN+F/uwq7cKIe/pzedVUk1y07F13GQvPqg==}
/@vue/cli-overlay/4.5.15:
resolution: {integrity: sha512-0zI0kANAVmjFO2LWGUIzdGPMeE3+9k+KeRDXsUqB30YfRF7abjfiiRPq5BU9pOzlJbVdpRkisschBrvdJqDuDg==}
dev: true
/@vue/cli-plugin-babel/3.12.1:
@ -2040,14 +2040,14 @@ packages:
- webpack-command
dev: true
/@vue/cli-plugin-eslint/4.5.13_a58cf9e4d577795b8c257bee96d49483:
resolution: {integrity: sha512-yc2uXX6aBiy3vEf5TwaueaDqQbdIXIhk0x0KzEtpPo23jBdLkpOSoU5NCgE06g/ZiGAcettpmBSv73Hfp4wHEw==}
/@vue/cli-plugin-eslint/4.5.15_159f9ca94908a7070131e2c321d72521:
resolution: {integrity: sha512-/2Fl6wY/5bz3HD035oSnFRMsKNxDxU396KqBdpCQdwdvqk4mm6JAbXqihpcBRTNPeTO6w+LwGe6FE56PVbJdbg==}
peerDependencies:
'@vue/cli-service': ^3.0.0 || ^4.0.0-0
eslint: '>= 1.6.0 < 7.0.0'
dependencies:
'@vue/cli-service': 4.5.13_6e991adc599438a4ab84a9dd52158ae9
'@vue/cli-shared-utils': 4.5.13
'@vue/cli-service': 4.5.15_6e991adc599438a4ab84a9dd52158ae9
'@vue/cli-shared-utils': 4.5.15
eslint: 6.8.0
eslint-loader: 2.2.1_eslint@6.8.0+webpack@4.46.0
globby: 9.2.0
@ -2059,25 +2059,25 @@ packages:
- webpack-command
dev: true
/@vue/cli-plugin-router/4.5.13_@vue+cli-service@4.5.13:
resolution: {integrity: sha512-tgtMDjchB/M1z8BcfV4jSOY9fZSMDTPgF9lsJIiqBWMxvBIsk9uIZHxp62DibYME4CCKb/nNK61XHaikFp+83w==}
/@vue/cli-plugin-router/4.5.15_@vue+cli-service@4.5.15:
resolution: {integrity: sha512-q7Y6kP9b3k55Ca2j59xJ7XPA6x+iSRB+N4ac0ZbcL1TbInVQ4j5wCzyE+uqid40hLy4fUdlpl4X9fHJEwuVxPA==}
peerDependencies:
'@vue/cli-service': ^3.0.0 || ^4.0.0-0
dependencies:
'@vue/cli-service': 4.5.13_6e991adc599438a4ab84a9dd52158ae9
'@vue/cli-shared-utils': 4.5.13
'@vue/cli-service': 4.5.15_6e991adc599438a4ab84a9dd52158ae9
'@vue/cli-shared-utils': 4.5.15
dev: true
/@vue/cli-plugin-unit-jest/4.5.13_4e86dea06beb54eccc1910d899f74f0d:
resolution: {integrity: sha512-8t7QIihJWB9Kv85FamrEzWbJnvsLhQdyXHl3h+qhAihrZdLL+9mj905y88cBCq+i2PqqZ/qAoabbpf4DxDAb7g==}
/@vue/cli-plugin-unit-jest/4.5.15_3ca2529360d3dc6148df6c0445843a57:
resolution: {integrity: sha512-oE3RDMerb21P6ALg70Zh2zU+RYYjoe09/7ZXYUj03uTb2obqUbcINpFfeVwM0B/J6H1YmqWJpnNBxWURhrqQHg==}
peerDependencies:
'@vue/cli-service': ^3.0.0 || ^4.0.0-0
dependencies:
'@babel/core': 7.15.5
'@babel/plugin-transform-modules-commonjs': 7.15.4_@babel+core@7.15.5
'@types/jest': 24.9.1
'@vue/cli-service': 4.5.13_6e991adc599438a4ab84a9dd52158ae9
'@vue/cli-shared-utils': 4.5.13
'@vue/cli-service': 4.5.15_6e991adc599438a4ab84a9dd52158ae9
'@vue/cli-shared-utils': 4.5.15
babel-core: 7.0.0-bridge.0_@babel+core@7.15.5
babel-jest: 24.9.0_@babel+core@7.15.5
babel-plugin-transform-es2015-modules-commonjs: 6.26.2
@ -2098,16 +2098,16 @@ packages:
- vue-template-compiler
dev: true
/@vue/cli-plugin-vuex/4.5.13_@vue+cli-service@4.5.13:
resolution: {integrity: sha512-I1S9wZC7iI0Wn8kw8Zh+A2Qkf6s1M6vTGBkx8boXjuzfwEEyEHRxadsVCecZc8Mkpydo0nykj+MyYF96TKFuVA==}
/@vue/cli-plugin-vuex/4.5.15_@vue+cli-service@4.5.15:
resolution: {integrity: sha512-fqap+4HN+w+InDxlA3hZTOGE0tzBTgXhKLoDydhywqgmhQ1D9JA6Feh94ze6tG8DsWX58/ujYUqA8jAz17FJtg==}
peerDependencies:
'@vue/cli-service': ^3.0.0 || ^4.0.0-0
dependencies:
'@vue/cli-service': 4.5.13_6e991adc599438a4ab84a9dd52158ae9
'@vue/cli-service': 4.5.15_6e991adc599438a4ab84a9dd52158ae9
dev: true
/@vue/cli-service/4.5.13_6e991adc599438a4ab84a9dd52158ae9:
resolution: {integrity: sha512-CKAZN4iokMMsaUyJRU22oUAz3oS/X9sVBSKAF2/shFBV5xh3jqAlKl8OXZYz4cXGFLA6djNuYrniuLAo7Ku97A==}
/@vue/cli-service/4.5.15_6e991adc599438a4ab84a9dd52158ae9:
resolution: {integrity: sha512-sFWnLYVCn4zRfu45IcsIE9eXM0YpDV3S11vlM2/DVbIPAGoYo5ySpSof6aHcIvkeGsIsrHFpPHzNvDZ/efs7jA==}
engines: {node: '>=8'}
hasBin: true
peerDependencies:
@ -2140,10 +2140,10 @@ packages:
'@types/minimist': 1.2.2
'@types/webpack': 4.41.31
'@types/webpack-dev-server': 3.11.6_debug@4.3.2
'@vue/cli-overlay': 4.5.13
'@vue/cli-plugin-router': 4.5.13_@vue+cli-service@4.5.13
'@vue/cli-plugin-vuex': 4.5.13_@vue+cli-service@4.5.13
'@vue/cli-shared-utils': 4.5.13
'@vue/cli-overlay': 4.5.15
'@vue/cli-plugin-router': 4.5.15_@vue+cli-service@4.5.15
'@vue/cli-plugin-vuex': 4.5.15_@vue+cli-service@4.5.15
'@vue/cli-shared-utils': 4.5.15
'@vue/component-compiler-utils': 3.2.2
'@vue/preload-webpack-plugin': 1.1.2_502c618fc8a7d35df07e93275324a2d0
'@vue/web-component-wrapper': 1.3.0
@ -2217,8 +2217,8 @@ packages:
string.prototype.padstart: 3.1.2
dev: true
/@vue/cli-shared-utils/4.5.13:
resolution: {integrity: sha512-HpnOrkLg42RFUsQGMJv26oTG3J3FmKtO2WSRhKIIL+1ok3w9OjGCtA3nMMXN27f9eX14TqO64M36DaiSZ1fSiw==}
/@vue/cli-shared-utils/4.5.15:
resolution: {integrity: sha512-SKaej9hHzzjKSOw1NlFmc6BSE0vcqUQMQiv1cxQ2DhVyy4QxZXBmzmiLBUBe+hYZZs1neXW7n//udeN9bCAY+Q==}
dependencies:
'@hapi/joi': 15.1.1
chalk: 2.4.2
@ -5397,24 +5397,24 @@ packages:
resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
dev: true
/filepond-plugin-file-validate-type/1.2.6_filepond@4.29.1:
/filepond-plugin-file-validate-type/1.2.6_filepond@4.30.3:
resolution: {integrity: sha512-3JFxpb4o5D4BssP/Drjn2GPpejg/QXzU4e3/Pq8IvIJuokHz95b6+RPYstQ+6ITKREYup0N8F/CO/OQfhVkUgg==}
peerDependencies:
filepond: '>=1.x <5.x'
dependencies:
filepond: 4.29.1
filepond: 4.30.3
dev: false
/filepond-plugin-image-preview/4.6.10_filepond@4.29.1:
/filepond-plugin-image-preview/4.6.10_filepond@4.30.3:
resolution: {integrity: sha512-C7Q5Sr/d4RQb2nMNQR93OiMt91OHxpvmIBGl+CO1dZE46lM49NUfI08dyElAOxTslDcA8pAfjFFCKo0sNYbrBg==}
peerDependencies:
filepond: '>=4.x <5.x'
dependencies:
filepond: 4.29.1
filepond: 4.30.3
dev: false
/filepond/4.29.1:
resolution: {integrity: sha512-j2YMYxzhDXYQScARkkYb5NwwfOxLWKWJK3v/Wozq1gQX3s5XLY3GfJhR9ysqP5l4697J3gIn898fRG5Z61UYIQ==}
/filepond/4.30.3:
resolution: {integrity: sha512-G2b1LEe90Sq2vH0SYDASTB+vVU735NBctzIaFPlZtb14QAgi/AL89WyQ6LhTfqgyrMyuZur2O9yHAmzS2E9ZnA==}
dev: false
/filesize/3.6.1:
@ -10589,6 +10589,7 @@ packages:
/svgo/1.3.2:
resolution: {integrity: sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==}
engines: {node: '>=4.0.0'}
deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x.
hasBin: true
dependencies:
chalk: 2.4.2
@ -11246,13 +11247,13 @@ packages:
- supports-color
dev: true
/vue-filepond/6.0.3_filepond@4.29.1+vue@2.6.14:
/vue-filepond/6.0.3_filepond@4.30.3+vue@2.6.14:
resolution: {integrity: sha512-m0wArAdpgzOOs19bWA6zzYlHAb2aK+igPoKPZGrzpgKiiELPKW7XZ2OBDXzk7rhpFLkedujVrMqwjPyZfmQTTQ==}
peerDependencies:
filepond: '>=4.7.4 < 5.x'
vue: '>=2.6.0 < 3.x'
dependencies:
filepond: 4.29.1
filepond: 4.30.3
vue: 2.6.14
dev: false
@ -11336,8 +11337,8 @@ packages:
resolution: {integrity: sha512-uKNKpFOVeWNqS2mrBZqnpLyXJo5Q+vnkex6JvpENvhXHFNBW/SJTP8vJywLuVT3DpxwXcF9N0dyIiZ4/NpTexQ==}
dev: false
/vue-router/3.5.2:
resolution: {integrity: sha512-807gn82hTnjCYGrnF3eNmIw/dk7/GE4B5h69BlyCK9KHASwSloD1Sjcn06zg9fVG4fYH2DrsNBZkpLtb25WtaQ==}
/vue-router/3.5.3:
resolution: {integrity: sha512-FUlILrW3DGitS2h+Xaw8aRNvGTwtuaxrRkNSHWTizOfLUie7wuYwezeZ50iflRn8YPV5kxmU2LQuu3nM/b3Zsg==}
dev: false
/vue-style-loader/4.1.3:

View File

@ -654,11 +654,6 @@ body {
}
}
.post-thumb-remove,
.sheet-thumb-remove {
margin-top: 16px;
}
.ant-calendar-picker {
width: 100% !important;
}

View File

@ -3,13 +3,13 @@
<template slot="extra">
<a-space>
<ReactiveButton
:errored="draftSavedErrored"
:errored="draftSaveErrored"
:loading="draftSaving"
erroredText="保存失败"
loadedText="保存成功"
text="保存草稿"
type="danger"
@callback="draftSavedErrored = false"
@callback="draftSaveErrored = false"
@click="handleSaveDraft(false)"
></ReactiveButton>
<a-button :loading="previewSaving" @click="handlePreview"></a-button>
@ -80,7 +80,7 @@ export default {
contentChanges: 0,
draftSaving: false,
previewSaving: false,
draftSavedErrored: false
draftSaveErrored: false
}
},
beforeRouteEnter(to, from, next) {
@ -158,7 +158,7 @@ export default {
this.handleRestoreSavedStatus()
})
.catch(() => {
this.draftSavedErrored = true
this.draftSaveErrored = true
})
.finally(() => {
setTimeout(() => {
@ -173,7 +173,7 @@ export default {
this.handleRestoreSavedStatus()
})
.catch(() => {
this.draftSavedErrored = true
this.draftSaveErrored = true
})
.finally(() => {
setTimeout(() => {
@ -190,7 +190,7 @@ export default {
this.handleRestoreSavedStatus()
})
.catch(() => {
this.draftSavedErrored = true
this.draftSaveErrored = true
})
.finally(() => {
setTimeout(() => {

View File

@ -1,5 +1,5 @@
<template>
<a-tree checkable :treeData="categoryTree" :defaultExpandAll="true" :checkedKeys="categoryIds" @check="onCheck">
<a-tree checkable :treeData="categoryTree" defaultExpandAll checkStrictly :checkedKeys="categoryIds" @check="onCheck">
</a-tree>
</template>
@ -33,15 +33,8 @@ export default {
onCheck(checkedKeys, e) {
this.$log.debug('Chekced keys', checkedKeys)
this.$log.debug('e', e)
const categoryIds = e.checkedNodes
.filter(node => {
return node.data.props.isLeaf
})
.map(node => node.key)
this.$log.debug('Effectively selected category ids', categoryIds)
this.$emit('check', categoryIds)
this.$emit('check', checkedKeys.checked)
}
}
}

View File

@ -13,7 +13,7 @@
<div class="mb-4">
<h3 class="post-setting-drawer-title">基本设置</h3>
<div class="post-setting-drawer-item">
<a-form layout="vertical">
<a-form>
<a-form-item label="文章标题:" v-if="needTitle">
<a-input v-model="selectedPost.title" />
</a-form-item>
@ -69,7 +69,7 @@
<div class="mb-4">
<h3 class="post-setting-drawer-title">分类目录</h3>
<div class="post-setting-drawer-item">
<a-form layout="vertical">
<a-form>
<a-form-item>
<category-tree v-model="selectedCategoryIds" :categories="categories" />
</a-form-item>
@ -97,7 +97,7 @@
<div class="mb-4">
<h3 class="post-setting-drawer-title">标签</h3>
<div class="post-setting-drawer-item">
<a-form layout="vertical">
<a-form>
<a-form-item>
<TagSelect v-model="selectedTagIds" />
</a-form-item>
@ -109,7 +109,7 @@
<div class="mb-4">
<h3 class="post-setting-drawer-title">摘要</h3>
<div class="post-setting-drawer-item">
<a-form layout="vertical">
<a-form>
<a-form-item>
<a-input
type="textarea"
@ -127,19 +127,15 @@
<h3 class="post-setting-drawer-title">封面图</h3>
<div class="post-setting-drawer-item">
<div class="post-thumb">
<a-space direction="vertical">
<img
class="img"
:src="selectedPost.thumbnail || '/images/placeholder.jpg'"
@click="thumbDrawerVisible = true"
/>
<a-form layout="vertial">
<a-form-item>
<a-input v-model="selectedPost.thumbnail" placeholder="点击封面图选择图片,或者输入外部链接"></a-input>
</a-form-item>
</a-form>
<a-button class="post-thumb-remove" type="dashed" @click="selectedPost.thumbnail = null">移除</a-button>
<a-button type="dashed" @click="selectedPost.thumbnail = null">移除</a-button>
</a-space>
</div>
</div>
</div>
@ -160,7 +156,7 @@
<div class="mb-4">
<h3 class="post-setting-drawer-title">加密设置</h3>
<div class="post-setting-drawer-item">
<a-form layout="vertical">
<a-form>
<a-form-item label="访问密码:">
<a-input-password v-model="selectedPost.password" autocomplete="new-password" />
</a-form-item>
@ -171,7 +167,7 @@
<div class="mb-4">
<h3 class="post-setting-drawer-title">SEO 设置</h3>
<div class="post-setting-drawer-item">
<a-form layout="vertical">
<a-form>
<a-form-item label="自定义关键词:">
<a-input
v-model="selectedPost.metaKeywords"
@ -192,7 +188,7 @@
<a-divider />
<div class="mb-4">
<h3 class="post-setting-drawer-title">元数据</h3>
<a-form layout="vertical">
<a-form>
<a-form-item v-for="(meta, index) in selectedMetas" :key="index" :prop="'metas.' + index + '.value'">
<a-row :gutter="5">
<a-col :span="12">
@ -231,7 +227,7 @@
@click="handleDraftClick"
@callback="handleSavedCallback"
:loading="draftSaving"
:errored="draftSavedErrored"
:errored="draftSaveErrored"
text="保存草稿"
loadedText="保存成功"
erroredText="保存失败"
@ -240,7 +236,7 @@
@click="handlePublishClick()"
@callback="handleSavedCallback"
:loading="saving"
:errored="savedErrored"
:errored="saveErrored"
:text="`${selectedPost.id ? '保存' : '发布'}`"
:loadedText="`${selectedPost.id ? '保存' : '发布'}成功`"
:erroredText="`${selectedPost.id ? '保存' : '发布'}失败`"
@ -286,9 +282,9 @@ export default {
categoryToCreate: {},
customTpls: [],
saving: false,
savedErrored: false,
saveErrored: false,
draftSaving: false,
draftSavedErrored: false
draftSaveErrored: false
}
},
props: {
@ -484,9 +480,9 @@ export default {
.update(this.selectedPost.id, this.selectedPost, false)
.catch(() => {
if (this.selectedPost.status === 'DRAFT') {
this.draftSavedErrored = true
this.draftSaveErrored = true
} else {
this.savedErrored = true
this.saveErrored = true
}
})
.finally(() => {
@ -501,9 +497,9 @@ export default {
.create(this.selectedPost, false)
.catch(() => {
if (this.selectedPost.status === 'DRAFT') {
this.draftSavedErrored = true
this.draftSaveErrored = true
} else {
this.savedErrored = true
this.saveErrored = true
}
})
.then(response => {
@ -518,9 +514,9 @@ export default {
}
},
handleSavedCallback() {
if (this.draftSavedErrored || this.savedErrored) {
this.draftSavedErrored = false
this.savedErrored = false
if (this.draftSaveErrored || this.saveErrored) {
this.draftSaveErrored = false
this.saveErrored = false
} else {
this.$emit('onSaved', true)
this.$router.push({ name: 'PostList' })

View File

@ -3,13 +3,13 @@
<template slot="extra">
<a-space>
<ReactiveButton
:errored="draftSavedErrored"
:errored="draftSaveErrored"
:loading="draftSaving"
erroredText="保存失败"
loadedText="保存成功"
text="保存草稿"
type="danger"
@callback="draftSavedErrored = false"
@callback="draftSaveErrored = false"
@click="handleSaveDraft(false)"
></ReactiveButton>
<a-button :loading="previewSaving" @click="handlePreview"></a-button>
@ -73,7 +73,7 @@ export default {
selectedMetas: [],
contentChanges: 0,
draftSaving: false,
draftSavederrored: false,
draftSaveErrored: false,
previewSaving: false
}
},
@ -149,7 +149,7 @@ export default {
this.handleRestoreSavedStatus()
})
.catch(() => {
this.draftSavedErrored = true
this.draftSaveErrored = true
})
.finally(() => {
setTimeout(() => {
@ -164,7 +164,7 @@ export default {
this.handleRestoreSavedStatus()
})
.catch(() => {
this.draftSavedErrored = true
this.draftSaveErrored = true
})
.finally(() => {
setTimeout(() => {
@ -180,7 +180,7 @@ export default {
this.handleRestoreSavedStatus()
})
.catch(() => {
this.draftSavedErrored = true
this.draftSaveErrored = true
})
.finally(() => {
setTimeout(() => {

View File

@ -13,7 +13,7 @@
<div class="mb-4">
<h3 class="post-setting-drawer-title">基本设置</h3>
<div class="post-setting-drawer-item">
<a-form layout="vertical">
<a-form>
<a-form-item label="页面标题:" v-if="needTitle">
<a-input v-model="selectedSheet.title" />
</a-form-item>
@ -62,7 +62,7 @@
<div class="mb-4">
<h3 class="post-setting-drawer-title">摘要</h3>
<div class="post-setting-drawer-item">
<a-form layout="vertical">
<a-form>
<a-form-item>
<a-input
type="textarea"
@ -80,19 +80,15 @@
<h3 class="post-setting-drawer-title">封面图</h3>
<div class="post-setting-drawer-item">
<div class="sheet-thumb">
<a-space direction="vertical">
<img
class="img"
:src="selectedSheet.thumbnail || '/images/placeholder.jpg'"
@click="thumbDrawerVisible = true"
/>
<a-form layout="vertial">
<a-form-item>
<a-input v-model="selectedSheet.thumbnail" placeholder="点击封面图选择图片,或者输入外部链接"></a-input>
</a-form-item>
</a-form>
<a-button class="sheet-thumb-remove" type="dashed" @click="selectedSheet.thumbnail = null">移除</a-button>
<a-button type="dashed" @click="selectedSheet.thumbnail = null">移除</a-button>
</a-space>
</div>
</div>
</div>
@ -113,7 +109,7 @@
<div class="mb-4">
<h3 class="post-setting-drawer-title">SEO 设置</h3>
<div class="post-setting-drawer-item">
<a-form layout="vertical">
<a-form>
<a-form-item label="自定义关键词:">
<a-input v-model="selectedSheet.metaKeywords" placeholder="多个关键词以英文逗号隔开" />
</a-form-item>
@ -131,7 +127,7 @@
<a-divider />
<div class="mb-4">
<h3 class="post-setting-drawer-title">元数据</h3>
<a-form layout="vertical">
<a-form>
<a-form-item v-for="(meta, index) in selectedMetas" :key="index" :prop="'meta.' + index + '.value'">
<a-row :gutter="5">
<a-col :span="12">
@ -170,7 +166,7 @@
@click="handleDraftClick"
@callback="handleSavedCallback"
:loading="draftSaving"
:errored="draftSavedErrored"
:errored="draftSaveErrored"
text="保存草稿"
loadedText="保存成功"
erroredText="保存失败"
@ -179,7 +175,7 @@
@click="handlePublishClick()"
@callback="handleSavedCallback"
:loading="saving"
:errored="savedErrored"
:errored="saveErrored"
:text="`${selectedSheet.id ? '保存' : '发布'}`"
:loadedText="`${selectedSheet.id ? '保存' : '发布'}成功`"
:erroredText="`${selectedSheet.id ? '保存' : '发布'}失败`"
@ -209,9 +205,9 @@ export default {
selectedSheet: this.sheet,
customTpls: [],
saving: false,
savedErrored: false,
saveErrored: false,
draftSaving: false,
draftSavedErrored: false
draftSaveErrored: false
}
},
props: {
@ -348,9 +344,9 @@ export default {
.update(this.selectedSheet.id, this.selectedSheet, false)
.catch(() => {
if (this.selectedSheet.status === 'DRAFT') {
this.draftSavedErrored = true
this.draftSaveErrored = true
} else {
this.savedErrored = true
this.saveErrored = true
}
})
.finally(() => {
@ -364,9 +360,9 @@ export default {
.create(this.selectedSheet, false)
.catch(() => {
if (this.selectedSheet.status === 'DRAFT') {
this.draftSavedErrored = true
this.draftSaveErrored = true
} else {
this.savedErrored = true
this.saveErrored = true
}
})
.then(response => {
@ -381,9 +377,9 @@ export default {
}
},
handleSavedCallback() {
if (this.draftSavedErrored || this.savedErrored) {
this.draftSavedErrored = false
this.savedErrored = false
if (this.draftSaveErrored || this.saveErrored) {
this.draftSaveErrored = false
this.saveErrored = false
} else {
this.$emit('onSaved', true)
this.$router.push({ name: 'SheetList', query: { activeKey: 'custom' } })