浏览代码

bug修复

Leo 2 年之前
父节点
当前提交
1aa6ee9037

+ 103 - 14
src/module/datasource/component/DatasourceAdd.jsx

@@ -9,7 +9,11 @@ import {
 } from '@ant-design/pro-components'
 import { Button, Col, message, Form } from 'antd'
 import { useState } from 'react'
-import { testDataSourceConnection, createDataSource } from '../services'
+import {
+  testDataSourceConnection,
+  createDataSource,
+  uploadFile,
+} from '../services'
 
 const DATA_TYPE_MYSQL = 'mysql'
 const KERBS_VALID_FALSE = false
@@ -19,8 +23,13 @@ export default function DatasourceAdd({ updateDataSource }) {
   const [dataType, setDataType] = useState(DATA_TYPE_MYSQL)
   // 是否开启kerbsValid验证
   const [kerbsValid, setKerbsValid] = useState(KERBS_VALID_FALSE)
+  const [kerberosServiceName, setKerberosServiceName] = useState('')
+  const [principal, setPrincipal] = useState(KERBS_VALID_FALSE)
   // Loading状态
   const [loading, setLoading] = useState(false)
+
+  const [keytabFile, setKeytabFile] = useState([])
+  const [krd5File, setKrd5File] = useState([])
   // Form表单
   const [form] = Form.useForm()
   // 测试连接
@@ -39,10 +48,21 @@ export default function DatasourceAdd({ updateDataSource }) {
       await form.validateFields(fields)
       setLoading(true)
       const testData = form.getFieldsValue(fields)
-      const { data } = await testDataSourceConnection({
+      const params = {
         ...testData,
         tag: form.getFieldValue('tag').join('/'),
-      })
+      }
+      params['kerberos'] = kerbsValid ? 1 : 0
+      if (kerbsValid) {
+        const keytab = await uploadKerbFile(keytabFile)
+        const krb5config = await uploadKerbFile(krd5File)
+        console.log(keytab, krb5config)
+        params['keytab'] = keytab
+        params['krb5config'] = krb5config
+        params['kerberos_service_name'] = kerberosServiceName
+        params['principal'] = principal
+      }
+      const { data } = await testDataSourceConnection(params)
       if (data.data) {
         message.success('连接成功')
       } else {
@@ -65,10 +85,21 @@ export default function DatasourceAdd({ updateDataSource }) {
       'comments',
       'tag',
     ]
-    const { data } = await createDataSource({
+    const params = {
       ...form.getFieldsValue(fields),
       tag: form.getFieldValue('tag').join('/'),
-    })
+    }
+    params['kerberos'] = kerbsValid ? 1 : 0
+    if (kerbsValid) {
+      const keytab = await uploadKerbFile(keytabFile)
+      const krb5config = await uploadKerbFile(krd5File)
+      console.log(keytab, krb5config)
+      params['keytab'] = keytab
+      params['krb5config'] = krb5config
+      params['kerberos_service_name'] = kerberosServiceName
+      params['principal'] = principal
+    }
+    const { data } = await createDataSource(params)
     if (data.code === 200) {
       message.success('添加成功')
       updateDataSource()
@@ -77,12 +108,57 @@ export default function DatasourceAdd({ updateDataSource }) {
     }
     return true
   }
+  const uploadKerbFile = async fileList => {
+    const file = new FormData()
+    fileList.forEach(item => {
+      file.append('file', item)
+    })
+    file.append('project_id', 'test')
+    file.append('file_type', 'kerberos')
+    const { data } = await uploadFile(file)
+    let uri = ''
+    if (data.code === 200) {
+      uri = data.data
+    } else {
+      message.error(data.msg)
+    }
+    return uri
+  }
   // 测试连接按钮
   const testConnectBtn = (
     <Button onClick={testConnect} loading={loading}>
       测试连接
     </Button>
   )
+
+  //上传文件配置
+  const keytabUpProps = {
+    onRemove: file => {
+      const index = keytabFile.indexOf(file)
+      const newFileList = keytabFile.slice()
+      newFileList.splice(index, 1)
+      setKeytabFile(newFileList)
+    },
+    beforeUpload: file => {
+      setKeytabFile([...keytabFile, file])
+      return false
+    },
+    keytabFile,
+  }
+
+  const krd5UpProps = {
+    onRemove: file => {
+      const index = krd5File.indexOf(file)
+      const newFileList = krd5File.slice()
+      newFileList.splice(index, 1)
+      setKrd5File(newFileList)
+    },
+    beforeUpload: file => {
+      setKrd5File([...krd5File, file])
+      return false
+    },
+    krd5File,
+  }
   return (
     <ModalForm
       form={form}
@@ -182,7 +258,7 @@ export default function DatasourceAdd({ updateDataSource }) {
         name="jdbc_username"
         rules={[
           {
-            required: true,
+            required: !kerbsValid ? true : false,
             message: '请输入用户名!',
           },
         ]}
@@ -192,7 +268,7 @@ export default function DatasourceAdd({ updateDataSource }) {
         name="jdbc_password"
         rules={[
           {
-            required: true,
+            required: !kerbsValid ? true : false,
             message: '请输入密码!',
           },
         ]}
@@ -233,25 +309,38 @@ export default function DatasourceAdd({ updateDataSource }) {
       {dataType === 'hive' && kerbsValid ? (
         <>
           <ProFormUploadButton
-            label="keytab"
+            label="keytab文件"
             name="keytab"
-            action="upload.do"
             title="上传keyTabPath"
+            fieldProps={{ ...keytabUpProps }}
             max={1}
           />
           <Col span={12} />
           <ProFormUploadButton
-            label="krd5config"
-            name="krd5config"
-            action="upload.do"
-            title="上传kard5config"
+            label="krb5config文件"
+            name="krb5config"
+            title="上传krb5config"
+            fieldProps={{ ...krd5UpProps }}
             max={1}
           />
           <Col span={12} />
+          <ProFormText
+            label="kerberos_service_name"
+            name="kerberos_service_name"
+            placeholder="输入kerberos_service_name"
+            fieldProps={{
+              onChange: e => setKerberosServiceName(e.target.value),
+            }}
+          />
+          <Col span={12} />
           <ProFormText
             label="Principal"
             name="principal"
-            placeholder="ylaiuser@EMR-56L6ZNTS"></ProFormText>
+            placeholder="ylaiuser@EMR-56L6ZNTS"
+            fieldProps={{
+              onChange: e => setPrincipal(e.target.value),
+            }}
+          />
         </>
       ) : (
         <></>

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

@@ -42,7 +42,7 @@ export default function DatasourceSyncView({ selectLog }) {
         }
       })
       setJobList(list)
-      setJobData(data.data.items)
+      setJobData(data.data.item)
     }
     setDataLoading(false)
   }
@@ -104,6 +104,7 @@ export default function DatasourceSyncView({ selectLog }) {
             loading={switchLoading}
             onClick={async () => {
               setSwitchLoading(true)
+              console.log(jobData, record.key)
               const switch_data = jobData.find(item => item.id === record.key)
               const trigger_status = switch_data.trigger_status === 1 ? 0 : 1
 

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

@@ -120,3 +120,10 @@ export const refreshLogsStatus = str =>
     url: '/jpt/joblog/logs_status/' + str,
     method: 'get',
   })
+
+export const uploadFile = params =>
+  request({
+    url: '/jpt/files/upload_file',
+    method: 'post',
+    data: params,
+  })

+ 0 - 1
src/module/workmgmt/component/JobCreate.jsx

@@ -311,7 +311,6 @@ export default function JobCreate() {
       setFileList([...fileList, file])
       return false
     },
-    maxCount: 1,
     fileList,
   }