Leo 2 years ago
parent
commit
1e32e41209

+ 7 - 7
src/module/datasource/component/DataTableStruct.jsx

@@ -15,7 +15,12 @@ const DataTable = styled.div`
   }
 `
 
-export default function DataTableStruct({ currentStep, tableData, datax, onRef }) {
+export default function DataTableStruct({
+  currentStep,
+  tableData,
+  datax,
+  onRef,
+}) {
   const [jsonData, setjsonData] = useState(null)
   const jsonValue = useRef()
 
@@ -43,11 +48,6 @@ export default function DataTableStruct({ currentStep, tableData, datax, onRef }
     },
   ]
 
-  const changeJson = value => {
-    console.log(value)
-    setjsonData(value)
-  }
-
   useEffect(() => {
     setjsonData(datax)
   }, [datax])
@@ -56,7 +56,7 @@ export default function DataTableStruct({ currentStep, tableData, datax, onRef }
     <Table columns={columns} dataSource={tableData} className={'table-style'} />
   )
   if (currentStep === 3) {
-    content = <JsonEditor code={JSON.stringify(datax)} onRef={jsonValue}/>
+    content = <JsonEditor code={JSON.stringify(datax)} onRef={jsonValue} />
   }
 
   return <DataTable>{content}</DataTable>

+ 20 - 14
src/module/datasource/component/SyncTaskAdd.jsx

@@ -7,7 +7,12 @@ import React, { useState, useEffect } from 'react'
 import DataTableStruct from './DataTableStruct'
 import styled from 'styled-components'
 import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons'
-import { getDataSourceList, getTableSchema, buildJsonData, createJob } from '../services'
+import {
+  getDataSourceList,
+  getTableSchema,
+  buildJsonData,
+  createJob,
+} from '../services'
 import { useNavigate } from 'react-router'
 import moment from 'moment'
 
@@ -292,12 +297,9 @@ export default function SyncTaskAdd() {
       return
     }
     setBuilding(true)
-    console.log(buildParams)
     const { data } = await buildJsonData(buildParams)
-    console.log(data)
     if (data.code === 200) {
       const jsonData = data.data.json
-      console.log(jsonData)
       message.success('构建成功')
       const json = data.data.json
       setDataxJson(json)
@@ -310,14 +312,18 @@ export default function SyncTaskAdd() {
   }
 
   // 完成提交
-  const finishSubmit = async (job_json) => {
+  const finishSubmit = async job_json => {
     // setSubmiting(true)
     const fields = currentForm.getFieldValue()
-    const params = {...fields, job_json, 'inc_start_time': moment(fields.inc_start_time).unix()}
+    const params = {
+      ...fields,
+      job_json,
+      inc_start_time: moment(fields.inc_start_time).unix(),
+    }
     const { data } = await createJob(params)
     if (data.code === 200) {
       message.success('提交成功')
-      navigate(-1);
+      navigate(-1)
     } else {
       message.error('提交失败')
     }
@@ -330,13 +336,13 @@ export default function SyncTaskAdd() {
     try {
       const job_json = JSON.stringify(JSON.parse(jsonEditorValue))
       currentForm
-      .validateFields()
-      .then(() => {
-        finishSubmit(job_json)
-      })
-      .catch(err => {
-        message.error('请检查表单数据是否完整')
-      })
+        .validateFields()
+        .then(() => {
+          finishSubmit(job_json)
+        })
+        .catch(err => {
+          message.error('请检查表单数据是否完整')
+        })
     } catch (error) {
       message.error('转换JSON字符串失败,请检查json数据', error)
     }

+ 13 - 9
src/module/taskmgmt/component/TaskCreaterView.jsx

@@ -149,15 +149,20 @@ const TaskCreaterView = () => {
               params['cron_unit'] = cronUnit
             }
 
-            if (state !== null) {
-              params['id'] = state.id
-              updateJmJobInfo(params).then(() => {
-                navigate(-1)
-              })
+            // 单位非空判断
+            if (taskFormData.executionCycle === 2 && cronNum && cronUnit) {
+              if (state !== null) {
+                params['id'] = state.id
+                updateJmJobInfo(params).then(() => {
+                  navigate(-1)
+                })
+              } else {
+                createJmJob(params).then(() => {
+                  navigate(-1)
+                })
+              }
             } else {
-              createJmJob(params).then(() => {
-                navigate(-1)
-              })
+              message.error('执行周期数据有误')
             }
           })
           .catch(err => {
@@ -174,7 +179,6 @@ const TaskCreaterView = () => {
     const nodes = []
     const edges = []
     cells.forEach(cell => {
-      console.log(cell)
       if (cell.shape === 'task-node') {
         nodes.push({
           id: cell.id,

+ 0 - 2
src/module/taskmgmt/component/TaskForm.jsx

@@ -86,7 +86,6 @@ const TaskForm = ({
   }
 
   const onCronUnitChange = params => {
-    console.log(params)
     setCronUnitValue(params)
     setCronUnit(params?.label)
   }
@@ -101,7 +100,6 @@ const TaskForm = ({
   }
 
   const handleInitTask = taskInfo => {
-    console.log(taskInfo)
     setRadioValue(taskInfo.cron_type)
     if (taskInfo.cron_type === 2) {
       setCronNumValue(taskInfo.cron_num)

+ 9 - 8
src/module/taskmgmt/page/TaskMgmtView.jsx

@@ -1,6 +1,6 @@
 import React, { useState, useEffect } from 'react'
 import { useNavigate } from 'react-router'
-import { Table, Switch, Space, Button, message } from 'antd'
+import { Table, Switch, Space, Button, message, Popconfirm } from 'antd'
 import { Link } from 'react-router-dom'
 import styled from 'styled-components'
 import errImgUrl from '../style/img/err.png'
@@ -50,6 +50,7 @@ const TaskMgmtView = () => {
   const deleteTask = async id => {
     const { data } = await deleteJmJob(id)
     if (data.code === 200) {
+      message.success('删除成功')
       fetchJmJobList()
     } else {
       message.error(data.msg)
@@ -169,13 +170,13 @@ const TaskMgmtView = () => {
             style={{ color: '#1881DA', cursor: 'pointer' }}>
             编辑
           </span>
-          <span
-            onClick={() => {
-              deleteTask(record.key)
-            }}
-            style={{ color: '#1881DA', cursor: 'pointer' }}>
-            删除
-          </span>
+          <Popconfirm
+            title="确认删除?"
+            okText="确认"
+            cancelText="取消"
+            onConfirm={() => deleteTask(record.key)}>
+            <span style={{ color: '#1881DA', cursor: 'pointer' }}>删除</span>
+          </Popconfirm>
           <span
             onClick={() => {
               getApiUri(record.key)

+ 141 - 58
src/module/workmgmt/component/JobCreate.jsx

@@ -10,7 +10,7 @@ import {
   message,
   Divider,
 } from 'antd'
-import { PlusOutlined } from '@ant-design/icons'
+import { PlusOutlined, DeleteOutlined } from '@ant-design/icons'
 import React, { useState, useEffect, useRef } from 'react'
 import styled from 'styled-components'
 import JobStepOne from './JobStepOne'
@@ -22,6 +22,8 @@ import {
   createJob,
   getDagInfomation,
   getJobInfo,
+  deleteTag,
+  updateJobInfo,
 } from '../services'
 
 const JobCre = styled.div`
@@ -185,15 +187,18 @@ export default function JobCreate() {
   const [DagIsShow, setDagIsShow] = useState('none')
 
   // 单选框动态传值
-  const [radioValue, setRadioValue] = useState(1)
+  const [radioValue, setRadioValue] = useState(null)
+
+  // 脚本路径
+  const [scriptFile, setSriptFile] = useState(null)
 
   // 步骤数
   const [currentStep, setCurrentStep] = useState(0)
 
   //作业类型
-  const [jobTypeOptions, setJobTypeOptions] = useState()
+  const [jobTypeOptions, setJobTypeOptions] = useState([])
 
-  //作业分类
+  //作业标签
   const [jobTags, setJobTags] = useState([])
 
   //dag第一步表单数据
@@ -218,7 +223,7 @@ export default function JobCreate() {
 
   const [tagName, setTagName] = useState('')
 
-  const [dagData, setDagData] = useState()
+  const [dagData, setDagData] = useState(null)
 
   const [fileList, setFileList] = useState([])
 
@@ -230,27 +235,60 @@ export default function JobCreate() {
 
   const fetchJobInfo = async id => {
     const { data } = await getJobInfo(id)
-    console.log('%%%%%', data)
     if (data.code === 200) {
       WorkTypeForm.setFieldValue('type', data.data.type)
       onGenderChange(data.data.type)
       switch (data.data.type) {
-        case 'python':
+        case 'Python':
           PythonDataForm.setFieldsValue({
             name: data.data.name,
             tag: data.data.tag,
             image_url: data.data.image_url,
+            script_file: 'fromList',
           })
+          setRadioValue('fromList')
+          setSriptFile(data.data.script_file)
           break
-        case 'java':
-          JavaDataForm.setFieldsValue()
+        case 'Java':
+          JavaDataForm.setFieldsValue({
+            name: data.data.name,
+            tag: data.data.tag,
+            image_url: data.data.image_url,
+            script_file: 'fromList',
+          })
+          setRadioValue('fromList')
+          setSriptFile(data.data.script_file)
           break
-        case 'DAG':
+        case 'Dag':
           ConfigDataForm.setFieldsValue({
             name: data.data.name,
             tag: data.data.tag,
             dag_url: data.data.dag_url,
           })
+          setDagData(data.data.dag_url)
+          const inputs = []
+          const outputs = []
+          data.data.hd_relation.forEach(item => {
+            if (item.type === 'input') {
+              inputs.push(item)
+            } else {
+              outputs.push(item)
+            }
+          })
+          inputs.forEach((item, index) => {
+            InputDataForm.setFieldValue(
+              `datasource${index}`,
+              item.datasource_id
+            )
+            InputDataForm.setFieldValue(`sourceTable${index}`, item.table)
+          })
+          outputs.forEach((item, index) => {
+            OutputDataForm.setFieldValue(
+              `datasource${index}`,
+              item.datasource_id
+            )
+            OutputDataForm.setFieldValue(`sourceTable${index}`, item.table)
+          })
           break
         default:
           break
@@ -260,22 +298,27 @@ export default function JobCreate() {
     }
   }
 
-  //动态改变作业分类的值
+  //动态改变作业标签的值
   const onNameChange = event => {
     setTagName(event.target.value)
   }
 
-  //添加自定义作业分类
+  //添加自定义作业标签
   const addTagItem = e => {
     if (tagName) {
       e.preventDefault()
-      setJobTags([...jobTags, tagName])
-      setTagName('')
-      setTimeout(() => {
-        JobTagInputRef.current?.focus()
-      }, 0)
+      if (!jobTags.find(item => item === tagName)) {
+        setJobTags([...jobTags, tagName])
+        currentForm.setFieldValue('tag', tagName)
+        setTagName('')
+        setTimeout(() => {
+          JobTagInputRef.current?.focus()
+        }, 0)
+      } else {
+        message.error('存在同名标签')
+      }
     } else {
-      message.error('请输入自定义作业分类名称')
+      message.error('请输入自定义作业标签名称')
     }
   }
 
@@ -302,24 +345,23 @@ export default function JobCreate() {
 
   //根据作业类型做出判断
   const onGenderChange = value => {
-    console.log(value)
-    if (value === 'java') {
+    if (value === 'Java') {
       setJaIsShow('block')
       setDagIsShow('none')
       setPyIsShow('none')
-      setCurrentJobType('java')
+      setCurrentJobType('Java')
       setCurrentForm(JavaDataForm)
-    } else if (value === 'python') {
+    } else if (value === 'Python') {
       setJaIsShow('none')
       setDagIsShow('none')
       setPyIsShow('block')
-      setCurrentJobType('python')
+      setCurrentJobType('Python')
       setCurrentForm(PythonDataForm)
-    } else if (value === 'DAG') {
+    } else if (value === 'Dag') {
       setJaIsShow('none')
       setDagIsShow('block')
       setPyIsShow('none')
-      setCurrentJobType('DAG')
+      setCurrentJobType('Dag')
       setCurrentForm(ConfigDataForm)
     }
   }
@@ -349,7 +391,7 @@ export default function JobCreate() {
           table: OutputDataForm.getFieldValue(`sourceTable${index}`),
         })
       })
-      const { data } = await createJob({
+      const params = {
         ...ConfigDataForm.getFieldValue(),
         script_file: '',
         type: currentJobType,
@@ -359,11 +401,17 @@ export default function JobCreate() {
         // 镜像
         image_url: '/test/images/exa',
         relation_list,
-      })
-      if (data.code === 200) {
+      }
+      let resp = {}
+      if (state.id) {
+        resp = await updateJobInfo(state.id, params)
+      } else {
+        resp = await createJob(params)
+      }
+      if (resp.data.code === 200) {
         navigate(-1)
       } else {
-        message.error(data.msg)
+        message.error(resp.data.msg)
       }
     }
   }
@@ -398,12 +446,12 @@ export default function JobCreate() {
         break
     }
     getJobType()
+    getJobTag()
   }, [currentStep])
 
   //获取作业类型和分类
   const getJobType = async () => {
     const JobTypes = await getJobTypes('作业类型')
-    const JobTags = await getJobTypes('作业分类')
     if (JobTypes.data.length !== 0) {
       setJobTypeOptions(
         JobTypes.data.data.map(item => {
@@ -413,26 +461,39 @@ export default function JobCreate() {
           }
         })
       )
-      setJobTags(JobTags.data.data)
+    }
+  }
+
+  const getJobTag = async () => {
+    const { data } = await getJobTypes('作业标签')
+    if (data.code === 200) {
+      setJobTags(data.data)
+    } else {
+      message.error(data.msg)
     }
   }
 
   const finishSubmit = async () => {
     const params = {
       ...currentForm.getFieldValue(),
+      script_file: scriptFile,
       type: currentJobType,
       dag_uuid: 'test',
       user_id: 'test',
       project_id: 'test',
       dag_url: 'test',
-      image_url: 'test',
       relation_list: [],
     }
-    const { data } = await createJob(params)
-    if (data.code === 200) {
+    let res = {}
+    if (state.id) {
+      res = await updateJobInfo(state.id, params)
+    } else {
+      res = await createJob(params)
+    }
+    if (res.data.code === 200) {
       navigate(-1)
     } else {
-      message.error(data.msg)
+      message.error(res.data.msg)
     }
   }
 
@@ -450,12 +511,24 @@ export default function JobCreate() {
       })
       .catch(err => {
         message.error('请检查表单数据是否完整')
-        console.log('error', err)
       })
   }
   const cancel = () => {
     navigate(-1)
   }
+  const onScriptFileChange = val => {
+    setSriptFile(val)
+  }
+  const onDeleteTag = async val => {
+    const { data } = await deleteTag({ type: '作业标签', val })
+    if (data.code === 200) {
+      currentForm.setFieldValue('tag', null)
+      message.success('删除成功')
+      getJobTag()
+    } else {
+      message.error(data.msg)
+    }
+  }
   return (
     <JobCre>
       <CreContent>
@@ -478,7 +551,6 @@ export default function JobCreate() {
               <Select
                 placeholder="请选择作业类型..."
                 onSelect={onGenderChange}
-                value={radioValue}
                 options={jobTypeOptions}
               />
             </FormItem>
@@ -554,21 +626,22 @@ export default function JobCreate() {
               <Input placeholder="请输入作业名称..." allowClear></Input>
             </FormItem>
 
-            {/* 选择作业分类 */}
+            {/* 选择作业标签 */}
             <FormItem
               shouldUpdate
               name="tag"
-              label="作业分类"
+              label="作业标签"
               className="JobName"
               rules={[
                 {
                   required: true,
-                  message: '请选择作业分类',
+                  message: '请选择作业标签',
                 },
               ]}>
               <Select
-                placeholder="请选择作业分类..."
+                placeholder="请选择作业标签..."
                 allowClear
+                optionLabelProp="label"
                 dropdownRender={menu => (
                   <>
                     {menu}
@@ -582,7 +655,7 @@ export default function JobCreate() {
                         padding: '0 8px 4px',
                       }}>
                       <Input
-                        placeholder="添加作业分类"
+                        placeholder="添加作业标签"
                         ref={JobTagInputRef}
                         value={tagName}
                         onChange={onNameChange}
@@ -597,7 +670,12 @@ export default function JobCreate() {
                   </>
                 )}>
                 {jobTags.map(item => (
-                  <Option key={item}>{item}</Option>
+                  <Option key={item}>
+                    <Space>
+                      <DeleteOutlined onClick={() => onDeleteTag(item)} />
+                      <span>{item}</span>
+                    </Space>
+                  </Option>
                 ))}
               </Select>
             </FormItem>
@@ -629,17 +707,17 @@ export default function JobCreate() {
                   message: '请选择配置执行的Java脚本',
                 },
               ]}>
-              <RadioGroup onChange={onChange} value={radioValue}>
+              <RadioGroup onChange={onChange}>
                 <Space direction="vertical" className="jsSel">
                   <Radio value={'fromList'}>
                     <Select
                       placeholder="在工作目录中选择"
                       allowClear
                       className="javaSelect"
+                      value={scriptFile}
+                      onChange={onScriptFileChange}
                       disabled={radioValue === 'fromList' ? false : true}>
-                      <Option value="/test/scripts/example">
-                        /test/scripts/example
-                      </Option>
+                      <Option value="test">test</Option>
                     </Select>
                   </Radio>
 
@@ -690,20 +768,21 @@ export default function JobCreate() {
               ]}>
               <Input placeholder="请输入作业名称..." allowClear></Input>
             </FormItem>
-            {/* 选择作业分类 */}
+            {/* 选择作业标签 */}
             <FormItem
               name="tag"
-              label="作业分类"
+              label="作业标签"
               className="JobName"
               rules={[
                 {
                   required: true,
-                  message: '请选则作业分类',
+                  message: '请选则作业标签',
                 },
               ]}>
               <Select
-                placeholder="请选择作业分类..."
+                placeholder="请选择作业标签..."
                 allowClear
+                optionLabelProp="label"
                 dropdownRender={menu => (
                   <>
                     {menu}
@@ -717,7 +796,7 @@ export default function JobCreate() {
                         padding: '0 8px 4px',
                       }}>
                       <Input
-                        placeholder="添加作业分类"
+                        placeholder="添加作业标签"
                         ref={JobTagInputRef}
                         value={tagName}
                         onChange={onNameChange}
@@ -732,14 +811,19 @@ export default function JobCreate() {
                   </>
                 )}>
                 {jobTags.map(item => (
-                  <Option key={item}>{item}</Option>
+                  <Option key={item}>
+                    <Space>
+                      <DeleteOutlined onClick={() => onDeleteTag(item)} />
+                      <span>{item}</span>
+                    </Space>
+                  </Option>
                 ))}
               </Select>
             </FormItem>
             {/* 选择执行镜像 */}
             <FormItem
               className="mirrorLeft MMir"
-              name="image_url "
+              name="image_url"
               label="配置执行的镜像"
               rules={[
                 {
@@ -763,16 +847,15 @@ export default function JobCreate() {
                   message: '请配置执行的Python脚本',
                 },
               ]}>
-              <RadioGroup
-                onChange={onChange}
-                value={radioValue}
-                className="PyScript_file">
+              <RadioGroup onChange={onChange} className="PyScript_file">
                 <Space direction="vertical">
                   <Radio value={'fromList'}>
                     <Select
                       placeholder="在工作目录中选择"
                       allowClear
                       className="javaSelect"
+                      value={scriptFile}
+                      onChange={onScriptFileChange}
                       disabled={radioValue === 'fromList' ? false : true}>
                       <Option value="test">test</Option>
                     </Select>

+ 48 - 41
src/module/workmgmt/component/JobStepOne.jsx

@@ -1,20 +1,7 @@
-import {
-  Button,
-  Form,
-  Input,
-  Select,
-  Radio,
-  Space,
-  Upload,
-  Steps,
-  Divider,
-} from 'antd'
-import { UploadOutlined, PlusOutlined } from '@ant-design/icons'
-import setFieldValue from 'antd'
-import React, { useState, Component, useEffect, useRef } from 'react'
-import bus from '../../../bus.js'
-import ButtonGroup from 'antd/lib/button/button-group.js'
-import { getJobTypes, getDagFile } from '../services'
+import { Button, Form, Input, Select, Space, Divider, message } from 'antd'
+import { DeleteOutlined, PlusOutlined } from '@ant-design/icons'
+import React, { useState, useEffect, useRef } from 'react'
+import { getJobTypes, getDagFile, deleteTag } from '../services'
 const { Option } = Select
 const FormItem = Form.Item
 
@@ -26,18 +13,12 @@ const layout = {
     span: 16,
   },
 }
-const tailLayout = {
-  wrapperCol: {
-    offset: 8,
-    span: 16,
-  },
-}
 
 export default function JobStepOne({ ConfigDataForm, SelectDag }) {
   const JobTagInputRef = useRef(null)
-  //自定义作业分类名称
+  //自定义作业标签名称
   const [tagName, setTagName] = useState('')
-  //作业分类
+  //作业标签
   const [jobTags, setJobTags] = useState([])
 
   const [dags, setDags] = useState([])
@@ -47,13 +28,13 @@ export default function JobStepOne({ ConfigDataForm, SelectDag }) {
     if (DJName) {
       ConfigDataForm.setFieldValue('DagJobName', DJName)
     }
-    getJobType()
+    getJobTag()
     getDags()
   }, [])
 
-  //获取作业分类
-  const getJobType = async () => {
-    const JobTags = await getJobTypes('作业分类')
+  //获取作业标签
+  const getJobTag = async () => {
+    const JobTags = await getJobTypes('作业标签')
     if (JobTags.data.code === 200) {
       setJobTags(JobTags.data.data)
     }
@@ -73,14 +54,34 @@ export default function JobStepOne({ ConfigDataForm, SelectDag }) {
     setTagName(event.target.value)
   }
 
-  //添加自定义作业分类
+  //添加自定义作业标签
   const addTagItem = e => {
-    e.preventDefault()
-    setJobTags([...jobTags, tagName])
-    setTagName('')
-    setTimeout(() => {
-      JobTagInputRef.current?.focus()
-    }, 0)
+    if (tagName) {
+      e.preventDefault()
+      if (!jobTags.find(item => item === tagName)) {
+        setJobTags([...jobTags, tagName])
+        ConfigDataForm.setFieldValue('tag', tagName)
+        setTagName('')
+        setTimeout(() => {
+          JobTagInputRef.current?.focus()
+        }, 0)
+      } else {
+        message.error('存在同名标签')
+      }
+    } else {
+      message.error('请输入自定义作业标签名称')
+    }
+  }
+
+  const onDeleteTag = async val => {
+    const { data } = await deleteTag({ type: '作业标签', val })
+    if (data.code === 200) {
+      ConfigDataForm.setFieldValue('tag', null)
+      message.success('删除成功')
+      getJobTag()
+    } else {
+      message.error(data.msg)
+    }
   }
 
   return (
@@ -101,18 +102,19 @@ export default function JobStepOne({ ConfigDataForm, SelectDag }) {
           ></Input>
         </FormItem>
 
-        {/* 作业分类选择 */}
+        {/* 作业标签选择 */}
         <FormItem
           name="tag"
-          label="作业分类"
+          label="作业标签"
           rules={[
             {
               required: true,
             },
           ]}>
           <Select
-            placeholder="请选择作业分类..."
+            placeholder="请选择作业标签..."
             allowClear
+            optionLabelProp="label"
             dropdownRender={menu => (
               <>
                 {menu}
@@ -126,7 +128,7 @@ export default function JobStepOne({ ConfigDataForm, SelectDag }) {
                     padding: '0 8px 4px',
                   }}>
                   <Input
-                    placeholder="添加作业分类"
+                    placeholder="添加作业标签"
                     ref={JobTagInputRef}
                     value={tagName}
                     onChange={onNameChange}
@@ -141,7 +143,12 @@ export default function JobStepOne({ ConfigDataForm, SelectDag }) {
               </>
             )}>
             {jobTags.map(item => (
-              <Option key={item}>{item}</Option>
+              <Option key={item}>
+                <Space>
+                  <DeleteOutlined onClick={() => onDeleteTag(item)} />
+                  <span>{item}</span>
+                </Space>
+              </Option>
             ))}
           </Select>
         </FormItem>

+ 9 - 3
src/module/workmgmt/component/JobStepTwo.jsx

@@ -1,4 +1,4 @@
-import { Alert, Button, Form, Select, Row } from 'antd'
+import { Alert, Button, Form, Select, Row, Tooltip } from 'antd'
 import styled from 'styled-components'
 import {
   getDagInfomation,
@@ -92,6 +92,10 @@ const StepTwo = styled.div`
         text-align: center;
         background-color: #eef5fe;
         border-radius: 2px;
+        text-overflow: ellipsis;
+        overflow: hidden;
+        white-space: nowrap;
+        padding: 0 5px;
       }
       .Dagdatasource {
         margin-left: 10px;
@@ -203,7 +207,6 @@ export default function JobStepTwo({ InputDataForm, dagData }) {
     }
     setNodeStates(nodeStates)
     nodeSchemas[index] = syncList
-    console.log(syncList)
     setNodeSchemas(nodeSchemas)
   }
 
@@ -291,7 +294,10 @@ export default function JobStepTwo({ InputDataForm, dagData }) {
               style={{
                 display: item?.datasource?.dataField ? 'block' : 'none',
               }}>
-              <span>{`${item?.datasource?.dataField}.${item?.datasource?.dataType}`}</span>
+              <Tooltip
+                title={`${item?.datasource?.dataField}.${item?.datasource?.dataType}`}>
+                <span>{`${item?.datasource?.dataField}.${item?.datasource?.dataType}`}</span>
+              </Tooltip>
             </div>
             <span className="icon">
               <img

+ 13 - 0
src/module/workmgmt/services/index.js

@@ -70,3 +70,16 @@ export const getJobInfo = params =>
     url: `/jpt/jm_homework/info?homework_id=${params}`,
     methods: 'get',
   })
+
+export const deleteTag = params =>
+  request({
+    url: `/jpt/constants/?type=${params.type}&value=${params.val}`,
+    method: 'delete',
+  })
+
+export const updateJobInfo = (id, params) =>
+  request({
+    url: `/jpt/jm_homework/?jm_id=${id}`,
+    method: 'put',
+    data: { ...params },
+  })