loulijun2021
2023-09-19 6208ba6872cc54ccbd2b2ff3b67a1a2f054af41d
1.生产入库实现
已添加1个文件
已修改9个文件
1580 ■■■■■ 文件已修改
src/api/jcsz.js 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/scgl.js 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/xtsz.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/Sidebar/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/global.js 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/scgl/sckbg.vue 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/scgl/scrk.vue 1403 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/jcsz.js
@@ -230,3 +230,34 @@
    params: data
  })
}
// èŽ·å–AppTicket
export function AppTicketSelect() {
  return request({
    url: 'Message/AppTicketSelect',
    method: 'get'
  })
}
// ERP生产车间/部门信息查询
export function ErpWkshopDepartmentSelect() {
  return request({
    url: 'BaseDate/ErpWkshopDepartmentSelect',
    method: 'get'
  })
}
// ERP生仓库信息查询
export function ErpWarehouseSelect() {
  return request({
    url: 'BaseDate/ErpWarehouseSelect',
    method: 'get'
  })
}
// ERP生用户信息查询
export function ErpUserSelect() {
  return request({
    url: 'BaseDate/ErpUserSelect',
    method: 'get'
  })
}
src/api/scgl.js
@@ -252,3 +252,39 @@
    data
  })
}
// ç”Ÿäº§å…¥åº“信息查询
export function ProductInHouseOrderSearch(data) {
  return request({
    url: 'ProductionManagement/ProductInHouseOrderSearch',
    method: 'get',
    params: data
  })
}
// ç”Ÿäº§å…¥åº“获取单据号
export function ProductInHouseOrderCodeSearch(data) {
  return request({
    url: 'ProductionManagement/ProductInHouseOrderCodeSearch',
    method: 'post',
    params: data
  })
}
// æäº¤
export function ProductInHouseOrderSeave(data) {
  return request({
    url: 'ProductionManagement/ProductInHouseOrderSeave',
    method: 'post',
    data
  })
}
// ç”Ÿäº§å…¥åº“通过车间查找生产订单
export function ProductInHouseWkshopOrder(data) {
  return request({
    url: 'ProductionManagement/ProductInHouseWkshopOrder',
    method: 'get',
    params: data
  })
}
src/api/xtsz.js
@@ -52,3 +52,11 @@
    params: data
  })
}
// ç”Ÿæˆç³»ç»Ÿæ¡ç (自定义)
export function LabelBarCode(data) {
  return request({
    url: 'SystemSetting/LabelBarCode',
    method: 'get',
    params: data
  })
}
src/layout/components/Sidebar/index.vue
@@ -28,7 +28,7 @@
    </el-scrollbar>
    <div style="position: absolute;bottom: 20px;left: 30px;">
      <div>
        <el-button v-if="$store.state.app.sidebar.opened" type="text" style="font-size: 14px;cursor: pointer">新凯迪制造V1.0.01</el-button>
        <el-button v-if="$store.state.app.sidebar.opened" type="text" style="font-size: 14px;cursor: pointer">新凯迪制造V1.3.21</el-button>
        <!--        <el-button type="text"><a href="http://www.ykxkd.com/" target="_blank">新凯迪制造V1.0.01</a></el-button>-->
      </div>
    </div>
src/main.js
@@ -43,6 +43,10 @@
Vue.prototype.$headerCellStyle = headerCellStyle() // è®¾ç½®å…¨å±€è¡¨å¤´æ ·å¼
Vue.prototype.$cellStyle = cellStyle() // è®¾ç½®å…¨å±€è¡¨ä½“样式
Vue.prototype.$chanjetBaseUrl = 'https://openapi.chanjet.com'
Vue.prototype.$AppKey = 'Umm1gS5q'
Vue.prototype.$AppSecret = 'FFAD54C4FBF9AAF1AFA33BBF3DF52752'
// import 'lib-flexible' // é˜¿é‡Œå¯ä¼¸ç¼©å¸ƒå±€æ–¹æ¡ˆ
// import 'lib-flexible-computer'
src/router/index.js
@@ -458,6 +458,12 @@
        code: '1074',
        component: () => import('@/views/scgl/gdplgb'),
        meta: { code: '1074', title: 'MES工单批量关闭', icon: '', keepAlive: true }
      }, {
        path: 'scrk',
        name: 'SCRKCancel',
        code: '1077',
        component: () => import('@/views/scgl/scrk'),
        meta: { code: '1077', title: '生产入库', icon: '', keepAlive: true }
      }
    ]
  },
