<template>
  <div class="page-box recycledAdjustmentPage" v-loading="Loading.appMainLoading">
    <!-- <tablePagination
      :currenButtonData="currenButtonData"
      :tableData="tableData"
      :tableLoading="Loading.tableLoading"
      :tableColumns="tableColumns"
      @rowDrop="rowDrop"
      :totalCount="totalCount"
      :multipleSelection="multipleSelection"
      :MaxResultCount="PageListParams.MaxResultCount"
      @topbutton="topbuttonHandle"
      @inlineDialog="inlineDialog"
      @sortChange="sortChange"
      @alertoldSkipCount="alertoldSkipCount"
      @alterResultCount="alterResultCount"
      @handleSelectionChange="handleSelectionChange"
      :currentPageProps="oldSkipCount"
      :quicklySearchOption="quicklySearchOption"
      @quicklySearchClick="quicklySearchClick"
      @quicklySearchClear="quicklySearchClear"
      :primarySearchOption="primarySearchOption"
      @overallSearchFormClick="overallSearchFormClick"
      :httpOverallSearchData="httpOverallSearchData"
    >
    </tablePagination> -->
    <!-- 新导入 disabledMethod 导入方式禁用 disabledIsAllowPartImport 是否局部导入禁用-->
    <!-- methodValue 导入方式默认选项  是否局部导入 默认选项  -->
    <!-- <importFile
      :loading="Loading.importLoading"
      :show="displayDialog.importDialog"
      :URL="URL"
      :disabledMethod="{ method1: false, method2: false, method3: false }"
      :disabledIsAllowPartImport="{ isAllowPartImport1: false, isAllowPartImport2: false, }"
      isAllowPartImportValue="1"
      @importClick="postImportMergeClick(arguments)"
      @postImportDown="importDown"
    ></importFile> -->
    <!-- <curren-Drawer
      :title="tableColumns"
      :DrawerLoading="Loading.DrawerLoading"
      :drawer="displayDialog.detailsDialog"
      :propsData="propsData"
      :Butttondata="DrawerButtonData"
      :tabsDesTions="tabsDesTions"
      @drawerShut="(val) => (displayDialog.detailsDialog = val)"
      @close-value="closeValue"
      @drawerbutton="drawerbutton"
      :tableColumns="detailsTableColumns"
      :totalCount="totalCountDetails"
      :MaxResultCount="MaxResultCountDetails"
      @alterResultCountDetails="alterResultCountDetails"
      @alertoldSkipCountDetails="alertoldSkipCountDetails"
    ></curren-Drawer> -->
    <!-- 新增弹窗 -->
    <el-dialog
      :visible="addPopShow"
      :modal-append-to-body="false"
      :append-to-body="false"
      :modal="false"
      :fullscreen="true">
      <div class="addPopMain">
        <div class="addPopContent addPopContent_FS">
          <span class="addPopTypeTitle">粉碎料</span>
          <currenTableFlex
            :flexTableData="addPopData_FS"
            :flexSearchOptions="editOptions"
            :flexTableColumns="addPopColumns_FS"
            @detailsDataPush="pushFS"
          ></currenTableFlex>
        </div>
        <div class="addPopContent addPopContent_YL">
          <span class="addPopTypeTitle">原料</span>
          <currenTableFlex
          :isUpdate="isUpdate"
            :flexTableData="addPopData_YL"
            :flexSearchOptions="editOptions"
            :flexTableColumns="addPopColumns_YL"
            @detailsDataPush="pushYL"
            @updateSelectListTable="updateSelectListTable"
            @changeSelect="changeSelect"
            @clearHandle="clearHandle"
          ></currenTableFlex>
        </div>
        <div class="addPopContent addPopContent_HB">
          <span class="addPopTypeTitle">混拌料</span>
          <currenTableFlex
            :flexTableData="addPopData_HB"
            :flexSearchOptions="editOptions"
            :flexTableColumns="addPopColumns_HB"
            :showAddBtn="false"
            :showAllDeleteButton="false"
            @detailsDataPush="pushHB"
          ></currenTableFlex>
        </div>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="addPopResetHandle">重 置</el-button>
        <el-button type="primary" @click="addPopSureHandle">确 定</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import { tableMixins } from "@/mixins/TableMixins"
