|
|
|
|
<template>
|
|
|
|
|
<el-dialog
|
|
|
|
|
title="新增其他出库"
|
|
|
|
|
append-to-body
|
|
|
|
|
:modelValue="openShow"
|
|
|
|
|
width="70%"
|
|
|
|
|
@close="closeDialog"
|
|
|
|
|
fullscreen
|
|
|
|
|
>
|
|
|
|
|
<el-form ref="form" :model="stOtherOutRecord" :rules="rules" label-width="100px">
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
<el-form-item label="出库原因" prop="outType">
|
|
|
|
|
<el-select
|
|
|
|
|
v-model="stOtherOutRecord.outType"
|
|
|
|
|
@change="changeUseType"
|
|
|
|
|
class="item-choose"
|
|
|
|
|
>
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="(item, index) in useTypeOptions"
|
|
|
|
|
:key="index"
|
|
|
|
|
:label="item.label"
|
|
|
|
|
:value="item.value"
|
|
|
|
|
/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
<el-form-item label="出库仓库" prop="shId">
|
|
|
|
|
<el-select
|
|
|
|
|
v-model="stOtherOutRecord.shId"
|
|
|
|
|
@change="storeHouseChange"
|
|
|
|
|
class="item-choose"
|
|
|
|
|
>
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="(item, index) in wareList"
|
|
|
|
|
:key="item.id"
|
|
|
|
|
:label="item.shName"
|
|
|
|
|
:value="item.id"
|
|
|
|
|
/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
<el-form-item label="领料人员" prop="picker">
|
|
|
|
|
<el-select v-model="stOtherOutRecord.picker" filterable class="item-choose">
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="(item, index) in userData"
|
|
|
|
|
:key="item.id"
|
|
|
|
|
:label="`${item.realName}(${item.workNo})`"
|
|
|
|
|
:value="item.id"
|
|
|
|
|
/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
<el-form-item label="工装编号" prop="mid">
|
|
|
|
|
<el-select v-model="stOtherOutRecord.mid" value-key="id" filterable class="item-choose">
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="item in treeData"
|
|
|
|
|
:key="item.mid"
|
|
|
|
|
:label="item.toolingCode"
|
|
|
|
|
:value="item.mid"
|
|
|
|
|
/>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="6" v-if="isShowInput">
|
|
|
|
|
<el-form-item label="出库工作订单">
|
|
|
|
|
<el-input v-model="stOtherOutRecord.woCode" class="item-choose" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="备注" prop="memo" class="auto-fit">
|
|
|
|
|
<el-input
|
|
|
|
|
placeholder="请输入"
|
|
|
|
|
:rows="2"
|
|
|
|
|
v-model="stOtherOutRecord.memo"
|
|
|
|
|
type="textarea"
|
|
|
|
|
minlength="0"
|
|
|
|
|
maxlength="100"
|
|
|
|
|
show-word-limit
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
<el-row> </el-row>
|
|
|
|
|
<div slot="left" style="margin-bottom: 12px">
|
|
|
|
|
<el-button type="primary" @click="insertEvent()">插入一行</el-button>
|
|
|
|
|
<el-button type="danger" @click="deleteRow()">删除一行</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
<el-table ref="xTable" :data="outbankList" border @select="selectChange">
|
|
|
|
|
<el-table-column type="selection" width="40" />
|
|
|
|
|
<el-table-column
|
|
|
|
|
label="出库单号"
|
|
|
|
|
prop="sirCode"
|
|
|
|
|
width="120"
|
|
|
|
|
align="center"
|
|
|
|
|
></el-table-column>
|
|
|
|
|
<el-table-column label="仓库物料" prop="goodsCode" width="150" align="center">
|
|
|
|
|
<template #header>
|
|
|
|
|
<span><i style="color: red">*</i>仓库物料</span>
|
|
|
|
|
</template>
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<!-- <el-select v-model="scope.row.goodsCode" @change="val => changeCode(val, scope.$index)">
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="item in goodsList"
|
|
|
|
|
:key="item.id"
|
|
|
|
|
:label="item.goodsCode"
|
|
|
|
|
:value="item.goodsCode"
|
|
|
|
|
></el-option>
|
|
|
|
|
</el-select> -->
|
|
|
|
|
|
|
|
|
|
<jhSelect
|
|
|
|
|
@input="val => (scope.row.goodsCode = val)"
|
|
|
|
|
:value="scope.row.goodsCode"
|
|
|
|
|
placeholder="请搜索选择"
|
|
|
|
|
api-url="/blade-wms/stGoods/list"
|
|
|
|
|
echo-api="/blade-wms/stGoods/list"
|
|
|
|
|
echoParamsKey="goodsCode"
|
|
|
|
|
echo-method="get"
|
|
|
|
|
api-method="get"
|
|
|
|
|
list-key="records"
|
|
|
|
|
total-key="total"
|
|
|
|
|
label-key="goodsCode"
|
|
|
|
|
value-key="goodsCode"
|
|
|
|
|
search-key="goodsCode"
|
|
|
|
|
:debounce-time="100"
|
|
|
|
|
@change="(val, item) => changeCode(val, item, scope.$index)"
|
|
|
|
|
:title="'修改'"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
|
|
|
|
|
<el-table-column label="物料名称" prop="goodsName" align="center">
|
|
|
|
|
<template #header>
|
|
|
|
|
<span><i style="color: red">*</i>物料名称</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="型号/牌号" prop="materialModel" align="center">
|
|
|
|
|
<template #header>
|
|
|
|
|
<span><i style="color: red">*</i>型号/牌号</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="库位号" prop="slId" align="center">
|
|
|
|
|
<template #header>
|
|
|
|
|
<span><i style="color: red">*</i>库位号</span>
|
|
|
|
|
</template>
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-select v-model="scope.row.slId" @change="val => changeLocation(val, scope.$index)">
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="item in scope.row.locationList"
|
|
|
|
|
:key="item.id"
|
|
|
|
|
:label="item.location"
|
|
|
|
|
:value="item.slId"
|
|
|
|
|
></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="批次号" prop="piNo" align="center">
|
|
|
|
|
<template #header>
|
|
|
|
|
<span><i style="color: red">*</i>批号</span>
|
|
|
|
|
</template>
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-select v-model="scope.row.piNo" @change="val => changePiNo(val, scope.$index)">
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="item in scope.row.piNoList"
|
|
|
|
|
:key="item.piNo"
|
|
|
|
|
:label="item.piNo"
|
|
|
|
|
:value="item.piNo"
|
|
|
|
|
></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="炉批号" prop="stovePiNo" align="center">
|
|
|
|
|
<template #header>
|
|
|
|
|
<span><i style="color: red">*</i>炉批号</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="库存数量" prop="quantity" align="center">
|
|
|
|
|
<template #header>
|
|
|
|
|
<span><i style="color: red">*</i>库存数量</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
|
|
|
|
|
<el-table-column label="出库件数" prop="outQuantity" align="center">
|
|
|
|
|
<template #header>
|
|
|
|
|
<span><i style="color: red">*</i>出库件数</span>
|
|
|
|
|
</template>
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-input-number
|
|
|
|
|
style="width: 90%"
|
|
|
|
|
v-model="scope.row.outQuantity"
|
|
|
|
|
:max="scope.row.quantity"
|
|
|
|
|
placeholder="请输入"
|
|
|
|
|
controls-position="right"
|
|
|
|
|
></el-input-number>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="计量单位" prop="unitName" align="center">
|
|
|
|
|
<template #header>
|
|
|
|
|
<span><i style="color: red">*</i>计量单位</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="到期日期" prop="scrapCycle" align="center">
|
|
|
|
|
<template #header>
|
|
|
|
|
<span><i style="color: red">*</i>到期日期</span>
|
|
|
|
|
</template>
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-date-picker
|
|
|
|
|
disabled
|
|
|
|
|
v-model="scope.row.scrapCycle"
|
|
|
|
|
format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
|
value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
|
type="date"
|
|
|
|
|
placeholder="选择日期"
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="入库日期" prop="inOutDate" align="center">
|
|
|
|
|
<template #header>
|
|
|
|
|
<span><i style="color: red">*</i>入库日期</span>
|
|
|
|
|
</template>
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-date-picker
|
|
|
|
|
disabled
|
|
|
|
|
v-model="scope.row.inOutDate"
|
|
|
|
|
format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
|
value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
|
|
type="date"
|
|
|
|
|
placeholder="选择日期"
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
</el-form>
|
|
|
|
|
|
|
|
|
|
<template #footer>
|
|
|
|
|
<span class="dialog-footer">
|
|
|
|
|
<el-button @click="closeDialog">取 消</el-button>
|
|
|
|
|
<el-button type="primary" @click="submit">确 定</el-button>
|
|
|
|
|
</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-dialog>
|
|
|
|
|
</template>
|
|
|
|
|
<script>
|
|
|
|
|
import { dateFormat } from '@/utils/date';
|
|
|
|
|
import {
|
|
|
|
|
getOtherOutNo,
|
|
|
|
|
getWarehouseList,
|
|
|
|
|
getKeeperList,
|
|
|
|
|
getGoodsOutList,
|
|
|
|
|
getLocationList,
|
|
|
|
|
completeIssue,
|
|
|
|
|
getLocationData,
|
|
|
|
|
addIssue,
|
|
|
|
|
getShList,
|
|
|
|
|
} from '@/api/storeManagement/otherIssuing';
|
|
|
|
|
export default {
|
|
|
|
|
props: {
|
|
|
|
|
showDialog: {
|
|
|
|
|
type: Boolean,
|
|
|
|
|
default: false,
|
|
|
|
|
},
|
|
|
|
|
checkCode: {
|
|
|
|
|
type: String,
|
|
|
|
|
default: '',
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
data() {
|
|
|
|
|
const assQuantityValid = ({ cellValue, rule, rules, row, rowIndex, column, columnIndex }) => {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
if (row.coGoods) {
|
|
|
|
|
if (row.coGoods.numAcc) {
|
|
|
|
|
if (cellValue == null) {
|
|
|
|
|
reject(new Error(this.$t('store.goodsMustInputAssQuatity')));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
resolve();
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
return {
|
|
|
|
|
openShow: false,
|
|
|
|
|
billCode: null,
|
|
|
|
|
userOption: [],
|
|
|
|
|
wareList: [],
|
|
|
|
|
shOption: [],
|
|
|
|
|
moldOption: {},
|
|
|
|
|
treeData: [],
|
|
|
|
|
goodsList: [],
|
|
|
|
|
stOtherOutRecord: {
|
|
|
|
|
// billDate:dateFormat(new Date(),'yyyy-MM-dd'),
|
|
|
|
|
// stAccBill: {
|
|
|
|
|
// billDate: new Date(),
|
|
|
|
|
// pfUserInfo: { dept: {} },
|
|
|
|
|
// coStorehouse: { shId: null }
|
|
|
|
|
// },
|
|
|
|
|
mid: null,
|
|
|
|
|
outType: 4,
|
|
|
|
|
woCode: null,
|
|
|
|
|
memo: null,
|
|
|
|
|
},
|
|
|
|
|
btnLoading: false,
|
|
|
|
|
outbankList: [],
|
|
|
|
|
oldShId: null,
|
|
|
|
|
disableTaskCode: true,
|
|
|
|
|
billDatePicker: '',
|
|
|
|
|
useTypeOptions: [
|
|
|
|
|
{
|
|
|
|
|
value: 0,
|
|
|
|
|
label: '报废出库',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
value: 1,
|
|
|
|
|
label: '料头出库',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
value: 2,
|
|
|
|
|
label: '超额出库',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
value: 3,
|
|
|
|
|
label: '复检出库',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
value: 4,
|
|
|
|
|
label: '领用出库',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
value: 5,
|
|
|
|
|
label: '库转移',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
value: 6,
|
|
|
|
|
label: '退货出库',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
value: 7,
|
|
|
|
|
label: '物料出库',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
value: 8,
|
|
|
|
|
label: '班组提请',
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
goodsParams: {},
|
|
|
|
|
piNoParams: {},
|
|
|
|
|
rules: {
|
|
|
|
|
// stAccBill: {
|
|
|
|
|
// coStorehouse: {
|
|
|
|
|
shId: [{ required: true, message: '请选择仓库', trigger: 'blur' }],
|
|
|
|
|
// },
|
|
|
|
|
// pfUserInfo: {
|
|
|
|
|
picker: [{ required: true, message: '请选择领料人', trigger: 'blur' }],
|
|
|
|
|
// }
|
|
|
|
|
// },
|
|
|
|
|
// moId: [],
|
|
|
|
|
|
|
|
|
|
outType: [{ required: true, message: '请选择出库原因', trigger: 'blur' }],
|
|
|
|
|
},
|
|
|
|
|
gridRules: {
|
|
|
|
|
rlsId: [{ required: true }],
|
|
|
|
|
shelfNo: [{ required: true }],
|
|
|
|
|
assQuantity: [{ validator: assQuantityValid }],
|
|
|
|
|
},
|
|
|
|
|
isShowInput: false,
|
|
|
|
|
userData: [],
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
mounted() {
|
|
|
|
|
this.openShow = this.showDialog;
|
|
|
|
|
this.getCode();
|
|
|
|
|
if (this.checkCode == '') {
|
|
|
|
|
this.getWare();
|
|
|
|
|
this.getKeeper();
|
|
|
|
|
this.getGoods();
|
|
|
|
|
} else {
|
|
|
|
|
this.getKeeper();
|
|
|
|
|
this.getShData();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
getShData() {
|
|
|
|
|
getShList({
|
|
|
|
|
goodsCode: this.checkCode,
|
|
|
|
|
}).then(res => {
|
|
|
|
|
this.wareList = res.data.data;
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
getBasicData() {
|
|
|
|
|
completeIssue({
|
|
|
|
|
barCode: this.checkCode,
|
|
|
|
|
}).then(res => {
|
|
|
|
|
this.outbankList = [{ sirCode: this.billCode, ...res.data.data }];
|
|
|
|
|
this.stOtherOutRecord.shId = res.data.data.shId;
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
getCode() {
|
|
|
|
|
getOtherOutNo().then(res => {
|
|
|
|
|
this.billCode = res.data.data.sirCode;
|
|
|
|
|
if (this.checkCode != '') {
|
|
|
|
|
this.getBasicData();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
uniqueById(arr) {
|
|
|
|
|
const seen = new Map();
|
|
|
|
|
for (const item of arr) {
|
|
|
|
|
if (!seen.has(item.slId)) {
|
|
|
|
|
seen.set(item.slId, item);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return Array.from(seen.values());
|
|
|
|
|
},
|
|
|
|
|
changeCode(val, item, index) {
|
|
|
|
|
// let tmp = this.goodsList.find(item => item.goodsCode == val);
|
|
|
|
|
// console.log('tmp------------', tmp);
|
|
|
|
|
|
|
|
|
|
if (item != undefined) {
|
|
|
|
|
this.outbankList[index].goodsName = item.goodsName;
|
|
|
|
|
this.outbankList[index].materialModel = item.materialModel;
|
|
|
|
|
this.outbankList[index].unitName = item.unitName;
|
|
|
|
|
this.outbankList[index].goodsId = item.id;
|
|
|
|
|
this.outbankList[index].slId = '';
|
|
|
|
|
this.outbankList[index].piNo = '';
|
|
|
|
|
this.outbankList[index].quantity = '';
|
|
|
|
|
}
|
|
|
|
|
getLocationData({
|
|
|
|
|
shId: this.stOtherOutRecord.shId,
|
|
|
|
|
goodsId: item.id,
|
|
|
|
|
}).then(res => {
|
|
|
|
|
console.log('res--------', res);
|
|
|
|
|
let data = this.uniqueById(res.data.data.records);
|
|
|
|
|
this.outbankList[index].locationList = data;
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
changeLocation(val, index) {
|
|
|
|
|
this.outbankList[index].piNo = '';
|
|
|
|
|
getLocationData({
|
|
|
|
|
shId: this.stOtherOutRecord.shId,
|
|
|
|
|
goodsId: this.outbankList[index].goodsId,
|
|
|
|
|
slId: val,
|
|
|
|
|
}).then(res => {
|
|
|
|
|
this.outbankList[index].piNoList = res.data.data.records;
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
changePiNo(val, index) {
|
|
|
|
|
let tmp = this.outbankList[index].piNoList.find(item => item.piNo == val);
|
|
|
|
|
if (tmp) {
|
|
|
|
|
this.outbankList[index].stovePiNo = tmp.stovePiNo;
|
|
|
|
|
this.outbankList[index].quantity = tmp.quantity;
|
|
|
|
|
this.outbankList[index].scrapCycle = tmp.scrapCycle;
|
|
|
|
|
this.outbankList[index].inOutDate = tmp.inOutDate;
|
|
|
|
|
this.outbankList[index].id = tmp.id;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
getGoods() {
|
|
|
|
|
getGoodsOutList().then(res => {
|
|
|
|
|
this.goodsList = res.data.data.records;
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
getKeeper() {
|
|
|
|
|
getKeeperList().then(res => {
|
|
|
|
|
this.userData = res.data.data;
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
getWare() {
|
|
|
|
|
getWarehouseList().then(res => {
|
|
|
|
|
this.wareList = res.data.data.records;
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
closeDialog(val) {
|
|
|
|
|
this.openShow = false;
|
|
|
|
|
this.$emit('closeDialog', val);
|
|
|
|
|
},
|
|
|
|
|
userDataFn() {
|
|
|
|
|
// this.$ajax.post("sysComBox/user", { "filterValue": null, "paging": { "pageSize": 9999999, "pageNumber": 1 }, "baseParams": {} }).then(res => {
|
|
|
|
|
// if (this.$ifAjax(res)) {
|
|
|
|
|
// this.userData = res.data.list;
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
},
|
|
|
|
|
opened() {
|
|
|
|
|
this.stOtherOutRecord = {
|
|
|
|
|
stAccBill: {
|
|
|
|
|
billDate: new Date(),
|
|
|
|
|
pfUserInfo: { dept: {} },
|
|
|
|
|
coStorehouse: { shId: null },
|
|
|
|
|
},
|
|
|
|
|
mid: null,
|
|
|
|
|
outType: 4,
|
|
|
|
|
memo: null,
|
|
|
|
|
};
|
|
|
|
|
this.oldShId = null;
|
|
|
|
|
this.outbankList = [];
|
|
|
|
|
this.$refs.form.resetFields();
|
|
|
|
|
if (this.abId == null) {
|
|
|
|
|
this.queryDataForAdd();
|
|
|
|
|
} else {
|
|
|
|
|
this.queryData();
|
|
|
|
|
}
|
|
|
|
|
this.changeUseType(this.stOtherOutRecord.outType);
|
|
|
|
|
this.moldList();
|
|
|
|
|
},
|
|
|
|
|
moldList() {
|
|
|
|
|
// this.$ajax.post("stOtherReceiptRecord/queryMoldList").then(res => {
|
|
|
|
|
// if (this.$ifAjax(res)) {
|
|
|
|
|
// this.loading = false;
|
|
|
|
|
// this.treeData = res.data.list;
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
// this.$ajax.post("stOtherOutRecord/generateCode").then(res => {
|
|
|
|
|
// if (this.$ifAjax(res)) {
|
|
|
|
|
// this.stOtherOutRecord.stAccBill.billCode =
|
|
|
|
|
// res.data.stAccBill.billCode;
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
},
|
|
|
|
|
queryDataForAdd() {
|
|
|
|
|
this.$ajax.get('stOtherOutRecord/preparedForAdd').then(res => {
|
|
|
|
|
this.stOtherOutRecord = res.data;
|
|
|
|
|
this.userOption = [
|
|
|
|
|
{
|
|
|
|
|
userId: this.stOtherOutRecord.stAccBill.pfUserInfo.userId,
|
|
|
|
|
userName: this.stOtherOutRecord.stAccBill.pfUserInfo.userName,
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
queryData() {
|
|
|
|
|
// 根据凭证单ID查询入库数据
|
|
|
|
|
this.$ajax.get('stOtherOutRecord/queryForEdit/' + this.abId).then(res => {
|
|
|
|
|
const { stOtherOutRecord, outbankList, prMoldOrder } = res.data;
|
|
|
|
|
this.stOtherOutRecord = stOtherOutRecord;
|
|
|
|
|
this.outbankList = outbankList;
|
|
|
|
|
this.oldShId = this.stOtherOutRecord.stAccBill.coStorehouse.shId;
|
|
|
|
|
this.userOption = [
|
|
|
|
|
{
|
|
|
|
|
userId: this.stOtherOutRecord.stAccBill.pfUserInfo.userId,
|
|
|
|
|
userName: this.stOtherOutRecord.stAccBill.pfUserInfo.userName,
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
this.shOption = [
|
|
|
|
|
{
|
|
|
|
|
shId: this.stOtherOutRecord.stAccBill.coStorehouse.shId,
|
|
|
|
|
shName: this.stOtherOutRecord.stAccBill.coStorehouse.shName,
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
this.stOtherOutRecord.moId = prMoldOrder.moId;
|
|
|
|
|
this.moldOption[prMoldOrder.moId] = prMoldOrder;
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
insertEvent(row = -1) {
|
|
|
|
|
if (!this.stOtherOutRecord.shId || this.stOtherOutRecord.shId == '') {
|
|
|
|
|
this.$message.error('请选择仓库!');
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
// 新增一行
|
|
|
|
|
// 创建一个新行对象,包含所有必要的字段
|
|
|
|
|
let sirCode = '';
|
|
|
|
|
const len = this.outbankList;
|
|
|
|
|
if (len.length === 0) {
|
|
|
|
|
sirCode = this.billCode;
|
|
|
|
|
} else {
|
|
|
|
|
const newBoCode = len[len.length - 1].sirCode;
|
|
|
|
|
sirCode = Number(newBoCode) + 1;
|
|
|
|
|
}
|
|
|
|
|
const newRow = {
|
|
|
|
|
sirCode: sirCode,
|
|
|
|
|
_select: false,
|
|
|
|
|
};
|
|
|
|
|
this.outbankList.push(newRow);
|
|
|
|
|
},
|
|
|
|
|
selectChange(list, row) {
|
|
|
|
|
row._select = !row._select;
|
|
|
|
|
},
|
|
|
|
|
// 删除选中行
|
|
|
|
|
deleteRow() {
|
|
|
|
|
this.$confirm('确定将选择数据删除?', {
|
|
|
|
|
confirmButtonText: '确定',
|
|
|
|
|
cancelButtonText: '取消',
|
|
|
|
|
type: 'warning',
|
|
|
|
|
}).then(() => {
|
|
|
|
|
this.outbankList = this.outbankList.filter(row => !row._select);
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
editActived({ row, rowIndex, column, columnIndex, $columnIndex, cell }) {},
|
|
|
|
|
editClosed({ row, rowIndex, column, columnIndex, $columnIndex, cell }) {
|
|
|
|
|
// 编辑完成后触发
|
|
|
|
|
if (
|
|
|
|
|
column.property === 'quantity' ||
|
|
|
|
|
column.property === 'unitPrice' ||
|
|
|
|
|
column.property === 'abdMoney' ||
|
|
|
|
|
column.property === 'assQuantity'
|
|
|
|
|
) {
|
|
|
|
|
this.changeData(row, column.property);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
activeCellMethod({ column, columnIndex }) {
|
|
|
|
|
// 文本禁止编辑
|
|
|
|
|
if (this.stOtherOutRecord.stAccBill.coStorehouse.shId == null) {
|
|
|
|
|
this.$message.error(this.$t('store.pleaseChoseStore'));
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var row = this.$refs.xTable.getCurrentRecord();
|
|
|
|
|
|
|
|
|
|
if (column.property === 'assQuantity') {
|
|
|
|
|
if (!row.coGoods.numAcc) {
|
|
|
|
|
this.$message.error(this.$t('store.pleaseChoseGoodsForNumAcc'));
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
},
|
|
|
|
|
close(isRefresh) {
|
|
|
|
|
this.$emit('cancel', isRefresh === true);
|
|
|
|
|
},
|
|
|
|
|
goodsItemValue(item) {
|
|
|
|
|
// 选择完数据,对关联数据进行修改
|
|
|
|
|
var row = this.$refs.xTable.getCurrentRecord();
|
|
|
|
|
|
|
|
|
|
if (item.storageLocation != null) {
|
|
|
|
|
this.$set(row, 'storageLocation', item.storageLocation);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.$set(row, 'quantity', item.quantity);
|
|
|
|
|
this.$set(row, 'coGoods', item.coGoods);
|
|
|
|
|
this.$set(row, 'rlsId', item.rlsId);
|
|
|
|
|
this.$set(row, 'piNo', item.piNo);
|
|
|
|
|
this.$set(row, 'stovePiNo', item.stovePiNo);
|
|
|
|
|
this.$set(row, 'goodsCodeAndGoodsName', item.goodsCodeAndGoodsName);
|
|
|
|
|
this.$set(row, 'createTime', item.createTime);
|
|
|
|
|
this.$set(row, 'scrapCycle', item.scrapCycle);
|
|
|
|
|
},
|
|
|
|
|
storeHouseChange(val) {
|
|
|
|
|
// console.log("item", item)
|
|
|
|
|
console.log('wareList---------', this.wareList);
|
|
|
|
|
|
|
|
|
|
let tmp = this.wareList.find(item => item.id == val);
|
|
|
|
|
if (tmp.shName.indexOf('玻璃饼') !== -1) {
|
|
|
|
|
this.isShowInput = true;
|
|
|
|
|
} else {
|
|
|
|
|
this.isShowInput = false;
|
|
|
|
|
}
|
|
|
|
|
if (this.outbankList.length == 1) {
|
|
|
|
|
this.outbankList[0].slId = '';
|
|
|
|
|
this.outbankList[0].piNo = '';
|
|
|
|
|
this.outbankList[0].quantity = '';
|
|
|
|
|
getGoodsOutList({
|
|
|
|
|
shId: val,
|
|
|
|
|
}).then(res => {
|
|
|
|
|
this.goodsList = res.data.data.records;
|
|
|
|
|
if (this.outbankList[0].goodsCode != '') {
|
|
|
|
|
let tmp = this.goodsList.find(item => item.goodsCode == this.outbankList[0].goodsCode);
|
|
|
|
|
this.outbankList[0].goodsId = tmp.id;
|
|
|
|
|
if (tmp) {
|
|
|
|
|
getLocationData({
|
|
|
|
|
shId: val,
|
|
|
|
|
goodsId: tmp.id,
|
|
|
|
|
}).then(res => {
|
|
|
|
|
console.log('res--------', res);
|
|
|
|
|
let data = this.uniqueById(res.data.data.records);
|
|
|
|
|
this.outbankList[0].locationList = data;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
this.outbankList = [];
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
changeUseType(outType) {},
|
|
|
|
|
|
|
|
|
|
changeData(row, fieldName) {
|
|
|
|
|
// 数量
|
|
|
|
|
let quantityVal = row.quantity;
|
|
|
|
|
// 件数
|
|
|
|
|
let assQuantityVal = row.assQuantity;
|
|
|
|
|
// 单价
|
|
|
|
|
let priceVal = row.unitPrice;
|
|
|
|
|
// 金额
|
|
|
|
|
let abdMoneyVal = row.abdMoney;
|
|
|
|
|
// 件数核算
|
|
|
|
|
const numAcc = row.coGoods.numAcc;
|
|
|
|
|
|
|
|
|
|
if (quantityVal === undefined || quantityVal === null) {
|
|
|
|
|
quantityVal = 0;
|
|
|
|
|
}
|
|
|
|
|
if (assQuantityVal === undefined || assQuantityVal === null) {
|
|
|
|
|
assQuantityVal = 0;
|
|
|
|
|
}
|
|
|
|
|
if (priceVal === undefined || priceVal === null) {
|
|
|
|
|
priceVal = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const n = this.$number;
|
|
|
|
|
if (fieldName === 'quantity' || fieldName === 'unitPrice' || fieldName === 'assQuantity') {
|
|
|
|
|
if (numAcc) {
|
|
|
|
|
abdMoneyVal = n.floatMul(priceVal, assQuantityVal, 2);
|
|
|
|
|
} else {
|
|
|
|
|
abdMoneyVal = n.floatMul(priceVal, quantityVal, 2);
|
|
|
|
|
}
|
|
|
|
|
this.$set(row, 'abdMoney', abdMoneyVal);
|
|
|
|
|
} else {
|
|
|
|
|
if (numAcc) {
|
|
|
|
|
priceVal = n.floatDiv(abdMoneyVal, assQuantityVal, 6);
|
|
|
|
|
} else {
|
|
|
|
|
priceVal = n.floatDiv(abdMoneyVal, quantityVal, 6);
|
|
|
|
|
}
|
|
|
|
|
this.$set(row, 'abdMoney', abdMoneyVal);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
getMinBillDate() {
|
|
|
|
|
const self = this;
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
disabledDate(time) {
|
|
|
|
|
if (self.stOtherOutRecord.stAccBill.billDate) {
|
|
|
|
|
return new Date(self.stOtherOutRecord.stAccBill.billDate).getTime() > time.getTime();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
submit() {
|
|
|
|
|
this.$refs.form.validate(valid => {
|
|
|
|
|
if (valid) {
|
|
|
|
|
this.outbankList.map(item => {
|
|
|
|
|
if (item.outQuantity > item.quantity) {
|
|
|
|
|
this.$message.error('出库数量不可大于库存数量');
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
// 校验通过:准备提交数据(过滤无用字段)
|
|
|
|
|
const submitData = this.outbankList.map(row => {
|
|
|
|
|
const { piNoList, locationList, _select, ...validData } = row; // 剔除选择状态字段
|
|
|
|
|
return validData;
|
|
|
|
|
});
|
|
|
|
|
let params = {
|
|
|
|
|
outList: submitData,
|
|
|
|
|
stOtherOutRecord: this.stOtherOutRecord,
|
|
|
|
|
};
|
|
|
|
|
console.log('params', params);
|
|
|
|
|
addIssue(params).then(res => {
|
|
|
|
|
if (res.data.code == 200) {
|
|
|
|
|
this.$message.success('保存成功');
|
|
|
|
|
|
|
|
|
|
this.outbankList.map((item, index) => {
|
|
|
|
|
getLocationData({
|
|
|
|
|
shId: this.stOtherOutRecord.shId,
|
|
|
|
|
goodsId: item.goodsId,
|
|
|
|
|
slId: item.slId,
|
|
|
|
|
}).then(res => {
|
|
|
|
|
item.piNoList = res.data.data.records;
|
|
|
|
|
let tmp = item.piNoList.find(item1 => item1.piNo == item.piNo);
|
|
|
|
|
item.quantity = tmp.quantity;
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
// this.outbankList = []
|
|
|
|
|
// this.stOtherOutRecord = {}
|
|
|
|
|
// this.closeDialog(true)
|
|
|
|
|
// this.onLoad()
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
// this.$message.success("保存成功");
|
|
|
|
|
// this.$refs.form.validate(formValid => {
|
|
|
|
|
// if (formValid) {
|
|
|
|
|
// if (this.isShowInput) {
|
|
|
|
|
// if (
|
|
|
|
|
// this.stOtherOutRecord.woCode == null &&
|
|
|
|
|
// this.stOtherOutRecord.woCode == undefined
|
|
|
|
|
// ) {
|
|
|
|
|
// return this.$message.warning("请填写工作订单号");
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// let submitList = [];
|
|
|
|
|
// const deleteIds = [];
|
|
|
|
|
|
|
|
|
|
// if (
|
|
|
|
|
// this.oldShId != null &&
|
|
|
|
|
// this.stOtherOutRecord.stAccBill.coStorehouse.shId !== this.oldShId
|
|
|
|
|
// ) {
|
|
|
|
|
// const { fullData } = this.$refs.xTable.getTableData();
|
|
|
|
|
// if (fullData.length > 0) {
|
|
|
|
|
// submitList = submitList.concat(fullData);
|
|
|
|
|
// }
|
|
|
|
|
// } else {
|
|
|
|
|
// const {
|
|
|
|
|
// insertRecords,
|
|
|
|
|
// updateRecords
|
|
|
|
|
// } = this.$refs.xTable.getRecordset();
|
|
|
|
|
// if (insertRecords.length > 0) {
|
|
|
|
|
// insertRecords.forEach(item => {
|
|
|
|
|
// if (item.coGoods.goodsId != null) {
|
|
|
|
|
// submitList.push(item);
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
// }
|
|
|
|
|
// if (updateRecords.length > 0) {
|
|
|
|
|
// submitList = submitList.concat(updateRecords);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// const removeRecords = this.$refs.xTable.getRemoveRecords();
|
|
|
|
|
// if (removeRecords.length) {
|
|
|
|
|
// removeRecords.forEach(obj => {
|
|
|
|
|
// if (obj.stAccBillDetail.abdId) {
|
|
|
|
|
// deleteIds.push(obj.stAccBillDetail.abdId);
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// if (
|
|
|
|
|
// (this.stOtherOutRecord.abId === undefined ||
|
|
|
|
|
// this.stOtherOutRecord.abId === null) &&
|
|
|
|
|
// submitList.length === 0
|
|
|
|
|
// ) {
|
|
|
|
|
// this.$message.warning(
|
|
|
|
|
// this.$t("videaVueLib.publics.message.noDataToSave")
|
|
|
|
|
// );
|
|
|
|
|
// } else {
|
|
|
|
|
// this.$refs.xTable.validate(submitList, errMap => {
|
|
|
|
|
// if (errMap) {
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
// this.btnLoading = true;
|
|
|
|
|
// this.$ajax
|
|
|
|
|
// .post("stOtherOutRecord/addStOtherOutRecord", {
|
|
|
|
|
// stOtherOutRecord: this.stOtherOutRecord,
|
|
|
|
|
// list: submitList,
|
|
|
|
|
// deleteIds: deleteIds
|
|
|
|
|
// })
|
|
|
|
|
// .then(res => {
|
|
|
|
|
// if (this.$ifAjax(res)) {
|
|
|
|
|
// this.$message.success(
|
|
|
|
|
// this.$t("videaVueLib.publics.message.success")
|
|
|
|
|
// );
|
|
|
|
|
// this.close(true);
|
|
|
|
|
// }
|
|
|
|
|
// this.btnLoading = false;
|
|
|
|
|
// });
|
|
|
|
|
// });
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
},
|
|
|
|
|
piCodeChange(id, item) {
|
|
|
|
|
this.stOtherOutRecord.taskCode = item.moCode;
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
.item-choose {
|
|
|
|
|
width: 250px;
|
|
|
|
|
}
|
|
|
|
|
</style>
|