diff --git a/packages/common/component/BlockDeployDialog.vue b/packages/common/component/BlockDeployDialog.vue
index 3c15521b1..f304a59db 100644
--- a/packages/common/component/BlockDeployDialog.vue
+++ b/packages/common/component/BlockDeployDialog.vue
@@ -1,6 +1,6 @@
({})
+ },
+ visible: {
+ type: Boolean,
+ default: false
}
},
- emits: ['update:visible'],
- setup(props, { emit, attrs }) {
+ emits: ['update:visible', 'changeSchema'],
+ setup(props, { emit }) {
const { COMPONENT_NAME } = constants
const formState = reactive({
deployInfo: '',
@@ -137,12 +141,31 @@ export default {
}
}
+ const getNextVersion = (block) => {
+ const backupList = block.histories || []
+
+ let latestVersion = '1.0.0'
+ let latestTime = 0
+ backupList.forEach((v) => {
+ const vTime = new Date(v.created_at).getTime()
+
+ if (vTime > latestTime) {
+ latestTime = vTime
+ latestVersion = v.version
+ }
+ })
+ // version 符合X.Y.Z的字符结构
+ return latestVersion.replace(/\d+$/, (match) => Number(match) + 1)
+ }
+
watch(
- () => attrs.visible,
+ () => props.visible,
(visible) => {
- if (visible && !formState.version) {
- formState.version = props.nextVersion
+ if (!visible) {
+ return
}
+
+ formState.version = getNextVersion(props.block)
}
)
@@ -150,10 +173,11 @@ export default {
const deployBlock = async () => {
deployBlockRef.value.validate((valid) => {
- const { getEditBlock, publishBlock } = getMetaApi(META_APP.BlockManage)
+ const { publishBlock } = getMetaApi(META_APP.BlockManage)
+
if (valid) {
const params = {
- block: getEditBlock() || useBlock().getCurrentBlock(),
+ block: props.block,
is_compile: true,
deploy_info: formState.deployInfo,
version: formState.version,
@@ -170,21 +194,14 @@ export default {
const changeCompare = async (value) => {
const api = getMetaApi(META_APP.BlockManage)
+
if (value) {
- const block = api.getEditBlock()
+ const block = props.block
const remote = await api.getBlockById(block?.id)
const originalObj = remote?.content || {}
state.originalCode = JSON.stringify(originalObj, null, 2)
- const getSchema = useCanvas().getSchema
- // 转为普通对象,和线上代码顺序保持一致
- const pageSchema = getSchema?.() || {}
- if (pageSchema.componentName === 'Block') {
- state.code = JSON.stringify(pageSchema, null, 2)
- } else {
- // 非区块编辑
- state.code = state.originalCode
- }
+ state.code = JSON.stringify(block?.content || {}, null, 2)
state.compareVisible = true
}
}
@@ -207,8 +224,8 @@ export default {
return
}
try {
- const pageSchema = JSON.parse(state.newCode)
- useCanvas().importSchema({ ...pageSchema, componentName: COMPONENT_NAME.Block })
+ const newSchema = JSON.parse(state.newCode)
+ emit('changeSchema', { ...newSchema, componentName: COMPONENT_NAME.Block })
close()
} catch (err) {
useNotify({
diff --git a/packages/plugins/block/src/BlockSetting.vue b/packages/plugins/block/src/BlockSetting.vue
index e9b6407bc..2b347c2ce 100644
--- a/packages/plugins/block/src/BlockSetting.vue
+++ b/packages/plugins/block/src/BlockSetting.vue
@@ -75,14 +75,17 @@
-
+