fix: Assistant change ds by workspace

This commit is contained in:
fit2cloud-chenyw
2025-07-25 21:47:27 +08:00
parent a26b8e5335
commit a37fc3507b
4 changed files with 24 additions and 11 deletions
@@ -18,6 +18,11 @@ from ..models.datasource import CoreDatasource, CreateDatasource, TableObj, Core
router = APIRouter(tags=["datasource"], prefix="/datasource")
path = "/opt/sqlbot/data/excel"
@router.get("/ws/{oid}", include_in_schema=False)
async def query_by_oid(session: SessionDep, user: CurrentUser, oid: int) -> List[CoreDatasource]:
if not user.isAdmin:
raise Exception("no permission to execute")
return get_datasource_list(session=session, user=user, oid=oid)
@router.get("/list")
async def datasource_list(session: SessionDep, user: CurrentUser):
+8 -5
View File
@@ -1,6 +1,6 @@
import datetime
import json
from typing import List
from typing import List, Optional
from fastapi import HTTPException
from sqlalchemy import and_, text, cast, or_, func
@@ -25,10 +25,13 @@ from ..models.datasource import CoreDatasource, CreateDatasource, CoreTable, Cor
DatasourceConf, TableAndFields
def get_datasource_list(session: SessionDep, user: CurrentUser):
oid = user.oid if user.oid is not None else 1
return session.query(CoreDatasource).filter(CoreDatasource.oid == oid).order_by(
func.convert_to(CoreDatasource.name, 'gbk')).all()
def get_datasource_list(session: SessionDep, user: CurrentUser, oid: Optional[int] = None) -> List[CoreDatasource]:
current_oid = user.oid if user.oid is not None else 1
if user.isAdmin and oid:
current_oid = oid
return session.exec(select(CoreDatasource).where(CoreDatasource.oid == current_oid).order_by(
func.convert_to(CoreDatasource.name, 'gbk'))).all()
def get_ds(session: SessionDep, id: int):
+1
View File
@@ -5,3 +5,4 @@ export const updateAssistant = (data: any) => request.put('/system/assistant', d
export const saveAssistant = (data: any) => request.post('/system/assistant', data)
export const getOne = (id: any) => request.get(`/system/assistant/${id}`)
export const delOne = (id: any) => request.delete(`/system/assistant/${id}`)
export const dsApi = (id: any) => request.get(`/datasource/ws/${id}`)
+10 -6
View File
@@ -14,8 +14,7 @@ import icon_copy_outlined from '@/assets/embedded/icon_copy_outlined.svg'
import Card from './Card.vue'
import { workspaceList } from '@/api/workspace'
import DsCard from './DsCard.vue'
import { datasourceApi } from '@/api/datasource'
import { getList, updateAssistant, saveAssistant, delOne } from '@/api/embedded'
import { getList, updateAssistant, saveAssistant, delOne, dsApi } from '@/api/embedded'
import { useI18n } from 'vue-i18n'
import { cloneDeep } from 'lodash-es'
@@ -49,7 +48,7 @@ const currentEmbedded = reactive<any>(cloneDeep(defaultEmbedded))
const isCreate = ref(false)
const defaultForm = {
oid: '',
oid: 1,
private_list: [] as any,
}
const dsForm = reactive(cloneDeep(defaultForm))
@@ -107,9 +106,13 @@ const handleAddEmbedded = (val: any) => {
handleAdvancedEmbedded(null)
}
}
const wsChanged = (val: any) => {
dsForm.private_list = []
dsForm.oid = val
getDsList()
}
const getDsList = () => {
datasourceApi.list().then((res: any) => {
dsApi(dsForm.oid).then((res: any) => {
dsListOptions.value = res || []
if (!currentEmbedded.id) {
dsForm.private_list = dsListOptions.value.map((ele) => ele.id)
@@ -119,10 +122,10 @@ const getDsList = () => {
const handleBaseEmbedded = (row: any) => {
advancedApplication.value = false
initWorkspace()
getDsList()
if (row) {
Object.assign(dsForm, JSON.parse(row.configuration))
}
getDsList()
ruleConfigvVisible.value = true
dialogTitle.value = row?.id
? t('embedded.edit_basic_applications')
@@ -697,6 +700,7 @@ const saveHandler = () => {
:placeholder="
$t('datasource.please_enter') + $t('common.empty') + $t('user.workspace')
"
@change="wsChanged"
>
<el-option
v-for="item in workspaces"