Преглед изворни кода

Squashed commit of the following:
merge
commit 6e8a9215ce092ffcd22b75571d4d079b95c3ee60
Author: Renxy <18510891294@163.com>
Date: Tue Jul 26 16:13:37 2022 +0800

bom版本树/审批流程

commit 27239b95ee0f334468e94847879025590de843f8
Author: Renxy <18510891294@163.com>
Date: Mon Jul 25 14:22:22 2022 +0800

merge develop

Renxy пре 2 година
родитељ
комит
87ec275117

+ 52 - 22
src/pages/PurchaseAdmin/PurchaseList/Detail/FlowModal.js

@@ -11,13 +11,14 @@ const { Step } = Steps;
 
 const { TextArea } = Input;
 const localData = JSON.parse(localStorage.ggDetaiData || '{}');
+const PAGE_SIZE = 8
 
 // 提交
 function FlowModal(props) {
   const { visible, version, onClose, onChangeVersion, form, loading, flowDetail, dispatch } = props;
   const [data, setData] = useState([]);
   const [nodeLoading, setNodeLoading] = useState(false);
-  const [pageSize, setPageSize] = useState(9)
+  const [pageSize, setPageSize] = useState(PAGE_SIZE)
   const [stepsData, setStepsData] = useState([])
   // const app = useXFlowApp();
   // const appRef = userRef()
@@ -39,9 +40,9 @@ function FlowModal(props) {
 
   useEffect(()=>{
     if(stepsData.length <= 0){
-      setPageSize(9);
+      setPageSize(PAGE_SIZE);
     }else{
-      setPageSize(9 - stepsData.length)
+      setPageSize(PAGE_SIZE - stepsData.length)
     }
   },[stepsData])
 
@@ -62,10 +63,39 @@ function FlowModal(props) {
           data = [...data, ...arr];
         }
       });
-      //解决key报错问题
-      data.forEach((item, id)=>data[id].key=`${id}-${item.name}`)
-      console.log(data.length)
-      setData(data);
+      
+      const nameSet = new Set();
+      data.forEach((item, id)=>{
+        //解决key报错问题
+        data[id].key=`${id}-${item.name}`;
+        nameSet.add(item.version_name);
+      })
+
+
+      const getDataParent = () => {
+
+      }
+      let dataNew = [...nameSet].map(name=>{
+        let list = data.filter(item=>item.version_name == name)
+        if(list.length == 1) {
+          return list[0]
+        }else if(list.filter(item=>!item.version_no).length > 0) {
+          return list.filter(item=>!item.version_no)[0]
+        }else {
+          return list.reduce((a, b)=> a.version_no > b.version_no ? b : a)
+        }
+      })
+      // let dataNew = data.filter(item=>!item.version_no);
+      dataNew.forEach(item=>{
+        let curItem = data.find(node => node.version_name == item.version_name && node.version_id != item.version_id)
+        if(curItem) {
+          curItem.isChild = true;
+          item.children = [curItem]
+        };
+      })
+      console.log("dataNew============" ,dataNew)
+      setData(dataNew);
+      // setData(data);
     } catch (error) {
       console.log(error);
     }
