From 24ee1278421c2f0519365e07bfb190997abae5e1 Mon Sep 17 00:00:00 2001 From: ielgnaw Date: Fri, 14 Aug 2020 16:51:15 +0800 Subject: [PATCH] 0.0.4 (#281) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 先去掉 bk-PaaS 中的其他内容,只保留 paas-ce/lesscode 目录 * init lesscode * add .pre-commit-config.yaml * test * test * add pre-commit & update dev_install doc & add bk-PaaS doc * typo * up dev_install doc * up dev_install doc * up dev_install doc * up dev_install doc * up .pre-commit-config.yaml * up comment info * add .pre-commit-config.yaml to ignore * feature: 组件属性配置类型提示首字母大写 * 可视化布局 => 可视化开发 * 可视化布局 => 可视化开发 * 可视化布局 => 可视化开发 * Lesscode update doc (#199) * ignore .idea * update bk-magic-vue version (for bk-color-picker select '') * 组件属性提示增加 tips 配置字段 * button 按钮组件使用说明 * text 按钮组件使用说明 * image 图片组件使用说明 * input 输入框组件使用说明 * events 配置数据结构优化 ['change'] ==> [{ name: 'change', tips: ''}] * 组件使用帮助 tips * 帮助文档页面移除单个组件导航 * 帮助文档:栅格布局 * merge #201 * merge manually from #201 * merge manually from #201 (#202) * merge #201 * merge manually from #201 * 添加快捷操作功能 (#205) * 增加chart图表 (#206) * 增加chart图表 * fix冲突 * 删除consolelog * 更新图标库 * merge manually from #203 * merge manually from #203 (#212) * 拖拽快捷操作支持Mac Command键 (#213) * 添加快捷操作功能 * 拖拽快捷键支持Mac Command键 * 修改快捷操作说明 * fix some bug * 修复 charts-line options.tips 小问题 * 修复 charts-line options.tips 小问题 (#215) * 修复刷新页面时,没有选中组件但右侧面板会显示 grid 属性的问题 * 【lesscode】修复刷新页面时,没有选中组件但右侧面板会显示 grid 属性的问题 (#216) * merge #201 * merge manually from #201 * merge manually from #203 * fix some bug * 修复 charts-line options.tips 小问题 * 修复刷新页面时,没有选中组件但右侧面板会显示 grid 属性的问题 * 修复 chart 组件样式被覆盖的问题 * 【lesscode】修复 chart 组件样式被覆盖的问题 (#217) * merge #201 * merge manually from #201 * merge manually from #203 * fix some bug * 修复 charts-line options.tips 小问题 * 修复刷新页面时,没有选中组件但右侧面板会显示 grid 属性的问题 * 修复 chart 组件样式被覆盖的问题 * fix图表问题 (#218) * 增加chart图表 * fix冲突 * 删除consolelog * 更新图标库 * 同步新的lesscode-develop,fix图表bug * 修改快捷操作 (#219) * 添加快捷操作功能 * 拖拽快捷键支持Mac Command键 * 修改快捷操作说明 * 修复剪切快捷操作,修改快捷操作说明 * 修改快捷操作 (#220) * 添加快捷操作功能 * 拖拽快捷键支持Mac Command键 * 修改快捷操作说明 * 修复剪切快捷操作,修改快捷操作说明 * 兼容数据为空的情况 * 兼容数据为空的情况 Co-authored-by: ielgnaw * 体验 bug 修复 * 【lesscode】体验 bug 修复 (#221) * merge #201 * merge manually from #201 * merge manually from #203 * fix some bug * 修复 charts-line options.tips 小问题 * 修复刷新页面时,没有选中组件但右侧面板会显示 grid 属性的问题 * 修复 chart 组件样式被覆盖的问题 * 体验 bug 修复 * 修改快捷操作判断 (#222) * 添加快捷操作功能 * 拖拽快捷键支持Mac Command键 * 修改快捷操作说明 * 修复剪切快捷操作,修改快捷操作说明 * 兼容数据为空的情况 * 兼容数据为空的情况 * 仅在选中拖拽区域触发快捷操作 * 修改判断是否在拖拽区域 * 修复体验问题 * 修复体验问题 (#223) * 增加backspace快捷删除 (#224) * 添加快捷操作功能 * 拖拽快捷键支持Mac Command键 * 修改快捷操作说明 * 修复剪切快捷操作,修改快捷操作说明 * 兼容数据为空的情况 * 兼容数据为空的情况 * 仅在选中拖拽区域触发快捷操作 * 修改判断是否在拖拽区域 * 增加backspace快速删除 修改快捷面版样式 * 画布仅剩一个 grid 时,不允许删除;增加清空 grid 操作 * 画布仅剩一个 grid 时,不允许删除;增加清空 grid 操作 (#225) * 修复 clone grid 时,右侧面板没有默认选中的问题;更新日志 * 修复 clone grid 时,右侧面板没有默认选中的问题;更新日志 (#226) * 文案 * 文案 (#227) * 后端orm采用TypeORM (#229) * 后端采用typeorm * orm添加migration (#230) * 修改数据迁移表 * 添加初始化脚本 (#233) * 增加data-base.js.example * 添加初始化SQL * 修改初始化脚本 * 新增项目级别页面布局和项目列表页UI (#232) * 新增数据库部署文档 (#234) * 添加快捷操作功能 * 拖拽快捷键支持Mac Command键 * 修改快捷操作说明 * 修复剪切快捷操作,修改快捷操作说明 * 兼容数据为空的情况 * 兼容数据为空的情况 * 仅在选中拖拽区域触发快捷操作 * 修改判断是否在拖拽区域 * 增加backspace快速删除 修改快捷面版样式 * 后端采用typeorm * orm添加migration * 修改文件名 * 修改数据迁移表 * 1. 新增数据库部署文档 2. 去掉test相关接口 3. 修改initial.sql注释 * 去掉数据迁移部分,采用SQL自己控制 * 1. 修改数据库说明 2. 修改数据库配置注释 * feature: db 操作demo (#235) * 提交项目模块layout和router & fix高版本echart图表自适应不生效问题 (#236) * 增加chart图表 * fix冲突 * 删除consolelog * 更新图标库 * 同步新的lesscode-develop,fix图表bug * fix高版本echarts无法自适应大小的问题 * project模块layout和router * 添加函数相关entity (#237) * 添加快捷操作功能 * 拖拽快捷键支持Mac Command键 * 修改快捷操作说明 * 修复剪切快捷操作,修改快捷操作说明 * 兼容数据为空的情况 * 兼容数据为空的情况 * 仅在选中拖拽区域触发快捷操作 * 修改判断是否在拖拽区域 * 增加backspace快速删除 修改快捷面版样式 * 后端采用typeorm * orm添加migration * 修改文件名 * 修改数据迁移表 * 1. 新增数据库部署文档 2. 去掉test相关接口 3. 修改initial.sql注释 * 去掉数据迁移部分,采用SQL自己控制 * 1. 修改数据库说明 2. 修改数据库配置注释 * 1. entity的base 添加创建人和修改人字段 2. 添加函数相关的entities 3. 修改initial.sql * 修改字段类型 * 新增项目相关功能 (#238) * 新增项目级别页面布局和项目列表页UI * 新增创建项目和查询项目列表功能 * 新增项目收藏功能 * 新增项目重命名功能 * 新增项目列表分类和搜索查询 * 新增复制项目功能 * 修改项目收藏功能使用独立的数据接口和模型 * 优化项目列表查询 * 新增删除项目功能 Co-authored-by: ielgnaw * 添加权限相关方法 (#240) * 添加快捷操作功能 * 拖拽快捷键支持Mac Command键 * 修改快捷操作说明 * 修复剪切快捷操作,修改快捷操作说明 * 兼容数据为空的情况 * 兼容数据为空的情况 * 仅在选中拖拽区域触发快捷操作 * 修改判断是否在拖拽区域 * 增加backspace快速删除 修改快捷面版样式 * 后端采用typeorm * orm添加migration * 修改文件名 * 修改数据迁移表 * 1. 新增数据库部署文档 2. 去掉test相关接口 3. 修改initial.sql注释 * 去掉数据迁移部分,采用SQL自己控制 * 1. 修改数据库说明 2. 修改数据库配置注释 * 1. entity的base 添加创建人和修改人字段 2. 添加函数相关的entities 3. 修改initial.sql * 修改字段类型 * 1. 添加权限相关的实体和接口 2. 添加创建人和更新人字段 Co-authored-by: ielgnaw * 解决冲突 (#241) * 添加快捷操作功能 * 拖拽快捷键支持Mac Command键 * 修改快捷操作说明 * 修复剪切快捷操作,修改快捷操作说明 * 兼容数据为空的情况 * 兼容数据为空的情况 * 仅在选中拖拽区域触发快捷操作 * 修改判断是否在拖拽区域 * 增加backspace快速删除 修改快捷面版样式 * 后端采用typeorm * orm添加migration * 修改文件名 * 修改数据迁移表 * 1. 新增数据库部署文档 2. 去掉test相关接口 3. 修改initial.sql注释 * 去掉数据迁移部分,采用SQL自己控制 * 1. 修改数据库说明 2. 修改数据库配置注释 * 1. entity的base 添加创建人和修改人字段 2. 添加函数相关的entities 3. 修改initial.sql * 修改字段类型 * 解决冲突 * 统一实体导入导出与命名规则 (#242) * 新增项目级别页面布局和项目列表页UI * 新增创建项目和查询项目列表功能 * 新增项目收藏功能 * 新增项目重命名功能 * 新增项目列表分类和搜索查询 * 新增复制项目功能 * 修改项目收藏功能使用独立的数据接口和模型 * 优化项目列表查询 * 新增删除项目功能 Co-authored-by: ielgnaw * 自定义组件接口 (#243) * feature: db 操作demo * perf: 组件管理接口联调 * perf: 修改实体引入方式 * fix: 自定义组件上传 (#244) * feature: db 操作demo * perf: 组件管理接口联调 * perf: 修改实体引入方式 * fix: 自定义组件上传 Co-authored-by: ielgnaw * 函数页面及接口 (#245) * 添加快捷操作功能 * 拖拽快捷键支持Mac Command键 * 修改快捷操作说明 * 修复剪切快捷操作,修改快捷操作说明 * 兼容数据为空的情况 * 兼容数据为空的情况 * 仅在选中拖拽区域触发快捷操作 * 修改判断是否在拖拽区域 * 增加backspace快速删除 修改快捷面版样式 * 后端采用typeorm * orm添加migration * 修改文件名 * 修改数据迁移表 * 1. 新增数据库部署文档 2. 去掉test相关接口 3. 修改initial.sql注释 * 去掉数据迁移部分,采用SQL自己控制 * 1. 修改数据库说明 2. 修改数据库配置注释 * 1. entity的base 添加创建人和修改人字段 2. 添加函数相关的entities 3. 修改initial.sql * 修改字段类型 * 解决冲突 * 添加函数相关页面及接口 * up data-base conf example * up data-base conf example (#246) * 提交页面管理 (#247) * 提交页面管理 * merge Co-authored-by: ielgnaw * merge page && page 表,content 和 sourceCode 改为允许 null * merge page && page 表,content 和 sourceCode 改为允许 null (#248) * fix页面管理问题 (#249) * fix复制页面问题 * 删除preview页面的query参数 * update msg Co-authored-by: ielgnaw * format code style * format code style (#250) * page 模块小问题修复 * page 模块小问题修复 (#251) * 1. 函数体验优化 2. 函数对接项目 * 修改整体路由、生成页面缩略图 (#253) * 增加chart图表 * fix冲突 * 删除consolelog * 更新图标库 * 同步新的lesscode-develop,fix图表bug * fix高版本echarts无法自适应大小的问题 * project模块layout和router * 提交页面管理 * merge * fix复制页面问题 * 删除preview页面的query参数 * update msg * 修改整体路由、生成页面缩略图 Co-authored-by: ielgnaw * 1. 函数体验优化 (#252) 2. 函数对接项目 * 通过手动保存方式串联流程 (#254) * 修改整体路由、生成页面缩略图 * 增加手动保存串连流程 * 删除consolelog Co-authored-by: ielgnaw * merge * merge && cookie * merge && cookie (#255) * 修改删除和新增分类的项目 * 修改删除和新增分类的项目 (#256) * 1. 函数体验优化 2. 函数对接项目 * 修改删除和新增分类的项目 * 函数修改为可以选中所有模板生成的函数 * 登录权限控制 & 账号管理页面 & 用户信息 * 登录权限控制 & 账号管理页面 & 用户信息 (#259) * entities base 中尝试获取 curLoginUser (#260) * 登录权限控制 & 账号管理页面 & 用户信息 * entities base 中尝试获取 curLoginUser * fix页面管理体验问题 (#257) * fix页面管理体验问题 * 下拉项目列表增加搜索 Co-authored-by: ielgnaw * 使用函数的时候,可以选择所有模板生成的函数 (#258) * 1. 函数体验优化 2. 函数对接项目 * 修改删除和新增分类的项目 * 函数修改为可以选中所有模板生成的函数 * add http.js.example * add http.js.example (#261) * 项目管理对接登录用户和复制项目及样式与交互优化 (#262) * 新增项目级别页面布局和项目列表页UI * 新增创建项目和查询项目列表功能 * 新增项目收藏功能 * 新增项目重命名功能 * 新增项目列表分类和搜索查询 * 新增复制项目功能 * 修改项目收藏功能使用独立的数据接口和模型 * 优化项目列表查询 * 新增删除项目功能 * 项目管理样式和交互优化 * 项目对接登录用户和复制项目优化 Co-authored-by: ielgnaw * 处理projectId不存在情况,fix页面管理样式问题 (#263) * 增加chart图表 * fix冲突 * 删除consolelog * 更新图标库 * 同步新的lesscode-develop,fix图表bug * fix高版本echarts无法自适应大小的问题 * project模块layout和router * 提交页面管理 * merge * fix复制页面问题 * 删除preview页面的query参数 * update msg * 修改整体路由、生成页面缩略图 * 增加手动保存串连流程 * 删除consolelog * fix页面管理体验问题 * 下拉项目列表增加搜索 * 处理projectId不存在情况,fix页面管理样式问题 Co-authored-by: ielgnaw * 数据库默认值调整 (#264) * merge #201 * merge manually from #201 * merge manually from #203 * fix some bug * 修复 charts-line options.tips 小问题 * 修复刷新页面时,没有选中组件但右侧面板会显示 grid 属性的问题 * 修复 chart 组件样式被覆盖的问题 * 体验 bug 修复 * 修复体验问题 * 画布仅剩一个 grid 时,不允许删除;增加清空 grid 操作 * 修复 clone grid 时,右侧面板没有默认选中的问题;更新日志 * 文案 * up data-base conf example * merge page && page 表,content 和 sourceCode 改为允许 null * format code style * page 模块小问题修复 * merge * merge && cookie * 登录权限控制 & 账号管理页面 & 用户信息 * add http.js.example * 修复自定义组件 x-table 获取数据的问题 * 统一操作用户 * 修复自定义组件 x-table 获取数据的问题 (#265) * 统一操作用户 (#266) * 1. 函数体验优化 2. 函数对接项目 * 修改删除和新增分类的项目 * 函数修改为可以选中所有模板生成的函数 * 统一操作用户 * 获取正确的当前登录用户写入数据库 createUser 和 updateUser * 获取正确的当前登录用户写入数据库 createUser 和 updateUser (#267) * 修复 cookie 中 bktoken 失效的问题 * 项目复制完善和项目列表体验问题修复 (#268) * 项目列表体验优化 Co-authored-by: ielgnaw * 修复 cookie 中 bktoken 失效的问题 (#269) * 函数体验优化 * 去除重复js * fix页面管理相关体验问题 (#271) * 处理projectId不存在情况,fix页面管理样式问题 * 页面管理体验问题修复 * fix page style Co-authored-by: ielgnaw * 函数体验问题修复 (#270) * 1. 函数体验优化 2. 函数对接项目 * 修改删除和新增分类的项目 * 函数修改为可以选中所有模板生成的函数 * 统一操作用户 * 函数体验优化 * 去除重复js * 函数api url提示,默认函数填写绝对路径 * 去掉多余的空格 * 函数体验问题修复 (#272) * 1. 函数体验优化 2. 函数对接项目 * 修改删除和新增分类的项目 * 函数修改为可以选中所有模板生成的函数 * 统一操作用户 * 函数体验优化 * 去除重复js * 函数api url提示,默认函数填写绝对路径 * 去掉多余的空格 * 修改layout样式 * 导航与主站一致 * 导航与主站一致 (#274) * 导航与主站一致 * 导航与主站一致 * 隐藏项目删除操作和画布内容区加loading等体验问题修复 (#275) * 新增项目级别页面布局和项目列表页UI * 新增创建项目和查询项目列表功能 * 新增项目收藏功能 * 新增项目重命名功能 * 新增项目列表分类和搜索查询 * 新增复制项目功能 * 修改项目收藏功能使用独立的数据接口和模型 * 优化项目列表查询 * 新增删除项目功能 * 项目管理样式和交互优化 * 项目对接登录用户和复制项目优化 * 复制项目补充页面函数关联记录 * 项目列表体验优化 * 体验问题修复 Co-authored-by: ielgnaw * 修复属性面板中 switch 组件不会正确渲染的问题 * 修复属性面板中 switch 组件不会正确渲染的问题 (#276) * 函数提示优化,增加按钮获取数据 (#277) * 项目名称、ID 校验去重在当前用户维度下 * 项目名称、ID 校验去重在当前用户维度下 (#278) * 修复 compId 的问题 * 修复 compId 的问题 (#280) Co-authored-by: hLinx <327159425@qq.com> Co-authored-by: sundytt <30256396+sundytt@users.noreply.github.com> Co-authored-by: Arman19941113 <35905177+Arman19941113@users.noreply.github.com> Co-authored-by: xuzhan Co-authored-by: terlinhe <312592676@qq.com> Co-authored-by: yangyy --- paas-ce/lesscode/.babelrc | 2 + paas-ce/lesscode/.eslintrc.js | 8 +- paas-ce/lesscode/.gitignore | 2 + paas-ce/lesscode/README.md | 1 + paas-ce/lesscode/docs/install/database.md | 17 + .../lib/client/build/webpack.base.conf.js | 4 +- paas-ce/lesscode/lib/client/src/App.vue | 9 +- paas-ce/lesscode/lib/client/src/api/index.js | 10 +- .../lesscode/lib/client/src/api/pureAxios.js | 207 +++ .../lesscode/lib/client/src/common/bkmagic.js | 4 +- .../lib/client/src/common/fully-import.js | 7 + .../lesscode/lib/client/src/common/util.js | 19 + .../lib/client/src/components/header.vue | 561 +++----- .../src/components/methods/funcForm.vue | 291 +++++ .../client/src/components/methods/index.vue | 1156 ++++++++++------- .../src/components/methods/label-list.vue | 82 ++ .../client/src/components/methods/monaco.vue | 204 +++ .../src/components/patch/chart/index.vue | 4 +- .../src/components/project/page-dialog.vue | 143 ++ .../client/src/components/ui/extra-links.vue | 44 + .../lib/client/src/components/ui/layout.vue | 178 +++ .../src/components/vue-code/code-mixin.js | 58 +- .../lesscode/lib/client/src/css/bk-patch.css | 20 + .../lesscode/lib/client/src/css/common.css | 32 + .../lib/client/src/custom/x-table/index.vue | 29 +- .../modifier/events/index.vue | 16 +- .../props/components/strategy/boolean.vue | 42 +- .../props/components/strategy/remote.vue | 113 +- .../lib/client/src/images/page-demo.png | Bin 0 -> 20748 bytes paas-ce/lesscode/lib/client/src/main.js | 5 +- .../lesscode/lib/client/src/router/index.js | 93 +- .../lesscode/lib/client/src/store/index.js | 12 +- .../client/src/store/modules/components.js | 87 ++ .../lib/client/src/store/modules/drag.js | 77 +- .../lib/client/src/store/modules/functions.js | 93 ++ .../lib/client/src/store/modules/page.js | 65 + .../lib/client/src/store/modules/project.js | 70 + .../lib/client/src/views/changelog/index.md | 18 +- .../lib/client/src/views/help/index.css | 11 +- .../lib/client/src/views/help/index.vue | 8 +- .../lib/client/src/views/index/index.css | 29 +- .../lib/client/src/views/index/index.vue | 175 ++- .../lib/client/src/views/preview/index.vue | 51 +- .../src/views/project/function-manage.vue | 657 ++++++++++ .../lib/client/src/views/project/index.vue | 225 ++++ .../lib/client/src/views/project/member.vue | 58 + .../lib/client/src/views/project/page.vue | 410 ++++++ .../lib/client/src/views/system/account.vue | 65 + .../all/components/operation.vue | 127 ++ .../all/components/render-category.vue | 271 ++++ .../all/components/render-list.vue | 83 ++ .../system/component-manage/all/index.vue | 32 + .../views/system/component-manage/index.vue | 74 ++ .../system/component-manage/useing/index.vue | 54 + .../lib/client/src/views/system/index.vue | 215 +++ .../lib/client/src/views/system/projects.vue | 764 +++++++++++ paas-ce/lesscode/lib/server/app.browser.js | 40 +- .../lib/server/conf/data-base.js.example | 65 + paas-ce/lesscode/lib/server/conf/database.js | 28 - .../server/conf/{http.js => http.js.example} | 16 +- .../server/controller/component-category.js | 100 ++ .../lib/server/controller/component.js | 173 +++ .../lib/server/controller/function.js | 194 +++ .../lib/server/controller/mock-data.js | 146 +++ .../lesscode/lib/server/controller/page.js | 152 +++ .../server/controller/{data.js => perm.js} | 24 +- .../lesscode/lib/server/controller/project.js | 240 ++++ .../lesscode/lib/server/controller/test.js | 137 -- .../lesscode/lib/server/controller/user.js | 80 +- .../lesscode/lib/server/middleware/auth.js | 91 +- .../lesscode/lib/server/middleware/http.js | 9 +- .../lib/server/middleware/json-send.js | 2 +- .../lib/server/middleware/request-context.js | 62 + paas-ce/lesscode/lib/server/model/Project.js | 37 - .../lib/server/model/ProjectConfig.js | 30 - paas-ce/lesscode/lib/server/model/Role.js | 31 - .../lib/server/model/UserProjectRole.js | 25 - .../lib/server/model/entities/base.js | 55 + .../server/model/entities/comp-category.js | 8 + .../lib/server/model/entities/comp.js | 44 + .../lib/server/model/entities/func-group.js | 28 + .../lib/server/model/entities/func.js | 64 + .../index.js => model/entities/page-func.js} | 24 +- .../lib/server/model/entities/page.js | 51 + .../model/{Permission.js => entities/perm.js} | 20 +- .../lib/server/model/entities/project-comp.js | 30 + .../model/entities/project-favourite.js | 17 + .../model/entities/project-func-group.js | 17 + .../lib/server/model/entities/project-page.js | 17 + .../lib/server/model/entities/project.js | 48 + .../lib/server/model/entities/role-perm.js | 24 + .../project.js => model/entities/role.js} | 23 +- .../model/entities/user-project-role.js | 28 + .../model/{test.js => entities/user.js} | 36 +- paas-ce/lesscode/lib/server/model/function.js | 132 ++ paas-ce/lesscode/lib/server/model/index.js | 80 -- paas-ce/lesscode/lib/server/model/page.js | 53 + paas-ce/lesscode/lib/server/model/perm.js | 45 + paas-ce/lesscode/lib/server/model/project.js | 311 +++++ .../lib/server/model/sql/20200707/initial.sql | 477 +++++++ .../lib/server/model/{User.js => user.js} | 26 +- .../lib/server/router/component-category.js | 30 + .../lesscode/lib/server/router/component.js | 36 + .../lesscode/lib/server/router/function.js | 29 + paas-ce/lesscode/lib/server/router/index.js | 34 +- .../server/router/{test.js => mock-data.js} | 9 +- paas-ce/lesscode/lib/server/router/page.js | 35 + .../lib/server/router/{data.js => perm.js} | 6 +- paas-ce/lesscode/lib/server/router/project.js | 35 + paas-ce/lesscode/lib/server/util.js | 15 + paas-ce/lesscode/package.json | 21 +- 111 files changed, 9059 insertions(+), 1623 deletions(-) create mode 100644 paas-ce/lesscode/docs/install/database.md create mode 100644 paas-ce/lesscode/lib/client/src/api/pureAxios.js create mode 100644 paas-ce/lesscode/lib/client/src/components/methods/funcForm.vue create mode 100644 paas-ce/lesscode/lib/client/src/components/methods/label-list.vue create mode 100644 paas-ce/lesscode/lib/client/src/components/methods/monaco.vue create mode 100644 paas-ce/lesscode/lib/client/src/components/project/page-dialog.vue create mode 100644 paas-ce/lesscode/lib/client/src/components/ui/extra-links.vue create mode 100644 paas-ce/lesscode/lib/client/src/components/ui/layout.vue create mode 100644 paas-ce/lesscode/lib/client/src/css/common.css create mode 100644 paas-ce/lesscode/lib/client/src/images/page-demo.png create mode 100644 paas-ce/lesscode/lib/client/src/store/modules/components.js create mode 100644 paas-ce/lesscode/lib/client/src/store/modules/functions.js create mode 100644 paas-ce/lesscode/lib/client/src/store/modules/page.js create mode 100644 paas-ce/lesscode/lib/client/src/store/modules/project.js create mode 100644 paas-ce/lesscode/lib/client/src/views/project/function-manage.vue create mode 100644 paas-ce/lesscode/lib/client/src/views/project/index.vue create mode 100644 paas-ce/lesscode/lib/client/src/views/project/member.vue create mode 100644 paas-ce/lesscode/lib/client/src/views/project/page.vue create mode 100644 paas-ce/lesscode/lib/client/src/views/system/account.vue create mode 100644 paas-ce/lesscode/lib/client/src/views/system/component-manage/all/components/operation.vue create mode 100644 paas-ce/lesscode/lib/client/src/views/system/component-manage/all/components/render-category.vue create mode 100644 paas-ce/lesscode/lib/client/src/views/system/component-manage/all/components/render-list.vue create mode 100644 paas-ce/lesscode/lib/client/src/views/system/component-manage/all/index.vue create mode 100644 paas-ce/lesscode/lib/client/src/views/system/component-manage/index.vue create mode 100644 paas-ce/lesscode/lib/client/src/views/system/component-manage/useing/index.vue create mode 100644 paas-ce/lesscode/lib/client/src/views/system/index.vue create mode 100644 paas-ce/lesscode/lib/client/src/views/system/projects.vue create mode 100644 paas-ce/lesscode/lib/server/conf/data-base.js.example delete mode 100644 paas-ce/lesscode/lib/server/conf/database.js rename paas-ce/lesscode/lib/server/conf/{http.js => http.js.example} (71%) create mode 100644 paas-ce/lesscode/lib/server/controller/component-category.js create mode 100644 paas-ce/lesscode/lib/server/controller/component.js create mode 100644 paas-ce/lesscode/lib/server/controller/function.js create mode 100644 paas-ce/lesscode/lib/server/controller/mock-data.js create mode 100644 paas-ce/lesscode/lib/server/controller/page.js rename paas-ce/lesscode/lib/server/controller/{data.js => perm.js} (65%) create mode 100644 paas-ce/lesscode/lib/server/controller/project.js delete mode 100644 paas-ce/lesscode/lib/server/controller/test.js create mode 100644 paas-ce/lesscode/lib/server/middleware/request-context.js delete mode 100644 paas-ce/lesscode/lib/server/model/Project.js delete mode 100644 paas-ce/lesscode/lib/server/model/ProjectConfig.js delete mode 100644 paas-ce/lesscode/lib/server/model/Role.js delete mode 100644 paas-ce/lesscode/lib/server/model/UserProjectRole.js create mode 100644 paas-ce/lesscode/lib/server/model/entities/base.js create mode 100644 paas-ce/lesscode/lib/server/model/entities/comp-category.js create mode 100644 paas-ce/lesscode/lib/server/model/entities/comp.js create mode 100644 paas-ce/lesscode/lib/server/model/entities/func-group.js create mode 100644 paas-ce/lesscode/lib/server/model/entities/func.js rename paas-ce/lesscode/lib/server/{service/index.js => model/entities/page-func.js} (68%) create mode 100644 paas-ce/lesscode/lib/server/model/entities/page.js rename paas-ce/lesscode/lib/server/model/{Permission.js => entities/perm.js} (71%) create mode 100644 paas-ce/lesscode/lib/server/model/entities/project-comp.js create mode 100644 paas-ce/lesscode/lib/server/model/entities/project-favourite.js create mode 100644 paas-ce/lesscode/lib/server/model/entities/project-func-group.js create mode 100644 paas-ce/lesscode/lib/server/model/entities/project-page.js create mode 100644 paas-ce/lesscode/lib/server/model/entities/project.js create mode 100644 paas-ce/lesscode/lib/server/model/entities/role-perm.js rename paas-ce/lesscode/lib/server/{service/project.js => model/entities/role.js} (70%) create mode 100644 paas-ce/lesscode/lib/server/model/entities/user-project-role.js rename paas-ce/lesscode/lib/server/model/{test.js => entities/user.js} (63%) create mode 100644 paas-ce/lesscode/lib/server/model/function.js delete mode 100644 paas-ce/lesscode/lib/server/model/index.js create mode 100644 paas-ce/lesscode/lib/server/model/page.js create mode 100644 paas-ce/lesscode/lib/server/model/perm.js create mode 100644 paas-ce/lesscode/lib/server/model/project.js create mode 100644 paas-ce/lesscode/lib/server/model/sql/20200707/initial.sql rename paas-ce/lesscode/lib/server/model/{User.js => user.js} (67%) create mode 100644 paas-ce/lesscode/lib/server/router/component-category.js create mode 100644 paas-ce/lesscode/lib/server/router/component.js create mode 100644 paas-ce/lesscode/lib/server/router/function.js rename paas-ce/lesscode/lib/server/router/{test.js => mock-data.js} (78%) create mode 100644 paas-ce/lesscode/lib/server/router/page.js rename paas-ce/lesscode/lib/server/router/{data.js => perm.js} (87%) create mode 100644 paas-ce/lesscode/lib/server/router/project.js diff --git a/paas-ce/lesscode/.babelrc b/paas-ce/lesscode/.babelrc index f9bfa61de..0beca1ece 100644 --- a/paas-ce/lesscode/.babelrc +++ b/paas-ce/lesscode/.babelrc @@ -18,6 +18,7 @@ "lodash", "@babel/plugin-syntax-dynamic-import", ["@babel/plugin-proposal-decorators", { "legacy": true }], + ["@babel/plugin-proposal-class-properties", { "loose" : true }], "@babel/plugin-proposal-function-sent", "@babel/plugin-proposal-export-namespace-from", "@babel/plugin-proposal-numeric-separator", @@ -32,6 +33,7 @@ "plugins": [ "istanbul", ["@babel/plugin-proposal-decorators", { "legacy": true }], + ["@babel/plugin-proposal-class-properties", { "loose" : true }], "@babel/plugin-proposal-function-sent", "@babel/plugin-proposal-export-namespace-from", "@babel/plugin-proposal-numeric-separator", diff --git a/paas-ce/lesscode/.eslintrc.js b/paas-ce/lesscode/.eslintrc.js index 4c059beb1..171060591 100644 --- a/paas-ce/lesscode/.eslintrc.js +++ b/paas-ce/lesscode/.eslintrc.js @@ -2,7 +2,10 @@ module.exports = { root: true, parserOptions: { parser: 'babel-eslint', - sourceType: 'module' + sourceType: 'module', + ecmaFeatures: { + legacyDecorators: true + } }, env: { browser: true @@ -23,7 +26,8 @@ module.exports = { APP_CODE: false, ENV: false, monaco: false, - ResizeSensor: false + ResizeSensor: false, + define: false }, // add your custom rules hered rules: { diff --git a/paas-ce/lesscode/.gitignore b/paas-ce/lesscode/.gitignore index de7b1fc8b..f3b76f6ce 100644 --- a/paas-ce/lesscode/.gitignore +++ b/paas-ce/lesscode/.gitignore @@ -26,3 +26,5 @@ lib/client/static/lib-manifest.json lib/client/static/lib.bundle.js lib/client/static/vue-layout-demo*.vue !lib/client/static/ResizeSensor.js +lib/server/conf/data-base.js +lib/server/conf/http.js diff --git a/paas-ce/lesscode/README.md b/paas-ce/lesscode/README.md index c3f6bb03d..19d064238 100644 --- a/paas-ce/lesscode/README.md +++ b/paas-ce/lesscode/README.md @@ -92,6 +92,7 @@ ## 安装部署 - [本地开发部署](./docs/install/dev_install.md) - [生产环境部署](./docs/install/prod_install.md) +- [数据库说明](./docs/install/database.md) ## 开发文档 - [自定义组件开发文档](./docs/develop/dev_com.md) diff --git a/paas-ce/lesscode/docs/install/database.md b/paas-ce/lesscode/docs/install/database.md new file mode 100644 index 000000000..fe6d9496f --- /dev/null +++ b/paas-ce/lesscode/docs/install/database.md @@ -0,0 +1,17 @@ +# 蓝鲸智云PaaS平台社区版之可视化开发平台 + +## 数据库说明 + +需要用户自己提供 MySQL 服务并做 db 授权。本地开发和生产环境的数据库初始化和变更流程是一样的,都需要自己执行SQL对数据库进行修改。执行 SQL 分两种,初始化时执行的 SQL 和升级时执行的 SQL。SQL 文件存放于 `lesscode/lib/server/model/sql` 文件夹下。 + +## 数据库配置说明 + +在本地开发和生产环境中,需要依照 [数据库配置示例](../../lib/server/conf/data-base.js.example) 在 `lesscode/lib/server/conf` 中新建 `data-base.js` 文件(复制 `data-base.js.example`,并删除 `.example`即可)。然后依照 `data-base.js.example` 的注释填写数据库的配置信息。 + +## 数据库初始化说明 + +在 `lesscode/lib/server/model/sql` 文件夹下,每次发版都会新建一个文件夹,以发布日期命名,里面的 `initial.sql` 为安装该版本需要的所有 SQL,包含了建表语句和初始化数据。初次安装的时候,需要手动执行该SQL,即完成了数据库初始化。注意:如果不是数据库初始化,执行该 SQL 会导致数据丢失。如果是升级,请按照数据库表结构变更来操作。 + +## 数据库表结构变更说明 + +在 `lesscode/lib/server/model/sql` 文件夹下,每次发布还会生成 `update.sql`,`update.sql` 是从上一个版本升级到这个版本的 SQL 语句,包含了修改表结构语句和初始化数据。如果这次升级数据库,跨越了3个版本,那么这3个版本的 `update.sql` 需要按照版本顺序都执行一次,即完成了数据库表结构变更。 diff --git a/paas-ce/lesscode/lib/client/build/webpack.base.conf.js b/paas-ce/lesscode/lib/client/build/webpack.base.conf.js index 8ece8b4d6..cd91c0263 100644 --- a/paas-ce/lesscode/lib/client/build/webpack.base.conf.js +++ b/paas-ce/lesscode/lib/client/build/webpack.base.conf.js @@ -97,8 +97,8 @@ module.exports = { resolve(__dirname, '..', 'src'), resolve(__dirname, '../../../node_modules', 'bk-magic-vue'), resolve(__dirname, '../../../node_modules', 'monaco-editor'), - resolve(__dirname, '../../../node_modules', 'vue-echarts'), - resolve(__dirname, '../../../node_modules', 'resize-detector') + resolve(__dirname, '../../../node_modules', 'vue-echarts') + // resolve(__dirname, '../../../node_modules', 'resize-detector') ], cacheDirectory: resolve(__dirname, '..', '.webpack_cache'), presets: [ diff --git a/paas-ce/lesscode/lib/client/src/App.vue b/paas-ce/lesscode/lib/client/src/App.vue index 0592c4863..970d8f791 100644 --- a/paas-ce/lesscode/lib/client/src/App.vue +++ b/paas-ce/lesscode/lib/client/src/App.vue @@ -21,11 +21,12 @@ - diff --git a/paas-ce/lesscode/lib/client/src/components/methods/funcForm.vue b/paas-ce/lesscode/lib/client/src/components/methods/funcForm.vue new file mode 100644 index 000000000..9c1358eb4 --- /dev/null +++ b/paas-ce/lesscode/lib/client/src/components/methods/funcForm.vue @@ -0,0 +1,291 @@ + + + + + diff --git a/paas-ce/lesscode/lib/client/src/components/methods/index.vue b/paas-ce/lesscode/lib/client/src/components/methods/index.vue index 4d3475897..9fc1baae8 100644 --- a/paas-ce/lesscode/lib/client/src/components/methods/index.vue +++ b/paas-ce/lesscode/lib/client/src/components/methods/index.vue @@ -1,395 +1,473 @@ - - + diff --git a/paas-ce/lesscode/lib/client/src/components/methods/label-list.vue b/paas-ce/lesscode/lib/client/src/components/methods/label-list.vue new file mode 100644 index 000000000..dbf94ee57 --- /dev/null +++ b/paas-ce/lesscode/lib/client/src/components/methods/label-list.vue @@ -0,0 +1,82 @@ + + + + + + diff --git a/paas-ce/lesscode/lib/client/src/components/methods/monaco.vue b/paas-ce/lesscode/lib/client/src/components/methods/monaco.vue new file mode 100644 index 000000000..e4838360f --- /dev/null +++ b/paas-ce/lesscode/lib/client/src/components/methods/monaco.vue @@ -0,0 +1,204 @@ + + + + + diff --git a/paas-ce/lesscode/lib/client/src/components/patch/chart/index.vue b/paas-ce/lesscode/lib/client/src/components/patch/chart/index.vue index d771a2586..0516927b6 100644 --- a/paas-ce/lesscode/lib/client/src/components/patch/chart/index.vue +++ b/paas-ce/lesscode/lib/client/src/components/patch/chart/index.vue @@ -11,9 +11,9 @@ + + diff --git a/paas-ce/lesscode/lib/client/src/components/ui/extra-links.vue b/paas-ce/lesscode/lib/client/src/components/ui/extra-links.vue new file mode 100644 index 000000000..c64ecafc5 --- /dev/null +++ b/paas-ce/lesscode/lib/client/src/components/ui/extra-links.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/paas-ce/lesscode/lib/client/src/components/ui/layout.vue b/paas-ce/lesscode/lib/client/src/components/ui/layout.vue new file mode 100644 index 000000000..c4ef5481b --- /dev/null +++ b/paas-ce/lesscode/lib/client/src/components/ui/layout.vue @@ -0,0 +1,178 @@ + + + diff --git a/paas-ce/lesscode/lib/client/src/components/vue-code/code-mixin.js b/paas-ce/lesscode/lib/client/src/components/vue-code/code-mixin.js index 60f54ed6f..751f8d663 100644 --- a/paas-ce/lesscode/lib/client/src/components/vue-code/code-mixin.js +++ b/paas-ce/lesscode/lib/client/src/components/vue-code/code-mixin.js @@ -8,7 +8,7 @@ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ - +import { mapGetters } from 'vuex' import { paramCase, camelCase } from 'change-case' const codeMixin = { @@ -46,21 +46,37 @@ const codeMixin = { this.chartTypeArr = [] } }, + computed: { + ...mapGetters('functions', ['funcGroups']) + }, methods: { getMethodById (methodId) { let returnMethod = { id: '', - funName: '', - code: 'function emptyFunc () {}' + funcName: 'emptyFunc', + previewStr: '', + vueCodeStr: '' } - const functionGroup = JSON.parse(localStorage.getItem('functionGroup')) - functionGroup.forEach((group) => { - const funChildren = group.children || [] + this.funcGroups.forEach((group) => { + const funChildren = group.functionList || [] const method = funChildren.find(x => x.id === methodId) if (method) { returnMethod = method } }) + const paramsStr = (returnMethod.funcParams || []).join(', ') + function addFuncStr (funcBody) { + return `${returnMethod.funcName} (${paramsStr}) { ${funcBody} }` + } + if (returnMethod.funcType === 1) { + const remoteParams = (returnMethod.remoteParams || []).join(', ') + const data = { url: returnMethod.funcApiUrl, type: returnMethod.funcMethod, apiData: returnMethod.funcApiData } + returnMethod.previewStr = addFuncStr(`return this.$store.dispatch('getApiData', ${JSON.stringify(data)}).then((${remoteParams}) => { ${returnMethod.funcBody} }).catch((err) => { console.error(err) })`) + returnMethod.vueCodeStr = addFuncStr(`return this.$http.${returnMethod.funcMethod}('${returnMethod.funcApiUrl}'${returnMethod.funcApiData ? `, ${returnMethod.funcApiData}` : ''}).then((${remoteParams}) => { ${returnMethod.funcBody} }).catch((err) => { console.error(err) })`) + } else { + returnMethod.previewStr = addFuncStr(returnMethod.funcBody) + returnMethod.vueCodeStr = addFuncStr(returnMethod.funcBody) + } return returnMethod }, @@ -71,7 +87,7 @@ const codeMixin = { const widthStr = item.renderProps.width && item.renderProps.width.val ? `width: ${item.renderProps.width.val}px;` : '' const heightStr = `height:${item.renderProps.height.val || 0}px;` return `
- +
\n` } else { // item.componentId = item.componentId.replace('_', '') @@ -183,12 +199,13 @@ const codeMixin = { }, getPropsStr (type, props, compId) { let propsStr = '' - compId = camelCase(compId) + const preCompId = camelCase(compId) for (const i in props) { if (i !== 'slots') { let propsValue = '' let putToData = false + compId = `${preCompId}${camelCase(i)}` if (typeof props[i].val === 'object' && props[i].type === 'array') { this.dataTemplate(compId, JSON.stringify(props[i].val)) putToData = true @@ -245,12 +262,12 @@ const codeMixin = { if (typeof events === 'object' && Object.keys(events).length) { for (const key in events) { const fun = this.getMethodById(events[key]) - if (fun.funName) { - eventStr += `@${key}="${fun.funName}" ` + if (fun.id) { + eventStr += `@${key}="${fun.funcName}" ` + const contentStr = this.pageType === 'vueCode' ? fun.vueCodeStr : fun.previewStr if (this.existFunc.indexOf(events[key]) === -1) { this.existFunc.push(events[key]) - const code = fun.code.replace('function ', '') - this.methodsStr += `${code},` + this.methodsStr += `${ contentStr },` } } } @@ -371,17 +388,16 @@ const codeMixin = { }, remoteMethodsTemplate (key, payload) { const method = this.getMethodById(payload.methodId) - const data = { - url: payload.url, - type: payload.method - } - const previewStr = `this.${key} = await this.$store.dispatch('getApiData', ${JSON.stringify(data)}).then(${method.code})` - const vueCodeStr = `this.${key} = await this.$http.${payload.method}('${payload.url}').then(${method.code})` - const contentStr = this.pageType === 'vueCode' ? vueCodeStr : previewStr + const contentStr = this.pageType === 'vueCode' ? method.vueCodeStr : method.previewStr this.methodsStr += ` async get${key} () { - ${contentStr} - },\n` + this.${key} = await this.${method.funcName}() + },` + + if (this.existFunc.indexOf(method.id) === -1) { + this.existFunc.push(method.id) + this.methodsStr += `${contentStr},` + } }, createdTemplate (key) { this.createdStr += `this.get${key}()\n` diff --git a/paas-ce/lesscode/lib/client/src/css/bk-patch.css b/paas-ce/lesscode/lib/client/src/css/bk-patch.css index ad58df046..7fb66f51d 100644 --- a/paas-ce/lesscode/lib/client/src/css/bk-patch.css +++ b/paas-ce/lesscode/lib/client/src/css/bk-patch.css @@ -14,3 +14,23 @@ button.bk-button { vertical-align: baseline; } + +.function-option { + .icon-info { + position: absolute; + right: 0; + top: 3px; + font-size: 16px; + width: 26px; + height: 26px; + line-height: 26px; + text-align: center; + } + .funtion-name { + display: block; + width: calc(100% - 10px); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } +} diff --git a/paas-ce/lesscode/lib/client/src/css/common.css b/paas-ce/lesscode/lib/client/src/css/common.css new file mode 100644 index 000000000..01cb7d8c0 --- /dev/null +++ b/paas-ce/lesscode/lib/client/src/css/common.css @@ -0,0 +1,32 @@ +/* page */ +.page-content { + padding: 16px 24px; + display: flex; + flex-direction: column; + height: 100%; + + .page-head { + display: flex; + margin-bottom: 20px; + + .extra { + flex: none; + margin-left: auto; + } + } + .page-body { + display: flex; + flex: 1; + + .page-body-inner { + display: flex; + flex: 1; + } + + .empty { + flex: 1; + display: flex; + align-items: center; + } + } +} diff --git a/paas-ce/lesscode/lib/client/src/custom/x-table/index.vue b/paas-ce/lesscode/lib/client/src/custom/x-table/index.vue index 844460a6f..2f2e5802e 100644 --- a/paas-ce/lesscode/lib/client/src/custom/x-table/index.vue +++ b/paas-ce/lesscode/lib/client/src/custom/x-table/index.vue @@ -109,15 +109,15 @@ props: { getTableListAjaxUrl: { type: String, - default: '' + default: '/data/getXTableData' }, postEditTableListAjaxUrl: { type: String, - default: '' + default: '/data/getXTableData' }, delTableListAjaxUrl: { type: String, - default: '' + default: '/data/getXTableData' } }, data () { @@ -248,7 +248,8 @@ async getTableData () { if (this.getTableListAjaxUrl) { await this.$http.get(this.getTableListAjaxUrl, { ...this.systemInfo }).then(res => { - this.reloadTable.splice(0, this.reloadTable.length, ...res.data.info) + this.tableData = res.data.msg + this.reloadTable = false }) } else { try { @@ -299,12 +300,16 @@ this.dialog.show = true if (this.postEditTableListAjaxUrl) { await this.$http.post(this.postEditTableListAjaxUrl, { ...this.editSourceId }).then(res => { - this.properties.source_name = res.data.cluster_config.cluster_name - this.properties.es_host = res.data.msg.cluster_config.domain_name - this.number = this.properties.es_port = res.data.cluster_config.port - this.properties.es_user = res.data.msg.cluster_config.username - this.properties.es_password = '******' - this.cluster_config.cluster_id = this.editSourceId + this.tableData = res.data.msg + this.reloadTable = false + if (res.data.msg[this.editSourceId - 1]) { + this.properties.source_name = res.data.msg[this.editSourceId - 1].cluster_config.cluster_name + this.properties.es_host = res.data.msg[this.editSourceId - 1].cluster_config.domain_name + this.number = this.properties.es_port = res.data.msg[this.editSourceId - 1].cluster_config.port + this.properties.es_user = res.data.msg[this.editSourceId - 1].cluster_config.username + this.properties.es_password = '******' + this.cluster_config.cluster_id = this.editSourceId + } }) } else { try { @@ -338,7 +343,9 @@ }) if (this.delTableListAjaxUrl) { this.$http.get(this.delTableListAjaxUrl, { ...obj }).then(res => { - this.reloadTable.splice(0, this.reloadTable.length, ...res.data.info) + this.$bkLoading.hide() + this.reloadTable = true + this.getTableData() }) } else { try { diff --git a/paas-ce/lesscode/lib/client/src/element-materials/modifier/events/index.vue b/paas-ce/lesscode/lib/client/src/element-materials/modifier/events/index.vue index 202cdaba2..66dcca905 100644 --- a/paas-ce/lesscode/lib/client/src/element-materials/modifier/events/index.vue +++ b/paas-ce/lesscode/lib/client/src/element-materials/modifier/events/index.vue @@ -19,14 +19,17 @@ - + :name="option.funcName"> + {{option.funcName}} +
@@ -38,7 +41,7 @@
该组件暂无事件
- + @@ -76,7 +79,8 @@ } }, computed: { - ...mapGetters('drag', ['functionGroup', 'pageData', 'curSelectedComponentData']) + ...mapGetters('drag', ['pageData', 'curSelectedComponentData']), + ...mapGetters('functions', ['funcGroups']) }, watch: { materialConfig: { diff --git a/paas-ce/lesscode/lib/client/src/element-materials/modifier/props/components/strategy/boolean.vue b/paas-ce/lesscode/lib/client/src/element-materials/modifier/props/components/strategy/boolean.vue index f14c30754..7547d8b49 100644 --- a/paas-ce/lesscode/lib/client/src/element-materials/modifier/props/components/strategy/boolean.vue +++ b/paas-ce/lesscode/lib/client/src/element-materials/modifier/props/components/strategy/boolean.vue @@ -9,6 +9,44 @@ specific language governing permissions and limitations under the License. --> -