loulijun2021
2023-06-08 b77c699b4eb75980bcabba89018fdd3dd9ce91b4
src/views/produceManager/productWarehouse.vue
@@ -19,9 +19,9 @@
          <div style="font-size: 14px;margin-left: 5px;color: #a7a7a7">
            查询项
          </div>
          <div v-if="!isPermission" style="font-size: 14px;margin-left: 10px;color: red">
            当前用户在ERP系统中不存在或未授权,无法入库提交
          </div>
          <!--          <div v-if="!isPermission" style="font-size: 14px;margin-left: 10px;color: red">-->
          <!--            当前用户在ERP系统中不存在或未授权,无法入库提交-->
          <!--          </div>-->
        </div>
        <el-form
          ref="form"
@@ -141,6 +141,7 @@
                  v-model="form.saleOrderCode"
                  readonly
                  style="width: 200px"
                  @change="getProductInHouseOrderSearch"
                />
                <!--                disabled-->
              </el-form-item>
@@ -148,13 +149,13 @@
            <div style="display: flex">
              <el-form-item label="产品编码" style=" display: flex;">
                <el-input v-model="form.partcode" placeholder="请输入" style="width: 200px" />
                <el-input v-model="form.partcode" placeholder="请输入" style="width: 200px" @change="getProductInHouseOrderSearch" />
              </el-form-item>
              <el-form-item label="产品名称" style=" display: flex;">
                <el-input v-model="form.partname" style="width: 200px" placeholder="请输入" />
                <el-input v-model="form.partname" style="width: 200px" placeholder="请输入" @change="getProductInHouseOrderSearch" />
              </el-form-item>
              <el-form-item label="产品规格" style=" display: flex;">
                <el-input v-model="form.partspec" style="width: 200px" placeholder="请输入" />
                <el-input v-model="form.partspec" style="width: 200px" placeholder="请输入" @change="getProductInHouseOrderSearch" />
              </el-form-item>
              <el-form-item
                label="工单日期"
@@ -170,6 +171,7 @@
                  :clearable="false"
                  start-placeholder="开始日期"
                  end-placeholder="结束日期"
                  @change="getProductInHouseOrderSearch"
                />
              </el-form-item>
            </div>
@@ -206,15 +208,21 @@
              <el-date-picker
                v-model="form.lm_date"
                style="width: 200px"
                readonly
                type="date"
                placeholder="选择日期"
              />
            </el-form-item>
            <el-form-item label="单据编号" style=" display: flex;">
              <el-input v-model="form.OrgName" placeholder="请输入" style="width: 200px" />
              <el-input
                v-model="form.hbillno"
                readonly
                placeholder="请输入"
                style="width: 200px"
              />
            </el-form-item>
            <el-form-item label="入库仓库" style=" display: flex;">
            <el-form-item label="入库仓库" required style=" display: flex;">
              <el-select
                v-model="form.stockcode"
                :popper-append-to-body="false"
@@ -237,7 +245,14 @@
            class="bodySearchReset"
            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
          >
            <el-button v-waves type="primary" icon="el-icon-s-promotion" @click="submit">入库提交</el-button>
            <el-button
              v-waves
              type="primary"
              icon="el-icon-s-promotion"
              :disabled="$store.state.app.buttonIsDisabled"
              @click="submit"
            >入库提交
            </el-button>
            <!--            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">重置</el-button>-->
          </div>
        </el-form>
@@ -275,9 +290,9 @@
                  :header-cell-style="this.$headerCellStyle"
                  :cell-style="this.$cellStyle"
                  @selection-change="handleSelectionChange"
                  @cell-dblclick="cellDblclick"
                  @cell-click="cellClick"
                >
                  <!--                  @cell-dblclick="cellDblclick"-->
                  <!--                  @cell-click="cellClick"-->
                  <el-table-column
                    type="selection"
                    width="50"
