From b28105d2ae8a27553166efcecfe04e43dce444ff Mon Sep 17 00:00:00 2001 From: lu-yg <128358973+lu-yg@users.noreply.github.com> Date: Thu, 5 Jun 2025 15:51:14 +0800 Subject: [PATCH 01/14] fix: Fix page and block lock bug (#238) --- .../h2/update_tables_ddl_v1.0.0_2025_0527.sql | 2 ++ .../update_tables_ddl_v1.0.0_2025_0527.sql | 2 ++ .../service/app/impl/CanvasServiceImpl.java | 19 ++++++++++++------- .../main/resources/mappers/BlockMapper.xml | 2 +- .../src/main/resources/mappers/PageMapper.xml | 2 +- 5 files changed, 18 insertions(+), 9 deletions(-) create mode 100644 app/src/main/resources/sql/h2/update_tables_ddl_v1.0.0_2025_0527.sql create mode 100644 app/src/main/resources/sql/mysql/update_tables_ddl_v1.0.0_2025_0527.sql diff --git a/app/src/main/resources/sql/h2/update_tables_ddl_v1.0.0_2025_0527.sql b/app/src/main/resources/sql/h2/update_tables_ddl_v1.0.0_2025_0527.sql new file mode 100644 index 00000000..460a83aa --- /dev/null +++ b/app/src/main/resources/sql/h2/update_tables_ddl_v1.0.0_2025_0527.sql @@ -0,0 +1,2 @@ +ALTER TABLE t_block_group DROP INDEX u_idx_block_group; +ALTER TABLE t_block_group ADD INDEX u_idx_block_group (`tenant_id`, `platform_id`, `name`, `app_id`); \ No newline at end of file diff --git a/app/src/main/resources/sql/mysql/update_tables_ddl_v1.0.0_2025_0527.sql b/app/src/main/resources/sql/mysql/update_tables_ddl_v1.0.0_2025_0527.sql new file mode 100644 index 00000000..460a83aa --- /dev/null +++ b/app/src/main/resources/sql/mysql/update_tables_ddl_v1.0.0_2025_0527.sql @@ -0,0 +1,2 @@ +ALTER TABLE t_block_group DROP INDEX u_idx_block_group; +ALTER TABLE t_block_group ADD INDEX u_idx_block_group (`tenant_id`, `platform_id`, `name`, `app_id`); \ No newline at end of file diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/CanvasServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/CanvasServiceImpl.java index fb1a8656..fe9bb248 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/CanvasServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/CanvasServiceImpl.java @@ -14,6 +14,7 @@ import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.context.LoginUserContext; +import com.tinyengine.it.common.enums.Enums; import com.tinyengine.it.mapper.BlockMapper; import com.tinyengine.it.mapper.PageMapper; import com.tinyengine.it.mapper.UserMapper; @@ -44,7 +45,7 @@ public class CanvasServiceImpl implements CanvasService { @Override public Result lockCanvas(Integer id, String state, String type) { - String occupier; + String occupier = null; // needTODO 先试用mock数据,后续添加登录及权限后从session获取, User user = userMapper.queryUserById(loginUserContext.getLoginUserId()); if (user == null) { @@ -52,17 +53,21 @@ public Result lockCanvas(Integer id, String state, String type) { user.setId(loginUserContext.getLoginUserId()); } CanvasDto canvasDto = new CanvasDto(); + String value = state.equals(Enums.CanvasEditorState.OCCUPY.getValue()) ? user.getId() : null; + User occupierValue = state.equals(Enums.CanvasEditorState.OCCUPY.getValue()) ? user : null; if ("page".equals(type)) { Page page = pageMapper.queryPageById(id); - occupier = page.getOccupier().getId(); + if (page.getOccupier() != null) { + occupier = page.getOccupier().getId(); + } Boolean isCaDoIt = isCanDoIt(occupier, user); if (isCaDoIt) { Page updatePage = new Page(); updatePage.setId(id); - updatePage.setOccupierBy(user.getId()); + updatePage.setOccupierBy(value); pageMapper.updatePageById(updatePage); canvasDto.setOperate("success"); - canvasDto.setOccupier(user); + canvasDto.setOccupier(occupierValue); return Result.success(canvasDto); } } else { @@ -72,15 +77,15 @@ public Result lockCanvas(Integer id, String state, String type) { if (isCaDoIt) { Block updateBlock = new Block(); updateBlock.setId(id); - updateBlock.setOccupierBy(user.getId()); + updateBlock.setOccupierBy(value); blockMapper.updateBlockById(updateBlock); canvasDto.setOperate("success"); - canvasDto.setOccupier(user); + canvasDto.setOccupier(occupierValue); return Result.success(canvasDto); } } canvasDto.setOperate("failed"); - canvasDto.setOccupier(user); + canvasDto.setOccupier(occupierValue); return Result.success(canvasDto); } diff --git a/base/src/main/resources/mappers/BlockMapper.xml b/base/src/main/resources/mappers/BlockMapper.xml index e562c060..43b06531 100644 --- a/base/src/main/resources/mappers/BlockMapper.xml +++ b/base/src/main/resources/mappers/BlockMapper.xml @@ -142,7 +142,7 @@ path = #{path}, - + occupier_by = #{occupierBy}, diff --git a/base/src/main/resources/mappers/PageMapper.xml b/base/src/main/resources/mappers/PageMapper.xml index 2044d35c..bdf95efa 100644 --- a/base/src/main/resources/mappers/PageMapper.xml +++ b/base/src/main/resources/mappers/PageMapper.xml @@ -108,7 +108,7 @@ is_page = #{isPage}, - + occupier_by = #{occupierBy}, From e0904a50c7f95d6c41fccf0ec0591c3cdc4825f5 Mon Sep 17 00:00:00 2001 From: lu-yg <128358973+lu-yg@users.noreply.github.com> Date: Mon, 9 Jun 2025 09:55:56 +0800 Subject: [PATCH 02/14] fix: File format check (#239) --- .../com/tinyengine/it/common/enums/Enums.java | 95 +++++++++++++++++++ .../common/utils/SecurityFileCheckUtil.java | 27 +++++- .../it/controller/ComponentController.java | 13 +++ .../it/controller/I18nEntryController.java | 15 +++ .../app/impl/I18nEntryServiceImpl.java | 5 +- .../material/impl/ComponentServiceImpl.java | 14 --- .../controller/I18nEntryControllerTest.java | 20 ++-- .../app/impl/I18nEntryServiceImplTest.java | 4 +- 8 files changed, 167 insertions(+), 26 deletions(-) diff --git a/base/src/main/java/com/tinyengine/it/common/enums/Enums.java b/base/src/main/java/com/tinyengine/it/common/enums/Enums.java index e9b7f2ad..c534de21 100644 --- a/base/src/main/java/com/tinyengine/it/common/enums/Enums.java +++ b/base/src/main/java/com/tinyengine/it/common/enums/Enums.java @@ -908,4 +908,99 @@ public String getValue() { return value; } } + + public enum FileType { + /** + * File type zip. + */ + ZIP("application/zip"), + + /** + * File type x-zip. + */ + XZIP("application/x-zip-compressed"), + + /** + * File type json. + */ + JSON("application/json"), + + /** + * File type text. + */ + TXT("text/plain"), + + /** + * File type html. + */ + HTML("text/html"), + /** + * File type png. + */ + PNG("image/png"), + + /** + * File type jpg. + */ + JPG("image/jpeg"); + private final String value; + + FileType(String value) { + this.value = value; + } + + /** + * Gets value. + * + * @return the value + */ + public String getValue() { + return value; + } + } + + public enum FileNameEnd { + /** + * File name end .zip. + */ + ZIP(".zip"), + + /** + * File name end .json. + */ + JSON(".json"), + + /** + * File name end .text. + */ + TXT(".txt"), + + /** + * File name end .html. + */ + HTML(".html"), + /** + * File name end .png. + */ + PNG(".png"), + + /** + * File name end .jpg. + */ + JPG(".jpeg"); + private final String value; + + FileNameEnd(String value) { + this.value = value; + } + + /** + * Gets value. + * + * @return the value + */ + public String getValue() { + return value; + } + } } diff --git a/base/src/main/java/com/tinyengine/it/common/utils/SecurityFileCheckUtil.java b/base/src/main/java/com/tinyengine/it/common/utils/SecurityFileCheckUtil.java index 8687e99a..deae55e3 100644 --- a/base/src/main/java/com/tinyengine/it/common/utils/SecurityFileCheckUtil.java +++ b/base/src/main/java/com/tinyengine/it/common/utils/SecurityFileCheckUtil.java @@ -12,12 +12,15 @@ package com.tinyengine.it.common.utils; import cn.hutool.core.util.ObjectUtil; +import com.fasterxml.jackson.databind.ObjectMapper; import com.tinyengine.it.common.exception.ExceptionEnum; import com.tinyengine.it.common.exception.ServiceException; import org.springframework.util.StringUtils; import org.springframework.web.multipart.MultipartFile; import java.io.File; +import java.io.IOException; +import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Objects; @@ -59,14 +62,18 @@ public static boolean checkPathHasCrossDir(String dirOrFileName) { * @param fileTypeMap the fileTypeMap * @return true or false */ - public static boolean checkFileType(MultipartFile file, Map fileTypeMap) { + public static boolean checkFileType(MultipartFile file, Map> fileTypeMap) { if (Objects.isNull(file) || fileTypeMap.isEmpty()) { throw new ServiceException(ExceptionEnum.CM307.getResultCode(), ExceptionEnum.CM307.getResultMsg()); } String originalFileName = file.getOriginalFilename(); - for (Map.Entry entry : fileTypeMap.entrySet()) { + String contentType = file.getContentType(); + + for (Map.Entry> entry : fileTypeMap.entrySet()) { if (originalFileName.endsWith(entry.getKey())) { - return checkFileType(file, entry.getKey(), entry.getValue()); + if (entry.getValue().contains(contentType)) { + return true; + } } } return false; @@ -177,5 +184,19 @@ private static String getFileName(String filePath) { return file.getName(); } + /** + * Verify json file. + * + * @param file the file + */ + public static void isValidJson(MultipartFile file) { + ObjectMapper objectMapper = new ObjectMapper(); + try { + // 将 MultipartFile 转换为 InputStream 并解析 JSON + objectMapper.readTree(file.getInputStream()); + } catch (IOException e) { + throw new ServiceException(ExceptionEnum.CM308.getResultCode(), ExceptionEnum.CM308.getResultMsg()); + } + } } diff --git a/base/src/main/java/com/tinyengine/it/controller/ComponentController.java b/base/src/main/java/com/tinyengine/it/controller/ComponentController.java index b4b0b109..dabeb230 100644 --- a/base/src/main/java/com/tinyengine/it/controller/ComponentController.java +++ b/base/src/main/java/com/tinyengine/it/controller/ComponentController.java @@ -13,6 +13,7 @@ package com.tinyengine.it.controller; import com.tinyengine.it.common.base.Result; +import com.tinyengine.it.common.enums.Enums; import com.tinyengine.it.common.exception.ExceptionEnum; import com.tinyengine.it.common.log.SystemControllerLog; import com.tinyengine.it.common.utils.SecurityFileCheckUtil; @@ -74,6 +75,12 @@ public Result bundleCreateComponent(@RequestParam MultipartFile file return Result.failed(ExceptionEnum.CM307); } SecurityFileCheckUtil.validFileName(file.getOriginalFilename()); + boolean checkFileType = SecurityFileCheckUtil.checkFileType(file, Enums.FileNameEnd.JSON.getValue(), + Enums.FileType.JSON.getValue()); + if (!checkFileType) { + return Result.failed(ExceptionEnum.CM308); + } + SecurityFileCheckUtil.isValidJson(file); // 返回插入和更新的条数 return componentService.readFileAndBulkCreate(file); } @@ -98,6 +105,12 @@ public Result bundleSplit(@RequestParam MultipartFile file) { return Result.failed(ExceptionEnum.CM307); } SecurityFileCheckUtil.validFileName(file.getOriginalFilename()); + boolean checkFileType = SecurityFileCheckUtil.checkFileType(file, Enums.FileNameEnd.JSON.getValue(), + Enums.FileType.JSON.getValue()); + if (!checkFileType) { + return Result.failed(ExceptionEnum.CM308); + } + SecurityFileCheckUtil.isValidJson(file); return componentService.bundleSplit(file); } diff --git a/base/src/main/java/com/tinyengine/it/controller/I18nEntryController.java b/base/src/main/java/com/tinyengine/it/controller/I18nEntryController.java index f16a2248..7894f254 100644 --- a/base/src/main/java/com/tinyengine/it/controller/I18nEntryController.java +++ b/base/src/main/java/com/tinyengine/it/controller/I18nEntryController.java @@ -13,6 +13,7 @@ package com.tinyengine.it.controller; import com.tinyengine.it.common.base.Result; +import com.tinyengine.it.common.enums.Enums; import com.tinyengine.it.common.exception.ExceptionEnum; import com.tinyengine.it.common.exception.ServiceException; import com.tinyengine.it.common.log.SystemControllerLog; @@ -46,6 +47,8 @@ import org.springframework.web.multipart.MultipartFile; import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -248,7 +251,14 @@ public Result updateI18nSingleFile( if (file.isEmpty()) { return Result.failed(ExceptionEnum.CM307); } + Map> fileTypeMap = new HashMap<>(); + fileTypeMap.put(Enums.FileNameEnd.ZIP.getValue(), Arrays.asList(Enums.FileType.ZIP.getValue(), Enums.FileType.XZIP.getValue())); + fileTypeMap.put(Enums.FileNameEnd.JSON.getValue(), Arrays.asList(Enums.FileType.JSON.getValue())); SecurityFileCheckUtil.validFileName(file.getOriginalFilename()); + boolean checkFileType = SecurityFileCheckUtil.checkFileType(file, fileTypeMap); + if (!checkFileType) { + return Result.failed(ExceptionEnum.CM325); + } // 返回插入和更新的条数 result = i18nEntryService.readSingleFileAndBulkCreate(file, id); } @@ -285,6 +295,11 @@ public Result updateI18nMultiFile( return Result.failed(ExceptionEnum.CM307); } SecurityFileCheckUtil.validFileName(file.getOriginalFilename()); + boolean checkFileType = SecurityFileCheckUtil.checkFileType(file, Enums.FileNameEnd.JSON.getValue(), + Enums.FileType.JSON.getValue()); + if (!checkFileType) { + return Result.failed(ExceptionEnum.CM308); + } // 返回插入和更新的条数 result = i18nEntryService.readFilesAndbulkCreate(key, file, id); } diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImpl.java index 88d6c109..4ade2134 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImpl.java @@ -21,6 +21,7 @@ import com.tinyengine.it.common.exception.ExceptionEnum; import com.tinyengine.it.common.exception.ServiceException; import com.tinyengine.it.common.log.SystemServiceLog; +import com.tinyengine.it.common.utils.SecurityFileCheckUtil; import com.tinyengine.it.common.utils.Utils; import com.tinyengine.it.mapper.I18nEntryMapper; import com.tinyengine.it.mapper.I18nLangMapper; @@ -326,7 +327,8 @@ public Result readSingleFileAndBulkCreate(MultipartFile file, int ho List entriesArr = new ArrayList<>(); String contentType = file.getContentType(); - if (Objects.equals(contentType, Enums.MimeType.JSON.getValue())) { + if (Objects.equals(contentType, Enums.FileType.JSON.getValue())) { + SecurityFileCheckUtil.isValidJson(file); Result parseJsonFileStreamResult = Utils.parseJsonFileStream(file); if (!parseJsonFileStreamResult.isSuccess()) { return Result.failed(ExceptionEnum.CM001); @@ -357,6 +359,7 @@ public Result readSingleFileAndBulkCreate(MultipartFile file, int ho @SystemServiceLog(description = "readFilesAndbulkCreate 批量上传词条数据") @Override public Result readFilesAndbulkCreate(String lang, MultipartFile file, int host) throws Exception { + SecurityFileCheckUtil.isValidJson(file); Result parseJsonFileStreamResult = Utils.parseJsonFileStream(file); // 解析 JSON 数据 if (!parseJsonFileStreamResult.isSuccess()) { diff --git a/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java index 2b7b7abd..ab7449d1 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java @@ -183,11 +183,6 @@ public Result readFileAndBulkCreate(MultipartFile file) { @Override @SystemServiceLog(description = "bundleSplit 拆分bundle.json实现方法") public Result bundleSplit(MultipartFile file) { - // 检验文件 - boolean isFileCheck = this.checkFile(file); - if (!isFileCheck) { - return Result.failed(ExceptionEnum.CM325); - } // 获取bundle.json数据 Result result = Utils.parseJsonFileStream(file); if (!result.isSuccess()) { @@ -392,13 +387,4 @@ private List buildComponentList(BundleDto bundleDto, List fileTypeMap = new HashMap<>(); - fileTypeMap.put(".json", "application/json"); - boolean isCheckFileType = SecurityFileCheckUtil.checkFileType(file, fileTypeMap); - if (!isCheckFileType) { - return false; - } - return true; - } } diff --git a/base/src/test/java/com/tinyengine/it/controller/I18nEntryControllerTest.java b/base/src/test/java/com/tinyengine/it/controller/I18nEntryControllerTest.java index 0068ef75..9fbdc1dd 100644 --- a/base/src/test/java/com/tinyengine/it/controller/I18nEntryControllerTest.java +++ b/base/src/test/java/com/tinyengine/it/controller/I18nEntryControllerTest.java @@ -17,6 +17,7 @@ import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.when; +import cn.hutool.core.io.IoUtil; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.model.dto.DeleteI18nEntry; import com.tinyengine.it.model.dto.FileResult; @@ -36,6 +37,7 @@ import org.mockito.MockitoAnnotations; import org.springframework.web.multipart.MultipartFile; +import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -130,10 +132,13 @@ void testUpdateI18nSingleFile() throws Exception { Result mockData = new Result<>(); mockData.setSuccess(true); when(i18nEntryService.readSingleFileAndBulkCreate(any(MultipartFile.class), anyInt())) - .thenReturn(mockData); + .thenReturn(mockData); MultipartFile file = Mockito.mock(MultipartFile.class); - when(file.getOriginalFilename()).thenReturn("example.json"); - when(file.isEmpty()).thenReturn(false); + when(file.getContentType()).thenReturn("application/json"); + when(file.getOriginalFilename()).thenReturn("originalName.json"); + when(file.getName()).thenReturn("123"); + when(file.getBytes()).thenReturn("{\"name\":\"value\"}".getBytes(StandardCharsets.UTF_8)); + when(file.getInputStream()).thenReturn(IoUtil.toStream("{\"name\":\"value\"}".getBytes(StandardCharsets.UTF_8))); HashMap filesMap = new HashMap() {{ put("filesMap", file); }}; @@ -145,10 +150,13 @@ void testUpdateI18nSingleFile() throws Exception { @Test void testUpdateI18nMultiFile() throws Exception { when(i18nEntryService.readFilesAndbulkCreate(anyString(), any(MultipartFile.class), anyInt())) - .thenReturn(new Result()); + .thenReturn(new Result()); MultipartFile file = Mockito.mock(MultipartFile.class); - when(file.getOriginalFilename()).thenReturn("example.json"); - when(file.isEmpty()).thenReturn(false); + when(file.getContentType()).thenReturn("application/json"); + when(file.getOriginalFilename()).thenReturn("originalName.json"); + when(file.getName()).thenReturn("123"); + when(file.getBytes()).thenReturn("{\"name\":\"value\"}".getBytes(StandardCharsets.UTF_8)); + when(file.getInputStream()).thenReturn(IoUtil.toStream("{\"name\":\"value\"}".getBytes(StandardCharsets.UTF_8))); HashMap filesMap = new HashMap() {{ put("filesMap", file); }}; diff --git a/base/src/test/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImplTest.java index c2de3384..8ca96f85 100644 --- a/base/src/test/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImplTest.java @@ -284,7 +284,7 @@ void testReadSingleFileAndBulkCreate() throws Exception { when(file.getOriginalFilename()).thenReturn("originalName"); when(file.getName()).thenReturn("123"); when(file.getBytes()).thenReturn("{\"name\":\"value\"}".getBytes(StandardCharsets.UTF_8)); - when(file.getInputStream()).thenReturn(IoUtil.toStream("test".getBytes(StandardCharsets.UTF_8))); + when(file.getInputStream()).thenReturn(IoUtil.toStream("{\"name\":\"value\"}".getBytes(StandardCharsets.UTF_8))); Result result = i18nEntryServiceImpl.readSingleFileAndBulkCreate(file, 0); @@ -299,7 +299,7 @@ void testReadFilesAndbulkCreate() throws Exception { when(file.getOriginalFilename()).thenReturn("originalName"); when(file.getName()).thenReturn("123"); when(file.getBytes()).thenReturn("{\"name\":\"value\"}".getBytes(StandardCharsets.UTF_8)); - when(file.getInputStream()).thenReturn(IoUtil.toStream("test".getBytes(StandardCharsets.UTF_8))); + when(file.getInputStream()).thenReturn(IoUtil.toStream("{\"name\":\"value\"}".getBytes(StandardCharsets.UTF_8))); // file not existed Result result = i18nEntryServiceImpl.readFilesAndbulkCreate("1", file, 0); Assertions.assertNull(result.getData()); From 929a9713d603910eb17cb1414319e58c89d8b3a0 Mon Sep 17 00:00:00 2001 From: lu-yg <128358973+lu-yg@users.noreply.github.com> Date: Mon, 9 Jun 2025 10:36:09 +0800 Subject: [PATCH 03/14] fix: Modify code format (#240) --- .../it/service/material/impl/ComponentServiceImpl.java | 1 - 1 file changed, 1 deletion(-) diff --git a/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java index ab7449d1..8fde5817 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java @@ -15,7 +15,6 @@ import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.exception.ExceptionEnum; import com.tinyengine.it.common.log.SystemServiceLog; -import com.tinyengine.it.common.utils.SecurityFileCheckUtil; import com.tinyengine.it.common.utils.Utils; import com.tinyengine.it.mapper.ComponentLibraryMapper; import com.tinyengine.it.mapper.ComponentMapper; From 7b4149889adf6f69beefb9a78611ae5793d00069 Mon Sep 17 00:00:00 2001 From: lu-yg <128358973+lu-yg@users.noreply.github.com> Date: Tue, 17 Jun 2025 01:58:24 -0700 Subject: [PATCH 04/14] feat: Service extends IService (#242) * feat: Service extends IService --- .../it/config/filter/WebConfig.java | 22 ++++----- .../it/service/app/AppExtensionService.java | 9 ++-- .../tinyengine/it/service/app/AppService.java | 9 ++-- .../it/service/app/DatasourceService.java | 9 ++-- .../it/service/app/I18nEntryService.java | 6 +-- .../it/service/app/I18nLangService.java | 9 ++-- .../it/service/app/PageHistoryService.java | 7 ++- .../it/service/app/PageService.java | 9 ++-- .../it/service/app/PageTemplateService.java | 9 ++-- .../it/service/app/TaskRecordService.java | 9 ++-- .../it/service/app/UserService.java | 9 ++-- .../app/impl/AppExtensionServiceImpl.java | 30 +++++------- .../it/service/app/impl/AppServiceImpl.java | 48 ++++++------------- .../app/impl/DatasourceServiceImpl.java | 22 ++++----- .../app/impl/I18nEntryServiceImpl.java | 37 +++++++------- .../service/app/impl/I18nLangServiceImpl.java | 24 ++++------ .../app/impl/PageHistoryServiceImpl.java | 28 +++++------ .../it/service/app/impl/PageServiceImpl.java | 48 ++++++++----------- .../app/impl/PageTemplateServiceImpl.java | 30 +++++------- .../app/impl/TaskRecordServiceImpl.java | 24 ++++------ .../it/service/app/impl/UserServiceImpl.java | 19 ++++---- .../service/material/BlockGroupService.java | 9 ++-- .../service/material/BlockHistoryService.java | 9 ++-- .../it/service/material/BlockService.java | 9 ++-- .../material/BusinessCategoryService.java | 9 ++-- .../material/ComponentLibraryService.java | 9 ++-- .../it/service/material/ComponentService.java | 8 ++-- .../material/MaterialHistoryService.java | 9 ++-- .../it/service/material/MaterialService.java | 9 ++-- .../service/material/TaskRecordService.java | 7 ++- .../material/impl/BlockGroupServiceImpl.java | 33 ++++++------- .../impl/BlockHistoryServiceImpl.java | 24 ++++------ .../material/impl/BlockServiceImpl.java | 47 +++++++++--------- .../impl/BusinessCategoryServiceImpl.java | 24 ++++------ .../impl/ComponentLibraryServiceImpl.java | 24 ++++------ .../material/impl/ComponentServiceImpl.java | 41 ++++++++-------- .../impl/MaterialHistoryServiceImpl.java | 27 ++++------- .../material/impl/MaterialServiceImpl.java | 24 ++++------ .../impl/TaskRecordMaterialServiceImpl.java | 14 ++---- .../platform/PlatformHistoryService.java | 9 ++-- .../it/service/platform/PlatformService.java | 9 ++-- .../it/service/platform/TenantService.java | 9 ++-- .../impl/PlatformHistoryServiceImpl.java | 19 ++++---- .../platform/impl/PlatformServiceImpl.java | 26 +++++----- .../platform/impl/TenantServiceImpl.java | 24 ++++------ .../app/impl/AppExtensionServiceImplTest.java | 5 +- .../service/app/impl/AppServiceImplTest.java | 14 +----- .../app/impl/DatasourceServiceImplTest.java | 3 ++ .../app/impl/I18nEntryServiceImplTest.java | 3 ++ .../app/impl/I18nLangServiceImplTest.java | 3 ++ .../app/impl/PageHistoryServiceImplTest.java | 3 ++ .../service/app/impl/PageServiceImplTest.java | 20 +++++--- .../app/impl/PageTemplateServiceImplTest.java | 3 ++ .../app/impl/TaskRecordServiceImplTest.java | 3 ++ .../service/app/impl/UserServiceImplTest.java | 3 ++ .../impl/BlockGroupServiceImplTest.java | 2 + .../impl/BlockHistoryServiceImplTest.java | 3 ++ .../material/impl/BlockServiceImplTest.java | 10 ++-- .../impl/BusinessCategoryServiceImplTest.java | 3 ++ .../impl/ComponentServiceImplTest.java | 3 ++ .../impl/MaterialHistoryServiceImplTest.java | 3 ++ .../impl/MaterialServiceImplTest.java | 2 + .../TaskRecordMaterialServiceImplTest.java | 3 ++ .../impl/PlatformServiceImplTest.java | 3 ++ .../platform/impl/TenantServiceImplTest.java | 3 ++ pom.xml | 10 ++-- 66 files changed, 434 insertions(+), 520 deletions(-) diff --git a/app/src/main/java/com/tinyengine/it/config/filter/WebConfig.java b/app/src/main/java/com/tinyengine/it/config/filter/WebConfig.java index cacdf4d5..f760e11b 100644 --- a/app/src/main/java/com/tinyengine/it/config/filter/WebConfig.java +++ b/app/src/main/java/com/tinyengine/it/config/filter/WebConfig.java @@ -16,35 +16,31 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import org.springframework.web.cors.reactive.CorsWebFilter; +import org.springframework.web.reactive.config.WebFluxConfigurer; import java.util.Arrays; import java.util.List; @Configuration -public class WebConfig implements WebMvcConfigurer { +public class WebConfig implements WebFluxConfigurer { @Value("${cors.allowed-origins}") private String allowedOrigins; @Bean - public CorsFilter corsFilter() { - // 跨域配置地址 + public CorsWebFilter corsFilter() { List crosDomainList = Arrays.asList(allowedOrigins.split(",")); CorsConfiguration corsConfiguration = new CorsConfiguration(); - // 1、允许来源 corsConfiguration.setAllowedOriginPatterns(crosDomainList); - // 2、允许任何请求头 corsConfiguration.addAllowedHeader(CorsConfiguration.ALL); - // 3、允许任何方法 corsConfiguration.addAllowedMethod(CorsConfiguration.ALL); - // 4、允许凭证 corsConfiguration.setAllowCredentials(true); - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource source = + new org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", corsConfiguration); - return new CorsFilter(source); + + return new CorsWebFilter(source); } -} +} \ No newline at end of file diff --git a/base/src/main/java/com/tinyengine/it/service/app/AppExtensionService.java b/base/src/main/java/com/tinyengine/it/service/app/AppExtensionService.java index 3d9e217b..1eef9ae7 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/AppExtensionService.java +++ b/base/src/main/java/com/tinyengine/it/service/app/AppExtensionService.java @@ -12,11 +12,10 @@ package com.tinyengine.it.service.app; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.model.entity.AppExtension; -import org.apache.ibatis.annotations.Param; - import java.util.List; /** @@ -24,7 +23,7 @@ * * @since 2024-10-20 */ -public interface AppExtensionService { +public interface AppExtensionService extends IService { /** * 查询表t_app_extension所有信息 * @@ -38,7 +37,7 @@ public interface AppExtensionService { * @param id the id * @return the app extension */ - AppExtension findAppExtensionById(@Param("id") Integer id); + AppExtension findAppExtensionById(Integer id); /** * 根据条件查询表t_app_extension信息 @@ -54,7 +53,7 @@ public interface AppExtensionService { * @param id the id * @return the result */ - Result deleteAppExtensionById(@Param("id") Integer id); + Result deleteAppExtensionById(Integer id); /** * 根据主键id更新表t_app_extension信息 diff --git a/base/src/main/java/com/tinyengine/it/service/app/AppService.java b/base/src/main/java/com/tinyengine/it/service/app/AppService.java index 93c4d650..ccfb7c19 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/AppService.java +++ b/base/src/main/java/com/tinyengine/it/service/app/AppService.java @@ -12,14 +12,13 @@ package com.tinyengine.it.service.app; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.model.dto.I18nEntryDto; import com.tinyengine.it.model.dto.PreviewDto; import com.tinyengine.it.model.dto.SchemaI18n; import com.tinyengine.it.model.entity.App; -import org.apache.ibatis.annotations.Param; - import java.util.List; /** @@ -27,7 +26,7 @@ * * @since 2024-10-20 */ -public interface AppService { +public interface AppService extends IService { /** * 查询表t_app所有信息 * @@ -41,7 +40,7 @@ public interface AppService { * @param id the id * @return the result */ - Result queryAppById(@Param("id") Integer id); + Result queryAppById(Integer id); /** * 根据条件查询表t_app信息 @@ -57,7 +56,7 @@ public interface AppService { * @param id the id * @return the result */ - Result deleteAppById(@Param("id") Integer id); + Result deleteAppById(Integer id); /** * 根据主键id更新表t_app信息 diff --git a/base/src/main/java/com/tinyengine/it/service/app/DatasourceService.java b/base/src/main/java/com/tinyengine/it/service/app/DatasourceService.java index bbdf5836..e7e24fcb 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/DatasourceService.java +++ b/base/src/main/java/com/tinyengine/it/service/app/DatasourceService.java @@ -12,11 +12,10 @@ package com.tinyengine.it.service.app; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.model.entity.Datasource; -import org.apache.ibatis.annotations.Param; - import java.util.List; /** @@ -24,14 +23,14 @@ * * @since 2024-10-20 */ -public interface DatasourceService { +public interface DatasourceService extends IService { /** * 根据主键id查询表t_datasource信息 * * @param id the id * @return the datasource */ - Datasource queryDatasourceById(@Param("id") Integer id); + Datasource queryDatasourceById(Integer id); /** * 根据条件查询表t_datasource信息 @@ -47,7 +46,7 @@ public interface DatasourceService { * @param id the id * @return the result */ - Result deleteDatasourceById(@Param("id") Integer id); + Result deleteDatasourceById(Integer id); /** * 根据主键id更新表t_datasource信息 diff --git a/base/src/main/java/com/tinyengine/it/service/app/I18nEntryService.java b/base/src/main/java/com/tinyengine/it/service/app/I18nEntryService.java index 02671578..5da44b4a 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/I18nEntryService.java +++ b/base/src/main/java/com/tinyengine/it/service/app/I18nEntryService.java @@ -12,6 +12,7 @@ package com.tinyengine.it.service.app; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.model.dto.DeleteI18nEntry; import com.tinyengine.it.model.dto.FileResult; @@ -22,7 +23,6 @@ import com.tinyengine.it.model.dto.SchemaI18n; import com.tinyengine.it.model.entity.I18nEntry; -import org.apache.ibatis.annotations.Param; import org.springframework.web.multipart.MultipartFile; import java.util.List; @@ -32,7 +32,7 @@ * * @since 2024-10-20 */ -public interface I18nEntryService { +public interface I18nEntryService extends IService { /** * 查询表t_i18n_entry所有信息 * @@ -46,7 +46,7 @@ public interface I18nEntryService { * @param id the id * @return the 18 n entry */ - I18nEntryDto findI18nEntryById(@Param("id") Integer id); + I18nEntryDto findI18nEntryById(Integer id); /** * 根据条件查询表t_i18n_entry信息 diff --git a/base/src/main/java/com/tinyengine/it/service/app/I18nLangService.java b/base/src/main/java/com/tinyengine/it/service/app/I18nLangService.java index 495a816c..0d61d0d6 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/I18nLangService.java +++ b/base/src/main/java/com/tinyengine/it/service/app/I18nLangService.java @@ -12,10 +12,9 @@ package com.tinyengine.it.service.app; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.model.entity.I18nLang; -import org.apache.ibatis.annotations.Param; - import java.util.List; /** @@ -23,7 +22,7 @@ * * @since 2024-10-20 */ -public interface I18nLangService { +public interface I18nLangService extends IService { /** * 查询表t_i18n_lang所有信息 * @@ -37,7 +36,7 @@ public interface I18nLangService { * @param id the id * @return the 18 n lang */ - I18nLang queryI18nLangById(@Param("id") Integer id); + I18nLang queryI18nLangById(Integer id); /** * 根据条件查询表t_i18n_lang信息 @@ -53,7 +52,7 @@ public interface I18nLangService { * @param id the id * @return the integer */ - Integer deleteI18nLangById(@Param("id") Integer id); + Integer deleteI18nLangById(Integer id); /** * 根据主键id更新表t_i18n_lang信息 diff --git a/base/src/main/java/com/tinyengine/it/service/app/PageHistoryService.java b/base/src/main/java/com/tinyengine/it/service/app/PageHistoryService.java index 3e0a1f9c..803370c8 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/PageHistoryService.java +++ b/base/src/main/java/com/tinyengine/it/service/app/PageHistoryService.java @@ -13,12 +13,11 @@ package com.tinyengine.it.service.app; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.common.base.PageQueryVo; import com.tinyengine.it.model.dto.PublishedPageVo; import com.tinyengine.it.model.entity.PageHistory; -import org.apache.ibatis.annotations.Param; - import java.util.List; /** @@ -26,7 +25,7 @@ * * @since 2024-10-20 */ -public interface PageHistoryService { +public interface PageHistoryService extends IService { /** * 查询表t_page_history所有信息 * @@ -56,7 +55,7 @@ public interface PageHistoryService { * @param id the id * @return the integer */ - Integer deletePageHistoryById(@Param("id") Integer id); + Integer deletePageHistoryById(Integer id); /** * 根据主键id更新表t_page_history信息 diff --git a/base/src/main/java/com/tinyengine/it/service/app/PageService.java b/base/src/main/java/com/tinyengine/it/service/app/PageService.java index 56ae37ee..6373add6 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/PageService.java +++ b/base/src/main/java/com/tinyengine/it/service/app/PageService.java @@ -12,13 +12,12 @@ package com.tinyengine.it.service.app; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.model.dto.PreviewDto; import com.tinyengine.it.model.dto.PreviewParam; import com.tinyengine.it.model.entity.Page; -import org.apache.ibatis.annotations.Param; - import java.util.List; /** @@ -26,7 +25,7 @@ * * @since 2024-10-20 */ -public interface PageService { +public interface PageService extends IService { /** * 查询表t_page所有信息 * @@ -41,7 +40,7 @@ public interface PageService { * @param id the id * @return the page */ - Page queryPageById(@Param("id") Integer id); + Page queryPageById(Integer id); /** * 根据条件查询表t_page信息 @@ -57,7 +56,7 @@ public interface PageService { * @param id the id * @return the result */ - Result delPage(@Param("id") Integer id); + Result delPage(Integer id); /** * 创建页面 diff --git a/base/src/main/java/com/tinyengine/it/service/app/PageTemplateService.java b/base/src/main/java/com/tinyengine/it/service/app/PageTemplateService.java index da2405a5..080775a1 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/PageTemplateService.java +++ b/base/src/main/java/com/tinyengine/it/service/app/PageTemplateService.java @@ -12,11 +12,10 @@ package com.tinyengine.it.service.app; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.model.entity.PageTemplate; -import org.apache.ibatis.annotations.Param; - import java.util.List; /** @@ -24,7 +23,7 @@ * * @since 2024-10-20 */ -public interface PageTemplateService { +public interface PageTemplateService extends IService { /** * 查询表page_template所有信息 * @@ -40,7 +39,7 @@ public interface PageTemplateService { * @param id the id * @return the page template */ - Result queryPageTemplateById(@Param("id") Integer id); + Result queryPageTemplateById(Integer id); /** * 根据条件查询表page_template信息 @@ -56,7 +55,7 @@ public interface PageTemplateService { * @param ids id * @return the integer */ - Result deletePageTemplateByIds(@Param("ids") List ids); + Result deletePageTemplateByIds(List ids); /** * 根据主键id更新表page_template信息 diff --git a/base/src/main/java/com/tinyengine/it/service/app/TaskRecordService.java b/base/src/main/java/com/tinyengine/it/service/app/TaskRecordService.java index a260528a..bbee91a2 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/TaskRecordService.java +++ b/base/src/main/java/com/tinyengine/it/service/app/TaskRecordService.java @@ -12,10 +12,9 @@ package com.tinyengine.it.service.app; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.model.entity.TaskRecord; -import org.apache.ibatis.annotations.Param; - import java.util.List; /** @@ -23,7 +22,7 @@ * * @since 2024-10-20 */ -public interface TaskRecordService { +public interface TaskRecordService extends IService { /** * 查询表t_task_record所有信息 * @@ -37,7 +36,7 @@ public interface TaskRecordService { * @param id the id * @return the task record */ - TaskRecord queryTaskRecordById(@Param("id") Integer id); + TaskRecord queryTaskRecordById(Integer id); /** * 根据条件查询表t_task_record信息 @@ -53,7 +52,7 @@ public interface TaskRecordService { * @param id the id * @return the integer */ - Integer deleteTaskRecordById(@Param("id") Integer id); + Integer deleteTaskRecordById(Integer id); /** * 根据主键id更新表t_task_record信息 diff --git a/base/src/main/java/com/tinyengine/it/service/app/UserService.java b/base/src/main/java/com/tinyengine/it/service/app/UserService.java index e812d159..2d102be7 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/UserService.java +++ b/base/src/main/java/com/tinyengine/it/service/app/UserService.java @@ -12,10 +12,9 @@ package com.tinyengine.it.service.app; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.model.entity.User; -import org.apache.ibatis.annotations.Param; - import java.util.List; /** @@ -23,7 +22,7 @@ * * @since 2024-10-20 */ -public interface UserService { +public interface UserService extends IService { /** * 查询表t_user所有信息 * @@ -37,7 +36,7 @@ public interface UserService { * @param id the id * @return the user */ - User queryUserById(@Param("id") String id); + User queryUserById(String id); /** * 根据条件查询表t_user信息 @@ -53,7 +52,7 @@ public interface UserService { * @param id the id * @return the integer */ - Integer deleteUserById(@Param("id") String id); + Integer deleteUserById(String id); /** * 根据主键id更新表t_user信息 diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/AppExtensionServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/AppExtensionServiceImpl.java index a688766e..667bfd5e 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/AppExtensionServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/AppExtensionServiceImpl.java @@ -12,6 +12,7 @@ package com.tinyengine.it.service.app.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.exception.ExceptionEnum; import com.tinyengine.it.common.log.SystemServiceLog; @@ -21,8 +22,6 @@ import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.annotations.Param; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -34,10 +33,7 @@ */ @Service @Slf4j -public class AppExtensionServiceImpl implements AppExtensionService { - @Autowired - private AppExtensionMapper appExtensionMapper; - +public class AppExtensionServiceImpl extends ServiceImpl implements AppExtensionService { /** * 查询表t_app_extension所有数据 * @@ -46,7 +42,7 @@ public class AppExtensionServiceImpl implements AppExtensionService { @Override @SystemServiceLog(description = "应用扩展列表查询实现方法") public Result> findAllAppExtension() { - List appExtensionList = appExtensionMapper.queryAllAppExtension(); + List appExtensionList = baseMapper.queryAllAppExtension(); return Result.success(appExtensionList); } @@ -58,8 +54,8 @@ public Result> findAllAppExtension() { */ @Override @SystemServiceLog(description = "应用扩展id查询实现方法") - public AppExtension findAppExtensionById(@Param("id") Integer id) { - return appExtensionMapper.queryAppExtensionById(id); + public AppExtension findAppExtensionById(Integer id) { + return baseMapper.queryAppExtensionById(id); } /** @@ -71,7 +67,7 @@ public AppExtension findAppExtensionById(@Param("id") Integer id) { @Override @SystemServiceLog(description = "应用扩展条件查询实现方法") public List findAppExtensionByCondition(AppExtension appExtension) { - return appExtensionMapper.queryAppExtensionByCondition(appExtension); + return baseMapper.queryAppExtensionByCondition(appExtension); } /** @@ -82,10 +78,10 @@ public List findAppExtensionByCondition(AppExtension appExtension) */ @Override @SystemServiceLog(description = "应用扩展删除实现方法") - public Result deleteAppExtensionById(@Param("id") Integer id) { - AppExtension appExtension = appExtensionMapper.queryAppExtensionById(id); + public Result deleteAppExtensionById(Integer id) { + AppExtension appExtension = baseMapper.queryAppExtensionById(id); if (appExtension != null) { - appExtensionMapper.deleteAppExtensionById(id); + baseMapper.deleteAppExtensionById(id); return Result.success(appExtension); } return Result.failed(ExceptionEnum.CM009); @@ -100,9 +96,9 @@ public Result deleteAppExtensionById(@Param("id") Integer id) { @Override @SystemServiceLog(description = "应用扩展修改实现方法") public Result updateAppExtensionById(AppExtension appExtension) { - int result = appExtensionMapper.updateAppExtensionById(appExtension); + int result = baseMapper.updateAppExtensionById(appExtension); if (result == 1) { - AppExtension data = appExtensionMapper.queryAppExtensionById(appExtension.getId()); + AppExtension data = baseMapper.queryAppExtensionById(appExtension.getId()); return Result.success(data); } return Result.failed(ExceptionEnum.CM001); @@ -117,11 +113,11 @@ public Result updateAppExtensionById(AppExtension appExtension) { @Override @SystemServiceLog(description = "应用扩展创建实现方法") public Result createAppExtension(AppExtension appExtension) { - List appExtensionResult = appExtensionMapper.queryAppExtensionByCondition(appExtension); + List appExtensionResult = baseMapper.queryAppExtensionByCondition(appExtension); if (!appExtensionResult.isEmpty()) { return Result.failed(ExceptionEnum.CM003); } - int result = appExtensionMapper.createAppExtension(appExtension); + int result = baseMapper.createAppExtension(appExtension); if (result == 1) { return Result.success(appExtension); } diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/AppServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/AppServiceImpl.java index 5db38537..578887d7 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/AppServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/AppServiceImpl.java @@ -12,6 +12,7 @@ package com.tinyengine.it.service.app.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.enums.Enums; import com.tinyengine.it.common.exception.ExceptionEnum; @@ -29,13 +30,10 @@ import com.tinyengine.it.service.app.AppService; import com.tinyengine.it.service.app.I18nEntryService; import com.tinyengine.it.service.app.impl.v1.AppV1ServiceImpl; -import com.tinyengine.it.service.material.impl.BlockGroupServiceImpl; -import com.tinyengine.it.service.material.impl.BlockServiceImpl; import com.tinyengine.it.service.platform.PlatformService; import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -50,13 +48,7 @@ */ @Service @Slf4j -public class AppServiceImpl implements AppService { - /** - * The App mapper. - */ - @Autowired - private AppMapper appMapper; - +public class AppServiceImpl extends ServiceImpl implements AppService { /** * The Platform service. */ @@ -81,18 +73,6 @@ public class AppServiceImpl implements AppService { @Autowired private AppV1ServiceImpl appV1ServiceImpl; - /** - * The Block service. - */ - @Autowired - private BlockServiceImpl blockServiceImpl; - - /** - * The Block group service. - */ - @Autowired - private BlockGroupServiceImpl blockGroupServiceImpl; - /** * 查询表t_app所有数据 * @@ -100,7 +80,7 @@ public class AppServiceImpl implements AppService { */ @Override public List queryAllApp() { - return appMapper.queryAllApp(); + return baseMapper.queryAllApp(); } /** @@ -111,8 +91,8 @@ public List queryAllApp() { */ @Override @SystemServiceLog(description = "通过id查询应用实现方法") - public Result queryAppById(@Param("id") Integer id) { - App app = appMapper.queryAppById(id); + public Result queryAppById(Integer id) { + App app = baseMapper.queryAppById(id); if (app == null) { return Result.failed(ExceptionEnum.CM009); } @@ -127,7 +107,7 @@ public Result queryAppById(@Param("id") Integer id) { */ @Override public List queryAppByCondition(App app) { - return appMapper.queryAppByCondition(app); + return baseMapper.queryAppByCondition(app); } /** @@ -138,9 +118,9 @@ public List queryAppByCondition(App app) { */ @Override @SystemServiceLog(description = "应用删除实现方法") - public Result deleteAppById(@Param("id") Integer id) { - App app = appMapper.queryAppById(id); - int result = appMapper.deleteAppById(id); + public Result deleteAppById(Integer id) { + App app = baseMapper.queryAppById(id); + int result = baseMapper.deleteAppById(id); if (result < 1) { return Result.failed(ExceptionEnum.CM009); } @@ -158,17 +138,17 @@ public Result deleteAppById(@Param("id") Integer id) { public Result updateAppById(App app) { // 如果更新extend_config字段,从platform获取数据,继承非route部分 if (app.getExtendConfig() != null && !app.getExtendConfig().isEmpty()) { - App appResult = appMapper.queryAppById(app.getId()); + App appResult = baseMapper.queryAppById(app.getId()); Platform platform = platformService.queryPlatformById(appResult.getPlatformId()); Map appExtendConfig = platform.getAppExtendConfig(); appExtendConfig.remove("route"); app.getExtendConfig().putAll(appExtendConfig); } - int result = appMapper.updateAppById(app); + int result = baseMapper.updateAppById(app); if (result < 1) { return Result.failed(ExceptionEnum.CM001); } - App selectedApp = appMapper.queryAppById(app.getId()); + App selectedApp = baseMapper.queryAppById(app.getId()); return Result.success(selectedApp); } @@ -181,12 +161,12 @@ public Result updateAppById(App app) { @Override @SystemServiceLog(description = "应用创建实现方法") public Result createApp(App app) { - List appResult = appMapper.queryAppByCondition(app); + List appResult = baseMapper.queryAppByCondition(app); if (!appResult.isEmpty()) { return Result.failed(ExceptionEnum.CM003); } app.setIsPublish(false); - int result = appMapper.createApp(app); + int result = baseMapper.createApp(app); if (result < 1) { return Result.failed(ExceptionEnum.CM001); } diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/DatasourceServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/DatasourceServiceImpl.java index ecbc777e..dfbc753d 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/DatasourceServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/DatasourceServiceImpl.java @@ -12,6 +12,7 @@ package com.tinyengine.it.service.app.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.exception.ExceptionEnum; import com.tinyengine.it.mapper.DatasourceMapper; @@ -20,8 +21,6 @@ import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.annotations.Param; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -33,10 +32,7 @@ */ @Service @Slf4j -public class DatasourceServiceImpl implements DatasourceService { - @Autowired - private DatasourceMapper datasourceMapper; - +public class DatasourceServiceImpl extends ServiceImpl implements DatasourceService { /** * 根据主键id查询表t_datasource信息 * @@ -44,8 +40,8 @@ public class DatasourceServiceImpl implements DatasourceService { * @return query result */ @Override - public Datasource queryDatasourceById(@Param("id") Integer id) { - return datasourceMapper.queryDatasourceById(id); + public Datasource queryDatasourceById(Integer id) { + return baseMapper.queryDatasourceById(id); } /** @@ -56,7 +52,7 @@ public Datasource queryDatasourceById(@Param("id") Integer id) { */ @Override public List queryDatasourceByCondition(Datasource datasource) { - return datasourceMapper.queryDatasourceByCondition(datasource); + return baseMapper.queryDatasourceByCondition(datasource); } /** @@ -66,10 +62,10 @@ public List queryDatasourceByCondition(Datasource datasource) { * @return Datasource */ @Override - public Result deleteDatasourceById(@Param("id") Integer id) { + public Result deleteDatasourceById(Integer id) { Datasource sources = queryDatasourceById(id); if (sources != null) { - datasourceMapper.deleteDatasourceById(id); + baseMapper.deleteDatasourceById(id); return Result.success(sources); } return Result.failed(ExceptionEnum.CM009); @@ -83,7 +79,7 @@ public Result deleteDatasourceById(@Param("id") Integer id) { */ @Override public Result updateDatasourceById(Datasource datasource) { - int res = datasourceMapper.updateDatasourceById(datasource); + int res = baseMapper.updateDatasourceById(datasource); if (res == 1) { return Result.success(queryDatasourceById(datasource.getId())); } @@ -101,7 +97,7 @@ public Result createDatasource(Datasource datasource) { Integer appId = datasource.getApp(); String name = datasource.getName(); if (appId != 0 && String.valueOf(appId).matches("^[0-9]+$") && !name.isEmpty()) { - int res = datasourceMapper.createDatasource(datasource); + int res = baseMapper.createDatasource(datasource); if (res == 1) { int id = datasource.getId(); return Result.success(queryDatasourceById(id)); diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImpl.java index 4ade2134..f258e5d3 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImpl.java @@ -13,6 +13,7 @@ package com.tinyengine.it.service.app.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; @@ -43,7 +44,6 @@ import cn.hutool.core.bean.BeanUtil; import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.annotations.Param; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -65,12 +65,9 @@ */ @Service @Slf4j -public class I18nEntryServiceImpl implements I18nEntryService { +public class I18nEntryServiceImpl extends ServiceImpl implements I18nEntryService { private static final Logger logger = LoggerFactory.getLogger(I18nEntryServiceImpl.class); - @Autowired - private I18nEntryMapper i18nEntryMapper; - @Autowired private I18nLangMapper i18nLangMapper; @@ -88,7 +85,7 @@ public I18nEntryListResult findAllI18nEntry() { return i18nEntriesListResult; } // 获取词条列表 - List i18nEntriesList = i18nEntryMapper.queryAllI18nEntry(); + List i18nEntriesList = baseMapper.queryAllI18nEntry(); if (i18nEntriesList == null) { return i18nEntriesListResult; } @@ -154,7 +151,7 @@ public List create(OperateI18nEntries operateI18nEntries) { } List i18nEntriesList = fillParam(operateI18nEntries, langsDic); - i18nEntriesList.stream().map(entry -> i18nEntryMapper.createI18nEntry(entry)).collect(Collectors.toList()); + i18nEntriesList.stream().map(entry -> baseMapper.createI18nEntry(entry)).collect(Collectors.toList()); return i18nEntriesList; } @@ -199,7 +196,7 @@ public List bulkCreate(OperateI18nBatchEntries operateI18nBatchEntrie List i18nEntriesList = getEntriesParam(operateI18nBatchEntries); // bulkCreateEntries - i18nEntriesList.stream().map(entry -> i18nEntryMapper.createI18nEntry(entry)).collect(Collectors.toList()); + i18nEntriesList.stream().map(entry -> baseMapper.createI18nEntry(entry)).collect(Collectors.toList()); return i18nEntriesList; } @@ -260,7 +257,7 @@ public List bulkUpdate(OperateI18nEntries operateI18nEntries) { i18nEntries.setHostType(operateI18nEntries.getHostType()); i18nEntries.setHost(Integer.valueOf(operateI18nEntries.getHost())); i18nEntries.setKey(operateI18nEntries.getKey()); - List i18nEntriesList = i18nEntryMapper.queryI18nEntryByCondition(i18nEntries); + List i18nEntriesList = baseMapper.queryI18nEntryByCondition(i18nEntries); if (i18nEntriesList.isEmpty()) { return create(operateI18nEntries); } @@ -285,7 +282,7 @@ public List bulkUpdateEntries(OperateI18nEntries operateI18nEntries) List i18nEntriesList = fillParam(operateI18nEntries, langsDic); // bulkCreateEntries for (I18nEntry i18Entries : i18nEntriesList) { - i18nEntryMapper.updateByEntry(i18Entries.getContent(), i18Entries.getHost(), i18Entries.getHostType(), + baseMapper.updateByEntry(i18Entries.getContent(), i18Entries.getHost(), i18Entries.getHostType(), i18Entries.getKey(), i18Entries.getLang()); } return i18nEntriesList; @@ -306,8 +303,8 @@ public List deleteI18nEntriesByHostAndHostTypeAndKey(DeleteI18nEnt i18nEntry.setHostType(deleteI18nEntry.getHostType()); i18nEntry.setHost(Integer.valueOf(deleteI18nEntry.getHost())); i18nEntry.setKey(key); - List i18nEntries = i18nEntryMapper.queryI18nEntryByCondition(i18nEntry); - i18nEntries.stream().forEach(i18nEntriesDto -> i18nEntryMapper.deleteI18nEntryById(i18nEntriesDto.getId())); + List i18nEntries = baseMapper.queryI18nEntryByCondition(i18nEntry); + i18nEntries.stream().forEach(i18nEntriesDto -> baseMapper.deleteI18nEntryById(i18nEntriesDto.getId())); i18nEntriesList.addAll(i18nEntries); } return i18nEntriesList; @@ -392,7 +389,7 @@ public I18nEntryListResult findI18nEntryByApp(Integer host, String hostType) { return i18nEntriesListResult; } // 获取词条列表 - List i18nEntriesList = i18nEntryMapper.findI18nEntriesByHostandHostType(host, hostType); + List i18nEntriesList = baseMapper.findI18nEntriesByHostandHostType(host, hostType); if (i18nEntriesList == null) { return i18nEntriesListResult; } @@ -446,15 +443,15 @@ public FileResult bulkInsertOrUpdate(List entries) { int updateNum = 0; for (I18nEntry entry : entries) { // 查询数据库中是否存在该记录 - List i18nEntryList = i18nEntryMapper.queryI18nEntryByCondition(entry); + List i18nEntryList = baseMapper.queryI18nEntryByCondition(entry); if (i18nEntryList.isEmpty()) { // 插入新记录 - i18nEntryMapper.createI18nEntry(entry); + baseMapper.createI18nEntry(entry); addNum = addNum + 1; } else { // 更新记录 entry.setId(i18nEntryList.get(0).getId()); - i18nEntryMapper.updateI18nEntryById(entry); + baseMapper.updateI18nEntryById(entry); updateNum = updateNum + 1; } } @@ -520,8 +517,8 @@ public List parseZip(FileInfo fileInfo) throws ServiceException { * @throws ServiceException ServiceException */ @Override - public I18nEntryDto findI18nEntryById(@Param("id") Integer id) throws ServiceException { - return i18nEntryMapper.queryI18nEntryById(id); + public I18nEntryDto findI18nEntryById(Integer id) throws ServiceException { + return baseMapper.queryI18nEntryById(id); } /** @@ -533,7 +530,7 @@ public I18nEntryDto findI18nEntryById(@Param("id") Integer id) throws ServiceExc */ @Override public List findI18nEntryByCondition(I18nEntry i18nEntry) throws ServiceException { - return i18nEntryMapper.queryI18nEntryByCondition(i18nEntry); + return baseMapper.queryI18nEntryByCondition(i18nEntry); } /** @@ -544,7 +541,7 @@ public List findI18nEntryByCondition(I18nEntry i18nEntry) throws S */ @Override public Integer updateI18nEntryById(I18nEntry i18nEntry) { - return i18nEntryMapper.updateI18nEntryById(i18nEntry); + return baseMapper.updateI18nEntryById(i18nEntry); } /** diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/I18nLangServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/I18nLangServiceImpl.java index a7a36505..ec6454fd 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/I18nLangServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/I18nLangServiceImpl.java @@ -12,14 +12,13 @@ package com.tinyengine.it.service.app.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.mapper.I18nLangMapper; import com.tinyengine.it.model.entity.I18nLang; import com.tinyengine.it.service.app.I18nLangService; import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.annotations.Param; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -31,10 +30,7 @@ */ @Service @Slf4j -public class I18nLangServiceImpl implements I18nLangService { - @Autowired - private I18nLangMapper i18nLangMapper; - +public class I18nLangServiceImpl extends ServiceImpl implements I18nLangService { /** * 查询表t_i18n_lang所有数据 * @@ -42,7 +38,7 @@ public class I18nLangServiceImpl implements I18nLangService { */ @Override public List queryAllI18nLang() { - return i18nLangMapper.queryAllI18nLang(); + return baseMapper.queryAllI18nLang(); } /** @@ -52,8 +48,8 @@ public List queryAllI18nLang() { * @return query result */ @Override - public I18nLang queryI18nLangById(@Param("id") Integer id) { - return i18nLangMapper.queryI18nLangById(id); + public I18nLang queryI18nLangById(Integer id) { + return baseMapper.queryI18nLangById(id); } /** @@ -64,7 +60,7 @@ public I18nLang queryI18nLangById(@Param("id") Integer id) { */ @Override public List queryI18nLangByCondition(I18nLang i18nLang) { - return i18nLangMapper.queryI18nLangByCondition(i18nLang); + return baseMapper.queryI18nLangByCondition(i18nLang); } /** @@ -74,8 +70,8 @@ public List queryI18nLangByCondition(I18nLang i18nLang) { * @return execute success data number */ @Override - public Integer deleteI18nLangById(@Param("id") Integer id) { - return i18nLangMapper.deleteI18nLangById(id); + public Integer deleteI18nLangById(Integer id) { + return baseMapper.deleteI18nLangById(id); } /** @@ -86,7 +82,7 @@ public Integer deleteI18nLangById(@Param("id") Integer id) { */ @Override public Integer updateI18nLangById(I18nLang i18nLang) { - return i18nLangMapper.updateI18nLangById(i18nLang); + return baseMapper.updateI18nLangById(i18nLang); } /** @@ -97,6 +93,6 @@ public Integer updateI18nLangById(I18nLang i18nLang) { */ @Override public Integer createI18nLang(I18nLang i18nLang) { - return i18nLangMapper.createI18nLang(i18nLang); + return baseMapper.createI18nLang(i18nLang); } } diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/PageHistoryServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/PageHistoryServiceImpl.java index 6f2b87c6..b32d5e96 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/PageHistoryServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/PageHistoryServiceImpl.java @@ -13,6 +13,7 @@ package com.tinyengine.it.service.app.impl; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.common.base.PageQueryVo; import com.tinyengine.it.common.log.SystemServiceLog; import com.tinyengine.it.mapper.PageHistoryMapper; @@ -22,8 +23,6 @@ import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.annotations.Param; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -36,12 +35,9 @@ */ @Service @Slf4j -public class PageHistoryServiceImpl implements PageHistoryService { +public class PageHistoryServiceImpl extends ServiceImpl implements PageHistoryService { private static final String DEFAULT_PAGE_HISTORY_VERSION = "0"; - @Autowired - private PageHistoryMapper pageHistoryMapper; - /** * 查询表t_page_history所有数据 * @@ -49,7 +45,7 @@ public class PageHistoryServiceImpl implements PageHistoryService { */ @Override public List findAllPageHistory() { - return pageHistoryMapper.queryAllPageHistory(); + return baseMapper.queryAllPageHistory(); } /** @@ -60,7 +56,7 @@ public List findAllPageHistory() { */ @Override public PageHistory findPageHistoryById(Integer historyId) { - return pageHistoryMapper.queryPageHistoryById(historyId); + return baseMapper.queryPageHistoryById(historyId); } /** @@ -71,7 +67,7 @@ public PageHistory findPageHistoryById(Integer historyId) { */ @Override public List findPageHistoryByCondition(PageHistory pageHistory) { - return pageHistoryMapper.queryPageHistoryByCondition(pageHistory); + return baseMapper.queryPageHistoryByCondition(pageHistory); } /** @@ -81,8 +77,8 @@ public List findPageHistoryByCondition(PageHistory pageHistory) { * @return execute success data number */ @Override - public Integer deletePageHistoryById(@Param("id") Integer id) { - return pageHistoryMapper.deletePageHistoryById(id); + public Integer deletePageHistoryById(Integer id) { + return baseMapper.deletePageHistoryById(id); } /** @@ -93,7 +89,7 @@ public Integer deletePageHistoryById(@Param("id") Integer id) { */ @Override public Integer updatePageHistoryById(PageHistory pageHistory) { - return pageHistoryMapper.updatePageHistoryById(pageHistory); + return baseMapper.updatePageHistoryById(pageHistory); } /** @@ -106,7 +102,7 @@ public Integer updatePageHistoryById(PageHistory pageHistory) { @SystemServiceLog(description = "创建页面历史记录") public Integer createPageHistory(PageHistory pageHistory) { pageHistory.setIsPublished(true); - return pageHistoryMapper.createPageHistory(pageHistory); + return baseMapper.createPageHistory(pageHistory); } /** @@ -118,13 +114,13 @@ public Integer createPageHistory(PageHistory pageHistory) { */ @Override public List findPageHistoryByName(String name, Integer app) { - return pageHistoryMapper.queryPageHistoryByName(name, app); + return baseMapper.queryPageHistoryByName(name, app); } @Override public IPage findLatestPublishPage(PageQueryVo pageQueryVo) { PublishedPageVo queryData = pageQueryVo.getData(); - return pageHistoryMapper.findLatestPublishPage(pageQueryVo.getPage(), queryData); + return baseMapper.findLatestPublishPage(pageQueryVo.getPage(), queryData); } /** @@ -136,7 +132,7 @@ public IPage findLatestPublishPage(PageQueryVo */ @Override public String selectMaxVersionOfPageHistory(String name, Integer app) { - List pageHistories = pageHistoryMapper.queryPageHistoryByName(name, app); + List pageHistories = baseMapper.queryPageHistoryByName(name, app); if (CollectionUtils.isEmpty(pageHistories)) { return DEFAULT_PAGE_HISTORY_VERSION; } diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/PageServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/PageServiceImpl.java index 620fbfc9..9659b671 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/PageServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/PageServiceImpl.java @@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.context.LoginUserContext; import com.tinyengine.it.common.enums.Enums; @@ -50,7 +51,6 @@ import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.annotations.Param; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationEventPublisher; @@ -71,13 +71,7 @@ */ @Service @Slf4j -public class PageServiceImpl implements PageService { - /** - * The Page mapper. - */ - @Autowired - private PageMapper pageMapper; - +public class PageServiceImpl extends ServiceImpl implements PageService { /** * The App service. */ @@ -159,7 +153,7 @@ public class PageServiceImpl implements PageService { @Override @SystemServiceLog(description = "通过appId查询page所有数据实现方法") public List queryAllPage(Integer aid) { - List pageList = pageMapper.queryPageByApp(aid); + List pageList = baseMapper.queryPageByApp(aid); if (pageList == null) { return null; } @@ -180,8 +174,8 @@ public List queryAllPage(Integer aid) { */ @Override @SystemServiceLog(description = "通过Id查询page数据实现方法") - public Page queryPageById(@Param("id") Integer id) { - Page pageInfo = pageMapper.queryPageById(id); + public Page queryPageById(Integer id) { + Page pageInfo = baseMapper.queryPageById(id); // 获取schemaMeta进行获取materialHistory中的framework进行判断 String framework = appMapper.queryAppById(pageInfo.getApp()).getFramework(); if (framework.isEmpty()) { @@ -206,7 +200,7 @@ public Page queryPageById(@Param("id") Integer id) { @Override @SystemServiceLog(description = "通过条件查询page数据实现方法") public List queryPageByCondition(Page page) { - return pageMapper.queryPageByCondition(page); + return baseMapper.queryPageByCondition(page); } /** @@ -226,8 +220,8 @@ public Result delPage(Integer id) { return del(id); } // 删除 - Page pageResult = pageMapper.queryPageById(id); - int result = pageMapper.deletePageById(id); + Page pageResult = baseMapper.queryPageById(id); + int result = baseMapper.deletePageById(id); if (result < 1) { return Result.failed(ExceptionEnum.CM001); } @@ -261,7 +255,7 @@ public Result createPage(Page page) { if (!pageResult.isEmpty()) { return Result.failed(ExceptionEnum.CM003); } - int result = pageMapper.createPage(page); + int result = baseMapper.createPage(page); if (result < 1) { return Result.failed(ExceptionEnum.CM001); } @@ -299,7 +293,7 @@ private List queryPages(Page page) { Page pageParam = new Page(); pageParam.setName(page.getName()); pageParam.setApp(page.getApp()); - return pageMapper.queryPageByCondition(pageParam); + return baseMapper.queryPageByCondition(pageParam); } /** @@ -328,7 +322,7 @@ public Result createFolder(Page page) { if (!pageResult.isEmpty()) { return Result.failed(ExceptionEnum.CM003); } - int result = pageMapper.createPage(page); + int result = baseMapper.createPage(page); if (result < 1) { return Result.failed(ExceptionEnum.CM001); } @@ -451,7 +445,7 @@ public boolean setAppHomePage(int appId, int pageId) { // 执行页面更新操作 private Result performUpdate(Page page) { - int result = pageMapper.updatePageById(page); + int result = baseMapper.updatePageById(page); if (result < 1) { return Result.failed(ExceptionEnum.CM001); } @@ -472,7 +466,7 @@ public Result getDepth(String parentId) { return Result.success(0); } // getFolder 获取父类信息 - Page parentInfo = pageMapper.queryPageById(parent); + Page parentInfo = baseMapper.queryPageById(parent); int depth = parentInfo.getDepth(); return Result.success(depth); } @@ -525,7 +519,7 @@ public Result del(Integer id) { // 这里只需要判断page表中是否存在子节点即可 Page page = new Page(); page.setParentId(id.toString()); - List subFolders = pageMapper.queryPageByCondition(page); + List subFolders = baseMapper.queryPageByCondition(page); if (!subFolders.isEmpty()) { return Result.failed("此文件夹不是空文件夹,不能删除!"); } @@ -547,12 +541,12 @@ public Result checkDelete(Integer id) { user.setId(loginUserContext.getLoginUserId()); user.setUsername(loginUserContext.getLoginUserId()); } - Page page = pageMapper.queryPageById(id); + Page page = baseMapper.queryPageById(id); User occupier = page.getOccupier(); // 如果当前页面没人占用 或者是自己占用 可以删除该页面 if (iCanDoIt(occupier, user)) { - pageMapper.deletePageById(id); + baseMapper.deletePageById(id); return Result.success(page); } @@ -595,7 +589,7 @@ public boolean protectDefaultPage(Page page) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", subPageId).set("is_default", false); - int result = pageMapper.update(null, updateWrapper); + int result = baseMapper.update(null, updateWrapper); if (result < 1) { return false; @@ -610,7 +604,7 @@ public boolean protectDefaultPage(Page page) { * @return parentId the parentId */ private String getParentPage(String parentId) { - Page page = pageMapper.queryPageById(Integer.parseInt(parentId)); + Page page = baseMapper.queryPageById(Integer.parseInt(parentId)); if (page.getIsPage() || "0".equals(page.getParentId())) { return parentId; } @@ -631,7 +625,7 @@ private int getSubPage(String parentId) { // 查找子页面列表 Page pageParam = new Page(); pageParam.setParentId(parentId); - List pageList = pageMapper.queryPageByCondition(pageParam); + List pageList = baseMapper.queryPageByCondition(pageParam); // 遍历页面列表,查找默认的子页面 for (Page page : pageList) { @@ -693,7 +687,7 @@ public Result checkUpdate(Page page) { if (!loginUserContext.getLoginUserId().equals(page.getOccupierBy())) { Result.failed("The current page is being edited by" + page.getOccupierBy()); } - pageMapper.updatePageById(page); + baseMapper.updatePageById(page); // 修改完返回页面还是返回dto,为了下次修改每次参数属性一致 Page pagesResult = queryPageById(page.getId()); return Result.success(pagesResult); @@ -779,7 +773,7 @@ public List getChildrenId(List pids) { // 构建查询条件 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("parent_id", pids); - List children = pageMapper.selectList(queryWrapper); + List children = baseMapper.selectList(queryWrapper); if (children.isEmpty()) { return new ArrayList<>(); } diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/PageTemplateServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/PageTemplateServiceImpl.java index 27ecd151..8e852af5 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/PageTemplateServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/PageTemplateServiceImpl.java @@ -12,6 +12,7 @@ package com.tinyengine.it.service.app.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.exception.ExceptionEnum; import com.tinyengine.it.common.exception.ServiceException; @@ -22,8 +23,6 @@ import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.annotations.Param; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -36,10 +35,7 @@ */ @Service @Slf4j -public class PageTemplateServiceImpl implements PageTemplateService { - @Autowired - private PageTemplateMapper pageTemplateMapper; - +public class PageTemplateServiceImpl extends ServiceImpl implements PageTemplateService { /** * 查询表page_template所有数据 * @@ -53,10 +49,10 @@ public class PageTemplateServiceImpl implements PageTemplateService { public Result> queryAllPageTemplate(String name, String type) throws ServiceException { List pageTemplates = new ArrayList<>(); if (name == null || name.isEmpty()) { - pageTemplates = pageTemplateMapper.queryAllPageTemplate(type); + pageTemplates = baseMapper.queryAllPageTemplate(type); return Result.success(pageTemplates); } - pageTemplates = pageTemplateMapper.queryPageTemplateByName(name, type); + pageTemplates = baseMapper.queryPageTemplateByName(name, type); return Result.success(pageTemplates); } @@ -69,8 +65,8 @@ public Result> queryAllPageTemplate(String name, String type) */ @Override @SystemServiceLog(description = "根据id获取页面模版详情实现方法") - public Result queryPageTemplateById(@Param("id") Integer id) throws ServiceException { - PageTemplate pageTemplate = pageTemplateMapper.queryPageTemplateById(id); + public Result queryPageTemplateById(Integer id) throws ServiceException { + PageTemplate pageTemplate = baseMapper.queryPageTemplateById(id); return Result.success(pageTemplate); } @@ -84,7 +80,7 @@ public Result queryPageTemplateById(@Param("id") Integer id) throw @Override @SystemServiceLog(description = "获取页面模版条件查询实现方法") public List queryPageTemplateByCondition(PageTemplate pageTemplate) throws ServiceException { - return pageTemplateMapper.queryPageTemplateByCondition(pageTemplate); + return baseMapper.queryPageTemplateByCondition(pageTemplate); } /** @@ -96,11 +92,11 @@ public List queryPageTemplateByCondition(PageTemplate pageTemplate */ @Override @SystemServiceLog(description = "批量删除页面模版实现方法") - public Result deletePageTemplateByIds(@Param("ids") List ids) throws ServiceException { + public Result deletePageTemplateByIds(List ids) throws ServiceException { if (ids.isEmpty()) { return Result.failed(ExceptionEnum.CM002); } - Integer result = pageTemplateMapper.deletePageTemplateByIds(ids); + Integer result = baseMapper.deletePageTemplateByIds(ids); if (result != ids.size()) { return Result.failed(ExceptionEnum.CM001); } @@ -115,7 +111,7 @@ public Result deletePageTemplateByIds(@Param("ids") List ids) */ @Override public Integer updatePageTemplateById(PageTemplate pageTemplate) { - return pageTemplateMapper.updatePageTemplateById(pageTemplate); + return baseMapper.updatePageTemplateById(pageTemplate); } /** @@ -130,15 +126,15 @@ public Integer updatePageTemplateById(PageTemplate pageTemplate) { public Result createPageTemplate(PageTemplate pageTemplate) throws ServiceException { PageTemplate queryPageTemplate = new PageTemplate(); queryPageTemplate.setName(pageTemplate.getName()); - List pageTemplateResult = pageTemplateMapper.queryPageTemplateByCondition(queryPageTemplate); + List pageTemplateResult = baseMapper.queryPageTemplateByCondition(queryPageTemplate); if (!pageTemplateResult.isEmpty()) { return Result.failed(ExceptionEnum.CM003); } - int result = pageTemplateMapper.createPageTemplate(pageTemplate); + int result = baseMapper.createPageTemplate(pageTemplate); if (result < 1) { return Result.failed(ExceptionEnum.CM001); } - PageTemplate templateResult = pageTemplateMapper.queryPageTemplateById(pageTemplate.getId()); + PageTemplate templateResult = baseMapper.queryPageTemplateById(pageTemplate.getId()); return Result.success(templateResult); } } diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/TaskRecordServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/TaskRecordServiceImpl.java index b4394766..678926cf 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/TaskRecordServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/TaskRecordServiceImpl.java @@ -12,14 +12,13 @@ package com.tinyengine.it.service.app.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.mapper.TaskRecordMapper; import com.tinyengine.it.model.entity.TaskRecord; import com.tinyengine.it.service.app.TaskRecordService; import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.annotations.Param; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -31,10 +30,7 @@ */ @Service @Slf4j -public class TaskRecordServiceImpl implements TaskRecordService { - @Autowired - private TaskRecordMapper taskRecordMapper; - +public class TaskRecordServiceImpl extends ServiceImpl implements TaskRecordService { /** * 查询表t_task_record所有数据 * @@ -42,7 +38,7 @@ public class TaskRecordServiceImpl implements TaskRecordService { */ @Override public List queryAllTaskRecord() { - return taskRecordMapper.queryAllTaskRecord(); + return baseMapper.queryAllTaskRecord(); } /** @@ -52,8 +48,8 @@ public List queryAllTaskRecord() { * @return query result */ @Override - public TaskRecord queryTaskRecordById(@Param("id") Integer id) { - return taskRecordMapper.queryTaskRecordById(id); + public TaskRecord queryTaskRecordById(Integer id) { + return baseMapper.queryTaskRecordById(id); } /** @@ -64,7 +60,7 @@ public TaskRecord queryTaskRecordById(@Param("id") Integer id) { */ @Override public List queryTaskRecordByCondition(TaskRecord taskRecord) { - return taskRecordMapper.queryTaskRecordByCondition(taskRecord); + return baseMapper.queryTaskRecordByCondition(taskRecord); } /** @@ -74,8 +70,8 @@ public List queryTaskRecordByCondition(TaskRecord taskRecord) { * @return execute success data number */ @Override - public Integer deleteTaskRecordById(@Param("id") Integer id) { - return taskRecordMapper.deleteTaskRecordById(id); + public Integer deleteTaskRecordById(Integer id) { + return baseMapper.deleteTaskRecordById(id); } /** @@ -86,7 +82,7 @@ public Integer deleteTaskRecordById(@Param("id") Integer id) { */ @Override public Integer updateTaskRecordById(TaskRecord taskRecord) { - return taskRecordMapper.updateTaskRecordById(taskRecord); + return baseMapper.updateTaskRecordById(taskRecord); } /** @@ -97,6 +93,6 @@ public Integer updateTaskRecordById(TaskRecord taskRecord) { */ @Override public Integer createTaskRecord(TaskRecord taskRecord) { - return taskRecordMapper.createTaskRecord(taskRecord); + return baseMapper.createTaskRecord(taskRecord); } } diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/UserServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/UserServiceImpl.java index d247c784..cca22b0c 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/UserServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/UserServiceImpl.java @@ -12,13 +12,13 @@ package com.tinyengine.it.service.app.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.mapper.UserMapper; import com.tinyengine.it.model.entity.User; import com.tinyengine.it.service.app.UserService; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -30,10 +30,7 @@ */ @Service @Slf4j -public class UserServiceImpl implements UserService { - @Autowired - private UserMapper userMapper; - +public class UserServiceImpl extends ServiceImpl implements UserService { /** * 查询表t_user所有数据 * @@ -41,7 +38,7 @@ public class UserServiceImpl implements UserService { */ @Override public List queryAllUser() { - return userMapper.queryAllUser(); + return baseMapper.queryAllUser(); } /** @@ -52,7 +49,7 @@ public List queryAllUser() { */ @Override public User queryUserById(String id) { - return userMapper.queryUserById(id); + return baseMapper.queryUserById(id); } /** @@ -63,7 +60,7 @@ public User queryUserById(String id) { */ @Override public List queryUserByCondition(User user) { - return userMapper.queryUserByCondition(user); + return baseMapper.queryUserByCondition(user); } /** @@ -74,7 +71,7 @@ public List queryUserByCondition(User user) { */ @Override public Integer deleteUserById(String id) { - return userMapper.deleteUserById(id); + return baseMapper.deleteUserById(id); } /** @@ -85,7 +82,7 @@ public Integer deleteUserById(String id) { */ @Override public Integer updateUserById(User user) { - return userMapper.updateUserById(user); + return baseMapper.updateUserById(user); } /** @@ -96,6 +93,6 @@ public Integer updateUserById(User user) { */ @Override public Integer createUser(User user) { - return userMapper.createUser(user); + return baseMapper.createUser(user); } } diff --git a/base/src/main/java/com/tinyengine/it/service/material/BlockGroupService.java b/base/src/main/java/com/tinyengine/it/service/material/BlockGroupService.java index bf6d321c..c9fea682 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/BlockGroupService.java +++ b/base/src/main/java/com/tinyengine/it/service/material/BlockGroupService.java @@ -12,12 +12,11 @@ package com.tinyengine.it.service.material; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.model.dto.BlockGroupDto; import com.tinyengine.it.model.entity.BlockGroup; -import org.apache.ibatis.annotations.Param; - import java.util.List; /** @@ -25,7 +24,7 @@ * * @since 2024-10-20 */ -public interface BlockGroupService { +public interface BlockGroupService extends IService { /** * 查询表t_block_group所有信息 * @@ -39,7 +38,7 @@ public interface BlockGroupService { * @param id the id * @return the block group dto */ - BlockGroup findBlockGroupById(@Param("id") Integer id); + BlockGroup findBlockGroupById(Integer id); /** * 根据条件查询表t_block_group信息 @@ -55,7 +54,7 @@ public interface BlockGroupService { * @param id the id * @return the integer */ - Integer deleteBlockGroupById(@Param("id") Integer id); + Integer deleteBlockGroupById(Integer id); /** * 根据主键id更新表t_block_group信息 diff --git a/base/src/main/java/com/tinyengine/it/service/material/BlockHistoryService.java b/base/src/main/java/com/tinyengine/it/service/material/BlockHistoryService.java index 42a43382..9d22a6ad 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/BlockHistoryService.java +++ b/base/src/main/java/com/tinyengine/it/service/material/BlockHistoryService.java @@ -12,10 +12,9 @@ package com.tinyengine.it.service.material; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.model.entity.BlockHistory; -import org.apache.ibatis.annotations.Param; - import java.util.List; /** @@ -23,7 +22,7 @@ * * @since 2024-10-20 */ -public interface BlockHistoryService { +public interface BlockHistoryService extends IService { /** * 查询表t_block_history所有信息 * @@ -37,7 +36,7 @@ public interface BlockHistoryService { * @param id the id * @return the block history */ - BlockHistory findBlockHistoryById(@Param("id") Integer id); + BlockHistory findBlockHistoryById(Integer id); /** * 根据条件查询表t_block_history信息 @@ -53,7 +52,7 @@ public interface BlockHistoryService { * @param id the id * @return the integer */ - Integer deleteBlockHistoryById(@Param("id") Integer id); + Integer deleteBlockHistoryById(Integer id); /** * 根据主键id更新表t_block_history信息 diff --git a/base/src/main/java/com/tinyengine/it/service/material/BlockService.java b/base/src/main/java/com/tinyengine/it/service/material/BlockService.java index 49f13f45..efc62c24 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/BlockService.java +++ b/base/src/main/java/com/tinyengine/it/service/material/BlockService.java @@ -13,6 +13,7 @@ package com.tinyengine.it.service.material; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.model.dto.BlockBuildDto; import com.tinyengine.it.model.dto.BlockDto; @@ -22,8 +23,6 @@ import com.tinyengine.it.model.entity.Block; import com.tinyengine.it.model.entity.User; -import org.apache.ibatis.annotations.Param; - import java.util.List; import java.util.Map; @@ -32,7 +31,7 @@ * * @since 2024-10-20 */ -public interface BlockService { +public interface BlockService extends IService { /** * 查询表t_block所有信息 * @@ -46,7 +45,7 @@ public interface BlockService { * @param id the id * @return the BlockDto */ - BlockDto queryBlockById(@Param("id") Integer id); + BlockDto queryBlockById(Integer id); /** * 根据条件查询表t_block信息 @@ -62,7 +61,7 @@ public interface BlockService { * @param id the id * @return the integer */ - Integer deleteBlockById(@Param("id") Integer id); + Integer deleteBlockById(Integer id); /** * 根据主键id更新表t_block信息 diff --git a/base/src/main/java/com/tinyengine/it/service/material/BusinessCategoryService.java b/base/src/main/java/com/tinyengine/it/service/material/BusinessCategoryService.java index 10330c7b..95b51c4b 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/BusinessCategoryService.java +++ b/base/src/main/java/com/tinyengine/it/service/material/BusinessCategoryService.java @@ -12,10 +12,9 @@ package com.tinyengine.it.service.material; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.model.entity.BusinessCategory; -import org.apache.ibatis.annotations.Param; - import java.util.List; /** @@ -23,7 +22,7 @@ * * @since 2024-10-20 */ -public interface BusinessCategoryService { +public interface BusinessCategoryService extends IService { /** * 查询表t_business_category所有信息 * @@ -37,7 +36,7 @@ public interface BusinessCategoryService { * @param id the id * @return the business category */ - BusinessCategory queryBusinessCategoryById(@Param("id") Integer id); + BusinessCategory queryBusinessCategoryById(Integer id); /** * 根据条件查询表t_business_category信息 @@ -53,7 +52,7 @@ public interface BusinessCategoryService { * @param id the id * @return the integer */ - Integer deleteBusinessCategoryById(@Param("id") Integer id); + Integer deleteBusinessCategoryById(Integer id); /** * 根据主键id更新表t_business_category信息 diff --git a/base/src/main/java/com/tinyengine/it/service/material/ComponentLibraryService.java b/base/src/main/java/com/tinyengine/it/service/material/ComponentLibraryService.java index 71f44294..a32153ec 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/ComponentLibraryService.java +++ b/base/src/main/java/com/tinyengine/it/service/material/ComponentLibraryService.java @@ -12,11 +12,10 @@ package com.tinyengine.it.service.material; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.model.entity.ComponentLibrary; -import org.apache.ibatis.annotations.Param; - import java.util.List; /** @@ -24,7 +23,7 @@ * * @since 2025-4-02 */ -public interface ComponentLibraryService { +public interface ComponentLibraryService extends IService { /** * 查询表t_component_library所有信息 * @@ -38,7 +37,7 @@ public interface ComponentLibraryService { * @param id the id * @return the material */ - Result queryComponentLibraryById(@Param("id") Integer id); + Result queryComponentLibraryById(Integer id); /** * 根据条件查询表t_component_library信息 @@ -54,7 +53,7 @@ public interface ComponentLibraryService { * @param id the id * @return the integer */ - Result deleteComponentLibraryById(@Param("id") Integer id); + Result deleteComponentLibraryById(Integer id); /** * 根据主键id更新表t_component_library信息 diff --git a/base/src/main/java/com/tinyengine/it/service/material/ComponentService.java b/base/src/main/java/com/tinyengine/it/service/material/ComponentService.java index 354abbd9..f0fd434e 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/ComponentService.java +++ b/base/src/main/java/com/tinyengine/it/service/material/ComponentService.java @@ -12,6 +12,7 @@ package com.tinyengine.it.service.material; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.model.dto.BundleDto; import com.tinyengine.it.model.dto.BundleResultDto; @@ -19,7 +20,6 @@ import com.tinyengine.it.model.dto.FileResult; import com.tinyengine.it.model.entity.Component; -import org.apache.ibatis.annotations.Param; import org.springframework.web.multipart.MultipartFile; import java.util.List; @@ -29,7 +29,7 @@ * * @since 2024-10-20 */ -public interface ComponentService { +public interface ComponentService extends IService { /** * 查询表t_component所有信息 * @@ -43,7 +43,7 @@ public interface ComponentService { * @param id the id * @return the component */ - Component findComponentById(@Param("id") Integer id); + Component findComponentById(Integer id); /** * 根据条件查询表t_component信息 @@ -59,7 +59,7 @@ public interface ComponentService { * @param id the id * @return the integer */ - Integer deleteComponentById(@Param("id") Integer id); + Integer deleteComponentById(Integer id); /** * 根据主键id更新表t_component信息 diff --git a/base/src/main/java/com/tinyengine/it/service/material/MaterialHistoryService.java b/base/src/main/java/com/tinyengine/it/service/material/MaterialHistoryService.java index 54a508c6..7ad562f3 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/MaterialHistoryService.java +++ b/base/src/main/java/com/tinyengine/it/service/material/MaterialHistoryService.java @@ -12,11 +12,10 @@ package com.tinyengine.it.service.material; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.model.entity.MaterialHistory; -import org.apache.ibatis.annotations.Param; - import java.util.List; /** @@ -24,7 +23,7 @@ * * @since 2024-10-20 */ -public interface MaterialHistoryService { +public interface MaterialHistoryService extends IService { /** * 查询表t_material_history所有信息 * @@ -38,7 +37,7 @@ public interface MaterialHistoryService { * @param id the id * @return the material history */ - Result findMaterialHistoryById(@Param("id") Integer id); + Result findMaterialHistoryById(Integer id); /** * 根据条件查询表t_material_history信息 @@ -54,7 +53,7 @@ public interface MaterialHistoryService { * @param id the id * @return the integer */ - Result deleteMaterialHistoryById(@Param("id") Integer id); + Result deleteMaterialHistoryById(Integer id); /** * 根据主键id更新表t_material_history信息 diff --git a/base/src/main/java/com/tinyengine/it/service/material/MaterialService.java b/base/src/main/java/com/tinyengine/it/service/material/MaterialService.java index 7adf7792..bb55c9c1 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/MaterialService.java +++ b/base/src/main/java/com/tinyengine/it/service/material/MaterialService.java @@ -12,11 +12,10 @@ package com.tinyengine.it.service.material; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.model.entity.Material; -import org.apache.ibatis.annotations.Param; - import java.util.List; /** @@ -24,7 +23,7 @@ * * @since 2024-10-20 */ -public interface MaterialService { +public interface MaterialService extends IService { /** * 查询表t_material所有信息 * @@ -38,7 +37,7 @@ public interface MaterialService { * @param id the id * @return the material */ - Result queryMaterialById(@Param("id") Integer id); + Result queryMaterialById(Integer id); /** * 根据条件查询表t_material信息 @@ -54,7 +53,7 @@ public interface MaterialService { * @param id the id * @return the integer */ - Result deleteMaterialById(@Param("id") Integer id); + Result deleteMaterialById(Integer id); /** * 根据主键id更新表t_material信息 diff --git a/base/src/main/java/com/tinyengine/it/service/material/TaskRecordService.java b/base/src/main/java/com/tinyengine/it/service/material/TaskRecordService.java index 351356c1..6d791c82 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/TaskRecordService.java +++ b/base/src/main/java/com/tinyengine/it/service/material/TaskRecordService.java @@ -12,10 +12,9 @@ package com.tinyengine.it.service.material; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.model.entity.TaskRecord; -import org.apache.ibatis.annotations.Param; - import java.util.List; /** @@ -26,14 +25,14 @@ * @author zhangjuncao * @since 2024-10-17 */ -public interface TaskRecordService { +public interface TaskRecordService extends IService { /** * 根据主键id查询表task_record信息 * * @param id id * @return the task record */ - TaskRecord queryTaskRecordById(@Param("id") Integer id); + TaskRecord queryTaskRecordById(Integer id); /** * 获取任务状态 diff --git a/base/src/main/java/com/tinyengine/it/service/material/impl/BlockGroupServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/material/impl/BlockGroupServiceImpl.java index dfd9650f..e5ee1f94 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/impl/BlockGroupServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/material/impl/BlockGroupServiceImpl.java @@ -12,6 +12,7 @@ package com.tinyengine.it.service.material.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.context.LoginUserContext; import com.tinyengine.it.common.enums.Enums; @@ -28,7 +29,6 @@ import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -43,10 +43,7 @@ */ @Service @Slf4j -public class BlockGroupServiceImpl implements BlockGroupService { - @Autowired - private BlockGroupMapper blockGroupMapper; - +public class BlockGroupServiceImpl extends ServiceImpl implements BlockGroupService { @Autowired private BlockCarriersRelationMapper blockCarriersRelationMapper; @@ -63,7 +60,7 @@ public class BlockGroupServiceImpl implements BlockGroupService { */ @Override public List findAllBlockGroup() { - return blockGroupMapper.queryAllBlockGroup(); + return baseMapper.queryAllBlockGroup(); } /** @@ -73,8 +70,8 @@ public List findAllBlockGroup() { * @return block group */ @Override - public BlockGroup findBlockGroupById(@Param("id") Integer id) { - BlockGroup blockGroupResult = blockGroupMapper.queryBlockGroupAndBlockById(id, null, + public BlockGroup findBlockGroupById(Integer id) { + BlockGroup blockGroupResult = baseMapper.queryBlockGroupAndBlockById(id, null, loginUserContext.getLoginUserId()); // 对查询的结果的区块赋值current_version if (blockGroupResult == null || blockGroupResult.getBlocks().isEmpty()) { @@ -104,7 +101,7 @@ public BlockGroup findBlockGroupById(@Param("id") Integer id) { */ @Override public List findBlockGroupByCondition(BlockGroup blockGroup) { - return blockGroupMapper.queryBlockGroupByCondition(blockGroup); + return baseMapper.queryBlockGroupByCondition(blockGroup); } /** @@ -114,8 +111,8 @@ public List findBlockGroupByCondition(BlockGroup blockGroup) { * @return delete number */ @Override - public Integer deleteBlockGroupById(@Param("id") Integer id) { - return blockGroupMapper.deleteBlockGroupById(id); + public Integer deleteBlockGroupById(Integer id) { + return baseMapper.deleteBlockGroupById(id); } /** @@ -141,7 +138,7 @@ public Integer updateBlockGroupById(BlockGroup blockGroup) { blockCarriersRelationMapper.deleteBlockCarriersRelation(blockGroup.getId(), hostType, null); // 删除区块分组与区块关系 blockGroupBlockMapper.deleteBlockGroupBlockByGroupId(blockGroup.getId()); - return blockGroupMapper.updateBlockGroupById(blockGroup); + return baseMapper.updateBlockGroupById(blockGroup); } // 处理参数分组区块 List blockIds = blockList.stream().map(Block::getId).collect(Collectors.toList()); @@ -160,7 +157,7 @@ public Integer updateBlockGroupById(BlockGroup blockGroup) { if (result > 0) { blockCarriersRelationMapper.deleteBlockCarriersRelation(blockGroup.getId(), hostType, result); } - return blockGroupMapper.updateBlockGroupById(blockGroup); + return baseMapper.updateBlockGroupById(blockGroup); } /** @@ -171,9 +168,9 @@ public Integer updateBlockGroupById(BlockGroup blockGroup) { */ @Override public Result createBlockGroup(BlockGroup blockGroup) { - List blockGroupsList = blockGroupMapper.queryBlockGroupByCondition(blockGroup); + List blockGroupsList = baseMapper.queryBlockGroupByCondition(blockGroup); if (blockGroupsList.isEmpty()) { - blockGroupMapper.createBlockGroup(blockGroup); + baseMapper.createBlockGroup(blockGroup); } else { return Result.failed(ExceptionEnum.CM003); } @@ -202,15 +199,15 @@ public List getBlockGroupByIdsOrAppId(List ids, Integer app BlockGroup blockGroup = new BlockGroup(); if (ids != null) { for (int blockgroupId : ids) { - blockGroup = blockGroupMapper.queryBlockGroupAndBlockById(blockgroupId, blockCreatedBy, groupCreatedBy); + blockGroup = baseMapper.queryBlockGroupAndBlockById(blockgroupId, blockCreatedBy, groupCreatedBy); blockGroupsListResult.add(blockGroup); } } if (appId != null) { - blockGroupsListResult = blockGroupMapper.queryBlockGroupByAppId(appId, blockCreatedBy, groupCreatedBy); + blockGroupsListResult = baseMapper.queryBlockGroupByAppId(appId, blockCreatedBy, groupCreatedBy); } if (ids == null && appId == null) { - blockGroupsListResult = blockGroupMapper.queryAllBlockGroupAndBlock(blockCreatedBy, groupCreatedBy); + blockGroupsListResult = baseMapper.queryAllBlockGroupAndBlock(blockCreatedBy, groupCreatedBy); } if (blockGroupsListResult.isEmpty() || blockGroupsListResult.get(0).getId() == null) { diff --git a/base/src/main/java/com/tinyengine/it/service/material/impl/BlockHistoryServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/material/impl/BlockHistoryServiceImpl.java index b19424f2..f1225bbb 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/impl/BlockHistoryServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/material/impl/BlockHistoryServiceImpl.java @@ -12,14 +12,13 @@ package com.tinyengine.it.service.material.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.mapper.BlockHistoryMapper; import com.tinyengine.it.model.entity.BlockHistory; import com.tinyengine.it.service.material.BlockHistoryService; import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.annotations.Param; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -31,10 +30,7 @@ */ @Service @Slf4j -public class BlockHistoryServiceImpl implements BlockHistoryService { - @Autowired - private BlockHistoryMapper blockHistoryMapper; - +public class BlockHistoryServiceImpl extends ServiceImpl implements BlockHistoryService { /** * 查询表t_block_history所有数据 * @@ -42,7 +38,7 @@ public class BlockHistoryServiceImpl implements BlockHistoryService { */ @Override public List findAllBlockHistory() { - return blockHistoryMapper.queryAllBlockHistory(); + return baseMapper.queryAllBlockHistory(); } /** @@ -52,8 +48,8 @@ public List findAllBlockHistory() { * @return block history */ @Override - public BlockHistory findBlockHistoryById(@Param("id") Integer id) { - return blockHistoryMapper.queryBlockHistoryById(id); + public BlockHistory findBlockHistoryById(Integer id) { + return baseMapper.queryBlockHistoryById(id); } /** @@ -64,7 +60,7 @@ public BlockHistory findBlockHistoryById(@Param("id") Integer id) { */ @Override public List findBlockHistoryByCondition(BlockHistory blockHistory) { - return blockHistoryMapper.queryBlockHistoryByCondition(blockHistory); + return baseMapper.queryBlockHistoryByCondition(blockHistory); } /** @@ -74,8 +70,8 @@ public List findBlockHistoryByCondition(BlockHistory blockHistory) * @return execute success data number */ @Override - public Integer deleteBlockHistoryById(@Param("id") Integer id) { - return blockHistoryMapper.deleteBlockHistoryById(id); + public Integer deleteBlockHistoryById(Integer id) { + return baseMapper.deleteBlockHistoryById(id); } /** @@ -86,7 +82,7 @@ public Integer deleteBlockHistoryById(@Param("id") Integer id) { */ @Override public Integer updateBlockHistoryById(BlockHistory blockHistory) { - return blockHistoryMapper.updateBlockHistoryById(blockHistory); + return baseMapper.updateBlockHistoryById(blockHistory); } /** @@ -97,6 +93,6 @@ public Integer updateBlockHistoryById(BlockHistory blockHistory) { */ @Override public Integer createBlockHistory(BlockHistory blockHistory) { - return blockHistoryMapper.createBlockHistory(blockHistory); + return baseMapper.createBlockHistory(blockHistory); } } diff --git a/base/src/main/java/com/tinyengine/it/service/material/impl/BlockServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/material/impl/BlockServiceImpl.java index e35e3c41..20191322 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/impl/BlockServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/material/impl/BlockServiceImpl.java @@ -16,6 +16,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -50,7 +51,6 @@ import cn.hutool.core.bean.BeanUtil; import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.annotations.Param; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -76,10 +76,7 @@ */ @Service @Slf4j -public class BlockServiceImpl implements BlockService { - @Autowired - private BlockMapper blockMapper; - +public class BlockServiceImpl extends ServiceImpl implements BlockService { @Autowired private UserMapper userMapper; @@ -111,7 +108,7 @@ public class BlockServiceImpl implements BlockService { */ @Override public List queryAllBlock() { - return blockMapper.queryAllBlock(); + return baseMapper.queryAllBlock(); } /** @@ -121,8 +118,8 @@ public List queryAllBlock() { * @return block */ @Override - public BlockDto queryBlockById(@Param("id") Integer id) { - BlockDto blockDto = blockMapper.findBlockAndGroupAndHistoByBlockId(id); + public BlockDto queryBlockById(Integer id) { + BlockDto blockDto = baseMapper.findBlockAndGroupAndHistoByBlockId(id); if (blockDto == null) { return blockDto; } @@ -145,7 +142,7 @@ public BlockDto queryBlockById(@Param("id") Integer id) { */ @Override public List queryBlockByCondition(Block block) { - return blockMapper.queryBlockByCondition(block); + return baseMapper.queryBlockByCondition(block); } /** @@ -155,8 +152,8 @@ public List queryBlockByCondition(Block block) { * @return execute success data number */ @Override - public Integer deleteBlockById(@Param("id") Integer id) { - return blockMapper.deleteBlockById(id); + public Integer deleteBlockById(Integer id) { + return baseMapper.deleteBlockById(id); } /** @@ -171,7 +168,7 @@ public Result updateBlockById(BlockParam blockParam, Integer appId) { if (blockParam == null || blockParam.getId() == null) { return Result.failed(ExceptionEnum.CM002); } - Block blockResult = blockMapper.queryBlockById(blockParam.getId()); + Block blockResult = baseMapper.queryBlockById(blockParam.getId()); if (blockResult == null) { return Result.failed(ExceptionEnum.CM001); } @@ -192,7 +189,7 @@ public Result updateBlockById(BlockParam blockParam, Integer appId) { } if (blockParam.getGroups() == null) { - blockMapper.updateBlockById(blocks); + baseMapper.updateBlockById(blocks); BlockDto blockDtoResult = queryBlockById(blocks.getId()); return Result.success(blockDtoResult); } @@ -208,7 +205,7 @@ public Result updateBlockById(BlockParam blockParam, Integer appId) { } } // 更新区块 - blockMapper.updateBlockById(blocks); + baseMapper.updateBlockById(blocks); BlockDto blockDtoResult = new BlockDto(); // 参数存在区块分组且无值 if (blockParam.getGroups().isEmpty()) { @@ -249,7 +246,7 @@ public Result createBlock(BlockParam blockParam) { blocks.setIsOfficial(false); blocks.setPlatformId(loginUserContext.getPlatformId()); // 新建区块给默认值 - int result = blockMapper.createBlock(blocks); + int result = baseMapper.createBlock(blocks); if (result < 1) { return Result.failed(ExceptionEnum.CM001); } @@ -342,7 +339,7 @@ public List getBlockInfo(List block, String framework) { } // 执行查询并返回结果 - return blockMapper.selectList(queryWrapper); + return baseMapper.selectList(queryWrapper); } /** @@ -429,7 +426,7 @@ public IPage findBlocksByPagetionList(BlockParamDto blockParamDto) { int pageNum = start == 0 && limit == 0 ? 1 : (start / limit) + 1; int pageSize = limit == 0 ? 10 : limit; Page page = new Page<>(pageNum, pageSize); - return blockMapper.selectPage(page, queryWrapper); + return baseMapper.selectPage(page, queryWrapper); } /** @@ -442,7 +439,7 @@ public IPage findBlocksByPagetionList(BlockParamDto blockParamDto) { public List allTags() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select("tags").isNotNull("tags"); - List allBlocksList = blockMapper.selectList(queryWrapper); + List allBlocksList = baseMapper.selectList(queryWrapper); return allBlocksList.stream() .flatMap(blocks -> blocks.getTags().stream()) .collect(Collectors.toList()); @@ -457,7 +454,7 @@ public List allTags() { @SystemServiceLog(description = "getNotInGroupBlocks 获取不在分组内的区块 实现类") @Override public List getNotInGroupBlocks(NotGroupDto notGroupDto) { - List blocksList = blockMapper.findBlocksReturn(notGroupDto); + List blocksList = baseMapper.findBlocksReturn(notGroupDto); if (blocksList == null || blocksList.isEmpty()) { return blocksList; } @@ -500,7 +497,7 @@ public Result getBlockByLabel(String label, Integer appId) { Block block = new Block(); block.setLabel(label); block.setAppId(appId); - List blockList = blockMapper.queryBlockByCondition(block); + List blockList = baseMapper.queryBlockByCondition(block); if (blockList.isEmpty()) { return Result.success(); } @@ -595,9 +592,9 @@ public IPage findBlocksByConditionPagetion(Map request) { .or() .like(StringUtils.isNotEmpty(description), "description", description) ); - List blocksList = blockMapper.selectList(queryWrapper); + List blocksList = baseMapper.selectList(queryWrapper); Page page = new Page<>(1, blocksList.size()); - return blockMapper.selectPage(page, queryWrapper); + return baseMapper.selectPage(page, queryWrapper); } /** @@ -649,7 +646,7 @@ public Result> listNew(String appId, String groupId) { List blocksList = new ArrayList<>(); // 如果有 groupId, 只查group下的block,以及自己创建的区块 if (groupIdTemp != 0) { - blocksList = blockMapper.findBlockByBlockGroupId(groupIdTemp, loginUserContext.getLoginUserId()); + blocksList = baseMapper.findBlockByBlockGroupId(groupIdTemp, loginUserContext.getLoginUserId()); return Result.success(blocksList); } // 如果没有 groupId @@ -657,7 +654,7 @@ public Result> listNew(String appId, String groupId) { // 2. 组合 groups 下的所有 block // 3. 查询个人创建的 blocks // 4. 将个人的和 groups 下的 blocks 合并去重 - blocksList = blockMapper.findBlocksByBlockGroupIdAppId(appIdTemp); + blocksList = baseMapper.findBlocksByBlockGroupIdAppId(appIdTemp); List appBlocks = blocksList; // 通过createBy查询区块表数据 Block blocks = new Block(); @@ -702,7 +699,7 @@ public int ensureBlockId(BlockDto blockDto) { queryBlock.setLabel(blockDto.getLabel()); queryBlock.setFramework(blockDto.getFramework()); queryBlock.setCreatedBy(loginUserContext.getLoginUserId()); - List blockList = blockMapper.queryBlockByCondition(queryBlock); + List blockList = baseMapper.queryBlockByCondition(queryBlock); List groups = blockDto.getGroups().stream().map(BlockGroup::getId).collect(Collectors.toList()); ; blockDto.setGroups(null); diff --git a/base/src/main/java/com/tinyengine/it/service/material/impl/BusinessCategoryServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/material/impl/BusinessCategoryServiceImpl.java index 518b6ae4..ee900055 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/impl/BusinessCategoryServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/material/impl/BusinessCategoryServiceImpl.java @@ -12,6 +12,7 @@ package com.tinyengine.it.service.material.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.common.exception.ServiceException; import com.tinyengine.it.mapper.BusinessCategoryMapper; import com.tinyengine.it.model.entity.BusinessCategory; @@ -19,8 +20,6 @@ import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.annotations.Param; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -32,10 +31,7 @@ */ @Service @Slf4j -public class BusinessCategoryServiceImpl implements BusinessCategoryService { - @Autowired - private BusinessCategoryMapper businessCategoryMapper; - +public class BusinessCategoryServiceImpl extends ServiceImpl implements BusinessCategoryService { /** * 查询表t_business_category所有数据 * @@ -43,7 +39,7 @@ public class BusinessCategoryServiceImpl implements BusinessCategoryService { */ @Override public List queryAllBusinessCategory() { - return businessCategoryMapper.queryAllBusinessCategory(); + return baseMapper.queryAllBusinessCategory(); } /** @@ -53,8 +49,8 @@ public List queryAllBusinessCategory() { * @return BusinessCategory */ @Override - public BusinessCategory queryBusinessCategoryById(@Param("id") Integer id) { - return businessCategoryMapper.queryBusinessCategoryById(id); + public BusinessCategory queryBusinessCategoryById(Integer id) { + return baseMapper.queryBusinessCategoryById(id); } /** @@ -67,7 +63,7 @@ public BusinessCategory queryBusinessCategoryById(@Param("id") Integer id) { @Override public List queryBusinessCategoryByCondition(BusinessCategory businessCategory) throws ServiceException { - return businessCategoryMapper.queryBusinessCategoryByCondition(businessCategory); + return baseMapper.queryBusinessCategoryByCondition(businessCategory); } /** @@ -77,8 +73,8 @@ public List queryBusinessCategoryByCondition(BusinessCategory * @return execute success data number */ @Override - public Integer deleteBusinessCategoryById(@Param("id") Integer id) { - return businessCategoryMapper.deleteBusinessCategoryById(id); + public Integer deleteBusinessCategoryById(Integer id) { + return baseMapper.deleteBusinessCategoryById(id); } /** @@ -89,7 +85,7 @@ public Integer deleteBusinessCategoryById(@Param("id") Integer id) { */ @Override public Integer updateBusinessCategoryById(BusinessCategory businessCategory) { - return businessCategoryMapper.updateBusinessCategoryById(businessCategory); + return baseMapper.updateBusinessCategoryById(businessCategory); } /** @@ -100,6 +96,6 @@ public Integer updateBusinessCategoryById(BusinessCategory businessCategory) { */ @Override public Integer createBusinessCategory(BusinessCategory businessCategory) { - return businessCategoryMapper.createBusinessCategory(businessCategory); + return baseMapper.createBusinessCategory(businessCategory); } } diff --git a/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentLibraryServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentLibraryServiceImpl.java index cea1690f..84c1f9ae 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentLibraryServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentLibraryServiceImpl.java @@ -12,6 +12,7 @@ package com.tinyengine.it.service.material.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.exception.ExceptionEnum; import com.tinyengine.it.mapper.ComponentLibraryMapper; @@ -20,8 +21,6 @@ import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.annotations.Param; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -33,10 +32,7 @@ */ @Service @Slf4j -public class ComponentLibraryServiceImpl implements ComponentLibraryService { - @Autowired - private ComponentLibraryMapper componentLibraryMapper; - +public class ComponentLibraryServiceImpl extends ServiceImpl implements ComponentLibraryService { /** * 查询表t_component_library所有数据 * @@ -44,7 +40,7 @@ public class ComponentLibraryServiceImpl implements ComponentLibraryService { */ @Override public List queryAllComponentLibrary() { - return componentLibraryMapper.queryAllComponentLibrary(); + return baseMapper.queryAllComponentLibrary(); } /** @@ -54,8 +50,8 @@ public List queryAllComponentLibrary() { * @return query result */ @Override - public Result queryComponentLibraryById(@Param("id") Integer id) { - ComponentLibrary material = componentLibraryMapper.queryComponentLibraryById(id); + public Result queryComponentLibraryById(Integer id) { + ComponentLibrary material = baseMapper.queryComponentLibraryById(id); return Result.success(material); } @@ -67,7 +63,7 @@ public Result queryComponentLibraryById(@Param("id") Integer i */ @Override public List queryComponentLibraryByCondition(ComponentLibrary componentLibrary) { - return componentLibraryMapper.queryComponentLibraryByCondition(componentLibrary); + return baseMapper.queryComponentLibraryByCondition(componentLibrary); } /** @@ -77,12 +73,12 @@ public List queryComponentLibraryByCondition(ComponentLibrary * @return execute success data number */ @Override - public Result deleteComponentLibraryById(@Param("id") Integer id) { + public Result deleteComponentLibraryById(Integer id) { Result result = this.queryComponentLibraryById(id); if (result.getData() == null || result.getData().getId() == null) { return Result.success(); } - int deleteResult = componentLibraryMapper.deleteComponentLibraryById(id); + int deleteResult = baseMapper.deleteComponentLibraryById(id); if (deleteResult != 1) { return Result.failed(ExceptionEnum.CM008); } @@ -98,7 +94,7 @@ public Result deleteComponentLibraryById(@Param("id") Integer */ @Override public Result updateComponentLibraryById(ComponentLibrary componentLibrary) { - int updateResult = componentLibraryMapper.updateComponentLibraryById(componentLibrary); + int updateResult = baseMapper.updateComponentLibraryById(componentLibrary); if (updateResult != 1) { return Result.failed(ExceptionEnum.CM008); } @@ -113,7 +109,7 @@ public Result updateComponentLibraryById(ComponentLibrary comp */ @Override public Result createComponentLibrary(ComponentLibrary componentLibrary) { - int createResult = componentLibraryMapper.createComponentLibrary(componentLibrary); + int createResult = baseMapper.createComponentLibrary(componentLibrary); if (createResult != 1) { return Result.failed(ExceptionEnum.CM008); } diff --git a/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java index 8fde5817..ccf1f334 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java @@ -12,6 +12,7 @@ package com.tinyengine.it.service.material.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.exception.ExceptionEnum; import com.tinyengine.it.common.log.SystemServiceLog; @@ -34,7 +35,6 @@ import cn.hutool.core.bean.BeanUtil; import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; @@ -44,6 +44,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; /** * The type Component service. @@ -52,13 +53,7 @@ */ @Service @Slf4j -public class ComponentServiceImpl implements ComponentService { - /** - * The component mapper. - */ - @Autowired - private ComponentMapper componentMapper; - +public class ComponentServiceImpl extends ServiceImpl implements ComponentService { /** * The component library mapper. */ @@ -72,7 +67,7 @@ public class ComponentServiceImpl implements ComponentService { */ @Override public List findAllComponent() { - return componentMapper.queryAllComponent(); + return baseMapper.queryAllComponent(); } /** @@ -82,8 +77,8 @@ public List findAllComponent() { * @return query result */ @Override - public Component findComponentById(@Param("id") Integer id) { - return componentMapper.queryComponentById(id); + public Component findComponentById(Integer id) { + return baseMapper.queryComponentById(id); } /** @@ -94,7 +89,7 @@ public Component findComponentById(@Param("id") Integer id) { */ @Override public List findComponentByCondition(Component component) { - return componentMapper.queryComponentByCondition(component); + return baseMapper.queryComponentByCondition(component); } /** @@ -104,8 +99,8 @@ public List findComponentByCondition(Component component) { * @return execute success data number */ @Override - public Integer deleteComponentById(@Param("id") Integer id) { - return componentMapper.deleteComponentById(id); + public Integer deleteComponentById(Integer id) { + return baseMapper.deleteComponentById(id); } /** @@ -116,7 +111,7 @@ public Integer deleteComponentById(@Param("id") Integer id) { */ @Override public Integer updateComponentById(Component component) { - return componentMapper.updateComponentById(component); + return baseMapper.updateComponentById(component); } /** @@ -127,7 +122,7 @@ public Integer updateComponentById(Component component) { */ @Override public Integer createComponent(Component component) { - return componentMapper.createComponent(component); + return baseMapper.createComponent(component); } /** @@ -309,11 +304,11 @@ public Result bulkCreate(List componentList) { MaterialComponent materialComponent = new MaterialComponent(); materialComponent.setMaterialId(1); materialComponent.setComponentId(component.getId()); - componentMapper.createMaterialComponent(materialComponent); + baseMapper.createMaterialComponent(materialComponent); MaterialHistoryComponent materialHistoryComponent = new MaterialHistoryComponent(); materialHistoryComponent.setComponentId(component.getId()); materialHistoryComponent.setMaterialHistoryId(1); - componentMapper.createMaterialHistoryComponent(materialHistoryComponent); + baseMapper.createMaterialHistoryComponent(materialHistoryComponent); } addNum = addNum + 1; } else { @@ -375,10 +370,12 @@ private List buildComponentList(BundleDto bundleDto, List snippetMap = BeanUtil.beanToMap(snippet); - component.setSnippets(Arrays.asList(snippetMap)); - + if (snippet == null) { + continue; + } + Map snippetMap = BeanUtil.beanToMap(snippet); + component.setSnippets(Arrays.asList(snippetMap)); + if(Objects.isNull(component.getCategory())) { component.setCategory(child.getGroup()); } } diff --git a/base/src/main/java/com/tinyengine/it/service/material/impl/MaterialHistoryServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/material/impl/MaterialHistoryServiceImpl.java index 4cac2e09..7a6e0b13 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/impl/MaterialHistoryServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/material/impl/MaterialHistoryServiceImpl.java @@ -12,6 +12,7 @@ package com.tinyengine.it.service.material.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.exception.ExceptionEnum; import com.tinyengine.it.common.exception.ServiceException; @@ -21,8 +22,6 @@ import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.annotations.Param; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -34,13 +33,7 @@ */ @Service @Slf4j -public class MaterialHistoryServiceImpl implements MaterialHistoryService { - /** - * The material history mapper. - */ - @Autowired - private MaterialHistoryMapper materialHistoryMapper; - +public class MaterialHistoryServiceImpl extends ServiceImpl implements MaterialHistoryService { /** * 查询表t_material_history所有数据 * @@ -48,7 +41,7 @@ public class MaterialHistoryServiceImpl implements MaterialHistoryService { */ @Override public List findAllMaterialHistory() { - return materialHistoryMapper.queryAllMaterialHistory(); + return baseMapper.queryAllMaterialHistory(); } /** @@ -58,8 +51,8 @@ public List findAllMaterialHistory() { * @return query result */ @Override - public Result findMaterialHistoryById(@Param("id") Integer id) { - MaterialHistory materialHistory = materialHistoryMapper.queryMaterialHistoryById(id); + public Result findMaterialHistoryById(Integer id) { + MaterialHistory materialHistory = baseMapper.queryMaterialHistoryById(id); return Result.success(materialHistory); } @@ -73,7 +66,7 @@ public Result findMaterialHistoryById(@Param("id") Integer id) @Override public List findMaterialHistoryByCondition(MaterialHistory materialHistory) throws ServiceException { - return materialHistoryMapper.queryMaterialHistoryByCondition(materialHistory); + return baseMapper.queryMaterialHistoryByCondition(materialHistory); } /** @@ -83,9 +76,9 @@ public List findMaterialHistoryByCondition(MaterialHistory mate * @return execute success data number */ @Override - public Result deleteMaterialHistoryById(@Param("id") Integer id) { + public Result deleteMaterialHistoryById(Integer id) { Result result = this.findMaterialHistoryById(id); - int deleteResult = materialHistoryMapper.deleteMaterialHistoryById(id); + int deleteResult = baseMapper.deleteMaterialHistoryById(id); if (deleteResult != 1) { return Result.failed(ExceptionEnum.CM008); } @@ -100,7 +93,7 @@ public Result deleteMaterialHistoryById(@Param("id") Integer id */ @Override public Result updateMaterialHistoryById(MaterialHistory materialHistory) { - int updateResult = materialHistoryMapper.updateMaterialHistoryById(materialHistory); + int updateResult = baseMapper.updateMaterialHistoryById(materialHistory); if (updateResult != 1) { return Result.failed(ExceptionEnum.CM008); } @@ -115,7 +108,7 @@ public Result updateMaterialHistoryById(MaterialHistory materia */ @Override public Result createMaterialHistory(MaterialHistory materialHistory) { - int createResult = materialHistoryMapper.createMaterialHistory(materialHistory); + int createResult = baseMapper.createMaterialHistory(materialHistory); if (createResult != 1) { return Result.failed(ExceptionEnum.CM008); } diff --git a/base/src/main/java/com/tinyengine/it/service/material/impl/MaterialServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/material/impl/MaterialServiceImpl.java index 640a495e..c26f01f6 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/impl/MaterialServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/material/impl/MaterialServiceImpl.java @@ -12,6 +12,7 @@ package com.tinyengine.it.service.material.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.exception.ExceptionEnum; import com.tinyengine.it.mapper.MaterialMapper; @@ -20,8 +21,6 @@ import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.annotations.Param; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -33,10 +32,7 @@ */ @Service @Slf4j -public class MaterialServiceImpl implements MaterialService { - @Autowired - private MaterialMapper materialMapper; - +public class MaterialServiceImpl extends ServiceImpl implements MaterialService { /** * 查询表t_material所有数据 * @@ -44,7 +40,7 @@ public class MaterialServiceImpl implements MaterialService { */ @Override public List queryAllMaterial() { - return materialMapper.queryAllMaterial(); + return baseMapper.queryAllMaterial(); } /** @@ -54,8 +50,8 @@ public List queryAllMaterial() { * @return query result */ @Override - public Result queryMaterialById(@Param("id") Integer id) { - Material material = materialMapper.queryMaterialById(id); + public Result queryMaterialById(Integer id) { + Material material = baseMapper.queryMaterialById(id); return Result.success(material); } @@ -67,7 +63,7 @@ public Result queryMaterialById(@Param("id") Integer id) { */ @Override public List queryMaterialByCondition(Material material) { - return materialMapper.queryMaterialByCondition(material); + return baseMapper.queryMaterialByCondition(material); } /** @@ -77,8 +73,8 @@ public List queryMaterialByCondition(Material material) { * @return execute success data number */ @Override - public Result deleteMaterialById(@Param("id") Integer id) { - int deleteResult = materialMapper.deleteMaterialById(id); + public Result deleteMaterialById(Integer id) { + int deleteResult = baseMapper.deleteMaterialById(id); if (deleteResult != 1) { return Result.failed(ExceptionEnum.CM008); } @@ -94,7 +90,7 @@ public Result deleteMaterialById(@Param("id") Integer id) { */ @Override public Result updateMaterialById(Material material) { - int updateResult = materialMapper.updateMaterialById(material); + int updateResult = baseMapper.updateMaterialById(material); if (updateResult != 1) { return Result.failed(ExceptionEnum.CM008); } @@ -109,7 +105,7 @@ public Result updateMaterialById(Material material) { */ @Override public Result createMaterial(Material material) { - int createResult = materialMapper.createMaterial(material); + int createResult = baseMapper.createMaterial(material); if (createResult != 1) { return Result.failed(ExceptionEnum.CM008); } diff --git a/base/src/main/java/com/tinyengine/it/service/material/impl/TaskRecordMaterialServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/material/impl/TaskRecordMaterialServiceImpl.java index 5e69f27c..f5398a57 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/impl/TaskRecordMaterialServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/material/impl/TaskRecordMaterialServiceImpl.java @@ -12,14 +12,13 @@ package com.tinyengine.it.service.material.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.common.exception.ServiceException; import com.tinyengine.it.common.log.SystemServiceLog; import com.tinyengine.it.mapper.TaskRecordMapper; import com.tinyengine.it.model.entity.TaskRecord; import com.tinyengine.it.service.material.TaskRecordService; -import org.apache.ibatis.annotations.Param; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Arrays; @@ -36,10 +35,7 @@ * @since 2024-10-17 */ @Service -public class TaskRecordMaterialServiceImpl implements TaskRecordService { - @Autowired - TaskRecordMapper taskRecordMapper; - +public class TaskRecordMaterialServiceImpl extends ServiceImpl implements TaskRecordService { /** * 根据主键id查询表task_record信息 * @@ -48,8 +44,8 @@ public class TaskRecordMaterialServiceImpl implements TaskRecordService { * @throws ServiceException serviceException */ @Override - public TaskRecord queryTaskRecordById(@Param("id") Integer id) throws ServiceException { - return taskRecordMapper.queryTaskRecordById(id); + public TaskRecord queryTaskRecordById(Integer id) throws ServiceException { + return baseMapper.queryTaskRecordById(id); } /** @@ -68,7 +64,7 @@ public List> status(int taskTypeId, String uniqueIds) { List>> queryPromises = uniqueIdsList.stream() .map(uniqueId -> CompletableFuture.supplyAsync(() -> { // 根据taskTypeId、uniqueId、created_at按照条件查询 - return taskRecordMapper.findTaskRecordByTaskIdAndUniqueid(taskTypeId, uniqueId); + return baseMapper.findTaskRecordByTaskIdAndUniqueid(taskTypeId, uniqueId); })) .collect(Collectors.toList()); return queryPromises.stream() diff --git a/base/src/main/java/com/tinyengine/it/service/platform/PlatformHistoryService.java b/base/src/main/java/com/tinyengine/it/service/platform/PlatformHistoryService.java index ef3ad33b..5ba22c78 100644 --- a/base/src/main/java/com/tinyengine/it/service/platform/PlatformHistoryService.java +++ b/base/src/main/java/com/tinyengine/it/service/platform/PlatformHistoryService.java @@ -12,11 +12,10 @@ package com.tinyengine.it.service.platform; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.model.entity.PlatformHistory; -import org.apache.ibatis.annotations.Param; - import java.util.List; /** @@ -24,7 +23,7 @@ * * @since 2025-05-09 */ -public interface PlatformHistoryService { +public interface PlatformHistoryService extends IService { /** * 查询表t_platform_history所有信息 * @@ -38,7 +37,7 @@ public interface PlatformHistoryService { * @param id the id * @return the platformHistory */ - PlatformHistory queryPlatformHistoryById(@Param("id") Integer id); + PlatformHistory queryPlatformHistoryById(Integer id); /** * 根据条件查询表t_platform_history信息 @@ -54,7 +53,7 @@ public interface PlatformHistoryService { * @param id the id * @return the Result */ - Result deletePlatformHistoryById(@Param("id") Integer id); + Result deletePlatformHistoryById(Integer id); /** * 根据主键id更新表t_platform_history信息 diff --git a/base/src/main/java/com/tinyengine/it/service/platform/PlatformService.java b/base/src/main/java/com/tinyengine/it/service/platform/PlatformService.java index 552b9e7a..9f2db52b 100644 --- a/base/src/main/java/com/tinyengine/it/service/platform/PlatformService.java +++ b/base/src/main/java/com/tinyengine/it/service/platform/PlatformService.java @@ -12,11 +12,10 @@ package com.tinyengine.it.service.platform; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.model.entity.Platform; -import org.apache.ibatis.annotations.Param; - import java.util.List; /** @@ -24,7 +23,7 @@ * * @since 2024-10-20 */ -public interface PlatformService { +public interface PlatformService extends IService { /** * 查询表t_platform所有信息 * @@ -38,7 +37,7 @@ public interface PlatformService { * @param id the id * @return the platform */ - Platform queryPlatformById(@Param("id") Integer id); + Platform queryPlatformById(Integer id); /** * 根据条件查询表t_platform信息 @@ -54,7 +53,7 @@ public interface PlatformService { * @param id the id * @return the Result */ - Result deletePlatformById(@Param("id") Integer id); + Result deletePlatformById(Integer id); /** * 根据主键id更新表t_platform信息 diff --git a/base/src/main/java/com/tinyengine/it/service/platform/TenantService.java b/base/src/main/java/com/tinyengine/it/service/platform/TenantService.java index 61c6c3c6..0d0b07c7 100644 --- a/base/src/main/java/com/tinyengine/it/service/platform/TenantService.java +++ b/base/src/main/java/com/tinyengine/it/service/platform/TenantService.java @@ -12,10 +12,9 @@ package com.tinyengine.it.service.platform; +import com.baomidou.mybatisplus.extension.service.IService; import com.tinyengine.it.model.entity.Tenant; -import org.apache.ibatis.annotations.Param; - import java.util.List; /** @@ -23,7 +22,7 @@ * * @since 2024-10-20 */ -public interface TenantService { +public interface TenantService extends IService { /** * 查询表t_tenant所有信息 * @@ -37,7 +36,7 @@ public interface TenantService { * @param id the id * @return the tenant */ - Tenant findTenantById(@Param("id") Integer id); + Tenant findTenantById(Integer id); /** * 根据条件查询表t_tenant信息 @@ -53,7 +52,7 @@ public interface TenantService { * @param id the id * @return the integer */ - Integer deleteTenantById(@Param("id") Integer id); + Integer deleteTenantById(Integer id); /** * 根据主键id更新表t_tenant信息 diff --git a/base/src/main/java/com/tinyengine/it/service/platform/impl/PlatformHistoryServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/platform/impl/PlatformHistoryServiceImpl.java index f3c3f777..dcaac1f0 100644 --- a/base/src/main/java/com/tinyengine/it/service/platform/impl/PlatformHistoryServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/platform/impl/PlatformHistoryServiceImpl.java @@ -12,6 +12,7 @@ package com.tinyengine.it.service.platform.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.exception.ExceptionEnum; import com.tinyengine.it.mapper.PlatformHistoryMapper; @@ -20,7 +21,6 @@ import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -32,10 +32,7 @@ */ @Service @Slf4j -public class PlatformHistoryServiceImpl implements PlatformHistoryService { - @Autowired - private PlatformHistoryMapper platformHistoryMapper; - +public class PlatformHistoryServiceImpl extends ServiceImpl implements PlatformHistoryService { /** * 查询表t_platform_history所有信息 * @@ -43,7 +40,7 @@ public class PlatformHistoryServiceImpl implements PlatformHistoryService { */ @Override public List queryAllPlatformHistory() { - return platformHistoryMapper.queryAllPlatformHistory(); + return baseMapper.queryAllPlatformHistory(); } /** @@ -54,7 +51,7 @@ public List queryAllPlatformHistory() { */ @Override public PlatformHistory queryPlatformHistoryById(Integer id) { - return platformHistoryMapper.queryPlatformHistoryById(id); + return baseMapper.queryPlatformHistoryById(id); } /** @@ -65,7 +62,7 @@ public PlatformHistory queryPlatformHistoryById(Integer id) { */ @Override public List queryPlatformHistoryByCondition(PlatformHistory platformHistory) { - return platformHistoryMapper.queryPlatformHistoryByCondition(platformHistory); + return baseMapper.queryPlatformHistoryByCondition(platformHistory); } /** @@ -80,7 +77,7 @@ public Result deletePlatformHistoryById(Integer id) { if (platformHistory == null || platformHistory.getId() == null) { return Result.success(); } - int deleteResult = platformHistoryMapper.deletePlatformHistoryById(id); + int deleteResult = baseMapper.deletePlatformHistoryById(id); if (deleteResult != 1) { return Result.failed(ExceptionEnum.CM008); } @@ -98,7 +95,7 @@ public Result updatePlatformHistoryById(PlatformHistory platfor if (platformHistory == null || platformHistory.getId() == null) { return Result.failed(ExceptionEnum.CM002); } - int updateResult = platformHistoryMapper.updatePlatformHistoryById(platformHistory); + int updateResult = baseMapper.updatePlatformHistoryById(platformHistory); if (updateResult != 1) { return Result.failed(ExceptionEnum.CM008); } @@ -129,7 +126,7 @@ public Result createPlatformHistory(PlatformHistory platformHis if (platformHistory.getMaterialHistoryId() == null) { return Result.failed(ExceptionEnum.CM002); } - int createResult = platformHistoryMapper.createPlatformHistory(platformHistory); + int createResult = baseMapper.createPlatformHistory(platformHistory); if (createResult != 1) { return Result.failed(ExceptionEnum.CM008); } diff --git a/base/src/main/java/com/tinyengine/it/service/platform/impl/PlatformServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/platform/impl/PlatformServiceImpl.java index 3d80bec6..4317e34d 100644 --- a/base/src/main/java/com/tinyengine/it/service/platform/impl/PlatformServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/platform/impl/PlatformServiceImpl.java @@ -12,6 +12,7 @@ package com.tinyengine.it.service.platform.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.exception.ExceptionEnum; import com.tinyengine.it.mapper.PlatformMapper; @@ -20,8 +21,6 @@ import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.annotations.Param; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -33,10 +32,7 @@ */ @Service @Slf4j -public class PlatformServiceImpl implements PlatformService { - @Autowired - private PlatformMapper platformMapper; - +public class PlatformServiceImpl extends ServiceImpl implements PlatformService { /** * 查询表t_platform所有数据 * @@ -44,7 +40,7 @@ public class PlatformServiceImpl implements PlatformService { */ @Override public List queryAllPlatform() { - return platformMapper.queryAllPlatform(); + return baseMapper.queryAllPlatform(); } /** @@ -54,8 +50,8 @@ public List queryAllPlatform() { * @return query result */ @Override - public Platform queryPlatformById(@Param("id") Integer id) { - return platformMapper.queryPlatformById(id); + public Platform queryPlatformById(Integer id) { + return baseMapper.queryPlatformById(id); } /** @@ -66,7 +62,7 @@ public Platform queryPlatformById(@Param("id") Integer id) { */ @Override public List queryPlatformByCondition(Platform platform) { - return platformMapper.queryPlatformByCondition(platform); + return baseMapper.queryPlatformByCondition(platform); } /** @@ -76,12 +72,12 @@ public List queryPlatformByCondition(Platform platform) { * @return execute success data number */ @Override - public Result deletePlatformById(@Param("id") Integer id) { + public Result deletePlatformById(Integer id) { Platform platform = this.queryPlatformById(id); if (platform == null || platform.getId() == null) { return Result.success(); } - int deleteResult = platformMapper.deletePlatformById(id); + int deleteResult = baseMapper.deletePlatformById(id); if (deleteResult != 1) { return Result.failed(ExceptionEnum.CM008); } @@ -99,11 +95,11 @@ public Result updatePlatformById(Platform platform) { if (platform == null || platform.getId() == null) { return Result.failed(ExceptionEnum.CM002); } - int updateResult = platformMapper.updatePlatformById(platform); + int updateResult = baseMapper.updatePlatformById(platform); if (updateResult != 1) { return Result.failed(ExceptionEnum.CM008); } - Platform platformResult = platformMapper.queryPlatformById(platform.getId()); + Platform platformResult = baseMapper.queryPlatformById(platform.getId()); return Result.success(platformResult); } @@ -121,7 +117,7 @@ public Result createPlatform(Platform platform) { if (platform.getName() == null || platform.getName().isEmpty()) { return Result.failed(ExceptionEnum.CM002); } - int createResult = platformMapper.createPlatform(platform); + int createResult = baseMapper.createPlatform(platform); if (createResult != 1) { return Result.failed(ExceptionEnum.CM008); } diff --git a/base/src/main/java/com/tinyengine/it/service/platform/impl/TenantServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/platform/impl/TenantServiceImpl.java index 6a9ed143..b78601d0 100644 --- a/base/src/main/java/com/tinyengine/it/service/platform/impl/TenantServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/platform/impl/TenantServiceImpl.java @@ -12,14 +12,13 @@ package com.tinyengine.it.service.platform.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tinyengine.it.mapper.TenantMapper; import com.tinyengine.it.model.entity.Tenant; import com.tinyengine.it.service.platform.TenantService; import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.annotations.Param; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -32,10 +31,7 @@ @Service @Slf4j -public class TenantServiceImpl implements TenantService { - @Autowired - private TenantMapper tenantMapper; - +public class TenantServiceImpl extends ServiceImpl implements TenantService { /** * 查询表t_tenant所有数据 * @@ -43,7 +39,7 @@ public class TenantServiceImpl implements TenantService { */ @Override public List findAllTenant() { - return tenantMapper.queryAllTenant(); + return baseMapper.queryAllTenant(); } /** @@ -53,8 +49,8 @@ public List findAllTenant() { * @return query result */ @Override - public Tenant findTenantById(@Param("id") Integer id) { - return tenantMapper.queryTenantById(id); + public Tenant findTenantById(Integer id) { + return baseMapper.queryTenantById(id); } /** @@ -65,7 +61,7 @@ public Tenant findTenantById(@Param("id") Integer id) { */ @Override public List findTenantByCondition(Tenant tenant) { - return tenantMapper.queryTenantByCondition(tenant); + return baseMapper.queryTenantByCondition(tenant); } /** @@ -75,8 +71,8 @@ public List findTenantByCondition(Tenant tenant) { * @return execute success data number */ @Override - public Integer deleteTenantById(@Param("id") Integer id) { - return tenantMapper.deleteTenantById(id); + public Integer deleteTenantById(Integer id) { + return baseMapper.deleteTenantById(id); } /** @@ -87,7 +83,7 @@ public Integer deleteTenantById(@Param("id") Integer id) { */ @Override public Integer updateTenantById(Tenant tenant) { - return tenantMapper.updateTenantById(tenant); + return baseMapper.updateTenantById(tenant); } /** @@ -98,6 +94,6 @@ public Integer updateTenantById(Tenant tenant) { */ @Override public Integer createTenant(Tenant tenant) { - return tenantMapper.createTenant(tenant); + return baseMapper.createTenant(tenant); } } diff --git a/base/src/test/java/com/tinyengine/it/service/app/impl/AppExtensionServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/app/impl/AppExtensionServiceImplTest.java index 03a1f84e..d9ef4805 100644 --- a/base/src/test/java/com/tinyengine/it/service/app/impl/AppExtensionServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/app/impl/AppExtensionServiceImplTest.java @@ -15,6 +15,7 @@ import static org.mockito.Mockito.any; import static org.mockito.Mockito.when; +import cn.hutool.core.util.ReflectUtil; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.mapper.AppExtensionMapper; import com.tinyengine.it.model.entity.AppExtension; @@ -38,12 +39,14 @@ class AppExtensionServiceImplTest { @Mock private AppExtensionMapper appExtensionMapper; + @InjectMocks - private AppExtensionServiceImpl appExtensionServiceImpl; + AppExtensionServiceImpl appExtensionServiceImpl; @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); + ReflectUtil.setFieldValue(appExtensionServiceImpl, "baseMapper", appExtensionMapper); } @Test diff --git a/base/src/test/java/com/tinyengine/it/service/app/impl/AppServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/app/impl/AppServiceImplTest.java index 8b1537bb..e78f8c66 100644 --- a/base/src/test/java/com/tinyengine/it/service/app/impl/AppServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/app/impl/AppServiceImplTest.java @@ -17,6 +17,7 @@ import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.when; +import cn.hutool.core.util.ReflectUtil; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.mapper.AppMapper; import com.tinyengine.it.mapper.I18nEntryMapper; @@ -29,8 +30,6 @@ import com.tinyengine.it.model.entity.Platform; import com.tinyengine.it.service.app.I18nEntryService; import com.tinyengine.it.service.app.impl.v1.AppV1ServiceImpl; -import com.tinyengine.it.service.material.impl.BlockGroupServiceImpl; -import com.tinyengine.it.service.material.impl.BlockServiceImpl; import com.tinyengine.it.service.platform.PlatformService; import org.junit.jupiter.api.Assertions; @@ -53,31 +52,22 @@ class AppServiceImplTest { @Mock private AppMapper appMapper; - @Mock private PlatformService platformService; - @Mock private I18nEntryService i18nEntryService; - @Mock private I18nEntryMapper i18nEntryMapper; - @Mock private AppV1ServiceImpl appV1ServiceImpl; - @Mock - private BlockServiceImpl blockServiceImpl; - - @Mock - private BlockGroupServiceImpl blockGroupServiceImpl; - @InjectMocks private AppServiceImpl appServiceImpl; @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); + ReflectUtil.setFieldValue(appServiceImpl, "baseMapper", appMapper); } @Test diff --git a/base/src/test/java/com/tinyengine/it/service/app/impl/DatasourceServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/app/impl/DatasourceServiceImplTest.java index 26ec6a68..7cf6cea1 100644 --- a/base/src/test/java/com/tinyengine/it/service/app/impl/DatasourceServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/app/impl/DatasourceServiceImplTest.java @@ -16,6 +16,7 @@ import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.when; +import cn.hutool.core.util.ReflectUtil; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.mapper.DatasourceMapper; import com.tinyengine.it.model.entity.Datasource; @@ -38,12 +39,14 @@ class DatasourceServiceImplTest { @Mock private DatasourceMapper datasourceMapper; + @InjectMocks private DatasourceServiceImpl datasourceServiceImpl; @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); + ReflectUtil.setFieldValue(datasourceServiceImpl, "baseMapper", datasourceMapper); } @Test diff --git a/base/src/test/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImplTest.java index 8ca96f85..29021ab0 100644 --- a/base/src/test/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImplTest.java @@ -21,6 +21,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import cn.hutool.core.util.ReflectUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.fasterxml.jackson.core.type.TypeReference; import com.tinyengine.it.common.base.Result; @@ -72,12 +73,14 @@ class I18nEntryServiceImplTest { private I18nEntryMapper i18nEntryMapper; @Mock private I18nLangMapper i18nLangMapper; + @InjectMocks private I18nEntryServiceImpl i18nEntryServiceImpl; @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); + ReflectUtil.setFieldValue(i18nEntryServiceImpl, "baseMapper", i18nEntryMapper); } diff --git a/base/src/test/java/com/tinyengine/it/service/app/impl/I18nLangServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/app/impl/I18nLangServiceImplTest.java index d639ea2e..dfa78c0b 100644 --- a/base/src/test/java/com/tinyengine/it/service/app/impl/I18nLangServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/app/impl/I18nLangServiceImplTest.java @@ -14,6 +14,7 @@ import static org.mockito.Mockito.when; +import cn.hutool.core.util.ReflectUtil; import com.tinyengine.it.mapper.I18nLangMapper; import com.tinyengine.it.model.entity.I18nLang; @@ -35,12 +36,14 @@ class I18nLangServiceImplTest { @Mock private I18nLangMapper i18nLangMapper; + @InjectMocks private I18nLangServiceImpl i18nLangServiceImpl; @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); + ReflectUtil.setFieldValue(i18nLangServiceImpl, "baseMapper", i18nLangMapper); } @Test diff --git a/base/src/test/java/com/tinyengine/it/service/app/impl/PageHistoryServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/app/impl/PageHistoryServiceImplTest.java index de9c452a..2e1fdf81 100644 --- a/base/src/test/java/com/tinyengine/it/service/app/impl/PageHistoryServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/app/impl/PageHistoryServiceImplTest.java @@ -15,6 +15,7 @@ import static org.mockito.Mockito.any; import static org.mockito.Mockito.when; +import cn.hutool.core.util.ReflectUtil; import com.tinyengine.it.mapper.PageHistoryMapper; import com.tinyengine.it.model.entity.PageHistory; @@ -36,12 +37,14 @@ class PageHistoryServiceImplTest { @Mock private PageHistoryMapper pageHistoryMapper; + @InjectMocks private PageHistoryServiceImpl pageHistoryServiceImpl; @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); + ReflectUtil.setFieldValue(pageHistoryServiceImpl, "baseMapper", pageHistoryMapper); } @Test diff --git a/base/src/test/java/com/tinyengine/it/service/app/impl/PageServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/app/impl/PageServiceImplTest.java index 17032cc3..73769274 100644 --- a/base/src/test/java/com/tinyengine/it/service/app/impl/PageServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/app/impl/PageServiceImplTest.java @@ -19,21 +19,23 @@ import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.when; +import cn.hutool.core.util.ReflectUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.context.LoginUserContext; +import com.tinyengine.it.common.enums.Enums; import com.tinyengine.it.mapper.AppExtensionMapper; import com.tinyengine.it.mapper.AppMapper; -import com.tinyengine.it.mapper.BlockHistoryMapper; import com.tinyengine.it.mapper.BlockMapper; import com.tinyengine.it.mapper.I18nEntryMapper; -import com.tinyengine.it.mapper.PageHistoryMapper; import com.tinyengine.it.mapper.PageMapper; import com.tinyengine.it.model.dto.PreviewDto; import com.tinyengine.it.model.dto.PreviewParam; +import com.tinyengine.it.model.dto.SchemaI18n; import com.tinyengine.it.model.dto.TreeNodeCollection; import com.tinyengine.it.model.dto.TreeNodeDto; import com.tinyengine.it.model.entity.App; +import com.tinyengine.it.model.entity.AppExtension; import com.tinyengine.it.model.entity.Block; import com.tinyengine.it.model.entity.Page; import com.tinyengine.it.model.entity.PageHistory; @@ -77,15 +79,12 @@ class PageServiceImplTest { @Mock private PageHistoryService pageHistoryService; @Mock - private PageHistoryMapper pageHistoryMapper; - @Mock private AppV1ServiceImpl appV1ServiceImpl; @Mock - private BlockHistoryMapper blockHistoryMapper; - @Mock private AppExtensionMapper appExtensionMapper; @Mock private I18nEntryMapper i18nEntryMapper; + @InjectMocks private PageServiceImpl pageServiceImpl; @@ -95,6 +94,7 @@ class PageServiceImplTest { @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); + ReflectUtil.setFieldValue(pageServiceImpl, "baseMapper", pageMapper); } @Test @@ -365,7 +365,13 @@ void testGetBlockPreviewMetaData() { block.setContent(content); when(blockMapper.queryBlockById(1)).thenReturn(block); when(appV1ServiceImpl.getSchemaExtensions(any(List.class))).thenReturn(new HashMap()); - + AppExtension appExtension = new AppExtension(); + when(appExtensionMapper.queryAppExtensionByCondition(appExtension)).thenReturn(new ArrayList<>()); + when(i18nEntryMapper.findI18nEntriesByHostandHostType(param.getId(), "block")) + .thenReturn(new ArrayList<>()); + SchemaI18n schemaI18n = new SchemaI18n(); + when(appService.formatI18nEntrites(new ArrayList<>(), Enums.I18Belongs.BLOCK.getValue(), param.getId())) + .thenReturn(schemaI18n); PreviewDto result = pageServiceImpl.getBlockPreviewMetaData(param); assertEquals(datasource, result.getDataSource()); } diff --git a/base/src/test/java/com/tinyengine/it/service/app/impl/PageTemplateServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/app/impl/PageTemplateServiceImplTest.java index ca723380..0684482a 100644 --- a/base/src/test/java/com/tinyengine/it/service/app/impl/PageTemplateServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/app/impl/PageTemplateServiceImplTest.java @@ -15,6 +15,7 @@ import static org.mockito.Mockito.any; import static org.mockito.Mockito.when; +import cn.hutool.core.util.ReflectUtil; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.mapper.PageTemplateMapper; import com.tinyengine.it.model.entity.PageTemplate; @@ -38,12 +39,14 @@ class PageTemplateServiceImplTest { @Mock private PageTemplateMapper pageTemplateMapper; + @InjectMocks private PageTemplateServiceImpl pageTemplateServiceImpl; @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); + ReflectUtil.setFieldValue(pageTemplateServiceImpl, "baseMapper", pageTemplateMapper); } @Test diff --git a/base/src/test/java/com/tinyengine/it/service/app/impl/TaskRecordServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/app/impl/TaskRecordServiceImplTest.java index 040a6848..c7277319 100644 --- a/base/src/test/java/com/tinyengine/it/service/app/impl/TaskRecordServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/app/impl/TaskRecordServiceImplTest.java @@ -14,6 +14,7 @@ import static org.mockito.Mockito.when; +import cn.hutool.core.util.ReflectUtil; import com.tinyengine.it.mapper.TaskRecordMapper; import com.tinyengine.it.model.entity.TaskRecord; @@ -35,12 +36,14 @@ class TaskRecordServiceImplTest { @Mock private TaskRecordMapper taskRecordMapper; + @InjectMocks private TaskRecordServiceImpl taskRecordServiceImpl; @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); + ReflectUtil.setFieldValue(taskRecordServiceImpl, "baseMapper", taskRecordMapper); } @Test diff --git a/base/src/test/java/com/tinyengine/it/service/app/impl/UserServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/app/impl/UserServiceImplTest.java index 6b842871..e0eff4f6 100644 --- a/base/src/test/java/com/tinyengine/it/service/app/impl/UserServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/app/impl/UserServiceImplTest.java @@ -14,6 +14,7 @@ import static org.mockito.Mockito.when; +import cn.hutool.core.util.ReflectUtil; import com.tinyengine.it.mapper.UserMapper; import com.tinyengine.it.model.entity.User; @@ -35,12 +36,14 @@ class UserServiceImplTest { @Mock private UserMapper userMapper; + @InjectMocks private UserServiceImpl userServiceImpl; @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); + ReflectUtil.setFieldValue(userServiceImpl, "baseMapper", userMapper); } @Test diff --git a/base/src/test/java/com/tinyengine/it/service/material/impl/BlockGroupServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/material/impl/BlockGroupServiceImplTest.java index 848ee062..accbecf2 100644 --- a/base/src/test/java/com/tinyengine/it/service/material/impl/BlockGroupServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/material/impl/BlockGroupServiceImplTest.java @@ -14,6 +14,7 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; +import cn.hutool.core.util.ReflectUtil; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.context.LoginUserContext; import com.tinyengine.it.mapper.BlockCarriersRelationMapper; @@ -58,6 +59,7 @@ class BlockGroupServiceImplTest { @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); + ReflectUtil.setFieldValue(blockGroupServiceImpl, "baseMapper", blockGroupMapper); } @Test diff --git a/base/src/test/java/com/tinyengine/it/service/material/impl/BlockHistoryServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/material/impl/BlockHistoryServiceImplTest.java index 426c1545..8a470952 100644 --- a/base/src/test/java/com/tinyengine/it/service/material/impl/BlockHistoryServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/material/impl/BlockHistoryServiceImplTest.java @@ -14,6 +14,7 @@ import static org.mockito.Mockito.when; +import cn.hutool.core.util.ReflectUtil; import com.tinyengine.it.mapper.BlockHistoryMapper; import com.tinyengine.it.model.entity.BlockHistory; @@ -35,12 +36,14 @@ class BlockHistoryServiceImplTest { @Mock private BlockHistoryMapper blockHistoryMapper; + @InjectMocks private BlockHistoryServiceImpl blockHistoryServiceImpl; @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); + ReflectUtil.setFieldValue(blockHistoryServiceImpl, "baseMapper", blockHistoryMapper); } @Test diff --git a/base/src/test/java/com/tinyengine/it/service/material/impl/BlockServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/material/impl/BlockServiceImplTest.java index ffed18e9..e561482e 100644 --- a/base/src/test/java/com/tinyengine/it/service/material/impl/BlockServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/material/impl/BlockServiceImplTest.java @@ -19,6 +19,7 @@ import static org.mockito.Mockito.any; import static org.mockito.Mockito.when; +import cn.hutool.core.util.ReflectUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -59,24 +60,23 @@ class BlockServiceImplTest { @Mock private BlockMapper blockMapper; - - @InjectMocks - private BlockServiceImpl blockServiceImpl; - @Mock private UserMapper userMapper; @Mock private AppMapper appMapper; @Mock private BlockGroupMapper blockGroupMapper; - @Mock private LoginUserContext loginUserContext; + @InjectMocks + private BlockServiceImpl blockServiceImpl; + @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); when(loginUserContext.getLoginUserId()).thenReturn("1"); + ReflectUtil.setFieldValue(blockServiceImpl, "baseMapper", blockMapper); } @Test diff --git a/base/src/test/java/com/tinyengine/it/service/material/impl/BusinessCategoryServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/material/impl/BusinessCategoryServiceImplTest.java index 0645b95e..7f4e0453 100644 --- a/base/src/test/java/com/tinyengine/it/service/material/impl/BusinessCategoryServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/material/impl/BusinessCategoryServiceImplTest.java @@ -14,6 +14,7 @@ import static org.mockito.Mockito.when; +import cn.hutool.core.util.ReflectUtil; import com.tinyengine.it.mapper.BusinessCategoryMapper; import com.tinyengine.it.model.entity.BusinessCategory; @@ -35,12 +36,14 @@ class BusinessCategoryServiceImplTest { @Mock private BusinessCategoryMapper businessCategoryMapper; + @InjectMocks private BusinessCategoryServiceImpl businessCategoryServiceImpl; @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); + ReflectUtil.setFieldValue(businessCategoryServiceImpl, "baseMapper", businessCategoryMapper); } @Test diff --git a/base/src/test/java/com/tinyengine/it/service/material/impl/ComponentServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/material/impl/ComponentServiceImplTest.java index e0006732..42519187 100644 --- a/base/src/test/java/com/tinyengine/it/service/material/impl/ComponentServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/material/impl/ComponentServiceImplTest.java @@ -16,6 +16,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import cn.hutool.core.util.ReflectUtil; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.utils.Utils; import com.tinyengine.it.mapper.ComponentLibraryMapper; @@ -54,12 +55,14 @@ class ComponentServiceImplTest { private ComponentMapper componentMapper; @Mock private ComponentLibraryMapper componentLibraryMapper; + @InjectMocks private ComponentServiceImpl componentServiceImpl; @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); + ReflectUtil.setFieldValue(componentServiceImpl, "baseMapper", componentMapper); } @Test diff --git a/base/src/test/java/com/tinyengine/it/service/material/impl/MaterialHistoryServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/material/impl/MaterialHistoryServiceImplTest.java index 442ff2e4..ef54d5c3 100644 --- a/base/src/test/java/com/tinyengine/it/service/material/impl/MaterialHistoryServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/material/impl/MaterialHistoryServiceImplTest.java @@ -13,6 +13,7 @@ import static org.mockito.Mockito.when; +import cn.hutool.core.util.ReflectUtil; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.mapper.MaterialHistoryMapper; import com.tinyengine.it.model.entity.MaterialHistory; @@ -35,12 +36,14 @@ class MaterialHistoryServiceImplTest { @Mock private MaterialHistoryMapper materialHistoryMapper; + @InjectMocks private MaterialHistoryServiceImpl materialHistoryServiceImpl; @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); + ReflectUtil.setFieldValue(materialHistoryServiceImpl, "baseMapper", materialHistoryMapper); } @Test diff --git a/base/src/test/java/com/tinyengine/it/service/material/impl/MaterialServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/material/impl/MaterialServiceImplTest.java index f9ce548d..2e1f3dd9 100644 --- a/base/src/test/java/com/tinyengine/it/service/material/impl/MaterialServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/material/impl/MaterialServiceImplTest.java @@ -13,6 +13,7 @@ import static org.mockito.Mockito.when; +import cn.hutool.core.util.ReflectUtil; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.mapper.MaterialMapper; import com.tinyengine.it.model.entity.Material; @@ -42,6 +43,7 @@ class MaterialServiceImplTest { @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); + ReflectUtil.setFieldValue(materialServiceImpl, "baseMapper", materialMapper); } @Test diff --git a/base/src/test/java/com/tinyengine/it/service/material/impl/TaskRecordMaterialServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/material/impl/TaskRecordMaterialServiceImplTest.java index 0a34af9f..21ba8b1e 100644 --- a/base/src/test/java/com/tinyengine/it/service/material/impl/TaskRecordMaterialServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/material/impl/TaskRecordMaterialServiceImplTest.java @@ -15,6 +15,7 @@ import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.when; +import cn.hutool.core.util.ReflectUtil; import com.tinyengine.it.mapper.TaskRecordMapper; import com.tinyengine.it.model.entity.TaskRecord; @@ -36,12 +37,14 @@ class TaskRecordMaterialServiceImplTest { @Mock TaskRecordMapper taskRecordMapper; + @InjectMocks TaskRecordMaterialServiceImpl taskRecordMaterialServiceImpl; @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); + ReflectUtil.setFieldValue(taskRecordMaterialServiceImpl, "baseMapper", taskRecordMapper); } @Test diff --git a/base/src/test/java/com/tinyengine/it/service/platform/impl/PlatformServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/platform/impl/PlatformServiceImplTest.java index 9e9868fc..47b39d89 100644 --- a/base/src/test/java/com/tinyengine/it/service/platform/impl/PlatformServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/platform/impl/PlatformServiceImplTest.java @@ -14,6 +14,7 @@ import static org.mockito.Mockito.when; +import cn.hutool.core.util.ReflectUtil; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.mapper.PlatformMapper; import com.tinyengine.it.model.entity.Platform; @@ -36,12 +37,14 @@ class PlatformServiceImplTest { @Mock private PlatformMapper platformMapper; + @InjectMocks private PlatformServiceImpl platformServiceImpl; @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); + ReflectUtil.setFieldValue(platformServiceImpl, "baseMapper", platformMapper); } @Test diff --git a/base/src/test/java/com/tinyengine/it/service/platform/impl/TenantServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/platform/impl/TenantServiceImplTest.java index 71030303..bc170124 100644 --- a/base/src/test/java/com/tinyengine/it/service/platform/impl/TenantServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/platform/impl/TenantServiceImplTest.java @@ -15,6 +15,7 @@ import static org.mockito.Mockito.any; import static org.mockito.Mockito.when; +import cn.hutool.core.util.ReflectUtil; import com.tinyengine.it.mapper.TenantMapper; import com.tinyengine.it.model.entity.Tenant; @@ -36,12 +37,14 @@ class TenantServiceImplTest { @Mock private TenantMapper tenantMapper; + @InjectMocks private TenantServiceImpl tenantServiceImpl; @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); + ReflectUtil.setFieldValue(tenantServiceImpl, "baseMapper", tenantMapper); } @Test diff --git a/pom.xml b/pom.xml index 89eb8621..c6d4b3b3 100644 --- a/pom.xml +++ b/pom.xml @@ -30,16 +30,12 @@ 3.3.3 2.3.32 2.5.4 - 1.6.14 + 2.5.0 4.11.0 6.1.0 1.0-SNAPSHOT - - org.springframework.boot - spring-boot-starter-web - org.springframework.boot spring-boot-starter-aop @@ -106,8 +102,8 @@ org.springdoc - springdoc-openapi-ui - ${springdoc-openapi-ui.version} + springdoc-openapi-starter-webflux-ui + ${springdoc-openapi-starter-webflux-ui.version} From ba5720b464093d7c32280aabce189db5283a9126 Mon Sep 17 00:00:00 2001 From: lu-yg <128358973+lu-yg@users.noreply.github.com> Date: Fri, 20 Jun 2025 03:22:20 -0700 Subject: [PATCH 05/14] feat: Add JsonUtils and modify related methods (#243) --- .../it/config/filter/FilterConfig.java | 14 - .../it/config/filter/WebConfig.java | 27 +- .../it/common/handler/ListTypeHandler.java | 10 +- .../it/common/handler/MapTypeHandler.java | 10 +- .../tinyengine/it/common/utils/JsonUtils.java | 349 ++++++++++++++++++ .../it/common/utils/MapperFactory.java | 93 +++++ .../utils/OffsetDateTimeDeserializer.java | 68 ++++ .../common/utils/SecurityFileCheckUtil.java | 4 +- .../com/tinyengine/it/common/utils/Utils.java | 22 +- .../it/controller/BlockController.java | 28 +- .../it/controller/PageController.java | 40 +- .../it/controller/PageHistoryController.java | 29 +- .../it/controller/PageTemplateController.java | 23 +- .../it/gateway/ai/AiChatClient.java | 49 +-- .../app/impl/I18nEntryServiceImpl.java | 5 +- .../service/app/impl/v1/AppV1ServiceImpl.java | 6 +- .../it/service/material/BlockService.java | 4 +- .../material/impl/BlockServiceImpl.java | 24 +- .../material/impl/ComponentServiceImpl.java | 3 +- .../tinyengine/it/common/utils/UtilsTest.java | 8 - .../it/controller/BlockControllerTest.java | 17 +- .../it/controller/PageControllerTest.java | 9 +- .../controller/PageHistoryControllerTest.java | 13 +- .../PageTemplateControllerTest.java | 11 +- .../it/gateway/ai/AiChatClientTest.java | 89 ++--- .../app/impl/v1/AppV1ServiceImplTest.java | 5 +- .../material/impl/BlockServiceImplTest.java | 3 +- pom.xml | 14 +- 28 files changed, 765 insertions(+), 212 deletions(-) create mode 100644 base/src/main/java/com/tinyengine/it/common/utils/JsonUtils.java create mode 100644 base/src/main/java/com/tinyengine/it/common/utils/MapperFactory.java create mode 100644 base/src/main/java/com/tinyengine/it/common/utils/OffsetDateTimeDeserializer.java diff --git a/app/src/main/java/com/tinyengine/it/config/filter/FilterConfig.java b/app/src/main/java/com/tinyengine/it/config/filter/FilterConfig.java index d8ee5648..827082e9 100644 --- a/app/src/main/java/com/tinyengine/it/config/filter/FilterConfig.java +++ b/app/src/main/java/com/tinyengine/it/config/filter/FilterConfig.java @@ -15,8 +15,6 @@ import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; @@ -56,16 +54,4 @@ public FilterRegistrationBean requestIdFilter() { registrationBean.setFilter(new RequestIdFilter()); return registrationBean; } - - /** - * Object mapper object mapper. - * - * @return the object mapper - */ - @Bean - public ObjectMapper objectMapper() { - ObjectMapper mapper = new ObjectMapper(); - mapper.registerModule(new JavaTimeModule()); - return mapper; - } } diff --git a/app/src/main/java/com/tinyengine/it/config/filter/WebConfig.java b/app/src/main/java/com/tinyengine/it/config/filter/WebConfig.java index f760e11b..839421f0 100644 --- a/app/src/main/java/com/tinyengine/it/config/filter/WebConfig.java +++ b/app/src/main/java/com/tinyengine/it/config/filter/WebConfig.java @@ -1,13 +1,12 @@ /** * Copyright (c) 2023 - present TinyEngine Authors. * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. - * + *

* Use of this source code is governed by an MIT-style license. - * + *

* THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. - * */ package com.tinyengine.it.config.filter; @@ -16,31 +15,35 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.reactive.CorsWebFilter; -import org.springframework.web.reactive.config.WebFluxConfigurer; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +import org.springframework.web.filter.CorsFilter; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import java.util.Arrays; import java.util.List; @Configuration -public class WebConfig implements WebFluxConfigurer { +public class WebConfig implements WebMvcConfigurer { @Value("${cors.allowed-origins}") private String allowedOrigins; @Bean - public CorsWebFilter corsFilter() { + public CorsFilter corsFilter() { + // 跨域配置地址 List crosDomainList = Arrays.asList(allowedOrigins.split(",")); CorsConfiguration corsConfiguration = new CorsConfiguration(); + // 1、允许来源 corsConfiguration.setAllowedOriginPatterns(crosDomainList); + // 2、允许任何请求头 corsConfiguration.addAllowedHeader(CorsConfiguration.ALL); + // 3、允许任何方法 corsConfiguration.addAllowedMethod(CorsConfiguration.ALL); + // 4、允许凭证 corsConfiguration.setAllowCredentials(true); - org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource source = - new org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource(); + UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", corsConfiguration); - - return new CorsWebFilter(source); + return new CorsFilter(source); } -} \ No newline at end of file +} diff --git a/base/src/main/java/com/tinyengine/it/common/handler/ListTypeHandler.java b/base/src/main/java/com/tinyengine/it/common/handler/ListTypeHandler.java index f76053d5..2464b066 100644 --- a/base/src/main/java/com/tinyengine/it/common/handler/ListTypeHandler.java +++ b/base/src/main/java/com/tinyengine/it/common/handler/ListTypeHandler.java @@ -14,8 +14,8 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; +import com.tinyengine.it.common.utils.JsonUtils; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.type.BaseTypeHandler; @@ -38,14 +38,12 @@ */ @Slf4j public class ListTypeHandler extends BaseTypeHandler> { - private final ObjectMapper objectMapper = new ObjectMapper(); - @Override public void setNonNullParameter(PreparedStatement ps, int i, List parameter, JdbcType jdbcType) throws SQLException { // 将 List 转换为字符串,并设置到 PreparedStatement 中的相应参数 try { - String json = objectMapper.writeValueAsString(parameter); + String json = JsonUtils.MAPPER.writeValueAsString(parameter); ps.setString(i, json); } catch (IOException e) { throw new SQLException("Error converting List to JSON", e); @@ -90,10 +88,10 @@ private List convetJsonList(String jsonString) throws JsonProcessingException return Collections.emptyList(); } else if (jsonString.startsWith("[{") && jsonString.endsWith("}]")) { // 尝试将 JSON 字符串转换为 List> - return objectMapper.readValue(jsonString, new TypeReference>>() {}); + return JsonUtils.MAPPER.readValue(jsonString, new TypeReference>>() {}); } else { // 尝试将 JSON 字符串转换为 List - return objectMapper.readValue(jsonString, new TypeReference>() {}); + return JsonUtils.MAPPER.readValue(jsonString, new TypeReference>() {}); } } } diff --git a/base/src/main/java/com/tinyengine/it/common/handler/MapTypeHandler.java b/base/src/main/java/com/tinyengine/it/common/handler/MapTypeHandler.java index 3ea157cb..67a0a105 100644 --- a/base/src/main/java/com/tinyengine/it/common/handler/MapTypeHandler.java +++ b/base/src/main/java/com/tinyengine/it/common/handler/MapTypeHandler.java @@ -15,8 +15,8 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; +import com.tinyengine.it.common.utils.JsonUtils; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.type.BaseTypeHandler; @@ -37,13 +37,11 @@ */ @Slf4j public class MapTypeHandler extends BaseTypeHandler> { - private final ObjectMapper objectMapper = new ObjectMapper(); - @Override public void setNonNullParameter(PreparedStatement ps, int i, Map parameter, JdbcType jdbcType) throws SQLException { try { - String json = objectMapper.writeValueAsString(parameter); + String json = JsonUtils.MAPPER.writeValueAsString(parameter); ps.setString(i, json); } catch (JsonProcessingException e) { throw new SQLException("Error converting Map to JSON", e); @@ -71,9 +69,9 @@ private Map parseJson(String json) throws SQLException { return new HashMap<>(); } try { - JsonNode jsonNode = objectMapper.readTree(json); + JsonNode jsonNode = JsonUtils.MAPPER.readTree(json); if (jsonNode.isObject()) { - return objectMapper.readValue(json, new TypeReference>() {}); + return JsonUtils.MAPPER.readValue(json, new TypeReference>() {}); } else { // 非对象类型也返回空的 Map return new HashMap<>(); diff --git a/base/src/main/java/com/tinyengine/it/common/utils/JsonUtils.java b/base/src/main/java/com/tinyengine/it/common/utils/JsonUtils.java new file mode 100644 index 00000000..ea72cb32 --- /dev/null +++ b/base/src/main/java/com/tinyengine/it/common/utils/JsonUtils.java @@ -0,0 +1,349 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ + +package com.tinyengine.it.common.utils; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.core.util.DefaultIndenter; +import com.fasterxml.jackson.core.util.DefaultPrettyPrinter; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.tinyengine.it.common.exception.ExceptionEnum; +import com.tinyengine.it.common.exception.ServiceException; +import com.tinyengine.it.common.log.SystemLogAspect; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.ByteBufInputStream; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.InputStream; +import java.net.URL; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.Callable; +import java.util.stream.Collectors; + +/** + * The type json Utils. + * + * @since 2025-06-19 + */ +public class JsonUtils { + public static final ObjectMapper MAPPER = MapperFactory.getDefaultMapper(); + public static final ObjectMapper PRETTY_MAPPER = MapperFactory.getDefaultMapper(); + public static final DefaultPrettyPrinter PRINTER = new DefaultPrettyPrinter(); + private static final Logger LOGGER = LoggerFactory.getLogger(SystemLogAspect.class); + + public JsonUtils() { + } + + private static void initialize() { + SimpleModule module = new SimpleModule(); + MAPPER.findAndRegisterModules(); + MAPPER.registerModule(module); + MAPPER.registerModule(new JavaTimeModule()); + PRETTY_MAPPER.configure(JsonParser.Feature.ALLOW_COMMENTS, true); + PRETTY_MAPPER.configure(SerializationFeature.INDENT_OUTPUT, true); + PRETTY_MAPPER.registerModule(module); + PRETTY_MAPPER.findAndRegisterModules(); + PRINTER.indentObjectsWith(new DefaultIndenter(" ", "\n")); + PRETTY_MAPPER.setDefaultPrettyPrinter(PRINTER); + } + + private static T invoke(Callable callable) { + try { + return callable.call(); + } catch (Exception var2) { + Exception e = var2; + throw new ServiceException(ExceptionEnum.CM001.getResultCode(), ExceptionEnum.CM001.getResultMsg() + e.getMessage()); + } + } + + /** + * To mapper. + * + * @return the MAPPER + */ + public static ObjectMapper mapper() { + return MAPPER; + } + + /** + * To pretty mapper. + * + * @return the string + */ + public static ObjectMapper prettyMapper() { + return PRETTY_MAPPER; + } + + /** + * To encode. + * + * @param obj the obj + * @return the string + */ + public static String encode(Object obj) { + return (String) invoke(() -> { + return MAPPER.writeValueAsString(obj); + }); + } + + /** + * To encode prettily. + * + * @param obj the obj + * @return the string + */ + public static String encodePrettily(Object obj) { + return (String) invoke(() -> { + return PRETTY_MAPPER.writeValueAsString(obj); + }); + } + + /** + * To encode as bytes. + * + * @param obj the obj + * @return the byte + */ + public static byte[] encodeAsBytes(Object obj) { + return (byte[]) invoke(() -> { + return MAPPER.writeValueAsBytes(obj); + }); + } + + /** + * To decode. + * + * @param src the src + * @return the T + */ + public static T decode(byte[] src) { + return (T) decode(src, Object.class); + } + + /** + * To decode. + * + * @param src the src + * @param valueType the valueType + * @return the T + */ + public static T decode(byte[] src, Class valueType) { + return invoke(() -> { + return MAPPER.readValue(src, valueType); + }); + } + + /** + * To decode. + * + * @param src the src + * @param valueTypeRef the valueTypeRef + * @return the T + */ + public static T decode(byte[] src, TypeReference valueTypeRef) { + return invoke(() -> { + return MAPPER.readValue(src, valueTypeRef); + }); + } + + /** + * To decode. + * + * @param url the url + * @param valueType the valueType + * @return the T + */ + public static T decode(URL url, Class valueType) { + return invoke(() -> { + return MAPPER.readValue(url, valueType); + }); + } + + /** + * To decode. + * + * @param src the src + * @return the T + */ + public static T decode(String src) { + return (T) decode(src, Object.class); + } + + /** + * To decode. + * + * @param src the src + * @param valueType the valueType + * @return the T + */ + public static T decode(String src, Class valueType) { + return invoke(() -> { + return MAPPER.readValue(src, valueType); + }); + } + + /** + * To decode. + * + * @param src the src + * @param valueType the valueType + * @return the T + */ + public static T decode(String src, JavaType valueType) { + return invoke(() -> { + return MAPPER.readValue(src, valueType); + }); + } + + /** + * To decode. + * + * @param src the src + * @param valueTypeRef the valueTypeRef + * @return the T + */ + public static T decode(String src, TypeReference valueTypeRef) { + return invoke(() -> { + return MAPPER.readValue(src, valueTypeRef); + }); + } + + /** + * To decode. + * + * @param src the src + * @param valueType the valueType + * @return the T + */ + public static T decode(ByteBuf src, Class valueType) { + return (T) invoke(() -> { + InputStream inputStream = new ByteBufInputStream(src); + Object var3; + try { + var3 = MAPPER.readValue(inputStream, valueType); + } catch (Throwable var6) { + try { + inputStream.close(); + } catch (Throwable var5) { + var6.addSuppressed(var5); + } + throw var6; + } + inputStream.close(); + return var3; + }); + } + + /** + * To decode. + * + * @param src the src + * @param valueType the valueType + * @return the T + */ + public static T decode(InputStream src, Class valueType) { + return invoke(() -> { + return MAPPER.readValue(src, valueType); + }); + } + + /** + * To convert value. + * + * @param fromValue the fromValue + * @param toValueType the toValueType + * @return the T + */ + public static T convertValue(Object fromValue, Class toValueType) { + return invoke(() -> { + return MAPPER.convertValue(fromValue, toValueType); + }); + } + + /** + * To convert value. + * + * @param fromValue the fromValue + * @param toValueType the toValueType + * @return the T + */ + public static T convertValue(Object fromValue, JavaType toValueType) { + return invoke(() -> { + return MAPPER.convertValue(fromValue, toValueType); + }); + } + + /** + * To convert value. + * + * @param fromValue the fromValue + * @param toValueType the toValueType + * @return the T + */ + public static T convertValue(Object fromValue, TypeReference toValueType) { + return invoke(() -> { + return MAPPER.convertValue(fromValue, toValueType); + }); + } + + /** + * Converts various input types (String, Array, List) to a trimmed List of Strings. + * + * @param inputs the inputs + * @return List of trimmed strings, empty list if input is null or unsupported type + */ + public static List getList(Object inputs) { + if (inputs == null) { + return Collections.emptyList(); + } + + // Handle Array → List + if (inputs.getClass().isArray()) { + if (inputs instanceof Object[]) { + inputs = Arrays.asList((Object[]) inputs); + } else { + // Handle primitive arrays by converting to string representation + inputs = Collections.singletonList(inputs.toString()); + } + } + + // Handle String → List + if (inputs instanceof String) { + return Arrays.stream(((String) inputs).split(",")) + .map(String::trim) + .collect(Collectors.toList()); + } + + // Handle List → List + if (inputs instanceof List) { + return ((List) inputs).stream() + .map(Object::toString) + .map(String::trim) + .collect(Collectors.toList()); + } + + LOGGER.error("Bad data type: {}, it should be String, Array, or List.", inputs.getClass().getName()); + return Collections.emptyList(); + } + + static { + initialize(); + } +} diff --git a/base/src/main/java/com/tinyengine/it/common/utils/MapperFactory.java b/base/src/main/java/com/tinyengine/it/common/utils/MapperFactory.java new file mode 100644 index 00000000..ae3dfffb --- /dev/null +++ b/base/src/main/java/com/tinyengine/it/common/utils/MapperFactory.java @@ -0,0 +1,93 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ + +package com.tinyengine.it.common.utils; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.MapperFeature; +import com.fasterxml.jackson.databind.Module; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.json.JsonMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import org.springframework.core.io.support.SpringFactoriesLoader; + +import java.time.OffsetDateTime; +import java.util.List; + +/** + * The type mapper Factory. + * + * @since 2025-06-19 + */ +public class MapperFactory { + public MapperFactory() { + } + + /** + * To register modules. + * + * @param mapper the mapper + * @return + */ + public static void registerModules(ObjectMapper mapper) { + List modules = SpringFactoriesLoader.loadFactories(Module.class, (ClassLoader) null); + mapper.registerModules((Module[]) modules.toArray(new Module[0])); + mapper.registerModule(new SimpleModule()); + mapper.registerModule(new JavaTimeModule()); + mapper.registerModules(new Module[]{(new SimpleModule()).addDeserializer(OffsetDateTime.class, + new OffsetDateTimeDeserializer())}); + } + + /** + * To get default builder. + * + * @return JsonMapper.Builder the JsonMapper.Builder + */ + public static JsonMapper.Builder getDefaultBuilder() { + return (JsonMapper.Builder) ((JsonMapper.Builder) ((JsonMapper.Builder) + ((JsonMapper.Builder) ((JsonMapper.Builder) ((JsonMapper.Builder) + ((JsonMapper.Builder) ((JsonMapper.Builder) ((JsonMapper.Builder) JsonMapper.builder() + .disable(new DeserializationFeature[]{DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES})) + .disable(new SerializationFeature[] {SerializationFeature.FAIL_ON_EMPTY_BEANS})) + .disable(new MapperFeature[]{MapperFeature.DEFAULT_VIEW_INCLUSION})) + .disable(new SerializationFeature[]{SerializationFeature.WRITE_DATES_AS_TIMESTAMPS})) + .disable(new JsonParser.Feature[]{JsonParser.Feature.AUTO_CLOSE_SOURCE})) + .serializationInclusion(JsonInclude.Include.NON_NULL)) + .enable(new DeserializationFeature[]{DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS})) + .enable(new DeserializationFeature[]{DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY})) + .enable(new DeserializationFeature[]{DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT}); + } + + /** + * To get default mapper. + * + * @return ObjectMapper the ObjectMapper. + */ + public static ObjectMapper getDefaultMapper() { + return getDefaultBuilder().build(); + } + + /** + * To get modules registered mapper. + * + * @return ObjectMapper the ObjectMapper. + */ + public static ObjectMapper getModulesRegisteredMapper() { + ObjectMapper mapper = getDefaultMapper(); + registerModules(mapper); + return mapper; + } +} diff --git a/base/src/main/java/com/tinyengine/it/common/utils/OffsetDateTimeDeserializer.java b/base/src/main/java/com/tinyengine/it/common/utils/OffsetDateTimeDeserializer.java new file mode 100644 index 00000000..e8e36ab4 --- /dev/null +++ b/base/src/main/java/com/tinyengine/it/common/utils/OffsetDateTimeDeserializer.java @@ -0,0 +1,68 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ + +package com.tinyengine.it.common.utils; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import org.springframework.util.StringUtils; + +import java.io.IOException; +import java.time.LocalDateTime; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeFormatterBuilder; +import java.time.temporal.TemporalAccessor; + +/** + * The type offset date time Deserializer. + * + * @since 2025-06-19 + */ +public class OffsetDateTimeDeserializer extends JsonDeserializer { + private static final DateTimeFormatter ISO_8601_FORMATTER; + + public OffsetDateTimeDeserializer() { + } + + /** + * To Deserialize. + * + * @param jsonParser the jsonParser + * @param deserializationContext the deserializationContext + * @return OffsetDateTime yhe OffsetDateTime + */ + @Override + public OffsetDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { + if (StringUtils.isEmpty(jsonParser.getText())) { + return null; + } else { + TemporalAccessor temporalAccessor = ISO_8601_FORMATTER.parseBest(jsonParser.getText(), ZonedDateTime::from, LocalDateTime::from); + if (temporalAccessor instanceof ZonedDateTime) { + return ((ZonedDateTime) temporalAccessor).toOffsetDateTime(); + } else { + return temporalAccessor instanceof LocalDateTime ? ((LocalDateTime) temporalAccessor).atOffset(ZoneOffset.UTC) : null; + } + } + + } + + static { + ISO_8601_FORMATTER = (new DateTimeFormatterBuilder().parseCaseInsensitive() + .append(DateTimeFormatter.ISO_LOCAL_DATE).optionalStart() + .appendLiteral('T').optionalEnd().optionalStart().appendLiteral(' ').optionalEnd() + .append(DateTimeFormatter.ISO_LOCAL_TIME).optionalStart().appendOffsetId().optionalEnd().toFormatter()); + } +} diff --git a/base/src/main/java/com/tinyengine/it/common/utils/SecurityFileCheckUtil.java b/base/src/main/java/com/tinyengine/it/common/utils/SecurityFileCheckUtil.java index deae55e3..820315ab 100644 --- a/base/src/main/java/com/tinyengine/it/common/utils/SecurityFileCheckUtil.java +++ b/base/src/main/java/com/tinyengine/it/common/utils/SecurityFileCheckUtil.java @@ -12,7 +12,6 @@ package com.tinyengine.it.common.utils; import cn.hutool.core.util.ObjectUtil; -import com.fasterxml.jackson.databind.ObjectMapper; import com.tinyengine.it.common.exception.ExceptionEnum; import com.tinyengine.it.common.exception.ServiceException; import org.springframework.util.StringUtils; @@ -190,10 +189,9 @@ private static String getFileName(String filePath) { * @param file the file */ public static void isValidJson(MultipartFile file) { - ObjectMapper objectMapper = new ObjectMapper(); try { // 将 MultipartFile 转换为 InputStream 并解析 JSON - objectMapper.readTree(file.getInputStream()); + JsonUtils.MAPPER.readTree(file.getInputStream()); } catch (IOException e) { throw new ServiceException(ExceptionEnum.CM308.getResultCode(), ExceptionEnum.CM308.getResultMsg()); } diff --git a/base/src/main/java/com/tinyengine/it/common/utils/Utils.java b/base/src/main/java/com/tinyengine/it/common/utils/Utils.java index af23969c..b7836835 100644 --- a/base/src/main/java/com/tinyengine/it/common/utils/Utils.java +++ b/base/src/main/java/com/tinyengine/it/common/utils/Utils.java @@ -13,9 +13,6 @@ package com.tinyengine.it.common.utils; import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.enums.Enums; import com.tinyengine.it.common.exception.ExceptionEnum; @@ -161,22 +158,6 @@ public static String toLine(String name) { return result.toString(); } - /** - * Convert map. - * - * @param obj the obj - * @return the map - */ - // 对象转map - public static Map convert(Object obj) { - ObjectMapper objectMapper = new ObjectMapper(); - - objectMapper.registerModule(new JavaTimeModule()); - objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); - // 将对象转换为 JSON 字符串,然后再解析为 Map - return objectMapper.convertValue(obj, Map.class); - } - /** * 解压并处理zip文件,把读取到的JSON文件内容以字符串返回 * @@ -386,9 +367,8 @@ public static Result parseJsonFileStream(MultipartFile file) { String jsonContent = new String(fileBytes, StandardCharsets.UTF_8); String jsonString = removeBOM(jsonContent); - ObjectMapper objectMapper = new ObjectMapper(); Map jsonData = - objectMapper.readValue(jsonString, new TypeReference>() { + JsonUtils.MAPPER.readValue(jsonString, new TypeReference>() { }); jsonFile.setFileName(fileName); diff --git a/base/src/main/java/com/tinyengine/it/controller/BlockController.java b/base/src/main/java/com/tinyengine/it/controller/BlockController.java index 8665b243..bbcfa8dd 100644 --- a/base/src/main/java/com/tinyengine/it/controller/BlockController.java +++ b/base/src/main/java/com/tinyengine/it/controller/BlockController.java @@ -14,7 +14,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.tinyengine.it.common.base.Result; +import com.tinyengine.it.common.enums.Enums; import com.tinyengine.it.common.log.SystemControllerLog; +import com.tinyengine.it.common.utils.JsonUtils; import com.tinyengine.it.mapper.BlockMapper; import com.tinyengine.it.mapper.TenantMapper; import com.tinyengine.it.model.dto.BlockBuildDto; @@ -33,6 +35,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletRequest; import jakarta.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; @@ -46,6 +49,9 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -344,7 +350,7 @@ public Result> getBlockGroups(@Valid @RequestParam(required = false) /** * 修改block * - * @param blockParam blockParam + * @param request request * @param id id * @return block dto */ @@ -358,10 +364,24 @@ public Result> getBlockGroups(@Valid @RequestParam(required = false) }) @SystemControllerLog(description = "区块修改api") @PostMapping("/block/update/{id}") - public Result updateBlocks(@Valid @RequestBody BlockParam blockParam, @PathVariable Integer id, - @RequestParam(value = "appId", required = false) Integer appId) { + public Result updateBlocks(HttpServletRequest request, @PathVariable Integer id, + @RequestParam(value = "appId", required = false) Integer appId) throws IOException { + // Validate content type + String contentType = request.getContentType(); + if (contentType == null || !contentType.contains(Enums.FileType.JSON.getValue())) { + return Result.failed("Content-Type must be application/json"); + } + InputStream inputStream = request.getInputStream(); + String json = new String(inputStream.readAllBytes(), StandardCharsets.UTF_8); + BlockParam blockParam = null; + try { + blockParam = JsonUtils.decode(json, BlockParam.class); + } catch (Exception e) { + return Result.failed("Invalid JSON format: " + e.getMessage()); + } blockParam.setId(id); - return blockService.updateBlockById(blockParam, appId); + blockParam.setAppId(appId); + return blockService.updateBlockById(blockParam); } /** diff --git a/base/src/main/java/com/tinyengine/it/controller/PageController.java b/base/src/main/java/com/tinyengine/it/controller/PageController.java index 208c7baa..c2166b9c 100644 --- a/base/src/main/java/com/tinyengine/it/controller/PageController.java +++ b/base/src/main/java/com/tinyengine/it/controller/PageController.java @@ -12,7 +12,9 @@ package com.tinyengine.it.controller; import com.tinyengine.it.common.base.Result; +import com.tinyengine.it.common.enums.Enums; import com.tinyengine.it.common.log.SystemControllerLog; +import com.tinyengine.it.common.utils.JsonUtils; import com.tinyengine.it.model.dto.PreviewDto; import com.tinyengine.it.model.dto.PreviewParam; import com.tinyengine.it.model.entity.Page; @@ -26,6 +28,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletRequest; import jakarta.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; @@ -38,6 +41,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; import java.util.List; /** @@ -135,7 +141,7 @@ public Result createPage(@Valid @RequestBody Page page) throws Exception { /** * 修改页面 * - * @param page the page + * @param request the request * @return result * @throws Exception the exception */ @@ -148,16 +154,28 @@ public Result createPage(@Valid @RequestBody Page page) throws Exception { }) @SystemControllerLog(description = "修改页面") @PostMapping("/pages/update/{id}") - public Result updatePage(@RequestBody Page page) throws Exception { - page.setLastUpdatedTime(null); - page.setCreatedTime(null); - page.setLastUpdatedBy(null); - if (page.getIsPage()) { - // 更新页面 - return pageService.updatePage(page); - } else { - // 更新文件夹 - return pageService.update(page); + public Result updatePage(HttpServletRequest request) throws IOException { + // Validate content type + String contentType = request.getContentType(); + if (contentType == null || !contentType.contains(Enums.FileType.JSON.getValue())) { + return Result.failed("Content-Type must be application/json"); + } + try (InputStream inputStream = request.getInputStream()) { + String json = new String(inputStream.readAllBytes(), StandardCharsets.UTF_8); + Page page = JsonUtils.decode(json, Page.class); + page.setLastUpdatedTime(null); + page.setLastUpdatedTime(null); + page.setCreatedTime(null); + page.setLastUpdatedBy(null); + if (page.getIsPage()) { + // 更新页面 + return pageService.updatePage(page); + } else { + // 更新文件夹 + return pageService.update(page); + } + } catch (IOException e) { + return Result.failed("Failed to read request body: " + e.getMessage()); } } diff --git a/base/src/main/java/com/tinyengine/it/controller/PageHistoryController.java b/base/src/main/java/com/tinyengine/it/controller/PageHistoryController.java index b156c418..bce7300a 100644 --- a/base/src/main/java/com/tinyengine/it/controller/PageHistoryController.java +++ b/base/src/main/java/com/tinyengine/it/controller/PageHistoryController.java @@ -15,7 +15,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.tinyengine.it.common.base.PageQueryVo; import com.tinyengine.it.common.base.Result; +import com.tinyengine.it.common.enums.Enums; import com.tinyengine.it.common.log.SystemControllerLog; +import com.tinyengine.it.common.utils.JsonUtils; import com.tinyengine.it.model.dto.PublishedPageVo; import com.tinyengine.it.model.entity.PageHistory; import com.tinyengine.it.service.app.PageHistoryService; @@ -26,7 +28,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.validation.Valid; +import jakarta.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; @@ -38,6 +40,9 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; import java.util.List; import java.util.regex.Pattern; @@ -124,7 +129,7 @@ public Result getPageHistoryById(@PathVariable Integer historyId) { /** * 创建页面历史记录 * - * @param pageHistory the page history + * @param request the request * @return result */ @Operation(summary = "创建页面历史记录", description = "创建页面历史记录", parameters = { @@ -136,17 +141,29 @@ public Result getPageHistoryById(@PathVariable Integer historyId) { }) @SystemControllerLog(description = "创建页面历史记录") @PostMapping("/pages/history/create") - public Result createPageHistory(@Valid @RequestBody PageHistory pageHistory) { - PageHistory result; + public Result createPageHistory(HttpServletRequest request) throws IOException { + // Validate content type + String contentType = request.getContentType(); + if (contentType == null || !contentType.contains(Enums.FileType.JSON.getValue())) { + return Result.failed("Content-Type must be application/json"); + } + InputStream inputStream = request.getInputStream(); + String json = new String(inputStream.readAllBytes(), StandardCharsets.UTF_8); + PageHistory pageHistory = null; + try { + pageHistory = JsonUtils.decode(json, PageHistory.class); + } catch (Exception e) { + return Result.failed("Invalid JSON format: " + e.getMessage()); + } if (pageHistory.getPage() != null && Pattern.matches("^[0-9]+$", pageHistory.getPage().toString()) && pageHistory.getPageContent() != null) { pageHistoryService.createPageHistory(pageHistory); int historyId = pageHistory.getId(); - result = pageHistoryService.findPageHistoryById(historyId); + pageHistory = pageHistoryService.findPageHistoryById(historyId); } else { return Result.failed("The request body is missing some parameters"); } - return Result.success(result); + return Result.success(pageHistory); } /** diff --git a/base/src/main/java/com/tinyengine/it/controller/PageTemplateController.java b/base/src/main/java/com/tinyengine/it/controller/PageTemplateController.java index f490d1fd..53cb2342 100644 --- a/base/src/main/java/com/tinyengine/it/controller/PageTemplateController.java +++ b/base/src/main/java/com/tinyengine/it/controller/PageTemplateController.java @@ -13,7 +13,9 @@ package com.tinyengine.it.controller; import com.tinyengine.it.common.base.Result; +import com.tinyengine.it.common.enums.Enums; import com.tinyengine.it.common.log.SystemControllerLog; +import com.tinyengine.it.common.utils.JsonUtils; import com.tinyengine.it.model.entity.PageTemplate; import com.tinyengine.it.service.app.PageTemplateService; @@ -23,7 +25,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.validation.Valid; +import jakarta.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; @@ -35,6 +37,8 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; import java.util.List; /** @@ -59,7 +63,7 @@ public class PageTemplateController { /** * 创建pageTemplate * - * @param pageTemplate pageTemplate + * @param request request * @return pageTemplate信息 */ @Operation(summary = "创建页面模版", description = "创建页面模版", parameters = { @@ -71,7 +75,20 @@ public class PageTemplateController { }) @SystemControllerLog(description = "创建页面模版") @PostMapping("/page-template/create") - public Result createPageTemplate(@Valid @RequestBody PageTemplate pageTemplate) { + public Result createPageTemplate(HttpServletRequest request) throws Exception { + // Validate content type + String contentType = request.getContentType(); + if (contentType == null || !contentType.contains(Enums.FileType.JSON.getValue())) { + return Result.failed("Content-Type must be application/json"); + } + InputStream inputStream = request.getInputStream(); + String json = new String(inputStream.readAllBytes(), StandardCharsets.UTF_8); + PageTemplate pageTemplate = null; + try { + pageTemplate = JsonUtils.decode(json, PageTemplate.class); + } catch (Exception e) { + return Result.failed("Invalid JSON format: " + e.getMessage()); + } return pageTemplateService.createPageTemplate(pageTemplate); } diff --git a/base/src/main/java/com/tinyengine/it/gateway/ai/AiChatClient.java b/base/src/main/java/com/tinyengine/it/gateway/ai/AiChatClient.java index 0433f3b2..1f4c9bbb 100644 --- a/base/src/main/java/com/tinyengine/it/gateway/ai/AiChatClient.java +++ b/base/src/main/java/com/tinyengine/it/gateway/ai/AiChatClient.java @@ -12,20 +12,21 @@ package com.tinyengine.it.gateway.ai; -import static com.tinyengine.it.common.exception.ExceptionEnum.CM322; - -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; +import com.tinyengine.it.common.exception.ExceptionEnum; import com.tinyengine.it.common.exception.ServiceException; +import com.tinyengine.it.common.utils.JsonUtils; import com.tinyengine.it.config.AiChatConfig; import com.tinyengine.it.model.dto.AiParam; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; -import reactor.core.publisher.Mono; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; -import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; import java.util.Collections; import java.util.Map; @@ -38,7 +39,9 @@ @Slf4j public class AiChatClient { private final Map config; - private WebClient webClient; + // 新增 Setter 方法,便于测试时注入 Mock 对象 + @Setter + private RestTemplate restTemplate; /** * Instantiates a new Ai chat client. @@ -47,8 +50,8 @@ public class AiChatClient { */ public AiChatClient(String model, String token) { this.config = AiChatConfig.getAiChatConfig(model, token); - // Optional: Default base URL - this.webClient = WebClient.builder().baseUrl("https://default.api.url").build(); + // Use RestTemplate for WebMVC + this.restTemplate = new RestTemplate(); } /** @@ -72,26 +75,12 @@ public Map executeChatRequest(AiParam openAiBodyDto) { log.info("Headers: " + configData.headers); HttpMethod method = "POST".equalsIgnoreCase(httpRequestOption.method) ? HttpMethod.POST : HttpMethod.GET; - WebClient.RequestHeadersSpec requestSpec = webClient.method(method).uri(httpRequestUrl); - - for (Map.Entry header : configData.headers.entrySet()) { - requestSpec.header(header.getKey(), header.getValue()); - } + HttpHeaders headers = new HttpHeaders(); + configData.headers.forEach(headers::set); - if ("POST".equalsIgnoreCase(httpRequestOption.method) && !openAiBodyDto.getMessages().isEmpty()) { - if (requestSpec instanceof WebClient.RequestBodySpec) { - requestSpec = ((WebClient.RequestBodySpec) requestSpec).bodyValue(openAiBodyDto); - // Add request body - } - } - - Mono stringMono = requestSpec.retrieve().bodyToMono(String.class); - return stringMono.map(response -> { - try { - return new ObjectMapper().readValue(response, new TypeReference>() {}); - } catch (JsonProcessingException e) { - throw new ServiceException(CM322.getResultCode(), e.getMessage()); - } - }).block(); // 等待结果 + HttpEntity entity = new HttpEntity<>(openAiBodyDto, headers); + ResponseEntity responseEntity = restTemplate.exchange(httpRequestUrl, method, entity, String.class); + return JsonUtils.decode(responseEntity.getBody(), new TypeReference>() {}); } -} + +} \ No newline at end of file diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImpl.java index f258e5d3..cc305cc2 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/I18nEntryServiceImpl.java @@ -16,12 +16,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.enums.Enums; import com.tinyengine.it.common.exception.ExceptionEnum; import com.tinyengine.it.common.exception.ServiceException; import com.tinyengine.it.common.log.SystemServiceLog; +import com.tinyengine.it.common.utils.JsonUtils; import com.tinyengine.it.common.utils.SecurityFileCheckUtil; import com.tinyengine.it.common.utils.Utils; import com.tinyengine.it.mapper.I18nEntryMapper; @@ -492,12 +492,11 @@ public List parseZipFileStream(MultipartFile file) throws Exception */ public List parseZip(FileInfo fileInfo) throws ServiceException { List entriesItems = new ArrayList<>(); - ObjectMapper objectMapper = new ObjectMapper(); if (!fileInfo.getIsDirectory()) { EntriesItem entriesItem = setLang(fileInfo.getName()); // 处理 JSON 内容 try { - Map jsonData = objectMapper.readValue(fileInfo.getContent(), + Map jsonData = JsonUtils.MAPPER.readValue(fileInfo.getContent(), new TypeReference>() {}); entriesItem.setEntries(Utils.flat(jsonData)); } catch (JsonProcessingException e) { diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/v1/AppV1ServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/v1/AppV1ServiceImpl.java index b7f60f03..d2846ed0 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/v1/AppV1ServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/v1/AppV1ServiceImpl.java @@ -12,8 +12,10 @@ package com.tinyengine.it.service.app.impl.v1; +import static com.tinyengine.it.common.utils.JsonUtils.convertValue; import static com.tinyengine.it.common.utils.Utils.findMaxVersion; +import com.fasterxml.jackson.core.type.TypeReference; import com.tinyengine.it.common.exception.ServiceException; import com.tinyengine.it.common.log.SystemServiceLog; import com.tinyengine.it.common.utils.Schema; @@ -235,7 +237,7 @@ private void mergeMaps(Map source, Map target) { private SchemaMeta getSchemaMeta(MetaDto metaDto) { App metaDtoApp = metaDto.getApp(); - Map appData = Utils.convert(metaDtoApp); + Map appData = convertValue(metaDtoApp, new TypeReference>() {}); Map config = new HashMap<>(); config.put("sdkVersion", "1.0.3"); config.put("historyMode", "hash"); @@ -464,7 +466,7 @@ public List getSchemaComponentsTree(MetaDto metaDto) { resKeys.add("is_page"); resKeys.add("is_default"); for (Page pageInfo : pageList) { - Map data = Utils.convert(pageInfo); + Map data = convertValue(pageInfo, new TypeReference>() {}); boolean isToLine = false; Map page = formatDataFields(data, resKeys, isToLine); if (app.getHomePage() != null) { diff --git a/base/src/main/java/com/tinyengine/it/service/material/BlockService.java b/base/src/main/java/com/tinyengine/it/service/material/BlockService.java index efc62c24..0b14e77c 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/BlockService.java +++ b/base/src/main/java/com/tinyengine/it/service/material/BlockService.java @@ -65,11 +65,11 @@ public interface BlockService extends IService { /** * 根据主键id更新表t_block信息 - * @param appId appId + * * @param blockParam the block param * @return the BlockDto */ - Result updateBlockById(BlockParam blockParam, Integer appId); + Result updateBlockById(BlockParam blockParam); /** * 新增表t_block数据 diff --git a/base/src/main/java/com/tinyengine/it/service/material/impl/BlockServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/material/impl/BlockServiceImpl.java index 20191322..5ac83521 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/impl/BlockServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/material/impl/BlockServiceImpl.java @@ -19,12 +19,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.context.LoginUserContext; import com.tinyengine.it.common.enums.Enums; import com.tinyengine.it.common.exception.ExceptionEnum; import com.tinyengine.it.common.log.SystemServiceLog; +import com.tinyengine.it.common.utils.JsonUtils; import com.tinyengine.it.mapper.AppMapper; import com.tinyengine.it.mapper.BlockGroupBlockMapper; import com.tinyengine.it.mapper.BlockGroupMapper; @@ -160,11 +160,10 @@ public Integer deleteBlockById(Integer id) { * 根据主键id更新表t_block数据 * * @param blockParam blockParam - * @param appId * @return blockDto */ @Override - public Result updateBlockById(BlockParam blockParam, Integer appId) { + public Result updateBlockById(BlockParam blockParam) { if (blockParam == null || blockParam.getId() == null) { return Result.failed(ExceptionEnum.CM002); } @@ -172,7 +171,7 @@ public Result updateBlockById(BlockParam blockParam, Integer appId) { if (blockResult == null) { return Result.failed(ExceptionEnum.CM001); } - if (!Objects.equals(blockResult.getAppId(), appId)) { + if (!Objects.equals(blockResult.getAppId(), blockParam.getAppId())) { return Result.failed(ExceptionEnum.CM007); } // 把前端传参赋值给实体 @@ -277,10 +276,9 @@ public Result createBlock(BlockParam blockParam) { */ public Map> getBlockAssets(Map pageContent, String framework) { List block = new ArrayList<>(); - ObjectMapper objectMapper = new ObjectMapper(); try { - traverseBlocks(objectMapper.writeValueAsString(pageContent), block); + traverseBlocks(JsonUtils.MAPPER.writeValueAsString(pageContent), block); } catch (JsonProcessingException e) { log.error(e.getMessage()); } @@ -350,23 +348,22 @@ public List getBlockInfo(List block, String framework) { * @throws JsonProcessingException the json processing exception */ public void traverseBlocks(String content, List block) throws JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - JsonNode jsonNode = objectMapper.readTree(content); + JsonNode jsonNode = JsonUtils.MAPPER.readTree(content); // 判断传过来的参数是JSON数组还是JSON对象 if (content != null && jsonNode.isArray()) { - List schema = objectMapper.readValue(content, List.class); + List schema = JsonUtils.MAPPER.readValue(content, List.class); for (Object prop : schema) { - traverseBlocks(objectMapper.writeValueAsString(prop), block); + traverseBlocks(JsonUtils.MAPPER.writeValueAsString(prop), block); } } else { - Map schemaMap = objectMapper.readValue(content, Map.class); + Map schemaMap = JsonUtils.MAPPER.readValue(content, Map.class); if (isBlock(schemaMap) && !block.contains(schemaMap.get("componentName"))) { if (schemaMap.get("componentName") instanceof String) { block.add((String) schemaMap.get("componentName")); } } if (schemaMap.containsKey("children") && schemaMap.get("children") instanceof List) { - traverseBlocks(objectMapper.writeValueAsString(schemaMap.get("children")), block); + traverseBlocks(JsonUtils.MAPPER.writeValueAsString(schemaMap.get("children")), block); } } } @@ -563,8 +560,9 @@ public Result deploy(BlockBuildDto blockBuildDto) { blockParam.setLatestHistoryId(blockHistory); blockParam.setLatestVersion(blockHistory.getVersion()); blockParam.setId(blockDto.getId()); + blockParam.setAppId(blockDto.getAppId()); blockParam.setGroups(null); - return updateBlockById(blockParam, blockDto.getAppId()); + return updateBlockById(blockParam); } catch (Exception e) { return Result.failed(ExceptionEnum.CM001); } diff --git a/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java index ccf1f334..14d50aa0 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java @@ -147,7 +147,8 @@ public Result readFileAndBulkCreate(MultipartFile file) { componentLibrary.setIsOfficial(true); ComponentLibrary library = new ComponentLibrary(); library.setName(componentLibrary.getName()); - library.setVersion(componentLibrary.getVersion()); + // 默认覆盖更新 其他业务需求多版本组件可放开 + // library.setVersion(componentLibrary.getVersion()); // 查询是否存在组件库 List componentLibraryList = componentLibraryMapper.queryComponentLibraryByCondition( library); diff --git a/base/src/test/java/com/tinyengine/it/common/utils/UtilsTest.java b/base/src/test/java/com/tinyengine/it/common/utils/UtilsTest.java index c3171e2d..b32bc49a 100644 --- a/base/src/test/java/com/tinyengine/it/common/utils/UtilsTest.java +++ b/base/src/test/java/com/tinyengine/it/common/utils/UtilsTest.java @@ -62,14 +62,6 @@ void testToLine() { assertEquals("name", result); } - @Test - void testConvert() { - Map mapData = new HashMap(); - mapData.put("key", "value"); - Map result = Utils.convert(mapData); - assertEquals("value", result.get("key")); - } - @Test void testFlat() { Map mapData = new HashMap(); diff --git a/base/src/test/java/com/tinyengine/it/controller/BlockControllerTest.java b/base/src/test/java/com/tinyengine/it/controller/BlockControllerTest.java index 2372099d..c16c54dd 100644 --- a/base/src/test/java/com/tinyengine/it/controller/BlockControllerTest.java +++ b/base/src/test/java/com/tinyengine/it/controller/BlockControllerTest.java @@ -13,7 +13,6 @@ package com.tinyengine.it.controller; import static org.mockito.ArgumentMatchers.argThat; -import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.anyString; @@ -40,7 +39,10 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import org.springframework.mock.web.MockHttpServletRequest; +import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -194,17 +196,18 @@ void testGetAllBlockCategories() { } @Test - void testUpdateBlocks() { + void testUpdateBlocks() throws IOException { BlockParam blockParam = new BlockParam(); blockParam.setName("Updated Block"); BlockDto returnData = new BlockDto(); returnData.setName("Updated Block"); - when(blockService.updateBlockById(any(BlockParam.class), anyInt())).thenReturn(Result.success(returnData)); + when(blockService.updateBlockById(any(BlockParam.class))).thenReturn(Result.success(returnData)); when(blockService.queryBlockById(anyInt())).thenReturn(returnData); - - Result result = blockController.updateBlocks(blockParam, Integer.valueOf(0), Integer.valueOf(1)); + String json = "{\"isDefault\":true}"; + MockHttpServletRequest request = new MockHttpServletRequest(); + request.setContent(json.getBytes(StandardCharsets.UTF_8)); // 设置请求体 + request.setContentType("application/json"); + Result result = blockController.updateBlocks(request, Integer.valueOf(0), Integer.valueOf(1)); Assertions.assertEquals(returnData, result.getData()); - verify(blockService).updateBlockById( - argThat(param -> param.getName().equals("Updated Block") && param.getId().equals(0)), eq(1)); } } diff --git a/base/src/test/java/com/tinyengine/it/controller/PageControllerTest.java b/base/src/test/java/com/tinyengine/it/controller/PageControllerTest.java index 04758f1e..403c8e34 100644 --- a/base/src/test/java/com/tinyengine/it/controller/PageControllerTest.java +++ b/base/src/test/java/com/tinyengine/it/controller/PageControllerTest.java @@ -27,7 +27,9 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import org.springframework.mock.web.MockHttpServletRequest; +import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.List; @@ -79,10 +81,13 @@ void testCreatePage() throws Exception { @Test void testUpdatePage() throws Exception { when(pageService.updatePage(any(Page.class))).thenReturn(new Result()); - + String json = "{\"isPage\":true}"; + MockHttpServletRequest request = new MockHttpServletRequest(); + request.setContent(json.getBytes(StandardCharsets.UTF_8)); // 设置请求体 + request.setContentType("application/json"); Page page = new Page(); page.setIsPage(true); - Result result = pageController.updatePage(page); + Result result = pageController.updatePage(request); Assertions.assertNull(result.getData()); } diff --git a/base/src/test/java/com/tinyengine/it/controller/PageHistoryControllerTest.java b/base/src/test/java/com/tinyengine/it/controller/PageHistoryControllerTest.java index 86a942ef..b66dfb58 100644 --- a/base/src/test/java/com/tinyengine/it/controller/PageHistoryControllerTest.java +++ b/base/src/test/java/com/tinyengine/it/controller/PageHistoryControllerTest.java @@ -26,7 +26,9 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import org.springframework.mock.web.MockHttpServletRequest; +import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -67,15 +69,18 @@ void testGetPageHistoryById() { } @Test - void testCreatePageHistory() { + void testCreatePageHistory() throws Exception { PageHistory mockData = new PageHistory(); mockData.setPage(1); mockData.setId(1); mockData.setPageContent(new HashMap<>()); when(pageHistoryService.findPageHistoryById(anyInt())).thenReturn(mockData); - when(pageHistoryService.createPageHistory(any(PageHistory.class))).thenReturn(Integer.valueOf(0)); - - Result result = pageHistoryController.createPageHistory(mockData); + when(pageHistoryService.createPageHistory(any(PageHistory.class))).thenReturn(1); + String json = "{\"id\": 1, \"page\": 1, \"isPage\": true, \"page_content\": {\"id\": 1}}"; + MockHttpServletRequest request = new MockHttpServletRequest(); + request.setContent(json.getBytes(StandardCharsets.UTF_8)); // 设置请求体 + request.setContentType("application/json"); + Result result = pageHistoryController.createPageHistory(request); Assertions.assertEquals(mockData, result.getData()); } diff --git a/base/src/test/java/com/tinyengine/it/controller/PageTemplateControllerTest.java b/base/src/test/java/com/tinyengine/it/controller/PageTemplateControllerTest.java index 243a2f71..7696d4ee 100644 --- a/base/src/test/java/com/tinyengine/it/controller/PageTemplateControllerTest.java +++ b/base/src/test/java/com/tinyengine/it/controller/PageTemplateControllerTest.java @@ -27,7 +27,9 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import org.springframework.mock.web.MockHttpServletRequest; +import java.nio.charset.StandardCharsets; import java.util.List; /** @@ -47,11 +49,14 @@ void setUp() { } @Test - void testCreatePageTemplate() { + void testCreatePageTemplate() throws Exception { when(pageTemplateService.createPageTemplate(any(PageTemplate.class))) .thenReturn(new Result()); - - Result result = pageTemplateController.createPageTemplate(new PageTemplate()); + String json = "{\"isPage\":true}"; + MockHttpServletRequest request = new MockHttpServletRequest(); + request.setContent(json.getBytes(StandardCharsets.UTF_8)); // 设置请求体 + request.setContentType("application/json"); + Result result = pageTemplateController.createPageTemplate(request); Assertions.assertEquals(new Result(), result); } diff --git a/base/src/test/java/com/tinyengine/it/gateway/ai/AiChatClientTest.java b/base/src/test/java/com/tinyengine/it/gateway/ai/AiChatClientTest.java index 7918bc4e..7f829d04 100644 --- a/base/src/test/java/com/tinyengine/it/gateway/ai/AiChatClientTest.java +++ b/base/src/test/java/com/tinyengine/it/gateway/ai/AiChatClientTest.java @@ -12,9 +12,13 @@ package com.tinyengine.it.gateway.ai; +import static javax.management.Query.eq; +import static org.junit.Assert.assertEquals; +import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyString; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import com.tinyengine.it.common.utils.TestUtil; @@ -22,8 +26,6 @@ import com.tinyengine.it.model.dto.AiMessages; import com.tinyengine.it.model.dto.AiParam; -import reactor.core.publisher.Mono; - import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -31,11 +33,13 @@ import org.mockito.InjectMocks; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import org.springframework.http.HttpEntity; import org.springframework.http.HttpMethod; -import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; -import java.util.ArrayList; -import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -45,52 +49,51 @@ * @since 2024-10-29 */ class AiChatClientTest { - @InjectMocks - private AiChatClient aiChatClient; - @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); } @Test - void testExecuteChatRequest() throws NoSuchFieldException, IllegalAccessException { - HashMap headers = new HashMap() { - { - put("headers", "headers"); - } - }; + void testExecuteChatRequest() { + // 1. 构造测试数据 String modelName = "ERNIE-4.0-8K"; + Map headers = new HashMap<>(); + headers.put("Content-Type", "application/json"); + AiChatConfig.HttpRequestOption option = new AiChatConfig.HttpRequestOption("POST", "json", "json", 100); - AiChatConfig.AiChatConfigData configData = new AiChatConfig.AiChatConfigData("httpRequestUrl", option, headers, - null); - Map config = new HashMap<>(); - config.put(modelName, configData); - WebClient mockClient = Mockito.mock(WebClient.class, Answers.RETURNS_DEEP_STUBS); - WebClient.RequestBodyUriSpec bodyUriSpec = Mockito.mock(WebClient.RequestBodyUriSpec.class, RETURNS_DEEP_STUBS); - Mono mono = Mockito.mock(Mono.class, RETURNS_DEEP_STUBS); - Map result = new HashMap<>(); - result.put("data", "data"); - when(mono.map(any()).block()).thenReturn(result); - when(mockClient.method(any(HttpMethod.class)).uri(anyString())).thenReturn(bodyUriSpec); - WebClient.RequestHeadersSpec headersSpec = Mockito.mock(WebClient.RequestHeadersSpec.class, RETURNS_DEEP_STUBS); - when(bodyUriSpec.bodyValue(any())).thenReturn(headersSpec); - when(headersSpec.retrieve().bodyToMono(String.class)).thenReturn(mono); + AiChatConfig.AiChatConfigData configData = new AiChatConfig.AiChatConfigData( + "http://mock-api-url", option, headers, null); + + // 2. 构造 AiParam 请求参数 + Map foundationModel = new HashMap<>(); + foundationModel.put("model", modelName); + foundationModel.put("token", "mock-token"); + + AiMessages message = new AiMessages(); + message.setRole("user"); + message.setContent("Hello, AI!"); + AiParam param = new AiParam(foundationModel, Collections.singletonList(message)); + + // 3. Mock RestTemplate 的行为 + RestTemplate mockRestTemplate = Mockito.mock(RestTemplate.class); + ResponseEntity mockResponse = new ResponseEntity<>( + "{\"data\":\"mock-response\"}", HttpStatus.OK); + + // 关键点:设置 Mock 行为,匹配任意参数 + when(mockRestTemplate.exchange( + anyString(), // 任意 URL + any(HttpMethod.class), // 任意 HTTP 方法 + any(HttpEntity.class), // 任意请求体 + any(Class.class) // 任意返回类型(如 String.class) + )).thenReturn(mockResponse); - HashMap foundationModel = new HashMap<>(); - foundationModel.put("model", "ERNIE-4.0-8K"); - foundationModel.put("token", "asdf"); + // 4. 创建 AiChatClient 并注入 Mock 的 RestTemplate + AiChatClient aiChatClient = new AiChatClient("ERNIE-4.0-8K", "mock-token"); + aiChatClient.setRestTemplate(mockRestTemplate); - ArrayList messages = new ArrayList<>(); - AiMessages aiMessages = new AiMessages(); - aiMessages.setContent("dddd编码时遵从以下几条要求aaa"); - aiMessages.setName("John"); - aiMessages.setRole("user"); - messages.add(aiMessages); - AiParam param = new AiParam(foundationModel, Arrays.asList(aiMessages)); - TestUtil.setPrivateValue(aiChatClient, "config", config); - TestUtil.setPrivateValue(aiChatClient, "webClient", mockClient); - Map returnData = aiChatClient.executeChatRequest(param); - Assertions.assertEquals("data", returnData.get("data")); + // 5. 调用方法并验证结果 + Map result = aiChatClient.executeChatRequest(param); + assertEquals("mock-response", result.get("data")); // 验证返回的数据 } -} +} \ No newline at end of file diff --git a/base/src/test/java/com/tinyengine/it/service/app/impl/v1/AppV1ServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/app/impl/v1/AppV1ServiceImplTest.java index 469b210b..02a1d11b 100644 --- a/base/src/test/java/com/tinyengine/it/service/app/impl/v1/AppV1ServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/app/impl/v1/AppV1ServiceImplTest.java @@ -18,7 +18,7 @@ import static org.mockito.Mockito.when; import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; +import com.tinyengine.it.common.utils.JsonUtils; import com.tinyengine.it.mapper.AppExtensionMapper; import com.tinyengine.it.mapper.AppMapper; import com.tinyengine.it.mapper.BlockGroupMapper; @@ -116,8 +116,7 @@ void testAppSchema() throws JsonProcessingException { String json = "{\"dataHandler\":{\"type\":\"JSFunction\",\"value\":\"function dataHanlder(res){\\n return res;\\n}\"}}"; - ObjectMapper objectMapper = new ObjectMapper(); - Map dataSourceGlobal = objectMapper.readValue(json, Map.class); + Map dataSourceGlobal = JsonUtils.MAPPER.readValue(json, Map.class); app.setDataSourceGlobal(dataSourceGlobal); when(appMapper.queryAppById(anyInt())).thenReturn(app); diff --git a/base/src/test/java/com/tinyengine/it/service/material/impl/BlockServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/material/impl/BlockServiceImplTest.java index e561482e..57e3c6c0 100644 --- a/base/src/test/java/com/tinyengine/it/service/material/impl/BlockServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/material/impl/BlockServiceImplTest.java @@ -138,13 +138,14 @@ void testCreateBlock() { @Test void testUpdateBlockById() { BlockParam blockParam = new BlockParam(); + blockParam.setAppId(1); when(blockMapper.updateBlockById(any())).thenReturn(1); when(blockMapper.findBlockAndGroupAndHistoByBlockId(anyInt())).thenReturn(new BlockDto()); Block block = new Block(); block.setAppId(1); when(blockMapper.queryBlockById(blockParam.getId())).thenReturn(block); - Result result = blockServiceImpl.updateBlockById(blockParam, 1); + Result result = blockServiceImpl.updateBlockById(blockParam); Assertions.assertEquals(null, result.getData()); } diff --git a/pom.xml b/pom.xml index c6d4b3b3..be68c86c 100644 --- a/pom.xml +++ b/pom.xml @@ -30,9 +30,10 @@ 3.3.3 2.3.32 2.5.4 - 2.5.0 + 2.5.0 4.11.0 6.1.0 + 4.1.118.Final 1.0-SNAPSHOT @@ -42,7 +43,7 @@ org.springframework.boot - spring-boot-starter-webflux + spring-boot-starter-web org.springframework.boot @@ -102,8 +103,8 @@ org.springdoc - springdoc-openapi-starter-webflux-ui - ${springdoc-openapi-starter-webflux-ui.version} + springdoc-openapi-starter-webmvc-ui + ${springdoc-openapi-starter-webmvc-ui.version} @@ -129,6 +130,11 @@ test ${mockito-inline.version} + + io.netty + netty-buffer + ${netty-buffer-version} + org.junit.vintage junit-vintage-engine From 414f7ba3a4288761bdecaa1c388bd7867de156aa Mon Sep 17 00:00:00 2001 From: lu-yg <128358973+lu-yg@users.noreply.github.com> Date: Thu, 26 Jun 2025 20:01:35 -0700 Subject: [PATCH 06/14] fix: Modify code format (#244) --- .../java/com/tinyengine/it/common/utils/JsonUtils.java | 2 +- .../java/com/tinyengine/it/gateway/ai/AiChatClient.java | 4 +--- .../it/service/material/impl/ComponentServiceImpl.java | 5 ++--- .../com/tinyengine/it/gateway/ai/AiChatClientTest.java | 8 -------- 4 files changed, 4 insertions(+), 15 deletions(-) diff --git a/base/src/main/java/com/tinyengine/it/common/utils/JsonUtils.java b/base/src/main/java/com/tinyengine/it/common/utils/JsonUtils.java index ea72cb32..2d5948d0 100644 --- a/base/src/main/java/com/tinyengine/it/common/utils/JsonUtils.java +++ b/base/src/main/java/com/tinyengine/it/common/utils/JsonUtils.java @@ -244,7 +244,7 @@ public static T decode(ByteBuf src, Class valueType) { } catch (Throwable var5) { var6.addSuppressed(var5); } - throw var6; + throw new ServiceException(ExceptionEnum.CM001.getResultCode(),var6.getMessage()); } inputStream.close(); return var3; diff --git a/base/src/main/java/com/tinyengine/it/gateway/ai/AiChatClient.java b/base/src/main/java/com/tinyengine/it/gateway/ai/AiChatClient.java index 1f4c9bbb..5e5b47ae 100644 --- a/base/src/main/java/com/tinyengine/it/gateway/ai/AiChatClient.java +++ b/base/src/main/java/com/tinyengine/it/gateway/ai/AiChatClient.java @@ -13,8 +13,6 @@ package com.tinyengine.it.gateway.ai; import com.fasterxml.jackson.core.type.TypeReference; -import com.tinyengine.it.common.exception.ExceptionEnum; -import com.tinyengine.it.common.exception.ServiceException; import com.tinyengine.it.common.utils.JsonUtils; import com.tinyengine.it.config.AiChatConfig; import com.tinyengine.it.model.dto.AiParam; @@ -39,7 +37,7 @@ @Slf4j public class AiChatClient { private final Map config; - // 新增 Setter 方法,便于测试时注入 Mock 对象 + @Setter private RestTemplate restTemplate; diff --git a/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java index 14d50aa0..3e23828e 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/material/impl/ComponentServiceImpl.java @@ -147,8 +147,7 @@ public Result readFileAndBulkCreate(MultipartFile file) { componentLibrary.setIsOfficial(true); ComponentLibrary library = new ComponentLibrary(); library.setName(componentLibrary.getName()); - // 默认覆盖更新 其他业务需求多版本组件可放开 - // library.setVersion(componentLibrary.getVersion()); + // 默认覆盖更新 其他业务需求多版本组件可放开 library.setVersion(componentLibrary.getVersion()); // 查询是否存在组件库 List componentLibraryList = componentLibraryMapper.queryComponentLibraryByCondition( library); @@ -376,7 +375,7 @@ private List buildComponentList(BundleDto bundleDto, List snippetMap = BeanUtil.beanToMap(snippet); component.setSnippets(Arrays.asList(snippetMap)); - if(Objects.isNull(component.getCategory())) { + if (Objects.isNull(component.getCategory())) { component.setCategory(child.getGroup()); } } diff --git a/base/src/test/java/com/tinyengine/it/gateway/ai/AiChatClientTest.java b/base/src/test/java/com/tinyengine/it/gateway/ai/AiChatClientTest.java index 7f829d04..428dccb0 100644 --- a/base/src/test/java/com/tinyengine/it/gateway/ai/AiChatClientTest.java +++ b/base/src/test/java/com/tinyengine/it/gateway/ai/AiChatClientTest.java @@ -12,25 +12,17 @@ package com.tinyengine.it.gateway.ai; -import static javax.management.Query.eq; import static org.junit.Assert.assertEquals; -import static org.mockito.ArgumentMatchers.argThat; -import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyString; -import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import com.tinyengine.it.common.utils.TestUtil; import com.tinyengine.it.config.AiChatConfig; import com.tinyengine.it.model.dto.AiMessages; import com.tinyengine.it.model.dto.AiParam; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.mockito.Answers; -import org.mockito.InjectMocks; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.springframework.http.HttpEntity; From ad25aba36634a3f475882952a02ae2e9df82f243 Mon Sep 17 00:00:00 2001 From: lu-yg <128358973+lu-yg@users.noreply.github.com> Date: Mon, 14 Jul 2025 02:20:48 -0700 Subject: [PATCH 07/14] fix: Fix block update bug (#245) --- .../com/tinyengine/it/controller/BlockController.java | 6 ++++++ .../tinyengine/it/mapper/BlockGroupBlockMapper.java | 10 +++++++++- .../java/com/tinyengine/it/mapper/BlockMapper.java | 10 ++++++---- .../java/com/tinyengine/it/model/dto/NotGroupDto.java | 6 +++++- .../it/service/material/impl/BlockServiceImpl.java | 5 +++-- .../it/service/material/impl/BlockServiceImplTest.java | 5 +++++ 6 files changed, 34 insertions(+), 8 deletions(-) diff --git a/base/src/main/java/com/tinyengine/it/controller/BlockController.java b/base/src/main/java/com/tinyengine/it/controller/BlockController.java index bbcfa8dd..62adf9ea 100644 --- a/base/src/main/java/com/tinyengine/it/controller/BlockController.java +++ b/base/src/main/java/com/tinyengine/it/controller/BlockController.java @@ -255,13 +255,19 @@ public Result> allTags() { @GetMapping("/block/notgroup/{groupId}") public Result> findBlocksNotInGroup(@PathVariable Integer groupId, @RequestParam(value = "label_contains", required = false) String label, + @RequestParam(value = "name_cn_contains", required = false) String name, @RequestParam(value = "tags_contains", required = false) String[] tags, @RequestParam(value = "createdBy", required = false) String createdBy) { NotGroupDto notGroupDto = new NotGroupDto(); notGroupDto.setGroupId(groupId); notGroupDto.setLabel(label); + notGroupDto.setName(name); notGroupDto.setCreatedBy(createdBy); notGroupDto.setTags(null); + if (tags != null && tags.length > 0) { + notGroupDto.setTags(JsonUtils.encode(tags)); // 将数组转换为有效的 JSON 字符串 + } + List blocksList = blockService.getNotInGroupBlocks(notGroupDto); return Result.success(blocksList); diff --git a/base/src/main/java/com/tinyengine/it/mapper/BlockGroupBlockMapper.java b/base/src/main/java/com/tinyengine/it/mapper/BlockGroupBlockMapper.java index 2318bb27..3fb854b8 100644 --- a/base/src/main/java/com/tinyengine/it/mapper/BlockGroupBlockMapper.java +++ b/base/src/main/java/com/tinyengine/it/mapper/BlockGroupBlockMapper.java @@ -94,8 +94,16 @@ public interface BlockGroupBlockMapper extends BaseMapper { * 通过区块分组id和区块删除区块与分组关联关系 * @param blockId the block id * @param groupId the block group id - * @return the list + * @return the Integer */ @Delete("delete from r_block_group_block where block_group_id = #{groupId} and block_id = #{blockId}") Integer deleteByGroupIdAndBlockId(Integer groupId, Integer blockId); + + /** + * 通过区块id删除区块与分组关联关系 + * @param blockId the block id + * @return the Integer + */ + @Delete("delete from r_block_group_block where block_id = #{blockId}") + Integer deleteByBlockId(Integer blockId); } diff --git a/base/src/main/java/com/tinyengine/it/mapper/BlockMapper.java b/base/src/main/java/com/tinyengine/it/mapper/BlockMapper.java index 3ce63173..b2a2c61d 100644 --- a/base/src/main/java/com/tinyengine/it/mapper/BlockMapper.java +++ b/base/src/main/java/com/tinyengine/it/mapper/BlockMapper.java @@ -156,11 +156,13 @@ public interface BlockMapper extends BaseMapper { }) @Select("") + + " OR b.created_by LIKE CONCAT('%', #{notGroupDto.createdBy}, '%') " + " " + + " " + + " OR JSON_CONTAINS(b.tags, #{notGroupDto.tags})" + " " + "" + "") List findBlocksReturn(@Param("notGroupDto") NotGroupDto notGroupDto); /** diff --git a/base/src/main/java/com/tinyengine/it/model/dto/NotGroupDto.java b/base/src/main/java/com/tinyengine/it/model/dto/NotGroupDto.java index 451dd26e..27f34d26 100644 --- a/base/src/main/java/com/tinyengine/it/model/dto/NotGroupDto.java +++ b/base/src/main/java/com/tinyengine/it/model/dto/NotGroupDto.java @@ -31,9 +31,13 @@ public class NotGroupDto { @Schema(name = "label", description = "区块编码") private String label; + @Schema(name = "name", description = "区块名称") + private String name; + + @Schema(name = "createdBY", description = "创建人id") private String createdBy; @Schema(name = "tags", description = "区块标签") - private String [] tags; + private String tags; } diff --git a/base/src/main/java/com/tinyengine/it/service/material/impl/BlockServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/material/impl/BlockServiceImpl.java index 5ac83521..7a3867b0 100644 --- a/base/src/main/java/com/tinyengine/it/service/material/impl/BlockServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/material/impl/BlockServiceImpl.java @@ -153,7 +153,8 @@ public List queryBlockByCondition(Block block) { */ @Override public Integer deleteBlockById(Integer id) { - return baseMapper.deleteBlockById(id); + baseMapper.deleteBlockById(id); + return blockGroupBlockMapper.deleteByBlockId(id); } /** @@ -171,7 +172,7 @@ public Result updateBlockById(BlockParam blockParam) { if (blockResult == null) { return Result.failed(ExceptionEnum.CM001); } - if (!Objects.equals(blockResult.getAppId(), blockParam.getAppId())) { + if (!Objects.equals(blockResult.getOccupierBy(), loginUserContext.getLoginUserId())) { return Result.failed(ExceptionEnum.CM007); } // 把前端传参赋值给实体 diff --git a/base/src/test/java/com/tinyengine/it/service/material/impl/BlockServiceImplTest.java b/base/src/test/java/com/tinyengine/it/service/material/impl/BlockServiceImplTest.java index 57e3c6c0..a633c0dd 100644 --- a/base/src/test/java/com/tinyengine/it/service/material/impl/BlockServiceImplTest.java +++ b/base/src/test/java/com/tinyengine/it/service/material/impl/BlockServiceImplTest.java @@ -27,6 +27,7 @@ import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.context.LoginUserContext; import com.tinyengine.it.mapper.AppMapper; +import com.tinyengine.it.mapper.BlockGroupBlockMapper; import com.tinyengine.it.mapper.BlockGroupMapper; import com.tinyengine.it.mapper.BlockMapper; import com.tinyengine.it.mapper.UserMapper; @@ -69,6 +70,9 @@ class BlockServiceImplTest { @Mock private LoginUserContext loginUserContext; + @Mock + private BlockGroupBlockMapper blockGroupBlockMapper; + @InjectMocks private BlockServiceImpl blockServiceImpl; @@ -110,6 +114,7 @@ void testQueryBlockByCondition() { @Test void testDeleteBlockById() { when(blockMapper.deleteBlockById(123)).thenReturn(1); + when(blockGroupBlockMapper.deleteByBlockId(123)).thenReturn(1); Integer result = blockServiceImpl.deleteBlockById(123); Assertions.assertEquals(1, result); From abcd44551ef88cc4885e9792ed404fd8ea5d3613 Mon Sep 17 00:00:00 2001 From: lu-yg <128358973+lu-yg@users.noreply.github.com> Date: Tue, 15 Jul 2025 19:28:21 -0700 Subject: [PATCH 08/14] fix: Fix page create and componet library mapper (#246) * feat: Service extends IService * fix: Modify unit testing * fix: Modify web config * feat: Add JsonUtils and modify related methods * feat: Add JsonUtils and modify related methods * fix: Modify code format * fix: Fix block update bug * fix: Fix page create and componet library mapper --- .../sql/mysql/update_all_tables_ddl.sql | 1 - .../it/controller/PageController.java | 6 +- .../tinyengine/it/model/entity/Component.java | 5 + .../it/model/entity/ComponentLibrary.java | 7 + .../it/model/entity/PageHistory.java | 3 + .../tinyengine/it/model/entity/Tenant.java | 2 +- .../mappers/ComponentLibraryMapper.xml | 246 +++++++----------- .../it/controller/PageControllerTest.java | 7 +- 8 files changed, 119 insertions(+), 158 deletions(-) diff --git a/app/src/main/resources/sql/mysql/update_all_tables_ddl.sql b/app/src/main/resources/sql/mysql/update_all_tables_ddl.sql index 879a44c7..e7963c1f 100644 --- a/app/src/main/resources/sql/mysql/update_all_tables_ddl.sql +++ b/app/src/main/resources/sql/mysql/update_all_tables_ddl.sql @@ -28,5 +28,4 @@ ALTER TABLE t_platform_history MODIFY tenant_id varchar(60) NULL; ALTER TABLE t_task_record MODIFY tenant_id varchar(60) NULL; ALTER TABLE t_user MODIFY tenant_id varchar(60) NULL; -ALTER TABLE t_component_library ADD app_id int NULL; diff --git a/base/src/main/java/com/tinyengine/it/controller/PageController.java b/base/src/main/java/com/tinyengine/it/controller/PageController.java index c2166b9c..64a64118 100644 --- a/base/src/main/java/com/tinyengine/it/controller/PageController.java +++ b/base/src/main/java/com/tinyengine/it/controller/PageController.java @@ -29,7 +29,6 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletRequest; -import jakarta.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; @@ -115,7 +114,7 @@ public Result getPageById(@PathVariable Integer id) throws Exception { /** * 创建页面 * - * @param page the page + * @param request the request * @return result * @throws Exception the exception */ @@ -128,7 +127,8 @@ public Result getPageById(@PathVariable Integer id) throws Exception { }) @SystemControllerLog(description = "创建页面") @PostMapping("/pages/create") - public Result createPage(@Valid @RequestBody Page page) throws Exception { + public Result createPage(HttpServletRequest request) throws IOException { + Page page = JsonUtils.decode(request.getInputStream(), Page.class); if (page.getIsPage()) { // 创建页面 return pageService.createPage(page); diff --git a/base/src/main/java/com/tinyengine/it/model/entity/Component.java b/base/src/main/java/com/tinyengine/it/model/entity/Component.java index 01653160..4181e320 100644 --- a/base/src/main/java/com/tinyengine/it/model/entity/Component.java +++ b/base/src/main/java/com/tinyengine/it/model/entity/Component.java @@ -47,6 +47,7 @@ public class Component extends BaseEntity { private Map name; @Schema(name = "component", description = "组件") + @TableField(value = "name_en") private String component; @Schema(name = "icon", description = "组件图标") @@ -75,6 +76,7 @@ public class Component extends BaseEntity { private Map npm; @Schema(name = "group", description = "分组") + @TableField(value = "`group`") private String group; @Schema(name = "category", description = "分类") @@ -98,9 +100,11 @@ public class Component extends BaseEntity { @JsonProperty("public") @Schema(name = "public", description = "公开状态:0,1,2") + @TableField(value = "public") private Integer publicStatus; @Schema(name = "framework", description = "技术栈") + @TableField(value = "framework") private String framework; @Schema(name = "isOfficial", description = "标识官方组件") @@ -110,6 +114,7 @@ public class Component extends BaseEntity { private Boolean isDefault; @Schema(name = "isTinyReserved", description = "是否tiny自有") + @TableField(value = "tiny_reserved") private Boolean isTinyReserved; @JsonProperty("component_metadata") diff --git a/base/src/main/java/com/tinyengine/it/model/entity/ComponentLibrary.java b/base/src/main/java/com/tinyengine/it/model/entity/ComponentLibrary.java index b9555f1f..97dbf40e 100644 --- a/base/src/main/java/com/tinyengine/it/model/entity/ComponentLibrary.java +++ b/base/src/main/java/com/tinyengine/it/model/entity/ComponentLibrary.java @@ -45,10 +45,12 @@ public class ComponentLibrary extends BaseEntity { private String name; @Schema(name = "appId", description = "关联应用id") + @TableField(value = "app_id") private Integer appId; @JsonProperty("package") @Schema(name = "package", description = "包名") + @TableField(value = "package") private String packageName; @Schema(name = "registry", description = "注册") @@ -82,17 +84,22 @@ public class ComponentLibrary extends BaseEntity { @JsonProperty("public") @Schema(name = "public", description = "公开状态:0,1,2") + @TableField(value = "public") private Integer publicStatus; @Schema(name = "isStarted", description = "标识启用") + @TableField(value = "is_started") private Boolean isStarted; @Schema(name = "isOfficial", description = "标识官方组件") + @TableField(value = "is_official") private Boolean isOfficial; @Schema(name = "isDefault", description = "标识默认组件") + @TableField(value = "is_default") private Boolean isDefault; @Schema(name = "components", description = "组件库组件") + @TableField(exist = false) private List components; } diff --git a/base/src/main/java/com/tinyengine/it/model/entity/PageHistory.java b/base/src/main/java/com/tinyengine/it/model/entity/PageHistory.java index 903980b5..c3da95a1 100644 --- a/base/src/main/java/com/tinyengine/it/model/entity/PageHistory.java +++ b/base/src/main/java/com/tinyengine/it/model/entity/PageHistory.java @@ -52,12 +52,14 @@ public class PageHistory { private String name; @Schema(name = "page", description = "关联page表Id") + @TableField(value = "ref_id") private Integer page; @Schema(name = "version", description = "版本") private String version; @Schema(name = "app", description = "关联app表Id") + @TableField(value = "app_id") private Integer app; @Schema(name = "route", description = "页面路由") @@ -74,6 +76,7 @@ public class PageHistory { @Schema(name = "parentId", description = "父文件夹id") private String parentId; + @TableField(value = "`group`") private String group; @Schema(name = "depth", description = "*页面/文件夹深度,更改层级时服务端校验用(校验可有可无)*") diff --git a/base/src/main/java/com/tinyengine/it/model/entity/Tenant.java b/base/src/main/java/com/tinyengine/it/model/entity/Tenant.java index c128102f..59b13606 100644 --- a/base/src/main/java/com/tinyengine/it/model/entity/Tenant.java +++ b/base/src/main/java/com/tinyengine/it/model/entity/Tenant.java @@ -40,7 +40,7 @@ public class Tenant { @Schema(name = "id", description = "主键id") @TableId(value = "id", type = IdType.AUTO) - private Integer id; + private String id; @Schema(name = "nameCn", description = "组织唯一代码") private String orgCode; diff --git a/base/src/main/resources/mappers/ComponentLibraryMapper.xml b/base/src/main/resources/mappers/ComponentLibraryMapper.xml index 884c2a9c..5a3befb3 100644 --- a/base/src/main/resources/mappers/ComponentLibraryMapper.xml +++ b/base/src/main/resources/mappers/ComponentLibraryMapper.xml @@ -14,73 +14,73 @@ - AND version = #{version} + AND CL.version = #{version} - AND `name` = #{name} + AND CL.`name` = #{name} - AND app_id = #{appId} + AND CL.app_id = #{appId} - AND package = #{packageName} + AND CL.package = #{packageName} - AND registry = #{registry} + AND CL.registry = #{registry} - AND description = #{description} + AND CL.description = #{description} - AND framework = #{framework} + AND CL.framework = #{framework} - AND script = #{script} + AND CL.script = #{script} - AND css = #{css} + AND CL.css = #{css} - AND bundle = #{bundle} + AND CL.bundle = #{bundle} - AND `others` = #{others} + AND CL.`others` = #{others} - AND thumbnail = #{thumbnail} + AND CL.thumbnail = #{thumbnail} - AND `public` = #{publicStatus} + AND CL.`public` = #{publicStatus} - AND is_started = #{isStarted} + AND CL.is_started = #{isStarted} - AND is_official = #{isOfficial} + AND CL.is_official = #{isOfficial} - AND is_default = #{isDefault} + AND CL.is_default = #{isDefault} - AND created_by = #{createdBy} + AND CL.created_by = #{createdBy} - AND last_updated_by = #{lastUpdatedBy} + AND CL.last_updated_by = #{lastUpdatedBy} - AND created_time = #{createdTime} + AND CL.created_time = #{createdTime} - AND last_updated_time = #{lastUpdatedTime} + AND CL.last_updated_time = #{lastUpdatedTime} - AND tenant_id = #{tenantId} + AND CL.tenant_id = #{tenantId} - AND renter_id = #{renterId} + AND CL.renter_id = #{renterId} - AND site_id = #{siteId} + AND CL.site_id = #{siteId} @@ -183,7 +183,7 @@ - + @@ -218,145 +218,89 @@ - + + SELECT CL.id, + CL.version, + CL.`name`, + CL.app_id, + CL.package, + CL.registry, + CL.framework, + CL.description, + CL.script, + CL.css, + CL.bundle, + CL.dependencies, + CL.`others`, + CL.thumbnail, + CL.`public`, + CL.is_started, + CL.is_official, + CL.is_default, + CL.created_by, + CL.last_updated_by, + CL.created_time, + CL.last_updated_time, + CL.tenant_id, + CL.renter_id, + CL.site_id, + C.id AS componentId, + C.version AS componentVersion, + C.name AS componentName, + C.name_en, + C.icon, + C.description AS componentDescription, + C.doc_url, + C.screenshot, + C.tags, + C.keywords, + C.dev_mode, + C.npm, + C.`group`, + C.category, + C.priority, + C.snippets, + C.schema_fragment, + C.configure, + C.`public` AS componentPublic, + C.framework AS componentFramework, + C.is_official AS isOfficial, + C.is_default AS isDefault, + C.tiny_reserved, + C.component_metadata, + C.library_id, + C.created_by AS componentCreatedBy, + C.last_updated_by AS componentLastUpdatedBy, + C.created_time AS componentCreatedTime, + C.last_updated_time AS componentLastUpdatedTime, + C.tenant_id AS componentTenantId, + C.renter_id AS componentRenterId, + C.site_id AS componentSiteId + FROM t_component_library CL + LEFT JOIN t_component C ON CL.id = C.library_id + diff --git a/base/src/test/java/com/tinyengine/it/controller/PageControllerTest.java b/base/src/test/java/com/tinyengine/it/controller/PageControllerTest.java index 403c8e34..effc7f5c 100644 --- a/base/src/test/java/com/tinyengine/it/controller/PageControllerTest.java +++ b/base/src/test/java/com/tinyengine/it/controller/PageControllerTest.java @@ -71,10 +71,13 @@ void testGetPageById() throws Exception { @Test void testCreatePage() throws Exception { when(pageService.createPage(any(Page.class))).thenReturn(new Result()); - + MockHttpServletRequest request = new MockHttpServletRequest(); + String json = "{\"isPage\":true}"; + request.setContent(json.getBytes(StandardCharsets.UTF_8)); // 设置请求体 + request.setContentType("application/json"); Page page = new Page(); page.setIsPage(true); - Result result = pageController.createPage(page); + Result result = pageController.createPage(request); Assertions.assertNull(result.getData()); } From 553f6af4d82e20f056c41b3e40435065c6416c4a Mon Sep 17 00:00:00 2001 From: lu-yg <128358973+lu-yg@users.noreply.github.com> Date: Wed, 16 Jul 2025 20:12:29 -0700 Subject: [PATCH 09/14] feat: add docker deploy (#247) --- Dockerfile | 20 + app/src/main/resources/application-alpha.yml | 68 ++ app/src/main/resources/application-dev.yml | 4 + docker-compose.yml | 40 ++ docker-deploy-data/mysql/conf/my.cnf | 10 + .../create_all_tables_ddl_v1.0.0.mysql.sql | 679 ++++++++++++++++++ .../mysql/init/init_data_for_test_v1.0.0.sql | 175 +++++ .../mysql/init/update_all_tables_ddl.sql | 30 + .../update_tables_ddl_v1.0.0_2025_0527.sql | 2 + docker-deploy-data/nginx.conf | 48 ++ settings.xml | 43 ++ 11 files changed, 1119 insertions(+) create mode 100644 Dockerfile create mode 100644 app/src/main/resources/application-alpha.yml create mode 100644 docker-compose.yml create mode 100644 docker-deploy-data/mysql/conf/my.cnf create mode 100644 docker-deploy-data/mysql/init/create_all_tables_ddl_v1.0.0.mysql.sql create mode 100644 docker-deploy-data/mysql/init/init_data_for_test_v1.0.0.sql create mode 100644 docker-deploy-data/mysql/init/update_all_tables_ddl.sql create mode 100644 docker-deploy-data/mysql/init/update_tables_ddl_v1.0.0_2025_0527.sql create mode 100644 docker-deploy-data/nginx.conf create mode 100644 settings.xml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..562e7fee --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +FROM eclipse-temurin:17-jdk-jammy as build +WORKDIR /app +ADD . . +RUN wget --no-check-certificate https://mirrors.huaweicloud.com/apache/maven/maven-3/3.9.8/binaries/apache-maven-3.9.8-bin.tar.gz + +RUN tar -zxvf apache-maven-3.9.8-bin.tar.gz + +RUN rm apache-maven-3.9.8-bin.tar.gz +ENV M2_HOME=/app/apache-maven-3.9.8 +ENV PATH=$M2_HOME/bin:$PATH +COPY settings.xml /app/apache-maven-3.9.8/conf/settings.xml +RUN mvn clean package -Dmaven.test.skip=true +FROM eclipse-temurin:17-jdk-jammy +WORKDIR /app +COPY --from=build /app/app/target/tiny-engine-app-*.jar /app/tiny-engine-app.jar +COPY --from=build /app/base/target/tiny-engine-base-*.jar /app/tiny-engine-base.jar + +ENTRYPOINT ["java", "-jar", "tiny-engine-app.jar", "--spring.profiles.active=alpha"] +EXPOSE 9090 + diff --git a/app/src/main/resources/application-alpha.yml b/app/src/main/resources/application-alpha.yml new file mode 100644 index 00000000..7cde50b6 --- /dev/null +++ b/app/src/main/resources/application-alpha.yml @@ -0,0 +1,68 @@ +server: + port: 9090 + +spring: + servlet: + multipart: + max-file-size: 10MB + max-request-size: 10MB + jackson: + date-format: yyyy-MM-dd HH:mm:ss + datasource: + driver-class-name: org.mariadb.jdbc.Driver + username: root + password: 111111 + url: jdbc:mariadb://tiny-engine-data:3306/tiny_engine_data_java?useUnicode=true&useSSL=false&characterEncoding=utf8 + type: com.alibaba.druid.pool.DruidDataSource + druid: + initial-size: 5 # 连接池初始化时建立的连接数,默认值为 0。 + min-idle: 5 # 连接池中最小的空闲连接数,默认值为 0。 + max-active: 20 # 连接池中最大活动连接数(即同时可以被请求的连接数),默认值为 8。 + test-on-borrow: true # 在从连接池获取连接时,是否进行有效性检查,默认值为 false。 + validation-query: SELECT 1 # 用于检测连接是否有效的 SQL 查询语句,通常为简单的查询,比如 `SELECT 1`。如果连接不可用,会被关闭并重新建立。 + max-wait: 60000 # 获取连接的最大等待时间(单位:毫秒),超时会抛出异常,默认值为 30000。 + time-between-eviction-runs-millis: 60000 # 空闲连接检测线程运行的时间间隔(单位:毫秒)。空闲连接检测线程会定期检查空闲连接,默认值为 30000。 + min-evictable-idle-time-millis: 300000 # 连接在池中保持空闲的最小时间(单位:毫秒)。如果空闲时间超过这个值,连接将被回收,默认值为 1800000。 + pool-prepared-statements: true # 是否缓存 PreparedStatement 对象,默认值为 true。 + max-open-prepared-statements: 20 # 最大缓存的 PreparedStatement 数量,默认值为 -1,表示无限制。如果 `pool-prepared-statements` 设置为 true,设置此值以限制缓存数量。 + config: + activate: + on-profile: alpha + #切面启用 + aop: + proxy-target-class: true #默认为false + auto: true #默认为false +springdoc: + api-docs: + #是否开启文档功能 + enabled: true + #swagger后端请求地址 + path: /api-docs + swagger-ui: + enabled: false + path: /swagger-ui.html #自定义swagger-ui HTML文档路径 + #包扫描路径 + packages-to-scan: com.tinyengine.it.controller + +mybatis-plus: + mapper-locations: classpath:mappers/*.xml + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + map-underscore-to-camel-case: true + auto-mapping-behavior: full + com.tinyengine.it.mapper: debug + type-handlers-package: com.tinyengine.it.common.handler + + +logging: + level: + ROOT: INFO + druid.sql.Statement: INFO + pattern: + file: "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" + file: + name: /logs + +cors: + allowed-origins: "*" + diff --git a/app/src/main/resources/application-dev.yml b/app/src/main/resources/application-dev.yml index f276145d..7b423d93 100644 --- a/app/src/main/resources/application-dev.yml +++ b/app/src/main/resources/application-dev.yml @@ -2,6 +2,10 @@ server: port: 9090 spring: + servlet: + multipart: + max-file-size: 10MB + max-request-size: 10MB jackson: date-format: yyyy-MM-dd HH:mm:ss datasource: diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..c5cd6843 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,40 @@ +version: '3' +services: + tiny-engine-data: + image: mysql:5.7 + container_name: tiny-engine-data + ports: + - "3306:3306" + environment: + MYSQL_ROOT_PASSWORD: 111111 + MYSQL_DATABASE: tiny_engine_data_java + TZ: Asia/Shanghai + volumes: + - ./docker-deploy-data/mysql/data/:/var/lib/mysql/ + - ./docker-deploy-data/mysql/conf/:/etc/mysql/conf.d/ + - ./docker-deploy-data/mysql/init/:/docker-entrypoint-initdb.d/ + - ./docker-deploy-data/mysql/logs/:/logs/ + + tiny-engine-back: + image: tiny-engine-back + container_name: tiny-engine-back + build: + context: . + dockerfile: Dockerfile + ports: + - "9090:9090" + depends_on: + - tiny-engine-data + + tiny-engine: + image: tiny-engine + container_name: tiny-engine + build: + context: ../tiny-engine/ + dockerfile: Dockerfile + ports: + - "80:80" + volumes: + - ./docker-deploy-data/nginx.conf:/etc/nginx/nginx.conf + depends_on: + - tiny-engine-back diff --git a/docker-deploy-data/mysql/conf/my.cnf b/docker-deploy-data/mysql/conf/my.cnf new file mode 100644 index 00000000..542d37e4 --- /dev/null +++ b/docker-deploy-data/mysql/conf/my.cnf @@ -0,0 +1,10 @@ +[client] +default-character-set=utf8mb4 +[mysql] +default-character-set=utf8mb4 +[mysqld] +init-connect="SET collation_connection = utf8mb4_unicode_ci" +init-connect="SET NAMES utf8mb4" +collation-server=utf8mb4_unicode_ci +character-set-server=utf8mb4 + diff --git a/docker-deploy-data/mysql/init/create_all_tables_ddl_v1.0.0.mysql.sql b/docker-deploy-data/mysql/init/create_all_tables_ddl_v1.0.0.mysql.sql new file mode 100644 index 00000000..587f2e79 --- /dev/null +++ b/docker-deploy-data/mysql/init/create_all_tables_ddl_v1.0.0.mysql.sql @@ -0,0 +1,679 @@ + +drop table if exists `t_platform`; + +create table `t_platform` +( + `id` int not null auto_increment comment '主键id', + `name` varchar(255) not null comment '名称', + `published` tinyint(1) comment '是否发布:1是,0否', + `last_build_info` longtext comment '最后构建信息', + `description` varchar(2000) comment '描述', + `latest_version` varchar(255) comment '当前历史记录表最新版本', + `latest_history_id` int comment '当前历史记录表id', + `material_history_id` int comment '关联物料包历史id', + `image_url` varchar(255) comment '设计器截图地址', + `sort_plugins` longtext comment '插件集合', + `sort_toolbar` longtext comment '工具集合', + `is_default` tinyint(1) comment '是否默认编辑器:1是,0否', + `prettier_opts` longtext comment '设计预留字段', + `set_default_by` varchar(60) comment '设置默认编辑器的人', + `app_extend_config` longtext comment '应用扩展配置', + `data_hash` varchar(255) comment '设计器数据hash,验证数据一致性', + `business_category_id` int comment '业务类型', + `theme_id` int comment '生态扩展使用,关联主题', + `platform_url` varchar(255) comment '设计器静态资源托管地址url', + `vscode_url` varchar(255) comment '设计预留字段', + `tenant_id` varchar(60) comment '租户id', + `renter_id` varchar(60) comment '业务租户id', + `site_id` varchar(60) comment '站点id,设计预留字段', + `created_by` varchar(60) not null comment '创建人', + `last_updated_by` varchar(60) not null comment '最后修改人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree, + unique index `u_idx_platform` (`tenant_id`, `name`) using btree +) engine = innodb comment = '设计器表'; + +drop table if exists `t_platform_history`; + +create table `t_platform_history` +( + `id` int not null auto_increment comment '主键id', + `ref_id` int not null comment '关联主表id', + `version` varchar(255) not null comment '版本', + `name` varchar(255) not null comment '名称', + `publish_url` varchar(255) comment '设计器静态资源托管地址', + `description` varchar(2000) comment '描述', + `vscode_url` varchar(255) comment '设计预留字段', + `material_history_id` int not null comment '关联物料包历史id', + `sub_count` int comment '设计预留字段', + `material_pkg_name` varchar(255) comment '物料包名称', + `material_version` varchar(255) comment '物料包版本', + `image_url` varchar(255) comment '封面图地址', + `tenant_id` varchar(60) comment '租户id', + `renter_id` varchar(60) comment '业务租户id', + `site_id` varchar(60) comment '站点id,设计预留字段', + `created_by` varchar(60) not null comment '创建人', + `last_updated_by` varchar(60) not null comment '最后修改人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree, + unique index `u_idx_platform_history` (`ref_id`, `version`) using btree +) engine = innodb comment = '设计器历史表'; + +drop table if exists `t_app`; + +create table `t_app` +( + `id` int not null auto_increment comment '主键id', + `name` varchar(255) not null comment '应用名称', + `platform_id` int not null comment '关联设计器id', + `platform_history_id` int comment '关联设计器历史版本id', + `publish_url` varchar(255) comment '应用静态资源托管地址', + `editor_url` varchar(255) comment '设计器地址', + `visit_url` varchar(255) comment '访问地址', + `image_url` varchar(255) comment '封面图地址', + `assets_url` varchar(255) comment '应用资源地址', + `state` int comment '应用状态,1可用,0不可用', + `published` tinyint(1) comment '是否发布:1是,0否', + `home_page_id` int comment '主页id,关联page表的id', + `app_website` varchar(255) comment '设计预留字段', + `css` longtext comment '设计预留字段', + `config` longtext comment '设计预留字段', + `constants` longtext comment '设计预留字段', + `data_handler` longtext comment '数据源的拦截器', + `latest` varchar(255) comment '应用最新历史记录id', + `git_group` varchar(255) comment 'git仓库分组', + `project_name` varchar(255) comment 'git仓库名称', + `branch` varchar(255) comment '默认提交分支', + `is_demo` tinyint(1) comment '是否是demo应用', + `is_default` tinyint(1) comment '是否是默认应用', + `template_type` varchar(255) comment '应用模板类型', + `set_template_time` timestamp comment '设置模板时间', + `description` varchar(2000) comment '描述', + `set_template_by` varchar(60) comment '设置模板人id', + `set_default_by` varchar(60) comment '设置为默认应用人id', + `framework` varchar(255) comment '应用框架', + `global_state` longtext comment '应用全局状态', + `default_lang` varchar(255) comment '默认语言', + `extend_config` longtext comment '应用扩展config', + `data_hash` varchar(255) comment '应用内容哈希值', + `can_associate` tinyint(1) comment '设计预留字段', + `data_source_global` longtext comment '数据源全局配置', + `tenant_id` varchar(60) comment '租户id', + `renter_id` varchar(60) comment '业务租户id', + `site_id` varchar(60) comment '站点id,设计预留字段', + `created_by` varchar(60) not null comment '创建人', + `last_updated_by` varchar(60) not null comment '最后修改人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree, + unique index `u_idx_app` (`tenant_id`, `platform_id`, `name`) using btree +) engine = innodb comment = '应用表'; + +drop table if exists `t_app_extension`; + +create table `t_app_extension` +( + `id` int not null auto_increment comment '主键id', + `name` varchar(255) not null comment '名称', + `type` varchar(255) not null comment '类型:npm, function', + `content` longtext not null comment '内容', + `app_id` int not null comment '关联appid', + `category` varchar(255) not null comment '分类:utils,bridge', + `tenant_id` varchar(60) comment '租户id', + `renter_id` varchar(60) comment '业务租户id', + `site_id` varchar(60) comment '站点id,设计预留字段', + `created_by` varchar(60) not null comment '创建人', + `last_updated_by` varchar(60) not null comment '最后修改人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree, + unique index `u_idx_app_extension` (`app_id`, `name`) using btree +) engine = innodb comment = '应用扩展表'; + +drop table if exists `t_block_group`; + +create table `t_block_group` +( + `id` int not null auto_increment comment '主键id', + `name` varchar(255) not null comment '分组名称', + `description` varchar(2000) comment '描述', + `app_id` int not null comment '关联app id', + `platform_id` int not null comment '设计器id', + `tenant_id` varchar(60) comment '租户id', + `renter_id` varchar(60) comment '业务租户id', + `site_id` varchar(60) comment '站点id,设计预留字段', + `created_by` varchar(60) not null comment '创建人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_by` varchar(60) not null comment '最后修改人', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree, + unique index `u_idx_block_group` (`tenant_id`, `platform_id`, `name`) using btree +) engine = innodb comment = '区块分组表,设计器内共享'; + +drop table if exists `t_business_category`; + +create table `t_business_category` +( + `id` int not null auto_increment comment '主键id', + `code` varchar(255) not null comment '编码', + `name` varchar(255) not null comment '名称', + `tenant_id` varchar(60) comment '租户id', + `renter_id` varchar(60) comment '业务租户id', + `site_id` varchar(60) comment '站点id,设计预留字段', + `created_by` varchar(60) not null comment '创建人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_by` varchar(60) not null comment '最后修改人', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree, + unique index `u_idx_business_category` (`tenant_id`, `code`) using btree +) engine = innodb comment = '业务类型表,全局'; + + + +drop table if exists `t_block`; + +create table `t_block` +( + `id` int not null auto_increment comment '主键id', + `label` varchar(255) not null comment '区块编码', + `name` varchar(255) comment '名称', + `framework` varchar(255) comment '技术栈', + `content` longtext comment '区块内容', + `assets` longtext comment '构建资源', + `last_build_info` longtext comment '最新一次构建信息', + `description` varchar(2000) comment '描述', + `tags` longtext comment '标签', + `latest_version` varchar(255) comment '当前历史记录表最新版本', + `latest_history_id` int comment '当前历史记录表id', + `screenshot` longtext comment '截屏', + `path` varchar(255) comment '区块路径', + `occupier_by` varchar(60) comment '当前检出者id', + `is_official` tinyint(1) comment '是否是官方', + `public` int comment '公开状态:0,1,2', + `is_default` tinyint(1) comment '是否是默认', + `tiny_reserved` tinyint(1) comment '是否是tiny自有', + `npm_name` varchar(255) comment 'npm包名', + `i18n` longtext NULL COMMENT '国际化', + `platform_id` int not null comment '设计器id', + `app_id` int not null comment '创建区块时所在appid', + `content_blocks` longtext comment '设计预留字段', + `tenant_id` varchar(60) comment '租户id', + `renter_id` varchar(60) comment '业务租户id', + `site_id` varchar(60) comment '站点id,设计预留字段', + `created_by` varchar(60) not null comment '创建人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_by` varchar(60) not null comment '最后修改人', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree, + unique index `u_idx_block` (`platform_id`, `label`, `framework`) using btree +) engine = innodb comment = '区块表'; + +drop table if exists `t_block_history`; + +create table `t_block_history` +( + `id` int not null auto_increment comment '主键id', + `ref_id` int not null comment '关联主表id', + `version` varchar(255) not null comment '版本', + `message` varchar(255) comment '历史记录描述消息', + `label` varchar(255) not null comment '显示标签', + `name` varchar(255) comment '名称', + `framework` varchar(255) comment '技术栈', + `content` longtext comment '区块内容', + `assets` longtext comment '构建资源', + `build_info` longtext comment '构建信息', + `screenshot` longtext comment '截屏', + `path` varchar(255) comment '区块路径', + `description` varchar(2000) comment '描述', + `tags` longtext comment '标签', + `is_official` tinyint(1) comment '是否是官方', + `public` int comment '公开状态:0,1,2', + `is_default` tinyint(1) comment '是否是默认', + `tiny_reserved` tinyint(1) comment '是否是tiny自有', + `mode` varchar(255) comment '模式:vscode', + `platform_id` int not null comment '设计器id', + `app_id` int not null comment '创建区块时所在appid', + `npm_name` varchar(255) comment 'npm包名', + `i18n` longtext NULL COMMENT '国际化', + `content_blocks` longtext comment '设计预留字段', + `tenant_id` varchar(60) comment '租户id', + `renter_id` varchar(60) comment '业务租户id', + `site_id` varchar(60) comment '站点id,设计预留字段', + `created_by` varchar(60) not null comment '创建人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_by` varchar(60) not null comment '最后修改人', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree, + unique index `u_idx_block_history` (`app_id`, `ref_id`, `version`) using btree +) engine = innodb comment = '区块历史表'; + +drop table if exists `t_material`; + +create table `t_material` +( + `id` int not null auto_increment comment '主键id', + `name` varchar(255) not null comment '名称', + `npm_name` varchar(255) comment 'npm包名', + `framework` varchar(255) not null comment '技术栈', + `assets_url` longtext comment '资源地址', + `image_url` varchar(255) comment '封面图地址', + `published` tinyint(1) comment '是否发布:1是,0否', + `latest_version` varchar(255) comment '当前历史记录表最新版本', + `latest_history_id` int comment '当前历史记录表id', + `public` int comment '公开状态:0,1,2', + `last_build_info` longtext comment '最新一次构建信息', + `description` varchar(2000) comment '描述', + `is_official` tinyint(1) comment '是否是官方', + `is_default` tinyint(1) comment '是否是默认', + `tiny_reserved` tinyint(1) comment '是否是tiny自有', + `component_library_id` int comment '设计预留字段', + `material_category_id` int comment '物料包业务类型', + `material_size` int comment '物料包大小', + `tgz_url` varchar(255) comment '物料包存储地址', + `unzip_tgz_root_path_url` longtext comment '物料包存储根路径', + `unzip_tgz_files` longtext comment '物料包存储文件', + `tenant_id` varchar(60) comment '租户id', + `renter_id` varchar(60) comment '业务租户id', + `site_id` varchar(60) comment '站点id,设计预留字段', + `created_by` varchar(60) not null comment '创建人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_by` varchar(60) not null comment '最后修改人', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree, + unique index `u_idx_material` (`tenant_id`, `name`, `framework`) using btree +) engine = innodb comment = '物料包表'; + +drop table if exists `t_material_history`; + +create table `t_material_history` +( + `id` int not null auto_increment comment '主键id', + `ref_id` int not null comment '关联主表id', + `version` varchar(255) not null comment '版本', + `content` longtext comment '物料内容', + `name` varchar(255) not null comment '名称', + `npm_name` varchar(255) comment 'npm包名', + `framework` varchar(255) comment '技术栈', + `assets_url` longtext comment '资源地址', + `image_url` varchar(255) comment '封面图地址', + `build_info` longtext comment '构建信息', + `description` varchar(2000) comment '描述', + `material_size` int comment '物料包大小', + `tgz_url` varchar(255) comment '物料包存储地址', + `unzip_tgz_root_path_url` longtext comment '物料包存储根路径', + `unzip_tgz_files` longtext comment '物料包存储文件', + `tenant_id` varchar(60) comment '租户id', + `renter_id` varchar(60) comment '业务租户id', + `site_id` varchar(60) comment '站点id,设计预留字段', + `created_by` varchar(60) not null comment '创建人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_by` varchar(60) not null comment '最后修改人', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree, + unique index `u_idx_material_history` (`tenant_id`, `ref_id`, `version`) using btree +) engine = innodb comment = '物料包历史表'; + +drop table if exists `t_page`; + +create table `t_page` +( + `id` int not null auto_increment comment '主键id', + `name` varchar(255) not null comment '名称', + `app_id` int not null comment '关联appid', + `route` varchar(255) not null comment '访问路径', + `page_content` longtext comment '页面内容', + `is_body` tinyint(1) comment '根元素是否是body', + `parent_id` int not null comment '父文件夹id', + `group` varchar(255) comment '分组', + `depth` int comment '页面/文件夹深度,更改层级时服务端校验用(校验可有可无)', + `is_page` tinyint(1) not null comment '是否为页面:分为页面和文件夹', + `occupier_by` varchar(60) comment '当前检出者id', + `is_default` tinyint(1) not null comment '是否是默认页面', + `content_blocks` longtext comment '设计预留字段', + `latest_version` varchar(255) comment '当前历史记录表最新版本', + `latest_history_id` int comment '当前历史记录表id', + `tenant_id` varchar(60) comment '租户id', + `renter_id` varchar(60) comment '业务租户id', + `site_id` varchar(60) comment '站点id,设计预留字段', + `created_by` varchar(60) not null comment '创建人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_by` varchar(60) not null comment '最后修改人', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree, + unique index `u_idx_page` (`app_id`,`parent_id`,`route`,`is_page`,`tenant_id`, `name`) using btree +) engine = innodb comment = '页面表'; + +drop table if exists `t_page_history`; + +create table `t_page_history` +( + `id` int not null auto_increment comment '主键id', + `ref_id` int not null comment '关联主表id', + `version` varchar(255) comment '版本', + `name` varchar(255) not null comment '名称', + `app_id` int not null comment '关联appid', + `route` varchar(255) not null comment '访问路径', + `page_content` longtext comment '页面内容', + `is_body` tinyint(1) comment '根元素是否是body', + `parent_id` int not null comment '父文件夹id', + `group` varchar(255) comment '分组', + `depth` int comment '页面/文件夹深度,更改层级时服务端校验用(校验可有可无)', + `is_page` tinyint(1) not null comment '是否为页面:分为页面和文件夹', + `is_default` tinyint(1) not null comment '是否是默认页面', + `message` varchar(255) comment '历史记录消息描述', + `is_home` tinyint(1) not null default 0 comment '是否首页', + `content_blocks` longtext comment '设计预留字段', + `tenant_id` varchar(60) comment '租户id', + `renter_id` varchar(60) comment '业务租户id', + `site_id` varchar(60) comment '站点id,设计预留字段', + `is_published` tinyint(1) not null comment '是否发布', + `created_by` varchar(60) not null comment '创建人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_by` varchar(60) not null comment '最后修改人', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree +) engine = innodb comment = '页面历史表'; + +drop table if exists `t_page_template`; + +create table `t_page_template` +( + `id` int not null auto_increment comment '主键id', + `name` varchar(255) not null comment '名称', + `page_content` longtext comment '模板页面内容,存储页面内容、数据等', + `framework` varchar(255) not null comment '技术栈', + `published` tinyint(1) comment '是否发布:1是,0否', + `public` tinyint(1) comment '公开状态:0,1,2', + `type` varchar(255) not null comment '模板类型', + `status` varchar(255) not null comment '模板状态', + `is_preset` tinyint(1) comment '设计预留字段', + `image_url` longtext comment '封面图地址', + `description` varchar(2000) comment '描述', + `platform_id` int not null comment '设计器id', + `tenant_id` varchar(60) comment '租户id', + `renter_id` varchar(60) comment '业务租户id', + `site_id` varchar(60) comment '站点id,设计预留字段', + `created_by` varchar(60) not null comment '创建人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_by` varchar(60) not null comment '最后修改人', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree +) engine = innodb comment = '页面模板表'; + +drop table if exists `t_component`; + +create table `t_component` +( + `id` int not null auto_increment comment '主键id', + `version` varchar(255) not null comment '版本', + `name` varchar(255) not null comment '中文名称', + `name_en` varchar(255) not null comment '英文名称', + `icon` varchar(255) comment '图标', + `description` varchar(2000) comment '描述', + `doc_url` varchar(255) comment '文档链接', + `screenshot` varchar(255) comment '缩略图', + `tags` varchar(255) comment '标签', + `keywords` varchar(255) comment '关键字', + `dev_mode` varchar(255) not null comment '研发模式', + `npm` longtext not null comment 'npm对象属性', + `group` varchar(255) comment '分组', + `category` varchar(255) comment '分类', + `priority` int comment '排序', + `snippets` longtext comment 'schema片段', + `schema_fragment` longtext comment 'schema片段', + `configure` longtext comment '配置信息', + `public` int comment '公开状态:0,1,2', + `framework` varchar(255) not null comment '技术栈', + `is_official` tinyint(1) comment '是否是官方', + `is_default` tinyint(1) comment '是否是默认', + `tiny_reserved` tinyint(1) comment '是否是tiny自有', + `component_metadata` longtext comment '属性信息', + `library_id` int comment '设计预留字段', + `tenant_id` varchar(60) comment '租户id', + `renter_id` varchar(60) comment '业务租户id', + `site_id` varchar(60) comment '站点id,设计预留字段', + `created_by` varchar(60) not null comment '创建人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_by` varchar(60) not null comment '最后修改人', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree, + unique index `u_idx_component` (`tenant_id`, `name_en`, `version`) using btree +) engine = innodb comment = '组件表'; + +drop table if exists `r_material_category`; + +create table `r_material_category` +( + `id` int not null auto_increment comment '主键id', + `material_id` int not null comment '物料包id', + `category_id` int not null comment '业务分类id', + primary key (`id`) using btree +) engine = innodb comment = '物料包业务分类关系表'; + +drop table if exists `r_material_history_block`; + +create table `r_material_history_block` +( + `id` int not null auto_increment comment '主键id', + `material_history_id` int not null comment '物料包历史id', + `block_history_id` int not null comment '区块历史id', + primary key (`id`) using btree +) engine = innodb comment = '物料包历史区块关系表'; + +drop table if exists `r_material_history_component`; + +create table `r_material_history_component` +( + `id` int not null auto_increment comment '主键id', + `material_history_id` int not null comment '物料包历史id', + `component_id` int not null comment '组件id', + primary key (`id`) using btree +) engine = innodb comment = '物料包历史组件关系表'; + +drop table if exists `r_material_component`; + +create table `r_material_component` +( + `id` int not null auto_increment comment '主键id', + `material_id` int not null comment '物料包id', + `component_id` int not null comment '组件id', + primary key (`id`) using btree +) engine = innodb comment = '物料包组件编辑态关系表'; + +drop table if exists `r_material_block`; + +create table `r_material_block` +( + `id` int not null auto_increment comment '主键id', + `material_id` int not null comment '物料包id', + `block_id` int not null comment '区块id', + primary key (`id`) using btree +) engine = innodb comment = '物料包区块编辑态关系表'; + +drop table if exists `t_i18n_entry`; + +create table `t_i18n_entry` +( + `id` int not null auto_increment comment '主键id', + `key` varchar(255) not null comment '国际化词条key', + `content` varchar(3000) not null comment '词条内容', + `host_id` int not null comment '关联的hostid: appid或blockid', + `host_type` varchar(255) not null comment 'app或者block', + `lang_id` int comment '关联语言id', + `tenant_id` varchar(60) comment '租户id', + `renter_id` varchar(60) comment '业务租户id', + `site_id` varchar(60) comment '站点id,设计预留字段', + `created_by` varchar(60) not null comment '创建人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_by` varchar(60) not null comment '最后修改人', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree, + unique index `u_idx_i18n_entity` (`key`, `host_id`, `host_type`,`lang_id`) using btree +) engine = innodb comment = '国际化语言配置表'; + +drop table if exists `t_i18n_lang`; + +create table `t_i18n_lang` +( + `id` int not null auto_increment comment '主键id', + `lang` varchar(255) not null comment '语言代码', + `label` varchar(255) not null comment '语言', + `created_by` varchar(60) not null comment '创建人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_by` varchar(60) not null comment '最后修改人', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree, + unique index `u_idx_18n_lang` (`lang`) using btree +) engine = innodb comment = '国际化语言表,全局'; + +drop table if exists `t_datasource`; + +create table `t_datasource` +( + `id` int not null auto_increment comment '主键id', + `name` varchar(255) not null comment '数据源名称', + `data` longtext comment '数据源内容', + `tpl` int comment '设计预留字段', + `app_id` int comment '关联appId', + `platform_id` int comment '关联设计器id', + `description` varchar(2000) comment '描述', + `tenant_id` varchar(60) comment '租户id', + `renter_id` varchar(60) comment '业务租户id', + `site_id` varchar(60) comment '站点id,设计预留字段', + `created_by` varchar(60) not null comment '创建人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_by` varchar(60) not null comment '最后修改人', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree, + unique index `u_idx_datasource` (`tenant_id`, `platform_id`, `name`) using btree +) engine = innodb comment = '数据源表'; + +drop table if exists `t_task_record`; + +create table `t_task_record` +( + `id` int not null auto_increment comment '主键id', + `team_id` int comment '团队id, 默认0', + `task_type` int comment '任务类型: 1 assets_build / 2 app_build / 3 platform_build / 4 vscode_plugin_build/5 block_build', + `build_id` int comment '构建资源id', + `task_name` varchar(255) comment '构建任务名称', + `task_status` int comment '任务状态:0 init / 1 running / 2 stopped / 3 finished', + `task_result` longtext comment '当前执行进度结果信息', + `progress` varchar(255) comment '当前进行的子任务名', + `ratio` int comment '无用字段', + `progress_percent` int comment '构建进度百分比数', + `indicator` longtext comment '构建指标', + `tenant_id` varchar(60) comment '租户id', + `renter_id` varchar(60) comment '业务租户id', + `site_id` varchar(60) comment '站点id,设计预留字段', + `created_by` varchar(60) not null comment '创建人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_by` varchar(60) not null comment '最后修改人', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree +) engine = innodb comment = '构建任务表'; + +drop table if exists `t_tenant`; + +create table `t_tenant` +( + `id` int not null auto_increment comment '主键id', + `org_code` varchar(255) comment '组织唯一代码', + `name_cn` varchar(255) not null comment '组织中文名', + `name_en` varchar(255) comment '组织英文名', + `description` varchar(2000) comment '组织描述', + `created_by` varchar(60) not null comment '创建人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_by` varchar(60) not null comment '最后修改人', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree, + unique index `u_idx_tenant` (`name_cn`) using btree +) engine = innodb comment = '租户表'; + +drop table if exists `t_user`; + +create table `t_user` +( + `id` int not null auto_increment comment '主键id', + `username` varchar(255) not null comment '用户名', + `email` varchar(255) not null comment '邮箱', + `role` varchar(255) comment '用户角色', + `enable` tinyint(1) comment '账号是否可用', + `is_admin` tinyint(1) comment '是否管理员', + `is_public` tinyint(1) comment '是否公共账号', + `tenant_id` varchar(60) comment '租户id', + `renter_id` varchar(60) comment '业务租户id', + `site_id` varchar(60) comment '站点id,设计预留字段', + `created_by` varchar(60) not null comment '创建人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_by` varchar(60) not null comment '最后修改人', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree, + unique index `u_idx_user` (`username`) using btree +) engine = innodb comment = '用户表'; + +drop table if exists `t_block_carriers_relation`; + +create table `t_block_carriers_relation` +( + `id` int not null auto_increment comment '主键id', + `block_id` int not null comment '区块id', + `host_id` int not null comment '类型id', + `host_type` varchar(60) comment '类型:blockGroup,materialHistory', + `version` varchar(60) not null comment '区块当前使用版本', + `tenant_id` varchar(60) comment '租户id', + `renter_id` varchar(60) comment '业务租户id', + `site_id` varchar(60) comment '站点id,设计预留字段', + `created_by` varchar(60) not null comment '创建人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_by` varchar(60) not null comment '最后修改人', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree, + unique index `u_idx_block_carriers_relation` (`host_id`, `host_type`, `block_id`) using btree +) engine = innodb comment = '区块分组与区块历史版本'; + +drop table if exists `r_block_group_block`; + +create table `r_block_group_block` +( + `id` int not null auto_increment comment '主键id', + `block_id` int not null comment '区块id', + `block_group_id` int not null comment '区块分组id', + primary key (`id`) using btree, + unique index `u_idx_block_group_block` (block_id, block_group_id) using btree +) engine = innodb comment = '区块分组和区块关系表'; + +drop table if exists `t_component_library`; + +create table `t_component_library` +( + `id` int not null auto_increment comment '主键id', + `version` varchar(255) not null comment '版本', + `name` varchar(255) not null comment '名称', + `app_id` int comment '关联应用id', + `package` varchar(255) not null comment '包名', + `registry` varchar(255) comment '注册', + `framework` varchar(255) not null comment '技术栈', + `description` varchar(2000) comment '描述', + `script` varchar(255) comment '脚本地址', + `css` varchar(255) comment '样式地址', + `bundle` varchar(255) comment 'bundle.json地址', + `dependencies` longtext comment '依赖', + `others` longtext comment '其他', + `thumbnail` varchar(255) comment '略图', + `public` int comment '公开状态:0,1,2', + `is_started` tinyint(1) comment '是否启用', + `is_official` tinyint(1) comment '是否是官方', + `is_default` tinyint(1) comment '是否是默认', + `tenant_id` varchar(60) comment '租户id', + `renter_id` varchar(60) comment '业务租户id', + `site_id` varchar(60) comment '站点id,设计预留字段', + `created_by` varchar(60) not null comment '创建人', + `created_time` timestamp not null default current_timestamp comment '创建时间', + `last_updated_by` varchar(60) not null comment '最后修改人', + `last_updated_time` timestamp not null default current_timestamp comment '更新时间', + primary key (`id`) using btree, + unique index `u_idx_component_library` (`tenant_id`, `name`, `version`) using btree +) engine = innodb comment = '组件库表'; diff --git a/docker-deploy-data/mysql/init/init_data_for_test_v1.0.0.sql b/docker-deploy-data/mysql/init/init_data_for_test_v1.0.0.sql new file mode 100644 index 00000000..0e38b756 --- /dev/null +++ b/docker-deploy-data/mysql/init/init_data_for_test_v1.0.0.sql @@ -0,0 +1,175 @@ + +INSERT INTO `t_material_history` (`id`, `ref_id`, `version`, `content`, `name`, `npm_name`, `framework`, `assets_url`, `image_url`, `description`, `material_size`, `tgz_url`, `unzip_tgz_root_path_url`, `unzip_tgz_files`, `created_by`, `last_updated_by`, `created_time`, `last_updated_time`, `tenant_id`, `site_id`) VALUES (1, 1, '1.0.8', '{}', 'materialstwo', '@opentiny/lowcode-alpha-material-materialstwo-1505', 'Vue', '{\"material\":[\"\"],\"scripts\":[\"\",\"\"],\"styles\":[]}', NULL, '1.0.8', NULL, NULL, NULL, NULL, '1', '1', '2024-10-16 19:28:53', '2024-10-16 19:28:53', '1', '1'); + +INSERT INTO `t_tenant` (`id`, `name_cn`, `name_en`, `description`, `created_by`, `last_updated_by`, `created_time`, `last_updated_time`) VALUES (1, 'public', '公共租户', 'Default tenant for new user to explore.', '1', '1', '2024-10-16 19:31:28', '2024-10-16 19:31:28'); + +INSERT INTO `t_app` (`id`, `name`, `app_website`, `platform_id`, `platform_history_id`, `publish_url`, `editor_url`, `visit_url`, `image_url`, `assets_url`, `state`, `published`, `home_page_id`, `css`, `config`, `constants`, `data_handler`, `description`, `latest`, `git_group`, `project_name`, `branch`, `is_demo`, `is_default`, `template_type`, `set_template_time`, `set_template_by`, `set_default_by`, `framework`, `global_state`, `default_lang`, `extend_config`, `data_hash`, `can_associate`, `data_source_global`, `created_by`, `last_updated_by`, `created_time`, `last_updated_time`, `tenant_id`, `site_id`) VALUES (1, 'portal-app', NULL, 1, '1', NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL, '{}', NULL, '{\"type\":\"JSFunction\",\"value\":\"function dataHanlder(res){\\n return res;\\n}\"}', 'demo应用', '22', NULL, NULL, 'develop', NULL, NULL, 'serviceDevelop', '2023-11-19 18:14:37', '1', '1', 'Vue', '[{\"id\":\"test2\",\"state\":{\"name1\":\"xxx1\"},\"getters\":{\"count\":{\"type\":\"JSFunction\",\"value\":\"function count() {}\"}},\"actions\":{\"actions\":{\"type\":\"JSFunction\",\"value\":\"function actions() {}\"}}},{\"id\":\"test3\",\"state\":{\"name1\":\"xxx\"},\"getters\":{\"count\":{\"type\":\"JSFunction\",\"value\":\"function count() {}\"}},\"actions\":{\"actions\":{\"type\":\"JSFunction\",\"value\":\"function actions() {}\"}}},{\"id\":\"test4\",\"state\":{\"region\":\"\",\"scenario\":\"all\",\"productId\":\"\",\"planId\":\"\",\"addEvs\":false,\"addHss\":false,\"addCbr\":false,\"period\":{\"value\":1,\"unit\":\"month\"},\"amount\":1},\"getters\":{},\"actions\":{}},{\"id\":\"test1\",\"state\":{\"name1\":\"xxx\"},\"getters\":{\"count\":{\"type\":\"JSFunction\",\"value\":\"function count() {}\"}},\"actions\":{\"actions\":{\"type\":\"JSFunction\",\"value\":\"function actions() {}\"}}}]', NULL, '{\"business\":{\"serviceName\":\"\",\"endpointName\":\"cce\",\"endpointId\":\"ee\",\"serviceId\":\"ee\",\"router\":\"ee\"},\"env\":{\"alpha\":{\"regions\":[{\"name\":\"\",\"baseUrl\":\"\",\"isDefault\":false}],\"isDefault\":true}},\"type\":\"console\"}', '8b0eba6ad055532a586f9f669108fabb', '1', '{\"dataHandler\":{\"type\":\"JSFunction\",\"value\":\"function dataHanlder(res){\\n return res;\\n}\"}}', '1', '1', '2024-10-16 23:27:10', '2024-10-16 23:27:10', '1', '1'); + +INSERT INTO `t_material` (`id`, `name`, `npm_name`, `framework`, `assets_url`, `image_url`, `published`, `latest_version`, `latest_history_id`, `public`, `last_build_info`, `description`, `is_official`, `is_default`, `tiny_reserved`, `component_library_id`, `material_category_id`, `material_size`, `tgz_url`, `unzip_tgz_root_path_url`, `unzip_tgz_files`, `created_by`, `last_updated_by`, `created_time`, `last_updated_time`, `tenant_id`, `site_id`) VALUES (1, 'materialstwo', '@opentiny/lowcode-alpha-material-materialstwo-1505', 'Vue', NULL, NULL, NULL, '1.0.8', 1, 1, '{\"version\": \"1.0.8\"}', '物料包', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '1', '1', '2024-10-16 23:37:14', '2024-10-16 23:37:14', '1', '1'); + +INSERT INTO `t_page` (`id`, `name`, `app_id`, `route`, `page_content`, `is_body`, `parent_id`, `group`, `depth`, `is_page`, `occupier_by`, `is_default`, `content_blocks`, `latest_version`, `latest_history_id`, `created_by`, `last_updated_by`, `created_time`, `last_updated_time`, `tenant_id`, `site_id`) VALUES (1, 'createVm', 1, 'createVm', '{\"state\":{\"dataDisk\":[1,2,3]},\"methods\":{},\"componentName\":\"Page\",\"css\":\"body {\\r\\n background-color:#eef0f5 ;\\r\\n margin-bottom: 80px;\\r\\n}\",\"props\":{},\"children\":[{\"componentName\":\"div\",\"props\":{\"style\":\"padding-bottom: 10px; padding-top: 10px;\"},\"id\":\"2b2cabf0\",\"children\":[{\"componentName\":\"TinyTimeLine\",\"props\":{\"active\":\"2\",\"data\":[{\"name\":\"基础配置\"},{\"name\":\"网络配置\"},{\"name\":\"高级配置\"},{\"name\":\"确认配置\"}],\"horizontal\":true,\"style\":\"border-radius: 0px;\"},\"id\":\"dd764b17\"}]},{\"componentName\":\"div\",\"props\":{\"style\":\"border-width: 1px; border-style: solid; border-radius: 4px; border-color: #fff; padding-top: 10px; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px; background-color: #fff; margin-bottom: 10px;\"},\"id\":\"30c94cc8\",\"children\":[{\"componentName\":\"TinyForm\",\"props\":{\"labelWidth\":\"80px\",\"labelPosition\":\"top\",\"inline\":false,\"label-position\":\"left \",\"label-width\":\"150px\",\"style\":\"border-radius: 0px;\"},\"children\":[{\"componentName\":\"TinyFormItem\",\"props\":{\"label\":\"计费模式\"},\"children\":[{\"componentName\":\"TinyButtonGroup\",\"props\":{\"data\":[{\"text\":\"包年/包月\",\"value\":\"1\"},{\"text\":\"按需计费\",\"value\":\"2\"}],\"modelValue\":\"1\"},\"id\":\"a8d84361\"}],\"id\":\"9f39f3e7\"},{\"componentName\":\"TinyFormItem\",\"props\":{\"label\":\"区域\"},\"children\":[{\"componentName\":\"TinyButtonGroup\",\"props\":{\"data\":[{\"text\":\"乌兰察布二零一\",\"value\":\"1\"}],\"modelValue\":\"1\",\"style\":\"border-radius: 0px; margin-right: 10px;\"},\"id\":\"c97ccd99\"},{\"componentName\":\"Text\",\"props\":{\"text\":\"温馨提示:页面左上角切换区域\",\"style\":\"background-color: [object Event]; color: #8a8e99; font-size: 12px;\"},\"id\":\"20923497\"},{\"componentName\":\"Text\",\"props\":{\"text\":\"不同区域的云服务产品之间内网互不相通;请就近选择靠近您业务的区域,可减少网络时延,提高访问速度\",\"style\":\"display: block; color: #8a8e99; border-radius: 0px; font-size: 12px;\"},\"id\":\"54780a26\"}],\"id\":\"4966384d\"},{\"componentName\":\"TinyFormItem\",\"props\":{\"label\":\"可用区\",\"style\":\"border-radius: 0px;\"},\"children\":[{\"componentName\":\"TinyButtonGroup\",\"props\":{\"data\":[{\"text\":\"可用区1\",\"value\":\"1\"},{\"text\":\"可用区2\",\"value\":\"2\"},{\"text\":\"可用区3\",\"value\":\"3\"}],\"modelValue\":\"1\"},\"id\":\"6184481b\"}],\"id\":\"690837bf\"}],\"id\":\"b6a425d4\"}]},{\"componentName\":\"div\",\"props\":{\"style\":\"border-width: 1px; border-style: solid; border-radius: 4px; border-color: #fff; padding-top: 10px; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px; background-color: #fff; margin-bottom: 10px;\"},\"children\":[{\"componentName\":\"TinyForm\",\"props\":{\"labelWidth\":\"80px\",\"labelPosition\":\"top\",\"inline\":false,\"label-position\":\"left \",\"label-width\":\"150px\",\"style\":\"border-radius: 0px;\"},\"children\":[{\"componentName\":\"TinyFormItem\",\"props\":{\"label\":\"CPU架构\"},\"children\":[{\"componentName\":\"TinyButtonGroup\",\"props\":{\"data\":[{\"text\":\"x86计算\",\"value\":\"1\"},{\"text\":\"鲲鹏计算\",\"value\":\"2\"}],\"modelValue\":\"1\"},\"id\":\"7d33ced7\"}],\"id\":\"05ed5a79\"},{\"componentName\":\"TinyFormItem\",\"props\":{\"label\":\"区域\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"style\":\"display: flex; justify-content: flex-start; align-items: center;\"},\"id\":\"606edf78\",\"children\":[{\"componentName\":\"div\",\"props\":{\"style\":\"display: flex; align-items: center; margin-right: 10px;\"},\"id\":\"f3f98246\",\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"vCPUs\",\"style\":\"width: 80px;\"},\"id\":\"c287437e\"},{\"componentName\":\"TinySelect\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请选择\",\"options\":[{\"value\":\"1\",\"label\":\"黄金糕\"},{\"value\":\"2\",\"label\":\"双皮奶\"}]},\"id\":\"4c43286b\"}]},{\"componentName\":\"div\",\"props\":{\"style\":\"display: flex; align-items: center; margin-right: 10px;\"},\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"内存\",\"style\":\"width: 80px; border-radius: 0px;\"},\"id\":\"38b8fa1f\"},{\"componentName\":\"TinySelect\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请选择\",\"options\":[{\"value\":\"1\",\"label\":\"黄金糕\"},{\"value\":\"2\",\"label\":\"双皮奶\"}]},\"id\":\"cd33328e\"}],\"id\":\"2b2c678f\"},{\"componentName\":\"div\",\"props\":{\"style\":\"display: flex; align-items: center;\"},\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"规格名称\",\"style\":\"width: 80px;\"},\"id\":\"d3eb6352\"},{\"componentName\":\"TinySearch\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"输入关键词\"},\"id\":\"21cb9282\"}],\"id\":\"b8e0f35c\"}]},{\"componentName\":\"div\",\"props\":{\"style\":\"border-radius: 0px;\"},\"id\":\"5000c83e\",\"children\":[{\"componentName\":\"TinyButtonGroup\",\"props\":{\"data\":[{\"text\":\"通用计算型\",\"value\":\"1\"},{\"text\":\"通用计算增强型\",\"value\":\"2\"},{\"text\":\"内存优化型\",\"value\":\"3\"},{\"text\":\"内存优化型\",\"value\":\"4\"},{\"text\":\"磁盘增强型\",\"value\":\"5\"},{\"text\":\"超高I/O型\",\"value\":\"6\"},{\"text\":\"GPU加速型\",\"value\":\"7\"}],\"modelValue\":\"1\",\"style\":\"border-radius: 0px; margin-top: 12px;\"},\"id\":\"b8724703\"},{\"componentName\":\"TinyGrid\",\"props\":{\"editConfig\":{\"trigger\":\"click\",\"mode\":\"cell\",\"showStatus\":true},\"columns\":[{\"type\":\"radio\",\"width\":60},{\"field\":\"employees\",\"title\":\"规格名称\"},{\"field\":\"created_date\",\"title\":\"vCPUs | 内存(GiB)\",\"sortable\":true},{\"field\":\"city\",\"title\":\"CPU\",\"sortable\":true},{\"title\":\"基准 / 最大带宽\\t\",\"sortable\":true},{\"title\":\"内网收发包\",\"sortable\":true}],\"data\":[{\"id\":\"1\",\"name\":\"GFD科技有限公司\",\"city\":\"福州\",\"employees\":800,\"created_date\":\"2014-04-30 00:56:00\",\"boole\":false},{\"id\":\"2\",\"name\":\"WWW科技有限公司\",\"city\":\"深圳\",\"employees\":300,\"created_date\":\"2016-07-08 12:36:22\",\"boole\":true}],\"style\":\"margin-top: 12px; border-radius: 0px;\",\"auto-resize\":true},\"id\":\"77701c25\"},{\"componentName\":\"div\",\"props\":{\"style\":\"margin-top: 12px; border-radius: 0px;\"},\"id\":\"3339838b\",\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"当前规格\",\"style\":\"width: 150px; display: inline-block;\"},\"id\":\"203b012b\"},{\"componentName\":\"Text\",\"props\":{\"text\":\"通用计算型 | Si2.large.2 | 2vCPUs | 4 GiB\",\"style\":\"font-weight: 700;\"},\"id\":\"87723f52\"}]}]}],\"id\":\"657fb2fc\"}],\"id\":\"d19b15cf\"}],\"id\":\"9991228b\"},{\"componentName\":\"div\",\"props\":{\"style\":\"border-width: 1px; border-style: solid; border-radius: 4px; border-color: #fff; padding-top: 10px; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px; background-color: #fff; margin-bottom: 10px;\"},\"children\":[{\"componentName\":\"TinyForm\",\"props\":{\"labelWidth\":\"80px\",\"labelPosition\":\"top\",\"inline\":false,\"label-position\":\"left \",\"label-width\":\"150px\",\"style\":\"border-radius: 0px;\"},\"children\":[{\"componentName\":\"TinyFormItem\",\"props\":{\"label\":\"镜像\",\"style\":\"border-radius: 0px;\"},\"children\":[{\"componentName\":\"TinyButtonGroup\",\"props\":{\"data\":[{\"text\":\"公共镜像\",\"value\":\"1\"},{\"text\":\"私有镜像\",\"value\":\"2\"},{\"text\":\"共享镜像\",\"value\":\"3\"}],\"modelValue\":\"1\"},\"id\":\"922b14cb\"},{\"componentName\":\"div\",\"props\":{\"style\":\"display: flex; margin-top: 12px; border-radius: 0px;\"},\"id\":\"6b679524\",\"children\":[{\"componentName\":\"TinySelect\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请选择\",\"options\":[{\"value\":\"1\",\"label\":\"黄金糕\"},{\"value\":\"2\",\"label\":\"双皮奶\"}],\"style\":\"width: 170px; margin-right: 10px;\"},\"id\":\"4851fff7\"},{\"componentName\":\"TinySelect\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请选择\",\"options\":[{\"value\":\"1\",\"label\":\"黄金糕\"},{\"value\":\"2\",\"label\":\"双皮奶\"}],\"style\":\"width: 340px;\"},\"id\":\"a7183eb7\"}]},{\"componentName\":\"div\",\"props\":{\"style\":\"margin-top: 12px;\"},\"id\":\"57aee314\",\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"请注意操作系统的语言类型。\",\"style\":\"color: #e37d29;\"},\"id\":\"56d36c27\"}]}],\"id\":\"e3b02436\"}],\"id\":\"59aebf2b\"}],\"id\":\"87ff7b99\"},{\"componentName\":\"div\",\"props\":{\"style\":\"border-width: 1px; border-style: solid; border-radius: 4px; border-color: #fff; padding-top: 10px; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px; background-color: #fff; margin-bottom: 10px;\"},\"children\":[{\"componentName\":\"TinyForm\",\"props\":{\"labelWidth\":\"80px\",\"labelPosition\":\"top\",\"inline\":false,\"label-position\":\"left \",\"label-width\":\"150px\",\"style\":\"border-radius: 0px;\"},\"children\":[{\"componentName\":\"TinyFormItem\",\"props\":{\"label\":\"系统盘\",\"style\":\"border-radius: 0px;\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"style\":\"display: flex;\"},\"id\":\"cddba5b8\",\"children\":[{\"componentName\":\"TinySelect\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请选择\",\"options\":[{\"value\":\"1\",\"label\":\"黄金糕\"},{\"value\":\"2\",\"label\":\"双皮奶\"}],\"style\":\"width: 200px; margin-right: 10px;\"},\"id\":\"a97fbe15\"},{\"componentName\":\"TinyInput\",\"props\":{\"placeholder\":\"请输入\",\"modelValue\":\"\",\"style\":\"width: 120px; margin-right: 10px;\"},\"id\":\"1cde4c0f\"},{\"componentName\":\"Text\",\"props\":{\"text\":\"GiB \\nIOPS上限240,IOPS突发上限5,000\",\"style\":\"color: #575d6c; font-size: 12px;\"},\"id\":\"2815d82d\"}]}],\"id\":\"50239a3a\"}],\"id\":\"e8582986\"},{\"componentName\":\"TinyForm\",\"props\":{\"labelWidth\":\"80px\",\"labelPosition\":\"top\",\"inline\":false,\"label-position\":\"left \",\"label-width\":\"150px\",\"style\":\"border-radius: 0px;\"},\"children\":[{\"componentName\":\"TinyFormItem\",\"props\":{\"label\":\"数据盘\",\"style\":\"border-radius: 0px;\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"style\":\"margin-top: 12px; display: flex;\"},\"id\":\"728c9825\",\"children\":[{\"componentName\":\"Icon\",\"props\":{\"style\":\"margin-right: 10px; width: 16px; height: 16px;\",\"name\":\"IconPanelMini\"},\"id\":\"fded6930\"},{\"componentName\":\"TinySelect\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请选择\",\"options\":[{\"value\":\"1\",\"label\":\"黄金糕\"},{\"value\":\"2\",\"label\":\"双皮奶\"}],\"style\":\"width: 200px; margin-right: 10px;\"},\"id\":\"62734e3f\"},{\"componentName\":\"TinyInput\",\"props\":{\"placeholder\":\"请输入\",\"modelValue\":\"\",\"style\":\"width: 120px; margin-right: 10px;\"},\"id\":\"667c7926\"},{\"componentName\":\"Text\",\"props\":{\"text\":\"GiB \\nIOPS上限600,IOPS突发上限5,000\",\"style\":\"color: #575d6c; font-size: 12px; margin-right: 10px;\"},\"id\":\"e7bc36d6\"},{\"componentName\":\"TinyInput\",\"props\":{\"placeholder\":\"请输入\",\"modelValue\":\"\",\"style\":\"width: 120px;\"},\"id\":\"1bd56dc0\"}],\"loop\":{\"type\":\"JSExpression\",\"value\":\"this.state.dataDisk\"}},{\"componentName\":\"div\",\"props\":{\"style\":\"display: flex; margin-top: 12px; border-radius: 0px;\"},\"children\":[{\"componentName\":\"Icon\",\"props\":{\"name\":\"IconPlus\",\"style\":\"width: 16px; height: 16px; margin-right: 10px;\"},\"id\":\"65c89f2b\"},{\"componentName\":\"Text\",\"props\":{\"text\":\"增加一块数据盘\",\"style\":\"font-size: 12px; border-radius: 0px; margin-right: 10px;\"},\"id\":\"cb344071\"},{\"componentName\":\"Text\",\"props\":{\"text\":\"您还可以挂载 21 块磁盘(云硬盘)\",\"style\":\"color: #8a8e99; font-size: 12px;\"},\"id\":\"80eea996\"}],\"id\":\"e9e530ab\"}],\"id\":\"078e03ef\"}],\"id\":\"ccef886e\"}],\"id\":\"0fb7bd74\"},{\"componentName\":\"div\",\"props\":{\"style\":\"border-width: 1px; border-style: solid; border-color: #ffffff; padding-top: 10px; padding-left: 10px; padding-right: 10px; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px; background-color: #fff; position: fixed; inset: auto 0% 0% 0%; height: 80px; line-height: 80px; border-radius: 0px;\"},\"children\":[{\"componentName\":\"TinyForm\",\"props\":{\"labelWidth\":\"80px\",\"labelPosition\":\"top\",\"inline\":false,\"label-position\":\"left \",\"label-width\":\"150px\",\"style\":\"border-radius: 0px;\"},\"children\":[],\"id\":\"21ed4475\"},{\"componentName\":\"TinyRow\",\"props\":{\"style\":\"border-radius: 0px; height: 100%;\"},\"children\":[{\"componentName\":\"TinyCol\",\"props\":{\"span\":\"8\"},\"id\":\"b9d051a5\",\"children\":[{\"componentName\":\"TinyRow\",\"props\":{\"style\":\"border-radius: 0px;\"},\"children\":[{\"componentName\":\"TinyCol\",\"props\":{\"span\":\"5\",\"style\":\"display: flex;\"},\"id\":\"02352776\",\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"购买量\",\"style\":\"margin-right: 10px;\"},\"id\":\"0cd9ed5c\"},{\"componentName\":\"TinyInput\",\"props\":{\"placeholder\":\"请输入\",\"modelValue\":\"\",\"style\":\"width: 120px; margin-right: 10px;\"},\"id\":\"2f9cf442\"},{\"componentName\":\"Text\",\"props\":{\"text\":\"台\"},\"id\":\"facd4481\"}]},{\"componentName\":\"TinyCol\",\"props\":{\"span\":\"7\"},\"id\":\"82b6c659\",\"children\":[{\"componentName\":\"div\",\"props\":{},\"id\":\"9cd65874\",\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"配置费用\",\"style\":\"font-size: 12px;\"},\"id\":\"b5a0a0da\"},{\"componentName\":\"Text\",\"props\":{\"text\":\"¥1.5776\",\"style\":\"padding-left: 10px; padding-right: 10px; color: #de504e;\"},\"id\":\"d9464214\"},{\"componentName\":\"Text\",\"props\":{\"text\":\"/小时\",\"style\":\"font-size: 12px;\"},\"id\":\"af7cc5e6\"}]},{\"componentName\":\"div\",\"props\":{},\"id\":\"89063830\",\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"参考价格,具体扣费请以账单为准。\",\"style\":\"font-size: 12px; border-radius: 0px;\"},\"id\":\"d8995fbc\"},{\"componentName\":\"Text\",\"props\":{\"text\":\"了解计费详情\",\"style\":\"font-size: 12px; color: #344899;\"},\"id\":\"b383c3e2\"}]}]}],\"id\":\"94fc0e43\"}]},{\"componentName\":\"TinyCol\",\"props\":{\"span\":\"4\",\"style\":\"display: flex; flex-direction: row-reverse; border-radius: 0px; height: 100%; justify-content: flex-start; align-items: center;\"},\"id\":\"10b73009\",\"children\":[{\"componentName\":\"TinyButton\",\"props\":{\"text\":\"下一步: 网络配置\",\"type\":\"danger\",\"style\":\"max-width: unset;\"},\"id\":\"0b584011\"}]}],\"id\":\"d414a473\"}],\"id\":\"e8ec029b\"}],\"fileName\":\"createVM\"}', 0, 0, 'staticPages', 0, 1, '1', 0, NULL, NULL, NULL, '1', '1', '2024-10-16 23:31:48', '2024-10-16 23:31:48', '1', '1'); + +INSERT INTO `t_user` (`id`, `username`, `email`, `enable`, `created_by`, `last_updated_by`, `created_time`, `last_updated_time`, `tenant_id`, `site_id`, `is_admin`, `is_public`) VALUES (1, '开发者', 'developer@lowcode.com', NULL, '1', '1', '2024-10-16 23:28:41', '2024-10-16 23:28:41', '1', '1', 1, NULL); + +INSERT INTO `t_i18n_lang` (`id`, `lang`, `label`, `created_by`, `last_updated_by`, `created_time`, `last_updated_time`) VALUES (1, 'zh_CN', '简体中文', '1', '1', '2024-10-17 00:01:36', '2024-10-17 00:01:36'); +INSERT INTO `t_i18n_lang` (`id`, `lang`, `label`, `created_by`, `last_updated_by`, `created_time`, `last_updated_time`) VALUES (2, 'en_US', '美式英文', '1', '1', '2024-10-17 00:02:03', '2024-10-17 00:02:03'); + +INSERT INTO `t_platform` (`id`, `name`, `published`, `last_build_info`, `description`, `latest_version`, `latest_history_id`, `material_history_id`, `image_url`, `sort_plugins`, `sort_toolbar`, `is_default`, `prettier_opts`, `set_default_by`, `app_extend_config`, `data_hash`, `business_category_id`, `theme_id`, `platform_url`, `vscode_url`, `tenant_id`, `site_id`, `created_by`, `last_updated_by`, `created_time`, `last_updated_time`) VALUES (1, 'default', 1, NULL, '专用设计器', '1.0.0', 1, 1, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '1', '1', '1', '1', '2024-11-14 22:17:39', '2024-11-14 22:17:39'); + +INSERT INTO `t_platform_history` (`id`, `ref_id`, `version`, `name`, `publish_url`, `description`, `vscode_url`, `material_history_id`, `sub_count`, `material_pkg_name`, `material_version`, `image_url`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `last_updated_by`, `created_time`, `last_updated_time`) VALUES (1, 1, '1.0.0', 'default', 'http://tinyengine.com', '默认设计器', NULL, 1, 1, '@opentiny/lowcode-alpha-material-materialstwo-1505', '1.0.8', NULL, '1', NULL, '1', '1', '1', '2024-11-14 22:20:25', '2024-11-14 22:20:25'); + +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (1, '2.4.2', '{\"zh_CN\":\"输入框\"}', 'ElInput', 'input', '通过鼠标或键盘输入字符', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElInput\"}', '表单组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"输入框\"},\"icon\":\"input\",\"screenshot\":\"\",\"snippetName\":\"ElInput\",\"schema\":{}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"description\":{\"zh_CN\":\"绑定值\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"description\":{\"zh_CN\":\"类型\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"maxlength\",\"label\":{\"text\":{\"zh_CN\":\"最大长度\"}},\"description\":{\"zh_CN\":\"最大输入长度\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"number\",\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"是否禁用\"}},\"description\":{\"zh_CN\":\"是否禁用\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定值改变时触发\"},\"description\":{\"zh_CN\":\"双向绑定值改变时触发\"}},\"onBlur\":{\"label\":{\"zh_CN\":\"输入框失去焦点时触发\"},\"description\":{\"zh_CN\":\"输入框失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{\"prefix\":{\"label\":{\"zh_CN\":\"头部内容\"},\"description\":{\"zh_CN\":\"输入框头部内容,只对非 type=\'textarea\' 有效\"}},\"suffix\":{\"label\":{\"zh_CN\":\"尾部内容\"},\"description\":{\"zh_CN\":\"输入框尾部内容,只对非 type=\'textarea\' 有效\"}},\"prepend\":{\"label\":{\"zh_CN\":\"前置内容\"},\"description\":{\"zh_CN\":\"输入框前置内容,只对非 type=\'textarea\' 有效\"}},\"append\":{\"label\":{\"zh_CN\":\"后置内容\"},\"description\":{\"zh_CN\":\"输入框后置内容,只对非 type=\'textarea\' 有效\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"type\",\"size\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (2, '2.4.2', '{\"zh_CN\":\"按钮\"}', 'ElButton', 'button', '常用的操作按钮', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElButton\"}', '基础组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"按钮\"},\"icon\":\"button\",\"screenshot\":\"\",\"snippetName\":\"ElButton\",\"schema\":{\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"按钮文本\"}}]}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"description\":{\"zh_CN\":\"类型\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"plain\",\"label\":{\"text\":{\"zh_CN\":\"朴素按钮\"}},\"description\":{\"zh_CN\":\"是否为朴素按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文字按钮\"}},\"description\":{\"zh_CN\":\"是否为文字按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"bg\",\"label\":{\"text\":{\"zh_CN\":\"背景颜色\"}},\"description\":{\"zh_CN\":\"是否显示文字按钮背景颜色\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"link\",\"label\":{\"text\":{\"zh_CN\":\"链接按钮\"}},\"description\":{\"zh_CN\":\"是否为链接按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"round\",\"label\":{\"text\":{\"zh_CN\":\"圆角按钮\"}},\"description\":{\"zh_CN\":\"是否为圆角按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"circle\",\"label\":{\"text\":{\"zh_CN\":\"圆形按钮\"}},\"description\":{\"zh_CN\":\"是否为圆形按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"loading\",\"label\":{\"text\":{\"zh_CN\":\"加载中状态\"}},\"description\":{\"zh_CN\":\"是否为加载中状态\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"description\":{\"zh_CN\":\"是否禁用\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{},\"slots\":{\"default\":{\"label\":{\"zh_CN\":\"default\"},\"description\":{\"zh_CN\":\"自定义默认内容\"}},\"loading\":{\"label\":{\"zh_CN\":\"loading\"},\"description\":{\"zh_CN\":\"自定义加载中组件\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"type\",\"size\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (3, '2.4.2', '{\"zh_CN\":\"表单\"}', 'ElForm', 'form', '表单包含 输入框, 单选框, 下拉选择, 多选框 等用户输入的组件。 使用表单,您可以收集、验证和提交数据。', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElForm\"}', '表单组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"表单\"},\"icon\":\"form\",\"screenshot\":\"\",\"snippetName\":\"ElForm\",\"schema\":{\"children\":[{\"componentName\":\"ElFormItem\",\"props\":{\"label\":\"账号\",\"prop\":\"account\"},\"children\":[{\"componentName\":\"ElInput\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请输入账号\"}}]},{\"componentName\":\"ElFormItem\",\"props\":{\"label\":\"密码\",\"prop\":\"password\"},\"children\":[{\"componentName\":\"ElInput\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请输入密码\",\"type\":\"password\"}}]},{\"componentName\":\"ElFormItem\",\"props\":{},\"children\":[{\"componentName\":\"ElButton\",\"props\":{\"type\":\"primary\",\"style\":\"margin-right: 10px\"},\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"提交\"}}]},{\"componentName\":\"ElButton\",\"props\":{\"type\":\"primary\"},\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"重置\"}}]}]}]}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"model\",\"label\":{\"text\":{\"zh_CN\":\"数据对象\"}},\"description\":{\"zh_CN\":\"表单数据对象\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"rules\",\"label\":{\"text\":{\"zh_CN\":\"验证规则\"}},\"description\":{\"zh_CN\":\"表单验证规则\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"inline\",\"label\":{\"text\":{\"zh_CN\":\"行内模式\"}},\"description\":{\"zh_CN\":\"行内表单模式\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"label-position\",\"label\":{\"text\":{\"zh_CN\":\"标签位置\"}},\"description\":{\"zh_CN\":\"表单域标签的位置, 当设置为 left 或 right 时,则也需要设置标签宽度属性\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"right\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"top\",\"value\":\"top\"}]}}},{\"property\":\"label-width\",\"label\":{\"text\":{\"zh_CN\":\"标签宽度\"}},\"description\":{\"zh_CN\":\"标签的长度,例如 \'50px\'。 作为 Form 直接子元素的 form-item 会继承该值。 可以使用 auto。\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"label-suffix\",\"label\":{\"text\":{\"zh_CN\":\"标签后缀\"}},\"description\":{\"zh_CN\":\"表单域标签的后缀\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"hide-required-asterisk\",\"label\":{\"text\":{\"zh_CN\":\"隐藏必填星号\"}},\"description\":{\"zh_CN\":\"是否隐藏必填字段标签旁边的红色星号\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"require-asterisk-position\",\"label\":{\"text\":{\"zh_CN\":\"星号位置\"}},\"description\":{\"zh_CN\":\"星号的位置\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"left\",\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"show-message\",\"label\":{\"text\":{\"zh_CN\":\"显示校验信息\"}},\"description\":{\"zh_CN\":\"是否显示校验错误信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"inline-message\",\"label\":{\"text\":{\"zh_CN\":\"行内显示校验信息\"}},\"description\":{\"zh_CN\":\"是否以行内形式展示校验信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"status-icon\",\"label\":{\"text\":{\"zh_CN\":\"显示校验结果图标\"}},\"description\":{\"zh_CN\":\"是否在输入框中显示校验结果反馈图标\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"validate-on-rule-change\",\"label\":{\"text\":{\"zh_CN\":\"触发验证\"}},\"description\":{\"zh_CN\":\"是否在 rules 属性改变后立即触发一次验证\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"用于控制该表单内组件的尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"description\":{\"zh_CN\":\"是否禁用该表单内的所有组件。 如果设置为 true, 它将覆盖内部组件的 disabled 属性\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"scroll-to-error\",\"label\":{\"text\":{\"zh_CN\":\"滚动到错误项\"}},\"description\":{\"zh_CN\":\"当校验失败时,滚动到第一个错误表单项\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onValidate\":{\"label\":{\"zh_CN\":\"任一表单项被校验后触发\"},\"description\":{\"zh_CN\":\"任一表单项被校验后触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":[\"ElFormItem\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (4, '2.4.2', '{\"zh_CN\":\"表单子项\"}', 'ElFormItem', 'formItem', '表单包含 输入框, 单选框, 下拉选择, 多选框 等用户输入的组件。 使用表单,您可以收集、验证和提交数据。', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElFormItem\"}', '表单组件', 'element-plus', NULL, NULL, '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"prop\",\"label\":{\"text\":{\"zh_CN\":\"键名\"}},\"description\":{\"zh_CN\":\"model 的键名。 它可以是一个属性的值(如 a.b.0 或 [a\', \'b\', \'0\'])。 在定义了 validate、resetFields 的方法时,该属性是必填的\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"label\",\"label\":{\"text\":{\"zh_CN\":\"标签文本\"}},\"description\":{\"zh_CN\":\"标签文本\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"label-width\",\"label\":{\"text\":{\"zh_CN\":\"标签宽度\"}},\"description\":{\"zh_CN\":\"标签宽度,例如 \'50px\'。 可以使用 auto\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"required\",\"label\":{\"text\":{\"zh_CN\":\"必填项\"}},\"description\":{\"zh_CN\":\"是否为必填项,如不设置,则会根据校验规则确认\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"rules\",\"label\":{\"text\":{\"zh_CN\":\"验证规则\"}},\"description\":{\"zh_CN\":\"表单验证规则, 更多内容可以参考async-validator\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"error\",\"label\":{\"text\":{\"zh_CN\":\"错误信息\"}},\"description\":{\"zh_CN\":\"表单域验证错误时的提示信息。设置该值会导致表单验证状态变为 error,并显示该错误信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"show-message\",\"label\":{\"text\":{\"zh_CN\":\"显示错误信息\"}},\"description\":{\"zh_CN\":\"是否显示校验错误信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"inline-message\",\"label\":{\"text\":{\"zh_CN\":\"行内显示错误信息\"}},\"description\":{\"zh_CN\":\"是否在行内显示校验信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"用于控制该表单内组件的尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"for\",\"label\":{\"text\":{\"zh_CN\":\"for\"}},\"description\":{\"zh_CN\":\"和原生标签相同能力\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"validate-status\",\"label\":{\"text\":{\"zh_CN\":\"校验状态\"}},\"description\":{\"zh_CN\":\"formItem 校验的状态\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"error\",\"value\":\"error\"},{\"label\":\"validating\",\"value\":\"validating\"},{\"label\":\"success\",\"value\":\"success\"}]}}}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{},\"slots\":{\"label\":{\"label\":{\"zh_CN\":\"label\"},\"description\":{\"zh_CN\":\"标签位置显示的内容\"}},\"error\":{\"label\":{\"zh_CN\":\"error\"},\"description\":{\"zh_CN\":\"验证错误信息的显示内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (5, '2.4.2', '{\"zh_CN\":\"表单\"}', 'ElTable', 'table', '用于展示多条结构类似的数据, 可对数据进行排序、筛选、对比或其他自定义操作', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElTable\"}', '数据展示', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"表格\"},\"icon\":\"grid\",\"screenshot\":\"\",\"snippetName\":\"ElTable\",\"schema\":{\"props\":{\"data\":[{\"date\":\"2016-05-03\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"},{\"date\":\"2016-05-02\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"},{\"date\":\"2016-05-04\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"},{\"date\":\"2016-05-01\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"}],\"columns\":[{\"type\":\"index\"},{\"label\":\"Date\",\"prop\":\"date\"},{\"label\":\"Name\",\"prop\":\"name\"},{\"label\":\"Address\",\"prop\":\"address\"}]}}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"数据\"}},\"description\":{\"zh_CN\":\"显示的数据\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"columns\",\"label\":{\"text\":{\"zh_CN\":\"表格列配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"properties\":[{\"label\":{\"zh_CN\":\"默认分组\"},\"content\":[{\"property\":\"type\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"type\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列的类型。 如果设置了selection则显示多选框; 如果设置了 index 则显示该行的索引(从 1 开始计算); 如果设置了 expand 则显示为一个可展开的按钮\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"selection\",\"value\":\"selection\"},{\"label\":\"index\",\"value\":\"index\"},{\"label\":\"expand\",\"value\":\"expand\"}]}}},{\"property\":\"index\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"index\"}},\"description\":{\"text\":{\"zh_CN\":\"如果设置了 type=index,可以通过传递 index 属性来自定义索引\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"label\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"label\"}},\"description\":{\"text\":{\"zh_CN\":\"显示的标题\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"column-key\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"column-key\"}},\"description\":{\"text\":{\"zh_CN\":\"column 的 key, column 的 key, 如果需要使用 filter-change 事件,则需要此属性标识是哪个 column 的筛选条件\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"prop\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"prop\"}},\"description\":{\"text\":{\"zh_CN\":\"字段名称 对应列内容的字段名, 也可以使用 property属性\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"width\",\"type\":\"number\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"width\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列的宽度\"}},\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}}},{\"property\":\"min-width\",\"type\":\"number\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"min-width\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列的最小宽度, 对应列的最小宽度, 与 width 的区别是 width 是固定的,min-width 会把剩余宽度按比例分配给设置了 min-width 的列\"}},\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}}},{\"property\":\"fixed\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"fixed\"}},\"description\":{\"text\":{\"zh_CN\":\"列是否固定在左侧或者右侧。 true 表示固定在左侧\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"sortable\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"sortable\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列是否可以排序\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"sort-method\",\"type\":\"function\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"sort-method\"}},\"description\":{\"text\":{\"zh_CN\":\"指定数据按照哪个属性进行排序,仅当sortable设置为true的时候有效。 应该如同 Array.sort 那样返回一个 Number\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"sort-by\",\"type\":\"array\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"sort-by\"}},\"description\":{\"text\":{\"zh_CN\":\"指定数据按照哪个属性进行排序,仅当 sortable 设置为 true 且没有设置 sort-method 的时候有效。 如果 sort-by 为数组,则先按照第 1 个属性排序,如果第 1 个相等,再按照第 2 个排序,以此类推\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"sort-orders\",\"type\":\"array\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"sort-orders\"}},\"description\":{\"text\":{\"zh_CN\":\"数据在排序时所使用排序策略的轮转顺序,仅当 sortable 为 true 时有效。 需传入一个数组,随着用户点击表头,该列依次按照数组中元素的顺序进行排序\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"resizable\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"resizable\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列是否可以通过拖动改变宽度(需要在 el-table 上设置 border 属性为真)\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"formatter\",\"type\":\"function\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"formatter\"}},\"description\":{\"text\":{\"zh_CN\":\"用来格式化内容\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"dataType\":\"JSFunction\"}}},{\"property\":\"show-overflow-tooltip\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"show-overflow-tooltip\"}},\"description\":{\"text\":{\"zh_CN\":\"当内容过长被隐藏时显示 tooltip\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"align\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"align\"}},\"description\":{\"text\":{\"zh_CN\":\"对齐方式\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"center\",\"value\":\"center\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"header-align\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"header-align\"}},\"description\":{\"text\":{\"zh_CN\":\"表头对齐方式, 若不设置该项,则使用表格的对齐方式\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"center\",\"value\":\"center\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"class-name\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"class-name\"}},\"description\":{\"text\":{\"zh_CN\":\"列的 className\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"label-class-name\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"label-class-name\"}},\"description\":{\"text\":{\"zh_CN\":\"当前列标题的自定义类名\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"selectable\",\"type\":\"function\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"selectable\"}},\"description\":{\"text\":{\"zh_CN\":\"仅对 type=selection 的列有效,类型为 Function,Function 的返回值用来决定这一行的 CheckBox 是否可以勾选\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"reserve-selection\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"reserve-selection\"}},\"description\":{\"text\":{\"zh_CN\":\"数据刷新后是否保留选项,仅对 type=selection 的列有效, 请注意, 需指定 row-key 来让这个功能生效。\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"filters\",\"type\":\"array\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filters\"}},\"description\":{\"text\":{\"zh_CN\":\"数据刷新后是否保留选项,仅对 type=selection 的列有效, 请注意, 需指定 row-key 来让这个功能生效。\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"filter-placement\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"filter-placement\"}},\"description\":{\"text\":{\"zh_CN\":\"过滤弹出框的定位\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"filter-multiple\",\"type\":\"string\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filter-multiple\"}},\"description\":{\"text\":{\"zh_CN\":\"数据过滤的选项是否多选\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"filter-method\",\"type\":\"function\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filter-method\"}},\"description\":{\"text\":{\"zh_CN\":\"数据过滤使用的方法, 如果是多选的筛选项,对每一条数据会执行多次,任意一次返回 true 就会显示\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"filtered-value\",\"type\":\"array\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filtered-value\"}},\"description\":{\"text\":{\"zh_CN\":\"选中的数据过滤项,如果需要自定义表头过滤的渲染方式,可能会需要此属性\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}}]}],\"widget\":{\"component\":\"TableColumnsConfigurator\",\"props\":{\"type\":\"object\",\"textField\":\"label\",\"language\":\"json\",\"buttonText\":\"编辑列配置\",\"title\":\"编辑列配置\",\"expand\":true}},\"description\":{\"zh_CN\":\"表格列的配置信息\"},\"labelPosition\":\"top\"},{\"property\":\"max-height\",\"label\":{\"text\":{\"zh_CN\":\"最大高度\"}},\"description\":{\"zh_CN\":\"Table 的最大高度。\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"number\",\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"height\",\"label\":{\"text\":{\"zh_CN\":\"表格高度\"}},\"description\":{\"zh_CN\":\"Table 的高度, 默认为自动高度。 这个高度会设置为 Table 的 style.height 的值,Table 的高度会受控于外部样式。\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"stripe\",\"label\":{\"text\":{\"zh_CN\":\"斑马纹\"}},\"description\":{\"zh_CN\":\"是否为斑马纹 table\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"纵向边框\"}},\"description\":{\"zh_CN\":\"是否带有纵向边框\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"表格尺寸\"}},\"description\":{\"zh_CN\":\"Table 的尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"fit\",\"label\":{\"text\":{\"zh_CN\":\"列宽自撑开\"}},\"description\":{\"zh_CN\":\"列的宽度是否自撑开\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"show-header\",\"label\":{\"text\":{\"zh_CN\":\"显示表头\"}},\"description\":{\"zh_CN\":\"是否显示表头\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"highlight-current-row\",\"label\":{\"text\":{\"zh_CN\":\"高亮当前行\"}},\"description\":{\"zh_CN\":\"是否要高亮当前行\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"current-row-key\",\"label\":{\"text\":{\"zh_CN\":\"当前行的 key\"}},\"description\":{\"zh_CN\":\"当前行的 key,只写属性\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"row-class-name\",\"label\":{\"text\":{\"zh_CN\":\"行的类名\"}},\"description\":{\"zh_CN\":\"行的 className\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"row-key\",\"label\":{\"text\":{\"zh_CN\":\"行数据的 Key\"}},\"description\":{\"zh_CN\":\"行数据的 Key,用来优化 Table 的渲染; 在使用reserve-selection功能与显示树形数据时,该属性是必填的。 类型为 String 时,支持多层访问:user.info.id,但不支持 user.info[0].id,此种情况请使用 Function\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"empty-text\",\"label\":{\"text\":{\"zh_CN\":\"空数据文本\"}},\"description\":{\"zh_CN\":\"空数据时显示的文本内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"table-layout\",\"label\":{\"text\":{\"zh_CN\":\"表格布局方式\"}},\"description\":{\"zh_CN\":\"设置表格单元、行和列的布局方式\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"defaultValue\":\"fixed\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"fixed\",\"value\":\"fixed\"},{\"label\":\"auto\",\"value\":\"auto\"}]}},\"device\":[]},{\"property\":\"scrollbar-always-on\",\"label\":{\"text\":{\"zh_CN\":\"显示滚动条\"}},\"description\":{\"zh_CN\":\"总是显示滚动条\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"flexible\",\"label\":{\"text\":{\"zh_CN\":\"主轴最小尺寸\"}},\"description\":{\"zh_CN\":\"确保主轴的最小尺寸,以便不超过内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onSelect\":{\"label\":{\"zh_CN\":\"勾选数据行的 Checkbox 时触发\"},\"description\":{\"zh_CN\":\"当用户手动勾选数据行的 Checkbox 时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"selection\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项\"}},{\"name\":\"row\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前行\"}}],\"returns\":{}}},\"onSelectAll\":{\"label\":{\"zh_CN\":\"勾选全选时触发\"},\"description\":{\"zh_CN\":\"当用户手动勾选全选 Checkbox 时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"selection\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项\"}}],\"returns\":{}}},\"onSelectionChange\":{\"label\":{\"zh_CN\":\"选择项发生变化时会触发\"},\"description\":{\"zh_CN\":\"当选择项发生变化时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"selection\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项\"}}],\"returns\":{}}},\"onCellMouseEnter\":{\"label\":{\"zh_CN\":\"单元格 hover 时会触发\"},\"description\":{\"zh_CN\":\"当单元格 hover 进入时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"row\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前行\"}},{\"name\":\"column\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前列\"}},{\"name\":\"cell\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前单元格\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生事件 event\"}}],\"returns\":{}}},\"onCellMouseLeave\":{\"label\":{\"zh_CN\":\"单元格 hover 退出时会触发\"},\"description\":{\"zh_CN\":\"当单元格 hover 退出时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"row\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前行\"}},{\"name\":\"column\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前列\"}},{\"name\":\"cell\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前单元格\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生事件 event\"}}],\"returns\":{}}}},\"slots\":{\"empty\":{\"label\":{\"zh_CN\":\"empty\"},\"description\":{\"zh_CN\":\"当数据为空时自定义的内容\"}},\"append\":{\"label\":{\"zh_CN\":\"append\"},\"description\":{\"zh_CN\":\"插入至表格最后一行之后的内容, 如果需要对表格的内容进行无限滚动操作,可能需要用到这个 slot。 若表格有合计行,该 slot 会位于合计行之上。\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":[\"ElTableColumn\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (6, '2.4.2', '{\"zh_CN\":\"表单\"}', 'ElTableColumn', 'table', '用于展示多条结构类似的数据, 可对数据进行排序、筛选、对比或其他自定义操作', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElTableColumn\"}', '表单组件', 'element-plus', NULL, NULL, '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[],\"description\":{\"zh_CN\":\"\"}}],\"events\":{},\"slots\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (7, '3.20.0', '{\"zh_CN\":\"走马灯子项\"}', 'TinyCarouselItem', 'carouselitem', '常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CarouselItem\"}', 'component', '容器组件', 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"名称\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"幻灯片的名字,可用作 setActiveItem 的参数\"},\"labelPosition\":\"left\"},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"幻灯片的标题\"},\"labelPosition\":\"left\"},{\"property\":\"indicator-position\",\"label\":{\"text\":{\"zh_CN\":\"指示器位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"outside\",\"value\":\"outside\"},{\"label\":\"none\",\"value\":\"none\"}]}},\"description\":{\"zh_CN\":\"指示器的位置\"},\"labelPosition\":\"left\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (8, '3.20.0', '{\"zh_CN\":\"走马灯\"}', 'TinyCarousel', 'carousel', '常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Carousel\"}', 'component', '容器组件', 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"arrow\",\"label\":{\"text\":{\"zh_CN\":\"箭头显示时机\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"总是显示\",\"value\":\"always\"},{\"label\":\"鼠标悬停时显示\",\"value\":\"hover\"},{\"label\":\"从不显示\",\"value\":\"never\"}]}},\"description\":{\"zh_CN\":\"切换箭头的显示时机\"}},{\"property\":\"autoplay\",\"label\":{\"text\":{\"zh_CN\":\"自动切换\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否自动切换\"},\"labelPosition\":\"left\"},{\"property\":\"tabs\",\"label\":{\"text\":{\"zh_CN\":\"选项卡\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"\",\"cols\":12,\"bindState\":false,\"widget\":{\"component\":\"ContainerConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"tabs 选项卡\"},\"labelPosition\":\"none\"},{\"property\":\"height\",\"label\":{\"text\":{\"zh_CN\":\"高度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"走马灯的高度\"}},{\"property\":\"indicator-position\",\"label\":{\"text\":{\"zh_CN\":\"位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"走马灯外部\",\"value\":\"outside\"},{\"label\":\"不显示\",\"value\":\"none\"}]}},\"description\":{\"zh_CN\":\"指示器的位置\"}},{\"property\":\"initial-index\",\"label\":{\"text\":{\"zh_CN\":\"初始索引\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"初始状态激活的幻灯片的索引,从 0 开始 \"}},{\"property\":\"interval\",\"label\":{\"text\":{\"zh_CN\":\"自动切换间隔\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自动切换的时间间隔,单位为毫秒\"}},{\"property\":\"loop\",\"label\":{\"text\":{\"zh_CN\":\"循环显示\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否循环显示\"},\"labelPosition\":\"left\"},{\"property\":\"show-title\",\"label\":{\"text\":{\"zh_CN\":\"显示标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示标题\"},\"labelPosition\":\"left\"},{\"property\":\"trigger\",\"label\":{\"text\":{\"zh_CN\":\"触发方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"点击\",\"value\":\"click\"},{\"label\":\"悬停\",\"value\":\"hover\"}]}},\"description\":{\"zh_CN\":\"指示器的触发方式,默认为 hover\"}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"水平\",\"value\":\"horizontal\"},{\"label\":\"垂直\",\"value\":\"vertical\"},{\"label\":\"卡片\",\"value\":\"card\"}]}},\"description\":{\"zh_CN\":\"走马灯的类型\"}}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"clickCapture\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyCarouselItem\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (9, '3.20.0', '{\"zh_CN\":\"提示框\"}', 'a', 'link', '链接', '', '', '', '', 'proCode', '{}', 'component', 'basic', 7, '[{\"name\":{\"zh_CN\":\"链接\"},\"icon\":\"link\",\"screenshot\":\"\",\"snippetName\":\"a\",\"schema\":{\"componentName\":\"a\",\"children\":\"链接\"}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"children\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlTextConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"类型\"},\"labelPosition\":\"none\"},{\"property\":\"href\",\"label\":{\"text\":{\"zh_CN\":\"链接\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"指定链接的 URL\"},\"labelPosition\":\"left\"},{\"property\":\"target\",\"label\":{\"text\":{\"zh_CN\":\"打开方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"当前页面\",\"value\":\"_self\"},{\"label\":\"打开新页面\",\"value\":\"_blank\"}]}},\"description\":{\"zh_CN\":\"指定链接的打开方式,例如在当前窗口中打开或在新窗口中打开。\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}]}', '{\"loop\":true,\"condition\":true,\"slots\":[],\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[]},\"contextMenu\":{\"actions\":[],\"disable\":[]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (10, '3.20.0', '{\"zh_CN\":\"标题\"}', '[h1, h2, h3, h4, h5, h6]', 'h16', '标题', '', '', '', '', 'proCode', '{}', 'component', 'html', 20, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"children\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlTextConfigurator\",\"props\":{\"showRadioButton\":true}},\"description\":{\"zh_CN\":\"\"},\"labelPosition\":\"none\"},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"\"},\"labelPosition\":\"none\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (11, '3.20.0', '{\"zh_CN\":\"段落\"}', 'p', 'paragraph', '段落', '', '', '', '', 'proCode', '{}', 'component', 'basic', 30, '[{\"name\":{\"zh_CN\":\"段落\"},\"icon\":\"paragraph\",\"screenshot\":\"\",\"snippetName\":\"p\",\"schema\":{\"componentName\":\"p\",\"children\":\"TinyEngine 前端可视化设计器致力于通过友好的用户交互提升业务应用的开发效率。\"}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"children\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlTextConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"类型\"},\"labelPosition\":\"none\"},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[]},\"contextMenu\":{\"actions\":[],\"disable\":[]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (12, '3.20.0', '{\"zh_CN\":\"输入框\"}', 'input', 'input', '输入框', '', '', '', '', 'proCode', '{}', 'component', 'html', 40, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"checkbox\",\"value\":\"checkbox\"},{\"label\":\"color\",\"value\":\"color\"},{\"label\":\"date\",\"value\":\"date\"},{\"label\":\"button\",\"value\":\"button\"},{\"label\":\"email\",\"value\":\"email\"},{\"label\":\"file\",\"value\":\"file\"},{\"label\":\"hidden\",\"value\":\"hidden\"},{\"label\":\"image\",\"value\":\"image\"},{\"label\":\"month\",\"value\":\"month\"},{\"label\":\"number\",\"value\":\"number\"},{\"label\":\"password\",\"value\":\"password\"},{\"label\":\"radio\",\"value\":\"radio\"},{\"label\":\"range\",\"value\":\"range\"},{\"label\":\"reset\",\"value\":\"reset\"},{\"label\":\"search\",\"value\":\"search\"},{\"label\":\"submit\",\"value\":\"submit\"},{\"label\":\"text\",\"value\":\"text\"},{\"label\":\"time\",\"value\":\"time\"},{\"label\":\"week\",\"value\":\"week\"},{\"label\":\"url\",\"value\":\"url\"}]}},\"description\":{\"zh_CN\":\"类型\"}},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位符\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"占位符\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onChange\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (13, '3.20.0', '{\"zh_CN\":\"视频\"}', 'video', 'video', '视频', '', '', '', '', 'proCode', '{}', 'component', 'basic', 50, '[{\"name\":{\"zh_CN\":\"视频\"},\"icon\":\"video\",\"screenshot\":\"\",\"snippetName\":\"video\",\"schema\":{\"componentName\":\"video\",\"props\":{\"src\":\"img/webNova.jpg\",\"width\":\"200\",\"height\":\"100\",\"style\":\"border:1px solid #ccc\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"src\",\"label\":{\"text\":{\"zh_CN\":\"资源\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"视频的 URL\"}},{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"播放器宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"视频播放器的宽度\"}},{\"property\":\"height\",\"label\":{\"text\":{\"zh_CN\":\"播放器高度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"视频播放器的高度\"}},{\"property\":\"controls\",\"label\":{\"text\":{\"zh_CN\":\"显示控件\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示控件\"},\"labelPosition\":\"left\"},{\"property\":\"autoplay\",\"label\":{\"text\":{\"zh_CN\":\"马上播放\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否马上播放\"},\"labelPosition\":\"left\"},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[]},\"contextMenu\":{\"actions\":[],\"disable\":[]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (14, '3.20.0', '{\"zh_CN\":\"Img\"}', 'Img', 'Image', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 60, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"src\",\"type\":\"string\",\"defaultValue\":\"\",\"bindState\":true,\"label\":{\"text\":{\"zh_CN\":\"资源\"}},\"cols\":12,\"rules\":[],\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"src路径\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{},\"shortcuts\":{\"properties\":[\"src\"]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (15, '3.20.0', '{\"zh_CN\":\"Button\"}', 'button', 'button', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 70, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', '{\"isContainer\":true}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (16, '3.20.0', '{\"zh_CN\":\"表格\"}', 'table', 'table', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 80, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格的宽度\"}},{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"边框宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格边框的宽度\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (17, '3.20.0', '{\"zh_CN\":\"表格单元格\"}', 'td', 'td', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 90, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"colspan\",\"label\":{\"text\":{\"zh_CN\":\"合并列\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单元格可横跨的列数\"}},{\"property\":\"rowspan\",\"label\":{\"text\":{\"zh_CN\":\"合并行\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单元格可横跨的行数\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (18, '3.20.0', '{\"zh_CN\":\"表单\"}', 'form', 'form', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 100, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"名称\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单的名称\"}},{\"property\":\"action\",\"label\":{\"text\":{\"zh_CN\":\"提交地址\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"提交表单时向何处发送表单数据\"}},{\"property\":\"method\",\"label\":{\"text\":{\"zh_CN\":\"HTTP方法\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"get\",\"value\":\"get\"},{\"label\":\"post\",\"value\":\"post\"}]}},\"description\":{\"zh_CN\":\"用于发送 form-data 的 HTTP 方法\"}}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', '{\"isContainer\":true}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (19, '3.20.0', '{\"zh_CN\":\"表单标签\"}', 'label', 'label', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 110, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"for\",\"label\":{\"text\":{\"zh_CN\":\"label绑定表单元素\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"label 绑定到哪个表单元素\"}},{\"property\":\"form\",\"label\":{\"text\":{\"zh_CN\":\"label字段所属表单\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"label 字段所属的一个或多个表单\"}}]}],\"events\":{},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (20, '3.20.0', '{\"zh_CN\":\"按钮组\"}', 'TinyButtonGroup', 'buttonGroup', '以按钮组的方式出现,常用于多项类似操作', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"ButtonGroup\"}', 'component', 'basic', 2, '[{\"name\":{\"zh_CN\":\"互斥按钮组\"},\"icon\":\"buttons\",\"screenshot\":\"\",\"snippetName\":\"TinyButtonGroup\",\"schema\":{\"componentName\":\"TinyButtonGroup\",\"props\":{\"data\":[{\"text\":\"Button1\",\"value\":\"1\"},{\"text\":\"Button2\",\"value\":\"2\"},{\"text\":\"Button3\",\"value\":\"3\"}],\"modelValue\":\"1\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"配置按钮组数据\"}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"大小\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"mini\",\"value\":\"mini\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"medium\",\"value\":\"medium\"}]}},\"description\":{\"zh_CN\":\"组件大小\"},\"labelPosition\":\"left\"},{\"property\":\"plain\",\"label\":{\"text\":{\"zh_CN\":\"朴素按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否是朴素按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (21, '3.20.0', '{\"zh_CN\":\"row\"}', 'TinyRow', 'row', '定义 Layout 的行配置信息', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Row\"}', 'component', NULL, 5, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"layout\",\"label\":{\"text\":{\"zh_CN\":\"布局\"}},\"cols\":12,\"widget\":{\"component\":\"LayoutGridConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"选择布局方式\"},\"labelPosition\":\"none\"},{\"property\":\"align\",\"label\":{\"text\":{\"zh_CN\":\"子项对齐方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"top\",\"value\":\"top\"},{\"label\":\"middle\",\"value\":\"middle\"},{\"label\":\"bottom\",\"value\":\"bottom\"}]}},\"description\":{\"zh_CN\":\"子项的副轴对齐方向,可取值:top, middle, bottom\"}},{\"property\":\"flex\",\"label\":{\"text\":{\"zh_CN\":\"flex容器\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否为flex容器\"},\"labelPosition\":\"left\"},{\"property\":\"gutter\",\"label\":{\"text\":{\"zh_CN\":\"子项间隔\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"子项的间隔的像素\"}}]}]}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (22, '3.20.0', '{\"zh_CN\":\"row\"}', 'TinyLayout', 'row', '定义 Layout 的行配置信息', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Layout\",\"version\":\"3.20.0\",\"destructuring\":true,\"script\":\"https://unpkg.com/@opentiny/vue-runtime@~3.20/dist3/tiny-vue-pc.mjs\",\"css\":\"https://unpkg.com/@opentiny/vue-theme@~3.20/index.css\"}', 'component', 'layout', 5, '[{\"name\":{\"zh_CN\":\"栅格布局\"},\"icon\":\"row\",\"screenshot\":\"\",\"snippetName\":\"TinyLayout\",\"schema\":{\"componentName\":\"TinyLayout\",\"props\":{},\"children\":[{\"componentName\":\"TinyRow\",\"props\":{\"style\":\"padding: 10px;\"},\"children\":[{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}}]},{\"componentName\":\"TinyRow\",\"props\":{\"style\":\"padding: 10px;\"},\"children\":[{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"cols\",\"label\":{\"text\":{\"zh_CN\":\"总栅格数\"}},\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"12\",\"value\":12},{\"label\":\"24\",\"value\":24}]}},\"description\":{\"zh_CN\":\"选择总栅格数\"},\"labelPosition\":\"none\"},{\"property\":\"tag\",\"label\":{\"text\":{\"zh_CN\":\"layout渲染的标签\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"定义Layout元素渲染后的标签,默认为 div\"}}]}]}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyRow\",\"TinyCol\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (23, '3.20.0', '{\"zh_CN\":\"表单\"}', 'TinyForm', 'form', '由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Form\"}', 'component', NULL, 5, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"label-width\",\"label\":{\"text\":{\"zh_CN\":\"标签宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单中标签占位宽度,默认为 80px\"},\"labelPosition\":\"left\"},{\"property\":\"inline\",\"label\":{\"text\":{\"zh_CN\":\"行内布局\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"行内布局模式,默认为 false\"},\"labelPosition\":\"left\"},{\"property\":\"label-align\",\"label\":{\"text\":{\"zh_CN\":\"必填标识占位\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"必填标识 * 是否占位\"},\"labelPosition\":\"left\"},{\"property\":\"label-suffix\",\"label\":{\"text\":{\"zh_CN\":\"标签后缀\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单中标签后缀\"},\"labelPosition\":\"left\"},{\"property\":\"label-position\",\"label\":{\"text\":{\"zh_CN\":\"标签位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"left \",\"value\":\"left \"},{\"label\":\"top\",\"value\":\"top\"}]}},\"description\":{\"zh_CN\":\"表单中标签的布局位置\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"校验属性\"},\"content\":[{\"property\":\"model\",\"label\":{\"text\":{\"zh_CN\":\"数据对象\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单数据对象\"},\"labelPosition\":\"top\"},{\"property\":\"rules\",\"label\":{\"text\":{\"zh_CN\":\"校验规则\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单验证规则\"},\"labelPosition\":\"top\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onValidate\":{\"label\":{\"zh_CN\":\"表单项被校验后触发\"},\"description\":{\"zh_CN\":\"表单项被校验后触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"function\",\"type\":\"Function\",\"defaultValue\":\"(valid) => {}\",\"description\":{\"zh_CN\":\"校验回调函数\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (24, '3.20.0', '{\"zh_CN\":\"表单项\"}', 'TinyFormItem', 'formitem', '由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"FormItem\"}', 'component', NULL, 12, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"label\",\"label\":{\"text\":{\"zh_CN\":\"标签文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"标签\",\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标签文本\"},\"labelPosition\":\"left\"},{\"property\":\"prop\",\"label\":{\"text\":{\"zh_CN\":\"校验字段\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单域 model 字段,在使用 validate、resetFields 方法的情况下,该属性是必填的\"},\"labelPosition\":\"left\"},{\"property\":\"required\",\"label\":{\"text\":{\"zh_CN\":\"必填\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否必填\"},\"labelPosition\":\"left\"}]}],\"events\":{},\"slots\":{\"label\":{\"label\":{\"zh_CN\":\"字段名\"},\"description\":{\"zh_CN\":\"自定义显示字段名称\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":[\"TinyForm\"],\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label\",\"rules\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (25, '3.20.0', '{\"zh_CN\":\"col\"}', 'TinyCol', 'col', '列配置信息', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Col\"}', 'component', NULL, 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"span\",\"label\":{\"text\":{\"zh_CN\":\"栅格列格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"整行\",\"value\":12},{\"label\":\"6格\",\"value\":6},{\"label\":\"4格\",\"value\":4},{\"label\":\"3格\",\"value\":3},{\"label\":\"1格\",\"value\":1}]}},\"description\":{\"zh_CN\":\"当一行分为12格时,一列可占位多少格\"}},{\"property\":\"move\",\"label\":{\"text\":{\"zh_CN\":\"栅格移动格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":-12,\"max\":12}},\"description\":{\"zh_CN\":\"栅格左右移动格数(正数向右,负数向左)\"}},{\"property\":\"no\",\"label\":{\"text\":{\"zh_CN\":\"排序编号\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"max\":12}},\"description\":{\"zh_CN\":\"排序编号(row中启用order生效)\"}},{\"property\":\"offset\",\"label\":{\"text\":{\"zh_CN\":\"间隔格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":0,\"max\":12}},\"description\":{\"zh_CN\":\"栅格左侧的间隔格数\"}},{\"property\":\"xs\",\"label\":{\"text\":{\"zh_CN\":\"超小屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"<768px 响应式栅格数\"}},{\"property\":\"sm\",\"label\":{\"text\":{\"zh_CN\":\"小屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥768px 响应式栅格数\"}},{\"property\":\"md\",\"label\":{\"text\":{\"zh_CN\":\"中屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥992px 响应式栅格数\"}},{\"property\":\"lg\",\"label\":{\"text\":{\"zh_CN\":\"大屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥1200px 响应式栅格数\"}},{\"property\":\"xl\",\"label\":{\"text\":{\"zh_CN\":\"超大屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥1920px 响应式栅格数\"}}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label\",\"rules\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (26, '3.20.0', '{\"zh_CN\":\"按钮\"}', 'TinyButton', 'button', '常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮、下拉按钮等类型', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Button\"}', 'component', 'basic', 2, '[{\"name\":{\"zh_CN\":\"按钮\"},\"icon\":\"button\",\"screenshot\":\"\",\"snippetName\":\"TinyButton\",\"schema\":{\"componentName\":\"TinyButton\",\"props\":{\"text\":\"按钮文案\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"text\",\"type\":\"string\",\"defaultValue\":\"按钮文案\",\"label\":{\"text\":{\"zh_CN\":\"按钮文字\"}},\"cols\":12,\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"按钮文字\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"type\":\"select\",\"label\":{\"text\":{\"zh_CN\":\"大小\"}},\"cols\":12,\"rules\":[],\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"按钮大小\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否被禁用\"},\"labelPosition\":\"left\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"primary\",\"value\":\"primary\"},{\"label\":\"success\",\"value\":\"success\"},{\"label\":\"info\",\"value\":\"info\"},{\"label\":\"warning\",\"value\":\"warning\"},{\"label\":\"danger\",\"value\":\"danger\"},{\"label\":\"text\",\"value\":\"text\"}]}},\"description\":{\"zh_CN\":\"设置不同的主题样式\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"round\",\"label\":{\"text\":{\"zh_CN\":\"圆角\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否圆角按钮\"},\"labelPosition\":\"left\"},{\"property\":\"plain\",\"label\":{\"text\":{\"zh_CN\":\"朴素按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否为朴素按钮\"},\"labelPosition\":\"left\"},{\"property\":\"reset-time\",\"label\":{\"text\":{\"zh_CN\":\"禁用时间\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置禁用时间,防止重复提交,单位毫秒\"},\"labelPosition\":\"left\"},{\"property\":\"circle\",\"label\":{\"text\":{\"zh_CN\":\"圆形按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否圆形按钮\"},\"labelPosition\":\"left\"},{\"property\":\"autofocus\",\"label\":{\"text\":{\"zh_CN\":\"自动聚焦\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否默认聚焦\"},\"labelPosition\":\"left\"},{\"property\":\"loading\",\"label\":{\"text\":{\"zh_CN\":\"加载中样式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否展示位加载中样式\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击事件\"},\"description\":{\"zh_CN\":\"按钮被点击时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"text\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (27, '3.20.0', '{\"zh_CN\":\"输入框\"}', 'TinyInput', 'input', '通过鼠标或键盘输入字符', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Input\"}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"输入框\"},\"icon\":\"input\",\"screenshot\":\"\",\"snippetName\":\"TinyInput\",\"schema\":{\"componentName\":\"TinyInput\",\"props\":{\"placeholder\":\"请输入\",\"modelValue\":\"\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"textarea\",\"value\":\"textarea\"},{\"label\":\"text\",\"value\":\"text\"},{\"label\":\"password\",\"value\":\"password\"}]}},\"description\":{\"zh_CN\":\"设置input框的type属性\"},\"labelPosition\":\"left\"},{\"property\":\"rows\",\"label\":{\"text\":{\"zh_CN\":\"行数\"}},\"widget\":{\"component\":\"NumberConfigurator\"},\"description\":{\"zh_CN\":\"输入框行数,只对 type=\'textarea\' 有效\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"输入框尺寸。该属性的可选值为 medium / small / mini\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"maxlength\",\"label\":{\"text\":{\"zh_CN\":\"最大输入长度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置 input 框的maxLength\"}},{\"property\":\"autofocus\",\"label\":{\"text\":{\"zh_CN\":\"自动聚焦\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自动获取焦点\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框改变后的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{\"prefix\":{\"label\":{\"zh_CN\":\"前置内容\"}},\"suffix\":{\"label\":{\"zh_CN\":\"后置内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (28, '3.20.0', '{\"zh_CN\":\"单选\"}', 'TinyRadio', 'radio', '用于配置不同场景的选项,在一组备选项中进行单选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Radio\"}', 'component', 'form', 3, '[{\"name\":{\"zh_CN\":\"单选\"},\"icon\":\"radio\",\"screenshot\":\"\",\"snippetName\":\"TinyRadio\",\"schema\":{\"componentName\":\"TinyRadio\",\"props\":{\"label\":\"1\",\"text\":\"单选文本\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文本内容\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单选框文本内容\"}},{\"property\":\"label\",\"label\":{\"text\":{\"zh_CN\":\"选中值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"props\":{}},\"description\":{\"zh_CN\":\"radio 选中时的值\"}},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"}]},{\"label\":{\"zh_CN\":\"其他\"},\"description\":{\"zh_CN\":\"\"},\"content\":[{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"显示边框\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示边框\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单选框的尺寸,仅在 border 为true时有效\"}},{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"原生name属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生 name 属性\"}}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值变化事件\"},\"description\":{\"zh_CN\":\"绑定值变化时触发的事件\"}},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"visible\",\"width\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (29, '3.20.0', '{\"zh_CN\":\"下拉框\"}', 'TinySelect', 'select', 'Select 选择器是一种通过点击弹出下拉列表展示数据并进行选择的 UI 组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Select\"}', 'component', 'form', 8, '[{\"name\":{\"zh_CN\":\"下拉框\"},\"icon\":\"select\",\"screenshot\":\"\",\"snippetName\":\"TinySelect\",\"schema\":{\"componentName\":\"TinySelect\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请选择\",\"options\":[{\"value\":\"1\",\"label\":\"黄金糕\"},{\"value\":\"2\",\"label\":\"双皮奶\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"searchable\",\"label\":{\"text\":{\"zh_CN\":\"下拉可搜索\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"下拉面板是否可搜索\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"options\",\"label\":{\"text\":{\"zh_CN\":\"选项数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"配置 Select 下拉数据项\"},\"labelPosition\":\"top\"},{\"property\":\"multiple\",\"label\":{\"text\":{\"zh_CN\":\"多选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否允许输入框输入或选择多个项\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"multiple-limit\",\"label\":{\"text\":{\"zh_CN\":\"最大可选值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"多选时用户最多可以选择的项目数,为 0 则不限制\"},\"labelPosition\":\"left\"},{\"property\":\"popper-class\",\"label\":{\"text\":{\"zh_CN\":\"下拉框类名\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置下拉框自定义的类名\"},\"labelPosition\":\"left\"},{\"property\":\"collapse-tags\",\"label\":{\"text\":{\"zh_CN\":\"多选展示\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"多选时是否将选中值按文字的形式展示\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在下拉框值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"下拉框选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onRemoveTag\":{\"label\":{\"zh_CN\":\"多选模式下移除tag时触发\"},\"description\":{\"zh_CN\":\"多选模式下移除tag时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"被移除Tag对应数据项的值字段\"}}],\"returns\":{}},\"defaultValue\":\"\"}},\"onBeforeMount\":\"console.log(\'table on load\'); this.options = source.data\"}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"multiple\",\"options\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (30, '3.20.0', '{\"zh_CN\":\"开关\"}', 'TinySwitch', 'switch', 'Switch 在两种状态间切换选择', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Switch\"}', 'component', 'form', 9, '[{\"name\":{\"zh_CN\":\"开关\"},\"icon\":\"switch\",\"screenshot\":\"\",\"snippetName\":\"TinySwitch\",\"schema\":{\"componentName\":\"TinySwitch\",\"props\":{\"modelValue\":\"\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否被禁用\"},\"labelPosition\":\"left\"},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"绑定默认值\"},\"labelPosition\":\"left\"},{\"property\":\"true-value\",\"label\":{\"text\":{\"zh_CN\":\"设置打开值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置打开时的值(Boolean / String / Number)\"},\"labelPosition\":\"left\"},{\"property\":\"false-value\",\"label\":{\"text\":{\"zh_CN\":\"设置关闭值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置关闭时的值(Boolean / String / Number)\"},\"labelPosition\":\"left\"},{\"property\":\"mini\",\"label\":{\"text\":{\"zh_CN\":\"迷你尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示为 mini 模式\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"点击事件\"},\"description\":{\"zh_CN\":\"按钮被点击时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"开关的状态值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的开关状态值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"mini\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (31, '3.20.0', '{\"zh_CN\":\"搜索框\"}', 'TinySearch', 'search', '指定条件对象进行搜索数据', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Search\"}', 'component', 'basic', 2, '[{\"name\":{\"zh_CN\":\"搜索框\"},\"icon\":\"search\",\"screenshot\":\"\",\"snippetName\":\"TinySearch\",\"schema\":{\"componentName\":\"TinySearch\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"输入关键词\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"默认值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框内的默认搜索值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否被禁用\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框内的提示占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清空按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置显示清空图标按钮\"},\"labelPosition\":\"left\"},{\"property\":\"isEnterSearch\",\"label\":{\"text\":{\"zh_CN\":\"Enter键触发\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否在按下键盘Enter键的时候触发search事件\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"mini\",\"label\":{\"text\":{\"zh_CN\":\"迷你尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"迷你模式,配置为true时,搜索默认显示为一个带图标的圆形按钮,点击后展开\"},\"labelPosition\":\"left\"},{\"property\":\"transparent\",\"label\":{\"text\":{\"zh_CN\":\"透明模式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"配置为true时,边框变为透明且收缩后半透明显示,一般用在带有背景的场景,默认 false\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"输入完成时触发\"},\"description\":{\"zh_CN\":\"在 input 框中输入完成时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"type\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"搜索类型,默认值为 {} \"}},{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前input框中值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onSearch\":{\"label\":{\"zh_CN\":\"点击搜索按钮时触发\"},\"description\":{\"zh_CN\":\"展开状态点击搜索按钮时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"type\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"搜索类型,默认值为 {} \"}},{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前input框中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"clearable\",\"mini\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (32, '3.20.0', '{\"zh_CN\":\"复选框\"}', 'TinyCheckbox', 'checkbox', '用于配置不同场景的选项,提供用户可在一组选项中进行多选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Checkbox\"}', 'component', 'form', 4, '[{\"name\":{\"zh_CN\":\"复选框\"},\"icon\":\"checkbox\",\"screenshot\":\"\",\"snippetName\":\"TinyCheckbox\",\"schema\":{\"componentName\":\"TinyCheckbox\",\"props\":{\"text\":\"复选框文案\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"checked\",\"label\":{\"text\":{\"zh_CN\":\"勾选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当前是否勾选\"},\"labelPosition\":\"left\"},{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"复选框的文本\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"边框\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示边框\"},\"labelPosition\":\"left\"},{\"property\":\"false-label\",\"label\":{\"text\":{\"zh_CN\":\"未选中的值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"没有选中时的值\"},\"labelPosition\":\"left\"},{\"property\":\"true-label\",\"label\":{\"text\":{\"zh_CN\":\"选择时的值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"选中时的值\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"勾选值改变后将触发\"},\"description\":{\"zh_CN\":\"勾选值改变后将触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"border\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (33, '3.20.0', '{\"zh_CN\":\"复选按钮\"}', 'TinyCheckboxButton', 'checkboxbutton', '用于配置不同场景的选项,提供用户可在一组选项中进行多选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CheckboxButton\"}', 'component', NULL, 1, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"checked\",\"label\":{\"text\":{\"zh_CN\":\"勾选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当前是否勾选\"},\"labelPosition\":\"left\"},{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"按钮文本\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"勾选值改变后将触发\"},\"description\":{\"zh_CN\":\"勾选值改变后将触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"array\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"text\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (34, '3.20.0', '{\"zh_CN\":\"复选按钮组\"}', 'TinyCheckboxGroup', 'checkboxgroup', '用于配置不同场景的选项,提供用户可在一组选项中进行多选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CheckboxGroup\"}', 'component', 'form', 2, '[{\"name\":{\"zh_CN\":\"复选框组\"},\"icon\":\"checkboxs\",\"screenshot\":\"\",\"snippetName\":\"TinyCheckboxGroup\",\"schema\":{\"componentName\":\"TinyCheckboxGroup\",\"props\":{\"modelValue\":[\"name1\",\"name2\"],\"type\":\"checkbox\",\"options\":[{\"text\":\"复选框1\",\"label\":\"name1\"},{\"text\":\"复选框2\",\"label\":\"name2\"},{\"text\":\"复选框3\",\"label\":\"name3\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"dataType\":\"Array\"}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"options\",\"label\":{\"text\":{\"zh_CN\":\"选项列表\"}},\"defaultValue\":[{\"label\":\"标签2\"},{\"label\":\"标签2\"}],\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"checkbox组件列表\"},\"labelPosition\":\"top\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"button\",\"value\":\"button\"},{\"label\":\"checkbox\",\"value\":\"checkbox\"}]}},\"description\":{\"zh_CN\":\"checkbox组件类型(button/checkbox),该属性的默认值为 checkbox,配合 options 属性一起使用\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"勾选值改变后将触发\"},\"description\":{\"zh_CN\":\"勾选值改变后将触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"array\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"type\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (35, '3.20.0', '{\"zh_CN\":\"对话框\"}', 'TinyDialogBox', 'dialogbox', '模态对话框,在浮层中显示,引导用户进行相关操作。', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"DialogBox\"}', 'component', 'data-display', 4, '[{\"name\":{\"zh_CN\":\"对话框\"},\"icon\":\"dialogbox\",\"screenshot\":\"\",\"snippetName\":\"TinyDialogBox\",\"schema\":{\"componentName\":\"TinyDialogBox\",\"props\":{\"visible\":true,\"show-close\":true,\"title\":\"dialogBox title\"},\"children\":[{\"componentName\":\"div\"}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"弹出框标题\"},\"labelPosition\":\"left\"},{\"property\":\"visible\",\"label\":{\"text\":{\"zh_CN\":\"显示与隐藏\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"控制弹出框显示与关闭\"},\"labelPosition\":\"left\"},{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"弹出框的宽度\"},\"labelPosition\":\"left\"},{\"property\":\"draggable\",\"label\":{\"text\":{\"zh_CN\":\"可拖拽\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否开启弹窗的拖拽功能,默认值为 false 。\"},\"labelPosition\":\"left\"},{\"property\":\"center\",\"label\":{\"text\":{\"zh_CN\":\"居中\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"弹出框的头部与底部内容会自动居中\"},\"labelPosition\":\"left\"},{\"property\":\"dialog-class\",\"label\":{\"text\":{\"zh_CN\":\"自定义类名\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自定义配置弹窗类名\"},\"labelPosition\":\"left\"},{\"property\":\"append-to-body\",\"label\":{\"text\":{\"zh_CN\":\"插入到Body\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"DialogBox 本身是否插入到 body 上,嵌套的 Dialog 必须指定该属性并赋值为 true\"},\"labelPosition\":\"left\"},{\"property\":\"show-close\",\"label\":{\"text\":{\"zh_CN\":\"关闭按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示关闭按钮,默认值为 true 。\"},\"labelPosition\":\"left\"}]}],\"selector\":\".TinyDialogBox\",\"events\":{\"onClose\":{\"label\":{\"zh_CN\":\"关闭弹窗时触发\"},\"description\":{\"zh_CN\":\"Dialog 关闭的回调\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:visible\":{\"label\":{\"zh_CN\":\"双向绑定的状态改变时触发\"},\"description\":{\"zh_CN\":\"显示或隐藏的状态值,发生改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"boolean\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的显示或隐藏的状态值\"}}],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{\"title\":{\"label\":{\"zh_CN\":\"标题区\"},\"description\":{\"zh_CN\":\"Dialog 标题区的内容\"}},\"footer\":{\"label\":{\"zh_CN\":\"按钮操作区\"},\"description\":{\"zh_CN\":\"Dialog 按钮操作区的内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":true,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\".tiny-dialog-box\",\"shortcuts\":{\"properties\":[\"visible\",\"width\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (36, '3.20.0', '{\"zh_CN\":\"标签页\"}', 'TinyTabs', 'tabs', '分隔内容上有关联但属于不同类别的数据集合', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Tabs\"}', 'component', 'navigation', 10, '[{\"name\":{\"zh_CN\":\"标签页\"},\"icon\":\"tabs\",\"screenshot\":\"\",\"snippetName\":\"TinyTabs\",\"schema\":{\"componentName\":\"TinyTabs\",\"props\":{\"modelValue\":\"first\"},\"children\":[{\"componentName\":\"TinyTabItem\",\"props\":{\"title\":\"标签页1\",\"name\":\"first\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"style\":\"margin:10px 0 0 30px\"}}]},{\"componentName\":\"TinyTabItem\",\"props\":{\"title\":\"标签页2\",\"name\":\"second\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"style\":\"margin:10px 0 0 30px\"}}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"showEditIcon\",\"label\":{\"text\":{\"zh_CN\":\"显示编辑图标\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示标题后编辑 ICON\"},\"labelPosition\":\"left\"},{\"property\":\"tabs\",\"label\":{\"text\":{\"zh_CN\":\"选项卡\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"\",\"cols\":12,\"bindState\":false,\"widget\":{\"component\":\"ContainerConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"tabs 选项卡\"},\"labelPosition\":\"none\"},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"绑定值,选中选项卡的 name\"},\"labelPosition\":\"left\"},{\"property\":\"with-add\",\"label\":{\"text\":{\"zh_CN\":\"标签新增\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标签是否可增加\"},\"labelPosition\":\"left\"},{\"property\":\"with-close\",\"label\":{\"text\":{\"zh_CN\":\"可关闭\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标签是否可关闭\"},\"labelPosition\":\"left\"},{\"property\":\"tab-style\",\"label\":{\"text\":{\"zh_CN\":\"标签页样式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"card\",\"value\":\"card\"},{\"label\":\"border-card\",\"value\":\"border-card\"}]}},\"description\":{\"zh_CN\":\"标签页样式\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击页签时触发事件\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"component\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前点击的页签对象\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onEdit\":{\"label\":{\"zh_CN\":\"点击新增按钮或关闭按钮或者编辑按钮后触发\"},\"description\":{\"zh_CN\":\"点击新增按钮或关闭按钮或者编辑按钮后触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"tab\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前操作的页签对象\"}},{\"name\":\"type\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前操作的类型(remove || add || edit)\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClose\":{\"label\":{\"zh_CN\":\"关闭页签时触发\"},\"description\":{\"zh_CN\":\"关闭页签时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"name\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"页签名称\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"clickCapture\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyTabItem\"],\"parentWhitelist\":[],\"descendantBlacklist\":[],\"ancestorWhitelist\":[]},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"size\",\"tab-style\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (37, '3.20.0', '{\"zh_CN\":\"tab页签\"}', 'TinyTabItem', 'tabitem', 'tab 标签页', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"TabItem\"}', 'component', NULL, 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"唯一标识\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"唯一标识\"}},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标题\"}}]}],\"events\":{},\"slots\":{\"title\":{\"label\":{\"zh_CN\":\"标题\"},\"description\":{\"zh_CN\":\"自定义标题\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":[\"TinyTab\"],\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"name\",\"title\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (38, '3.20.0', '{\"zh_CN\":\"面包屑\"}', 'TinyBreadcrumb', 'breadcrumb', '告诉访问者他们目前在网站中的位置以及如何返回', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Breadcrumb\"}', 'component', 'navigation', 1, '[{\"name\":{\"zh_CN\":\"面包屑\"},\"icon\":\"breadcrumb\",\"screenshot\":\"\",\"snippetName\":\"TinyBreadcrumb\",\"schema\":{\"componentName\":\"TinyBreadcrumb\",\"props\":{\"options\":[{\"to\":\"{ path: \'/\' }\",\"label\":\"首页\"},{\"to\":\"{ path: \'/breadcrumb\' }\",\"label\":\"产品\"},{\"replace\":\"true\",\"label\":\"软件\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"separator\",\"label\":{\"text\":{\"zh_CN\":\"分隔符\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自定义分隔符\"},\"labelPosition\":\"left\"},{\"property\":\"options\",\"label\":{\"text\":{\"zh_CN\":\"配置数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"单独使用 Breadcrumb,通过 option 配置生成面包屑\"},\"labelPosition\":\"top\"},{\"property\":\"textField\",\"label\":{\"text\":{\"zh_CN\":\"键值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"指定面包屑的显示键值,结合 options 使用\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onSelect\":{\"label\":{\"zh_CN\":\"选择 breadcrumb 时触发\"},\"description\":{\"zh_CN\":\"选择 breadcrumb 时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"clickCapture\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyBreadcrumbItem\"],\"parentWhitelist\":[],\"descendantBlacklist\":[],\"ancestorWhitelist\":[]},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"separator\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (39, '3.20.0', '{\"zh_CN\":\"面包屑项\"}', 'TinyBreadcrumbItem', 'breadcrumb', '', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"BreadcrumbItem\"}', 'component', NULL, 1, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"to\",\"label\":{\"text\":{\"zh_CN\":\"路由跳转\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"路由跳转对象,同 vue-router 的 to\"}}]}],\"slots\":{\"default\":{\"label\":{\"zh_CN\":\"面包屑项标签\"},\"description\":{\"zh_CN\":\"面包屑项\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":[\"TinyBreadcrumb\"],\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"to\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (40, '3.20.0', '{\"zh_CN\":\"折叠面板\"}', 'TinyCollapse', 'collapse', '内容区可指定动态页面或自定义 html 等,支持展开收起操作', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Collapse\"}', 'component', 'data-display', 3, '[{\"name\":{\"zh_CN\":\"折叠面板\"},\"icon\":\"collapse\",\"screenshot\":\"\",\"snippetName\":\"TinyCollapse\",\"schema\":{\"componentName\":\"TinyCollapse\",\"props\":{\"modelValue\":\"collapse1\"},\"children\":[{\"componentName\":\"TinyCollapseItem\",\"props\":{\"name\":\"collapse1\",\"title\":\"折叠项1\"},\"children\":[{\"componentName\":\"div\"}]},{\"componentName\":\"TinyCollapseItem\",\"props\":{\"name\":\"collapse2\",\"title\":\"折叠项2\"},\"children\":[{\"componentName\":\"div\"}]},{\"componentName\":\"TinyCollapseItem\",\"props\":{\"name\":\"collapse3\",\"title\":\"折叠项3\"},\"children\":[{\"componentName\":\"div\"}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"当前激活面板\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定当前激活的面板\"}}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"激活面板改变时触发\"},\"description\":{\"zh_CN\":\"当前激活面板改变时触发(如果是手风琴模式,参数 activeNames 类型为string,否则为array)\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"data\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前激活面板的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前激活面板的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (41, '3.20.0', '{\"zh_CN\":\"折叠面板项\"}', 'TinyCollapseItem', 'collapseitem', '内容区可指定动态页面或自定义 html 等,支持展开收起操作', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CollapseItem\"}', 'component', NULL, 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"唯一标识符\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"唯一标识符: String | Number\"},\"labelPosition\":\"left\"},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"面板标题\"},\"labelPosition\":\"left\"}]}],\"events\":{},\"slots\":{\"title\":{\"label\":{\"zh_CN\":\"标题\"},\"description\":{\"zh_CN\":\"自定义标题\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (42, '3.20.0', '{\"zh_CN\":\"表格\"}', 'TinyGrid', 'grid', '提供了非常强大数据表格功能,可以展示数据列表,可以对数据列表进行选择、编辑等', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Grid\"}', 'component', 'table', 2, '[{\"name\":{\"zh_CN\":\"表格\"},\"icon\":\"grid\",\"screenshot\":\"\",\"snippetName\":\"tinyGrid\",\"schema\":{\"componentName\":\"TinyGrid\",\"props\":{\"editConfig\":{\"trigger\":\"click\",\"mode\":\"cell\",\"showStatus\":true},\"columns\":[{\"type\":\"index\",\"width\":60},{\"type\":\"selection\",\"width\":60},{\"field\":\"employees\",\"title\":\"员工数\"},{\"field\":\"created_date\",\"title\":\"创建日期\"},{\"field\":\"city\",\"title\":\"城市\"}],\"data\":[{\"id\":\"1\",\"name\":\"GFD科技有限公司\",\"city\":\"福州\",\"employees\":800,\"created_date\":\"2014-04-30 00:56:00\",\"boole\":false},{\"id\":\"2\",\"name\":\"WWW科技有限公司\",\"city\":\"深圳\",\"employees\":300,\"created_date\":\"2016-07-08 12:36:22\",\"boole\":true}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础属性\"},\"description\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"表格数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"onChange\":\"this.delProp(\'fetchData\')\",\"description\":{\"zh_CN\":\"设置表格的数据\"},\"labelPosition\":\"top\"},{\"property\":\"columns\",\"label\":{\"text\":{\"zh_CN\":\"表格列\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"properties\":[{\"label\":{\"zh_CN\":\"默认分组\"},\"content\":[{\"property\":\"title\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"列标题\"}},\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}}},{\"property\":\"field\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"列键值\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"sortable\",\"type\":\"boolean\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"是否排序\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"labelPosition\":\"left\"},{\"property\":\"width\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"列宽\"}},\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}}},{\"property\":\"formatText\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"内置渲染器\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"整数\",\"value\":\"integer\"},{\"label\":\"小数\",\"value\":\"number\"},{\"label\":\"金额\",\"value\":\"money\"},{\"label\":\"百分比\",\"value\":\"rate\"},{\"label\":\"布尔\",\"value\":\"boole\"},{\"label\":\"年月日\",\"value\":\"date\"},{\"label\":\"年月日时分\",\"value\":\"dateTime\"},{\"label\":\"时间\",\"value\":\"time\"},{\"label\":\"省略\",\"value\":\"ellipsis\"}]}}},{\"property\":\"renderer\",\"type\":\"object\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"渲染函数\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"dataType\":\"JSFunction\"}}},{\"property\":\"slots\",\"type\":\"object\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"插槽\"}},\"labelPosition\":\"none\",\"widget\":{\"component\":\"JsSlotConfigurator\",\"props\":{\"slots\":[\"header\",\"default\"]}}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"列类型\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"索引列\",\"value\":\"index\"},{\"label\":\"单选列\",\"value\":\"radio\"},{\"label\":\"多选列\",\"value\":\"selection\"},{\"label\":\"展开列\",\"value\":\"expand\"}],\"clearable\":true}},\"description\":{\"zh_CN\":\"设置内置列的类型,该属性的可选值为 index(序号)/ selection(复选框)/ radio(单选框)/ expand(展开行)\"},\"labelPosition\":\"left\"},{\"property\":\"editor\",\"label\":{\"text\":{\"zh_CN\":\"编辑配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"单元格编辑渲染配置项,也可以是函数 Function(h, params)\"}},{\"property\":\"filter\",\"label\":{\"text\":{\"zh_CN\":\"筛选配置\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"设置表格列的筛选配置信息。默认值为 false 不配置筛选信息\"}},{\"property\":\"showOverflow\",\"label\":{\"text\":{\"zh_CN\":\"内容超出部分省略号配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"只显示省略号\",\"value\":\"ellipsis\"},{\"label\":\"显示为原生 title\",\"value\":\"title\"},{\"label\":\"显示为 tooltip 提示\",\"value\":\"tooltip\"}],\"clearable\":true}},\"description\":{\"zh_CN\":\"设置内置列的内容超出部分显示省略号配置,该属性的可选值为 ellipsis(只显示省略号)/ title(显示为原生 title)/ tooltip(显示为 tooltip 提示)\"},\"labelPosition\":\"top\"}]}],\"widget\":{\"component\":\"ArrayItemConfigurator\",\"props\":{\"type\":\"object\",\"textField\":\"title\",\"language\":\"json\",\"buttonText\":\"编辑列配置\",\"title\":\"编辑列配置\",\"expand\":true}},\"description\":{\"zh_CN\":\"表格列的配置信息\"},\"labelPosition\":\"left\"},{\"property\":\"fetchData\",\"label\":{\"text\":{\"zh_CN\":\"服务端查询\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"onChange\":\"function () { this.delProp(\'data\') } \",\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"name\":\"fetchData\",\"dataType\":\"JSExpression\"}},\"description\":{\"zh_CN\":\"服务端数据查询方法\"},\"labelPosition\":\"top\"},{\"property\":\"pager\",\"label\":{\"text\":{\"zh_CN\":\"分页配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"defaultValue\":{\"attrs\":{\"currentPage\":1}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"name\":\"pager\",\"dataType\":\"JSExpression\"}},\"description\":{\"zh_CN\":\"分页配置,需结合fetchData使用\"},\"labelPosition\":\"top\"},{\"property\":\"resizable\",\"label\":{\"text\":{\"zh_CN\":\"调整列宽\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否允许调整列宽\"},\"labelPosition\":\"left\"},{\"property\":\"row-id\",\"label\":{\"text\":{\"zh_CN\":\"行数据主键\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"placeholder\":\"比如:id\"}},\"description\":{\"zh_CN\":\"自定义行数据唯一主键的字段名(行数据必须要有唯一主键,默认自动生成)\"},\"labelPosition\":\"left\"},{\"property\":\"select-config\",\"label\":{\"text\":{\"zh_CN\":\"行复选框配置\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"dataType\":\"JSExpression\"}},\"description\":{\"zh_CN\":\"表格行数据复选框配置项\"}},{\"property\":\"edit-rules\",\"label\":{\"text\":{\"zh_CN\":\"校验规则\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格校验规则配置项\"},\"labelPosition\":\"top\"},{\"property\":\"edit-config\",\"label\":{\"text\":{\"zh_CN\":\"编辑配置项\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格编辑配置项\"},\"labelPosition\":\"top\"},{\"property\":\"expand-config\",\"label\":{\"text\":{\"zh_CN\":\"展开行配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"展开行配置项\"},\"labelPosition\":\"top\"},{\"property\":\"sortable\",\"label\":{\"text\":{\"zh_CN\":\"可排序\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否允许列数据排序。默认为 true 可排序\"},\"labelPosition\":\"left\"}]},{\"label\":{\"zh_CN\":\"其他\"},\"description\":{\"zh_CN\":\"其他属性\"},\"content\":[{\"property\":\"auto-resize\",\"label\":{\"text\":{\"zh_CN\":\"响应式监听\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格属性设置 autoResize 属性开启响应式表格宽高的同时,将高度height设置为auto就可以自动跟随父容器高度。\"},\"labelPosition\":\"left\"},{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"边框\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否带有纵向边框\"},\"labelPosition\":\"left\"},{\"property\":\"seq-serial\",\"label\":{\"text\":{\"zh_CN\":\"行号连续\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置行序号是否连续,开启分页时有效,该属性的默认值为 false\"},\"labelPosition\":\"left\"},{\"property\":\"highlight-current-row\",\"label\":{\"text\":{\"zh_CN\":\"高亮当前行\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"高亮当前行\"},\"labelPosition\":\"left\"},{\"property\":\"highlight-hover-row\",\"label\":{\"text\":{\"zh_CN\":\"移入行高亮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"鼠标移到行是否要高亮显示\"},\"labelPosition\":\"left\"},{\"property\":\"row-class-name\",\"label\":{\"text\":{\"zh_CN\":\"设置行高亮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"给行附加 className,也可以是函数 Function({seq, row, rowIndex, $rowIndex})\"},\"labelPosition\":\"top\"},{\"property\":\"max-height\",\"label\":{\"text\":{\"zh_CN\":\"内容最大高度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置表格内容区域(不含表格头部,底部)的最大高度。\"}},{\"property\":\"row-span\",\"label\":{\"text\":{\"zh_CN\":\"行合并\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置行合并,该属性仅适用于普通表格,不可与 tree-config 同时使用\"},\"labelPosition\":\"top\"}]}],\"events\":{\"onFilterChange\":{\"label\":{\"zh_CN\":\"筛选条件改变时触发改事件\"},\"description\":{\"zh_CN\":\"配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"{$table,filters} 包含 table 实例对象和过滤条件的对象\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onSortChange\":{\"label\":{\"zh_CN\":\"点击列头,执行数据排序前触发的事件\"},\"description\":{\"zh_CN\":\"配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"{$table,filters} 包含 table 实例对象和过滤条件的对象\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onSelectAll\":{\"label\":{\"zh_CN\":\"当手动勾选全选时触发的事件\"},\"description\":{\"zh_CN\":\"只对 type=selection 有效,当手动勾选全选时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" 包含 table 实例对象\"}},{\"name\":\"checked\",\"type\":\"boolean\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"勾选状态\"}},{\"name\":\"selction\",\"type\":\"Array\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中的表格数据数组\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onSelectChange\":{\"label\":{\"zh_CN\":\"手动勾选并且值发生改变时触发的事件\"},\"description\":{\"zh_CN\":\"只对 type=selection 有效,当手动勾选并且值发生改变时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" table 实例对象\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" 原生 Event\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onToggleExpandChange\":{\"label\":{\"zh_CN\":\"当行展开或收起时会触发该事件\"},\"description\":{\"zh_CN\":\"当行展开或收起时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"{$table,row,rowIndex} 包含 table 实例对象和当前行数据的对象\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" 原生 Event\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onCurrentChange\":{\"label\":{\"zh_CN\":\"行点击时触发\"},\"description\":{\"zh_CN\":\"行点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[\"sortable\",\"columns\"]},\"contentMenu\":{\"actions\":[\"create symbol\"]},\"onBeforeMount\":\"console.log(\'table on load\'); this.pager = source.pager; this.fetchData = source.fetchData; this.data = source.data ;this.columns = source.columns\"}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"sortable\",\"columns\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (43, '3.20.0', '{\"zh_CN\":\"分页\"}', 'TinyPager', 'pager', '当数据量过多时,使用分页分解数据,常用于 Grid 和 Repeater 组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Pager\"}', 'component', 'table', 1, '[{\"name\":{\"zh_CN\":\"分页\"},\"icon\":\"pager\",\"screenshot\":\"\",\"snippetName\":\"TinyPager\",\"schema\":{\"componentName\":\"TinyPager\",\"props\":{\"layout\":\"total, sizes, prev, pager, next\",\"total\":100,\"pageSize\":10,\"currentPage\":1}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"currentPage\",\"label\":{\"text\":{\"zh_CN\":\"当前页数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当前页数,支持 .sync 修饰符\"},\"labelPosition\":\"left\"},{\"property\":\"pageSize\",\"label\":{\"text\":{\"zh_CN\":\"每页条数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"每页显示条目个数\"},\"labelPosition\":\"left\"},{\"property\":\"pageSizes\",\"label\":{\"text\":{\"zh_CN\":\"可选每页条数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置可选择的每页显示条数\"}},{\"property\":\"total\",\"label\":{\"text\":{\"zh_CN\":\"总条数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"数据总条数\"},\"labelPosition\":\"left\"},{\"property\":\"layout\",\"label\":{\"text\":{\"zh_CN\":\"布局\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"defaultValue\":\"total,sizes,prev, pager, next\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"type\":\"textarea\"}},\"description\":{\"zh_CN\":\"组件布局,子组件名用逗号分隔\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onCurrentChange \":{\"label\":{\"zh_CN\":\"切换页码时触发\"},\"description\":{\"zh_CN\":\"切换页码时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onPrevClick \":{\"label\":{\"zh_CN\":\"点击上一页按钮时触发\"},\"description\":{\"zh_CN\":\"点击上一页按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"page\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页的页码值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onNextClick\":{\"label\":{\"zh_CN\":\"点击下一页按钮时触发\"},\"description\":{\"zh_CN\":\"点击上一页按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"page\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页的页码值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"currentPage\",\"total\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (44, '3.20.0', '{\"zh_CN\":\"弹出编辑\"}', 'TinyPopeditor', 'popEditor', '该组件只能在弹出的面板中选择数据,不能手动输入数据;弹出面板中显示为 Tree 组件或者 Grid 组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Popeditor\"}', 'component', 'data-display', 6, '[{\"name\":{\"zh_CN\":\"弹出编辑\"},\"icon\":\"popeditor\",\"screenshot\":\"\",\"snippetName\":\"TinyPopeditor\",\"schema\":{\"componentName\":\"TinyPopeditor\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请选择\",\"gridOp\":{\"columns\":[{\"field\":\"id\",\"title\":\"ID\",\"width\":40},{\"field\":\"name\",\"title\":\"名称\",\"showOverflow\":\"tooltip\"},{\"field\":\"province\",\"title\":\"省份\",\"width\":80},{\"field\":\"city\",\"title\":\"城市\",\"width\":80}],\"data\":[{\"id\":\"1\",\"name\":\"GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司\",\"city\":\"福州\",\"province\":\"福建\"},{\"id\":\"2\",\"name\":\"WWW科技有限公司\",\"city\":\"深圳\",\"province\":\"广东\"},{\"id\":\"3\",\"name\":\"RFV有限责任公司\",\"city\":\"中山\",\"province\":\"广东\"},{\"id\":\"4\",\"name\":\"TGB科技有限公司\",\"city\":\"龙岩\",\"province\":\"福建\"},{\"id\":\"5\",\"name\":\"YHN科技有限公司\",\"city\":\"韶关\",\"province\":\"广东\"},{\"id\":\"6\",\"name\":\"WSX科技有限公司\",\"city\":\"黄冈\",\"province\":\"武汉\"}]}}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"show-clear-btn\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出面板的宽度(单位像素)\"},\"labelPosition\":\"left\"},{\"property\":\"conditions\",\"label\":{\"text\":{\"zh_CN\":\"过滤条件\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当弹出面板配置的是表格时,设置弹出面板中的过滤条件\"},\"labelPosition\":\"top\"},{\"property\":\"grid-op\",\"label\":{\"text\":{\"zh_CN\":\"面板表格配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出面板中表格组件的配置信息\"}},{\"property\":\"pager-op\",\"label\":{\"text\":{\"zh_CN\":\"分页配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出编辑框中分页配置\"},\"labelPosition\":\"top\"},{\"property\":\"multi\",\"label\":{\"text\":{\"zh_CN\":\"多选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出面板中的数据是否可多选\"},\"labelPosition\":\"left\"},{\"property\":\"show-pager\",\"label\":{\"text\":{\"zh_CN\":\"启用分页\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当 popseletor 为 grid 时才能生效,配置为 true 后还需配置 pagerOp 属性\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"选中值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项的值\"}},{\"name\":\"value\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中对象\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClose\":{\"label\":{\"zh_CN\":\"弹框关闭时触发的事件\"},\"description\":{\"zh_CN\":\"弹框关闭时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onPageChange\":{\"label\":{\"zh_CN\":\"分页切换事件\"},\"description\":{\"zh_CN\":\"表格模式下分页切换事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页码数\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"modelValue\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (45, '3.20.0', '{\"zh_CN\":\"树\"}', 'TinyTree', 'tree', '可进行展示有父子层级的数据,支持选择,异步加载等功能。但不推荐用它来展示菜单,展示菜单推荐使用树菜单', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Tree\"}', 'component', 'data-display', 12, '[{\"name\":{\"zh_CN\":\"树\"},\"icon\":\"tree\",\"screenshot\":\"\",\"snippetName\":\"TinyTree\",\"schema\":{\"componentName\":\"TinyTree\",\"props\":{\"data\":[{\"label\":\"一级 1\",\"children\":[{\"label\":\"二级 1-1\",\"children\":[{\"label\":\"三级 1-1-1\"}]}]},{\"label\":\"一级 2\",\"children\":[{\"label\":\"二级 2-1\",\"children\":[{\"label\":\"三级 2-1-1\"}]},{\"label\":\"二级 2-2\",\"children\":[{\"label\":\"三级 2-2-1\"}]}]}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"show-checkbox\",\"label\":{\"text\":{\"zh_CN\":\"多选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置接口是否可以多选\"},\"labelPosition\":\"left\"},{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"数据源\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":[{\"label\":\"一级 1\",\"children\":[{\"label\":\"二级 1-1\"}]}],\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"可配置静态数据源和动态数据源\"},\"labelPosition\":\"top\"},{\"property\":\"node-key\",\"label\":{\"text\":{\"zh_CN\":\"唯一标识\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点唯一标识属性名称\"},\"labelPosition\":\"left\"},{\"property\":\"render-content\",\"label\":{\"text\":{\"zh_CN\":\"渲染函数\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"disabled\":true,\"placeholder\":\"请使用变量绑定来绑定函数\"}},\"description\":{\"zh_CN\":\"树节点的内容区的渲染函数\"}},{\"property\":\"icon-trigger-click-node\",\"label\":{\"text\":{\"zh_CN\":\"触发NodeClick事件\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"点击图标展开节点时是否触发 node-click 事件\"},\"labelPosition\":\"left\"},{\"property\":\"expand-icon\",\"label\":{\"text\":{\"zh_CN\":\"展开图标\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点展开图标\"},\"labelPosition\":\"top\"},{\"property\":\"shrink-icon\",\"label\":{\"text\":{\"zh_CN\":\"收缩图标\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点收缩的图标\"},\"labelPosition\":\"top\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"check-on-click-node\",\"label\":{\"text\":{\"zh_CN\":\"点击节点选中\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否在点击节点的时候选中节点,默认值为 false,即只有在点击复选框时才会选中节点\"},\"labelPosition\":\"left\"},{\"property\":\"filter-node-method\",\"label\":{\"text\":{\"zh_CN\":\"筛选函数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点筛选函数\"},\"labelPosition\":\"top\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onCheck\":{\"label\":{\"zh_CN\":\"勾选节点后的事件\"},\"description\":{\"zh_CN\":\"勾选节点后的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"data\",\"type\":\"object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中节点信息\"}},{\"name\":\"currentNode\",\"type\":\"object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onNodeClick\":{\"label\":{\"zh_CN\":\"点击节点后的事件\"},\"description\":{\"zh_CN\":\"点击节点后的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"data\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中节点信息\"}},{\"name\":\"node\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性\"}},{\"name\":\"vm\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"树组件实例\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"data\",\"show-checkbox\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (46, '3.20.0', '{\"zh_CN\":\"时间线\"}', 'TinyTimeLine', 'timeline', 'TimeLine 时间线', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"TimeLine\"}', 'component', 'navigation', 3, '[{\"name\":{\"zh_CN\":\"时间线\"},\"icon\":\"timeline\",\"screenshot\":\"\",\"snippetName\":\"TinyTimeLine\",\"schema\":{\"componentName\":\"TinyTimeLine\",\"props\":{\"active\":\"2\",\"data\":[{\"name\":\"已下单\"},{\"name\":\"运输中\"},{\"name\":\"已签收\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"horizontal\",\"type\":\"Boolean\",\"defaultValue\":{\"type\":\"i18n\",\"zh_CN\":\"布局\",\"en_US\":\"layout\",\"key\":\"\"},\"label\":{\"text\":{\"zh_CN\":\"水平布局\"}},\"cols\":12,\"rules\":[],\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点和文字横向布局\"},\"labelPosition\":\"left\"},{\"property\":\"vertical\",\"type\":\"Boolean\",\"defaultValue\":{\"type\":\"i18n\",\"zh_CN\":\"垂直布局\",\"en_US\":\"layout\",\"key\":\"\"},\"label\":{\"text\":{\"zh_CN\":\"垂直布局\"}},\"cols\":12,\"rules\":[],\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点和文字垂直布局\"},\"labelPosition\":\"left\"},{\"property\":\"active\",\"label\":{\"text\":{\"zh_CN\":\"选中值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"步骤条的选中步骤值\"},\"labelPosition\":\"left\"},{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"步骤条数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":[{\"name\":\"配置基本信息\",\"status\":\"ready\"},{\"name\":\"配置报价\",\"status\":\"wait\"},{\"name\":\"完成报价\",\"status\":\"wait\"}],\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"时间线步骤条数据\"},\"labelPosition\":\"top\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"节点的点击时触发\"},\"description\":{\"zh_CN\":\"节点的点击时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"type\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"点击节点的下标\"}},{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前节点对象:{ name: 节点名称, time: 时间 }\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"active\",\"data\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (47, '3.20.0', '{\"zh_CN\":\"文字提示框\"}', 'TinyTooltip', 'tooltip', '动态显示提示信息,一般通过鼠标事件进行响应;提供 warning、error、info、success 四种类型显示不同类别的信', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Tooltip\"}', 'component', 'data-display', 11, '[{\"name\":{\"zh_CN\":\"文字提示框\"},\"icon\":\"tooltip\",\"screenshot\":\"\",\"snippetName\":\"TinyTooltip\",\"schema\":{\"componentName\":\"TinyTooltip\",\"props\":{\"content\":\"Top Left 提示文字\",\"placement\":\"top-start\",\"manual\":true,\"modelValue\":true},\"children\":[{\"componentName\":\"span\",\"children\":[{\"componentName\":\"div\",\"props\":{}}]},{\"componentName\":\"Template\",\"props\":{\"slot\":\"content\"},\"children\":[{\"componentName\":\"span\",\"children\":[{\"componentName\":\"div\",\"props\":{\"placeholder\":\"提示内容\"}}]}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"placement\",\"label\":{\"text\":{\"zh_CN\":\"提示位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"top\",\"value\":\"top\"},{\"label\":\"top-start\",\"value\":\"top-start\"},{\"label\":\"top-end\",\"value\":\"top-end\"},{\"label\":\"bottom\",\"value\":\"bottom\"},{\"label\":\"bottom-start\",\"value\":\"bottom-start\"},{\"label\":\"bottom-end\",\"value\":\"bottom-end\"},{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"left-start\",\"value\":\"left-start\"},{\"label\":\"left-end\",\"value\":\"left-end\"},{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"right-start\",\"value\":\"right-start\"},{\"label\":\"right-end\",\"value\":\"right-end\"}]}},\"description\":{\"zh_CN\":\"Tooltip 的出现位置\"},\"labelPosition\":\"left\"},{\"property\":\"content\",\"label\":{\"text\":{\"zh_CN\":\"内容\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"提示信息\",\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"显示的内容,也可以通过 slot#content 传入 DOM\"},\"labelPosition\":\"left\"},{\"property\":\"render-content\",\"label\":{\"text\":{\"zh_CN\":\"渲染函数\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"disabled\":true,\"placeholder\":\"请使用变量绑定来绑定函数\"}},\"description\":{\"zh_CN\":\"自定义渲染函数,返回需要渲染的节点内容\"}},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"是否可见\"}},\"defaultValue\":true,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"状态是否可见\"},\"labelPosition\":\"left\"},{\"property\":\"manual\",\"label\":{\"text\":{\"zh_CN\":\"手动控制\"}},\"defaultValue\":true,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"手动控制模式,设置为 true 后,mouseenter 和 mouseleave 事件将不会生效\"},\"labelPosition\":\"left\"}]}],\"events\":{},\"slots\":{\"content\":{\"label\":{\"zh_CN\":\"提示内容\"},\"description\":{\"zh_CN\":\"自定义提示内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":true,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"content\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (48, '3.20.0', '{\"zh_CN\":\"提示框\"}', 'TinyPopover', 'popover', 'Popover可通过对一个触发源操作触发弹出框,支持自定义弹出内容,延迟触发和渐变动画', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Popover\"}', 'component', 'data-display', 7, '[{\"name\":{\"zh_CN\":\"提示框\"},\"icon\":\"popover\",\"screenshot\":\"\",\"snippetName\":\"TinyPopover\",\"schema\":{\"componentName\":\"TinyPopover\",\"props\":{\"width\":200,\"title\":\"弹框标题\",\"trigger\":\"manual\",\"modelValue\":true},\"children\":[{\"componentName\":\"Template\",\"props\":{\"slot\":\"reference\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"placeholder\":\"触发源\"}}]},{\"componentName\":\"Template\",\"props\":{\"slot\":\"default\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"placeholder\":\"提示内容\"}}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定,手动控制是否可见的状态值\"},\"labelPosition\":\"left\"},{\"property\":\"placement\",\"label\":{\"text\":{\"zh_CN\":\"位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"top\",\"value\":\"top\"},{\"label\":\"top-start\",\"value\":\"top-start\"},{\"label\":\"top-end\",\"value\":\"top-end\"},{\"label\":\"bottom\",\"value\":\"bottom\"},{\"label\":\"bottom-start\",\"value\":\"bottom-start\"},{\"label\":\"bottom-end\",\"value\":\"bottom-end\"},{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"left-start\",\"value\":\"left-start\"},{\"label\":\"left-end\",\"value\":\"left-end\"},{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"right-start\",\"value\":\"right-start\"},{\"label\":\"right-end\",\"value\":\"right-end\"}]}},\"description\":{\"zh_CN\":\"提示框位置\"},\"labelPosition\":\"left\"},{\"property\":\"trigger\",\"label\":{\"text\":{\"zh_CN\":\"触发方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"click\",\"value\":\"click\"},{\"label\":\"focus\",\"value\":\"focus\"},{\"label\":\"hover\",\"value\":\"hover\"},{\"label\":\"manual\",\"value\":\"manual\"}]}},\"description\":{\"zh_CN\":\"触发方式,该属性的可选值为 click / focus / hover / manual,该属性的默认值为 click\"},\"labelPosition\":\"left\"},{\"property\":\"popper-class\",\"label\":{\"text\":{\"zh_CN\":\"自定义类\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"为 popper 添加类名\"},\"labelPosition\":\"left\"},{\"property\":\"visible-arrow\",\"label\":{\"text\":{\"zh_CN\":\"显示箭头\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示 Tooltip 箭头\"},\"labelPosition\":\"left\"},{\"property\":\"append-to-body\",\"label\":{\"text\":{\"zh_CN\":\"添加到body上\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"Popover弹窗是否添加到body上\"},\"labelPosition\":\"left\"},{\"property\":\"arrow-offset\",\"label\":{\"text\":{\"zh_CN\":\"箭头的位置偏移\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"箭头的位置偏移,该属性的默认值为 0\"}},{\"property\":\"close-delay\",\"label\":{\"text\":{\"zh_CN\":\"延迟隐藏\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"触发方式为 hover 时的隐藏延迟,单位为毫秒\"},\"labelPosition\":\"left\"},{\"property\":\"content\",\"label\":{\"text\":{\"zh_CN\":\"显示的内容\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"显示的内容,也可以通过 slot 传入 DOM\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"Popover 是否可用\"},\"labelPosition\":\"left\"},{\"property\":\"offset\",\"label\":{\"text\":{\"zh_CN\":\"位置偏移量\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"出现位置的偏移量\"},\"labelPosition\":\"left\"},{\"property\":\"open-delay\",\"label\":{\"text\":{\"zh_CN\":\"显示延迟\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"触发方式为 hover 时的显示延迟,单位为毫秒\"},\"labelPosition\":\"left\"},{\"property\":\"popper-options\",\"label\":{\"text\":{\"zh_CN\":\"弹出层参数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"popper.js 的参数\"},\"labelPosition\":\"top\"},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"提示内容标题\"},\"labelPosition\":\"left\"},{\"property\":\"transform-origin\",\"label\":{\"text\":{\"zh_CN\":\"旋转中心点\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"组件的旋转中心点,组件的旋转中心点\"},\"labelPosition\":\"left\"},{\"property\":\"transition\",\"label\":{\"text\":{\"zh_CN\":\"渐变动画\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"该属性的默认值为 fade-in-linear\"},\"labelPosition\":\"left\"},{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"宽度\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"手动控制是否可见的状态值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"boolean\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的可见状态值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":true,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"visible\",\"width\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (49, '3.20.0', '{\"zh_CN\":\"日期选择\"}', 'TinyDatePicker', 'datepick', '用于输入或选择日期', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"DatePicker\"}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"日期选择\"},\"icon\":\"datepick\",\"screenshot\":\"\",\"snippetName\":\"TinyDatePicker\",\"schema\":{\"componentName\":\"TinyDatePicker\",\"props\":{\"placeholder\":\"请输入\",\"modelValue\":\"\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"日期\",\"value\":\"date\"},{\"label\":\"日期时间\",\"value\":\"datetime\"},{\"label\":\"周\",\"value\":\"week\"},{\"label\":\"月份\",\"value\":\"month\"},{\"label\":\"年份\",\"value\":\"year\"}]}},\"description\":{\"zh_CN\":\"设置日期框的type属性\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"readonly\",\"label\":{\"text\":{\"zh_CN\":\"只读\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否只读\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"日期框尺寸。该属性的可选值为 medium / small / mini\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"maxlength\",\"label\":{\"text\":{\"zh_CN\":\"输入最大长度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置 input 框的maxLength\"}},{\"property\":\"autofocus\",\"label\":{\"text\":{\"zh_CN\":\"聚焦\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自动获取焦点\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框改变后的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (50, '3.20.0', '{\"zh_CN\":\"数字输入框\"}', 'TinyNumeric', 'numeric', '通过鼠标或键盘输入字符', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Numeric\"}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"数字输入框\"},\"icon\":\"numeric\",\"screenshot\":\"\",\"snippetName\":\"TinyNumeric\",\"schema\":{\"componentName\":\"TinyNumeric\",\"props\":{\"allow-empty\":true,\"placeholder\":\"请输入\",\"controlsPosition\":\"right\",\"step\":1}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"allow-empty\",\"label\":{\"text\":{\"zh_CN\":\"内容可清空\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否内容可清空\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"输入框尺寸。该属性的可选值为 medium / small / mini\"},\"labelPosition\":\"left\"},{\"property\":\"controls\",\"label\":{\"text\":{\"zh_CN\":\"加减按钮\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否使用加减按钮\"},\"labelPosition\":\"left\"},{\"property\":\"controls-position\",\"label\":{\"text\":{\"zh_CN\":\"加减按钮位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"左右两侧\",\"value\":\"\"},{\"label\":\"只在右侧\",\"value\":\"right\"}]}},\"description\":{\"zh_CN\":\"加减按钮位置\"}},{\"property\":\"precision\",\"label\":{\"text\":{\"zh_CN\":\"精度\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"数值精度\"},\"labelPosition\":\"left\"},{\"property\":\"step\",\"label\":{\"text\":{\"zh_CN\":\"步长\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"步长\"},\"labelPosition\":\"left\"},{\"property\":\"max\",\"label\":{\"text\":{\"zh_CN\":\"最大数值\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"可输入的最大数值\"},\"labelPosition\":\"left\"},{\"property\":\"min\",\"label\":{\"text\":{\"zh_CN\":\"最小数值\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"可输入的最大数值\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框改变后的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); + +INSERT INTO `t_component_library` (`id`, `version`, `name`, `app_id`, `package`, `registry`, `framework`, `description`, `script`, `css`, `bundle`, `dependencies`, `others`, `thumbnail`, `public`, `is_started`, `is_official`, `is_default`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (1, '3.20.0', 'TinyVue组件库', NULL, '@opentiny/vue', NULL, 'Vue', NULL, 'https://unpkg.com/@opentiny/vue-runtime@~3.20/dist3/tiny-vue-pc.mjs', 'https://unpkg.com/@opentiny/vue-theme@~3.20/index.css', NULL, NULL, NULL, NULL, NULL, 1, 1, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component_library` (`id`, `version`, `name`, `app_id`, `package`, `registry`, `framework`, `description`, `script`, `css`, `bundle`, `dependencies`, `others`, `thumbnail`, `public`, `is_started`, `is_official`, `is_default`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (2, '2.4.2', 'element-plus组件库', NULL, 'element-plus', NULL, 'Vue', NULL, 'https://unpkg.com/element-plus@2.4.2/dist/index.full.mjs', 'https://unpkg.com/element-plus@2.4.2/dist/index.css', NULL, NULL, NULL, NULL, NULL, 1, 1, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); + +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (1, 1, 1); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (2, 1, 2); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (3, 1, 3); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (4, 1, 4); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (5, 1, 5); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (6, 1, 6); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (7, 1, 7); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (8, 1, 8); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (9, 1, 9); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (10, 1, 10); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (11, 1, 11); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (12, 1, 12); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (13, 1, 13); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (14, 1, 14); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (15, 1, 15); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (16, 1, 16); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (17, 1, 17); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (18, 1, 18); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (19, 1, 19); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (20, 1, 20); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (21, 1, 21); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (22, 1, 22); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (23, 1, 23); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (24, 1, 24); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (25, 1, 25); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (26, 1, 26); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (27, 1, 27); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (28, 1, 28); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (29, 1, 29); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (30, 1, 30); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (31, 1, 31); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (32, 1, 32); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (33, 1, 33); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (34, 1, 34); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (35, 1, 35); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (36, 1, 36); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (37, 1, 37); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (38, 1, 38); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (39, 1, 39); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (40, 1, 40); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (41, 1, 41); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (42, 1, 42); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (43, 1, 43); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (44, 1, 44); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (45, 1, 45); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (46, 1, 46); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (47, 1, 47); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (48, 1, 48); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (49, 1, 49); +INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (50, 1, 50); + +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (1, 1, 1); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (2, 1, 2); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (3, 1, 3); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (4, 1, 4); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (5, 1, 5); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (6, 1, 6); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (7, 1, 7); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (8, 1, 8); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (9, 1, 9); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (10, 1, 10); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (11, 1, 11); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (12, 1, 12); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (13, 1, 13); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (14, 1, 14); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (15, 1, 15); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (16, 1, 16); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (17, 1, 17); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (18, 1, 18); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (19, 1, 19); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (20, 1, 20); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (21, 1, 21); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (22, 1, 22); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (23, 1, 23); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (24, 1, 24); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (25, 1, 25); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (26, 1, 26); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (27, 1, 27); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (28, 1, 28); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (29, 1, 29); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (30, 1, 30); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (31, 1, 31); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (32, 1, 32); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (33, 1, 33); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (34, 1, 34); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (35, 1, 35); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (36, 1, 36); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (37, 1, 37); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (38, 1, 38); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (39, 1, 39); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (40, 1, 40); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (41, 1, 41); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (42, 1, 42); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (43, 1, 43); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (44, 1, 44); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (45, 1, 45); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (46, 1, 46); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (47, 1, 47); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (48, 1, 48); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (49, 1, 49); +INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (50, 1, 50); diff --git a/docker-deploy-data/mysql/init/update_all_tables_ddl.sql b/docker-deploy-data/mysql/init/update_all_tables_ddl.sql new file mode 100644 index 00000000..16b331ec --- /dev/null +++ b/docker-deploy-data/mysql/init/update_all_tables_ddl.sql @@ -0,0 +1,30 @@ +ALTER TABLE t_component DROP INDEX u_idx_component; +ALTER TABLE t_component ADD INDEX u_idx_component (tenant_id, name_en, version, library_id); + +ALTER TABLE t_datasource DROP INDEX u_idx_datasource; +ALTER TABLE t_datasource ADD INDEX u_idx_datasource (`tenant_id`, `platform_id`, `name`, `app_id`); + +ALTER TABLE t_platform_history MODIFY sub_count int NULL; +ALTER TABLE t_platform_history MODIFY publish_url varchar(255) NULL; + +ALTER TABLE t_app MODIFY tenant_id varchar(60) NULL; +ALTER TABLE t_app_extension MODIFY tenant_id varchar(60) NULL; +ALTER TABLE t_block MODIFY tenant_id varchar(60) NULL; +ALTER TABLE t_block_carriers_relation MODIFY tenant_id varchar(60) NULL; +ALTER TABLE t_block_group MODIFY tenant_id varchar(60) NULL; +ALTER TABLE t_block_history MODIFY tenant_id varchar(60) NULL; +ALTER TABLE t_business_category MODIFY tenant_id varchar(60) NULL; +ALTER TABLE t_component MODIFY tenant_id varchar(60) NULL; +ALTER TABLE t_component_library MODIFY tenant_id varchar(60) NULL; +ALTER TABLE t_datasource MODIFY tenant_id varchar(60) NULL; +ALTER TABLE t_i18n_entry MODIFY tenant_id varchar(60) NULL; +ALTER TABLE t_material MODIFY tenant_id varchar(60) NULL; +ALTER TABLE t_material_history MODIFY tenant_id varchar(60) NULL; +ALTER TABLE t_page MODIFY tenant_id varchar(60) NULL; +ALTER TABLE t_page_history MODIFY tenant_id varchar(60) NULL; +ALTER TABLE t_page_template MODIFY tenant_id varchar(60) NULL; +ALTER TABLE t_platform MODIFY tenant_id varchar(60) NULL; +ALTER TABLE t_platform_history MODIFY tenant_id varchar(60) NULL; +ALTER TABLE t_task_record MODIFY tenant_id varchar(60) NULL; +ALTER TABLE t_user MODIFY tenant_id varchar(60) NULL; + diff --git a/docker-deploy-data/mysql/init/update_tables_ddl_v1.0.0_2025_0527.sql b/docker-deploy-data/mysql/init/update_tables_ddl_v1.0.0_2025_0527.sql new file mode 100644 index 00000000..460a83aa --- /dev/null +++ b/docker-deploy-data/mysql/init/update_tables_ddl_v1.0.0_2025_0527.sql @@ -0,0 +1,2 @@ +ALTER TABLE t_block_group DROP INDEX u_idx_block_group; +ALTER TABLE t_block_group ADD INDEX u_idx_block_group (`tenant_id`, `platform_id`, `name`, `app_id`); \ No newline at end of file diff --git a/docker-deploy-data/nginx.conf b/docker-deploy-data/nginx.conf new file mode 100644 index 00000000..2bde7f6b --- /dev/null +++ b/docker-deploy-data/nginx.conf @@ -0,0 +1,48 @@ + +events { + worker_connections 1024; +} + + +http { + include mime.types; + default_type application/octet-stream; + sendfile on; + keepalive_timeout 65; + server { + listen 80; + server_name 127.0.0.1;# public ip or domain name + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } + + + location /app-center/ { + proxy_pass http://tiny-engine-back:9090/app-center/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + location /platform-center/ { + proxy_pass http://tiny-engine-back:9090/platform-center/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + location /material-center/ { + proxy_pass http://tiny-engine-back:9090/material-center/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root html; } + } + +} + diff --git a/settings.xml b/settings.xml new file mode 100644 index 00000000..ba69fb6e --- /dev/null +++ b/settings.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + deploymentRepo + repouser + repopwd + + + + + + + + + aliyunmaven + + 阿里云公共仓库 + + https://maven.aliyun.com/repository/public + + * + + + + + + + + From 24cfb66efb2ba5e74131171ca7f84cd19872bb1a Mon Sep 17 00:00:00 2001 From: lu-yg <128358973+lu-yg@users.noreply.github.com> Date: Thu, 17 Jul 2025 02:10:44 -0700 Subject: [PATCH 10/14] fix: Fix schema (#248) --- .../tinyengine/it/common/utils/Schema.java | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/base/src/main/java/com/tinyengine/it/common/utils/Schema.java b/base/src/main/java/com/tinyengine/it/common/utils/Schema.java index db610ee8..8a67996b 100644 --- a/base/src/main/java/com/tinyengine/it/common/utils/Schema.java +++ b/base/src/main/java/com/tinyengine/it/common/utils/Schema.java @@ -12,11 +12,13 @@ package com.tinyengine.it.common.utils; +import cn.hutool.core.exceptions.UtilException; +import cn.hutool.core.util.ReflectUtil; import com.tinyengine.it.model.dto.SchemaConfig; import lombok.extern.slf4j.Slf4j; -import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; @@ -148,12 +150,15 @@ protected Map formatFields(Map data, Map Date: Sun, 3 Aug 2025 20:34:08 -0700 Subject: [PATCH 11/14] fix: fix init_data_for_test_v1.0.0.sql (#250) --- .../sql/h2/init_data_for_test_v1.0.0.sql | 313 ++++++++--------- .../sql/mysql/init_data_for_test_v1.0.0.sql | 313 ++++++++--------- .../mysql/init/init_data_for_test_v1.0.0.sql | 314 +++++++++--------- 3 files changed, 484 insertions(+), 456 deletions(-) diff --git a/app/src/main/resources/sql/h2/init_data_for_test_v1.0.0.sql b/app/src/main/resources/sql/h2/init_data_for_test_v1.0.0.sql index c85f64ab..f482a960 100644 --- a/app/src/main/resources/sql/h2/init_data_for_test_v1.0.0.sql +++ b/app/src/main/resources/sql/h2/init_data_for_test_v1.0.0.sql @@ -18,158 +18,167 @@ INSERT INTO `t_platform` (`id`, `name`, `published`, `last_build_info`, `descrip INSERT INTO `t_platform_history` (`id`, `ref_id`, `version`, `name`, `publish_url`, `description`, `vscode_url`, `material_history_id`, `sub_count`, `material_pkg_name`, `material_version`, `image_url`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `last_updated_by`, `created_time`, `last_updated_time`) VALUES (1, 1, '1.0.0', 'default', 'http://tinyengine.com', '默认设计器', NULL, 1, 1, '@opentiny/lowcode-alpha-material-materialstwo-1505', '1.0.8', NULL, '1', NULL, '1', '1', '1', '2024-11-14 22:20:25', '2024-11-14 22:20:25'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (1, '2.4.2', '{\"zh_CN\":\"输入框\"}', 'ElInput', 'input', '通过鼠标或键盘输入字符', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElInput\"}', '表单组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"输入框\"},\"icon\":\"input\",\"screenshot\":\"\",\"snippetName\":\"ElInput\",\"schema\":{}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"description\":{\"zh_CN\":\"绑定值\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"description\":{\"zh_CN\":\"类型\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"maxlength\",\"label\":{\"text\":{\"zh_CN\":\"最大长度\"}},\"description\":{\"zh_CN\":\"最大输入长度\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"number\",\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"是否禁用\"}},\"description\":{\"zh_CN\":\"是否禁用\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定值改变时触发\"},\"description\":{\"zh_CN\":\"双向绑定值改变时触发\"}},\"onBlur\":{\"label\":{\"zh_CN\":\"输入框失去焦点时触发\"},\"description\":{\"zh_CN\":\"输入框失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{\"prefix\":{\"label\":{\"zh_CN\":\"头部内容\"},\"description\":{\"zh_CN\":\"输入框头部内容,只对非 type=\'textarea\' 有效\"}},\"suffix\":{\"label\":{\"zh_CN\":\"尾部内容\"},\"description\":{\"zh_CN\":\"输入框尾部内容,只对非 type=\'textarea\' 有效\"}},\"prepend\":{\"label\":{\"zh_CN\":\"前置内容\"},\"description\":{\"zh_CN\":\"输入框前置内容,只对非 type=\'textarea\' 有效\"}},\"append\":{\"label\":{\"zh_CN\":\"后置内容\"},\"description\":{\"zh_CN\":\"输入框后置内容,只对非 type=\'textarea\' 有效\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"type\",\"size\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (2, '2.4.2', '{\"zh_CN\":\"按钮\"}', 'ElButton', 'button', '常用的操作按钮', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElButton\"}', '基础组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"按钮\"},\"icon\":\"button\",\"screenshot\":\"\",\"snippetName\":\"ElButton\",\"schema\":{\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"按钮文本\"}}]}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"description\":{\"zh_CN\":\"类型\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"plain\",\"label\":{\"text\":{\"zh_CN\":\"朴素按钮\"}},\"description\":{\"zh_CN\":\"是否为朴素按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文字按钮\"}},\"description\":{\"zh_CN\":\"是否为文字按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"bg\",\"label\":{\"text\":{\"zh_CN\":\"背景颜色\"}},\"description\":{\"zh_CN\":\"是否显示文字按钮背景颜色\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"link\",\"label\":{\"text\":{\"zh_CN\":\"链接按钮\"}},\"description\":{\"zh_CN\":\"是否为链接按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"round\",\"label\":{\"text\":{\"zh_CN\":\"圆角按钮\"}},\"description\":{\"zh_CN\":\"是否为圆角按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"circle\",\"label\":{\"text\":{\"zh_CN\":\"圆形按钮\"}},\"description\":{\"zh_CN\":\"是否为圆形按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"loading\",\"label\":{\"text\":{\"zh_CN\":\"加载中状态\"}},\"description\":{\"zh_CN\":\"是否为加载中状态\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"description\":{\"zh_CN\":\"是否禁用\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{},\"slots\":{\"default\":{\"label\":{\"zh_CN\":\"default\"},\"description\":{\"zh_CN\":\"自定义默认内容\"}},\"loading\":{\"label\":{\"zh_CN\":\"loading\"},\"description\":{\"zh_CN\":\"自定义加载中组件\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"type\",\"size\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (3, '2.4.2', '{\"zh_CN\":\"表单\"}', 'ElForm', 'form', '表单包含 输入框, 单选框, 下拉选择, 多选框 等用户输入的组件。 使用表单,您可以收集、验证和提交数据。', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElForm\"}', '表单组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"表单\"},\"icon\":\"form\",\"screenshot\":\"\",\"snippetName\":\"ElForm\",\"schema\":{\"children\":[{\"componentName\":\"ElFormItem\",\"props\":{\"label\":\"账号\",\"prop\":\"account\"},\"children\":[{\"componentName\":\"ElInput\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请输入账号\"}}]},{\"componentName\":\"ElFormItem\",\"props\":{\"label\":\"密码\",\"prop\":\"password\"},\"children\":[{\"componentName\":\"ElInput\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请输入密码\",\"type\":\"password\"}}]},{\"componentName\":\"ElFormItem\",\"props\":{},\"children\":[{\"componentName\":\"ElButton\",\"props\":{\"type\":\"primary\",\"style\":\"margin-right: 10px\"},\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"提交\"}}]},{\"componentName\":\"ElButton\",\"props\":{\"type\":\"primary\"},\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"重置\"}}]}]}]}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"model\",\"label\":{\"text\":{\"zh_CN\":\"数据对象\"}},\"description\":{\"zh_CN\":\"表单数据对象\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"rules\",\"label\":{\"text\":{\"zh_CN\":\"验证规则\"}},\"description\":{\"zh_CN\":\"表单验证规则\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"inline\",\"label\":{\"text\":{\"zh_CN\":\"行内模式\"}},\"description\":{\"zh_CN\":\"行内表单模式\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"label-position\",\"label\":{\"text\":{\"zh_CN\":\"标签位置\"}},\"description\":{\"zh_CN\":\"表单域标签的位置, 当设置为 left 或 right 时,则也需要设置标签宽度属性\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"right\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"top\",\"value\":\"top\"}]}}},{\"property\":\"label-width\",\"label\":{\"text\":{\"zh_CN\":\"标签宽度\"}},\"description\":{\"zh_CN\":\"标签的长度,例如 \'50px\'。 作为 Form 直接子元素的 form-item 会继承该值。 可以使用 auto。\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"label-suffix\",\"label\":{\"text\":{\"zh_CN\":\"标签后缀\"}},\"description\":{\"zh_CN\":\"表单域标签的后缀\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"hide-required-asterisk\",\"label\":{\"text\":{\"zh_CN\":\"隐藏必填星号\"}},\"description\":{\"zh_CN\":\"是否隐藏必填字段标签旁边的红色星号\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"require-asterisk-position\",\"label\":{\"text\":{\"zh_CN\":\"星号位置\"}},\"description\":{\"zh_CN\":\"星号的位置\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"left\",\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"show-message\",\"label\":{\"text\":{\"zh_CN\":\"显示校验信息\"}},\"description\":{\"zh_CN\":\"是否显示校验错误信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"inline-message\",\"label\":{\"text\":{\"zh_CN\":\"行内显示校验信息\"}},\"description\":{\"zh_CN\":\"是否以行内形式展示校验信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"status-icon\",\"label\":{\"text\":{\"zh_CN\":\"显示校验结果图标\"}},\"description\":{\"zh_CN\":\"是否在输入框中显示校验结果反馈图标\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"validate-on-rule-change\",\"label\":{\"text\":{\"zh_CN\":\"触发验证\"}},\"description\":{\"zh_CN\":\"是否在 rules 属性改变后立即触发一次验证\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"用于控制该表单内组件的尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"description\":{\"zh_CN\":\"是否禁用该表单内的所有组件。 如果设置为 true, 它将覆盖内部组件的 disabled 属性\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"scroll-to-error\",\"label\":{\"text\":{\"zh_CN\":\"滚动到错误项\"}},\"description\":{\"zh_CN\":\"当校验失败时,滚动到第一个错误表单项\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onValidate\":{\"label\":{\"zh_CN\":\"任一表单项被校验后触发\"},\"description\":{\"zh_CN\":\"任一表单项被校验后触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":[\"ElFormItem\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (4, '2.4.2', '{\"zh_CN\":\"表单子项\"}', 'ElFormItem', 'formItem', '表单包含 输入框, 单选框, 下拉选择, 多选框 等用户输入的组件。 使用表单,您可以收集、验证和提交数据。', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElFormItem\"}', '表单组件', 'element-plus', NULL, NULL, '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"prop\",\"label\":{\"text\":{\"zh_CN\":\"键名\"}},\"description\":{\"zh_CN\":\"model 的键名。 它可以是一个属性的值(如 a.b.0 或 [a\', \'b\', \'0\'])。 在定义了 validate、resetFields 的方法时,该属性是必填的\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"label\",\"label\":{\"text\":{\"zh_CN\":\"标签文本\"}},\"description\":{\"zh_CN\":\"标签文本\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"label-width\",\"label\":{\"text\":{\"zh_CN\":\"标签宽度\"}},\"description\":{\"zh_CN\":\"标签宽度,例如 \'50px\'。 可以使用 auto\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"required\",\"label\":{\"text\":{\"zh_CN\":\"必填项\"}},\"description\":{\"zh_CN\":\"是否为必填项,如不设置,则会根据校验规则确认\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"rules\",\"label\":{\"text\":{\"zh_CN\":\"验证规则\"}},\"description\":{\"zh_CN\":\"表单验证规则, 更多内容可以参考async-validator\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"error\",\"label\":{\"text\":{\"zh_CN\":\"错误信息\"}},\"description\":{\"zh_CN\":\"表单域验证错误时的提示信息。设置该值会导致表单验证状态变为 error,并显示该错误信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"show-message\",\"label\":{\"text\":{\"zh_CN\":\"显示错误信息\"}},\"description\":{\"zh_CN\":\"是否显示校验错误信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"inline-message\",\"label\":{\"text\":{\"zh_CN\":\"行内显示错误信息\"}},\"description\":{\"zh_CN\":\"是否在行内显示校验信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"用于控制该表单内组件的尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"for\",\"label\":{\"text\":{\"zh_CN\":\"for\"}},\"description\":{\"zh_CN\":\"和原生标签相同能力\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"validate-status\",\"label\":{\"text\":{\"zh_CN\":\"校验状态\"}},\"description\":{\"zh_CN\":\"formItem 校验的状态\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"error\",\"value\":\"error\"},{\"label\":\"validating\",\"value\":\"validating\"},{\"label\":\"success\",\"value\":\"success\"}]}}}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{},\"slots\":{\"label\":{\"label\":{\"zh_CN\":\"label\"},\"description\":{\"zh_CN\":\"标签位置显示的内容\"}},\"error\":{\"label\":{\"zh_CN\":\"error\"},\"description\":{\"zh_CN\":\"验证错误信息的显示内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (5, '2.4.2', '{\"zh_CN\":\"表单\"}', 'ElTable', 'table', '用于展示多条结构类似的数据, 可对数据进行排序、筛选、对比或其他自定义操作', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElTable\"}', '数据展示', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"表格\"},\"icon\":\"grid\",\"screenshot\":\"\",\"snippetName\":\"ElTable\",\"schema\":{\"props\":{\"data\":[{\"date\":\"2016-05-03\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"},{\"date\":\"2016-05-02\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"},{\"date\":\"2016-05-04\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"},{\"date\":\"2016-05-01\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"}],\"columns\":[{\"type\":\"index\"},{\"label\":\"Date\",\"prop\":\"date\"},{\"label\":\"Name\",\"prop\":\"name\"},{\"label\":\"Address\",\"prop\":\"address\"}]}}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"数据\"}},\"description\":{\"zh_CN\":\"显示的数据\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"columns\",\"label\":{\"text\":{\"zh_CN\":\"表格列配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"properties\":[{\"label\":{\"zh_CN\":\"默认分组\"},\"content\":[{\"property\":\"type\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"type\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列的类型。 如果设置了selection则显示多选框; 如果设置了 index 则显示该行的索引(从 1 开始计算); 如果设置了 expand 则显示为一个可展开的按钮\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"selection\",\"value\":\"selection\"},{\"label\":\"index\",\"value\":\"index\"},{\"label\":\"expand\",\"value\":\"expand\"}]}}},{\"property\":\"index\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"index\"}},\"description\":{\"text\":{\"zh_CN\":\"如果设置了 type=index,可以通过传递 index 属性来自定义索引\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"label\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"label\"}},\"description\":{\"text\":{\"zh_CN\":\"显示的标题\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"column-key\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"column-key\"}},\"description\":{\"text\":{\"zh_CN\":\"column 的 key, column 的 key, 如果需要使用 filter-change 事件,则需要此属性标识是哪个 column 的筛选条件\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"prop\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"prop\"}},\"description\":{\"text\":{\"zh_CN\":\"字段名称 对应列内容的字段名, 也可以使用 property属性\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"width\",\"type\":\"number\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"width\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列的宽度\"}},\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}}},{\"property\":\"min-width\",\"type\":\"number\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"min-width\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列的最小宽度, 对应列的最小宽度, 与 width 的区别是 width 是固定的,min-width 会把剩余宽度按比例分配给设置了 min-width 的列\"}},\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}}},{\"property\":\"fixed\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"fixed\"}},\"description\":{\"text\":{\"zh_CN\":\"列是否固定在左侧或者右侧。 true 表示固定在左侧\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"sortable\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"sortable\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列是否可以排序\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"sort-method\",\"type\":\"function\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"sort-method\"}},\"description\":{\"text\":{\"zh_CN\":\"指定数据按照哪个属性进行排序,仅当sortable设置为true的时候有效。 应该如同 Array.sort 那样返回一个 Number\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"sort-by\",\"type\":\"array\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"sort-by\"}},\"description\":{\"text\":{\"zh_CN\":\"指定数据按照哪个属性进行排序,仅当 sortable 设置为 true 且没有设置 sort-method 的时候有效。 如果 sort-by 为数组,则先按照第 1 个属性排序,如果第 1 个相等,再按照第 2 个排序,以此类推\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"sort-orders\",\"type\":\"array\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"sort-orders\"}},\"description\":{\"text\":{\"zh_CN\":\"数据在排序时所使用排序策略的轮转顺序,仅当 sortable 为 true 时有效。 需传入一个数组,随着用户点击表头,该列依次按照数组中元素的顺序进行排序\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"resizable\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"resizable\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列是否可以通过拖动改变宽度(需要在 el-table 上设置 border 属性为真)\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"formatter\",\"type\":\"function\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"formatter\"}},\"description\":{\"text\":{\"zh_CN\":\"用来格式化内容\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"dataType\":\"JSFunction\"}}},{\"property\":\"show-overflow-tooltip\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"show-overflow-tooltip\"}},\"description\":{\"text\":{\"zh_CN\":\"当内容过长被隐藏时显示 tooltip\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"align\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"align\"}},\"description\":{\"text\":{\"zh_CN\":\"对齐方式\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"center\",\"value\":\"center\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"header-align\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"header-align\"}},\"description\":{\"text\":{\"zh_CN\":\"表头对齐方式, 若不设置该项,则使用表格的对齐方式\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"center\",\"value\":\"center\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"class-name\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"class-name\"}},\"description\":{\"text\":{\"zh_CN\":\"列的 className\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"label-class-name\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"label-class-name\"}},\"description\":{\"text\":{\"zh_CN\":\"当前列标题的自定义类名\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"selectable\",\"type\":\"function\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"selectable\"}},\"description\":{\"text\":{\"zh_CN\":\"仅对 type=selection 的列有效,类型为 Function,Function 的返回值用来决定这一行的 CheckBox 是否可以勾选\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"reserve-selection\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"reserve-selection\"}},\"description\":{\"text\":{\"zh_CN\":\"数据刷新后是否保留选项,仅对 type=selection 的列有效, 请注意, 需指定 row-key 来让这个功能生效。\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"filters\",\"type\":\"array\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filters\"}},\"description\":{\"text\":{\"zh_CN\":\"数据刷新后是否保留选项,仅对 type=selection 的列有效, 请注意, 需指定 row-key 来让这个功能生效。\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"filter-placement\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"filter-placement\"}},\"description\":{\"text\":{\"zh_CN\":\"过滤弹出框的定位\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"filter-multiple\",\"type\":\"string\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filter-multiple\"}},\"description\":{\"text\":{\"zh_CN\":\"数据过滤的选项是否多选\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"filter-method\",\"type\":\"function\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filter-method\"}},\"description\":{\"text\":{\"zh_CN\":\"数据过滤使用的方法, 如果是多选的筛选项,对每一条数据会执行多次,任意一次返回 true 就会显示\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"filtered-value\",\"type\":\"array\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filtered-value\"}},\"description\":{\"text\":{\"zh_CN\":\"选中的数据过滤项,如果需要自定义表头过滤的渲染方式,可能会需要此属性\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}}]}],\"widget\":{\"component\":\"TableColumnsConfigurator\",\"props\":{\"type\":\"object\",\"textField\":\"label\",\"language\":\"json\",\"buttonText\":\"编辑列配置\",\"title\":\"编辑列配置\",\"expand\":true}},\"description\":{\"zh_CN\":\"表格列的配置信息\"},\"labelPosition\":\"top\"},{\"property\":\"max-height\",\"label\":{\"text\":{\"zh_CN\":\"最大高度\"}},\"description\":{\"zh_CN\":\"Table 的最大高度。\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"number\",\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"height\",\"label\":{\"text\":{\"zh_CN\":\"表格高度\"}},\"description\":{\"zh_CN\":\"Table 的高度, 默认为自动高度。 这个高度会设置为 Table 的 style.height 的值,Table 的高度会受控于外部样式。\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"stripe\",\"label\":{\"text\":{\"zh_CN\":\"斑马纹\"}},\"description\":{\"zh_CN\":\"是否为斑马纹 table\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"纵向边框\"}},\"description\":{\"zh_CN\":\"是否带有纵向边框\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"表格尺寸\"}},\"description\":{\"zh_CN\":\"Table 的尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"fit\",\"label\":{\"text\":{\"zh_CN\":\"列宽自撑开\"}},\"description\":{\"zh_CN\":\"列的宽度是否自撑开\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"show-header\",\"label\":{\"text\":{\"zh_CN\":\"显示表头\"}},\"description\":{\"zh_CN\":\"是否显示表头\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"highlight-current-row\",\"label\":{\"text\":{\"zh_CN\":\"高亮当前行\"}},\"description\":{\"zh_CN\":\"是否要高亮当前行\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"current-row-key\",\"label\":{\"text\":{\"zh_CN\":\"当前行的 key\"}},\"description\":{\"zh_CN\":\"当前行的 key,只写属性\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"row-class-name\",\"label\":{\"text\":{\"zh_CN\":\"行的类名\"}},\"description\":{\"zh_CN\":\"行的 className\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"row-key\",\"label\":{\"text\":{\"zh_CN\":\"行数据的 Key\"}},\"description\":{\"zh_CN\":\"行数据的 Key,用来优化 Table 的渲染; 在使用reserve-selection功能与显示树形数据时,该属性是必填的。 类型为 String 时,支持多层访问:user.info.id,但不支持 user.info[0].id,此种情况请使用 Function\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"empty-text\",\"label\":{\"text\":{\"zh_CN\":\"空数据文本\"}},\"description\":{\"zh_CN\":\"空数据时显示的文本内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"table-layout\",\"label\":{\"text\":{\"zh_CN\":\"表格布局方式\"}},\"description\":{\"zh_CN\":\"设置表格单元、行和列的布局方式\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"defaultValue\":\"fixed\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"fixed\",\"value\":\"fixed\"},{\"label\":\"auto\",\"value\":\"auto\"}]}},\"device\":[]},{\"property\":\"scrollbar-always-on\",\"label\":{\"text\":{\"zh_CN\":\"显示滚动条\"}},\"description\":{\"zh_CN\":\"总是显示滚动条\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"flexible\",\"label\":{\"text\":{\"zh_CN\":\"主轴最小尺寸\"}},\"description\":{\"zh_CN\":\"确保主轴的最小尺寸,以便不超过内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onSelect\":{\"label\":{\"zh_CN\":\"勾选数据行的 Checkbox 时触发\"},\"description\":{\"zh_CN\":\"当用户手动勾选数据行的 Checkbox 时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"selection\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项\"}},{\"name\":\"row\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前行\"}}],\"returns\":{}}},\"onSelectAll\":{\"label\":{\"zh_CN\":\"勾选全选时触发\"},\"description\":{\"zh_CN\":\"当用户手动勾选全选 Checkbox 时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"selection\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项\"}}],\"returns\":{}}},\"onSelectionChange\":{\"label\":{\"zh_CN\":\"选择项发生变化时会触发\"},\"description\":{\"zh_CN\":\"当选择项发生变化时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"selection\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项\"}}],\"returns\":{}}},\"onCellMouseEnter\":{\"label\":{\"zh_CN\":\"单元格 hover 时会触发\"},\"description\":{\"zh_CN\":\"当单元格 hover 进入时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"row\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前行\"}},{\"name\":\"column\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前列\"}},{\"name\":\"cell\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前单元格\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生事件 event\"}}],\"returns\":{}}},\"onCellMouseLeave\":{\"label\":{\"zh_CN\":\"单元格 hover 退出时会触发\"},\"description\":{\"zh_CN\":\"当单元格 hover 退出时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"row\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前行\"}},{\"name\":\"column\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前列\"}},{\"name\":\"cell\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前单元格\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生事件 event\"}}],\"returns\":{}}}},\"slots\":{\"empty\":{\"label\":{\"zh_CN\":\"empty\"},\"description\":{\"zh_CN\":\"当数据为空时自定义的内容\"}},\"append\":{\"label\":{\"zh_CN\":\"append\"},\"description\":{\"zh_CN\":\"插入至表格最后一行之后的内容, 如果需要对表格的内容进行无限滚动操作,可能需要用到这个 slot。 若表格有合计行,该 slot 会位于合计行之上。\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":[\"ElTableColumn\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (6, '2.4.2', '{\"zh_CN\":\"表单\"}', 'ElTableColumn', 'table', '用于展示多条结构类似的数据, 可对数据进行排序、筛选、对比或其他自定义操作', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElTableColumn\"}', '表单组件', 'element-plus', NULL, NULL, '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[],\"description\":{\"zh_CN\":\"\"}}],\"events\":{},\"slots\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (7, '3.20.0', '{\"zh_CN\":\"走马灯子项\"}', 'TinyCarouselItem', 'carouselitem', '常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CarouselItem\"}', 'component', '容器组件', 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"名称\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"幻灯片的名字,可用作 setActiveItem 的参数\"},\"labelPosition\":\"left\"},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"幻灯片的标题\"},\"labelPosition\":\"left\"},{\"property\":\"indicator-position\",\"label\":{\"text\":{\"zh_CN\":\"指示器位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"outside\",\"value\":\"outside\"},{\"label\":\"none\",\"value\":\"none\"}]}},\"description\":{\"zh_CN\":\"指示器的位置\"},\"labelPosition\":\"left\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (8, '3.20.0', '{\"zh_CN\":\"走马灯\"}', 'TinyCarousel', 'carousel', '常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Carousel\"}', 'component', '容器组件', 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"arrow\",\"label\":{\"text\":{\"zh_CN\":\"箭头显示时机\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"总是显示\",\"value\":\"always\"},{\"label\":\"鼠标悬停时显示\",\"value\":\"hover\"},{\"label\":\"从不显示\",\"value\":\"never\"}]}},\"description\":{\"zh_CN\":\"切换箭头的显示时机\"}},{\"property\":\"autoplay\",\"label\":{\"text\":{\"zh_CN\":\"自动切换\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否自动切换\"},\"labelPosition\":\"left\"},{\"property\":\"tabs\",\"label\":{\"text\":{\"zh_CN\":\"选项卡\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"\",\"cols\":12,\"bindState\":false,\"widget\":{\"component\":\"ContainerConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"tabs 选项卡\"},\"labelPosition\":\"none\"},{\"property\":\"height\",\"label\":{\"text\":{\"zh_CN\":\"高度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"走马灯的高度\"}},{\"property\":\"indicator-position\",\"label\":{\"text\":{\"zh_CN\":\"位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"走马灯外部\",\"value\":\"outside\"},{\"label\":\"不显示\",\"value\":\"none\"}]}},\"description\":{\"zh_CN\":\"指示器的位置\"}},{\"property\":\"initial-index\",\"label\":{\"text\":{\"zh_CN\":\"初始索引\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"初始状态激活的幻灯片的索引,从 0 开始 \"}},{\"property\":\"interval\",\"label\":{\"text\":{\"zh_CN\":\"自动切换间隔\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自动切换的时间间隔,单位为毫秒\"}},{\"property\":\"loop\",\"label\":{\"text\":{\"zh_CN\":\"循环显示\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否循环显示\"},\"labelPosition\":\"left\"},{\"property\":\"show-title\",\"label\":{\"text\":{\"zh_CN\":\"显示标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示标题\"},\"labelPosition\":\"left\"},{\"property\":\"trigger\",\"label\":{\"text\":{\"zh_CN\":\"触发方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"点击\",\"value\":\"click\"},{\"label\":\"悬停\",\"value\":\"hover\"}]}},\"description\":{\"zh_CN\":\"指示器的触发方式,默认为 hover\"}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"水平\",\"value\":\"horizontal\"},{\"label\":\"垂直\",\"value\":\"vertical\"},{\"label\":\"卡片\",\"value\":\"card\"}]}},\"description\":{\"zh_CN\":\"走马灯的类型\"}}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"clickCapture\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyCarouselItem\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (9, '3.20.0', '{\"zh_CN\":\"提示框\"}', 'a', 'link', '链接', '', '', '', '', 'proCode', '{}', 'component', 'basic', 7, '[{\"name\":{\"zh_CN\":\"链接\"},\"icon\":\"link\",\"screenshot\":\"\",\"snippetName\":\"a\",\"schema\":{\"componentName\":\"a\",\"children\":\"链接\"}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"children\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlTextConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"类型\"},\"labelPosition\":\"none\"},{\"property\":\"href\",\"label\":{\"text\":{\"zh_CN\":\"链接\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"指定链接的 URL\"},\"labelPosition\":\"left\"},{\"property\":\"target\",\"label\":{\"text\":{\"zh_CN\":\"打开方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"当前页面\",\"value\":\"_self\"},{\"label\":\"打开新页面\",\"value\":\"_blank\"}]}},\"description\":{\"zh_CN\":\"指定链接的打开方式,例如在当前窗口中打开或在新窗口中打开。\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}]}', '{\"loop\":true,\"condition\":true,\"slots\":[],\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[]},\"contextMenu\":{\"actions\":[],\"disable\":[]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (10, '3.20.0', '{\"zh_CN\":\"标题\"}', '[h1, h2, h3, h4, h5, h6]', 'h16', '标题', '', '', '', '', 'proCode', '{}', 'component', 'html', 20, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"children\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlTextConfigurator\",\"props\":{\"showRadioButton\":true}},\"description\":{\"zh_CN\":\"\"},\"labelPosition\":\"none\"},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"\"},\"labelPosition\":\"none\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (11, '3.20.0', '{\"zh_CN\":\"段落\"}', 'p', 'paragraph', '段落', '', '', '', '', 'proCode', '{}', 'component', 'basic', 30, '[{\"name\":{\"zh_CN\":\"段落\"},\"icon\":\"paragraph\",\"screenshot\":\"\",\"snippetName\":\"p\",\"schema\":{\"componentName\":\"p\",\"children\":\"TinyEngine 前端可视化设计器致力于通过友好的用户交互提升业务应用的开发效率。\"}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"children\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlTextConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"类型\"},\"labelPosition\":\"none\"},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[]},\"contextMenu\":{\"actions\":[],\"disable\":[]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (12, '3.20.0', '{\"zh_CN\":\"输入框\"}', 'input', 'input', '输入框', '', '', '', '', 'proCode', '{}', 'component', 'html', 40, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"checkbox\",\"value\":\"checkbox\"},{\"label\":\"color\",\"value\":\"color\"},{\"label\":\"date\",\"value\":\"date\"},{\"label\":\"button\",\"value\":\"button\"},{\"label\":\"email\",\"value\":\"email\"},{\"label\":\"file\",\"value\":\"file\"},{\"label\":\"hidden\",\"value\":\"hidden\"},{\"label\":\"image\",\"value\":\"image\"},{\"label\":\"month\",\"value\":\"month\"},{\"label\":\"number\",\"value\":\"number\"},{\"label\":\"password\",\"value\":\"password\"},{\"label\":\"radio\",\"value\":\"radio\"},{\"label\":\"range\",\"value\":\"range\"},{\"label\":\"reset\",\"value\":\"reset\"},{\"label\":\"search\",\"value\":\"search\"},{\"label\":\"submit\",\"value\":\"submit\"},{\"label\":\"text\",\"value\":\"text\"},{\"label\":\"time\",\"value\":\"time\"},{\"label\":\"week\",\"value\":\"week\"},{\"label\":\"url\",\"value\":\"url\"}]}},\"description\":{\"zh_CN\":\"类型\"}},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位符\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"占位符\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onChange\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (13, '3.20.0', '{\"zh_CN\":\"视频\"}', 'video', 'video', '视频', '', '', '', '', 'proCode', '{}', 'component', 'basic', 50, '[{\"name\":{\"zh_CN\":\"视频\"},\"icon\":\"video\",\"screenshot\":\"\",\"snippetName\":\"video\",\"schema\":{\"componentName\":\"video\",\"props\":{\"src\":\"img/webNova.jpg\",\"width\":\"200\",\"height\":\"100\",\"style\":\"border:1px solid #ccc\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"src\",\"label\":{\"text\":{\"zh_CN\":\"资源\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"视频的 URL\"}},{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"播放器宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"视频播放器的宽度\"}},{\"property\":\"height\",\"label\":{\"text\":{\"zh_CN\":\"播放器高度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"视频播放器的高度\"}},{\"property\":\"controls\",\"label\":{\"text\":{\"zh_CN\":\"显示控件\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示控件\"},\"labelPosition\":\"left\"},{\"property\":\"autoplay\",\"label\":{\"text\":{\"zh_CN\":\"马上播放\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否马上播放\"},\"labelPosition\":\"left\"},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[]},\"contextMenu\":{\"actions\":[],\"disable\":[]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (14, '3.20.0', '{\"zh_CN\":\"Img\"}', 'Img', 'Image', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 60, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"src\",\"type\":\"string\",\"defaultValue\":\"\",\"bindState\":true,\"label\":{\"text\":{\"zh_CN\":\"资源\"}},\"cols\":12,\"rules\":[],\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"src路径\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{},\"shortcuts\":{\"properties\":[\"src\"]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (15, '3.20.0', '{\"zh_CN\":\"Button\"}', 'button', 'button', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 70, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', '{\"isContainer\":true}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (16, '3.20.0', '{\"zh_CN\":\"表格\"}', 'table', 'table', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 80, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格的宽度\"}},{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"边框宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格边框的宽度\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (17, '3.20.0', '{\"zh_CN\":\"表格单元格\"}', 'td', 'td', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 90, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"colspan\",\"label\":{\"text\":{\"zh_CN\":\"合并列\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单元格可横跨的列数\"}},{\"property\":\"rowspan\",\"label\":{\"text\":{\"zh_CN\":\"合并行\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单元格可横跨的行数\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (18, '3.20.0', '{\"zh_CN\":\"表单\"}', 'form', 'form', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 100, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"名称\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单的名称\"}},{\"property\":\"action\",\"label\":{\"text\":{\"zh_CN\":\"提交地址\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"提交表单时向何处发送表单数据\"}},{\"property\":\"method\",\"label\":{\"text\":{\"zh_CN\":\"HTTP方法\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"get\",\"value\":\"get\"},{\"label\":\"post\",\"value\":\"post\"}]}},\"description\":{\"zh_CN\":\"用于发送 form-data 的 HTTP 方法\"}}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', '{\"isContainer\":true}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (19, '3.20.0', '{\"zh_CN\":\"表单标签\"}', 'label', 'label', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 110, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"for\",\"label\":{\"text\":{\"zh_CN\":\"label绑定表单元素\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"label 绑定到哪个表单元素\"}},{\"property\":\"form\",\"label\":{\"text\":{\"zh_CN\":\"label字段所属表单\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"label 字段所属的一个或多个表单\"}}]}],\"events\":{},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (20, '3.20.0', '{\"zh_CN\":\"按钮组\"}', 'TinyButtonGroup', 'buttonGroup', '以按钮组的方式出现,常用于多项类似操作', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"ButtonGroup\"}', 'component', 'basic', 2, '[{\"name\":{\"zh_CN\":\"互斥按钮组\"},\"icon\":\"buttons\",\"screenshot\":\"\",\"snippetName\":\"TinyButtonGroup\",\"schema\":{\"componentName\":\"TinyButtonGroup\",\"props\":{\"data\":[{\"text\":\"Button1\",\"value\":\"1\"},{\"text\":\"Button2\",\"value\":\"2\"},{\"text\":\"Button3\",\"value\":\"3\"}],\"modelValue\":\"1\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"配置按钮组数据\"}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"大小\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"mini\",\"value\":\"mini\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"medium\",\"value\":\"medium\"}]}},\"description\":{\"zh_CN\":\"组件大小\"},\"labelPosition\":\"left\"},{\"property\":\"plain\",\"label\":{\"text\":{\"zh_CN\":\"朴素按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否是朴素按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (21, '3.20.0', '{\"zh_CN\":\"row\"}', 'TinyRow', 'row', '定义 Layout 的行配置信息', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Row\"}', 'component', NULL, 5, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"layout\",\"label\":{\"text\":{\"zh_CN\":\"布局\"}},\"cols\":12,\"widget\":{\"component\":\"LayoutGridConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"选择布局方式\"},\"labelPosition\":\"none\"},{\"property\":\"align\",\"label\":{\"text\":{\"zh_CN\":\"子项对齐方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"top\",\"value\":\"top\"},{\"label\":\"middle\",\"value\":\"middle\"},{\"label\":\"bottom\",\"value\":\"bottom\"}]}},\"description\":{\"zh_CN\":\"子项的副轴对齐方向,可取值:top, middle, bottom\"}},{\"property\":\"flex\",\"label\":{\"text\":{\"zh_CN\":\"flex容器\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否为flex容器\"},\"labelPosition\":\"left\"},{\"property\":\"gutter\",\"label\":{\"text\":{\"zh_CN\":\"子项间隔\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"子项的间隔的像素\"}}]}]}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (22, '3.20.0', '{\"zh_CN\":\"row\"}', 'TinyLayout', 'row', '定义 Layout 的行配置信息', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Layout\",\"version\":\"3.20.0\",\"destructuring\":true,\"script\":\"https://unpkg.com/@opentiny/vue-runtime@~3.20/dist3/tiny-vue-pc.mjs\",\"css\":\"https://unpkg.com/@opentiny/vue-theme@~3.20/index.css\"}', 'component', 'layout', 5, '[{\"name\":{\"zh_CN\":\"栅格布局\"},\"icon\":\"row\",\"screenshot\":\"\",\"snippetName\":\"TinyLayout\",\"schema\":{\"componentName\":\"TinyLayout\",\"props\":{},\"children\":[{\"componentName\":\"TinyRow\",\"props\":{\"style\":\"padding: 10px;\"},\"children\":[{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}}]},{\"componentName\":\"TinyRow\",\"props\":{\"style\":\"padding: 10px;\"},\"children\":[{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"cols\",\"label\":{\"text\":{\"zh_CN\":\"总栅格数\"}},\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"12\",\"value\":12},{\"label\":\"24\",\"value\":24}]}},\"description\":{\"zh_CN\":\"选择总栅格数\"},\"labelPosition\":\"none\"},{\"property\":\"tag\",\"label\":{\"text\":{\"zh_CN\":\"layout渲染的标签\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"定义Layout元素渲染后的标签,默认为 div\"}}]}]}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyRow\",\"TinyCol\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (23, '3.20.0', '{\"zh_CN\":\"表单\"}', 'TinyForm', 'form', '由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Form\"}', 'component', NULL, 5, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"label-width\",\"label\":{\"text\":{\"zh_CN\":\"标签宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单中标签占位宽度,默认为 80px\"},\"labelPosition\":\"left\"},{\"property\":\"inline\",\"label\":{\"text\":{\"zh_CN\":\"行内布局\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"行内布局模式,默认为 false\"},\"labelPosition\":\"left\"},{\"property\":\"label-align\",\"label\":{\"text\":{\"zh_CN\":\"必填标识占位\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"必填标识 * 是否占位\"},\"labelPosition\":\"left\"},{\"property\":\"label-suffix\",\"label\":{\"text\":{\"zh_CN\":\"标签后缀\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单中标签后缀\"},\"labelPosition\":\"left\"},{\"property\":\"label-position\",\"label\":{\"text\":{\"zh_CN\":\"标签位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"left \",\"value\":\"left \"},{\"label\":\"top\",\"value\":\"top\"}]}},\"description\":{\"zh_CN\":\"表单中标签的布局位置\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"校验属性\"},\"content\":[{\"property\":\"model\",\"label\":{\"text\":{\"zh_CN\":\"数据对象\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单数据对象\"},\"labelPosition\":\"top\"},{\"property\":\"rules\",\"label\":{\"text\":{\"zh_CN\":\"校验规则\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单验证规则\"},\"labelPosition\":\"top\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onValidate\":{\"label\":{\"zh_CN\":\"表单项被校验后触发\"},\"description\":{\"zh_CN\":\"表单项被校验后触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"function\",\"type\":\"Function\",\"defaultValue\":\"(valid) => {}\",\"description\":{\"zh_CN\":\"校验回调函数\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (24, '3.20.0', '{\"zh_CN\":\"表单项\"}', 'TinyFormItem', 'formitem', '由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"FormItem\"}', 'component', NULL, 12, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"label\",\"label\":{\"text\":{\"zh_CN\":\"标签文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"标签\",\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标签文本\"},\"labelPosition\":\"left\"},{\"property\":\"prop\",\"label\":{\"text\":{\"zh_CN\":\"校验字段\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单域 model 字段,在使用 validate、resetFields 方法的情况下,该属性是必填的\"},\"labelPosition\":\"left\"},{\"property\":\"required\",\"label\":{\"text\":{\"zh_CN\":\"必填\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否必填\"},\"labelPosition\":\"left\"}]}],\"events\":{},\"slots\":{\"label\":{\"label\":{\"zh_CN\":\"字段名\"},\"description\":{\"zh_CN\":\"自定义显示字段名称\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":[\"TinyForm\"],\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label\",\"rules\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (25, '3.20.0', '{\"zh_CN\":\"col\"}', 'TinyCol', 'col', '列配置信息', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Col\"}', 'component', NULL, 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"span\",\"label\":{\"text\":{\"zh_CN\":\"栅格列格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"整行\",\"value\":12},{\"label\":\"6格\",\"value\":6},{\"label\":\"4格\",\"value\":4},{\"label\":\"3格\",\"value\":3},{\"label\":\"1格\",\"value\":1}]}},\"description\":{\"zh_CN\":\"当一行分为12格时,一列可占位多少格\"}},{\"property\":\"move\",\"label\":{\"text\":{\"zh_CN\":\"栅格移动格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":-12,\"max\":12}},\"description\":{\"zh_CN\":\"栅格左右移动格数(正数向右,负数向左)\"}},{\"property\":\"no\",\"label\":{\"text\":{\"zh_CN\":\"排序编号\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"max\":12}},\"description\":{\"zh_CN\":\"排序编号(row中启用order生效)\"}},{\"property\":\"offset\",\"label\":{\"text\":{\"zh_CN\":\"间隔格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":0,\"max\":12}},\"description\":{\"zh_CN\":\"栅格左侧的间隔格数\"}},{\"property\":\"xs\",\"label\":{\"text\":{\"zh_CN\":\"超小屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"<768px 响应式栅格数\"}},{\"property\":\"sm\",\"label\":{\"text\":{\"zh_CN\":\"小屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥768px 响应式栅格数\"}},{\"property\":\"md\",\"label\":{\"text\":{\"zh_CN\":\"中屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥992px 响应式栅格数\"}},{\"property\":\"lg\",\"label\":{\"text\":{\"zh_CN\":\"大屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥1200px 响应式栅格数\"}},{\"property\":\"xl\",\"label\":{\"text\":{\"zh_CN\":\"超大屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥1920px 响应式栅格数\"}}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label\",\"rules\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (26, '3.20.0', '{\"zh_CN\":\"按钮\"}', 'TinyButton', 'button', '常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮、下拉按钮等类型', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Button\"}', 'component', 'basic', 2, '[{\"name\":{\"zh_CN\":\"按钮\"},\"icon\":\"button\",\"screenshot\":\"\",\"snippetName\":\"TinyButton\",\"schema\":{\"componentName\":\"TinyButton\",\"props\":{\"text\":\"按钮文案\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"text\",\"type\":\"string\",\"defaultValue\":\"按钮文案\",\"label\":{\"text\":{\"zh_CN\":\"按钮文字\"}},\"cols\":12,\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"按钮文字\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"type\":\"select\",\"label\":{\"text\":{\"zh_CN\":\"大小\"}},\"cols\":12,\"rules\":[],\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"按钮大小\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否被禁用\"},\"labelPosition\":\"left\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"primary\",\"value\":\"primary\"},{\"label\":\"success\",\"value\":\"success\"},{\"label\":\"info\",\"value\":\"info\"},{\"label\":\"warning\",\"value\":\"warning\"},{\"label\":\"danger\",\"value\":\"danger\"},{\"label\":\"text\",\"value\":\"text\"}]}},\"description\":{\"zh_CN\":\"设置不同的主题样式\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"round\",\"label\":{\"text\":{\"zh_CN\":\"圆角\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否圆角按钮\"},\"labelPosition\":\"left\"},{\"property\":\"plain\",\"label\":{\"text\":{\"zh_CN\":\"朴素按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否为朴素按钮\"},\"labelPosition\":\"left\"},{\"property\":\"reset-time\",\"label\":{\"text\":{\"zh_CN\":\"禁用时间\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置禁用时间,防止重复提交,单位毫秒\"},\"labelPosition\":\"left\"},{\"property\":\"circle\",\"label\":{\"text\":{\"zh_CN\":\"圆形按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否圆形按钮\"},\"labelPosition\":\"left\"},{\"property\":\"autofocus\",\"label\":{\"text\":{\"zh_CN\":\"自动聚焦\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否默认聚焦\"},\"labelPosition\":\"left\"},{\"property\":\"loading\",\"label\":{\"text\":{\"zh_CN\":\"加载中样式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否展示位加载中样式\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击事件\"},\"description\":{\"zh_CN\":\"按钮被点击时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"text\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (27, '3.20.0', '{\"zh_CN\":\"输入框\"}', 'TinyInput', 'input', '通过鼠标或键盘输入字符', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Input\"}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"输入框\"},\"icon\":\"input\",\"screenshot\":\"\",\"snippetName\":\"TinyInput\",\"schema\":{\"componentName\":\"TinyInput\",\"props\":{\"placeholder\":\"请输入\",\"modelValue\":\"\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"textarea\",\"value\":\"textarea\"},{\"label\":\"text\",\"value\":\"text\"},{\"label\":\"password\",\"value\":\"password\"}]}},\"description\":{\"zh_CN\":\"设置input框的type属性\"},\"labelPosition\":\"left\"},{\"property\":\"rows\",\"label\":{\"text\":{\"zh_CN\":\"行数\"}},\"widget\":{\"component\":\"NumberConfigurator\"},\"description\":{\"zh_CN\":\"输入框行数,只对 type=\'textarea\' 有效\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"输入框尺寸。该属性的可选值为 medium / small / mini\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"maxlength\",\"label\":{\"text\":{\"zh_CN\":\"最大输入长度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置 input 框的maxLength\"}},{\"property\":\"autofocus\",\"label\":{\"text\":{\"zh_CN\":\"自动聚焦\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自动获取焦点\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框改变后的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{\"prefix\":{\"label\":{\"zh_CN\":\"前置内容\"}},\"suffix\":{\"label\":{\"zh_CN\":\"后置内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (28, '3.20.0', '{\"zh_CN\":\"单选\"}', 'TinyRadio', 'radio', '用于配置不同场景的选项,在一组备选项中进行单选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Radio\"}', 'component', 'form', 3, '[{\"name\":{\"zh_CN\":\"单选\"},\"icon\":\"radio\",\"screenshot\":\"\",\"snippetName\":\"TinyRadio\",\"schema\":{\"componentName\":\"TinyRadio\",\"props\":{\"label\":\"1\",\"text\":\"单选文本\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文本内容\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单选框文本内容\"}},{\"property\":\"label\",\"label\":{\"text\":{\"zh_CN\":\"选中值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"props\":{}},\"description\":{\"zh_CN\":\"radio 选中时的值\"}},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"}]},{\"label\":{\"zh_CN\":\"其他\"},\"description\":{\"zh_CN\":\"\"},\"content\":[{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"显示边框\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示边框\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单选框的尺寸,仅在 border 为true时有效\"}},{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"原生name属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生 name 属性\"}}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值变化事件\"},\"description\":{\"zh_CN\":\"绑定值变化时触发的事件\"}},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"visible\",\"width\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (29, '3.20.0', '{\"zh_CN\":\"下拉框\"}', 'TinySelect', 'select', 'Select 选择器是一种通过点击弹出下拉列表展示数据并进行选择的 UI 组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Select\"}', 'component', 'form', 8, '[{\"name\":{\"zh_CN\":\"下拉框\"},\"icon\":\"select\",\"screenshot\":\"\",\"snippetName\":\"TinySelect\",\"schema\":{\"componentName\":\"TinySelect\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请选择\",\"options\":[{\"value\":\"1\",\"label\":\"黄金糕\"},{\"value\":\"2\",\"label\":\"双皮奶\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"searchable\",\"label\":{\"text\":{\"zh_CN\":\"下拉可搜索\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"下拉面板是否可搜索\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"options\",\"label\":{\"text\":{\"zh_CN\":\"选项数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"配置 Select 下拉数据项\"},\"labelPosition\":\"top\"},{\"property\":\"multiple\",\"label\":{\"text\":{\"zh_CN\":\"多选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否允许输入框输入或选择多个项\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"multiple-limit\",\"label\":{\"text\":{\"zh_CN\":\"最大可选值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"多选时用户最多可以选择的项目数,为 0 则不限制\"},\"labelPosition\":\"left\"},{\"property\":\"popper-class\",\"label\":{\"text\":{\"zh_CN\":\"下拉框类名\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置下拉框自定义的类名\"},\"labelPosition\":\"left\"},{\"property\":\"collapse-tags\",\"label\":{\"text\":{\"zh_CN\":\"多选展示\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"多选时是否将选中值按文字的形式展示\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在下拉框值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"下拉框选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onRemoveTag\":{\"label\":{\"zh_CN\":\"多选模式下移除tag时触发\"},\"description\":{\"zh_CN\":\"多选模式下移除tag时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"被移除Tag对应数据项的值字段\"}}],\"returns\":{}},\"defaultValue\":\"\"}},\"onBeforeMount\":\"console.log(\'table on load\'); this.options = source.data\"}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"multiple\",\"options\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (30, '3.20.0', '{\"zh_CN\":\"开关\"}', 'TinySwitch', 'switch', 'Switch 在两种状态间切换选择', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Switch\"}', 'component', 'form', 9, '[{\"name\":{\"zh_CN\":\"开关\"},\"icon\":\"switch\",\"screenshot\":\"\",\"snippetName\":\"TinySwitch\",\"schema\":{\"componentName\":\"TinySwitch\",\"props\":{\"modelValue\":\"\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否被禁用\"},\"labelPosition\":\"left\"},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"绑定默认值\"},\"labelPosition\":\"left\"},{\"property\":\"true-value\",\"label\":{\"text\":{\"zh_CN\":\"设置打开值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置打开时的值(Boolean / String / Number)\"},\"labelPosition\":\"left\"},{\"property\":\"false-value\",\"label\":{\"text\":{\"zh_CN\":\"设置关闭值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置关闭时的值(Boolean / String / Number)\"},\"labelPosition\":\"left\"},{\"property\":\"mini\",\"label\":{\"text\":{\"zh_CN\":\"迷你尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示为 mini 模式\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"点击事件\"},\"description\":{\"zh_CN\":\"按钮被点击时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"开关的状态值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的开关状态值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"mini\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (31, '3.20.0', '{\"zh_CN\":\"搜索框\"}', 'TinySearch', 'search', '指定条件对象进行搜索数据', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Search\"}', 'component', 'basic', 2, '[{\"name\":{\"zh_CN\":\"搜索框\"},\"icon\":\"search\",\"screenshot\":\"\",\"snippetName\":\"TinySearch\",\"schema\":{\"componentName\":\"TinySearch\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"输入关键词\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"默认值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框内的默认搜索值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否被禁用\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框内的提示占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清空按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置显示清空图标按钮\"},\"labelPosition\":\"left\"},{\"property\":\"isEnterSearch\",\"label\":{\"text\":{\"zh_CN\":\"Enter键触发\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否在按下键盘Enter键的时候触发search事件\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"mini\",\"label\":{\"text\":{\"zh_CN\":\"迷你尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"迷你模式,配置为true时,搜索默认显示为一个带图标的圆形按钮,点击后展开\"},\"labelPosition\":\"left\"},{\"property\":\"transparent\",\"label\":{\"text\":{\"zh_CN\":\"透明模式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"配置为true时,边框变为透明且收缩后半透明显示,一般用在带有背景的场景,默认 false\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"输入完成时触发\"},\"description\":{\"zh_CN\":\"在 input 框中输入完成时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"type\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"搜索类型,默认值为 {} \"}},{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前input框中值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onSearch\":{\"label\":{\"zh_CN\":\"点击搜索按钮时触发\"},\"description\":{\"zh_CN\":\"展开状态点击搜索按钮时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"type\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"搜索类型,默认值为 {} \"}},{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前input框中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"clearable\",\"mini\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (32, '3.20.0', '{\"zh_CN\":\"复选框\"}', 'TinyCheckbox', 'checkbox', '用于配置不同场景的选项,提供用户可在一组选项中进行多选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Checkbox\"}', 'component', 'form', 4, '[{\"name\":{\"zh_CN\":\"复选框\"},\"icon\":\"checkbox\",\"screenshot\":\"\",\"snippetName\":\"TinyCheckbox\",\"schema\":{\"componentName\":\"TinyCheckbox\",\"props\":{\"text\":\"复选框文案\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"checked\",\"label\":{\"text\":{\"zh_CN\":\"勾选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当前是否勾选\"},\"labelPosition\":\"left\"},{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"复选框的文本\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"边框\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示边框\"},\"labelPosition\":\"left\"},{\"property\":\"false-label\",\"label\":{\"text\":{\"zh_CN\":\"未选中的值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"没有选中时的值\"},\"labelPosition\":\"left\"},{\"property\":\"true-label\",\"label\":{\"text\":{\"zh_CN\":\"选择时的值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"选中时的值\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"勾选值改变后将触发\"},\"description\":{\"zh_CN\":\"勾选值改变后将触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"border\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (33, '3.20.0', '{\"zh_CN\":\"复选按钮\"}', 'TinyCheckboxButton', 'checkboxbutton', '用于配置不同场景的选项,提供用户可在一组选项中进行多选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CheckboxButton\"}', 'component', NULL, 1, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"checked\",\"label\":{\"text\":{\"zh_CN\":\"勾选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当前是否勾选\"},\"labelPosition\":\"left\"},{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"按钮文本\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"勾选值改变后将触发\"},\"description\":{\"zh_CN\":\"勾选值改变后将触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"array\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"text\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (34, '3.20.0', '{\"zh_CN\":\"复选按钮组\"}', 'TinyCheckboxGroup', 'checkboxgroup', '用于配置不同场景的选项,提供用户可在一组选项中进行多选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CheckboxGroup\"}', 'component', 'form', 2, '[{\"name\":{\"zh_CN\":\"复选框组\"},\"icon\":\"checkboxs\",\"screenshot\":\"\",\"snippetName\":\"TinyCheckboxGroup\",\"schema\":{\"componentName\":\"TinyCheckboxGroup\",\"props\":{\"modelValue\":[\"name1\",\"name2\"],\"type\":\"checkbox\",\"options\":[{\"text\":\"复选框1\",\"label\":\"name1\"},{\"text\":\"复选框2\",\"label\":\"name2\"},{\"text\":\"复选框3\",\"label\":\"name3\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"dataType\":\"Array\"}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"options\",\"label\":{\"text\":{\"zh_CN\":\"选项列表\"}},\"defaultValue\":[{\"label\":\"标签2\"},{\"label\":\"标签2\"}],\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"checkbox组件列表\"},\"labelPosition\":\"top\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"button\",\"value\":\"button\"},{\"label\":\"checkbox\",\"value\":\"checkbox\"}]}},\"description\":{\"zh_CN\":\"checkbox组件类型(button/checkbox),该属性的默认值为 checkbox,配合 options 属性一起使用\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"勾选值改变后将触发\"},\"description\":{\"zh_CN\":\"勾选值改变后将触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"array\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"type\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (35, '3.20.0', '{\"zh_CN\":\"对话框\"}', 'TinyDialogBox', 'dialogbox', '模态对话框,在浮层中显示,引导用户进行相关操作。', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"DialogBox\"}', 'component', 'data-display', 4, '[{\"name\":{\"zh_CN\":\"对话框\"},\"icon\":\"dialogbox\",\"screenshot\":\"\",\"snippetName\":\"TinyDialogBox\",\"schema\":{\"componentName\":\"TinyDialogBox\",\"props\":{\"visible\":true,\"show-close\":true,\"title\":\"dialogBox title\"},\"children\":[{\"componentName\":\"div\"}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"弹出框标题\"},\"labelPosition\":\"left\"},{\"property\":\"visible\",\"label\":{\"text\":{\"zh_CN\":\"显示与隐藏\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"控制弹出框显示与关闭\"},\"labelPosition\":\"left\"},{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"弹出框的宽度\"},\"labelPosition\":\"left\"},{\"property\":\"draggable\",\"label\":{\"text\":{\"zh_CN\":\"可拖拽\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否开启弹窗的拖拽功能,默认值为 false 。\"},\"labelPosition\":\"left\"},{\"property\":\"center\",\"label\":{\"text\":{\"zh_CN\":\"居中\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"弹出框的头部与底部内容会自动居中\"},\"labelPosition\":\"left\"},{\"property\":\"dialog-class\",\"label\":{\"text\":{\"zh_CN\":\"自定义类名\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自定义配置弹窗类名\"},\"labelPosition\":\"left\"},{\"property\":\"append-to-body\",\"label\":{\"text\":{\"zh_CN\":\"插入到Body\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"DialogBox 本身是否插入到 body 上,嵌套的 Dialog 必须指定该属性并赋值为 true\"},\"labelPosition\":\"left\"},{\"property\":\"show-close\",\"label\":{\"text\":{\"zh_CN\":\"关闭按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示关闭按钮,默认值为 true 。\"},\"labelPosition\":\"left\"}]}],\"selector\":\".TinyDialogBox\",\"events\":{\"onClose\":{\"label\":{\"zh_CN\":\"关闭弹窗时触发\"},\"description\":{\"zh_CN\":\"Dialog 关闭的回调\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:visible\":{\"label\":{\"zh_CN\":\"双向绑定的状态改变时触发\"},\"description\":{\"zh_CN\":\"显示或隐藏的状态值,发生改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"boolean\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的显示或隐藏的状态值\"}}],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{\"title\":{\"label\":{\"zh_CN\":\"标题区\"},\"description\":{\"zh_CN\":\"Dialog 标题区的内容\"}},\"footer\":{\"label\":{\"zh_CN\":\"按钮操作区\"},\"description\":{\"zh_CN\":\"Dialog 按钮操作区的内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":true,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\".tiny-dialog-box\",\"shortcuts\":{\"properties\":[\"visible\",\"width\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (36, '3.20.0', '{\"zh_CN\":\"标签页\"}', 'TinyTabs', 'tabs', '分隔内容上有关联但属于不同类别的数据集合', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Tabs\"}', 'component', 'navigation', 10, '[{\"name\":{\"zh_CN\":\"标签页\"},\"icon\":\"tabs\",\"screenshot\":\"\",\"snippetName\":\"TinyTabs\",\"schema\":{\"componentName\":\"TinyTabs\",\"props\":{\"modelValue\":\"first\"},\"children\":[{\"componentName\":\"TinyTabItem\",\"props\":{\"title\":\"标签页1\",\"name\":\"first\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"style\":\"margin:10px 0 0 30px\"}}]},{\"componentName\":\"TinyTabItem\",\"props\":{\"title\":\"标签页2\",\"name\":\"second\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"style\":\"margin:10px 0 0 30px\"}}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"showEditIcon\",\"label\":{\"text\":{\"zh_CN\":\"显示编辑图标\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示标题后编辑 ICON\"},\"labelPosition\":\"left\"},{\"property\":\"tabs\",\"label\":{\"text\":{\"zh_CN\":\"选项卡\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"\",\"cols\":12,\"bindState\":false,\"widget\":{\"component\":\"ContainerConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"tabs 选项卡\"},\"labelPosition\":\"none\"},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"绑定值,选中选项卡的 name\"},\"labelPosition\":\"left\"},{\"property\":\"with-add\",\"label\":{\"text\":{\"zh_CN\":\"标签新增\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标签是否可增加\"},\"labelPosition\":\"left\"},{\"property\":\"with-close\",\"label\":{\"text\":{\"zh_CN\":\"可关闭\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标签是否可关闭\"},\"labelPosition\":\"left\"},{\"property\":\"tab-style\",\"label\":{\"text\":{\"zh_CN\":\"标签页样式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"card\",\"value\":\"card\"},{\"label\":\"border-card\",\"value\":\"border-card\"}]}},\"description\":{\"zh_CN\":\"标签页样式\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击页签时触发事件\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"component\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前点击的页签对象\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onEdit\":{\"label\":{\"zh_CN\":\"点击新增按钮或关闭按钮或者编辑按钮后触发\"},\"description\":{\"zh_CN\":\"点击新增按钮或关闭按钮或者编辑按钮后触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"tab\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前操作的页签对象\"}},{\"name\":\"type\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前操作的类型(remove || add || edit)\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClose\":{\"label\":{\"zh_CN\":\"关闭页签时触发\"},\"description\":{\"zh_CN\":\"关闭页签时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"name\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"页签名称\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"clickCapture\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyTabItem\"],\"parentWhitelist\":[],\"descendantBlacklist\":[],\"ancestorWhitelist\":[]},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"size\",\"tab-style\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (37, '3.20.0', '{\"zh_CN\":\"tab页签\"}', 'TinyTabItem', 'tabitem', 'tab 标签页', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"TabItem\"}', 'component', NULL, 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"唯一标识\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"唯一标识\"}},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标题\"}}]}],\"events\":{},\"slots\":{\"title\":{\"label\":{\"zh_CN\":\"标题\"},\"description\":{\"zh_CN\":\"自定义标题\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":[\"TinyTab\"],\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"name\",\"title\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (38, '3.20.0', '{\"zh_CN\":\"面包屑\"}', 'TinyBreadcrumb', 'breadcrumb', '告诉访问者他们目前在网站中的位置以及如何返回', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Breadcrumb\"}', 'component', 'navigation', 1, '[{\"name\":{\"zh_CN\":\"面包屑\"},\"icon\":\"breadcrumb\",\"screenshot\":\"\",\"snippetName\":\"TinyBreadcrumb\",\"schema\":{\"componentName\":\"TinyBreadcrumb\",\"props\":{\"options\":[{\"to\":\"{ path: \'/\' }\",\"label\":\"首页\"},{\"to\":\"{ path: \'/breadcrumb\' }\",\"label\":\"产品\"},{\"replace\":\"true\",\"label\":\"软件\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"separator\",\"label\":{\"text\":{\"zh_CN\":\"分隔符\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自定义分隔符\"},\"labelPosition\":\"left\"},{\"property\":\"options\",\"label\":{\"text\":{\"zh_CN\":\"配置数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"单独使用 Breadcrumb,通过 option 配置生成面包屑\"},\"labelPosition\":\"top\"},{\"property\":\"textField\",\"label\":{\"text\":{\"zh_CN\":\"键值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"指定面包屑的显示键值,结合 options 使用\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onSelect\":{\"label\":{\"zh_CN\":\"选择 breadcrumb 时触发\"},\"description\":{\"zh_CN\":\"选择 breadcrumb 时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"clickCapture\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyBreadcrumbItem\"],\"parentWhitelist\":[],\"descendantBlacklist\":[],\"ancestorWhitelist\":[]},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"separator\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (39, '3.20.0', '{\"zh_CN\":\"面包屑项\"}', 'TinyBreadcrumbItem', 'breadcrumb', '', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"BreadcrumbItem\"}', 'component', NULL, 1, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"to\",\"label\":{\"text\":{\"zh_CN\":\"路由跳转\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"路由跳转对象,同 vue-router 的 to\"}}]}],\"slots\":{\"default\":{\"label\":{\"zh_CN\":\"面包屑项标签\"},\"description\":{\"zh_CN\":\"面包屑项\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":[\"TinyBreadcrumb\"],\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"to\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (40, '3.20.0', '{\"zh_CN\":\"折叠面板\"}', 'TinyCollapse', 'collapse', '内容区可指定动态页面或自定义 html 等,支持展开收起操作', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Collapse\"}', 'component', 'data-display', 3, '[{\"name\":{\"zh_CN\":\"折叠面板\"},\"icon\":\"collapse\",\"screenshot\":\"\",\"snippetName\":\"TinyCollapse\",\"schema\":{\"componentName\":\"TinyCollapse\",\"props\":{\"modelValue\":\"collapse1\"},\"children\":[{\"componentName\":\"TinyCollapseItem\",\"props\":{\"name\":\"collapse1\",\"title\":\"折叠项1\"},\"children\":[{\"componentName\":\"div\"}]},{\"componentName\":\"TinyCollapseItem\",\"props\":{\"name\":\"collapse2\",\"title\":\"折叠项2\"},\"children\":[{\"componentName\":\"div\"}]},{\"componentName\":\"TinyCollapseItem\",\"props\":{\"name\":\"collapse3\",\"title\":\"折叠项3\"},\"children\":[{\"componentName\":\"div\"}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"当前激活面板\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定当前激活的面板\"}}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"激活面板改变时触发\"},\"description\":{\"zh_CN\":\"当前激活面板改变时触发(如果是手风琴模式,参数 activeNames 类型为string,否则为array)\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"data\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前激活面板的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前激活面板的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (41, '3.20.0', '{\"zh_CN\":\"折叠面板项\"}', 'TinyCollapseItem', 'collapseitem', '内容区可指定动态页面或自定义 html 等,支持展开收起操作', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CollapseItem\"}', 'component', NULL, 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"唯一标识符\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"唯一标识符: String | Number\"},\"labelPosition\":\"left\"},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"面板标题\"},\"labelPosition\":\"left\"}]}],\"events\":{},\"slots\":{\"title\":{\"label\":{\"zh_CN\":\"标题\"},\"description\":{\"zh_CN\":\"自定义标题\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (42, '3.20.0', '{\"zh_CN\":\"表格\"}', 'TinyGrid', 'grid', '提供了非常强大数据表格功能,可以展示数据列表,可以对数据列表进行选择、编辑等', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Grid\"}', 'component', 'table', 2, '[{\"name\":{\"zh_CN\":\"表格\"},\"icon\":\"grid\",\"screenshot\":\"\",\"snippetName\":\"tinyGrid\",\"schema\":{\"componentName\":\"TinyGrid\",\"props\":{\"editConfig\":{\"trigger\":\"click\",\"mode\":\"cell\",\"showStatus\":true},\"columns\":[{\"type\":\"index\",\"width\":60},{\"type\":\"selection\",\"width\":60},{\"field\":\"employees\",\"title\":\"员工数\"},{\"field\":\"created_date\",\"title\":\"创建日期\"},{\"field\":\"city\",\"title\":\"城市\"}],\"data\":[{\"id\":\"1\",\"name\":\"GFD科技有限公司\",\"city\":\"福州\",\"employees\":800,\"created_date\":\"2014-04-30 00:56:00\",\"boole\":false},{\"id\":\"2\",\"name\":\"WWW科技有限公司\",\"city\":\"深圳\",\"employees\":300,\"created_date\":\"2016-07-08 12:36:22\",\"boole\":true}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础属性\"},\"description\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"表格数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"onChange\":\"this.delProp(\'fetchData\')\",\"description\":{\"zh_CN\":\"设置表格的数据\"},\"labelPosition\":\"top\"},{\"property\":\"columns\",\"label\":{\"text\":{\"zh_CN\":\"表格列\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"properties\":[{\"label\":{\"zh_CN\":\"默认分组\"},\"content\":[{\"property\":\"title\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"列标题\"}},\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}}},{\"property\":\"field\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"列键值\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"sortable\",\"type\":\"boolean\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"是否排序\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"labelPosition\":\"left\"},{\"property\":\"width\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"列宽\"}},\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}}},{\"property\":\"formatText\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"内置渲染器\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"整数\",\"value\":\"integer\"},{\"label\":\"小数\",\"value\":\"number\"},{\"label\":\"金额\",\"value\":\"money\"},{\"label\":\"百分比\",\"value\":\"rate\"},{\"label\":\"布尔\",\"value\":\"boole\"},{\"label\":\"年月日\",\"value\":\"date\"},{\"label\":\"年月日时分\",\"value\":\"dateTime\"},{\"label\":\"时间\",\"value\":\"time\"},{\"label\":\"省略\",\"value\":\"ellipsis\"}]}}},{\"property\":\"renderer\",\"type\":\"object\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"渲染函数\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"dataType\":\"JSFunction\"}}},{\"property\":\"slots\",\"type\":\"object\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"插槽\"}},\"labelPosition\":\"none\",\"widget\":{\"component\":\"JsSlotConfigurator\",\"props\":{\"slots\":[\"header\",\"default\"]}}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"列类型\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"索引列\",\"value\":\"index\"},{\"label\":\"单选列\",\"value\":\"radio\"},{\"label\":\"多选列\",\"value\":\"selection\"},{\"label\":\"展开列\",\"value\":\"expand\"}],\"clearable\":true}},\"description\":{\"zh_CN\":\"设置内置列的类型,该属性的可选值为 index(序号)/ selection(复选框)/ radio(单选框)/ expand(展开行)\"},\"labelPosition\":\"left\"},{\"property\":\"editor\",\"label\":{\"text\":{\"zh_CN\":\"编辑配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"单元格编辑渲染配置项,也可以是函数 Function(h, params)\"}},{\"property\":\"filter\",\"label\":{\"text\":{\"zh_CN\":\"筛选配置\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"设置表格列的筛选配置信息。默认值为 false 不配置筛选信息\"}},{\"property\":\"showOverflow\",\"label\":{\"text\":{\"zh_CN\":\"内容超出部分省略号配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"只显示省略号\",\"value\":\"ellipsis\"},{\"label\":\"显示为原生 title\",\"value\":\"title\"},{\"label\":\"显示为 tooltip 提示\",\"value\":\"tooltip\"}],\"clearable\":true}},\"description\":{\"zh_CN\":\"设置内置列的内容超出部分显示省略号配置,该属性的可选值为 ellipsis(只显示省略号)/ title(显示为原生 title)/ tooltip(显示为 tooltip 提示)\"},\"labelPosition\":\"top\"}]}],\"widget\":{\"component\":\"ArrayItemConfigurator\",\"props\":{\"type\":\"object\",\"textField\":\"title\",\"language\":\"json\",\"buttonText\":\"编辑列配置\",\"title\":\"编辑列配置\",\"expand\":true}},\"description\":{\"zh_CN\":\"表格列的配置信息\"},\"labelPosition\":\"left\"},{\"property\":\"fetchData\",\"label\":{\"text\":{\"zh_CN\":\"服务端查询\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"onChange\":\"function () { this.delProp(\'data\') } \",\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"name\":\"fetchData\",\"dataType\":\"JSExpression\"}},\"description\":{\"zh_CN\":\"服务端数据查询方法\"},\"labelPosition\":\"top\"},{\"property\":\"pager\",\"label\":{\"text\":{\"zh_CN\":\"分页配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"defaultValue\":{\"attrs\":{\"currentPage\":1}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"name\":\"pager\",\"dataType\":\"JSExpression\"}},\"description\":{\"zh_CN\":\"分页配置,需结合fetchData使用\"},\"labelPosition\":\"top\"},{\"property\":\"resizable\",\"label\":{\"text\":{\"zh_CN\":\"调整列宽\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否允许调整列宽\"},\"labelPosition\":\"left\"},{\"property\":\"row-id\",\"label\":{\"text\":{\"zh_CN\":\"行数据主键\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"placeholder\":\"比如:id\"}},\"description\":{\"zh_CN\":\"自定义行数据唯一主键的字段名(行数据必须要有唯一主键,默认自动生成)\"},\"labelPosition\":\"left\"},{\"property\":\"select-config\",\"label\":{\"text\":{\"zh_CN\":\"行复选框配置\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"dataType\":\"JSExpression\"}},\"description\":{\"zh_CN\":\"表格行数据复选框配置项\"}},{\"property\":\"edit-rules\",\"label\":{\"text\":{\"zh_CN\":\"校验规则\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格校验规则配置项\"},\"labelPosition\":\"top\"},{\"property\":\"edit-config\",\"label\":{\"text\":{\"zh_CN\":\"编辑配置项\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格编辑配置项\"},\"labelPosition\":\"top\"},{\"property\":\"expand-config\",\"label\":{\"text\":{\"zh_CN\":\"展开行配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"展开行配置项\"},\"labelPosition\":\"top\"},{\"property\":\"sortable\",\"label\":{\"text\":{\"zh_CN\":\"可排序\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否允许列数据排序。默认为 true 可排序\"},\"labelPosition\":\"left\"}]},{\"label\":{\"zh_CN\":\"其他\"},\"description\":{\"zh_CN\":\"其他属性\"},\"content\":[{\"property\":\"auto-resize\",\"label\":{\"text\":{\"zh_CN\":\"响应式监听\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格属性设置 autoResize 属性开启响应式表格宽高的同时,将高度height设置为auto就可以自动跟随父容器高度。\"},\"labelPosition\":\"left\"},{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"边框\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否带有纵向边框\"},\"labelPosition\":\"left\"},{\"property\":\"seq-serial\",\"label\":{\"text\":{\"zh_CN\":\"行号连续\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置行序号是否连续,开启分页时有效,该属性的默认值为 false\"},\"labelPosition\":\"left\"},{\"property\":\"highlight-current-row\",\"label\":{\"text\":{\"zh_CN\":\"高亮当前行\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"高亮当前行\"},\"labelPosition\":\"left\"},{\"property\":\"highlight-hover-row\",\"label\":{\"text\":{\"zh_CN\":\"移入行高亮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"鼠标移到行是否要高亮显示\"},\"labelPosition\":\"left\"},{\"property\":\"row-class-name\",\"label\":{\"text\":{\"zh_CN\":\"设置行高亮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"给行附加 className,也可以是函数 Function({seq, row, rowIndex, $rowIndex})\"},\"labelPosition\":\"top\"},{\"property\":\"max-height\",\"label\":{\"text\":{\"zh_CN\":\"内容最大高度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置表格内容区域(不含表格头部,底部)的最大高度。\"}},{\"property\":\"row-span\",\"label\":{\"text\":{\"zh_CN\":\"行合并\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置行合并,该属性仅适用于普通表格,不可与 tree-config 同时使用\"},\"labelPosition\":\"top\"}]}],\"events\":{\"onFilterChange\":{\"label\":{\"zh_CN\":\"筛选条件改变时触发改事件\"},\"description\":{\"zh_CN\":\"配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"{$table,filters} 包含 table 实例对象和过滤条件的对象\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onSortChange\":{\"label\":{\"zh_CN\":\"点击列头,执行数据排序前触发的事件\"},\"description\":{\"zh_CN\":\"配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"{$table,filters} 包含 table 实例对象和过滤条件的对象\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onSelectAll\":{\"label\":{\"zh_CN\":\"当手动勾选全选时触发的事件\"},\"description\":{\"zh_CN\":\"只对 type=selection 有效,当手动勾选全选时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" 包含 table 实例对象\"}},{\"name\":\"checked\",\"type\":\"boolean\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"勾选状态\"}},{\"name\":\"selction\",\"type\":\"Array\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中的表格数据数组\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onSelectChange\":{\"label\":{\"zh_CN\":\"手动勾选并且值发生改变时触发的事件\"},\"description\":{\"zh_CN\":\"只对 type=selection 有效,当手动勾选并且值发生改变时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" table 实例对象\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" 原生 Event\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onToggleExpandChange\":{\"label\":{\"zh_CN\":\"当行展开或收起时会触发该事件\"},\"description\":{\"zh_CN\":\"当行展开或收起时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"{$table,row,rowIndex} 包含 table 实例对象和当前行数据的对象\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" 原生 Event\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onCurrentChange\":{\"label\":{\"zh_CN\":\"行点击时触发\"},\"description\":{\"zh_CN\":\"行点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[\"sortable\",\"columns\"]},\"contentMenu\":{\"actions\":[\"create symbol\"]},\"onBeforeMount\":\"console.log(\'table on load\'); this.pager = source.pager; this.fetchData = source.fetchData; this.data = source.data ;this.columns = source.columns\"}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"sortable\",\"columns\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (43, '3.20.0', '{\"zh_CN\":\"分页\"}', 'TinyPager', 'pager', '当数据量过多时,使用分页分解数据,常用于 Grid 和 Repeater 组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Pager\"}', 'component', 'table', 1, '[{\"name\":{\"zh_CN\":\"分页\"},\"icon\":\"pager\",\"screenshot\":\"\",\"snippetName\":\"TinyPager\",\"schema\":{\"componentName\":\"TinyPager\",\"props\":{\"layout\":\"total, sizes, prev, pager, next\",\"total\":100,\"pageSize\":10,\"currentPage\":1}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"currentPage\",\"label\":{\"text\":{\"zh_CN\":\"当前页数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当前页数,支持 .sync 修饰符\"},\"labelPosition\":\"left\"},{\"property\":\"pageSize\",\"label\":{\"text\":{\"zh_CN\":\"每页条数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"每页显示条目个数\"},\"labelPosition\":\"left\"},{\"property\":\"pageSizes\",\"label\":{\"text\":{\"zh_CN\":\"可选每页条数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置可选择的每页显示条数\"}},{\"property\":\"total\",\"label\":{\"text\":{\"zh_CN\":\"总条数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"数据总条数\"},\"labelPosition\":\"left\"},{\"property\":\"layout\",\"label\":{\"text\":{\"zh_CN\":\"布局\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"defaultValue\":\"total,sizes,prev, pager, next\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"type\":\"textarea\"}},\"description\":{\"zh_CN\":\"组件布局,子组件名用逗号分隔\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onCurrentChange \":{\"label\":{\"zh_CN\":\"切换页码时触发\"},\"description\":{\"zh_CN\":\"切换页码时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onPrevClick \":{\"label\":{\"zh_CN\":\"点击上一页按钮时触发\"},\"description\":{\"zh_CN\":\"点击上一页按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"page\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页的页码值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onNextClick\":{\"label\":{\"zh_CN\":\"点击下一页按钮时触发\"},\"description\":{\"zh_CN\":\"点击上一页按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"page\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页的页码值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"currentPage\",\"total\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (44, '3.20.0', '{\"zh_CN\":\"弹出编辑\"}', 'TinyPopeditor', 'popEditor', '该组件只能在弹出的面板中选择数据,不能手动输入数据;弹出面板中显示为 Tree 组件或者 Grid 组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Popeditor\"}', 'component', 'data-display', 6, '[{\"name\":{\"zh_CN\":\"弹出编辑\"},\"icon\":\"popeditor\",\"screenshot\":\"\",\"snippetName\":\"TinyPopeditor\",\"schema\":{\"componentName\":\"TinyPopeditor\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请选择\",\"gridOp\":{\"columns\":[{\"field\":\"id\",\"title\":\"ID\",\"width\":40},{\"field\":\"name\",\"title\":\"名称\",\"showOverflow\":\"tooltip\"},{\"field\":\"province\",\"title\":\"省份\",\"width\":80},{\"field\":\"city\",\"title\":\"城市\",\"width\":80}],\"data\":[{\"id\":\"1\",\"name\":\"GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司\",\"city\":\"福州\",\"province\":\"福建\"},{\"id\":\"2\",\"name\":\"WWW科技有限公司\",\"city\":\"深圳\",\"province\":\"广东\"},{\"id\":\"3\",\"name\":\"RFV有限责任公司\",\"city\":\"中山\",\"province\":\"广东\"},{\"id\":\"4\",\"name\":\"TGB科技有限公司\",\"city\":\"龙岩\",\"province\":\"福建\"},{\"id\":\"5\",\"name\":\"YHN科技有限公司\",\"city\":\"韶关\",\"province\":\"广东\"},{\"id\":\"6\",\"name\":\"WSX科技有限公司\",\"city\":\"黄冈\",\"province\":\"武汉\"}]}}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"show-clear-btn\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出面板的宽度(单位像素)\"},\"labelPosition\":\"left\"},{\"property\":\"conditions\",\"label\":{\"text\":{\"zh_CN\":\"过滤条件\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当弹出面板配置的是表格时,设置弹出面板中的过滤条件\"},\"labelPosition\":\"top\"},{\"property\":\"grid-op\",\"label\":{\"text\":{\"zh_CN\":\"面板表格配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出面板中表格组件的配置信息\"}},{\"property\":\"pager-op\",\"label\":{\"text\":{\"zh_CN\":\"分页配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出编辑框中分页配置\"},\"labelPosition\":\"top\"},{\"property\":\"multi\",\"label\":{\"text\":{\"zh_CN\":\"多选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出面板中的数据是否可多选\"},\"labelPosition\":\"left\"},{\"property\":\"show-pager\",\"label\":{\"text\":{\"zh_CN\":\"启用分页\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当 popseletor 为 grid 时才能生效,配置为 true 后还需配置 pagerOp 属性\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"选中值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项的值\"}},{\"name\":\"value\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中对象\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClose\":{\"label\":{\"zh_CN\":\"弹框关闭时触发的事件\"},\"description\":{\"zh_CN\":\"弹框关闭时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onPageChange\":{\"label\":{\"zh_CN\":\"分页切换事件\"},\"description\":{\"zh_CN\":\"表格模式下分页切换事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页码数\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"modelValue\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (45, '3.20.0', '{\"zh_CN\":\"树\"}', 'TinyTree', 'tree', '可进行展示有父子层级的数据,支持选择,异步加载等功能。但不推荐用它来展示菜单,展示菜单推荐使用树菜单', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Tree\"}', 'component', 'data-display', 12, '[{\"name\":{\"zh_CN\":\"树\"},\"icon\":\"tree\",\"screenshot\":\"\",\"snippetName\":\"TinyTree\",\"schema\":{\"componentName\":\"TinyTree\",\"props\":{\"data\":[{\"label\":\"一级 1\",\"children\":[{\"label\":\"二级 1-1\",\"children\":[{\"label\":\"三级 1-1-1\"}]}]},{\"label\":\"一级 2\",\"children\":[{\"label\":\"二级 2-1\",\"children\":[{\"label\":\"三级 2-1-1\"}]},{\"label\":\"二级 2-2\",\"children\":[{\"label\":\"三级 2-2-1\"}]}]}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"show-checkbox\",\"label\":{\"text\":{\"zh_CN\":\"多选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置接口是否可以多选\"},\"labelPosition\":\"left\"},{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"数据源\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":[{\"label\":\"一级 1\",\"children\":[{\"label\":\"二级 1-1\"}]}],\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"可配置静态数据源和动态数据源\"},\"labelPosition\":\"top\"},{\"property\":\"node-key\",\"label\":{\"text\":{\"zh_CN\":\"唯一标识\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点唯一标识属性名称\"},\"labelPosition\":\"left\"},{\"property\":\"render-content\",\"label\":{\"text\":{\"zh_CN\":\"渲染函数\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"disabled\":true,\"placeholder\":\"请使用变量绑定来绑定函数\"}},\"description\":{\"zh_CN\":\"树节点的内容区的渲染函数\"}},{\"property\":\"icon-trigger-click-node\",\"label\":{\"text\":{\"zh_CN\":\"触发NodeClick事件\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"点击图标展开节点时是否触发 node-click 事件\"},\"labelPosition\":\"left\"},{\"property\":\"expand-icon\",\"label\":{\"text\":{\"zh_CN\":\"展开图标\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点展开图标\"},\"labelPosition\":\"top\"},{\"property\":\"shrink-icon\",\"label\":{\"text\":{\"zh_CN\":\"收缩图标\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点收缩的图标\"},\"labelPosition\":\"top\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"check-on-click-node\",\"label\":{\"text\":{\"zh_CN\":\"点击节点选中\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否在点击节点的时候选中节点,默认值为 false,即只有在点击复选框时才会选中节点\"},\"labelPosition\":\"left\"},{\"property\":\"filter-node-method\",\"label\":{\"text\":{\"zh_CN\":\"筛选函数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点筛选函数\"},\"labelPosition\":\"top\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onCheck\":{\"label\":{\"zh_CN\":\"勾选节点后的事件\"},\"description\":{\"zh_CN\":\"勾选节点后的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"data\",\"type\":\"object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中节点信息\"}},{\"name\":\"currentNode\",\"type\":\"object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onNodeClick\":{\"label\":{\"zh_CN\":\"点击节点后的事件\"},\"description\":{\"zh_CN\":\"点击节点后的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"data\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中节点信息\"}},{\"name\":\"node\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性\"}},{\"name\":\"vm\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"树组件实例\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"data\",\"show-checkbox\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (46, '3.20.0', '{\"zh_CN\":\"时间线\"}', 'TinyTimeLine', 'timeline', 'TimeLine 时间线', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"TimeLine\"}', 'component', 'navigation', 3, '[{\"name\":{\"zh_CN\":\"时间线\"},\"icon\":\"timeline\",\"screenshot\":\"\",\"snippetName\":\"TinyTimeLine\",\"schema\":{\"componentName\":\"TinyTimeLine\",\"props\":{\"active\":\"2\",\"data\":[{\"name\":\"已下单\"},{\"name\":\"运输中\"},{\"name\":\"已签收\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"horizontal\",\"type\":\"Boolean\",\"defaultValue\":{\"type\":\"i18n\",\"zh_CN\":\"布局\",\"en_US\":\"layout\",\"key\":\"\"},\"label\":{\"text\":{\"zh_CN\":\"水平布局\"}},\"cols\":12,\"rules\":[],\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点和文字横向布局\"},\"labelPosition\":\"left\"},{\"property\":\"vertical\",\"type\":\"Boolean\",\"defaultValue\":{\"type\":\"i18n\",\"zh_CN\":\"垂直布局\",\"en_US\":\"layout\",\"key\":\"\"},\"label\":{\"text\":{\"zh_CN\":\"垂直布局\"}},\"cols\":12,\"rules\":[],\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点和文字垂直布局\"},\"labelPosition\":\"left\"},{\"property\":\"active\",\"label\":{\"text\":{\"zh_CN\":\"选中值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"步骤条的选中步骤值\"},\"labelPosition\":\"left\"},{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"步骤条数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":[{\"name\":\"配置基本信息\",\"status\":\"ready\"},{\"name\":\"配置报价\",\"status\":\"wait\"},{\"name\":\"完成报价\",\"status\":\"wait\"}],\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"时间线步骤条数据\"},\"labelPosition\":\"top\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"节点的点击时触发\"},\"description\":{\"zh_CN\":\"节点的点击时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"type\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"点击节点的下标\"}},{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前节点对象:{ name: 节点名称, time: 时间 }\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"active\",\"data\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (47, '3.20.0', '{\"zh_CN\":\"文字提示框\"}', 'TinyTooltip', 'tooltip', '动态显示提示信息,一般通过鼠标事件进行响应;提供 warning、error、info、success 四种类型显示不同类别的信', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Tooltip\"}', 'component', 'data-display', 11, '[{\"name\":{\"zh_CN\":\"文字提示框\"},\"icon\":\"tooltip\",\"screenshot\":\"\",\"snippetName\":\"TinyTooltip\",\"schema\":{\"componentName\":\"TinyTooltip\",\"props\":{\"content\":\"Top Left 提示文字\",\"placement\":\"top-start\",\"manual\":true,\"modelValue\":true},\"children\":[{\"componentName\":\"span\",\"children\":[{\"componentName\":\"div\",\"props\":{}}]},{\"componentName\":\"Template\",\"props\":{\"slot\":\"content\"},\"children\":[{\"componentName\":\"span\",\"children\":[{\"componentName\":\"div\",\"props\":{\"placeholder\":\"提示内容\"}}]}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"placement\",\"label\":{\"text\":{\"zh_CN\":\"提示位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"top\",\"value\":\"top\"},{\"label\":\"top-start\",\"value\":\"top-start\"},{\"label\":\"top-end\",\"value\":\"top-end\"},{\"label\":\"bottom\",\"value\":\"bottom\"},{\"label\":\"bottom-start\",\"value\":\"bottom-start\"},{\"label\":\"bottom-end\",\"value\":\"bottom-end\"},{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"left-start\",\"value\":\"left-start\"},{\"label\":\"left-end\",\"value\":\"left-end\"},{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"right-start\",\"value\":\"right-start\"},{\"label\":\"right-end\",\"value\":\"right-end\"}]}},\"description\":{\"zh_CN\":\"Tooltip 的出现位置\"},\"labelPosition\":\"left\"},{\"property\":\"content\",\"label\":{\"text\":{\"zh_CN\":\"内容\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"提示信息\",\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"显示的内容,也可以通过 slot#content 传入 DOM\"},\"labelPosition\":\"left\"},{\"property\":\"render-content\",\"label\":{\"text\":{\"zh_CN\":\"渲染函数\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"disabled\":true,\"placeholder\":\"请使用变量绑定来绑定函数\"}},\"description\":{\"zh_CN\":\"自定义渲染函数,返回需要渲染的节点内容\"}},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"是否可见\"}},\"defaultValue\":true,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"状态是否可见\"},\"labelPosition\":\"left\"},{\"property\":\"manual\",\"label\":{\"text\":{\"zh_CN\":\"手动控制\"}},\"defaultValue\":true,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"手动控制模式,设置为 true 后,mouseenter 和 mouseleave 事件将不会生效\"},\"labelPosition\":\"left\"}]}],\"events\":{},\"slots\":{\"content\":{\"label\":{\"zh_CN\":\"提示内容\"},\"description\":{\"zh_CN\":\"自定义提示内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":true,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"content\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (48, '3.20.0', '{\"zh_CN\":\"提示框\"}', 'TinyPopover', 'popover', 'Popover可通过对一个触发源操作触发弹出框,支持自定义弹出内容,延迟触发和渐变动画', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Popover\"}', 'component', 'data-display', 7, '[{\"name\":{\"zh_CN\":\"提示框\"},\"icon\":\"popover\",\"screenshot\":\"\",\"snippetName\":\"TinyPopover\",\"schema\":{\"componentName\":\"TinyPopover\",\"props\":{\"width\":200,\"title\":\"弹框标题\",\"trigger\":\"manual\",\"modelValue\":true},\"children\":[{\"componentName\":\"Template\",\"props\":{\"slot\":\"reference\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"placeholder\":\"触发源\"}}]},{\"componentName\":\"Template\",\"props\":{\"slot\":\"default\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"placeholder\":\"提示内容\"}}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定,手动控制是否可见的状态值\"},\"labelPosition\":\"left\"},{\"property\":\"placement\",\"label\":{\"text\":{\"zh_CN\":\"位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"top\",\"value\":\"top\"},{\"label\":\"top-start\",\"value\":\"top-start\"},{\"label\":\"top-end\",\"value\":\"top-end\"},{\"label\":\"bottom\",\"value\":\"bottom\"},{\"label\":\"bottom-start\",\"value\":\"bottom-start\"},{\"label\":\"bottom-end\",\"value\":\"bottom-end\"},{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"left-start\",\"value\":\"left-start\"},{\"label\":\"left-end\",\"value\":\"left-end\"},{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"right-start\",\"value\":\"right-start\"},{\"label\":\"right-end\",\"value\":\"right-end\"}]}},\"description\":{\"zh_CN\":\"提示框位置\"},\"labelPosition\":\"left\"},{\"property\":\"trigger\",\"label\":{\"text\":{\"zh_CN\":\"触发方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"click\",\"value\":\"click\"},{\"label\":\"focus\",\"value\":\"focus\"},{\"label\":\"hover\",\"value\":\"hover\"},{\"label\":\"manual\",\"value\":\"manual\"}]}},\"description\":{\"zh_CN\":\"触发方式,该属性的可选值为 click / focus / hover / manual,该属性的默认值为 click\"},\"labelPosition\":\"left\"},{\"property\":\"popper-class\",\"label\":{\"text\":{\"zh_CN\":\"自定义类\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"为 popper 添加类名\"},\"labelPosition\":\"left\"},{\"property\":\"visible-arrow\",\"label\":{\"text\":{\"zh_CN\":\"显示箭头\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示 Tooltip 箭头\"},\"labelPosition\":\"left\"},{\"property\":\"append-to-body\",\"label\":{\"text\":{\"zh_CN\":\"添加到body上\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"Popover弹窗是否添加到body上\"},\"labelPosition\":\"left\"},{\"property\":\"arrow-offset\",\"label\":{\"text\":{\"zh_CN\":\"箭头的位置偏移\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"箭头的位置偏移,该属性的默认值为 0\"}},{\"property\":\"close-delay\",\"label\":{\"text\":{\"zh_CN\":\"延迟隐藏\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"触发方式为 hover 时的隐藏延迟,单位为毫秒\"},\"labelPosition\":\"left\"},{\"property\":\"content\",\"label\":{\"text\":{\"zh_CN\":\"显示的内容\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"显示的内容,也可以通过 slot 传入 DOM\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"Popover 是否可用\"},\"labelPosition\":\"left\"},{\"property\":\"offset\",\"label\":{\"text\":{\"zh_CN\":\"位置偏移量\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"出现位置的偏移量\"},\"labelPosition\":\"left\"},{\"property\":\"open-delay\",\"label\":{\"text\":{\"zh_CN\":\"显示延迟\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"触发方式为 hover 时的显示延迟,单位为毫秒\"},\"labelPosition\":\"left\"},{\"property\":\"popper-options\",\"label\":{\"text\":{\"zh_CN\":\"弹出层参数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"popper.js 的参数\"},\"labelPosition\":\"top\"},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"提示内容标题\"},\"labelPosition\":\"left\"},{\"property\":\"transform-origin\",\"label\":{\"text\":{\"zh_CN\":\"旋转中心点\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"组件的旋转中心点,组件的旋转中心点\"},\"labelPosition\":\"left\"},{\"property\":\"transition\",\"label\":{\"text\":{\"zh_CN\":\"渐变动画\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"该属性的默认值为 fade-in-linear\"},\"labelPosition\":\"left\"},{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"宽度\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"手动控制是否可见的状态值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"boolean\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的可见状态值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":true,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"visible\",\"width\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (49, '3.20.0', '{\"zh_CN\":\"日期选择\"}', 'TinyDatePicker', 'datepick', '用于输入或选择日期', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"DatePicker\"}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"日期选择\"},\"icon\":\"datepick\",\"screenshot\":\"\",\"snippetName\":\"TinyDatePicker\",\"schema\":{\"componentName\":\"TinyDatePicker\",\"props\":{\"placeholder\":\"请输入\",\"modelValue\":\"\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"日期\",\"value\":\"date\"},{\"label\":\"日期时间\",\"value\":\"datetime\"},{\"label\":\"周\",\"value\":\"week\"},{\"label\":\"月份\",\"value\":\"month\"},{\"label\":\"年份\",\"value\":\"year\"}]}},\"description\":{\"zh_CN\":\"设置日期框的type属性\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"readonly\",\"label\":{\"text\":{\"zh_CN\":\"只读\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否只读\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"日期框尺寸。该属性的可选值为 medium / small / mini\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"maxlength\",\"label\":{\"text\":{\"zh_CN\":\"输入最大长度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置 input 框的maxLength\"}},{\"property\":\"autofocus\",\"label\":{\"text\":{\"zh_CN\":\"聚焦\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自动获取焦点\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框改变后的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (50, '3.20.0', '{\"zh_CN\":\"数字输入框\"}', 'TinyNumeric', 'numeric', '通过鼠标或键盘输入字符', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Numeric\"}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"数字输入框\"},\"icon\":\"numeric\",\"screenshot\":\"\",\"snippetName\":\"TinyNumeric\",\"schema\":{\"componentName\":\"TinyNumeric\",\"props\":{\"allow-empty\":true,\"placeholder\":\"请输入\",\"controlsPosition\":\"right\",\"step\":1}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"allow-empty\",\"label\":{\"text\":{\"zh_CN\":\"内容可清空\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否内容可清空\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"输入框尺寸。该属性的可选值为 medium / small / mini\"},\"labelPosition\":\"left\"},{\"property\":\"controls\",\"label\":{\"text\":{\"zh_CN\":\"加减按钮\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否使用加减按钮\"},\"labelPosition\":\"left\"},{\"property\":\"controls-position\",\"label\":{\"text\":{\"zh_CN\":\"加减按钮位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"左右两侧\",\"value\":\"\"},{\"label\":\"只在右侧\",\"value\":\"right\"}]}},\"description\":{\"zh_CN\":\"加减按钮位置\"}},{\"property\":\"precision\",\"label\":{\"text\":{\"zh_CN\":\"精度\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"数值精度\"},\"labelPosition\":\"left\"},{\"property\":\"step\",\"label\":{\"text\":{\"zh_CN\":\"步长\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"步长\"},\"labelPosition\":\"left\"},{\"property\":\"max\",\"label\":{\"text\":{\"zh_CN\":\"最大数值\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"可输入的最大数值\"},\"labelPosition\":\"left\"},{\"property\":\"min\",\"label\":{\"text\":{\"zh_CN\":\"最小数值\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"可输入的最大数值\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框改变后的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` VALUES (1, '2.4.2', '{\"zh_CN\":\"输入框\"}', 'ElInput', 'input', '通过鼠标或键盘输入字符', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElInput\",\"destructuring\":true}', '表单组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"输入框\"},\"icon\":\"input\",\"screenshot\":\"\",\"snippetName\":\"ElInput\",\"schema\":{}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"description\":{\"zh_CN\":\"绑定值\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"description\":{\"zh_CN\":\"类型\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"maxlength\",\"label\":{\"text\":{\"zh_CN\":\"最大长度\"}},\"description\":{\"zh_CN\":\"最大输入长度\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"number\",\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"是否禁用\"}},\"description\":{\"zh_CN\":\"是否禁用\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定值改变时触发\"},\"description\":{\"zh_CN\":\"双向绑定值改变时触发\"}},\"onBlur\":{\"label\":{\"zh_CN\":\"输入框失去焦点时触发\"},\"description\":{\"zh_CN\":\"输入框失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{\"prefix\":{\"label\":{\"zh_CN\":\"头部内容\"},\"description\":{\"zh_CN\":\"输入框头部内容,只对非 type=\'textarea\' 有效\"}},\"suffix\":{\"label\":{\"zh_CN\":\"尾部内容\"},\"description\":{\"zh_CN\":\"输入框尾部内容,只对非 type=\'textarea\' 有效\"}},\"prepend\":{\"label\":{\"zh_CN\":\"前置内容\"},\"description\":{\"zh_CN\":\"输入框前置内容,只对非 type=\'textarea\' 有效\"}},\"append\":{\"label\":{\"zh_CN\":\"后置内容\"},\"description\":{\"zh_CN\":\"输入框后置内容,只对非 type=\'textarea\' 有效\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"type\",\"size\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEvent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (2, '2.4.2', '{\"zh_CN\":\"日期选择器\"}', 'ElDatePicker', 'datepick', '日期选择器', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElDatePicker\",\"destructuring\":true}', '表单组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"日期选择器\"},\"icon\":\"datepick\",\"screenshot\":\"\",\"snippetName\":\"ElDatePicker\",\"schema\":{}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"description\":{\"zh_CN\":\"绑定值\"},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"readonly\",\"label\":{\"text\":{\"zh_CN\":\"只读\"}},\"description\":{\"zh_CN\":\"是否只读\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"defaultValue\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"description\":{\"zh_CN\":\"是否禁用\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"defaultValue\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"输入框尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"allowClear\":true,\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"editable\",\"label\":{\"text\":{\"zh_CN\":\"是否可编辑\"}},\"description\":{\"zh_CN\":\"文本框是否可编辑\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"defaultValue\":true,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"是否可清除\"}},\"description\":{\"zh_CN\":\"是否显示清楚按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"defaultValue\":true,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"description\":{\"zh_CN\":\"非范围选择时的占位内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":\"\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"start-placeholder\",\"label\":{\"text\":{\"zh_CN\":\"起始占位文本\"}},\"description\":{\"zh_CN\":\"范围选择时开始日期的占位内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":\"\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"end-placeholder\",\"label\":{\"text\":{\"zh_CN\":\"结束占位文本\"}},\"description\":{\"zh_CN\":\"范围选择时结束日期的占位内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":\"\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"description\":{\"zh_CN\":\"显示类型\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":\"date\",\"type\":\"string\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"year\",\"value\":\"year\"},{\"label\":\"years\",\"value\":\"years\"},{\"label\":\"month\",\"value\":\"month\"},{\"label\":\"months\",\"value\":\"months\"},{\"label\":\"date\",\"value\":\"date\"},{\"label\":\"dates\",\"value\":\"dates\"},{\"label\":\"datetime\",\"value\":\"datetime\"},{\"label\":\"week\",\"value\":\"week\"},{\"label\":\"datetimerange\",\"value\":\"datetimerange\"},{\"label\":\"daterange\",\"value\":\"daterange\"},{\"label\":\"monthrange\",\"value\":\"monthrange\"},{\"label\":\"yearrange\",\"value\":\"yearrange\"}]}},\"device\":[]},{\"property\":\"popper-class\",\"label\":{\"text\":{\"zh_CN\":\"下拉框类名\"}},\"description\":{\"zh_CN\":\"DatePicker 下拉框的类名\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":\"\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定值改变时触发\"},\"description\":{\"zh_CN\":\"双向绑定值改变时触发\"}},\"onChange\":{\"label\":{\"zh_CN\":\"用户确认选定的值时触发\"},\"description\":{\"zh_CN\":\"用户确认选定的值时触发\"},\"type\":\"event\",\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"在组件 Input 失去焦点时触发\"},\"description\":{\"zh_CN\":\"在组件 Input 失去焦点时触发\"},\"type\":\"event\",\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"在组件 Input 获得焦点时触发\"},\"description\":{\"zh_CN\":\"在组件 Input 获得焦点时触发\"},\"type\":\"event\",\"defaultValue\":\"\"},\"onCalendarChange\":{\"label\":{\"zh_CN\":\"在日历所选日期更改时触发\"},\"description\":{\"zh_CN\":\"在日历所选日期更改时触发\"},\"type\":\"event\",\"defaultValue\":\"\"},\"onPanelChange\":{\"label\":{\"zh_CN\":\"当日期面板改变时触发。\"},\"description\":{\"zh_CN\":\"当日期面板改变时触发。\"},\"type\":\"event\",\"defaultValue\":\"\"},\"onVisibleChange\":{\"label\":{\"zh_CN\":\"当 DatePicker 的下拉列表出现/消失时触发\"},\"description\":{\"zh_CN\":\"当 DatePicker 的下拉列表出现/消失时触发\"},\"type\":\"event\",\"defaultValue\":\"\"}},\"slots\":{\"default\":{\"label\":{\"zh_CN\":\"自定义单元格内容\"},\"description\":{\"zh_CN\":\"自定义单元格内容\"}},\"range-separator\":{\"label\":{\"zh_CN\":\"自定义范围分割符内容\"},\"description\":{\"zh_CN\":\"自定义范围分割符内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"type\",\"size\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEvent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (3, '2.4.2', '{\"zh_CN\":\"按钮\"}', 'ElButton', 'button', '常用的操作按钮', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElButton\",\"destructuring\":true}', '基础组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"按钮\"},\"icon\":\"button\",\"screenshot\":\"\",\"snippetName\":\"ElButton\",\"schema\":{\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"按钮文本\"}}]}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"description\":{\"zh_CN\":\"类型\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"plain\",\"label\":{\"text\":{\"zh_CN\":\"朴素按钮\"}},\"description\":{\"zh_CN\":\"是否为朴素按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文字按钮\"}},\"description\":{\"zh_CN\":\"是否为文字按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"bg\",\"label\":{\"text\":{\"zh_CN\":\"背景颜色\"}},\"description\":{\"zh_CN\":\"是否显示文字按钮背景颜色\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"link\",\"label\":{\"text\":{\"zh_CN\":\"链接按钮\"}},\"description\":{\"zh_CN\":\"是否为链接按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"round\",\"label\":{\"text\":{\"zh_CN\":\"圆角按钮\"}},\"description\":{\"zh_CN\":\"是否为圆角按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"circle\",\"label\":{\"text\":{\"zh_CN\":\"圆形按钮\"}},\"description\":{\"zh_CN\":\"是否为圆形按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"loading\",\"label\":{\"text\":{\"zh_CN\":\"加载中状态\"}},\"description\":{\"zh_CN\":\"是否为加载中状态\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"description\":{\"zh_CN\":\"是否禁用\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{},\"slots\":{\"default\":{\"label\":{\"zh_CN\":\"default\"},\"description\":{\"zh_CN\":\"自定义默认内容\"}},\"loading\":{\"label\":{\"zh_CN\":\"loading\"},\"description\":{\"zh_CN\":\"自定义加载中组件\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"type\",\"size\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEvent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (4, '2.4.2', '{\"zh_CN\":\"表单\"}', 'ElForm', 'form', '表单包含 输入框, 单选框, 下拉选择, 多选框 等用户输入的组件。 使用表单,您可以收集、验证和提交数据。', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElForm\",\"destructuring\":true}', '表单组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"表单\"},\"icon\":\"form\",\"screenshot\":\"\",\"snippetName\":\"ElForm\",\"schema\":{\"children\":[{\"componentName\":\"ElFormItem\",\"props\":{\"label\":\"账号\",\"prop\":\"account\"},\"children\":[{\"componentName\":\"ElInput\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请输入账号\"}}]},{\"componentName\":\"ElFormItem\",\"props\":{\"label\":\"密码\",\"prop\":\"password\"},\"children\":[{\"componentName\":\"ElInput\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请输入密码\",\"type\":\"password\"}}]},{\"componentName\":\"ElFormItem\",\"props\":{},\"children\":[{\"componentName\":\"ElButton\",\"props\":{\"type\":\"primary\",\"style\":\"margin-right: 10px\"},\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"提交\"}}]},{\"componentName\":\"ElButton\",\"props\":{\"type\":\"primary\"},\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"重置\"}}]}]}]}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"model\",\"label\":{\"text\":{\"zh_CN\":\"数据对象\"}},\"description\":{\"zh_CN\":\"表单数据对象\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"rules\",\"label\":{\"text\":{\"zh_CN\":\"验证规则\"}},\"description\":{\"zh_CN\":\"表单验证规则\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"inline\",\"label\":{\"text\":{\"zh_CN\":\"行内模式\"}},\"description\":{\"zh_CN\":\"行内表单模式\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"label-position\",\"label\":{\"text\":{\"zh_CN\":\"标签位置\"}},\"description\":{\"zh_CN\":\"表单域标签的位置, 当设置为 left 或 right 时,则也需要设置标签宽度属性\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"right\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"top\",\"value\":\"top\"}]}}},{\"property\":\"label-width\",\"label\":{\"text\":{\"zh_CN\":\"标签宽度\"}},\"description\":{\"zh_CN\":\"标签的长度,例如 \'50px\'。 作为 Form 直接子元素的 form-item 会继承该值。 可以使用 auto。\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"label-suffix\",\"label\":{\"text\":{\"zh_CN\":\"标签后缀\"}},\"description\":{\"zh_CN\":\"表单域标签的后缀\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"hide-required-asterisk\",\"label\":{\"text\":{\"zh_CN\":\"隐藏必填星号\"}},\"description\":{\"zh_CN\":\"是否隐藏必填字段标签旁边的红色星号\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"require-asterisk-position\",\"label\":{\"text\":{\"zh_CN\":\"星号位置\"}},\"description\":{\"zh_CN\":\"星号的位置\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"left\",\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"show-message\",\"label\":{\"text\":{\"zh_CN\":\"显示校验信息\"}},\"description\":{\"zh_CN\":\"是否显示校验错误信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"inline-message\",\"label\":{\"text\":{\"zh_CN\":\"行内显示校验信息\"}},\"description\":{\"zh_CN\":\"是否以行内形式展示校验信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"status-icon\",\"label\":{\"text\":{\"zh_CN\":\"显示校验结果图标\"}},\"description\":{\"zh_CN\":\"是否在输入框中显示校验结果反馈图标\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"validate-on-rule-change\",\"label\":{\"text\":{\"zh_CN\":\"触发验证\"}},\"description\":{\"zh_CN\":\"是否在 rules 属性改变后立即触发一次验证\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"用于控制该表单内组件的尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"description\":{\"zh_CN\":\"是否禁用该表单内的所有组件。 如果设置为 true, 它将覆盖内部组件的 disabled 属性\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"scroll-to-error\",\"label\":{\"text\":{\"zh_CN\":\"滚动到错误项\"}},\"description\":{\"zh_CN\":\"当校验失败时,滚动到第一个错误表单项\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onValidate\":{\"label\":{\"zh_CN\":\"任一表单项被校验后触发\"},\"description\":{\"zh_CN\":\"任一表单项被校验后触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":[\"ElFormItem\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEvent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (5, '2.4.2', '{\"zh_CN\":\"表单子项\"}', 'ElFormItem', 'formItem', '表单包含 输入框, 单选框, 下拉选择, 多选框 等用户输入的组件。 使用表单,您可以收集、验证和提交数据。', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElFormItem\",\"destructuring\":true}', '表单组件', 'element-plus', NULL, NULL, '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"prop\",\"label\":{\"text\":{\"zh_CN\":\"键名\"}},\"description\":{\"zh_CN\":\"model 的键名。 它可以是一个属性的值(如 a.b.0 或 [a\', \'b\', \'0\'])。 在定义了 validate、resetFields 的方法时,该属性是必填的\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"label\",\"label\":{\"text\":{\"zh_CN\":\"标签文本\"}},\"description\":{\"zh_CN\":\"标签文本\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"label-width\",\"label\":{\"text\":{\"zh_CN\":\"标签宽度\"}},\"description\":{\"zh_CN\":\"标签宽度,例如 \'50px\'。 可以使用 auto\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"required\",\"label\":{\"text\":{\"zh_CN\":\"必填项\"}},\"description\":{\"zh_CN\":\"是否为必填项,如不设置,则会根据校验规则确认\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"rules\",\"label\":{\"text\":{\"zh_CN\":\"验证规则\"}},\"description\":{\"zh_CN\":\"表单验证规则, 更多内容可以参考async-validator\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"error\",\"label\":{\"text\":{\"zh_CN\":\"错误信息\"}},\"description\":{\"zh_CN\":\"表单域验证错误时的提示信息。设置该值会导致表单验证状态变为 error,并显示该错误信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"show-message\",\"label\":{\"text\":{\"zh_CN\":\"显示错误信息\"}},\"description\":{\"zh_CN\":\"是否显示校验错误信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"inline-message\",\"label\":{\"text\":{\"zh_CN\":\"行内显示错误信息\"}},\"description\":{\"zh_CN\":\"是否在行内显示校验信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"用于控制该表单内组件的尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"for\",\"label\":{\"text\":{\"zh_CN\":\"for\"}},\"description\":{\"zh_CN\":\"和原生标签相同能力\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"validate-status\",\"label\":{\"text\":{\"zh_CN\":\"校验状态\"}},\"description\":{\"zh_CN\":\"formItem 校验的状态\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"error\",\"value\":\"error\"},{\"label\":\"validating\",\"value\":\"validating\"},{\"label\":\"success\",\"value\":\"success\"}]}}}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{},\"slots\":{\"label\":{\"label\":{\"zh_CN\":\"label\"},\"description\":{\"zh_CN\":\"标签位置显示的内容\"}},\"error\":{\"label\":{\"zh_CN\":\"error\"},\"description\":{\"zh_CN\":\"验证错误信息的显示内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEvent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (6, '2.4.2', '{\"zh_CN\":\"表单\"}', 'ElTable', 'table', '用于展示多条结构类似的数据, 可对数据进行排序、筛选、对比或其他自定义操作', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElTable\",\"destructuring\":true}', '数据展示', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"表格\"},\"icon\":\"grid\",\"screenshot\":\"\",\"snippetName\":\"ElTable\",\"schema\":{\"props\":{\"data\":[{\"date\":\"2016-05-03\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"},{\"date\":\"2016-05-02\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"},{\"date\":\"2016-05-04\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"},{\"date\":\"2016-05-01\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"}],\"columns\":[{\"type\":\"index\"},{\"label\":\"Date\",\"prop\":\"date\"},{\"label\":\"Name\",\"prop\":\"name\"},{\"label\":\"Address\",\"prop\":\"address\"}]}}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"数据\"}},\"description\":{\"zh_CN\":\"显示的数据\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"columns\",\"label\":{\"text\":{\"zh_CN\":\"表格列配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"properties\":[{\"label\":{\"zh_CN\":\"默认分组\"},\"content\":[{\"property\":\"type\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"type\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列的类型。 如果设置了selection则显示多选框; 如果设置了 index 则显示该行的索引(从 1 开始计算); 如果设置了 expand 则显示为一个可展开的按钮\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"selection\",\"value\":\"selection\"},{\"label\":\"index\",\"value\":\"index\"},{\"label\":\"expand\",\"value\":\"expand\"}]}}},{\"property\":\"index\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"index\"}},\"description\":{\"text\":{\"zh_CN\":\"如果设置了 type=index,可以通过传递 index 属性来自定义索引\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"label\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"label\"}},\"description\":{\"text\":{\"zh_CN\":\"显示的标题\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"column-key\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"column-key\"}},\"description\":{\"text\":{\"zh_CN\":\"column 的 key, column 的 key, 如果需要使用 filter-change 事件,则需要此属性标识是哪个 column 的筛选条件\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"prop\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"prop\"}},\"description\":{\"text\":{\"zh_CN\":\"字段名称 对应列内容的字段名, 也可以使用 property属性\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"width\",\"type\":\"number\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"width\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列的宽度\"}},\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}}},{\"property\":\"min-width\",\"type\":\"number\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"min-width\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列的最小宽度, 对应列的最小宽度, 与 width 的区别是 width 是固定的,min-width 会把剩余宽度按比例分配给设置了 min-width 的列\"}},\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}}},{\"property\":\"fixed\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"fixed\"}},\"description\":{\"text\":{\"zh_CN\":\"列是否固定在左侧或者右侧。 true 表示固定在左侧\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"sortable\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"sortable\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列是否可以排序\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"sort-method\",\"type\":\"function\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"sort-method\"}},\"description\":{\"text\":{\"zh_CN\":\"指定数据按照哪个属性进行排序,仅当sortable设置为true的时候有效。 应该如同 Array.sort 那样返回一个 Number\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"sort-by\",\"type\":\"array\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"sort-by\"}},\"description\":{\"text\":{\"zh_CN\":\"指定数据按照哪个属性进行排序,仅当 sortable 设置为 true 且没有设置 sort-method 的时候有效。 如果 sort-by 为数组,则先按照第 1 个属性排序,如果第 1 个相等,再按照第 2 个排序,以此类推\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"sort-orders\",\"type\":\"array\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"sort-orders\"}},\"description\":{\"text\":{\"zh_CN\":\"数据在排序时所使用排序策略的轮转顺序,仅当 sortable 为 true 时有效。 需传入一个数组,随着用户点击表头,该列依次按照数组中元素的顺序进行排序\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"resizable\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"resizable\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列是否可以通过拖动改变宽度(需要在 el-table 上设置 border 属性为真)\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"formatter\",\"type\":\"function\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"formatter\"}},\"description\":{\"text\":{\"zh_CN\":\"用来格式化内容\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"dataType\":\"JSFunction\"}}},{\"property\":\"show-overflow-tooltip\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"show-overflow-tooltip\"}},\"description\":{\"text\":{\"zh_CN\":\"当内容过长被隐藏时显示 tooltip\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"align\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"align\"}},\"description\":{\"text\":{\"zh_CN\":\"对齐方式\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"center\",\"value\":\"center\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"header-align\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"header-align\"}},\"description\":{\"text\":{\"zh_CN\":\"表头对齐方式, 若不设置该项,则使用表格的对齐方式\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"center\",\"value\":\"center\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"class-name\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"class-name\"}},\"description\":{\"text\":{\"zh_CN\":\"列的 className\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"label-class-name\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"label-class-name\"}},\"description\":{\"text\":{\"zh_CN\":\"当前列标题的自定义类名\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"selectable\",\"type\":\"function\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"selectable\"}},\"description\":{\"text\":{\"zh_CN\":\"仅对 type=selection 的列有效,类型为 Function,Function 的返回值用来决定这一行的 CheckBox 是否可以勾选\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"reserve-selection\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"reserve-selection\"}},\"description\":{\"text\":{\"zh_CN\":\"数据刷新后是否保留选项,仅对 type=selection 的列有效, 请注意, 需指定 row-key 来让这个功能生效。\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"filters\",\"type\":\"array\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filters\"}},\"description\":{\"text\":{\"zh_CN\":\"数据刷新后是否保留选项,仅对 type=selection 的列有效, 请注意, 需指定 row-key 来让这个功能生效。\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"filter-placement\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"filter-placement\"}},\"description\":{\"text\":{\"zh_CN\":\"过滤弹出框的定位\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"filter-multiple\",\"type\":\"string\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filter-multiple\"}},\"description\":{\"text\":{\"zh_CN\":\"数据过滤的选项是否多选\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"filter-method\",\"type\":\"function\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filter-method\"}},\"description\":{\"text\":{\"zh_CN\":\"数据过滤使用的方法, 如果是多选的筛选项,对每一条数据会执行多次,任意一次返回 true 就会显示\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"filtered-value\",\"type\":\"array\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filtered-value\"}},\"description\":{\"text\":{\"zh_CN\":\"选中的数据过滤项,如果需要自定义表头过滤的渲染方式,可能会需要此属性\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}}]}],\"widget\":{\"component\":\"TableColumnsConfigurator\",\"props\":{\"type\":\"object\",\"textField\":\"label\",\"language\":\"json\",\"buttonText\":\"编辑列配置\",\"title\":\"编辑列配置\",\"expand\":true}},\"description\":{\"zh_CN\":\"表格列的配置信息\"},\"labelPosition\":\"top\"},{\"property\":\"max-height\",\"label\":{\"text\":{\"zh_CN\":\"最大高度\"}},\"description\":{\"zh_CN\":\"Table 的最大高度。\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"number\",\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"height\",\"label\":{\"text\":{\"zh_CN\":\"表格高度\"}},\"description\":{\"zh_CN\":\"Table 的高度, 默认为自动高度。 这个高度会设置为 Table 的 style.height 的值,Table 的高度会受控于外部样式。\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"stripe\",\"label\":{\"text\":{\"zh_CN\":\"斑马纹\"}},\"description\":{\"zh_CN\":\"是否为斑马纹 table\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"纵向边框\"}},\"description\":{\"zh_CN\":\"是否带有纵向边框\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"表格尺寸\"}},\"description\":{\"zh_CN\":\"Table 的尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"fit\",\"label\":{\"text\":{\"zh_CN\":\"列宽自撑开\"}},\"description\":{\"zh_CN\":\"列的宽度是否自撑开\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"show-header\",\"label\":{\"text\":{\"zh_CN\":\"显示表头\"}},\"description\":{\"zh_CN\":\"是否显示表头\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"highlight-current-row\",\"label\":{\"text\":{\"zh_CN\":\"高亮当前行\"}},\"description\":{\"zh_CN\":\"是否要高亮当前行\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"current-row-key\",\"label\":{\"text\":{\"zh_CN\":\"当前行的 key\"}},\"description\":{\"zh_CN\":\"当前行的 key,只写属性\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"row-class-name\",\"label\":{\"text\":{\"zh_CN\":\"行的类名\"}},\"description\":{\"zh_CN\":\"行的 className\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"row-key\",\"label\":{\"text\":{\"zh_CN\":\"行数据的 Key\"}},\"description\":{\"zh_CN\":\"行数据的 Key,用来优化 Table 的渲染; 在使用reserve-selection功能与显示树形数据时,该属性是必填的。 类型为 String 时,支持多层访问:user.info.id,但不支持 user.info[0].id,此种情况请使用 Function\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"empty-text\",\"label\":{\"text\":{\"zh_CN\":\"空数据文本\"}},\"description\":{\"zh_CN\":\"空数据时显示的文本内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"table-layout\",\"label\":{\"text\":{\"zh_CN\":\"表格布局方式\"}},\"description\":{\"zh_CN\":\"设置表格单元、行和列的布局方式\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"defaultValue\":\"fixed\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"fixed\",\"value\":\"fixed\"},{\"label\":\"auto\",\"value\":\"auto\"}]}},\"device\":[]},{\"property\":\"scrollbar-always-on\",\"label\":{\"text\":{\"zh_CN\":\"显示滚动条\"}},\"description\":{\"zh_CN\":\"总是显示滚动条\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"flexible\",\"label\":{\"text\":{\"zh_CN\":\"主轴最小尺寸\"}},\"description\":{\"zh_CN\":\"确保主轴的最小尺寸,以便不超过内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onSelect\":{\"label\":{\"zh_CN\":\"勾选数据行的 Checkbox 时触发\"},\"description\":{\"zh_CN\":\"当用户手动勾选数据行的 Checkbox 时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"selection\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项\"}},{\"name\":\"row\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前行\"}}],\"returns\":{}}},\"onSelectAll\":{\"label\":{\"zh_CN\":\"勾选全选时触发\"},\"description\":{\"zh_CN\":\"当用户手动勾选全选 Checkbox 时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"selection\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项\"}}],\"returns\":{}}},\"onSelectionChange\":{\"label\":{\"zh_CN\":\"选择项发生变化时会触发\"},\"description\":{\"zh_CN\":\"当选择项发生变化时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"selection\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项\"}}],\"returns\":{}}},\"onCellMouseEnter\":{\"label\":{\"zh_CN\":\"单元格 hover 时会触发\"},\"description\":{\"zh_CN\":\"当单元格 hover 进入时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"row\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前行\"}},{\"name\":\"column\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前列\"}},{\"name\":\"cell\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前单元格\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生事件 event\"}}],\"returns\":{}}},\"onCellMouseLeave\":{\"label\":{\"zh_CN\":\"单元格 hover 退出时会触发\"},\"description\":{\"zh_CN\":\"当单元格 hover 退出时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"row\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前行\"}},{\"name\":\"column\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前列\"}},{\"name\":\"cell\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前单元格\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生事件 event\"}}],\"returns\":{}}}},\"slots\":{\"empty\":{\"label\":{\"zh_CN\":\"empty\"},\"description\":{\"zh_CN\":\"当数据为空时自定义的内容\"}},\"append\":{\"label\":{\"zh_CN\":\"append\"},\"description\":{\"zh_CN\":\"插入至表格最后一行之后的内容, 如果需要对表格的内容进行无限滚动操作,可能需要用到这个 slot。 若表格有合计行,该 slot 会位于合计行之上。\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":[\"ElTableColumn\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEvent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (7, '2.4.2', '{\"zh_CN\":\"表单\"}', 'ElTableColumn', 'table', '用于展示多条结构类似的数据, 可对数据进行排序、筛选、对比或其他自定义操作', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElTableColumn\",\"destructuring\":true}', '表单组件', 'element-plus', NULL, NULL, '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[],\"description\":{\"zh_CN\":\"\"}}],\"events\":{},\"slots\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEvent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (8, '3.20.0', '{\"zh_CN\":\"走马灯子项\"}', 'TinyCarouselItem', 'carouselitem', '常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CarouselItem\",\"destructuring\":true}', 'component', '容器组件', 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"名称\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"幻灯片的名字,可用作 setActiveItem 的参数\"},\"labelPosition\":\"left\"},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"幻灯片的标题\"},\"labelPosition\":\"left\"},{\"property\":\"indicator-position\",\"label\":{\"text\":{\"zh_CN\":\"指示器位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"outside\",\"value\":\"outside\"},{\"label\":\"none\",\"value\":\"none\"}]}},\"description\":{\"zh_CN\":\"指示器的位置\"},\"labelPosition\":\"left\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (9, '3.20.0', '{\"zh_CN\":\"走马灯\"}', 'TinyCarousel', 'carousel', '常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Carousel\",\"destructuring\":true}', 'component', '容器组件', 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"arrow\",\"label\":{\"text\":{\"zh_CN\":\"箭头显示时机\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"总是显示\",\"value\":\"always\"},{\"label\":\"鼠标悬停时显示\",\"value\":\"hover\"},{\"label\":\"从不显示\",\"value\":\"never\"}]}},\"description\":{\"zh_CN\":\"切换箭头的显示时机\"}},{\"property\":\"autoplay\",\"label\":{\"text\":{\"zh_CN\":\"自动切换\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否自动切换\"},\"labelPosition\":\"left\"},{\"property\":\"tabs\",\"label\":{\"text\":{\"zh_CN\":\"选项卡\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"\",\"cols\":12,\"bindState\":false,\"widget\":{\"component\":\"ContainerConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"tabs 选项卡\"},\"labelPosition\":\"none\"},{\"property\":\"height\",\"label\":{\"text\":{\"zh_CN\":\"高度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"走马灯的高度\"}},{\"property\":\"indicator-position\",\"label\":{\"text\":{\"zh_CN\":\"位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"走马灯外部\",\"value\":\"outside\"},{\"label\":\"不显示\",\"value\":\"none\"}]}},\"description\":{\"zh_CN\":\"指示器的位置\"}},{\"property\":\"initial-index\",\"label\":{\"text\":{\"zh_CN\":\"初始索引\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"初始状态激活的幻灯片的索引,从 0 开始 \"}},{\"property\":\"interval\",\"label\":{\"text\":{\"zh_CN\":\"自动切换间隔\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自动切换的时间间隔,单位为毫秒\"}},{\"property\":\"loop\",\"label\":{\"text\":{\"zh_CN\":\"循环显示\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否循环显示\"},\"labelPosition\":\"left\"},{\"property\":\"show-title\",\"label\":{\"text\":{\"zh_CN\":\"显示标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示标题\"},\"labelPosition\":\"left\"},{\"property\":\"trigger\",\"label\":{\"text\":{\"zh_CN\":\"触发方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"点击\",\"value\":\"click\"},{\"label\":\"悬停\",\"value\":\"hover\"}]}},\"description\":{\"zh_CN\":\"指示器的触发方式,默认为 hover\"}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"水平\",\"value\":\"horizontal\"},{\"label\":\"垂直\",\"value\":\"vertical\"},{\"label\":\"卡片\",\"value\":\"card\"}]}},\"description\":{\"zh_CN\":\"走马灯的类型\"}}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"clickCapture\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyCarouselItem\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (10, '1.0.0', '{\"zh_CN\":\"提示框\"}', 'a', 'link', '链接', '', '', '', '', 'proCode', '{}', 'component', 'basic', 7, '[{\"name\":{\"zh_CN\":\"链接\"},\"icon\":\"link\",\"screenshot\":\"\",\"snippetName\":\"a\",\"schema\":{\"componentName\":\"a\",\"children\":\"链接\"}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"children\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlTextConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"类型\"},\"labelPosition\":\"none\"},{\"property\":\"href\",\"label\":{\"text\":{\"zh_CN\":\"链接\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"指定链接的 URL\"},\"labelPosition\":\"left\"},{\"property\":\"target\",\"label\":{\"text\":{\"zh_CN\":\"打开方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"当前页面\",\"value\":\"_self\"},{\"label\":\"打开新页面\",\"value\":\"_blank\"}]}},\"description\":{\"zh_CN\":\"指定链接的打开方式,例如在当前窗口中打开或在新窗口中打开。\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}]}', '{\"loop\":true,\"condition\":true,\"slots\":[],\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[]},\"contextMenu\":{\"actions\":[],\"disable\":[]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (11, '1.0.0', '{\"zh_CN\":\"标题\"}', '[h1, h2, h3, h4, h5, h6]', 'h16', '标题', '', '', '', '', 'proCode', '{}', 'component', 'html', 20, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"children\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlTextConfigurator\",\"props\":{\"showRadioButton\":true}},\"description\":{\"zh_CN\":\"\"},\"labelPosition\":\"none\"},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"\"},\"labelPosition\":\"none\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (12, '1.0.0', '{\"zh_CN\":\"段落\"}', 'p', 'paragraph', '段落', '', '', '', '', 'proCode', '{}', 'component', 'html', 30, '[{\"name\":{\"zh_CN\":\"段落\"},\"icon\":\"paragraph\",\"screenshot\":\"\",\"snippetName\":\"p\",\"schema\":{\"componentName\":\"p\",\"children\":\"TinyEngine 前端可视化设计器致力于通过友好的用户交互提升业务应用的开发效率。\"}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"children\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlTextConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"类型\"},\"labelPosition\":\"none\"},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[]},\"contextMenu\":{\"actions\":[],\"disable\":[]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (13, '1.0.0', '{\"zh_CN\":\"输入框\"}', 'input', 'input', '输入框', '', '', '', '', 'proCode', '{}', 'component', 'html', 40, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"checkbox\",\"value\":\"checkbox\"},{\"label\":\"color\",\"value\":\"color\"},{\"label\":\"date\",\"value\":\"date\"},{\"label\":\"button\",\"value\":\"button\"},{\"label\":\"email\",\"value\":\"email\"},{\"label\":\"file\",\"value\":\"file\"},{\"label\":\"hidden\",\"value\":\"hidden\"},{\"label\":\"image\",\"value\":\"image\"},{\"label\":\"month\",\"value\":\"month\"},{\"label\":\"number\",\"value\":\"number\"},{\"label\":\"password\",\"value\":\"password\"},{\"label\":\"radio\",\"value\":\"radio\"},{\"label\":\"range\",\"value\":\"range\"},{\"label\":\"reset\",\"value\":\"reset\"},{\"label\":\"search\",\"value\":\"search\"},{\"label\":\"submit\",\"value\":\"submit\"},{\"label\":\"text\",\"value\":\"text\"},{\"label\":\"time\",\"value\":\"time\"},{\"label\":\"week\",\"value\":\"week\"},{\"label\":\"url\",\"value\":\"url\"}]}},\"description\":{\"zh_CN\":\"类型\"}},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位符\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"占位符\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onChange\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (14, '1.0.0', '{\"zh_CN\":\"视频\"}', 'video', 'video', '视频', '', '', '', '', 'proCode', '{}', 'component', 'html', 50, '[{\"name\":{\"zh_CN\":\"视频\"},\"icon\":\"video\",\"screenshot\":\"\",\"snippetName\":\"video\",\"schema\":{\"componentName\":\"video\",\"props\":{\"src\":\"https://tinyengine-assets.obs.myhuaweicloud.com/files/in-action.mp4#t=1.5\",\"width\":\"200\",\"height\":\"100\",\"style\":\"border:1px solid #ccc\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"src\",\"label\":{\"text\":{\"zh_CN\":\"资源\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"视频的 URL\"}},{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"播放器宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"视频播放器的宽度\"}},{\"property\":\"height\",\"label\":{\"text\":{\"zh_CN\":\"播放器高度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"视频播放器的高度\"}},{\"property\":\"controls\",\"label\":{\"text\":{\"zh_CN\":\"显示控件\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示控件\"},\"labelPosition\":\"left\"},{\"property\":\"autoplay\",\"label\":{\"text\":{\"zh_CN\":\"马上播放\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否马上播放\"},\"labelPosition\":\"left\"},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[]},\"contextMenu\":{\"actions\":[],\"disable\":[]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (15, '1.0.0', '{\"zh_CN\":\"Img\"}', 'Img', 'Image', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 60, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"src\",\"type\":\"string\",\"defaultValue\":\"\",\"bindState\":true,\"label\":{\"text\":{\"zh_CN\":\"资源\"}},\"cols\":12,\"rules\":[],\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"src路径\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{},\"shortcuts\":{\"properties\":[\"src\"]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (16, '1.0.0', '{\"zh_CN\":\"Button\"}', 'button', 'button', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 70, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', '{\"isContainer\":true}', 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (17, '1.0.0', '{\"zh_CN\":\"表格\"}', 'table', 'table', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 80, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格的宽度\"}},{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"边框宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格边框的宽度\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (18, '1.0.0', '{\"zh_CN\":\"表格单元格\"}', 'td', 'td', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 90, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"colspan\",\"label\":{\"text\":{\"zh_CN\":\"合并列\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单元格可横跨的列数\"}},{\"property\":\"rowspan\",\"label\":{\"text\":{\"zh_CN\":\"合并行\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单元格可横跨的行数\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (19, '1.0.0', '{\"zh_CN\":\"表单\"}', 'form', 'form', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 100, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"名称\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单的名称\"}},{\"property\":\"action\",\"label\":{\"text\":{\"zh_CN\":\"提交地址\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"提交表单时向何处发送表单数据\"}},{\"property\":\"method\",\"label\":{\"text\":{\"zh_CN\":\"HTTP方法\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"get\",\"value\":\"get\"},{\"label\":\"post\",\"value\":\"post\"}]}},\"description\":{\"zh_CN\":\"用于发送 form-data 的 HTTP 方法\"}}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', '{\"isContainer\":true}', 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (20, '1.0.0', '{\"zh_CN\":\"表单标签\"}', 'label', 'label', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 110, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"for\",\"label\":{\"text\":{\"zh_CN\":\"label绑定表单元素\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"label 绑定到哪个表单元素\"}},{\"property\":\"form\",\"label\":{\"text\":{\"zh_CN\":\"label字段所属表单\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"label 字段所属的一个或多个表单\"}}]}],\"events\":{},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (21, '3.20.0', '{\"zh_CN\":\"按钮组\"}', 'TinyButtonGroup', 'buttonGroup', '以按钮组的方式出现,常用于多项类似操作', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"ButtonGroup\",\"destructuring\":true}', 'component', 'general', 2, '[{\"name\":{\"zh_CN\":\"互斥按钮组\"},\"icon\":\"MutexButtons\",\"screenshot\":\"\",\"snippetName\":\"TinyButtonGroup\",\"schema\":{\"componentName\":\"TinyButtonGroup\",\"props\":{\"data\":[{\"text\":\"Button1\",\"value\":\"1\"},{\"text\":\"Button2\",\"value\":\"2\"},{\"text\":\"Button3\",\"value\":\"3\"}],\"modelValue\":\"1\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"配置按钮组数据\"}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"大小\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"mini\",\"value\":\"mini\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"medium\",\"value\":\"medium\"}]}},\"description\":{\"zh_CN\":\"组件大小\"},\"labelPosition\":\"left\"},{\"property\":\"plain\",\"label\":{\"text\":{\"zh_CN\":\"朴素按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否是朴素按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (22, '3.20.0', '{\"zh_CN\":\"row\"}', 'TinyRow', 'row', '定义 Layout 的行配置信息', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Row\",\"destructuring\":true}', 'component', NULL, 5, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"layout\",\"label\":{\"text\":{\"zh_CN\":\"布局\"}},\"cols\":12,\"widget\":{\"component\":\"LayoutGridConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"选择布局方式\"},\"labelPosition\":\"none\"},{\"property\":\"align\",\"label\":{\"text\":{\"zh_CN\":\"子项对齐方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"top\",\"value\":\"top\"},{\"label\":\"middle\",\"value\":\"middle\"},{\"label\":\"bottom\",\"value\":\"bottom\"}]}},\"description\":{\"zh_CN\":\"子项的副轴对齐方向,可取值:top, middle, bottom\"}},{\"property\":\"flex\",\"label\":{\"text\":{\"zh_CN\":\"flex容器\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否为flex容器\"},\"labelPosition\":\"left\"},{\"property\":\"gutter\",\"label\":{\"text\":{\"zh_CN\":\"子项间隔\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"子项的间隔的像素\"}}]}]}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (23, '3.20.0', '{\"zh_CN\":\"row\"}', 'TinyLayout', 'row', '定义 Layout 的行配置信息', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Layout\",\"version\":\"3.20.0\",\"destructuring\":true}', 'component', 'layout', 5, '[{\"name\":{\"zh_CN\":\"栅格布局\"},\"icon\":\"row\",\"screenshot\":\"\",\"snippetName\":\"TinyLayout\",\"schema\":{\"componentName\":\"TinyLayout\",\"props\":{},\"children\":[{\"componentName\":\"TinyRow\",\"props\":{\"style\":\"padding: 10px;\"},\"children\":[{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}}]},{\"componentName\":\"TinyRow\",\"props\":{\"style\":\"padding: 10px;\"},\"children\":[{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"cols\",\"label\":{\"text\":{\"zh_CN\":\"总栅格数\"}},\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"12\",\"value\":12},{\"label\":\"24\",\"value\":24}]}},\"description\":{\"zh_CN\":\"选择总栅格数\"},\"labelPosition\":\"none\"},{\"property\":\"tag\",\"label\":{\"text\":{\"zh_CN\":\"layout渲染的标签\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"定义Layout元素渲染后的标签,默认为 div\"}}]}]}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyRow\",\"TinyCol\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (24, '3.20.0', '{\"zh_CN\":\"表单\"}', 'TinyForm', 'form', '由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Form\",\"destructuring\":true}', 'component', NULL, 5, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"label-width\",\"label\":{\"text\":{\"zh_CN\":\"标签宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单中标签占位宽度,默认为 80px\"},\"labelPosition\":\"left\"},{\"property\":\"inline\",\"label\":{\"text\":{\"zh_CN\":\"行内布局\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"行内布局模式,默认为 false\"},\"labelPosition\":\"left\"},{\"property\":\"label-align\",\"label\":{\"text\":{\"zh_CN\":\"必填标识占位\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"必填标识 * 是否占位\"},\"labelPosition\":\"left\"},{\"property\":\"label-suffix\",\"label\":{\"text\":{\"zh_CN\":\"标签后缀\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单中标签后缀\"},\"labelPosition\":\"left\"},{\"property\":\"label-position\",\"label\":{\"text\":{\"zh_CN\":\"标签位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"left \",\"value\":\"left \"},{\"label\":\"top\",\"value\":\"top\"}]}},\"description\":{\"zh_CN\":\"表单中标签的布局位置\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"校验属性\"},\"content\":[{\"property\":\"model\",\"label\":{\"text\":{\"zh_CN\":\"数据对象\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单数据对象\"},\"labelPosition\":\"top\"},{\"property\":\"rules\",\"label\":{\"text\":{\"zh_CN\":\"校验规则\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单验证规则\"},\"labelPosition\":\"top\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onValidate\":{\"label\":{\"zh_CN\":\"表单项被校验后触发\"},\"description\":{\"zh_CN\":\"表单项被校验后触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"function\",\"type\":\"Function\",\"defaultValue\":\"(valid) => {}\",\"description\":{\"zh_CN\":\"校验回调函数\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (25, '3.20.0', '{\"zh_CN\":\"表单项\"}', 'TinyFormItem', 'formitem', '由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"FormItem\",\"destructuring\":true}', 'component', NULL, 12, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"label\",\"label\":{\"text\":{\"zh_CN\":\"标签文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"标签\",\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标签文本\"},\"labelPosition\":\"left\"},{\"property\":\"prop\",\"label\":{\"text\":{\"zh_CN\":\"校验字段\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单域 model 字段,在使用 validate、resetFields 方法的情况下,该属性是必填的\"},\"labelPosition\":\"left\"},{\"property\":\"required\",\"label\":{\"text\":{\"zh_CN\":\"必填\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否必填\"},\"labelPosition\":\"left\"}]}],\"events\":{},\"slots\":{\"label\":{\"label\":{\"zh_CN\":\"字段名\"},\"description\":{\"zh_CN\":\"自定义显示字段名称\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":[\"TinyForm\"],\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label\",\"rules\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (26, '3.20.0', '{\"zh_CN\":\"col\"}', 'TinyCol', 'col', '列配置信息', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Col\",\"destructuring\":true}', 'component', NULL, 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"span\",\"label\":{\"text\":{\"zh_CN\":\"栅格列格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"整行\",\"value\":12},{\"label\":\"6格\",\"value\":6},{\"label\":\"4格\",\"value\":4},{\"label\":\"3格\",\"value\":3},{\"label\":\"1格\",\"value\":1}]}},\"description\":{\"zh_CN\":\"当一行分为12格时,一列可占位多少格\"}},{\"property\":\"move\",\"label\":{\"text\":{\"zh_CN\":\"栅格移动格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":-12,\"max\":12}},\"description\":{\"zh_CN\":\"栅格左右移动格数(正数向右,负数向左)\"}},{\"property\":\"no\",\"label\":{\"text\":{\"zh_CN\":\"排序编号\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"max\":12}},\"description\":{\"zh_CN\":\"排序编号(row中启用order生效)\"}},{\"property\":\"offset\",\"label\":{\"text\":{\"zh_CN\":\"间隔格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":0,\"max\":12}},\"description\":{\"zh_CN\":\"栅格左侧的间隔格数\"}},{\"property\":\"xs\",\"label\":{\"text\":{\"zh_CN\":\"超小屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"<768px 响应式栅格数\"}},{\"property\":\"sm\",\"label\":{\"text\":{\"zh_CN\":\"小屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥768px 响应式栅格数\"}},{\"property\":\"md\",\"label\":{\"text\":{\"zh_CN\":\"中屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥992px 响应式栅格数\"}},{\"property\":\"lg\",\"label\":{\"text\":{\"zh_CN\":\"大屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥1200px 响应式栅格数\"}},{\"property\":\"xl\",\"label\":{\"text\":{\"zh_CN\":\"超大屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥1920px 响应式栅格数\"}}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label\",\"rules\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (27, '3.20.0', '{\"zh_CN\":\"按钮\"}', 'TinyButton', 'button', '常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮、下拉按钮等类型', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Button\",\"destructuring\":true}', 'component', 'basic', 2, '[{\"name\":{\"zh_CN\":\"按钮\"},\"icon\":\"button\",\"screenshot\":\"\",\"snippetName\":\"TinyButton\",\"schema\":{\"componentName\":\"TinyButton\",\"props\":{\"text\":\"按钮文案\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"text\",\"type\":\"string\",\"defaultValue\":\"按钮文案\",\"label\":{\"text\":{\"zh_CN\":\"按钮文字\"}},\"cols\":12,\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"按钮文字\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"type\":\"select\",\"label\":{\"text\":{\"zh_CN\":\"大小\"}},\"cols\":12,\"rules\":[],\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"按钮大小\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否被禁用\"},\"labelPosition\":\"left\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"primary\",\"value\":\"primary\"},{\"label\":\"success\",\"value\":\"success\"},{\"label\":\"info\",\"value\":\"info\"},{\"label\":\"warning\",\"value\":\"warning\"},{\"label\":\"danger\",\"value\":\"danger\"},{\"label\":\"text\",\"value\":\"text\"}]}},\"description\":{\"zh_CN\":\"设置不同的主题样式\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"round\",\"label\":{\"text\":{\"zh_CN\":\"圆角\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否圆角按钮\"},\"labelPosition\":\"left\"},{\"property\":\"plain\",\"label\":{\"text\":{\"zh_CN\":\"朴素按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否为朴素按钮\"},\"labelPosition\":\"left\"},{\"property\":\"reset-time\",\"label\":{\"text\":{\"zh_CN\":\"禁用时间\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置禁用时间,防止重复提交,单位毫秒\"},\"labelPosition\":\"left\"},{\"property\":\"circle\",\"label\":{\"text\":{\"zh_CN\":\"圆形按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否圆形按钮\"},\"labelPosition\":\"left\"},{\"property\":\"autofocus\",\"label\":{\"text\":{\"zh_CN\":\"自动聚焦\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否默认聚焦\"},\"labelPosition\":\"left\"},{\"property\":\"loading\",\"label\":{\"text\":{\"zh_CN\":\"加载中样式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否展示位加载中样式\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击事件\"},\"description\":{\"zh_CN\":\"按钮被点击时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"text\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (28, '3.20.0', '{\"zh_CN\":\"输入框\"}', 'TinyInput', 'input', '通过鼠标或键盘输入字符', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Input\",\"destructuring\":true}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"输入框\"},\"icon\":\"input\",\"screenshot\":\"\",\"snippetName\":\"TinyInput\",\"schema\":{\"componentName\":\"TinyInput\",\"props\":{\"placeholder\":\"请输入\",\"modelValue\":\"\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"textarea\",\"value\":\"textarea\"},{\"label\":\"text\",\"value\":\"text\"},{\"label\":\"password\",\"value\":\"password\"}]}},\"description\":{\"zh_CN\":\"设置input框的type属性\"},\"labelPosition\":\"left\"},{\"property\":\"rows\",\"label\":{\"text\":{\"zh_CN\":\"行数\"}},\"widget\":{\"component\":\"NumberConfigurator\"},\"description\":{\"zh_CN\":\"输入框行数,只对 type=\'textarea\' 有效\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"输入框尺寸。该属性的可选值为 medium / small / mini\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"maxlength\",\"label\":{\"text\":{\"zh_CN\":\"最大输入长度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置 input 框的maxLength\"}},{\"property\":\"autofocus\",\"label\":{\"text\":{\"zh_CN\":\"自动聚焦\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自动获取焦点\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框改变后的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{\"prefix\":{\"label\":{\"zh_CN\":\"前置内容\"}},\"suffix\":{\"label\":{\"zh_CN\":\"后置内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (29, '3.20.0', '{\"zh_CN\":\"单选\"}', 'TinyRadio', 'radio', '用于配置不同场景的选项,在一组备选项中进行单选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Radio\",\"destructuring\":true}', 'component', 'form', 3, '[{\"name\":{\"zh_CN\":\"单选\"},\"icon\":\"radio\",\"screenshot\":\"\",\"snippetName\":\"TinyRadio\",\"schema\":{\"componentName\":\"TinyRadio\",\"props\":{\"label\":\"1\",\"text\":\"单选文本\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文本内容\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单选框文本内容\"}},{\"property\":\"label\",\"label\":{\"text\":{\"zh_CN\":\"选中值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"props\":{}},\"description\":{\"zh_CN\":\"radio 选中时的值\"}},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"}]},{\"label\":{\"zh_CN\":\"其他\"},\"description\":{\"zh_CN\":\"\"},\"content\":[{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"显示边框\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示边框\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单选框的尺寸,仅在 border 为true时有效\"}},{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"原生name属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生 name 属性\"}}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值变化事件\"},\"description\":{\"zh_CN\":\"绑定值变化时触发的事件\"}},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"visible\",\"width\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (30, '3.20.0', '{\"zh_CN\":\"下拉框\"}', 'TinySelect', 'select', 'Select 选择器是一种通过点击弹出下拉列表展示数据并进行选择的 UI 组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Select\",\"destructuring\":true}', 'component', 'form', 8, '[{\"name\":{\"zh_CN\":\"下拉框\"},\"icon\":\"select\",\"screenshot\":\"\",\"snippetName\":\"TinySelect\",\"schema\":{\"componentName\":\"TinySelect\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请选择\",\"options\":[{\"value\":\"1\",\"label\":\"黄金糕\"},{\"value\":\"2\",\"label\":\"双皮奶\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"searchable\",\"label\":{\"text\":{\"zh_CN\":\"下拉可搜索\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"下拉面板是否可搜索\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"options\",\"label\":{\"text\":{\"zh_CN\":\"选项数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"配置 Select 下拉数据项\"},\"labelPosition\":\"top\"},{\"property\":\"multiple\",\"label\":{\"text\":{\"zh_CN\":\"多选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否允许输入框输入或选择多个项\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"multiple-limit\",\"label\":{\"text\":{\"zh_CN\":\"最大可选值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"多选时用户最多可以选择的项目数,为 0 则不限制\"},\"labelPosition\":\"left\"},{\"property\":\"popper-class\",\"label\":{\"text\":{\"zh_CN\":\"下拉框类名\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置下拉框自定义的类名\"},\"labelPosition\":\"left\"},{\"property\":\"collapse-tags\",\"label\":{\"text\":{\"zh_CN\":\"多选展示\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"多选时是否将选中值按文字的形式展示\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在下拉框值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"下拉框选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onRemoveTag\":{\"label\":{\"zh_CN\":\"多选模式下移除tag时触发\"},\"description\":{\"zh_CN\":\"多选模式下移除tag时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"被移除Tag对应数据项的值字段\"}}],\"returns\":{}},\"defaultValue\":\"\"}},\"onBeforeMount\":\"console.log(\'table on load\'); this.options = source.data\"}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"multiple\",\"options\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (31, '3.20.0', '{\"zh_CN\":\"开关\"}', 'TinySwitch', 'switch', 'Switch 在两种状态间切换选择', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Switch\",\"destructuring\":true}', 'component', 'form', 9, '[{\"name\":{\"zh_CN\":\"开关\"},\"icon\":\"switch\",\"screenshot\":\"\",\"snippetName\":\"TinySwitch\",\"schema\":{\"componentName\":\"TinySwitch\",\"props\":{\"modelValue\":\"\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否被禁用\"},\"labelPosition\":\"left\"},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"绑定默认值\"},\"labelPosition\":\"left\"},{\"property\":\"true-value\",\"label\":{\"text\":{\"zh_CN\":\"设置打开值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置打开时的值(Boolean / String / Number)\"},\"labelPosition\":\"left\"},{\"property\":\"false-value\",\"label\":{\"text\":{\"zh_CN\":\"设置关闭值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置关闭时的值(Boolean / String / Number)\"},\"labelPosition\":\"left\"},{\"property\":\"mini\",\"label\":{\"text\":{\"zh_CN\":\"迷你尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示为 mini 模式\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"点击事件\"},\"description\":{\"zh_CN\":\"按钮被点击时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"开关的状态值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的开关状态值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"mini\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (32, '3.20.0', '{\"zh_CN\":\"搜索框\"}', 'TinySearch', 'search', '指定条件对象进行搜索数据', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Search\",\"destructuring\":true}', 'component', 'basic', 2, '[{\"name\":{\"zh_CN\":\"搜索框\"},\"icon\":\"search\",\"screenshot\":\"\",\"snippetName\":\"TinySearch\",\"schema\":{\"componentName\":\"TinySearch\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"输入关键词\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"默认值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框内的默认搜索值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否被禁用\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框内的提示占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清空按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置显示清空图标按钮\"},\"labelPosition\":\"left\"},{\"property\":\"isEnterSearch\",\"label\":{\"text\":{\"zh_CN\":\"Enter键触发\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否在按下键盘Enter键的时候触发search事件\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"mini\",\"label\":{\"text\":{\"zh_CN\":\"迷你尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"迷你模式,配置为true时,搜索默认显示为一个带图标的圆形按钮,点击后展开\"},\"labelPosition\":\"left\"},{\"property\":\"transparent\",\"label\":{\"text\":{\"zh_CN\":\"透明模式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"配置为true时,边框变为透明且收缩后半透明显示,一般用在带有背景的场景,默认 false\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"输入完成时触发\"},\"description\":{\"zh_CN\":\"在 input 框中输入完成时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"type\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"搜索类型,默认值为 {} \"}},{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前input框中值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onSearch\":{\"label\":{\"zh_CN\":\"点击搜索按钮时触发\"},\"description\":{\"zh_CN\":\"展开状态点击搜索按钮时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"type\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"搜索类型,默认值为 {} \"}},{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前input框中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"clearable\",\"mini\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (33, '3.20.0', '{\"zh_CN\":\"复选框\"}', 'TinyCheckbox', 'checkbox', '用于配置不同场景的选项,提供用户可在一组选项中进行多选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Checkbox\",\"destructuring\":true}', 'component', 'form', 4, '[{\"name\":{\"zh_CN\":\"复选框\"},\"icon\":\"checkbox\",\"screenshot\":\"\",\"snippetName\":\"TinyCheckbox\",\"schema\":{\"componentName\":\"TinyCheckbox\",\"props\":{\"text\":\"复选框文案\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"checked\",\"label\":{\"text\":{\"zh_CN\":\"勾选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当前是否勾选\"},\"labelPosition\":\"left\"},{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"复选框的文本\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"边框\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示边框\"},\"labelPosition\":\"left\"},{\"property\":\"false-label\",\"label\":{\"text\":{\"zh_CN\":\"未选中的值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"没有选中时的值\"},\"labelPosition\":\"left\"},{\"property\":\"true-label\",\"label\":{\"text\":{\"zh_CN\":\"选择时的值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"选中时的值\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"勾选值改变后将触发\"},\"description\":{\"zh_CN\":\"勾选值改变后将触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"border\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (34, '3.20.0', '{\"zh_CN\":\"复选按钮\"}', 'TinyCheckboxButton', 'checkboxbutton', '用于配置不同场景的选项,提供用户可在一组选项中进行多选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CheckboxButton\",\"destructuring\":true}', 'component', NULL, 1, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"checked\",\"label\":{\"text\":{\"zh_CN\":\"勾选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当前是否勾选\"},\"labelPosition\":\"left\"},{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"按钮文本\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"勾选值改变后将触发\"},\"description\":{\"zh_CN\":\"勾选值改变后将触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"array\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"text\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (35, '3.20.0', '{\"zh_CN\":\"复选按钮组\"}', 'TinyCheckboxGroup', 'checkboxgroup', '用于配置不同场景的选项,提供用户可在一组选项中进行多选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CheckboxGroup\",\"destructuring\":true}', 'component', 'form', 2, '[{\"name\":{\"zh_CN\":\"复选框组\"},\"icon\":\"checkboxs\",\"screenshot\":\"\",\"snippetName\":\"TinyCheckboxGroup\",\"schema\":{\"componentName\":\"TinyCheckboxGroup\",\"props\":{\"modelValue\":[\"name1\",\"name2\"],\"type\":\"checkbox\",\"options\":[{\"text\":\"复选框1\",\"label\":\"name1\"},{\"text\":\"复选框2\",\"label\":\"name2\"},{\"text\":\"复选框3\",\"label\":\"name3\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"dataType\":\"Array\"}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"options\",\"label\":{\"text\":{\"zh_CN\":\"选项列表\"}},\"defaultValue\":[{\"label\":\"标签2\"},{\"label\":\"标签2\"}],\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"checkbox组件列表\"},\"labelPosition\":\"top\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"button\",\"value\":\"button\"},{\"label\":\"checkbox\",\"value\":\"checkbox\"}]}},\"description\":{\"zh_CN\":\"checkbox组件类型(button/checkbox),该属性的默认值为 checkbox,配合 options 属性一起使用\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"勾选值改变后将触发\"},\"description\":{\"zh_CN\":\"勾选值改变后将触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"array\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"type\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (36, '3.20.0', '{\"zh_CN\":\"对话框\"}', 'TinyDialogBox', 'dialogbox', '模态对话框,在浮层中显示,引导用户进行相关操作。', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"DialogBox\",\"destructuring\":true}', 'component', 'data-display', 4, '[{\"name\":{\"zh_CN\":\"对话框\"},\"icon\":\"dialogbox\",\"screenshot\":\"\",\"snippetName\":\"TinyDialogBox\",\"schema\":{\"componentName\":\"TinyDialogBox\",\"props\":{\"visible\":true,\"show-close\":true,\"title\":\"dialogBox title\"},\"children\":[{\"componentName\":\"div\"}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"弹出框标题\"},\"labelPosition\":\"left\"},{\"property\":\"visible\",\"label\":{\"text\":{\"zh_CN\":\"显示与隐藏\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"控制弹出框显示与关闭\"},\"labelPosition\":\"left\"},{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"弹出框的宽度\"},\"labelPosition\":\"left\"},{\"property\":\"draggable\",\"label\":{\"text\":{\"zh_CN\":\"可拖拽\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否开启弹窗的拖拽功能,默认值为 false 。\"},\"labelPosition\":\"left\"},{\"property\":\"center\",\"label\":{\"text\":{\"zh_CN\":\"居中\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"弹出框的头部与底部内容会自动居中\"},\"labelPosition\":\"left\"},{\"property\":\"dialog-class\",\"label\":{\"text\":{\"zh_CN\":\"自定义类名\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自定义配置弹窗类名\"},\"labelPosition\":\"left\"},{\"property\":\"append-to-body\",\"label\":{\"text\":{\"zh_CN\":\"插入到Body\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"DialogBox 本身是否插入到 body 上,嵌套的 Dialog 必须指定该属性并赋值为 true\"},\"labelPosition\":\"left\"},{\"property\":\"show-close\",\"label\":{\"text\":{\"zh_CN\":\"关闭按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示关闭按钮,默认值为 true 。\"},\"labelPosition\":\"left\"}]}],\"selector\":\".TinyDialogBox\",\"events\":{\"onClose\":{\"label\":{\"zh_CN\":\"关闭弹窗时触发\"},\"description\":{\"zh_CN\":\"Dialog 关闭的回调\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:visible\":{\"label\":{\"zh_CN\":\"双向绑定的状态改变时触发\"},\"description\":{\"zh_CN\":\"显示或隐藏的状态值,发生改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"boolean\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的显示或隐藏的状态值\"}}],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{\"title\":{\"label\":{\"zh_CN\":\"标题区\"},\"description\":{\"zh_CN\":\"Dialog 标题区的内容\"}},\"footer\":{\"label\":{\"zh_CN\":\"按钮操作区\"},\"description\":{\"zh_CN\":\"Dialog 按钮操作区的内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":true,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\".tiny-dialog-box\",\"shortcuts\":{\"properties\":[\"visible\",\"width\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (37, '3.20.0', '{\"zh_CN\":\"标签页\"}', 'TinyTabs', 'tabs', '分隔内容上有关联但属于不同类别的数据集合', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Tabs\",\"destructuring\":true}', 'component', 'navigation', 10, '[{\"name\":{\"zh_CN\":\"标签页\"},\"icon\":\"tabs\",\"screenshot\":\"\",\"snippetName\":\"TinyTabs\",\"schema\":{\"componentName\":\"TinyTabs\",\"props\":{\"modelValue\":\"first\"},\"children\":[{\"componentName\":\"TinyTabItem\",\"props\":{\"title\":\"标签页1\",\"name\":\"first\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"style\":\"margin:10px 0 0 30px\"}}]},{\"componentName\":\"TinyTabItem\",\"props\":{\"title\":\"标签页2\",\"name\":\"second\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"style\":\"margin:10px 0 0 30px\"}}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"tabs\",\"label\":{\"text\":{\"zh_CN\":\"选项卡\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"\",\"cols\":12,\"bindState\":false,\"widget\":{\"component\":\"ContainerConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"tabs 选项卡\"},\"labelPosition\":\"none\"},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"绑定值,选中选项卡的 name\"},\"labelPosition\":\"left\"},{\"property\":\"with-add\",\"label\":{\"text\":{\"zh_CN\":\"标签新增\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标签是否可增加\"},\"labelPosition\":\"left\"},{\"property\":\"with-close\",\"label\":{\"text\":{\"zh_CN\":\"可关闭\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标签是否可关闭\"},\"labelPosition\":\"left\"},{\"property\":\"tab-style\",\"label\":{\"text\":{\"zh_CN\":\"标签页样式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"card\",\"value\":\"card\"},{\"label\":\"border-card\",\"value\":\"border-card\"}]}},\"description\":{\"zh_CN\":\"标签页样式\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击页签时触发事件\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"component\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前点击的页签对象\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onEdit\":{\"label\":{\"zh_CN\":\"点击新增按钮或关闭按钮或者编辑按钮后触发\"},\"description\":{\"zh_CN\":\"点击新增按钮或关闭按钮或者编辑按钮后触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"tab\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前操作的页签对象\"}},{\"name\":\"type\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前操作的类型(remove || add || edit)\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClose\":{\"label\":{\"zh_CN\":\"关闭页签时触发\"},\"description\":{\"zh_CN\":\"关闭页签时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"name\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"页签名称\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"clickCapture\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyTabItem\"],\"parentWhitelist\":[],\"descendantBlacklist\":[],\"ancestorWhitelist\":[]},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"size\",\"tab-style\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (38, '3.20.0', '{\"zh_CN\":\"tab页签\"}', 'TinyTabItem', 'tabitem', 'tab 标签页', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"TabItem\",\"destructuring\":true}', 'component', NULL, 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"唯一标识\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"唯一标识\"}},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标题\"}}]}],\"events\":{},\"slots\":{\"title\":{\"label\":{\"zh_CN\":\"标题\"},\"description\":{\"zh_CN\":\"自定义标题\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":[\"TinyTab\"],\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"name\",\"title\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (39, '3.20.0', '{\"zh_CN\":\"面包屑\"}', 'TinyBreadcrumb', 'breadcrumb', '告诉访问者他们目前在网站中的位置以及如何返回', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Breadcrumb\",\"destructuring\":true}', 'component', 'navigation', 1, '[{\"name\":{\"zh_CN\":\"面包屑\"},\"icon\":\"breadcrumb\",\"screenshot\":\"\",\"snippetName\":\"TinyBreadcrumb\",\"schema\":{\"componentName\":\"TinyBreadcrumb\",\"props\":{\"options\":[{\"to\":\"{ path: \'/\' }\",\"label\":\"首页\"},{\"to\":\"{ path: \'/breadcrumb\' }\",\"label\":\"产品\"},{\"replace\":\"true\",\"label\":\"软件\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"separator\",\"label\":{\"text\":{\"zh_CN\":\"分隔符\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自定义分隔符\"},\"labelPosition\":\"left\"},{\"property\":\"options\",\"label\":{\"text\":{\"zh_CN\":\"配置数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"单独使用 Breadcrumb,通过 option 配置生成面包屑\"},\"labelPosition\":\"top\"},{\"property\":\"textField\",\"label\":{\"text\":{\"zh_CN\":\"键值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"指定面包屑的显示键值,结合 options 使用\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onSelect\":{\"label\":{\"zh_CN\":\"选择 breadcrumb 时触发\"},\"description\":{\"zh_CN\":\"选择 breadcrumb 时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"clickCapture\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyBreadcrumbItem\"],\"parentWhitelist\":[],\"descendantBlacklist\":[],\"ancestorWhitelist\":[]},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"separator\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (40, '3.20.0', '{\"zh_CN\":\"面包屑项\"}', 'TinyBreadcrumbItem', 'breadcrumb', '', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"BreadcrumbItem\",\"destructuring\":true}', 'component', NULL, 1, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"to\",\"label\":{\"text\":{\"zh_CN\":\"路由跳转\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"路由跳转对象,同 vue-router 的 to\"}}]}],\"slots\":{\"default\":{\"label\":{\"zh_CN\":\"面包屑项标签\"},\"description\":{\"zh_CN\":\"面包屑项\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":[\"TinyBreadcrumb\"],\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"to\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (41, '3.20.0', '{\"zh_CN\":\"折叠面板\"}', 'TinyCollapse', 'collapse', '内容区可指定动态页面或自定义 html 等,支持展开收起操作', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Collapse\",\"destructuring\":true}', 'component', 'data-display', 3, '[{\"name\":{\"zh_CN\":\"折叠面板\"},\"icon\":\"collapse\",\"screenshot\":\"\",\"snippetName\":\"TinyCollapse\",\"schema\":{\"componentName\":\"TinyCollapse\",\"props\":{\"modelValue\":\"collapse1\"},\"children\":[{\"componentName\":\"TinyCollapseItem\",\"props\":{\"name\":\"collapse1\",\"title\":\"折叠项1\"},\"children\":[{\"componentName\":\"div\"}]},{\"componentName\":\"TinyCollapseItem\",\"props\":{\"name\":\"collapse2\",\"title\":\"折叠项2\"},\"children\":[{\"componentName\":\"div\"}]},{\"componentName\":\"TinyCollapseItem\",\"props\":{\"name\":\"collapse3\",\"title\":\"折叠项3\"},\"children\":[{\"componentName\":\"div\"}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"当前激活面板\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定当前激活的面板\"}}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"激活面板改变时触发\"},\"description\":{\"zh_CN\":\"当前激活面板改变时触发(如果是手风琴模式,参数 activeNames 类型为string,否则为array)\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"data\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前激活面板的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前激活面板的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (42, '3.20.0', '{\"zh_CN\":\"折叠面板项\"}', 'TinyCollapseItem', 'collapseitem', '内容区可指定动态页面或自定义 html 等,支持展开收起操作', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CollapseItem\",\"destructuring\":true}', 'component', NULL, 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"唯一标识符\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"唯一标识符: String | Number\"},\"labelPosition\":\"left\"},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"面板标题\"},\"labelPosition\":\"left\"}]}],\"events\":{},\"slots\":{\"title\":{\"label\":{\"zh_CN\":\"标题\"},\"description\":{\"zh_CN\":\"自定义标题\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (43, '3.20.0', '{\"zh_CN\":\"表格\"}', 'TinyGrid', 'grid', '提供了非常强大数据表格功能,可以展示数据列表,可以对数据列表进行选择、编辑等', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Grid\",\"destructuring\":true}', 'component', 'table', 2, '[{\"name\":{\"zh_CN\":\"表格\"},\"icon\":\"grid\",\"screenshot\":\"\",\"snippetName\":\"tinyGrid\",\"schema\":{\"componentName\":\"TinyGrid\",\"props\":{\"editConfig\":{\"trigger\":\"click\",\"mode\":\"cell\",\"showStatus\":true},\"columns\":[{\"type\":\"index\",\"width\":60},{\"type\":\"selection\",\"width\":60},{\"field\":\"employees\",\"title\":\"员工数\"},{\"field\":\"created_date\",\"title\":\"创建日期\"},{\"field\":\"city\",\"title\":\"城市\"}],\"data\":[{\"id\":\"1\",\"name\":\"GFD科技有限公司\",\"city\":\"福州\",\"employees\":800,\"created_date\":\"2014-04-30 00:56:00\",\"boole\":false},{\"id\":\"2\",\"name\":\"WWW科技有限公司\",\"city\":\"深圳\",\"employees\":300,\"created_date\":\"2016-07-08 12:36:22\",\"boole\":true}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础属性\"},\"description\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"表格数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"onChange\":\"this.delProp(\'fetchData\')\",\"description\":{\"zh_CN\":\"设置表格的数据\"},\"labelPosition\":\"top\"},{\"property\":\"columns\",\"label\":{\"text\":{\"zh_CN\":\"表格列\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"properties\":[{\"label\":{\"zh_CN\":\"默认分组\"},\"content\":[{\"property\":\"title\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"列标题\"}},\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}}},{\"property\":\"field\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"列键值\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"sortable\",\"type\":\"boolean\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"是否排序\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"labelPosition\":\"left\"},{\"property\":\"width\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"列宽\"}},\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}}},{\"property\":\"formatText\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"内置渲染器\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"整数\",\"value\":\"integer\"},{\"label\":\"小数\",\"value\":\"number\"},{\"label\":\"金额\",\"value\":\"money\"},{\"label\":\"百分比\",\"value\":\"rate\"},{\"label\":\"布尔\",\"value\":\"boole\"},{\"label\":\"年月日\",\"value\":\"date\"},{\"label\":\"年月日时分\",\"value\":\"dateTime\"},{\"label\":\"时间\",\"value\":\"time\"},{\"label\":\"省略\",\"value\":\"ellipsis\"}]}}},{\"property\":\"renderer\",\"type\":\"object\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"渲染函数\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"dataType\":\"JSFunction\"}}},{\"property\":\"slots\",\"type\":\"object\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"插槽\"}},\"labelPosition\":\"none\",\"widget\":{\"component\":\"JsSlotConfigurator\",\"props\":{\"slots\":[\"header\",\"default\"]}}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"列类型\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"索引列\",\"value\":\"index\"},{\"label\":\"单选列\",\"value\":\"radio\"},{\"label\":\"多选列\",\"value\":\"selection\"},{\"label\":\"展开列\",\"value\":\"expand\"}],\"clearable\":true}},\"description\":{\"zh_CN\":\"设置内置列的类型,该属性的可选值为 index(序号)/ selection(复选框)/ radio(单选框)/ expand(展开行)\"},\"labelPosition\":\"left\"},{\"property\":\"editor\",\"label\":{\"text\":{\"zh_CN\":\"编辑配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"单元格编辑渲染配置项,也可以是函数 Function(h, params)\"}},{\"property\":\"filter\",\"label\":{\"text\":{\"zh_CN\":\"筛选配置\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"设置表格列的筛选配置信息。默认值为 false 不配置筛选信息\"}},{\"property\":\"showOverflow\",\"label\":{\"text\":{\"zh_CN\":\"内容超出部分省略号配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"只显示省略号\",\"value\":\"ellipsis\"},{\"label\":\"显示为原生 title\",\"value\":\"title\"},{\"label\":\"显示为 tooltip 提示\",\"value\":\"tooltip\"}],\"clearable\":true}},\"description\":{\"zh_CN\":\"设置内置列的内容超出部分显示省略号配置,该属性的可选值为 ellipsis(只显示省略号)/ title(显示为原生 title)/ tooltip(显示为 tooltip 提示)\"},\"labelPosition\":\"top\"}]}],\"widget\":{\"component\":\"ArrayItemConfigurator\",\"props\":{\"type\":\"object\",\"textField\":\"title\",\"language\":\"json\",\"buttonText\":\"编辑列配置\",\"title\":\"编辑列配置\",\"expand\":true}},\"description\":{\"zh_CN\":\"表格列的配置信息\"},\"labelPosition\":\"left\"},{\"property\":\"fetchData\",\"label\":{\"text\":{\"zh_CN\":\"服务端查询\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"onChange\":\"function () { this.delProp(\'data\') } \",\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"name\":\"fetchData\",\"dataType\":\"JSExpression\"}},\"description\":{\"zh_CN\":\"服务端数据查询方法\"},\"labelPosition\":\"top\"},{\"property\":\"pager\",\"label\":{\"text\":{\"zh_CN\":\"分页配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"defaultValue\":{\"attrs\":{\"currentPage\":1}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"name\":\"pager\",\"dataType\":\"JSExpression\"}},\"description\":{\"zh_CN\":\"分页配置,需结合fetchData使用\"},\"labelPosition\":\"top\"},{\"property\":\"resizable\",\"label\":{\"text\":{\"zh_CN\":\"调整列宽\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否允许调整列宽\"},\"labelPosition\":\"left\"},{\"property\":\"row-id\",\"label\":{\"text\":{\"zh_CN\":\"行数据主键\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"placeholder\":\"比如:id\"}},\"description\":{\"zh_CN\":\"自定义行数据唯一主键的字段名(行数据必须要有唯一主键,默认自动生成)\"},\"labelPosition\":\"left\"},{\"property\":\"select-config\",\"label\":{\"text\":{\"zh_CN\":\"行复选框配置\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"dataType\":\"JSExpression\"}},\"description\":{\"zh_CN\":\"表格行数据复选框配置项\"}},{\"property\":\"edit-rules\",\"label\":{\"text\":{\"zh_CN\":\"校验规则\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格校验规则配置项\"},\"labelPosition\":\"top\"},{\"property\":\"edit-config\",\"label\":{\"text\":{\"zh_CN\":\"编辑配置项\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格编辑配置项\"},\"labelPosition\":\"top\"},{\"property\":\"expand-config\",\"label\":{\"text\":{\"zh_CN\":\"展开行配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"展开行配置项\"},\"labelPosition\":\"top\"},{\"property\":\"sortable\",\"label\":{\"text\":{\"zh_CN\":\"可排序\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否允许列数据排序。默认为 true 可排序\"},\"labelPosition\":\"left\"}]},{\"label\":{\"zh_CN\":\"其他\"},\"description\":{\"zh_CN\":\"其他属性\"},\"content\":[{\"property\":\"auto-resize\",\"label\":{\"text\":{\"zh_CN\":\"响应式监听\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格属性设置 autoResize 属性开启响应式表格宽高的同时,将高度height设置为auto就可以自动跟随父容器高度。\"},\"labelPosition\":\"left\"},{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"边框\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否带有纵向边框\"},\"labelPosition\":\"left\"},{\"property\":\"seq-serial\",\"label\":{\"text\":{\"zh_CN\":\"行号连续\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置行序号是否连续,开启分页时有效,该属性的默认值为 false\"},\"labelPosition\":\"left\"},{\"property\":\"highlight-current-row\",\"label\":{\"text\":{\"zh_CN\":\"高亮当前行\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"高亮当前行\"},\"labelPosition\":\"left\"},{\"property\":\"highlight-hover-row\",\"label\":{\"text\":{\"zh_CN\":\"移入行高亮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"鼠标移到行是否要高亮显示\"},\"labelPosition\":\"left\"},{\"property\":\"row-class-name\",\"label\":{\"text\":{\"zh_CN\":\"设置行高亮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"给行附加 className,也可以是函数 Function({seq, row, rowIndex, $rowIndex})\"},\"labelPosition\":\"top\"},{\"property\":\"max-height\",\"label\":{\"text\":{\"zh_CN\":\"内容最大高度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置表格内容区域(不含表格头部,底部)的最大高度。\"}},{\"property\":\"row-span\",\"label\":{\"text\":{\"zh_CN\":\"行合并\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置行合并,该属性仅适用于普通表格,不可与 tree-config 同时使用\"},\"labelPosition\":\"top\"}]}],\"events\":{\"onFilterChange\":{\"label\":{\"zh_CN\":\"筛选条件改变时触发改事件\"},\"description\":{\"zh_CN\":\"配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"{$table,filters} 包含 table 实例对象和过滤条件的对象\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onSortChange\":{\"label\":{\"zh_CN\":\"点击列头,执行数据排序前触发的事件\"},\"description\":{\"zh_CN\":\"配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"{$table,filters} 包含 table 实例对象和过滤条件的对象\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onSelectAll\":{\"label\":{\"zh_CN\":\"当手动勾选全选时触发的事件\"},\"description\":{\"zh_CN\":\"只对 type=selection 有效,当手动勾选全选时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" 包含 table 实例对象\"}},{\"name\":\"checked\",\"type\":\"boolean\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"勾选状态\"}},{\"name\":\"selction\",\"type\":\"Array\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中的表格数据数组\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onSelectChange\":{\"label\":{\"zh_CN\":\"手动勾选并且值发生改变时触发的事件\"},\"description\":{\"zh_CN\":\"只对 type=selection 有效,当手动勾选并且值发生改变时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" table 实例对象\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" 原生 Event\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onToggleExpandChange\":{\"label\":{\"zh_CN\":\"当行展开或收起时会触发该事件\"},\"description\":{\"zh_CN\":\"当行展开或收起时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"{$table,row,rowIndex} 包含 table 实例对象和当前行数据的对象\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" 原生 Event\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onCurrentChange\":{\"label\":{\"zh_CN\":\"行点击时触发\"},\"description\":{\"zh_CN\":\"行点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[\"sortable\",\"columns\"]},\"contentMenu\":{\"actions\":[\"create symbol\"]},\"onBeforeMount\":\"console.log(\'table on load\'); this.pager = source.pager; this.fetchData = source.fetchData; this.data = source.data ;this.columns = source.columns\"}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"sortable\",\"columns\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (44, '3.20.0', '{\"zh_CN\":\"表格行\"}', 'TinyGridColumn', 'grid', '提供了非常强大数据表格功能,可以展示数据列表,可以对数据列表进行选择、编辑等', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"TinyGridColumn\",\"destructuring\":true}', 'component', NULL, 2, NULL, '{\"properties\":[],\"events\":{},\"shortcuts\":{},\"contentMenu\":{\"actions\":[\"create symbol\"]}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (45, '3.20.0', '{\"zh_CN\":\"分页\"}', 'TinyPager', 'pager', '当数据量过多时,使用分页分解数据,常用于 Grid 和 Repeater 组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Pager\",\"destructuring\":true}', 'component', 'table', 1, '[{\"name\":{\"zh_CN\":\"分页\"},\"icon\":\"pager\",\"screenshot\":\"\",\"snippetName\":\"TinyPager\",\"schema\":{\"componentName\":\"TinyPager\",\"props\":{\"layout\":\"total, sizes, prev, pager, next\",\"total\":100,\"pageSize\":10,\"currentPage\":1}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"currentPage\",\"label\":{\"text\":{\"zh_CN\":\"当前页数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当前页数,支持 .sync 修饰符\"},\"labelPosition\":\"left\"},{\"property\":\"pageSize\",\"label\":{\"text\":{\"zh_CN\":\"每页条数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"每页显示条目个数\"},\"labelPosition\":\"left\"},{\"property\":\"pageSizes\",\"label\":{\"text\":{\"zh_CN\":\"可选每页条数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置可选择的每页显示条数\"}},{\"property\":\"total\",\"label\":{\"text\":{\"zh_CN\":\"总条数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"数据总条数\"},\"labelPosition\":\"left\"},{\"property\":\"layout\",\"label\":{\"text\":{\"zh_CN\":\"布局\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"defaultValue\":\"total,sizes,prev, pager, next\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"type\":\"textarea\"}},\"description\":{\"zh_CN\":\"组件布局,子组件名用逗号分隔\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onCurrentChange \":{\"label\":{\"zh_CN\":\"切换页码时触发\"},\"description\":{\"zh_CN\":\"切换页码时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onPrevClick \":{\"label\":{\"zh_CN\":\"点击上一页按钮时触发\"},\"description\":{\"zh_CN\":\"点击上一页按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"page\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页的页码值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onNextClick\":{\"label\":{\"zh_CN\":\"点击下一页按钮时触发\"},\"description\":{\"zh_CN\":\"点击上一页按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"page\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页的页码值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"currentPage\",\"total\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (46, '3.20.0', '{\"zh_CN\":\"弹出编辑\"}', 'TinyPopeditor', 'popEditor', '该组件只能在弹出的面板中选择数据,不能手动输入数据;弹出面板中显示为 Tree 组件或者 Grid 组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Popeditor\",\"destructuring\":true}', 'component', 'data-display', 6, '[{\"name\":{\"zh_CN\":\"弹出编辑\"},\"icon\":\"popeditor\",\"screenshot\":\"\",\"snippetName\":\"TinyPopeditor\",\"schema\":{\"componentName\":\"TinyPopeditor\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请选择\",\"grid-op\":{\"columns\":[{\"field\":\"id\",\"title\":\"ID\",\"width\":40},{\"field\":\"name\",\"title\":\"名称\",\"showOverflow\":\"tooltip\"},{\"field\":\"province\",\"title\":\"省份\",\"width\":80},{\"field\":\"city\",\"title\":\"城市\",\"width\":80}],\"data\":[{\"id\":\"1\",\"name\":\"GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司\",\"city\":\"福州\",\"province\":\"福建\"},{\"id\":\"2\",\"name\":\"WWW科技有限公司\",\"city\":\"深圳\",\"province\":\"广东\"},{\"id\":\"3\",\"name\":\"RFV有限责任公司\",\"city\":\"中山\",\"province\":\"广东\"},{\"id\":\"4\",\"name\":\"TGB科技有限公司\",\"city\":\"龙岩\",\"province\":\"福建\"},{\"id\":\"5\",\"name\":\"YHN科技有限公司\",\"city\":\"韶关\",\"province\":\"广东\"},{\"id\":\"6\",\"name\":\"WSX科技有限公司\",\"city\":\"黄冈\",\"province\":\"武汉\"}]}}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"show-clear-btn\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"auto-lookup\",\"label\":{\"text\":{\"zh_CN\":\"自动请求数据\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"defaultValue\":true,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"初始化时是否自动请求数据,默认 true\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出面板的宽度(单位像素)\"},\"labelPosition\":\"left\"},{\"property\":\"conditions\",\"label\":{\"text\":{\"zh_CN\":\"过滤条件\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当弹出面板配置的是表格时,设置弹出面板中的过滤条件\"},\"labelPosition\":\"top\"},{\"property\":\"grid-op\",\"label\":{\"text\":{\"zh_CN\":\"面板表格配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出面板中表格组件的配置信息\"}},{\"property\":\"pager-op\",\"label\":{\"text\":{\"zh_CN\":\"分页配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出编辑框中分页配置\"},\"labelPosition\":\"top\"},{\"property\":\"multi\",\"label\":{\"text\":{\"zh_CN\":\"多选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出面板中的数据是否可多选\"},\"labelPosition\":\"left\"},{\"property\":\"show-pager\",\"label\":{\"text\":{\"zh_CN\":\"启用分页\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当 popseletor 为 grid 时才能生效,配置为 true 后还需配置 pagerOp 属性\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"选中值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项的值\"}},{\"name\":\"value\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中对象\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClose\":{\"label\":{\"zh_CN\":\"弹框关闭时触发的事件\"},\"description\":{\"zh_CN\":\"弹框关闭时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onPageChange\":{\"label\":{\"zh_CN\":\"分页切换事件\"},\"description\":{\"zh_CN\":\"表格模式下分页切换事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页码数\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"modelValue\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (47, '3.20.0', '{\"zh_CN\":\"树\"}', 'TinyTree', 'tree', '可进行展示有父子层级的数据,支持选择,异步加载等功能。但不推荐用它来展示菜单,展示菜单推荐使用树菜单', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Tree\",\"destructuring\":true}', 'component', 'data-display', 12, '[{\"name\":{\"zh_CN\":\"树\"},\"icon\":\"tree\",\"screenshot\":\"\",\"snippetName\":\"TinyTree\",\"schema\":{\"componentName\":\"TinyTree\",\"props\":{\"data\":[{\"label\":\"一级 1\",\"children\":[{\"label\":\"二级 1-1\",\"children\":[{\"label\":\"三级 1-1-1\"}]}]},{\"label\":\"一级 2\",\"children\":[{\"label\":\"二级 2-1\",\"children\":[{\"label\":\"三级 2-1-1\"}]},{\"label\":\"二级 2-2\",\"children\":[{\"label\":\"三级 2-2-1\"}]}]}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"show-checkbox\",\"label\":{\"text\":{\"zh_CN\":\"多选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置接口是否可以多选\"},\"labelPosition\":\"left\"},{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"数据源\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":[{\"label\":\"一级 1\",\"children\":[{\"label\":\"二级 1-1\"}]}],\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"可配置静态数据源和动态数据源\"},\"labelPosition\":\"top\"},{\"property\":\"node-key\",\"label\":{\"text\":{\"zh_CN\":\"唯一标识\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点唯一标识属性名称\"},\"labelPosition\":\"left\"},{\"property\":\"render-content\",\"label\":{\"text\":{\"zh_CN\":\"渲染函数\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"disabled\":true,\"placeholder\":\"请使用变量绑定来绑定函数\"}},\"description\":{\"zh_CN\":\"树节点的内容区的渲染函数\"}},{\"property\":\"icon-trigger-click-node\",\"label\":{\"text\":{\"zh_CN\":\"触发NodeClick事件\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"点击图标展开节点时是否触发 node-click 事件\"},\"labelPosition\":\"left\"},{\"property\":\"expand-icon\",\"label\":{\"text\":{\"zh_CN\":\"展开图标\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点展开图标\"},\"labelPosition\":\"top\"},{\"property\":\"shrink-icon\",\"label\":{\"text\":{\"zh_CN\":\"收缩图标\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点收缩的图标\"},\"labelPosition\":\"top\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"check-on-click-node\",\"label\":{\"text\":{\"zh_CN\":\"点击节点选中\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否在点击节点的时候选中节点,默认值为 false,即只有在点击复选框时才会选中节点\"},\"labelPosition\":\"left\"},{\"property\":\"filter-node-method\",\"label\":{\"text\":{\"zh_CN\":\"筛选函数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点筛选函数\"},\"labelPosition\":\"top\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onCheck\":{\"label\":{\"zh_CN\":\"勾选节点后的事件\"},\"description\":{\"zh_CN\":\"勾选节点后的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"data\",\"type\":\"object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中节点信息\"}},{\"name\":\"currentNode\",\"type\":\"object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onNodeClick\":{\"label\":{\"zh_CN\":\"点击节点后的事件\"},\"description\":{\"zh_CN\":\"点击节点后的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"data\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中节点信息\"}},{\"name\":\"node\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性\"}},{\"name\":\"vm\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"树组件实例\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"data\",\"show-checkbox\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (48, '3.20.0', '{\"zh_CN\":\"时间线\"}', 'TinyTimeLine', 'timeline', 'TimeLine 时间线', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"TimeLine\",\"destructuring\":true}', 'component', 'navigation', 3, '[{\"name\":{\"zh_CN\":\"时间线\"},\"icon\":\"timeline\",\"screenshot\":\"\",\"snippetName\":\"TinyTimeLine\",\"schema\":{\"componentName\":\"TinyTimeLine\",\"props\":{\"active\":\"2\",\"data\":[{\"name\":\"已下单\"},{\"name\":\"运输中\"},{\"name\":\"已签收\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"vertical\",\"type\":\"Boolean\",\"defaultValue\":{\"type\":\"i18n\",\"zh_CN\":\"垂直布局\",\"en_US\":\"layout\",\"key\":\"\"},\"label\":{\"text\":{\"zh_CN\":\"垂直布局\"}},\"cols\":12,\"rules\":[],\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点和文字垂直布局\"},\"labelPosition\":\"left\"},{\"property\":\"active\",\"label\":{\"text\":{\"zh_CN\":\"选中值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"步骤条的选中步骤值\"},\"labelPosition\":\"left\"},{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"步骤条数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":[{\"name\":\"配置基本信息\",\"status\":\"ready\"},{\"name\":\"配置报价\",\"status\":\"wait\"},{\"name\":\"完成报价\",\"status\":\"wait\"}],\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"时间线步骤条数据\"},\"labelPosition\":\"top\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"节点的点击时触发\"},\"description\":{\"zh_CN\":\"节点的点击时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"type\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"点击节点的下标\"}},{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前节点对象:{ name: 节点名称, time: 时间 }\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"active\",\"data\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (49, '3.20.0', '{\"zh_CN\":\"文字提示框\"}', 'TinyTooltip', 'tooltip', '动态显示提示信息,一般通过鼠标事件进行响应;提供 warning、error、info、success 四种类型显示不同类别的信', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Tooltip\",\"destructuring\":true}', 'component', 'data-display', 11, '[{\"name\":{\"zh_CN\":\"文字提示框\"},\"icon\":\"tooltip\",\"screenshot\":\"\",\"snippetName\":\"TinyTooltip\",\"schema\":{\"componentName\":\"TinyTooltip\",\"props\":{\"content\":\"Top Left 提示文字\",\"placement\":\"top-start\",\"manual\":true,\"modelValue\":true},\"children\":[{\"componentName\":\"span\",\"children\":[{\"componentName\":\"div\",\"props\":{}}]},{\"componentName\":\"Template\",\"props\":{\"slot\":\"content\"},\"children\":[{\"componentName\":\"span\",\"children\":[{\"componentName\":\"div\",\"props\":{\"placeholder\":\"提示内容\"}}]}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"placement\",\"label\":{\"text\":{\"zh_CN\":\"提示位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"top\",\"value\":\"top\"},{\"label\":\"top-start\",\"value\":\"top-start\"},{\"label\":\"top-end\",\"value\":\"top-end\"},{\"label\":\"bottom\",\"value\":\"bottom\"},{\"label\":\"bottom-start\",\"value\":\"bottom-start\"},{\"label\":\"bottom-end\",\"value\":\"bottom-end\"},{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"left-start\",\"value\":\"left-start\"},{\"label\":\"left-end\",\"value\":\"left-end\"},{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"right-start\",\"value\":\"right-start\"},{\"label\":\"right-end\",\"value\":\"right-end\"}]}},\"description\":{\"zh_CN\":\"Tooltip 的出现位置\"},\"labelPosition\":\"left\"},{\"property\":\"content\",\"label\":{\"text\":{\"zh_CN\":\"内容\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"提示信息\",\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"显示的内容,也可以通过 slot#content 传入 DOM\"},\"labelPosition\":\"left\"},{\"property\":\"render-content\",\"label\":{\"text\":{\"zh_CN\":\"渲染函数\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"disabled\":true,\"placeholder\":\"请使用变量绑定来绑定函数\"}},\"description\":{\"zh_CN\":\"自定义渲染函数,返回需要渲染的节点内容\"}},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"是否可见\"}},\"defaultValue\":true,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"状态是否可见\"},\"labelPosition\":\"left\"},{\"property\":\"manual\",\"label\":{\"text\":{\"zh_CN\":\"手动控制\"}},\"defaultValue\":true,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"手动控制模式,设置为 true 后,mouseenter 和 mouseleave 事件将不会生效\"},\"labelPosition\":\"left\"}]}],\"events\":{},\"slots\":{\"content\":{\"label\":{\"zh_CN\":\"提示内容\"},\"description\":{\"zh_CN\":\"自定义提示内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":true,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"content\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (50, '3.20.0', '{\"zh_CN\":\"提示框\"}', 'TinyPopover', 'popover', 'Popover可通过对一个触发源操作触发弹出框,支持自定义弹出内容,延迟触发和渐变动画', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Popover\",\"destructuring\":true}', 'component', 'data-display', 7, '[{\"name\":{\"zh_CN\":\"提示框\"},\"icon\":\"popover\",\"screenshot\":\"\",\"snippetName\":\"TinyPopover\",\"schema\":{\"componentName\":\"TinyPopover\",\"props\":{\"width\":200,\"title\":\"弹框标题\",\"trigger\":\"manual\",\"modelValue\":true},\"children\":[{\"componentName\":\"Template\",\"props\":{\"slot\":\"reference\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"placeholder\":\"触发源\"}}]},{\"componentName\":\"Template\",\"props\":{\"slot\":\"default\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"placeholder\":\"提示内容\"}}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定,手动控制是否可见的状态值\"},\"labelPosition\":\"left\"},{\"property\":\"placement\",\"label\":{\"text\":{\"zh_CN\":\"位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"top\",\"value\":\"top\"},{\"label\":\"top-start\",\"value\":\"top-start\"},{\"label\":\"top-end\",\"value\":\"top-end\"},{\"label\":\"bottom\",\"value\":\"bottom\"},{\"label\":\"bottom-start\",\"value\":\"bottom-start\"},{\"label\":\"bottom-end\",\"value\":\"bottom-end\"},{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"left-start\",\"value\":\"left-start\"},{\"label\":\"left-end\",\"value\":\"left-end\"},{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"right-start\",\"value\":\"right-start\"},{\"label\":\"right-end\",\"value\":\"right-end\"}]}},\"description\":{\"zh_CN\":\"提示框位置\"},\"labelPosition\":\"left\"},{\"property\":\"trigger\",\"label\":{\"text\":{\"zh_CN\":\"触发方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"click\",\"value\":\"click\"},{\"label\":\"focus\",\"value\":\"focus\"},{\"label\":\"hover\",\"value\":\"hover\"},{\"label\":\"manual\",\"value\":\"manual\"}]}},\"description\":{\"zh_CN\":\"触发方式,该属性的可选值为 click / focus / hover / manual,该属性的默认值为 click\"},\"labelPosition\":\"left\"},{\"property\":\"popper-class\",\"label\":{\"text\":{\"zh_CN\":\"自定义类\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"为 popper 添加类名\"},\"labelPosition\":\"left\"},{\"property\":\"visible-arrow\",\"label\":{\"text\":{\"zh_CN\":\"显示箭头\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示 Tooltip 箭头\"},\"labelPosition\":\"left\"},{\"property\":\"append-to-body\",\"label\":{\"text\":{\"zh_CN\":\"添加到body上\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"Popover弹窗是否添加到body上\"},\"labelPosition\":\"left\"},{\"property\":\"arrow-offset\",\"label\":{\"text\":{\"zh_CN\":\"箭头的位置偏移\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"箭头的位置偏移,该属性的默认值为 0\"}},{\"property\":\"close-delay\",\"label\":{\"text\":{\"zh_CN\":\"延迟隐藏\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"触发方式为 hover 时的隐藏延迟,单位为毫秒\"},\"labelPosition\":\"left\"},{\"property\":\"content\",\"label\":{\"text\":{\"zh_CN\":\"显示的内容\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"显示的内容,也可以通过 slot 传入 DOM\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"Popover 是否可用\"},\"labelPosition\":\"left\"},{\"property\":\"offset\",\"label\":{\"text\":{\"zh_CN\":\"位置偏移量\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"出现位置的偏移量\"},\"labelPosition\":\"left\"},{\"property\":\"open-delay\",\"label\":{\"text\":{\"zh_CN\":\"显示延迟\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"触发方式为 hover 时的显示延迟,单位为毫秒\"},\"labelPosition\":\"left\"},{\"property\":\"popper-options\",\"label\":{\"text\":{\"zh_CN\":\"弹出层参数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"popper.js 的参数\"},\"labelPosition\":\"top\"},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"提示内容标题\"},\"labelPosition\":\"left\"},{\"property\":\"transform-origin\",\"label\":{\"text\":{\"zh_CN\":\"旋转中心点\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"组件的旋转中心点,组件的旋转中心点\"},\"labelPosition\":\"left\"},{\"property\":\"transition\",\"label\":{\"text\":{\"zh_CN\":\"渐变动画\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"该属性的默认值为 fade-in-linear\"},\"labelPosition\":\"left\"},{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"宽度\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"手动控制是否可见的状态值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"boolean\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的可见状态值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":true,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"visible\",\"width\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (51, '3.20.0', '{\"zh_CN\":\"日期选择\"}', 'TinyDatePicker', 'datepick', '用于输入或选择日期', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"DatePicker\",\"destructuring\":true}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"日期选择\"},\"icon\":\"datepick\",\"screenshot\":\"\",\"snippetName\":\"TinyDatePicker\",\"schema\":{\"componentName\":\"TinyDatePicker\",\"props\":{\"placeholder\":\"请输入\",\"modelValue\":\"\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"日期\",\"value\":\"date\"},{\"label\":\"日期时间\",\"value\":\"datetime\"},{\"label\":\"周\",\"value\":\"week\"},{\"label\":\"月份\",\"value\":\"month\"},{\"label\":\"年份\",\"value\":\"year\"}]}},\"description\":{\"zh_CN\":\"设置日期框的type属性\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"readonly\",\"label\":{\"text\":{\"zh_CN\":\"只读\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否只读\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"日期框尺寸。该属性的可选值为 medium / small / mini\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"maxlength\",\"label\":{\"text\":{\"zh_CN\":\"输入最大长度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置 input 框的maxLength\"}},{\"property\":\"autofocus\",\"label\":{\"text\":{\"zh_CN\":\"聚焦\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自动获取焦点\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框改变后的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:16', '1', '2025-08-03 19:54:16'); +INSERT INTO `t_component` VALUES (52, '3.20.0', '{\"zh_CN\":\"数字输入框\"}', 'TinyNumeric', 'numeric', '通过鼠标或键盘输入字符', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Numeric\",\"destructuring\":true}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"数字输入框\"},\"icon\":\"numeric\",\"screenshot\":\"\",\"snippetName\":\"TinyNumeric\",\"schema\":{\"componentName\":\"TinyNumeric\",\"props\":{\"allow-empty\":true,\"placeholder\":\"请输入\",\"controls-position\":\"right\",\"step\":1}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"allow-empty\",\"label\":{\"text\":{\"zh_CN\":\"内容可清空\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否内容可清空\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"输入框尺寸。该属性的可选值为 medium / small / mini\"},\"labelPosition\":\"left\"},{\"property\":\"controls\",\"label\":{\"text\":{\"zh_CN\":\"加减按钮\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否使用加减按钮\"},\"labelPosition\":\"left\"},{\"property\":\"controls-position\",\"label\":{\"text\":{\"zh_CN\":\"加减按钮位置\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"左右两侧\",\"value\":\"\"},{\"label\":\"只在右侧\",\"value\":\"right\"}]}},\"description\":{\"zh_CN\":\"加减按钮位置\"}},{\"property\":\"precision\",\"label\":{\"text\":{\"zh_CN\":\"精度\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"数值精度\"},\"labelPosition\":\"left\"},{\"property\":\"step\",\"label\":{\"text\":{\"zh_CN\":\"步长\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"步长\"},\"labelPosition\":\"left\"},{\"property\":\"max\",\"label\":{\"text\":{\"zh_CN\":\"最大数值\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"可输入的最大数值\"},\"labelPosition\":\"left\"},{\"property\":\"min\",\"label\":{\"text\":{\"zh_CN\":\"最小数值\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"可输入的最大数值\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框改变后的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:16', '1', '2025-08-03 19:54:16'); +INSERT INTO `t_component` VALUES (53, '3.20.0', '{\"zh_CN\":\"穿梭框\"}', 'TinyTransfer', 'transfer', '穿梭框,实现左右表格数据的双向交换的组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"TinyTransfer\",\"destructuring\":true}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"穿梭框\"},\"icon\":\"transfer\",\"screenshot\":\"\",\"snippetName\":\"TinyTransfer\",\"schema\":{\"componentName\":\"TinyTransfer\",\"props\":{\"modelValue\":[3],\"data\":[{\"key\":1,\"label\":\"备选项1\",\"disabled\":false},{\"key\":2,\"label\":\"备选项2\",\"disabled\":false},{\"key\":3,\"label\":\"备选项3\",\"disabled\":false},{\"key\":4,\"label\":\"备选项4\",\"disabled\":false}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"左右列表的全量数据源\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"左右列表的全量数据源\"},\"labelPosition\":\"left\"},{\"property\":\"filterable\",\"label\":{\"text\":{\"zh_CN\":\"是否启用搜索的功能\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否启用搜索的功能\"},\"labelPosition\":\"left\"},{\"property\":\"showAllBtn\",\"label\":{\"text\":{\"zh_CN\":\"是否显示全部移动按钮\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示全部移动按钮\"},\"labelPosition\":\"left\"},{\"property\":\"toLeftDisable\",\"label\":{\"text\":{\"zh_CN\":\"组件初始化状态下未选中时,默认按钮显示禁用状态\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"组件初始化状态下未选中时,默认按钮显示禁用状态\"},\"labelPosition\":\"left\"},{\"property\":\"toRightDisable\",\"label\":{\"text\":{\"zh_CN\":\"组件初始化状态下未选中时,默认按钮显示禁用状态\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"组件初始化状态下未选中时,默认按钮显示禁用状态\"},\"labelPosition\":\"left\"},{\"property\":\"titles\",\"label\":{\"text\":{\"zh_CN\":\"自定义列表的标题\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"自定义列表的标题;不设置titles时,左右列表的标题默认显示为: 列表 1, 列表 2\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"右侧列表元素变化时触发\"},\"description\":{\"zh_CN\":\"右侧列表元素变化时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"右侧列表元素变化时触发\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onLeftCheckChange\":{\"label\":{\"zh_CN\":\"左侧列表元素被用户选中 / 取消选中时触发;\"},\"description\":{\"zh_CN\":\"左侧列表元素被用户选中 / 取消选中时触发;\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"左侧列表元素被用户选中 / 取消选中时触发;\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onRightCheckChange\":{\"label\":{\"zh_CN\":\"右侧列表元素被用户选中 / 取消选中时触发\"},\"description\":{\"zh_CN\":\"右侧列表元素被用户选中 / 取消选中时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"右侧列表元素被用户选中 / 取消选中时触发\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:16', '1', '2025-08-03 19:54:16'); -INSERT INTO `t_component_library` (`id`, `version`, `name`, `app_id`, `package`, `registry`, `framework`, `description`, `script`, `css`, `bundle`, `dependencies`, `others`, `thumbnail`, `public`, `is_started`, `is_official`, `is_default`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (1, '3.20.0', 'TinyVue组件库', NULL, '@opentiny/vue', NULL, 'Vue', NULL, 'https://unpkg.com/@opentiny/vue-runtime@~3.20/dist3/tiny-vue-pc.mjs', 'https://unpkg.com/@opentiny/vue-theme@~3.20/index.css', NULL, NULL, NULL, NULL, NULL, 1, 1, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component_library` (`id`, `version`, `name`, `app_id`, `package`, `registry`, `framework`, `description`, `script`, `css`, `bundle`, `dependencies`, `others`, `thumbnail`, `public`, `is_started`, `is_official`, `is_default`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (2, '2.4.2', 'element-plus组件库', NULL, 'element-plus', NULL, 'Vue', NULL, 'https://unpkg.com/element-plus@2.4.2/dist/index.full.mjs', 'https://unpkg.com/element-plus@2.4.2/dist/index.css', NULL, NULL, NULL, NULL, NULL, 1, 1, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component_library` VALUES (1, '3.20.0', 'TinyVue组件库', NULL, '@opentiny/vue', NULL, 'Vue', NULL, 'https://registry.npmmirror.com/@opentiny/vue-runtime/~3.20/files/dist3/tiny-vue-pc.mjs', 'https://registry.npmmirror.com/@opentiny/vue-theme/~3.20/files/index.css', NULL, NULL, NULL, NULL, NULL, 1, 1, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component_library` VALUES (2, '2.4.2', 'element-plus组件库', NULL, 'element-plus', NULL, 'Vue', NULL, 'https://registry.npmmirror.com/element-plus/2.4.2/files/dist/index.full.mjs', 'https://registry.npmmirror.com/element-plus/2.4.2/files/dist/index.css', NULL, NULL, NULL, NULL, NULL, 1, 1, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (1, 1, 1); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (2, 1, 2); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (3, 1, 3); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (4, 1, 4); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (5, 1, 5); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (6, 1, 6); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (7, 1, 7); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (8, 1, 8); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (9, 1, 9); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (10, 1, 10); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (11, 1, 11); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (12, 1, 12); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (13, 1, 13); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (14, 1, 14); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (15, 1, 15); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (16, 1, 16); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (17, 1, 17); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (18, 1, 18); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (19, 1, 19); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (20, 1, 20); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (21, 1, 21); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (22, 1, 22); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (23, 1, 23); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (24, 1, 24); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (25, 1, 25); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (26, 1, 26); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (27, 1, 27); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (28, 1, 28); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (29, 1, 29); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (30, 1, 30); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (31, 1, 31); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (32, 1, 32); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (33, 1, 33); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (34, 1, 34); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (35, 1, 35); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (36, 1, 36); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (37, 1, 37); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (38, 1, 38); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (39, 1, 39); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (40, 1, 40); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (41, 1, 41); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (42, 1, 42); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (43, 1, 43); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (44, 1, 44); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (45, 1, 45); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (46, 1, 46); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (47, 1, 47); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (48, 1, 48); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (49, 1, 49); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (50, 1, 50); +INSERT INTO `r_material_history_component` VALUES (1, 1, 1); +INSERT INTO `r_material_history_component` VALUES (2, 1, 2); +INSERT INTO `r_material_history_component` VALUES (3, 1, 3); +INSERT INTO `r_material_history_component` VALUES (4, 1, 4); +INSERT INTO `r_material_history_component` VALUES (5, 1, 5); +INSERT INTO `r_material_history_component` VALUES (6, 1, 6); +INSERT INTO `r_material_history_component` VALUES (7, 1, 7); +INSERT INTO `r_material_history_component` VALUES (8, 1, 8); +INSERT INTO `r_material_history_component` VALUES (9, 1, 9); +INSERT INTO `r_material_history_component` VALUES (10, 1, 10); +INSERT INTO `r_material_history_component` VALUES (11, 1, 11); +INSERT INTO `r_material_history_component` VALUES (12, 1, 12); +INSERT INTO `r_material_history_component` VALUES (13, 1, 13); +INSERT INTO `r_material_history_component` VALUES (14, 1, 14); +INSERT INTO `r_material_history_component` VALUES (15, 1, 15); +INSERT INTO `r_material_history_component` VALUES (16, 1, 16); +INSERT INTO `r_material_history_component` VALUES (17, 1, 17); +INSERT INTO `r_material_history_component` VALUES (18, 1, 18); +INSERT INTO `r_material_history_component` VALUES (19, 1, 19); +INSERT INTO `r_material_history_component` VALUES (20, 1, 20); +INSERT INTO `r_material_history_component` VALUES (21, 1, 21); +INSERT INTO `r_material_history_component` VALUES (22, 1, 22); +INSERT INTO `r_material_history_component` VALUES (23, 1, 23); +INSERT INTO `r_material_history_component` VALUES (24, 1, 24); +INSERT INTO `r_material_history_component` VALUES (25, 1, 25); +INSERT INTO `r_material_history_component` VALUES (26, 1, 26); +INSERT INTO `r_material_history_component` VALUES (27, 1, 27); +INSERT INTO `r_material_history_component` VALUES (28, 1, 28); +INSERT INTO `r_material_history_component` VALUES (29, 1, 29); +INSERT INTO `r_material_history_component` VALUES (30, 1, 30); +INSERT INTO `r_material_history_component` VALUES (31, 1, 31); +INSERT INTO `r_material_history_component` VALUES (32, 1, 32); +INSERT INTO `r_material_history_component` VALUES (33, 1, 33); +INSERT INTO `r_material_history_component` VALUES (34, 1, 34); +INSERT INTO `r_material_history_component` VALUES (35, 1, 35); +INSERT INTO `r_material_history_component` VALUES (36, 1, 36); +INSERT INTO `r_material_history_component` VALUES (37, 1, 37); +INSERT INTO `r_material_history_component` VALUES (38, 1, 38); +INSERT INTO `r_material_history_component` VALUES (39, 1, 39); +INSERT INTO `r_material_history_component` VALUES (40, 1, 40); +INSERT INTO `r_material_history_component` VALUES (41, 1, 41); +INSERT INTO `r_material_history_component` VALUES (42, 1, 42); +INSERT INTO `r_material_history_component` VALUES (43, 1, 43); +INSERT INTO `r_material_history_component` VALUES (44, 1, 44); +INSERT INTO `r_material_history_component` VALUES (45, 1, 45); +INSERT INTO `r_material_history_component` VALUES (46, 1, 46); +INSERT INTO `r_material_history_component` VALUES (47, 1, 47); +INSERT INTO `r_material_history_component` VALUES (48, 1, 48); +INSERT INTO `r_material_history_component` VALUES (49, 1, 49); +INSERT INTO `r_material_history_component` VALUES (50, 1, 50); +INSERT INTO `r_material_history_component` VALUES (51, 1, 51); +INSERT INTO `r_material_history_component` VALUES (52, 1, 52); +INSERT INTO `r_material_history_component` VALUES (53, 1, 53); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (1, 1, 1); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (2, 1, 2); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (3, 1, 3); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (4, 1, 4); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (5, 1, 5); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (6, 1, 6); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (7, 1, 7); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (8, 1, 8); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (9, 1, 9); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (10, 1, 10); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (11, 1, 11); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (12, 1, 12); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (13, 1, 13); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (14, 1, 14); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (15, 1, 15); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (16, 1, 16); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (17, 1, 17); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (18, 1, 18); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (19, 1, 19); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (20, 1, 20); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (21, 1, 21); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (22, 1, 22); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (23, 1, 23); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (24, 1, 24); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (25, 1, 25); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (26, 1, 26); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (27, 1, 27); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (28, 1, 28); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (29, 1, 29); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (30, 1, 30); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (31, 1, 31); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (32, 1, 32); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (33, 1, 33); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (34, 1, 34); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (35, 1, 35); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (36, 1, 36); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (37, 1, 37); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (38, 1, 38); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (39, 1, 39); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (40, 1, 40); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (41, 1, 41); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (42, 1, 42); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (43, 1, 43); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (44, 1, 44); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (45, 1, 45); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (46, 1, 46); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (47, 1, 47); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (48, 1, 48); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (49, 1, 49); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (50, 1, 50); +INSERT INTO `r_material_component` VALUES (1, 1, 1); +INSERT INTO `r_material_component` VALUES (2, 1, 2); +INSERT INTO `r_material_component` VALUES (3, 1, 3); +INSERT INTO `r_material_component` VALUES (4, 1, 4); +INSERT INTO `r_material_component` VALUES (5, 1, 5); +INSERT INTO `r_material_component` VALUES (6, 1, 6); +INSERT INTO `r_material_component` VALUES (7, 1, 7); +INSERT INTO `r_material_component` VALUES (8, 1, 8); +INSERT INTO `r_material_component` VALUES (9, 1, 9); +INSERT INTO `r_material_component` VALUES (10, 1, 10); +INSERT INTO `r_material_component` VALUES (11, 1, 11); +INSERT INTO `r_material_component` VALUES (12, 1, 12); +INSERT INTO `r_material_component` VALUES (13, 1, 13); +INSERT INTO `r_material_component` VALUES (14, 1, 14); +INSERT INTO `r_material_component` VALUES (15, 1, 15); +INSERT INTO `r_material_component` VALUES (16, 1, 16); +INSERT INTO `r_material_component` VALUES (17, 1, 17); +INSERT INTO `r_material_component` VALUES (18, 1, 18); +INSERT INTO `r_material_component` VALUES (19, 1, 19); +INSERT INTO `r_material_component` VALUES (20, 1, 20); +INSERT INTO `r_material_component` VALUES (21, 1, 21); +INSERT INTO `r_material_component` VALUES (22, 1, 22); +INSERT INTO `r_material_component` VALUES (23, 1, 23); +INSERT INTO `r_material_component` VALUES (24, 1, 24); +INSERT INTO `r_material_component` VALUES (25, 1, 25); +INSERT INTO `r_material_component` VALUES (26, 1, 26); +INSERT INTO `r_material_component` VALUES (27, 1, 27); +INSERT INTO `r_material_component` VALUES (28, 1, 28); +INSERT INTO `r_material_component` VALUES (29, 1, 29); +INSERT INTO `r_material_component` VALUES (30, 1, 30); +INSERT INTO `r_material_component` VALUES (31, 1, 31); +INSERT INTO `r_material_component` VALUES (32, 1, 32); +INSERT INTO `r_material_component` VALUES (33, 1, 33); +INSERT INTO `r_material_component` VALUES (34, 1, 34); +INSERT INTO `r_material_component` VALUES (35, 1, 35); +INSERT INTO `r_material_component` VALUES (36, 1, 36); +INSERT INTO `r_material_component` VALUES (37, 1, 37); +INSERT INTO `r_material_component` VALUES (38, 1, 38); +INSERT INTO `r_material_component` VALUES (39, 1, 39); +INSERT INTO `r_material_component` VALUES (40, 1, 40); +INSERT INTO `r_material_component` VALUES (41, 1, 41); +INSERT INTO `r_material_component` VALUES (42, 1, 42); +INSERT INTO `r_material_component` VALUES (43, 1, 43); +INSERT INTO `r_material_component` VALUES (44, 1, 44); +INSERT INTO `r_material_component` VALUES (45, 1, 45); +INSERT INTO `r_material_component` VALUES (46, 1, 46); +INSERT INTO `r_material_component` VALUES (47, 1, 47); +INSERT INTO `r_material_component` VALUES (48, 1, 48); +INSERT INTO `r_material_component` VALUES (49, 1, 49); +INSERT INTO `r_material_component` VALUES (50, 1, 50); +INSERT INTO `r_material_component` VALUES (51, 1, 51); +INSERT INTO `r_material_component` VALUES (52, 1, 52); +INSERT INTO `r_material_component` VALUES (53, 1, 53); diff --git a/app/src/main/resources/sql/mysql/init_data_for_test_v1.0.0.sql b/app/src/main/resources/sql/mysql/init_data_for_test_v1.0.0.sql index 0e38b756..e5150678 100644 --- a/app/src/main/resources/sql/mysql/init_data_for_test_v1.0.0.sql +++ b/app/src/main/resources/sql/mysql/init_data_for_test_v1.0.0.sql @@ -18,158 +18,167 @@ INSERT INTO `t_platform` (`id`, `name`, `published`, `last_build_info`, `descrip INSERT INTO `t_platform_history` (`id`, `ref_id`, `version`, `name`, `publish_url`, `description`, `vscode_url`, `material_history_id`, `sub_count`, `material_pkg_name`, `material_version`, `image_url`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `last_updated_by`, `created_time`, `last_updated_time`) VALUES (1, 1, '1.0.0', 'default', 'http://tinyengine.com', '默认设计器', NULL, 1, 1, '@opentiny/lowcode-alpha-material-materialstwo-1505', '1.0.8', NULL, '1', NULL, '1', '1', '1', '2024-11-14 22:20:25', '2024-11-14 22:20:25'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (1, '2.4.2', '{\"zh_CN\":\"输入框\"}', 'ElInput', 'input', '通过鼠标或键盘输入字符', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElInput\"}', '表单组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"输入框\"},\"icon\":\"input\",\"screenshot\":\"\",\"snippetName\":\"ElInput\",\"schema\":{}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"description\":{\"zh_CN\":\"绑定值\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"description\":{\"zh_CN\":\"类型\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"maxlength\",\"label\":{\"text\":{\"zh_CN\":\"最大长度\"}},\"description\":{\"zh_CN\":\"最大输入长度\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"number\",\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"是否禁用\"}},\"description\":{\"zh_CN\":\"是否禁用\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定值改变时触发\"},\"description\":{\"zh_CN\":\"双向绑定值改变时触发\"}},\"onBlur\":{\"label\":{\"zh_CN\":\"输入框失去焦点时触发\"},\"description\":{\"zh_CN\":\"输入框失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{\"prefix\":{\"label\":{\"zh_CN\":\"头部内容\"},\"description\":{\"zh_CN\":\"输入框头部内容,只对非 type=\'textarea\' 有效\"}},\"suffix\":{\"label\":{\"zh_CN\":\"尾部内容\"},\"description\":{\"zh_CN\":\"输入框尾部内容,只对非 type=\'textarea\' 有效\"}},\"prepend\":{\"label\":{\"zh_CN\":\"前置内容\"},\"description\":{\"zh_CN\":\"输入框前置内容,只对非 type=\'textarea\' 有效\"}},\"append\":{\"label\":{\"zh_CN\":\"后置内容\"},\"description\":{\"zh_CN\":\"输入框后置内容,只对非 type=\'textarea\' 有效\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"type\",\"size\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (2, '2.4.2', '{\"zh_CN\":\"按钮\"}', 'ElButton', 'button', '常用的操作按钮', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElButton\"}', '基础组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"按钮\"},\"icon\":\"button\",\"screenshot\":\"\",\"snippetName\":\"ElButton\",\"schema\":{\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"按钮文本\"}}]}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"description\":{\"zh_CN\":\"类型\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"plain\",\"label\":{\"text\":{\"zh_CN\":\"朴素按钮\"}},\"description\":{\"zh_CN\":\"是否为朴素按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文字按钮\"}},\"description\":{\"zh_CN\":\"是否为文字按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"bg\",\"label\":{\"text\":{\"zh_CN\":\"背景颜色\"}},\"description\":{\"zh_CN\":\"是否显示文字按钮背景颜色\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"link\",\"label\":{\"text\":{\"zh_CN\":\"链接按钮\"}},\"description\":{\"zh_CN\":\"是否为链接按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"round\",\"label\":{\"text\":{\"zh_CN\":\"圆角按钮\"}},\"description\":{\"zh_CN\":\"是否为圆角按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"circle\",\"label\":{\"text\":{\"zh_CN\":\"圆形按钮\"}},\"description\":{\"zh_CN\":\"是否为圆形按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"loading\",\"label\":{\"text\":{\"zh_CN\":\"加载中状态\"}},\"description\":{\"zh_CN\":\"是否为加载中状态\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"description\":{\"zh_CN\":\"是否禁用\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{},\"slots\":{\"default\":{\"label\":{\"zh_CN\":\"default\"},\"description\":{\"zh_CN\":\"自定义默认内容\"}},\"loading\":{\"label\":{\"zh_CN\":\"loading\"},\"description\":{\"zh_CN\":\"自定义加载中组件\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"type\",\"size\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (3, '2.4.2', '{\"zh_CN\":\"表单\"}', 'ElForm', 'form', '表单包含 输入框, 单选框, 下拉选择, 多选框 等用户输入的组件。 使用表单,您可以收集、验证和提交数据。', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElForm\"}', '表单组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"表单\"},\"icon\":\"form\",\"screenshot\":\"\",\"snippetName\":\"ElForm\",\"schema\":{\"children\":[{\"componentName\":\"ElFormItem\",\"props\":{\"label\":\"账号\",\"prop\":\"account\"},\"children\":[{\"componentName\":\"ElInput\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请输入账号\"}}]},{\"componentName\":\"ElFormItem\",\"props\":{\"label\":\"密码\",\"prop\":\"password\"},\"children\":[{\"componentName\":\"ElInput\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请输入密码\",\"type\":\"password\"}}]},{\"componentName\":\"ElFormItem\",\"props\":{},\"children\":[{\"componentName\":\"ElButton\",\"props\":{\"type\":\"primary\",\"style\":\"margin-right: 10px\"},\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"提交\"}}]},{\"componentName\":\"ElButton\",\"props\":{\"type\":\"primary\"},\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"重置\"}}]}]}]}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"model\",\"label\":{\"text\":{\"zh_CN\":\"数据对象\"}},\"description\":{\"zh_CN\":\"表单数据对象\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"rules\",\"label\":{\"text\":{\"zh_CN\":\"验证规则\"}},\"description\":{\"zh_CN\":\"表单验证规则\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"inline\",\"label\":{\"text\":{\"zh_CN\":\"行内模式\"}},\"description\":{\"zh_CN\":\"行内表单模式\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"label-position\",\"label\":{\"text\":{\"zh_CN\":\"标签位置\"}},\"description\":{\"zh_CN\":\"表单域标签的位置, 当设置为 left 或 right 时,则也需要设置标签宽度属性\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"right\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"top\",\"value\":\"top\"}]}}},{\"property\":\"label-width\",\"label\":{\"text\":{\"zh_CN\":\"标签宽度\"}},\"description\":{\"zh_CN\":\"标签的长度,例如 \'50px\'。 作为 Form 直接子元素的 form-item 会继承该值。 可以使用 auto。\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"label-suffix\",\"label\":{\"text\":{\"zh_CN\":\"标签后缀\"}},\"description\":{\"zh_CN\":\"表单域标签的后缀\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"hide-required-asterisk\",\"label\":{\"text\":{\"zh_CN\":\"隐藏必填星号\"}},\"description\":{\"zh_CN\":\"是否隐藏必填字段标签旁边的红色星号\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"require-asterisk-position\",\"label\":{\"text\":{\"zh_CN\":\"星号位置\"}},\"description\":{\"zh_CN\":\"星号的位置\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"left\",\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"show-message\",\"label\":{\"text\":{\"zh_CN\":\"显示校验信息\"}},\"description\":{\"zh_CN\":\"是否显示校验错误信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"inline-message\",\"label\":{\"text\":{\"zh_CN\":\"行内显示校验信息\"}},\"description\":{\"zh_CN\":\"是否以行内形式展示校验信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"status-icon\",\"label\":{\"text\":{\"zh_CN\":\"显示校验结果图标\"}},\"description\":{\"zh_CN\":\"是否在输入框中显示校验结果反馈图标\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"validate-on-rule-change\",\"label\":{\"text\":{\"zh_CN\":\"触发验证\"}},\"description\":{\"zh_CN\":\"是否在 rules 属性改变后立即触发一次验证\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"用于控制该表单内组件的尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"description\":{\"zh_CN\":\"是否禁用该表单内的所有组件。 如果设置为 true, 它将覆盖内部组件的 disabled 属性\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"scroll-to-error\",\"label\":{\"text\":{\"zh_CN\":\"滚动到错误项\"}},\"description\":{\"zh_CN\":\"当校验失败时,滚动到第一个错误表单项\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onValidate\":{\"label\":{\"zh_CN\":\"任一表单项被校验后触发\"},\"description\":{\"zh_CN\":\"任一表单项被校验后触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":[\"ElFormItem\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (4, '2.4.2', '{\"zh_CN\":\"表单子项\"}', 'ElFormItem', 'formItem', '表单包含 输入框, 单选框, 下拉选择, 多选框 等用户输入的组件。 使用表单,您可以收集、验证和提交数据。', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElFormItem\"}', '表单组件', 'element-plus', NULL, NULL, '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"prop\",\"label\":{\"text\":{\"zh_CN\":\"键名\"}},\"description\":{\"zh_CN\":\"model 的键名。 它可以是一个属性的值(如 a.b.0 或 [a\', \'b\', \'0\'])。 在定义了 validate、resetFields 的方法时,该属性是必填的\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"label\",\"label\":{\"text\":{\"zh_CN\":\"标签文本\"}},\"description\":{\"zh_CN\":\"标签文本\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"label-width\",\"label\":{\"text\":{\"zh_CN\":\"标签宽度\"}},\"description\":{\"zh_CN\":\"标签宽度,例如 \'50px\'。 可以使用 auto\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"required\",\"label\":{\"text\":{\"zh_CN\":\"必填项\"}},\"description\":{\"zh_CN\":\"是否为必填项,如不设置,则会根据校验规则确认\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"rules\",\"label\":{\"text\":{\"zh_CN\":\"验证规则\"}},\"description\":{\"zh_CN\":\"表单验证规则, 更多内容可以参考async-validator\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"error\",\"label\":{\"text\":{\"zh_CN\":\"错误信息\"}},\"description\":{\"zh_CN\":\"表单域验证错误时的提示信息。设置该值会导致表单验证状态变为 error,并显示该错误信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"show-message\",\"label\":{\"text\":{\"zh_CN\":\"显示错误信息\"}},\"description\":{\"zh_CN\":\"是否显示校验错误信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"inline-message\",\"label\":{\"text\":{\"zh_CN\":\"行内显示错误信息\"}},\"description\":{\"zh_CN\":\"是否在行内显示校验信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"用于控制该表单内组件的尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"for\",\"label\":{\"text\":{\"zh_CN\":\"for\"}},\"description\":{\"zh_CN\":\"和原生标签相同能力\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"validate-status\",\"label\":{\"text\":{\"zh_CN\":\"校验状态\"}},\"description\":{\"zh_CN\":\"formItem 校验的状态\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"error\",\"value\":\"error\"},{\"label\":\"validating\",\"value\":\"validating\"},{\"label\":\"success\",\"value\":\"success\"}]}}}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{},\"slots\":{\"label\":{\"label\":{\"zh_CN\":\"label\"},\"description\":{\"zh_CN\":\"标签位置显示的内容\"}},\"error\":{\"label\":{\"zh_CN\":\"error\"},\"description\":{\"zh_CN\":\"验证错误信息的显示内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (5, '2.4.2', '{\"zh_CN\":\"表单\"}', 'ElTable', 'table', '用于展示多条结构类似的数据, 可对数据进行排序、筛选、对比或其他自定义操作', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElTable\"}', '数据展示', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"表格\"},\"icon\":\"grid\",\"screenshot\":\"\",\"snippetName\":\"ElTable\",\"schema\":{\"props\":{\"data\":[{\"date\":\"2016-05-03\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"},{\"date\":\"2016-05-02\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"},{\"date\":\"2016-05-04\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"},{\"date\":\"2016-05-01\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"}],\"columns\":[{\"type\":\"index\"},{\"label\":\"Date\",\"prop\":\"date\"},{\"label\":\"Name\",\"prop\":\"name\"},{\"label\":\"Address\",\"prop\":\"address\"}]}}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"数据\"}},\"description\":{\"zh_CN\":\"显示的数据\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"columns\",\"label\":{\"text\":{\"zh_CN\":\"表格列配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"properties\":[{\"label\":{\"zh_CN\":\"默认分组\"},\"content\":[{\"property\":\"type\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"type\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列的类型。 如果设置了selection则显示多选框; 如果设置了 index 则显示该行的索引(从 1 开始计算); 如果设置了 expand 则显示为一个可展开的按钮\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"selection\",\"value\":\"selection\"},{\"label\":\"index\",\"value\":\"index\"},{\"label\":\"expand\",\"value\":\"expand\"}]}}},{\"property\":\"index\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"index\"}},\"description\":{\"text\":{\"zh_CN\":\"如果设置了 type=index,可以通过传递 index 属性来自定义索引\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"label\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"label\"}},\"description\":{\"text\":{\"zh_CN\":\"显示的标题\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"column-key\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"column-key\"}},\"description\":{\"text\":{\"zh_CN\":\"column 的 key, column 的 key, 如果需要使用 filter-change 事件,则需要此属性标识是哪个 column 的筛选条件\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"prop\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"prop\"}},\"description\":{\"text\":{\"zh_CN\":\"字段名称 对应列内容的字段名, 也可以使用 property属性\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"width\",\"type\":\"number\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"width\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列的宽度\"}},\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}}},{\"property\":\"min-width\",\"type\":\"number\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"min-width\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列的最小宽度, 对应列的最小宽度, 与 width 的区别是 width 是固定的,min-width 会把剩余宽度按比例分配给设置了 min-width 的列\"}},\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}}},{\"property\":\"fixed\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"fixed\"}},\"description\":{\"text\":{\"zh_CN\":\"列是否固定在左侧或者右侧。 true 表示固定在左侧\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"sortable\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"sortable\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列是否可以排序\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"sort-method\",\"type\":\"function\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"sort-method\"}},\"description\":{\"text\":{\"zh_CN\":\"指定数据按照哪个属性进行排序,仅当sortable设置为true的时候有效。 应该如同 Array.sort 那样返回一个 Number\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"sort-by\",\"type\":\"array\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"sort-by\"}},\"description\":{\"text\":{\"zh_CN\":\"指定数据按照哪个属性进行排序,仅当 sortable 设置为 true 且没有设置 sort-method 的时候有效。 如果 sort-by 为数组,则先按照第 1 个属性排序,如果第 1 个相等,再按照第 2 个排序,以此类推\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"sort-orders\",\"type\":\"array\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"sort-orders\"}},\"description\":{\"text\":{\"zh_CN\":\"数据在排序时所使用排序策略的轮转顺序,仅当 sortable 为 true 时有效。 需传入一个数组,随着用户点击表头,该列依次按照数组中元素的顺序进行排序\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"resizable\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"resizable\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列是否可以通过拖动改变宽度(需要在 el-table 上设置 border 属性为真)\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"formatter\",\"type\":\"function\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"formatter\"}},\"description\":{\"text\":{\"zh_CN\":\"用来格式化内容\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"dataType\":\"JSFunction\"}}},{\"property\":\"show-overflow-tooltip\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"show-overflow-tooltip\"}},\"description\":{\"text\":{\"zh_CN\":\"当内容过长被隐藏时显示 tooltip\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"align\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"align\"}},\"description\":{\"text\":{\"zh_CN\":\"对齐方式\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"center\",\"value\":\"center\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"header-align\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"header-align\"}},\"description\":{\"text\":{\"zh_CN\":\"表头对齐方式, 若不设置该项,则使用表格的对齐方式\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"center\",\"value\":\"center\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"class-name\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"class-name\"}},\"description\":{\"text\":{\"zh_CN\":\"列的 className\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"label-class-name\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"label-class-name\"}},\"description\":{\"text\":{\"zh_CN\":\"当前列标题的自定义类名\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"selectable\",\"type\":\"function\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"selectable\"}},\"description\":{\"text\":{\"zh_CN\":\"仅对 type=selection 的列有效,类型为 Function,Function 的返回值用来决定这一行的 CheckBox 是否可以勾选\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"reserve-selection\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"reserve-selection\"}},\"description\":{\"text\":{\"zh_CN\":\"数据刷新后是否保留选项,仅对 type=selection 的列有效, 请注意, 需指定 row-key 来让这个功能生效。\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"filters\",\"type\":\"array\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filters\"}},\"description\":{\"text\":{\"zh_CN\":\"数据刷新后是否保留选项,仅对 type=selection 的列有效, 请注意, 需指定 row-key 来让这个功能生效。\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"filter-placement\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"filter-placement\"}},\"description\":{\"text\":{\"zh_CN\":\"过滤弹出框的定位\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"filter-multiple\",\"type\":\"string\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filter-multiple\"}},\"description\":{\"text\":{\"zh_CN\":\"数据过滤的选项是否多选\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"filter-method\",\"type\":\"function\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filter-method\"}},\"description\":{\"text\":{\"zh_CN\":\"数据过滤使用的方法, 如果是多选的筛选项,对每一条数据会执行多次,任意一次返回 true 就会显示\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"filtered-value\",\"type\":\"array\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filtered-value\"}},\"description\":{\"text\":{\"zh_CN\":\"选中的数据过滤项,如果需要自定义表头过滤的渲染方式,可能会需要此属性\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}}]}],\"widget\":{\"component\":\"TableColumnsConfigurator\",\"props\":{\"type\":\"object\",\"textField\":\"label\",\"language\":\"json\",\"buttonText\":\"编辑列配置\",\"title\":\"编辑列配置\",\"expand\":true}},\"description\":{\"zh_CN\":\"表格列的配置信息\"},\"labelPosition\":\"top\"},{\"property\":\"max-height\",\"label\":{\"text\":{\"zh_CN\":\"最大高度\"}},\"description\":{\"zh_CN\":\"Table 的最大高度。\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"number\",\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"height\",\"label\":{\"text\":{\"zh_CN\":\"表格高度\"}},\"description\":{\"zh_CN\":\"Table 的高度, 默认为自动高度。 这个高度会设置为 Table 的 style.height 的值,Table 的高度会受控于外部样式。\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"stripe\",\"label\":{\"text\":{\"zh_CN\":\"斑马纹\"}},\"description\":{\"zh_CN\":\"是否为斑马纹 table\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"纵向边框\"}},\"description\":{\"zh_CN\":\"是否带有纵向边框\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"表格尺寸\"}},\"description\":{\"zh_CN\":\"Table 的尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"fit\",\"label\":{\"text\":{\"zh_CN\":\"列宽自撑开\"}},\"description\":{\"zh_CN\":\"列的宽度是否自撑开\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"show-header\",\"label\":{\"text\":{\"zh_CN\":\"显示表头\"}},\"description\":{\"zh_CN\":\"是否显示表头\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"highlight-current-row\",\"label\":{\"text\":{\"zh_CN\":\"高亮当前行\"}},\"description\":{\"zh_CN\":\"是否要高亮当前行\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"current-row-key\",\"label\":{\"text\":{\"zh_CN\":\"当前行的 key\"}},\"description\":{\"zh_CN\":\"当前行的 key,只写属性\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"row-class-name\",\"label\":{\"text\":{\"zh_CN\":\"行的类名\"}},\"description\":{\"zh_CN\":\"行的 className\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"row-key\",\"label\":{\"text\":{\"zh_CN\":\"行数据的 Key\"}},\"description\":{\"zh_CN\":\"行数据的 Key,用来优化 Table 的渲染; 在使用reserve-selection功能与显示树形数据时,该属性是必填的。 类型为 String 时,支持多层访问:user.info.id,但不支持 user.info[0].id,此种情况请使用 Function\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"empty-text\",\"label\":{\"text\":{\"zh_CN\":\"空数据文本\"}},\"description\":{\"zh_CN\":\"空数据时显示的文本内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"table-layout\",\"label\":{\"text\":{\"zh_CN\":\"表格布局方式\"}},\"description\":{\"zh_CN\":\"设置表格单元、行和列的布局方式\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"defaultValue\":\"fixed\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"fixed\",\"value\":\"fixed\"},{\"label\":\"auto\",\"value\":\"auto\"}]}},\"device\":[]},{\"property\":\"scrollbar-always-on\",\"label\":{\"text\":{\"zh_CN\":\"显示滚动条\"}},\"description\":{\"zh_CN\":\"总是显示滚动条\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"flexible\",\"label\":{\"text\":{\"zh_CN\":\"主轴最小尺寸\"}},\"description\":{\"zh_CN\":\"确保主轴的最小尺寸,以便不超过内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onSelect\":{\"label\":{\"zh_CN\":\"勾选数据行的 Checkbox 时触发\"},\"description\":{\"zh_CN\":\"当用户手动勾选数据行的 Checkbox 时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"selection\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项\"}},{\"name\":\"row\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前行\"}}],\"returns\":{}}},\"onSelectAll\":{\"label\":{\"zh_CN\":\"勾选全选时触发\"},\"description\":{\"zh_CN\":\"当用户手动勾选全选 Checkbox 时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"selection\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项\"}}],\"returns\":{}}},\"onSelectionChange\":{\"label\":{\"zh_CN\":\"选择项发生变化时会触发\"},\"description\":{\"zh_CN\":\"当选择项发生变化时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"selection\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项\"}}],\"returns\":{}}},\"onCellMouseEnter\":{\"label\":{\"zh_CN\":\"单元格 hover 时会触发\"},\"description\":{\"zh_CN\":\"当单元格 hover 进入时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"row\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前行\"}},{\"name\":\"column\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前列\"}},{\"name\":\"cell\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前单元格\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生事件 event\"}}],\"returns\":{}}},\"onCellMouseLeave\":{\"label\":{\"zh_CN\":\"单元格 hover 退出时会触发\"},\"description\":{\"zh_CN\":\"当单元格 hover 退出时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"row\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前行\"}},{\"name\":\"column\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前列\"}},{\"name\":\"cell\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前单元格\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生事件 event\"}}],\"returns\":{}}}},\"slots\":{\"empty\":{\"label\":{\"zh_CN\":\"empty\"},\"description\":{\"zh_CN\":\"当数据为空时自定义的内容\"}},\"append\":{\"label\":{\"zh_CN\":\"append\"},\"description\":{\"zh_CN\":\"插入至表格最后一行之后的内容, 如果需要对表格的内容进行无限滚动操作,可能需要用到这个 slot。 若表格有合计行,该 slot 会位于合计行之上。\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":[\"ElTableColumn\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (6, '2.4.2', '{\"zh_CN\":\"表单\"}', 'ElTableColumn', 'table', '用于展示多条结构类似的数据, 可对数据进行排序、筛选、对比或其他自定义操作', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElTableColumn\"}', '表单组件', 'element-plus', NULL, NULL, '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[],\"description\":{\"zh_CN\":\"\"}}],\"events\":{},\"slots\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (7, '3.20.0', '{\"zh_CN\":\"走马灯子项\"}', 'TinyCarouselItem', 'carouselitem', '常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CarouselItem\"}', 'component', '容器组件', 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"名称\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"幻灯片的名字,可用作 setActiveItem 的参数\"},\"labelPosition\":\"left\"},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"幻灯片的标题\"},\"labelPosition\":\"left\"},{\"property\":\"indicator-position\",\"label\":{\"text\":{\"zh_CN\":\"指示器位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"outside\",\"value\":\"outside\"},{\"label\":\"none\",\"value\":\"none\"}]}},\"description\":{\"zh_CN\":\"指示器的位置\"},\"labelPosition\":\"left\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (8, '3.20.0', '{\"zh_CN\":\"走马灯\"}', 'TinyCarousel', 'carousel', '常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Carousel\"}', 'component', '容器组件', 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"arrow\",\"label\":{\"text\":{\"zh_CN\":\"箭头显示时机\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"总是显示\",\"value\":\"always\"},{\"label\":\"鼠标悬停时显示\",\"value\":\"hover\"},{\"label\":\"从不显示\",\"value\":\"never\"}]}},\"description\":{\"zh_CN\":\"切换箭头的显示时机\"}},{\"property\":\"autoplay\",\"label\":{\"text\":{\"zh_CN\":\"自动切换\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否自动切换\"},\"labelPosition\":\"left\"},{\"property\":\"tabs\",\"label\":{\"text\":{\"zh_CN\":\"选项卡\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"\",\"cols\":12,\"bindState\":false,\"widget\":{\"component\":\"ContainerConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"tabs 选项卡\"},\"labelPosition\":\"none\"},{\"property\":\"height\",\"label\":{\"text\":{\"zh_CN\":\"高度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"走马灯的高度\"}},{\"property\":\"indicator-position\",\"label\":{\"text\":{\"zh_CN\":\"位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"走马灯外部\",\"value\":\"outside\"},{\"label\":\"不显示\",\"value\":\"none\"}]}},\"description\":{\"zh_CN\":\"指示器的位置\"}},{\"property\":\"initial-index\",\"label\":{\"text\":{\"zh_CN\":\"初始索引\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"初始状态激活的幻灯片的索引,从 0 开始 \"}},{\"property\":\"interval\",\"label\":{\"text\":{\"zh_CN\":\"自动切换间隔\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自动切换的时间间隔,单位为毫秒\"}},{\"property\":\"loop\",\"label\":{\"text\":{\"zh_CN\":\"循环显示\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否循环显示\"},\"labelPosition\":\"left\"},{\"property\":\"show-title\",\"label\":{\"text\":{\"zh_CN\":\"显示标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示标题\"},\"labelPosition\":\"left\"},{\"property\":\"trigger\",\"label\":{\"text\":{\"zh_CN\":\"触发方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"点击\",\"value\":\"click\"},{\"label\":\"悬停\",\"value\":\"hover\"}]}},\"description\":{\"zh_CN\":\"指示器的触发方式,默认为 hover\"}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"水平\",\"value\":\"horizontal\"},{\"label\":\"垂直\",\"value\":\"vertical\"},{\"label\":\"卡片\",\"value\":\"card\"}]}},\"description\":{\"zh_CN\":\"走马灯的类型\"}}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"clickCapture\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyCarouselItem\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (9, '3.20.0', '{\"zh_CN\":\"提示框\"}', 'a', 'link', '链接', '', '', '', '', 'proCode', '{}', 'component', 'basic', 7, '[{\"name\":{\"zh_CN\":\"链接\"},\"icon\":\"link\",\"screenshot\":\"\",\"snippetName\":\"a\",\"schema\":{\"componentName\":\"a\",\"children\":\"链接\"}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"children\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlTextConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"类型\"},\"labelPosition\":\"none\"},{\"property\":\"href\",\"label\":{\"text\":{\"zh_CN\":\"链接\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"指定链接的 URL\"},\"labelPosition\":\"left\"},{\"property\":\"target\",\"label\":{\"text\":{\"zh_CN\":\"打开方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"当前页面\",\"value\":\"_self\"},{\"label\":\"打开新页面\",\"value\":\"_blank\"}]}},\"description\":{\"zh_CN\":\"指定链接的打开方式,例如在当前窗口中打开或在新窗口中打开。\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}]}', '{\"loop\":true,\"condition\":true,\"slots\":[],\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[]},\"contextMenu\":{\"actions\":[],\"disable\":[]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (10, '3.20.0', '{\"zh_CN\":\"标题\"}', '[h1, h2, h3, h4, h5, h6]', 'h16', '标题', '', '', '', '', 'proCode', '{}', 'component', 'html', 20, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"children\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlTextConfigurator\",\"props\":{\"showRadioButton\":true}},\"description\":{\"zh_CN\":\"\"},\"labelPosition\":\"none\"},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"\"},\"labelPosition\":\"none\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (11, '3.20.0', '{\"zh_CN\":\"段落\"}', 'p', 'paragraph', '段落', '', '', '', '', 'proCode', '{}', 'component', 'basic', 30, '[{\"name\":{\"zh_CN\":\"段落\"},\"icon\":\"paragraph\",\"screenshot\":\"\",\"snippetName\":\"p\",\"schema\":{\"componentName\":\"p\",\"children\":\"TinyEngine 前端可视化设计器致力于通过友好的用户交互提升业务应用的开发效率。\"}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"children\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlTextConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"类型\"},\"labelPosition\":\"none\"},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[]},\"contextMenu\":{\"actions\":[],\"disable\":[]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (12, '3.20.0', '{\"zh_CN\":\"输入框\"}', 'input', 'input', '输入框', '', '', '', '', 'proCode', '{}', 'component', 'html', 40, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"checkbox\",\"value\":\"checkbox\"},{\"label\":\"color\",\"value\":\"color\"},{\"label\":\"date\",\"value\":\"date\"},{\"label\":\"button\",\"value\":\"button\"},{\"label\":\"email\",\"value\":\"email\"},{\"label\":\"file\",\"value\":\"file\"},{\"label\":\"hidden\",\"value\":\"hidden\"},{\"label\":\"image\",\"value\":\"image\"},{\"label\":\"month\",\"value\":\"month\"},{\"label\":\"number\",\"value\":\"number\"},{\"label\":\"password\",\"value\":\"password\"},{\"label\":\"radio\",\"value\":\"radio\"},{\"label\":\"range\",\"value\":\"range\"},{\"label\":\"reset\",\"value\":\"reset\"},{\"label\":\"search\",\"value\":\"search\"},{\"label\":\"submit\",\"value\":\"submit\"},{\"label\":\"text\",\"value\":\"text\"},{\"label\":\"time\",\"value\":\"time\"},{\"label\":\"week\",\"value\":\"week\"},{\"label\":\"url\",\"value\":\"url\"}]}},\"description\":{\"zh_CN\":\"类型\"}},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位符\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"占位符\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onChange\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (13, '3.20.0', '{\"zh_CN\":\"视频\"}', 'video', 'video', '视频', '', '', '', '', 'proCode', '{}', 'component', 'basic', 50, '[{\"name\":{\"zh_CN\":\"视频\"},\"icon\":\"video\",\"screenshot\":\"\",\"snippetName\":\"video\",\"schema\":{\"componentName\":\"video\",\"props\":{\"src\":\"img/webNova.jpg\",\"width\":\"200\",\"height\":\"100\",\"style\":\"border:1px solid #ccc\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"src\",\"label\":{\"text\":{\"zh_CN\":\"资源\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"视频的 URL\"}},{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"播放器宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"视频播放器的宽度\"}},{\"property\":\"height\",\"label\":{\"text\":{\"zh_CN\":\"播放器高度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"视频播放器的高度\"}},{\"property\":\"controls\",\"label\":{\"text\":{\"zh_CN\":\"显示控件\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示控件\"},\"labelPosition\":\"left\"},{\"property\":\"autoplay\",\"label\":{\"text\":{\"zh_CN\":\"马上播放\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否马上播放\"},\"labelPosition\":\"left\"},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[]},\"contextMenu\":{\"actions\":[],\"disable\":[]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (14, '3.20.0', '{\"zh_CN\":\"Img\"}', 'Img', 'Image', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 60, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"src\",\"type\":\"string\",\"defaultValue\":\"\",\"bindState\":true,\"label\":{\"text\":{\"zh_CN\":\"资源\"}},\"cols\":12,\"rules\":[],\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"src路径\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{},\"shortcuts\":{\"properties\":[\"src\"]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (15, '3.20.0', '{\"zh_CN\":\"Button\"}', 'button', 'button', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 70, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', '{\"isContainer\":true}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (16, '3.20.0', '{\"zh_CN\":\"表格\"}', 'table', 'table', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 80, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格的宽度\"}},{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"边框宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格边框的宽度\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (17, '3.20.0', '{\"zh_CN\":\"表格单元格\"}', 'td', 'td', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 90, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"colspan\",\"label\":{\"text\":{\"zh_CN\":\"合并列\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单元格可横跨的列数\"}},{\"property\":\"rowspan\",\"label\":{\"text\":{\"zh_CN\":\"合并行\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单元格可横跨的行数\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (18, '3.20.0', '{\"zh_CN\":\"表单\"}', 'form', 'form', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 100, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"名称\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单的名称\"}},{\"property\":\"action\",\"label\":{\"text\":{\"zh_CN\":\"提交地址\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"提交表单时向何处发送表单数据\"}},{\"property\":\"method\",\"label\":{\"text\":{\"zh_CN\":\"HTTP方法\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"get\",\"value\":\"get\"},{\"label\":\"post\",\"value\":\"post\"}]}},\"description\":{\"zh_CN\":\"用于发送 form-data 的 HTTP 方法\"}}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', '{\"isContainer\":true}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (19, '3.20.0', '{\"zh_CN\":\"表单标签\"}', 'label', 'label', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 110, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"for\",\"label\":{\"text\":{\"zh_CN\":\"label绑定表单元素\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"label 绑定到哪个表单元素\"}},{\"property\":\"form\",\"label\":{\"text\":{\"zh_CN\":\"label字段所属表单\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"label 字段所属的一个或多个表单\"}}]}],\"events\":{},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (20, '3.20.0', '{\"zh_CN\":\"按钮组\"}', 'TinyButtonGroup', 'buttonGroup', '以按钮组的方式出现,常用于多项类似操作', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"ButtonGroup\"}', 'component', 'basic', 2, '[{\"name\":{\"zh_CN\":\"互斥按钮组\"},\"icon\":\"buttons\",\"screenshot\":\"\",\"snippetName\":\"TinyButtonGroup\",\"schema\":{\"componentName\":\"TinyButtonGroup\",\"props\":{\"data\":[{\"text\":\"Button1\",\"value\":\"1\"},{\"text\":\"Button2\",\"value\":\"2\"},{\"text\":\"Button3\",\"value\":\"3\"}],\"modelValue\":\"1\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"配置按钮组数据\"}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"大小\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"mini\",\"value\":\"mini\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"medium\",\"value\":\"medium\"}]}},\"description\":{\"zh_CN\":\"组件大小\"},\"labelPosition\":\"left\"},{\"property\":\"plain\",\"label\":{\"text\":{\"zh_CN\":\"朴素按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否是朴素按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (21, '3.20.0', '{\"zh_CN\":\"row\"}', 'TinyRow', 'row', '定义 Layout 的行配置信息', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Row\"}', 'component', NULL, 5, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"layout\",\"label\":{\"text\":{\"zh_CN\":\"布局\"}},\"cols\":12,\"widget\":{\"component\":\"LayoutGridConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"选择布局方式\"},\"labelPosition\":\"none\"},{\"property\":\"align\",\"label\":{\"text\":{\"zh_CN\":\"子项对齐方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"top\",\"value\":\"top\"},{\"label\":\"middle\",\"value\":\"middle\"},{\"label\":\"bottom\",\"value\":\"bottom\"}]}},\"description\":{\"zh_CN\":\"子项的副轴对齐方向,可取值:top, middle, bottom\"}},{\"property\":\"flex\",\"label\":{\"text\":{\"zh_CN\":\"flex容器\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否为flex容器\"},\"labelPosition\":\"left\"},{\"property\":\"gutter\",\"label\":{\"text\":{\"zh_CN\":\"子项间隔\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"子项的间隔的像素\"}}]}]}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (22, '3.20.0', '{\"zh_CN\":\"row\"}', 'TinyLayout', 'row', '定义 Layout 的行配置信息', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Layout\",\"version\":\"3.20.0\",\"destructuring\":true,\"script\":\"https://unpkg.com/@opentiny/vue-runtime@~3.20/dist3/tiny-vue-pc.mjs\",\"css\":\"https://unpkg.com/@opentiny/vue-theme@~3.20/index.css\"}', 'component', 'layout', 5, '[{\"name\":{\"zh_CN\":\"栅格布局\"},\"icon\":\"row\",\"screenshot\":\"\",\"snippetName\":\"TinyLayout\",\"schema\":{\"componentName\":\"TinyLayout\",\"props\":{},\"children\":[{\"componentName\":\"TinyRow\",\"props\":{\"style\":\"padding: 10px;\"},\"children\":[{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}}]},{\"componentName\":\"TinyRow\",\"props\":{\"style\":\"padding: 10px;\"},\"children\":[{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"cols\",\"label\":{\"text\":{\"zh_CN\":\"总栅格数\"}},\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"12\",\"value\":12},{\"label\":\"24\",\"value\":24}]}},\"description\":{\"zh_CN\":\"选择总栅格数\"},\"labelPosition\":\"none\"},{\"property\":\"tag\",\"label\":{\"text\":{\"zh_CN\":\"layout渲染的标签\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"定义Layout元素渲染后的标签,默认为 div\"}}]}]}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyRow\",\"TinyCol\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (23, '3.20.0', '{\"zh_CN\":\"表单\"}', 'TinyForm', 'form', '由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Form\"}', 'component', NULL, 5, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"label-width\",\"label\":{\"text\":{\"zh_CN\":\"标签宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单中标签占位宽度,默认为 80px\"},\"labelPosition\":\"left\"},{\"property\":\"inline\",\"label\":{\"text\":{\"zh_CN\":\"行内布局\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"行内布局模式,默认为 false\"},\"labelPosition\":\"left\"},{\"property\":\"label-align\",\"label\":{\"text\":{\"zh_CN\":\"必填标识占位\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"必填标识 * 是否占位\"},\"labelPosition\":\"left\"},{\"property\":\"label-suffix\",\"label\":{\"text\":{\"zh_CN\":\"标签后缀\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单中标签后缀\"},\"labelPosition\":\"left\"},{\"property\":\"label-position\",\"label\":{\"text\":{\"zh_CN\":\"标签位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"left \",\"value\":\"left \"},{\"label\":\"top\",\"value\":\"top\"}]}},\"description\":{\"zh_CN\":\"表单中标签的布局位置\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"校验属性\"},\"content\":[{\"property\":\"model\",\"label\":{\"text\":{\"zh_CN\":\"数据对象\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单数据对象\"},\"labelPosition\":\"top\"},{\"property\":\"rules\",\"label\":{\"text\":{\"zh_CN\":\"校验规则\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单验证规则\"},\"labelPosition\":\"top\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onValidate\":{\"label\":{\"zh_CN\":\"表单项被校验后触发\"},\"description\":{\"zh_CN\":\"表单项被校验后触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"function\",\"type\":\"Function\",\"defaultValue\":\"(valid) => {}\",\"description\":{\"zh_CN\":\"校验回调函数\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (24, '3.20.0', '{\"zh_CN\":\"表单项\"}', 'TinyFormItem', 'formitem', '由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"FormItem\"}', 'component', NULL, 12, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"label\",\"label\":{\"text\":{\"zh_CN\":\"标签文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"标签\",\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标签文本\"},\"labelPosition\":\"left\"},{\"property\":\"prop\",\"label\":{\"text\":{\"zh_CN\":\"校验字段\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单域 model 字段,在使用 validate、resetFields 方法的情况下,该属性是必填的\"},\"labelPosition\":\"left\"},{\"property\":\"required\",\"label\":{\"text\":{\"zh_CN\":\"必填\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否必填\"},\"labelPosition\":\"left\"}]}],\"events\":{},\"slots\":{\"label\":{\"label\":{\"zh_CN\":\"字段名\"},\"description\":{\"zh_CN\":\"自定义显示字段名称\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":[\"TinyForm\"],\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label\",\"rules\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (25, '3.20.0', '{\"zh_CN\":\"col\"}', 'TinyCol', 'col', '列配置信息', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Col\"}', 'component', NULL, 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"span\",\"label\":{\"text\":{\"zh_CN\":\"栅格列格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"整行\",\"value\":12},{\"label\":\"6格\",\"value\":6},{\"label\":\"4格\",\"value\":4},{\"label\":\"3格\",\"value\":3},{\"label\":\"1格\",\"value\":1}]}},\"description\":{\"zh_CN\":\"当一行分为12格时,一列可占位多少格\"}},{\"property\":\"move\",\"label\":{\"text\":{\"zh_CN\":\"栅格移动格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":-12,\"max\":12}},\"description\":{\"zh_CN\":\"栅格左右移动格数(正数向右,负数向左)\"}},{\"property\":\"no\",\"label\":{\"text\":{\"zh_CN\":\"排序编号\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"max\":12}},\"description\":{\"zh_CN\":\"排序编号(row中启用order生效)\"}},{\"property\":\"offset\",\"label\":{\"text\":{\"zh_CN\":\"间隔格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":0,\"max\":12}},\"description\":{\"zh_CN\":\"栅格左侧的间隔格数\"}},{\"property\":\"xs\",\"label\":{\"text\":{\"zh_CN\":\"超小屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"<768px 响应式栅格数\"}},{\"property\":\"sm\",\"label\":{\"text\":{\"zh_CN\":\"小屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥768px 响应式栅格数\"}},{\"property\":\"md\",\"label\":{\"text\":{\"zh_CN\":\"中屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥992px 响应式栅格数\"}},{\"property\":\"lg\",\"label\":{\"text\":{\"zh_CN\":\"大屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥1200px 响应式栅格数\"}},{\"property\":\"xl\",\"label\":{\"text\":{\"zh_CN\":\"超大屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥1920px 响应式栅格数\"}}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label\",\"rules\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (26, '3.20.0', '{\"zh_CN\":\"按钮\"}', 'TinyButton', 'button', '常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮、下拉按钮等类型', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Button\"}', 'component', 'basic', 2, '[{\"name\":{\"zh_CN\":\"按钮\"},\"icon\":\"button\",\"screenshot\":\"\",\"snippetName\":\"TinyButton\",\"schema\":{\"componentName\":\"TinyButton\",\"props\":{\"text\":\"按钮文案\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"text\",\"type\":\"string\",\"defaultValue\":\"按钮文案\",\"label\":{\"text\":{\"zh_CN\":\"按钮文字\"}},\"cols\":12,\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"按钮文字\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"type\":\"select\",\"label\":{\"text\":{\"zh_CN\":\"大小\"}},\"cols\":12,\"rules\":[],\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"按钮大小\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否被禁用\"},\"labelPosition\":\"left\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"primary\",\"value\":\"primary\"},{\"label\":\"success\",\"value\":\"success\"},{\"label\":\"info\",\"value\":\"info\"},{\"label\":\"warning\",\"value\":\"warning\"},{\"label\":\"danger\",\"value\":\"danger\"},{\"label\":\"text\",\"value\":\"text\"}]}},\"description\":{\"zh_CN\":\"设置不同的主题样式\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"round\",\"label\":{\"text\":{\"zh_CN\":\"圆角\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否圆角按钮\"},\"labelPosition\":\"left\"},{\"property\":\"plain\",\"label\":{\"text\":{\"zh_CN\":\"朴素按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否为朴素按钮\"},\"labelPosition\":\"left\"},{\"property\":\"reset-time\",\"label\":{\"text\":{\"zh_CN\":\"禁用时间\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置禁用时间,防止重复提交,单位毫秒\"},\"labelPosition\":\"left\"},{\"property\":\"circle\",\"label\":{\"text\":{\"zh_CN\":\"圆形按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否圆形按钮\"},\"labelPosition\":\"left\"},{\"property\":\"autofocus\",\"label\":{\"text\":{\"zh_CN\":\"自动聚焦\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否默认聚焦\"},\"labelPosition\":\"left\"},{\"property\":\"loading\",\"label\":{\"text\":{\"zh_CN\":\"加载中样式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否展示位加载中样式\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击事件\"},\"description\":{\"zh_CN\":\"按钮被点击时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"text\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (27, '3.20.0', '{\"zh_CN\":\"输入框\"}', 'TinyInput', 'input', '通过鼠标或键盘输入字符', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Input\"}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"输入框\"},\"icon\":\"input\",\"screenshot\":\"\",\"snippetName\":\"TinyInput\",\"schema\":{\"componentName\":\"TinyInput\",\"props\":{\"placeholder\":\"请输入\",\"modelValue\":\"\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"textarea\",\"value\":\"textarea\"},{\"label\":\"text\",\"value\":\"text\"},{\"label\":\"password\",\"value\":\"password\"}]}},\"description\":{\"zh_CN\":\"设置input框的type属性\"},\"labelPosition\":\"left\"},{\"property\":\"rows\",\"label\":{\"text\":{\"zh_CN\":\"行数\"}},\"widget\":{\"component\":\"NumberConfigurator\"},\"description\":{\"zh_CN\":\"输入框行数,只对 type=\'textarea\' 有效\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"输入框尺寸。该属性的可选值为 medium / small / mini\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"maxlength\",\"label\":{\"text\":{\"zh_CN\":\"最大输入长度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置 input 框的maxLength\"}},{\"property\":\"autofocus\",\"label\":{\"text\":{\"zh_CN\":\"自动聚焦\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自动获取焦点\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框改变后的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{\"prefix\":{\"label\":{\"zh_CN\":\"前置内容\"}},\"suffix\":{\"label\":{\"zh_CN\":\"后置内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (28, '3.20.0', '{\"zh_CN\":\"单选\"}', 'TinyRadio', 'radio', '用于配置不同场景的选项,在一组备选项中进行单选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Radio\"}', 'component', 'form', 3, '[{\"name\":{\"zh_CN\":\"单选\"},\"icon\":\"radio\",\"screenshot\":\"\",\"snippetName\":\"TinyRadio\",\"schema\":{\"componentName\":\"TinyRadio\",\"props\":{\"label\":\"1\",\"text\":\"单选文本\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文本内容\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单选框文本内容\"}},{\"property\":\"label\",\"label\":{\"text\":{\"zh_CN\":\"选中值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"props\":{}},\"description\":{\"zh_CN\":\"radio 选中时的值\"}},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"}]},{\"label\":{\"zh_CN\":\"其他\"},\"description\":{\"zh_CN\":\"\"},\"content\":[{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"显示边框\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示边框\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单选框的尺寸,仅在 border 为true时有效\"}},{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"原生name属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生 name 属性\"}}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值变化事件\"},\"description\":{\"zh_CN\":\"绑定值变化时触发的事件\"}},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"visible\",\"width\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (29, '3.20.0', '{\"zh_CN\":\"下拉框\"}', 'TinySelect', 'select', 'Select 选择器是一种通过点击弹出下拉列表展示数据并进行选择的 UI 组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Select\"}', 'component', 'form', 8, '[{\"name\":{\"zh_CN\":\"下拉框\"},\"icon\":\"select\",\"screenshot\":\"\",\"snippetName\":\"TinySelect\",\"schema\":{\"componentName\":\"TinySelect\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请选择\",\"options\":[{\"value\":\"1\",\"label\":\"黄金糕\"},{\"value\":\"2\",\"label\":\"双皮奶\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"searchable\",\"label\":{\"text\":{\"zh_CN\":\"下拉可搜索\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"下拉面板是否可搜索\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"options\",\"label\":{\"text\":{\"zh_CN\":\"选项数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"配置 Select 下拉数据项\"},\"labelPosition\":\"top\"},{\"property\":\"multiple\",\"label\":{\"text\":{\"zh_CN\":\"多选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否允许输入框输入或选择多个项\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"multiple-limit\",\"label\":{\"text\":{\"zh_CN\":\"最大可选值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"多选时用户最多可以选择的项目数,为 0 则不限制\"},\"labelPosition\":\"left\"},{\"property\":\"popper-class\",\"label\":{\"text\":{\"zh_CN\":\"下拉框类名\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置下拉框自定义的类名\"},\"labelPosition\":\"left\"},{\"property\":\"collapse-tags\",\"label\":{\"text\":{\"zh_CN\":\"多选展示\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"多选时是否将选中值按文字的形式展示\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在下拉框值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"下拉框选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onRemoveTag\":{\"label\":{\"zh_CN\":\"多选模式下移除tag时触发\"},\"description\":{\"zh_CN\":\"多选模式下移除tag时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"被移除Tag对应数据项的值字段\"}}],\"returns\":{}},\"defaultValue\":\"\"}},\"onBeforeMount\":\"console.log(\'table on load\'); this.options = source.data\"}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"multiple\",\"options\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (30, '3.20.0', '{\"zh_CN\":\"开关\"}', 'TinySwitch', 'switch', 'Switch 在两种状态间切换选择', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Switch\"}', 'component', 'form', 9, '[{\"name\":{\"zh_CN\":\"开关\"},\"icon\":\"switch\",\"screenshot\":\"\",\"snippetName\":\"TinySwitch\",\"schema\":{\"componentName\":\"TinySwitch\",\"props\":{\"modelValue\":\"\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否被禁用\"},\"labelPosition\":\"left\"},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"绑定默认值\"},\"labelPosition\":\"left\"},{\"property\":\"true-value\",\"label\":{\"text\":{\"zh_CN\":\"设置打开值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置打开时的值(Boolean / String / Number)\"},\"labelPosition\":\"left\"},{\"property\":\"false-value\",\"label\":{\"text\":{\"zh_CN\":\"设置关闭值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置关闭时的值(Boolean / String / Number)\"},\"labelPosition\":\"left\"},{\"property\":\"mini\",\"label\":{\"text\":{\"zh_CN\":\"迷你尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示为 mini 模式\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"点击事件\"},\"description\":{\"zh_CN\":\"按钮被点击时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"开关的状态值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的开关状态值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"mini\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (31, '3.20.0', '{\"zh_CN\":\"搜索框\"}', 'TinySearch', 'search', '指定条件对象进行搜索数据', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Search\"}', 'component', 'basic', 2, '[{\"name\":{\"zh_CN\":\"搜索框\"},\"icon\":\"search\",\"screenshot\":\"\",\"snippetName\":\"TinySearch\",\"schema\":{\"componentName\":\"TinySearch\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"输入关键词\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"默认值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框内的默认搜索值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否被禁用\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框内的提示占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清空按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置显示清空图标按钮\"},\"labelPosition\":\"left\"},{\"property\":\"isEnterSearch\",\"label\":{\"text\":{\"zh_CN\":\"Enter键触发\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否在按下键盘Enter键的时候触发search事件\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"mini\",\"label\":{\"text\":{\"zh_CN\":\"迷你尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"迷你模式,配置为true时,搜索默认显示为一个带图标的圆形按钮,点击后展开\"},\"labelPosition\":\"left\"},{\"property\":\"transparent\",\"label\":{\"text\":{\"zh_CN\":\"透明模式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"配置为true时,边框变为透明且收缩后半透明显示,一般用在带有背景的场景,默认 false\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"输入完成时触发\"},\"description\":{\"zh_CN\":\"在 input 框中输入完成时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"type\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"搜索类型,默认值为 {} \"}},{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前input框中值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onSearch\":{\"label\":{\"zh_CN\":\"点击搜索按钮时触发\"},\"description\":{\"zh_CN\":\"展开状态点击搜索按钮时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"type\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"搜索类型,默认值为 {} \"}},{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前input框中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"clearable\",\"mini\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (32, '3.20.0', '{\"zh_CN\":\"复选框\"}', 'TinyCheckbox', 'checkbox', '用于配置不同场景的选项,提供用户可在一组选项中进行多选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Checkbox\"}', 'component', 'form', 4, '[{\"name\":{\"zh_CN\":\"复选框\"},\"icon\":\"checkbox\",\"screenshot\":\"\",\"snippetName\":\"TinyCheckbox\",\"schema\":{\"componentName\":\"TinyCheckbox\",\"props\":{\"text\":\"复选框文案\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"checked\",\"label\":{\"text\":{\"zh_CN\":\"勾选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当前是否勾选\"},\"labelPosition\":\"left\"},{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"复选框的文本\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"边框\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示边框\"},\"labelPosition\":\"left\"},{\"property\":\"false-label\",\"label\":{\"text\":{\"zh_CN\":\"未选中的值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"没有选中时的值\"},\"labelPosition\":\"left\"},{\"property\":\"true-label\",\"label\":{\"text\":{\"zh_CN\":\"选择时的值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"选中时的值\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"勾选值改变后将触发\"},\"description\":{\"zh_CN\":\"勾选值改变后将触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"border\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (33, '3.20.0', '{\"zh_CN\":\"复选按钮\"}', 'TinyCheckboxButton', 'checkboxbutton', '用于配置不同场景的选项,提供用户可在一组选项中进行多选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CheckboxButton\"}', 'component', NULL, 1, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"checked\",\"label\":{\"text\":{\"zh_CN\":\"勾选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当前是否勾选\"},\"labelPosition\":\"left\"},{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"按钮文本\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"勾选值改变后将触发\"},\"description\":{\"zh_CN\":\"勾选值改变后将触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"array\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"text\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (34, '3.20.0', '{\"zh_CN\":\"复选按钮组\"}', 'TinyCheckboxGroup', 'checkboxgroup', '用于配置不同场景的选项,提供用户可在一组选项中进行多选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CheckboxGroup\"}', 'component', 'form', 2, '[{\"name\":{\"zh_CN\":\"复选框组\"},\"icon\":\"checkboxs\",\"screenshot\":\"\",\"snippetName\":\"TinyCheckboxGroup\",\"schema\":{\"componentName\":\"TinyCheckboxGroup\",\"props\":{\"modelValue\":[\"name1\",\"name2\"],\"type\":\"checkbox\",\"options\":[{\"text\":\"复选框1\",\"label\":\"name1\"},{\"text\":\"复选框2\",\"label\":\"name2\"},{\"text\":\"复选框3\",\"label\":\"name3\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"dataType\":\"Array\"}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"options\",\"label\":{\"text\":{\"zh_CN\":\"选项列表\"}},\"defaultValue\":[{\"label\":\"标签2\"},{\"label\":\"标签2\"}],\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"checkbox组件列表\"},\"labelPosition\":\"top\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"button\",\"value\":\"button\"},{\"label\":\"checkbox\",\"value\":\"checkbox\"}]}},\"description\":{\"zh_CN\":\"checkbox组件类型(button/checkbox),该属性的默认值为 checkbox,配合 options 属性一起使用\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"勾选值改变后将触发\"},\"description\":{\"zh_CN\":\"勾选值改变后将触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"array\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"type\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (35, '3.20.0', '{\"zh_CN\":\"对话框\"}', 'TinyDialogBox', 'dialogbox', '模态对话框,在浮层中显示,引导用户进行相关操作。', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"DialogBox\"}', 'component', 'data-display', 4, '[{\"name\":{\"zh_CN\":\"对话框\"},\"icon\":\"dialogbox\",\"screenshot\":\"\",\"snippetName\":\"TinyDialogBox\",\"schema\":{\"componentName\":\"TinyDialogBox\",\"props\":{\"visible\":true,\"show-close\":true,\"title\":\"dialogBox title\"},\"children\":[{\"componentName\":\"div\"}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"弹出框标题\"},\"labelPosition\":\"left\"},{\"property\":\"visible\",\"label\":{\"text\":{\"zh_CN\":\"显示与隐藏\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"控制弹出框显示与关闭\"},\"labelPosition\":\"left\"},{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"弹出框的宽度\"},\"labelPosition\":\"left\"},{\"property\":\"draggable\",\"label\":{\"text\":{\"zh_CN\":\"可拖拽\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否开启弹窗的拖拽功能,默认值为 false 。\"},\"labelPosition\":\"left\"},{\"property\":\"center\",\"label\":{\"text\":{\"zh_CN\":\"居中\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"弹出框的头部与底部内容会自动居中\"},\"labelPosition\":\"left\"},{\"property\":\"dialog-class\",\"label\":{\"text\":{\"zh_CN\":\"自定义类名\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自定义配置弹窗类名\"},\"labelPosition\":\"left\"},{\"property\":\"append-to-body\",\"label\":{\"text\":{\"zh_CN\":\"插入到Body\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"DialogBox 本身是否插入到 body 上,嵌套的 Dialog 必须指定该属性并赋值为 true\"},\"labelPosition\":\"left\"},{\"property\":\"show-close\",\"label\":{\"text\":{\"zh_CN\":\"关闭按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示关闭按钮,默认值为 true 。\"},\"labelPosition\":\"left\"}]}],\"selector\":\".TinyDialogBox\",\"events\":{\"onClose\":{\"label\":{\"zh_CN\":\"关闭弹窗时触发\"},\"description\":{\"zh_CN\":\"Dialog 关闭的回调\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:visible\":{\"label\":{\"zh_CN\":\"双向绑定的状态改变时触发\"},\"description\":{\"zh_CN\":\"显示或隐藏的状态值,发生改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"boolean\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的显示或隐藏的状态值\"}}],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{\"title\":{\"label\":{\"zh_CN\":\"标题区\"},\"description\":{\"zh_CN\":\"Dialog 标题区的内容\"}},\"footer\":{\"label\":{\"zh_CN\":\"按钮操作区\"},\"description\":{\"zh_CN\":\"Dialog 按钮操作区的内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":true,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\".tiny-dialog-box\",\"shortcuts\":{\"properties\":[\"visible\",\"width\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (36, '3.20.0', '{\"zh_CN\":\"标签页\"}', 'TinyTabs', 'tabs', '分隔内容上有关联但属于不同类别的数据集合', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Tabs\"}', 'component', 'navigation', 10, '[{\"name\":{\"zh_CN\":\"标签页\"},\"icon\":\"tabs\",\"screenshot\":\"\",\"snippetName\":\"TinyTabs\",\"schema\":{\"componentName\":\"TinyTabs\",\"props\":{\"modelValue\":\"first\"},\"children\":[{\"componentName\":\"TinyTabItem\",\"props\":{\"title\":\"标签页1\",\"name\":\"first\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"style\":\"margin:10px 0 0 30px\"}}]},{\"componentName\":\"TinyTabItem\",\"props\":{\"title\":\"标签页2\",\"name\":\"second\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"style\":\"margin:10px 0 0 30px\"}}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"showEditIcon\",\"label\":{\"text\":{\"zh_CN\":\"显示编辑图标\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示标题后编辑 ICON\"},\"labelPosition\":\"left\"},{\"property\":\"tabs\",\"label\":{\"text\":{\"zh_CN\":\"选项卡\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"\",\"cols\":12,\"bindState\":false,\"widget\":{\"component\":\"ContainerConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"tabs 选项卡\"},\"labelPosition\":\"none\"},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"绑定值,选中选项卡的 name\"},\"labelPosition\":\"left\"},{\"property\":\"with-add\",\"label\":{\"text\":{\"zh_CN\":\"标签新增\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标签是否可增加\"},\"labelPosition\":\"left\"},{\"property\":\"with-close\",\"label\":{\"text\":{\"zh_CN\":\"可关闭\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标签是否可关闭\"},\"labelPosition\":\"left\"},{\"property\":\"tab-style\",\"label\":{\"text\":{\"zh_CN\":\"标签页样式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"card\",\"value\":\"card\"},{\"label\":\"border-card\",\"value\":\"border-card\"}]}},\"description\":{\"zh_CN\":\"标签页样式\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击页签时触发事件\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"component\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前点击的页签对象\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onEdit\":{\"label\":{\"zh_CN\":\"点击新增按钮或关闭按钮或者编辑按钮后触发\"},\"description\":{\"zh_CN\":\"点击新增按钮或关闭按钮或者编辑按钮后触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"tab\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前操作的页签对象\"}},{\"name\":\"type\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前操作的类型(remove || add || edit)\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClose\":{\"label\":{\"zh_CN\":\"关闭页签时触发\"},\"description\":{\"zh_CN\":\"关闭页签时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"name\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"页签名称\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"clickCapture\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyTabItem\"],\"parentWhitelist\":[],\"descendantBlacklist\":[],\"ancestorWhitelist\":[]},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"size\",\"tab-style\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (37, '3.20.0', '{\"zh_CN\":\"tab页签\"}', 'TinyTabItem', 'tabitem', 'tab 标签页', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"TabItem\"}', 'component', NULL, 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"唯一标识\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"唯一标识\"}},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标题\"}}]}],\"events\":{},\"slots\":{\"title\":{\"label\":{\"zh_CN\":\"标题\"},\"description\":{\"zh_CN\":\"自定义标题\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":[\"TinyTab\"],\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"name\",\"title\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (38, '3.20.0', '{\"zh_CN\":\"面包屑\"}', 'TinyBreadcrumb', 'breadcrumb', '告诉访问者他们目前在网站中的位置以及如何返回', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Breadcrumb\"}', 'component', 'navigation', 1, '[{\"name\":{\"zh_CN\":\"面包屑\"},\"icon\":\"breadcrumb\",\"screenshot\":\"\",\"snippetName\":\"TinyBreadcrumb\",\"schema\":{\"componentName\":\"TinyBreadcrumb\",\"props\":{\"options\":[{\"to\":\"{ path: \'/\' }\",\"label\":\"首页\"},{\"to\":\"{ path: \'/breadcrumb\' }\",\"label\":\"产品\"},{\"replace\":\"true\",\"label\":\"软件\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"separator\",\"label\":{\"text\":{\"zh_CN\":\"分隔符\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自定义分隔符\"},\"labelPosition\":\"left\"},{\"property\":\"options\",\"label\":{\"text\":{\"zh_CN\":\"配置数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"单独使用 Breadcrumb,通过 option 配置生成面包屑\"},\"labelPosition\":\"top\"},{\"property\":\"textField\",\"label\":{\"text\":{\"zh_CN\":\"键值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"指定面包屑的显示键值,结合 options 使用\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onSelect\":{\"label\":{\"zh_CN\":\"选择 breadcrumb 时触发\"},\"description\":{\"zh_CN\":\"选择 breadcrumb 时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"clickCapture\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyBreadcrumbItem\"],\"parentWhitelist\":[],\"descendantBlacklist\":[],\"ancestorWhitelist\":[]},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"separator\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (39, '3.20.0', '{\"zh_CN\":\"面包屑项\"}', 'TinyBreadcrumbItem', 'breadcrumb', '', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"BreadcrumbItem\"}', 'component', NULL, 1, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"to\",\"label\":{\"text\":{\"zh_CN\":\"路由跳转\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"路由跳转对象,同 vue-router 的 to\"}}]}],\"slots\":{\"default\":{\"label\":{\"zh_CN\":\"面包屑项标签\"},\"description\":{\"zh_CN\":\"面包屑项\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":[\"TinyBreadcrumb\"],\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"to\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (40, '3.20.0', '{\"zh_CN\":\"折叠面板\"}', 'TinyCollapse', 'collapse', '内容区可指定动态页面或自定义 html 等,支持展开收起操作', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Collapse\"}', 'component', 'data-display', 3, '[{\"name\":{\"zh_CN\":\"折叠面板\"},\"icon\":\"collapse\",\"screenshot\":\"\",\"snippetName\":\"TinyCollapse\",\"schema\":{\"componentName\":\"TinyCollapse\",\"props\":{\"modelValue\":\"collapse1\"},\"children\":[{\"componentName\":\"TinyCollapseItem\",\"props\":{\"name\":\"collapse1\",\"title\":\"折叠项1\"},\"children\":[{\"componentName\":\"div\"}]},{\"componentName\":\"TinyCollapseItem\",\"props\":{\"name\":\"collapse2\",\"title\":\"折叠项2\"},\"children\":[{\"componentName\":\"div\"}]},{\"componentName\":\"TinyCollapseItem\",\"props\":{\"name\":\"collapse3\",\"title\":\"折叠项3\"},\"children\":[{\"componentName\":\"div\"}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"当前激活面板\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定当前激活的面板\"}}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"激活面板改变时触发\"},\"description\":{\"zh_CN\":\"当前激活面板改变时触发(如果是手风琴模式,参数 activeNames 类型为string,否则为array)\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"data\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前激活面板的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前激活面板的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (41, '3.20.0', '{\"zh_CN\":\"折叠面板项\"}', 'TinyCollapseItem', 'collapseitem', '内容区可指定动态页面或自定义 html 等,支持展开收起操作', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CollapseItem\"}', 'component', NULL, 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"唯一标识符\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"唯一标识符: String | Number\"},\"labelPosition\":\"left\"},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"面板标题\"},\"labelPosition\":\"left\"}]}],\"events\":{},\"slots\":{\"title\":{\"label\":{\"zh_CN\":\"标题\"},\"description\":{\"zh_CN\":\"自定义标题\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (42, '3.20.0', '{\"zh_CN\":\"表格\"}', 'TinyGrid', 'grid', '提供了非常强大数据表格功能,可以展示数据列表,可以对数据列表进行选择、编辑等', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Grid\"}', 'component', 'table', 2, '[{\"name\":{\"zh_CN\":\"表格\"},\"icon\":\"grid\",\"screenshot\":\"\",\"snippetName\":\"tinyGrid\",\"schema\":{\"componentName\":\"TinyGrid\",\"props\":{\"editConfig\":{\"trigger\":\"click\",\"mode\":\"cell\",\"showStatus\":true},\"columns\":[{\"type\":\"index\",\"width\":60},{\"type\":\"selection\",\"width\":60},{\"field\":\"employees\",\"title\":\"员工数\"},{\"field\":\"created_date\",\"title\":\"创建日期\"},{\"field\":\"city\",\"title\":\"城市\"}],\"data\":[{\"id\":\"1\",\"name\":\"GFD科技有限公司\",\"city\":\"福州\",\"employees\":800,\"created_date\":\"2014-04-30 00:56:00\",\"boole\":false},{\"id\":\"2\",\"name\":\"WWW科技有限公司\",\"city\":\"深圳\",\"employees\":300,\"created_date\":\"2016-07-08 12:36:22\",\"boole\":true}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础属性\"},\"description\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"表格数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"onChange\":\"this.delProp(\'fetchData\')\",\"description\":{\"zh_CN\":\"设置表格的数据\"},\"labelPosition\":\"top\"},{\"property\":\"columns\",\"label\":{\"text\":{\"zh_CN\":\"表格列\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"properties\":[{\"label\":{\"zh_CN\":\"默认分组\"},\"content\":[{\"property\":\"title\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"列标题\"}},\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}}},{\"property\":\"field\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"列键值\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"sortable\",\"type\":\"boolean\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"是否排序\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"labelPosition\":\"left\"},{\"property\":\"width\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"列宽\"}},\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}}},{\"property\":\"formatText\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"内置渲染器\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"整数\",\"value\":\"integer\"},{\"label\":\"小数\",\"value\":\"number\"},{\"label\":\"金额\",\"value\":\"money\"},{\"label\":\"百分比\",\"value\":\"rate\"},{\"label\":\"布尔\",\"value\":\"boole\"},{\"label\":\"年月日\",\"value\":\"date\"},{\"label\":\"年月日时分\",\"value\":\"dateTime\"},{\"label\":\"时间\",\"value\":\"time\"},{\"label\":\"省略\",\"value\":\"ellipsis\"}]}}},{\"property\":\"renderer\",\"type\":\"object\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"渲染函数\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"dataType\":\"JSFunction\"}}},{\"property\":\"slots\",\"type\":\"object\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"插槽\"}},\"labelPosition\":\"none\",\"widget\":{\"component\":\"JsSlotConfigurator\",\"props\":{\"slots\":[\"header\",\"default\"]}}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"列类型\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"索引列\",\"value\":\"index\"},{\"label\":\"单选列\",\"value\":\"radio\"},{\"label\":\"多选列\",\"value\":\"selection\"},{\"label\":\"展开列\",\"value\":\"expand\"}],\"clearable\":true}},\"description\":{\"zh_CN\":\"设置内置列的类型,该属性的可选值为 index(序号)/ selection(复选框)/ radio(单选框)/ expand(展开行)\"},\"labelPosition\":\"left\"},{\"property\":\"editor\",\"label\":{\"text\":{\"zh_CN\":\"编辑配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"单元格编辑渲染配置项,也可以是函数 Function(h, params)\"}},{\"property\":\"filter\",\"label\":{\"text\":{\"zh_CN\":\"筛选配置\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"设置表格列的筛选配置信息。默认值为 false 不配置筛选信息\"}},{\"property\":\"showOverflow\",\"label\":{\"text\":{\"zh_CN\":\"内容超出部分省略号配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"只显示省略号\",\"value\":\"ellipsis\"},{\"label\":\"显示为原生 title\",\"value\":\"title\"},{\"label\":\"显示为 tooltip 提示\",\"value\":\"tooltip\"}],\"clearable\":true}},\"description\":{\"zh_CN\":\"设置内置列的内容超出部分显示省略号配置,该属性的可选值为 ellipsis(只显示省略号)/ title(显示为原生 title)/ tooltip(显示为 tooltip 提示)\"},\"labelPosition\":\"top\"}]}],\"widget\":{\"component\":\"ArrayItemConfigurator\",\"props\":{\"type\":\"object\",\"textField\":\"title\",\"language\":\"json\",\"buttonText\":\"编辑列配置\",\"title\":\"编辑列配置\",\"expand\":true}},\"description\":{\"zh_CN\":\"表格列的配置信息\"},\"labelPosition\":\"left\"},{\"property\":\"fetchData\",\"label\":{\"text\":{\"zh_CN\":\"服务端查询\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"onChange\":\"function () { this.delProp(\'data\') } \",\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"name\":\"fetchData\",\"dataType\":\"JSExpression\"}},\"description\":{\"zh_CN\":\"服务端数据查询方法\"},\"labelPosition\":\"top\"},{\"property\":\"pager\",\"label\":{\"text\":{\"zh_CN\":\"分页配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"defaultValue\":{\"attrs\":{\"currentPage\":1}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"name\":\"pager\",\"dataType\":\"JSExpression\"}},\"description\":{\"zh_CN\":\"分页配置,需结合fetchData使用\"},\"labelPosition\":\"top\"},{\"property\":\"resizable\",\"label\":{\"text\":{\"zh_CN\":\"调整列宽\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否允许调整列宽\"},\"labelPosition\":\"left\"},{\"property\":\"row-id\",\"label\":{\"text\":{\"zh_CN\":\"行数据主键\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"placeholder\":\"比如:id\"}},\"description\":{\"zh_CN\":\"自定义行数据唯一主键的字段名(行数据必须要有唯一主键,默认自动生成)\"},\"labelPosition\":\"left\"},{\"property\":\"select-config\",\"label\":{\"text\":{\"zh_CN\":\"行复选框配置\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"dataType\":\"JSExpression\"}},\"description\":{\"zh_CN\":\"表格行数据复选框配置项\"}},{\"property\":\"edit-rules\",\"label\":{\"text\":{\"zh_CN\":\"校验规则\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格校验规则配置项\"},\"labelPosition\":\"top\"},{\"property\":\"edit-config\",\"label\":{\"text\":{\"zh_CN\":\"编辑配置项\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格编辑配置项\"},\"labelPosition\":\"top\"},{\"property\":\"expand-config\",\"label\":{\"text\":{\"zh_CN\":\"展开行配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"展开行配置项\"},\"labelPosition\":\"top\"},{\"property\":\"sortable\",\"label\":{\"text\":{\"zh_CN\":\"可排序\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否允许列数据排序。默认为 true 可排序\"},\"labelPosition\":\"left\"}]},{\"label\":{\"zh_CN\":\"其他\"},\"description\":{\"zh_CN\":\"其他属性\"},\"content\":[{\"property\":\"auto-resize\",\"label\":{\"text\":{\"zh_CN\":\"响应式监听\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格属性设置 autoResize 属性开启响应式表格宽高的同时,将高度height设置为auto就可以自动跟随父容器高度。\"},\"labelPosition\":\"left\"},{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"边框\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否带有纵向边框\"},\"labelPosition\":\"left\"},{\"property\":\"seq-serial\",\"label\":{\"text\":{\"zh_CN\":\"行号连续\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置行序号是否连续,开启分页时有效,该属性的默认值为 false\"},\"labelPosition\":\"left\"},{\"property\":\"highlight-current-row\",\"label\":{\"text\":{\"zh_CN\":\"高亮当前行\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"高亮当前行\"},\"labelPosition\":\"left\"},{\"property\":\"highlight-hover-row\",\"label\":{\"text\":{\"zh_CN\":\"移入行高亮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"鼠标移到行是否要高亮显示\"},\"labelPosition\":\"left\"},{\"property\":\"row-class-name\",\"label\":{\"text\":{\"zh_CN\":\"设置行高亮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"给行附加 className,也可以是函数 Function({seq, row, rowIndex, $rowIndex})\"},\"labelPosition\":\"top\"},{\"property\":\"max-height\",\"label\":{\"text\":{\"zh_CN\":\"内容最大高度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置表格内容区域(不含表格头部,底部)的最大高度。\"}},{\"property\":\"row-span\",\"label\":{\"text\":{\"zh_CN\":\"行合并\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置行合并,该属性仅适用于普通表格,不可与 tree-config 同时使用\"},\"labelPosition\":\"top\"}]}],\"events\":{\"onFilterChange\":{\"label\":{\"zh_CN\":\"筛选条件改变时触发改事件\"},\"description\":{\"zh_CN\":\"配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"{$table,filters} 包含 table 实例对象和过滤条件的对象\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onSortChange\":{\"label\":{\"zh_CN\":\"点击列头,执行数据排序前触发的事件\"},\"description\":{\"zh_CN\":\"配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"{$table,filters} 包含 table 实例对象和过滤条件的对象\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onSelectAll\":{\"label\":{\"zh_CN\":\"当手动勾选全选时触发的事件\"},\"description\":{\"zh_CN\":\"只对 type=selection 有效,当手动勾选全选时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" 包含 table 实例对象\"}},{\"name\":\"checked\",\"type\":\"boolean\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"勾选状态\"}},{\"name\":\"selction\",\"type\":\"Array\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中的表格数据数组\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onSelectChange\":{\"label\":{\"zh_CN\":\"手动勾选并且值发生改变时触发的事件\"},\"description\":{\"zh_CN\":\"只对 type=selection 有效,当手动勾选并且值发生改变时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" table 实例对象\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" 原生 Event\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onToggleExpandChange\":{\"label\":{\"zh_CN\":\"当行展开或收起时会触发该事件\"},\"description\":{\"zh_CN\":\"当行展开或收起时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"{$table,row,rowIndex} 包含 table 实例对象和当前行数据的对象\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" 原生 Event\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onCurrentChange\":{\"label\":{\"zh_CN\":\"行点击时触发\"},\"description\":{\"zh_CN\":\"行点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[\"sortable\",\"columns\"]},\"contentMenu\":{\"actions\":[\"create symbol\"]},\"onBeforeMount\":\"console.log(\'table on load\'); this.pager = source.pager; this.fetchData = source.fetchData; this.data = source.data ;this.columns = source.columns\"}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"sortable\",\"columns\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (43, '3.20.0', '{\"zh_CN\":\"分页\"}', 'TinyPager', 'pager', '当数据量过多时,使用分页分解数据,常用于 Grid 和 Repeater 组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Pager\"}', 'component', 'table', 1, '[{\"name\":{\"zh_CN\":\"分页\"},\"icon\":\"pager\",\"screenshot\":\"\",\"snippetName\":\"TinyPager\",\"schema\":{\"componentName\":\"TinyPager\",\"props\":{\"layout\":\"total, sizes, prev, pager, next\",\"total\":100,\"pageSize\":10,\"currentPage\":1}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"currentPage\",\"label\":{\"text\":{\"zh_CN\":\"当前页数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当前页数,支持 .sync 修饰符\"},\"labelPosition\":\"left\"},{\"property\":\"pageSize\",\"label\":{\"text\":{\"zh_CN\":\"每页条数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"每页显示条目个数\"},\"labelPosition\":\"left\"},{\"property\":\"pageSizes\",\"label\":{\"text\":{\"zh_CN\":\"可选每页条数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置可选择的每页显示条数\"}},{\"property\":\"total\",\"label\":{\"text\":{\"zh_CN\":\"总条数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"数据总条数\"},\"labelPosition\":\"left\"},{\"property\":\"layout\",\"label\":{\"text\":{\"zh_CN\":\"布局\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"defaultValue\":\"total,sizes,prev, pager, next\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"type\":\"textarea\"}},\"description\":{\"zh_CN\":\"组件布局,子组件名用逗号分隔\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onCurrentChange \":{\"label\":{\"zh_CN\":\"切换页码时触发\"},\"description\":{\"zh_CN\":\"切换页码时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onPrevClick \":{\"label\":{\"zh_CN\":\"点击上一页按钮时触发\"},\"description\":{\"zh_CN\":\"点击上一页按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"page\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页的页码值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onNextClick\":{\"label\":{\"zh_CN\":\"点击下一页按钮时触发\"},\"description\":{\"zh_CN\":\"点击上一页按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"page\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页的页码值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"currentPage\",\"total\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (44, '3.20.0', '{\"zh_CN\":\"弹出编辑\"}', 'TinyPopeditor', 'popEditor', '该组件只能在弹出的面板中选择数据,不能手动输入数据;弹出面板中显示为 Tree 组件或者 Grid 组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Popeditor\"}', 'component', 'data-display', 6, '[{\"name\":{\"zh_CN\":\"弹出编辑\"},\"icon\":\"popeditor\",\"screenshot\":\"\",\"snippetName\":\"TinyPopeditor\",\"schema\":{\"componentName\":\"TinyPopeditor\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请选择\",\"gridOp\":{\"columns\":[{\"field\":\"id\",\"title\":\"ID\",\"width\":40},{\"field\":\"name\",\"title\":\"名称\",\"showOverflow\":\"tooltip\"},{\"field\":\"province\",\"title\":\"省份\",\"width\":80},{\"field\":\"city\",\"title\":\"城市\",\"width\":80}],\"data\":[{\"id\":\"1\",\"name\":\"GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司\",\"city\":\"福州\",\"province\":\"福建\"},{\"id\":\"2\",\"name\":\"WWW科技有限公司\",\"city\":\"深圳\",\"province\":\"广东\"},{\"id\":\"3\",\"name\":\"RFV有限责任公司\",\"city\":\"中山\",\"province\":\"广东\"},{\"id\":\"4\",\"name\":\"TGB科技有限公司\",\"city\":\"龙岩\",\"province\":\"福建\"},{\"id\":\"5\",\"name\":\"YHN科技有限公司\",\"city\":\"韶关\",\"province\":\"广东\"},{\"id\":\"6\",\"name\":\"WSX科技有限公司\",\"city\":\"黄冈\",\"province\":\"武汉\"}]}}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"show-clear-btn\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出面板的宽度(单位像素)\"},\"labelPosition\":\"left\"},{\"property\":\"conditions\",\"label\":{\"text\":{\"zh_CN\":\"过滤条件\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当弹出面板配置的是表格时,设置弹出面板中的过滤条件\"},\"labelPosition\":\"top\"},{\"property\":\"grid-op\",\"label\":{\"text\":{\"zh_CN\":\"面板表格配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出面板中表格组件的配置信息\"}},{\"property\":\"pager-op\",\"label\":{\"text\":{\"zh_CN\":\"分页配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出编辑框中分页配置\"},\"labelPosition\":\"top\"},{\"property\":\"multi\",\"label\":{\"text\":{\"zh_CN\":\"多选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出面板中的数据是否可多选\"},\"labelPosition\":\"left\"},{\"property\":\"show-pager\",\"label\":{\"text\":{\"zh_CN\":\"启用分页\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当 popseletor 为 grid 时才能生效,配置为 true 后还需配置 pagerOp 属性\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"选中值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项的值\"}},{\"name\":\"value\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中对象\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClose\":{\"label\":{\"zh_CN\":\"弹框关闭时触发的事件\"},\"description\":{\"zh_CN\":\"弹框关闭时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onPageChange\":{\"label\":{\"zh_CN\":\"分页切换事件\"},\"description\":{\"zh_CN\":\"表格模式下分页切换事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页码数\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"modelValue\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (45, '3.20.0', '{\"zh_CN\":\"树\"}', 'TinyTree', 'tree', '可进行展示有父子层级的数据,支持选择,异步加载等功能。但不推荐用它来展示菜单,展示菜单推荐使用树菜单', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Tree\"}', 'component', 'data-display', 12, '[{\"name\":{\"zh_CN\":\"树\"},\"icon\":\"tree\",\"screenshot\":\"\",\"snippetName\":\"TinyTree\",\"schema\":{\"componentName\":\"TinyTree\",\"props\":{\"data\":[{\"label\":\"一级 1\",\"children\":[{\"label\":\"二级 1-1\",\"children\":[{\"label\":\"三级 1-1-1\"}]}]},{\"label\":\"一级 2\",\"children\":[{\"label\":\"二级 2-1\",\"children\":[{\"label\":\"三级 2-1-1\"}]},{\"label\":\"二级 2-2\",\"children\":[{\"label\":\"三级 2-2-1\"}]}]}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"show-checkbox\",\"label\":{\"text\":{\"zh_CN\":\"多选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置接口是否可以多选\"},\"labelPosition\":\"left\"},{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"数据源\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":[{\"label\":\"一级 1\",\"children\":[{\"label\":\"二级 1-1\"}]}],\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"可配置静态数据源和动态数据源\"},\"labelPosition\":\"top\"},{\"property\":\"node-key\",\"label\":{\"text\":{\"zh_CN\":\"唯一标识\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点唯一标识属性名称\"},\"labelPosition\":\"left\"},{\"property\":\"render-content\",\"label\":{\"text\":{\"zh_CN\":\"渲染函数\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"disabled\":true,\"placeholder\":\"请使用变量绑定来绑定函数\"}},\"description\":{\"zh_CN\":\"树节点的内容区的渲染函数\"}},{\"property\":\"icon-trigger-click-node\",\"label\":{\"text\":{\"zh_CN\":\"触发NodeClick事件\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"点击图标展开节点时是否触发 node-click 事件\"},\"labelPosition\":\"left\"},{\"property\":\"expand-icon\",\"label\":{\"text\":{\"zh_CN\":\"展开图标\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点展开图标\"},\"labelPosition\":\"top\"},{\"property\":\"shrink-icon\",\"label\":{\"text\":{\"zh_CN\":\"收缩图标\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点收缩的图标\"},\"labelPosition\":\"top\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"check-on-click-node\",\"label\":{\"text\":{\"zh_CN\":\"点击节点选中\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否在点击节点的时候选中节点,默认值为 false,即只有在点击复选框时才会选中节点\"},\"labelPosition\":\"left\"},{\"property\":\"filter-node-method\",\"label\":{\"text\":{\"zh_CN\":\"筛选函数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点筛选函数\"},\"labelPosition\":\"top\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onCheck\":{\"label\":{\"zh_CN\":\"勾选节点后的事件\"},\"description\":{\"zh_CN\":\"勾选节点后的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"data\",\"type\":\"object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中节点信息\"}},{\"name\":\"currentNode\",\"type\":\"object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onNodeClick\":{\"label\":{\"zh_CN\":\"点击节点后的事件\"},\"description\":{\"zh_CN\":\"点击节点后的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"data\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中节点信息\"}},{\"name\":\"node\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性\"}},{\"name\":\"vm\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"树组件实例\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"data\",\"show-checkbox\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (46, '3.20.0', '{\"zh_CN\":\"时间线\"}', 'TinyTimeLine', 'timeline', 'TimeLine 时间线', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"TimeLine\"}', 'component', 'navigation', 3, '[{\"name\":{\"zh_CN\":\"时间线\"},\"icon\":\"timeline\",\"screenshot\":\"\",\"snippetName\":\"TinyTimeLine\",\"schema\":{\"componentName\":\"TinyTimeLine\",\"props\":{\"active\":\"2\",\"data\":[{\"name\":\"已下单\"},{\"name\":\"运输中\"},{\"name\":\"已签收\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"horizontal\",\"type\":\"Boolean\",\"defaultValue\":{\"type\":\"i18n\",\"zh_CN\":\"布局\",\"en_US\":\"layout\",\"key\":\"\"},\"label\":{\"text\":{\"zh_CN\":\"水平布局\"}},\"cols\":12,\"rules\":[],\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点和文字横向布局\"},\"labelPosition\":\"left\"},{\"property\":\"vertical\",\"type\":\"Boolean\",\"defaultValue\":{\"type\":\"i18n\",\"zh_CN\":\"垂直布局\",\"en_US\":\"layout\",\"key\":\"\"},\"label\":{\"text\":{\"zh_CN\":\"垂直布局\"}},\"cols\":12,\"rules\":[],\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点和文字垂直布局\"},\"labelPosition\":\"left\"},{\"property\":\"active\",\"label\":{\"text\":{\"zh_CN\":\"选中值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"步骤条的选中步骤值\"},\"labelPosition\":\"left\"},{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"步骤条数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":[{\"name\":\"配置基本信息\",\"status\":\"ready\"},{\"name\":\"配置报价\",\"status\":\"wait\"},{\"name\":\"完成报价\",\"status\":\"wait\"}],\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"时间线步骤条数据\"},\"labelPosition\":\"top\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"节点的点击时触发\"},\"description\":{\"zh_CN\":\"节点的点击时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"type\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"点击节点的下标\"}},{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前节点对象:{ name: 节点名称, time: 时间 }\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"active\",\"data\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (47, '3.20.0', '{\"zh_CN\":\"文字提示框\"}', 'TinyTooltip', 'tooltip', '动态显示提示信息,一般通过鼠标事件进行响应;提供 warning、error、info、success 四种类型显示不同类别的信', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Tooltip\"}', 'component', 'data-display', 11, '[{\"name\":{\"zh_CN\":\"文字提示框\"},\"icon\":\"tooltip\",\"screenshot\":\"\",\"snippetName\":\"TinyTooltip\",\"schema\":{\"componentName\":\"TinyTooltip\",\"props\":{\"content\":\"Top Left 提示文字\",\"placement\":\"top-start\",\"manual\":true,\"modelValue\":true},\"children\":[{\"componentName\":\"span\",\"children\":[{\"componentName\":\"div\",\"props\":{}}]},{\"componentName\":\"Template\",\"props\":{\"slot\":\"content\"},\"children\":[{\"componentName\":\"span\",\"children\":[{\"componentName\":\"div\",\"props\":{\"placeholder\":\"提示内容\"}}]}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"placement\",\"label\":{\"text\":{\"zh_CN\":\"提示位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"top\",\"value\":\"top\"},{\"label\":\"top-start\",\"value\":\"top-start\"},{\"label\":\"top-end\",\"value\":\"top-end\"},{\"label\":\"bottom\",\"value\":\"bottom\"},{\"label\":\"bottom-start\",\"value\":\"bottom-start\"},{\"label\":\"bottom-end\",\"value\":\"bottom-end\"},{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"left-start\",\"value\":\"left-start\"},{\"label\":\"left-end\",\"value\":\"left-end\"},{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"right-start\",\"value\":\"right-start\"},{\"label\":\"right-end\",\"value\":\"right-end\"}]}},\"description\":{\"zh_CN\":\"Tooltip 的出现位置\"},\"labelPosition\":\"left\"},{\"property\":\"content\",\"label\":{\"text\":{\"zh_CN\":\"内容\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"提示信息\",\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"显示的内容,也可以通过 slot#content 传入 DOM\"},\"labelPosition\":\"left\"},{\"property\":\"render-content\",\"label\":{\"text\":{\"zh_CN\":\"渲染函数\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"disabled\":true,\"placeholder\":\"请使用变量绑定来绑定函数\"}},\"description\":{\"zh_CN\":\"自定义渲染函数,返回需要渲染的节点内容\"}},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"是否可见\"}},\"defaultValue\":true,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"状态是否可见\"},\"labelPosition\":\"left\"},{\"property\":\"manual\",\"label\":{\"text\":{\"zh_CN\":\"手动控制\"}},\"defaultValue\":true,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"手动控制模式,设置为 true 后,mouseenter 和 mouseleave 事件将不会生效\"},\"labelPosition\":\"left\"}]}],\"events\":{},\"slots\":{\"content\":{\"label\":{\"zh_CN\":\"提示内容\"},\"description\":{\"zh_CN\":\"自定义提示内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":true,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"content\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (48, '3.20.0', '{\"zh_CN\":\"提示框\"}', 'TinyPopover', 'popover', 'Popover可通过对一个触发源操作触发弹出框,支持自定义弹出内容,延迟触发和渐变动画', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Popover\"}', 'component', 'data-display', 7, '[{\"name\":{\"zh_CN\":\"提示框\"},\"icon\":\"popover\",\"screenshot\":\"\",\"snippetName\":\"TinyPopover\",\"schema\":{\"componentName\":\"TinyPopover\",\"props\":{\"width\":200,\"title\":\"弹框标题\",\"trigger\":\"manual\",\"modelValue\":true},\"children\":[{\"componentName\":\"Template\",\"props\":{\"slot\":\"reference\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"placeholder\":\"触发源\"}}]},{\"componentName\":\"Template\",\"props\":{\"slot\":\"default\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"placeholder\":\"提示内容\"}}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定,手动控制是否可见的状态值\"},\"labelPosition\":\"left\"},{\"property\":\"placement\",\"label\":{\"text\":{\"zh_CN\":\"位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"top\",\"value\":\"top\"},{\"label\":\"top-start\",\"value\":\"top-start\"},{\"label\":\"top-end\",\"value\":\"top-end\"},{\"label\":\"bottom\",\"value\":\"bottom\"},{\"label\":\"bottom-start\",\"value\":\"bottom-start\"},{\"label\":\"bottom-end\",\"value\":\"bottom-end\"},{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"left-start\",\"value\":\"left-start\"},{\"label\":\"left-end\",\"value\":\"left-end\"},{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"right-start\",\"value\":\"right-start\"},{\"label\":\"right-end\",\"value\":\"right-end\"}]}},\"description\":{\"zh_CN\":\"提示框位置\"},\"labelPosition\":\"left\"},{\"property\":\"trigger\",\"label\":{\"text\":{\"zh_CN\":\"触发方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"click\",\"value\":\"click\"},{\"label\":\"focus\",\"value\":\"focus\"},{\"label\":\"hover\",\"value\":\"hover\"},{\"label\":\"manual\",\"value\":\"manual\"}]}},\"description\":{\"zh_CN\":\"触发方式,该属性的可选值为 click / focus / hover / manual,该属性的默认值为 click\"},\"labelPosition\":\"left\"},{\"property\":\"popper-class\",\"label\":{\"text\":{\"zh_CN\":\"自定义类\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"为 popper 添加类名\"},\"labelPosition\":\"left\"},{\"property\":\"visible-arrow\",\"label\":{\"text\":{\"zh_CN\":\"显示箭头\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示 Tooltip 箭头\"},\"labelPosition\":\"left\"},{\"property\":\"append-to-body\",\"label\":{\"text\":{\"zh_CN\":\"添加到body上\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"Popover弹窗是否添加到body上\"},\"labelPosition\":\"left\"},{\"property\":\"arrow-offset\",\"label\":{\"text\":{\"zh_CN\":\"箭头的位置偏移\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"箭头的位置偏移,该属性的默认值为 0\"}},{\"property\":\"close-delay\",\"label\":{\"text\":{\"zh_CN\":\"延迟隐藏\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"触发方式为 hover 时的隐藏延迟,单位为毫秒\"},\"labelPosition\":\"left\"},{\"property\":\"content\",\"label\":{\"text\":{\"zh_CN\":\"显示的内容\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"显示的内容,也可以通过 slot 传入 DOM\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"Popover 是否可用\"},\"labelPosition\":\"left\"},{\"property\":\"offset\",\"label\":{\"text\":{\"zh_CN\":\"位置偏移量\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"出现位置的偏移量\"},\"labelPosition\":\"left\"},{\"property\":\"open-delay\",\"label\":{\"text\":{\"zh_CN\":\"显示延迟\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"触发方式为 hover 时的显示延迟,单位为毫秒\"},\"labelPosition\":\"left\"},{\"property\":\"popper-options\",\"label\":{\"text\":{\"zh_CN\":\"弹出层参数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"popper.js 的参数\"},\"labelPosition\":\"top\"},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"提示内容标题\"},\"labelPosition\":\"left\"},{\"property\":\"transform-origin\",\"label\":{\"text\":{\"zh_CN\":\"旋转中心点\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"组件的旋转中心点,组件的旋转中心点\"},\"labelPosition\":\"left\"},{\"property\":\"transition\",\"label\":{\"text\":{\"zh_CN\":\"渐变动画\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"该属性的默认值为 fade-in-linear\"},\"labelPosition\":\"left\"},{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"宽度\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"手动控制是否可见的状态值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"boolean\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的可见状态值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":true,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"visible\",\"width\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (49, '3.20.0', '{\"zh_CN\":\"日期选择\"}', 'TinyDatePicker', 'datepick', '用于输入或选择日期', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"DatePicker\"}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"日期选择\"},\"icon\":\"datepick\",\"screenshot\":\"\",\"snippetName\":\"TinyDatePicker\",\"schema\":{\"componentName\":\"TinyDatePicker\",\"props\":{\"placeholder\":\"请输入\",\"modelValue\":\"\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"日期\",\"value\":\"date\"},{\"label\":\"日期时间\",\"value\":\"datetime\"},{\"label\":\"周\",\"value\":\"week\"},{\"label\":\"月份\",\"value\":\"month\"},{\"label\":\"年份\",\"value\":\"year\"}]}},\"description\":{\"zh_CN\":\"设置日期框的type属性\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"readonly\",\"label\":{\"text\":{\"zh_CN\":\"只读\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否只读\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"日期框尺寸。该属性的可选值为 medium / small / mini\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"maxlength\",\"label\":{\"text\":{\"zh_CN\":\"输入最大长度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置 input 框的maxLength\"}},{\"property\":\"autofocus\",\"label\":{\"text\":{\"zh_CN\":\"聚焦\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自动获取焦点\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框改变后的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (50, '3.20.0', '{\"zh_CN\":\"数字输入框\"}', 'TinyNumeric', 'numeric', '通过鼠标或键盘输入字符', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Numeric\"}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"数字输入框\"},\"icon\":\"numeric\",\"screenshot\":\"\",\"snippetName\":\"TinyNumeric\",\"schema\":{\"componentName\":\"TinyNumeric\",\"props\":{\"allow-empty\":true,\"placeholder\":\"请输入\",\"controlsPosition\":\"right\",\"step\":1}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"allow-empty\",\"label\":{\"text\":{\"zh_CN\":\"内容可清空\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否内容可清空\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"输入框尺寸。该属性的可选值为 medium / small / mini\"},\"labelPosition\":\"left\"},{\"property\":\"controls\",\"label\":{\"text\":{\"zh_CN\":\"加减按钮\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否使用加减按钮\"},\"labelPosition\":\"left\"},{\"property\":\"controls-position\",\"label\":{\"text\":{\"zh_CN\":\"加减按钮位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"左右两侧\",\"value\":\"\"},{\"label\":\"只在右侧\",\"value\":\"right\"}]}},\"description\":{\"zh_CN\":\"加减按钮位置\"}},{\"property\":\"precision\",\"label\":{\"text\":{\"zh_CN\":\"精度\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"数值精度\"},\"labelPosition\":\"left\"},{\"property\":\"step\",\"label\":{\"text\":{\"zh_CN\":\"步长\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"步长\"},\"labelPosition\":\"left\"},{\"property\":\"max\",\"label\":{\"text\":{\"zh_CN\":\"最大数值\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"可输入的最大数值\"},\"labelPosition\":\"left\"},{\"property\":\"min\",\"label\":{\"text\":{\"zh_CN\":\"最小数值\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"可输入的最大数值\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框改变后的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` VALUES (1, '2.4.2', '{\"zh_CN\":\"输入框\"}', 'ElInput', 'input', '通过鼠标或键盘输入字符', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElInput\",\"destructuring\":true}', '表单组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"输入框\"},\"icon\":\"input\",\"screenshot\":\"\",\"snippetName\":\"ElInput\",\"schema\":{}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"description\":{\"zh_CN\":\"绑定值\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"description\":{\"zh_CN\":\"类型\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"maxlength\",\"label\":{\"text\":{\"zh_CN\":\"最大长度\"}},\"description\":{\"zh_CN\":\"最大输入长度\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"number\",\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"是否禁用\"}},\"description\":{\"zh_CN\":\"是否禁用\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定值改变时触发\"},\"description\":{\"zh_CN\":\"双向绑定值改变时触发\"}},\"onBlur\":{\"label\":{\"zh_CN\":\"输入框失去焦点时触发\"},\"description\":{\"zh_CN\":\"输入框失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{\"prefix\":{\"label\":{\"zh_CN\":\"头部内容\"},\"description\":{\"zh_CN\":\"输入框头部内容,只对非 type=\'textarea\' 有效\"}},\"suffix\":{\"label\":{\"zh_CN\":\"尾部内容\"},\"description\":{\"zh_CN\":\"输入框尾部内容,只对非 type=\'textarea\' 有效\"}},\"prepend\":{\"label\":{\"zh_CN\":\"前置内容\"},\"description\":{\"zh_CN\":\"输入框前置内容,只对非 type=\'textarea\' 有效\"}},\"append\":{\"label\":{\"zh_CN\":\"后置内容\"},\"description\":{\"zh_CN\":\"输入框后置内容,只对非 type=\'textarea\' 有效\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"type\",\"size\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEvent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (2, '2.4.2', '{\"zh_CN\":\"日期选择器\"}', 'ElDatePicker', 'datepick', '日期选择器', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElDatePicker\",\"destructuring\":true}', '表单组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"日期选择器\"},\"icon\":\"datepick\",\"screenshot\":\"\",\"snippetName\":\"ElDatePicker\",\"schema\":{}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"description\":{\"zh_CN\":\"绑定值\"},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"readonly\",\"label\":{\"text\":{\"zh_CN\":\"只读\"}},\"description\":{\"zh_CN\":\"是否只读\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"defaultValue\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"description\":{\"zh_CN\":\"是否禁用\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"defaultValue\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"输入框尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"allowClear\":true,\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"editable\",\"label\":{\"text\":{\"zh_CN\":\"是否可编辑\"}},\"description\":{\"zh_CN\":\"文本框是否可编辑\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"defaultValue\":true,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"是否可清除\"}},\"description\":{\"zh_CN\":\"是否显示清楚按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"defaultValue\":true,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"description\":{\"zh_CN\":\"非范围选择时的占位内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":\"\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"start-placeholder\",\"label\":{\"text\":{\"zh_CN\":\"起始占位文本\"}},\"description\":{\"zh_CN\":\"范围选择时开始日期的占位内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":\"\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"end-placeholder\",\"label\":{\"text\":{\"zh_CN\":\"结束占位文本\"}},\"description\":{\"zh_CN\":\"范围选择时结束日期的占位内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":\"\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"description\":{\"zh_CN\":\"显示类型\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":\"date\",\"type\":\"string\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"year\",\"value\":\"year\"},{\"label\":\"years\",\"value\":\"years\"},{\"label\":\"month\",\"value\":\"month\"},{\"label\":\"months\",\"value\":\"months\"},{\"label\":\"date\",\"value\":\"date\"},{\"label\":\"dates\",\"value\":\"dates\"},{\"label\":\"datetime\",\"value\":\"datetime\"},{\"label\":\"week\",\"value\":\"week\"},{\"label\":\"datetimerange\",\"value\":\"datetimerange\"},{\"label\":\"daterange\",\"value\":\"daterange\"},{\"label\":\"monthrange\",\"value\":\"monthrange\"},{\"label\":\"yearrange\",\"value\":\"yearrange\"}]}},\"device\":[]},{\"property\":\"popper-class\",\"label\":{\"text\":{\"zh_CN\":\"下拉框类名\"}},\"description\":{\"zh_CN\":\"DatePicker 下拉框的类名\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":\"\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定值改变时触发\"},\"description\":{\"zh_CN\":\"双向绑定值改变时触发\"}},\"onChange\":{\"label\":{\"zh_CN\":\"用户确认选定的值时触发\"},\"description\":{\"zh_CN\":\"用户确认选定的值时触发\"},\"type\":\"event\",\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"在组件 Input 失去焦点时触发\"},\"description\":{\"zh_CN\":\"在组件 Input 失去焦点时触发\"},\"type\":\"event\",\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"在组件 Input 获得焦点时触发\"},\"description\":{\"zh_CN\":\"在组件 Input 获得焦点时触发\"},\"type\":\"event\",\"defaultValue\":\"\"},\"onCalendarChange\":{\"label\":{\"zh_CN\":\"在日历所选日期更改时触发\"},\"description\":{\"zh_CN\":\"在日历所选日期更改时触发\"},\"type\":\"event\",\"defaultValue\":\"\"},\"onPanelChange\":{\"label\":{\"zh_CN\":\"当日期面板改变时触发。\"},\"description\":{\"zh_CN\":\"当日期面板改变时触发。\"},\"type\":\"event\",\"defaultValue\":\"\"},\"onVisibleChange\":{\"label\":{\"zh_CN\":\"当 DatePicker 的下拉列表出现/消失时触发\"},\"description\":{\"zh_CN\":\"当 DatePicker 的下拉列表出现/消失时触发\"},\"type\":\"event\",\"defaultValue\":\"\"}},\"slots\":{\"default\":{\"label\":{\"zh_CN\":\"自定义单元格内容\"},\"description\":{\"zh_CN\":\"自定义单元格内容\"}},\"range-separator\":{\"label\":{\"zh_CN\":\"自定义范围分割符内容\"},\"description\":{\"zh_CN\":\"自定义范围分割符内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"type\",\"size\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEvent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (3, '2.4.2', '{\"zh_CN\":\"按钮\"}', 'ElButton', 'button', '常用的操作按钮', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElButton\",\"destructuring\":true}', '基础组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"按钮\"},\"icon\":\"button\",\"screenshot\":\"\",\"snippetName\":\"ElButton\",\"schema\":{\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"按钮文本\"}}]}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"description\":{\"zh_CN\":\"类型\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"plain\",\"label\":{\"text\":{\"zh_CN\":\"朴素按钮\"}},\"description\":{\"zh_CN\":\"是否为朴素按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文字按钮\"}},\"description\":{\"zh_CN\":\"是否为文字按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"bg\",\"label\":{\"text\":{\"zh_CN\":\"背景颜色\"}},\"description\":{\"zh_CN\":\"是否显示文字按钮背景颜色\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"link\",\"label\":{\"text\":{\"zh_CN\":\"链接按钮\"}},\"description\":{\"zh_CN\":\"是否为链接按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"round\",\"label\":{\"text\":{\"zh_CN\":\"圆角按钮\"}},\"description\":{\"zh_CN\":\"是否为圆角按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"circle\",\"label\":{\"text\":{\"zh_CN\":\"圆形按钮\"}},\"description\":{\"zh_CN\":\"是否为圆形按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"loading\",\"label\":{\"text\":{\"zh_CN\":\"加载中状态\"}},\"description\":{\"zh_CN\":\"是否为加载中状态\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"description\":{\"zh_CN\":\"是否禁用\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{},\"slots\":{\"default\":{\"label\":{\"zh_CN\":\"default\"},\"description\":{\"zh_CN\":\"自定义默认内容\"}},\"loading\":{\"label\":{\"zh_CN\":\"loading\"},\"description\":{\"zh_CN\":\"自定义加载中组件\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"type\",\"size\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEvent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (4, '2.4.2', '{\"zh_CN\":\"表单\"}', 'ElForm', 'form', '表单包含 输入框, 单选框, 下拉选择, 多选框 等用户输入的组件。 使用表单,您可以收集、验证和提交数据。', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElForm\",\"destructuring\":true}', '表单组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"表单\"},\"icon\":\"form\",\"screenshot\":\"\",\"snippetName\":\"ElForm\",\"schema\":{\"children\":[{\"componentName\":\"ElFormItem\",\"props\":{\"label\":\"账号\",\"prop\":\"account\"},\"children\":[{\"componentName\":\"ElInput\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请输入账号\"}}]},{\"componentName\":\"ElFormItem\",\"props\":{\"label\":\"密码\",\"prop\":\"password\"},\"children\":[{\"componentName\":\"ElInput\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请输入密码\",\"type\":\"password\"}}]},{\"componentName\":\"ElFormItem\",\"props\":{},\"children\":[{\"componentName\":\"ElButton\",\"props\":{\"type\":\"primary\",\"style\":\"margin-right: 10px\"},\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"提交\"}}]},{\"componentName\":\"ElButton\",\"props\":{\"type\":\"primary\"},\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"重置\"}}]}]}]}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"model\",\"label\":{\"text\":{\"zh_CN\":\"数据对象\"}},\"description\":{\"zh_CN\":\"表单数据对象\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"rules\",\"label\":{\"text\":{\"zh_CN\":\"验证规则\"}},\"description\":{\"zh_CN\":\"表单验证规则\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"inline\",\"label\":{\"text\":{\"zh_CN\":\"行内模式\"}},\"description\":{\"zh_CN\":\"行内表单模式\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"label-position\",\"label\":{\"text\":{\"zh_CN\":\"标签位置\"}},\"description\":{\"zh_CN\":\"表单域标签的位置, 当设置为 left 或 right 时,则也需要设置标签宽度属性\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"right\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"top\",\"value\":\"top\"}]}}},{\"property\":\"label-width\",\"label\":{\"text\":{\"zh_CN\":\"标签宽度\"}},\"description\":{\"zh_CN\":\"标签的长度,例如 \'50px\'。 作为 Form 直接子元素的 form-item 会继承该值。 可以使用 auto。\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"label-suffix\",\"label\":{\"text\":{\"zh_CN\":\"标签后缀\"}},\"description\":{\"zh_CN\":\"表单域标签的后缀\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"hide-required-asterisk\",\"label\":{\"text\":{\"zh_CN\":\"隐藏必填星号\"}},\"description\":{\"zh_CN\":\"是否隐藏必填字段标签旁边的红色星号\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"require-asterisk-position\",\"label\":{\"text\":{\"zh_CN\":\"星号位置\"}},\"description\":{\"zh_CN\":\"星号的位置\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"left\",\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"show-message\",\"label\":{\"text\":{\"zh_CN\":\"显示校验信息\"}},\"description\":{\"zh_CN\":\"是否显示校验错误信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"inline-message\",\"label\":{\"text\":{\"zh_CN\":\"行内显示校验信息\"}},\"description\":{\"zh_CN\":\"是否以行内形式展示校验信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"status-icon\",\"label\":{\"text\":{\"zh_CN\":\"显示校验结果图标\"}},\"description\":{\"zh_CN\":\"是否在输入框中显示校验结果反馈图标\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"validate-on-rule-change\",\"label\":{\"text\":{\"zh_CN\":\"触发验证\"}},\"description\":{\"zh_CN\":\"是否在 rules 属性改变后立即触发一次验证\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"用于控制该表单内组件的尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"description\":{\"zh_CN\":\"是否禁用该表单内的所有组件。 如果设置为 true, 它将覆盖内部组件的 disabled 属性\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"scroll-to-error\",\"label\":{\"text\":{\"zh_CN\":\"滚动到错误项\"}},\"description\":{\"zh_CN\":\"当校验失败时,滚动到第一个错误表单项\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onValidate\":{\"label\":{\"zh_CN\":\"任一表单项被校验后触发\"},\"description\":{\"zh_CN\":\"任一表单项被校验后触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":[\"ElFormItem\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEvent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (5, '2.4.2', '{\"zh_CN\":\"表单子项\"}', 'ElFormItem', 'formItem', '表单包含 输入框, 单选框, 下拉选择, 多选框 等用户输入的组件。 使用表单,您可以收集、验证和提交数据。', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElFormItem\",\"destructuring\":true}', '表单组件', 'element-plus', NULL, NULL, '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"prop\",\"label\":{\"text\":{\"zh_CN\":\"键名\"}},\"description\":{\"zh_CN\":\"model 的键名。 它可以是一个属性的值(如 a.b.0 或 [a\', \'b\', \'0\'])。 在定义了 validate、resetFields 的方法时,该属性是必填的\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"label\",\"label\":{\"text\":{\"zh_CN\":\"标签文本\"}},\"description\":{\"zh_CN\":\"标签文本\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"label-width\",\"label\":{\"text\":{\"zh_CN\":\"标签宽度\"}},\"description\":{\"zh_CN\":\"标签宽度,例如 \'50px\'。 可以使用 auto\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"required\",\"label\":{\"text\":{\"zh_CN\":\"必填项\"}},\"description\":{\"zh_CN\":\"是否为必填项,如不设置,则会根据校验规则确认\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"rules\",\"label\":{\"text\":{\"zh_CN\":\"验证规则\"}},\"description\":{\"zh_CN\":\"表单验证规则, 更多内容可以参考async-validator\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"error\",\"label\":{\"text\":{\"zh_CN\":\"错误信息\"}},\"description\":{\"zh_CN\":\"表单域验证错误时的提示信息。设置该值会导致表单验证状态变为 error,并显示该错误信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"show-message\",\"label\":{\"text\":{\"zh_CN\":\"显示错误信息\"}},\"description\":{\"zh_CN\":\"是否显示校验错误信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"inline-message\",\"label\":{\"text\":{\"zh_CN\":\"行内显示错误信息\"}},\"description\":{\"zh_CN\":\"是否在行内显示校验信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"用于控制该表单内组件的尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"for\",\"label\":{\"text\":{\"zh_CN\":\"for\"}},\"description\":{\"zh_CN\":\"和原生标签相同能力\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"validate-status\",\"label\":{\"text\":{\"zh_CN\":\"校验状态\"}},\"description\":{\"zh_CN\":\"formItem 校验的状态\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"error\",\"value\":\"error\"},{\"label\":\"validating\",\"value\":\"validating\"},{\"label\":\"success\",\"value\":\"success\"}]}}}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{},\"slots\":{\"label\":{\"label\":{\"zh_CN\":\"label\"},\"description\":{\"zh_CN\":\"标签位置显示的内容\"}},\"error\":{\"label\":{\"zh_CN\":\"error\"},\"description\":{\"zh_CN\":\"验证错误信息的显示内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEvent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (6, '2.4.2', '{\"zh_CN\":\"表单\"}', 'ElTable', 'table', '用于展示多条结构类似的数据, 可对数据进行排序、筛选、对比或其他自定义操作', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElTable\",\"destructuring\":true}', '数据展示', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"表格\"},\"icon\":\"grid\",\"screenshot\":\"\",\"snippetName\":\"ElTable\",\"schema\":{\"props\":{\"data\":[{\"date\":\"2016-05-03\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"},{\"date\":\"2016-05-02\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"},{\"date\":\"2016-05-04\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"},{\"date\":\"2016-05-01\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"}],\"columns\":[{\"type\":\"index\"},{\"label\":\"Date\",\"prop\":\"date\"},{\"label\":\"Name\",\"prop\":\"name\"},{\"label\":\"Address\",\"prop\":\"address\"}]}}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"数据\"}},\"description\":{\"zh_CN\":\"显示的数据\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"columns\",\"label\":{\"text\":{\"zh_CN\":\"表格列配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"properties\":[{\"label\":{\"zh_CN\":\"默认分组\"},\"content\":[{\"property\":\"type\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"type\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列的类型。 如果设置了selection则显示多选框; 如果设置了 index 则显示该行的索引(从 1 开始计算); 如果设置了 expand 则显示为一个可展开的按钮\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"selection\",\"value\":\"selection\"},{\"label\":\"index\",\"value\":\"index\"},{\"label\":\"expand\",\"value\":\"expand\"}]}}},{\"property\":\"index\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"index\"}},\"description\":{\"text\":{\"zh_CN\":\"如果设置了 type=index,可以通过传递 index 属性来自定义索引\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"label\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"label\"}},\"description\":{\"text\":{\"zh_CN\":\"显示的标题\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"column-key\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"column-key\"}},\"description\":{\"text\":{\"zh_CN\":\"column 的 key, column 的 key, 如果需要使用 filter-change 事件,则需要此属性标识是哪个 column 的筛选条件\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"prop\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"prop\"}},\"description\":{\"text\":{\"zh_CN\":\"字段名称 对应列内容的字段名, 也可以使用 property属性\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"width\",\"type\":\"number\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"width\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列的宽度\"}},\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}}},{\"property\":\"min-width\",\"type\":\"number\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"min-width\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列的最小宽度, 对应列的最小宽度, 与 width 的区别是 width 是固定的,min-width 会把剩余宽度按比例分配给设置了 min-width 的列\"}},\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}}},{\"property\":\"fixed\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"fixed\"}},\"description\":{\"text\":{\"zh_CN\":\"列是否固定在左侧或者右侧。 true 表示固定在左侧\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"sortable\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"sortable\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列是否可以排序\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"sort-method\",\"type\":\"function\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"sort-method\"}},\"description\":{\"text\":{\"zh_CN\":\"指定数据按照哪个属性进行排序,仅当sortable设置为true的时候有效。 应该如同 Array.sort 那样返回一个 Number\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"sort-by\",\"type\":\"array\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"sort-by\"}},\"description\":{\"text\":{\"zh_CN\":\"指定数据按照哪个属性进行排序,仅当 sortable 设置为 true 且没有设置 sort-method 的时候有效。 如果 sort-by 为数组,则先按照第 1 个属性排序,如果第 1 个相等,再按照第 2 个排序,以此类推\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"sort-orders\",\"type\":\"array\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"sort-orders\"}},\"description\":{\"text\":{\"zh_CN\":\"数据在排序时所使用排序策略的轮转顺序,仅当 sortable 为 true 时有效。 需传入一个数组,随着用户点击表头,该列依次按照数组中元素的顺序进行排序\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"resizable\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"resizable\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列是否可以通过拖动改变宽度(需要在 el-table 上设置 border 属性为真)\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"formatter\",\"type\":\"function\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"formatter\"}},\"description\":{\"text\":{\"zh_CN\":\"用来格式化内容\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"dataType\":\"JSFunction\"}}},{\"property\":\"show-overflow-tooltip\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"show-overflow-tooltip\"}},\"description\":{\"text\":{\"zh_CN\":\"当内容过长被隐藏时显示 tooltip\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"align\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"align\"}},\"description\":{\"text\":{\"zh_CN\":\"对齐方式\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"center\",\"value\":\"center\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"header-align\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"header-align\"}},\"description\":{\"text\":{\"zh_CN\":\"表头对齐方式, 若不设置该项,则使用表格的对齐方式\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"center\",\"value\":\"center\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"class-name\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"class-name\"}},\"description\":{\"text\":{\"zh_CN\":\"列的 className\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"label-class-name\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"label-class-name\"}},\"description\":{\"text\":{\"zh_CN\":\"当前列标题的自定义类名\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"selectable\",\"type\":\"function\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"selectable\"}},\"description\":{\"text\":{\"zh_CN\":\"仅对 type=selection 的列有效,类型为 Function,Function 的返回值用来决定这一行的 CheckBox 是否可以勾选\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"reserve-selection\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"reserve-selection\"}},\"description\":{\"text\":{\"zh_CN\":\"数据刷新后是否保留选项,仅对 type=selection 的列有效, 请注意, 需指定 row-key 来让这个功能生效。\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"filters\",\"type\":\"array\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filters\"}},\"description\":{\"text\":{\"zh_CN\":\"数据刷新后是否保留选项,仅对 type=selection 的列有效, 请注意, 需指定 row-key 来让这个功能生效。\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"filter-placement\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"filter-placement\"}},\"description\":{\"text\":{\"zh_CN\":\"过滤弹出框的定位\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"filter-multiple\",\"type\":\"string\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filter-multiple\"}},\"description\":{\"text\":{\"zh_CN\":\"数据过滤的选项是否多选\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"filter-method\",\"type\":\"function\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filter-method\"}},\"description\":{\"text\":{\"zh_CN\":\"数据过滤使用的方法, 如果是多选的筛选项,对每一条数据会执行多次,任意一次返回 true 就会显示\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"filtered-value\",\"type\":\"array\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filtered-value\"}},\"description\":{\"text\":{\"zh_CN\":\"选中的数据过滤项,如果需要自定义表头过滤的渲染方式,可能会需要此属性\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}}]}],\"widget\":{\"component\":\"TableColumnsConfigurator\",\"props\":{\"type\":\"object\",\"textField\":\"label\",\"language\":\"json\",\"buttonText\":\"编辑列配置\",\"title\":\"编辑列配置\",\"expand\":true}},\"description\":{\"zh_CN\":\"表格列的配置信息\"},\"labelPosition\":\"top\"},{\"property\":\"max-height\",\"label\":{\"text\":{\"zh_CN\":\"最大高度\"}},\"description\":{\"zh_CN\":\"Table 的最大高度。\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"number\",\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"height\",\"label\":{\"text\":{\"zh_CN\":\"表格高度\"}},\"description\":{\"zh_CN\":\"Table 的高度, 默认为自动高度。 这个高度会设置为 Table 的 style.height 的值,Table 的高度会受控于外部样式。\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"stripe\",\"label\":{\"text\":{\"zh_CN\":\"斑马纹\"}},\"description\":{\"zh_CN\":\"是否为斑马纹 table\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"纵向边框\"}},\"description\":{\"zh_CN\":\"是否带有纵向边框\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"表格尺寸\"}},\"description\":{\"zh_CN\":\"Table 的尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"fit\",\"label\":{\"text\":{\"zh_CN\":\"列宽自撑开\"}},\"description\":{\"zh_CN\":\"列的宽度是否自撑开\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"show-header\",\"label\":{\"text\":{\"zh_CN\":\"显示表头\"}},\"description\":{\"zh_CN\":\"是否显示表头\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"highlight-current-row\",\"label\":{\"text\":{\"zh_CN\":\"高亮当前行\"}},\"description\":{\"zh_CN\":\"是否要高亮当前行\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"current-row-key\",\"label\":{\"text\":{\"zh_CN\":\"当前行的 key\"}},\"description\":{\"zh_CN\":\"当前行的 key,只写属性\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"row-class-name\",\"label\":{\"text\":{\"zh_CN\":\"行的类名\"}},\"description\":{\"zh_CN\":\"行的 className\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"row-key\",\"label\":{\"text\":{\"zh_CN\":\"行数据的 Key\"}},\"description\":{\"zh_CN\":\"行数据的 Key,用来优化 Table 的渲染; 在使用reserve-selection功能与显示树形数据时,该属性是必填的。 类型为 String 时,支持多层访问:user.info.id,但不支持 user.info[0].id,此种情况请使用 Function\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"empty-text\",\"label\":{\"text\":{\"zh_CN\":\"空数据文本\"}},\"description\":{\"zh_CN\":\"空数据时显示的文本内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"table-layout\",\"label\":{\"text\":{\"zh_CN\":\"表格布局方式\"}},\"description\":{\"zh_CN\":\"设置表格单元、行和列的布局方式\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"defaultValue\":\"fixed\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"fixed\",\"value\":\"fixed\"},{\"label\":\"auto\",\"value\":\"auto\"}]}},\"device\":[]},{\"property\":\"scrollbar-always-on\",\"label\":{\"text\":{\"zh_CN\":\"显示滚动条\"}},\"description\":{\"zh_CN\":\"总是显示滚动条\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"flexible\",\"label\":{\"text\":{\"zh_CN\":\"主轴最小尺寸\"}},\"description\":{\"zh_CN\":\"确保主轴的最小尺寸,以便不超过内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onSelect\":{\"label\":{\"zh_CN\":\"勾选数据行的 Checkbox 时触发\"},\"description\":{\"zh_CN\":\"当用户手动勾选数据行的 Checkbox 时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"selection\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项\"}},{\"name\":\"row\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前行\"}}],\"returns\":{}}},\"onSelectAll\":{\"label\":{\"zh_CN\":\"勾选全选时触发\"},\"description\":{\"zh_CN\":\"当用户手动勾选全选 Checkbox 时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"selection\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项\"}}],\"returns\":{}}},\"onSelectionChange\":{\"label\":{\"zh_CN\":\"选择项发生变化时会触发\"},\"description\":{\"zh_CN\":\"当选择项发生变化时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"selection\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项\"}}],\"returns\":{}}},\"onCellMouseEnter\":{\"label\":{\"zh_CN\":\"单元格 hover 时会触发\"},\"description\":{\"zh_CN\":\"当单元格 hover 进入时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"row\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前行\"}},{\"name\":\"column\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前列\"}},{\"name\":\"cell\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前单元格\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生事件 event\"}}],\"returns\":{}}},\"onCellMouseLeave\":{\"label\":{\"zh_CN\":\"单元格 hover 退出时会触发\"},\"description\":{\"zh_CN\":\"当单元格 hover 退出时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"row\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前行\"}},{\"name\":\"column\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前列\"}},{\"name\":\"cell\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前单元格\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生事件 event\"}}],\"returns\":{}}}},\"slots\":{\"empty\":{\"label\":{\"zh_CN\":\"empty\"},\"description\":{\"zh_CN\":\"当数据为空时自定义的内容\"}},\"append\":{\"label\":{\"zh_CN\":\"append\"},\"description\":{\"zh_CN\":\"插入至表格最后一行之后的内容, 如果需要对表格的内容进行无限滚动操作,可能需要用到这个 slot。 若表格有合计行,该 slot 会位于合计行之上。\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":[\"ElTableColumn\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEvent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (7, '2.4.2', '{\"zh_CN\":\"表单\"}', 'ElTableColumn', 'table', '用于展示多条结构类似的数据, 可对数据进行排序、筛选、对比或其他自定义操作', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElTableColumn\",\"destructuring\":true}', '表单组件', 'element-plus', NULL, NULL, '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[],\"description\":{\"zh_CN\":\"\"}}],\"events\":{},\"slots\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEvent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (8, '3.20.0', '{\"zh_CN\":\"走马灯子项\"}', 'TinyCarouselItem', 'carouselitem', '常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CarouselItem\",\"destructuring\":true}', 'component', '容器组件', 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"名称\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"幻灯片的名字,可用作 setActiveItem 的参数\"},\"labelPosition\":\"left\"},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"幻灯片的标题\"},\"labelPosition\":\"left\"},{\"property\":\"indicator-position\",\"label\":{\"text\":{\"zh_CN\":\"指示器位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"outside\",\"value\":\"outside\"},{\"label\":\"none\",\"value\":\"none\"}]}},\"description\":{\"zh_CN\":\"指示器的位置\"},\"labelPosition\":\"left\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (9, '3.20.0', '{\"zh_CN\":\"走马灯\"}', 'TinyCarousel', 'carousel', '常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Carousel\",\"destructuring\":true}', 'component', '容器组件', 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"arrow\",\"label\":{\"text\":{\"zh_CN\":\"箭头显示时机\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"总是显示\",\"value\":\"always\"},{\"label\":\"鼠标悬停时显示\",\"value\":\"hover\"},{\"label\":\"从不显示\",\"value\":\"never\"}]}},\"description\":{\"zh_CN\":\"切换箭头的显示时机\"}},{\"property\":\"autoplay\",\"label\":{\"text\":{\"zh_CN\":\"自动切换\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否自动切换\"},\"labelPosition\":\"left\"},{\"property\":\"tabs\",\"label\":{\"text\":{\"zh_CN\":\"选项卡\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"\",\"cols\":12,\"bindState\":false,\"widget\":{\"component\":\"ContainerConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"tabs 选项卡\"},\"labelPosition\":\"none\"},{\"property\":\"height\",\"label\":{\"text\":{\"zh_CN\":\"高度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"走马灯的高度\"}},{\"property\":\"indicator-position\",\"label\":{\"text\":{\"zh_CN\":\"位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"走马灯外部\",\"value\":\"outside\"},{\"label\":\"不显示\",\"value\":\"none\"}]}},\"description\":{\"zh_CN\":\"指示器的位置\"}},{\"property\":\"initial-index\",\"label\":{\"text\":{\"zh_CN\":\"初始索引\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"初始状态激活的幻灯片的索引,从 0 开始 \"}},{\"property\":\"interval\",\"label\":{\"text\":{\"zh_CN\":\"自动切换间隔\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自动切换的时间间隔,单位为毫秒\"}},{\"property\":\"loop\",\"label\":{\"text\":{\"zh_CN\":\"循环显示\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否循环显示\"},\"labelPosition\":\"left\"},{\"property\":\"show-title\",\"label\":{\"text\":{\"zh_CN\":\"显示标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示标题\"},\"labelPosition\":\"left\"},{\"property\":\"trigger\",\"label\":{\"text\":{\"zh_CN\":\"触发方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"点击\",\"value\":\"click\"},{\"label\":\"悬停\",\"value\":\"hover\"}]}},\"description\":{\"zh_CN\":\"指示器的触发方式,默认为 hover\"}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"水平\",\"value\":\"horizontal\"},{\"label\":\"垂直\",\"value\":\"vertical\"},{\"label\":\"卡片\",\"value\":\"card\"}]}},\"description\":{\"zh_CN\":\"走马灯的类型\"}}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"clickCapture\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyCarouselItem\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (10, '1.0.0', '{\"zh_CN\":\"提示框\"}', 'a', 'link', '链接', '', '', '', '', 'proCode', '{}', 'component', 'basic', 7, '[{\"name\":{\"zh_CN\":\"链接\"},\"icon\":\"link\",\"screenshot\":\"\",\"snippetName\":\"a\",\"schema\":{\"componentName\":\"a\",\"children\":\"链接\"}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"children\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlTextConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"类型\"},\"labelPosition\":\"none\"},{\"property\":\"href\",\"label\":{\"text\":{\"zh_CN\":\"链接\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"指定链接的 URL\"},\"labelPosition\":\"left\"},{\"property\":\"target\",\"label\":{\"text\":{\"zh_CN\":\"打开方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"当前页面\",\"value\":\"_self\"},{\"label\":\"打开新页面\",\"value\":\"_blank\"}]}},\"description\":{\"zh_CN\":\"指定链接的打开方式,例如在当前窗口中打开或在新窗口中打开。\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}]}', '{\"loop\":true,\"condition\":true,\"slots\":[],\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[]},\"contextMenu\":{\"actions\":[],\"disable\":[]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (11, '1.0.0', '{\"zh_CN\":\"标题\"}', '[h1, h2, h3, h4, h5, h6]', 'h16', '标题', '', '', '', '', 'proCode', '{}', 'component', 'html', 20, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"children\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlTextConfigurator\",\"props\":{\"showRadioButton\":true}},\"description\":{\"zh_CN\":\"\"},\"labelPosition\":\"none\"},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"\"},\"labelPosition\":\"none\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (12, '1.0.0', '{\"zh_CN\":\"段落\"}', 'p', 'paragraph', '段落', '', '', '', '', 'proCode', '{}', 'component', 'html', 30, '[{\"name\":{\"zh_CN\":\"段落\"},\"icon\":\"paragraph\",\"screenshot\":\"\",\"snippetName\":\"p\",\"schema\":{\"componentName\":\"p\",\"children\":\"TinyEngine 前端可视化设计器致力于通过友好的用户交互提升业务应用的开发效率。\"}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"children\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlTextConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"类型\"},\"labelPosition\":\"none\"},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[]},\"contextMenu\":{\"actions\":[],\"disable\":[]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (13, '1.0.0', '{\"zh_CN\":\"输入框\"}', 'input', 'input', '输入框', '', '', '', '', 'proCode', '{}', 'component', 'html', 40, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"checkbox\",\"value\":\"checkbox\"},{\"label\":\"color\",\"value\":\"color\"},{\"label\":\"date\",\"value\":\"date\"},{\"label\":\"button\",\"value\":\"button\"},{\"label\":\"email\",\"value\":\"email\"},{\"label\":\"file\",\"value\":\"file\"},{\"label\":\"hidden\",\"value\":\"hidden\"},{\"label\":\"image\",\"value\":\"image\"},{\"label\":\"month\",\"value\":\"month\"},{\"label\":\"number\",\"value\":\"number\"},{\"label\":\"password\",\"value\":\"password\"},{\"label\":\"radio\",\"value\":\"radio\"},{\"label\":\"range\",\"value\":\"range\"},{\"label\":\"reset\",\"value\":\"reset\"},{\"label\":\"search\",\"value\":\"search\"},{\"label\":\"submit\",\"value\":\"submit\"},{\"label\":\"text\",\"value\":\"text\"},{\"label\":\"time\",\"value\":\"time\"},{\"label\":\"week\",\"value\":\"week\"},{\"label\":\"url\",\"value\":\"url\"}]}},\"description\":{\"zh_CN\":\"类型\"}},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位符\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"占位符\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onChange\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (14, '1.0.0', '{\"zh_CN\":\"视频\"}', 'video', 'video', '视频', '', '', '', '', 'proCode', '{}', 'component', 'html', 50, '[{\"name\":{\"zh_CN\":\"视频\"},\"icon\":\"video\",\"screenshot\":\"\",\"snippetName\":\"video\",\"schema\":{\"componentName\":\"video\",\"props\":{\"src\":\"https://tinyengine-assets.obs.myhuaweicloud.com/files/in-action.mp4#t=1.5\",\"width\":\"200\",\"height\":\"100\",\"style\":\"border:1px solid #ccc\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"src\",\"label\":{\"text\":{\"zh_CN\":\"资源\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"视频的 URL\"}},{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"播放器宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"视频播放器的宽度\"}},{\"property\":\"height\",\"label\":{\"text\":{\"zh_CN\":\"播放器高度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"视频播放器的高度\"}},{\"property\":\"controls\",\"label\":{\"text\":{\"zh_CN\":\"显示控件\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示控件\"},\"labelPosition\":\"left\"},{\"property\":\"autoplay\",\"label\":{\"text\":{\"zh_CN\":\"马上播放\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否马上播放\"},\"labelPosition\":\"left\"},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[]},\"contextMenu\":{\"actions\":[],\"disable\":[]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (15, '1.0.0', '{\"zh_CN\":\"Img\"}', 'Img', 'Image', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 60, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"src\",\"type\":\"string\",\"defaultValue\":\"\",\"bindState\":true,\"label\":{\"text\":{\"zh_CN\":\"资源\"}},\"cols\":12,\"rules\":[],\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"src路径\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{},\"shortcuts\":{\"properties\":[\"src\"]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (16, '1.0.0', '{\"zh_CN\":\"Button\"}', 'button', 'button', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 70, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', '{\"isContainer\":true}', 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (17, '1.0.0', '{\"zh_CN\":\"表格\"}', 'table', 'table', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 80, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格的宽度\"}},{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"边框宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格边框的宽度\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (18, '1.0.0', '{\"zh_CN\":\"表格单元格\"}', 'td', 'td', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 90, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"colspan\",\"label\":{\"text\":{\"zh_CN\":\"合并列\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单元格可横跨的列数\"}},{\"property\":\"rowspan\",\"label\":{\"text\":{\"zh_CN\":\"合并行\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单元格可横跨的行数\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (19, '1.0.0', '{\"zh_CN\":\"表单\"}', 'form', 'form', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 100, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"名称\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单的名称\"}},{\"property\":\"action\",\"label\":{\"text\":{\"zh_CN\":\"提交地址\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"提交表单时向何处发送表单数据\"}},{\"property\":\"method\",\"label\":{\"text\":{\"zh_CN\":\"HTTP方法\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"get\",\"value\":\"get\"},{\"label\":\"post\",\"value\":\"post\"}]}},\"description\":{\"zh_CN\":\"用于发送 form-data 的 HTTP 方法\"}}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', '{\"isContainer\":true}', 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (20, '1.0.0', '{\"zh_CN\":\"表单标签\"}', 'label', 'label', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 110, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"for\",\"label\":{\"text\":{\"zh_CN\":\"label绑定表单元素\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"label 绑定到哪个表单元素\"}},{\"property\":\"form\",\"label\":{\"text\":{\"zh_CN\":\"label字段所属表单\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"label 字段所属的一个或多个表单\"}}]}],\"events\":{},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (21, '3.20.0', '{\"zh_CN\":\"按钮组\"}', 'TinyButtonGroup', 'buttonGroup', '以按钮组的方式出现,常用于多项类似操作', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"ButtonGroup\",\"destructuring\":true}', 'component', 'general', 2, '[{\"name\":{\"zh_CN\":\"互斥按钮组\"},\"icon\":\"MutexButtons\",\"screenshot\":\"\",\"snippetName\":\"TinyButtonGroup\",\"schema\":{\"componentName\":\"TinyButtonGroup\",\"props\":{\"data\":[{\"text\":\"Button1\",\"value\":\"1\"},{\"text\":\"Button2\",\"value\":\"2\"},{\"text\":\"Button3\",\"value\":\"3\"}],\"modelValue\":\"1\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"配置按钮组数据\"}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"大小\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"mini\",\"value\":\"mini\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"medium\",\"value\":\"medium\"}]}},\"description\":{\"zh_CN\":\"组件大小\"},\"labelPosition\":\"left\"},{\"property\":\"plain\",\"label\":{\"text\":{\"zh_CN\":\"朴素按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否是朴素按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (22, '3.20.0', '{\"zh_CN\":\"row\"}', 'TinyRow', 'row', '定义 Layout 的行配置信息', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Row\",\"destructuring\":true}', 'component', NULL, 5, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"layout\",\"label\":{\"text\":{\"zh_CN\":\"布局\"}},\"cols\":12,\"widget\":{\"component\":\"LayoutGridConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"选择布局方式\"},\"labelPosition\":\"none\"},{\"property\":\"align\",\"label\":{\"text\":{\"zh_CN\":\"子项对齐方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"top\",\"value\":\"top\"},{\"label\":\"middle\",\"value\":\"middle\"},{\"label\":\"bottom\",\"value\":\"bottom\"}]}},\"description\":{\"zh_CN\":\"子项的副轴对齐方向,可取值:top, middle, bottom\"}},{\"property\":\"flex\",\"label\":{\"text\":{\"zh_CN\":\"flex容器\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否为flex容器\"},\"labelPosition\":\"left\"},{\"property\":\"gutter\",\"label\":{\"text\":{\"zh_CN\":\"子项间隔\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"子项的间隔的像素\"}}]}]}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (23, '3.20.0', '{\"zh_CN\":\"row\"}', 'TinyLayout', 'row', '定义 Layout 的行配置信息', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Layout\",\"version\":\"3.20.0\",\"destructuring\":true}', 'component', 'layout', 5, '[{\"name\":{\"zh_CN\":\"栅格布局\"},\"icon\":\"row\",\"screenshot\":\"\",\"snippetName\":\"TinyLayout\",\"schema\":{\"componentName\":\"TinyLayout\",\"props\":{},\"children\":[{\"componentName\":\"TinyRow\",\"props\":{\"style\":\"padding: 10px;\"},\"children\":[{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}}]},{\"componentName\":\"TinyRow\",\"props\":{\"style\":\"padding: 10px;\"},\"children\":[{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"cols\",\"label\":{\"text\":{\"zh_CN\":\"总栅格数\"}},\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"12\",\"value\":12},{\"label\":\"24\",\"value\":24}]}},\"description\":{\"zh_CN\":\"选择总栅格数\"},\"labelPosition\":\"none\"},{\"property\":\"tag\",\"label\":{\"text\":{\"zh_CN\":\"layout渲染的标签\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"定义Layout元素渲染后的标签,默认为 div\"}}]}]}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyRow\",\"TinyCol\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (24, '3.20.0', '{\"zh_CN\":\"表单\"}', 'TinyForm', 'form', '由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Form\",\"destructuring\":true}', 'component', NULL, 5, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"label-width\",\"label\":{\"text\":{\"zh_CN\":\"标签宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单中标签占位宽度,默认为 80px\"},\"labelPosition\":\"left\"},{\"property\":\"inline\",\"label\":{\"text\":{\"zh_CN\":\"行内布局\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"行内布局模式,默认为 false\"},\"labelPosition\":\"left\"},{\"property\":\"label-align\",\"label\":{\"text\":{\"zh_CN\":\"必填标识占位\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"必填标识 * 是否占位\"},\"labelPosition\":\"left\"},{\"property\":\"label-suffix\",\"label\":{\"text\":{\"zh_CN\":\"标签后缀\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单中标签后缀\"},\"labelPosition\":\"left\"},{\"property\":\"label-position\",\"label\":{\"text\":{\"zh_CN\":\"标签位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"left \",\"value\":\"left \"},{\"label\":\"top\",\"value\":\"top\"}]}},\"description\":{\"zh_CN\":\"表单中标签的布局位置\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"校验属性\"},\"content\":[{\"property\":\"model\",\"label\":{\"text\":{\"zh_CN\":\"数据对象\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单数据对象\"},\"labelPosition\":\"top\"},{\"property\":\"rules\",\"label\":{\"text\":{\"zh_CN\":\"校验规则\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单验证规则\"},\"labelPosition\":\"top\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onValidate\":{\"label\":{\"zh_CN\":\"表单项被校验后触发\"},\"description\":{\"zh_CN\":\"表单项被校验后触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"function\",\"type\":\"Function\",\"defaultValue\":\"(valid) => {}\",\"description\":{\"zh_CN\":\"校验回调函数\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (25, '3.20.0', '{\"zh_CN\":\"表单项\"}', 'TinyFormItem', 'formitem', '由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"FormItem\",\"destructuring\":true}', 'component', NULL, 12, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"label\",\"label\":{\"text\":{\"zh_CN\":\"标签文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"标签\",\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标签文本\"},\"labelPosition\":\"left\"},{\"property\":\"prop\",\"label\":{\"text\":{\"zh_CN\":\"校验字段\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单域 model 字段,在使用 validate、resetFields 方法的情况下,该属性是必填的\"},\"labelPosition\":\"left\"},{\"property\":\"required\",\"label\":{\"text\":{\"zh_CN\":\"必填\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否必填\"},\"labelPosition\":\"left\"}]}],\"events\":{},\"slots\":{\"label\":{\"label\":{\"zh_CN\":\"字段名\"},\"description\":{\"zh_CN\":\"自定义显示字段名称\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":[\"TinyForm\"],\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label\",\"rules\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (26, '3.20.0', '{\"zh_CN\":\"col\"}', 'TinyCol', 'col', '列配置信息', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Col\",\"destructuring\":true}', 'component', NULL, 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"span\",\"label\":{\"text\":{\"zh_CN\":\"栅格列格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"整行\",\"value\":12},{\"label\":\"6格\",\"value\":6},{\"label\":\"4格\",\"value\":4},{\"label\":\"3格\",\"value\":3},{\"label\":\"1格\",\"value\":1}]}},\"description\":{\"zh_CN\":\"当一行分为12格时,一列可占位多少格\"}},{\"property\":\"move\",\"label\":{\"text\":{\"zh_CN\":\"栅格移动格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":-12,\"max\":12}},\"description\":{\"zh_CN\":\"栅格左右移动格数(正数向右,负数向左)\"}},{\"property\":\"no\",\"label\":{\"text\":{\"zh_CN\":\"排序编号\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"max\":12}},\"description\":{\"zh_CN\":\"排序编号(row中启用order生效)\"}},{\"property\":\"offset\",\"label\":{\"text\":{\"zh_CN\":\"间隔格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":0,\"max\":12}},\"description\":{\"zh_CN\":\"栅格左侧的间隔格数\"}},{\"property\":\"xs\",\"label\":{\"text\":{\"zh_CN\":\"超小屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"<768px 响应式栅格数\"}},{\"property\":\"sm\",\"label\":{\"text\":{\"zh_CN\":\"小屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥768px 响应式栅格数\"}},{\"property\":\"md\",\"label\":{\"text\":{\"zh_CN\":\"中屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥992px 响应式栅格数\"}},{\"property\":\"lg\",\"label\":{\"text\":{\"zh_CN\":\"大屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥1200px 响应式栅格数\"}},{\"property\":\"xl\",\"label\":{\"text\":{\"zh_CN\":\"超大屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥1920px 响应式栅格数\"}}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label\",\"rules\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (27, '3.20.0', '{\"zh_CN\":\"按钮\"}', 'TinyButton', 'button', '常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮、下拉按钮等类型', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Button\",\"destructuring\":true}', 'component', 'basic', 2, '[{\"name\":{\"zh_CN\":\"按钮\"},\"icon\":\"button\",\"screenshot\":\"\",\"snippetName\":\"TinyButton\",\"schema\":{\"componentName\":\"TinyButton\",\"props\":{\"text\":\"按钮文案\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"text\",\"type\":\"string\",\"defaultValue\":\"按钮文案\",\"label\":{\"text\":{\"zh_CN\":\"按钮文字\"}},\"cols\":12,\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"按钮文字\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"type\":\"select\",\"label\":{\"text\":{\"zh_CN\":\"大小\"}},\"cols\":12,\"rules\":[],\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"按钮大小\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否被禁用\"},\"labelPosition\":\"left\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"primary\",\"value\":\"primary\"},{\"label\":\"success\",\"value\":\"success\"},{\"label\":\"info\",\"value\":\"info\"},{\"label\":\"warning\",\"value\":\"warning\"},{\"label\":\"danger\",\"value\":\"danger\"},{\"label\":\"text\",\"value\":\"text\"}]}},\"description\":{\"zh_CN\":\"设置不同的主题样式\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"round\",\"label\":{\"text\":{\"zh_CN\":\"圆角\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否圆角按钮\"},\"labelPosition\":\"left\"},{\"property\":\"plain\",\"label\":{\"text\":{\"zh_CN\":\"朴素按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否为朴素按钮\"},\"labelPosition\":\"left\"},{\"property\":\"reset-time\",\"label\":{\"text\":{\"zh_CN\":\"禁用时间\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置禁用时间,防止重复提交,单位毫秒\"},\"labelPosition\":\"left\"},{\"property\":\"circle\",\"label\":{\"text\":{\"zh_CN\":\"圆形按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否圆形按钮\"},\"labelPosition\":\"left\"},{\"property\":\"autofocus\",\"label\":{\"text\":{\"zh_CN\":\"自动聚焦\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否默认聚焦\"},\"labelPosition\":\"left\"},{\"property\":\"loading\",\"label\":{\"text\":{\"zh_CN\":\"加载中样式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否展示位加载中样式\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击事件\"},\"description\":{\"zh_CN\":\"按钮被点击时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"text\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (28, '3.20.0', '{\"zh_CN\":\"输入框\"}', 'TinyInput', 'input', '通过鼠标或键盘输入字符', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Input\",\"destructuring\":true}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"输入框\"},\"icon\":\"input\",\"screenshot\":\"\",\"snippetName\":\"TinyInput\",\"schema\":{\"componentName\":\"TinyInput\",\"props\":{\"placeholder\":\"请输入\",\"modelValue\":\"\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"textarea\",\"value\":\"textarea\"},{\"label\":\"text\",\"value\":\"text\"},{\"label\":\"password\",\"value\":\"password\"}]}},\"description\":{\"zh_CN\":\"设置input框的type属性\"},\"labelPosition\":\"left\"},{\"property\":\"rows\",\"label\":{\"text\":{\"zh_CN\":\"行数\"}},\"widget\":{\"component\":\"NumberConfigurator\"},\"description\":{\"zh_CN\":\"输入框行数,只对 type=\'textarea\' 有效\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"输入框尺寸。该属性的可选值为 medium / small / mini\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"maxlength\",\"label\":{\"text\":{\"zh_CN\":\"最大输入长度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置 input 框的maxLength\"}},{\"property\":\"autofocus\",\"label\":{\"text\":{\"zh_CN\":\"自动聚焦\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自动获取焦点\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框改变后的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{\"prefix\":{\"label\":{\"zh_CN\":\"前置内容\"}},\"suffix\":{\"label\":{\"zh_CN\":\"后置内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (29, '3.20.0', '{\"zh_CN\":\"单选\"}', 'TinyRadio', 'radio', '用于配置不同场景的选项,在一组备选项中进行单选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Radio\",\"destructuring\":true}', 'component', 'form', 3, '[{\"name\":{\"zh_CN\":\"单选\"},\"icon\":\"radio\",\"screenshot\":\"\",\"snippetName\":\"TinyRadio\",\"schema\":{\"componentName\":\"TinyRadio\",\"props\":{\"label\":\"1\",\"text\":\"单选文本\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文本内容\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单选框文本内容\"}},{\"property\":\"label\",\"label\":{\"text\":{\"zh_CN\":\"选中值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"props\":{}},\"description\":{\"zh_CN\":\"radio 选中时的值\"}},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"}]},{\"label\":{\"zh_CN\":\"其他\"},\"description\":{\"zh_CN\":\"\"},\"content\":[{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"显示边框\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示边框\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单选框的尺寸,仅在 border 为true时有效\"}},{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"原生name属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生 name 属性\"}}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值变化事件\"},\"description\":{\"zh_CN\":\"绑定值变化时触发的事件\"}},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"visible\",\"width\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (30, '3.20.0', '{\"zh_CN\":\"下拉框\"}', 'TinySelect', 'select', 'Select 选择器是一种通过点击弹出下拉列表展示数据并进行选择的 UI 组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Select\",\"destructuring\":true}', 'component', 'form', 8, '[{\"name\":{\"zh_CN\":\"下拉框\"},\"icon\":\"select\",\"screenshot\":\"\",\"snippetName\":\"TinySelect\",\"schema\":{\"componentName\":\"TinySelect\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请选择\",\"options\":[{\"value\":\"1\",\"label\":\"黄金糕\"},{\"value\":\"2\",\"label\":\"双皮奶\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"searchable\",\"label\":{\"text\":{\"zh_CN\":\"下拉可搜索\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"下拉面板是否可搜索\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"options\",\"label\":{\"text\":{\"zh_CN\":\"选项数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"配置 Select 下拉数据项\"},\"labelPosition\":\"top\"},{\"property\":\"multiple\",\"label\":{\"text\":{\"zh_CN\":\"多选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否允许输入框输入或选择多个项\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"multiple-limit\",\"label\":{\"text\":{\"zh_CN\":\"最大可选值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"多选时用户最多可以选择的项目数,为 0 则不限制\"},\"labelPosition\":\"left\"},{\"property\":\"popper-class\",\"label\":{\"text\":{\"zh_CN\":\"下拉框类名\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置下拉框自定义的类名\"},\"labelPosition\":\"left\"},{\"property\":\"collapse-tags\",\"label\":{\"text\":{\"zh_CN\":\"多选展示\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"多选时是否将选中值按文字的形式展示\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在下拉框值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"下拉框选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onRemoveTag\":{\"label\":{\"zh_CN\":\"多选模式下移除tag时触发\"},\"description\":{\"zh_CN\":\"多选模式下移除tag时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"被移除Tag对应数据项的值字段\"}}],\"returns\":{}},\"defaultValue\":\"\"}},\"onBeforeMount\":\"console.log(\'table on load\'); this.options = source.data\"}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"multiple\",\"options\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (31, '3.20.0', '{\"zh_CN\":\"开关\"}', 'TinySwitch', 'switch', 'Switch 在两种状态间切换选择', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Switch\",\"destructuring\":true}', 'component', 'form', 9, '[{\"name\":{\"zh_CN\":\"开关\"},\"icon\":\"switch\",\"screenshot\":\"\",\"snippetName\":\"TinySwitch\",\"schema\":{\"componentName\":\"TinySwitch\",\"props\":{\"modelValue\":\"\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否被禁用\"},\"labelPosition\":\"left\"},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"绑定默认值\"},\"labelPosition\":\"left\"},{\"property\":\"true-value\",\"label\":{\"text\":{\"zh_CN\":\"设置打开值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置打开时的值(Boolean / String / Number)\"},\"labelPosition\":\"left\"},{\"property\":\"false-value\",\"label\":{\"text\":{\"zh_CN\":\"设置关闭值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置关闭时的值(Boolean / String / Number)\"},\"labelPosition\":\"left\"},{\"property\":\"mini\",\"label\":{\"text\":{\"zh_CN\":\"迷你尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示为 mini 模式\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"点击事件\"},\"description\":{\"zh_CN\":\"按钮被点击时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"开关的状态值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的开关状态值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"mini\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (32, '3.20.0', '{\"zh_CN\":\"搜索框\"}', 'TinySearch', 'search', '指定条件对象进行搜索数据', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Search\",\"destructuring\":true}', 'component', 'basic', 2, '[{\"name\":{\"zh_CN\":\"搜索框\"},\"icon\":\"search\",\"screenshot\":\"\",\"snippetName\":\"TinySearch\",\"schema\":{\"componentName\":\"TinySearch\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"输入关键词\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"默认值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框内的默认搜索值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否被禁用\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框内的提示占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清空按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置显示清空图标按钮\"},\"labelPosition\":\"left\"},{\"property\":\"isEnterSearch\",\"label\":{\"text\":{\"zh_CN\":\"Enter键触发\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否在按下键盘Enter键的时候触发search事件\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"mini\",\"label\":{\"text\":{\"zh_CN\":\"迷你尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"迷你模式,配置为true时,搜索默认显示为一个带图标的圆形按钮,点击后展开\"},\"labelPosition\":\"left\"},{\"property\":\"transparent\",\"label\":{\"text\":{\"zh_CN\":\"透明模式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"配置为true时,边框变为透明且收缩后半透明显示,一般用在带有背景的场景,默认 false\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"输入完成时触发\"},\"description\":{\"zh_CN\":\"在 input 框中输入完成时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"type\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"搜索类型,默认值为 {} \"}},{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前input框中值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onSearch\":{\"label\":{\"zh_CN\":\"点击搜索按钮时触发\"},\"description\":{\"zh_CN\":\"展开状态点击搜索按钮时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"type\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"搜索类型,默认值为 {} \"}},{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前input框中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"clearable\",\"mini\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (33, '3.20.0', '{\"zh_CN\":\"复选框\"}', 'TinyCheckbox', 'checkbox', '用于配置不同场景的选项,提供用户可在一组选项中进行多选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Checkbox\",\"destructuring\":true}', 'component', 'form', 4, '[{\"name\":{\"zh_CN\":\"复选框\"},\"icon\":\"checkbox\",\"screenshot\":\"\",\"snippetName\":\"TinyCheckbox\",\"schema\":{\"componentName\":\"TinyCheckbox\",\"props\":{\"text\":\"复选框文案\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"checked\",\"label\":{\"text\":{\"zh_CN\":\"勾选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当前是否勾选\"},\"labelPosition\":\"left\"},{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"复选框的文本\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"边框\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示边框\"},\"labelPosition\":\"left\"},{\"property\":\"false-label\",\"label\":{\"text\":{\"zh_CN\":\"未选中的值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"没有选中时的值\"},\"labelPosition\":\"left\"},{\"property\":\"true-label\",\"label\":{\"text\":{\"zh_CN\":\"选择时的值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"选中时的值\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"勾选值改变后将触发\"},\"description\":{\"zh_CN\":\"勾选值改变后将触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"border\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (34, '3.20.0', '{\"zh_CN\":\"复选按钮\"}', 'TinyCheckboxButton', 'checkboxbutton', '用于配置不同场景的选项,提供用户可在一组选项中进行多选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CheckboxButton\",\"destructuring\":true}', 'component', NULL, 1, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"checked\",\"label\":{\"text\":{\"zh_CN\":\"勾选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当前是否勾选\"},\"labelPosition\":\"left\"},{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"按钮文本\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"勾选值改变后将触发\"},\"description\":{\"zh_CN\":\"勾选值改变后将触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"array\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"text\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (35, '3.20.0', '{\"zh_CN\":\"复选按钮组\"}', 'TinyCheckboxGroup', 'checkboxgroup', '用于配置不同场景的选项,提供用户可在一组选项中进行多选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CheckboxGroup\",\"destructuring\":true}', 'component', 'form', 2, '[{\"name\":{\"zh_CN\":\"复选框组\"},\"icon\":\"checkboxs\",\"screenshot\":\"\",\"snippetName\":\"TinyCheckboxGroup\",\"schema\":{\"componentName\":\"TinyCheckboxGroup\",\"props\":{\"modelValue\":[\"name1\",\"name2\"],\"type\":\"checkbox\",\"options\":[{\"text\":\"复选框1\",\"label\":\"name1\"},{\"text\":\"复选框2\",\"label\":\"name2\"},{\"text\":\"复选框3\",\"label\":\"name3\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"dataType\":\"Array\"}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"options\",\"label\":{\"text\":{\"zh_CN\":\"选项列表\"}},\"defaultValue\":[{\"label\":\"标签2\"},{\"label\":\"标签2\"}],\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"checkbox组件列表\"},\"labelPosition\":\"top\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"button\",\"value\":\"button\"},{\"label\":\"checkbox\",\"value\":\"checkbox\"}]}},\"description\":{\"zh_CN\":\"checkbox组件类型(button/checkbox),该属性的默认值为 checkbox,配合 options 属性一起使用\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"勾选值改变后将触发\"},\"description\":{\"zh_CN\":\"勾选值改变后将触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"array\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"type\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (36, '3.20.0', '{\"zh_CN\":\"对话框\"}', 'TinyDialogBox', 'dialogbox', '模态对话框,在浮层中显示,引导用户进行相关操作。', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"DialogBox\",\"destructuring\":true}', 'component', 'data-display', 4, '[{\"name\":{\"zh_CN\":\"对话框\"},\"icon\":\"dialogbox\",\"screenshot\":\"\",\"snippetName\":\"TinyDialogBox\",\"schema\":{\"componentName\":\"TinyDialogBox\",\"props\":{\"visible\":true,\"show-close\":true,\"title\":\"dialogBox title\"},\"children\":[{\"componentName\":\"div\"}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"弹出框标题\"},\"labelPosition\":\"left\"},{\"property\":\"visible\",\"label\":{\"text\":{\"zh_CN\":\"显示与隐藏\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"控制弹出框显示与关闭\"},\"labelPosition\":\"left\"},{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"弹出框的宽度\"},\"labelPosition\":\"left\"},{\"property\":\"draggable\",\"label\":{\"text\":{\"zh_CN\":\"可拖拽\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否开启弹窗的拖拽功能,默认值为 false 。\"},\"labelPosition\":\"left\"},{\"property\":\"center\",\"label\":{\"text\":{\"zh_CN\":\"居中\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"弹出框的头部与底部内容会自动居中\"},\"labelPosition\":\"left\"},{\"property\":\"dialog-class\",\"label\":{\"text\":{\"zh_CN\":\"自定义类名\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自定义配置弹窗类名\"},\"labelPosition\":\"left\"},{\"property\":\"append-to-body\",\"label\":{\"text\":{\"zh_CN\":\"插入到Body\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"DialogBox 本身是否插入到 body 上,嵌套的 Dialog 必须指定该属性并赋值为 true\"},\"labelPosition\":\"left\"},{\"property\":\"show-close\",\"label\":{\"text\":{\"zh_CN\":\"关闭按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示关闭按钮,默认值为 true 。\"},\"labelPosition\":\"left\"}]}],\"selector\":\".TinyDialogBox\",\"events\":{\"onClose\":{\"label\":{\"zh_CN\":\"关闭弹窗时触发\"},\"description\":{\"zh_CN\":\"Dialog 关闭的回调\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:visible\":{\"label\":{\"zh_CN\":\"双向绑定的状态改变时触发\"},\"description\":{\"zh_CN\":\"显示或隐藏的状态值,发生改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"boolean\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的显示或隐藏的状态值\"}}],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{\"title\":{\"label\":{\"zh_CN\":\"标题区\"},\"description\":{\"zh_CN\":\"Dialog 标题区的内容\"}},\"footer\":{\"label\":{\"zh_CN\":\"按钮操作区\"},\"description\":{\"zh_CN\":\"Dialog 按钮操作区的内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":true,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\".tiny-dialog-box\",\"shortcuts\":{\"properties\":[\"visible\",\"width\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (37, '3.20.0', '{\"zh_CN\":\"标签页\"}', 'TinyTabs', 'tabs', '分隔内容上有关联但属于不同类别的数据集合', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Tabs\",\"destructuring\":true}', 'component', 'navigation', 10, '[{\"name\":{\"zh_CN\":\"标签页\"},\"icon\":\"tabs\",\"screenshot\":\"\",\"snippetName\":\"TinyTabs\",\"schema\":{\"componentName\":\"TinyTabs\",\"props\":{\"modelValue\":\"first\"},\"children\":[{\"componentName\":\"TinyTabItem\",\"props\":{\"title\":\"标签页1\",\"name\":\"first\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"style\":\"margin:10px 0 0 30px\"}}]},{\"componentName\":\"TinyTabItem\",\"props\":{\"title\":\"标签页2\",\"name\":\"second\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"style\":\"margin:10px 0 0 30px\"}}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"tabs\",\"label\":{\"text\":{\"zh_CN\":\"选项卡\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"\",\"cols\":12,\"bindState\":false,\"widget\":{\"component\":\"ContainerConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"tabs 选项卡\"},\"labelPosition\":\"none\"},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"绑定值,选中选项卡的 name\"},\"labelPosition\":\"left\"},{\"property\":\"with-add\",\"label\":{\"text\":{\"zh_CN\":\"标签新增\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标签是否可增加\"},\"labelPosition\":\"left\"},{\"property\":\"with-close\",\"label\":{\"text\":{\"zh_CN\":\"可关闭\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标签是否可关闭\"},\"labelPosition\":\"left\"},{\"property\":\"tab-style\",\"label\":{\"text\":{\"zh_CN\":\"标签页样式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"card\",\"value\":\"card\"},{\"label\":\"border-card\",\"value\":\"border-card\"}]}},\"description\":{\"zh_CN\":\"标签页样式\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击页签时触发事件\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"component\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前点击的页签对象\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onEdit\":{\"label\":{\"zh_CN\":\"点击新增按钮或关闭按钮或者编辑按钮后触发\"},\"description\":{\"zh_CN\":\"点击新增按钮或关闭按钮或者编辑按钮后触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"tab\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前操作的页签对象\"}},{\"name\":\"type\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前操作的类型(remove || add || edit)\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClose\":{\"label\":{\"zh_CN\":\"关闭页签时触发\"},\"description\":{\"zh_CN\":\"关闭页签时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"name\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"页签名称\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"clickCapture\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyTabItem\"],\"parentWhitelist\":[],\"descendantBlacklist\":[],\"ancestorWhitelist\":[]},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"size\",\"tab-style\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (38, '3.20.0', '{\"zh_CN\":\"tab页签\"}', 'TinyTabItem', 'tabitem', 'tab 标签页', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"TabItem\",\"destructuring\":true}', 'component', NULL, 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"唯一标识\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"唯一标识\"}},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标题\"}}]}],\"events\":{},\"slots\":{\"title\":{\"label\":{\"zh_CN\":\"标题\"},\"description\":{\"zh_CN\":\"自定义标题\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":[\"TinyTab\"],\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"name\",\"title\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (39, '3.20.0', '{\"zh_CN\":\"面包屑\"}', 'TinyBreadcrumb', 'breadcrumb', '告诉访问者他们目前在网站中的位置以及如何返回', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Breadcrumb\",\"destructuring\":true}', 'component', 'navigation', 1, '[{\"name\":{\"zh_CN\":\"面包屑\"},\"icon\":\"breadcrumb\",\"screenshot\":\"\",\"snippetName\":\"TinyBreadcrumb\",\"schema\":{\"componentName\":\"TinyBreadcrumb\",\"props\":{\"options\":[{\"to\":\"{ path: \'/\' }\",\"label\":\"首页\"},{\"to\":\"{ path: \'/breadcrumb\' }\",\"label\":\"产品\"},{\"replace\":\"true\",\"label\":\"软件\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"separator\",\"label\":{\"text\":{\"zh_CN\":\"分隔符\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自定义分隔符\"},\"labelPosition\":\"left\"},{\"property\":\"options\",\"label\":{\"text\":{\"zh_CN\":\"配置数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"单独使用 Breadcrumb,通过 option 配置生成面包屑\"},\"labelPosition\":\"top\"},{\"property\":\"textField\",\"label\":{\"text\":{\"zh_CN\":\"键值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"指定面包屑的显示键值,结合 options 使用\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onSelect\":{\"label\":{\"zh_CN\":\"选择 breadcrumb 时触发\"},\"description\":{\"zh_CN\":\"选择 breadcrumb 时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"clickCapture\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyBreadcrumbItem\"],\"parentWhitelist\":[],\"descendantBlacklist\":[],\"ancestorWhitelist\":[]},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"separator\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (40, '3.20.0', '{\"zh_CN\":\"面包屑项\"}', 'TinyBreadcrumbItem', 'breadcrumb', '', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"BreadcrumbItem\",\"destructuring\":true}', 'component', NULL, 1, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"to\",\"label\":{\"text\":{\"zh_CN\":\"路由跳转\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"路由跳转对象,同 vue-router 的 to\"}}]}],\"slots\":{\"default\":{\"label\":{\"zh_CN\":\"面包屑项标签\"},\"description\":{\"zh_CN\":\"面包屑项\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":[\"TinyBreadcrumb\"],\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"to\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (41, '3.20.0', '{\"zh_CN\":\"折叠面板\"}', 'TinyCollapse', 'collapse', '内容区可指定动态页面或自定义 html 等,支持展开收起操作', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Collapse\",\"destructuring\":true}', 'component', 'data-display', 3, '[{\"name\":{\"zh_CN\":\"折叠面板\"},\"icon\":\"collapse\",\"screenshot\":\"\",\"snippetName\":\"TinyCollapse\",\"schema\":{\"componentName\":\"TinyCollapse\",\"props\":{\"modelValue\":\"collapse1\"},\"children\":[{\"componentName\":\"TinyCollapseItem\",\"props\":{\"name\":\"collapse1\",\"title\":\"折叠项1\"},\"children\":[{\"componentName\":\"div\"}]},{\"componentName\":\"TinyCollapseItem\",\"props\":{\"name\":\"collapse2\",\"title\":\"折叠项2\"},\"children\":[{\"componentName\":\"div\"}]},{\"componentName\":\"TinyCollapseItem\",\"props\":{\"name\":\"collapse3\",\"title\":\"折叠项3\"},\"children\":[{\"componentName\":\"div\"}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"当前激活面板\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定当前激活的面板\"}}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"激活面板改变时触发\"},\"description\":{\"zh_CN\":\"当前激活面板改变时触发(如果是手风琴模式,参数 activeNames 类型为string,否则为array)\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"data\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前激活面板的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前激活面板的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (42, '3.20.0', '{\"zh_CN\":\"折叠面板项\"}', 'TinyCollapseItem', 'collapseitem', '内容区可指定动态页面或自定义 html 等,支持展开收起操作', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CollapseItem\",\"destructuring\":true}', 'component', NULL, 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"唯一标识符\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"唯一标识符: String | Number\"},\"labelPosition\":\"left\"},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"面板标题\"},\"labelPosition\":\"left\"}]}],\"events\":{},\"slots\":{\"title\":{\"label\":{\"zh_CN\":\"标题\"},\"description\":{\"zh_CN\":\"自定义标题\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (43, '3.20.0', '{\"zh_CN\":\"表格\"}', 'TinyGrid', 'grid', '提供了非常强大数据表格功能,可以展示数据列表,可以对数据列表进行选择、编辑等', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Grid\",\"destructuring\":true}', 'component', 'table', 2, '[{\"name\":{\"zh_CN\":\"表格\"},\"icon\":\"grid\",\"screenshot\":\"\",\"snippetName\":\"tinyGrid\",\"schema\":{\"componentName\":\"TinyGrid\",\"props\":{\"editConfig\":{\"trigger\":\"click\",\"mode\":\"cell\",\"showStatus\":true},\"columns\":[{\"type\":\"index\",\"width\":60},{\"type\":\"selection\",\"width\":60},{\"field\":\"employees\",\"title\":\"员工数\"},{\"field\":\"created_date\",\"title\":\"创建日期\"},{\"field\":\"city\",\"title\":\"城市\"}],\"data\":[{\"id\":\"1\",\"name\":\"GFD科技有限公司\",\"city\":\"福州\",\"employees\":800,\"created_date\":\"2014-04-30 00:56:00\",\"boole\":false},{\"id\":\"2\",\"name\":\"WWW科技有限公司\",\"city\":\"深圳\",\"employees\":300,\"created_date\":\"2016-07-08 12:36:22\",\"boole\":true}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础属性\"},\"description\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"表格数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"onChange\":\"this.delProp(\'fetchData\')\",\"description\":{\"zh_CN\":\"设置表格的数据\"},\"labelPosition\":\"top\"},{\"property\":\"columns\",\"label\":{\"text\":{\"zh_CN\":\"表格列\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"properties\":[{\"label\":{\"zh_CN\":\"默认分组\"},\"content\":[{\"property\":\"title\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"列标题\"}},\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}}},{\"property\":\"field\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"列键值\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"sortable\",\"type\":\"boolean\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"是否排序\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"labelPosition\":\"left\"},{\"property\":\"width\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"列宽\"}},\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}}},{\"property\":\"formatText\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"内置渲染器\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"整数\",\"value\":\"integer\"},{\"label\":\"小数\",\"value\":\"number\"},{\"label\":\"金额\",\"value\":\"money\"},{\"label\":\"百分比\",\"value\":\"rate\"},{\"label\":\"布尔\",\"value\":\"boole\"},{\"label\":\"年月日\",\"value\":\"date\"},{\"label\":\"年月日时分\",\"value\":\"dateTime\"},{\"label\":\"时间\",\"value\":\"time\"},{\"label\":\"省略\",\"value\":\"ellipsis\"}]}}},{\"property\":\"renderer\",\"type\":\"object\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"渲染函数\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"dataType\":\"JSFunction\"}}},{\"property\":\"slots\",\"type\":\"object\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"插槽\"}},\"labelPosition\":\"none\",\"widget\":{\"component\":\"JsSlotConfigurator\",\"props\":{\"slots\":[\"header\",\"default\"]}}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"列类型\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"索引列\",\"value\":\"index\"},{\"label\":\"单选列\",\"value\":\"radio\"},{\"label\":\"多选列\",\"value\":\"selection\"},{\"label\":\"展开列\",\"value\":\"expand\"}],\"clearable\":true}},\"description\":{\"zh_CN\":\"设置内置列的类型,该属性的可选值为 index(序号)/ selection(复选框)/ radio(单选框)/ expand(展开行)\"},\"labelPosition\":\"left\"},{\"property\":\"editor\",\"label\":{\"text\":{\"zh_CN\":\"编辑配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"单元格编辑渲染配置项,也可以是函数 Function(h, params)\"}},{\"property\":\"filter\",\"label\":{\"text\":{\"zh_CN\":\"筛选配置\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"设置表格列的筛选配置信息。默认值为 false 不配置筛选信息\"}},{\"property\":\"showOverflow\",\"label\":{\"text\":{\"zh_CN\":\"内容超出部分省略号配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"只显示省略号\",\"value\":\"ellipsis\"},{\"label\":\"显示为原生 title\",\"value\":\"title\"},{\"label\":\"显示为 tooltip 提示\",\"value\":\"tooltip\"}],\"clearable\":true}},\"description\":{\"zh_CN\":\"设置内置列的内容超出部分显示省略号配置,该属性的可选值为 ellipsis(只显示省略号)/ title(显示为原生 title)/ tooltip(显示为 tooltip 提示)\"},\"labelPosition\":\"top\"}]}],\"widget\":{\"component\":\"ArrayItemConfigurator\",\"props\":{\"type\":\"object\",\"textField\":\"title\",\"language\":\"json\",\"buttonText\":\"编辑列配置\",\"title\":\"编辑列配置\",\"expand\":true}},\"description\":{\"zh_CN\":\"表格列的配置信息\"},\"labelPosition\":\"left\"},{\"property\":\"fetchData\",\"label\":{\"text\":{\"zh_CN\":\"服务端查询\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"onChange\":\"function () { this.delProp(\'data\') } \",\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"name\":\"fetchData\",\"dataType\":\"JSExpression\"}},\"description\":{\"zh_CN\":\"服务端数据查询方法\"},\"labelPosition\":\"top\"},{\"property\":\"pager\",\"label\":{\"text\":{\"zh_CN\":\"分页配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"defaultValue\":{\"attrs\":{\"currentPage\":1}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"name\":\"pager\",\"dataType\":\"JSExpression\"}},\"description\":{\"zh_CN\":\"分页配置,需结合fetchData使用\"},\"labelPosition\":\"top\"},{\"property\":\"resizable\",\"label\":{\"text\":{\"zh_CN\":\"调整列宽\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否允许调整列宽\"},\"labelPosition\":\"left\"},{\"property\":\"row-id\",\"label\":{\"text\":{\"zh_CN\":\"行数据主键\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"placeholder\":\"比如:id\"}},\"description\":{\"zh_CN\":\"自定义行数据唯一主键的字段名(行数据必须要有唯一主键,默认自动生成)\"},\"labelPosition\":\"left\"},{\"property\":\"select-config\",\"label\":{\"text\":{\"zh_CN\":\"行复选框配置\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"dataType\":\"JSExpression\"}},\"description\":{\"zh_CN\":\"表格行数据复选框配置项\"}},{\"property\":\"edit-rules\",\"label\":{\"text\":{\"zh_CN\":\"校验规则\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格校验规则配置项\"},\"labelPosition\":\"top\"},{\"property\":\"edit-config\",\"label\":{\"text\":{\"zh_CN\":\"编辑配置项\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格编辑配置项\"},\"labelPosition\":\"top\"},{\"property\":\"expand-config\",\"label\":{\"text\":{\"zh_CN\":\"展开行配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"展开行配置项\"},\"labelPosition\":\"top\"},{\"property\":\"sortable\",\"label\":{\"text\":{\"zh_CN\":\"可排序\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否允许列数据排序。默认为 true 可排序\"},\"labelPosition\":\"left\"}]},{\"label\":{\"zh_CN\":\"其他\"},\"description\":{\"zh_CN\":\"其他属性\"},\"content\":[{\"property\":\"auto-resize\",\"label\":{\"text\":{\"zh_CN\":\"响应式监听\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格属性设置 autoResize 属性开启响应式表格宽高的同时,将高度height设置为auto就可以自动跟随父容器高度。\"},\"labelPosition\":\"left\"},{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"边框\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否带有纵向边框\"},\"labelPosition\":\"left\"},{\"property\":\"seq-serial\",\"label\":{\"text\":{\"zh_CN\":\"行号连续\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置行序号是否连续,开启分页时有效,该属性的默认值为 false\"},\"labelPosition\":\"left\"},{\"property\":\"highlight-current-row\",\"label\":{\"text\":{\"zh_CN\":\"高亮当前行\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"高亮当前行\"},\"labelPosition\":\"left\"},{\"property\":\"highlight-hover-row\",\"label\":{\"text\":{\"zh_CN\":\"移入行高亮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"鼠标移到行是否要高亮显示\"},\"labelPosition\":\"left\"},{\"property\":\"row-class-name\",\"label\":{\"text\":{\"zh_CN\":\"设置行高亮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"给行附加 className,也可以是函数 Function({seq, row, rowIndex, $rowIndex})\"},\"labelPosition\":\"top\"},{\"property\":\"max-height\",\"label\":{\"text\":{\"zh_CN\":\"内容最大高度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置表格内容区域(不含表格头部,底部)的最大高度。\"}},{\"property\":\"row-span\",\"label\":{\"text\":{\"zh_CN\":\"行合并\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置行合并,该属性仅适用于普通表格,不可与 tree-config 同时使用\"},\"labelPosition\":\"top\"}]}],\"events\":{\"onFilterChange\":{\"label\":{\"zh_CN\":\"筛选条件改变时触发改事件\"},\"description\":{\"zh_CN\":\"配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"{$table,filters} 包含 table 实例对象和过滤条件的对象\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onSortChange\":{\"label\":{\"zh_CN\":\"点击列头,执行数据排序前触发的事件\"},\"description\":{\"zh_CN\":\"配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"{$table,filters} 包含 table 实例对象和过滤条件的对象\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onSelectAll\":{\"label\":{\"zh_CN\":\"当手动勾选全选时触发的事件\"},\"description\":{\"zh_CN\":\"只对 type=selection 有效,当手动勾选全选时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" 包含 table 实例对象\"}},{\"name\":\"checked\",\"type\":\"boolean\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"勾选状态\"}},{\"name\":\"selction\",\"type\":\"Array\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中的表格数据数组\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onSelectChange\":{\"label\":{\"zh_CN\":\"手动勾选并且值发生改变时触发的事件\"},\"description\":{\"zh_CN\":\"只对 type=selection 有效,当手动勾选并且值发生改变时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" table 实例对象\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" 原生 Event\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onToggleExpandChange\":{\"label\":{\"zh_CN\":\"当行展开或收起时会触发该事件\"},\"description\":{\"zh_CN\":\"当行展开或收起时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"{$table,row,rowIndex} 包含 table 实例对象和当前行数据的对象\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" 原生 Event\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onCurrentChange\":{\"label\":{\"zh_CN\":\"行点击时触发\"},\"description\":{\"zh_CN\":\"行点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[\"sortable\",\"columns\"]},\"contentMenu\":{\"actions\":[\"create symbol\"]},\"onBeforeMount\":\"console.log(\'table on load\'); this.pager = source.pager; this.fetchData = source.fetchData; this.data = source.data ;this.columns = source.columns\"}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"sortable\",\"columns\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (44, '3.20.0', '{\"zh_CN\":\"表格行\"}', 'TinyGridColumn', 'grid', '提供了非常强大数据表格功能,可以展示数据列表,可以对数据列表进行选择、编辑等', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"TinyGridColumn\",\"destructuring\":true}', 'component', NULL, 2, NULL, '{\"properties\":[],\"events\":{},\"shortcuts\":{},\"contentMenu\":{\"actions\":[\"create symbol\"]}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (45, '3.20.0', '{\"zh_CN\":\"分页\"}', 'TinyPager', 'pager', '当数据量过多时,使用分页分解数据,常用于 Grid 和 Repeater 组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Pager\",\"destructuring\":true}', 'component', 'table', 1, '[{\"name\":{\"zh_CN\":\"分页\"},\"icon\":\"pager\",\"screenshot\":\"\",\"snippetName\":\"TinyPager\",\"schema\":{\"componentName\":\"TinyPager\",\"props\":{\"layout\":\"total, sizes, prev, pager, next\",\"total\":100,\"pageSize\":10,\"currentPage\":1}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"currentPage\",\"label\":{\"text\":{\"zh_CN\":\"当前页数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当前页数,支持 .sync 修饰符\"},\"labelPosition\":\"left\"},{\"property\":\"pageSize\",\"label\":{\"text\":{\"zh_CN\":\"每页条数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"每页显示条目个数\"},\"labelPosition\":\"left\"},{\"property\":\"pageSizes\",\"label\":{\"text\":{\"zh_CN\":\"可选每页条数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置可选择的每页显示条数\"}},{\"property\":\"total\",\"label\":{\"text\":{\"zh_CN\":\"总条数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"数据总条数\"},\"labelPosition\":\"left\"},{\"property\":\"layout\",\"label\":{\"text\":{\"zh_CN\":\"布局\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"defaultValue\":\"total,sizes,prev, pager, next\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"type\":\"textarea\"}},\"description\":{\"zh_CN\":\"组件布局,子组件名用逗号分隔\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onCurrentChange \":{\"label\":{\"zh_CN\":\"切换页码时触发\"},\"description\":{\"zh_CN\":\"切换页码时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onPrevClick \":{\"label\":{\"zh_CN\":\"点击上一页按钮时触发\"},\"description\":{\"zh_CN\":\"点击上一页按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"page\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页的页码值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onNextClick\":{\"label\":{\"zh_CN\":\"点击下一页按钮时触发\"},\"description\":{\"zh_CN\":\"点击上一页按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"page\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页的页码值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"currentPage\",\"total\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (46, '3.20.0', '{\"zh_CN\":\"弹出编辑\"}', 'TinyPopeditor', 'popEditor', '该组件只能在弹出的面板中选择数据,不能手动输入数据;弹出面板中显示为 Tree 组件或者 Grid 组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Popeditor\",\"destructuring\":true}', 'component', 'data-display', 6, '[{\"name\":{\"zh_CN\":\"弹出编辑\"},\"icon\":\"popeditor\",\"screenshot\":\"\",\"snippetName\":\"TinyPopeditor\",\"schema\":{\"componentName\":\"TinyPopeditor\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请选择\",\"grid-op\":{\"columns\":[{\"field\":\"id\",\"title\":\"ID\",\"width\":40},{\"field\":\"name\",\"title\":\"名称\",\"showOverflow\":\"tooltip\"},{\"field\":\"province\",\"title\":\"省份\",\"width\":80},{\"field\":\"city\",\"title\":\"城市\",\"width\":80}],\"data\":[{\"id\":\"1\",\"name\":\"GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司\",\"city\":\"福州\",\"province\":\"福建\"},{\"id\":\"2\",\"name\":\"WWW科技有限公司\",\"city\":\"深圳\",\"province\":\"广东\"},{\"id\":\"3\",\"name\":\"RFV有限责任公司\",\"city\":\"中山\",\"province\":\"广东\"},{\"id\":\"4\",\"name\":\"TGB科技有限公司\",\"city\":\"龙岩\",\"province\":\"福建\"},{\"id\":\"5\",\"name\":\"YHN科技有限公司\",\"city\":\"韶关\",\"province\":\"广东\"},{\"id\":\"6\",\"name\":\"WSX科技有限公司\",\"city\":\"黄冈\",\"province\":\"武汉\"}]}}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"show-clear-btn\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"auto-lookup\",\"label\":{\"text\":{\"zh_CN\":\"自动请求数据\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"defaultValue\":true,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"初始化时是否自动请求数据,默认 true\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出面板的宽度(单位像素)\"},\"labelPosition\":\"left\"},{\"property\":\"conditions\",\"label\":{\"text\":{\"zh_CN\":\"过滤条件\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当弹出面板配置的是表格时,设置弹出面板中的过滤条件\"},\"labelPosition\":\"top\"},{\"property\":\"grid-op\",\"label\":{\"text\":{\"zh_CN\":\"面板表格配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出面板中表格组件的配置信息\"}},{\"property\":\"pager-op\",\"label\":{\"text\":{\"zh_CN\":\"分页配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出编辑框中分页配置\"},\"labelPosition\":\"top\"},{\"property\":\"multi\",\"label\":{\"text\":{\"zh_CN\":\"多选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出面板中的数据是否可多选\"},\"labelPosition\":\"left\"},{\"property\":\"show-pager\",\"label\":{\"text\":{\"zh_CN\":\"启用分页\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当 popseletor 为 grid 时才能生效,配置为 true 后还需配置 pagerOp 属性\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"选中值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项的值\"}},{\"name\":\"value\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中对象\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClose\":{\"label\":{\"zh_CN\":\"弹框关闭时触发的事件\"},\"description\":{\"zh_CN\":\"弹框关闭时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onPageChange\":{\"label\":{\"zh_CN\":\"分页切换事件\"},\"description\":{\"zh_CN\":\"表格模式下分页切换事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页码数\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"modelValue\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (47, '3.20.0', '{\"zh_CN\":\"树\"}', 'TinyTree', 'tree', '可进行展示有父子层级的数据,支持选择,异步加载等功能。但不推荐用它来展示菜单,展示菜单推荐使用树菜单', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Tree\",\"destructuring\":true}', 'component', 'data-display', 12, '[{\"name\":{\"zh_CN\":\"树\"},\"icon\":\"tree\",\"screenshot\":\"\",\"snippetName\":\"TinyTree\",\"schema\":{\"componentName\":\"TinyTree\",\"props\":{\"data\":[{\"label\":\"一级 1\",\"children\":[{\"label\":\"二级 1-1\",\"children\":[{\"label\":\"三级 1-1-1\"}]}]},{\"label\":\"一级 2\",\"children\":[{\"label\":\"二级 2-1\",\"children\":[{\"label\":\"三级 2-1-1\"}]},{\"label\":\"二级 2-2\",\"children\":[{\"label\":\"三级 2-2-1\"}]}]}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"show-checkbox\",\"label\":{\"text\":{\"zh_CN\":\"多选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置接口是否可以多选\"},\"labelPosition\":\"left\"},{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"数据源\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":[{\"label\":\"一级 1\",\"children\":[{\"label\":\"二级 1-1\"}]}],\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"可配置静态数据源和动态数据源\"},\"labelPosition\":\"top\"},{\"property\":\"node-key\",\"label\":{\"text\":{\"zh_CN\":\"唯一标识\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点唯一标识属性名称\"},\"labelPosition\":\"left\"},{\"property\":\"render-content\",\"label\":{\"text\":{\"zh_CN\":\"渲染函数\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"disabled\":true,\"placeholder\":\"请使用变量绑定来绑定函数\"}},\"description\":{\"zh_CN\":\"树节点的内容区的渲染函数\"}},{\"property\":\"icon-trigger-click-node\",\"label\":{\"text\":{\"zh_CN\":\"触发NodeClick事件\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"点击图标展开节点时是否触发 node-click 事件\"},\"labelPosition\":\"left\"},{\"property\":\"expand-icon\",\"label\":{\"text\":{\"zh_CN\":\"展开图标\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点展开图标\"},\"labelPosition\":\"top\"},{\"property\":\"shrink-icon\",\"label\":{\"text\":{\"zh_CN\":\"收缩图标\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点收缩的图标\"},\"labelPosition\":\"top\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"check-on-click-node\",\"label\":{\"text\":{\"zh_CN\":\"点击节点选中\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否在点击节点的时候选中节点,默认值为 false,即只有在点击复选框时才会选中节点\"},\"labelPosition\":\"left\"},{\"property\":\"filter-node-method\",\"label\":{\"text\":{\"zh_CN\":\"筛选函数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点筛选函数\"},\"labelPosition\":\"top\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onCheck\":{\"label\":{\"zh_CN\":\"勾选节点后的事件\"},\"description\":{\"zh_CN\":\"勾选节点后的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"data\",\"type\":\"object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中节点信息\"}},{\"name\":\"currentNode\",\"type\":\"object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onNodeClick\":{\"label\":{\"zh_CN\":\"点击节点后的事件\"},\"description\":{\"zh_CN\":\"点击节点后的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"data\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中节点信息\"}},{\"name\":\"node\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性\"}},{\"name\":\"vm\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"树组件实例\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"data\",\"show-checkbox\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (48, '3.20.0', '{\"zh_CN\":\"时间线\"}', 'TinyTimeLine', 'timeline', 'TimeLine 时间线', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"TimeLine\",\"destructuring\":true}', 'component', 'navigation', 3, '[{\"name\":{\"zh_CN\":\"时间线\"},\"icon\":\"timeline\",\"screenshot\":\"\",\"snippetName\":\"TinyTimeLine\",\"schema\":{\"componentName\":\"TinyTimeLine\",\"props\":{\"active\":\"2\",\"data\":[{\"name\":\"已下单\"},{\"name\":\"运输中\"},{\"name\":\"已签收\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"vertical\",\"type\":\"Boolean\",\"defaultValue\":{\"type\":\"i18n\",\"zh_CN\":\"垂直布局\",\"en_US\":\"layout\",\"key\":\"\"},\"label\":{\"text\":{\"zh_CN\":\"垂直布局\"}},\"cols\":12,\"rules\":[],\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点和文字垂直布局\"},\"labelPosition\":\"left\"},{\"property\":\"active\",\"label\":{\"text\":{\"zh_CN\":\"选中值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"步骤条的选中步骤值\"},\"labelPosition\":\"left\"},{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"步骤条数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":[{\"name\":\"配置基本信息\",\"status\":\"ready\"},{\"name\":\"配置报价\",\"status\":\"wait\"},{\"name\":\"完成报价\",\"status\":\"wait\"}],\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"时间线步骤条数据\"},\"labelPosition\":\"top\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"节点的点击时触发\"},\"description\":{\"zh_CN\":\"节点的点击时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"type\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"点击节点的下标\"}},{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前节点对象:{ name: 节点名称, time: 时间 }\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"active\",\"data\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (49, '3.20.0', '{\"zh_CN\":\"文字提示框\"}', 'TinyTooltip', 'tooltip', '动态显示提示信息,一般通过鼠标事件进行响应;提供 warning、error、info、success 四种类型显示不同类别的信', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Tooltip\",\"destructuring\":true}', 'component', 'data-display', 11, '[{\"name\":{\"zh_CN\":\"文字提示框\"},\"icon\":\"tooltip\",\"screenshot\":\"\",\"snippetName\":\"TinyTooltip\",\"schema\":{\"componentName\":\"TinyTooltip\",\"props\":{\"content\":\"Top Left 提示文字\",\"placement\":\"top-start\",\"manual\":true,\"modelValue\":true},\"children\":[{\"componentName\":\"span\",\"children\":[{\"componentName\":\"div\",\"props\":{}}]},{\"componentName\":\"Template\",\"props\":{\"slot\":\"content\"},\"children\":[{\"componentName\":\"span\",\"children\":[{\"componentName\":\"div\",\"props\":{\"placeholder\":\"提示内容\"}}]}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"placement\",\"label\":{\"text\":{\"zh_CN\":\"提示位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"top\",\"value\":\"top\"},{\"label\":\"top-start\",\"value\":\"top-start\"},{\"label\":\"top-end\",\"value\":\"top-end\"},{\"label\":\"bottom\",\"value\":\"bottom\"},{\"label\":\"bottom-start\",\"value\":\"bottom-start\"},{\"label\":\"bottom-end\",\"value\":\"bottom-end\"},{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"left-start\",\"value\":\"left-start\"},{\"label\":\"left-end\",\"value\":\"left-end\"},{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"right-start\",\"value\":\"right-start\"},{\"label\":\"right-end\",\"value\":\"right-end\"}]}},\"description\":{\"zh_CN\":\"Tooltip 的出现位置\"},\"labelPosition\":\"left\"},{\"property\":\"content\",\"label\":{\"text\":{\"zh_CN\":\"内容\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"提示信息\",\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"显示的内容,也可以通过 slot#content 传入 DOM\"},\"labelPosition\":\"left\"},{\"property\":\"render-content\",\"label\":{\"text\":{\"zh_CN\":\"渲染函数\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"disabled\":true,\"placeholder\":\"请使用变量绑定来绑定函数\"}},\"description\":{\"zh_CN\":\"自定义渲染函数,返回需要渲染的节点内容\"}},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"是否可见\"}},\"defaultValue\":true,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"状态是否可见\"},\"labelPosition\":\"left\"},{\"property\":\"manual\",\"label\":{\"text\":{\"zh_CN\":\"手动控制\"}},\"defaultValue\":true,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"手动控制模式,设置为 true 后,mouseenter 和 mouseleave 事件将不会生效\"},\"labelPosition\":\"left\"}]}],\"events\":{},\"slots\":{\"content\":{\"label\":{\"zh_CN\":\"提示内容\"},\"description\":{\"zh_CN\":\"自定义提示内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":true,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"content\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (50, '3.20.0', '{\"zh_CN\":\"提示框\"}', 'TinyPopover', 'popover', 'Popover可通过对一个触发源操作触发弹出框,支持自定义弹出内容,延迟触发和渐变动画', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Popover\",\"destructuring\":true}', 'component', 'data-display', 7, '[{\"name\":{\"zh_CN\":\"提示框\"},\"icon\":\"popover\",\"screenshot\":\"\",\"snippetName\":\"TinyPopover\",\"schema\":{\"componentName\":\"TinyPopover\",\"props\":{\"width\":200,\"title\":\"弹框标题\",\"trigger\":\"manual\",\"modelValue\":true},\"children\":[{\"componentName\":\"Template\",\"props\":{\"slot\":\"reference\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"placeholder\":\"触发源\"}}]},{\"componentName\":\"Template\",\"props\":{\"slot\":\"default\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"placeholder\":\"提示内容\"}}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定,手动控制是否可见的状态值\"},\"labelPosition\":\"left\"},{\"property\":\"placement\",\"label\":{\"text\":{\"zh_CN\":\"位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"top\",\"value\":\"top\"},{\"label\":\"top-start\",\"value\":\"top-start\"},{\"label\":\"top-end\",\"value\":\"top-end\"},{\"label\":\"bottom\",\"value\":\"bottom\"},{\"label\":\"bottom-start\",\"value\":\"bottom-start\"},{\"label\":\"bottom-end\",\"value\":\"bottom-end\"},{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"left-start\",\"value\":\"left-start\"},{\"label\":\"left-end\",\"value\":\"left-end\"},{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"right-start\",\"value\":\"right-start\"},{\"label\":\"right-end\",\"value\":\"right-end\"}]}},\"description\":{\"zh_CN\":\"提示框位置\"},\"labelPosition\":\"left\"},{\"property\":\"trigger\",\"label\":{\"text\":{\"zh_CN\":\"触发方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"click\",\"value\":\"click\"},{\"label\":\"focus\",\"value\":\"focus\"},{\"label\":\"hover\",\"value\":\"hover\"},{\"label\":\"manual\",\"value\":\"manual\"}]}},\"description\":{\"zh_CN\":\"触发方式,该属性的可选值为 click / focus / hover / manual,该属性的默认值为 click\"},\"labelPosition\":\"left\"},{\"property\":\"popper-class\",\"label\":{\"text\":{\"zh_CN\":\"自定义类\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"为 popper 添加类名\"},\"labelPosition\":\"left\"},{\"property\":\"visible-arrow\",\"label\":{\"text\":{\"zh_CN\":\"显示箭头\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示 Tooltip 箭头\"},\"labelPosition\":\"left\"},{\"property\":\"append-to-body\",\"label\":{\"text\":{\"zh_CN\":\"添加到body上\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"Popover弹窗是否添加到body上\"},\"labelPosition\":\"left\"},{\"property\":\"arrow-offset\",\"label\":{\"text\":{\"zh_CN\":\"箭头的位置偏移\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"箭头的位置偏移,该属性的默认值为 0\"}},{\"property\":\"close-delay\",\"label\":{\"text\":{\"zh_CN\":\"延迟隐藏\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"触发方式为 hover 时的隐藏延迟,单位为毫秒\"},\"labelPosition\":\"left\"},{\"property\":\"content\",\"label\":{\"text\":{\"zh_CN\":\"显示的内容\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"显示的内容,也可以通过 slot 传入 DOM\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"Popover 是否可用\"},\"labelPosition\":\"left\"},{\"property\":\"offset\",\"label\":{\"text\":{\"zh_CN\":\"位置偏移量\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"出现位置的偏移量\"},\"labelPosition\":\"left\"},{\"property\":\"open-delay\",\"label\":{\"text\":{\"zh_CN\":\"显示延迟\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"触发方式为 hover 时的显示延迟,单位为毫秒\"},\"labelPosition\":\"left\"},{\"property\":\"popper-options\",\"label\":{\"text\":{\"zh_CN\":\"弹出层参数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"popper.js 的参数\"},\"labelPosition\":\"top\"},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"提示内容标题\"},\"labelPosition\":\"left\"},{\"property\":\"transform-origin\",\"label\":{\"text\":{\"zh_CN\":\"旋转中心点\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"组件的旋转中心点,组件的旋转中心点\"},\"labelPosition\":\"left\"},{\"property\":\"transition\",\"label\":{\"text\":{\"zh_CN\":\"渐变动画\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"该属性的默认值为 fade-in-linear\"},\"labelPosition\":\"left\"},{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"宽度\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"手动控制是否可见的状态值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"boolean\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的可见状态值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":true,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"visible\",\"width\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (51, '3.20.0', '{\"zh_CN\":\"日期选择\"}', 'TinyDatePicker', 'datepick', '用于输入或选择日期', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"DatePicker\",\"destructuring\":true}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"日期选择\"},\"icon\":\"datepick\",\"screenshot\":\"\",\"snippetName\":\"TinyDatePicker\",\"schema\":{\"componentName\":\"TinyDatePicker\",\"props\":{\"placeholder\":\"请输入\",\"modelValue\":\"\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"日期\",\"value\":\"date\"},{\"label\":\"日期时间\",\"value\":\"datetime\"},{\"label\":\"周\",\"value\":\"week\"},{\"label\":\"月份\",\"value\":\"month\"},{\"label\":\"年份\",\"value\":\"year\"}]}},\"description\":{\"zh_CN\":\"设置日期框的type属性\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"readonly\",\"label\":{\"text\":{\"zh_CN\":\"只读\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否只读\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"日期框尺寸。该属性的可选值为 medium / small / mini\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"maxlength\",\"label\":{\"text\":{\"zh_CN\":\"输入最大长度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置 input 框的maxLength\"}},{\"property\":\"autofocus\",\"label\":{\"text\":{\"zh_CN\":\"聚焦\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自动获取焦点\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框改变后的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:16', '1', '2025-08-03 19:54:16'); +INSERT INTO `t_component` VALUES (52, '3.20.0', '{\"zh_CN\":\"数字输入框\"}', 'TinyNumeric', 'numeric', '通过鼠标或键盘输入字符', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Numeric\",\"destructuring\":true}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"数字输入框\"},\"icon\":\"numeric\",\"screenshot\":\"\",\"snippetName\":\"TinyNumeric\",\"schema\":{\"componentName\":\"TinyNumeric\",\"props\":{\"allow-empty\":true,\"placeholder\":\"请输入\",\"controls-position\":\"right\",\"step\":1}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"allow-empty\",\"label\":{\"text\":{\"zh_CN\":\"内容可清空\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否内容可清空\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"输入框尺寸。该属性的可选值为 medium / small / mini\"},\"labelPosition\":\"left\"},{\"property\":\"controls\",\"label\":{\"text\":{\"zh_CN\":\"加减按钮\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否使用加减按钮\"},\"labelPosition\":\"left\"},{\"property\":\"controls-position\",\"label\":{\"text\":{\"zh_CN\":\"加减按钮位置\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"左右两侧\",\"value\":\"\"},{\"label\":\"只在右侧\",\"value\":\"right\"}]}},\"description\":{\"zh_CN\":\"加减按钮位置\"}},{\"property\":\"precision\",\"label\":{\"text\":{\"zh_CN\":\"精度\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"数值精度\"},\"labelPosition\":\"left\"},{\"property\":\"step\",\"label\":{\"text\":{\"zh_CN\":\"步长\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"步长\"},\"labelPosition\":\"left\"},{\"property\":\"max\",\"label\":{\"text\":{\"zh_CN\":\"最大数值\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"可输入的最大数值\"},\"labelPosition\":\"left\"},{\"property\":\"min\",\"label\":{\"text\":{\"zh_CN\":\"最小数值\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"可输入的最大数值\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框改变后的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:16', '1', '2025-08-03 19:54:16'); +INSERT INTO `t_component` VALUES (53, '3.20.0', '{\"zh_CN\":\"穿梭框\"}', 'TinyTransfer', 'transfer', '穿梭框,实现左右表格数据的双向交换的组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"TinyTransfer\",\"destructuring\":true}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"穿梭框\"},\"icon\":\"transfer\",\"screenshot\":\"\",\"snippetName\":\"TinyTransfer\",\"schema\":{\"componentName\":\"TinyTransfer\",\"props\":{\"modelValue\":[3],\"data\":[{\"key\":1,\"label\":\"备选项1\",\"disabled\":false},{\"key\":2,\"label\":\"备选项2\",\"disabled\":false},{\"key\":3,\"label\":\"备选项3\",\"disabled\":false},{\"key\":4,\"label\":\"备选项4\",\"disabled\":false}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"左右列表的全量数据源\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"左右列表的全量数据源\"},\"labelPosition\":\"left\"},{\"property\":\"filterable\",\"label\":{\"text\":{\"zh_CN\":\"是否启用搜索的功能\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否启用搜索的功能\"},\"labelPosition\":\"left\"},{\"property\":\"showAllBtn\",\"label\":{\"text\":{\"zh_CN\":\"是否显示全部移动按钮\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示全部移动按钮\"},\"labelPosition\":\"left\"},{\"property\":\"toLeftDisable\",\"label\":{\"text\":{\"zh_CN\":\"组件初始化状态下未选中时,默认按钮显示禁用状态\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"组件初始化状态下未选中时,默认按钮显示禁用状态\"},\"labelPosition\":\"left\"},{\"property\":\"toRightDisable\",\"label\":{\"text\":{\"zh_CN\":\"组件初始化状态下未选中时,默认按钮显示禁用状态\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"组件初始化状态下未选中时,默认按钮显示禁用状态\"},\"labelPosition\":\"left\"},{\"property\":\"titles\",\"label\":{\"text\":{\"zh_CN\":\"自定义列表的标题\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"自定义列表的标题;不设置titles时,左右列表的标题默认显示为: 列表 1, 列表 2\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"右侧列表元素变化时触发\"},\"description\":{\"zh_CN\":\"右侧列表元素变化时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"右侧列表元素变化时触发\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onLeftCheckChange\":{\"label\":{\"zh_CN\":\"左侧列表元素被用户选中 / 取消选中时触发;\"},\"description\":{\"zh_CN\":\"左侧列表元素被用户选中 / 取消选中时触发;\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"左侧列表元素被用户选中 / 取消选中时触发;\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onRightCheckChange\":{\"label\":{\"zh_CN\":\"右侧列表元素被用户选中 / 取消选中时触发\"},\"description\":{\"zh_CN\":\"右侧列表元素被用户选中 / 取消选中时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"右侧列表元素被用户选中 / 取消选中时触发\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:16', '1', '2025-08-03 19:54:16'); -INSERT INTO `t_component_library` (`id`, `version`, `name`, `app_id`, `package`, `registry`, `framework`, `description`, `script`, `css`, `bundle`, `dependencies`, `others`, `thumbnail`, `public`, `is_started`, `is_official`, `is_default`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (1, '3.20.0', 'TinyVue组件库', NULL, '@opentiny/vue', NULL, 'Vue', NULL, 'https://unpkg.com/@opentiny/vue-runtime@~3.20/dist3/tiny-vue-pc.mjs', 'https://unpkg.com/@opentiny/vue-theme@~3.20/index.css', NULL, NULL, NULL, NULL, NULL, 1, 1, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component_library` (`id`, `version`, `name`, `app_id`, `package`, `registry`, `framework`, `description`, `script`, `css`, `bundle`, `dependencies`, `others`, `thumbnail`, `public`, `is_started`, `is_official`, `is_default`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (2, '2.4.2', 'element-plus组件库', NULL, 'element-plus', NULL, 'Vue', NULL, 'https://unpkg.com/element-plus@2.4.2/dist/index.full.mjs', 'https://unpkg.com/element-plus@2.4.2/dist/index.css', NULL, NULL, NULL, NULL, NULL, 1, 1, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component_library` VALUES (1, '3.20.0', 'TinyVue组件库', NULL, '@opentiny/vue', NULL, 'Vue', NULL, 'https://registry.npmmirror.com/@opentiny/vue-runtime/~3.20/files/dist3/tiny-vue-pc.mjs', 'https://registry.npmmirror.com/@opentiny/vue-theme/~3.20/files/index.css', NULL, NULL, NULL, NULL, NULL, 1, 1, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component_library` VALUES (2, '2.4.2', 'element-plus组件库', NULL, 'element-plus', NULL, 'Vue', NULL, 'https://registry.npmmirror.com/element-plus/2.4.2/files/dist/index.full.mjs', 'https://registry.npmmirror.com/element-plus/2.4.2/files/dist/index.css', NULL, NULL, NULL, NULL, NULL, 1, 1, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (1, 1, 1); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (2, 1, 2); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (3, 1, 3); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (4, 1, 4); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (5, 1, 5); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (6, 1, 6); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (7, 1, 7); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (8, 1, 8); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (9, 1, 9); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (10, 1, 10); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (11, 1, 11); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (12, 1, 12); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (13, 1, 13); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (14, 1, 14); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (15, 1, 15); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (16, 1, 16); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (17, 1, 17); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (18, 1, 18); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (19, 1, 19); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (20, 1, 20); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (21, 1, 21); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (22, 1, 22); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (23, 1, 23); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (24, 1, 24); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (25, 1, 25); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (26, 1, 26); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (27, 1, 27); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (28, 1, 28); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (29, 1, 29); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (30, 1, 30); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (31, 1, 31); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (32, 1, 32); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (33, 1, 33); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (34, 1, 34); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (35, 1, 35); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (36, 1, 36); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (37, 1, 37); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (38, 1, 38); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (39, 1, 39); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (40, 1, 40); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (41, 1, 41); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (42, 1, 42); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (43, 1, 43); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (44, 1, 44); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (45, 1, 45); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (46, 1, 46); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (47, 1, 47); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (48, 1, 48); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (49, 1, 49); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (50, 1, 50); +INSERT INTO `r_material_history_component` VALUES (1, 1, 1); +INSERT INTO `r_material_history_component` VALUES (2, 1, 2); +INSERT INTO `r_material_history_component` VALUES (3, 1, 3); +INSERT INTO `r_material_history_component` VALUES (4, 1, 4); +INSERT INTO `r_material_history_component` VALUES (5, 1, 5); +INSERT INTO `r_material_history_component` VALUES (6, 1, 6); +INSERT INTO `r_material_history_component` VALUES (7, 1, 7); +INSERT INTO `r_material_history_component` VALUES (8, 1, 8); +INSERT INTO `r_material_history_component` VALUES (9, 1, 9); +INSERT INTO `r_material_history_component` VALUES (10, 1, 10); +INSERT INTO `r_material_history_component` VALUES (11, 1, 11); +INSERT INTO `r_material_history_component` VALUES (12, 1, 12); +INSERT INTO `r_material_history_component` VALUES (13, 1, 13); +INSERT INTO `r_material_history_component` VALUES (14, 1, 14); +INSERT INTO `r_material_history_component` VALUES (15, 1, 15); +INSERT INTO `r_material_history_component` VALUES (16, 1, 16); +INSERT INTO `r_material_history_component` VALUES (17, 1, 17); +INSERT INTO `r_material_history_component` VALUES (18, 1, 18); +INSERT INTO `r_material_history_component` VALUES (19, 1, 19); +INSERT INTO `r_material_history_component` VALUES (20, 1, 20); +INSERT INTO `r_material_history_component` VALUES (21, 1, 21); +INSERT INTO `r_material_history_component` VALUES (22, 1, 22); +INSERT INTO `r_material_history_component` VALUES (23, 1, 23); +INSERT INTO `r_material_history_component` VALUES (24, 1, 24); +INSERT INTO `r_material_history_component` VALUES (25, 1, 25); +INSERT INTO `r_material_history_component` VALUES (26, 1, 26); +INSERT INTO `r_material_history_component` VALUES (27, 1, 27); +INSERT INTO `r_material_history_component` VALUES (28, 1, 28); +INSERT INTO `r_material_history_component` VALUES (29, 1, 29); +INSERT INTO `r_material_history_component` VALUES (30, 1, 30); +INSERT INTO `r_material_history_component` VALUES (31, 1, 31); +INSERT INTO `r_material_history_component` VALUES (32, 1, 32); +INSERT INTO `r_material_history_component` VALUES (33, 1, 33); +INSERT INTO `r_material_history_component` VALUES (34, 1, 34); +INSERT INTO `r_material_history_component` VALUES (35, 1, 35); +INSERT INTO `r_material_history_component` VALUES (36, 1, 36); +INSERT INTO `r_material_history_component` VALUES (37, 1, 37); +INSERT INTO `r_material_history_component` VALUES (38, 1, 38); +INSERT INTO `r_material_history_component` VALUES (39, 1, 39); +INSERT INTO `r_material_history_component` VALUES (40, 1, 40); +INSERT INTO `r_material_history_component` VALUES (41, 1, 41); +INSERT INTO `r_material_history_component` VALUES (42, 1, 42); +INSERT INTO `r_material_history_component` VALUES (43, 1, 43); +INSERT INTO `r_material_history_component` VALUES (44, 1, 44); +INSERT INTO `r_material_history_component` VALUES (45, 1, 45); +INSERT INTO `r_material_history_component` VALUES (46, 1, 46); +INSERT INTO `r_material_history_component` VALUES (47, 1, 47); +INSERT INTO `r_material_history_component` VALUES (48, 1, 48); +INSERT INTO `r_material_history_component` VALUES (49, 1, 49); +INSERT INTO `r_material_history_component` VALUES (50, 1, 50); +INSERT INTO `r_material_history_component` VALUES (51, 1, 51); +INSERT INTO `r_material_history_component` VALUES (52, 1, 52); +INSERT INTO `r_material_history_component` VALUES (53, 1, 53); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (1, 1, 1); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (2, 1, 2); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (3, 1, 3); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (4, 1, 4); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (5, 1, 5); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (6, 1, 6); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (7, 1, 7); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (8, 1, 8); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (9, 1, 9); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (10, 1, 10); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (11, 1, 11); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (12, 1, 12); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (13, 1, 13); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (14, 1, 14); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (15, 1, 15); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (16, 1, 16); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (17, 1, 17); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (18, 1, 18); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (19, 1, 19); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (20, 1, 20); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (21, 1, 21); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (22, 1, 22); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (23, 1, 23); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (24, 1, 24); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (25, 1, 25); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (26, 1, 26); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (27, 1, 27); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (28, 1, 28); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (29, 1, 29); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (30, 1, 30); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (31, 1, 31); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (32, 1, 32); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (33, 1, 33); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (34, 1, 34); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (35, 1, 35); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (36, 1, 36); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (37, 1, 37); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (38, 1, 38); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (39, 1, 39); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (40, 1, 40); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (41, 1, 41); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (42, 1, 42); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (43, 1, 43); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (44, 1, 44); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (45, 1, 45); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (46, 1, 46); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (47, 1, 47); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (48, 1, 48); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (49, 1, 49); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (50, 1, 50); +INSERT INTO `r_material_component` VALUES (1, 1, 1); +INSERT INTO `r_material_component` VALUES (2, 1, 2); +INSERT INTO `r_material_component` VALUES (3, 1, 3); +INSERT INTO `r_material_component` VALUES (4, 1, 4); +INSERT INTO `r_material_component` VALUES (5, 1, 5); +INSERT INTO `r_material_component` VALUES (6, 1, 6); +INSERT INTO `r_material_component` VALUES (7, 1, 7); +INSERT INTO `r_material_component` VALUES (8, 1, 8); +INSERT INTO `r_material_component` VALUES (9, 1, 9); +INSERT INTO `r_material_component` VALUES (10, 1, 10); +INSERT INTO `r_material_component` VALUES (11, 1, 11); +INSERT INTO `r_material_component` VALUES (12, 1, 12); +INSERT INTO `r_material_component` VALUES (13, 1, 13); +INSERT INTO `r_material_component` VALUES (14, 1, 14); +INSERT INTO `r_material_component` VALUES (15, 1, 15); +INSERT INTO `r_material_component` VALUES (16, 1, 16); +INSERT INTO `r_material_component` VALUES (17, 1, 17); +INSERT INTO `r_material_component` VALUES (18, 1, 18); +INSERT INTO `r_material_component` VALUES (19, 1, 19); +INSERT INTO `r_material_component` VALUES (20, 1, 20); +INSERT INTO `r_material_component` VALUES (21, 1, 21); +INSERT INTO `r_material_component` VALUES (22, 1, 22); +INSERT INTO `r_material_component` VALUES (23, 1, 23); +INSERT INTO `r_material_component` VALUES (24, 1, 24); +INSERT INTO `r_material_component` VALUES (25, 1, 25); +INSERT INTO `r_material_component` VALUES (26, 1, 26); +INSERT INTO `r_material_component` VALUES (27, 1, 27); +INSERT INTO `r_material_component` VALUES (28, 1, 28); +INSERT INTO `r_material_component` VALUES (29, 1, 29); +INSERT INTO `r_material_component` VALUES (30, 1, 30); +INSERT INTO `r_material_component` VALUES (31, 1, 31); +INSERT INTO `r_material_component` VALUES (32, 1, 32); +INSERT INTO `r_material_component` VALUES (33, 1, 33); +INSERT INTO `r_material_component` VALUES (34, 1, 34); +INSERT INTO `r_material_component` VALUES (35, 1, 35); +INSERT INTO `r_material_component` VALUES (36, 1, 36); +INSERT INTO `r_material_component` VALUES (37, 1, 37); +INSERT INTO `r_material_component` VALUES (38, 1, 38); +INSERT INTO `r_material_component` VALUES (39, 1, 39); +INSERT INTO `r_material_component` VALUES (40, 1, 40); +INSERT INTO `r_material_component` VALUES (41, 1, 41); +INSERT INTO `r_material_component` VALUES (42, 1, 42); +INSERT INTO `r_material_component` VALUES (43, 1, 43); +INSERT INTO `r_material_component` VALUES (44, 1, 44); +INSERT INTO `r_material_component` VALUES (45, 1, 45); +INSERT INTO `r_material_component` VALUES (46, 1, 46); +INSERT INTO `r_material_component` VALUES (47, 1, 47); +INSERT INTO `r_material_component` VALUES (48, 1, 48); +INSERT INTO `r_material_component` VALUES (49, 1, 49); +INSERT INTO `r_material_component` VALUES (50, 1, 50); +INSERT INTO `r_material_component` VALUES (51, 1, 51); +INSERT INTO `r_material_component` VALUES (52, 1, 52); +INSERT INTO `r_material_component` VALUES (53, 1, 53); diff --git a/docker-deploy-data/mysql/init/init_data_for_test_v1.0.0.sql b/docker-deploy-data/mysql/init/init_data_for_test_v1.0.0.sql index 0e38b756..ddaa047a 100644 --- a/docker-deploy-data/mysql/init/init_data_for_test_v1.0.0.sql +++ b/docker-deploy-data/mysql/init/init_data_for_test_v1.0.0.sql @@ -18,158 +18,168 @@ INSERT INTO `t_platform` (`id`, `name`, `published`, `last_build_info`, `descrip INSERT INTO `t_platform_history` (`id`, `ref_id`, `version`, `name`, `publish_url`, `description`, `vscode_url`, `material_history_id`, `sub_count`, `material_pkg_name`, `material_version`, `image_url`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `last_updated_by`, `created_time`, `last_updated_time`) VALUES (1, 1, '1.0.0', 'default', 'http://tinyengine.com', '默认设计器', NULL, 1, 1, '@opentiny/lowcode-alpha-material-materialstwo-1505', '1.0.8', NULL, '1', NULL, '1', '1', '1', '2024-11-14 22:20:25', '2024-11-14 22:20:25'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (1, '2.4.2', '{\"zh_CN\":\"输入框\"}', 'ElInput', 'input', '通过鼠标或键盘输入字符', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElInput\"}', '表单组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"输入框\"},\"icon\":\"input\",\"screenshot\":\"\",\"snippetName\":\"ElInput\",\"schema\":{}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"description\":{\"zh_CN\":\"绑定值\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"description\":{\"zh_CN\":\"类型\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"maxlength\",\"label\":{\"text\":{\"zh_CN\":\"最大长度\"}},\"description\":{\"zh_CN\":\"最大输入长度\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"number\",\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"是否禁用\"}},\"description\":{\"zh_CN\":\"是否禁用\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定值改变时触发\"},\"description\":{\"zh_CN\":\"双向绑定值改变时触发\"}},\"onBlur\":{\"label\":{\"zh_CN\":\"输入框失去焦点时触发\"},\"description\":{\"zh_CN\":\"输入框失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{\"prefix\":{\"label\":{\"zh_CN\":\"头部内容\"},\"description\":{\"zh_CN\":\"输入框头部内容,只对非 type=\'textarea\' 有效\"}},\"suffix\":{\"label\":{\"zh_CN\":\"尾部内容\"},\"description\":{\"zh_CN\":\"输入框尾部内容,只对非 type=\'textarea\' 有效\"}},\"prepend\":{\"label\":{\"zh_CN\":\"前置内容\"},\"description\":{\"zh_CN\":\"输入框前置内容,只对非 type=\'textarea\' 有效\"}},\"append\":{\"label\":{\"zh_CN\":\"后置内容\"},\"description\":{\"zh_CN\":\"输入框后置内容,只对非 type=\'textarea\' 有效\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"type\",\"size\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (2, '2.4.2', '{\"zh_CN\":\"按钮\"}', 'ElButton', 'button', '常用的操作按钮', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElButton\"}', '基础组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"按钮\"},\"icon\":\"button\",\"screenshot\":\"\",\"snippetName\":\"ElButton\",\"schema\":{\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"按钮文本\"}}]}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"description\":{\"zh_CN\":\"类型\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"plain\",\"label\":{\"text\":{\"zh_CN\":\"朴素按钮\"}},\"description\":{\"zh_CN\":\"是否为朴素按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文字按钮\"}},\"description\":{\"zh_CN\":\"是否为文字按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"bg\",\"label\":{\"text\":{\"zh_CN\":\"背景颜色\"}},\"description\":{\"zh_CN\":\"是否显示文字按钮背景颜色\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"link\",\"label\":{\"text\":{\"zh_CN\":\"链接按钮\"}},\"description\":{\"zh_CN\":\"是否为链接按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"round\",\"label\":{\"text\":{\"zh_CN\":\"圆角按钮\"}},\"description\":{\"zh_CN\":\"是否为圆角按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"circle\",\"label\":{\"text\":{\"zh_CN\":\"圆形按钮\"}},\"description\":{\"zh_CN\":\"是否为圆形按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"loading\",\"label\":{\"text\":{\"zh_CN\":\"加载中状态\"}},\"description\":{\"zh_CN\":\"是否为加载中状态\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"description\":{\"zh_CN\":\"是否禁用\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{},\"slots\":{\"default\":{\"label\":{\"zh_CN\":\"default\"},\"description\":{\"zh_CN\":\"自定义默认内容\"}},\"loading\":{\"label\":{\"zh_CN\":\"loading\"},\"description\":{\"zh_CN\":\"自定义加载中组件\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"type\",\"size\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (3, '2.4.2', '{\"zh_CN\":\"表单\"}', 'ElForm', 'form', '表单包含 输入框, 单选框, 下拉选择, 多选框 等用户输入的组件。 使用表单,您可以收集、验证和提交数据。', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElForm\"}', '表单组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"表单\"},\"icon\":\"form\",\"screenshot\":\"\",\"snippetName\":\"ElForm\",\"schema\":{\"children\":[{\"componentName\":\"ElFormItem\",\"props\":{\"label\":\"账号\",\"prop\":\"account\"},\"children\":[{\"componentName\":\"ElInput\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请输入账号\"}}]},{\"componentName\":\"ElFormItem\",\"props\":{\"label\":\"密码\",\"prop\":\"password\"},\"children\":[{\"componentName\":\"ElInput\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请输入密码\",\"type\":\"password\"}}]},{\"componentName\":\"ElFormItem\",\"props\":{},\"children\":[{\"componentName\":\"ElButton\",\"props\":{\"type\":\"primary\",\"style\":\"margin-right: 10px\"},\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"提交\"}}]},{\"componentName\":\"ElButton\",\"props\":{\"type\":\"primary\"},\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"重置\"}}]}]}]}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"model\",\"label\":{\"text\":{\"zh_CN\":\"数据对象\"}},\"description\":{\"zh_CN\":\"表单数据对象\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"rules\",\"label\":{\"text\":{\"zh_CN\":\"验证规则\"}},\"description\":{\"zh_CN\":\"表单验证规则\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"inline\",\"label\":{\"text\":{\"zh_CN\":\"行内模式\"}},\"description\":{\"zh_CN\":\"行内表单模式\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"label-position\",\"label\":{\"text\":{\"zh_CN\":\"标签位置\"}},\"description\":{\"zh_CN\":\"表单域标签的位置, 当设置为 left 或 right 时,则也需要设置标签宽度属性\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"right\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"top\",\"value\":\"top\"}]}}},{\"property\":\"label-width\",\"label\":{\"text\":{\"zh_CN\":\"标签宽度\"}},\"description\":{\"zh_CN\":\"标签的长度,例如 \'50px\'。 作为 Form 直接子元素的 form-item 会继承该值。 可以使用 auto。\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"label-suffix\",\"label\":{\"text\":{\"zh_CN\":\"标签后缀\"}},\"description\":{\"zh_CN\":\"表单域标签的后缀\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"hide-required-asterisk\",\"label\":{\"text\":{\"zh_CN\":\"隐藏必填星号\"}},\"description\":{\"zh_CN\":\"是否隐藏必填字段标签旁边的红色星号\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"require-asterisk-position\",\"label\":{\"text\":{\"zh_CN\":\"星号位置\"}},\"description\":{\"zh_CN\":\"星号的位置\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"left\",\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"show-message\",\"label\":{\"text\":{\"zh_CN\":\"显示校验信息\"}},\"description\":{\"zh_CN\":\"是否显示校验错误信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"inline-message\",\"label\":{\"text\":{\"zh_CN\":\"行内显示校验信息\"}},\"description\":{\"zh_CN\":\"是否以行内形式展示校验信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"status-icon\",\"label\":{\"text\":{\"zh_CN\":\"显示校验结果图标\"}},\"description\":{\"zh_CN\":\"是否在输入框中显示校验结果反馈图标\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"validate-on-rule-change\",\"label\":{\"text\":{\"zh_CN\":\"触发验证\"}},\"description\":{\"zh_CN\":\"是否在 rules 属性改变后立即触发一次验证\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"用于控制该表单内组件的尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"description\":{\"zh_CN\":\"是否禁用该表单内的所有组件。 如果设置为 true, 它将覆盖内部组件的 disabled 属性\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"scroll-to-error\",\"label\":{\"text\":{\"zh_CN\":\"滚动到错误项\"}},\"description\":{\"zh_CN\":\"当校验失败时,滚动到第一个错误表单项\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onValidate\":{\"label\":{\"zh_CN\":\"任一表单项被校验后触发\"},\"description\":{\"zh_CN\":\"任一表单项被校验后触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":[\"ElFormItem\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (4, '2.4.2', '{\"zh_CN\":\"表单子项\"}', 'ElFormItem', 'formItem', '表单包含 输入框, 单选框, 下拉选择, 多选框 等用户输入的组件。 使用表单,您可以收集、验证和提交数据。', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElFormItem\"}', '表单组件', 'element-plus', NULL, NULL, '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"prop\",\"label\":{\"text\":{\"zh_CN\":\"键名\"}},\"description\":{\"zh_CN\":\"model 的键名。 它可以是一个属性的值(如 a.b.0 或 [a\', \'b\', \'0\'])。 在定义了 validate、resetFields 的方法时,该属性是必填的\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"label\",\"label\":{\"text\":{\"zh_CN\":\"标签文本\"}},\"description\":{\"zh_CN\":\"标签文本\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"label-width\",\"label\":{\"text\":{\"zh_CN\":\"标签宽度\"}},\"description\":{\"zh_CN\":\"标签宽度,例如 \'50px\'。 可以使用 auto\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"required\",\"label\":{\"text\":{\"zh_CN\":\"必填项\"}},\"description\":{\"zh_CN\":\"是否为必填项,如不设置,则会根据校验规则确认\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"rules\",\"label\":{\"text\":{\"zh_CN\":\"验证规则\"}},\"description\":{\"zh_CN\":\"表单验证规则, 更多内容可以参考async-validator\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"error\",\"label\":{\"text\":{\"zh_CN\":\"错误信息\"}},\"description\":{\"zh_CN\":\"表单域验证错误时的提示信息。设置该值会导致表单验证状态变为 error,并显示该错误信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"show-message\",\"label\":{\"text\":{\"zh_CN\":\"显示错误信息\"}},\"description\":{\"zh_CN\":\"是否显示校验错误信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"inline-message\",\"label\":{\"text\":{\"zh_CN\":\"行内显示错误信息\"}},\"description\":{\"zh_CN\":\"是否在行内显示校验信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"用于控制该表单内组件的尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"for\",\"label\":{\"text\":{\"zh_CN\":\"for\"}},\"description\":{\"zh_CN\":\"和原生标签相同能力\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"validate-status\",\"label\":{\"text\":{\"zh_CN\":\"校验状态\"}},\"description\":{\"zh_CN\":\"formItem 校验的状态\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"error\",\"value\":\"error\"},{\"label\":\"validating\",\"value\":\"validating\"},{\"label\":\"success\",\"value\":\"success\"}]}}}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{},\"slots\":{\"label\":{\"label\":{\"zh_CN\":\"label\"},\"description\":{\"zh_CN\":\"标签位置显示的内容\"}},\"error\":{\"label\":{\"zh_CN\":\"error\"},\"description\":{\"zh_CN\":\"验证错误信息的显示内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (5, '2.4.2', '{\"zh_CN\":\"表单\"}', 'ElTable', 'table', '用于展示多条结构类似的数据, 可对数据进行排序、筛选、对比或其他自定义操作', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElTable\"}', '数据展示', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"表格\"},\"icon\":\"grid\",\"screenshot\":\"\",\"snippetName\":\"ElTable\",\"schema\":{\"props\":{\"data\":[{\"date\":\"2016-05-03\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"},{\"date\":\"2016-05-02\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"},{\"date\":\"2016-05-04\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"},{\"date\":\"2016-05-01\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"}],\"columns\":[{\"type\":\"index\"},{\"label\":\"Date\",\"prop\":\"date\"},{\"label\":\"Name\",\"prop\":\"name\"},{\"label\":\"Address\",\"prop\":\"address\"}]}}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"数据\"}},\"description\":{\"zh_CN\":\"显示的数据\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"columns\",\"label\":{\"text\":{\"zh_CN\":\"表格列配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"properties\":[{\"label\":{\"zh_CN\":\"默认分组\"},\"content\":[{\"property\":\"type\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"type\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列的类型。 如果设置了selection则显示多选框; 如果设置了 index 则显示该行的索引(从 1 开始计算); 如果设置了 expand 则显示为一个可展开的按钮\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"selection\",\"value\":\"selection\"},{\"label\":\"index\",\"value\":\"index\"},{\"label\":\"expand\",\"value\":\"expand\"}]}}},{\"property\":\"index\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"index\"}},\"description\":{\"text\":{\"zh_CN\":\"如果设置了 type=index,可以通过传递 index 属性来自定义索引\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"label\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"label\"}},\"description\":{\"text\":{\"zh_CN\":\"显示的标题\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"column-key\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"column-key\"}},\"description\":{\"text\":{\"zh_CN\":\"column 的 key, column 的 key, 如果需要使用 filter-change 事件,则需要此属性标识是哪个 column 的筛选条件\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"prop\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"prop\"}},\"description\":{\"text\":{\"zh_CN\":\"字段名称 对应列内容的字段名, 也可以使用 property属性\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"width\",\"type\":\"number\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"width\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列的宽度\"}},\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}}},{\"property\":\"min-width\",\"type\":\"number\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"min-width\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列的最小宽度, 对应列的最小宽度, 与 width 的区别是 width 是固定的,min-width 会把剩余宽度按比例分配给设置了 min-width 的列\"}},\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}}},{\"property\":\"fixed\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"fixed\"}},\"description\":{\"text\":{\"zh_CN\":\"列是否固定在左侧或者右侧。 true 表示固定在左侧\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"sortable\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"sortable\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列是否可以排序\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"sort-method\",\"type\":\"function\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"sort-method\"}},\"description\":{\"text\":{\"zh_CN\":\"指定数据按照哪个属性进行排序,仅当sortable设置为true的时候有效。 应该如同 Array.sort 那样返回一个 Number\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"sort-by\",\"type\":\"array\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"sort-by\"}},\"description\":{\"text\":{\"zh_CN\":\"指定数据按照哪个属性进行排序,仅当 sortable 设置为 true 且没有设置 sort-method 的时候有效。 如果 sort-by 为数组,则先按照第 1 个属性排序,如果第 1 个相等,再按照第 2 个排序,以此类推\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"sort-orders\",\"type\":\"array\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"sort-orders\"}},\"description\":{\"text\":{\"zh_CN\":\"数据在排序时所使用排序策略的轮转顺序,仅当 sortable 为 true 时有效。 需传入一个数组,随着用户点击表头,该列依次按照数组中元素的顺序进行排序\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"resizable\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"resizable\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列是否可以通过拖动改变宽度(需要在 el-table 上设置 border 属性为真)\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"formatter\",\"type\":\"function\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"formatter\"}},\"description\":{\"text\":{\"zh_CN\":\"用来格式化内容\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"dataType\":\"JSFunction\"}}},{\"property\":\"show-overflow-tooltip\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"show-overflow-tooltip\"}},\"description\":{\"text\":{\"zh_CN\":\"当内容过长被隐藏时显示 tooltip\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"align\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"align\"}},\"description\":{\"text\":{\"zh_CN\":\"对齐方式\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"center\",\"value\":\"center\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"header-align\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"header-align\"}},\"description\":{\"text\":{\"zh_CN\":\"表头对齐方式, 若不设置该项,则使用表格的对齐方式\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"center\",\"value\":\"center\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"class-name\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"class-name\"}},\"description\":{\"text\":{\"zh_CN\":\"列的 className\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"label-class-name\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"label-class-name\"}},\"description\":{\"text\":{\"zh_CN\":\"当前列标题的自定义类名\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"selectable\",\"type\":\"function\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"selectable\"}},\"description\":{\"text\":{\"zh_CN\":\"仅对 type=selection 的列有效,类型为 Function,Function 的返回值用来决定这一行的 CheckBox 是否可以勾选\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"reserve-selection\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"reserve-selection\"}},\"description\":{\"text\":{\"zh_CN\":\"数据刷新后是否保留选项,仅对 type=selection 的列有效, 请注意, 需指定 row-key 来让这个功能生效。\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"filters\",\"type\":\"array\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filters\"}},\"description\":{\"text\":{\"zh_CN\":\"数据刷新后是否保留选项,仅对 type=selection 的列有效, 请注意, 需指定 row-key 来让这个功能生效。\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"filter-placement\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"filter-placement\"}},\"description\":{\"text\":{\"zh_CN\":\"过滤弹出框的定位\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"filter-multiple\",\"type\":\"string\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filter-multiple\"}},\"description\":{\"text\":{\"zh_CN\":\"数据过滤的选项是否多选\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"filter-method\",\"type\":\"function\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filter-method\"}},\"description\":{\"text\":{\"zh_CN\":\"数据过滤使用的方法, 如果是多选的筛选项,对每一条数据会执行多次,任意一次返回 true 就会显示\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"filtered-value\",\"type\":\"array\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filtered-value\"}},\"description\":{\"text\":{\"zh_CN\":\"选中的数据过滤项,如果需要自定义表头过滤的渲染方式,可能会需要此属性\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}}]}],\"widget\":{\"component\":\"TableColumnsConfigurator\",\"props\":{\"type\":\"object\",\"textField\":\"label\",\"language\":\"json\",\"buttonText\":\"编辑列配置\",\"title\":\"编辑列配置\",\"expand\":true}},\"description\":{\"zh_CN\":\"表格列的配置信息\"},\"labelPosition\":\"top\"},{\"property\":\"max-height\",\"label\":{\"text\":{\"zh_CN\":\"最大高度\"}},\"description\":{\"zh_CN\":\"Table 的最大高度。\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"number\",\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"height\",\"label\":{\"text\":{\"zh_CN\":\"表格高度\"}},\"description\":{\"zh_CN\":\"Table 的高度, 默认为自动高度。 这个高度会设置为 Table 的 style.height 的值,Table 的高度会受控于外部样式。\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"stripe\",\"label\":{\"text\":{\"zh_CN\":\"斑马纹\"}},\"description\":{\"zh_CN\":\"是否为斑马纹 table\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"纵向边框\"}},\"description\":{\"zh_CN\":\"是否带有纵向边框\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"表格尺寸\"}},\"description\":{\"zh_CN\":\"Table 的尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"fit\",\"label\":{\"text\":{\"zh_CN\":\"列宽自撑开\"}},\"description\":{\"zh_CN\":\"列的宽度是否自撑开\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"show-header\",\"label\":{\"text\":{\"zh_CN\":\"显示表头\"}},\"description\":{\"zh_CN\":\"是否显示表头\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"highlight-current-row\",\"label\":{\"text\":{\"zh_CN\":\"高亮当前行\"}},\"description\":{\"zh_CN\":\"是否要高亮当前行\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"current-row-key\",\"label\":{\"text\":{\"zh_CN\":\"当前行的 key\"}},\"description\":{\"zh_CN\":\"当前行的 key,只写属性\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"row-class-name\",\"label\":{\"text\":{\"zh_CN\":\"行的类名\"}},\"description\":{\"zh_CN\":\"行的 className\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"row-key\",\"label\":{\"text\":{\"zh_CN\":\"行数据的 Key\"}},\"description\":{\"zh_CN\":\"行数据的 Key,用来优化 Table 的渲染; 在使用reserve-selection功能与显示树形数据时,该属性是必填的。 类型为 String 时,支持多层访问:user.info.id,但不支持 user.info[0].id,此种情况请使用 Function\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"empty-text\",\"label\":{\"text\":{\"zh_CN\":\"空数据文本\"}},\"description\":{\"zh_CN\":\"空数据时显示的文本内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"table-layout\",\"label\":{\"text\":{\"zh_CN\":\"表格布局方式\"}},\"description\":{\"zh_CN\":\"设置表格单元、行和列的布局方式\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"defaultValue\":\"fixed\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"fixed\",\"value\":\"fixed\"},{\"label\":\"auto\",\"value\":\"auto\"}]}},\"device\":[]},{\"property\":\"scrollbar-always-on\",\"label\":{\"text\":{\"zh_CN\":\"显示滚动条\"}},\"description\":{\"zh_CN\":\"总是显示滚动条\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"flexible\",\"label\":{\"text\":{\"zh_CN\":\"主轴最小尺寸\"}},\"description\":{\"zh_CN\":\"确保主轴的最小尺寸,以便不超过内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onSelect\":{\"label\":{\"zh_CN\":\"勾选数据行的 Checkbox 时触发\"},\"description\":{\"zh_CN\":\"当用户手动勾选数据行的 Checkbox 时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"selection\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项\"}},{\"name\":\"row\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前行\"}}],\"returns\":{}}},\"onSelectAll\":{\"label\":{\"zh_CN\":\"勾选全选时触发\"},\"description\":{\"zh_CN\":\"当用户手动勾选全选 Checkbox 时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"selection\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项\"}}],\"returns\":{}}},\"onSelectionChange\":{\"label\":{\"zh_CN\":\"选择项发生变化时会触发\"},\"description\":{\"zh_CN\":\"当选择项发生变化时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"selection\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项\"}}],\"returns\":{}}},\"onCellMouseEnter\":{\"label\":{\"zh_CN\":\"单元格 hover 时会触发\"},\"description\":{\"zh_CN\":\"当单元格 hover 进入时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"row\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前行\"}},{\"name\":\"column\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前列\"}},{\"name\":\"cell\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前单元格\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生事件 event\"}}],\"returns\":{}}},\"onCellMouseLeave\":{\"label\":{\"zh_CN\":\"单元格 hover 退出时会触发\"},\"description\":{\"zh_CN\":\"当单元格 hover 退出时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"row\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前行\"}},{\"name\":\"column\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前列\"}},{\"name\":\"cell\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前单元格\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生事件 event\"}}],\"returns\":{}}}},\"slots\":{\"empty\":{\"label\":{\"zh_CN\":\"empty\"},\"description\":{\"zh_CN\":\"当数据为空时自定义的内容\"}},\"append\":{\"label\":{\"zh_CN\":\"append\"},\"description\":{\"zh_CN\":\"插入至表格最后一行之后的内容, 如果需要对表格的内容进行无限滚动操作,可能需要用到这个 slot。 若表格有合计行,该 slot 会位于合计行之上。\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":[\"ElTableColumn\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (6, '2.4.2', '{\"zh_CN\":\"表单\"}', 'ElTableColumn', 'table', '用于展示多条结构类似的数据, 可对数据进行排序、筛选、对比或其他自定义操作', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElTableColumn\"}', '表单组件', 'element-plus', NULL, NULL, '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[],\"description\":{\"zh_CN\":\"\"}}],\"events\":{},\"slots\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEevent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (7, '3.20.0', '{\"zh_CN\":\"走马灯子项\"}', 'TinyCarouselItem', 'carouselitem', '常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CarouselItem\"}', 'component', '容器组件', 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"名称\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"幻灯片的名字,可用作 setActiveItem 的参数\"},\"labelPosition\":\"left\"},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"幻灯片的标题\"},\"labelPosition\":\"left\"},{\"property\":\"indicator-position\",\"label\":{\"text\":{\"zh_CN\":\"指示器位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"outside\",\"value\":\"outside\"},{\"label\":\"none\",\"value\":\"none\"}]}},\"description\":{\"zh_CN\":\"指示器的位置\"},\"labelPosition\":\"left\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (8, '3.20.0', '{\"zh_CN\":\"走马灯\"}', 'TinyCarousel', 'carousel', '常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Carousel\"}', 'component', '容器组件', 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"arrow\",\"label\":{\"text\":{\"zh_CN\":\"箭头显示时机\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"总是显示\",\"value\":\"always\"},{\"label\":\"鼠标悬停时显示\",\"value\":\"hover\"},{\"label\":\"从不显示\",\"value\":\"never\"}]}},\"description\":{\"zh_CN\":\"切换箭头的显示时机\"}},{\"property\":\"autoplay\",\"label\":{\"text\":{\"zh_CN\":\"自动切换\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否自动切换\"},\"labelPosition\":\"left\"},{\"property\":\"tabs\",\"label\":{\"text\":{\"zh_CN\":\"选项卡\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"\",\"cols\":12,\"bindState\":false,\"widget\":{\"component\":\"ContainerConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"tabs 选项卡\"},\"labelPosition\":\"none\"},{\"property\":\"height\",\"label\":{\"text\":{\"zh_CN\":\"高度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"走马灯的高度\"}},{\"property\":\"indicator-position\",\"label\":{\"text\":{\"zh_CN\":\"位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"走马灯外部\",\"value\":\"outside\"},{\"label\":\"不显示\",\"value\":\"none\"}]}},\"description\":{\"zh_CN\":\"指示器的位置\"}},{\"property\":\"initial-index\",\"label\":{\"text\":{\"zh_CN\":\"初始索引\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"初始状态激活的幻灯片的索引,从 0 开始 \"}},{\"property\":\"interval\",\"label\":{\"text\":{\"zh_CN\":\"自动切换间隔\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自动切换的时间间隔,单位为毫秒\"}},{\"property\":\"loop\",\"label\":{\"text\":{\"zh_CN\":\"循环显示\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否循环显示\"},\"labelPosition\":\"left\"},{\"property\":\"show-title\",\"label\":{\"text\":{\"zh_CN\":\"显示标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示标题\"},\"labelPosition\":\"left\"},{\"property\":\"trigger\",\"label\":{\"text\":{\"zh_CN\":\"触发方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"点击\",\"value\":\"click\"},{\"label\":\"悬停\",\"value\":\"hover\"}]}},\"description\":{\"zh_CN\":\"指示器的触发方式,默认为 hover\"}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"水平\",\"value\":\"horizontal\"},{\"label\":\"垂直\",\"value\":\"vertical\"},{\"label\":\"卡片\",\"value\":\"card\"}]}},\"description\":{\"zh_CN\":\"走马灯的类型\"}}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"clickCapture\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyCarouselItem\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (9, '3.20.0', '{\"zh_CN\":\"提示框\"}', 'a', 'link', '链接', '', '', '', '', 'proCode', '{}', 'component', 'basic', 7, '[{\"name\":{\"zh_CN\":\"链接\"},\"icon\":\"link\",\"screenshot\":\"\",\"snippetName\":\"a\",\"schema\":{\"componentName\":\"a\",\"children\":\"链接\"}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"children\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlTextConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"类型\"},\"labelPosition\":\"none\"},{\"property\":\"href\",\"label\":{\"text\":{\"zh_CN\":\"链接\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"指定链接的 URL\"},\"labelPosition\":\"left\"},{\"property\":\"target\",\"label\":{\"text\":{\"zh_CN\":\"打开方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"当前页面\",\"value\":\"_self\"},{\"label\":\"打开新页面\",\"value\":\"_blank\"}]}},\"description\":{\"zh_CN\":\"指定链接的打开方式,例如在当前窗口中打开或在新窗口中打开。\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}]}', '{\"loop\":true,\"condition\":true,\"slots\":[],\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[]},\"contextMenu\":{\"actions\":[],\"disable\":[]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (10, '3.20.0', '{\"zh_CN\":\"标题\"}', '[h1, h2, h3, h4, h5, h6]', 'h16', '标题', '', '', '', '', 'proCode', '{}', 'component', 'html', 20, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"children\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlTextConfigurator\",\"props\":{\"showRadioButton\":true}},\"description\":{\"zh_CN\":\"\"},\"labelPosition\":\"none\"},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"\"},\"labelPosition\":\"none\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (11, '3.20.0', '{\"zh_CN\":\"段落\"}', 'p', 'paragraph', '段落', '', '', '', '', 'proCode', '{}', 'component', 'basic', 30, '[{\"name\":{\"zh_CN\":\"段落\"},\"icon\":\"paragraph\",\"screenshot\":\"\",\"snippetName\":\"p\",\"schema\":{\"componentName\":\"p\",\"children\":\"TinyEngine 前端可视化设计器致力于通过友好的用户交互提升业务应用的开发效率。\"}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"children\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlTextConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"类型\"},\"labelPosition\":\"none\"},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[]},\"contextMenu\":{\"actions\":[],\"disable\":[]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (12, '3.20.0', '{\"zh_CN\":\"输入框\"}', 'input', 'input', '输入框', '', '', '', '', 'proCode', '{}', 'component', 'html', 40, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"checkbox\",\"value\":\"checkbox\"},{\"label\":\"color\",\"value\":\"color\"},{\"label\":\"date\",\"value\":\"date\"},{\"label\":\"button\",\"value\":\"button\"},{\"label\":\"email\",\"value\":\"email\"},{\"label\":\"file\",\"value\":\"file\"},{\"label\":\"hidden\",\"value\":\"hidden\"},{\"label\":\"image\",\"value\":\"image\"},{\"label\":\"month\",\"value\":\"month\"},{\"label\":\"number\",\"value\":\"number\"},{\"label\":\"password\",\"value\":\"password\"},{\"label\":\"radio\",\"value\":\"radio\"},{\"label\":\"range\",\"value\":\"range\"},{\"label\":\"reset\",\"value\":\"reset\"},{\"label\":\"search\",\"value\":\"search\"},{\"label\":\"submit\",\"value\":\"submit\"},{\"label\":\"text\",\"value\":\"text\"},{\"label\":\"time\",\"value\":\"time\"},{\"label\":\"week\",\"value\":\"week\"},{\"label\":\"url\",\"value\":\"url\"}]}},\"description\":{\"zh_CN\":\"类型\"}},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位符\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"占位符\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onChange\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (13, '3.20.0', '{\"zh_CN\":\"视频\"}', 'video', 'video', '视频', '', '', '', '', 'proCode', '{}', 'component', 'basic', 50, '[{\"name\":{\"zh_CN\":\"视频\"},\"icon\":\"video\",\"screenshot\":\"\",\"snippetName\":\"video\",\"schema\":{\"componentName\":\"video\",\"props\":{\"src\":\"img/webNova.jpg\",\"width\":\"200\",\"height\":\"100\",\"style\":\"border:1px solid #ccc\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"src\",\"label\":{\"text\":{\"zh_CN\":\"资源\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"视频的 URL\"}},{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"播放器宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"视频播放器的宽度\"}},{\"property\":\"height\",\"label\":{\"text\":{\"zh_CN\":\"播放器高度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"视频播放器的高度\"}},{\"property\":\"controls\",\"label\":{\"text\":{\"zh_CN\":\"显示控件\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示控件\"},\"labelPosition\":\"left\"},{\"property\":\"autoplay\",\"label\":{\"text\":{\"zh_CN\":\"马上播放\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否马上播放\"},\"labelPosition\":\"left\"},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[]},\"contextMenu\":{\"actions\":[],\"disable\":[]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (14, '3.20.0', '{\"zh_CN\":\"Img\"}', 'Img', 'Image', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 60, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"src\",\"type\":\"string\",\"defaultValue\":\"\",\"bindState\":true,\"label\":{\"text\":{\"zh_CN\":\"资源\"}},\"cols\":12,\"rules\":[],\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"src路径\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{},\"shortcuts\":{\"properties\":[\"src\"]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (15, '3.20.0', '{\"zh_CN\":\"Button\"}', 'button', 'button', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 70, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', '{\"isContainer\":true}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (16, '3.20.0', '{\"zh_CN\":\"表格\"}', 'table', 'table', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 80, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格的宽度\"}},{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"边框宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格边框的宽度\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (17, '3.20.0', '{\"zh_CN\":\"表格单元格\"}', 'td', 'td', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 90, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"colspan\",\"label\":{\"text\":{\"zh_CN\":\"合并列\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单元格可横跨的列数\"}},{\"property\":\"rowspan\",\"label\":{\"text\":{\"zh_CN\":\"合并行\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单元格可横跨的行数\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (18, '3.20.0', '{\"zh_CN\":\"表单\"}', 'form', 'form', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 100, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"名称\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单的名称\"}},{\"property\":\"action\",\"label\":{\"text\":{\"zh_CN\":\"提交地址\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"提交表单时向何处发送表单数据\"}},{\"property\":\"method\",\"label\":{\"text\":{\"zh_CN\":\"HTTP方法\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"get\",\"value\":\"get\"},{\"label\":\"post\",\"value\":\"post\"}]}},\"description\":{\"zh_CN\":\"用于发送 form-data 的 HTTP 方法\"}}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', '{\"isContainer\":true}', 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (19, '3.20.0', '{\"zh_CN\":\"表单标签\"}', 'label', 'label', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 110, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"for\",\"label\":{\"text\":{\"zh_CN\":\"label绑定表单元素\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"label 绑定到哪个表单元素\"}},{\"property\":\"form\",\"label\":{\"text\":{\"zh_CN\":\"label字段所属表单\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"label 字段所属的一个或多个表单\"}}]}],\"events\":{},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (20, '3.20.0', '{\"zh_CN\":\"按钮组\"}', 'TinyButtonGroup', 'buttonGroup', '以按钮组的方式出现,常用于多项类似操作', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"ButtonGroup\"}', 'component', 'basic', 2, '[{\"name\":{\"zh_CN\":\"互斥按钮组\"},\"icon\":\"buttons\",\"screenshot\":\"\",\"snippetName\":\"TinyButtonGroup\",\"schema\":{\"componentName\":\"TinyButtonGroup\",\"props\":{\"data\":[{\"text\":\"Button1\",\"value\":\"1\"},{\"text\":\"Button2\",\"value\":\"2\"},{\"text\":\"Button3\",\"value\":\"3\"}],\"modelValue\":\"1\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"配置按钮组数据\"}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"大小\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"mini\",\"value\":\"mini\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"medium\",\"value\":\"medium\"}]}},\"description\":{\"zh_CN\":\"组件大小\"},\"labelPosition\":\"left\"},{\"property\":\"plain\",\"label\":{\"text\":{\"zh_CN\":\"朴素按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否是朴素按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (21, '3.20.0', '{\"zh_CN\":\"row\"}', 'TinyRow', 'row', '定义 Layout 的行配置信息', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Row\"}', 'component', NULL, 5, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"layout\",\"label\":{\"text\":{\"zh_CN\":\"布局\"}},\"cols\":12,\"widget\":{\"component\":\"LayoutGridConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"选择布局方式\"},\"labelPosition\":\"none\"},{\"property\":\"align\",\"label\":{\"text\":{\"zh_CN\":\"子项对齐方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"top\",\"value\":\"top\"},{\"label\":\"middle\",\"value\":\"middle\"},{\"label\":\"bottom\",\"value\":\"bottom\"}]}},\"description\":{\"zh_CN\":\"子项的副轴对齐方向,可取值:top, middle, bottom\"}},{\"property\":\"flex\",\"label\":{\"text\":{\"zh_CN\":\"flex容器\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否为flex容器\"},\"labelPosition\":\"left\"},{\"property\":\"gutter\",\"label\":{\"text\":{\"zh_CN\":\"子项间隔\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"子项的间隔的像素\"}}]}]}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (22, '3.20.0', '{\"zh_CN\":\"row\"}', 'TinyLayout', 'row', '定义 Layout 的行配置信息', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Layout\",\"version\":\"3.20.0\",\"destructuring\":true,\"script\":\"https://unpkg.com/@opentiny/vue-runtime@~3.20/dist3/tiny-vue-pc.mjs\",\"css\":\"https://unpkg.com/@opentiny/vue-theme@~3.20/index.css\"}', 'component', 'layout', 5, '[{\"name\":{\"zh_CN\":\"栅格布局\"},\"icon\":\"row\",\"screenshot\":\"\",\"snippetName\":\"TinyLayout\",\"schema\":{\"componentName\":\"TinyLayout\",\"props\":{},\"children\":[{\"componentName\":\"TinyRow\",\"props\":{\"style\":\"padding: 10px;\"},\"children\":[{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}}]},{\"componentName\":\"TinyRow\",\"props\":{\"style\":\"padding: 10px;\"},\"children\":[{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"cols\",\"label\":{\"text\":{\"zh_CN\":\"总栅格数\"}},\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"12\",\"value\":12},{\"label\":\"24\",\"value\":24}]}},\"description\":{\"zh_CN\":\"选择总栅格数\"},\"labelPosition\":\"none\"},{\"property\":\"tag\",\"label\":{\"text\":{\"zh_CN\":\"layout渲染的标签\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"定义Layout元素渲染后的标签,默认为 div\"}}]}]}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyRow\",\"TinyCol\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (23, '3.20.0', '{\"zh_CN\":\"表单\"}', 'TinyForm', 'form', '由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Form\"}', 'component', NULL, 5, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"label-width\",\"label\":{\"text\":{\"zh_CN\":\"标签宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单中标签占位宽度,默认为 80px\"},\"labelPosition\":\"left\"},{\"property\":\"inline\",\"label\":{\"text\":{\"zh_CN\":\"行内布局\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"行内布局模式,默认为 false\"},\"labelPosition\":\"left\"},{\"property\":\"label-align\",\"label\":{\"text\":{\"zh_CN\":\"必填标识占位\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"必填标识 * 是否占位\"},\"labelPosition\":\"left\"},{\"property\":\"label-suffix\",\"label\":{\"text\":{\"zh_CN\":\"标签后缀\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单中标签后缀\"},\"labelPosition\":\"left\"},{\"property\":\"label-position\",\"label\":{\"text\":{\"zh_CN\":\"标签位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"left \",\"value\":\"left \"},{\"label\":\"top\",\"value\":\"top\"}]}},\"description\":{\"zh_CN\":\"表单中标签的布局位置\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"校验属性\"},\"content\":[{\"property\":\"model\",\"label\":{\"text\":{\"zh_CN\":\"数据对象\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单数据对象\"},\"labelPosition\":\"top\"},{\"property\":\"rules\",\"label\":{\"text\":{\"zh_CN\":\"校验规则\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单验证规则\"},\"labelPosition\":\"top\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onValidate\":{\"label\":{\"zh_CN\":\"表单项被校验后触发\"},\"description\":{\"zh_CN\":\"表单项被校验后触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"function\",\"type\":\"Function\",\"defaultValue\":\"(valid) => {}\",\"description\":{\"zh_CN\":\"校验回调函数\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (24, '3.20.0', '{\"zh_CN\":\"表单项\"}', 'TinyFormItem', 'formitem', '由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"FormItem\"}', 'component', NULL, 12, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"label\",\"label\":{\"text\":{\"zh_CN\":\"标签文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"标签\",\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标签文本\"},\"labelPosition\":\"left\"},{\"property\":\"prop\",\"label\":{\"text\":{\"zh_CN\":\"校验字段\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单域 model 字段,在使用 validate、resetFields 方法的情况下,该属性是必填的\"},\"labelPosition\":\"left\"},{\"property\":\"required\",\"label\":{\"text\":{\"zh_CN\":\"必填\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否必填\"},\"labelPosition\":\"left\"}]}],\"events\":{},\"slots\":{\"label\":{\"label\":{\"zh_CN\":\"字段名\"},\"description\":{\"zh_CN\":\"自定义显示字段名称\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":[\"TinyForm\"],\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label\",\"rules\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (25, '3.20.0', '{\"zh_CN\":\"col\"}', 'TinyCol', 'col', '列配置信息', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Col\"}', 'component', NULL, 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"span\",\"label\":{\"text\":{\"zh_CN\":\"栅格列格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"整行\",\"value\":12},{\"label\":\"6格\",\"value\":6},{\"label\":\"4格\",\"value\":4},{\"label\":\"3格\",\"value\":3},{\"label\":\"1格\",\"value\":1}]}},\"description\":{\"zh_CN\":\"当一行分为12格时,一列可占位多少格\"}},{\"property\":\"move\",\"label\":{\"text\":{\"zh_CN\":\"栅格移动格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":-12,\"max\":12}},\"description\":{\"zh_CN\":\"栅格左右移动格数(正数向右,负数向左)\"}},{\"property\":\"no\",\"label\":{\"text\":{\"zh_CN\":\"排序编号\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"max\":12}},\"description\":{\"zh_CN\":\"排序编号(row中启用order生效)\"}},{\"property\":\"offset\",\"label\":{\"text\":{\"zh_CN\":\"间隔格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":0,\"max\":12}},\"description\":{\"zh_CN\":\"栅格左侧的间隔格数\"}},{\"property\":\"xs\",\"label\":{\"text\":{\"zh_CN\":\"超小屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"<768px 响应式栅格数\"}},{\"property\":\"sm\",\"label\":{\"text\":{\"zh_CN\":\"小屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥768px 响应式栅格数\"}},{\"property\":\"md\",\"label\":{\"text\":{\"zh_CN\":\"中屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥992px 响应式栅格数\"}},{\"property\":\"lg\",\"label\":{\"text\":{\"zh_CN\":\"大屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥1200px 响应式栅格数\"}},{\"property\":\"xl\",\"label\":{\"text\":{\"zh_CN\":\"超大屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥1920px 响应式栅格数\"}}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label\",\"rules\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (26, '3.20.0', '{\"zh_CN\":\"按钮\"}', 'TinyButton', 'button', '常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮、下拉按钮等类型', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Button\"}', 'component', 'basic', 2, '[{\"name\":{\"zh_CN\":\"按钮\"},\"icon\":\"button\",\"screenshot\":\"\",\"snippetName\":\"TinyButton\",\"schema\":{\"componentName\":\"TinyButton\",\"props\":{\"text\":\"按钮文案\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"text\",\"type\":\"string\",\"defaultValue\":\"按钮文案\",\"label\":{\"text\":{\"zh_CN\":\"按钮文字\"}},\"cols\":12,\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"按钮文字\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"type\":\"select\",\"label\":{\"text\":{\"zh_CN\":\"大小\"}},\"cols\":12,\"rules\":[],\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"按钮大小\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否被禁用\"},\"labelPosition\":\"left\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"primary\",\"value\":\"primary\"},{\"label\":\"success\",\"value\":\"success\"},{\"label\":\"info\",\"value\":\"info\"},{\"label\":\"warning\",\"value\":\"warning\"},{\"label\":\"danger\",\"value\":\"danger\"},{\"label\":\"text\",\"value\":\"text\"}]}},\"description\":{\"zh_CN\":\"设置不同的主题样式\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"round\",\"label\":{\"text\":{\"zh_CN\":\"圆角\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否圆角按钮\"},\"labelPosition\":\"left\"},{\"property\":\"plain\",\"label\":{\"text\":{\"zh_CN\":\"朴素按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否为朴素按钮\"},\"labelPosition\":\"left\"},{\"property\":\"reset-time\",\"label\":{\"text\":{\"zh_CN\":\"禁用时间\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置禁用时间,防止重复提交,单位毫秒\"},\"labelPosition\":\"left\"},{\"property\":\"circle\",\"label\":{\"text\":{\"zh_CN\":\"圆形按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否圆形按钮\"},\"labelPosition\":\"left\"},{\"property\":\"autofocus\",\"label\":{\"text\":{\"zh_CN\":\"自动聚焦\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否默认聚焦\"},\"labelPosition\":\"left\"},{\"property\":\"loading\",\"label\":{\"text\":{\"zh_CN\":\"加载中样式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否展示位加载中样式\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击事件\"},\"description\":{\"zh_CN\":\"按钮被点击时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"text\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (27, '3.20.0', '{\"zh_CN\":\"输入框\"}', 'TinyInput', 'input', '通过鼠标或键盘输入字符', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Input\"}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"输入框\"},\"icon\":\"input\",\"screenshot\":\"\",\"snippetName\":\"TinyInput\",\"schema\":{\"componentName\":\"TinyInput\",\"props\":{\"placeholder\":\"请输入\",\"modelValue\":\"\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"textarea\",\"value\":\"textarea\"},{\"label\":\"text\",\"value\":\"text\"},{\"label\":\"password\",\"value\":\"password\"}]}},\"description\":{\"zh_CN\":\"设置input框的type属性\"},\"labelPosition\":\"left\"},{\"property\":\"rows\",\"label\":{\"text\":{\"zh_CN\":\"行数\"}},\"widget\":{\"component\":\"NumberConfigurator\"},\"description\":{\"zh_CN\":\"输入框行数,只对 type=\'textarea\' 有效\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"输入框尺寸。该属性的可选值为 medium / small / mini\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"maxlength\",\"label\":{\"text\":{\"zh_CN\":\"最大输入长度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置 input 框的maxLength\"}},{\"property\":\"autofocus\",\"label\":{\"text\":{\"zh_CN\":\"自动聚焦\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自动获取焦点\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框改变后的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{\"prefix\":{\"label\":{\"zh_CN\":\"前置内容\"}},\"suffix\":{\"label\":{\"zh_CN\":\"后置内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (28, '3.20.0', '{\"zh_CN\":\"单选\"}', 'TinyRadio', 'radio', '用于配置不同场景的选项,在一组备选项中进行单选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Radio\"}', 'component', 'form', 3, '[{\"name\":{\"zh_CN\":\"单选\"},\"icon\":\"radio\",\"screenshot\":\"\",\"snippetName\":\"TinyRadio\",\"schema\":{\"componentName\":\"TinyRadio\",\"props\":{\"label\":\"1\",\"text\":\"单选文本\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文本内容\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单选框文本内容\"}},{\"property\":\"label\",\"label\":{\"text\":{\"zh_CN\":\"选中值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"props\":{}},\"description\":{\"zh_CN\":\"radio 选中时的值\"}},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"}]},{\"label\":{\"zh_CN\":\"其他\"},\"description\":{\"zh_CN\":\"\"},\"content\":[{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"显示边框\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示边框\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单选框的尺寸,仅在 border 为true时有效\"}},{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"原生name属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生 name 属性\"}}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值变化事件\"},\"description\":{\"zh_CN\":\"绑定值变化时触发的事件\"}},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"visible\",\"width\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (29, '3.20.0', '{\"zh_CN\":\"下拉框\"}', 'TinySelect', 'select', 'Select 选择器是一种通过点击弹出下拉列表展示数据并进行选择的 UI 组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Select\"}', 'component', 'form', 8, '[{\"name\":{\"zh_CN\":\"下拉框\"},\"icon\":\"select\",\"screenshot\":\"\",\"snippetName\":\"TinySelect\",\"schema\":{\"componentName\":\"TinySelect\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请选择\",\"options\":[{\"value\":\"1\",\"label\":\"黄金糕\"},{\"value\":\"2\",\"label\":\"双皮奶\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"searchable\",\"label\":{\"text\":{\"zh_CN\":\"下拉可搜索\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"下拉面板是否可搜索\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"options\",\"label\":{\"text\":{\"zh_CN\":\"选项数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"配置 Select 下拉数据项\"},\"labelPosition\":\"top\"},{\"property\":\"multiple\",\"label\":{\"text\":{\"zh_CN\":\"多选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否允许输入框输入或选择多个项\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"multiple-limit\",\"label\":{\"text\":{\"zh_CN\":\"最大可选值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"多选时用户最多可以选择的项目数,为 0 则不限制\"},\"labelPosition\":\"left\"},{\"property\":\"popper-class\",\"label\":{\"text\":{\"zh_CN\":\"下拉框类名\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置下拉框自定义的类名\"},\"labelPosition\":\"left\"},{\"property\":\"collapse-tags\",\"label\":{\"text\":{\"zh_CN\":\"多选展示\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"多选时是否将选中值按文字的形式展示\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在下拉框值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"下拉框选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onRemoveTag\":{\"label\":{\"zh_CN\":\"多选模式下移除tag时触发\"},\"description\":{\"zh_CN\":\"多选模式下移除tag时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"被移除Tag对应数据项的值字段\"}}],\"returns\":{}},\"defaultValue\":\"\"}},\"onBeforeMount\":\"console.log(\'table on load\'); this.options = source.data\"}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"multiple\",\"options\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (30, '3.20.0', '{\"zh_CN\":\"开关\"}', 'TinySwitch', 'switch', 'Switch 在两种状态间切换选择', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Switch\"}', 'component', 'form', 9, '[{\"name\":{\"zh_CN\":\"开关\"},\"icon\":\"switch\",\"screenshot\":\"\",\"snippetName\":\"TinySwitch\",\"schema\":{\"componentName\":\"TinySwitch\",\"props\":{\"modelValue\":\"\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否被禁用\"},\"labelPosition\":\"left\"},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"绑定默认值\"},\"labelPosition\":\"left\"},{\"property\":\"true-value\",\"label\":{\"text\":{\"zh_CN\":\"设置打开值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置打开时的值(Boolean / String / Number)\"},\"labelPosition\":\"left\"},{\"property\":\"false-value\",\"label\":{\"text\":{\"zh_CN\":\"设置关闭值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置关闭时的值(Boolean / String / Number)\"},\"labelPosition\":\"left\"},{\"property\":\"mini\",\"label\":{\"text\":{\"zh_CN\":\"迷你尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示为 mini 模式\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"点击事件\"},\"description\":{\"zh_CN\":\"按钮被点击时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"开关的状态值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的开关状态值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"mini\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (31, '3.20.0', '{\"zh_CN\":\"搜索框\"}', 'TinySearch', 'search', '指定条件对象进行搜索数据', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Search\"}', 'component', 'basic', 2, '[{\"name\":{\"zh_CN\":\"搜索框\"},\"icon\":\"search\",\"screenshot\":\"\",\"snippetName\":\"TinySearch\",\"schema\":{\"componentName\":\"TinySearch\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"输入关键词\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"默认值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框内的默认搜索值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否被禁用\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框内的提示占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清空按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置显示清空图标按钮\"},\"labelPosition\":\"left\"},{\"property\":\"isEnterSearch\",\"label\":{\"text\":{\"zh_CN\":\"Enter键触发\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否在按下键盘Enter键的时候触发search事件\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"mini\",\"label\":{\"text\":{\"zh_CN\":\"迷你尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"迷你模式,配置为true时,搜索默认显示为一个带图标的圆形按钮,点击后展开\"},\"labelPosition\":\"left\"},{\"property\":\"transparent\",\"label\":{\"text\":{\"zh_CN\":\"透明模式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"配置为true时,边框变为透明且收缩后半透明显示,一般用在带有背景的场景,默认 false\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"输入完成时触发\"},\"description\":{\"zh_CN\":\"在 input 框中输入完成时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"type\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"搜索类型,默认值为 {} \"}},{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前input框中值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onSearch\":{\"label\":{\"zh_CN\":\"点击搜索按钮时触发\"},\"description\":{\"zh_CN\":\"展开状态点击搜索按钮时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"type\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"搜索类型,默认值为 {} \"}},{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前input框中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"clearable\",\"mini\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (32, '3.20.0', '{\"zh_CN\":\"复选框\"}', 'TinyCheckbox', 'checkbox', '用于配置不同场景的选项,提供用户可在一组选项中进行多选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Checkbox\"}', 'component', 'form', 4, '[{\"name\":{\"zh_CN\":\"复选框\"},\"icon\":\"checkbox\",\"screenshot\":\"\",\"snippetName\":\"TinyCheckbox\",\"schema\":{\"componentName\":\"TinyCheckbox\",\"props\":{\"text\":\"复选框文案\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"checked\",\"label\":{\"text\":{\"zh_CN\":\"勾选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当前是否勾选\"},\"labelPosition\":\"left\"},{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"复选框的文本\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"边框\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示边框\"},\"labelPosition\":\"left\"},{\"property\":\"false-label\",\"label\":{\"text\":{\"zh_CN\":\"未选中的值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"没有选中时的值\"},\"labelPosition\":\"left\"},{\"property\":\"true-label\",\"label\":{\"text\":{\"zh_CN\":\"选择时的值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"选中时的值\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"勾选值改变后将触发\"},\"description\":{\"zh_CN\":\"勾选值改变后将触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"border\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (33, '3.20.0', '{\"zh_CN\":\"复选按钮\"}', 'TinyCheckboxButton', 'checkboxbutton', '用于配置不同场景的选项,提供用户可在一组选项中进行多选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CheckboxButton\"}', 'component', NULL, 1, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"checked\",\"label\":{\"text\":{\"zh_CN\":\"勾选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当前是否勾选\"},\"labelPosition\":\"left\"},{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"按钮文本\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"勾选值改变后将触发\"},\"description\":{\"zh_CN\":\"勾选值改变后将触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"array\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"text\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (34, '3.20.0', '{\"zh_CN\":\"复选按钮组\"}', 'TinyCheckboxGroup', 'checkboxgroup', '用于配置不同场景的选项,提供用户可在一组选项中进行多选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CheckboxGroup\"}', 'component', 'form', 2, '[{\"name\":{\"zh_CN\":\"复选框组\"},\"icon\":\"checkboxs\",\"screenshot\":\"\",\"snippetName\":\"TinyCheckboxGroup\",\"schema\":{\"componentName\":\"TinyCheckboxGroup\",\"props\":{\"modelValue\":[\"name1\",\"name2\"],\"type\":\"checkbox\",\"options\":[{\"text\":\"复选框1\",\"label\":\"name1\"},{\"text\":\"复选框2\",\"label\":\"name2\"},{\"text\":\"复选框3\",\"label\":\"name3\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"dataType\":\"Array\"}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"options\",\"label\":{\"text\":{\"zh_CN\":\"选项列表\"}},\"defaultValue\":[{\"label\":\"标签2\"},{\"label\":\"标签2\"}],\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"checkbox组件列表\"},\"labelPosition\":\"top\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"button\",\"value\":\"button\"},{\"label\":\"checkbox\",\"value\":\"checkbox\"}]}},\"description\":{\"zh_CN\":\"checkbox组件类型(button/checkbox),该属性的默认值为 checkbox,配合 options 属性一起使用\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"勾选值改变后将触发\"},\"description\":{\"zh_CN\":\"勾选值改变后将触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"array\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"type\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (35, '3.20.0', '{\"zh_CN\":\"对话框\"}', 'TinyDialogBox', 'dialogbox', '模态对话框,在浮层中显示,引导用户进行相关操作。', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"DialogBox\"}', 'component', 'data-display', 4, '[{\"name\":{\"zh_CN\":\"对话框\"},\"icon\":\"dialogbox\",\"screenshot\":\"\",\"snippetName\":\"TinyDialogBox\",\"schema\":{\"componentName\":\"TinyDialogBox\",\"props\":{\"visible\":true,\"show-close\":true,\"title\":\"dialogBox title\"},\"children\":[{\"componentName\":\"div\"}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"弹出框标题\"},\"labelPosition\":\"left\"},{\"property\":\"visible\",\"label\":{\"text\":{\"zh_CN\":\"显示与隐藏\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"控制弹出框显示与关闭\"},\"labelPosition\":\"left\"},{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"弹出框的宽度\"},\"labelPosition\":\"left\"},{\"property\":\"draggable\",\"label\":{\"text\":{\"zh_CN\":\"可拖拽\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否开启弹窗的拖拽功能,默认值为 false 。\"},\"labelPosition\":\"left\"},{\"property\":\"center\",\"label\":{\"text\":{\"zh_CN\":\"居中\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"弹出框的头部与底部内容会自动居中\"},\"labelPosition\":\"left\"},{\"property\":\"dialog-class\",\"label\":{\"text\":{\"zh_CN\":\"自定义类名\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自定义配置弹窗类名\"},\"labelPosition\":\"left\"},{\"property\":\"append-to-body\",\"label\":{\"text\":{\"zh_CN\":\"插入到Body\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"DialogBox 本身是否插入到 body 上,嵌套的 Dialog 必须指定该属性并赋值为 true\"},\"labelPosition\":\"left\"},{\"property\":\"show-close\",\"label\":{\"text\":{\"zh_CN\":\"关闭按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示关闭按钮,默认值为 true 。\"},\"labelPosition\":\"left\"}]}],\"selector\":\".TinyDialogBox\",\"events\":{\"onClose\":{\"label\":{\"zh_CN\":\"关闭弹窗时触发\"},\"description\":{\"zh_CN\":\"Dialog 关闭的回调\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:visible\":{\"label\":{\"zh_CN\":\"双向绑定的状态改变时触发\"},\"description\":{\"zh_CN\":\"显示或隐藏的状态值,发生改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"boolean\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的显示或隐藏的状态值\"}}],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{\"title\":{\"label\":{\"zh_CN\":\"标题区\"},\"description\":{\"zh_CN\":\"Dialog 标题区的内容\"}},\"footer\":{\"label\":{\"zh_CN\":\"按钮操作区\"},\"description\":{\"zh_CN\":\"Dialog 按钮操作区的内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":true,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\".tiny-dialog-box\",\"shortcuts\":{\"properties\":[\"visible\",\"width\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (36, '3.20.0', '{\"zh_CN\":\"标签页\"}', 'TinyTabs', 'tabs', '分隔内容上有关联但属于不同类别的数据集合', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Tabs\"}', 'component', 'navigation', 10, '[{\"name\":{\"zh_CN\":\"标签页\"},\"icon\":\"tabs\",\"screenshot\":\"\",\"snippetName\":\"TinyTabs\",\"schema\":{\"componentName\":\"TinyTabs\",\"props\":{\"modelValue\":\"first\"},\"children\":[{\"componentName\":\"TinyTabItem\",\"props\":{\"title\":\"标签页1\",\"name\":\"first\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"style\":\"margin:10px 0 0 30px\"}}]},{\"componentName\":\"TinyTabItem\",\"props\":{\"title\":\"标签页2\",\"name\":\"second\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"style\":\"margin:10px 0 0 30px\"}}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"showEditIcon\",\"label\":{\"text\":{\"zh_CN\":\"显示编辑图标\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示标题后编辑 ICON\"},\"labelPosition\":\"left\"},{\"property\":\"tabs\",\"label\":{\"text\":{\"zh_CN\":\"选项卡\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"\",\"cols\":12,\"bindState\":false,\"widget\":{\"component\":\"ContainerConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"tabs 选项卡\"},\"labelPosition\":\"none\"},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"绑定值,选中选项卡的 name\"},\"labelPosition\":\"left\"},{\"property\":\"with-add\",\"label\":{\"text\":{\"zh_CN\":\"标签新增\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标签是否可增加\"},\"labelPosition\":\"left\"},{\"property\":\"with-close\",\"label\":{\"text\":{\"zh_CN\":\"可关闭\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标签是否可关闭\"},\"labelPosition\":\"left\"},{\"property\":\"tab-style\",\"label\":{\"text\":{\"zh_CN\":\"标签页样式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"card\",\"value\":\"card\"},{\"label\":\"border-card\",\"value\":\"border-card\"}]}},\"description\":{\"zh_CN\":\"标签页样式\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击页签时触发事件\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"component\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前点击的页签对象\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onEdit\":{\"label\":{\"zh_CN\":\"点击新增按钮或关闭按钮或者编辑按钮后触发\"},\"description\":{\"zh_CN\":\"点击新增按钮或关闭按钮或者编辑按钮后触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"tab\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前操作的页签对象\"}},{\"name\":\"type\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前操作的类型(remove || add || edit)\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClose\":{\"label\":{\"zh_CN\":\"关闭页签时触发\"},\"description\":{\"zh_CN\":\"关闭页签时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"name\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"页签名称\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"clickCapture\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyTabItem\"],\"parentWhitelist\":[],\"descendantBlacklist\":[],\"ancestorWhitelist\":[]},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"size\",\"tab-style\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (37, '3.20.0', '{\"zh_CN\":\"tab页签\"}', 'TinyTabItem', 'tabitem', 'tab 标签页', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"TabItem\"}', 'component', NULL, 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"唯一标识\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"唯一标识\"}},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标题\"}}]}],\"events\":{},\"slots\":{\"title\":{\"label\":{\"zh_CN\":\"标题\"},\"description\":{\"zh_CN\":\"自定义标题\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":[\"TinyTab\"],\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"name\",\"title\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (38, '3.20.0', '{\"zh_CN\":\"面包屑\"}', 'TinyBreadcrumb', 'breadcrumb', '告诉访问者他们目前在网站中的位置以及如何返回', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Breadcrumb\"}', 'component', 'navigation', 1, '[{\"name\":{\"zh_CN\":\"面包屑\"},\"icon\":\"breadcrumb\",\"screenshot\":\"\",\"snippetName\":\"TinyBreadcrumb\",\"schema\":{\"componentName\":\"TinyBreadcrumb\",\"props\":{\"options\":[{\"to\":\"{ path: \'/\' }\",\"label\":\"首页\"},{\"to\":\"{ path: \'/breadcrumb\' }\",\"label\":\"产品\"},{\"replace\":\"true\",\"label\":\"软件\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"separator\",\"label\":{\"text\":{\"zh_CN\":\"分隔符\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自定义分隔符\"},\"labelPosition\":\"left\"},{\"property\":\"options\",\"label\":{\"text\":{\"zh_CN\":\"配置数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"单独使用 Breadcrumb,通过 option 配置生成面包屑\"},\"labelPosition\":\"top\"},{\"property\":\"textField\",\"label\":{\"text\":{\"zh_CN\":\"键值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"指定面包屑的显示键值,结合 options 使用\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onSelect\":{\"label\":{\"zh_CN\":\"选择 breadcrumb 时触发\"},\"description\":{\"zh_CN\":\"选择 breadcrumb 时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"clickCapture\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyBreadcrumbItem\"],\"parentWhitelist\":[],\"descendantBlacklist\":[],\"ancestorWhitelist\":[]},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"separator\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (39, '3.20.0', '{\"zh_CN\":\"面包屑项\"}', 'TinyBreadcrumbItem', 'breadcrumb', '', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"BreadcrumbItem\"}', 'component', NULL, 1, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"to\",\"label\":{\"text\":{\"zh_CN\":\"路由跳转\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"路由跳转对象,同 vue-router 的 to\"}}]}],\"slots\":{\"default\":{\"label\":{\"zh_CN\":\"面包屑项标签\"},\"description\":{\"zh_CN\":\"面包屑项\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":[\"TinyBreadcrumb\"],\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"to\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (40, '3.20.0', '{\"zh_CN\":\"折叠面板\"}', 'TinyCollapse', 'collapse', '内容区可指定动态页面或自定义 html 等,支持展开收起操作', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Collapse\"}', 'component', 'data-display', 3, '[{\"name\":{\"zh_CN\":\"折叠面板\"},\"icon\":\"collapse\",\"screenshot\":\"\",\"snippetName\":\"TinyCollapse\",\"schema\":{\"componentName\":\"TinyCollapse\",\"props\":{\"modelValue\":\"collapse1\"},\"children\":[{\"componentName\":\"TinyCollapseItem\",\"props\":{\"name\":\"collapse1\",\"title\":\"折叠项1\"},\"children\":[{\"componentName\":\"div\"}]},{\"componentName\":\"TinyCollapseItem\",\"props\":{\"name\":\"collapse2\",\"title\":\"折叠项2\"},\"children\":[{\"componentName\":\"div\"}]},{\"componentName\":\"TinyCollapseItem\",\"props\":{\"name\":\"collapse3\",\"title\":\"折叠项3\"},\"children\":[{\"componentName\":\"div\"}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"当前激活面板\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定当前激活的面板\"}}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"激活面板改变时触发\"},\"description\":{\"zh_CN\":\"当前激活面板改变时触发(如果是手风琴模式,参数 activeNames 类型为string,否则为array)\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"data\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前激活面板的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前激活面板的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (41, '3.20.0', '{\"zh_CN\":\"折叠面板项\"}', 'TinyCollapseItem', 'collapseitem', '内容区可指定动态页面或自定义 html 等,支持展开收起操作', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CollapseItem\"}', 'component', NULL, 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"唯一标识符\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"唯一标识符: String | Number\"},\"labelPosition\":\"left\"},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"面板标题\"},\"labelPosition\":\"left\"}]}],\"events\":{},\"slots\":{\"title\":{\"label\":{\"zh_CN\":\"标题\"},\"description\":{\"zh_CN\":\"自定义标题\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (42, '3.20.0', '{\"zh_CN\":\"表格\"}', 'TinyGrid', 'grid', '提供了非常强大数据表格功能,可以展示数据列表,可以对数据列表进行选择、编辑等', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Grid\"}', 'component', 'table', 2, '[{\"name\":{\"zh_CN\":\"表格\"},\"icon\":\"grid\",\"screenshot\":\"\",\"snippetName\":\"tinyGrid\",\"schema\":{\"componentName\":\"TinyGrid\",\"props\":{\"editConfig\":{\"trigger\":\"click\",\"mode\":\"cell\",\"showStatus\":true},\"columns\":[{\"type\":\"index\",\"width\":60},{\"type\":\"selection\",\"width\":60},{\"field\":\"employees\",\"title\":\"员工数\"},{\"field\":\"created_date\",\"title\":\"创建日期\"},{\"field\":\"city\",\"title\":\"城市\"}],\"data\":[{\"id\":\"1\",\"name\":\"GFD科技有限公司\",\"city\":\"福州\",\"employees\":800,\"created_date\":\"2014-04-30 00:56:00\",\"boole\":false},{\"id\":\"2\",\"name\":\"WWW科技有限公司\",\"city\":\"深圳\",\"employees\":300,\"created_date\":\"2016-07-08 12:36:22\",\"boole\":true}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础属性\"},\"description\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"表格数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"onChange\":\"this.delProp(\'fetchData\')\",\"description\":{\"zh_CN\":\"设置表格的数据\"},\"labelPosition\":\"top\"},{\"property\":\"columns\",\"label\":{\"text\":{\"zh_CN\":\"表格列\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"properties\":[{\"label\":{\"zh_CN\":\"默认分组\"},\"content\":[{\"property\":\"title\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"列标题\"}},\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}}},{\"property\":\"field\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"列键值\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"sortable\",\"type\":\"boolean\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"是否排序\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"labelPosition\":\"left\"},{\"property\":\"width\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"列宽\"}},\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}}},{\"property\":\"formatText\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"内置渲染器\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"整数\",\"value\":\"integer\"},{\"label\":\"小数\",\"value\":\"number\"},{\"label\":\"金额\",\"value\":\"money\"},{\"label\":\"百分比\",\"value\":\"rate\"},{\"label\":\"布尔\",\"value\":\"boole\"},{\"label\":\"年月日\",\"value\":\"date\"},{\"label\":\"年月日时分\",\"value\":\"dateTime\"},{\"label\":\"时间\",\"value\":\"time\"},{\"label\":\"省略\",\"value\":\"ellipsis\"}]}}},{\"property\":\"renderer\",\"type\":\"object\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"渲染函数\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"dataType\":\"JSFunction\"}}},{\"property\":\"slots\",\"type\":\"object\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"插槽\"}},\"labelPosition\":\"none\",\"widget\":{\"component\":\"JsSlotConfigurator\",\"props\":{\"slots\":[\"header\",\"default\"]}}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"列类型\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"索引列\",\"value\":\"index\"},{\"label\":\"单选列\",\"value\":\"radio\"},{\"label\":\"多选列\",\"value\":\"selection\"},{\"label\":\"展开列\",\"value\":\"expand\"}],\"clearable\":true}},\"description\":{\"zh_CN\":\"设置内置列的类型,该属性的可选值为 index(序号)/ selection(复选框)/ radio(单选框)/ expand(展开行)\"},\"labelPosition\":\"left\"},{\"property\":\"editor\",\"label\":{\"text\":{\"zh_CN\":\"编辑配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"单元格编辑渲染配置项,也可以是函数 Function(h, params)\"}},{\"property\":\"filter\",\"label\":{\"text\":{\"zh_CN\":\"筛选配置\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"设置表格列的筛选配置信息。默认值为 false 不配置筛选信息\"}},{\"property\":\"showOverflow\",\"label\":{\"text\":{\"zh_CN\":\"内容超出部分省略号配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"只显示省略号\",\"value\":\"ellipsis\"},{\"label\":\"显示为原生 title\",\"value\":\"title\"},{\"label\":\"显示为 tooltip 提示\",\"value\":\"tooltip\"}],\"clearable\":true}},\"description\":{\"zh_CN\":\"设置内置列的内容超出部分显示省略号配置,该属性的可选值为 ellipsis(只显示省略号)/ title(显示为原生 title)/ tooltip(显示为 tooltip 提示)\"},\"labelPosition\":\"top\"}]}],\"widget\":{\"component\":\"ArrayItemConfigurator\",\"props\":{\"type\":\"object\",\"textField\":\"title\",\"language\":\"json\",\"buttonText\":\"编辑列配置\",\"title\":\"编辑列配置\",\"expand\":true}},\"description\":{\"zh_CN\":\"表格列的配置信息\"},\"labelPosition\":\"left\"},{\"property\":\"fetchData\",\"label\":{\"text\":{\"zh_CN\":\"服务端查询\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"onChange\":\"function () { this.delProp(\'data\') } \",\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"name\":\"fetchData\",\"dataType\":\"JSExpression\"}},\"description\":{\"zh_CN\":\"服务端数据查询方法\"},\"labelPosition\":\"top\"},{\"property\":\"pager\",\"label\":{\"text\":{\"zh_CN\":\"分页配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"defaultValue\":{\"attrs\":{\"currentPage\":1}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"name\":\"pager\",\"dataType\":\"JSExpression\"}},\"description\":{\"zh_CN\":\"分页配置,需结合fetchData使用\"},\"labelPosition\":\"top\"},{\"property\":\"resizable\",\"label\":{\"text\":{\"zh_CN\":\"调整列宽\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否允许调整列宽\"},\"labelPosition\":\"left\"},{\"property\":\"row-id\",\"label\":{\"text\":{\"zh_CN\":\"行数据主键\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"placeholder\":\"比如:id\"}},\"description\":{\"zh_CN\":\"自定义行数据唯一主键的字段名(行数据必须要有唯一主键,默认自动生成)\"},\"labelPosition\":\"left\"},{\"property\":\"select-config\",\"label\":{\"text\":{\"zh_CN\":\"行复选框配置\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"dataType\":\"JSExpression\"}},\"description\":{\"zh_CN\":\"表格行数据复选框配置项\"}},{\"property\":\"edit-rules\",\"label\":{\"text\":{\"zh_CN\":\"校验规则\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格校验规则配置项\"},\"labelPosition\":\"top\"},{\"property\":\"edit-config\",\"label\":{\"text\":{\"zh_CN\":\"编辑配置项\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格编辑配置项\"},\"labelPosition\":\"top\"},{\"property\":\"expand-config\",\"label\":{\"text\":{\"zh_CN\":\"展开行配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"展开行配置项\"},\"labelPosition\":\"top\"},{\"property\":\"sortable\",\"label\":{\"text\":{\"zh_CN\":\"可排序\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否允许列数据排序。默认为 true 可排序\"},\"labelPosition\":\"left\"}]},{\"label\":{\"zh_CN\":\"其他\"},\"description\":{\"zh_CN\":\"其他属性\"},\"content\":[{\"property\":\"auto-resize\",\"label\":{\"text\":{\"zh_CN\":\"响应式监听\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格属性设置 autoResize 属性开启响应式表格宽高的同时,将高度height设置为auto就可以自动跟随父容器高度。\"},\"labelPosition\":\"left\"},{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"边框\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否带有纵向边框\"},\"labelPosition\":\"left\"},{\"property\":\"seq-serial\",\"label\":{\"text\":{\"zh_CN\":\"行号连续\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置行序号是否连续,开启分页时有效,该属性的默认值为 false\"},\"labelPosition\":\"left\"},{\"property\":\"highlight-current-row\",\"label\":{\"text\":{\"zh_CN\":\"高亮当前行\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"高亮当前行\"},\"labelPosition\":\"left\"},{\"property\":\"highlight-hover-row\",\"label\":{\"text\":{\"zh_CN\":\"移入行高亮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"鼠标移到行是否要高亮显示\"},\"labelPosition\":\"left\"},{\"property\":\"row-class-name\",\"label\":{\"text\":{\"zh_CN\":\"设置行高亮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"给行附加 className,也可以是函数 Function({seq, row, rowIndex, $rowIndex})\"},\"labelPosition\":\"top\"},{\"property\":\"max-height\",\"label\":{\"text\":{\"zh_CN\":\"内容最大高度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置表格内容区域(不含表格头部,底部)的最大高度。\"}},{\"property\":\"row-span\",\"label\":{\"text\":{\"zh_CN\":\"行合并\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置行合并,该属性仅适用于普通表格,不可与 tree-config 同时使用\"},\"labelPosition\":\"top\"}]}],\"events\":{\"onFilterChange\":{\"label\":{\"zh_CN\":\"筛选条件改变时触发改事件\"},\"description\":{\"zh_CN\":\"配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"{$table,filters} 包含 table 实例对象和过滤条件的对象\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onSortChange\":{\"label\":{\"zh_CN\":\"点击列头,执行数据排序前触发的事件\"},\"description\":{\"zh_CN\":\"配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"{$table,filters} 包含 table 实例对象和过滤条件的对象\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onSelectAll\":{\"label\":{\"zh_CN\":\"当手动勾选全选时触发的事件\"},\"description\":{\"zh_CN\":\"只对 type=selection 有效,当手动勾选全选时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" 包含 table 实例对象\"}},{\"name\":\"checked\",\"type\":\"boolean\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"勾选状态\"}},{\"name\":\"selction\",\"type\":\"Array\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中的表格数据数组\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onSelectChange\":{\"label\":{\"zh_CN\":\"手动勾选并且值发生改变时触发的事件\"},\"description\":{\"zh_CN\":\"只对 type=selection 有效,当手动勾选并且值发生改变时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" table 实例对象\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" 原生 Event\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onToggleExpandChange\":{\"label\":{\"zh_CN\":\"当行展开或收起时会触发该事件\"},\"description\":{\"zh_CN\":\"当行展开或收起时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"{$table,row,rowIndex} 包含 table 实例对象和当前行数据的对象\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" 原生 Event\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onCurrentChange\":{\"label\":{\"zh_CN\":\"行点击时触发\"},\"description\":{\"zh_CN\":\"行点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[\"sortable\",\"columns\"]},\"contentMenu\":{\"actions\":[\"create symbol\"]},\"onBeforeMount\":\"console.log(\'table on load\'); this.pager = source.pager; this.fetchData = source.fetchData; this.data = source.data ;this.columns = source.columns\"}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"sortable\",\"columns\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (43, '3.20.0', '{\"zh_CN\":\"分页\"}', 'TinyPager', 'pager', '当数据量过多时,使用分页分解数据,常用于 Grid 和 Repeater 组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Pager\"}', 'component', 'table', 1, '[{\"name\":{\"zh_CN\":\"分页\"},\"icon\":\"pager\",\"screenshot\":\"\",\"snippetName\":\"TinyPager\",\"schema\":{\"componentName\":\"TinyPager\",\"props\":{\"layout\":\"total, sizes, prev, pager, next\",\"total\":100,\"pageSize\":10,\"currentPage\":1}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"currentPage\",\"label\":{\"text\":{\"zh_CN\":\"当前页数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当前页数,支持 .sync 修饰符\"},\"labelPosition\":\"left\"},{\"property\":\"pageSize\",\"label\":{\"text\":{\"zh_CN\":\"每页条数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"每页显示条目个数\"},\"labelPosition\":\"left\"},{\"property\":\"pageSizes\",\"label\":{\"text\":{\"zh_CN\":\"可选每页条数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置可选择的每页显示条数\"}},{\"property\":\"total\",\"label\":{\"text\":{\"zh_CN\":\"总条数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"数据总条数\"},\"labelPosition\":\"left\"},{\"property\":\"layout\",\"label\":{\"text\":{\"zh_CN\":\"布局\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"defaultValue\":\"total,sizes,prev, pager, next\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"type\":\"textarea\"}},\"description\":{\"zh_CN\":\"组件布局,子组件名用逗号分隔\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onCurrentChange \":{\"label\":{\"zh_CN\":\"切换页码时触发\"},\"description\":{\"zh_CN\":\"切换页码时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onPrevClick \":{\"label\":{\"zh_CN\":\"点击上一页按钮时触发\"},\"description\":{\"zh_CN\":\"点击上一页按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"page\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页的页码值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onNextClick\":{\"label\":{\"zh_CN\":\"点击下一页按钮时触发\"},\"description\":{\"zh_CN\":\"点击上一页按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"page\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页的页码值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"currentPage\",\"total\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (44, '3.20.0', '{\"zh_CN\":\"弹出编辑\"}', 'TinyPopeditor', 'popEditor', '该组件只能在弹出的面板中选择数据,不能手动输入数据;弹出面板中显示为 Tree 组件或者 Grid 组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Popeditor\"}', 'component', 'data-display', 6, '[{\"name\":{\"zh_CN\":\"弹出编辑\"},\"icon\":\"popeditor\",\"screenshot\":\"\",\"snippetName\":\"TinyPopeditor\",\"schema\":{\"componentName\":\"TinyPopeditor\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请选择\",\"gridOp\":{\"columns\":[{\"field\":\"id\",\"title\":\"ID\",\"width\":40},{\"field\":\"name\",\"title\":\"名称\",\"showOverflow\":\"tooltip\"},{\"field\":\"province\",\"title\":\"省份\",\"width\":80},{\"field\":\"city\",\"title\":\"城市\",\"width\":80}],\"data\":[{\"id\":\"1\",\"name\":\"GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司\",\"city\":\"福州\",\"province\":\"福建\"},{\"id\":\"2\",\"name\":\"WWW科技有限公司\",\"city\":\"深圳\",\"province\":\"广东\"},{\"id\":\"3\",\"name\":\"RFV有限责任公司\",\"city\":\"中山\",\"province\":\"广东\"},{\"id\":\"4\",\"name\":\"TGB科技有限公司\",\"city\":\"龙岩\",\"province\":\"福建\"},{\"id\":\"5\",\"name\":\"YHN科技有限公司\",\"city\":\"韶关\",\"province\":\"广东\"},{\"id\":\"6\",\"name\":\"WSX科技有限公司\",\"city\":\"黄冈\",\"province\":\"武汉\"}]}}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"show-clear-btn\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出面板的宽度(单位像素)\"},\"labelPosition\":\"left\"},{\"property\":\"conditions\",\"label\":{\"text\":{\"zh_CN\":\"过滤条件\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当弹出面板配置的是表格时,设置弹出面板中的过滤条件\"},\"labelPosition\":\"top\"},{\"property\":\"grid-op\",\"label\":{\"text\":{\"zh_CN\":\"面板表格配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出面板中表格组件的配置信息\"}},{\"property\":\"pager-op\",\"label\":{\"text\":{\"zh_CN\":\"分页配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出编辑框中分页配置\"},\"labelPosition\":\"top\"},{\"property\":\"multi\",\"label\":{\"text\":{\"zh_CN\":\"多选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出面板中的数据是否可多选\"},\"labelPosition\":\"left\"},{\"property\":\"show-pager\",\"label\":{\"text\":{\"zh_CN\":\"启用分页\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当 popseletor 为 grid 时才能生效,配置为 true 后还需配置 pagerOp 属性\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"选中值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项的值\"}},{\"name\":\"value\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中对象\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClose\":{\"label\":{\"zh_CN\":\"弹框关闭时触发的事件\"},\"description\":{\"zh_CN\":\"弹框关闭时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onPageChange\":{\"label\":{\"zh_CN\":\"分页切换事件\"},\"description\":{\"zh_CN\":\"表格模式下分页切换事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页码数\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"modelValue\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (45, '3.20.0', '{\"zh_CN\":\"树\"}', 'TinyTree', 'tree', '可进行展示有父子层级的数据,支持选择,异步加载等功能。但不推荐用它来展示菜单,展示菜单推荐使用树菜单', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Tree\"}', 'component', 'data-display', 12, '[{\"name\":{\"zh_CN\":\"树\"},\"icon\":\"tree\",\"screenshot\":\"\",\"snippetName\":\"TinyTree\",\"schema\":{\"componentName\":\"TinyTree\",\"props\":{\"data\":[{\"label\":\"一级 1\",\"children\":[{\"label\":\"二级 1-1\",\"children\":[{\"label\":\"三级 1-1-1\"}]}]},{\"label\":\"一级 2\",\"children\":[{\"label\":\"二级 2-1\",\"children\":[{\"label\":\"三级 2-1-1\"}]},{\"label\":\"二级 2-2\",\"children\":[{\"label\":\"三级 2-2-1\"}]}]}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"show-checkbox\",\"label\":{\"text\":{\"zh_CN\":\"多选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置接口是否可以多选\"},\"labelPosition\":\"left\"},{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"数据源\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":[{\"label\":\"一级 1\",\"children\":[{\"label\":\"二级 1-1\"}]}],\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"可配置静态数据源和动态数据源\"},\"labelPosition\":\"top\"},{\"property\":\"node-key\",\"label\":{\"text\":{\"zh_CN\":\"唯一标识\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点唯一标识属性名称\"},\"labelPosition\":\"left\"},{\"property\":\"render-content\",\"label\":{\"text\":{\"zh_CN\":\"渲染函数\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"disabled\":true,\"placeholder\":\"请使用变量绑定来绑定函数\"}},\"description\":{\"zh_CN\":\"树节点的内容区的渲染函数\"}},{\"property\":\"icon-trigger-click-node\",\"label\":{\"text\":{\"zh_CN\":\"触发NodeClick事件\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"点击图标展开节点时是否触发 node-click 事件\"},\"labelPosition\":\"left\"},{\"property\":\"expand-icon\",\"label\":{\"text\":{\"zh_CN\":\"展开图标\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点展开图标\"},\"labelPosition\":\"top\"},{\"property\":\"shrink-icon\",\"label\":{\"text\":{\"zh_CN\":\"收缩图标\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点收缩的图标\"},\"labelPosition\":\"top\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"check-on-click-node\",\"label\":{\"text\":{\"zh_CN\":\"点击节点选中\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否在点击节点的时候选中节点,默认值为 false,即只有在点击复选框时才会选中节点\"},\"labelPosition\":\"left\"},{\"property\":\"filter-node-method\",\"label\":{\"text\":{\"zh_CN\":\"筛选函数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点筛选函数\"},\"labelPosition\":\"top\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onCheck\":{\"label\":{\"zh_CN\":\"勾选节点后的事件\"},\"description\":{\"zh_CN\":\"勾选节点后的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"data\",\"type\":\"object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中节点信息\"}},{\"name\":\"currentNode\",\"type\":\"object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onNodeClick\":{\"label\":{\"zh_CN\":\"点击节点后的事件\"},\"description\":{\"zh_CN\":\"点击节点后的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"data\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中节点信息\"}},{\"name\":\"node\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性\"}},{\"name\":\"vm\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"树组件实例\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"data\",\"show-checkbox\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (46, '3.20.0', '{\"zh_CN\":\"时间线\"}', 'TinyTimeLine', 'timeline', 'TimeLine 时间线', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"TimeLine\"}', 'component', 'navigation', 3, '[{\"name\":{\"zh_CN\":\"时间线\"},\"icon\":\"timeline\",\"screenshot\":\"\",\"snippetName\":\"TinyTimeLine\",\"schema\":{\"componentName\":\"TinyTimeLine\",\"props\":{\"active\":\"2\",\"data\":[{\"name\":\"已下单\"},{\"name\":\"运输中\"},{\"name\":\"已签收\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"horizontal\",\"type\":\"Boolean\",\"defaultValue\":{\"type\":\"i18n\",\"zh_CN\":\"布局\",\"en_US\":\"layout\",\"key\":\"\"},\"label\":{\"text\":{\"zh_CN\":\"水平布局\"}},\"cols\":12,\"rules\":[],\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点和文字横向布局\"},\"labelPosition\":\"left\"},{\"property\":\"vertical\",\"type\":\"Boolean\",\"defaultValue\":{\"type\":\"i18n\",\"zh_CN\":\"垂直布局\",\"en_US\":\"layout\",\"key\":\"\"},\"label\":{\"text\":{\"zh_CN\":\"垂直布局\"}},\"cols\":12,\"rules\":[],\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点和文字垂直布局\"},\"labelPosition\":\"left\"},{\"property\":\"active\",\"label\":{\"text\":{\"zh_CN\":\"选中值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"步骤条的选中步骤值\"},\"labelPosition\":\"left\"},{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"步骤条数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":[{\"name\":\"配置基本信息\",\"status\":\"ready\"},{\"name\":\"配置报价\",\"status\":\"wait\"},{\"name\":\"完成报价\",\"status\":\"wait\"}],\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"时间线步骤条数据\"},\"labelPosition\":\"top\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"节点的点击时触发\"},\"description\":{\"zh_CN\":\"节点的点击时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"type\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"点击节点的下标\"}},{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前节点对象:{ name: 节点名称, time: 时间 }\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"active\",\"data\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (47, '3.20.0', '{\"zh_CN\":\"文字提示框\"}', 'TinyTooltip', 'tooltip', '动态显示提示信息,一般通过鼠标事件进行响应;提供 warning、error、info、success 四种类型显示不同类别的信', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Tooltip\"}', 'component', 'data-display', 11, '[{\"name\":{\"zh_CN\":\"文字提示框\"},\"icon\":\"tooltip\",\"screenshot\":\"\",\"snippetName\":\"TinyTooltip\",\"schema\":{\"componentName\":\"TinyTooltip\",\"props\":{\"content\":\"Top Left 提示文字\",\"placement\":\"top-start\",\"manual\":true,\"modelValue\":true},\"children\":[{\"componentName\":\"span\",\"children\":[{\"componentName\":\"div\",\"props\":{}}]},{\"componentName\":\"Template\",\"props\":{\"slot\":\"content\"},\"children\":[{\"componentName\":\"span\",\"children\":[{\"componentName\":\"div\",\"props\":{\"placeholder\":\"提示内容\"}}]}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"placement\",\"label\":{\"text\":{\"zh_CN\":\"提示位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"top\",\"value\":\"top\"},{\"label\":\"top-start\",\"value\":\"top-start\"},{\"label\":\"top-end\",\"value\":\"top-end\"},{\"label\":\"bottom\",\"value\":\"bottom\"},{\"label\":\"bottom-start\",\"value\":\"bottom-start\"},{\"label\":\"bottom-end\",\"value\":\"bottom-end\"},{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"left-start\",\"value\":\"left-start\"},{\"label\":\"left-end\",\"value\":\"left-end\"},{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"right-start\",\"value\":\"right-start\"},{\"label\":\"right-end\",\"value\":\"right-end\"}]}},\"description\":{\"zh_CN\":\"Tooltip 的出现位置\"},\"labelPosition\":\"left\"},{\"property\":\"content\",\"label\":{\"text\":{\"zh_CN\":\"内容\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"提示信息\",\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"显示的内容,也可以通过 slot#content 传入 DOM\"},\"labelPosition\":\"left\"},{\"property\":\"render-content\",\"label\":{\"text\":{\"zh_CN\":\"渲染函数\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"disabled\":true,\"placeholder\":\"请使用变量绑定来绑定函数\"}},\"description\":{\"zh_CN\":\"自定义渲染函数,返回需要渲染的节点内容\"}},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"是否可见\"}},\"defaultValue\":true,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"状态是否可见\"},\"labelPosition\":\"left\"},{\"property\":\"manual\",\"label\":{\"text\":{\"zh_CN\":\"手动控制\"}},\"defaultValue\":true,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"手动控制模式,设置为 true 后,mouseenter 和 mouseleave 事件将不会生效\"},\"labelPosition\":\"left\"}]}],\"events\":{},\"slots\":{\"content\":{\"label\":{\"zh_CN\":\"提示内容\"},\"description\":{\"zh_CN\":\"自定义提示内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":true,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"content\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (48, '3.20.0', '{\"zh_CN\":\"提示框\"}', 'TinyPopover', 'popover', 'Popover可通过对一个触发源操作触发弹出框,支持自定义弹出内容,延迟触发和渐变动画', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Popover\"}', 'component', 'data-display', 7, '[{\"name\":{\"zh_CN\":\"提示框\"},\"icon\":\"popover\",\"screenshot\":\"\",\"snippetName\":\"TinyPopover\",\"schema\":{\"componentName\":\"TinyPopover\",\"props\":{\"width\":200,\"title\":\"弹框标题\",\"trigger\":\"manual\",\"modelValue\":true},\"children\":[{\"componentName\":\"Template\",\"props\":{\"slot\":\"reference\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"placeholder\":\"触发源\"}}]},{\"componentName\":\"Template\",\"props\":{\"slot\":\"default\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"placeholder\":\"提示内容\"}}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定,手动控制是否可见的状态值\"},\"labelPosition\":\"left\"},{\"property\":\"placement\",\"label\":{\"text\":{\"zh_CN\":\"位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"top\",\"value\":\"top\"},{\"label\":\"top-start\",\"value\":\"top-start\"},{\"label\":\"top-end\",\"value\":\"top-end\"},{\"label\":\"bottom\",\"value\":\"bottom\"},{\"label\":\"bottom-start\",\"value\":\"bottom-start\"},{\"label\":\"bottom-end\",\"value\":\"bottom-end\"},{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"left-start\",\"value\":\"left-start\"},{\"label\":\"left-end\",\"value\":\"left-end\"},{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"right-start\",\"value\":\"right-start\"},{\"label\":\"right-end\",\"value\":\"right-end\"}]}},\"description\":{\"zh_CN\":\"提示框位置\"},\"labelPosition\":\"left\"},{\"property\":\"trigger\",\"label\":{\"text\":{\"zh_CN\":\"触发方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"click\",\"value\":\"click\"},{\"label\":\"focus\",\"value\":\"focus\"},{\"label\":\"hover\",\"value\":\"hover\"},{\"label\":\"manual\",\"value\":\"manual\"}]}},\"description\":{\"zh_CN\":\"触发方式,该属性的可选值为 click / focus / hover / manual,该属性的默认值为 click\"},\"labelPosition\":\"left\"},{\"property\":\"popper-class\",\"label\":{\"text\":{\"zh_CN\":\"自定义类\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"为 popper 添加类名\"},\"labelPosition\":\"left\"},{\"property\":\"visible-arrow\",\"label\":{\"text\":{\"zh_CN\":\"显示箭头\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示 Tooltip 箭头\"},\"labelPosition\":\"left\"},{\"property\":\"append-to-body\",\"label\":{\"text\":{\"zh_CN\":\"添加到body上\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"Popover弹窗是否添加到body上\"},\"labelPosition\":\"left\"},{\"property\":\"arrow-offset\",\"label\":{\"text\":{\"zh_CN\":\"箭头的位置偏移\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"箭头的位置偏移,该属性的默认值为 0\"}},{\"property\":\"close-delay\",\"label\":{\"text\":{\"zh_CN\":\"延迟隐藏\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"触发方式为 hover 时的隐藏延迟,单位为毫秒\"},\"labelPosition\":\"left\"},{\"property\":\"content\",\"label\":{\"text\":{\"zh_CN\":\"显示的内容\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"显示的内容,也可以通过 slot 传入 DOM\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"Popover 是否可用\"},\"labelPosition\":\"left\"},{\"property\":\"offset\",\"label\":{\"text\":{\"zh_CN\":\"位置偏移量\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"出现位置的偏移量\"},\"labelPosition\":\"left\"},{\"property\":\"open-delay\",\"label\":{\"text\":{\"zh_CN\":\"显示延迟\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"触发方式为 hover 时的显示延迟,单位为毫秒\"},\"labelPosition\":\"left\"},{\"property\":\"popper-options\",\"label\":{\"text\":{\"zh_CN\":\"弹出层参数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"popper.js 的参数\"},\"labelPosition\":\"top\"},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"提示内容标题\"},\"labelPosition\":\"left\"},{\"property\":\"transform-origin\",\"label\":{\"text\":{\"zh_CN\":\"旋转中心点\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"组件的旋转中心点,组件的旋转中心点\"},\"labelPosition\":\"left\"},{\"property\":\"transition\",\"label\":{\"text\":{\"zh_CN\":\"渐变动画\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"该属性的默认值为 fade-in-linear\"},\"labelPosition\":\"left\"},{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"宽度\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"手动控制是否可见的状态值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"boolean\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的可见状态值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":true,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"visible\",\"width\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (49, '3.20.0', '{\"zh_CN\":\"日期选择\"}', 'TinyDatePicker', 'datepick', '用于输入或选择日期', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"DatePicker\"}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"日期选择\"},\"icon\":\"datepick\",\"screenshot\":\"\",\"snippetName\":\"TinyDatePicker\",\"schema\":{\"componentName\":\"TinyDatePicker\",\"props\":{\"placeholder\":\"请输入\",\"modelValue\":\"\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"日期\",\"value\":\"date\"},{\"label\":\"日期时间\",\"value\":\"datetime\"},{\"label\":\"周\",\"value\":\"week\"},{\"label\":\"月份\",\"value\":\"month\"},{\"label\":\"年份\",\"value\":\"year\"}]}},\"description\":{\"zh_CN\":\"设置日期框的type属性\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"readonly\",\"label\":{\"text\":{\"zh_CN\":\"只读\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否只读\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"日期框尺寸。该属性的可选值为 medium / small / mini\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"maxlength\",\"label\":{\"text\":{\"zh_CN\":\"输入最大长度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置 input 框的maxLength\"}},{\"property\":\"autofocus\",\"label\":{\"text\":{\"zh_CN\":\"聚焦\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自动获取焦点\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框改变后的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); -INSERT INTO `t_component` (`id`, `version`, `name`, `name_en`, `icon`, `description`, `doc_url`, `screenshot`, `tags`, `keywords`, `dev_mode`, `npm`, `group`, `category`, `priority`, `snippets`, `schema_fragment`, `configure`, `public`, `framework`, `is_official`, `is_default`, `tiny_reserved`, `component_metadata`, `library_id`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (50, '3.20.0', '{\"zh_CN\":\"数字输入框\"}', 'TinyNumeric', 'numeric', '通过鼠标或键盘输入字符', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Numeric\"}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"数字输入框\"},\"icon\":\"numeric\",\"screenshot\":\"\",\"snippetName\":\"TinyNumeric\",\"schema\":{\"componentName\":\"TinyNumeric\",\"props\":{\"allow-empty\":true,\"placeholder\":\"请输入\",\"controlsPosition\":\"right\",\"step\":1}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"allow-empty\",\"label\":{\"text\":{\"zh_CN\":\"内容可清空\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否内容可清空\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"输入框尺寸。该属性的可选值为 medium / small / mini\"},\"labelPosition\":\"left\"},{\"property\":\"controls\",\"label\":{\"text\":{\"zh_CN\":\"加减按钮\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否使用加减按钮\"},\"labelPosition\":\"left\"},{\"property\":\"controls-position\",\"label\":{\"text\":{\"zh_CN\":\"加减按钮位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"左右两侧\",\"value\":\"\"},{\"label\":\"只在右侧\",\"value\":\"right\"}]}},\"description\":{\"zh_CN\":\"加减按钮位置\"}},{\"property\":\"precision\",\"label\":{\"text\":{\"zh_CN\":\"精度\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"数值精度\"},\"labelPosition\":\"left\"},{\"property\":\"step\",\"label\":{\"text\":{\"zh_CN\":\"步长\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"步长\"},\"labelPosition\":\"left\"},{\"property\":\"max\",\"label\":{\"text\":{\"zh_CN\":\"最大数值\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"可输入的最大数值\"},\"labelPosition\":\"left\"},{\"property\":\"min\",\"label\":{\"text\":{\"zh_CN\":\"最小数值\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"可输入的最大数值\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框改变后的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:33', '1', '2025-05-22 18:02:33'); +INSERT INTO `t_component` VALUES (1, '2.4.2', '{\"zh_CN\":\"输入框\"}', 'ElInput', 'input', '通过鼠标或键盘输入字符', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElInput\",\"destructuring\":true}', '表单组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"输入框\"},\"icon\":\"input\",\"screenshot\":\"\",\"snippetName\":\"ElInput\",\"schema\":{}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"description\":{\"zh_CN\":\"绑定值\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"description\":{\"zh_CN\":\"类型\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"maxlength\",\"label\":{\"text\":{\"zh_CN\":\"最大长度\"}},\"description\":{\"zh_CN\":\"最大输入长度\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"number\",\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"是否禁用\"}},\"description\":{\"zh_CN\":\"是否禁用\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定值改变时触发\"},\"description\":{\"zh_CN\":\"双向绑定值改变时触发\"}},\"onBlur\":{\"label\":{\"zh_CN\":\"输入框失去焦点时触发\"},\"description\":{\"zh_CN\":\"输入框失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{\"prefix\":{\"label\":{\"zh_CN\":\"头部内容\"},\"description\":{\"zh_CN\":\"输入框头部内容,只对非 type=\'textarea\' 有效\"}},\"suffix\":{\"label\":{\"zh_CN\":\"尾部内容\"},\"description\":{\"zh_CN\":\"输入框尾部内容,只对非 type=\'textarea\' 有效\"}},\"prepend\":{\"label\":{\"zh_CN\":\"前置内容\"},\"description\":{\"zh_CN\":\"输入框前置内容,只对非 type=\'textarea\' 有效\"}},\"append\":{\"label\":{\"zh_CN\":\"后置内容\"},\"description\":{\"zh_CN\":\"输入框后置内容,只对非 type=\'textarea\' 有效\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"type\",\"size\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEvent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (2, '2.4.2', '{\"zh_CN\":\"日期选择器\"}', 'ElDatePicker', 'datepick', '日期选择器', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElDatePicker\",\"destructuring\":true}', '表单组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"日期选择器\"},\"icon\":\"datepick\",\"screenshot\":\"\",\"snippetName\":\"ElDatePicker\",\"schema\":{}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"description\":{\"zh_CN\":\"绑定值\"},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"readonly\",\"label\":{\"text\":{\"zh_CN\":\"只读\"}},\"description\":{\"zh_CN\":\"是否只读\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"defaultValue\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"description\":{\"zh_CN\":\"是否禁用\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"defaultValue\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"输入框尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"allowClear\":true,\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"editable\",\"label\":{\"text\":{\"zh_CN\":\"是否可编辑\"}},\"description\":{\"zh_CN\":\"文本框是否可编辑\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"defaultValue\":true,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"是否可清除\"}},\"description\":{\"zh_CN\":\"是否显示清楚按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"defaultValue\":true,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"description\":{\"zh_CN\":\"非范围选择时的占位内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":\"\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"start-placeholder\",\"label\":{\"text\":{\"zh_CN\":\"起始占位文本\"}},\"description\":{\"zh_CN\":\"范围选择时开始日期的占位内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":\"\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"end-placeholder\",\"label\":{\"text\":{\"zh_CN\":\"结束占位文本\"}},\"description\":{\"zh_CN\":\"范围选择时结束日期的占位内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":\"\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"description\":{\"zh_CN\":\"显示类型\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":\"date\",\"type\":\"string\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"year\",\"value\":\"year\"},{\"label\":\"years\",\"value\":\"years\"},{\"label\":\"month\",\"value\":\"month\"},{\"label\":\"months\",\"value\":\"months\"},{\"label\":\"date\",\"value\":\"date\"},{\"label\":\"dates\",\"value\":\"dates\"},{\"label\":\"datetime\",\"value\":\"datetime\"},{\"label\":\"week\",\"value\":\"week\"},{\"label\":\"datetimerange\",\"value\":\"datetimerange\"},{\"label\":\"daterange\",\"value\":\"daterange\"},{\"label\":\"monthrange\",\"value\":\"monthrange\"},{\"label\":\"yearrange\",\"value\":\"yearrange\"}]}},\"device\":[]},{\"property\":\"popper-class\",\"label\":{\"text\":{\"zh_CN\":\"下拉框类名\"}},\"description\":{\"zh_CN\":\"DatePicker 下拉框的类名\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":\"\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定值改变时触发\"},\"description\":{\"zh_CN\":\"双向绑定值改变时触发\"}},\"onChange\":{\"label\":{\"zh_CN\":\"用户确认选定的值时触发\"},\"description\":{\"zh_CN\":\"用户确认选定的值时触发\"},\"type\":\"event\",\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"在组件 Input 失去焦点时触发\"},\"description\":{\"zh_CN\":\"在组件 Input 失去焦点时触发\"},\"type\":\"event\",\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"在组件 Input 获得焦点时触发\"},\"description\":{\"zh_CN\":\"在组件 Input 获得焦点时触发\"},\"type\":\"event\",\"defaultValue\":\"\"},\"onCalendarChange\":{\"label\":{\"zh_CN\":\"在日历所选日期更改时触发\"},\"description\":{\"zh_CN\":\"在日历所选日期更改时触发\"},\"type\":\"event\",\"defaultValue\":\"\"},\"onPanelChange\":{\"label\":{\"zh_CN\":\"当日期面板改变时触发。\"},\"description\":{\"zh_CN\":\"当日期面板改变时触发。\"},\"type\":\"event\",\"defaultValue\":\"\"},\"onVisibleChange\":{\"label\":{\"zh_CN\":\"当 DatePicker 的下拉列表出现/消失时触发\"},\"description\":{\"zh_CN\":\"当 DatePicker 的下拉列表出现/消失时触发\"},\"type\":\"event\",\"defaultValue\":\"\"}},\"slots\":{\"default\":{\"label\":{\"zh_CN\":\"自定义单元格内容\"},\"description\":{\"zh_CN\":\"自定义单元格内容\"}},\"range-separator\":{\"label\":{\"zh_CN\":\"自定义范围分割符内容\"},\"description\":{\"zh_CN\":\"自定义范围分割符内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"type\",\"size\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEvent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (3, '2.4.2', '{\"zh_CN\":\"按钮\"}', 'ElButton', 'button', '常用的操作按钮', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElButton\",\"destructuring\":true}', '基础组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"按钮\"},\"icon\":\"button\",\"screenshot\":\"\",\"snippetName\":\"ElButton\",\"schema\":{\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"按钮文本\"}}]}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"description\":{\"zh_CN\":\"类型\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"plain\",\"label\":{\"text\":{\"zh_CN\":\"朴素按钮\"}},\"description\":{\"zh_CN\":\"是否为朴素按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文字按钮\"}},\"description\":{\"zh_CN\":\"是否为文字按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"bg\",\"label\":{\"text\":{\"zh_CN\":\"背景颜色\"}},\"description\":{\"zh_CN\":\"是否显示文字按钮背景颜色\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"link\",\"label\":{\"text\":{\"zh_CN\":\"链接按钮\"}},\"description\":{\"zh_CN\":\"是否为链接按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"round\",\"label\":{\"text\":{\"zh_CN\":\"圆角按钮\"}},\"description\":{\"zh_CN\":\"是否为圆角按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"circle\",\"label\":{\"text\":{\"zh_CN\":\"圆形按钮\"}},\"description\":{\"zh_CN\":\"是否为圆形按钮\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"loading\",\"label\":{\"text\":{\"zh_CN\":\"加载中状态\"}},\"description\":{\"zh_CN\":\"是否为加载中状态\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"description\":{\"zh_CN\":\"是否禁用\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{},\"slots\":{\"default\":{\"label\":{\"zh_CN\":\"default\"},\"description\":{\"zh_CN\":\"自定义默认内容\"}},\"loading\":{\"label\":{\"zh_CN\":\"loading\"},\"description\":{\"zh_CN\":\"自定义加载中组件\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"type\",\"size\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEvent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (4, '2.4.2', '{\"zh_CN\":\"表单\"}', 'ElForm', 'form', '表单包含 输入框, 单选框, 下拉选择, 多选框 等用户输入的组件。 使用表单,您可以收集、验证和提交数据。', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElForm\",\"destructuring\":true}', '表单组件', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"表单\"},\"icon\":\"form\",\"screenshot\":\"\",\"snippetName\":\"ElForm\",\"schema\":{\"children\":[{\"componentName\":\"ElFormItem\",\"props\":{\"label\":\"账号\",\"prop\":\"account\"},\"children\":[{\"componentName\":\"ElInput\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请输入账号\"}}]},{\"componentName\":\"ElFormItem\",\"props\":{\"label\":\"密码\",\"prop\":\"password\"},\"children\":[{\"componentName\":\"ElInput\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请输入密码\",\"type\":\"password\"}}]},{\"componentName\":\"ElFormItem\",\"props\":{},\"children\":[{\"componentName\":\"ElButton\",\"props\":{\"type\":\"primary\",\"style\":\"margin-right: 10px\"},\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"提交\"}}]},{\"componentName\":\"ElButton\",\"props\":{\"type\":\"primary\"},\"children\":[{\"componentName\":\"Text\",\"props\":{\"text\":\"重置\"}}]}]}]}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"model\",\"label\":{\"text\":{\"zh_CN\":\"数据对象\"}},\"description\":{\"zh_CN\":\"表单数据对象\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"rules\",\"label\":{\"text\":{\"zh_CN\":\"验证规则\"}},\"description\":{\"zh_CN\":\"表单验证规则\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"inline\",\"label\":{\"text\":{\"zh_CN\":\"行内模式\"}},\"description\":{\"zh_CN\":\"行内表单模式\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"label-position\",\"label\":{\"text\":{\"zh_CN\":\"标签位置\"}},\"description\":{\"zh_CN\":\"表单域标签的位置, 当设置为 left 或 right 时,则也需要设置标签宽度属性\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"right\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"top\",\"value\":\"top\"}]}}},{\"property\":\"label-width\",\"label\":{\"text\":{\"zh_CN\":\"标签宽度\"}},\"description\":{\"zh_CN\":\"标签的长度,例如 \'50px\'。 作为 Form 直接子元素的 form-item 会继承该值。 可以使用 auto。\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"label-suffix\",\"label\":{\"text\":{\"zh_CN\":\"标签后缀\"}},\"description\":{\"zh_CN\":\"表单域标签的后缀\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"hide-required-asterisk\",\"label\":{\"text\":{\"zh_CN\":\"隐藏必填星号\"}},\"description\":{\"zh_CN\":\"是否隐藏必填字段标签旁边的红色星号\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"require-asterisk-position\",\"label\":{\"text\":{\"zh_CN\":\"星号位置\"}},\"description\":{\"zh_CN\":\"星号的位置\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"left\",\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"show-message\",\"label\":{\"text\":{\"zh_CN\":\"显示校验信息\"}},\"description\":{\"zh_CN\":\"是否显示校验错误信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"inline-message\",\"label\":{\"text\":{\"zh_CN\":\"行内显示校验信息\"}},\"description\":{\"zh_CN\":\"是否以行内形式展示校验信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"status-icon\",\"label\":{\"text\":{\"zh_CN\":\"显示校验结果图标\"}},\"description\":{\"zh_CN\":\"是否在输入框中显示校验结果反馈图标\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"validate-on-rule-change\",\"label\":{\"text\":{\"zh_CN\":\"触发验证\"}},\"description\":{\"zh_CN\":\"是否在 rules 属性改变后立即触发一次验证\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"用于控制该表单内组件的尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"description\":{\"zh_CN\":\"是否禁用该表单内的所有组件。 如果设置为 true, 它将覆盖内部组件的 disabled 属性\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"scroll-to-error\",\"label\":{\"text\":{\"zh_CN\":\"滚动到错误项\"}},\"description\":{\"zh_CN\":\"当校验失败时,滚动到第一个错误表单项\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"device\":[]}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onValidate\":{\"label\":{\"zh_CN\":\"任一表单项被校验后触发\"},\"description\":{\"zh_CN\":\"任一表单项被校验后触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":[\"ElFormItem\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEvent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (5, '2.4.2', '{\"zh_CN\":\"表单子项\"}', 'ElFormItem', 'formItem', '表单包含 输入框, 单选框, 下拉选择, 多选框 等用户输入的组件。 使用表单,您可以收集、验证和提交数据。', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElFormItem\",\"destructuring\":true}', '表单组件', 'element-plus', NULL, NULL, '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"prop\",\"label\":{\"text\":{\"zh_CN\":\"键名\"}},\"description\":{\"zh_CN\":\"model 的键名。 它可以是一个属性的值(如 a.b.0 或 [a\', \'b\', \'0\'])。 在定义了 validate、resetFields 的方法时,该属性是必填的\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"label\",\"label\":{\"text\":{\"zh_CN\":\"标签文本\"}},\"description\":{\"zh_CN\":\"标签文本\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"label-width\",\"label\":{\"text\":{\"zh_CN\":\"标签宽度\"}},\"description\":{\"zh_CN\":\"标签宽度,例如 \'50px\'。 可以使用 auto\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"required\",\"label\":{\"text\":{\"zh_CN\":\"必填项\"}},\"description\":{\"zh_CN\":\"是否为必填项,如不设置,则会根据校验规则确认\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"rules\",\"label\":{\"text\":{\"zh_CN\":\"验证规则\"}},\"description\":{\"zh_CN\":\"表单验证规则, 更多内容可以参考async-validator\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"error\",\"label\":{\"text\":{\"zh_CN\":\"错误信息\"}},\"description\":{\"zh_CN\":\"表单域验证错误时的提示信息。设置该值会导致表单验证状态变为 error,并显示该错误信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"show-message\",\"label\":{\"text\":{\"zh_CN\":\"显示错误信息\"}},\"description\":{\"zh_CN\":\"是否显示校验错误信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"inline-message\",\"label\":{\"text\":{\"zh_CN\":\"行内显示错误信息\"}},\"description\":{\"zh_CN\":\"是否在行内显示校验信息\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"description\":{\"zh_CN\":\"用于控制该表单内组件的尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"for\",\"label\":{\"text\":{\"zh_CN\":\"for\"}},\"description\":{\"zh_CN\":\"和原生标签相同能力\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"validate-status\",\"label\":{\"text\":{\"zh_CN\":\"校验状态\"}},\"description\":{\"zh_CN\":\"formItem 校验的状态\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"error\",\"value\":\"error\"},{\"label\":\"validating\",\"value\":\"validating\"},{\"label\":\"success\",\"value\":\"success\"}]}}}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{},\"slots\":{\"label\":{\"label\":{\"zh_CN\":\"label\"},\"description\":{\"zh_CN\":\"标签位置显示的内容\"}},\"error\":{\"label\":{\"zh_CN\":\"error\"},\"description\":{\"zh_CN\":\"验证错误信息的显示内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEvent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (6, '2.4.2', '{\"zh_CN\":\"表单\"}', 'ElTable', 'table', '用于展示多条结构类似的数据, 可对数据进行排序、筛选、对比或其他自定义操作', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElTable\",\"destructuring\":true}', '数据展示', 'element-plus', NULL, '[{\"name\":{\"zh_CN\":\"表格\"},\"icon\":\"grid\",\"screenshot\":\"\",\"snippetName\":\"ElTable\",\"schema\":{\"props\":{\"data\":[{\"date\":\"2016-05-03\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"},{\"date\":\"2016-05-02\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"},{\"date\":\"2016-05-04\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"},{\"date\":\"2016-05-01\",\"name\":\"Tom\",\"address\":\"No. 189, Grove St, Los Angeles\"}],\"columns\":[{\"type\":\"index\"},{\"label\":\"Date\",\"prop\":\"date\"},{\"label\":\"Name\",\"prop\":\"name\"},{\"label\":\"Address\",\"prop\":\"address\"}]}}}]', '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"数据\"}},\"description\":{\"zh_CN\":\"显示的数据\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"columns\",\"label\":{\"text\":{\"zh_CN\":\"表格列配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"properties\":[{\"label\":{\"zh_CN\":\"默认分组\"},\"content\":[{\"property\":\"type\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"type\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列的类型。 如果设置了selection则显示多选框; 如果设置了 index 则显示该行的索引(从 1 开始计算); 如果设置了 expand 则显示为一个可展开的按钮\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"selection\",\"value\":\"selection\"},{\"label\":\"index\",\"value\":\"index\"},{\"label\":\"expand\",\"value\":\"expand\"}]}}},{\"property\":\"index\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"index\"}},\"description\":{\"text\":{\"zh_CN\":\"如果设置了 type=index,可以通过传递 index 属性来自定义索引\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"label\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"label\"}},\"description\":{\"text\":{\"zh_CN\":\"显示的标题\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"column-key\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"column-key\"}},\"description\":{\"text\":{\"zh_CN\":\"column 的 key, column 的 key, 如果需要使用 filter-change 事件,则需要此属性标识是哪个 column 的筛选条件\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"prop\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"prop\"}},\"description\":{\"text\":{\"zh_CN\":\"字段名称 对应列内容的字段名, 也可以使用 property属性\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"width\",\"type\":\"number\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"width\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列的宽度\"}},\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}}},{\"property\":\"min-width\",\"type\":\"number\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"min-width\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列的最小宽度, 对应列的最小宽度, 与 width 的区别是 width 是固定的,min-width 会把剩余宽度按比例分配给设置了 min-width 的列\"}},\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}}},{\"property\":\"fixed\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"fixed\"}},\"description\":{\"text\":{\"zh_CN\":\"列是否固定在左侧或者右侧。 true 表示固定在左侧\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"sortable\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"sortable\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列是否可以排序\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"sort-method\",\"type\":\"function\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"sort-method\"}},\"description\":{\"text\":{\"zh_CN\":\"指定数据按照哪个属性进行排序,仅当sortable设置为true的时候有效。 应该如同 Array.sort 那样返回一个 Number\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"sort-by\",\"type\":\"array\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"sort-by\"}},\"description\":{\"text\":{\"zh_CN\":\"指定数据按照哪个属性进行排序,仅当 sortable 设置为 true 且没有设置 sort-method 的时候有效。 如果 sort-by 为数组,则先按照第 1 个属性排序,如果第 1 个相等,再按照第 2 个排序,以此类推\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"sort-orders\",\"type\":\"array\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"sort-orders\"}},\"description\":{\"text\":{\"zh_CN\":\"数据在排序时所使用排序策略的轮转顺序,仅当 sortable 为 true 时有效。 需传入一个数组,随着用户点击表头,该列依次按照数组中元素的顺序进行排序\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"resizable\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"resizable\"}},\"description\":{\"text\":{\"zh_CN\":\"对应列是否可以通过拖动改变宽度(需要在 el-table 上设置 border 属性为真)\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"formatter\",\"type\":\"function\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"formatter\"}},\"description\":{\"text\":{\"zh_CN\":\"用来格式化内容\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"dataType\":\"JSFunction\"}}},{\"property\":\"show-overflow-tooltip\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"show-overflow-tooltip\"}},\"description\":{\"text\":{\"zh_CN\":\"当内容过长被隐藏时显示 tooltip\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"align\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"align\"}},\"description\":{\"text\":{\"zh_CN\":\"对齐方式\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"center\",\"value\":\"center\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"header-align\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"header-align\"}},\"description\":{\"text\":{\"zh_CN\":\"表头对齐方式, 若不设置该项,则使用表格的对齐方式\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"center\",\"value\":\"center\"},{\"label\":\"right\",\"value\":\"right\"}]}}},{\"property\":\"class-name\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"class-name\"}},\"description\":{\"text\":{\"zh_CN\":\"列的 className\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"label-class-name\",\"type\":\"string\",\"labelPosition\":\"top\",\"defaultValue\":\"left\",\"label\":{\"text\":{\"zh_CN\":\"label-class-name\"}},\"description\":{\"text\":{\"zh_CN\":\"当前列标题的自定义类名\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"selectable\",\"type\":\"function\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"selectable\"}},\"description\":{\"text\":{\"zh_CN\":\"仅对 type=selection 的列有效,类型为 Function,Function 的返回值用来决定这一行的 CheckBox 是否可以勾选\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"reserve-selection\",\"type\":\"boolean\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"reserve-selection\"}},\"description\":{\"text\":{\"zh_CN\":\"数据刷新后是否保留选项,仅对 type=selection 的列有效, 请注意, 需指定 row-key 来让这个功能生效。\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"filters\",\"type\":\"array\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filters\"}},\"description\":{\"text\":{\"zh_CN\":\"数据刷新后是否保留选项,仅对 type=selection 的列有效, 请注意, 需指定 row-key 来让这个功能生效。\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}},{\"property\":\"filter-placement\",\"type\":\"string\",\"labelPosition\":\"top\",\"label\":{\"text\":{\"zh_CN\":\"filter-placement\"}},\"description\":{\"text\":{\"zh_CN\":\"过滤弹出框的定位\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"filter-multiple\",\"type\":\"string\",\"labelPosition\":\"left\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filter-multiple\"}},\"description\":{\"text\":{\"zh_CN\":\"数据过滤的选项是否多选\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"filter-method\",\"type\":\"function\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filter-method\"}},\"description\":{\"text\":{\"zh_CN\":\"数据过滤使用的方法, 如果是多选的筛选项,对每一条数据会执行多次,任意一次返回 true 就会显示\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}}},{\"property\":\"filtered-value\",\"type\":\"array\",\"labelPosition\":\"top\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"filtered-value\"}},\"description\":{\"text\":{\"zh_CN\":\"选中的数据过滤项,如果需要自定义表头过滤的渲染方式,可能会需要此属性\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}}}]}],\"widget\":{\"component\":\"TableColumnsConfigurator\",\"props\":{\"type\":\"object\",\"textField\":\"label\",\"language\":\"json\",\"buttonText\":\"编辑列配置\",\"title\":\"编辑列配置\",\"expand\":true}},\"description\":{\"zh_CN\":\"表格列的配置信息\"},\"labelPosition\":\"top\"},{\"property\":\"max-height\",\"label\":{\"text\":{\"zh_CN\":\"最大高度\"}},\"description\":{\"zh_CN\":\"Table 的最大高度。\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"number\",\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"height\",\"label\":{\"text\":{\"zh_CN\":\"表格高度\"}},\"description\":{\"zh_CN\":\"Table 的高度, 默认为自动高度。 这个高度会设置为 Table 的 style.height 的值,Table 的高度会受控于外部样式。\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"stripe\",\"label\":{\"text\":{\"zh_CN\":\"斑马纹\"}},\"description\":{\"zh_CN\":\"是否为斑马纹 table\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"纵向边框\"}},\"description\":{\"zh_CN\":\"是否带有纵向边框\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"表格尺寸\"}},\"description\":{\"zh_CN\":\"Table 的尺寸\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"type\":\"string\",\"defaultValue\":\"default\",\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"small\",\"value\":\"small\"}]}}},{\"property\":\"fit\",\"label\":{\"text\":{\"zh_CN\":\"列宽自撑开\"}},\"description\":{\"zh_CN\":\"列的宽度是否自撑开\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"show-header\",\"label\":{\"text\":{\"zh_CN\":\"显示表头\"}},\"description\":{\"zh_CN\":\"是否显示表头\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":true,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"highlight-current-row\",\"label\":{\"text\":{\"zh_CN\":\"高亮当前行\"}},\"description\":{\"zh_CN\":\"是否要高亮当前行\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"current-row-key\",\"label\":{\"text\":{\"zh_CN\":\"当前行的 key\"}},\"description\":{\"zh_CN\":\"当前行的 key,只写属性\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"type\":\"string\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"row-class-name\",\"label\":{\"text\":{\"zh_CN\":\"行的类名\"}},\"description\":{\"zh_CN\":\"行的 className\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"row-key\",\"label\":{\"text\":{\"zh_CN\":\"行数据的 Key\"}},\"description\":{\"zh_CN\":\"行数据的 Key,用来优化 Table 的渲染; 在使用reserve-selection功能与显示树形数据时,该属性是必填的。 类型为 String 时,支持多层访问:user.info.id,但不支持 user.info[0].id,此种情况请使用 Function\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"empty-text\",\"label\":{\"text\":{\"zh_CN\":\"空数据文本\"}},\"description\":{\"zh_CN\":\"空数据时显示的文本内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"device\":[]},{\"property\":\"table-layout\",\"label\":{\"text\":{\"zh_CN\":\"表格布局方式\"}},\"description\":{\"zh_CN\":\"设置表格单元、行和列的布局方式\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"top\",\"defaultValue\":\"fixed\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"fixed\",\"value\":\"fixed\"},{\"label\":\"auto\",\"value\":\"auto\"}]}},\"device\":[]},{\"property\":\"scrollbar-always-on\",\"label\":{\"text\":{\"zh_CN\":\"显示滚动条\"}},\"description\":{\"zh_CN\":\"总是显示滚动条\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}},{\"property\":\"flexible\",\"label\":{\"text\":{\"zh_CN\":\"主轴最小尺寸\"}},\"description\":{\"zh_CN\":\"确保主轴的最小尺寸,以便不超过内容\"},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"labelPosition\":\"left\",\"defaultValue\":false,\"type\":\"boolean\",\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}}}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onSelect\":{\"label\":{\"zh_CN\":\"勾选数据行的 Checkbox 时触发\"},\"description\":{\"zh_CN\":\"当用户手动勾选数据行的 Checkbox 时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"selection\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项\"}},{\"name\":\"row\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前行\"}}],\"returns\":{}}},\"onSelectAll\":{\"label\":{\"zh_CN\":\"勾选全选时触发\"},\"description\":{\"zh_CN\":\"当用户手动勾选全选 Checkbox 时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"selection\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项\"}}],\"returns\":{}}},\"onSelectionChange\":{\"label\":{\"zh_CN\":\"选择项发生变化时会触发\"},\"description\":{\"zh_CN\":\"当选择项发生变化时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"selection\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项\"}}],\"returns\":{}}},\"onCellMouseEnter\":{\"label\":{\"zh_CN\":\"单元格 hover 时会触发\"},\"description\":{\"zh_CN\":\"当单元格 hover 进入时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"row\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前行\"}},{\"name\":\"column\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前列\"}},{\"name\":\"cell\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前单元格\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生事件 event\"}}],\"returns\":{}}},\"onCellMouseLeave\":{\"label\":{\"zh_CN\":\"单元格 hover 退出时会触发\"},\"description\":{\"zh_CN\":\"当单元格 hover 退出时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"row\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前行\"}},{\"name\":\"column\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前列\"}},{\"name\":\"cell\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前单元格\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生事件 event\"}}],\"returns\":{}}}},\"slots\":{\"empty\":{\"label\":{\"zh_CN\":\"empty\"},\"description\":{\"zh_CN\":\"当数据为空时自定义的内容\"}},\"append\":{\"label\":{\"zh_CN\":\"append\"},\"description\":{\"zh_CN\":\"插入至表格最后一行之后的内容, 如果需要对表格的内容进行无限滚动操作,可能需要用到这个 slot。 若表格有合计行,该 slot 会位于合计行之上。\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":[\"ElTableColumn\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEvent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (7, '2.4.2', '{\"zh_CN\":\"表单\"}', 'ElTableColumn', 'table', '用于展示多条结构类似的数据, 可对数据进行排序、筛选、对比或其他自定义操作', '', '', '', '', 'proCode', '{\"package\":\"element-plus\",\"exportName\":\"ElTableColumn\",\"destructuring\":true}', '表单组件', 'element-plus', NULL, NULL, '{\"properties\":[{\"name\":\"0\",\"label\":{\"zh_CN\":\"基础属性\"},\"content\":[],\"description\":{\"zh_CN\":\"\"}}],\"events\":{},\"slots\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"isPopper\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"inline\",\"label-width\"]},\"contextMenu\":{\"actions\":[\"copy\",\"remove\",\"insert\",\"updateAttr\",\"bindEvent\",\"createBlock\"],\"disable\":[]},\"invalidity\":[\"\"],\"clickCapture\":true,\"framework\":\"Vue\"}', 1, 'Vue', 1, 1, 0, NULL, 2, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (8, '3.20.0', '{\"zh_CN\":\"走马灯子项\"}', 'TinyCarouselItem', 'carouselitem', '常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CarouselItem\",\"destructuring\":true}', 'component', '容器组件', 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"名称\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"幻灯片的名字,可用作 setActiveItem 的参数\"},\"labelPosition\":\"left\"},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"幻灯片的标题\"},\"labelPosition\":\"left\"},{\"property\":\"indicator-position\",\"label\":{\"text\":{\"zh_CN\":\"指示器位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"outside\",\"value\":\"outside\"},{\"label\":\"none\",\"value\":\"none\"}]}},\"description\":{\"zh_CN\":\"指示器的位置\"},\"labelPosition\":\"left\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (9, '3.20.0', '{\"zh_CN\":\"走马灯\"}', 'TinyCarousel', 'carousel', '常用于一组图片或卡片轮播,当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Carousel\",\"destructuring\":true}', 'component', '容器组件', 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"arrow\",\"label\":{\"text\":{\"zh_CN\":\"箭头显示时机\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"总是显示\",\"value\":\"always\"},{\"label\":\"鼠标悬停时显示\",\"value\":\"hover\"},{\"label\":\"从不显示\",\"value\":\"never\"}]}},\"description\":{\"zh_CN\":\"切换箭头的显示时机\"}},{\"property\":\"autoplay\",\"label\":{\"text\":{\"zh_CN\":\"自动切换\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否自动切换\"},\"labelPosition\":\"left\"},{\"property\":\"tabs\",\"label\":{\"text\":{\"zh_CN\":\"选项卡\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"\",\"cols\":12,\"bindState\":false,\"widget\":{\"component\":\"ContainerConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"tabs 选项卡\"},\"labelPosition\":\"none\"},{\"property\":\"height\",\"label\":{\"text\":{\"zh_CN\":\"高度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"走马灯的高度\"}},{\"property\":\"indicator-position\",\"label\":{\"text\":{\"zh_CN\":\"位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"走马灯外部\",\"value\":\"outside\"},{\"label\":\"不显示\",\"value\":\"none\"}]}},\"description\":{\"zh_CN\":\"指示器的位置\"}},{\"property\":\"initial-index\",\"label\":{\"text\":{\"zh_CN\":\"初始索引\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"初始状态激活的幻灯片的索引,从 0 开始 \"}},{\"property\":\"interval\",\"label\":{\"text\":{\"zh_CN\":\"自动切换间隔\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自动切换的时间间隔,单位为毫秒\"}},{\"property\":\"loop\",\"label\":{\"text\":{\"zh_CN\":\"循环显示\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否循环显示\"},\"labelPosition\":\"left\"},{\"property\":\"show-title\",\"label\":{\"text\":{\"zh_CN\":\"显示标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示标题\"},\"labelPosition\":\"left\"},{\"property\":\"trigger\",\"label\":{\"text\":{\"zh_CN\":\"触发方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"点击\",\"value\":\"click\"},{\"label\":\"悬停\",\"value\":\"hover\"}]}},\"description\":{\"zh_CN\":\"指示器的触发方式,默认为 hover\"}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"options\":[{\"label\":\"水平\",\"value\":\"horizontal\"},{\"label\":\"垂直\",\"value\":\"vertical\"},{\"label\":\"卡片\",\"value\":\"card\"}]}},\"description\":{\"zh_CN\":\"走马灯的类型\"}}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"clickCapture\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyCarouselItem\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (10, '1.0.0', '{\"zh_CN\":\"提示框\"}', 'a', 'link', '链接', '', '', '', '', 'proCode', '{}', 'component', 'basic', 7, '[{\"name\":{\"zh_CN\":\"链接\"},\"icon\":\"link\",\"screenshot\":\"\",\"snippetName\":\"a\",\"schema\":{\"componentName\":\"a\",\"children\":\"链接\"}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"children\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlTextConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"类型\"},\"labelPosition\":\"none\"},{\"property\":\"href\",\"label\":{\"text\":{\"zh_CN\":\"链接\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"指定链接的 URL\"},\"labelPosition\":\"left\"},{\"property\":\"target\",\"label\":{\"text\":{\"zh_CN\":\"打开方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"当前页面\",\"value\":\"_self\"},{\"label\":\"打开新页面\",\"value\":\"_blank\"}]}},\"description\":{\"zh_CN\":\"指定链接的打开方式,例如在当前窗口中打开或在新窗口中打开。\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}]}', '{\"loop\":true,\"condition\":true,\"slots\":[],\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[]},\"contextMenu\":{\"actions\":[],\"disable\":[]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (11, '1.0.0', '{\"zh_CN\":\"标题\"}', '[h1, h2, h3, h4, h5, h6]', 'h16', '标题', '', '', '', '', 'proCode', '{}', 'component', 'html', 20, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"children\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlTextConfigurator\",\"props\":{\"showRadioButton\":true}},\"description\":{\"zh_CN\":\"\"},\"labelPosition\":\"none\"},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"\"},\"labelPosition\":\"none\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (12, '1.0.0', '{\"zh_CN\":\"段落\"}', 'p', 'paragraph', '段落', '', '', '', '', 'proCode', '{}', 'component', 'html', 30, '[{\"name\":{\"zh_CN\":\"段落\"},\"icon\":\"paragraph\",\"screenshot\":\"\",\"snippetName\":\"p\",\"schema\":{\"componentName\":\"p\",\"children\":\"TinyEngine 前端可视化设计器致力于通过友好的用户交互提升业务应用的开发效率。\"}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"children\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlTextConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"类型\"},\"labelPosition\":\"none\"},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[]},\"contextMenu\":{\"actions\":[],\"disable\":[]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (13, '1.0.0', '{\"zh_CN\":\"输入框\"}', 'input', 'input', '输入框', '', '', '', '', 'proCode', '{}', 'component', 'html', 40, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"checkbox\",\"value\":\"checkbox\"},{\"label\":\"color\",\"value\":\"color\"},{\"label\":\"date\",\"value\":\"date\"},{\"label\":\"button\",\"value\":\"button\"},{\"label\":\"email\",\"value\":\"email\"},{\"label\":\"file\",\"value\":\"file\"},{\"label\":\"hidden\",\"value\":\"hidden\"},{\"label\":\"image\",\"value\":\"image\"},{\"label\":\"month\",\"value\":\"month\"},{\"label\":\"number\",\"value\":\"number\"},{\"label\":\"password\",\"value\":\"password\"},{\"label\":\"radio\",\"value\":\"radio\"},{\"label\":\"range\",\"value\":\"range\"},{\"label\":\"reset\",\"value\":\"reset\"},{\"label\":\"search\",\"value\":\"search\"},{\"label\":\"submit\",\"value\":\"submit\"},{\"label\":\"text\",\"value\":\"text\"},{\"label\":\"time\",\"value\":\"time\"},{\"label\":\"week\",\"value\":\"week\"},{\"label\":\"url\",\"value\":\"url\"}]}},\"description\":{\"zh_CN\":\"类型\"}},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位符\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"占位符\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onChange\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (14, '1.0.0', '{\"zh_CN\":\"视频\"}', 'video', 'video', '视频', '', '', '', '', 'proCode', '{}', 'component', 'html', 50, '[{\"name\":{\"zh_CN\":\"视频\"},\"icon\":\"video\",\"screenshot\":\"\",\"snippetName\":\"video\",\"schema\":{\"componentName\":\"video\",\"props\":{\"src\":\"https://tinyengine-assets.obs.myhuaweicloud.com/files/in-action.mp4#t=1.5\",\"width\":\"200\",\"height\":\"100\",\"style\":\"border:1px solid #ccc\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"src\",\"label\":{\"text\":{\"zh_CN\":\"资源\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"视频的 URL\"}},{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"播放器宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"视频播放器的宽度\"}},{\"property\":\"height\",\"label\":{\"text\":{\"zh_CN\":\"播放器高度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"视频播放器的高度\"}},{\"property\":\"controls\",\"label\":{\"text\":{\"zh_CN\":\"显示控件\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示控件\"},\"labelPosition\":\"left\"},{\"property\":\"autoplay\",\"label\":{\"text\":{\"zh_CN\":\"马上播放\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否马上播放\"},\"labelPosition\":\"left\"},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[]},\"contextMenu\":{\"actions\":[],\"disable\":[]}}', 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (15, '1.0.0', '{\"zh_CN\":\"Img\"}', 'Img', 'Image', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 60, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"src\",\"type\":\"string\",\"defaultValue\":\"\",\"bindState\":true,\"label\":{\"text\":{\"zh_CN\":\"资源\"}},\"cols\":12,\"rules\":[],\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"src路径\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{},\"shortcuts\":{\"properties\":[\"src\"]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (16, '1.0.0', '{\"zh_CN\":\"Button\"}', 'button', 'button', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 70, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', '{\"isContainer\":true}', 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (17, '1.0.0', '{\"zh_CN\":\"表格\"}', 'table', 'table', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 80, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格的宽度\"}},{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"边框宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格边框的宽度\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (18, '1.0.0', '{\"zh_CN\":\"表格单元格\"}', 'td', 'td', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 90, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"colspan\",\"label\":{\"text\":{\"zh_CN\":\"合并列\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单元格可横跨的列数\"}},{\"property\":\"rowspan\",\"label\":{\"text\":{\"zh_CN\":\"合并行\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单元格可横跨的行数\"}},{\"property\":\"attributes3\",\"label\":{\"text\":{\"zh_CN\":\"原生属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"HtmlAttributesConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生属性\"},\"labelPosition\":\"none\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (19, '1.0.0', '{\"zh_CN\":\"表单\"}', 'form', 'form', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 100, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"名称\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单的名称\"}},{\"property\":\"action\",\"label\":{\"text\":{\"zh_CN\":\"提交地址\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"提交表单时向何处发送表单数据\"}},{\"property\":\"method\",\"label\":{\"text\":{\"zh_CN\":\"HTTP方法\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"get\",\"value\":\"get\"},{\"label\":\"post\",\"value\":\"post\"}]}},\"description\":{\"zh_CN\":\"用于发送 form-data 的 HTTP 方法\"}}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击时触发\"},\"description\":{\"zh_CN\":\"点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', '{\"isContainer\":true}', 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (20, '1.0.0', '{\"zh_CN\":\"表单标签\"}', 'label', 'label', NULL, NULL, '', '', '', 'proCode', '{}', 'component', 'html', 110, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"for\",\"label\":{\"text\":{\"zh_CN\":\"label绑定表单元素\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"label 绑定到哪个表单元素\"}},{\"property\":\"form\",\"label\":{\"text\":{\"zh_CN\":\"label字段所属表单\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"label 字段所属的一个或多个表单\"}}]}],\"events\":{},\"shortcuts\":{\"properties\":[]},\"contentMenu\":{\"actions\":[]}}', NULL, 1, 'Vue', 1, 1, 0, NULL, NULL, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (21, '3.20.0', '{\"zh_CN\":\"按钮组\"}', 'TinyButtonGroup', 'buttonGroup', '以按钮组的方式出现,常用于多项类似操作', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"ButtonGroup\",\"destructuring\":true}', 'component', 'general', 2, '[{\"name\":{\"zh_CN\":\"互斥按钮组\"},\"icon\":\"MutexButtons\",\"screenshot\":\"\",\"snippetName\":\"TinyButtonGroup\",\"schema\":{\"componentName\":\"TinyButtonGroup\",\"props\":{\"data\":[{\"text\":\"Button1\",\"value\":\"1\"},{\"text\":\"Button2\",\"value\":\"2\"},{\"text\":\"Button3\",\"value\":\"3\"}],\"modelValue\":\"1\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"配置按钮组数据\"}},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"大小\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"mini\",\"value\":\"mini\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"medium\",\"value\":\"medium\"}]}},\"description\":{\"zh_CN\":\"组件大小\"},\"labelPosition\":\"left\"},{\"property\":\"plain\",\"label\":{\"text\":{\"zh_CN\":\"朴素按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否是朴素按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (22, '3.20.0', '{\"zh_CN\":\"row\"}', 'TinyRow', 'row', '定义 Layout 的行配置信息', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Row\",\"destructuring\":true}', 'component', NULL, 5, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"layout\",\"label\":{\"text\":{\"zh_CN\":\"布局\"}},\"cols\":12,\"widget\":{\"component\":\"LayoutGridConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"选择布局方式\"},\"labelPosition\":\"none\"},{\"property\":\"align\",\"label\":{\"text\":{\"zh_CN\":\"子项对齐方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"top\",\"value\":\"top\"},{\"label\":\"middle\",\"value\":\"middle\"},{\"label\":\"bottom\",\"value\":\"bottom\"}]}},\"description\":{\"zh_CN\":\"子项的副轴对齐方向,可取值:top, middle, bottom\"}},{\"property\":\"flex\",\"label\":{\"text\":{\"zh_CN\":\"flex容器\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否为flex容器\"},\"labelPosition\":\"left\"},{\"property\":\"gutter\",\"label\":{\"text\":{\"zh_CN\":\"子项间隔\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"子项的间隔的像素\"}}]}]}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component` VALUES (23, '3.20.0', '{\"zh_CN\":\"row\"}', 'TinyLayout', 'row', '定义 Layout 的行配置信息', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Layout\",\"version\":\"3.20.0\",\"destructuring\":true}', 'component', 'layout', 5, '[{\"name\":{\"zh_CN\":\"栅格布局\"},\"icon\":\"row\",\"screenshot\":\"\",\"snippetName\":\"TinyLayout\",\"schema\":{\"componentName\":\"TinyLayout\",\"props\":{},\"children\":[{\"componentName\":\"TinyRow\",\"props\":{\"style\":\"padding: 10px;\"},\"children\":[{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}}]},{\"componentName\":\"TinyRow\",\"props\":{\"style\":\"padding: 10px;\"},\"children\":[{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}},{\"componentName\":\"TinyCol\",\"props\":{\"span\":3}}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"cols\",\"label\":{\"text\":{\"zh_CN\":\"总栅格数\"}},\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"12\",\"value\":12},{\"label\":\"24\",\"value\":24}]}},\"description\":{\"zh_CN\":\"选择总栅格数\"},\"labelPosition\":\"none\"},{\"property\":\"tag\",\"label\":{\"text\":{\"zh_CN\":\"layout渲染的标签\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"定义Layout元素渲染后的标签,默认为 div\"}}]}]}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyRow\",\"TinyCol\"],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (24, '3.20.0', '{\"zh_CN\":\"表单\"}', 'TinyForm', 'form', '由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Form\",\"destructuring\":true}', 'component', NULL, 5, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"label-width\",\"label\":{\"text\":{\"zh_CN\":\"标签宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单中标签占位宽度,默认为 80px\"},\"labelPosition\":\"left\"},{\"property\":\"inline\",\"label\":{\"text\":{\"zh_CN\":\"行内布局\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"行内布局模式,默认为 false\"},\"labelPosition\":\"left\"},{\"property\":\"label-align\",\"label\":{\"text\":{\"zh_CN\":\"必填标识占位\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"必填标识 * 是否占位\"},\"labelPosition\":\"left\"},{\"property\":\"label-suffix\",\"label\":{\"text\":{\"zh_CN\":\"标签后缀\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单中标签后缀\"},\"labelPosition\":\"left\"},{\"property\":\"label-position\",\"label\":{\"text\":{\"zh_CN\":\"标签位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"left \",\"value\":\"left \"},{\"label\":\"top\",\"value\":\"top\"}]}},\"description\":{\"zh_CN\":\"表单中标签的布局位置\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"校验属性\"},\"content\":[{\"property\":\"model\",\"label\":{\"text\":{\"zh_CN\":\"数据对象\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单数据对象\"},\"labelPosition\":\"top\"},{\"property\":\"rules\",\"label\":{\"text\":{\"zh_CN\":\"校验规则\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单验证规则\"},\"labelPosition\":\"top\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onValidate\":{\"label\":{\"zh_CN\":\"表单项被校验后触发\"},\"description\":{\"zh_CN\":\"表单项被校验后触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"function\",\"type\":\"Function\",\"defaultValue\":\"(valid) => {}\",\"description\":{\"zh_CN\":\"校验回调函数\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[],\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (25, '3.20.0', '{\"zh_CN\":\"表单项\"}', 'TinyFormItem', 'formitem', '由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"FormItem\",\"destructuring\":true}', 'component', NULL, 12, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"label\",\"label\":{\"text\":{\"zh_CN\":\"标签文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"标签\",\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标签文本\"},\"labelPosition\":\"left\"},{\"property\":\"prop\",\"label\":{\"text\":{\"zh_CN\":\"校验字段\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表单域 model 字段,在使用 validate、resetFields 方法的情况下,该属性是必填的\"},\"labelPosition\":\"left\"},{\"property\":\"required\",\"label\":{\"text\":{\"zh_CN\":\"必填\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否必填\"},\"labelPosition\":\"left\"}]}],\"events\":{},\"slots\":{\"label\":{\"label\":{\"zh_CN\":\"字段名\"},\"description\":{\"zh_CN\":\"自定义显示字段名称\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":[\"TinyForm\"],\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label\",\"rules\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (26, '3.20.0', '{\"zh_CN\":\"col\"}', 'TinyCol', 'col', '列配置信息', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Col\",\"destructuring\":true}', 'component', NULL, 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"span\",\"label\":{\"text\":{\"zh_CN\":\"栅格列格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"整行\",\"value\":12},{\"label\":\"6格\",\"value\":6},{\"label\":\"4格\",\"value\":4},{\"label\":\"3格\",\"value\":3},{\"label\":\"1格\",\"value\":1}]}},\"description\":{\"zh_CN\":\"当一行分为12格时,一列可占位多少格\"}},{\"property\":\"move\",\"label\":{\"text\":{\"zh_CN\":\"栅格移动格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":-12,\"max\":12}},\"description\":{\"zh_CN\":\"栅格左右移动格数(正数向右,负数向左)\"}},{\"property\":\"no\",\"label\":{\"text\":{\"zh_CN\":\"排序编号\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"max\":12}},\"description\":{\"zh_CN\":\"排序编号(row中启用order生效)\"}},{\"property\":\"offset\",\"label\":{\"text\":{\"zh_CN\":\"间隔格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":0,\"max\":12}},\"description\":{\"zh_CN\":\"栅格左侧的间隔格数\"}},{\"property\":\"xs\",\"label\":{\"text\":{\"zh_CN\":\"超小屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"<768px 响应式栅格数\"}},{\"property\":\"sm\",\"label\":{\"text\":{\"zh_CN\":\"小屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥768px 响应式栅格数\"}},{\"property\":\"md\",\"label\":{\"text\":{\"zh_CN\":\"中屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥992px 响应式栅格数\"}},{\"property\":\"lg\",\"label\":{\"text\":{\"zh_CN\":\"大屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥1200px 响应式栅格数\"}},{\"property\":\"xl\",\"label\":{\"text\":{\"zh_CN\":\"超大屏格数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"min\":1,\"max\":12}},\"description\":{\"zh_CN\":\"≥1920px 响应式栅格数\"}}]}],\"events\":{}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label\",\"rules\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (27, '3.20.0', '{\"zh_CN\":\"按钮\"}', 'TinyButton', 'button', '常用的操作按钮,提供包括默认按钮、图标按钮、图片按钮、下拉按钮等类型', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Button\",\"destructuring\":true}', 'component', 'basic', 2, '[{\"name\":{\"zh_CN\":\"按钮\"},\"icon\":\"button\",\"screenshot\":\"\",\"snippetName\":\"TinyButton\",\"schema\":{\"componentName\":\"TinyButton\",\"props\":{\"text\":\"按钮文案\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"text\",\"type\":\"string\",\"defaultValue\":\"按钮文案\",\"label\":{\"text\":{\"zh_CN\":\"按钮文字\"}},\"cols\":12,\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"按钮文字\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"type\":\"select\",\"label\":{\"text\":{\"zh_CN\":\"大小\"}},\"cols\":12,\"rules\":[],\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"large\",\"value\":\"large\"},{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"按钮大小\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否被禁用\"},\"labelPosition\":\"left\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"primary\",\"value\":\"primary\"},{\"label\":\"success\",\"value\":\"success\"},{\"label\":\"info\",\"value\":\"info\"},{\"label\":\"warning\",\"value\":\"warning\"},{\"label\":\"danger\",\"value\":\"danger\"},{\"label\":\"text\",\"value\":\"text\"}]}},\"description\":{\"zh_CN\":\"设置不同的主题样式\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"round\",\"label\":{\"text\":{\"zh_CN\":\"圆角\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否圆角按钮\"},\"labelPosition\":\"left\"},{\"property\":\"plain\",\"label\":{\"text\":{\"zh_CN\":\"朴素按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否为朴素按钮\"},\"labelPosition\":\"left\"},{\"property\":\"reset-time\",\"label\":{\"text\":{\"zh_CN\":\"禁用时间\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置禁用时间,防止重复提交,单位毫秒\"},\"labelPosition\":\"left\"},{\"property\":\"circle\",\"label\":{\"text\":{\"zh_CN\":\"圆形按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否圆形按钮\"},\"labelPosition\":\"left\"},{\"property\":\"autofocus\",\"label\":{\"text\":{\"zh_CN\":\"自动聚焦\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否默认聚焦\"},\"labelPosition\":\"left\"},{\"property\":\"loading\",\"label\":{\"text\":{\"zh_CN\":\"加载中样式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否展示位加载中样式\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击事件\"},\"description\":{\"zh_CN\":\"按钮被点击时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"text\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (28, '3.20.0', '{\"zh_CN\":\"输入框\"}', 'TinyInput', 'input', '通过鼠标或键盘输入字符', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Input\",\"destructuring\":true}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"输入框\"},\"icon\":\"input\",\"screenshot\":\"\",\"snippetName\":\"TinyInput\",\"schema\":{\"componentName\":\"TinyInput\",\"props\":{\"placeholder\":\"请输入\",\"modelValue\":\"\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"textarea\",\"value\":\"textarea\"},{\"label\":\"text\",\"value\":\"text\"},{\"label\":\"password\",\"value\":\"password\"}]}},\"description\":{\"zh_CN\":\"设置input框的type属性\"},\"labelPosition\":\"left\"},{\"property\":\"rows\",\"label\":{\"text\":{\"zh_CN\":\"行数\"}},\"widget\":{\"component\":\"NumberConfigurator\"},\"description\":{\"zh_CN\":\"输入框行数,只对 type=\'textarea\' 有效\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"输入框尺寸。该属性的可选值为 medium / small / mini\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"maxlength\",\"label\":{\"text\":{\"zh_CN\":\"最大输入长度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置 input 框的maxLength\"}},{\"property\":\"autofocus\",\"label\":{\"text\":{\"zh_CN\":\"自动聚焦\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自动获取焦点\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框改变后的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{\"prefix\":{\"label\":{\"zh_CN\":\"前置内容\"}},\"suffix\":{\"label\":{\"zh_CN\":\"后置内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (29, '3.20.0', '{\"zh_CN\":\"单选\"}', 'TinyRadio', 'radio', '用于配置不同场景的选项,在一组备选项中进行单选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Radio\",\"destructuring\":true}', 'component', 'form', 3, '[{\"name\":{\"zh_CN\":\"单选\"},\"icon\":\"radio\",\"screenshot\":\"\",\"snippetName\":\"TinyRadio\",\"schema\":{\"componentName\":\"TinyRadio\",\"props\":{\"label\":\"1\",\"text\":\"单选文本\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文本内容\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单选框文本内容\"}},{\"property\":\"label\",\"label\":{\"text\":{\"zh_CN\":\"选中值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"props\":{}},\"description\":{\"zh_CN\":\"radio 选中时的值\"}},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"}]},{\"label\":{\"zh_CN\":\"其他\"},\"description\":{\"zh_CN\":\"\"},\"content\":[{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"显示边框\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示边框\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"单选框的尺寸,仅在 border 为true时有效\"}},{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"原生name属性\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"原生 name 属性\"}}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值变化事件\"},\"description\":{\"zh_CN\":\"绑定值变化时触发的事件\"}},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"visible\",\"width\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (30, '3.20.0', '{\"zh_CN\":\"下拉框\"}', 'TinySelect', 'select', 'Select 选择器是一种通过点击弹出下拉列表展示数据并进行选择的 UI 组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Select\",\"destructuring\":true}', 'component', 'form', 8, '[{\"name\":{\"zh_CN\":\"下拉框\"},\"icon\":\"select\",\"screenshot\":\"\",\"snippetName\":\"TinySelect\",\"schema\":{\"componentName\":\"TinySelect\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请选择\",\"options\":[{\"value\":\"1\",\"label\":\"黄金糕\"},{\"value\":\"2\",\"label\":\"双皮奶\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"searchable\",\"label\":{\"text\":{\"zh_CN\":\"下拉可搜索\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"下拉面板是否可搜索\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"options\",\"label\":{\"text\":{\"zh_CN\":\"选项数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"配置 Select 下拉数据项\"},\"labelPosition\":\"top\"},{\"property\":\"multiple\",\"label\":{\"text\":{\"zh_CN\":\"多选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否允许输入框输入或选择多个项\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"multiple-limit\",\"label\":{\"text\":{\"zh_CN\":\"最大可选值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"多选时用户最多可以选择的项目数,为 0 则不限制\"},\"labelPosition\":\"left\"},{\"property\":\"popper-class\",\"label\":{\"text\":{\"zh_CN\":\"下拉框类名\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置下拉框自定义的类名\"},\"labelPosition\":\"left\"},{\"property\":\"collapse-tags\",\"label\":{\"text\":{\"zh_CN\":\"多选展示\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"多选时是否将选中值按文字的形式展示\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在下拉框值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"下拉框选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onRemoveTag\":{\"label\":{\"zh_CN\":\"多选模式下移除tag时触发\"},\"description\":{\"zh_CN\":\"多选模式下移除tag时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"被移除Tag对应数据项的值字段\"}}],\"returns\":{}},\"defaultValue\":\"\"}},\"onBeforeMount\":\"console.log(\'table on load\'); this.options = source.data\"}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"multiple\",\"options\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (31, '3.20.0', '{\"zh_CN\":\"开关\"}', 'TinySwitch', 'switch', 'Switch 在两种状态间切换选择', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Switch\",\"destructuring\":true}', 'component', 'form', 9, '[{\"name\":{\"zh_CN\":\"开关\"},\"icon\":\"switch\",\"screenshot\":\"\",\"snippetName\":\"TinySwitch\",\"schema\":{\"componentName\":\"TinySwitch\",\"props\":{\"modelValue\":\"\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否被禁用\"},\"labelPosition\":\"left\"},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"绑定默认值\"},\"labelPosition\":\"left\"},{\"property\":\"true-value\",\"label\":{\"text\":{\"zh_CN\":\"设置打开值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置打开时的值(Boolean / String / Number)\"},\"labelPosition\":\"left\"},{\"property\":\"false-value\",\"label\":{\"text\":{\"zh_CN\":\"设置关闭值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置关闭时的值(Boolean / String / Number)\"},\"labelPosition\":\"left\"},{\"property\":\"mini\",\"label\":{\"text\":{\"zh_CN\":\"迷你尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示为 mini 模式\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"点击事件\"},\"description\":{\"zh_CN\":\"按钮被点击时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"开关的状态值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的开关状态值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"mini\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (32, '3.20.0', '{\"zh_CN\":\"搜索框\"}', 'TinySearch', 'search', '指定条件对象进行搜索数据', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Search\",\"destructuring\":true}', 'component', 'basic', 2, '[{\"name\":{\"zh_CN\":\"搜索框\"},\"icon\":\"search\",\"screenshot\":\"\",\"snippetName\":\"TinySearch\",\"schema\":{\"componentName\":\"TinySearch\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"输入关键词\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"默认值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框内的默认搜索值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否被禁用\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框内的提示占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清空按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置显示清空图标按钮\"},\"labelPosition\":\"left\"},{\"property\":\"isEnterSearch\",\"label\":{\"text\":{\"zh_CN\":\"Enter键触发\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否在按下键盘Enter键的时候触发search事件\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"mini\",\"label\":{\"text\":{\"zh_CN\":\"迷你尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"迷你模式,配置为true时,搜索默认显示为一个带图标的圆形按钮,点击后展开\"},\"labelPosition\":\"left\"},{\"property\":\"transparent\",\"label\":{\"text\":{\"zh_CN\":\"透明模式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"配置为true时,边框变为透明且收缩后半透明显示,一般用在带有背景的场景,默认 false\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"输入完成时触发\"},\"description\":{\"zh_CN\":\"在 input 框中输入完成时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"type\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"搜索类型,默认值为 {} \"}},{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前input框中值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onSearch\":{\"label\":{\"zh_CN\":\"点击搜索按钮时触发\"},\"description\":{\"zh_CN\":\"展开状态点击搜索按钮时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"type\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"搜索类型,默认值为 {} \"}},{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前input框中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"clearable\",\"mini\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (33, '3.20.0', '{\"zh_CN\":\"复选框\"}', 'TinyCheckbox', 'checkbox', '用于配置不同场景的选项,提供用户可在一组选项中进行多选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Checkbox\",\"destructuring\":true}', 'component', 'form', 4, '[{\"name\":{\"zh_CN\":\"复选框\"},\"icon\":\"checkbox\",\"screenshot\":\"\",\"snippetName\":\"TinyCheckbox\",\"schema\":{\"componentName\":\"TinyCheckbox\",\"props\":{\"text\":\"复选框文案\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"checked\",\"label\":{\"text\":{\"zh_CN\":\"勾选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当前是否勾选\"},\"labelPosition\":\"left\"},{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"复选框的文本\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"边框\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示边框\"},\"labelPosition\":\"left\"},{\"property\":\"false-label\",\"label\":{\"text\":{\"zh_CN\":\"未选中的值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"没有选中时的值\"},\"labelPosition\":\"left\"},{\"property\":\"true-label\",\"label\":{\"text\":{\"zh_CN\":\"选择时的值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"选中时的值\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"勾选值改变后将触发\"},\"description\":{\"zh_CN\":\"勾选值改变后将触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"border\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (34, '3.20.0', '{\"zh_CN\":\"复选按钮\"}', 'TinyCheckboxButton', 'checkboxbutton', '用于配置不同场景的选项,提供用户可在一组选项中进行多选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CheckboxButton\",\"destructuring\":true}', 'component', NULL, 1, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"checked\",\"label\":{\"text\":{\"zh_CN\":\"勾选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当前是否勾选\"},\"labelPosition\":\"left\"},{\"property\":\"text\",\"label\":{\"text\":{\"zh_CN\":\"文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"按钮文本\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"勾选值改变后将触发\"},\"description\":{\"zh_CN\":\"勾选值改变后将触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"array\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"text\",\"size\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (35, '3.20.0', '{\"zh_CN\":\"复选按钮组\"}', 'TinyCheckboxGroup', 'checkboxgroup', '用于配置不同场景的选项,提供用户可在一组选项中进行多选', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CheckboxGroup\",\"destructuring\":true}', 'component', 'form', 2, '[{\"name\":{\"zh_CN\":\"复选框组\"},\"icon\":\"checkboxs\",\"screenshot\":\"\",\"snippetName\":\"TinyCheckboxGroup\",\"schema\":{\"componentName\":\"TinyCheckboxGroup\",\"props\":{\"modelValue\":[\"name1\",\"name2\"],\"type\":\"checkbox\",\"options\":[{\"text\":\"复选框1\",\"label\":\"name1\"},{\"text\":\"复选框2\",\"label\":\"name2\"},{\"text\":\"复选框3\",\"label\":\"name3\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"dataType\":\"Array\"}},\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"options\",\"label\":{\"text\":{\"zh_CN\":\"选项列表\"}},\"defaultValue\":[{\"label\":\"标签2\"},{\"label\":\"标签2\"}],\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"checkbox组件列表\"},\"labelPosition\":\"top\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"ButtonGroupConfigurator\",\"props\":{\"options\":[{\"label\":\"button\",\"value\":\"button\"},{\"label\":\"checkbox\",\"value\":\"checkbox\"}]}},\"description\":{\"zh_CN\":\"checkbox组件类型(button/checkbox),该属性的默认值为 checkbox,配合 options 属性一起使用\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"勾选值改变后将触发\"},\"description\":{\"zh_CN\":\"勾选值改变后将触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中项的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"array\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"type\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (36, '3.20.0', '{\"zh_CN\":\"对话框\"}', 'TinyDialogBox', 'dialogbox', '模态对话框,在浮层中显示,引导用户进行相关操作。', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"DialogBox\",\"destructuring\":true}', 'component', 'data-display', 4, '[{\"name\":{\"zh_CN\":\"对话框\"},\"icon\":\"dialogbox\",\"screenshot\":\"\",\"snippetName\":\"TinyDialogBox\",\"schema\":{\"componentName\":\"TinyDialogBox\",\"props\":{\"visible\":true,\"show-close\":true,\"title\":\"dialogBox title\"},\"children\":[{\"componentName\":\"div\"}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"弹出框标题\"},\"labelPosition\":\"left\"},{\"property\":\"visible\",\"label\":{\"text\":{\"zh_CN\":\"显示与隐藏\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"控制弹出框显示与关闭\"},\"labelPosition\":\"left\"},{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"弹出框的宽度\"},\"labelPosition\":\"left\"},{\"property\":\"draggable\",\"label\":{\"text\":{\"zh_CN\":\"可拖拽\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否开启弹窗的拖拽功能,默认值为 false 。\"},\"labelPosition\":\"left\"},{\"property\":\"center\",\"label\":{\"text\":{\"zh_CN\":\"居中\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"弹出框的头部与底部内容会自动居中\"},\"labelPosition\":\"left\"},{\"property\":\"dialog-class\",\"label\":{\"text\":{\"zh_CN\":\"自定义类名\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自定义配置弹窗类名\"},\"labelPosition\":\"left\"},{\"property\":\"append-to-body\",\"label\":{\"text\":{\"zh_CN\":\"插入到Body\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"DialogBox 本身是否插入到 body 上,嵌套的 Dialog 必须指定该属性并赋值为 true\"},\"labelPosition\":\"left\"},{\"property\":\"show-close\",\"label\":{\"text\":{\"zh_CN\":\"关闭按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示关闭按钮,默认值为 true 。\"},\"labelPosition\":\"left\"}]}],\"selector\":\".TinyDialogBox\",\"events\":{\"onClose\":{\"label\":{\"zh_CN\":\"关闭弹窗时触发\"},\"description\":{\"zh_CN\":\"Dialog 关闭的回调\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:visible\":{\"label\":{\"zh_CN\":\"双向绑定的状态改变时触发\"},\"description\":{\"zh_CN\":\"显示或隐藏的状态值,发生改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"boolean\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的显示或隐藏的状态值\"}}],\"returns\":{}},\"defaultValue\":\"\"}},\"slots\":{\"title\":{\"label\":{\"zh_CN\":\"标题区\"},\"description\":{\"zh_CN\":\"Dialog 标题区的内容\"}},\"footer\":{\"label\":{\"zh_CN\":\"按钮操作区\"},\"description\":{\"zh_CN\":\"Dialog 按钮操作区的内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":true,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\".tiny-dialog-box\",\"shortcuts\":{\"properties\":[\"visible\",\"width\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (37, '3.20.0', '{\"zh_CN\":\"标签页\"}', 'TinyTabs', 'tabs', '分隔内容上有关联但属于不同类别的数据集合', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Tabs\",\"destructuring\":true}', 'component', 'navigation', 10, '[{\"name\":{\"zh_CN\":\"标签页\"},\"icon\":\"tabs\",\"screenshot\":\"\",\"snippetName\":\"TinyTabs\",\"schema\":{\"componentName\":\"TinyTabs\",\"props\":{\"modelValue\":\"first\"},\"children\":[{\"componentName\":\"TinyTabItem\",\"props\":{\"title\":\"标签页1\",\"name\":\"first\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"style\":\"margin:10px 0 0 30px\"}}]},{\"componentName\":\"TinyTabItem\",\"props\":{\"title\":\"标签页2\",\"name\":\"second\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"style\":\"margin:10px 0 0 30px\"}}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"tabs\",\"label\":{\"text\":{\"zh_CN\":\"选项卡\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"\",\"cols\":12,\"bindState\":false,\"widget\":{\"component\":\"ContainerConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"tabs 选项卡\"},\"labelPosition\":\"none\"},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"绑定值,选中选项卡的 name\"},\"labelPosition\":\"left\"},{\"property\":\"with-add\",\"label\":{\"text\":{\"zh_CN\":\"标签新增\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标签是否可增加\"},\"labelPosition\":\"left\"},{\"property\":\"with-close\",\"label\":{\"text\":{\"zh_CN\":\"可关闭\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标签是否可关闭\"},\"labelPosition\":\"left\"},{\"property\":\"tab-style\",\"label\":{\"text\":{\"zh_CN\":\"标签页样式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"card\",\"value\":\"card\"},{\"label\":\"border-card\",\"value\":\"border-card\"}]}},\"description\":{\"zh_CN\":\"标签页样式\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"点击页签时触发事件\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"component\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前点击的页签对象\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onEdit\":{\"label\":{\"zh_CN\":\"点击新增按钮或关闭按钮或者编辑按钮后触发\"},\"description\":{\"zh_CN\":\"点击新增按钮或关闭按钮或者编辑按钮后触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"tab\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前操作的页签对象\"}},{\"name\":\"type\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前操作的类型(remove || add || edit)\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClose\":{\"label\":{\"zh_CN\":\"关闭页签时触发\"},\"description\":{\"zh_CN\":\"关闭页签时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"name\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"页签名称\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"clickCapture\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyTabItem\"],\"parentWhitelist\":[],\"descendantBlacklist\":[],\"ancestorWhitelist\":[]},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"size\",\"tab-style\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:14', '1', '2025-08-03 19:54:14'); +INSERT INTO `t_component` VALUES (38, '3.20.0', '{\"zh_CN\":\"tab页签\"}', 'TinyTabItem', 'tabitem', 'tab 标签页', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"TabItem\",\"destructuring\":true}', 'component', NULL, 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"唯一标识\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"唯一标识\"}},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"标题\"}}]}],\"events\":{},\"slots\":{\"title\":{\"label\":{\"zh_CN\":\"标题\"},\"description\":{\"zh_CN\":\"自定义标题\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":[\"TinyTab\"],\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"name\",\"title\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (39, '3.20.0', '{\"zh_CN\":\"面包屑\"}', 'TinyBreadcrumb', 'breadcrumb', '告诉访问者他们目前在网站中的位置以及如何返回', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Breadcrumb\",\"destructuring\":true}', 'component', 'navigation', 1, '[{\"name\":{\"zh_CN\":\"面包屑\"},\"icon\":\"breadcrumb\",\"screenshot\":\"\",\"snippetName\":\"TinyBreadcrumb\",\"schema\":{\"componentName\":\"TinyBreadcrumb\",\"props\":{\"options\":[{\"to\":\"{ path: \'/\' }\",\"label\":\"首页\"},{\"to\":\"{ path: \'/breadcrumb\' }\",\"label\":\"产品\"},{\"replace\":\"true\",\"label\":\"软件\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"separator\",\"label\":{\"text\":{\"zh_CN\":\"分隔符\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自定义分隔符\"},\"labelPosition\":\"left\"},{\"property\":\"options\",\"label\":{\"text\":{\"zh_CN\":\"配置数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"单独使用 Breadcrumb,通过 option 配置生成面包屑\"},\"labelPosition\":\"top\"},{\"property\":\"textField\",\"label\":{\"text\":{\"zh_CN\":\"键值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"指定面包屑的显示键值,结合 options 使用\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onSelect\":{\"label\":{\"zh_CN\":\"选择 breadcrumb 时触发\"},\"description\":{\"zh_CN\":\"选择 breadcrumb 时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"clickCapture\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":[\"TinyBreadcrumbItem\"],\"parentWhitelist\":[],\"descendantBlacklist\":[],\"ancestorWhitelist\":[]},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"separator\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (40, '3.20.0', '{\"zh_CN\":\"面包屑项\"}', 'TinyBreadcrumbItem', 'breadcrumb', '', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"BreadcrumbItem\",\"destructuring\":true}', 'component', NULL, 1, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"to\",\"label\":{\"text\":{\"zh_CN\":\"路由跳转\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"路由跳转对象,同 vue-router 的 to\"}}]}],\"slots\":{\"default\":{\"label\":{\"zh_CN\":\"面包屑项标签\"},\"description\":{\"zh_CN\":\"面包屑项\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":[\"TinyBreadcrumb\"],\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"to\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (41, '3.20.0', '{\"zh_CN\":\"折叠面板\"}', 'TinyCollapse', 'collapse', '内容区可指定动态页面或自定义 html 等,支持展开收起操作', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Collapse\",\"destructuring\":true}', 'component', 'data-display', 3, '[{\"name\":{\"zh_CN\":\"折叠面板\"},\"icon\":\"collapse\",\"screenshot\":\"\",\"snippetName\":\"TinyCollapse\",\"schema\":{\"componentName\":\"TinyCollapse\",\"props\":{\"modelValue\":\"collapse1\"},\"children\":[{\"componentName\":\"TinyCollapseItem\",\"props\":{\"name\":\"collapse1\",\"title\":\"折叠项1\"},\"children\":[{\"componentName\":\"div\"}]},{\"componentName\":\"TinyCollapseItem\",\"props\":{\"name\":\"collapse2\",\"title\":\"折叠项2\"},\"children\":[{\"componentName\":\"div\"}]},{\"componentName\":\"TinyCollapseItem\",\"props\":{\"name\":\"collapse3\",\"title\":\"折叠项3\"},\"children\":[{\"componentName\":\"div\"}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"当前激活面板\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定当前激活的面板\"}}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"激活面板改变时触发\"},\"description\":{\"zh_CN\":\"当前激活面板改变时触发(如果是手风琴模式,参数 activeNames 类型为string,否则为array)\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"data\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前激活面板的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前激活面板的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (42, '3.20.0', '{\"zh_CN\":\"折叠面板项\"}', 'TinyCollapseItem', 'collapseitem', '内容区可指定动态页面或自定义 html 等,支持展开收起操作', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"CollapseItem\",\"destructuring\":true}', 'component', NULL, 2, NULL, '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"name\",\"label\":{\"text\":{\"zh_CN\":\"唯一标识符\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"唯一标识符: String | Number\"},\"labelPosition\":\"left\"},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"面板标题\"},\"labelPosition\":\"left\"}]}],\"events\":{},\"slots\":{\"title\":{\"label\":{\"zh_CN\":\"标题\"},\"description\":{\"zh_CN\":\"自定义标题\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"label-width\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (43, '3.20.0', '{\"zh_CN\":\"表格\"}', 'TinyGrid', 'grid', '提供了非常强大数据表格功能,可以展示数据列表,可以对数据列表进行选择、编辑等', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Grid\",\"destructuring\":true}', 'component', 'table', 2, '[{\"name\":{\"zh_CN\":\"表格\"},\"icon\":\"grid\",\"screenshot\":\"\",\"snippetName\":\"tinyGrid\",\"schema\":{\"componentName\":\"TinyGrid\",\"props\":{\"editConfig\":{\"trigger\":\"click\",\"mode\":\"cell\",\"showStatus\":true},\"columns\":[{\"type\":\"index\",\"width\":60},{\"type\":\"selection\",\"width\":60},{\"field\":\"employees\",\"title\":\"员工数\"},{\"field\":\"created_date\",\"title\":\"创建日期\"},{\"field\":\"city\",\"title\":\"城市\"}],\"data\":[{\"id\":\"1\",\"name\":\"GFD科技有限公司\",\"city\":\"福州\",\"employees\":800,\"created_date\":\"2014-04-30 00:56:00\",\"boole\":false},{\"id\":\"2\",\"name\":\"WWW科技有限公司\",\"city\":\"深圳\",\"employees\":300,\"created_date\":\"2016-07-08 12:36:22\",\"boole\":true}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础属性\"},\"description\":{\"zh_CN\":\"基础属性\"},\"content\":[{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"表格数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"onChange\":\"this.delProp(\'fetchData\')\",\"description\":{\"zh_CN\":\"设置表格的数据\"},\"labelPosition\":\"top\"},{\"property\":\"columns\",\"label\":{\"text\":{\"zh_CN\":\"表格列\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"properties\":[{\"label\":{\"zh_CN\":\"默认分组\"},\"content\":[{\"property\":\"title\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"列标题\"}},\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}}},{\"property\":\"field\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"列键值\"}},\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}}},{\"property\":\"sortable\",\"type\":\"boolean\",\"defaultValue\":true,\"label\":{\"text\":{\"zh_CN\":\"是否排序\"}},\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"labelPosition\":\"left\"},{\"property\":\"width\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"列宽\"}},\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}}},{\"property\":\"formatText\",\"type\":\"string\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"内置渲染器\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"整数\",\"value\":\"integer\"},{\"label\":\"小数\",\"value\":\"number\"},{\"label\":\"金额\",\"value\":\"money\"},{\"label\":\"百分比\",\"value\":\"rate\"},{\"label\":\"布尔\",\"value\":\"boole\"},{\"label\":\"年月日\",\"value\":\"date\"},{\"label\":\"年月日时分\",\"value\":\"dateTime\"},{\"label\":\"时间\",\"value\":\"time\"},{\"label\":\"省略\",\"value\":\"ellipsis\"}]}}},{\"property\":\"renderer\",\"type\":\"object\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"渲染函数\"}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"dataType\":\"JSFunction\"}}},{\"property\":\"slots\",\"type\":\"object\",\"defaultValue\":\"\",\"label\":{\"text\":{\"zh_CN\":\"插槽\"}},\"labelPosition\":\"none\",\"widget\":{\"component\":\"JsSlotConfigurator\",\"props\":{\"slots\":[\"header\",\"default\"]}}},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"列类型\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"索引列\",\"value\":\"index\"},{\"label\":\"单选列\",\"value\":\"radio\"},{\"label\":\"多选列\",\"value\":\"selection\"},{\"label\":\"展开列\",\"value\":\"expand\"}],\"clearable\":true}},\"description\":{\"zh_CN\":\"设置内置列的类型,该属性的可选值为 index(序号)/ selection(复选框)/ radio(单选框)/ expand(展开行)\"},\"labelPosition\":\"left\"},{\"property\":\"editor\",\"label\":{\"text\":{\"zh_CN\":\"编辑配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"单元格编辑渲染配置项,也可以是函数 Function(h, params)\"}},{\"property\":\"filter\",\"label\":{\"text\":{\"zh_CN\":\"筛选配置\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"设置表格列的筛选配置信息。默认值为 false 不配置筛选信息\"}},{\"property\":\"showOverflow\",\"label\":{\"text\":{\"zh_CN\":\"内容超出部分省略号配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"只显示省略号\",\"value\":\"ellipsis\"},{\"label\":\"显示为原生 title\",\"value\":\"title\"},{\"label\":\"显示为 tooltip 提示\",\"value\":\"tooltip\"}],\"clearable\":true}},\"description\":{\"zh_CN\":\"设置内置列的内容超出部分显示省略号配置,该属性的可选值为 ellipsis(只显示省略号)/ title(显示为原生 title)/ tooltip(显示为 tooltip 提示)\"},\"labelPosition\":\"top\"}]}],\"widget\":{\"component\":\"ArrayItemConfigurator\",\"props\":{\"type\":\"object\",\"textField\":\"title\",\"language\":\"json\",\"buttonText\":\"编辑列配置\",\"title\":\"编辑列配置\",\"expand\":true}},\"description\":{\"zh_CN\":\"表格列的配置信息\"},\"labelPosition\":\"left\"},{\"property\":\"fetchData\",\"label\":{\"text\":{\"zh_CN\":\"服务端查询\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"onChange\":\"function () { this.delProp(\'data\') } \",\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"name\":\"fetchData\",\"dataType\":\"JSExpression\"}},\"description\":{\"zh_CN\":\"服务端数据查询方法\"},\"labelPosition\":\"top\"},{\"property\":\"pager\",\"label\":{\"text\":{\"zh_CN\":\"分页配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"defaultValue\":{\"attrs\":{\"currentPage\":1}},\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"name\":\"pager\",\"dataType\":\"JSExpression\"}},\"description\":{\"zh_CN\":\"分页配置,需结合fetchData使用\"},\"labelPosition\":\"top\"},{\"property\":\"resizable\",\"label\":{\"text\":{\"zh_CN\":\"调整列宽\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否允许调整列宽\"},\"labelPosition\":\"left\"},{\"property\":\"row-id\",\"label\":{\"text\":{\"zh_CN\":\"行数据主键\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"placeholder\":\"比如:id\"}},\"description\":{\"zh_CN\":\"自定义行数据唯一主键的字段名(行数据必须要有唯一主键,默认自动生成)\"},\"labelPosition\":\"left\"},{\"property\":\"select-config\",\"label\":{\"text\":{\"zh_CN\":\"行复选框配置\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"dataType\":\"JSExpression\"}},\"description\":{\"zh_CN\":\"表格行数据复选框配置项\"}},{\"property\":\"edit-rules\",\"label\":{\"text\":{\"zh_CN\":\"校验规则\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格校验规则配置项\"},\"labelPosition\":\"top\"},{\"property\":\"edit-config\",\"label\":{\"text\":{\"zh_CN\":\"编辑配置项\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格编辑配置项\"},\"labelPosition\":\"top\"},{\"property\":\"expand-config\",\"label\":{\"text\":{\"zh_CN\":\"展开行配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"展开行配置项\"},\"labelPosition\":\"top\"},{\"property\":\"sortable\",\"label\":{\"text\":{\"zh_CN\":\"可排序\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否允许列数据排序。默认为 true 可排序\"},\"labelPosition\":\"left\"}]},{\"label\":{\"zh_CN\":\"其他\"},\"description\":{\"zh_CN\":\"其他属性\"},\"content\":[{\"property\":\"auto-resize\",\"label\":{\"text\":{\"zh_CN\":\"响应式监听\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"表格属性设置 autoResize 属性开启响应式表格宽高的同时,将高度height设置为auto就可以自动跟随父容器高度。\"},\"labelPosition\":\"left\"},{\"property\":\"border\",\"label\":{\"text\":{\"zh_CN\":\"边框\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否带有纵向边框\"},\"labelPosition\":\"left\"},{\"property\":\"seq-serial\",\"label\":{\"text\":{\"zh_CN\":\"行号连续\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置行序号是否连续,开启分页时有效,该属性的默认值为 false\"},\"labelPosition\":\"left\"},{\"property\":\"highlight-current-row\",\"label\":{\"text\":{\"zh_CN\":\"高亮当前行\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"高亮当前行\"},\"labelPosition\":\"left\"},{\"property\":\"highlight-hover-row\",\"label\":{\"text\":{\"zh_CN\":\"移入行高亮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"鼠标移到行是否要高亮显示\"},\"labelPosition\":\"left\"},{\"property\":\"row-class-name\",\"label\":{\"text\":{\"zh_CN\":\"设置行高亮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"给行附加 className,也可以是函数 Function({seq, row, rowIndex, $rowIndex})\"},\"labelPosition\":\"top\"},{\"property\":\"max-height\",\"label\":{\"text\":{\"zh_CN\":\"内容最大高度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置表格内容区域(不含表格头部,底部)的最大高度。\"}},{\"property\":\"row-span\",\"label\":{\"text\":{\"zh_CN\":\"行合并\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置行合并,该属性仅适用于普通表格,不可与 tree-config 同时使用\"},\"labelPosition\":\"top\"}]}],\"events\":{\"onFilterChange\":{\"label\":{\"zh_CN\":\"筛选条件改变时触发改事件\"},\"description\":{\"zh_CN\":\"配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"{$table,filters} 包含 table 实例对象和过滤条件的对象\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onSortChange\":{\"label\":{\"zh_CN\":\"点击列头,执行数据排序前触发的事件\"},\"description\":{\"zh_CN\":\"配置 remote-filter 开启服务端过滤,服务端过滤会调用表格 fetch-data 进行查询,filter-change 服务端过滤后触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"{$table,filters} 包含 table 实例对象和过滤条件的对象\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onSelectAll\":{\"label\":{\"zh_CN\":\"当手动勾选全选时触发的事件\"},\"description\":{\"zh_CN\":\"只对 type=selection 有效,当手动勾选全选时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" 包含 table 实例对象\"}},{\"name\":\"checked\",\"type\":\"boolean\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"勾选状态\"}},{\"name\":\"selction\",\"type\":\"Array\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"选中的表格数据数组\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onSelectChange\":{\"label\":{\"zh_CN\":\"手动勾选并且值发生改变时触发的事件\"},\"description\":{\"zh_CN\":\"只对 type=selection 有效,当手动勾选并且值发生改变时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" table 实例对象\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" 原生 Event\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onToggleExpandChange\":{\"label\":{\"zh_CN\":\"当行展开或收起时会触发该事件\"},\"description\":{\"zh_CN\":\"当行展开或收起时会触发该事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"table\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"{$table,row,rowIndex} 包含 table 实例对象和当前行数据的对象\"}},{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\" 原生 Event\"}}],\"returns\":{}},\"defaultValue\":\"function onClick(e) {}\"},\"onCurrentChange\":{\"label\":{\"zh_CN\":\"行点击时触发\"},\"description\":{\"zh_CN\":\"行点击时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}},\"shortcuts\":{\"properties\":[\"sortable\",\"columns\"]},\"contentMenu\":{\"actions\":[\"create symbol\"]},\"onBeforeMount\":\"console.log(\'table on load\'); this.pager = source.pager; this.fetchData = source.fetchData; this.data = source.data ;this.columns = source.columns\"}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"sortable\",\"columns\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (44, '3.20.0', '{\"zh_CN\":\"表格行\"}', 'TinyGridColumn', 'grid', '提供了非常强大数据表格功能,可以展示数据列表,可以对数据列表进行选择、编辑等', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"TinyGridColumn\",\"destructuring\":true}', 'component', NULL, 2, NULL, '{\"properties\":[],\"events\":{},\"shortcuts\":{},\"contentMenu\":{\"actions\":[\"create symbol\"]}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (45, '3.20.0', '{\"zh_CN\":\"分页\"}', 'TinyPager', 'pager', '当数据量过多时,使用分页分解数据,常用于 Grid 和 Repeater 组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Pager\",\"destructuring\":true}', 'component', 'table', 1, '[{\"name\":{\"zh_CN\":\"分页\"},\"icon\":\"pager\",\"screenshot\":\"\",\"snippetName\":\"TinyPager\",\"schema\":{\"componentName\":\"TinyPager\",\"props\":{\"layout\":\"total, sizes, prev, pager, next\",\"total\":100,\"pageSize\":10,\"currentPage\":1}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"currentPage\",\"label\":{\"text\":{\"zh_CN\":\"当前页数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当前页数,支持 .sync 修饰符\"},\"labelPosition\":\"left\"},{\"property\":\"pageSize\",\"label\":{\"text\":{\"zh_CN\":\"每页条数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"每页显示条目个数\"},\"labelPosition\":\"left\"},{\"property\":\"pageSizes\",\"label\":{\"text\":{\"zh_CN\":\"可选每页条数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置可选择的每页显示条数\"}},{\"property\":\"total\",\"label\":{\"text\":{\"zh_CN\":\"总条数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"数据总条数\"},\"labelPosition\":\"left\"},{\"property\":\"layout\",\"label\":{\"text\":{\"zh_CN\":\"布局\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"defaultValue\":\"total,sizes,prev, pager, next\",\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"type\":\"textarea\"}},\"description\":{\"zh_CN\":\"组件布局,子组件名用逗号分隔\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onCurrentChange \":{\"label\":{\"zh_CN\":\"切换页码时触发\"},\"description\":{\"zh_CN\":\"切换页码时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onPrevClick \":{\"label\":{\"zh_CN\":\"点击上一页按钮时触发\"},\"description\":{\"zh_CN\":\"点击上一页按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"page\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页的页码值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onNextClick\":{\"label\":{\"zh_CN\":\"点击下一页按钮时触发\"},\"description\":{\"zh_CN\":\"点击上一页按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"page\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页的页码值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"currentPage\",\"total\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (46, '3.20.0', '{\"zh_CN\":\"弹出编辑\"}', 'TinyPopeditor', 'popEditor', '该组件只能在弹出的面板中选择数据,不能手动输入数据;弹出面板中显示为 Tree 组件或者 Grid 组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Popeditor\",\"destructuring\":true}', 'component', 'data-display', 6, '[{\"name\":{\"zh_CN\":\"弹出编辑\"},\"icon\":\"popeditor\",\"screenshot\":\"\",\"snippetName\":\"TinyPopeditor\",\"schema\":{\"componentName\":\"TinyPopeditor\",\"props\":{\"modelValue\":\"\",\"placeholder\":\"请选择\",\"grid-op\":{\"columns\":[{\"field\":\"id\",\"title\":\"ID\",\"width\":40},{\"field\":\"name\",\"title\":\"名称\",\"showOverflow\":\"tooltip\"},{\"field\":\"province\",\"title\":\"省份\",\"width\":80},{\"field\":\"city\",\"title\":\"城市\",\"width\":80}],\"data\":[{\"id\":\"1\",\"name\":\"GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司GFD科技有限公司\",\"city\":\"福州\",\"province\":\"福建\"},{\"id\":\"2\",\"name\":\"WWW科技有限公司\",\"city\":\"深圳\",\"province\":\"广东\"},{\"id\":\"3\",\"name\":\"RFV有限责任公司\",\"city\":\"中山\",\"province\":\"广东\"},{\"id\":\"4\",\"name\":\"TGB科技有限公司\",\"city\":\"龙岩\",\"province\":\"福建\"},{\"id\":\"5\",\"name\":\"YHN科技有限公司\",\"city\":\"韶关\",\"province\":\"广东\"},{\"id\":\"6\",\"name\":\"WSX科技有限公司\",\"city\":\"黄冈\",\"province\":\"武汉\"}]}}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"show-clear-btn\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"auto-lookup\",\"label\":{\"text\":{\"zh_CN\":\"自动请求数据\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"defaultValue\":true,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"初始化时是否自动请求数据,默认 true\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出面板的宽度(单位像素)\"},\"labelPosition\":\"left\"},{\"property\":\"conditions\",\"label\":{\"text\":{\"zh_CN\":\"过滤条件\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当弹出面板配置的是表格时,设置弹出面板中的过滤条件\"},\"labelPosition\":\"top\"},{\"property\":\"grid-op\",\"label\":{\"text\":{\"zh_CN\":\"面板表格配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出面板中表格组件的配置信息\"}},{\"property\":\"pager-op\",\"label\":{\"text\":{\"zh_CN\":\"分页配置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出编辑框中分页配置\"},\"labelPosition\":\"top\"},{\"property\":\"multi\",\"label\":{\"text\":{\"zh_CN\":\"多选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置弹出面板中的数据是否可多选\"},\"labelPosition\":\"left\"},{\"property\":\"show-pager\",\"label\":{\"text\":{\"zh_CN\":\"启用分页\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"当 popseletor 为 grid 时才能生效,配置为 true 后还需配置 pagerOp 属性\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"选中值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中项的值\"}},{\"name\":\"value\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中对象\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"当前选中的值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的当前选中值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClose\":{\"label\":{\"zh_CN\":\"弹框关闭时触发的事件\"},\"description\":{\"zh_CN\":\"弹框关闭时触发的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"},\"onPageChange\":{\"label\":{\"zh_CN\":\"分页切换事件\"},\"description\":{\"zh_CN\":\"表格模式下分页切换事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"String\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前页码数\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"modelValue\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (47, '3.20.0', '{\"zh_CN\":\"树\"}', 'TinyTree', 'tree', '可进行展示有父子层级的数据,支持选择,异步加载等功能。但不推荐用它来展示菜单,展示菜单推荐使用树菜单', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Tree\",\"destructuring\":true}', 'component', 'data-display', 12, '[{\"name\":{\"zh_CN\":\"树\"},\"icon\":\"tree\",\"screenshot\":\"\",\"snippetName\":\"TinyTree\",\"schema\":{\"componentName\":\"TinyTree\",\"props\":{\"data\":[{\"label\":\"一级 1\",\"children\":[{\"label\":\"二级 1-1\",\"children\":[{\"label\":\"三级 1-1-1\"}]}]},{\"label\":\"一级 2\",\"children\":[{\"label\":\"二级 2-1\",\"children\":[{\"label\":\"三级 2-1-1\"}]},{\"label\":\"二级 2-2\",\"children\":[{\"label\":\"三级 2-2-1\"}]}]}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"show-checkbox\",\"label\":{\"text\":{\"zh_CN\":\"多选\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置接口是否可以多选\"},\"labelPosition\":\"left\"},{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"数据源\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":[{\"label\":\"一级 1\",\"children\":[{\"label\":\"二级 1-1\"}]}],\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"可配置静态数据源和动态数据源\"},\"labelPosition\":\"top\"},{\"property\":\"node-key\",\"label\":{\"text\":{\"zh_CN\":\"唯一标识\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点唯一标识属性名称\"},\"labelPosition\":\"left\"},{\"property\":\"render-content\",\"label\":{\"text\":{\"zh_CN\":\"渲染函数\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"disabled\":true,\"placeholder\":\"请使用变量绑定来绑定函数\"}},\"description\":{\"zh_CN\":\"树节点的内容区的渲染函数\"}},{\"property\":\"icon-trigger-click-node\",\"label\":{\"text\":{\"zh_CN\":\"触发NodeClick事件\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"点击图标展开节点时是否触发 node-click 事件\"},\"labelPosition\":\"left\"},{\"property\":\"expand-icon\",\"label\":{\"text\":{\"zh_CN\":\"展开图标\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点展开图标\"},\"labelPosition\":\"top\"},{\"property\":\"shrink-icon\",\"label\":{\"text\":{\"zh_CN\":\"收缩图标\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点收缩的图标\"},\"labelPosition\":\"top\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"check-on-click-node\",\"label\":{\"text\":{\"zh_CN\":\"点击节点选中\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否在点击节点的时候选中节点,默认值为 false,即只有在点击复选框时才会选中节点\"},\"labelPosition\":\"left\"},{\"property\":\"filter-node-method\",\"label\":{\"text\":{\"zh_CN\":\"筛选函数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点筛选函数\"},\"labelPosition\":\"top\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onCheck\":{\"label\":{\"zh_CN\":\"勾选节点后的事件\"},\"description\":{\"zh_CN\":\"勾选节点后的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"data\",\"type\":\"object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中节点信息\"}},{\"name\":\"currentNode\",\"type\":\"object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onNodeClick\":{\"label\":{\"zh_CN\":\"点击节点后的事件\"},\"description\":{\"zh_CN\":\"点击节点后的事件\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"data\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前选中节点信息\"}},{\"name\":\"node\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"树组件目前的选中状态信息,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性\"}},{\"name\":\"vm\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"树组件实例\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"data\",\"show-checkbox\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (48, '3.20.0', '{\"zh_CN\":\"时间线\"}', 'TinyTimeLine', 'timeline', 'TimeLine 时间线', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"TimeLine\",\"destructuring\":true}', 'component', 'navigation', 3, '[{\"name\":{\"zh_CN\":\"时间线\"},\"icon\":\"timeline\",\"screenshot\":\"\",\"snippetName\":\"TinyTimeLine\",\"schema\":{\"componentName\":\"TinyTimeLine\",\"props\":{\"active\":\"2\",\"data\":[{\"name\":\"已下单\"},{\"name\":\"运输中\"},{\"name\":\"已签收\"}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"vertical\",\"type\":\"Boolean\",\"defaultValue\":{\"type\":\"i18n\",\"zh_CN\":\"垂直布局\",\"en_US\":\"layout\",\"key\":\"\"},\"label\":{\"text\":{\"zh_CN\":\"垂直布局\"}},\"cols\":12,\"rules\":[],\"hidden\":false,\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"节点和文字垂直布局\"},\"labelPosition\":\"left\"},{\"property\":\"active\",\"label\":{\"text\":{\"zh_CN\":\"选中值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"步骤条的选中步骤值\"},\"labelPosition\":\"left\"},{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"步骤条数据\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":[{\"name\":\"配置基本信息\",\"status\":\"ready\"},{\"name\":\"配置报价\",\"status\":\"wait\"},{\"name\":\"完成报价\",\"status\":\"wait\"}],\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"时间线步骤条数据\"},\"labelPosition\":\"top\"}]}],\"events\":{\"onClick\":{\"label\":{\"zh_CN\":\"节点的点击时触发\"},\"description\":{\"zh_CN\":\"节点的点击时触发的回调函数\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"type\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"点击节点的下标\"}},{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"当前节点对象:{ name: 节点名称, time: 时间 }\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"active\",\"data\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (49, '3.20.0', '{\"zh_CN\":\"文字提示框\"}', 'TinyTooltip', 'tooltip', '动态显示提示信息,一般通过鼠标事件进行响应;提供 warning、error、info、success 四种类型显示不同类别的信', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Tooltip\",\"destructuring\":true}', 'component', 'data-display', 11, '[{\"name\":{\"zh_CN\":\"文字提示框\"},\"icon\":\"tooltip\",\"screenshot\":\"\",\"snippetName\":\"TinyTooltip\",\"schema\":{\"componentName\":\"TinyTooltip\",\"props\":{\"content\":\"Top Left 提示文字\",\"placement\":\"top-start\",\"manual\":true,\"modelValue\":true},\"children\":[{\"componentName\":\"span\",\"children\":[{\"componentName\":\"div\",\"props\":{}}]},{\"componentName\":\"Template\",\"props\":{\"slot\":\"content\"},\"children\":[{\"componentName\":\"span\",\"children\":[{\"componentName\":\"div\",\"props\":{\"placeholder\":\"提示内容\"}}]}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"placement\",\"label\":{\"text\":{\"zh_CN\":\"提示位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"top\",\"value\":\"top\"},{\"label\":\"top-start\",\"value\":\"top-start\"},{\"label\":\"top-end\",\"value\":\"top-end\"},{\"label\":\"bottom\",\"value\":\"bottom\"},{\"label\":\"bottom-start\",\"value\":\"bottom-start\"},{\"label\":\"bottom-end\",\"value\":\"bottom-end\"},{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"left-start\",\"value\":\"left-start\"},{\"label\":\"left-end\",\"value\":\"left-end\"},{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"right-start\",\"value\":\"right-start\"},{\"label\":\"right-end\",\"value\":\"right-end\"}]}},\"description\":{\"zh_CN\":\"Tooltip 的出现位置\"},\"labelPosition\":\"left\"},{\"property\":\"content\",\"label\":{\"text\":{\"zh_CN\":\"内容\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"defaultValue\":\"提示信息\",\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"显示的内容,也可以通过 slot#content 传入 DOM\"},\"labelPosition\":\"left\"},{\"property\":\"render-content\",\"label\":{\"text\":{\"zh_CN\":\"渲染函数\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{\"disabled\":true,\"placeholder\":\"请使用变量绑定来绑定函数\"}},\"description\":{\"zh_CN\":\"自定义渲染函数,返回需要渲染的节点内容\"}},{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"是否可见\"}},\"defaultValue\":true,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"状态是否可见\"},\"labelPosition\":\"left\"},{\"property\":\"manual\",\"label\":{\"text\":{\"zh_CN\":\"手动控制\"}},\"defaultValue\":true,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"手动控制模式,设置为 true 后,mouseenter 和 mouseleave 事件将不会生效\"},\"labelPosition\":\"left\"}]}],\"events\":{},\"slots\":{\"content\":{\"label\":{\"zh_CN\":\"提示内容\"},\"description\":{\"zh_CN\":\"自定义提示内容\"}}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":true,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"disabled\",\"content\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (50, '3.20.0', '{\"zh_CN\":\"提示框\"}', 'TinyPopover', 'popover', 'Popover可通过对一个触发源操作触发弹出框,支持自定义弹出内容,延迟触发和渐变动画', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Popover\",\"destructuring\":true}', 'component', 'data-display', 7, '[{\"name\":{\"zh_CN\":\"提示框\"},\"icon\":\"popover\",\"screenshot\":\"\",\"snippetName\":\"TinyPopover\",\"schema\":{\"componentName\":\"TinyPopover\",\"props\":{\"width\":200,\"title\":\"弹框标题\",\"trigger\":\"manual\",\"modelValue\":true},\"children\":[{\"componentName\":\"Template\",\"props\":{\"slot\":\"reference\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"placeholder\":\"触发源\"}}]},{\"componentName\":\"Template\",\"props\":{\"slot\":\"default\"},\"children\":[{\"componentName\":\"div\",\"props\":{\"placeholder\":\"提示内容\"}}]}]}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定,手动控制是否可见的状态值\"},\"labelPosition\":\"left\"},{\"property\":\"placement\",\"label\":{\"text\":{\"zh_CN\":\"位置\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"top\",\"value\":\"top\"},{\"label\":\"top-start\",\"value\":\"top-start\"},{\"label\":\"top-end\",\"value\":\"top-end\"},{\"label\":\"bottom\",\"value\":\"bottom\"},{\"label\":\"bottom-start\",\"value\":\"bottom-start\"},{\"label\":\"bottom-end\",\"value\":\"bottom-end\"},{\"label\":\"left\",\"value\":\"left\"},{\"label\":\"left-start\",\"value\":\"left-start\"},{\"label\":\"left-end\",\"value\":\"left-end\"},{\"label\":\"right\",\"value\":\"right\"},{\"label\":\"right-start\",\"value\":\"right-start\"},{\"label\":\"right-end\",\"value\":\"right-end\"}]}},\"description\":{\"zh_CN\":\"提示框位置\"},\"labelPosition\":\"left\"},{\"property\":\"trigger\",\"label\":{\"text\":{\"zh_CN\":\"触发方式\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"click\",\"value\":\"click\"},{\"label\":\"focus\",\"value\":\"focus\"},{\"label\":\"hover\",\"value\":\"hover\"},{\"label\":\"manual\",\"value\":\"manual\"}]}},\"description\":{\"zh_CN\":\"触发方式,该属性的可选值为 click / focus / hover / manual,该属性的默认值为 click\"},\"labelPosition\":\"left\"},{\"property\":\"popper-class\",\"label\":{\"text\":{\"zh_CN\":\"自定义类\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"为 popper 添加类名\"},\"labelPosition\":\"left\"},{\"property\":\"visible-arrow\",\"label\":{\"text\":{\"zh_CN\":\"显示箭头\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示 Tooltip 箭头\"},\"labelPosition\":\"left\"},{\"property\":\"append-to-body\",\"label\":{\"text\":{\"zh_CN\":\"添加到body上\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"Popover弹窗是否添加到body上\"},\"labelPosition\":\"left\"},{\"property\":\"arrow-offset\",\"label\":{\"text\":{\"zh_CN\":\"箭头的位置偏移\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"箭头的位置偏移,该属性的默认值为 0\"}},{\"property\":\"close-delay\",\"label\":{\"text\":{\"zh_CN\":\"延迟隐藏\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"触发方式为 hover 时的隐藏延迟,单位为毫秒\"},\"labelPosition\":\"left\"},{\"property\":\"content\",\"label\":{\"text\":{\"zh_CN\":\"显示的内容\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"显示的内容,也可以通过 slot 传入 DOM\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"Popover 是否可用\"},\"labelPosition\":\"left\"},{\"property\":\"offset\",\"label\":{\"text\":{\"zh_CN\":\"位置偏移量\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"出现位置的偏移量\"},\"labelPosition\":\"left\"},{\"property\":\"open-delay\",\"label\":{\"text\":{\"zh_CN\":\"显示延迟\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"触发方式为 hover 时的显示延迟,单位为毫秒\"},\"labelPosition\":\"left\"},{\"property\":\"popper-options\",\"label\":{\"text\":{\"zh_CN\":\"弹出层参数\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"popper.js 的参数\"},\"labelPosition\":\"top\"},{\"property\":\"title\",\"label\":{\"text\":{\"zh_CN\":\"标题\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"提示内容标题\"},\"labelPosition\":\"left\"},{\"property\":\"transform-origin\",\"label\":{\"text\":{\"zh_CN\":\"旋转中心点\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"组件的旋转中心点,组件的旋转中心点\"},\"labelPosition\":\"left\"},{\"property\":\"transition\",\"label\":{\"text\":{\"zh_CN\":\"渐变动画\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"InputConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"该属性的默认值为 fade-in-linear\"},\"labelPosition\":\"left\"},{\"property\":\"width\",\"label\":{\"text\":{\"zh_CN\":\"宽度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"宽度\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"手动控制是否可见的状态值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"boolean\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的可见状态值\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"isPopper\":true,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"visible\",\"width\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:15', '1', '2025-08-03 19:54:15'); +INSERT INTO `t_component` VALUES (51, '3.20.0', '{\"zh_CN\":\"日期选择\"}', 'TinyDatePicker', 'datepick', '用于输入或选择日期', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"DatePicker\",\"destructuring\":true}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"日期选择\"},\"icon\":\"datepick\",\"screenshot\":\"\",\"snippetName\":\"TinyDatePicker\",\"schema\":{\"componentName\":\"TinyDatePicker\",\"props\":{\"placeholder\":\"请输入\",\"modelValue\":\"\"}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"type\",\"label\":{\"text\":{\"zh_CN\":\"类型\"}},\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"日期\",\"value\":\"date\"},{\"label\":\"日期时间\",\"value\":\"datetime\"},{\"label\":\"周\",\"value\":\"week\"},{\"label\":\"月份\",\"value\":\"month\"},{\"label\":\"年份\",\"value\":\"year\"}]}},\"description\":{\"zh_CN\":\"设置日期框的type属性\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"clearable\",\"label\":{\"text\":{\"zh_CN\":\"清除按钮\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示清除按钮\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"readonly\",\"label\":{\"text\":{\"zh_CN\":\"只读\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否只读\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"日期框尺寸。该属性的可选值为 medium / small / mini\"},\"labelPosition\":\"left\"}]},{\"name\":\"1\",\"label\":{\"zh_CN\":\"其他\"},\"content\":[{\"property\":\"maxlength\",\"label\":{\"text\":{\"zh_CN\":\"输入最大长度\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"设置 input 框的maxLength\"}},{\"property\":\"autofocus\",\"label\":{\"text\":{\"zh_CN\":\"聚焦\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"自动获取焦点\"},\"labelPosition\":\"left\"}],\"description\":{\"zh_CN\":\"\"}}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框改变后的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:16', '1', '2025-08-03 19:54:16'); +INSERT INTO `t_component` VALUES (52, '3.20.0', '{\"zh_CN\":\"数字输入框\"}', 'TinyNumeric', 'numeric', '通过鼠标或键盘输入字符', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"Numeric\",\"destructuring\":true}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"数字输入框\"},\"icon\":\"numeric\",\"screenshot\":\"\",\"snippetName\":\"TinyNumeric\",\"schema\":{\"componentName\":\"TinyNumeric\",\"props\":{\"allow-empty\":true,\"placeholder\":\"请输入\",\"controls-position\":\"right\",\"step\":1}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"placeholder\",\"label\":{\"text\":{\"zh_CN\":\"占位文本\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"输入框占位文本\"},\"labelPosition\":\"left\"},{\"property\":\"allow-empty\",\"label\":{\"text\":{\"zh_CN\":\"内容可清空\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否内容可清空\"},\"labelPosition\":\"left\"},{\"property\":\"disabled\",\"label\":{\"text\":{\"zh_CN\":\"禁用\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否禁用\"},\"labelPosition\":\"left\"},{\"property\":\"size\",\"label\":{\"text\":{\"zh_CN\":\"尺寸\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"medium\",\"value\":\"medium\"},{\"label\":\"small\",\"value\":\"small\"},{\"label\":\"mini\",\"value\":\"mini\"}]}},\"description\":{\"zh_CN\":\"输入框尺寸。该属性的可选值为 medium / small / mini\"},\"labelPosition\":\"left\"},{\"property\":\"controls\",\"label\":{\"text\":{\"zh_CN\":\"加减按钮\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否使用加减按钮\"},\"labelPosition\":\"left\"},{\"property\":\"controls-position\",\"label\":{\"text\":{\"zh_CN\":\"加减按钮位置\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"SelectConfigurator\",\"props\":{\"options\":[{\"label\":\"左右两侧\",\"value\":\"\"},{\"label\":\"只在右侧\",\"value\":\"right\"}]}},\"description\":{\"zh_CN\":\"加减按钮位置\"}},{\"property\":\"precision\",\"label\":{\"text\":{\"zh_CN\":\"精度\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"数值精度\"},\"labelPosition\":\"left\"},{\"property\":\"step\",\"label\":{\"text\":{\"zh_CN\":\"步长\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"步长\"},\"labelPosition\":\"left\"},{\"property\":\"max\",\"label\":{\"text\":{\"zh_CN\":\"最大数值\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"可输入的最大数值\"},\"labelPosition\":\"left\"},{\"property\":\"min\",\"label\":{\"text\":{\"zh_CN\":\"最小数值\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"cols\":12,\"widget\":{\"component\":\"NumberConfigurator\",\"props\":{\"allowEmpty\":true}},\"description\":{\"zh_CN\":\"可输入的最大数值\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框改变后的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onInput\":{\"label\":{\"zh_CN\":\"输入值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"输入框输入的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onUpdate:modelValue\":{\"label\":{\"zh_CN\":\"双向绑定的值改变时触发\"},\"description\":{\"zh_CN\":\"在 Input 输入值改变时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"双向绑定的值\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onBlur\":{\"label\":{\"zh_CN\":\"失去焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 失去焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onFocus\":{\"label\":{\"zh_CN\":\"获取焦点时触发\"},\"description\":{\"zh_CN\":\"在 Input 获取焦点时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"event\",\"type\":\"Object\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"原生 event\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onClear\":{\"label\":{\"zh_CN\":\"点击清空按钮时触发\"},\"description\":{\"zh_CN\":\"点击清空按钮时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":true,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:16', '1', '2025-08-03 19:54:16'); +INSERT INTO `t_component` VALUES (53, '3.20.0', '{\"zh_CN\":\"穿梭框\"}', 'TinyTransfer', 'transfer', '穿梭框,实现左右表格数据的双向交换的组件', '', '', '', '', 'proCode', '{\"package\":\"@opentiny/vue\",\"exportName\":\"TinyTransfer\",\"destructuring\":true}', 'component', 'form', 1, '[{\"name\":{\"zh_CN\":\"穿梭框\"},\"icon\":\"transfer\",\"screenshot\":\"\",\"snippetName\":\"TinyTransfer\",\"schema\":{\"componentName\":\"TinyTransfer\",\"props\":{\"modelValue\":[3],\"data\":[{\"key\":1,\"label\":\"备选项1\",\"disabled\":false},{\"key\":2,\"label\":\"备选项2\",\"disabled\":false},{\"key\":3,\"label\":\"备选项3\",\"disabled\":false},{\"key\":4,\"label\":\"备选项4\",\"disabled\":false}]}}}]', '{\"properties\":[{\"label\":{\"zh_CN\":\"基础信息\"},\"description\":{\"zh_CN\":\"基础信息\"},\"content\":[{\"property\":\"modelValue\",\"label\":{\"text\":{\"zh_CN\":\"绑定值\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"I18nConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"双向绑定值\"},\"labelPosition\":\"left\"},{\"property\":\"data\",\"label\":{\"text\":{\"zh_CN\":\"左右列表的全量数据源\"}},\"required\":true,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"左右列表的全量数据源\"},\"labelPosition\":\"left\"},{\"property\":\"filterable\",\"label\":{\"text\":{\"zh_CN\":\"是否启用搜索的功能\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否启用搜索的功能\"},\"labelPosition\":\"left\"},{\"property\":\"showAllBtn\",\"label\":{\"text\":{\"zh_CN\":\"是否显示全部移动按钮\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"是否显示全部移动按钮\"},\"labelPosition\":\"left\"},{\"property\":\"toLeftDisable\",\"label\":{\"text\":{\"zh_CN\":\"组件初始化状态下未选中时,默认按钮显示禁用状态\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"组件初始化状态下未选中时,默认按钮显示禁用状态\"},\"labelPosition\":\"left\"},{\"property\":\"toRightDisable\",\"label\":{\"text\":{\"zh_CN\":\"组件初始化状态下未选中时,默认按钮显示禁用状态\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CheckBoxConfigurator\",\"props\":{}},\"description\":{\"zh_CN\":\"组件初始化状态下未选中时,默认按钮显示禁用状态\"},\"labelPosition\":\"left\"},{\"property\":\"titles\",\"label\":{\"text\":{\"zh_CN\":\"自定义列表的标题\"}},\"required\":false,\"readOnly\":false,\"disabled\":false,\"widget\":{\"component\":\"CodeConfigurator\",\"props\":{\"language\":\"json\"}},\"description\":{\"zh_CN\":\"自定义列表的标题;不设置titles时,左右列表的标题默认显示为: 列表 1, 列表 2\"},\"labelPosition\":\"left\"}]}],\"events\":{\"onChange\":{\"label\":{\"zh_CN\":\"右侧列表元素变化时触发\"},\"description\":{\"zh_CN\":\"右侧列表元素变化时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"右侧列表元素变化时触发\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onLeftCheckChange\":{\"label\":{\"zh_CN\":\"左侧列表元素被用户选中 / 取消选中时触发;\"},\"description\":{\"zh_CN\":\"左侧列表元素被用户选中 / 取消选中时触发;\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"左侧列表元素被用户选中 / 取消选中时触发;\"}}],\"returns\":{}},\"defaultValue\":\"\"},\"onRightCheckChange\":{\"label\":{\"zh_CN\":\"右侧列表元素被用户选中 / 取消选中时触发\"},\"description\":{\"zh_CN\":\"右侧列表元素被用户选中 / 取消选中时触发\"},\"type\":\"event\",\"functionInfo\":{\"params\":[{\"name\":\"value\",\"type\":\"string\",\"defaultValue\":\"\",\"description\":{\"zh_CN\":\"右侧列表元素被用户选中 / 取消选中时触发\"}}],\"returns\":{}},\"defaultValue\":\"\"}}}', '{\"loop\":true,\"condition\":true,\"styles\":true,\"isContainer\":false,\"isModal\":false,\"nestingRule\":{\"childWhitelist\":\"\",\"parentWhitelist\":\"\",\"descendantBlacklist\":\"\",\"ancestorWhitelist\":\"\"},\"isNullNode\":false,\"isLayout\":false,\"rootSelector\":\"\",\"shortcuts\":{\"properties\":[\"value\",\"disabled\"]},\"contextMenu\":{\"actions\":[\"create symbol\"],\"disable\":[\"copy\",\"remove\"]}}', 1, 'Vue', 1, 1, 0, NULL, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:16', '1', '2025-08-03 19:54:16'); -INSERT INTO `t_component_library` (`id`, `version`, `name`, `app_id`, `package`, `registry`, `framework`, `description`, `script`, `css`, `bundle`, `dependencies`, `others`, `thumbnail`, `public`, `is_started`, `is_official`, `is_default`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (1, '3.20.0', 'TinyVue组件库', NULL, '@opentiny/vue', NULL, 'Vue', NULL, 'https://unpkg.com/@opentiny/vue-runtime@~3.20/dist3/tiny-vue-pc.mjs', 'https://unpkg.com/@opentiny/vue-theme@~3.20/index.css', NULL, NULL, NULL, NULL, NULL, 1, 1, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); -INSERT INTO `t_component_library` (`id`, `version`, `name`, `app_id`, `package`, `registry`, `framework`, `description`, `script`, `css`, `bundle`, `dependencies`, `others`, `thumbnail`, `public`, `is_started`, `is_official`, `is_default`, `tenant_id`, `renter_id`, `site_id`, `created_by`, `created_time`, `last_updated_by`, `last_updated_time`) VALUES (2, '2.4.2', 'element-plus组件库', NULL, 'element-plus', NULL, 'Vue', NULL, 'https://unpkg.com/element-plus@2.4.2/dist/index.full.mjs', 'https://unpkg.com/element-plus@2.4.2/dist/index.css', NULL, NULL, NULL, NULL, NULL, 1, 1, 1, NULL, NULL, NULL, '1', '2025-05-22 18:02:32', '1', '2025-05-22 18:02:32'); +INSERT INTO `t_component_library` VALUES (1, '3.20.0', 'TinyVue组件库', NULL, '@opentiny/vue', NULL, 'Vue', NULL, 'https://registry.npmmirror.com/@opentiny/vue-runtime/~3.20/files/dist3/tiny-vue-pc.mjs', 'https://registry.npmmirror.com/@opentiny/vue-theme/~3.20/files/index.css', NULL, NULL, NULL, NULL, NULL, 1, 1, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); +INSERT INTO `t_component_library` VALUES (2, '2.4.2', 'element-plus组件库', NULL, 'element-plus', NULL, 'Vue', NULL, 'https://registry.npmmirror.com/element-plus/2.4.2/files/dist/index.full.mjs', 'https://registry.npmmirror.com/element-plus/2.4.2/files/dist/index.css', NULL, NULL, NULL, NULL, NULL, 1, 1, 1, '1', NULL, NULL, '1', '2025-08-03 19:54:13', '1', '2025-08-03 19:54:13'); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (1, 1, 1); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (2, 1, 2); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (3, 1, 3); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (4, 1, 4); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (5, 1, 5); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (6, 1, 6); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (7, 1, 7); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (8, 1, 8); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (9, 1, 9); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (10, 1, 10); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (11, 1, 11); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (12, 1, 12); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (13, 1, 13); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (14, 1, 14); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (15, 1, 15); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (16, 1, 16); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (17, 1, 17); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (18, 1, 18); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (19, 1, 19); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (20, 1, 20); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (21, 1, 21); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (22, 1, 22); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (23, 1, 23); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (24, 1, 24); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (25, 1, 25); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (26, 1, 26); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (27, 1, 27); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (28, 1, 28); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (29, 1, 29); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (30, 1, 30); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (31, 1, 31); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (32, 1, 32); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (33, 1, 33); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (34, 1, 34); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (35, 1, 35); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (36, 1, 36); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (37, 1, 37); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (38, 1, 38); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (39, 1, 39); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (40, 1, 40); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (41, 1, 41); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (42, 1, 42); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (43, 1, 43); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (44, 1, 44); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (45, 1, 45); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (46, 1, 46); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (47, 1, 47); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (48, 1, 48); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (49, 1, 49); -INSERT INTO `r_material_history_component` (`id`, `material_history_id`, `component_id`) VALUES (50, 1, 50); +INSERT INTO `r_material_history_component` VALUES (1, 1, 1); +INSERT INTO `r_material_history_component` VALUES (2, 1, 2); +INSERT INTO `r_material_history_component` VALUES (3, 1, 3); +INSERT INTO `r_material_history_component` VALUES (4, 1, 4); +INSERT INTO `r_material_history_component` VALUES (5, 1, 5); +INSERT INTO `r_material_history_component` VALUES (6, 1, 6); +INSERT INTO `r_material_history_component` VALUES (7, 1, 7); +INSERT INTO `r_material_history_component` VALUES (8, 1, 8); +INSERT INTO `r_material_history_component` VALUES (9, 1, 9); +INSERT INTO `r_material_history_component` VALUES (10, 1, 10); +INSERT INTO `r_material_history_component` VALUES (11, 1, 11); +INSERT INTO `r_material_history_component` VALUES (12, 1, 12); +INSERT INTO `r_material_history_component` VALUES (13, 1, 13); +INSERT INTO `r_material_history_component` VALUES (14, 1, 14); +INSERT INTO `r_material_history_component` VALUES (15, 1, 15); +INSERT INTO `r_material_history_component` VALUES (16, 1, 16); +INSERT INTO `r_material_history_component` VALUES (17, 1, 17); +INSERT INTO `r_material_history_component` VALUES (18, 1, 18); +INSERT INTO `r_material_history_component` VALUES (19, 1, 19); +INSERT INTO `r_material_history_component` VALUES (20, 1, 20); +INSERT INTO `r_material_history_component` VALUES (21, 1, 21); +INSERT INTO `r_material_history_component` VALUES (22, 1, 22); +INSERT INTO `r_material_history_component` VALUES (23, 1, 23); +INSERT INTO `r_material_history_component` VALUES (24, 1, 24); +INSERT INTO `r_material_history_component` VALUES (25, 1, 25); +INSERT INTO `r_material_history_component` VALUES (26, 1, 26); +INSERT INTO `r_material_history_component` VALUES (27, 1, 27); +INSERT INTO `r_material_history_component` VALUES (28, 1, 28); +INSERT INTO `r_material_history_component` VALUES (29, 1, 29); +INSERT INTO `r_material_history_component` VALUES (30, 1, 30); +INSERT INTO `r_material_history_component` VALUES (31, 1, 31); +INSERT INTO `r_material_history_component` VALUES (32, 1, 32); +INSERT INTO `r_material_history_component` VALUES (33, 1, 33); +INSERT INTO `r_material_history_component` VALUES (34, 1, 34); +INSERT INTO `r_material_history_component` VALUES (35, 1, 35); +INSERT INTO `r_material_history_component` VALUES (36, 1, 36); +INSERT INTO `r_material_history_component` VALUES (37, 1, 37); +INSERT INTO `r_material_history_component` VALUES (38, 1, 38); +INSERT INTO `r_material_history_component` VALUES (39, 1, 39); +INSERT INTO `r_material_history_component` VALUES (40, 1, 40); +INSERT INTO `r_material_history_component` VALUES (41, 1, 41); +INSERT INTO `r_material_history_component` VALUES (42, 1, 42); +INSERT INTO `r_material_history_component` VALUES (43, 1, 43); +INSERT INTO `r_material_history_component` VALUES (44, 1, 44); +INSERT INTO `r_material_history_component` VALUES (45, 1, 45); +INSERT INTO `r_material_history_component` VALUES (46, 1, 46); +INSERT INTO `r_material_history_component` VALUES (47, 1, 47); +INSERT INTO `r_material_history_component` VALUES (48, 1, 48); +INSERT INTO `r_material_history_component` VALUES (49, 1, 49); +INSERT INTO `r_material_history_component` VALUES (50, 1, 50); +INSERT INTO `r_material_history_component` VALUES (51, 1, 51); +INSERT INTO `r_material_history_component` VALUES (52, 1, 52); +INSERT INTO `r_material_history_component` VALUES (53, 1, 53); + +INSERT INTO `r_material_component` VALUES (1, 1, 1); +INSERT INTO `r_material_component` VALUES (2, 1, 2); +INSERT INTO `r_material_component` VALUES (3, 1, 3); +INSERT INTO `r_material_component` VALUES (4, 1, 4); +INSERT INTO `r_material_component` VALUES (5, 1, 5); +INSERT INTO `r_material_component` VALUES (6, 1, 6); +INSERT INTO `r_material_component` VALUES (7, 1, 7); +INSERT INTO `r_material_component` VALUES (8, 1, 8); +INSERT INTO `r_material_component` VALUES (9, 1, 9); +INSERT INTO `r_material_component` VALUES (10, 1, 10); +INSERT INTO `r_material_component` VALUES (11, 1, 11); +INSERT INTO `r_material_component` VALUES (12, 1, 12); +INSERT INTO `r_material_component` VALUES (13, 1, 13); +INSERT INTO `r_material_component` VALUES (14, 1, 14); +INSERT INTO `r_material_component` VALUES (15, 1, 15); +INSERT INTO `r_material_component` VALUES (16, 1, 16); +INSERT INTO `r_material_component` VALUES (17, 1, 17); +INSERT INTO `r_material_component` VALUES (18, 1, 18); +INSERT INTO `r_material_component` VALUES (19, 1, 19); +INSERT INTO `r_material_component` VALUES (20, 1, 20); +INSERT INTO `r_material_component` VALUES (21, 1, 21); +INSERT INTO `r_material_component` VALUES (22, 1, 22); +INSERT INTO `r_material_component` VALUES (23, 1, 23); +INSERT INTO `r_material_component` VALUES (24, 1, 24); +INSERT INTO `r_material_component` VALUES (25, 1, 25); +INSERT INTO `r_material_component` VALUES (26, 1, 26); +INSERT INTO `r_material_component` VALUES (27, 1, 27); +INSERT INTO `r_material_component` VALUES (28, 1, 28); +INSERT INTO `r_material_component` VALUES (29, 1, 29); +INSERT INTO `r_material_component` VALUES (30, 1, 30); +INSERT INTO `r_material_component` VALUES (31, 1, 31); +INSERT INTO `r_material_component` VALUES (32, 1, 32); +INSERT INTO `r_material_component` VALUES (33, 1, 33); +INSERT INTO `r_material_component` VALUES (34, 1, 34); +INSERT INTO `r_material_component` VALUES (35, 1, 35); +INSERT INTO `r_material_component` VALUES (36, 1, 36); +INSERT INTO `r_material_component` VALUES (37, 1, 37); +INSERT INTO `r_material_component` VALUES (38, 1, 38); +INSERT INTO `r_material_component` VALUES (39, 1, 39); +INSERT INTO `r_material_component` VALUES (40, 1, 40); +INSERT INTO `r_material_component` VALUES (41, 1, 41); +INSERT INTO `r_material_component` VALUES (42, 1, 42); +INSERT INTO `r_material_component` VALUES (43, 1, 43); +INSERT INTO `r_material_component` VALUES (44, 1, 44); +INSERT INTO `r_material_component` VALUES (45, 1, 45); +INSERT INTO `r_material_component` VALUES (46, 1, 46); +INSERT INTO `r_material_component` VALUES (47, 1, 47); +INSERT INTO `r_material_component` VALUES (48, 1, 48); +INSERT INTO `r_material_component` VALUES (49, 1, 49); +INSERT INTO `r_material_component` VALUES (50, 1, 50); +INSERT INTO `r_material_component` VALUES (51, 1, 51); +INSERT INTO `r_material_component` VALUES (52, 1, 52); +INSERT INTO `r_material_component` VALUES (53, 1, 53); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (1, 1, 1); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (2, 1, 2); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (3, 1, 3); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (4, 1, 4); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (5, 1, 5); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (6, 1, 6); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (7, 1, 7); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (8, 1, 8); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (9, 1, 9); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (10, 1, 10); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (11, 1, 11); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (12, 1, 12); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (13, 1, 13); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (14, 1, 14); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (15, 1, 15); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (16, 1, 16); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (17, 1, 17); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (18, 1, 18); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (19, 1, 19); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (20, 1, 20); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (21, 1, 21); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (22, 1, 22); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (23, 1, 23); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (24, 1, 24); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (25, 1, 25); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (26, 1, 26); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (27, 1, 27); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (28, 1, 28); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (29, 1, 29); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (30, 1, 30); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (31, 1, 31); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (32, 1, 32); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (33, 1, 33); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (34, 1, 34); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (35, 1, 35); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (36, 1, 36); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (37, 1, 37); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (38, 1, 38); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (39, 1, 39); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (40, 1, 40); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (41, 1, 41); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (42, 1, 42); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (43, 1, 43); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (44, 1, 44); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (45, 1, 45); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (46, 1, 46); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (47, 1, 47); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (48, 1, 48); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (49, 1, 49); -INSERT INTO `r_material_component` (`id`, `material_id`, `component_id`) VALUES (50, 1, 50); From 0fd760c0c1930187587b5ebab0f0e38ba88b473b Mon Sep 17 00:00:00 2001 From: lu-yg <128358973+lu-yg@users.noreply.github.com> Date: Wed, 6 Aug 2025 03:06:44 -0700 Subject: [PATCH 12/14] feat: Add a universal OpenAI API (#251) --- .../it/config/filter/WebConfig.java | 13 ++ .../StreamingResponseBodyConverter.java | 57 ++++++++ .../it/common/exception/ExceptionEnum.java | 7 +- .../tinyengine/it/config/OpenAIConfig.java | 30 ++++ .../it/controller/AiChatController.java | 42 ++++++ .../tinyengine/it/model/dto/ChatRequest.java | 32 +++++ .../app/impl/v1/AiChatV1ServiceImpl.java | 133 ++++++++++++++++++ .../it/service/app/v1/AiChatV1Service.java | 30 ++++ 8 files changed, 343 insertions(+), 1 deletion(-) create mode 100644 base/src/main/java/com/tinyengine/it/common/converter/StreamingResponseBodyConverter.java create mode 100644 base/src/main/java/com/tinyengine/it/config/OpenAIConfig.java create mode 100644 base/src/main/java/com/tinyengine/it/model/dto/ChatRequest.java create mode 100644 base/src/main/java/com/tinyengine/it/service/app/impl/v1/AiChatV1ServiceImpl.java create mode 100644 base/src/main/java/com/tinyengine/it/service/app/v1/AiChatV1Service.java diff --git a/app/src/main/java/com/tinyengine/it/config/filter/WebConfig.java b/app/src/main/java/com/tinyengine/it/config/filter/WebConfig.java index 839421f0..f947c0b9 100644 --- a/app/src/main/java/com/tinyengine/it/config/filter/WebConfig.java +++ b/app/src/main/java/com/tinyengine/it/config/filter/WebConfig.java @@ -11,9 +11,11 @@ package com.tinyengine.it.config.filter; +import com.tinyengine.it.common.converter.StreamingResponseBodyConverter; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.http.converter.HttpMessageConverter; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; @@ -27,6 +29,17 @@ public class WebConfig implements WebMvcConfigurer { @Value("${cors.allowed-origins}") private String allowedOrigins; + private final StreamingResponseBodyConverter streamingResponseBodyConverter; + + public WebConfig(StreamingResponseBodyConverter streamingResponseBodyConverter) { + this.streamingResponseBodyConverter = streamingResponseBodyConverter; + } + + @Override + public void extendMessageConverters(List> converters) { + // 添加自定义的 StreamingResponseBody 转换器 + converters.add(streamingResponseBodyConverter); + } @Bean public CorsFilter corsFilter() { // 跨域配置地址 diff --git a/base/src/main/java/com/tinyengine/it/common/converter/StreamingResponseBodyConverter.java b/base/src/main/java/com/tinyengine/it/common/converter/StreamingResponseBodyConverter.java new file mode 100644 index 00000000..2bbf1ae4 --- /dev/null +++ b/base/src/main/java/com/tinyengine/it/common/converter/StreamingResponseBodyConverter.java @@ -0,0 +1,57 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ + +package com.tinyengine.it.common.converter; + + +import org.springframework.http.HttpInputMessage; +import org.springframework.http.HttpOutputMessage; +import org.springframework.http.MediaType; +import org.springframework.http.converter.AbstractHttpMessageConverter; +import org.springframework.http.converter.HttpMessageNotReadableException; +import org.springframework.http.converter.HttpMessageNotWritableException; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody; + +import java.io.IOException; +import java.io.OutputStream; + +/** + * The type StreamingResponseBodyConverter. + * + * @since 2025-08-06 + */ +@Component +public class StreamingResponseBodyConverter extends AbstractHttpMessageConverter { + + public StreamingResponseBodyConverter() { + super(MediaType.TEXT_EVENT_STREAM); + } + + @Override + protected boolean supports(Class clazz) { + return StreamingResponseBody.class.isAssignableFrom(clazz); + } + + @Override + protected StreamingResponseBody readInternal(Class clazz, HttpInputMessage inputMessage) + throws IOException, HttpMessageNotReadableException { + throw new UnsupportedOperationException("Streaming response body does not support input."); + } + + @Override + protected void writeInternal(StreamingResponseBody responseBody, HttpOutputMessage outputMessage) + throws IOException, HttpMessageNotWritableException { + OutputStream outputStream = outputMessage.getBody(); + responseBody.writeTo(outputStream); // 使用 StreamingResponseBody 的 writeTo 方法 + } +} \ No newline at end of file diff --git a/base/src/main/java/com/tinyengine/it/common/exception/ExceptionEnum.java b/base/src/main/java/com/tinyengine/it/common/exception/ExceptionEnum.java index 1f5c5113..56d10b06 100644 --- a/base/src/main/java/com/tinyengine/it/common/exception/ExceptionEnum.java +++ b/base/src/main/java/com/tinyengine/it/common/exception/ExceptionEnum.java @@ -250,7 +250,12 @@ public enum ExceptionEnum implements IBaseError { /** * Cm 325 exception enum. */ - CM325("CM325", "文件校验失败"); + CM325("CM325", "文件校验失败"), + + /** + * Cm 326 exception enum. + */ + CM326("CM326", "Failed to write stream data"); /** * 错误码 diff --git a/base/src/main/java/com/tinyengine/it/config/OpenAIConfig.java b/base/src/main/java/com/tinyengine/it/config/OpenAIConfig.java new file mode 100644 index 00000000..0de5a4fd --- /dev/null +++ b/base/src/main/java/com/tinyengine/it/config/OpenAIConfig.java @@ -0,0 +1,30 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ + +package com.tinyengine.it.config; + +import lombok.Data; +import org.springframework.context.annotation.Configuration; + +/** + * The type Open AI config. + * + * @since 2025-08-06 + */ +@Data +@Configuration +public class OpenAIConfig { + private String apiKey = "your-api-key"; + private String baseUrl = "https://api.deepseek.com/chat/completions"; + private String defaultModel = "deepseek-chat"; + private int timeoutSeconds = 300; +} diff --git a/base/src/main/java/com/tinyengine/it/controller/AiChatController.java b/base/src/main/java/com/tinyengine/it/controller/AiChatController.java index 697ef7ab..69a066fb 100644 --- a/base/src/main/java/com/tinyengine/it/controller/AiChatController.java +++ b/base/src/main/java/com/tinyengine/it/controller/AiChatController.java @@ -15,8 +15,10 @@ import com.tinyengine.it.common.base.Result; import com.tinyengine.it.common.log.SystemControllerLog; import com.tinyengine.it.model.dto.AiParam; +import com.tinyengine.it.model.dto.ChatRequest; import com.tinyengine.it.service.app.AiChatService; +import com.tinyengine.it.service.app.v1.AiChatV1Service; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.Content; @@ -25,11 +27,15 @@ import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody; import java.util.Map; @@ -49,6 +55,12 @@ public class AiChatController { @Autowired private AiChatService aiChatService; + /** + * The Ai chat v1 service. + */ + @Autowired + private AiChatV1Service aiChatV1Service; + /** * AI api * @@ -65,4 +77,34 @@ public class AiChatController { public Result> aiChat(@RequestBody AiParam aiParam) { return aiChatService.getAnswerFromAi(aiParam); } + + /** + * AI api v1 + * + * @param request the AI param + * @return ai回答信息 result + */ + @Operation(summary = "获取ai回答信息", description = "获取ai回答信息", parameters = { + @Parameter(name = "ChatRequest", description = "入参对象")}, responses = { + @ApiResponse(responseCode = "200", description = "返回信息", + content = @Content(mediaType = "application/json", schema = @Schema())), + @ApiResponse(responseCode = "400", description = "请求失败")}) + @SystemControllerLog(description = "AI api v1") + @PostMapping("/chat/completions") + public ResponseEntity chat(@RequestBody ChatRequest request) { + try { + Object response = aiChatV1Service.chatCompletion(request); + + if (request.isStream()) { + return ResponseEntity.ok() + .contentType(MediaType.TEXT_EVENT_STREAM) + .body((StreamingResponseBody) response); + } else { + return ResponseEntity.ok(response); + } + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(e.getMessage()); + } + } } diff --git a/base/src/main/java/com/tinyengine/it/model/dto/ChatRequest.java b/base/src/main/java/com/tinyengine/it/model/dto/ChatRequest.java new file mode 100644 index 00000000..79711779 --- /dev/null +++ b/base/src/main/java/com/tinyengine/it/model/dto/ChatRequest.java @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ + +package com.tinyengine.it.model.dto; + +import lombok.Data; + +import java.util.List; + +/** + * ChatRequest dto + * + * @since 2025-08-06 + */ +@Data +public class ChatRequest { + private String model; + private String apiKey; + private String baseUrl; + private List messages; + private Double temperature = 0.7; + private boolean stream = false; // 流式开关 +} diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/v1/AiChatV1ServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/v1/AiChatV1ServiceImpl.java new file mode 100644 index 00000000..9c3bd87d --- /dev/null +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/v1/AiChatV1ServiceImpl.java @@ -0,0 +1,133 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ + +package com.tinyengine.it.service.app.impl.v1; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.tinyengine.it.common.exception.ExceptionEnum; +import com.tinyengine.it.common.exception.ServiceException; +import com.tinyengine.it.common.utils.JsonUtils; +import com.tinyengine.it.config.OpenAIConfig; +import com.tinyengine.it.model.dto.ChatRequest; +import com.tinyengine.it.service.app.v1.AiChatV1Service; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody; + +import java.io.IOException; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.nio.charset.StandardCharsets; +import java.time.Duration; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Stream; + +/** + * The type AiChat v1 service. + * + * @since 2025-08-06 + */ +@Service +@Slf4j +public class AiChatV1ServiceImpl implements AiChatV1Service { + private final OpenAIConfig config = new OpenAIConfig(); + private HttpClient httpClient = HttpClient.newBuilder() + .connectTimeout(Duration.ofSeconds(config.getTimeoutSeconds())) + .build(); + + /** + * chatCompletion. + * + * @param request the request + * @return Object the Object + */ + @Override + public Object chatCompletion(ChatRequest request) throws Exception { + String requestBody = buildRequestBody(request); + String apiKey = request.getApiKey() != null ? request.getApiKey() : config.getApiKey(); + HttpRequest.Builder requestBuilder = HttpRequest.newBuilder() + .uri(URI.create(request.getBaseUrl() != null ? request.getBaseUrl() : config.getBaseUrl())) + .header("Content-Type", "application/json") + .header("Authorization", "Bearer " + apiKey) + .POST(HttpRequest.BodyPublishers.ofString(requestBody)); + + if (request.isStream()) { + requestBuilder.header("Accept", "text/event-stream"); + return processStreamResponse(requestBuilder); + } else { + return processStandardResponse(requestBuilder); + } + } + + private String buildRequestBody(ChatRequest request) throws JsonProcessingException { + Map body = new HashMap<>(); + body.put("model", request.getModel() != null ? request.getModel() : config.getDefaultModel()); + body.put("messages", request.getMessages()); + body.put("temperature", request.getTemperature()); + body.put("stream", request.isStream()); + + return JsonUtils.encode(body); + } + + private JsonNode processStandardResponse(HttpRequest.Builder requestBuilder) + throws Exception { + HttpResponse response = httpClient.send( + requestBuilder.build(), HttpResponse.BodyHandlers.ofString()); + return JsonUtils.MAPPER.readTree(response.body()); + } + + private StreamingResponseBody processStreamResponse(HttpRequest.Builder requestBuilder) { + return outputStream -> { + try { + HttpResponse> response = httpClient.send( + requestBuilder.build(), HttpResponse.BodyHandlers.ofLines()); + try (Stream lines = response.body()) { + lines.filter(line -> !line.isEmpty()) + .forEach(line -> { + try { + if (!line.startsWith("data:")) { + line = "data: " + line; + } + if (!line.endsWith("\n\n")) { + line = line + "\n\n"; + } + outputStream.write(line.getBytes(StandardCharsets.UTF_8)); + outputStream.flush(); + } catch (IOException e) { + throw new ServiceException(ExceptionEnum.CM326.getResultCode(), + ExceptionEnum.CM326.getResultMsg()); + } + }); + } + } catch (Exception e) { + try { + String errorEvent = "data: " + + JsonUtils.encode(Map.of("error", e.getMessage())) + "\n\n"; + outputStream.write(errorEvent.getBytes(StandardCharsets.UTF_8)); + outputStream.flush(); + } catch (IOException ioException) { + throw new ServiceException(ExceptionEnum.CM326.getResultCode(), ExceptionEnum.CM326.getResultMsg()); + } + } finally { + try { + outputStream.close(); + } catch (IOException e) { + // 忽略关闭异常 + } + } + }; + } +} diff --git a/base/src/main/java/com/tinyengine/it/service/app/v1/AiChatV1Service.java b/base/src/main/java/com/tinyengine/it/service/app/v1/AiChatV1Service.java new file mode 100644 index 00000000..d2bda179 --- /dev/null +++ b/base/src/main/java/com/tinyengine/it/service/app/v1/AiChatV1Service.java @@ -0,0 +1,30 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ + +package com.tinyengine.it.service.app.v1; + +import com.tinyengine.it.model.dto.ChatRequest; + +/** + * The interface AIChat v 1 service. + * + * @since 2025-08-06 + */ +public interface AiChatV1Service { + /** + * chatCompletion. + * + * @param request the request + * @return Object the Object + */ + public Object chatCompletion(ChatRequest request) throws Exception; +} From 869f19a391049eac775d34ba61be1d0781f2ec64 Mon Sep 17 00:00:00 2001 From: lu-yg <128358973+lu-yg@users.noreply.github.com> Date: Wed, 6 Aug 2025 23:33:58 -0700 Subject: [PATCH 13/14] fix: Fix a universal OpenAI API (#252) --- .../main/java/com/tinyengine/it/model/dto/ChatRequest.java | 2 ++ .../it/service/app/impl/v1/AiChatV1ServiceImpl.java | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/base/src/main/java/com/tinyengine/it/model/dto/ChatRequest.java b/base/src/main/java/com/tinyengine/it/model/dto/ChatRequest.java index 79711779..7a210a22 100644 --- a/base/src/main/java/com/tinyengine/it/model/dto/ChatRequest.java +++ b/base/src/main/java/com/tinyengine/it/model/dto/ChatRequest.java @@ -15,6 +15,7 @@ import lombok.Data; import java.util.List; +import java.util.Map; /** * ChatRequest dto @@ -27,6 +28,7 @@ public class ChatRequest { private String apiKey; private String baseUrl; private List messages; + private List> tools; private Double temperature = 0.7; private boolean stream = false; // 流式开关 } diff --git a/base/src/main/java/com/tinyengine/it/service/app/impl/v1/AiChatV1ServiceImpl.java b/base/src/main/java/com/tinyengine/it/service/app/impl/v1/AiChatV1ServiceImpl.java index 9c3bd87d..43b76a02 100644 --- a/base/src/main/java/com/tinyengine/it/service/app/impl/v1/AiChatV1ServiceImpl.java +++ b/base/src/main/java/com/tinyengine/it/service/app/impl/v1/AiChatV1ServiceImpl.java @@ -58,8 +58,9 @@ public class AiChatV1ServiceImpl implements AiChatV1Service { public Object chatCompletion(ChatRequest request) throws Exception { String requestBody = buildRequestBody(request); String apiKey = request.getApiKey() != null ? request.getApiKey() : config.getApiKey(); + String baseUrl = request.getBaseUrl() != null ? request.getBaseUrl() : config.getBaseUrl(); HttpRequest.Builder requestBuilder = HttpRequest.newBuilder() - .uri(URI.create(request.getBaseUrl() != null ? request.getBaseUrl() : config.getBaseUrl())) + .uri(URI.create(baseUrl)) .header("Content-Type", "application/json") .header("Authorization", "Bearer " + apiKey) .POST(HttpRequest.BodyPublishers.ofString(requestBody)); @@ -78,6 +79,7 @@ private String buildRequestBody(ChatRequest request) throws JsonProcessingExcept body.put("messages", request.getMessages()); body.put("temperature", request.getTemperature()); body.put("stream", request.isStream()); + body.put("tools", request.getTools()); return JsonUtils.encode(body); } From bb00b594a6fef5ae30e661075a56e40882a28585 Mon Sep 17 00:00:00 2001 From: lu-yg <128358973+lu-yg@users.noreply.github.com> Date: Thu, 7 Aug 2025 00:20:18 -0700 Subject: [PATCH 14/14] fix: change messages format (#253) --- .../main/java/com/tinyengine/it/model/dto/ChatRequest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/base/src/main/java/com/tinyengine/it/model/dto/ChatRequest.java b/base/src/main/java/com/tinyengine/it/model/dto/ChatRequest.java index 7a210a22..5c866955 100644 --- a/base/src/main/java/com/tinyengine/it/model/dto/ChatRequest.java +++ b/base/src/main/java/com/tinyengine/it/model/dto/ChatRequest.java @@ -27,8 +27,8 @@ public class ChatRequest { private String model; private String apiKey; private String baseUrl; - private List messages; - private List> tools; + private Object messages; + private Object tools; private Double temperature = 0.7; private boolean stream = false; // 流式开关 }