|
@@ -8,8 +8,12 @@ import {
|
|
|
getTableNamesList,
|
|
|
getDataSourceInfo,
|
|
|
getAilabList,
|
|
|
+ getUserProjects,
|
|
|
+ shareAilab,
|
|
|
} from '../services'
|
|
|
|
|
|
+const { Option } = Select
|
|
|
+
|
|
|
export default function DatasourceManage({ onRef, dataType }) {
|
|
|
// 查看数据源弹窗是否可可视
|
|
|
const [dataModalVisible, setDataModalVisible] = useState(false)
|
|
@@ -37,6 +41,11 @@ export default function DatasourceManage({ onRef, dataType }) {
|
|
|
const [isShareData, setIsShareData] = useState(false)
|
|
|
//选择表格项
|
|
|
const [selectedRowKeys, setSelectedRowKeys] = useState([])
|
|
|
+ // 分享的ailab表
|
|
|
+ const [selectedAilabTable, setSelectedAilabTable] = useState([])
|
|
|
+ const [projectsList, setProjectsList] = useState([])
|
|
|
+ const [selectedProjects, setSelectedProjects] = useState([])
|
|
|
+
|
|
|
const onSelectChange = newSelectedRowKeys => {
|
|
|
setSelectedRowKeys(newSelectedRowKeys)
|
|
|
}
|
|
@@ -70,6 +79,7 @@ export default function DatasourceManage({ onRef, dataType }) {
|
|
|
if (data.code === 200) {
|
|
|
const list = data.data.map(item => {
|
|
|
return {
|
|
|
+ key: item,
|
|
|
datatable_name: item,
|
|
|
}
|
|
|
})
|
|
@@ -113,7 +123,6 @@ export default function DatasourceManage({ onRef, dataType }) {
|
|
|
setTableWatcher(false)
|
|
|
}
|
|
|
|
|
|
- // componentDidMount
|
|
|
useEffect(() => {
|
|
|
switch (dataType) {
|
|
|
case 'datasource':
|
|
@@ -129,6 +138,27 @@ export default function DatasourceManage({ onRef, dataType }) {
|
|
|
}
|
|
|
}, [dataType])
|
|
|
|
|
|
+ useEffect(() => {
|
|
|
+ if (isShareData) {
|
|
|
+ fetchProjects()
|
|
|
+ }
|
|
|
+ }, [isShareData])
|
|
|
+
|
|
|
+ const fetchProjects = async () => {
|
|
|
+ const { data } = await getUserProjects()
|
|
|
+ if (data.code === 200) {
|
|
|
+ const list = data.data.map(item => {
|
|
|
+ return {
|
|
|
+ label: item.name,
|
|
|
+ value: item.id,
|
|
|
+ }
|
|
|
+ })
|
|
|
+ setProjectsList(list)
|
|
|
+ } else {
|
|
|
+ message.error(data.msg)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// 格式化事件
|
|
|
const formatTime = time => {
|
|
|
const date = new Date(Number(time) * 1000)
|
|
@@ -243,7 +273,8 @@ export default function DatasourceManage({ onRef, dataType }) {
|
|
|
<Button
|
|
|
type="link"
|
|
|
onClick={() => {
|
|
|
- editData(record.key)
|
|
|
+ setIsShareData(true)
|
|
|
+ setSelectedAilabTable([record.key])
|
|
|
}}>
|
|
|
分享
|
|
|
</Button>
|
|
@@ -314,32 +345,63 @@ export default function DatasourceManage({ onRef, dataType }) {
|
|
|
const shareBtn = () => (
|
|
|
<Button
|
|
|
type="link"
|
|
|
+ disabled={!selectedRowKeys.length}
|
|
|
onClick={() => {
|
|
|
+ setSelectedAilabTable(selectedRowKeys)
|
|
|
setIsShareData(true)
|
|
|
}}>
|
|
|
批量分享
|
|
|
</Button>
|
|
|
)
|
|
|
|
|
|
- const shareTable = () => {}
|
|
|
+ const shareTable = async () => {
|
|
|
+ if (selectedProjects.length) {
|
|
|
+ const parmas = {
|
|
|
+ table_names: selectedAilabTable,
|
|
|
+ project_ids: selectedProjects,
|
|
|
+ }
|
|
|
+ const { data } = await shareAilab(parmas)
|
|
|
+ if (data.code === 200) {
|
|
|
+ message.success('分享成功')
|
|
|
+ setIsShareData(false)
|
|
|
+ setSelectedProjects([])
|
|
|
+ } else {
|
|
|
+ message.error(data.msg)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ message.error('请选择项目')
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
const shareMadal = (
|
|
|
<Modal
|
|
|
title="分享数据表"
|
|
|
visible={isShareData}
|
|
|
- onOK={shareTable}
|
|
|
+ onOk={shareTable}
|
|
|
okText="确认分享"
|
|
|
onCancel={() => {
|
|
|
setIsShareData(false)
|
|
|
+ setSelectedProjects([])
|
|
|
}}>
|
|
|
<Space style={{ padding: '10px 20px 30px' }}>
|
|
|
<span>选择分享至:</span>
|
|
|
<Select
|
|
|
- name=""
|
|
|
- id=""
|
|
|
- showArrow="true"
|
|
|
+ mode="multiple"
|
|
|
+ value={selectedProjects}
|
|
|
+ onChange={val => setSelectedProjects(val)}
|
|
|
style={{ width: '300px' }}
|
|
|
- placeholder="请选择项目"></Select>
|
|
|
+ showArrow
|
|
|
+ showSearch
|
|
|
+ optionFilterProp="label"
|
|
|
+ placeholder="请选择项目">
|
|
|
+ {projectsList.map(item => {
|
|
|
+ return (
|
|
|
+ <Option key={item.value} value={item.value} label={item.label}>
|
|
|
+ {item.label}
|
|
|
+ </Option>
|
|
|
+ )
|
|
|
+ })}
|
|
|
+ </Select>
|
|
|
</Space>
|
|
|
</Modal>
|
|
|
)
|