import { LoadingMixins } from "@/mixins/LoadingMixins"
import { drawerMixins } from "@/mixins/drawerMixins"
import { TableHeaderMixins } from "@/mixins/TableHeaderMixins"
import { mixins } from "@/mixins/mixins"
import { requestData } from "@/utils/processButtonData"
import currenTableFlex from "@/components/currenTableFlex"
import { filterSelectMixins } from '@/mixins/filter-Select'
import detailsRules from '@/utils/rules';
import { getPageList } from "@/api/wms-api"
export default {
  name: "materialsAdjustmentFunc",
  mixins: [
    tableMixins,
    LoadingMixins,
    drawerMixins,
    TableHeaderMixins,
    mixins,
    filterSelectMixins,
  ],
  components:{
    currenTableFlex
  },
  watch: {
    'packingsYL_Options':{
      handler(val) {
        console.log(128,val)
        this.addPopColumns_YL[1].userOptions = val;
      },
      deep: true,
      immediate: true,
    },
  },
  data () {
    return {
      isUpdate:false,
      URL: 'wms/store/item-transform-request',
      //常用按钮数据
      currenButtonData: [
        this.defaultAddBtn(),//新增
        this.defaultImportBtn(),//导入
        this.defaultFieldSettingBtn(),//字段设置
        this.defaultFreshBtn(),//刷新
        this.defaultFilterBtn(),//筛选
      ],
      DrawerButtonData: requestData(this),
      addPopShow:true,//新增弹窗显隐
      //粉碎料信息
      addPopData_FS:[{
        itemCode:null,
        qty:null,
        locationCode:null,
      }],
      //粉碎料表头信息
      addPopColumns_FS:[
        { type: "filterSelect", label: "物品代码", prop: "itemCode", optionsLabel: "name", optionsValue: "code", 
          focus: (type,val) => { return this.getFilterList(type, val, "basedata/Item-Basic")},//this.isFilter("isRecycled","true")
          searchButton: (val) => { this.showSerarchPage(val, 'basedata/Item-Basic', 'ItemBasic', '物品选择', this.addPopData_HB) }, 
          width:"auto", searchButton:false
        },
        { type: "filterSelect", label: "目标库位", prop: "locationCode", optionsLabel: "name", optionsValue: "code", 
          focus: (type,val) => { return this.getFilterList(type, val, "basedata/Location",this.isFilter("type", "2"))},
          searchButton: (val) => { this.showSerarchPage(val, 'basedata/Location', 'InventoryBalance', '库位选择', this.addPopData_HB) }, 
          width:"auto", searchButton:false
        },
        { type: "input", validType:'pointNumber', label: "数量", prop: "qty", width:"auto" },
      ],
      //原料信息
      addPopData_YL:[{
        itemCode:null,
        packingCode:null,
        inventoryQty:null,
        locationCode:null,
        qty:null
      }],
      packingsYL_Options:[],
      itemPackings_YL:{},
      //原料表头信息
      addPopColumns_YL:[
        { type: "filterSelect", label: "物品代码", prop: "itemCode", optionsLabel: "name", optionsValue: "code", 
          focus: (type,val) => { return this.getFilterList(type, val, "basedata/Item-Basic",this.isFilter("type", "10C02"))},
          width:"auto"
        },
        // { type: "filterSelect", label: "箱标签", prop: "packingCode", 
        //   // optionsLabel: "itemCode", optionsValue: "packingCode", 
        //   focus: (type,val) => { return this.getFilterList(type, val, "wms/inventory/Inventory-Balance")},
        //   colSpan: 12 
        // },
        { type: "select", label: "箱码", prop: "packingCode", 
          optionsLabel: "packingCode", optionsValue: "packingCode", 
          userOptions:this.packingsYL_Options,width:"auto"
        },
        // todo: 库存数量、库位：自动带出
        { label: "库存数量", prop: "inventoryQty", width:"auto" },
        { label: "库位", prop: "locationCode", width:"auto" },
        // todo: 小于等于库存数量
        { type: "input", validType:'pointNumber', label: "数量", prop: "qty", width:"auto",
          rules: detailsRules.numberInput
          // rules:  [{
          //   type: "number",
          //   trigger: "blur",
          //   validator: (rule, value, callback) => {
          //     console.log(7,rule,value)
          //   }
          // }]
        },
      ],
      //混拌料信息
      addPopData_HB:[{
        itemCode:null,
        qty:null,
        locationCode:null,
      }],
      //混拌料表头信息
      addPopColumns_HB:[
        { type: "filterSelect", label: "物品代码", prop: "itemCode", optionsLabel: "name", optionsValue: "code", 
          focus: (type,val) => { return this.getFilterList(type, val, "basedata/Item-Basic")},
          searchButton: (val) => { this.showSerarchPage(val, 'basedata/Item-Basic', 'ItemBasic', '物品选择', this.addPopData_HB) }, 
          width:"auto", searchButton:false
        },
        { type: "filterSelect", label: "目标库位", prop: "locationCode", optionsLabel: "name", optionsValue: "code", 
          focus: (type,val) => { return this.getFilterList(type, val, "basedata/Location")},
          searchButton: (val) => { this.showSerarchPage(val, 'basedata/Location', 'InventoryBalance', '库位选择', this.addPopData_HB) }, 
          width:"auto", searchButton:false
        },
        { type: "input", validType:'pointNumber', label: "数量", prop: "qty", width:"auto" },
      ],
    };
  },
  mounted () {
    // this.paging();
  },
  methods:{
    //过滤查询条件
    isFilter (val, data) {
      let filter = [
        {
          logic: "And",
          column: val,
          action: "==",
          value: data
        }
      ]
      return filter
    },
    topbuttonHandle(val){
      if(val == 'newly'){
      }else{
        this.topbutton(val)
      }
    },
    addPopResetHandle(){
      this.$confirm('重置后，字段设置将恢复初始设置，是否继续?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning',
      }).then(() => {
        this.addPopData_FS=[{
          itemCode:null,
          qty:null,
          locationCode:null,
        }]
        this.addPopData_YL=[{
          itemCode:null,
          inventoryQty:null,
          locationCode:null,
          qty:null
        }]
        this.addPopData_HB=[{
          itemCode:null,
          qty:null,
          locationCode:null,
        }]
      }).catch(() => {

      });
    },
    addPopSureHandle(){
      this.addPopData_YL.forEach(item=>{
        console.log(item)
      })
      // console.log(this.addPopData_FS)
      // console.log(this.addPopData_YL)
      // console.log(this.addPopData_HB)
    },
    // 粉碎料下拉
    pushFS(data){
      console.log(data)
    },
    // 原料下拉
    pushYL(data){
      console.log(data)
      if(data[1].prop="itemCode"){
        let params = {
          Sorting: "",
          MaxResultCount: 1000,
          SkipCount: 0,
          condition: {
            filters: [{
              logic: "And",
              column: "itemCode",
              action: "==",
              value: data[0].code
            }]
          }
        }
        this.Loading.appMainLoading = true
        // todo:字段确定+清空失效处理
        console.log(311,data[3].$index)
        this.addPopData_YL[data[3].$index].packingCode = null
        this.addPopData_YL[data[3].$index].inventoryQty = null
        this.addPopData_YL[data[3].$index].locationCode = null
          this.isUpdate = !this.isUpdate
        getPageList(params, "wms/inventory/inventory-balance").then((res)=>{
          this.itemPackings_YL[data[0].code] = res.items 
          this.isUpdate = !this.isUpdate
        // this.$set(this.addPopColumns_YL[1], 'loading', false)
        // this.packingsYL_Options = []
        // this.packingsYL_Options.push({packingCode:1111})
        // this.addPopColumns_YL[1].userOptions.push({packingCode:222})
        // this.$set(this.addPopColumns_YL, 1, { type: "select", label: "箱码", prop: "packingCode", 
        // // optionsLabel: "packingCode", optionsValue: "packingCode", 
        //   userOptions:[{label:1111,value:1111}],width:"auto",loading:false
        // })
        //     this.$forceUpdate()
        
        //     // this.packingsYL_Options = this.itemPackings_YL[data[0].code]
        //     console.log(111)
            // this.packingsYL_Options = [{label:1111,value:1111}]
            // this.addPopColumns_YL[1].userOptions = [{label:1111,value:1111}]
            this.Loading.appMainLoading = false
        //     this.$forceUpdate()
            // console.log(11111111,this.addPopColumns_YL[1])
        })
        .catch(err=>{
          // console.log(2222)
          this.Loading.appMainLoading = false
        })
      }
    },
    changeSelect(prop, val,item,searchData,scope){
      console.log(341,prop, val,item,searchData,scope)
      if(prop == 'packingCode'){
        let _currentRow = this.itemPackings_YL[searchData.itemCode].filter(item=>{
          return val == item.packingCode
        })
        console.log(347,_currentRow)
        // todo:字段确定
        this.addPopData_YL[scope.$index].inventoryQty = _currentRow[0].qty
        this.addPopData_YL[scope.$index].locationCode = _currentRow[0].locationCode
      }
    },
    clearHandle(item,scope){
      // todo:测试
      this.addPopData_YL[scope.$index].packingCode = null
      this.addPopData_YL[scope.$index].inventoryQty = null
      this.addPopData_YL[scope.$index].locationCode = null
    },
    updateSelectListTable(data,item,scope,tableData){
      // if(!data){  return  }
      // if(item.prop == "packingCode"){
      //   this.packingsYL_Options = this.itemPackings_YL[tableData[scope.$index].itemCode]
      //   console.log(318,this.itemPackings_YL)
      //   console.log(326,this.addPopColumns_YL[1])
      // }
      // 展开
      if(data){
        if(item.prop == "packingCode"){
          this.packingsYL_Options = []
          if(!tableData[scope.$index].itemCode || tableData[scope.$index].itemCode.length == 0){
            this.$warningMsg("请先选择物料")
          }
          // console.log(tableData[scope.$index].itemCode)
          if(this.itemPackings_YL[tableData[scope.$index].itemCode]){
            this.packingsYL_Options = this.itemPackings_YL[tableData[scope.$index].itemCode]
          }
        // this.isUpdate = !this.isUpdate
          // let params = {
          //   Sorting: "",
          //   MaxResultCount: 1000,
          //   SkipCount: 0,
          //   condition: {
          //     filters: [{
          //       logic: "And",
          //       column: "itemCode",
          //       action: "==",
          //       value: tableData[scope.$index].itemCode
          //     }]
          //   }
          // }
          // this.addPopColumns_YL[1].userOptions = [{packingCode:222}]
          // getPageList(params, "wms/inventory/inventory-balance")
          //   .then(res=>{
          //     console.log(11111111111111111111)
          //     // this.packingsYL_Options = res.items 
          // this.addPopColumns_YL[1].userOptions = [{packingCode:111}]
          // // this.$forceUpdate()
          //   })
          //   .catch(err=>{
          //   })
        }
      }
      else{
        // this.addPopColumns_YL[1].userOptions = []
      }
    },
    // 混拌料下拉
    pushHB(data){
      console.log(data)
    },
  }
};
</script>
<style lang="scss" scoped>
@import "../../../styles/mainbasicData.scss";

.addPopMain{
  height:100%;

  .addPopContent{
    position:relative;
    padding:0 20px;

    .addPopTypeTitle{
      position:absolute;
      left:0;
      top:10px;
      border-left:#66b1ff solid 6px;
      padding-left:10px;
      height:28px;
      line-height:28px;
      overflow:hidden;
      font-size:18px;
      margin-left: 20px;
    }
  }

  .addPopContent_FS{
    height:calc(50% - 100px);
    margin-bottom:10px;
  }

  .addPopContent_YL{
    height: calc(50% - 70px);
    padding: 15px 20px;
    background: #d4e6fd;
  }

  .addPopContent_HB{
    height:160px;
    padding-top:28px
  }
}
</style>
<style lang="scss" >
.recycledAdjustmentPage {
  .el-dialog .el-dialog__body {
    padding: 0 !important;
  }
  
  .el-form-item{
    margin-bottom:0 !important
  }
}

</style>