<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"
|
/>
|
<!-- 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" />
|
</el-form-item>
|
<el-form-item label="产品名称" style=" display: flex;">
|
<el-input v-model="form.partname" style="width: 200px" placeholder="请输入" />
|
</el-form-item>
|
<el-form-item label="产品规格" style=" display: flex;">
|
<el-input v-model="form.partspec" style="width: 200px" placeholder="请输入" />
|
</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="结束日期"
|
/>
|
</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="入库仓库" 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"
|
|
@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
|
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 { handleDatetime, handleDatetime2 } from '@/utils/global'
|
import { ErpUserSelect, ErpWarehouseSelect, ErpWkshopDepartmentSelect } from '@/api/basicInfo'
|
import { getCookie } from '@/utils/auth'
|
|
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()
|
|
// this.getProductInHouseOrderSearch()
|
},
|
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: '确定'
|
// callback: action => {
|
// this.$message({
|
// type: 'info',
|
// message: `action: ${action}`
|
// })
|
// }
|
})
|
}
|
},
|
|
// 单据类型改变
|
documentTypeChange(val) {
|
this.form.erpordercode = ''
|
this.form.wkshopcode = ''
|
},
|
// 生产车间改变
|
async wkshopcodeChange(val) {
|
this.form.erpordercode = ''
|
this.form.mesordercode = ''
|
this.form.saleOrderCode = ''
|
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.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
|
// 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) {
|
// this.$nextTick(() => {
|
// this.$refs.tableDataRef.doLayout()
|
// })
|
|
const stockcodeArr = [...new Set(this.multipleSelection.map(i => i.stockcode))]// 数组去重
|
|
// const partcodeArr = [...new Set(this.multipleSelection.map(i => i.partcode))]// 数组去重
|
const newData = []
|
|
const Array2D = []
|
|
stockcodeArr.forEach(i => {
|
Array2D.push(this.multipleSelection.filter(j => j.stockcode === i))
|
})
|
|
Array2D.forEach(k => {
|
const partcodeArr = [...new Set(k.map(j => j.partcode))]
|
partcodeArr.forEach(i => {
|
const t = k.find(j => j.partcode === i)
|
let sum = 0
|
const good_qty = k.filter(j => j.partcode === i).map(j => parseFloat(j.good_qty)).reduce((pre, curr) => {
|
sum = pre + curr
|
return sum
|
})
|
sum = 0
|
const inhouseqty = k.filter(j => j.partcode === i).map(j => parseFloat(j.inhouseqty)).reduce((pre, curr) => {
|
sum = pre + curr
|
return sum
|
})
|
sum = 0
|
const stinhouseqty = k.filter(j => j.partcode === i).map(j => parseFloat(j.stinhouseqty)).reduce((pre, curr) => {
|
sum = pre + curr
|
return sum
|
})
|
newData.push(
|
{
|
stockcode: t.stockcode,
|
partcode: t.partcode,
|
partname: t.partname,
|
partspec: t.partspec,
|
qty: t.qty,
|
good_qty,
|
inhouseqty,
|
stinhouseqty,
|
unitid: t.unitid,
|
unitname: t.unitname,
|
sourceVoucherDetailId: t.sbid,
|
saleOrderDetailId: t.saleOrderDetailId,
|
ManufactureOrderDetailId: t.sbid,
|
stck_id: this.stockcodeArr.find(i => i.code === t.stockcode).id,
|
SourceVoucherDetailIdByMergedFlow: t.sbid,
|
materiel_code: t.partcode,
|
warehouse: t.stockcode,
|
materiel_id: t.materiel_id
|
}
|
)
|
})
|
})
|
// console.log(Array2D, 'Array2D')
|
// console.log(newData, '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(
|
// {
|
// partcode: i,
|
// partname: t.partname,
|
// partspec: t.partspec,
|
// qty: t.qty,
|
// good_qty,
|
// inhouseqty,
|
// stinhouseqty
|
// }
|
// )
|
// })
|
this.tableDataSummary = newData.flat()
|
},
|
|
// 入库提交
|
submit() {
|
this.tabClick()
|
|
this.$confirm('是否确认提交?', '提示', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning'
|
}).then(() => {
|
if (this.multipleSelection.length === 0) {
|
return this.$message.error('未选择产品!')
|
}
|
if (this.multipleSelection.find(i => !i.stockcode)) {
|
return this.$message.error('明细里面有产品未填写仓库!')
|
}
|
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
|
}
|
|
ProductInHouseOrderSeave(data).then(res => {
|
if (res.code === '200') {
|
this.$message.success('入库提交成功!')
|
this.getProductInHouseOrderCodeSearch()
|
this.wkshopcodeChange(this.form.wkshopcode)
|
this.tableDataDetail = []
|
this.tableDataSummary = []
|
this.multipleSelection = []
|
}
|
})
|
})
|
},
|
// 获取页面高度
|
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>
|