import { request } from 'umi';
import { stringify } from 'qs';

export async function queryAuditList(params) {
  let res = await request(`/api/v1/purchase/flow/info?${stringify(params)}`);
  res.data = res.data.map((item) => ({
    ...item,
    list: null,
    ...item.list,
  }));
  return res;
}

export async function addAudit(data) {
  return request(`/api/v1/purchase/flow/info`, {
    method: 'POST',
    data,
  });
}

export async function audit(data) {
  return request(`/api/v1/oa/audit/status`, {
    method: 'GET',
    params: data,
  });
}

export async function queryAuditDetail(params) {
  return request(`/api/v1/oa/audit/detail`, {
    method: 'GET',
    params,
  });
}

const getFlowDetail = (data) => {
  const groups = {
    top: {
      position: { name: 'top' },
      attrs: {
        circle: {
          r: 4,
          magnet: true,
          stroke: '#31d0c6',
          strokeWidth: 2,
          fill: '#fff',
          style: { visibility: 'hidden' },
        },
      },
      zIndex: 10,
    },
    right: {
      position: { name: 'right' },
      attrs: {
        circle: {
          r: 4,
          magnet: true,
          stroke: '#31d0c6',
          strokeWidth: 2,
          fill: '#fff',
          style: { visibility: 'hidden' },
        },
      },
      zIndex: 10,
    },
    bottom: {
      position: { name: 'bottom' },
      attrs: {
        circle: {
          r: 4,
          magnet: true,
          stroke: '#31d0c6',
          strokeWidth: 2,
          fill: '#fff',
          style: { visibility: 'hidden' },
        },
      },
      zIndex: 10,
    },
    left: {
      position: { name: 'left' },
      attrs: {
        circle: {
          r: 4,
          magnet: true,
          stroke: '#31d0c6',
          strokeWidth: 2,
          fill: '#fff',
          style: { visibility: 'hidden' },
        },
      },
      zIndex: 10,
    },
  };
  const attrs = {
    line: {
      stroke: '#A2B1C3',
      targetMarker: { name: 'block', width: 12, height: 8 },
      strokeDasharray: '5 5',
      strokeWidth: 1,
    },
  };
  let nodes = data.nodes.map((item) => {
    let node = { ...item };
    node.ports.groups = groups;
    node.parentKey = '1';

    return node;
  });
  let edges = data.edges.map((item) => {
    let edge = { ...item };
    try {
      edge.attrs = item.attr ? JSON.parse(item.attr) : attrs;
    } catch (error) {
      edge.attrs = attrs;
    }
    return edge;
  });
  return {
    ...data,
    nodes,
    edges,
  };
};
export async function queryProcessFlows(params) {
  let res = await request(
    `/api/v1/purchase/process/get-flows?${stringify(params)}`,
    {
      method: 'GET',
    },
  );
  let data = res.data[0];
  let item = {
    ...data,
    flowDetail: data.process_json
      ? getFlowDetail(JSON.parse(data.process_json))
      : { nodes: [], edges: [] },
    formData: data.form_json ? JSON.parse(data.form_json) : [],
    simpleFlowDteail: data.process_simple_json,
  };
  return { data: item };
}
export async function saveAuditFlowInfo(data) {
  return request(`/api/v1/purchase/flow/info`, {
    method: 'POST',
    data,
  });
}
export async function queryUserListByRoleID(params) {
  let res = await request(
    `/api/v1/purchase/process/get-role-user?${stringify(params)}`,
    {
      method: 'GET',
    },
  );
  return res.data;
}
export async function queryGetBomForm(params) {
  let res = await request(
    `/api/v1/purchase/bom/get-bom-form?${stringify(params)}`,
    {
      method: 'GET',
    },
  );
  return res;
}
//获取分类列表
export async function queryClassify(data) {
  let res = await request(`/api/v1/purchase/bom/get-classify`, {
    method: 'GET',
    params: data,
  });
  return res;
}

export async function queryOSSData() {
  return request(`/api/v1/config/chart-template-img?destDir=public/bom`);
}

// 提交审批
export async function createAduit(data) {
  return request(`/api/v1/oa/submit`, {
    method: 'POST',
    data,
  });
}
// 计算审批节点
export async function advanceSubmitNextNode(params) {
  let data = {
    flow_id: 0,
    node_level_id: 0,
    id: 0,
    project_id: 0,
    cur_template_node_id: 0,
    next_template_node_id: 0,
    template_node_id: null,
    flow_path: null,
    template_id: 0,
    cur_template_id: 0,
    next_template_id: 0,
    form_list: [JSON.stringify(params)],
  };
  return request(`/api/v1/oa/next/node/advance-submit`, {
    method: 'POST',
    data,
  });
}

