Leo 2 年之前
父節點
當前提交
fd2b72054f
共有 2 個文件被更改,包括 85 次插入8 次删除
  1. 70 8
      src/module/datasource/component/DatasourceManage.jsx
  2. 15 0
      src/module/datasource/services/index.js

+ 70 - 8
src/module/datasource/component/DatasourceManage.jsx

@@ -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>
   )

+ 15 - 0
src/module/datasource/services/index.js

@@ -145,3 +145,18 @@ export const getAilabList = () =>
     method: 'get',
   })
 
+// 获取当前用户所有的项目
+export const getUserProjects = () =>
+  request({
+    url: `/jpt/project?user_id=${sessionStorage.getItem('user_id')}`,
+    method: 'get',
+  })
+
+// 分享表
+export const shareAilab = (params) =>
+  request({
+    url: `/jpt/datasource/share_ailab`,
+    method: 'post',
+    data: params
+  })
+