src/utils/global.js
@@ -1,4 +1,7 @@
import { NewEncodingRules } from '@/api/xtsz'
import axios from 'axios'
import Vue from 'vue'
import { AppTicketSelect } from '@/api/jcsz'
// å…¨å±€ä¸»è¦é¢œè‰²
export function getGlobalColor() {
@@ -91,3 +94,24 @@
    }
  }
}
// èŽ·å–token ç”¨äºŽè¯·æ±‚畅捷通接口
export async function getTPlusToken() {
  const r1 = await AppTicketSelect()
  const r2 = r1.data[0]
  Vue.prototype.$AppKey = r2.appKey
  Vue.prototype.$AppSecret = r2.appSecret
  const data = {
    appTicket: r2.AppTicket,
    certificate: r2.certificate
  }
  const r3 = await axios.post(Vue.prototype.$chanjetBaseUrl + '/v1/common/auth/selfBuiltApp/generateToken',
    data, {
      headers: {
        'appKey': Vue.prototype.$AppKey,
        'appSecret': Vue.prototype.$AppSecret,
        'Content-Type': 'application/json'
      }
    })
  return r3.data.value.accessToken
}
src/views/scgl/sckbg.vue
@@ -1173,6 +1173,7 @@
import QRCode from 'qrcodejs2'
import { getCookie } from '@/utils/auth'
import { handleDatetime2 } from '@/utils/global'
import { LabelBarCode } from '@/api/xtsz'
const SER_HZ = /^[\u4e00-\u9fa5]+$/
export default {
@@ -1266,6 +1267,8 @@
        reportuser: '', // æŠ¥å·¥äººå‘˜
        startqtySum: '', // ä¸èƒ½è¶…过的数值
        inbarcode: '',
        operation: getCookie('navTabId'), // æŠ¥å·¥äººï¼ˆæ”¶æ–™äººï¼‰
        remarks: ''// å¤‡æ³¨
@@ -1699,7 +1702,7 @@
        this.dialogForm.startqty = obj.noreportqty
        this.dialogForm.nextstepname = obj.nextstepname
        this.dialogForm.nextstepcode = obj.nextstepcode ? obj.nextstepcode : obj.stepcode
        this.dialogForm.nextstepcode = obj.nextstepcode
        this.dialogForm.startqtySum = obj.noreportqty
      })
@@ -1760,7 +1763,7 @@
        this.dialogForm.stepcode = obj.stepcode
        this.dialogForm.nextstepname = obj.nextstepname
        this.dialogForm.nextstepcode = obj.nextstepcode ? obj.nextstepcode : obj.stepcode
        this.dialogForm.nextstepcode = obj.nextstepcode
        this.dialogForm.noputqty = obj.noputqty
        this.dialogForm.stepseq = obj.seq
