/*******************************************************************************
 * Copyright(c) 2022 dongke All rights reserved. / Confidential
 * 类的信息：
 *		1.程序名称：
 *		2.销售出库列表
 * 编辑履历：
 *		作者				日期					版本				修改内容
 *		于继渤		 2024-3-25	    1.00		   	    
 *******************************************************************************/
const mixins = require('@/mixins/index.js')
const Constants = require('@/utils/Constants.js');
const app = getApp()
Page({
  mixins: [mixins],
  /**
   * 页面的初始数据 
   */
  data: {
    tagList: [{
      title: mixins.$t("all"),
      code: ''
    }, {
      title: mixins.$t("unOutBoundOutStatusName"),
      code: mixins.$t("outBoundingOutStatus")
    }, {
      title: mixins.$t("outBoundedOutStatusName"),
      code: mixins.$t("outBoundedOutStatus")
    }],
    // 列表区（脚部金额）
    footerAmount: {
      name: 'sumOutAmt',
      title: mixins.$t("totalAmount")
    },
    // 列表区（脚部信息）
    footerInfo: [{
      name: 'sumOutQty',
      title: mixins.$t("piece"),
      prefix: mixins.$t("together"),
    }],
    // 列表区（内容）
    contentList: [{
      name: 'outNo',
      title: mixins.$t("outOrderNo")
    },
    {
      name: 'cusPhone',
      title: mixins.$t("cusPhone")
    },
    {
      name: 'addressFull',
      title: mixins.$t("adddressFull")
    },
    {
      name: [{
        name: 'orgName',
        title: ''
      }, {
        name: 'staffName',
        title: mixins.$t("staffId")
      }],
      title: mixins.$t("storeInformation")
    }
    ],
    // 查询条件
    searchContent: [{
      code: 'createtime',
      title: mixins.$t("pastThirthtyDays"),
      defaultValue: 5,
      searchType: Constants.searchType.date
    },
    {
      code: 'staff',
      title: mixins.$t("staffId"),
      dropType: 'staff'
    },
    {
      code: 'org',
      title: mixins.$t("orgId"),
      dropType: 'org'
    },
    {
      code: 'choose',
      title: mixins.$t("choose"),
      searchType: Constants.searchType.pick
    }
    ],
    // 查询条件-筛选
    pullMenuList: [{
      code: 'outStatus',
      pullType: 'mSelect',
      typeName: 'outStatus'
    },
    {
      code: 'receiveStatus',
      pullType: 'mSelect',
      typeName: 'receiveStatus'
    },
    {
      code: 'delivery_Time',
      dataType: 'date'
    },
    {
      code: 'viewVoidedDocuments',
      dataType: 'checkbox'
    },
    ],
    contentObj: {
      '待出库': [{
        name: 'outNo',
        title: mixins.$t("outOrderNo")
      },
      {
        name: 'cusPhone',
        title: mixins.$t("cusPhone")
      },
      {
        name: 'addressFull',
        title: mixins.$t("adddressFull")
      },
      {
        name: [{
          name: 'orgName',
          title: ''
        }, {
          name: 'staffName',
          title: mixins.$t("staffId")
        }],
        title: mixins.$t("storeInformation")
      }
      ],
      '出库中': [{
        name: 'outNo',
        title: mixins.$t("outOrderNo")
      },
      {
        name: 'cusPhone',
        title: mixins.$t("cusPhone")
      },
      {
        name: 'addressFull',
        title: mixins.$t("adddressFull")
      },
      {
        name: [{
          name: 'orgName',
          title: ''
        }, {
          name: 'staffName',
          title: mixins.$t("staffId")
        }],
        title: mixins.$t("storeInformation")
      }
      ],
      '已出库': [{
        name: 'outNo',
        title: mixins.$t("outOrderNo")
      },
      {
        name: 'cusPhone',
        title: mixins.$t("cusPhone")
      },
      {
        name: 'addressFull',
        title: mixins.$t("adddressFull")
      },
      {
        name: [{
          name: 'orgName',
          title: ''
        }, {
          name: 'staffName',
          title: mixins.$t("staffId")
        }],
        title: mixins.$t("storeInformation")
      }
      ],
    },
    buttonSaveList: [{
      code: 'add',
      title: mixins.$t("add")
    }],
    contentSaveList: [{
      code: 'need',
      title: mixins.$t("totalAmount"),
      type: 'str'
    }, {
      code: 'amount',
      content: 0,
      type: 'number'
    }],

    // 弹出按钮
    buttonList: [],
    // 系统参数
    flgHandleSetting: app.globalData.setting[Constants.settingCode.IVT001] == "true" ? true : false,
    // 路由
    routeObjName: 'saleOutBound',
    primaryKey: 'outId',
    active: 0
  },

  /**
   * @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') //打印票据
      },]
    } else {
      //除了已入库 不显示销售退货
      if (item.outStatus == Constants.outStatus.outBounded) { //"出库状态-已出库"
        buttonList = [{
          name: 'editInto',
          title: mixins.$t('edit')
        },
        {
          name: 'salesOutbound',
          title: mixins.$t("handleWithdrawal")
        },
        {
          name: 'saleOrderReturn',
          title: mixins.$t("saleReturn"),
          formMode: Constants.formMode.other,
          other: {
            idKey: 'outId'
          },
          formType: 'toSaleOut'
        }, //退货 
        {
          name: 'cusCollection',
          formType: Constants.formMode.add,
          title: mixins.$t("cusCollection")
        }, {
          name: 'cusReturnCollection',
          formType: Constants.formMode.add,
          title: mixins.$t("cusReturnCollection")
        },
        {
          name: 'invalid',
          title: mixins.$t("invaidOrder")
        }, //作废
        {
          name: 'printedBill',
          title: mixins.$t('printedBill') //打印票据
        },
        ]
      } else {
        // 弹出按钮
        buttonList = [{
          name: 'editInto',
          title: mixins.$t('edit')
        }, {
          name: 'salesOutbound',
          title: mixins.$t("outProcessing")
        },
        {
          name: 'cusCollection',
          formType: Constants.formMode.add,
          title: mixins.$t("cusCollection")
        },
        {
          name: 'cusReturnCollection',
          formType: Constants.formMode.add,
          title: mixins.$t("cusReturnCollection")
        },
        {
          name: 'invalid',
          title: mixins.$t("invaidOrder")
        }, //作废 
        {
          name: 'printedBill',
          title: mixins.$t('printedBill') //打印票据
        },
        ]
      }
      //6460 标-免费版-销售出库-一览-三个点再加一个客户收款  除了标准版 其他的删除客户收款
      if (this.data.gradeCode !== Constants.gradeCode.STD) {
        if (buttonList.length > 0) {
          for (let i = 0; i < buttonList.length; i++) {
            if (buttonList[i].name == 'cusCollection') {
              buttonList.splice(i, 1)
              break
            }
          }
        }
      }


    }

    this.setData({
      // 弹出按钮
      buttonList: buttonList
    })
  },

  /**
   * @desc :   销售出库退货方法提示校验
   * @date : 2024年3月8日
   * @author : 于继渤
   */
  isAllowedSaleOrderReturn(e) {
    console.log(e)
    let result = ''
    //判断退货量是否小于订单量
    if (e.outQty == 0) {
      result = '可退货量不足'
    }
    return result
  },



  /**
   * @desc : 编辑
   * @author : 于继渤
   * @date : 2024/1/23 9:16
   */
  editInto(e) {
    let item = e
    wx.navigateTo({
      url: this.data.route.add.url,
      success: function (res) {
        // 通过eventChannel向被打开页面传送数据 TODO 测试例子url是写死的，实际中，需要从route中读取
        res.eventChannel.emit('params', {
          id: item.outId,
          formMode: Constants.formMode.detailEdit,
          item: item
        })
      }
    })
  },
  /**
   * @desc :   作废
   * @date : 2024年3月8日
   * @author : 于继渤
   */
  invalid(e) {
    return this.excute(this.data.service, this.data.service.repeal + '/' + e.outId, {}).then(res => {
      if (res.data.code == 200) {
        wx.showToast({
          title: mixins.$t('invalidSuccessfully'),
          image: '/static/image/success.png',
          duration: 1000
        })
        // 查询
        this.searchData();
      }
      this.setData({
        loading: false
      })
    })
  },

  /**
   * @desc : 切换
   * @date : 2024/2/1 15:49
   * @author : 于继渤
   */
  onChangeTabs(e) {
    let code = e.detail.detail.code
    console.log(e)
    this.setData({
      outStatus: code,
    })
    this.searchData()
  },

  /**
   * @desc : 设置查询参数
   * @date : 2024/2/1 15:49
   * @author : 于继渤
   */
  setSearchParams(params) {
    console.log('pa', params);
    //销售状态
    params.cusId = this.data.id ? this.data.id : null
    params.outStatus = this.data.outStatus == 'all' ? '' : this.data.outStatus
    if (this.data.flgHandleSetting) {
      params.outStatus = mixins.$t("outBoundedOutStatus")
    }
    params.viewVoidedDocuments = params.viewVoidedDocuments ? true : false
    return params
  },
  /**
   * @desc : 查询
   * @date : 2024/2/1 15:49
   * @author : 于继渤
   */
  getData(params) {
    return this.excute(this.data.service, this.data.service.selectByCond, params);
  },
  /**
   * @desc : 处理查询数据
   * @date : 2024/2/1 15:49
   * @author : 于继渤
   */
  handleSearchData(tableData) {
    if (tableData && tableData.length > 0) {
      tableData.forEach(res => {
        res.collectStatus = 'noCollect'
      })
    }
    this.setData({
      tableData: tableData
    }) //计算底部金额
    this.calculateTotalAmount()
  },

  /**
   * @desc :   计算底部合计金额等
   * @date : 2024年4月8日
   * @author : 于继渤
   */
  calculateTotalAmount() {
    let tableData = this.data.tableData
    console.log('tableData', tableData);
    let contentSaveList = this.data.contentSaveList
    let outAmt = Number(0)
    let outQty = Number(0)
    tableData.forEach(res => {
      outAmt += res.outAmt + res.outingAmt
      outQty += res.outQty + res.outingQty
    })
    contentSaveList[1].content = outAmt
    contentSaveList[1].bill = tableData.length
    contentSaveList[1].quantity = outQty
    this.setData({
      contentSaveList: contentSaveList
    })

  },

  /**
  * @desc :   跳转客户详情
  * @date :   2024年5月27日
  * @author : 姜永辉
  */
  toTitle(e) {
    let cusId = e.detail.item.cusId
    wx.navigateTo({
      url: this.data.route.detailCustomer.url,
      success: function (res) {
        // 通过eventChannel向被打开页面传送数据 TODO 测试例子url是写死的，实际中，需要从route中读取
        res.eventChannel.emit('params', { id: cusId, formMode: Constants.formMode.edit })
      }
    })
  },

  /**
   * @desc :   跳转明细
   * @date :   2024年5月27日
   * @author : 周兴
   */
  toDetail(e) {
    let outId = e.outId ? e.outId : e.detail.item.outId
    let _this = this
    wx.navigateTo({
      url: this.data.route.edit.url,
      events: {
        // 保存成功后刷新页面
        refresh: function (data) {
          // 刷新一览界面
          _this.searchData();
        }
      },
      success: function (res) {
        // 通过eventChannel向被打开页面传送数据 TODO 测试例子url是写死的，实际中，需要从route中读取
        res.eventChannel.emit('params', {
          id: outId,
          formMode: Constants.formMode.detail
        })
      }
    })
  },
  /**
   * @desc :   初始加载（生命周期函数）
   * @date :   2024年5月11日
   * @author : 周兴
   */
  onLoad() {
    wx.setNavigationBarTitle({
      title: mixins.$t('order_out'),
    })
    // 标准版叫订单开单
    // if (this.data.gradeCode == Constants.gradeCode.STD) {
    //   wx.setNavigationBarTitle({
    //     title: mixins.$t('order'),
    //   })
    // } else {
    //   wx.setNavigationBarTitle({
    //     title: mixins.$t('order_out'),
    //   })
    // }
  },
})