Skip to content

Commit 030ece7

Browse files
authored
fix: url unchanged after create block (#1323)
1 parent 9de1275 commit 030ece7

6 files changed

Lines changed: 33 additions & 23 deletions

File tree

mockServer/src/routes/main-routes.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@ router.get('/material-center/api/blocks', async (ctx) => {
104104
})
105105

106106
router.post('/material-center/api/block/create', async (ctx) => {
107-
const result = mockService.blockService.create(ctx.request.body)
108-
const categoriesId = ctx.request.body.categories[0]
107+
const result = await mockService.blockService.create(ctx.request.body)
108+
const categoriesId = ctx.request.body.categories?.[0] || ctx.request.body.groups?.[0]
109109
const _id = result.id
110110
await mockService.blockCategoryService.update(categoriesId, { _id })
111111
ctx.body = getResponseData(result)

mockServer/src/services/blockCategory.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,11 @@ export default class BlockCategoryService {
4747
async update(id, params) {
4848
if (params?._id) {
4949
const categories = await this.db.findOneAsync({ _id: id })
50-
categories.blocks.push(params._id)
51-
await this.db.updateAsync({ _id: id }, { $set: categories })
52-
return getResponseData(categories)
50+
if (categories) {
51+
categories.blocks.push(params._id)
52+
await this.db.updateAsync({ _id: id }, { $set: categories })
53+
return getResponseData(categories)
54+
}
5355
}
5456
params.app = appinfo.app
5557
await this.db.updateAsync({ _id: id }, { $set: params })

packages/plugins/block/src/SaveNewBlock.vue

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
<script lang="ts">
4444
import { reactive, computed, ref } from 'vue'
4545
import { Input, Form, FormItem, Button, DialogBox, Select } from '@opentiny/vue'
46-
import { useBlock, useLayout, useCanvas, useModal } from '@opentiny/tiny-engine-meta-register'
46+
import { useBlock, useLayout, useCanvas, useModal, getMetaApi, META_SERVICE } from '@opentiny/tiny-engine-meta-register'
4747
import { REGEXP_BLOCK_NAME } from '@opentiny/tiny-engine-common/js/verification'
4848
4949
export default {
@@ -88,13 +88,13 @@ export default {
8888
}
8989
9090
const handleAddBlock = () => {
91-
if (props.fromCanvas) {
92-
createBlock(formData)
93-
} else {
94-
createEmptyBlock(formData)
95-
}
96-
activePlugin(PLUGIN_NAME.Materials) // ?? 疑问:新建区块后,这里为啥要激活物料
97-
cancel()
91+
const promise = props.fromCanvas ? createBlock(formData) : createEmptyBlock(formData)
92+
93+
promise.then((block) => {
94+
getMetaApi(META_SERVICE.GlobalService).updateBlockId(block.id)
95+
activePlugin(PLUGIN_NAME.Materials)
96+
cancel()
97+
})
9898
}
9999
const addBlock = () => {
100100
formRef.value.validate((valid) => {

packages/plugins/block/src/composable/useBlock.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ const createBlock = ({ name_cn, label, path, categories }: CreateBlockOptions) =
332332
// 过滤只有新区块内使用到的数据
333333
const { getLangs } = useTranslate()
334334
const filterData = filterDataFn(parseChildProps)
335-
const { langs, methods, state, classNameList, contentList } = extend(
335+
const { methods, state, classNameList, contentList } = extend(
336336
true,
337337
{},
338338
filterData({
@@ -370,7 +370,9 @@ const createBlock = ({ name_cn, label, path, categories }: CreateBlockOptions) =
370370
}
371371
}
372372

373-
initBlock(block, langs)
373+
const api = getMetaApi(META_APP.BlockManage)
374+
// saveBlock 内部会调用 blockSettings.tsx 中的 createBlock 接口,成功后会自动初始化区块
375+
return api.saveBlock?.(block)
374376
}
375377

376378
const createEmptyBlock = ({ name_cn, label, path, categories }: CreateEmptyBlockOptions) => {
@@ -387,7 +389,9 @@ const createEmptyBlock = ({ name_cn, label, path, categories }: CreateEmptyBlock
387389
}
388390
}
389391

390-
initBlock(block)
392+
const api = getMetaApi(META_APP.BlockManage)
393+
// saveBlock 内部会调用 blockSettings.tsx 中的 createBlock 接口,成功后会自动初始化区块
394+
return api.saveBlock?.(block)
391395
}
392396

393397
const setComponentLinkedValue = ({ propertyName, value }: { propertyName: string; value: any }) => {

packages/plugins/block/src/js/blockSetting.tsx

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -577,22 +577,24 @@ const createBlock = (block = {}) => {
577577
}
578578
}
579579

580-
requestCreateBlock(params)
580+
return requestCreateBlock(params)
581581
.then((data) => {
582582
// 后台获取区块id后保存id信息
583583
block.id = data.id
584584
useTranslate().batchCreateI18n({ host: block.id, hostType: HOST_TYPE.Block })
585585
useCanvas().setSaved(true)
586586
// 新建区块成功后需要同步更新画布上的区块数据ctx上下文环境
587587
useBlock().initBlock(data, {}, true)
588-
message({ message: '新建区块成功!', status: 'success' })
588+
useNotify({ message: '新建区块成功!!', type: 'success' })
589589
// 本地生成区块服务
590590
if (isVsCodeEnv) {
591591
generateBlock({ schema: data.content, blockPath: data.path })
592592
}
593593
updateBlockList()
594594
// 更新区块分类数据,分类下区块不为空的不能删除
595595
getCategories()
596+
597+
return data
596598
})
597599
.catch((error) => {
598600
message({ message: error.message, status: 'error' })
@@ -622,7 +624,7 @@ const updateBlock = (block = {}) => {
622624
extraParams.categories = categories
623625
}
624626

625-
requestUpdateBlock(
627+
return requestUpdateBlock(
626628
id,
627629
{
628630
[nameCn]: block[nameCn],
@@ -651,7 +653,7 @@ const updateBlock = (block = {}) => {
651653
}
652654

653655
// 弹出保存区块成功
654-
useModal().message({ message: '保存区块成功!', status: 'success' })
656+
useNotify({ message: '保存区块成功!', type: 'success' })
655657
// 本地生成区块服务
656658
if (isVsCodeEnv) {
657659
generateBlock({ schema: data.content, blockPath: data.path })
@@ -660,6 +662,8 @@ const updateBlock = (block = {}) => {
660662
// 更新区块分类数据,分类下区块不为空的不能删除
661663
getCategories()
662664
useBlock().isRefresh.value = true
665+
666+
return data
663667
})
664668
.catch((error) => {
665669
useModal().message({ message: error.message, status: 'error' })
@@ -716,14 +720,14 @@ const generateBlockDeps = (children, deps = { scripts: [], styles: new Set() })
716720
return deps
717721
}
718722

719-
export const saveBlock = async (block) => {
723+
export const saveBlock = (block) => {
720724
if (block && validBlockSlotsName(block)) {
721725
const { scripts, styles } = generateBlockDeps(block.content.children)
722726

723727
block.content.dependencies = { scripts, styles: [...styles] }
724728

725729
const actionPromise = block.id ? updateBlock(block) : createBlock(block)
726-
await actionPromise
730+
return actionPromise
727731
}
728732
}
729733

packages/plugins/materials/src/composable/useResource.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ const initBlock = async (blockId: string) => {
113113
const blockApi = getMetaApi(META_APP.BlockManage)
114114
const blockContent = await blockApi.getBlockById(blockId)
115115

116-
if (blockContent.public_scope_tenants.length) {
116+
if (blockContent.public_scope_tenants?.length) {
117117
blockContent.public_scope_tenants = blockContent.public_scope_tenants.map((e: { id: string }) => e.id)
118118
}
119119

0 commit comments

Comments
 (0)