/*
 * Author: 黎永顺
 * name: 薪资核算-layout
 * Description:
 * Date: 2024/4/26
 */
import React, { Component } from "react";
import { WeaCheckbox, WeaDialog, WeaLocaleProvider } from "ecCom";
import { Button, message, Spin } from "antd";
import * as API from "../../../../../apis/calculate";
import "./index.less";

const getLabel = WeaLocaleProvider.getLabel;

class SalaryCalcLayout extends Component {
  constructor(props) {
    super(props);
    this.state = {
      fieldInformationConfirm: { visible: false, data: {} }, userConfirmed: "0", show: false
    };
  }

  componentDidMount() {
    this.getCompareSobConfig();
  }

  getCompareSobConfig = () => {
    const { fieldInformationConfirm } = this.state;
    const { routeParams: { salaryAcctRecordId: id } } = this.props;
    API.getCompareSobConfig({ id }).then(({ status, data }) => {
      if (status && data) {
        this.setState({
          fieldInformationConfirm: { ...fieldInformationConfirm, visible: data }
        });
      } else {
        this.setState({ show: true }, () => this.props.init());
      }
    }).catch(() => this.setState({ show: true }, () => this.props.init()));
  };
  onOk = () => {
    const { fieldInformationConfirm } = this.state;
    const { routeParams: { salaryAcctRecordId: id } } = this.props;
    API.updateSobConfig({ id }).then(({ status, errormsg }) => {
      if (status) {
        message.success(getLabel(30700, "操作成功！"));
        this.setState({
          show: true,
          fieldInformationConfirm: { ...fieldInformationConfirm, visible: false }
        }, () => {
          this.props.init();
          this.props.onConfirm();
        });
      } else {
        message.error(errormsg);
      }
    });
  };

  render() {
    const { fieldInformationConfirm, userConfirmed, show } = this.state;
    const buttons = [
      <Button type="primary" onClick={this.onOk}
              disabled={userConfirmed === "0"}>{getLabel(111, "是，更新账套设置")}</Button>,
      <Button type="ghost" onClick={() => this.setState({
        show: true,
        fieldInformationConfirm: { ...fieldInformationConfirm, visible: false }
      }, () => this.props.init())}>{getLabel(111, "否，忽略该提示")}</Button>
    ];
    return (
      <React.Fragment>
        {
          show ? this.props.children : <div className="loadingLayout"><Spin/></div>
        }
        <WeaDialog
          title={getLabel(131329, "信息确认")} visible={fieldInformationConfirm.visible} initLoadCss hasScroll
          style={{ width: 380 }} className="infoConfirmDialog" buttons={buttons} onCancel={() =>
          this.setState({
            show: true,
            fieldInformationConfirm: { ...fieldInformationConfirm, visible: false }
          }, () => this.props.init())}>
          <div className="confirm-content">
            <div className="contract">
              {getLabel("111", "账套发生变更，是否需要更新账套设置？更新后核算将按照最新的账套进行核算，请谨慎操作。")}
            </div>
            <div className="confirm-container">
              <WeaCheckbox value={userConfirmed} content={getLabel("111", "已认真阅读，知晓风险")}
                           onChange={v => this.setState({ userConfirmed: v })}/>
            </div>
          </div>
        </WeaDialog>
      </React.Fragment>
    );
  }
}

export default SalaryCalcLayout;
