kams4_test_web/src/views/business-asn/asn/viewAsnDetail.vue

1013 lines
31 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div>
<!-- 卡片头 -->
<el-dialog :visible.sync="dialogInsertAsn"
center
top="0.5vh"
:fullscreen="fullscreen"
width="85%"
:close-on-click-modal="false"
:before-close="handleClose"
>
<template #title>
<div style="display: flex; align-items: center; justify-content: space-between;">
<span style="flex: 1; text-align: center;">新增入库单</span>
<div>
<i class="el-icon-full-screen" @click="fullscreen = !fullscreen"
style="cursor: pointer; margin-right: 20px;font-size: 13px;"></i>
</div>
</div>
</template>
<el-form ref="asnFromRes" :model="asnFrom" :rules="rules" size="small" label-width="80px">
<el-row>
<el-col :span="12">
<el-form-item label="单据类型" prop="billType">
<el-select v-model="asnFrom.billType" value-key="id"
placeholder="请选择单据类型" clearable style="width: 100%"
>
<el-option
v-for="item in billTypeOptions"
:key="item.id"
:label="item.name"
:value="item"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="订单日期" prop="orderDate">
<el-date-picker
style="width: 100%"
v-model="asnFrom.orderDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期"
>
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="凭证号">
<el-input :disabled="true" v-model="asnFrom.code"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="待收数量">
<el-input :disabled="true" v-model.number="asnFrom.orderQuantity"/>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="备注:">
<el-input v-model="asnFrom.description" type="textarea" :autosize="{ minRows: 3, maxRows: 5}"
placeholder="请输入备注"
/>
</el-form-item>
<el-button type="primary" size="small" :disabled="this.asnFrom.status!='OPEN'" @click="submitFromAsn(asnFrom)">提交
</el-button>
</el-form>
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="订单明细信息" name="first">
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
<crudOperation :permission="permission" :tableKey="this.$options.name">
<el-button
slot="right"
class="filter-item"
type="primary"
size="mini"
:disabled="this.asnFrom.id<=0 || this.asnFrom.id==undefined || this.asnFrom.status!='OPEN' "
@click="insertAsnDetail"
:loading="logining1"
>
添加明细
</el-button>
<el-button
slot="right"
class="filter-item"
type="primary"
size="mini"
:disabled="!(crud.selections.length === 1) || (!crud.selections[0] || crud.selections[0].orderQty === crud.selections[0].receivedQty) "
@click="asnDetailZl(crud.selections)"
:loading="logining1"
>
明细整理
</el-button>
<el-button
v-if="false"
slot="right"
class="filter-item"
type="primary"
size="mini"
@click="rkAndQxButtonM(1)"
:loading="logining1"
>
整单入库
</el-button>
<el-button
v-if="false"
slot="right"
class="filter-item"
type="primary"
size="mini"
:disabled="!(crud.selections.length === 1)"
@click="dyrkM(crud.selections)"
:loading="logining2"
>
单一入库
</el-button>
<el-button
v-if="false"
slot="right"
class="filter-item"
type="primary"
size="mini"
:disabled="crud.selections.length === 0"
@click="qxshM(crud.selections)"
:loading="logining3"
>
取消收货
</el-button>
<el-upload
v-if="false"
class="upload-demo"
ref="upload"
slot='right'
style="float: right;padding-left: 5px"
:action="baseApi+'/api/importData/importAsnDetail?asnId='+this.asnId"
:file-list="fileList"
:on-success=handleSuccess
:on-error="handleError"
:headers="headers"
:show-file-list="true">
<el-button size="mini" type="success" icon="el-icon-upload">导入</el-button>
</el-upload>
</crudOperation>
<!--表格渲染-->
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="small" style="width: 100%;"
@selection-change="crud.selectionChangeHandler" height="35vh"
>
<el-table-column type="selection" width="55"/>
<el-table-column prop="item.code " label="品番号" width="100px">
<template slot-scope="scope">
<div>{{ scope.row.item == null ? '' : scope.row.item.code }}</div>
</template>
</el-table-column>
<el-table-column prop="item.name" label="品番" width="100px">
<template slot-scope="scope">
<div>{{ scope.row.item == null ? '' : scope.row.item.name }}</div>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="item.unit" label="单位">
<template slot-scope="scope">
<div>{{ scope.row.item == null ? '' : scope.row.item.unit }}</div>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="orderQty" label="订单数量">
<template slot-scope="scope">
<div>{{ scope.row == null ? '' : scope.row.orderQty }}</div>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="receivedQty" label="收货数量">
<template slot-scope="scope">
<div>{{ scope.row == null ? '' : scope.row.receivedQty }}</div>
</template>
</el-table-column>
<el-table-column prop="propC1" label="批次号">
<template slot-scope="scope">
<div>{{ scope.row.propC1 }}</div>
</template>
</el-table-column>
<el-table-column prop="propC2" label="序列号"/>
<el-table-column prop="propD1" label="生产日期">
<template slot-scope="scope">
<div>{{ scope.row.propD1 }}</div>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="remark" label="备注">
<template slot-scope="scope">
<div>{{ scope.row.remark }}</div>
</template>
</el-table-column>
<el-table-column v-if="checkPer(['admin','asnDetail:edit','asnDetail:del'])" label="操作"
align="center"
>
<template slot-scope="scope">
<el-button
:disabled="scope.row.receivedQty>0"
style="float: left"
size="mini" type="primary" icon="el-icon-edit" @click="toEditAsnDetail(scope.row)"/>
<udOperation
:data="scope.row"
:permission="permission"
:show-edit="false"
/>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<div style="float: right">
<pagination/>
</div>
</el-tab-pane>
</el-tabs>
</el-dialog>
<!-- 单一入库 -->
<el-dialog title="单一入库" :visible.sync="dyrkTf" width="500px">
<!-- <el-dialog-->
<!-- width="30%"-->
<!-- title="内层 Dialog"-->
<!-- :visible.sync="innerVisible"-->
<!-- append-to-body>-->
<!-- </el-dialog>-->
<el-form ref="formdyrk" :model="asnDetailButton" label-width="80px">
<el-form-item label="数量" prop="oneRNumber" :rules="[
{ required: true, message: '数量不能为空'},
{ type: 'number', message: '数量必须为数字值'}
]"
>
<el-input v-model.number="asnDetailButton.oneRNumber" placeholder="请输入数量" style="width: 250px"/>
</el-form-item>
<el-form-item label="库位" prop="oneRPoint" :rules="[
{ required: true, message: '库位不能为空'}
]"
>
<el-select v-model="asnDetailButton.oneRPoint" value-key="id" placeholder="请选择库位"
style="width: 250px">
<el-option
v-for="(item,index) in pointOptions"
:key="item.id+''+item.code"
:label="item.code"
:value="item"
>
</el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dyrkTf = false">取 消</el-button>
<el-button type="primary" @click="rkAndQxButtonM(2)">确认</el-button>
</div>
</el-dialog>
<!--表单组件-->
<el-dialog
:visible.sync="dialogInsertAsnDetail"
center
width="400px"
top="0.5vh"
:close-on-click-modal="false"
:before-close="handleAsnDetailClose"
>
<el-form ref="form" :rules="asnDetailRules" :model="form" size="small" label-width="80px"
>
<el-form-item label="物料" prop="item">
<el-select v-model="form.item" value-key="id" filterable placeholder="请选择料号" style="width: 270px;"
@change="getPointList(form.item,$event.code,asn)"
clearable
>
<el-option
v-for="item in itemOptions"
:key="item.id"
:label="item.code"
:value="item"
>
<span style="float: left">{{ item.code }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.name }}</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="订单数量" prop="orderQty">
<el-input v-model.number="form.orderQty"/>
</el-form-item>
<el-form-item label="Loc">
<el-input v-model="form.propC4"></el-input>
</el-form-item>
<el-form-item label="工厂">
<el-input v-model="form.propC3"></el-input>
</el-form-item>
<el-form-item label="特殊标记">
<el-input v-model="form.propC5"></el-input>
</el-form-item>
<el-form-item label="供应商">
<el-input v-model="form.propC6"></el-input>
</el-form-item>
<el-form-item v-if="form.item==null?false:form.item.isBatch" label="批次号" prop="propC1">
<el-input v-model="form.propC1"/>
</el-form-item>
<el-form-item v-if="form.item==null?false:form.item.isSerial" label="序列号" prop="propC2">
<el-input v-model="form.propC2"/>
</el-form-item>
<el-form-item v-if="form.item==null?false:form.item.isValidPeriod" label="生产日期" prop="propD1">
<el-date-picker
style="width: 270px;"
v-model="form.propD1"
type="date"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input type="textarea" :rows="2" v-model="form.remark" style="width: 270px;"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="asnDetailCel">取消</el-button>
<el-button :loading="crud.status.cu === 2" type="primary" @click="asnDetailConf">确认</el-button>
</div>
</el-dialog>
<!-- 明细整理-->
<el-dialog
title="明细整理"
:visible.sync="zlDialogVisible"
width="30%"
top="0.5vh"
:close-on-click-modal="false"
:before-close="handleZlClose">
<el-form :model="zlForm" :rules="zlRules" ref="zlForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="料号">
<el-input disabled v-model="zlForm.item.code"></el-input>
</el-form-item>
<el-form-item label="物料描述">
<el-input disabled v-model="zlForm.item.name"></el-input>
</el-form-item>
<el-form-item v-if="zlForm.item.isBatch" label="批次号" prop="propC1">
<el-input v-model="zlForm.propC1" disabled/>
</el-form-item>
<el-form-item v-if="zlForm.item.isSerial" label="序列号" prop="propC2">
<el-input v-model="zlForm.propC2" disabled/>
</el-form-item>
<el-form-item v-if="zlForm.item.isValidPeriod" label="生产日期" prop="propD1">
<el-date-picker
disabled
style="width: 370px"
v-model="zlForm.propD1"
type="date"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label="待收数量">
<el-input disabled v-model.number="this.zlForm.orderQty-this.zlForm.receivedQty"></el-input>
</el-form-item>
<el-form-item label="订单日期">
<el-date-picker
disabled
style="width: 370px"
v-model="zlForm.asn.orderDate"
type="date"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label="库区" prop="area">
<el-select v-model="zlForm.area"
value-key="id"
placeholder="请选择库区"
clearable
filterable
style="width: 100%"
@change="handleAreaChange"
>
<el-option
v-for="areas in areaOptions"
:key="areas.id"
:label="areas.name"
:value="areas"
/>
</el-select>
</el-form-item>
<el-form-item label="库位" v-if="showPointSelect" prop="point">
<el-select v-model="zlForm.point"
value-key="id"
@focus="getPointList(null,null,null)"
@change="loadStocksByPoint"
placeholder="请选择库位"
clearable
filterable
style="width: 100%"
>
<el-option
v-for="points in pointOptions"
:key="points.id"
:label="points.code"
:value="points"
v-if="points.type!='SHZC'"
/>
</el-select>
</el-form-item>
<el-form-item label="容器" v-if="showStockSelect" prop="stock">
<el-select v-model="zlForm.stock"
value-key="id"
@focus="queryStock()"
placeholder="请选择容器"
clearable
filterable
style="width: 100%"
:disabled="disableStockSelect"
>
<el-option
v-for="stocks in stockOptions"
:key="stocks.id"
:label="stocks.code"
:value="stocks"
/>
</el-select>
</el-form-item>
<el-form-item label="整理数量">
<el-input v-model.number="zlForm.zlQty" ></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="zhengliCel">取 消</el-button>
<el-button type="primary" @click="zhengli"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import crudAsnDetail, {add, rkAndQxButton} from '@/api/asnDetail'
import CRUD, {presenter, header, form, crud} from '@crud/crud'
import rrOperation from '@crud/RR.operation.vue'
import crudOperation from '@crud/CRUD.operation.vue'
import udOperation from '@crud/UD.operation.vue'
import pagination from '@crud/Pagination.vue'
import {queryItemAll} from '@/api/item'
import Search from '@/views/monitor/log/search.vue'
import AsnTask from '@/views/business-asn/asnDetail/viewAsnTask.vue'
import DateRangePicker from '@/components/DateRangePicker/index.vue'
import {getToken} from '@/utils/auth'
import {queryPointList} from '@/api/point'
import {getIdByAsn} from '@/api/asn'
import {getAreas, queryAreaList} from '@/api/area'
import {getBillTypes} from '@/api/billType'
import crudAsn from '@/api/asn'
import {queryBomAccountList} from '@/api/bomAccount'
import {mapGetters} from "vuex";
import {addAsnDetail} from "@/api/xppRecord";
import crudStock from "@/api/stock"
const defaultForm = {
id: null,
asn: null,
asnId: null,
item: null,
stock: null,
lineNo: null,
po: null,
status: 'OPEN',
point: null,
orderQty: 0,
receivedQty: 0,
moveQty: 0,
putQty: 0,
weight: 0,
volume: 0,
remark: null,
propC1: null,
propC2: null,
propC3: null,
propC4: null,
propC5: null,
propC6: null,
propD1: null,
propD2: null,
deptId: null,
sourceName: null,
sourceId: null,
createBy: null,
updateBy: null,
createTime: null,
updateTime: null
}
const asnQuery = {
asnId: 0
}
export default {
name: 'viewAsnDetail',
components: {
DateRangePicker,
AsnTask,
Search,
pagination,
crudOperation,
rrOperation,
udOperation
},
mixins: [presenter(), header(), form(defaultForm), crud()],
dicts: ['asn_status'],
cruds() {
return CRUD({
title: '收货数据',
url: 'api/asnDetail',
idField: 'id',
query: {asnId: this.asnFrom == null ? 0 : this.asnFrom.id},
sort: 'id,desc',
crudMethod: {...crudAsnDetail},
optShow: {
add: false,
edit: false,
del: false,
reset: false,
download: false
}
})
},
computed: {
...mapGetters([
'baseApi'
])
},
data() {
return {
fullscreen: false,
activeName: 'first',
dialogInsertAsn: false,
dialogInsertAsnDetail: false,
zlDialogVisible: false,
isResizing: false,
initialWidth: 0,
initialHeight: 0,
initialX: 0,
initialY: 0,
fileList: [],
headers: {'Authorization': getToken()},
permission: {
add: ['admin', 'asnDetail:add'],
edit: ['admin', 'asnDetail:edit'],
del: ['admin', 'asnDetail:del']
},
rules: {
area: [
{required: true, message: '出库库区不能为空', trigger: 'blur'}
],
orderDate: [{
required: true, message: '订单日期不能为空', trigger: 'blur'
}],
billType: [{
required: true, message: '单据类型不能为空', trigger: 'blur'
}]
},
asnDetailRules: {
item: [
{required: true, message: '物料不能为空', trigger: 'blur'}
],
orderQty: [
{required: true, message: '订单数量不能为空', trigger: 'blur'}
],
propC1: [
{required: true, message: '批次号不能为空', trigger: 'blur'}
],
propC2: [
{required: true, message: '序列号不能为空', trigger: 'blur'}
],
propD1: [
{required: true, message: '生成日期不能为空', trigger: 'blur'}
]
// point: [
// { required: true, message: '库位不能为空', trigger: 'blur' }
// ]
},
zlRules: {},
//下拉物料
itemOptions: [],
//下拉点位
pointOptions: [],
pointOption2: [],
//下拉库区
areaOptions: [],
//下拉类型
billTypeOptions: [],
stockOptions: [],
// 新增主表
asnFrom: {
id: null,
code: null,
area: null,
status: 'OPEN',
cusCode: null,
relatedBill1: null,
relatedBill2: null,
relatedBill3: null,
orderDate: null,
estimateDate: null,
receivedDate: null,
fromName: null,
fromAddress: null,
fromMan: null,
fromTel: null,
orderQuantity: 0,
receivedQuantity: 0,
putawayQuantity: 0,
vehicle: null,
billType: null,
dept: null,
description: null,
createBy: null,
updateBy: null,
createTime: null,
updateTime: null
},
detailId: 0,
//主id
asnId: 0,
asn: {},
asnDetailButton: {
button: 0,
id: 0,
oneRNumber: 0,
oneRPoint: {},
asnDetailData: {},
asnDetailDataS: []
},
dyrkTf: false,
logining1: false,
logining2: false,
logining3: false,
pointTF: false,
zlForm: {
item: {},
asn: {},
area: {},
point: {},
propC1: null,
propC2: null,
propD1: null,
orderQty: 0,
receivedQty: 0,
zlQty: 0
},
showStockSelect: false, // 控制容器选择框是否显示
showPointSelect: false, // 控制库位选择框是否显示
disableStockSelect: false, // 控制容器选择框是否只读
}
},
// beforeDestroy() { //页面关闭时清除定时器
// clearInterval(this.clearTimeSet);
// },
mounted() {
this.queryStock()
//查询公用的下拉数据
this.getOnceOptionAll()
//判断是否是新增主表和是查看明细新政附表
// setTimeout(() => {
// // 方法区
// this.asnTF()
// this.crud.toQuery()
// }, 100);
// this.asnTF()
//定时查询 1000 为1s
// this.setTime();
},
methods: {
addAsnDetail,
// 钩子在获取表格数据之前执行false 则代表不获取数据
[CRUD.HOOK.beforeRefresh]() {
this.asnTF()
return true
},
queryAsnDetail(ansId) {
this.form.asnId = ansId
this.asnFrom.id = ansId
console.log(this.asnFrom)
this.crud.query = {asnId: ansId}
this.crud.toQuery()
},
handleClick(tab, event) {
},
handleClose(done) {
// 清空表单数据
/* this.asnFrom.billType = null;
this.asnFrom.orderDate = null;
this.asnFrom.code = null;
this.asnFrom.orderQuantity=0;
this.asnFrom.description=null;*/
this.asnFrom={};
this.asnFrom.status = 'OPEN';
console.log(this.asnFrom.id)
// 清空表格数据
this.crud.data = [];
//还原默认值
this.fullscreen = false
// 执行关闭操作
done();
//刷新父组件
this.$parent.crud.toQuery();
},
queryStock() {
crudStock.queryKyStockList({}).then(res => {
this.stockOptions = res
})
},
setTime() { //设置定时器
// this.clearTimeSet=setInterval(() => {
// this.asnTF();
// }, 1000*20);
},
//获取当前时间
getNewDate() {
const date = new Date()
const year = date.getUTCFullYear()
const month = (date.getMonth() + 1).toString().padStart(2, '0')
const day = date.getDate().toString().padStart(2, '0')
//存当前时间
this.asnFrom.orderDate = `${year}-${month}-${day}`
}
,
//查询库位
getPointList(itObj, code, data) {
queryPointList({status: 'FREE'}).then(res => {
this.pointOptions = res
})
}
,
//过滤重复数据
filterListObj(listObj) {
let date = []
let onOff = true
listObj.filter((i) => {
onOff = true
date.filter((ii) => {
if (i.id === ii.id) {
onOff = false
}
})
if (onOff) {
date.push(i)
}
})
return date
}
,
//查询公用的下拉数据
getOnceOptionAll() {
//物料数据
queryItemAll({}).then(res => {
this.itemOptions = res
}).catch(e => {
this.$message({
showClose: true,
message: '物料加载失败',
type: 'error'
})
})
//获取库区数据
getAreas().then(res => {
this.areaOptions = res
})
//获取单据类型
getBillTypes({type: '100001', enabled: true}).then(res => {
this.billTypeOptions = res
})
}
,
//判断是否是新增主表和是查看明细新政附表
asnTF() {
if (this.asnId != 0) {
getIdByAsn(this.asnId).then(res => {
//存储主表的对象
this.asn = res
defaultForm.asn = res
//将主表数据在新增哪里展示
this.asnFrom = res
asnQuery.asnId = res.id
//查询点位数据
// if (res.area.besh){
// this.getPointList(res)
// }
})
} else {
this.getNewDate()
}
}
,
//新增主表数据
submitFromAsn(data) {
//校验
this.$refs['asnFromRes'].validate((valid) => {
if (valid) {
crudAsn.add(data).then(res => {
//存主表id
this.asnId = res.id
//加载数据
this.asnTF()
this.crud.notify('添加成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.queryAsnDetail(this.asnId)
this.crud.toQuery()
})
} else {
return false
}
})
}
,
rkAndQxButtonM(num) {
if (num === 1) { //整单入库
if (this.asnFrom.id <= 0 || (Object.keys(this.asnFrom).length === 0)) {
this.crud.notify('请先提交入库单', CRUD.NOTIFICATION_TYPE.ERROR)
}
this.logining1 = true
let data = this.asnDetailButton
data.button = num
data.id = this.asn.id
rkAndQxButton(data).then(res => {
this.$message.success(res)
this.logining1 = false
this.crud.toQuery()
}).catch(e => {
this.logining1 = false
})
} else if (num === 2) {
this.$refs['formdyrk'].validate((valid) => {
if (valid) {
this.logining2 = true
let data = this.asnDetailButton
data.button = num
data.id = this.detailId
rkAndQxButton(data).then(res => {
this.$message.success(res)
this.dyrkTf = false
this.logining2 = false
this.crud.toQuery()
}).catch(e => {
this.logining2 = false
})
} else {
// console.log('error submit!!');
return false
}
})
} else if (num === 3) {
this.logining3 = true
let data = this.asnDetailButton
data.button = num
data.id = this.asn.id
rkAndQxButton(data).then(res => {
this.$message.success(res)
this.logining3 = false
this.crud.toQuery()
}).catch(e => {
this.logining3 = false
})
}
}
,
//单一入库
dyrkM(data) {
this.detailId = data[0].id;
this.dyrkTf = !this.dyrkTf
console.log(data[0].item.code)
this.getPointList(null, data[0].item.code, this.asn)
this.asnDetailButton.asnDetailData = data[0]
}
,
//取消收货
qxshM(data) {
this.asnDetailButton.asnDetailDataS = data
this.rkAndQxButtonM(3)
}
,
handleSuccess(response, file, fileList) {
this.crud.notify('上传成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.$refs.upload.clearFiles()
this.crud.status.add = CRUD.STATUS.NORMAL
this.crud.resetForm()
this.crud.toQuery()
}
,
// 监听上传失败
handleError(e, file, fileList) {
const msg = JSON.parse(e.message)
this.$notify({
title: msg.message,
type: 'error',
duration: 2500
})
this.loading = false
},
insertAsnDetail() {
this.dialogInsertAsnDetail = true;
},
handleAsnDetailClose(done) {
this.form = {};
done();
},
asnDetailConf() {
if (this.asnFrom.id == null || this.asnFrom.id <= 0) {
this.crud.notify('请先提交入库单', CRUD.NOTIFICATION_TYPE.ERROR)
}
this.$refs['form'].validate((valid) => {
if (valid) {
crudAsn.getIdByAsn(this.asnFrom.id).then(res => {
this.form.asn = res;
crudAsnDetail.add(this.form).then(res => {
this.crud.notify('添加成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
this.dialogInsertAsnDetail = false;
})
})
} else {
return false
}
})
},
asnDetailCel() {
this.form = {};
this.dialogInsertAsnDetail = false;
},
toEditAsnDetail(data) {
this.form = data;
this.dialogInsertAsnDetail = true;
},
asnDetailZl(datas) {
this.zlForm = datas[0];
this.zlDialogVisible = true;
},
handleAreaChange() {
//选择库区使 控制容器、库位的显示隐藏的显示隐藏
this.showStockSelect = this.zlForm.area.id === 78 ? true : true;
this.showPointSelect = this.zlForm.area.id === 78 ? true : false;
this.disableStockSelect = this.zlForm.area.id === 78 ? true : false;
},
zhengli() {
if (this.zlForm.zlQty > this.zlForm.orderQty-this.zlForm.receivedQty ) {
return this.crud.notify('整理数量不能超过待收数量', CRUD.NOTIFICATION_TYPE.ERROR)
}
crudAsnDetail.zhengli(this.zlForm).then(res => {
if (res.status == 200) {
this.crud.notify(res.message, CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
this.zhengliCel()
this.zlDialogVisible = false;
} else {
this.crud.notify(res.message, CRUD.NOTIFICATION_TYPE.ERROR)
}
})
},
zhengliCel() {
this.zlForm.area = {};
this.zlForm.stock = {};
this.zlForm.point = {};
this.zlForm.shQty = 0;
this.showStockSelect = false;
this.showPointSelect = false;
this.disableStockSelect = false;
this.zlDialogVisible = false;
},
handleZlClose(done) {
done();
},
loadStocksByPoint() {
console.log(this.zlForm.point)
if (this.zlForm.point && this.zlForm.point.stock) {
this.stockOptions = [this.zlForm.point.stock]; // 清空原有选项并添加新的容器选项
this.zlForm.stock = this.zlForm.point.stock; // 设置当前选中的容器
} else {
this.stockOptions = []; // 如果没有容器信息,则清空选项
this.zlForm.stock = null; // 重置当前选中的容器
}
}
}
}
</script>
<style scoped>
.vue-draggable-resizable {
border: 1px solid #ccc;
background-color: white;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}
</style>