@@ -290,32 +305,33 @@
                    label="序号"
                  />
                  <el-table-column
                    prop="stockcode"
                    label="仓库"
                    width="160"
                    show-tooltip-when-overflow
                  >
                    <template slot-scope="{row}">
                      <div
                        v-if="!(row.index === tabClickIndex && tabClickLabel === '仓库')"
                      >
                        {{ row.stockcode ? stockcodeArr.find(i => i.code === row.stockcode).name : '/' }}
                      </div>
                      <el-select
                        v-if="row.index === tabClickIndex && tabClickLabel === '仓库'"
                        v-model="row.stockcode"
                        placeholder="请选择"
                      >
                        <el-option
                          v-for="item in stockcodeArr"
                          :key="item.code"
                          :label="item.name"
                          :value="item.code"
                        />
                      </el-select>
                    </template>
                  </el-table-column>
                  <!--                  <el-table-column-->
                  <!--                    prop="stockcode"-->
                  <!--                    label="仓库"-->
                  <!--                    width="160"-->
                  <!--                    show-tooltip-when-overflow-->
                  <!--                  >-->
                  <!--                    <template slot-scope="{row}">-->
                  <!--                      <div>{{ row.stockcode ? stockcodeArr.find(i => i.code === row.stockcode).name : '/' }}</div>-->
                  <!--                      &lt;!&ndash;                      <div&ndash;&gt;-->
                  <!--                      &lt;!&ndash;                        v-if="!(row.index === tabClickIndex && tabClickLabel === '仓库')"&ndash;&gt;-->
                  <!--                      &lt;!&ndash;                      >&ndash;&gt;-->
                  <!--                      &lt;!&ndash;                        {{ row.stockcode ? stockcodeArr.find(i => i.code === row.stockcode).name : '/' }}&ndash;&gt;-->
                  <!--                      &lt;!&ndash;                      </div>&ndash;&gt;-->
                  <!--                      &lt;!&ndash;                      <el-select&ndash;&gt;-->
                  <!--                      &lt;!&ndash;                        v-if="row.index === tabClickIndex && tabClickLabel === '仓库'"&ndash;&gt;-->
                  <!--                      &lt;!&ndash;                        v-model="row.stockcode"&ndash;&gt;-->
                  <!--                      &lt;!&ndash;                        placeholder="请选择"&ndash;&gt;-->
                  <!--                      &lt;!&ndash;                      >&ndash;&gt;-->
                  <!--                      &lt;!&ndash;                        <el-option&ndash;&gt;-->
                  <!--                      &lt;!&ndash;                          v-for="item in stockcodeArr"&ndash;&gt;-->
                  <!--                      &lt;!&ndash;                          :key="item.code"&ndash;&gt;-->
                  <!--                      &lt;!&ndash;                          :label="item.name"&ndash;&gt;-->
                  <!--                      &lt;!&ndash;                          :value="item.code"&ndash;&gt;-->
                  <!--                      &lt;!&ndash;                        />&ndash;&gt;-->
                  <!--                      &lt;!&ndash;                      </el-select>&ndash;&gt;-->
                  <!--                    </template>-->
                  <!--                  </el-table-column>-->
                  <el-table-column
                    prop="inbarcode"
                    label="入库条码"
@@ -433,17 +449,17 @@
                    label="序号"
                  />
                  <el-table-column
                    prop="stockname"
                    label="仓库"
                    width="110"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.stockname">{{ row.stockname }}</div>
                      <div v-else>/</div>
                    </template>
                  <!--                  <el-table-column-->
                  <!--                    prop="stockname"-->
                  <!--                    label="仓库"-->
                  <!--                    width="110"-->
                  <!--                  >-->
                  <!--                    <template slot-scope="{row}">-->
                  <!--                      <div v-if="row.stockname">{{ row.stockname }}</div>-->
                  <!--                      <div v-else>/</div>-->
                  <!--                    </template>-->
                  </el-table-column>
                  <!--                  </el-table-column>-->
                  <el-table-column
                    prop="inbarcode"
                    label="入库条码"
@@ -554,15 +570,15 @@
                    fixed
                    label="序号"
                  />
                  <el-table-column
                    prop="stockcode"
                    label="仓库"
                    width="110"
                  >
                    <template slot-scope="{row}">
                      <div>{{ stockcodeArr.find(i=>i.code===row.stockcode).name }}</div>
                    </template>
                  </el-table-column>
                  <!--                  <el-table-column-->
                  <!--                    prop="stockcode"-->
                  <!--                    label="仓库"-->
                  <!--                    width="110"-->
                  <!--                  >-->
                  <!--                    <template slot-scope="{row}">-->
                  <!--                      <div>{{ stockcodeArr.find(i => i.code === row.stockcode).name }}</div>-->
                  <!--                    </template>-->
                  <!--                  </el-table-column>-->
                  <!--                    <template slot-scope="{row}">-->
                  <!--                      <div v-if="row.stockname">{{ row.stockname }}</div>-->
                  <!--                      <div v-else>/</div>-->
