Selaa lähdekoodia

feat: 收入合同行操作功能

lanjianrong 4 vuotta sitten
vanhempi
commit
6493595361

+ 18 - 5
src/pages/Contract/Content/Income/components/TableContent/index.tsx

@@ -7,8 +7,9 @@ import Modal from 'antd/lib/modal/Modal'
 import { RadioChangeEvent } from 'antd/lib/radio'
 import { ColumnsType } from 'antd/lib/table'
 import { observer } from 'mobx-react'
-import React, { useEffect, useState } from 'react'
+import React, { useEffect, useRef, useState } from 'react'
 import { useActivate } from 'react-activation'
+import { apiResfulContractTree } from '../../api'
 import { apiContractIncome, apiSetTemplate } from '../Modal/api'
 import Detail from '../Tabs/Detail'
 import File from '../Tabs/File'
@@ -90,6 +91,20 @@ const GCsheet: React.FC<iTableContentPorps> = ({ modalHandler, row, setRow }) =>
       }
     }
   }
+  interface iLabelHandlerProps {
+    id: string
+    bidsectionId: string
+    name?: string
+  }
+
+  const newLabelHandler = async (payload: iLabelHandlerProps) => {
+    payload.name = inputEl.current?.state.value
+    const { code = -1 } = await apiResfulContractTree('add', payload)
+    if (code === consts.RET_CODE.SUCCESS) {
+      contractStore.resetTree(tenderStore.bidsectionId)
+    }
+  }
+  const inputEl = useRef<Input>(null)
   const modalColumns: ColumnsType<iTemplateState> = [
     {
       title: '项目节',
@@ -119,9 +134,9 @@ const GCsheet: React.FC<iTableContentPorps> = ({ modalHandler, row, setRow }) =>
       dataIndex: 'name',
       render: (text:any, record: iIncomeTree) => {
         if (record.isEdit) {
-          return <Input size="small" type="text"></Input>
+          return <Input size="small" type="text" ref={inputEl} onPressEnter={() => newLabelHandler({ id: record.parentId, bidsectionId: record.bidsectionId })} onBlur={() => newLabelHandler({ id: record.parentId, bidsectionId: record.bidsectionId })}></Input>
         } else {
-        return <span>{text}</span>
+          return <span>{text}</span>
         }
       }
     },
@@ -190,8 +205,6 @@ const GCsheet: React.FC<iTableContentPorps> = ({ modalHandler, row, setRow }) =>
   const onClickRow  = (record: iIncomeTree) => {
     return {
       onClick() {
-        console.log(record)
-
         setRow(record)
       }
     }

+ 14 - 12
src/pages/Contract/Content/Income/index.tsx

@@ -1,11 +1,13 @@
 import Header from '@/components/Header'
 import Slot from '@/components/Header/slot'
-import { contractStore } from '@/store/mobx'
+import { contractStore, tenderStore } from '@/store/mobx'
 import { iIncomeTree, iModalBooleanProps } from '@/types/contract'
 import { contractTreeBaseId } from '@/utils/common/constStatus'
+import consts from '@/utils/consts'
 import { ArrowDownOutlined, ArrowLeftOutlined, ArrowRightOutlined, ArrowUpOutlined, CloseOutlined, PlusOutlined, SettingOutlined } from '@ant-design/icons'
 import { Button, Tooltip } from 'antd'
 import React, { useState } from 'react'
+import { apiResfulContractTree } from './api'
 import ContractModal from './components/Modal'
 import TableContent from './components/TableContent'
 
@@ -66,12 +68,12 @@ export default function Income() {
   }
   const treeResfulApiHandler = async (type: string, payload: any) => {
     if (type === 'add') {
-      contractStore.addRowTree(payload.id)
+      return contractStore.addRowTree(payload.id)
+    }
+    const { code } = await apiResfulContractTree(type, payload)
+    if ( code === consts.RET_CODE.SUCCESS) {
+      contractStore.resetTree(tenderStore.bidsectionId)
     }
-    // const { code } = await apiResfulContractTree(type, payload)
-    // if ( code === consts.RET_CODE.SUCCESS) {
-    //   contractStore.resetTree(tenderStore.bidsectionId)
-    // }
   }
   return (
     <div className="content-wrap">
@@ -82,19 +84,19 @@ export default function Income() {
               row.id ?
               <>
                 <Tooltip title="添加子项">
-                  <Button type="text" icon={<PlusOutlined style={{ color: '#007bff' }}/>} onClick={() => treeResfulApiHandler('add', { id: row.id, bidsctionId: row.bidsectionId })}></Button>
+                  <Button type="text" icon={<PlusOutlined style={{ color: '#007bff' }}/>} onClick={() => treeResfulApiHandler('add', { id: row.id, bidsectionId: row.bidsectionId })}></Button>
                 </Tooltip>
                 {
                   !row.children?.length ?
                   <Tooltip title="删除">
-                    <Button type="text" icon={<CloseOutlined style={{ color: '#007bff' }}/>} onClick={() => treeResfulApiHandler('del', { id: row.id, bidsctionId: row.bidsectionId })} />
+                    <Button type="text" icon={<CloseOutlined style={{ color: '#007bff' }}/>} onClick={() => treeResfulApiHandler('del', { id: row.id, bidsectionId: row.bidsectionId })} />
                   </Tooltip>
                   : <span className="pi-width-32 pi-height-32 pi-pd-tb-4 pi-flex-row-center"><CloseOutlined style={{ color: '#9a9a9a', fontSize: '14px' }}/></span>
                 }
                 {
                   row.parentId && row.parentId !== contractTreeBaseId ?
                   <Tooltip title="升级">
-                    <Button type="text" icon={<ArrowLeftOutlined />} style={{ color: '#007bff' }} onClick={() => treeResfulApiHandler('depth', { id: row.id, bidsctionId: row.bidsectionId, operation: 'upDepth' })}></Button>
+                    <Button type="text" icon={<ArrowLeftOutlined />} style={{ color: '#007bff' }} onClick={() => treeResfulApiHandler('depth', { id: row.id, bidsectionId: row.bidsectionId, operation: 'upDepth' })}></Button>
                   </Tooltip>
                   :
                   <span className="pi-width-32 pi-height-32 pi-pd-tb-4 pi-flex-row-center"><ArrowLeftOutlined style={{ color: '#9a9a9a', fontSize: '14px' }}/></span>
@@ -102,7 +104,7 @@ export default function Income() {
                 {
                   row.elderBrother ?
                   <Tooltip title="降级">
-                    <Button type="text" icon={<ArrowRightOutlined style={{ color: '#007bff' }}/>} onClick={() => treeResfulApiHandler('depth', { id: row.id, bidsctionId: row.bidsectionId, operation: 'downDepth' })} ></Button>
+                    <Button type="text" icon={<ArrowRightOutlined style={{ color: '#007bff' }}/>} onClick={() => treeResfulApiHandler('depth', { id: row.id, bidsectionId: row.bidsectionId, operation: 'downDepth' })} ></Button>
                   </Tooltip>
                   :
                   <span className="pi-width-32 pi-height-32 pi-pd-tb-4 pi-flex-row-center"><ArrowRightOutlined style={{ color: '#9a9a9a', fontSize: '14px' }}/></span>
@@ -110,7 +112,7 @@ export default function Income() {
                 {
                   row.elderBrother ?
                   <Tooltip title="上移">
-                    <Button type="text" icon={<ArrowUpOutlined style={{ color: '#007bff' }}/>} onClick={() => treeResfulApiHandler('serial', { id: row.id, bidsctionId: row.bidsectionId, operation: 'upSerial' })}  disabled={!row.elderBrother}></Button>
+                    <Button type="text" icon={<ArrowUpOutlined style={{ color: '#007bff' }}/>} onClick={() => treeResfulApiHandler('serial', { id: row.id, bidsectionId: row.bidsectionId, operation: 'upSerial' })}  disabled={!row.elderBrother}></Button>
                   </Tooltip>
                   :
                   <span className="pi-width-32 pi-height-32 pi-pd-tb-4 pi-flex-row-center"><ArrowUpOutlined style={{ color: '#9a9a9a', fontSize: '14px' }}/></span>
@@ -118,7 +120,7 @@ export default function Income() {
                 {
                   !row.isEnd ?
                   <Tooltip title="下移">
-                    <Button type="text" icon={<ArrowDownOutlined style={{ color: '#007bff' }}/>} onClick={() => treeResfulApiHandler('serial', { id: row.id, bidsctionId: row.bidsectionId, operation: 'downSerial' })} disabled={row.isEnd}></Button>
+                    <Button type="text" icon={<ArrowDownOutlined style={{ color: '#007bff' }}/>} onClick={() => treeResfulApiHandler('serial', { id: row.id, bidsectionId: row.bidsectionId, operation: 'downSerial' })} disabled={row.isEnd}></Button>
                   </Tooltip>
                   :
                   <span className="pi-width-32 pi-height-32 pi-pd-tb-4 pi-flex-row-center"><ArrowDownOutlined style={{ color: '#9a9a9a', fontSize: '14px' }}/></span>

+ 5 - 5
src/store/mobx/contract/index.ts

@@ -36,9 +36,9 @@ class Contract {
   }
 
   @action resetTree(id: string) {
-    apiContractIncome(id).then(({ code = -1, data }) => {
-      if (code === consts.RET_CODE.SUCCESS) {
-        this.tree = data.sectionTree
+    apiContractIncome(id).then(({ code = -1, sectionTree = {} }) => {
+      if (code === consts.RET_CODE.SUCCESS && Object.keys(sectionTree).length) {
+        this.tree = sectionTree.children
       }
     })
   }
@@ -59,9 +59,9 @@ function lookupNode(id: string, tree: iIncomeTree[]) {
 
     if (item.id === id) {
       if (Array.isArray(item.children)) {
-      item.children.push({ ...initData[0], isEdit: true, code: item.code + `-${item.children?.length || 1 }`, parentId: item.id })
+      item.children.push({ ...initData[0], isEdit: true, code: item.code + `-${item.children.length || 1 }`, parentId: item.id, bidsectionId: item.bidsectionId })
       } else {
-      item.children = [ { ...initData[0], isEdit: true, code: item.code + '-1', parentId: item.id } ]
+      item.children = [ { ...initData[0], isEdit: true, code: item.code + '-1', parentId: item.id, bidsectionId: item.bidsectionId } ]
       }
       return item
     } else if(item.children && item.children.length) {

+ 1 - 1
src/utils/common/request.ts

@@ -56,7 +56,7 @@ service.interceptors.response.use(
 
     // 对Code不等于Success进行message提示
     if (data.code !== CONSTS.RET_CODE.SUCCESS) {
-      message.error(data.msg)
+      message.error(JSON.stringify(data.msg))
       switch (data.code) {
         case 1:
           history.push('/login')