/**
 * chengj
 * 2020.10.28
 * 运输节点查询
 */
import { UPCLOUD_RDC_TMS_MAINDATA_SERVICE,UPCLOUD_RDC_TMS_BUSINESS_SERVICE,UPCLOUD_RDC_TMS_INTERFACE_SERVICE} from '@/config/serviceSettings.js';
import { getSelectGJ, querySysPicture } from '@/utils/prolog.ajax.js';


export default () => {
  var master_grid, details_grid;

  // 跳转页面
  var carousel = layui.carousel;
  carousel.render({
    elem: "#transportNodeQuery",
    autoplay: false,
    index: 0,
    arrow: "none",
    indicator: "none",
    anim: "fade",
    width: "100%", // 设置容器宽度
    height: "100%"
  });
  // 切换页面
  function changePanel(name) {
    var slideList = ["#transportNodeQuery_main", "#transportNodeQuery_view"];
    for (var i = 0; i < slideList.length; i++) {
      if (slideList[i] == name) {
        $(name).css("display", "block");
      }
      else {
        $(slideList[i]).css("display", "none");
      }
    }
  }
  // 返回
  $(document).on("click", "#transportNodeQuery_view_return", function () {
    changePanel("#transportNodeQuery_main");
  });
  // 获取默认时间
  var startTime = Prolog.formatDate(new Date(), "%YY-%MM") + "-01 00:00:00";
  var endTime = Prolog.formatDate(new Date()) + " 23:59:59";
  // 获取下拉框
  var dataSelect;
  getSelectGJ([
    { "objectcode": "TIME_SECTION" },
    { "objectcode": "URG_FLG" },
    { "objectcode": "TMS_SHIP_BILLSTATUS" },
    { "objectcode": "TMS_LOADING_BILLSTATUS" },
    { "objectcode": "TMS_REF_BILLTYPE" },
    { "objectcode": "TMS_SHIP_BILLTYPE" },
    { "objectcode": "TEMP_REQ" },
    { "objectcode": "TMS_LOADING_BILLHSTATUS" }
  ], function (data) {
    dataSelect = data.data;
    dataSelect.TIME_SECTION.unshift({ "value": "", "text": "" });
  });

  // 配送中心table
  var branchTable = {
    // terrace显示全部，card分页显示
    skin: "card",
    // renderer:"grid",
    columns: [
      { id: "companyid", name: "id", type: "ro", width: "130", hidden: true },
      { id: "companycode", name: "配送中心编号", type: "ro" },
      { id: "companyname", name: "配送中心名称", type: "ro" }
    ],
    multiselect: false,
    toolbar: [
      { type: "settings", position: "label-left", width: 200, labelWidth: 100 },
      {
        type: "block", id: "bk", blockOffset: 0, list: [
          { type: "input", name: "companycode", label: "配送中心编号:", width: 120 },
          { type: "newcolumn" },
          { type: "button", name: "querycarr", value: "查询" },
          { type: "newcolumn" },
          { type: "button", name: "car_Reset", value: "重置" }
        ]
      }
    ],
    url: UPCLOUD_RDC_TMS_MAINDATA_SERVICE+"/pubCompany/queryCompanyBranch",
    pagebar: { type: "simple" },
    type: "post", // 数据提交方式，默认为get
    params: JSON.stringify({ companytype: "S" }), // 查询提交参数，分页参数默认为pageNum,pageSize
    contentType: "application/json",
    page: true, // 是否启用分页
    totalCount: "totalCount" // 总记录数字段，默认totalCount
  };
  // 客户table
  var customerTable = {
    // terrace显示全部，card分页显示
    skin: "card",
    // renderer:"grid",
    columns: [
      { id: "companyid", name: "id", type: "ro", width: "130", hidden: true },
      { id: "companycode", name: "客户编号", type: "ro" },
      { id: "companyname", name: "客户名称", type: "ro" }
    ],
    multiselect: false,
    toolbar: [
      { type: "settings", position: "label-left", width: 200, labelWidth: 110 },
      {
        type: "block", id: "bk", blockOffset: 0, list: [
          { type: "input", name: "companycode", label: "客户编号:", width: 120 },
          { type: "newcolumn" },
          { type: "button", name: "querycarr", value: "查询" },
          { type: "newcolumn" },
          { type: "button", name: "car_Reset", value: "重置" }
        ]
      }],
    url: UPCLOUD_RDC_TMS_MAINDATA_SERVICE+"/pubCompany/queryCompanyCustomer",
    pagebar: { type: "simple" },
    type: "post", // 数据提交方式，默认为get
    params: JSON.stringify({ companytype: "C" }), // 查询提交参数，分页参数默认为pageNum,pageSize
    contentType: "application/json",
    page: true, // 是否启用分页
    totalCount: "totalCount" // 总记录数字段，默认totalCount
  };

  // 主页grid
  var master_grid_opts = {
    skin: "card",
    columns: [
      { id: "seqno", name: "id", type: "ro", width: "130", hidden: true },
      { id: "branchid", name: "配送中心编号", type: "ro", width: 120 },
      { id: "branchname", name: "配送中心名称", type: "ro", width: 120 },
      { id: "loadbillno", name: "装车单号", type: "ro", width: 120 },
      { id: "carriername", name: "承运商", type: "ro", width: 120 },
      { id: "voucherno", name: "车辆", type: "ro", width: 120 },
      { id: "shipbillno", name: "运单号", type: "ro", width: 120 },
      { id: "billdate", name: "单据日期", type: "ro", width: 120 },
      {
        id: "billtype", name: "单据类型", type: "ro", width: 120, render: (v) => {
          return getSelectValue(dataSelect.TMS_SHIP_BILLTYPE, v);
        }
      },
      {
        id: "status", name: "状态", type: "ro", width: 120, render: (v) => {
          return getSelectValue(dataSelect.TMS_LOADING_BILLHSTATUS, v);
        }
      },
      { id: "linenane", name: "线路名称", type: "ro", width: 120 },
      {
        id: "urgentIdentify", name: "是否急单", type: "ro", width: 120, render: (v) => {
          return getSelectValue(dataSelect.URG_FLG, v);
        }
      },
      { id: "refbillno", name: "业务单号", type: "ro", width: 120 },
      {
        id: "refbilltype", name: "业务类型", type: "ro", width: 120, render: (v) => {
          return getSelectValue(dataSelect.TMS_REF_BILLTYPE, v);
        }
      },
      { id: "shiptoCustomerName", name: "客户名称", type: "ro", width: 120 },
      { id: "shiptoAddress", name: "客户地址", type: "ro", width: 120 },
      { id: "rsumcases", name: "件数", type: "ro", width: 120 },
      { id: "rsumgoodsweight", name: "重量", type: "ro", width: 120 },
      { id: "rsumgoodsvol", name: "体积", type: "ro", width: 120 },
      { id: "memo", name: "备注", type: "ro", width: 120 },
      {
        id: "op", name: "操作", type: "button", align: "left", width: 80, fixed: "right", render: function () {
          return "操作记录^transportNodeQuery_record";
        }
      }
    ],
    toolbar: [
      { type: "settings", labelWidth: 70, labelAlign: "right" },
      {
        type: "row",
        list: [
          { type: "calendar", className: "layui-col-md3", name: "startdate", label: "开始时间:", value: startTime, readonly: true },
          { type: "calendar", className: "layui-col-md3", name: "enddate", label: "结束时间:", value: endTime, readonly: true },
          {
            type: "selectTable",
            className: "layui-col-md3",
            placeholder: "请选择配送中心",
            readonly: false,
            table: branchTable,
            tableWidth: 600,
            tableHeight: 500,
            fieldText: "companyname",
            fieldValue: "companyid",
            name: "branchidList",
            label: "配送中心:",
            listener: function (Grid) {
              setMethod(Grid, branchTable, function () { });
            }
          },
          { type: "input", className: "layui-col-md3", name: "shipbillno", label: "运单号:" },
          { type: "input", className: "layui-col-md3", name: "refbillno", label: "业务单号:" },
          {
            type: "selectTable",
            className: "layui-col-md3",
            placeholder: "请选择客户",
            readonly: false,
            table: customerTable,
            tableWidth: 600,
            tableHeight: 500,
            fieldText: "companyname",
            fieldValue: "companyid",
            name: "customerIdList",
            label: "客户:",
            listener: function (Grid) {
              setMethod(Grid, customerTable, function () { });
            }
          },
          {
            type: "block", className: "layui-col-md3 form_btn_left",
            list: [
              { type: "button", className: "btn-normal", name: "master_search", value: "查 询" },
              { type: "newcolumn" },
              { type: "button", name: "master_reset", value: "重 置" }

            ]
          },
          {
            type: "block", className: "layui-col-md3 right",
            list: [
              { type: "button", className: "btn-normal", name: "master_export", value: "导 出" }
            ]
          }
        ]
      }
    ],
    fixedLast: true, // 开启固定列，固定最后一行，倒数第二列不能隐藏
    multiselect: false, // 是否支持多选
    url: UPCLOUD_RDC_TMS_BUSINESS_SERVICE+"/report/transportNodeQuery", // 数据接口
    type: "post", // 数据提交方式，默认为get
    params: JSON.stringify({ startdate: startTime, enddate: endTime }),
    page: true, // 是否启用分页
    contentType: "application/json",
    totalCount: "totalCount" // 总记录数字段，默认totalCount
  };
  master_grid = new PlgGrid(master_grid_opts);
  master_grid.renderTo("transportNodeQuery_master");
  master_grid.loadData();
  master_grid.attachToolBarEvent("onButtonClick", function (name) {
    switch (name) {
      case "master_search":
        var request = master_grid.getToolBarForm().getFormData();
        request.startdate = request.startdate ? Prolog.formatDate(request.startdate) + " 00:00:00" : "";
        request.enddate = request.enddate ? Prolog.formatDate(request.enddate) + " 23:59:59" : "";
        if (request.startdate > request.enddate) {
          layer.msg("开始时间不能大于结束时间");
          return false;
        }
        request.branchid = request.branchidList ? JSON.parse(request.branchidList)[0] : "";
        request.shiptoCustomerId = request.customerIdList ? JSON.parse(request.customerIdList)[0] : "";
        dealNullQueryCondition(request);
        master_grid.setParams(JSON.stringify(request));
        master_grid.reload();
        break;
      case "master_reset":
        master_grid.getToolBarForm().clear();
        master_grid.getToolBarForm().setFormData({ startdate: startTime, enddate: endTime });
        master_grid.getToolBarForm().setText("branchidList", "");
        master_grid.getToolBarForm().setText("customerIdList", "");
        break;
      case "master_export":
        unfilledWorktime_export();
        break;
    }
  });
  //主界面导出事件
  function unfilledWorktime_export() {
    let pload = PlgDialog.load(2, { shade: [0.6, "#fff"] });
    if (master_grid.getRowsNum() <= 0) {
      PlgDialog.close(pload);
      PlgDialog.msg("没有要导出的数据");
      return;
    }
    let url = UPCLOUD_RDC_TMS_BUSINESS_SERVICE+"/report/transportNodeExport";
    let name = "作业节点查询" + Prolog.formatDate(new Date(), "%YY%MM%DD") + ".xls";
    var request = master_grid.getToolBarForm().getFormData();
    request.startdate = request.startdate ? Prolog.formatDate(request.startdate) + " 00:00:00" : "";
    request.enddate = request.enddate ? Prolog.formatDate(request.enddate) + " 23:59:59" : "";
    if (request.startdate > request.enddate) {
      PlgDialog.close(pload);
      layer.msg("开始时间不能大于结束时间");
      return false;
    }
    request.branchid = request.branchidList ? JSON.parse(request.branchidList)[0] : "";
    request.shiptoCustomerId = request.customerIdList ? JSON.parse(request.customerIdList)[0] : "";
    Prolog.exportFile(url, name, "application/json", "post", request);
    PlgDialog.close(pload);

  }
  // 单击一行显示明细
  master_grid.on("onRowSelect", function (id) {
    let rdata = master_grid.getRowData(id);
    details_grid.setParams(JSON.stringify({ shipbillid: rdata.shipbillno, branchid: rdata.branchid }));
    details_grid.reload();
  });
  // 操作记录
  window.transportNodeQuery_record = function (rid, rdata) {
    $("#transportNodeQuery_view_steps").html("");
    sysOpEventQuery(rdata);
    changePanel("#transportNodeQuery_view");
  };

  // 获取操作记录
  function sysOpEventQuery(rdata) {
    let request = {
      shipbillid: rdata.shipbillid,
      shipbillno: rdata.shipbillno
    };
    let pload = PlgDialog.load(2, { shade: [0.6, "#fff"] });
    Prolog.ajax({
      url: UPCLOUD_RDC_TMS_BUSINESS_SERVICE+"/report/operationRecordQuery", type: "post", contentType: "application/json", data: JSON.stringify(request),
      success: function (res) {
        PlgDialog.close(pload);
        if (res.success) {
          PlgDialog.msg(res.message);
          renderRecord(res.data);
          return true;
        }
                return false;

      }, error: function () { PlgDialog.close(pload); return false; }
    });
  }

  // 渲染操作记录页面
  function renderRecord(list) {
    let html = "";
    let length = list.length;
    list.forEach((item, index) => {
      let calssname = index === 0 ? "first_step" : "";
      let seq = index === 0 ? "√" : index === length - 1 ? "·" : "⬆";
      html += "   <div class='el-step " + calssname + "'>";
      html += "      <div class='el-step__time'>";
      html += "          <div class='el-step__description'>" + item.eventtime + "</div>";
      html += "      </div>";
      html += "      <div class='el-step__head'>";
      html += "          <div class='el-step__line'></div>";
      html += "          <div class='el-step__icon'>";
      html += "              <div class='el-step__icon-inner'>" + seq + "</div>";
      html += "          </div>";
      html += "      </div>";
      html += "      <div class='el-step__main'>";
      html += "          <div class='el-step__description'>";
      html += "              " + item.eventremark + " 操作员：" + item.operatorname + "";
      html += "          </div>";
      html += "      </div>";
      html += "   </div>";
    });
    $("#transportNodeQuery_view_steps").html(html);

  }

  // 详情表grid
  var details_grid_opts = {
    skin: "card",
    columns: [
      { id: "lineid", name: "运单id", type: "ro", width: "130", hidden: true },
      { id: "shipbillno", name: "运单号", type: "ro", width: 120 },
      { id: "itemno", name: "产品编号", type: "ro", width: 120 },
      { id: "itemname", name: "产品名称", type: "ro", width: 120 },
      { id: "itemtype", name: "物料类型", type: "ro", width: 120, render: function (v, rd) { return rd.itemtypeName ? rd.itemtypeName : v; } },
      { id: "pcs", name: "件数", type: "ro", width: 120 },
      { id: "weight", name: "重量", type: "ro", width: 120 },
      { id: "vol", name: "体积", type: "ro", width: 120 },
      { id: "remark", name: "备注", type: "ro", width: 120 }
    ],
    fixedLast: false, // 开启固定列，固定最后一行，倒数第二列不能隐藏
    multiselect: false, // 是否支持多选
    url: UPCLOUD_RDC_TMS_BUSINESS_SERVICE+"/appoint/tmsShipbillDQuery", // 数据接口
    type: "post", // 数据提交方式，默认为get
    params: "{}",
    page: false, // 是否启用分页
    contentType: "application/json",
    totalCount: "totalCount" // 总记录数字段，默认totalCount
  };
  details_grid = new PlgGrid(details_grid_opts);
  details_grid.renderTo("transportNodeQuery_details");
};