export async function queryProfileList(params) {
  let profileList = await request(`/api/v1/oa/audit/list`, { params });
  let auditList = await request(`/api/v1/purchase/flow/info?flow_type=1`);
  profileList?.data?.list.map((item) => {
    var audit = auditList?.data?.find(
      (child) => item.flow_id === child?.list.id,
    );
    if (audit) {
      item.table_name = item.AuthorInfo?.CName + audit.list.name;
      item.table_desc = audit.list.desc;
      item.status = '待审批';
    }
  });
  console.log(profileList);
  return profileList;
}
export async function queryApplyList(params) {
  return request(`/api/v1/oa/audit/my/list`, { params });
}

// /**
//   project_id
//   version_id	大版本id
//   template_id
//   template_node_id	查询某流程和某节点下最新版本的数据记录
//   node_id	查询某审批流程和某审批节点下最新版本的数据记录
//  */
// export async function queryRecord(params) {
//   return request(`/api/v1/purchase/record?${stringify(params)}`);
// }
// //删除excel中单个sheet页
// export async function queryDelSheetRecord(params) {
//   const response = await request(`/api/v1/purchase/bom/del-purchase-excel-sheet?${stringify(params)}`);
//   if (response.code == 200) {
//     // message.success('删除成功');
//   }
// }

// // 查询全部工作流
// export async function queryFlowList(params) {
//   return request(`/api/v1/purchase/bom/flows?${stringify(params)}`);
// }

// // 根据节点id查询所有version
// export async function queryVserionByNode(params, signal) {
//   return request(`/api/v1/purchase/bom/flow/node?${stringify(params)}`, {
//     signal,
//   });
// }

// export async function commitSheet(params) {
//   return request(`/api/v1/purchase/record`, {
//     method: 'POST',
//     body: params,
//   });
// }
// export async function approve(params) {
//   return request(`/api/v1/purchase/audit/status`, {
//     method: 'POST',
//     body: params,
//   });
// }
// export async function queryAuthority(params) {
//   const depId = localStorage.depId;
//   return request(`/api/v1/purchase/bom/user/excel/col?depId=${depId}`, {
//     method: 'POST',
//     body: params,
//   });
// }
// export async function addBomComment(params) {
//   return request(`/api/v1/purchase/comment`, {
//     method: 'POST',
//     body: params,
//   });
// }
// export async function queryBomComment(params) {
//   return request(`/api/v1/purchase/comment?${stringify(params)}`);
// }

// /**
//  * 提交流转
//   "id":3, 当前流转文档id，必填
//   "project_id":46, 所属项目id
//   "template_id":1, 所属模板id ，必填
//   "template_node_id":34,所属节点id，必填
//   "next_template_id":1,跳转的下级业务模板id，必填
//   "next_template_node_id":2,跳转的下级业务节点id，必填
//   "flow_id":1, 跳转的下级审核流程id , 如果不为空，则说明流转的是审核节点，下级业务节点为审核通过后进入的业务节点
//   "node_id":1,跳转的下级审核节点id
//   "desc":"流转描述"
//  */
// export async function submitNextNode(params) {
//   return request(`/api/v1/purchase/next/node/submit`, {
//     method: 'POST',
//     body: params,
//   });
// }
// export async function advanceSubmitNextNode(params) {
//   return request(`/api/v1/purchase/next/node/advance-submit`, {
//     method: 'POST',
//     body: params,
//   });
// }

// export async function queryDetail(params) {
//   let response = await request(`/api/v1/purchase/record?${stringify(params)}`);
//   let sheet = response.data;
//   sheet.data = JSON.parse(sheet.data || '[]');
//   sheet.data.forEach(item => {
//     item.config = JSON.parse(item.config || '{}');
//     item.celldata = JSON.parse(item.cell_data || '[]');
//     delete item.cell_data;
//   });
//   return sheet;
// }
// export async function queryHistoryDetail(params) {
//   return request(`/api/v1/purchase/record/history/detail?${stringify(params)}`);
// }
// export async function queryHistoryList(params) {
//   return request(`/api/v1/purchase/record/history?${stringify(params)}`);
// }

