Browse Source

权限调整

Leo 2 years ago
parent
commit
7d3a3d6031

+ 9 - 6
src/module/datasource/component/DataTableStruct.jsx

@@ -1,7 +1,8 @@
-import React, { useEffect, useRef, useState, useImperativeHandle } from 'react'
+import React, { useRef, useImperativeHandle } from 'react'
 import { Table } from 'antd'
 import styled from 'styled-components'
 import JsonEditor from './utils/JsonEditor'
+import PropTypes from 'prop-types'
 
 const DataTable = styled.div`
   height: 100%;
@@ -22,7 +23,6 @@ export default function DataTableStruct({
   datax,
   onRef,
 }) {
-  const [jsonData, setjsonData] = useState(null)
   const jsonValue = useRef()
 
   useImperativeHandle(onRef, () => {
@@ -49,10 +49,6 @@ export default function DataTableStruct({
     },
   ]
 
-  useEffect(() => {
-    setjsonData(datax)
-  }, [datax])
-
   let content = (
     <Table columns={columns} dataSource={tableData} className={'table-style'} />
   )
@@ -62,3 +58,10 @@ export default function DataTableStruct({
 
   return <DataTable>{content}</DataTable>
 }
+
+DataTableStruct.propTypes = {
+  currentStep: PropTypes.number,
+  tableData: PropTypes.array,
+  datax: PropTypes.object,
+  onRef: PropTypes.object,
+}

+ 6 - 0
src/module/datasource/component/DatasourceData.jsx

@@ -2,6 +2,7 @@ import React, { useEffect, useMemo, useState } from 'react'
 import styled from 'styled-components'
 import { Tree, Tabs, Table, Input } from 'antd'
 import { getTableData, getTableSchema } from '../services'
+import PropTypes from 'prop-types'
 
 const { DirectoryTree } = Tree
 const { TabPane } = Tabs
@@ -193,4 +194,9 @@ const DatasourceData = props => {
   )
 }
 
+DatasourceData.propTypes = {
+  data: PropTypes.array,
+  datasourceId: PropTypes.number,
+}
+
 export default DatasourceData

+ 5 - 5
src/module/datasource/component/DatasourceEdit.jsx

@@ -275,14 +275,14 @@ export default function DatasourceAdd({
         gutter: [45, 0],
       }}
       submitter={{
-        render: props => {
+        render: prop => {
           return [
             <div style={{ display: 'flex', justifyContent: 'flex-end' }}>
               <Space>
                 <Button
                   type="button"
                   key="rest"
-                  onClick={() => props.form?.resetFields()}>
+                  onClick={() => prop.form?.resetFields()}>
                   重置
                 </Button>
                 <Button type="primary" key="submit" onClick={() => finishAdd()}>
@@ -444,7 +444,7 @@ export default function DatasourceAdd({
       </Col>
 
       {dataType === 'hive' && kerbsValid ? (
-        <>
+        <div>
           <ProFormUploadButton
             label="keytab文件"
             title={
@@ -486,9 +486,9 @@ export default function DatasourceAdd({
               onChange: e => setPrincipal(e.target.value),
             }}
           />
-        </>
+        </div>
       ) : (
-        <></>
+        <div></div>
       )}
     </ProForm>
   )

+ 9 - 1
src/module/datasource/component/DatasourceLog.jsx

@@ -3,6 +3,7 @@ import { Table, Space, message } from 'antd'
 import { getJoblog, refreshLogsStatus } from '../services'
 import moment from 'moment'
 import { useNavigate } from 'react-router-dom'
+import PropTypes from 'prop-types'
 
 let timeout = null
 
@@ -160,7 +161,7 @@ const DatasourceLog = ({ onRef, logId, page, page_size }) => {
 
   useEffect(() => {
     fetchJoblog(page, page_size)
-  }, [logId, page, page_size, sessionStorage.getItem('project_id')])
+  }, [logId, page, page_size, localStorage.getItem('project_id')])
 
   useEffect(() => {
     return () => {
@@ -184,4 +185,11 @@ const DatasourceLog = ({ onRef, logId, page, page_size }) => {
   )
 }
 
+DatasourceLog.propTypes = {
+  onRef: PropTypes.object,
+  logId: PropTypes.number,
+  page: PropTypes.number,
+  page_size: PropTypes.number,
+}
+
 export default DatasourceLog

+ 26 - 20
src/module/datasource/component/DatasourceManage.jsx

@@ -37,6 +37,7 @@ import {
   editDataLake,
 } from '../services'
 import moment from 'moment'
+import PropTypes from 'prop-types'
 
 const { Option } = Select
 const { TabPane } = Tabs
@@ -297,7 +298,7 @@ const DatasourceManage = ({ dataType }, ref) => {
   }
 
   useEffect(() => {
-    if (sessionStorage.getItem('project_id')) {
+    if (localStorage.getItem('project_id')) {
       switch (dataType) {
         case 'datasource':
           fetchDataSourceList()
@@ -312,7 +313,7 @@ const DatasourceManage = ({ dataType }, ref) => {
           break
       }
     }
-  }, [dataType, sessionStorage.getItem('project_id')])
+  }, [dataType, localStorage.getItem('project_id')])
 
   useEffect(() => {
     if (isShareData) {
@@ -412,7 +413,7 @@ const DatasourceManage = ({ dataType }, ref) => {
             disabled={tableWatcher}>
             查看
           </Button>
-          {sessionStorage.getItem('role') === '1' && (
+          {localStorage.getItem('role') === '1' && (
             <Button
               type="link"
               onClick={() => {
@@ -421,7 +422,7 @@ const DatasourceManage = ({ dataType }, ref) => {
               编辑
             </Button>
           )}
-          {sessionStorage.getItem('role') === '1' && (
+          {localStorage.getItem('role') === '1' && (
             <Popconfirm
               title="确认删除?"
               okText="确认"
@@ -450,16 +451,17 @@ const DatasourceManage = ({ dataType }, ref) => {
       width: '25%',
       render: (_, record) => (
         <Space size="middle">
-          {['1', '2', '3'].includes(sessionStorage.getItem('role')) && (
-            <Button
-              type="link"
-              onClick={() => {
-                setIsShareData(true)
-                setSelectedAilabTable([record.key])
-              }}>
-              分享
-            </Button>
-          )}
+          {['1', '2', '3'].includes(localStorage.getItem('role')) &&
+            localStorage.getItem('project_type') === '0' && (
+              <Button
+                type="link"
+                onClick={() => {
+                  setIsShareData(true)
+                  setSelectedAilabTable([record.key])
+                }}>
+                分享
+              </Button>
+            )}
           <Button
             onClick={() => {
               watchAilabData(record.key)
@@ -505,7 +507,7 @@ const DatasourceManage = ({ dataType }, ref) => {
             type="link">
             查看
           </Button>
-          {sessionStorage.getItem('role') === '1' && (
+          {localStorage.getItem('role') === '1' && (
             <Button
               type="link"
               onClick={() => {
@@ -514,7 +516,7 @@ const DatasourceManage = ({ dataType }, ref) => {
               编辑
             </Button>
           )}
-          {sessionStorage.getItem('role') === '1' && (
+          {localStorage.getItem('role') === '1' && (
             <Popconfirm
               title="确认删除?"
               okText="确认"
@@ -803,8 +805,8 @@ const DatasourceManage = ({ dataType }, ref) => {
       {dataType === 'ailab' && (
         <Table
           rowSelection={
-            ['1', '2', '3'].includes(sessionStorage.getItem('role')) &&
-            sessionStorage.getItem('project_type') === '0'
+            ['1', '2', '3'].includes(localStorage.getItem('role')) &&
+            localStorage.getItem('project_type') === '0'
               ? rowSelection
               : null
           }
@@ -813,8 +815,8 @@ const DatasourceManage = ({ dataType }, ref) => {
           bordered
           loading={dataLoading}
           footer={
-            ['1', '2', '3'].includes(sessionStorage.getItem('role')) &&
-            sessionStorage.getItem('project_type') === '0'
+            ['1', '2', '3'].includes(localStorage.getItem('role')) &&
+            localStorage.getItem('project_type') === '0'
               ? shareBtn
               : null
           }
@@ -838,4 +840,8 @@ const DatasourceManage = ({ dataType }, ref) => {
   )
 }
 
+DatasourceManage.propTypes = {
+  dataType: PropTypes.string,
+}
+
 export default forwardRef(DatasourceManage)

+ 8 - 1
src/module/datasource/component/DatasourceSyncView.jsx

@@ -3,6 +3,7 @@ import React, { useEffect, useState } from 'react'
 import { useNavigate } from 'react-router-dom'
 import { getJobList, updateJobStatus, delJob, executeOnce } from '../services'
 import moment from 'moment'
+import PropTypes from 'prop-types'
 
 export default function DatasourceSyncView({ selectLog, page, page_size }) {
   const navigate = useNavigate()
@@ -89,7 +90,7 @@ export default function DatasourceSyncView({ selectLog, page, page_size }) {
     setCurrentPage(page)
     setCurrentPageSize(page_size)
     fetchJobList(page || 1, page_size || 10)
-  }, [page, page_size, sessionStorage.getItem('project_id')])
+  }, [page, page_size, localStorage.getItem('project_id')])
 
   const columns = [
     {
@@ -203,3 +204,9 @@ export default function DatasourceSyncView({ selectLog, page, page_size }) {
     />
   )
 }
+
+DatasourceSyncView.propTypes = {
+  selectLog: PropTypes.func,
+  page: PropTypes.number,
+  page_size: PropTypes.number,
+}

+ 1 - 1
src/module/datasource/component/StepOne.jsx

@@ -173,7 +173,7 @@ export default function StepOne({
           <Select
             allowClear
             options={
-              sessionStorage.getItem('project_type') === '0'
+              localStorage.getItem('project_type') === '0'
                 ? [
                     { label: '自添加数据源', value: 'datasource' },
                     { label: 'AIlab', value: 'ailab' },

+ 1 - 1
src/module/datasource/component/StepTwo.jsx

@@ -145,7 +145,7 @@ export default function LoadFormConfig({
           <Select
             allowClear
             options={
-              sessionStorage.getItem('project_type') === '0'
+              localStorage.getItem('project_type') === '0'
                 ? [
                     { label: '自添加数据源', value: 'datasource' },
                     { label: 'AIlab', value: 'ailab' },

+ 1 - 1
src/module/datasource/component/SyncTaskAdd.jsx

@@ -218,7 +218,7 @@ export default function SyncTaskAdd() {
 
   // 挂载的时候获取SourceList
   useEffect(() => {
-    if (sessionStorage.getItem('project_type') === '0') {
+    if (localStorage.getItem('project_type') === '0') {
       fetchDataSourceList()
     }
   }, [])

+ 1 - 0
src/module/datasource/component/utils/JsonEditor.jsx

@@ -2,6 +2,7 @@ import React, { useImperativeHandle, useRef } from 'react'
 import CodeMirror from '@uiw/react-codemirror'
 import 'codemirror/keymap/sublime'
 import 'codemirror/theme/monokai.css'
+import PropTypes from 'prop-types'
 
 export default function JsonEditor({ code, onRef }) {
   const jsonEditor = useRef()

+ 10 - 5
src/module/datasource/page/DatasourceView.jsx

@@ -51,6 +51,11 @@ export default function DatasourceView() {
       }
     }
   }, [state])
+
+  useEffect(() => {
+    changeDataType('ailab')
+  }, [localStorage.getItem('project_id')])
+
   // 更新数据源列表
   const updateDataSource = () => {
     sourceRef.current?.updateSourceList()
@@ -158,7 +163,7 @@ export default function DatasourceView() {
           !database_field.find(item => item.column_name === partition_column)
         ) {
           const params = {
-            project_id: sessionStorage.getItem('project_id'),
+            project_id: localStorage.getItem('project_id'),
             table_name,
             partition_column,
             columns: database_field,
@@ -334,8 +339,8 @@ export default function DatasourceView() {
               value={currentDataType}
               onChange={changeDataType}
               options={
-                ['1', '2', '3'].includes(sessionStorage.getItem('role')) &&
-                sessionStorage.getItem('project_type') === '0'
+                ['1', '2', '3'].includes(localStorage.getItem('role')) &&
+                localStorage.getItem('project_type') === '0'
                   ? [
                       { value: 'datasource', label: '自添加数据源' },
                       { value: 'ailab', label: 'AIlab' },
@@ -345,7 +350,7 @@ export default function DatasourceView() {
               }
             />
             {currentDataType === 'datasource' &&
-              sessionStorage.getItem('role') === '1' && (
+              localStorage.getItem('role') === '1' && (
                 <DatasourceAdd updateDataSource={updateDataSource} />
               )}
             {currentDataType === 'ailab' && (
@@ -358,7 +363,7 @@ export default function DatasourceView() {
               </Button>
             )}
             {currentDataType === 'datalake' &&
-              sessionStorage.getItem('role') === '1' && (
+              localStorage.getItem('role') === '1' && (
                 <Button
                   type="primary"
                   onClick={() => {

+ 3 - 3
src/module/datasource/services/index.js

@@ -141,14 +141,14 @@ export const updateDataSourceInfo = (id, params) =>
 
 export const getAilabList = () =>
   request({
-    url: `jpt/datasource/ailab_table?project_id=${sessionStorage.getItem('project_id')}`,
+    url: `jpt/datasource/ailab_table?project_id=${localStorage.getItem('project_id')}`,
     method: 'get',
   })
 
 // 获取当前用户所有的项目
 export const getUserProjects = () =>
   request({
-    url: `/jpt/project?user_id=${sessionStorage.getItem('user_id')}`,
+    url: `/jpt/project?user_id=${localStorage.getItem('user_id')}`,
     method: 'get',
   })
 
@@ -171,7 +171,7 @@ export const importDatalake = (params) =>
 // 获取数据湖列表
 export const getLakeTable = () =>
   request({
-    url: `jpt/datasource/lake_table?project_id=${sessionStorage.getItem('project_id')}`,
+    url: `jpt/datasource/lake_table?project_id=${localStorage.getItem('project_id')}`,
     method: 'get',
   })
 

+ 24 - 26
src/module/layout/Main.jsx

@@ -176,11 +176,11 @@ const Main = () => {
         }
       })
       setProjectsList(list)
-      if (!sessionStorage.getItem('project_id')) {
+      if (!localStorage.getItem('project_id')) {
         changeProject(list[0].value, { key: list[0].id })
       } else {
-        changeProject(sessionStorage.getItem('project_token'), {
-          key: sessionStorage.getItem('project_id'),
+        changeProject(localStorage.getItem('project_token'), {
+          key: localStorage.getItem('project_id'),
         })
       }
     } else {
@@ -193,12 +193,12 @@ const Main = () => {
   }
 
   const changeProject = async (val, option) => {
-    sessionStorage.setItem('project_id', option.key)
-    sessionStorage.setItem('project_token', val)
+    localStorage.setItem('project_id', option.key)
+    localStorage.setItem('project_token', val)
     const { data } = await getUserRole()
     if (data.code === 200) {
-      sessionStorage.setItem('role', data.data.role_id)
-      sessionStorage.setItem('project_type', data.data.type)
+      localStorage.setItem('role', data.data.role_id)
+      localStorage.setItem('project_type', data.data.type)
       setCurrentProject(val)
     } else {
       message.error(data.msg)
@@ -209,7 +209,7 @@ const Main = () => {
     if (projectName) {
       const { data } = await createProject({
         name: projectName,
-        user_id: sessionStorage.getItem('user_id'),
+        user_id: localStorage.getItem('user_id'),
       })
       if (data.code === 200) {
         getAllProjects()
@@ -232,8 +232,8 @@ const Main = () => {
     if (currentProjectName) {
       const { data } = await updateProject({
         name: currentProjectName,
-        user_id: sessionStorage.getItem('user_id'),
-        project_id: sessionStorage.getItem('project_id'),
+        user_id: localStorage.getItem('user_id'),
+        project_id: localStorage.getItem('project_id'),
       })
       if (data.code === 200) {
         message.success('修改成功')
@@ -304,7 +304,7 @@ const Main = () => {
 
   const setUserAdmin = async user_id => {
     const params = {
-      project_id: sessionStorage.getItem('project_id'),
+      project_id: localStorage.getItem('project_id'),
       user_id,
     }
     const { data } = await setAdmin(params)
@@ -318,7 +318,7 @@ const Main = () => {
 
   const removeUserAdmin = async user_id => {
     const params = {
-      project_id: sessionStorage.getItem('project_id'),
+      project_id: localStorage.getItem('project_id'),
       user_id,
     }
     const { data } = await removeAdmin(params)
@@ -332,7 +332,7 @@ const Main = () => {
 
   const removeUser = async user_id => {
     const params = {
-      project_id: sessionStorage.getItem('project_id'),
+      project_id: localStorage.getItem('project_id'),
       user_id,
     }
     const { data } = await removeProjectUser(params)
@@ -363,7 +363,7 @@ const Main = () => {
       render: (_, record) => (
         <Space size="middle">
           {!record.role.includes('管理员') &&
-            sessionStorage.getItem('role') === '1' && (
+            localStorage.getItem('role') === '1' && (
               <Button
                 type="link"
                 onClick={() => {
@@ -373,7 +373,7 @@ const Main = () => {
               </Button>
             )}
           {record.role.includes('管理员') &&
-            sessionStorage.getItem('role') === '1' && (
+            localStorage.getItem('role') === '1' && (
               <Popconfirm
                 title="确认移除?"
                 okText="确认"
@@ -387,13 +387,11 @@ const Main = () => {
             title="确认移除?"
             okText="确认"
             cancelText="取消"
-            disabled={sessionStorage.getItem('user_id') === String(record.key)}
+            disabled={localStorage.getItem('user_id') === String(record.key)}
             onConfirm={() => removeUser(record.key)}>
             <Button
               type="link"
-              disabled={
-                sessionStorage.getItem('user_id') === String(record.key)
-              }>
+              disabled={localStorage.getItem('user_id') === String(record.key)}>
               移除
             </Button>
           </Popconfirm>
@@ -407,7 +405,7 @@ const Main = () => {
       return item.id
     })
     const params = {
-      project_id: sessionStorage.getItem('project_id'),
+      project_id: localStorage.getItem('project_id'),
       user_ids,
     }
     const { data } = await addProjectMembers(params)
@@ -460,12 +458,12 @@ const Main = () => {
         <Input
           style={{ width: '350px' }}
           value={currentProjectName}
-          disabled={sessionStorage.getItem('role') !== '1'}
+          disabled={localStorage.getItem('role') !== '1'}
           onChange={e => {
             setCurrentProjectName(e.target.value)
           }}
         />
-        {sessionStorage.getItem('role') === '1' && (
+        {localStorage.getItem('role') === '1' && (
           <Button type="primary" onClick={editProjectName}>
             确认
           </Button>
@@ -615,14 +613,14 @@ const Main = () => {
             dropdownRender={menu => (
               <>
                 {menu}
-                {sessionStorage.getItem('role') === '1' && (
+                {localStorage.getItem('role') === '1' && (
                   <Divider
                     style={{
                       margin: '8px 0',
                     }}
                   />
                 )}
-                {sessionStorage.getItem('role') === '1' && (
+                {localStorage.getItem('role') === '1' && (
                   <Space
                     style={{
                       padding: '0 8px',
@@ -649,13 +647,13 @@ const Main = () => {
             ))}
           </Select>
           <div className="line" />
-          {['1', '2', '4'].includes(sessionStorage.getItem('role')) && (
+          {['1', '2', '4'].includes(localStorage.getItem('role')) && (
             <SettingFilled className="setting" onClick={openProjectSetting} />
           )}
           <LogoutOutlined
             className="logout"
             onClick={() => {
-              sessionStorage.clear()
+              localStorage.clear()
               navigate('/login')
             }}
           />

+ 5 - 5
src/module/layout/services/index.js

@@ -10,28 +10,28 @@ export const createProject = params =>
 // 获取当前用户所有的项目
 export const getUserProjects = () =>
   request({
-    url: `/jpt/project?user_id=${sessionStorage.getItem('user_id')}`,
+    url: `/jpt/project?user_id=${localStorage.getItem('user_id')}`,
     method: 'get',
   })
 
 //获取当前项目的信息
 export const getProjectInfo = () =>
   request({
-    url: `/jpt/project/info?project_id=${sessionStorage.getItem('project_id')}`,
+    url: `/jpt/project/info?project_id=${localStorage.getItem('project_id')}`,
     method: 'get',
   })
 
 //获取当前项目的成员
 export const getProjectUsers = () =>
   request({
-    url: `/jpt/users/project_users?project_id=${sessionStorage.getItem('project_id')}`,
+    url: `/jpt/users/project_users?project_id=${localStorage.getItem('project_id')}`,
     method: 'get',
   })
 
 //获取不在项目中的成员
 export const getRetrieveUsers = () =>
   request({
-    url: `/jpt/users/retrieve_users?project_id=${sessionStorage.getItem('project_id')}`,
+    url: `/jpt/users/retrieve_users?project_id=${localStorage.getItem('project_id')}`,
     method: 'get',
   })
 
@@ -73,6 +73,6 @@ export const removeProjectUser = (params) => request({
 
 // 切换角色的时候获取角色身份
 export const getUserRole = () => request({
-  url: `/jpt/project/switch?project_id=${sessionStorage.getItem('project_id')}&user_id=${sessionStorage.getItem('user_id')}`,
+  url: `/jpt/project/switch?project_id=${localStorage.getItem('project_id')}&user_id=${localStorage.getItem('user_id')}`,
   method: 'get',
 })

+ 2 - 2
src/module/login/page/LoginView.jsx

@@ -96,8 +96,8 @@ const LoginView = () => {
         password: Base64.encode(password),
       })
       if (data.code === 200) {
-        sessionStorage.setItem('user_token', data.data.auth_token)
-        sessionStorage.setItem('user_id', data.data.id)
+        localStorage.setItem('user_token', data.data.auth_token)
+        localStorage.setItem('user_id', data.data.id)
         navigate('/datasource')
       } else {
         message.error(data.msg)

+ 1 - 1
src/module/tasklog/component/LogTable.jsx

@@ -171,7 +171,7 @@ const LogTable = () => {
 
   useEffect(() => {
     fetchJoblog()
-  }, [sessionStorage.getItem('project_id')])
+  }, [localStorage.getItem('project_id')])
 
   useEffect(() => {
     if (state) {

+ 1 - 1
src/module/taskmgmt/page/TaskMgmtView.jsx

@@ -147,7 +147,7 @@ const TaskMgmtView = () => {
   }
   useEffect(() => {
     fetchJmJobList()
-  }, [sessionStorage.getItem('project_id')])
+  }, [localStorage.getItem('project_id')])
 
   const columns = [
     {

+ 2 - 2
src/module/workmgmt/component/JobItems.jsx

@@ -105,7 +105,7 @@ const App = () => {
   //获取作业列表数据
   const getJobTables = async () => {
     const project_id = 'test'
-    // const project_id = sessionStorage.getItem('project_id')
+    // const project_id = localStorage.getItem('project_id')
     setDataLoading(true)
     const { data } = await getJobDataList(project_id)
     if (data.code === 200) {
@@ -129,7 +129,7 @@ const App = () => {
   // componentDidMount
   useEffect(() => {
     getJobTables()
-  }, [sessionStorage.getItem('project_id')])
+  }, [localStorage.getItem('project_id')])
   const [dataSource, setDataSource] = useState()
 
   const navigate = useNavigate()

+ 3 - 3
src/utils/request.js

@@ -11,8 +11,8 @@ const axiosInstance = axios.create({
 
 // 请求拦截器
 axiosInstance.interceptors.request.use((config) => {
-  config.headers['user-token'] = sessionStorage.getItem('user_token')
-  config.headers['item-token'] = sessionStorage.getItem('project_token')
+  config.headers['user-token'] = localStorage.getItem('user_token')
+  config.headers['item-token'] = localStorage.getItem('project_token')
   return config
 })
 
@@ -29,7 +29,7 @@ axiosInstance.interceptors.response.use(
     if (error.response.status) {
       switch (error.response.status) {
         case 401:
-          sessionStorage.clear()
+          localStorage.clear()
           window.location.pathname = "/login"
           break
         case 403: