import type { ActionSheetAction } from "vant";

declare global {
  namespace TBusiness {
    //商机展示类型
    type TBusinessDisplayType = "DefaultInput" | "SelectStage" | "DefaultText" | "WlUser";

    /**
     * 客户信息数据结构
     * @param {string} external_userid 外部联系人的id
     * @param {string} head_img_url 头像
     * @param {string} id 客户id
     * @param {string} nick_name 昵称
     */
    type TCustomerInfo = {
      external_userid: string;
      head_img_url: string;
      id: string;
      nick_name: string;
    };

    /**
     * 公司信息数据结构
     * @param {string} company_id 公司Id
     * @param {string} company_name 公司名称
     * @param {string} credit_code 公司信用码
     * @param {number} start_date 公司开始时间
     * @param {string} address 公司地址
     * @param {string} image_url 公司图片
     */
    type TCompanyInfo = {
      company_id: string;
      company_name: string;
      credit_code: string;
      start_date: number;
      address: string;
      image_url: string;
    };

    /**
     * 商机的data数据结构
     * @param is_edit 是否可以编辑
     * @param hidden 依据 list 中的 key 是否隐藏列
     * @param input_edit 是否展示输入框
     * @param slot 插槽
     */
    type TBusinessData = {
      is_edit: boolean;
      hidden: boolean;
      input_edit: boolean;
      slot: string;
    };

    /**
     * 商机的列表数据结构
     * @param id id
     * @param label 展示名称
     * @param key data 对应数据的 key
     * @param value 值
     * @param type 展示类型
     * @param slot 插槽
     */
    type TBusinessList = {
      id: number;
      label: string;
      key: string;
      value: string;
      type: TBusinessDisplayType;
      slot: string;
    };

    /**
     * 商机的列表数据结构
     * @param except_date 预计赢单日期
     * @param except_amount 预计赢单金额
     * @param winning_date 赢单金额
     * @param winning_amount 赢单金额
     * @param company_info 公司信息
     * @param customers 客户
     */
    type TBusinessOppData = {
      except_date: string;
      except_amount: string;
      winning_date: number;
      winning_amount: string;
      company_info: TCompanyInfo;
      customers: TCustomerInfo[];
    };

    /**
     * 选择成功/失败的结果返回的数据
     * @param stage
     * @param stage_value
     */
    type TDefaultStageActionData = ActionSheetAction & {
      backgroundColor: string;
      color: string;
      value: string;
      key: string;
    };

    type TFailStageActionData = ActionSheetAction & { fail_reason_desc: string };
    type TStageActionData = {
      stage: TDefaultStageActionData;
      stage_value: TBusinessOppData | TFailStageActionData;
    };
  }
}
