/*******************************************************************************
 * Copyright(c) 2022 dongke All rights reserved. / Confidential
 * 类的信息：
 *		1.程序名称：
 * 编辑履历：
 *		作者				日期					版本				修改内容
 *		王英杰		 2024-1-24			1.00		    采购入库
 *******************************************************************************/
const Constants = require('@/utils/Constants.js');
const util = require('@/utils/util.js')
const mixins = require('@/mixins/index.js')
const app = getApp()
Page({
  mixins: [mixins],
  /**
   * 页面的初始数据 
   */
  data: {
    // 系统参数
    flgHandleSetting: app.globalData.setting[Constants.settingCode.IVT001] == "true" ? true : false ,
    isfirst: true,
    // 弹出按钮
    pointButtonList: [{
        name: 'inProcessing',
        title: mixins.$t('inProcessing'),
      },
      {
        name: 'editInbound',
        title: mixins.$t('edit'),
      },
      {
        name: 'invaidOrder',
        title: mixins.$t('invaidOrder'),
      },
      {
        name: 'printedBill',
        title: mixins.$t('printedBill'),
      },
    ],
    // 弹出按钮
    buttonList: [{
      name: 'merge',
      title: mixins.$t('add'), //'新建'
    }],
    contentList: [{
      title: mixins.$t('totalAmount'), //'合计金额:',
      code: 'amount',
      content: 0,
      type: 'number'
    }, {
      type: 'count',
      code: 'count',
      bill: 1,
      quantity: 2
    }],
    active: 0, //默认查询入库中
    // 查询条件
    searchContent: [{
        code: 'createtime',
        title: mixins.$t('pastThirthtyDays'),
        defaultValue: 5,
        searchType: Constants.searchType.date
      },

      {
        code: 'choose',
        title: mixins.$t('choose'),
        searchType: Constants.searchType.pick
      }
    ],
    // 查询条件-筛选
    pullMenuList: [{
        code: 'intoStatus',
        pullType: 'mSelect',
        typeName: 'inInventoryStatus'
      },
      {
        code: 'supName',
      },
      {
        code: 'staffName',
      },
      {
        code: 'orgName',
      },
      {
        code: 'whName',
      },
      {
        code: 'makeTime',
        title: mixins.$t('intoDate'),
        dataType: 'date'
      },
      {
        code: 'flgValid',
        title: mixins.$t('flgValid'),
        dataType: 'checkbox'
      },
    ],
    tagList: [{
      title: mixins.$t('inStorage')
    }, {
      title: mixins.$t('received')
    }],
    contentObj: {
      [mixins.$t("inStorage")]: [{
        name: 'intoNo',
        title: mixins.$t("inOrderNo") //入库单号
      }, {
        name: [{
          name: 'orgName',
          title: ''
        }, {
          name: 'staffName',
          title: ''
        }],
        title: mixins.$t("purInfo") //采购信息
      }, {
        name: 'whName',
        title: mixins.$t("eiWhName") //预计入库仓库
      }, {
        name: 'makeTime',
        title: mixins.$t("createTime") //创建日期
      }],
      [mixins.$t("received")]: [{ // 已入库
        name: 'intoNo',
        title: mixins.$t("inOrderNo") //订单编号
      }, {
        name: [{
          name: 'orgName',
          title: ''
        }, {
          name: 'staffName',
          title: ''
        }],
        title: mixins.$t("purInfo") //采购信息
      }, {
        name: 'whName',
        title: mixins.$t("enterWhName") //入库仓库
      }, {
        name: 'intoDate',
        title: mixins.$t("enterWhDate") //收货日期
      }],
    },
    // 列表区（脚部金额）
    footerAmount: {
      name: 'sumAmount',
      title: mixins.$t("totalAmount") //合计金额
    },
    // 列表区（脚部信息）
    footerInfo: [{
      prefix: mixins.$t("together"), //共计
      name: 'sumQuantity',
      title: mixins.$t("piece"), //件
    }],
    purchaseService: app.globalData['purchaseService'],
    inboundProcessingService: app.globalData['inboundProcessingService'],
    // 路由
    routeObjName: 'inbound',
  },
/**
   * @desc :   三个小点打开
   * @date : 2024年3月8日
   * @author : 于继渤 
   */
  toPoint(e) {
    let item = e.detail.item
    let buttonList = null
    if (!item.flgValid) { //作废
      buttonList = [{
        name: 'printedBill',
        title: mixins.$t("printedBill")
      }, ] //打印

    }  this.setData({
      // 弹出按钮
      pointButtonList: buttonList
    })
   
  },
  /**
   * @desc : （编辑）
   * @date : 2024/2/1 15:49
   * @author : 王英杰
   */
  editInbound(e) {
    let item = e
    let id = item.intoId
    // 采购入库 
    wx.navigateTo({
      url: this.data.route.add.url,
      events: {
        // 回调后，在这里给页面赋值
        bandData: function (e) {}
      },
      success: function (res) {
        res.eventChannel.emit('params', {
          id: id,
          formMode: Constants.formMode.edit
        })
      }
    })
  },
  /**
   * @desc : 作废
   * @date : 2024/2/1 15:49
   * @author : 王英杰
   */
  invaidOrder(e) {
    let item = e
    let id = item.intoId
    // 采购入库 
    this.excute(this.data.inboundProcessingService, this.data.inboundProcessingService.inboundRepeal + id, null).then(res => {
      if (res.data.code == Constants.SUCESS_CODE) {
        // 重新查询
        this.searchData()
      }
    })

  },
  /**
   * @desc : 入库撤回
   * @date : 2024/2/1 15:49
   * @author : 王英杰
   */
  handleWarehousing(e) {
    let item = e
    let id = item.intoId
    // 采购入库 
    this.excute(this.data.inboundProcessingService, this.data.inboundProcessingService.inBoundCancel, item).then(res => {
      if (res.data.code == Constants.SUCESS_CODE) {
        // 重新查询
        this.searchData()
      }
    })
  },
  /**
   * @desc : 详细页面 （编辑）
   * @date : 2024/2/1 15:49
   * @author : 王英杰
   */
  toDetail(e) {
    let activity = this.data.active
    let Id = e.detail.item.intoId
    wx.navigateTo({
      url: this.data.route.detail.url,
      events: {
        // 回调后，在这里给页面赋值
        bandData: function (e) {
          console.log("toDetail", e);
        }
      },
      success: function (res) {
        // formType ==1  是 查询采购订单   ==2 是采购入库单
        res.eventChannel.emit('params', {
          id: Id,
          formMode: Constants.formMode.edit,
          formType: activity + 1
        })
      }
    })
  },
  /**
   * @desc : 入库办理 （编辑）
   * @date : 2024/2/1 15:49
   * @author : 王英杰
   */
  inProcessing(e) {
    let activity = this.data.active
    let Id = e.intoId
    wx.navigateTo({
      url: this.data.route.detail.url,
      events: {
        // 回调后，在这里给页面赋值
        bandData: function (e) {
          console.log("toDetail", e);
        }
      },
      success: function (res) {
        // formType ==1  是 查询采购订单   ==2 是采购入库单
        res.eventChannel.emit('params', {
          id: Id,
          formMode: Constants.formMode.edit,
          formType: activity + 1
        })
      }
    })
  },
  /**
   * @desc : 新建
   * @date : 2024/2/1 15:49
   * @author : 王英杰
   */
  toAdd() {
    wx.navigateTo({
      url: this.data.route.add.url,
      success: function (res) {
        // 通过eventChannel向被打开页面传送数据 TODO 测试例子url是写死的，实际中，需要从route中读取
        res.eventChannel.emit('params', {})
      }
    })
  },
   

  /**
   * @desc : 切换  待出库  已出库
   * 采购入库 入库中三个点 入库办理 、编辑、作废、票据打印
   * 已入库三个点按钮入库撤回、编辑、作废、票据打印（入库撤回参数手动办理时显示；作废参数自动办理时显示）
   * @date : 2024年3月8日
   * @author : 王英杰
   */
  onChangeTabs(e) {
    let index = e.detail.detail.index
    let flgHandleSetting = this.data.flgHandleSetting 
    this.setData({
      active: index,
    })
    if (index == 0) {
      if (flgHandleSetting) {
        // 如果flgHandleSetting为true，则先添加inProcessing按钮，再添加通用按钮  
        this.setData({
          pointButtonList: [{
              name: 'inProcessing',
              title: mixins.$t('inProcessing'),
            },
            {
              name: 'editInbound',
              title: mixins.$t('edit'),
            },
            {
              name: 'invaidOrder',
              title: mixins.$t('invaidOrder'),
            },
            {
              name: 'printedBill',
              title: mixins.$t('printedBill'),
            },
          ]
        });
      } else {
        // 如果flgHandleSetting为false，则直接设置通用按钮  
        this.setData({
          pointButtonList: [{
              name: 'inProcessing',
              title: mixins.$t('inProcessing'),
            },
            {
              name: 'invaidOrder',
              title: mixins.$t('invaidOrder'),
            },
            {
              name: 'printedBill',
              title: mixins.$t('printedBill'),
            },
          ]
        });
      }
    } else {
      if (flgHandleSetting) {
        this.setData({
          pointButtonList: [{
              name: 'editInbound',
              title: mixins.$t('edit'),
            },
            {
              name: 'invaidOrder',
              title: mixins.$t('invaidOrder'),
            },
            {
              name: 'printedBill',
              title: mixins.$t('printedBill'),
            },
          ]
        });
      } else {
        this.setData({
          pointButtonList: [{
              name: 'handleWarehousing',
              title: mixins.$t('handleWarehousing'),
            },
            {
              name: 'editInbound',
              title: mixins.$t('edit'),
            },
          
            {
              name: 'printedBill',
              title: mixins.$t('printedBill'),
            },
          ]
        });
      }

    }
    this.searchData()
  },
  /**
   * @desc : 设置查询参数
   * @date : 2024年3月8日
   * @author : 王英杰
   */
  setSearchParams(params) {
    if (this.data.active == 0 && !this.data.flgHandleSetting) { //入库中的查询参数
      params.intoStatus = Constants.intoStatus.inBounding //'入库状态-入库中'
      // params.purType = '单据类型-采购订单'
      params.intoType = Constants.intoType.pur //'入库类型-采购入库'
    }
    if (this.data.active == 1) { //已入库的查询参数 
      params.intoStatus = Constants.intoStatus.inBounded //'入库状态-已入库'
      params.intoType = Constants.intoType.pur //'入库类型-采购入库'
    }
    if (params.flgValid) { //true 说明包含作废单据  查出数据不受 flgValid 筛选
      params.flgValid = null
    } else { //默认不查作废单据
      params.flgValid = !params.flgValid
    }
    params.makeTime = null
    //采购订单明细 跳转到采购入库
    let isfirst = this.data.isfirst
    let purNo = this.data.item ? this.data.item.purNo : null
    if (isfirst && purNo) { //第一次进入 取传过来的  
      let searchForm = this.data.searchForm ? JSON.parse(this.data.searchForm) : {}
      searchForm.searchText = purNo || ''
      this.setData({
        searchForm: JSON.stringify(searchForm),
        searchText: purNo || '',
      })
      params.searchForm = JSON.stringify(searchForm)
      params.searchText = purNo
    }
    this.setData({
      isfirst: false
    })
    return params;
  },
  /** 
   * @desc : 查询 入库单
   * @date : 2024年3月8日
   * @author : 王英杰
   */
  getData(params) {
    // if(this.data.active == 0){//入库中
    //   return this.excute(this.data.purchaseService, this.data.purchaseService.noStoredlistBy, params);
    // }else { //已入库
    //   return this.excute(this.data.service, this.data.service.selectByCond, params);
    // }

    return this.excute(this.data.service, this.data.service.selectByCond, params);
  },

  /**
   * @desc :   处理接口返回数据
   * @date : 2024年3月8日
   * @author : 王英杰
   */
  handleSearchData(tableData) {
    let temp = tableData

    let footerAmount = this.data.footerAmount
    let footerInfo = this.data.footerInfo
    let contentnFootList = this.data.contentList
    let intoingQty = Number(0)
    let intoingAmt = Number(0)
    if (this.data.active == 0  && !this.data.flgHandleSetting) {
      // 列表区（脚部金额）
      footerAmount.name = 'intoingAmt'
      // 列表区（脚部信息）
      footerInfo[0].name = 'intoingQty'
      temp.forEach(it => {
        it.makeTime = it.makeTime.substring(0, 10)
        intoingQty += Math.abs(Number(it.intoingQty))
        intoingAmt += Math.abs(Number(it.intoingAmt))
      })
    } else {
      // 列表区（脚部金额）
      footerAmount.name = 'intoAmt'
      // 列表区（脚部信息）
      footerInfo[0].name = 'intoQty'
      temp.forEach(it => {
        it.makeTime = it.makeTime.substring(0, 10)
        intoingQty += Math.abs(Number(it.intoQty))
        intoingAmt += Math.abs(Number(it.intoAmt))
      })
    }
    contentnFootList.forEach(it => {
      if (it.type == 'count') {
        it.bill = tableData.length
        it.quantity = intoingQty
      }
      if (it.type == 'number') {
        it.content = intoingAmt
      }
    })
    this.setData({
      footerInfo,
      footerAmount,
      contentList: contentnFootList,
    })
  },
  /**
   * @desc : 初始化数据
   * @date : 2024/2/1 15:49
   * @author : 王英杰
   */
  loadInit() {
    let flgHandleSetting = this.data.flgHandleSetting
 
    if (flgHandleSetting) { //自动的话 要隐藏作废
      // 如果flgHandleSetting为true，则先添加inProcessing按钮，再添加通用按钮  
      this.setData({
        pointButtonList: [{
            name: 'inProcessing',
            title: mixins.$t('inProcessing'),
          },
          {
            name: 'editInbound',
            title: mixins.$t('edit'),
          },
          {
            name: 'invaidOrder',
            title: mixins.$t('invaidOrder'),
          },
          {
            name: 'printedBill',
            title: mixins.$t('printedBill'),
          },
        ]
      });
    } else {
      // 如果flgHandleSetting为false，则直接设置通用按钮  
      this.setData({
        pointButtonList: [{
            name: 'inProcessing',
            title: mixins.$t('inProcessing'),
          },
          {
            name: 'editInbound',
            title: mixins.$t('edit'),
          },
          {
            name: 'printedBill',
            title: mixins.$t('printedBill'),
          },
        ]
      });
    }
  },
})