/*******************************************************************************
 * Copyright(c) 2022 dongke All rights reserved. / Confidential
 * 类的信息：
 *		1.程序名称：
 *		2.功能描述：dkPopup组件
 * 编辑履历：
 *		作者				日期					版本				修改内容
 *		周兴		  	2024-2-23  		1.00		   	  新建
 *******************************************************************************/
const util = require('@/utils/util.js')
const app = getApp();
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    // 是否显示
    show: {
      type: Boolean
    },
    // 类型 sale; basic
    type: {
      type: String,
      value: 'sale'
    },
    // 是否只读
    readonly: {
      type: Boolean,
    },
    // 图片列名
    iconCol: {
      type: String,
      value: 'iconThumPath'
    },
    // 标题标签
    titleTagCol: {
      type: String,
      value: 'titleTag'
    },
    subColTitle:{
      type: String,
      value: '编码:'
    },
    // 标题列名
    titleCol: {
      type: String,
      value: 'title'
    },
    // 标题
    title: {
      type: String,
    },
    // 默认列
    defaultFlagCol: {
      type: String,
    },
    // 默认列标题
    defaultFlagTitle: {
      type: String,
    },
    // 描述列名
    descCol: {
      type: String,
      value: 'desc'
    },
    // 价格
    priceCol: {
      type: String,
      value: 'price'
    },
    // 价格标题
    priceTitle: {
      type: String,
    },
    // 底部信息名称
    subCol: {
      type: String,
    },
    // 内容
    contentObj: {
      type: Array
    },
    popupTopObj:{
      type: Array
    },
    // 是否开启校验,默认不开启
    validFlag: {
      type: Boolean,
      value: false
    },
    // 路由名称
    routeObjName: {
      type: String
    },
    // 结果集
    value: {
      type: String,
      observer: function (newVal) {
        if (newVal) {
          this.setData({
            form: JSON.parse(newVal) || {}
          })
        }
      }
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    showDrop: false,
    showTree: false,
    $t: app.globalData.lang,
    routeUrl: app.globalData['routeUrl'],
    index: null,
    // 下拉类型
    dropType: null,
    dropCode: null,
    dropName: null,
    form:{}
  },

  /**
   * 组件的方法列表
   */
  methods: {
    /**
     * @desc :  关闭弹窗
     * @author : 周兴
     * @date : 2024/2/19 12:16
     */
    onClosePopup() {
      this.setData({
        show: false,
        // form:{}
      })
      this.triggerEvent("onClosePopup", {   })
    },
    /**
     * @desc :  选择数据
     * @author : 周兴
     * @date : 2024/2/19 12:16
     */
    commit() {
      // 校验
      if (this.data.validFlag && !this.validData()) {
        return false;
      }
      this.triggerEvent("commit", {
        form: this.data.form
      })
      this.setData({
        show: false
      })
    },
    /**
     * @desc   : 非空校验
     * @author : 周兴
     * @date   : 2024/2/20 11:46
     */
    validData() {
      let flag = true;
      let form = this.data.form;
      let contentObj = this.data.contentObj;
      contentObj.forEach(item => {
        let title = this.$t(item.title ? item.title : item.code)
        console.log('title',title,form[item.code])
        // 如果必须输入，就要进行判断
        if (item.required && !form[item.code]) {
          item.errMsg = title + '不为空'
          flag = false;
        }
      })
      this.setData({
        contentObj: contentObj
      })
      return flag;
    },
    /**
     * @desc   : 打开下拉
     * @author : 周兴
     * @date   : 2024/1/26 11:46
     */
    open(e) {
      if(this.data.readonly){
        return;
      }
      let item = e.currentTarget.dataset;
      let that = this
      if (item.item.type == 'drop') {
        if(item.type){ 
          this.setData({
            showDrop: true,
            dropCode: item.key,
            dropName: item.name,
            dropType: item.type,
            index: item.index,
          })
        } 
      }else if (item.item.type == 'choose') { 
        // 跳转链接
        console.log('this.data.routeUrl',this.data.routeUrl)
        console.log('this.data.routeObjName',this.data.routeObjName)
        if (item.item.urlKey) {
          let route = this.data.routeUrl[this.data.routeObjName][item.item.urlKey]
          let url = route.url
          // TODO
         // url = '/package-base-select/pages/select-customers/select-customers'
          if (url) {
            wx.navigateTo({
              url: url,
              events: {
                // 回调后
                bindData: function (data) {  
                  let key = e.currentTarget.dataset.item.code
                  let name = e.currentTarget.dataset.item.name 
                  console.log('key',key,data)
                  console.log('name',name)
                  let form = that.data.form
                  form[key] = data.data.id
                  form[name] = data.data.name 
                  form[key+'_data'] = data.data.list
                  //跟进仓库处理库存
                  if(item.item.choosePopupType == 'inventorySku'){
                    form['invId'] = data.data.item.invId 
                    form['nonStdCode'] = data.data.item.nonStdCode 
                    form['usableQty'] = data.data.item.usableQty 
                    form['invQty'] = data.data.item.invQty 
                  }
                  if(item.item.name == 'supervisor'){  //仓库主管
                    console.log(data)
                    form['contactPhone'] = data.data.staffPhone 
                  }
                  
                  that.setData({
                    form: form,
                  })

                }
              },
              success: function (res) {
                let data = {}
                let item = e.currentTarget.dataset.item
                if(item  && item.idKey){
                  data['id'] = item[item.idKey]
                }
                if(item  && item.formMode){
                  data['formMode'] = item.formMode
                }
                if(item  && item.formType){
                  data['formType'] = item.button.formType
                }
                if(that.data.form){
                  let form = that.data.form;
                  data['item'] = form
                  let key = e.currentTarget.dataset.item.code
                  if(form[key+ '_data']){
                    data['item'].data = that.data.form[key+ '_data']
                    delete form[key+ '_data']
                    that.setData({
                      form:form
                    })
                  }
                }
                data['route'] = route
                console.log('打开下拉',)
                // 通过eventChannel向被打开页面传送数据
                res.eventChannel.emit('params', data)
              }
            })
          }
        }
      }
    },
    /**
     * @desc   : 选择数据
     * @author : 周兴
     * @date   : 2024/1/26 11:46
     */
    chooseData(e) {
      let contentObj = this.data.contentObj;
      let form = this.data.form
      form[this.data.dropCode] = e.detail.value;
      form[this.data.dropName] = e.detail.text;
      // 选择后清空校验提示信息
      if (contentObj[this.data.index]?.errMsg && e.detail) {
        contentObj[this.data.index].errMsg = undefined;
      }
      this.setData({
        form: form,
        contentObj: contentObj
      })
      // 如果处理id，name还需要赋值其他，需要在页面事件中自行处理
      this.triggerEvent("chooseData", {
        code: this.data.dropCode,
        item: e.detail.item
      })
    },
    /**
     * @desc   : 修改复选框的值
     * @author : 周兴
     * @date   : 2024/2/2 11:46
     */
    changeDefault(e) {
      let form = this.data.form
      form[this.data.defaultFlagCol] = e.detail
      this.setData({
        form: form
      })
    },
    /**
     * @desc   : 改变step组件的值
     * @author : 周兴
     * @date   : 2024/2/2 11:46
     */
    changeStep(e) {
      if(this.data.readonly){
        return;
      }
      let ds = e.currentTarget.dataset
      let key = ds.key
      let item = ds.item
      let form = this.data.form
      form[key] = e.detail
      let contentObj = this.data.contentObj;
      // 输入值后清空校验提示信息
      if (item.errMsg && e.detail) {
        contentObj.errMsg = undefined;
      }
      this.setData({
        form: form,
        contentObj: contentObj
      })
    },
    /**
     * @desc   : 修改数值输入框的值
     * @author : 周兴
     * @date   : 2024/2/2 11:46
     */
    changeNumberField(e) {
      let ds = e.currentTarget.dataset
      let key = ds.key
      let item = ds.item
      let form = this.data.form
      form[key] = e.detail.value
      let contentObj = this.data.contentObj;
      // 输入值后清空校验提示信息
      if (item.errMsg && e.detail) {
        contentObj.errMsg = undefined;
      }
      this.setData({
        form: form,
        contentObj: contentObj
      })
    },
    /**
     * @desc   : 改变选择框内容
     * @author : 周兴
     * @date   : 2024/1/26 11:46
     */
    changeCheckBox(e) {
      if(this.data.readonly){
        return;
      }
      let key = e.currentTarget.dataset.key
      let checkFlag = e.currentTarget.dataset.value
      let form = this.data.form
      form[key] = !checkFlag
      this.setData({
        form: form
      })
    },
       /**
     * @desc   : 清楚数据
     * @author : 于继渤
     * @date   : 2024/2/2 11:46
     */
    setFormNull(){
      this.setData({
        form: {}
      })
    },
    /**
     * @desc   : 修改输入框的值
     * @author : 周兴
     * @date   : 2024/2/2 11:46
     */
    changeField(e) {
      let ds = e.currentTarget.dataset
      let key = ds.key
      let item = ds.item
      let form = this.data.form
      form[key] = e.detail
      let contentObj = this.data.contentObj;
      // 输入值后清空校验提示信息
      if (item.errMsg && e.detail) {
        contentObj.errMsg = undefined;
      }
      this.setData({
        form: form,
        contentObj: contentObj
      })
    },
    /**
     * @desc : 获取语言的方法
     * @author : 周兴
     * @date : 2024/1/19
     */
    $t(name) {
      if (this.data.$t[name]) {
        return this.data.$t[name];
      } else {
        return name;
      }
    },
  },
  /**
   * 组件生命周期
   */
  lifetimes: {
    attached: function () {
      console.log('fffd',this.data.form,this.data.contentObj);
    },
    detached: function () {
      // 在组件实例被从页面节点树移除时执行
    },
  },
})