@@ -1900,6 +1903,7 @@
    },
    // å¯¹è¯æ¡†å…³é—­äº‹ä»¶
    handleClose() {
      this.dialogForm.inbarcode = ''
      this.judgeIsScanningArr = []
      this.form.orderstepqrcode = ''
      this.WXform.orderstepqrcode = ''
@@ -1953,7 +1957,7 @@
    },
    // å¯¹è¯æ¡†ç¡®è®¤
    dialogVisibleConfirm() {
      this.$refs.dialogForm.validate(valid => {
      this.$refs.dialogForm.validate(async valid => {
        if (valid) {
          // this.$store.state.app.buttonIsDisabled = true
          if (this.dialogTitle === '外协发料') {
@@ -1993,6 +1997,19 @@
                return this.$message.info('请选择不良原因!')
              }
            }
            this.dialogForm.inbarcode = ''
            if (this.dialogForm.nextstepcode === '') {
              const D = {
                rightcode: '1078',
                partcode: this.dialogForm.partcode,
                qty: this.dialogForm.sqty,
                onelabqty: this.dialogForm.sqty
              }
              const r = await LabelBarCode(D)
              this.dialogForm.inbarcode = r.data[0].labcode
              this.qrForm.partspec = this.dialogForm.partspec
            }
            const data = {
              mesordercode: this.dialogForm.wo_code, // å·¥å•编号
@@ -2004,6 +2021,9 @@
              taskqty: this.dialogForm.planqty, // ä»»åŠ¡æ•°é‡
              sqty: this.dialogForm.sqty, // æ”¶æ–™æ•°é‡
              remarks: this.dialogForm.remarks, // å¤‡æ³¨
              inbarcode: this.dialogForm.inbarcode, // ç”Ÿäº§å…¥åº“条码
              ngqty: this.dialogForm.noputqty === '' ? 0 : this.dialogForm.noputqty, // ä¸è‰¯æ•°é‡
              badcode: this.dialogForm.badcode.length < 1 ? '' : this.dialogForm.badcode.join(';')// ä¸è‰¯åŽŸå› 
            }
@@ -2066,6 +2086,23 @@
            this.userTableData = this.userTableData.filter((currentValue, currentIndex, selfArr) => {
              return selfArr.findIndex(item => item.usercode === currentValue.usercode) === currentIndex
            })
            this.dialogForm.inbarcode = ''
            // å½“为末道的时候
            if (this.dialogForm.nextstepcode === '') {
              const D = {
                rightcode: '1073',
                partcode: this.dialogForm.partcode,
                qty: this.dialogForm.startqty,
                onelabqty: this.dialogForm.startqty
              }
              const r = await LabelBarCode(D)
              this.dialogForm.inbarcode = r.data[0].labcode
              this.qrForm.partspec = this.dialogForm.partspec
            }
            // console.log(this.userTableData, 1)
            const reportuser = this.userTableData.map(item => item.usercode).join(';')
            const data = {
@@ -2082,6 +2119,9 @@
              // reportqty: this.dialogForm.reportqty, // æŠ¥å·¥æ•°é‡
              reportqty: this.dialogForm.startqty, // æŠ¥å·¥æ•°é‡
              remarks: this.dialogForm.remarks, // å¤‡æ³¨
              inbarcode: this.dialogForm.inbarcode, // ç”Ÿäº§å…¥åº“条码
              ngqty: this.dialogForm.noputqty === '' ? 0 : this.dialogForm.noputqty, // ä¸è‰¯æ•°é‡
              badcode: this.dialogForm.badcode.length < 1 ? '' : this.dialogForm.badcode.join(';')// ä¸è‰¯åŽŸå› 
            }
@@ -2118,7 +2158,13 @@
      })
    },
    ZZprint2(username) {
      this.qrForm.qrvalue = this.dialogForm.wo_code + ';' + this.dialogForm.nextstepcode
      if (this.dialogForm.nextstepcode !== '') {
        this.qrForm.qrvalue = this.dialogForm.wo_code + ';' + this.dialogForm.nextstepcode
      } else {
        this.qrForm.qrvalue = this.dialogForm.inbarcode
      }
      // this.qrForm.qrvalue = this.dialogForm.wo_code + ';' + this.dialogForm.nextstepcode
      this.qrForm.startqty = this.dialogForm.startqty
      this.qrForm.wo_code = this.dialogForm.wo_code
      this.qrForm.partcode = this.dialogForm.partcode
@@ -2131,7 +2177,13 @@
      })
    },
    WXprint2(username) {
      this.qrForm.qrvalue = this.dialogForm.wo_code + ';' + this.dialogForm.nextstepcode
      if (this.dialogForm.nextstepcode !== '') {
        this.qrForm.qrvalue = this.dialogForm.wo_code + ';' + this.dialogForm.nextstepcode
      } else {
        this.qrForm.qrvalue = this.dialogForm.inbarcode
      }
      // this.qrForm.qrvalue = this.dialogForm.wo_code + ';' + this.dialogForm.nextstepcode
      this.qrForm.startqty = this.dialogForm.sqty
      this.qrForm.wo_code = this.dialogForm.wo_code
      this.qrForm.partcode = this.dialogForm.partcode
src/views/scgl/scrk.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1403 @@
<template>
  <div>
    <div class="body" :style="{height:mainHeight+'px'}">
      <!--      <div class="bodyTopButtonGroup" style="justify-content: space-between">-->
      <!--        <el-button  type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">新增</el-button>-->
      <!--        <el-button  icon="el-icon-download" @click="upload">导入</el-button>-->
      <!--      </div>-->
      <div
        class="bodyTopFormGroup"
        style="margin-top: 10px"
        :style="{height:(mainHeight-20)+'px'}"
      >
        <div style="display: flex;align-items: center">
          <i
            class="el-icon-s-operation"
            :style="{color:$store.state.settings.theme,fontSize:'14px'}"
          />
          <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>
        <el-form
          ref="form"
          :model="form"
          label-width="100px"
          inline
          style="display: flex;"
        >
          <div class="elForm" style="display: flex;flex-direction: column;justify-content: flex-start">
            <div style="display: flex">
              <el-form-item label="单据类型" required style=" display: flex;">
                <el-select
                  v-model="form.documentType"
                  :popper-append-to-body="false"
                  filterable
                  style="width: 200px"
                  placeholder="请选择"
                  @change="documentTypeChange"
                >
                  <el-option
                    v-for="item in documentTypeArr"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  />
                </el-select>
              </el-form-item>
              <el-form-item label="生产车间" required style=" display: flex;">
                <el-select
                  v-model="form.wkshopcode"
                  :popper-append-to-body="false"
                  filterable
                  style="width: 200px"
                  placeholder="请选择"
                  @change="wkshopcodeChange"
                >
                  <el-option
                    v-for="item in WorkShopArr"
                    :key="item.code"
                    :label="item.name"
                    :value="item.code"
                  />
                </el-select>
              </el-form-item>
              <el-form-item
                v-if="form.documentType==='Y'"
                label="生产订单"
                :required="form.documentType==='Y'"
                style="display: flex;"
              >
                <el-select
                  v-model="form.erpordercode"
                  :popper-append-to-body="false"
                  filterable
                  style="width: 200px"
                  placeholder="请选择"
                  @change="getProductInHouseOrderSearch"
                >
                  <el-option
                    v-for="item in erpordercodeArr"
                    :key="item.ordercode"
                    :label="item.ordercode"
                    :value="item.ordercode"
                  />
                </el-select>
                <!--                <el-input-->
                <!--                  v-model="form.erpordercode"-->
                <!--                  placeholder="请输入"-->
                <!--                  style="width: 200px"-->
                <!--                  @input="getProductInHouseOrderSearch"-->
                <!--                />-->
              </el-form-item>
              <el-form-item
                v-if="form.documentType==='N'"
                label="生产工单"
                :required="form.documentType==='N'"
                style=" display: flex;"
              >
                <el-select
                  v-model="form.mesordercode"
                  :popper-append-to-body="false"
                  filterable
                  style="width: 200px"
                  placeholder="请选择"
                  @change="getProductInHouseOrderSearch"
                >
                  <el-option
                    v-for="item in mesordercodeArr"
                    :key="item.ordercode"
                    :label="item.ordercode"
                    :value="item.ordercode"
                  />
                </el-select>
              </el-form-item>
              <el-form-item
                v-if="form.documentType==='Y'"
                label="生产工单"
                style=" display: flex;"
              >
                <el-input
                  v-model="form.mesordercode"
                  placeholder="请输入"
                  style="width: 200px"
                  @input="getProductInHouseOrderSearch"
                />
              </el-form-item>
              <el-form-item
                v-if="form.documentType==='Y'"
                label="销售订单"
                style="display: flex;"
              >
                <el-input
                  v-model="form.saleOrderCode"
                  readonly
                  style="width: 200px"
                  @change="getProductInHouseOrderSearch"
                />
                <!--                disabled-->
              </el-form-item>
            </div>
            <div style="display: flex">
              <el-form-item label="产品编码" style=" display: flex;">
                <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="请输入" @change="getProductInHouseOrderSearch" />
              </el-form-item>
              <el-form-item label="产品规格" style=" display: flex;">
                <el-input v-model="form.partspec" style="width: 200px" placeholder="请输入" @change="getProductInHouseOrderSearch" />
              </el-form-item>
              <el-form-item
                label="工单日期"
                style=" display: flex;font-size: 14px;margin-top: 3px;margin-bottom: -3px"
              >
                <el-date-picker
                  v-model="form.paystartdate"
                  type="daterange"
                  range-separator="~"
                  class="timeMini"
                  size="mini"
                  style="width: 200px;display: flex;line-height: 34px;height: 34px;"
                  :clearable="false"
                  start-placeholder="开始日期"
                  end-placeholder="结束日期"
                  @change="getProductInHouseOrderSearch"
                />
              </el-form-item>
            </div>
          </div>
          <div
            class="bodySearchReset"
          >
            <!--            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"-->
            <!--            <el-button  type="primary" icon="el-icon-search" @click="search">查询</el-button>-->
            <el-button type="info" icon="el-icon-refresh" @click="reset">重置</el-button>
          </div>
        </el-form>
        <div style="display: flex;align-items: center">
          <i
            class="el-icon-s-operation"
            :style="{color:$store.state.settings.theme,fontSize:'14px'}"
          />
          <div style="font-size: 14px;margin-left: 5px;color: #a7a7a7">
            é€‰æ‹©é¡¹
          </div>
        </div>
        <el-form
          ref="form"
          :model="form"
          label-width="100px"
          inline
          style="display: flex;"
        >
          <div class="elForm" style="justify-content: flex-start">
            <el-form-item label="单据日期" style=" display: flex;">
              <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.hbillno"
                readonly
                placeholder="请输入"
                style="width: 200px"
              />
            </el-form-item>
            <el-form-item label="入库仓库" required style=" display: flex;">
              <el-select
                v-model="form.stockcode"
                :popper-append-to-body="false"
                filterable
                style="width: 200px"
                placeholder="请选择"
                @change="stockcodeChange"
              >
                <el-option
                  v-for="item in stockcodeArr"
                  :key="item.code"
                  :label="item.name"
                  :value="item.code"
                />
              </el-select>
            </el-form-item>
          </div>
          <div
            class="bodySearchReset"
            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
          >
            <el-button
              type="primary"
              icon="el-icon-s-promotion"
              :disabled="$store.state.app.buttonIsDisabled"
              @click="submit"
            >入库提交
            </el-button>
            <!--            <el-button  type="info" icon="el-icon-refresh" @click="reset">重置</el-button>-->
          </div>
        </el-form>
        <div style="display: flex;align-items: center">
          <i
            class="el-icon-s-operation"
            :style="{color:$store.state.settings.theme,fontSize:'14px'}"
          />
          <div style="font-size: 14px;margin-left: 5px;color: #a7a7a7">
            ä¿¡æ¯æ 
          </div>
        </div>
        <div style="padding:0 10px;position: relative">
          <!--          <el-button-->
          <!--            -->
          <!--            type="primary"-->
          <!--            style="position: absolute;right: 10px;top: 10px;z-index: 10"-->
          <!--            icon="el-icon-s-promotion"-->
          <!--            @click=""-->
          <!--          >入库提交-->
          <!--          </el-button>-->
          <el-tabs style="margin-top: 10px;" @tab-click="tabClick">
            <el-tab-pane label="明细">
              <div class="elTableDiv" style="margin: 0 auto 10px;">
                <el-table
                  v-show="form.documentType==='Y'"
                  ref="tableDataRef"
                  class="tableFixed"
                  :data="tableDataDetail"
                  :height="(tableHeight-25)+'px'"
                  border
                  :row-class-name="tableRowClassName"
                  :style="{width: 100+'%',height:(tableHeight-25)+'px',}"
                  highlight-current-row
                  :header-cell-style="this.$headerCellStyle"
                  :cell-style="this.$cellStyle"
                  @selection-change="handleSelectionChange"
                >
                  <!--                  @cell-dblclick="cellDblclick"-->
                  <!--                  @cell-click="cellClick"-->
                  <el-table-column
                    type="selection"
                    width="50"
                    fixed
                  />
                  <el-table-column
                    type="index"
                    width="50"
                    fixed
                    label="序号"
                  />
                  <!--                  <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="入库条码"-->
                  <!--                    width="160"-->
                  <!--                    show-tooltip-when-overflow-->
                  <!--                  />-->
                  <el-table-column
                    prop="m_po"
                    label="订单编号"
                    width="160"
                    show-tooltip-when-overflow
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.m_po">{{ row.m_po }}</div>
                      <div v-else>/</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="wo_code"
                    label="工单编号"
                    width="160"
                    show-tooltip-when-overflow
                  />
                  <el-table-column
                    prop="partcode"
                    label="产品编码"
                    width="160"
                    show-tooltip-when-overflow
                  />
                  <el-table-column
                    prop="partname"
                    label="产品名称"
                    width="160"
                    show-tooltip-when-overflow
                  />
                  <el-table-column
                    prop="partspec"
                    label="产品规格"
                    width="160"
                    show-tooltip-when-overflow
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.partspec">{{ row.partspec }}</div>
                      <div v-else>/</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="qty"
                    label="订单数量"
                    min-width="95"
                    fixed="right"
                    show-tooltip-when-overflow
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.qty">{{ row.qty }}</div>
                      <div v-else>/</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="plan_qty"
                    label="工单数量"
                    min-width="95"
                    fixed="right"
                    show-tooltip-when-overflow
                  />
                  <el-table-column
                    prop="good_qty"
                    label="完工数量"
                    min-width="95"
                    fixed="right"
                    show-tooltip-when-overflow
                  />
                  <el-table-column
                    prop="inhouseqty"
                    label="已入库数量"
                    min-width="95"
                    fixed="right"
                    show-tooltip-when-overflow
                  />
                  <el-table-column
                    prop="stinhouseqty"
                    label="可入库数量"
                    min-width="130"
                    fixed="right"
                  >
                    <!--                    <template slot-scope="{row}">-->
                    <!--                      <el-input-number v-model="row.stinhouseqty" :min="0" :max="row.good_qty" size="small" />-->
                    <!--                    </template>-->
                  </el-table-column>
                </el-table>
                <el-table
                  v-show="form.documentType==='N'"
                  ref="tableDataRef"
                  class="tableFixed"
                  :data="tableDataDetail"
                  :height="(tableHeight-25)+'px'"
                  border
                  :row-class-name="tableRowClassName"
                  :style="{width: 100+'%',height:(tableHeight-25)+'px',}"
                  highlight-current-row
                  :header-cell-style="this.$headerCellStyle"
                  :cell-style="this.$cellStyle"
                  @selection-change="handleSelectionChange"
                >
                  <el-table-column
                    type="selection"
                    width="50"
                    fixed
                  />
                  <el-table-column
                    type="index"
                    width="50"
                    fixed
                    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>-->
                  <!--                  <el-table-column-->
                  <!--                    prop="inbarcode"-->
                  <!--                    label="入库条码"-->
                  <!--                    width="160"-->
                  <!--                    show-tooltip-when-overflow-->
                  <!--                  />-->
                  <!--                  <el-table-column-->
                  <!--                    prop="m_po"-->
                  <!--                    label="订单编号"-->
                  <!--                    width="160"-->
                  <!--                    show-tooltip-when-overflow-->
                  <!--                  >-->
                  <!--                    <template slot-scope="{row}">-->
                  <!--                      <div v-if="row.m_po">{{ row.m_po }}</div>-->
                  <!--                      <div v-else>/</div>-->
                  <!--                    </template>-->
                  <!--                  </el-table-column>-->
                  <el-table-column
                    prop="wo_code"
                    label="工单编号"
                    width="160"
                    show-tooltip-when-overflow
                  />
                  <el-table-column
                    prop="partcode"
                    label="产品编码"
                    width="160"
                    show-tooltip-when-overflow
                  />
                  <el-table-column
                    prop="partname"
                    label="产品名称"
                    width="160"
                    show-tooltip-when-overflow
                  />
                  <el-table-column
                    prop="partspec"
                    label="产品规格"
                    width="160"
                    show-tooltip-when-overflow
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.stockname">{{ row.stockname }}</div>
                      <div v-else>/</div>
                    </template>
                  </el-table-column>
                  <!--                  <el-table-column-->
                  <!--                    prop="qty"-->
                  <!--                    label="订单数量"-->
                  <!--                    min-width="95"-->
                  <!--                    fixed="right"-->
                  <!--                    show-tooltip-when-overflow-->
                  <!--                  >-->
                  <!--                    <template slot-scope="{row}">-->
                  <!--                      <div v-if="row.qty">{{ row.qty }}</div>-->
                  <!--                      <div v-else>/</div>-->
                  <!--                    </template>-->
                  <!--                  </el-table-column>-->
                  <el-table-column
                    prop="plan_qty"
                    label="工单数量"
                    min-width="95"
                    fixed="right"
                    show-tooltip-when-overflow
                  />
                  <el-table-column
                    prop="good_qty"
                    label="完工数量"
                    min-width="95"
                    fixed="right"
                    show-tooltip-when-overflow
                  />
                  <el-table-column
                    prop="inhouseqty"
                    label="已入库数量"
                    min-width="95"
                    fixed="right"
                    show-tooltip-when-overflow
                  />
                  <el-table-column
                    prop="stinhouseqty"
                    label="可入库数量"
                    min-width="95"
                    fixed="right"
                    show-tooltip-when-overflow
                  />
                </el-table>
              </div>
            </el-tab-pane>
            <el-tab-pane label="汇总">
              <div class="elTableDiv" style="margin: 0 auto 10px;">
                <el-table
                  ref="tableDataRef"
                  class="tableFixed"
                  :data="tableDataSummary"
                  :height="(tableHeight-25)+'px'"
                  border
                  :row-class-name="tableRowClassName2"
                  :style="{width: 100+'%',height:(tableHeight-25)+'px',}"
                  highlight-current-row
                  :header-cell-style="this.$headerCellStyle"
                  :cell-style="this.$cellStyle"
                >
                  <el-table-column
                    type="index"
                    width="50"
                    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>-->
                  <!--                    <template slot-scope="{row}">-->
                  <!--                      <div v-if="row.stockname">{{ row.stockname }}</div>-->
                  <!--                      <div v-else>/</div>-->
                  <!--                    </template>-->
                  <!--                  </el-table-column>-->
                  <!--                  <el-table-column-->
                  <!--                    prop="inbarcode"-->
                  <!--                    label="入库条码"-->
                  <!--                    width="160"-->
                  <!--                    show-tooltip-when-overflow-->
                  <!--                  />-->
                  <!--                  <el-table-column-->
                  <!--                    prop="m_po"-->
                  <!--                    label="订单编号"-->
                  <!--                    width="160"-->
                  <!--                    show-tooltip-when-overflow-->
                  <!--                  >-->
                  <!--                    <template slot-scope="{row}">-->
                  <!--                      <div v-if="row.m_po">{{ row.m_po }}</div>-->
                  <!--                      <div v-else>/</div>-->
                  <!--                    </template>-->
                  <!--                  </el-table-column>-->
                  <!--                  <el-table-column-->
                  <!--                    prop="wo_code"-->
                  <!--                    label="工单编号"-->
                  <!--                    width="160"-->
                  <!--                    show-tooltip-when-overflow-->
                  <!--                  />-->
                  <el-table-column
                    prop="partcode"
                    label="产品编码"
                    min-width="160"
                    show-tooltip-when-overflow
                  />
                  <el-table-column
                    prop="partname"
                    label="产品名称"
                    min-width="160"
                    show-tooltip-when-overflow
                  />
                  <el-table-column
                    prop="partspec"
                    label="产品规格"
                    min-width="160"
                    show-tooltip-when-overflow
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.stockname">{{ row.stockname }}</div>
                      <div v-else>/</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="qty"
                    label="订单数量"
                    min-width="95"
                    show-tooltip-when-overflow
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.qty">{{ row.qty }}</div>
                      <div v-else>/</div>
                    </template>
                  </el-table-column>
                  <!--                  <el-table-column-->
                  <!--                    prop="plan_qty"-->
                  <!--                    label="工单数量"-->
                  <!--                    min-width="95"-->
                  <!--                    fixed="right"-->
                  <!--                    show-tooltip-when-overflow-->
                  <!--                  />-->
                  <el-table-column
                    prop="good_qty"
                    label="完工数量"
                    min-width="95"
                    show-tooltip-when-overflow
                  />
                  <el-table-column
                    prop="inhouseqty"
                    label="已入库数量"
                    min-width="95"
                    show-tooltip-when-overflow
                  />
                  <el-table-column
                    prop="stinhouseqty"
                    label="可入库数量"
                    min-width="95"
                    show-tooltip-when-overflow
                  />
                </el-table>
              </div>
            </el-tab-pane>
          </el-tabs>
        </div>
      </div>
    </div>
  </div>
</template>
<script>
import {
  ProductInHouseOrderCodeSearch,
  ProductInHouseOrderSearch, ProductInHouseOrderSeave,
  ProductInHouseWkshopOrder
} from '@/api/scgl'
import { getTPlusToken, handleDatetime, handleDatetime2 } from '@/utils/global'
import {
  ErpUserSelect,
  ErpWarehouseSelect,
  ErpWkshopDepartmentSelect
} from '@/api/jcsz'
import { getCookie } from '@/utils/auth'
import Vue from 'vue'
import axios from 'axios'
export default {
  name: 'Zzjg',
  components: {},
  data() {
    return {
      mainHeight: 0,
      tableHeight: 0,
      form: {
        hbillno: '', // å…¥åº“单号
        incbit: '', // æµæ°´å·
        documentType: 'Y', // å•据类型
        wkshopcode: '', // ç”Ÿäº§è½¦é—´
        erpordercode: '', // è®¢å•编号
        mesordercode: '', // å·¥å•编号
        partcode: '', // äº§å“ç¼–码
        partname: '', // äº§å“åç§°
        partspec: '', // è§„格型号
        orderdate: '', // å·¥å•日期
        saleOrderCode: '', // é”€å”®è®¢å•
        lm_date: new Date(), // å•据日期
        stockcode: '' // å…¥åº“仓库
      },
      documentTypeArr: [
        { label: '有源单', value: 'Y' },
        { label: '无源单', value: 'N' }
      ],
      tableDataDetail: [], // æ˜Žç»†è¡¨
      multipleSelection: [],
      stockcodeArr: [], // å…¥åº“仓库数组
      WorkShopArr: [], // ç”Ÿäº§è½¦é—´æ•°ç»„
      erpordercodeArr: [], // ç”Ÿäº§è®¢å•数组
      mesordercodeArr: [], // ç”Ÿäº§å·¥å•数组
      tabClickIndex: null, // ç‚¹å‡»çš„单元格
      tabClickLabel: '', // å½“前点击的列名
      tableDataSummary: [], // æ±‡æ€»è¡¨
      // isPermission: true, // æ˜¯å¦æœ‰æƒé™å¯æäº¤
      userArr: [] // ERP人员数组
    }
  },
  watch: {},
  created() {
    this.getErpUserSelect()
  },
  mounted() {
    window.addEventListener('resize', this.getHeight)
    this.getHeight()
    this.getWareHouseSelect()
    this.getWorkShopSelect()
    this.getProductInHouseOrderCodeSearch()
  },
  methods: {
    async getProductInHouseOrderCodeSearch() {
      const { data: res } = await ProductInHouseOrderCodeSearch({ rightcode: '2064' })
      this.form.hbillno = res[0]
      this.form.incbit = res[1]
    },
    async getErpUserSelect() {
      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: '确定'
      //   })
      // }
    },
    // å•据类型改变
    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
      }
      const { data: res } = await ProductInHouseWkshopOrder(data)
      if (this.form.documentType === 'Y') {
        this.erpordercodeArr = res
      } else {
        this.mesordercodeArr = res
      }
    },
    async getProductInHouseOrderSearch() {
      let tempDate = this.form.orderdate
      if (tempDate.length > 0) {
        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
      }
      const data = {
        wkshopcode: this.form.wkshopcode, // ç”Ÿäº§è½¦é—´
        erpordercode: this.form.erpordercode, // è®¢å•编号
        mesordercode: this.form.mesordercode, // å·¥å•编号
        partcode: this.form.partcode, // äº§å“ç¼–码
        partname: this.form.partname, // äº§å“åç§°
        partspec: this.form.partspec, // è§„格型号
        orderdate: tempDate// å·¥å•日期
      }
      const res = await ProductInHouseOrderSearch(data)
      // this.tableDataDetail = res.data
      // æ ¹æ®åŽŸå•åšè¿‡æ»¤
      this.tableDataDetail = res.data.filter(i => this.form.documentType === 'Y' ? i.m_po : !i.m_po)
      this.form.saleOrderCode = res.data[0].saleOrderCode
      this.$nextTick(() => {
        this.$refs.tableDataRef.doLayout()
      })
    },
    // èŽ·å–ä»“åº“æŽ¥å£
    async getWareHouseSelect() {
      const { data: res } = await ErpWarehouseSelect()
      this.stockcodeArr = res
    },
    // èŽ·å–æ‰€å±žè½¦é—´
    async getWorkShopSelect() {
      const { data: res } = await ErpWkshopDepartmentSelect()
      this.WorkShopArr = res
    },
    // é‡ç½®
    reset() {
      this.form.wkshopcode = ''
      this.form.erpordercode = ''
      this.form.mesordercode = ''
      this.form.partcode = ''
      this.form.partname = ''
      this.form.partspec = ''
      this.form.orderdate = ''
      this.form.stockcode = ''
      this.tableDataDetail = []
      this.tableDataSummary = []
      this.multipleSelection = []
    },
    // è¡¨æ ¼å•元格双击
    cellDblclick(row, column, cell, event) {
      switch (column.label) {
        case '仓库':
          this.tabClickIndex = row.index
          this.tabClickLabel = column.label
          break
        case '可入库数量':
          this.tabClickIndex = row.index
          this.tabClickLabel = column.label
          break
        default:
          return
      }
    },
    // è¡¨æ ¼å•击事件
    cellClick() {
      this.tabClickLabel = ''
    },
    // å…¥åº“仓库值改变
    stockcodeChange(val) {
      this.tableDataDetail.forEach(i => {
        i.stockcode = val
      })
    },
    // å¤šé€‰é€‰ä¸­
    handleSelectionChange(val) {
      this.multipleSelection = val
    },
    // tab点击
    tabClick(val) {
      const partcodeArr = [...new Set(this.multipleSelection.map(i => i.partcode))]// æ•°ç»„去重
      const newData = []
      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(
          {
            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
          }
        )
      })
      this.tableDataSummary = newData
    },
    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()
      const openToken = await getTPlusToken() // èŽ·å–TPlus   token
      // æœ‰æºå•
      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 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,
            makerid: '',
            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
        }
      }
      // æ— æºå•
      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'
            }
          }
        )
        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,
            makerid: '',
            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
        }
      }
    },
    // èŽ·å–é¡µé¢é«˜åº¦
    getHeight() {
      this.$nextTick(() => {
        this.mainHeight = window.innerHeight - 85
        this.tableHeight = this.mainHeight - 255
        this.$refs.tableDataRef.doLayout()
      })
    },
    tableRowClassName({ row, rowIndex }) {
      // æŠŠæ¯ä¸€è¡Œçš„索引放进row
      row.index = rowIndex
      return 'custom-row'
    },
    tableRowClassName2({ row, rowIndex }) {
      return 'custom-row'
    }
  }
}
</script>
<!--公共页面样式-->
<style lang="scss" scoped>
$main_color: #42b983;
::v-deep .el-range__icon {
  line-height: 28px !important;
}
::v-deep .el-range-separator {
  line-height: 28px !important;
}
::v-deep .el-range-input {
  font-size: 14px;
}
::v-deep .el-range-separator {
  display: flex;
  justify-content: center;
  align-items: center;
}
::v-deep .el-button--text {
  font-size: 14px;
  cursor: pointer;
}
.el-icon-share, .el-icon-delete, .el-icon-edit-outline {
  color: $main_color;
  cursor: pointer;
}
.el-icon-edit-outline {
  margin-right: 15px;
}
::v-deep .el-button--primary, .el-button--default, .el-button--info {
  height: 34px;
  display: flex;
  align-items: center;
  padding: 0 15px;
}
::v-deep .el-button--primary {
  //background-color: $main_color !important;
}
::v-deep .el-button--default {
  background-color: #f8f8fa;
  border: none;
}
::v-deep .el-input__inner {
  height: 34px;
  line-height: 34px;
  //color: #a7a7a7;
}
::v-deep .el-dialog__body {
  padding: 20px 100px !important;
}
::v-deep .dialogVisibleRoles .el-dialog__body {
  padding: 20px 20px !important;
}
::v-deep .importPickerClass .el-dialog__body {
  padding: 20px 20px !important;
}
::v-deep .el-dialog__footer {
  display: flex;
  justify-content: flex-end;
}
::v-deep .el-table .caret-wrapper {
  transform: scale(0.8);
}
::v-deep .cell {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
::v-deep .el-table::before {
  height: 0;
}
::v-deep .el-table__body-wrapper {
  background-color: #f8f8fa;
}
::v-deep .el-table__body .el-table__row.hover-row td {
  background-color: #eaecef;
}
::v-deep .el-form--inline .el-form-item__label {
  color: #a7a7a7;
}
.body ::v-deep .el-divider {
  border: 1px solid #eee;
  width: 99%;
  margin: 10px auto;
}
.body ::v-deep .el-form-item {
  margin-bottom: 0;
}
.userDialogVisible ::v-deep .el-form-item {
  margin-bottom: 0;
}
::v-deep .el-select__caret {
  display: flex;
  align-items: center;
  justify-content: center;
}
.tableFixed {
  ::v-deep .el-table__fixed-right {
    height: 100% !important;
  }
  ::v-deep .el-table__fixed {
    height: 100% !important;
  }
}
::v-deep .el-tabs__item {
  padding-right: 0;
}
</style>
<style>
.el-table .custom-row {
  background: #f8f8fa;
}
</style>
vue.config.js
@@ -50,8 +50,8 @@
    },
    proxy: {
      [process.env.VUE_APP_BASE_API]: {
        // target: 'http://121.196.36.24:8003', // è¯·æ±‚的第三⽅接⼝地址      æœ¬åœ°æœåС噍(大岛)
        target: 'http://192.168.2.138:8001', // è¯·æ±‚的第三⽅接⼝地址   å®¢æˆ·æœåС噍(大岛)
        target: 'http://121.196.36.24:8023', // è¯·æ±‚的第三⽅接⼝地址      æœ¬åœ°æœåС噍(大岛)
        // target: 'http://192.168.2.138:8001', // è¯·æ±‚的第三⽅接⼝地址   å®¢æˆ·æœåС噍(大岛)
        changeOrigin: true, // è¯·æ±‚跨域时,需 é…ç½®æ­¤é¡¹
        pathRewrite: { // è·¯å¾„重写,替换target中的请求地址
          ['^' + process.env.VUE_APP_BASE_API]: '/api/'