Skip to content

Commit

Permalink
feat: 新增支持细粒度配置的常规发布-初始化
Browse files Browse the repository at this point in the history
  • Loading branch information
terwer committed Aug 2, 2023
1 parent 2c8c47c commit e7be6b0
Show file tree
Hide file tree
Showing 7 changed files with 271 additions and 37 deletions.
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,13 @@
"vue-i18n": "^9.2.2",
"vue-router": "^4.2.4",
"xmlbuilder2": "^3.1.1",
"zhi-blog-api": "^1.20.1",
"zhi-blog-api": "^1.20.2",
"zhi-common": "^1.11.6",
"zhi-device": "^2.3.0",
"zhi-fetch-middleware": "^0.2.6",
"zhi-github-middleware": "^0.1.3",
"zhi-lib-base": "^0.4.2",
"zhi-siyuan-api": "^1.29.1",
"zhi-siyuan-api": "^1.29.2",
"zhi-xmlrpc-middleware": "^0.4.1"
}
}
32 changes: 16 additions & 16 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions src/components/publish/BatchPublishIndex.vue
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ const formData = reactive({
isDeleteLoading: false,
showProcessResult: false,
doc: {} as Post,
siyuanPost: {} as Post,
errCount: 0,
successBatchResults: <any[]>[],
failBatchResults: <any[]>[],
Expand All @@ -82,7 +82,7 @@ const handlePublish = async () => {
formData.failBatchResults = []
formData.successBatchResults = []
for (const key of formData.dynList) {
const batchResult = await doSinglePublish(key, props.id, formData.doc)
const batchResult = await doSinglePublish(key, props.id, formData.siyuanPost)
if (batchResult.status) {
formData.successBatchResults.push(batchResult)
} else {
Expand Down Expand Up @@ -173,12 +173,12 @@ const handleRefresh = () => {
onMounted(async () => {
logger.info("获取到的ID为=>", props.id)
// 思源笔记原始文章数据
formData.doc = await blogApi.getPost(props.id)
formData.siyuanPost = await blogApi.getPost(props.id)
})
</script>

<template>
<div id="publish-index">
<div id="batch-publish-index">
<el-container>
<el-main>
<!-- 提示 -->
Expand Down Expand Up @@ -212,7 +212,7 @@ onMounted(async () => {
<!-- 文章标题 -->
<div class="form-post-title">
<el-form-item :label="t('main.title')">
<el-input v-model="formData.doc.title" />
<el-input v-model="formData.siyuanPost.title" />
</el-form-item>
</div>
<el-divider border-style="dashed" />
Expand Down
142 changes: 138 additions & 4 deletions src/components/publish/SinglePublishDoPublish.vue
Original file line number Diff line number Diff line change
Expand Up @@ -24,23 +24,157 @@
-->

<script setup lang="ts">
import { reactive } from "vue"
import { onMounted, reactive } from "vue"
import { useRoute } from "vue-router"
import BackPage from "~/src/components/common/BackPage.vue"
import { usePublish } from "~/src/composables/usePublish.ts"
import { MethodEnum } from "~/src/models/methodEnum.ts"
import { Post } from "zhi-blog-api"
import { createAppLogger } from "~/src/utils/appLogger.ts"
import { useVueI18n } from "~/src/composables/useVueI18n.ts"
import { pre } from "~/src/utils/import/pre.ts"
import { DynamicConfig } from "~/src/components/set/publish/platform/dynamicConfig.ts"
import { useSiyuanApi } from "~/src/composables/useSiyuanApi.ts"
const logger = createAppLogger("single-publish-do-publish")
// uses
const { t } = useVueI18n()
const route = useRoute()
const { doInitPage } = usePublish()
const { query } = useRoute()
const { kernelApi, blogApi } = useSiyuanApi()
// datas
const sysKeys = pre.systemCfg.map((item) => {
return item.platformKey
})
const params = reactive(route.params)
const key = params.key as string
const id = params.id as string
const method = query.method as MethodEnum
const dynList = sysKeys.concat(key)
const formData = reactive({
isInit: false,
isPublishLoading: false,
isDeleteLoading: false,
siyuanPost: {} as Post,
platformPost: {} as Post,
mergedPost: {} as Post,
singleFormData: {} as any,
actionEnable: true,
})
const handlePublish = async () => {}
const handleDelete = async () => {}
const getTitle = () => {
const dynCfg = formData.singleFormData?.dynCfg as DynamicConfig
const cfg = formData.singleFormData?.cfg as any
const platformName = dynCfg?.platformName || ""
const blogName = cfg?.blogName || ""
let title = "当前操作的平台为 - "
title += platformName ? platformName : key
if (blogName) {
title += " - " + blogName
}
return title
}
const showChangeTip = (v1: string, v2: string) => {
return `系统标题为 [${v1}] , 已在远程平台被修改为 [${v2}]`
}
onMounted(async () => {
logger.info("获取到的ID为=>", id)
try {
formData.singleFormData = await doInitPage(key, id, method)
formData.siyuanPost = formData.singleFormData.siyuanPost
formData.platformPost = formData.singleFormData.platformPost
formData.mergedPost = formData.singleFormData.mergedPost
} catch (e) {
const errMsg = t("main.opt.failure") + "=>" + e
logger.error(errMsg)
await kernelApi.pushErrMsg({
msg: errMsg,
timeout: 7000,
})
}
formData.isInit = true
})
</script>

<template>
<back-page :title="'常规发布 - ' + key">
<div>single publish do publish {{ id }}</div>
<back-page title="常规发布">
<el-skeleton class="placeholder" v-if="!formData.isInit" :rows="5" animated />
<div v-else id="batch-publish-index">
<el-alert class="top-tip" :title="getTitle()" type="info" :closable="false" />
<el-container>
<el-main>
<!-- 表单数据 -->
<div class="publish-form">
<el-form label-width="100px">
<!-- 文章标题 -->
<div class="form-post-title">
<el-form-item :label="t('main.title')">
<el-input v-model="formData.mergedPost.title" />
</el-form-item>
<el-alert
v-if="method === MethodEnum.METHOD_EDIT && formData.siyuanPost.title !== formData.platformPost.title"
class="top-tip"
:title="showChangeTip(formData.siyuanPost.title, formData.platformPost.title)"
type="error"
:closable="false"
/>
</div>
<el-divider border-style="dashed" />

<!--
----------------------------------------------------------------------
-->
<!-- 标签 -->
<publish-tags />

<!-- 发布 -->
<el-form-item label-width="100px" class="form-action">
<el-button
type="primary"
:loading="formData.isPublishLoading"
@click="handlePublish"
:disabled="!formData.actionEnable"
>
{{ t("main.publish") }}
</el-button>
<el-button
type="danger"
:loading="formData.isDeleteLoading"
@click="handleDelete"
:disabled="!formData.actionEnable"
class="btn-rm-action"
>
{{ t("main.cancel") }}
</el-button>
</el-form-item>
</el-form>
</div>
</el-main>
</el-container>
</div>
</back-page>
</template>

<style scoped lang="stylus"></style>
<style scoped lang="stylus">
.placeholder
margin-top 10px
.top-tip
margin-top 10px
padding-left 0
</style>
2 changes: 2 additions & 0 deletions src/components/publish/SinglePublishSelectPlatform.vue
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,14 @@ const formData = reactive({
// methods
const handleSingleDoPublish = (key: string) => {
const method = checkHasPublished(key) ? "edit" : "add"
const path = `/publish/singlePublish/doPublish/${key}/${props.id}`
logger.info("will go to =>", path)
const query = {
path: path,
query: {
showBack: "true",
method: method,
},
}
router.push(query)
Expand Down
Loading

0 comments on commit e7be6b0

Please sign in to comment.