amoeba.js 8.4 KB
import React, { Component } from 'react';
import {
	selectCustomerListApi, // 列表
	customerDetailApi,  // 客户详情
	customerOperateApi, // 放弃 终止 加入黑名单 恢复白名单 申领
	addNewCustomerApi, // 新增客户
	selectCompanyApi, // 归属阿米巴
	getContactsListApi, // 查看详情 ---> 联系人
	editContactsApi, // 查看详情 --> 联系人 --> 编辑
	addContactsApi, // 新增联系人
	searchCompanyApi, // 企查查
	addVisitHistoryApi, // 添加拜访记录
	baseInfoApi, // 查看详情  的 基本信息
	applyOperateApi, // 申领
	terminateOperateApi, // 终止
	abandonOperateApi, // 放弃
	blacklistOperateApi, // 黑名单
	whitelistOperateApi, // 白名单
	shareCustomerApi, // 请求共享客户
	reApplicationApi, // 重新申请
	chargePersonApi, // 查看详情中的负责人
	editBaseInfoApi, // 编辑详情中的基本信息
} from '../../utils/amoebaUtils';
import {
	CATCH_ERROR, // 错误信息 
	FETCH_DATA, //
	SAVE_CUSTOMER_LIST, // 客户列表
	CUSTOMER_DETAIL, // 客户详情
	SELECT_COMPANY, // 归属阿米巴
	CONTACTS_LIST, // 查看详情 --> 联系人
	EDIT_CONTACTS, // 查看详情 --> 联系人 --> 编辑联系人
} from '../constants/ActionTypes';
import { change, destroy } from "redux-form";
import { copyFileSync } from 'fs';
import { notification } from 'antd';
import { NotificationIcon } from '../../utils/comonOtherUtil';

function catchError(error) {
	return {
		type: CATCH_ERROR,
		payload: { error }
	}
}

function saveCustomerList(params) {
	return {
		type: SAVE_CUSTOMER_LIST,
		payload: {
			customerList: params.customerList,
		}
	}
}


function saveCustomerDetail(params) {
	return {
		type: CUSTOMER_DETAIL,
		payload: {
			...params
		}
	}
}



/**
 * 客户列表
 */
export function selectCustomerList(params) {
	return async (dispatch) => {
		try {
			const res = await selectCustomerListApi(params);
			console.log('客户类表', res)
			dispatch(
				saveCustomerList({
					customerList: res.items,
				})
			)
			dispatch(change('customer_container_search', 'total_count', res.total_count))
		} catch (err) {
			dispatch(catchError(err));
			throw Error(err);
		}
	}
}

/* 
 * 查看中的公司信息 && 新增客户的查看详情
*/

export const customerDetail = (key_no) => {
	return async (dispatch) => {
		try {
			const res = await customerDetailApi(key_no);
			dispatch(change('step_one', 'company_detail', res));
		} catch (err) {
			// dispatch(catchError(err));
			throw Error(err);
		}
	}
}

/* 
 *  放弃 加入黑名单 恢复白名单 终止 
*/

export function customerOperate(id, data) {
	console.log('data0000', data)
	return async (dispatch) => {
		try {
			await customerOperateApi(id, data);
			return data
		} catch (err) {
			dispatch(catchError(err));
			throw Error(err);
		}
	}
}

// 申领 
export function applyOperate(id, data) {
	return async (dispatch) => {
		try {
			await applyOperateApi(id, data);
			return data
		} catch (err) {
			dispatch(catchError(err));
			throw Error(err);
		}
	}
}

// 终止
export function terminateOperate(id, data) {
	return async (dispatch) => {
		try {
			await terminateOperateApi(id, data);
			return data
		} catch (err) {
			dispatch(catchError(err));
			throw Error(err);
		}
	}
}

// 放弃
export function abandonOperate(id, data) {
	return async (dispatch) => {
		try {
			await abandonOperateApi(id, data);
			return data
		} catch (err) {
			dispatch(catchError(err));
			throw Error(err);
		}
	}
}

// 黑名单
export function blacklistOperate(id, data) {
	return async (dispatch) => {
		try {
			await blacklistOperateApi(id, data);
			return data
		} catch (err) {
			dispatch(catchError(err));
			throw Error(err);
		}
	}
}
// 白名单
export function whitelistOperate(id, data) {
	return async (dispatch) => {
		try {
			await whitelistOperateApi(id, data);
			return data
		} catch (err) {
			dispatch(catchError(err));
			throw Error(err);
		}
	}
}

/**
 * 新建客户
 */

