import { action, observable } from "mobx";
import { message } from "antd";
import { WeaForm, WeaTableNew } from "comsMobx";

import * as API from "../apis/declare"; // 引入API接口文件

const { TableStore } = WeaTableNew;

export class DeclareStore {
  @observable declareForm = new WeaForm(); //薪资核算重构-核算form
  //  ** 薪资核算重构-初始化核算form **
  @action
  initDeclareForm = () => this.declareForm = new WeaForm();






  @observable tableStore = new TableStore(); // new table
  @observable form = new WeaForm(); // nrew 一个form
  @observable condition = []; // 存储后台得到的form数据
  @observable hasRight = true; // 判断用户是有权限查看当前页面： 没有权限渲染无权限页面，有权限渲染数据
  @observable showSearchAd = false; // 高级搜索面板显示
  @observable loading = true; // 数据加载状态
  // 列表
  @observable listDataSource = [];
  @observable listColumns = [];
  @observable pageInfo = {};

  // 详情页
  @observable declareInfo = {}; // 详情基本信息
  @observable detailTableStore = new TableStore();
  @observable detailDataSource = [];
  @observable datailColumns = [];
  @observable detailPageInfo = {};

  @action setPageinfo = pageinfo => this.pageInfo = pageinfo;
  // 初始化操作
  @action
  doInit = () => {
    this.getCondition();
    this.getTableDatas();
  };

  // 获得高级搜索表单数据
  @action
  getCondition = () => {
    API.getCondition().then(action(res => {
      if (res.api_status) { // 接口请求成功/失败处理
        this.condition = res.condition;
        this.form.initFormFields(res.condition); // 渲染高级搜索form表单
      } else {
        message.error(res.msg || "接口调用失败！");
      }
    }));
  };

  // 渲染table数据
  @action
  getTableDatas = (params) => {
    this.loading = true;
    const formParams = this.form.getFormParams() || {};
    params = params || formParams;
    API.getTableDatas(params).then(action(res => {
      if (res.api_status) { // 接口请求成功/失败处理
        this.tableStore.getDatas(res.datas); // table 请求数据
        this.hasRight = res.hasRight;
      } else {
        message.error(res.msg || "接口调用失败！");
      }
      this.loading = false;
    }));
  };

  @action
  setShowSearchAd = bool => this.showSearchAd = bool;

  // 高级搜索 - 搜索
  @action doSearch = () => {
    this.getTableDatas();
    this.showSearchAd = false;
  };

  //个税申报表-个税申报表列表
  @action
  getDeclareList = (params = {}) => {
    this.loading = true;
    API.getDeclareList(params).then(res => {
      if (res.status) {
        this.listDataSource = res.data.list ? res.data.list : [];
        this.listColumns = res.data.columns;
        // this.setPageinfo({...this.pageInfo, })
        this.pageInfo = res.data;
      } else {
        message.error(res.errormsg || "获取失败");
      }
      this.loading = false;
    });
  };

  //个税申报表-个税申报表生成
  @action
  saveDeclare = (params) => {
    return new Promise((resolve, reject) => {
      this.loading = true;
      API.saveDeclare(params).then(res => {
        this.loading = false;
        if (res.status) {
          message.success("生成成功");
          resolve();
        } else {
          message.error(res.errormsg || "生成失败");
          reject();
        }
      });
    });

  };

  //个税申报表-个税申报表相关信息
  @action
  getDeclareInfo = (taxDeclarationId) => {
    API.getDeclareInfo({ taxDeclarationId }).then(res => {
      if (res.status) {
        this.declareInfo = res.data;
      } else {
        message.error(res.errormsg || "获取失败");
      }
    });
  };

  // 个税申报表详情列表
  @action
  getDetailList = (taxDeclarationIdStr, params = {}) => {
    API.getDetailList({ taxDeclarationIdStr, ...params }).then(res => {
      if (res.status) {
        this.detailDataSource = res.data.list ? res.data.list : [];
        this.datailColumns = res.data.columns;
        this.detailPageInfo = res.data;
        // this.detailTableStore.getDatas(res.data.dataKey.datas)
      } else {
        message.error(res.errrmsg || "获取失败");
      }
    });
  };

  // 个税申报表导出
  @action
  exportSalaryArchive = (id) => {
    API.exportSalaryArchive(id);
  };


}
