/*******************************************************************************
 * Copyright(c) 2022 dongke All rights reserved. / Confidential
 * 类的信息：
 *		1.程序名称：
 *		2.组织机构列表
 * 编辑履历：
 *		作者				日期					版本				修改内容
 *		王英杰		   2024-2-12	    1.00		   	    
 *******************************************************************************/
const Constants = require('@/utils/Constants.js');
const mixins = require('@/mixins/index.js')
const util = require('@/utils/util.js')
const app = getApp()
Page({
  mixins: [mixins],
  /**
   * 页面的初始数据
   */
  data: {
    readonly: false,
    // 查询条件
    searchContent: [],
    form: null, //新建的数据form
    // 路由
    routeObjName: 'org', // 路由
    popContent: [{ //新建的 各个控件信息
      code: 'orgCode',
      type: 'str',
      name: 'orgCode',
      required: false,
      readonly: true
    }, { //上级部门
      code: 'parentId',
      name: 'parentName',
      title: mixins.$t("parentName"),
      type: 'choose',
      urlKey: 'chooseOrg',
      required: true
    }, { //部门名称
      code: 'orgName',
      type: 'str',
      name: 'orgName',
      required: true
    }, { //可用仓库
      code: 'whId',
      name: 'whName',
      title: '可用仓库',
      type: 'choose',
      urlKey: 'selectWarehouse',
    }, { //可用资金账号 
      code: 'accountOut',
      name: 'accountOutName',
      title: '可用资金账号',
      type: 'choose',
      urlKey: 'selectMoneyAccount'
    }, { //备注
      code: 'remarks',
      type: 'str',
      title: mixins.$t("remarks"),
      required: false
    }],

  },



  /**
   * @desc :设置查询参数
   * @date : 2024/2/1 15:49
   * @author : 王英杰
   */
  setSearchParams(params) {
    params.pageSize = 100000
    params.currentPage = 1
    params.parentId = this.data.item.parentId
    return params
  },

  /**
   * @desc :打开新建
   * @date : 2024/2/1 15:49
   * @author : 王英杰
   */
  toadd() {
    let form = JSON.parse(this.data.form)||{}
    form.editFlag = false
    this.setData({
      showPop: true,
      editFlag: false,
      form:JSON.stringify(form)
    })
  },

  /**
   * @desc :关闭新建框（弹出的popup）
   * @date : 2024/2/1 15:49
   * @author : 王英杰
   */
  onClosePopup() {
    // 使用 setTimeout 添加一秒钟延迟  
    setTimeout(() => {
      this.setData({
        readonly: false,
      });
    }, 1000); // 延迟 1000 毫秒，即 1 秒  
  },
  /**
   * @desc   : 关闭Pop后修改数据
   * @author : 王英杰
   * @date   : 2024/1/26 11:46
   */
  editItems(data) {
    console.log('data', data);
    let params = {
      ...this.data.params,
      ...data.detail.form
    };
    let macList = []
    if (params.accountOut_data) {
      params.accountOut_data.forEach(element => {
        let item = {}
        item.macId = element.macId
        item.ownerFlag = element.flgDefault
        macList.push(item)
      });
      params.macList = macList
    }

    let warehouseList = []
    if (params.whId_data) {
      params.whId_data.forEach(element => {
        let item = {}
        item.whId = element.whId
        item.ownerFlag = element.flgDefault
        warehouseList.push(item)
      });
      params.warehouseList = warehouseList
    }
    console.log("save", params);
  if(this.data.editFlag){
    return this.excute(this.data.service, this.data.service.update, params);
  }else{
    return this.excute(this.data.service, this.data.service.insert, params);
  }
  
  },


  /**
   * @desc :打开选择客户
   * @date : 2024/2/1 15:49
   * @author : 王英杰
   */
  openChooseOrg() {
    let that = this
    let addForm = that.data.addForm
    wx.navigateTo({
      // url: "./add/add",
      url: this.data.route.toAdd.url,
      events: {
        bindData: function (e) {
          console.log('e', e);
          addForm.parentOrgName = e.data.name
          addForm.parentId = e.data.id
          that.setData({
            addForm
          })
        }
      },
      success: function (res) {
        res.eventChannel.emit('params-org', {
          url: ''
        })
      }
    })
  },

  /**
   * @desc : 跳转员工新建
   * @date : 2024/2/1 15:49
   * @author : 王英杰
   */
  toAddStaff() {
    let _this = this
    wx.navigateTo({
      url: this.data.route.staffAdd.url,
      events: {
        // 回调后，在这里给页面赋值
        bandData: function (e) {
          _this.getData()
        }
      },
      success: function (res) {
        // 通过eventChannel向被打开页面传送数据 TODO 测试例子url是写死的，实际中，需要从route中读取
        res.eventChannel.emit('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(data) {
    
  },
  /**
   * @desc :保存接口的 后续处理方法
   * @date : 2024/2/1 15:49
   * @author : 王英杰
   */
  handleData(data) {
    this.setData({
      showPop: false,
    })
    this.searchData()
  },
  /**
   * @desc :初始化
   * @date : 2024/2/1 15:49
   * @author : 王英杰
   */
  loadInit() {
    this.setData({
      orgName: app.globalData.user.orgName
    })
  },
  /**
   * @desc :列表收起 打开 下拉
   * @date : 2024/2/1 15:49
   * @author : 王英杰
   */
  onchange(e) {
    let index = e.currentTarget.dataset.index;
    let open = e.currentTarget.dataset.open;
    let tableData = this.data.tableData
    tableData[index].open = !open
    this.setData({
      tableData: tableData,
    })
  },
 
  /**
   * @desc : 跳转跳转三级部门
   * @date : 2024/2/1 15:49
   * @author : 王英杰
   */
  toSubOrg(e) {
    let _this = this
    let dataset = e.currentTarget.dataset;
    let chooseOrgSort = this.data.item.chooseOrgSort + " > " + dataset.item.orgName
    wx.navigateTo({
      url: this.data.route.subOrgChoose.url,
      events: {
        // 回调后，在这里给页面赋值
        bandData: function (e) {
          // _this.getData()
        }
      },
      success: function (res) {
        // 通过eventChannel向被打开页面传送数据 TODO 测试例子url是写死的，实际中，需要从route中读取
        res.eventChannel.emit('params', {
          item: {
            parentId: dataset.item.orgId,
            chooseOrgSort: chooseOrgSort
          }
        })
      }
    })
  },

  /**
   * @desc : 点击页面的三级部门名称 查询对应详细
   * @date : 2024/2/1 15:49
   * @author : 王英杰
   */
  clickName(e) {
    let item = e.currentTarget.dataset.item
    // let param = {}
    // param.orgId = item.orgId
    let excute = this.excute(this.data.service, this.data.service.getbyid + "/" + item.orgId, {});
    excute.then(res => {
      if (res.data.code === Constants.SUCESS_CODE) {
        let form = {}
        let data = res.data.data
        form.orgId = data.orgId
        form.orgCode = data.orgCode
        form.parentId = data.parentId
        form.parentName = data.parentName
        form.orgName = data.orgName
        form.remarks = data.remarks 
        if (data.warehouseBeanList) {
          let whId_data = []
          let names = []
          data.warehouseBeanList.forEach(element => {
            let item = {}
            item.whId = element.whId
            item.flgDefault = element.flgDefault
            whId_data.push(item)
            names.push(element['whName'])
          });
          form.whId_data = whId_data
          form.whName = names.join(',')
        }

        if (data.macBeanList) {
          let accountOut_data = []
          let names = []
          data.macBeanList.forEach(element => {
            let item = {}
            item.macId = element.macId
            item.flgDefault = element.flgDefault
            accountOut_data.push(item)
            names.push(element['macName'])
          });
          form.accountOut_data = accountOut_data
          form.accountOutName = names.join(',')

        }
        let form_ = JSON.parse(this.data.form)
        form_.editFlag = false
        this.setData({
          form: JSON.stringify(form_),
          showPop: true,
          editFlag: false,
          readonly: true,
          form:JSON.stringify(form)
        })

      }
    })
    return excute;
  },
  /**
   * @desc : 编辑
   * @date : 2024/2/1 15:49
   * @author : 王英杰
   */
  toEdit() {
    let form = JSON.parse(this.data.form)
    form.editFlag = true
    this.setData({
      showPop: false,
      readonly: false,
      editFlag: true,
    });
    setTimeout(() => {
      this.setData({
        showPop: true, 
        form:JSON.stringify(form)
      });
    }, 200);

  },
})