@@ -677,9 +693,15 @@
  ProductInHouseOrderSearch, ProductInHouseOrderSeave,
  ProductInHouseWkshopOrder
} from '@/api/produceManager'
import { handleDatetime, handleDatetime2 } from '@/utils/global'
import { ErpUserSelect, ErpWarehouseSelect, ErpWkshopDepartmentSelect } from '@/api/basicInfo'
import { getTPlusToken, handleDatetime, handleDatetime2 } from '@/utils/global'
import {
  ErpUserSelect,
  ErpWarehouseSelect,
  ErpWkshopDepartmentSelect
} from '@/api/basicInfo'
import { getCookie } from '@/utils/auth'
import Vue from 'vue'
import axios from 'axios'
export default {
  name: 'Zzjg',
@@ -694,8 +716,8 @@
        incbit: '', // 流水号
        documentType: 'Y', // 单据类型
        wkshopcode: 'CJ001', // 生产车间
        erpordercode: 'MO-2023-05-0007', // 订单编号
        wkshopcode: '', // 生产车间
        erpordercode: '', // 订单编号
        mesordercode: '', // 工单编号
        partcode: '', // 产品编码
        partname: '', // 产品名称
@@ -703,7 +725,7 @@
        orderdate: '', // 工单日期
        saleOrderCode: '', // 销售订单
        lm_date: '', // 单据日期
        lm_date: new Date(), // 单据日期
        stockcode: '' // 入库仓库
      },
@@ -723,7 +745,7 @@
      tableDataSummary: [], // 汇总表
      isPermission: true, // 是否有权限可提交
      // isPermission: true, // 是否有权限可提交
      userArr: [] // ERP人员数组