// export async function queryBoomFlowList(params) {
//   return request(`/api/v1/purchase/bom/flows?${stringify(params)}`);
// }
// //请求历史版本
// export async function queryVersionsTree(params) {
//   return request(`/api/v1/purchase/record/version/tree?${stringify(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)}`);
// }
// //查询表单数据接口
// export async function queryDingSchema(params) {
//   return request(`/api/v1/purchase/bom/ding/schema?${stringify(params)}`);
// }
// export async function queryDingInstanceDetail(params) {
//   let res = await request(`/api/v1/purchase/bom/ding/instance-detail`, {
//     method: 'POST',
//     body: params,
//   });
//   if (res.data.errcode != 0) {
//     message.error(res.data.errmsg);
//     throw new Error(res.data.errmsg);
//   }
//   return res;
// }
// export async function queryDingInstanceExecute(params) {
//   let res = await request(`/api/v1/purchase/bom/ding/instance-execute`, {
//     method: 'POST',
//     body: params,
//   });
//   if (res.data.errcode != 0) {
//     message.error('审批失败，请联系管理员。');
//     throw new Error(res.data.errmsg);
//   }
//   return res;
// }
// export async function queryListParentByUser(params) {
//   return request(`/api/v1/purchase/bom/ding/department/list-parent-by-user`, {
//     method: 'POST',
//     body: params,
//   });
// }
// /**
//  * 查看项目流程列表
//  * project_id
//  */
// export async function queryProjectRecord(params) {
//   return request(`/api/v1/purchase/bom/project/record?${stringify(params)}`);
// }
// /** 查看版本列表
//  *  project_id
//     template_id		流程id
//     template_node_id	流程节点id
//  */
// export async function queryVersionsList(params) {
//   return request(`/api/v1/purchase/record/versions?${stringify(params)}`);
// }

// export async function queryBoomFlowDetail(params) {
//   let { data } = await request(`/api/v1/purchase/bom/flow/info?${stringify(params)}`);
//   const groups = {
//     top: {
//       position: { name: 'top' },
//       attrs: {
//         circle: {
//           r: 4,
//           magnet: true,
//           stroke: '#31d0c6',
//           strokeWidth: 2,
//           fill: '#fff',
//           style: { visibility: 'hidden' },
//         },
//       },
//       zIndex: 10,
//     },
//     right: {
//       position: { name: 'right' },
//       attrs: {
//         circle: {
//           r: 4,
//           magnet: true,
//           stroke: '#31d0c6',
//           strokeWidth: 2,
//           fill: '#fff',
//           style: { visibility: 'hidden' },
//         },
//       },
//       zIndex: 10,
//     },
//     bottom: {
//       position: { name: 'bottom' },
//       attrs: {
//         circle: {
//           r: 4,
//           magnet: true,
//           stroke: '#31d0c6',
//           strokeWidth: 2,
//           fill: '#fff',
//           style: { visibility: 'hidden' },
//         },
//       },
//       zIndex: 10,
//     },
//     left: {
//       position: { name: 'left' },
//       attrs: {
//         circle: {
//           r: 4,
//           magnet: true,
//           stroke: '#31d0c6',
//           strokeWidth: 2,
//           fill: '#fff',
//           style: { visibility: 'hidden' },
//         },
//       },
//       zIndex: 10,
//     },
//   };
//   const attrs = {
//     line: {
//       stroke: '#A2B1C3',
//       targetMarker: { name: 'block', width: 12, height: 8 },
//       strokeDasharray: '5 5',
//       strokeWidth: 1,
//     },
//   };
//   let nodes = data.Nodes.map(item => {
//     let node = {
//       ...item,
//       id: item.node_id,
//       renderKey: item.render_key,
//       zIndex: item.z_index,
//       isCustom: !!item.is_custom,
//       ports: JSON.parse(item.ports || '{}'),
//     };
//     node.ports.groups = groups;
//     node.parentKey = '1';