export function addNewCustomer(params) {
	return async (dispatch) => {
		const res = await addNewCustomerApi(params) || { code: 404, message: '未返回数据' };
		if (res.code && res.code >= 300) {
			notification.open({
				message: '错误',
				description: '创建失败,' + res.message,
				icon: <NotificationIcon type='error' />,
			})
		} else {
			notification.open({
				message: '成功',
				description: '创建成功',
				icon: <NotificationIcon type='success' />,
			})

			window.location.href = '#/container/amoeba';
			return res;
		}
	}
}

/**
 * 归属阿米巴
 */

export function selectCompanyList() {
	return async (dispatch) => {
		const res = await selectCompanyApi();
		const { admin_orgs } = res;
		admin_orgs.map(x => {
			x.id = x.org_id;
			x.name = x.org;
		})
		dispatch({
			type: SELECT_COMPANY,
			payload: {
				admin_orgs
			}
		});
		return admin_orgs
	}
}

/**
 * 
 * 新增联系人
 */

export function addNewContacts(id, params) {
	return async (dispatch) => {
		const res = await addContactsApi(id, params);
	}
}

/**
 * 查看详情中的联系人
 */

export function getContactsList(id) {
	console.log('这是action', id)
	return async (dispatch) => {
		const res = await getContactsListApi(id);
		console.log('res', res);
		dispatch({
			type: CONTACTS_LIST,
			payload: {
				contactsList: res.items
			}
		})
		dispatch(change('amoeba_contacts', 'total_count', res.total_count));
	}
}

/**
 * 
 * 编辑联系人
 */

export function editContacts(customer_id, contact_id, params) {
	return async (dispatch) => {
		const res = await editContactsApi(customer_id, contact_id, params);
		dispatch({
			type: EDIT_CONTACTS,
			payload: {
				name: res.name,
				mobile: res.mobile,
				extra: res.extra
			}
		})
	}
}

/**
 * 企查查接口
 */
export function searchCompanyList(params) {
	return async (dispatch) => {
		const res = await searchCompanyApi(params);
		dispatch(change('step_one', 'company_list', res.items))
		dispatch(change('step_one', 'total_count', res.total_count))
		return res
	}
}
/**
 * 添加拜访记录
 */
export function addVisitHistory(data) {
	return async (dispatch) => {
		await addVisitHistoryApi(data)
		return data
	}
}

/**
 * 查看详情 --->  基本信息
 */

export function baseInfoProfiles(id) {
	return async (dispatch) => {
		const companyBaseInfo = await baseInfoApi(id);
		dispatch(change('amoeba_baseInfo', 'base_info', companyBaseInfo));
	}
}
/**
 * 编辑基本信息
 */

export function editCustomerBaseInfo(id, data) {
	return async () => {
		await editBaseInfoApi(id, data)
	}
}


/**
 * 申领
 */
export function applyOperation(id, params) {
	return async (dispatch) => {
		await applyOperationApi(id, params)
	}
}

/**
 * 共享客户
 */
export function shareCustomer(params) {
	// /crm/v1/customer-share
	return async (dispatch) => {
		await shareCustomerApi(params);
	}
}

/**
 * 重新申请
 */

export function reApplication(id, params) {
	return async (dispatch) => {
		await reApplicationApi(id, params);
	}
}

/**
 * 查看详情中的负责人
 */

export function chargePerson(id) {
	return async (dispatch) => {

		const res = await chargePersonApi(id) || {};
		const { items = [] } = res;
		//销售负责人biz、服务负责人service、服务操作人service-operator、雇员服务负责人emp-service、雇员服务操作人emp-service-operator
		let all_emps = [], biz_emps = [], service_emps = [], service_operator_emps = [], emp_service_emps = [], emp_service_operator_emps = [];

		items && items.map(data => {

			if (data.type == 'biz') {//销售负责人
				biz_emps.push(data);
			} else if (data.type == 'service') {//服务负责人
				service_emps.push(data);
			} else if (data.type == 'service-operator') {//服务操作人
				service_operator_emps.push(data);
			} else if (data.type == 'emp-service') {//雇员服务负责人
				emp_service_emps.push(data);
			} else if (data.type == 'emp-service-operator') {//雇员服务操作人
				emp_service_operator_emps.push(data);
			}

		});
		all_emps.push({ 'type': '销售负责人', 'key': 'biz', 'items': biz_emps });
		all_emps.push({ 'type': '服务负责人', 'key': 'service', 'items': service_emps });
		all_emps.push({ 'type': '服务操作人', 'key': 'service-operator', 'items': service_operator_emps });
		all_emps.push({ 'type': '雇员服务负责人', 'key': 'emp-service', 'items': emp_service_emps });
		all_emps.push({ 'type': '雇员服务操作人', 'key': 'emp-service-operator', 'items': emp_service_operator_emps });

		dispatch(change('charge_person_form', 'chargePerson', { ...res, all_emps }));

	}
}