import request from "@/utils/request";

// 查询流程定义列表
export const listDefinition = async (query: any) => {
  return await request({
    url: '/flowable/definition/list',
    method: 'get',
    params: query
  })
}

// 部署流程实例
export const definitionStart = async (procDefId: string, data: any) => {
  return await request({
    url: '/flowable/definition/start/' + procDefId,
    method: 'post',
    data: data
  })
}

// 获取流程变量
export const getProcessVariables = async (taskId: string) => {
	return await request({
		url: "/flowable/task/processVariables/" + taskId,
		method: "get",
	});
};

// 激活/挂起流程
export const updateState = async (params: any) => {
  return await request({
    url: '/flowable/definition/updateState',
    method: 'put',
    params: params
  })
}

// 指定流程办理人员列表
export const userList = async (query: any) => {
  return await request({
		url: "/flowable/definition/userList",
		method: "get",
		params: query,
  });
}

// 指定流程办理组列表
export const roleList = async (query: any) => {
	return await request({
		url: "/flowable/definition/roleList",
		method: "get",
		params: query,
	});
};

// 指定流程表达式
export const expList = async (query: any) => {
	return await request({
		url: "/flowable/definition/expList",
		method: "get",
		params: query,
	});
};

// 读取xml文件
export const readXml = async (deployId: string) => {
	return await request({
		url: "/flowable/definition/readXml/" + deployId,
		method: "get",
	});
};

// 读取image文件
export const readImage = async (deployId: string) => {
	return await request({
		url: "/flowable/definition/readImage/" + deployId,
		method: "get",
	});
};

// 获取流程执行节点
export const getFlowViewer = async (procInsId: string, executionId: string) => {
	return await request({
		url: "/flowable/task/flowViewer/" + procInsId + "/" + executionId,
		method: "get",
	});
};

// 流程节点数据
export const flowXmlAndNode = async (query: any) => {
	return await request({
		url: "/flowable/task/flowXmlAndNode",
		method: "get",
		params: query,
	});
};

// 读取xml文件
export const saveXml = async (data: any) => {
	return await request({
		url: "/flowable/definition/save",
		method: "post",
		data: data,
	});
};

// 新增流程定义
export const addDeployment = async (data: any) => {
	return await request({
		url: "/system/deployment",
		method: "post",
		data: data,
	});
};

// 修改流程定义
export const updateDeployment = async (data: any) => {
	return await request({
		url: "/system/deployment",
		method: "put",
		data: data,
	});
};

// 删除流程定义
export const delDeployment = async (deployId: string) => {
	return await request({
		url: "/flowable/definition/" + deployId,
		method: "delete",
	});
};

// 导出流程定义
export const exportDeployment = async (query: any) => {
	return await request({
		url: "/system/deployment/export",
		method: "get",
		params: query,
	});
};