//     return node;
//   });
//   let edges = data.Edges.map(item => {
//     let edge = {
//       id: item.edge_id,
//       source: {
//         cell: item.source_cell,
//         port: item.source_port,
//       },
//       target: {
//         cell: item.target_cell,
//         port: item.target_port,
//       },
//     };
//     try {
//       edge.attrs = item.attr ? JSON.parse(item.attr) : attrs;
//     } catch (error) {
//       edge.attrs = attrs;
//     }
//     return edge;
//   });
//   return {
//     ...data,
//     nodes,
//     edges,
//   };
// }
// export async function updateNode(data) {
//   return request(`/api/v1/purchase/bom/flow/${data.templateId}/${data.nodeId}`, {
//     method: 'PUT',
//     body: data.body,
//   });
// }
// export async function addBoomFlow(data) {
//   return request(`/api/v1/purchase/bom/flow/info`, {
//     method: 'POST',
//     body: data,
//   });
// }

// export async function addFlow(data) {
//   return request(`/api/v1/purchase/bom/flow/info`, {
//     method: 'POST',
//     body: data,
//   });
// }
// /**
//  *  [
//       {
//         "flow_id": 23,
//         "node": "主管",
//         "desc": "desc",
//         "auditor": 2,
//         "seq": 1,
//         "seq_relate": 0
//       }
//     ]
//  */
// export async function addAuditNode(data) {
//   return request(`/api/v1/purchase/flow/info/${data.flowId}`, {
//     method: 'POST',
//     body: data.nodes,
//   });
// }

// export async function queryRecordSheet(data) {
//   return request(`/api/v1/purchase/record/sheet?${stringify(data)}`, {
//     method: 'POST',
//     body: data,
//   });
// }
// export async function queryDingTemplateList() {
//   return request(`/api/v1/purchase/bom/ding/template/list`);
// }

// export async function queryDDdepList(data) {
//   let res = await request(`/api/v1/purchase/bom/ding/department-list`, {
//     method: 'POST',
//     body: data,
//   });
//   return res.data.result;
// }

// export async function queryDDProcessesForecast(data) {
//   let res = await request(`/api/v1/purchase/bom/ding/processes-forecast`, {
//     method: 'POST',
//     body: data,
//   });
//   if (res.data.message) {
//     // message.error(res.data.message);
//     throw new Error(res.data.message);
//   }
//   return res.data.result;
// }

// export async function uploadFile(data) {
//   let res = await request(`/api/v1/purchase/bom/ding/upload-file`, {
//     method: 'POST',
//     body: data,
//     headers: {
//       ContentType: 'application/x-www-form-urlencoded',
//     },
//   });
//   if (!res.data.dentry) {
//     message.error(res.data.errmsg);
//     throw new Error(res.data.errmsg);
//   }
//   return res.data;
// }

// export async function bindDDCode(userId, code) {
//   let res = await request(`/api/v1/purchase/bom/ding/set-ding-user-code?ucode=${userId}:${code}`, {
//     method: 'GET',
//   });

//   return res.data;
// }

// //获取部门结构
// export async function queryDepV2(params) {
//   return request(`/api/v2/dep?${stringify(params)}`);
// }

// //新增工作流时调用接口 给项目绑定默认分类列表
// //purchase/bom/default-bind-classify?project_id=1
// export async function queryDefaultBindClassify(params) {
//   let res = await request(`/api/v1/purchase/bom/default-bind-classify?${stringify(params)}`, {
//     method: 'GET',
//   });
//   return res.data;
// }

// export async function queryBindClassify(params) {
//   let res = await request(`/api/v1/purchase/bom/get-bind-classify?${stringify(params)}`, {
//     method: 'GET',
//   });
//   return res.data;
// }

// export async function queryAddBindClassify(data) {
//   return request(`/api/v1/purchase/bom/add-bind-classify`, {
//     method: 'POST',
//     body: data,
//   });
// }

// export async function queryDelPurchaseExcel(params) {
//   let res = await request(`/api/v1/purchase/bom/del-purchase-excel?${stringify(params)}`, {
//     method: 'GET',
//   });
//   return res;
// }
// //提交流转存储表单审批人历史记录
// export async function querySaveBomForm(data) {
//   return request(`/api/v1/purchase/bom/save-bom-form`, {
//     method: 'POST',
//     body: data,
//   });
// }

// //章管家失败，重新申请用印
// export async function queryTrySeal(params) {
//   let res = await request(`/api/v1/purchase/bom/try-seal?${stringify(params)}`, {
//     method: 'GET',
//   });
//   return res;
// }

// export async function ChartTempOSSData(params) {
//   return request(`/api/v1/purchase/bom/contract-file/${params.projectId}`);
// }
// // 设置最终版本
// export async function setLastVersion(excelId) {
//   return request(`/api/v1/purchase/bom/set-last-version/${excelId}`);
// }