@@ -77,28 +107,25 @@ function FlowModal(props) {
     let newData = [];
     let set = new Set()
     data.forEach(item=>set.add(item.template_node_id));
-    console.log("========================节点id ",[...set])
     let dataList = [...set].map(template_node_id=>{
-      
       let itemDataList = data.filter(item => item.template_node_id == template_node_id)
-      console.log("========================节点id ",itemDataList)
       let  curid = 3
       let status = 'process';
       itemDataList.forEach(item=>{
         if(item.audit_status != 3 && item.node_id <= curid) curid = item.node_id - 1;
         if(item.audit_status == 2) status = 'error';
       })
+      let curNode = flowDetail.nodes.find(item=>item.Id == itemDataList[0].template_node_id)
       let obj = { 
         status,
-        current:curid,//itemDataList.find(item=>item.node_id == itemDataList.length)?.audit_status != 3 ? itemDataList.length-1 : itemDataList.length ,
+        current:curid,
         list: itemDataList[0].FlowInfo.FlowNodes,
-        name:itemDataList[0].FlowInfo.name,
+        name: curNode?.label || itemDataList[0].FlowInfo.name,
       }
       itemDataList.forEach((itemData, idx) => {
         if(idx >= obj.list.length) return;
         obj.list[idx].auditor = itemData.AuthorInfo.CName;
       })
-      console.log("---------------------", obj)
       return obj
     })
     console.log(dataList)
@@ -106,8 +133,10 @@ function FlowModal(props) {
   };
 
   const handleChangeClick = (item) => {
+    console.log(item)
+    let type = item.flow_id ? 'detail/queryAuditRecord' : 'detail/queryAuditExcel'
     dispatch({
-      type: 'detail/queryAuditExcel',
+      type,
       payload: {
         excel_id: item.id,
         pageSize: 100,
@@ -124,17 +153,18 @@ function FlowModal(props) {
     return [
       {
         title: '名称',
-        width: '33%',
+        // width: '33%',
         render: item => (
-          <div style={{ color: item.audit_status != 0 ? '#9b9b9b' : '' }}>
+          <span style={{ color: item.audit_status != 0 ? '#9b9b9b' : '' }}>
             {item.id == version.id && <CheckOutlined style={{ marginRight: 10 }} />}
-            {item.version_name}
-          </div>
+            {/* {item.version_name} */}
+            {item.version_no && item.isChild ? `${item.version_name}.${item.version_no}` : item.version_name}
+          </span>
         ),
       },
       {
         title: '状态',
-        width: '33%',
+        width: '20%',
         render: item => {
           let style = {  color: getColor(item) };
           let txt = '';
@@ -158,11 +188,11 @@ function FlowModal(props) {
           return  item.audit_status != 0  ? 
             <Button onClick={()=>handleChangeClick(item)}>{txt}</Button> :
             <span style={style} >{txt}</span>
-              
         },
       },
       {
         title: '操作',
+        width: '20%',
         render: item =>
           item.id != version.id && (
             <a
@@ -193,10 +223,10 @@ function FlowModal(props) {
       width="98%"
     >
       <Row gutter={8}>
-        <Col span={18}>
+        <Col span={16}>
           <Flow meta={{ type: 'view' }} flowDetail={graphData} onSelectNode={handleSelectNode} />
         </Col>
-        <Col span={6} >
+        <Col span={8} >
           <div style={{width:'100%'}}>
             <Table style={{maxHeight:'90%'}} columns={columns} dataSource={data} loading={nodeLoading} bordered={false} pagination={{ pageSize, onChange}}/>
           </div>

+ 2 - 2
src/pages/PurchaseAdmin/PurchaseList/Detail/HistoryDrawer.js

@@ -22,11 +22,11 @@ function HistoryDrawer(props) {
     return [
       {
         title: '名称',
-        width: '33%',
+        width: '60%',
         render: item => (
           <div style={{ color: '#9b9b9b'}}>
             {/* {item.id == version.id && <dix style={{ marginRight: 10 }} />} */}
-            {`${item.version_name}.${item.version_no}`}
+            {item.version_no ? `${item.version_name}.${item.version_no}` : item.version_name}
           </div>
         ),
       },

+ 7 - 2
src/pages/PurchaseAdmin/PurchaseList/Detail/Index.js

@@ -779,7 +779,12 @@ function Detail(props) {
     const nodeId = version.template_node_id;
     if (!flowDetail?.nodes || !nodeId) return;
     const node = flowDetail.nodes.find(item => item.Id == nodeId);
-    return `当前清单:${version.version_name || '-'};    当前节点:${node?.label || '-'}`;
+    // return `当前清单:${version.version_name || '-'};    当前节点:${node?.label || '-'}`;
+    return(
+      <span className={styles.curTitle}>
+        当前清单: <span>{version.version_name || '-'}</span>当前节点: <span>{node?.label || '-'}</span>
+      </span>
+    )
   };
 
   const handleSubmitCell = (value, callback) => {
@@ -852,7 +857,7 @@ function Detail(props) {
               新建清单
             </Button>
           )}
-          <span style={{ marginLeft: 20 }}>{renderNode()}</span>
+         {renderNode()}
         </div>
         <div className={styles.btns}> 
           <Button type="primary" style={{ marginRight: 20 }} onClick={() => setVersionTreeVisible(true)}>

+ 7 - 0
src/pages/PurchaseAdmin/PurchaseList/Detail/Index.less

@@ -47,3 +47,10 @@
 .historyList {
   padding: 0 10px;
 }
+.curTitle  {
+  margin-left: 20px;
+ span {
+  color: #1890FF;
+  margin-right: 10px;
+ }
+}

+ 7 - 0
src/pages/PurchaseAdmin/PurchaseList/Detail/models/detail.js

@@ -30,6 +30,7 @@ import {
   queryAuthority,
   queryVersionsTree,
   queryAuditExcel,
+  queryAuditRecord,
 } from '@/services/boom';
 import { queryRole } from '@/services/SysAdmin';
 import { setCurrentUser } from '@/utils/authority';
@@ -506,6 +507,12 @@ export default {
         callback && callback(response.data?.all);
       }
     },
+    *queryAuditRecord({ payload,  callback  }, { call, put }) {
+      const response = yield call(queryAuditRecord, payload);
+      if (response) {
+        callback && callback(response.data?.all);
+      }
+    },
   },
 
   reducers: {

+ 4 - 0
src/services/boom.js

@@ -100,6 +100,10 @@ export async function queryVersionsTree(params){
 export async function queryAuditExcel(params){
   return request(`/api/v1/purchase/audit/excel?${stringify(params)}`);
 }
+//查询审批节点的审核记录
+export async function queryAuditRecord(params){
+  return request(`/api/v1/purchase/audit/record?${stringify(params)}`);
+}
 /**
  * 查看项目流程列表
  * project_id