@@ -739,10 +761,7 @@
    this.getWareHouseSelect()
    this.getWorkShopSelect()
    this.getProductInHouseOrderCodeSearch()
    this.getProductInHouseOrderSearch()
  },
  methods: {
    async getProductInHouseOrderCodeSearch() {
@@ -754,31 +773,29 @@
      const { data: res } = await ErpUserSelect()
      this.userArr = res
      if (!res.map(i => i.name).includes(getCookie('username'))) {
        this.isPermission = false
        await this.$alert('当前用户在ERP系统中不存在或未授权,无法入库提交', '提示', {
          confirmButtonText: '确定'
          // callback: action => {
          //   this.$message({
          //     type: 'info',
          //     message: `action: ${action}`
          //   })
          // }
        })
      }
      // if (!res.map(i => i.name).includes(getCookie('username'))) {
      //   this.isPermission = false
      //
      //   await this.$alert('当前用户在ERP系统中不存在或未授权,无法入库提交', '提示', {
      //     confirmButtonText: '确定'
      //   })
      // }
    },
    // 单据类型改变
    documentTypeChange(val) {
      this.form.erpordercode = ''
      this.form.wkshopcode = ''
      this.reset()
    },
    // 生产车间改变
    async wkshopcodeChange(val) {
      this.form.erpordercode = ''
      this.form.mesordercode = ''
      this.form.saleOrderCode = ''
      this.tableDataDetail = []
      this.tableDataSummary = []
      this.multipleSelection = []
      const data = {
        ordertype: this.form.documentType,
        wkshopcode: val
@@ -837,8 +854,11 @@
      this.form.partname = ''
      this.form.partspec = ''
      this.form.orderdate = ''
      this.form.stockcode = ''
      this.tableDataDetail = []
      this.tableDataSummary = []
      this.multipleSelection = []
    },
    // 表格单元格双击
@@ -852,10 +872,6 @@
          this.tabClickIndex = row.index
          this.tabClickLabel = column.label
          break
        // case '判责金额(元)':
        //   this.tabClickIndex = row.index
        //   this.tabClickLabel = column.label
        //   break
        default:
          return
      }
@@ -878,176 +894,351 @@
    // tab点击
    tabClick(val) {
      // this.$nextTick(() => {
      //   this.$refs.tableDataRef.doLayout()
      // })
      const stockcodeArr = [...new Set(this.multipleSelection.map(i => i.stockcode))]// 数组去重
      // const partcodeArr = [...new Set(this.multipleSelection.map(i => i.partcode))]// 数组去重
      const partcodeArr = [...new Set(this.multipleSelection.map(i => i.partcode))]// 数组去重
      const newData = []
      const Array2D = []
      stockcodeArr.forEach(i => {
        Array2D.push(this.multipleSelection.filter(j => j.stockcode === i))
      })
      Array2D.forEach(k => {
        const partcodeArr = [...new Set(k.map(j => j.partcode))]
        partcodeArr.forEach(i => {
          const t = k.find(j => j.partcode === i)
          let sum = 0
          const good_qty = k.filter(j => j.partcode === i).map(j => parseFloat(j.good_qty)).reduce((pre, curr) => {
            sum = pre + curr
            return sum
          })
          sum = 0
          const inhouseqty = k.filter(j => j.partcode === i).map(j => parseFloat(j.inhouseqty)).reduce((pre, curr) => {
            sum = pre + curr
            return sum
          })
          sum = 0
          const stinhouseqty = k.filter(j => j.partcode === i).map(j => parseFloat(j.stinhouseqty)).reduce((pre, curr) => {
            sum = pre + curr
            return sum
          })
          newData.push(
            {
              stockcode: t.stockcode,
              partcode: t.partcode,
              partname: t.partname,
              partspec: t.partspec,
              qty: t.qty,
              good_qty,
              inhouseqty,
              stinhouseqty,
              unitid: t.unitid,
              unitname: t.unitname,
              sourceVoucherDetailId: t.sourceVoucherDetailId,
              saleOrderDetailId: t.saleOrderDetailId,
              ManufactureOrderDetailId: t.ManufactureOrderDetailId,
              stck_id: this.stockcodeArr.find(i => i.code === t.stockcode).id,
              SourceVoucherDetailIdByMergedFlow: t.sbid,
              materiel_code: t.partcode,
              warehouse: t.warehouse,
              materiel_id: t.materiel_id
            }
          )
      partcodeArr.forEach(i => {
        const t = this.multipleSelection.find(j => j.partcode === i)
        let sum = 0
        const good_qty = this.multipleSelection.filter(j => j.partcode === i).map(j => parseFloat(j.good_qty)).reduce((pre, curr) => {
          sum = pre + curr
          return sum
        })
      })
      // console.log(Array2D, 'Array2D')
      // console.log(newData, 'newData')
        sum = 0
        const inhouseqty = this.multipleSelection.filter(j => j.partcode === i).map(j => parseFloat(j.inhouseqty)).reduce((pre, curr) => {
          sum = pre + curr
          return sum
        })
        sum = 0
        const stinhouseqty = this.multipleSelection.filter(j => j.partcode === i).map(j => parseFloat(j.stinhouseqty)).reduce((pre, curr) => {
          sum = pre + curr
          return sum
        })
        newData.push(
          {
            stockcode: t.stockcode,
            partcode: t.partcode,
            partname: t.partname,
            partspec: t.partspec,
            qty: t.qty,
            good_qty,
            inhouseqty,
            stinhouseqty,
            unitid: t.unitid,
            unitname: t.unitname,
            sourceVoucherDetailId: t.sbid,
            saleOrderDetailId: t.saleOrderDetailId,
            ManufactureOrderDetailId: t.sbid,
            stck_id: t.stockcode ? this.stockcodeArr.find(i => i.code === t.stockcode).id : '',
            SourceVoucherDetailIdByMergedFlow: t.sbid,
            materiel_code: t.partcode,
            warehouse: t.stockcode,
            materiel_id: t.materiel_id
      // partcodeArr.forEach(i => {
      //   const t = this.multipleSelection.find(j => j.partcode === i)
      //   let sum = 0
      //   const good_qty = this.multipleSelection.filter(j => j.partcode === i).map(j => parseFloat(j.good_qty)).reduce((pre, curr) => {
      //     sum = pre + curr
      //     return sum
      //   })
      //   sum = 0
      //   const inhouseqty = this.multipleSelection.filter(j => j.partcode === i).map(j => parseFloat(j.inhouseqty)).reduce((pre, curr) => {
      //     sum = pre + curr
      //     return sum
      //   })
      //   sum = 0
      //   const stinhouseqty = this.multipleSelection.filter(j => j.partcode === i).map(j => parseFloat(j.stinhouseqty)).reduce((pre, curr) => {
      //     sum = pre + curr
      //     return sum
      //   })
      //   newData.push(
      //     {
      //       partcode: i,
      //       partname: t.partname,
      //       partspec: t.partspec,
      //       qty: t.qty,
      //       good_qty,
      //       inhouseqty,
      //       stinhouseqty
      //     }
      //   )
      // })
      this.tableDataSummary = newData.flat()
          }
        )
      })
      this.tableDataSummary = newData
    },
    // 入库提交
    async  submit() {
    async submit() {
      if (!this.form.stockcode) {
        return this.$message.error('入库仓库不能为空!')
      }
      if (this.multipleSelection.length === 0) {
        return this.$message.error('未选择产品!')
      }
      this.$store.state.app.buttonIsDisabled = true
      await this.tabClick()
      this.multipleSelection.forEach(i => {
        i.stockname = this.stockcodeArr.find(j => j.code === i.stockcode).name
        i.id = this.stockcodeArr.find(j => j.code === i.stockcode).id
      })
      const openToken = await getTPlusToken() // 获取TPlus   token
      const head = {
        hbillno: this.form.hbillno,
        incbit: this.form.incbit,
        sourceVoucherId: this.form.documentType === 'Y' ? this.tableDataDetail[0].mpoid : '',
        sourceVoucherCode: this.form.documentType === 'Y' ? this.tableDataDetail[0].m_po : this.tableDataDetail[0].wo_code,
        saleOrderId: this.tableDataDetail[0].saleOrderid,
        saleOrderCode: this.tableDataDetail[0].saleOrderCode,
        rdDirectionFlag: 1,
        makerid: this.userArr.find(i => i.name === getCookie('username').id),
        maker: getCookie('username'),
        accountingyear: new Date().getFullYear(),
        VoucherYear: new Date().getFullYear(),
        VoucherPeriod: new Date().getMonth() + 1,
        ManufactureOrderCode: this.form.documentType === 'Y' ? this.tableDataDetail[0].m_po : this.tableDataDetail[0].wo_code,
        idbusitype: '03',
        iddepartment: this.WorkShopArr.find(i => i.code === this.form.wkshopcode).id,
        idrdstyle: 21,
        idwarehouse: '',
        voucherState: handleDatetime(new Date().getTime()),
        idvouchertype: 15,
        voucherdate: handleDatetime(new Date().getTime()),
        madedate: handleDatetime(new Date().getTime()),
        createdtime: handleDatetime2(new Date().getTime()),
        DataSource: '56133'
      }
      const subsum = []
      this.tableDataSummary.forEach((i, index) => {
        subsum.push({
          code: index.toString().padStart(4, '0'),
          rownumber: index + 1,
          arrivalQuantity: i.qty,
          quantity: i.stinhouseqty,
          compositionQuantity: i.stinhouseqty + i.unitname,
          baseQuantity: i.stinhouseqty,
          sourceVoucherId: this.form.documentType === 'Y' ? this.tableDataDetail[0].mpoid : '',
          sourceVoucherCode: this.form.documentType === 'Y' ? this.tableDataDetail[0].m_po : this.tableDataDetail[0].wo_code,
          sourceVoucherDetailId: i.sourceVoucherDetailId,
          idsourcevouchertype: 69,
          saleOrderId: this.tableDataDetail[0].saleOrderid,
          saleOrderCode: this.tableDataDetail[0].saleOrderCode,
          saleOrderDetailId: i.saleOrderDetailId,
          ManufactureOrderId: this.form.documentType === 'Y' ? this.tableDataDetail[0].mpoid : '',
          ManufactureOrderCode: this.form.documentType === 'Y' ? this.tableDataDetail[0].m_po : this.tableDataDetail[0].wo_code,
          ManufactureOrderDetailId: i.ManufactureOrderDetailId,
          idbusiTypeByMergedFlow: 3,
          idinventory: i.materiel_id,
          idbaseunit: i.unitid,
          idwarehouse: i.stck_id,
          SourceVoucherIdByMergedFlow: this.tableDataDetail[0].mpoid,
          SourceVoucherCodeByMergedFlow: this.tableDataDetail[0].m_po,
          SourceVoucherDetailIdByMergedFlow: i.SourceVoucherDetailIdByMergedFlow,
          idsourceVoucherTypeByMergedFlow: 69,
          createdtime: handleDatetime2(new Date().getTime()),
          DataSource: '56133',
          materiel_code: i.materiel_code,
          warehouse: i.warehouse
      // 有源单
      if (this.form.documentType === 'Y') {
        const RDRecordDetails = []
        this.tableDataSummary.forEach((i, index) => {
          RDRecordDetails.push({
            Code: index + 1, // 行号,从1开始自增长
            SourceVoucherId: this.tableDataDetail[0].mpoid, // 来源单据的单据ID
            BaseQuantity: i.stinhouseqty, // 主计量单位数量
            SourceVoucherDetailId: i.sourceVoucherDetailId, // 来源单据的对应明细ID
            Inventory: {
              Code: i.materiel_code // 存货编码
            },
            IdSourceVoucherType: 69
          })
        })
      })
        const data = {
          'dto': {
            'Warehouse': {
              'Code': this.form.stockcode// 仓库编码
            },
            'Code': this.form.hbillno, // 单据编码
            'IsModifiedCode': true,
            'BusiType': {
              'Code': '03'// 业务类型编码
            },
            'Department': {
              'Code': this.form.wkshopcode// 部门编码
            },
            'VoucherDate': handleDatetime(new Date().getTime()), // 单据日期
            'RdStyle': {
              'Code': '21'// 出库类别编码
            },
            'RDRecordDetails': RDRecordDetails,
            // 'Clerk': {
            //   'Code': this.userArr.find(i => i.name === getCookie('username')).code // 业务员code
            //   // 'Code': '001' // 业务员code
            //   // 'Name': getCookie('username')
            // },
            'ExternalCode': this.form.hbillno,
            'VoucherType': {
              'Code': 'ST1002'
            }
          }
        }
        const res = await axios.post(Vue.prototype.$chanjetBaseUrl + '/tplus/api/v2/ProductReceiveOpenApi/Create',
          data, {
            headers: {
              'openToken': openToken,
              'appKey': Vue.prototype.$AppKey,
              'appSecret': Vue.prototype.$AppSecret,
              'Content-Type': 'application/json'
            }
          }
        )
        if (res.data.code === 0) {
          this.multipleSelection.forEach(i => {
            i.stockname = this.stockcodeArr.find(j => j.code === i.stockcode).name
            i.id = this.stockcodeArr.find(j => j.code === i.stockcode).id
          })
      const data = {
        head, sub: this.multipleSelection, subsum
          const head = {
            rightcode: '2064',
            hbillno: this.form.hbillno,
            incbit: this.form.incbit,
            wkshpcode: this.form.wkshopcode,
            sourceVoucherId: this.form.documentType === 'Y' ? this.tableDataDetail[0].mpoid : '',
            sourceVoucherCode: this.form.documentType === 'Y' ? this.tableDataDetail[0].m_po : this.tableDataDetail[0].wo_code,
            saleOrderId: this.tableDataDetail[0].saleOrderid,
            saleOrderCode: this.tableDataDetail[0].saleOrderCode,
            rdDirectionFlag: 1,
            makerid: this.userArr.find(i => i.name === getCookie('username')).id,
            maker: getCookie('username'),
            accountingyear: new Date().getFullYear(),
            VoucherYear: new Date().getFullYear(),
            VoucherPeriod: new Date().getMonth() + 1,
            ManufactureOrderCode: this.form.documentType === 'Y' ? this.tableDataDetail[0].m_po : this.tableDataDetail[0].wo_code,
            idbusitype: '03',
            iddepartment: this.WorkShopArr.find(i => i.code === this.form.wkshopcode).id,
            idrdstyle: 21,
            idwarehouse: '',
            voucherState: 181,
            idvouchertype: 15,
            voucherdate: handleDatetime(new Date().getTime()),
            madedate: handleDatetime(new Date().getTime()),
            createdtime: handleDatetime2(new Date().getTime()),
            DataSource: '56133',
            idsourcevouchertype: 69
          }
          const subsum = []
          this.tableDataSummary.forEach((i, index) => {
            subsum.push({
              code: index.toString().padStart(4, '0'),
              rownumber: index + 1,
              arrivalQuantity: i.qty,
              quantity: i.stinhouseqty,
              compositionQuantity: i.stinhouseqty + i.unitname,
              baseQuantity: i.stinhouseqty,
              sourceVoucherId: this.form.documentType === 'Y' ? this.tableDataDetail[0].mpoid : '',
              sourceVoucherCode: this.form.documentType === 'Y' ? this.tableDataDetail[0].m_po : this.tableDataDetail[0].wo_code,
              sourceVoucherDetailId: i.sourceVoucherDetailId,
              idsourcevouchertype: 69,
              saleOrderId: this.tableDataDetail[0].saleOrderid,
              saleOrderCode: this.tableDataDetail[0].saleOrderCode,
              saleOrderDetailId: i.saleOrderDetailId,
              ManufactureOrderId: this.form.documentType === 'Y' ? this.tableDataDetail[0].mpoid : '',
              ManufactureOrderCode: this.form.documentType === 'Y' ? this.tableDataDetail[0].m_po : this.tableDataDetail[0].wo_code,
              ManufactureOrderDetailId: i.ManufactureOrderDetailId,
              idbusiTypeByMergedFlow: 3,
              idinventory: i.materiel_id,
              idbaseunit: i.unitid,
              idunit: i.unitid,
              idwarehouse: i.stck_id,
              SourceVoucherIdByMergedFlow: this.tableDataDetail[0].mpoid,
              SourceVoucherCodeByMergedFlow: this.tableDataDetail[0].m_po,
              SourceVoucherDetailIdByMergedFlow: i.SourceVoucherDetailIdByMergedFlow,
              idsourceVoucherTypeByMergedFlow: 69,
              createdtime: handleDatetime2(new Date().getTime()),
              DataSource: '56133',
              materiel_code: i.materiel_code,
              warehouse: i.warehouse
            })
          })
          const data = {
            head, sub: this.multipleSelection, subsum
          }
          const r1 = await ProductInHouseOrderSeave(data)
          if (r1.code === '200') {
            this.$message.success('入库成功!')
            await this.getProductInHouseOrderCodeSearch()
            await this.wkshopcodeChange(this.form.wkshopcode)
            this.tableDataDetail = []
            this.tableDataSummary = []
            this.multipleSelection = []
            this.form.stockcode = ''
            this.$store.state.app.buttonIsDisabled = false
          }
        } else {
          this.$message.error('入库失败!')
          this.$store.state.app.buttonIsDisabled = false
        }
      }
      console.log(JSON.stringify(data))
      // 无源单
      if (this.form.documentType === 'N') {
        const RDRecordDetails = []
        this.tableDataSummary.forEach((i, index) => {
          RDRecordDetails.push({
            Code: index + 1, // 行号,从1开始自增长
            Inventory: {
              Code: i.materiel_code // 存货编码
            },
            BaseQuantity: i.stinhouseqty, // 主计量单位数量
            SNObject: {
              SnAccountDetails: [
                {
                  SNCode: index.toString().padStart(4, '0')
                }
              ]
            }
          })
        })
        const data = {
          'dto': {
            'IsModifiedCode': true,
            'ExternalCode': this.form.hbillno,
            'Code': this.form.hbillno,
            'VoucherType': {
              'Code': 'ST1002'
            },
            'VoucherDate': handleDatetime(new Date().getTime()),
            'BusiType': {
              'Code': '03'
            },
            'Warehouse': {
              'Code': this.form.stockcode
            },
            'Department': {
              'Code': this.form.wkshopcode,
              'Name': this.WorkShopArr.find(i => i.code === this.form.wkshopcode).name
            },
            'RDRecordDetails': RDRecordDetails
          }
        }
        const res = await axios.post(Vue.prototype.$chanjetBaseUrl + '/tplus/api/v2/productReceive/Create',
          data, {
            headers: {
              'openToken': openToken,
              'appKey': Vue.prototype.$AppKey,
              'appSecret': Vue.prototype.$AppSecret,
              'Content-Type': 'application/json'
            }
          }
        )
      const res = await ProductInHouseOrderSeave(data)
      if (res.code === '200') {
        this.$message.success('入库提交成功!')
        if (res.data === null) {
          this.multipleSelection.forEach(i => {
            i.stockname = this.stockcodeArr.find(j => j.code === i.stockcode).name
            i.id = this.stockcodeArr.find(j => j.code === i.stockcode).id
          })
          const head = {
            rightcode: '2064',
            hbillno: this.form.hbillno,
            incbit: this.form.incbit,
            wkshpcode: this.form.wkshopcode,
            sourceVoucherId: this.form.documentType === 'Y' ? this.tableDataDetail[0].mpoid : this.tableDataDetail[0].wo_id,
            sourceVoucherCode: this.form.documentType === 'Y' ? this.tableDataDetail[0].m_po : this.tableDataDetail[0].wo_code,
            saleOrderId: this.tableDataDetail[0].saleOrderid,
            saleOrderCode: this.tableDataDetail[0].saleOrderCode,
            rdDirectionFlag: 1,
            makerid: this.userArr.find(i => i.name === getCookie('username')).id,
            maker: getCookie('username'),
            accountingyear: new Date().getFullYear(),
            VoucherYear: new Date().getFullYear(),
            VoucherPeriod: new Date().getMonth() + 1,
            ManufactureOrderCode: this.form.documentType === 'Y' ? this.tableDataDetail[0].m_po : this.tableDataDetail[0].wo_code,
            idbusitype: '03',
            iddepartment: this.WorkShopArr.find(i => i.code === this.form.wkshopcode).id,
            idrdstyle: 21,
            idwarehouse: '',
            voucherState: 181,
            idvouchertype: 15,
            voucherdate: handleDatetime(new Date().getTime()),
            madedate: handleDatetime(new Date().getTime()),
            createdtime: handleDatetime2(new Date().getTime()),
            DataSource: '56133',
            idsourcevouchertype: 69
          }
          const subsum = []
          this.tableDataSummary.forEach((i, index) => {
            subsum.push({
              code: index.toString().padStart(4, '0'),
              rownumber: index + 1,
              arrivalQuantity: i.qty,
              quantity: i.stinhouseqty,
              compositionQuantity: i.stinhouseqty + i.unitname,
              baseQuantity: i.stinhouseqty,
              sourceVoucherId: this.form.documentType === 'Y' ? this.tableDataDetail[0].mpoid : '',
              sourceVoucherCode: '',
              sourceVoucherDetailId: i.sourceVoucherDetailId,
              idsourcevouchertype: 69,
              saleOrderId: this.tableDataDetail[0].saleOrderid,
              saleOrderCode: this.tableDataDetail[0].saleOrderCode,
              saleOrderDetailId: i.saleOrderDetailId,
              ManufactureOrderId: this.form.documentType === 'Y' ? this.tableDataDetail[0].mpoid : '',
              ManufactureOrderCode: this.form.documentType === 'Y' ? this.tableDataDetail[0].m_po : this.tableDataDetail[0].wo_code,
              ManufactureOrderDetailId: i.ManufactureOrderDetailId,
              idbusiTypeByMergedFlow: 3,
              idinventory: i.materiel_id,
              idbaseunit: i.unitid,
              idunit: i.unitid,
              idwarehouse: i.stck_id,
              SourceVoucherIdByMergedFlow: this.tableDataDetail[0].mpoid,
              SourceVoucherCodeByMergedFlow: this.tableDataDetail[0].m_po,
              SourceVoucherDetailIdByMergedFlow: i.SourceVoucherDetailIdByMergedFlow,
              idsourceVoucherTypeByMergedFlow: 69,
              createdtime: handleDatetime2(new Date().getTime()),
              DataSource: '56133',
              materiel_code: i.materiel_code,
              warehouse: i.warehouse
            })
          })
          const data = {
            head, sub: this.multipleSelection, subsum
          }
          console.log(data, 2)
          const r1 = await ProductInHouseOrderSeave(data)
          if (r1.code === '200') {
            this.$message.success('入库成功!')
            await this.getProductInHouseOrderCodeSearch()
            await this.wkshopcodeChange(this.form.wkshopcode)
            this.tableDataDetail = []
            this.tableDataSummary = []
            this.multipleSelection = []
            this.form.stockcode = ''
            this.$store.state.app.buttonIsDisabled = false
          }
        } else {
          this.$message.error('入库失败!')
          this.$store.state.app.buttonIsDisabled = false
        }
      }
    },
    // 获取页面高度