<template>
|
<div>
|
<div class="body" :style="{height:mainHeight+'px'}">
|
<!-- <div class="bodyTopButtonGroup" style="justify-content: space-between">-->
|
<!-- <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">新增</el-button>-->
|
<!-- <el-button v-waves 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">
|
<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 v-waves type="primary" icon="el-icon-search" @click="search">查询</el-button>-->
|
<el-button v-waves 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">
|
<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
|
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>
|
<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-->
|
<!-- v-waves-->
|
<!-- 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>-->
|
<!-- <!– <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="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 elDragDialog from '@/directive/el-drag-dialog'
|
import waves from '@/directive/waves'
|
import {
|
ProductInHouseOrderCodeSearch,
|
ProductInHouseOrderSearch, ProductInHouseOrderSeave,
|
ProductInHouseWkshopOrder
|
} from '@/api/produceManager'
|
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',
|
components: {},
|
directives: { elDragDialog, waves },
|
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,
|
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,
|
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>
|