fix: url unchanged after create block (#1323)

This commit is contained in:
Gene 2025-04-22 19:16:59 +08:00 committed by GitHub
parent 9de1275c88
commit 030ece7b40
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 33 additions and 23 deletions

View File

@ -104,8 +104,8 @@ router.get('/material-center/api/blocks', async (ctx) => {
})
router.post('/material-center/api/block/create', async (ctx) => {
const result = mockService.blockService.create(ctx.request.body)
const categoriesId = ctx.request.body.categories[0]
const result = await mockService.blockService.create(ctx.request.body)
const categoriesId = ctx.request.body.categories?.[0] || ctx.request.body.groups?.[0]
const _id = result.id
await mockService.blockCategoryService.update(categoriesId, { _id })
ctx.body = getResponseData(result)

View File

@ -47,9 +47,11 @@ export default class BlockCategoryService {
async update(id, params) {
if (params?._id) {
const categories = await this.db.findOneAsync({ _id: id })
categories.blocks.push(params._id)
await this.db.updateAsync({ _id: id }, { $set: categories })
return getResponseData(categories)
if (categories) {
categories.blocks.push(params._id)
await this.db.updateAsync({ _id: id }, { $set: categories })
return getResponseData(categories)
}
}
params.app = appinfo.app
await this.db.updateAsync({ _id: id }, { $set: params })

View File

@ -43,7 +43,7 @@
<script lang="ts">
import { reactive, computed, ref } from 'vue'
import { Input, Form, FormItem, Button, DialogBox, Select } from '@opentiny/vue'
import { useBlock, useLayout, useCanvas, useModal } from '@opentiny/tiny-engine-meta-register'
import { useBlock, useLayout, useCanvas, useModal, getMetaApi, META_SERVICE } from '@opentiny/tiny-engine-meta-register'
import { REGEXP_BLOCK_NAME } from '@opentiny/tiny-engine-common/js/verification'
export default {
@ -88,13 +88,13 @@ export default {
}
const handleAddBlock = () => {
if (props.fromCanvas) {
createBlock(formData)
} else {
createEmptyBlock(formData)
}
activePlugin(PLUGIN_NAME.Materials) // ??
cancel()
const promise = props.fromCanvas ? createBlock(formData) : createEmptyBlock(formData)
promise.then((block) => {
getMetaApi(META_SERVICE.GlobalService).updateBlockId(block.id)
activePlugin(PLUGIN_NAME.Materials)
cancel()
})
}
const addBlock = () => {
formRef.value.validate((valid) => {

View File

@ -332,7 +332,7 @@ const createBlock = ({ name_cn, label, path, categories }: CreateBlockOptions) =
// 过滤只有新区块内使用到的数据
const { getLangs } = useTranslate()
const filterData = filterDataFn(parseChildProps)
const { langs, methods, state, classNameList, contentList } = extend(
const { methods, state, classNameList, contentList } = extend(
true,
{},
filterData({
@ -370,7 +370,9 @@ const createBlock = ({ name_cn, label, path, categories }: CreateBlockOptions) =
}
}
initBlock(block, langs)
const api = getMetaApi(META_APP.BlockManage)
// saveBlock 内部会调用 blockSettings.tsx 中的 createBlock 接口,成功后会自动初始化区块
return api.saveBlock?.(block)
}
const createEmptyBlock = ({ name_cn, label, path, categories }: CreateEmptyBlockOptions) => {
@ -387,7 +389,9 @@ const createEmptyBlock = ({ name_cn, label, path, categories }: CreateEmptyBlock
}
}
initBlock(block)
const api = getMetaApi(META_APP.BlockManage)
// saveBlock 内部会调用 blockSettings.tsx 中的 createBlock 接口,成功后会自动初始化区块
return api.saveBlock?.(block)
}
const setComponentLinkedValue = ({ propertyName, value }: { propertyName: string; value: any }) => {

View File

@ -577,7 +577,7 @@ const createBlock = (block = {}) => {
}
}
requestCreateBlock(params)
return requestCreateBlock(params)
.then((data) => {
// 后台获取区块id后保存id信息
block.id = data.id
@ -585,7 +585,7 @@ const createBlock = (block = {}) => {
useCanvas().setSaved(true)
// 新建区块成功后需要同步更新画布上的区块数据ctx上下文环境
useBlock().initBlock(data, {}, true)
message({ message: '新建区块成功!', status: 'success' })
useNotify({ message: '新建区块成功!!', type: 'success' })
// 本地生成区块服务
if (isVsCodeEnv) {
generateBlock({ schema: data.content, blockPath: data.path })
@ -593,6 +593,8 @@ const createBlock = (block = {}) => {
updateBlockList()
// 更新区块分类数据,分类下区块不为空的不能删除
getCategories()
return data
})
.catch((error) => {
message({ message: error.message, status: 'error' })
@ -622,7 +624,7 @@ const updateBlock = (block = {}) => {
extraParams.categories = categories
}
requestUpdateBlock(
return requestUpdateBlock(
id,
{
[nameCn]: block[nameCn],
@ -651,7 +653,7 @@ const updateBlock = (block = {}) => {
}
// 弹出保存区块成功
useModal().message({ message: '保存区块成功!', status: 'success' })
useNotify({ message: '保存区块成功!', type: 'success' })
// 本地生成区块服务
if (isVsCodeEnv) {
generateBlock({ schema: data.content, blockPath: data.path })
@ -660,6 +662,8 @@ const updateBlock = (block = {}) => {
// 更新区块分类数据,分类下区块不为空的不能删除
getCategories()
useBlock().isRefresh.value = true
return data
})
.catch((error) => {
useModal().message({ message: error.message, status: 'error' })
@ -716,14 +720,14 @@ const generateBlockDeps = (children, deps = { scripts: [], styles: new Set() })
return deps
}
export const saveBlock = async (block) => {
export const saveBlock = (block) => {
if (block && validBlockSlotsName(block)) {
const { scripts, styles } = generateBlockDeps(block.content.children)
block.content.dependencies = { scripts, styles: [...styles] }
const actionPromise = block.id ? updateBlock(block) : createBlock(block)
await actionPromise
return actionPromise
}
}

View File

@ -113,7 +113,7 @@ const initBlock = async (blockId: string) => {
const blockApi = getMetaApi(META_APP.BlockManage)
const blockContent = await blockApi.getBlockById(blockId)
if (blockContent.public_scope_tenants.length) {
if (blockContent.public_scope_tenants?.length) {
blockContent.public_scope_tenants = blockContent.public_scope_tenants.map((e: { id: string }) => e.id)
}