Forráskód Böngészése

1、blockly选中标签name为空则填充标签内容
2、加入动态积木组件根据后端配置显示

liyanbo 4 hónapja
szülő
commit
153554c270

+ 1 - 0
src/api/blockly/blockly/index.ts

@@ -15,6 +15,7 @@ export interface BlocklyVO {
   blocklyBackground: string // 地图背景图
   blocklyEndPoint: string // 地图结束坐标
   blocklyWalkablePoints: string // 地图可行走坐标
+  blocklySpecialBlocks: string // 特殊方块
 
   bcIsInspect: false // 课程是否有检查
   bcType: number // 课程类型

+ 2 - 1
src/utils/dict.ts

@@ -261,5 +261,6 @@ export enum DICT_TYPE {
   // ========== Blockly - 地图编程游戏  ==========
   AI_BLOCKLY_MAP_TYPE = 'ai_blockly_map_type', // 地图类型
   BLOCKLY_COURSE_LABEL = 'blockly_course_label', // 课程标签
-  BLOCKLY_COURSE_COUTNET_TYPE = 'blockly_course_content_type' // 课程内容类型
+  BLOCKLY_COURSE_COUTNET_TYPE = 'blockly_course_content_type', // 课程内容类型
+  BLOCKLY_MAP_SPECIAL = 'blockly_map_special' // 地图特殊方块类型
 }

+ 29 - 2
src/views/blockly/blockly/BlocklyForm.vue

@@ -428,6 +428,22 @@
         </el-row>
       </el-form-item>
 
+      <el-form-item label="特殊方块" prop="blocklySpecialBlocks">
+        <el-select
+          v-model="formData.blocklySpecialBlocks"
+          placeholder="请选择特殊方块"
+          multiple
+          clearable
+          style="width: 100%"
+        >
+          <el-option
+            v-for="dict in getStrDictOptions(DICT_TYPE.BLOCKLY_MAP_SPECIAL)"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
     </el-form>
     <template #footer>
       <el-button @click="saveBlocklyConfig" type="primary">确 定</el-button>
@@ -494,11 +510,12 @@ const formData = ref({
   blocklyInfo: undefined,
   blocklyUserImage: 'https://learn-ai.com.cn/admin-api/infra/file/29/get/20251107/user_1762504554550.png',
   blocklyUserDirection: 0,
-  blocklyTileSize: undefined, // 保持兼容性
+  blocklyTileSize: undefined,
   blocklyStartPoint: undefined,
   blocklyBackground: undefined,
   blocklyEndPoint: undefined,
   blocklyWalkablePoints: undefined,
+  blocklySpecialBlocks: undefined,
 
   bcIsInspect: "false",
   bcType: undefined,
@@ -679,6 +696,11 @@ const open = async (type: string, id?: number) => {
           blocklyWalkablePoints.value = []
         }
       }
+
+      // 处理 blocklySpecialBlocks 字段,将字符串转换为数组
+      if (blocklyData.blocklySpecialBlocks) {
+        formData.value.blocklySpecialBlocks = blocklyData.blocklySpecialBlocks.split(',')
+      }
     } finally {
       formLoading.value = false
     }
@@ -746,6 +768,10 @@ const submitForm = async () => {
     if (data.bcContentType === 'image') {
       data.bcContent = data.bcContent?.join(',')
     }
+    // 将 blocklySpecialBlocks 数组转换为字符串
+    if (data.blocklySpecialBlocks && Array.isArray(data.blocklySpecialBlocks)) {
+      data.blocklySpecialBlocks = data.blocklySpecialBlocks.join(',')
+    }
     if (formType.value === 'create') {
       await BlocklyApi.createBlockly(data)
       message.success(t('common.createSuccess'))
@@ -788,11 +814,12 @@ const resetForm = () => {
     blocklyInfo: undefined,
     blocklyUserImage: 'https://learn-ai.com.cn/admin-api/infra/file/29/get/20251107/user_1762504554550.png',
     blocklyUserDirection: 0,
-    blocklyTileSize: undefined, // 保持兼容性
+    blocklyTileSize: undefined,
     blocklyStartPoint: undefined,
     blocklyBackground: undefined,
     blocklyEndPoint: undefined,
     blocklyWalkablePoints: undefined,
+    blocklySpecialBlocks: undefined,
 
     bcIsInspect: "false",
     bcType: undefined,

+ 1 - 1
src/views/blockly/blockly/index.vue

@@ -180,9 +180,9 @@
                 编辑
               </el-button>
               <el-button
+                v-if="scope.row.bcContentType == 'video'"
                 link
                 type="success"
-                :disabled="scope.row.bcContentType !== 'video'"
                 title="仅视频课程可配置"
                 @click="handleConfig(scope.row.id,scope.row.bcName,scope.row.tenantId)"
               >