diff --git a/frontend/eslint.config.cjs b/frontend/eslint.config.cjs index 109373cb..9d87cc93 100644 --- a/frontend/eslint.config.cjs +++ b/frontend/eslint.config.cjs @@ -28,6 +28,7 @@ module.exports = typescriptEslint.config( 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 'vue/multi-word-component-names': 'off', 'vue/no-required-prop-with-default': 'off', + 'vue/no-v-html': 'off', '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/ban-ts-comment': 'warn', diff --git a/frontend/src/assets/datasource/icon_PostgreSQL.png b/frontend/src/assets/datasource/icon_PostgreSQL.png new file mode 100644 index 00000000..b120f82b Binary files /dev/null and b/frontend/src/assets/datasource/icon_PostgreSQL.png differ diff --git a/frontend/src/assets/datasource/icon_SQL_Server.png b/frontend/src/assets/datasource/icon_SQL_Server.png new file mode 100644 index 00000000..f2b4fcd2 Binary files /dev/null and b/frontend/src/assets/datasource/icon_SQL_Server.png differ diff --git a/frontend/src/assets/datasource/icon_excel.png b/frontend/src/assets/datasource/icon_excel.png new file mode 100644 index 00000000..6fcd47a0 Binary files /dev/null and b/frontend/src/assets/datasource/icon_excel.png differ diff --git a/frontend/src/assets/datasource/icon_mysql.png b/frontend/src/assets/datasource/icon_mysql.png new file mode 100644 index 00000000..3a094258 Binary files /dev/null and b/frontend/src/assets/datasource/icon_mysql.png differ diff --git a/frontend/src/assets/datasource/icon_oracle.png b/frontend/src/assets/datasource/icon_oracle.png new file mode 100644 index 00000000..26b323d1 Binary files /dev/null and b/frontend/src/assets/datasource/icon_oracle.png differ diff --git a/frontend/src/assets/svg/icon-key_outlined.svg b/frontend/src/assets/svg/icon-key_outlined.svg new file mode 100644 index 00000000..1045f405 --- /dev/null +++ b/frontend/src/assets/svg/icon-key_outlined.svg @@ -0,0 +1,4 @@ + + + + diff --git a/frontend/src/assets/svg/icon-maybe_outlined.svg b/frontend/src/assets/svg/icon-maybe_outlined.svg new file mode 100644 index 00000000..5e8a31aa --- /dev/null +++ b/frontend/src/assets/svg/icon-maybe_outlined.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/src/assets/svg/icon_chat_outlined.svg b/frontend/src/assets/svg/icon_chat_outlined.svg new file mode 100644 index 00000000..8027cf8a --- /dev/null +++ b/frontend/src/assets/svg/icon_chat_outlined.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/src/assets/svg/icon_form_outlined.svg b/frontend/src/assets/svg/icon_form_outlined.svg new file mode 100644 index 00000000..644e0c22 --- /dev/null +++ b/frontend/src/assets/svg/icon_form_outlined.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/src/assets/svg/icon_logout_outlined.svg b/frontend/src/assets/svg/icon_logout_outlined.svg new file mode 100644 index 00000000..69d2c9d1 --- /dev/null +++ b/frontend/src/assets/svg/icon_logout_outlined.svg @@ -0,0 +1,4 @@ + + + + diff --git a/frontend/src/assets/svg/icon_moments-categories_outlined.svg b/frontend/src/assets/svg/icon_moments-categories_outlined.svg index a7226e4b..51a89af8 100644 --- a/frontend/src/assets/svg/icon_moments-categories_outlined.svg +++ b/frontend/src/assets/svg/icon_moments-categories_outlined.svg @@ -1,4 +1,4 @@ - - - + + + diff --git a/frontend/src/assets/svg/icon_right_outlined.svg b/frontend/src/assets/svg/icon_right_outlined.svg new file mode 100644 index 00000000..e166a0f7 --- /dev/null +++ b/frontend/src/assets/svg/icon_right_outlined.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/src/assets/svg/icon_translate_outlined.svg b/frontend/src/assets/svg/icon_translate_outlined.svg new file mode 100644 index 00000000..a7c7d59e --- /dev/null +++ b/frontend/src/assets/svg/icon_translate_outlined.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/frontend/src/components/layout/LayoutDsl.vue b/frontend/src/components/layout/LayoutDsl.vue index 5acfa145..aa4942fe 100644 --- a/frontend/src/components/layout/LayoutDsl.vue +++ b/frontend/src/components/layout/LayoutDsl.vue @@ -1,11 +1,12 @@
+
@@ -28,12 +30,8 @@ const handleFoldExpand = () => { {{ collapse ? '' : '返回工作空间' }}
- - - - - {{ collapse ? '' : '飞小致' }} - + + @@ -97,10 +95,6 @@ const handleFoldExpand = () => { display: flex; align-items: center; margin-top: 16px; - .default-avatar { - margin-right: 8px; - cursor: pointer; - } .fold { cursor: pointer; @@ -153,6 +147,10 @@ const handleFoldExpand = () => { box-shadow: 0px 2px 4px 0px #1f23291f; background-color: #fff; border-radius: 12px; + + &:has(.no-padding) { + padding: 0; + } } } } diff --git a/frontend/src/components/layout/Menu.vue b/frontend/src/components/layout/Menu.vue index 0cb63e40..327d3df7 100644 --- a/frontend/src/components/layout/Menu.vue +++ b/frontend/src/components/layout/Menu.vue @@ -33,7 +33,7 @@ const activeIndex = computed(() => { height: 40px; border-radius: 6px; &.is-active.is-active.is-active { - background-color: #1CBA901A; + background-color: #1cba901a; } } } diff --git a/frontend/src/components/layout/MenuItem.vue b/frontend/src/components/layout/MenuItem.vue index 506ce9e2..ea938bc1 100644 --- a/frontend/src/components/layout/MenuItem.vue +++ b/frontend/src/components/layout/MenuItem.vue @@ -3,9 +3,11 @@ import { h } from 'vue' import { ElMenuItem, ElSubMenu, ElIcon } from 'element-plus-secondary' import model from '@/assets/svg/icon_dataset_filled.svg' +import ds from '@/assets/svg/ds.svg' const iconMap = { icon_ai: model, + ds, } as { [key: string]: any } const titleWithIcon = (props: any) => { diff --git a/frontend/src/components/layout/Person.vue b/frontend/src/components/layout/Person.vue new file mode 100644 index 00000000..e7882fe4 --- /dev/null +++ b/frontend/src/components/layout/Person.vue @@ -0,0 +1,275 @@ + + + + + + + diff --git a/frontend/src/components/layout/Workspace.vue b/frontend/src/components/layout/Workspace.vue new file mode 100644 index 00000000..09320e5b --- /dev/null +++ b/frontend/src/components/layout/Workspace.vue @@ -0,0 +1,195 @@ + + + + + + + diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts index 21579f32..1839cb34 100644 --- a/frontend/src/router/index.ts +++ b/frontend/src/router/index.ts @@ -5,7 +5,7 @@ import LayoutDsl from '@/components/layout/LayoutDsl.vue' import SinglePage from '@/components/layout/SinglePage.vue' import login from '@/views/login/index.vue' import chat from '@/views/chat/index.vue' -import ds from '@/views/ds/index.vue' +import Datasource from '@/views/ds/Datasource.vue' import DashboardEditor from '@/views/dashboard/editor/index.vue' import DashboardPreview from '@//views/dashboard/preview/SQPreviewSingle.vue' import Dashboard from '@/views/dashboard/index.vue' @@ -48,13 +48,13 @@ const router = createRouter({ }, { path: '/ds', - component: Layout, + component: LayoutDsl, redirect: '/ds/index', children: [ { path: 'index', name: 'ds', - component: ds, + component: Datasource, meta: { title: 'Data Connections', icon: 'ds' }, }, ], diff --git a/frontend/src/views/ds/Card.vue b/frontend/src/views/ds/Card.vue new file mode 100644 index 00000000..7ff12d16 --- /dev/null +++ b/frontend/src/views/ds/Card.vue @@ -0,0 +1,257 @@ + + + + + + + diff --git a/frontend/src/views/ds/DataTable.vue b/frontend/src/views/ds/DataTable.vue new file mode 100644 index 00000000..8fd03997 --- /dev/null +++ b/frontend/src/views/ds/DataTable.vue @@ -0,0 +1,475 @@ + + + + + diff --git a/frontend/src/views/ds/Datasource.vue b/frontend/src/views/ds/Datasource.vue new file mode 100644 index 00000000..efc34f1f --- /dev/null +++ b/frontend/src/views/ds/Datasource.vue @@ -0,0 +1,386 @@ + + + + + + + diff --git a/frontend/src/views/ds/DatasourceForm.vue b/frontend/src/views/ds/DatasourceForm.vue new file mode 100644 index 00000000..7e6b47d8 --- /dev/null +++ b/frontend/src/views/ds/DatasourceForm.vue @@ -0,0 +1,667 @@ + + + + + diff --git a/frontend/src/views/ds/DatasourceList.vue b/frontend/src/views/ds/DatasourceList.vue new file mode 100644 index 00000000..bcf9f256 --- /dev/null +++ b/frontend/src/views/ds/DatasourceList.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/frontend/src/views/ds/DatasourceListSide.vue b/frontend/src/views/ds/DatasourceListSide.vue new file mode 100644 index 00000000..ece6f551 --- /dev/null +++ b/frontend/src/views/ds/DatasourceListSide.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/frontend/src/views/ds/ParamsForm.vue b/frontend/src/views/ds/ParamsForm.vue new file mode 100644 index 00000000..b9898754 --- /dev/null +++ b/frontend/src/views/ds/ParamsForm.vue @@ -0,0 +1,66 @@ + + + + + diff --git a/frontend/src/views/ds/TableList.vue b/frontend/src/views/ds/TableList.vue index ae7af207..cc371f0a 100644 --- a/frontend/src/views/ds/TableList.vue +++ b/frontend/src/views/ds/TableList.vue @@ -105,7 +105,7 @@ @closed="closeTable" >
{{ t('ds.edit.table_comment_label') }}
- +
{{ t('common.cancel') }} {{ t('common.confirm') }} @@ -121,7 +121,7 @@ @closed="closeField" >
{{ t('ds.edit.field_comment_label') }}
- +
{{ t('common.cancel') }} {{ t('common.confirm') }} diff --git a/frontend/src/views/ds/js/ds-type.ts b/frontend/src/views/ds/js/ds-type.ts index 2fb2ed86..8a022be9 100644 --- a/frontend/src/views/ds/js/ds-type.ts +++ b/frontend/src/views/ds/js/ds-type.ts @@ -1,3 +1,9 @@ +import mysql_ds from '@/assets/datasource/icon_mysql.png' +import excel from '@/assets/datasource/icon_excel.png' +import oracle from '@/assets/datasource/icon_oracle.png' +import pg from '@/assets/datasource/icon_PostgreSQL.png' +import sqlServer from '@/assets/datasource/icon_SQL_Server.png' + export const dsType = [ { label: 'MySQL', value: 'mysql' }, { label: 'PostgreSQL', value: 'pg' }, @@ -6,4 +12,12 @@ export const dsType = [ { label: 'Excel/CSV', value: 'excel' }, ] +export const dsTypeWithImg = [ + { name: 'MySQL', type: 'mysql', img: mysql_ds }, + { name: 'PostgreSQL', type: 'pg', img: pg }, + { name: 'Microsoft SQL Server', type: 'sqlServer', img: sqlServer }, + { name: 'Oracle', type: 'oracle', img: oracle }, + { name: '本地 Excel/CSV', type: 'excel', img: excel }, +] + export const haveSchema = ['sqlServer', 'pg', 'oracle'] diff --git a/frontend/src/views/system/model/Card.vue b/frontend/src/views/system/model/Card.vue index 5ce7cd5d..b8ecc5ae 100644 --- a/frontend/src/views/system/model/Card.vue +++ b/frontend/src/views/system/model/Card.vue @@ -48,14 +48,14 @@ const handleDel = () => {
- +