From c5b4cc41aaa8468cb0182eb58eb1ec9e2717a3a6 Mon Sep 17 00:00:00 2001 From: "xinxin.wu" Date: Wed, 9 Aug 2023 14:25:09 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E7=B3=BB=E7=BB=9F=E8=AE=BE=E7=BD=AE):=20?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E9=9B=86=E6=88=90=E9=A1=B5=E9=9D=A2=E6=90=AD?= =?UTF-8?q?=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/assets/images/ms_configplugin.jpg | Bin 0 -> 14379 bytes .../src/assets/images/ms_plugindownload.jpg | Bin 0 -> 14016 bytes frontend/src/assets/style/arco-reset.less | 22 ++ frontend/src/assets/svg/configplugin.svg | 76 +++++ frontend/src/assets/svg/downloadplugin.svg | 61 ++++ .../pure/ms-form-create/formCreate.vue | 20 ++ .../ms-form-create/formcreate-password.vue | 46 +++ frontend/src/locale/en-US/index.ts | 1 + frontend/src/locale/zh-CN/index.ts | 1 + frontend/src/main.ts | 2 - frontend/src/router/routes/modules/setting.ts | 10 + .../components/serviceList.vue | 290 ++++++++++++++++++ .../components/showModal.vue | 101 ++++++ .../organization/serviceIntegration/index.vue | 110 +++++++ .../serviceIntegration/locale/en-US.ts | 53 ++++ .../serviceIntegration/locale/zh-CN.ts | 48 +++ 16 files changed, 839 insertions(+), 2 deletions(-) create mode 100644 frontend/src/assets/images/ms_configplugin.jpg create mode 100644 frontend/src/assets/images/ms_plugindownload.jpg create mode 100644 frontend/src/assets/svg/configplugin.svg create mode 100644 frontend/src/assets/svg/downloadplugin.svg create mode 100644 frontend/src/components/pure/ms-form-create/formCreate.vue create mode 100644 frontend/src/components/pure/ms-form-create/formcreate-password.vue create mode 100644 frontend/src/views/setting/organization/serviceIntegration/components/serviceList.vue create mode 100644 frontend/src/views/setting/organization/serviceIntegration/components/showModal.vue create mode 100644 frontend/src/views/setting/organization/serviceIntegration/index.vue create mode 100644 frontend/src/views/setting/organization/serviceIntegration/locale/en-US.ts create mode 100644 frontend/src/views/setting/organization/serviceIntegration/locale/zh-CN.ts diff --git a/frontend/src/assets/images/ms_configplugin.jpg b/frontend/src/assets/images/ms_configplugin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..15c8f399cd92733d13cd757e3089d55c67edcaae GIT binary patch literal 14379 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 literal 0 HcmV?d00001 diff --git a/frontend/src/assets/style/arco-reset.less b/frontend/src/assets/style/arco-reset.less index 53830a40e5..6ae06ec160 100644 --- a/frontend/src/assets/style/arco-reset.less +++ b/frontend/src/assets/style/arco-reset.less @@ -574,3 +574,25 @@ } } } + +/** 折叠面板样式 **/ +.arco-collapse { + padding: 0; +} +.arco-collapse-item-header { + padding: 0; + border-bottom: none; +} +.arco-collapse-item-content-box { + padding: 0; +} +.arco-collapse-item-content { + padding: 0; + background: none; +} +.arco-collapse-item { + margin-bottom: 0 !important; +} +.arco-collapse-item-header-title { + font-weight: 500; +} diff --git a/frontend/src/assets/svg/configplugin.svg b/frontend/src/assets/svg/configplugin.svg new file mode 100644 index 0000000000..50f248f207 --- /dev/null +++ b/frontend/src/assets/svg/configplugin.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/assets/svg/downloadplugin.svg b/frontend/src/assets/svg/downloadplugin.svg new file mode 100644 index 0000000000..ab9e93a7bc --- /dev/null +++ b/frontend/src/assets/svg/downloadplugin.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/components/pure/ms-form-create/formCreate.vue b/frontend/src/components/pure/ms-form-create/formCreate.vue new file mode 100644 index 0000000000..9562709508 --- /dev/null +++ b/frontend/src/components/pure/ms-form-create/formCreate.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/frontend/src/components/pure/ms-form-create/formcreate-password.vue b/frontend/src/components/pure/ms-form-create/formcreate-password.vue new file mode 100644 index 0000000000..852ee482a8 --- /dev/null +++ b/frontend/src/components/pure/ms-form-create/formcreate-password.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/frontend/src/locale/en-US/index.ts b/frontend/src/locale/en-US/index.ts index fce8ee5d37..07560eed48 100644 --- a/frontend/src/locale/en-US/index.ts +++ b/frontend/src/locale/en-US/index.ts @@ -29,6 +29,7 @@ export default { 'menu.settings.system': 'System', 'menu.settings.organization': 'Organization', 'menu.settings.organization.member': 'Member', + 'menu.settings.organization.serviceIntegration': 'Service Integration', 'menu.settings.system.usergroup': 'User Group', 'menu.settings.system.pluginmanger': 'Plugin Manger', 'menu.settings.system.user': 'User', diff --git a/frontend/src/locale/zh-CN/index.ts b/frontend/src/locale/zh-CN/index.ts index 280db4668d..cef6899f98 100644 --- a/frontend/src/locale/zh-CN/index.ts +++ b/frontend/src/locale/zh-CN/index.ts @@ -29,6 +29,7 @@ export default { 'menu.settings.system': '系统', 'menu.settings.organization': '组织', 'menu.settings.organization.member': '成员', + 'menu.settings.organization.serviceIntegration': '服务集成', 'menu.settings.system.user': '用户', 'menu.settings.system.usergroup': '用户组', 'menu.settings.system.pluginmanger': '插件管理', diff --git a/frontend/src/main.ts b/frontend/src/main.ts index c26fb23e8a..e39aad5854 100644 --- a/frontend/src/main.ts +++ b/frontend/src/main.ts @@ -1,7 +1,6 @@ import { createApp } from 'vue'; import ArcoVue from '@arco-design/web-vue'; import '@arco-themes/vue-ms-theme-default/index.less'; -import FormCreate from '@form-create/arco-design'; import ArcoVueIcon from '@arco-design/web-vue/es/icon'; import SvgIcon from '@/components/pure/svg-icon/index.vue'; import MSIcon from '@/components/pure/ms-icon-font/index.vue'; @@ -28,7 +27,6 @@ async function bootstrap() { app.use(router); app.use(directive); - app.use(FormCreate); app.mount('#app'); } diff --git a/frontend/src/router/routes/modules/setting.ts b/frontend/src/router/routes/modules/setting.ts index 3c295e7949..5d898e921b 100644 --- a/frontend/src/router/routes/modules/setting.ts +++ b/frontend/src/router/routes/modules/setting.ts @@ -122,6 +122,16 @@ const Setting: AppRouteRecordRaw = { isTopMenu: true, }, }, + { + path: 'serviceIntegration', + name: 'settingOrganizationService', + component: () => import('@/views/setting/organization/serviceIntegration/index.vue'), + meta: { + locale: 'menu.settings.organization.serviceIntegration', + roles: ['*'], + isTopMenu: true, + }, + }, ], }, ], diff --git a/frontend/src/views/setting/organization/serviceIntegration/components/serviceList.vue b/frontend/src/views/setting/organization/serviceIntegration/components/serviceList.vue new file mode 100644 index 0000000000..c3e660a892 --- /dev/null +++ b/frontend/src/views/setting/organization/serviceIntegration/components/serviceList.vue @@ -0,0 +1,290 @@ + + + + + diff --git a/frontend/src/views/setting/organization/serviceIntegration/components/showModal.vue b/frontend/src/views/setting/organization/serviceIntegration/components/showModal.vue new file mode 100644 index 0000000000..933ebee6a0 --- /dev/null +++ b/frontend/src/views/setting/organization/serviceIntegration/components/showModal.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/frontend/src/views/setting/organization/serviceIntegration/index.vue b/frontend/src/views/setting/organization/serviceIntegration/index.vue new file mode 100644 index 0000000000..5cbee87688 --- /dev/null +++ b/frontend/src/views/setting/organization/serviceIntegration/index.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/frontend/src/views/setting/organization/serviceIntegration/locale/en-US.ts b/frontend/src/views/setting/organization/serviceIntegration/locale/en-US.ts new file mode 100644 index 0000000000..7e4ce56cf6 --- /dev/null +++ b/frontend/src/views/setting/organization/serviceIntegration/locale/en-US.ts @@ -0,0 +1,53 @@ +export default { + 'organization.service.searchPlugin': 'Search by plug-in name', + 'system.service.statusEnableTip': + 'Open: projects can integrate with the platform and generate default templates for the platform', + 'system.service.statusDisableTip': + 'Shutdown: the project can not integrate with the platform and the default template for the platform is not available', + 'organization.service.headerTip': 'Service integration usage guidelines', + 'organization.service.serviceIntegration': 'Service Integration', + 'organization.service.packUp': 'Pack Up', + 'organization.service.expand': 'Expand', + 'organization.service.downloadPluginOrDev': 'Download plug-ins or develop plug-ins', + 'organization.service.configPlugin': 'Configuring the plugin', + 'organization.service.downPlugin': 'Download the plugin', + 'organization.service.developmentDoc': 'Plug-in development documentation', + 'organization.service.description': + 'Download third-party project management platform plug-ins that need to be integrated; you can also develop your own relevant project management platform plug-ins', + 'organization.service.configDescription': + 'Downloaded or developed plug-ins need to be uploaded to plug-in management, upload, you can configure the current page', + 'organization.service.jumpPlugin': 'JUMP to plug-in management', + 'organization.service.testLink': 'Test link', + 'organization.service.unconfigured': 'Unconfigured', + 'organization.service.configured': 'Configured', + 'organization.service.methodOfAuthentication': 'Method of authentication', + 'organization.service.edit': 'Edit', + 'organization.service.unconfiguredTip': 'Not configured yet. Configure and open on the edit page', + 'organization.service.batchActionAddUsergroup': 'Add to usergroup', + 'organization.service.tableEnable': 'Enabled', + 'organization.service.tableDisable': 'Disabled', + 'organization.service.tableColunmEmail': 'Email', + 'organization.service.tableColunmName': 'Name', + 'organization.service.tableColunmPhone': 'Phone', + 'organization.service.tableColunmPro': 'Project', + 'organization.service.tableColunmUsergroup': 'UserGroup', + 'organization.service.tableColunmStatus': 'Status', + 'organization.service.tableColunmActions': 'Actions', + 'organization.service.service': 'Member', + 'organization.service.selectMemberScope': 'Select the service you want to add. Multiple selection is supported', + 'organization.service.selectProjectScope': 'Select the project you want to add. Multiple selection is supported', + 'organization.service.selectMemberEmptyTip': 'The service can not be empty', + 'organization.service.selectProjectEmptyTip': 'The project can not be empty', + 'organization.service.selectUserEmptyTip': 'The user group can not be empty', + 'organization.service.Confirm': 'Confirm', + 'organization.service.Cancel': 'Cancel', + 'organization.service.deleteMemberTip': 'Are you sure to remove the user `{name}` ?', + 'system.user.deleteUserTip': 'Are you sure to delete the user `{name}` ?', + 'organization.service.deleteMemberConfirm': 'Delete', + 'organization.service.deleteMemberCancel': 'Cancel', + 'organization.service.deleteMemberSuccess': 'Delete successful', + 'organization.service.batchModalSuccess': 'Successfully added', + 'organization.service.batchUpdateSuccess': 'Successfully updated', + 'organization.service.proejct': 'Project', + 'organization.service.selectUserScope': 'Please select a user group for the above members', +}; diff --git a/frontend/src/views/setting/organization/serviceIntegration/locale/zh-CN.ts b/frontend/src/views/setting/organization/serviceIntegration/locale/zh-CN.ts new file mode 100644 index 0000000000..004bd32ba6 --- /dev/null +++ b/frontend/src/views/setting/organization/serviceIntegration/locale/zh-CN.ts @@ -0,0 +1,48 @@ +export default { + 'organization.service.searchPlugin': '通过插件名称搜索', + 'organization.service.statusEnableTip': '开启:项目可以与该平台集成并生成该平台的默认模版', + 'organization.service.statusDisableTip': '关闭:项目无法与该平台集成且该平台默认模版不可用', + 'organization.service.headerTip': '服务集成 使用指引', + 'organization.service.serviceIntegration': '服务集成', + 'organization.service.packUp': '收起', + 'organization.service.expand': '展开', + 'organization.service.downloadPluginOrDev': '下载插件或开发插件', + 'organization.service.configPlugin': '配置插件', + 'organization.service.downPlugin': '下载插件', + 'organization.service.developmentDoc': '插件开发文档', + 'organization.service.description': '下载需要集成的第三方项目管理平台插件;也可以自行开发相关项目管理平台插件', + 'organization.service.configDescription': '已下载或已开发的插件需上传至插件管理,上传后,可在当前页进行配置', + 'organization.service.jumpPlugin': '跳转至插件管理', + 'organization.service.testLink': '测试链接', + 'organization.service.unconfigured': '未配置', + 'organization.service.configured': '已配置', + 'organization.service.methodOfAuthentication': '认证方式', + 'organization.service.edit': '编辑', + 'organization.service.unconfiguredTip': '暂未配置,可在编辑页配置并开启', + 'organization.service.batchActionAddUsergroup': '添加至用户组', + 'organization.service.tableEnable': '正常', + 'organization.service.tableDisable': '禁用', + 'organization.service.tableColunmEmail': '邮箱', + 'organization.service.tableColunmName': '姓名', + 'organization.service.tableColunmPhone': '手机', + 'organization.service.tableColunmPro': '项目', + 'organization.service.tableColunmUsergroup': '用户组', + 'organization.service.tableColunmStatus': '状态', + 'organization.service.tableColunmActions': '操作', + 'organization.service.service': '成员', + 'organization.service.selectMemberScope': '请选择需要添加的成员支持多选', + 'organization.service.selectProjectScope': '请选择需要添加的项目支持多选', + 'organization.service.selectMemberEmptyTip': '成员不能为空', + 'organization.service.selectProjectEmptyTip': '项目不能为空', + 'organization.service.selectUserEmptyTip': '用户组不能为空', + 'organization.service.Confirm': '确定', + 'organization.service.Cancel': '取消', + 'organization.service.deleteMemberTip': '确认移除 `{name}` 这个成员吗?', + 'organization.service.deleteMemberConfirm': '确认删除', + 'organization.service.deleteMemberCancel': '取消', + 'organization.service.deleteMemberSuccess': '删除成功', + 'organization.service.batchModalSuccess': '添加成功', + 'organization.service.batchUpdateSuccess': '更新成功', + 'organization.service.proejct': '项目', + 'organization.service.selectUserScope': '请为以上成员选择用户组', +};