forked from opentiny/tiny-engine
fix: url unchanged after create block (#1323)
This commit is contained in:
parent
9de1275c88
commit
030ece7b40
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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 })
|
||||
|
|
|
|||
|
|
@ -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) => {
|
||||
|
|
|
|||
|
|
@ -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 }) => {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue