7 changed files with 783 additions and 6 deletions
-
22src/api/warehouse/crossSiteHuTransfer.js
-
2src/views/modules/haianWarehouse/automatedWarehouse/notifyDetailQuery54.vue
-
7src/views/modules/haianWarehouse/noOrderIssue/noOrderNotification54.vue
-
32src/views/modules/haianWarehouse/poOrder/searchPoIssureNotify54.vue
-
32src/views/modules/haianWarehouse/shipment/shipmentNotification54.vue
-
32src/views/modules/haianWarehouse/shopOrderIssueNotify/searchIssureNotify54.vue
-
662src/views/modules/warehouse/crossSiteHuTransfer.vue
@ -0,0 +1,22 @@ |
|||||
|
import { createAPI } from "@/utils/httpRequest.js"; |
||||
|
|
||||
|
/** |
||||
|
* 分页查询可跨小site调拨的在库未预留标签 - rqrq |
||||
|
* @param {Object} data 查询参数:site=登录大site,searchSite=可选小site,page/limit |
||||
|
* @returns {Promise} |
||||
|
*/ |
||||
|
export const searchHandlingUnitList = data => createAPI('/warehouse/crossSiteHuTransfer/searchHandlingUnitList', 'POST', data) |
||||
|
|
||||
|
/** |
||||
|
* 查询目标小site下拉,排除当前标签来源site - rqrq |
||||
|
* @param {Object} data site=登录大site,excludeSite=来源小site |
||||
|
* @returns {Promise} |
||||
|
*/ |
||||
|
export const listTargetSubSites = data => createAPI('/warehouse/crossSiteHuTransfer/listTargetSubSites', 'POST', data) |
||||
|
|
||||
|
/** |
||||
|
* 提交跨小site调拨:后台二次校验后写STO/STI并改标签site - rqrq |
||||
|
* @param {Object} data site/fromSite/toSite/createdBy/selectedItems |
||||
|
* @returns {Promise} |
||||
|
*/ |
||||
|
export const transferHuSite = data => createAPI('/warehouse/crossSiteHuTransfer/transferHuSite', 'POST', data) |
||||
@ -0,0 +1,662 @@ |
|||||
|
<template> |
||||
|
<div class="mod-config"> |
||||
|
<!-- 查询表单:必须至少填一个条件;登录大site由store传入,不作为筛选框 - rqrq --> |
||||
|
<el-form :inline="true" label-position="top"> |
||||
|
<el-form-item label="条码号"> |
||||
|
<el-input style="width: 120px;" v-model="queryHeaderData.unitId" placeholder="请输入条码号" @keyup.enter.native="getDataList()"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="物料编号"> |
||||
|
<el-input style="width: 120px;" v-model="queryHeaderData.partNo" placeholder="请输入物料编号" @keyup.enter.native="getDataList()"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="批次号"> |
||||
|
<el-input style="width: 120px;" v-model="queryHeaderData.batchNo" placeholder="请输入批次号" @keyup.enter.native="getDataList()"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="库位"> |
||||
|
<el-input style="width: 120px;" v-model="queryHeaderData.locationId" placeholder="请输入库位" @keyup.enter.native="getDataList()"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="仓库"> |
||||
|
<el-input style="width: 120px;" v-model="queryHeaderData.warehouseId" placeholder="请输入仓库" @keyup.enter.native="getDataList()"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="site"> |
||||
|
<el-input style="width: 120px;" v-model="queryHeaderData.searchSite" placeholder="请输入site" @keyup.enter.native="getDataList()"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item style="margin-top: 20px;"> |
||||
|
<el-button @click="getDataList()" type="primary" :disabled="dataListLoading">{{ $t('warehouse.common.search') }}</el-button> |
||||
|
<el-button @click="resetQuery()" type="default" :disabled="dataListLoading">{{ $t('warehouse.common.reset') }}</el-button> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
|
||||
|
<!-- 功能按钮区:整批只能来自同一个小site - rqrq --> |
||||
|
<el-form :inline="true" label-position="top" style="margin-top: 3px"> |
||||
|
<el-button @click="openTransferDialog()" type="primary" :disabled="dataListSelections.length === 0 || transferLoading">跨site调拨</el-button> |
||||
|
</el-form> |
||||
|
|
||||
|
<!-- 主表格 - rqrq --> |
||||
|
<el-table |
||||
|
:height="height" |
||||
|
:data="dataList" |
||||
|
border |
||||
|
v-loading="dataListLoading" |
||||
|
@selection-change="selectionChangeHandle" |
||||
|
style="width: 100%; margin-bottom: 15px;margin-top:3px"> |
||||
|
|
||||
|
<el-table-column |
||||
|
type="selection" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
width="50" |
||||
|
:selectable="checkSelectable"> |
||||
|
</el-table-column> |
||||
|
|
||||
|
<el-table-column |
||||
|
v-for="(item,index) in columnList" :key="index" |
||||
|
:sortable="item.columnSortable" |
||||
|
:prop="item.columnProp" |
||||
|
:header-align="item.headerAlign" |
||||
|
:show-overflow-tooltip="item.showOverflowTooltip" |
||||
|
:align="item.align" |
||||
|
:fixed="item.fixed==''?false:item.fixed" |
||||
|
:min-width="item.columnWidth" |
||||
|
:label="item.columnLabel"> |
||||
|
<template slot-scope="scope"> |
||||
|
<span v-if="item.columnProp === 'inStockFlag'"> |
||||
|
<span v-if="scope.row.inStockFlag === 'Y'">在库</span> |
||||
|
<span v-else-if="scope.row.inStockFlag === 'N'">已出库</span> |
||||
|
<span v-else-if="scope.row.inStockFlag === 'X'">未入库</span> |
||||
|
<span v-else>{{ scope.row.inStockFlag }}</span> |
||||
|
</span> |
||||
|
<span v-else-if="item.columnProp === 'reserveFlag'"> |
||||
|
{{ scope.row.reserveFlag === 'Y' ? '是' : '否' }} |
||||
|
</span> |
||||
|
<span v-else-if="item.columnProp === 'qty'"> |
||||
|
{{ formatQty(scope.row.qty) }} |
||||
|
</span> |
||||
|
<span v-else-if="item.columnProp === 'manufactureDate' || item.columnProp === 'expiredDate' || item.columnProp === 'receiveDate' || item.columnProp === 'createdDate' || item.columnProp === 'modifiedDate' || item.columnProp === 'lastPrintDate'"> |
||||
|
{{ formatDate(scope.row[item.columnProp]) }} |
||||
|
</span> |
||||
|
<span v-else>{{ scope.row[item.columnProp] }}</span> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
|
||||
|
<el-table-column label="操作" min-width="120" fixed="right" header-align="center" align="center"> |
||||
|
<template slot-scope="scope"> |
||||
|
<a @click="viewDetail(scope.row)" type="primary">查看详细</a> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
|
||||
|
<el-pagination |
||||
|
@size-change="sizeChangeHandle" |
||||
|
@current-change="currentChangeHandle" |
||||
|
:current-page="pageIndex" |
||||
|
:page-sizes="[30, 100, 500]" |
||||
|
:page-size="pageSize" |
||||
|
:total="totalPage" |
||||
|
layout="total, sizes, prev, pager, next, jumper"> |
||||
|
</el-pagination> |
||||
|
|
||||
|
<!-- 查看详细信息弹窗 - rqrq --> |
||||
|
<el-dialog |
||||
|
title="查看详细信息" |
||||
|
:visible.sync="dialogVisible" |
||||
|
:close-on-click-modal="false" |
||||
|
v-drag |
||||
|
width="900px"> |
||||
|
|
||||
|
<el-form :model="formData" ref="dataForm" label-position="top" style="margin-top: 1px; margin-left: 0px;"> |
||||
|
<el-row :gutter="20"> |
||||
|
<el-col :span="6"> |
||||
|
<el-form-item label="条码号"> |
||||
|
<el-input v-model="formData.unitId" readonly></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="6"> |
||||
|
<el-form-item label="site"> |
||||
|
<el-input v-model="formData.site" readonly></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="6"> |
||||
|
<el-form-item label="物料编号"> |
||||
|
<el-input v-model="formData.partNo" readonly></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="6"> |
||||
|
<el-form-item label="批次号"> |
||||
|
<el-input v-model="formData.batchNo" readonly></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
|
||||
|
<el-row :gutter="20"> |
||||
|
<el-col :span="6"> |
||||
|
<el-form-item label="数量"> |
||||
|
<el-input :value="formatQty(formData.qty)" readonly></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="6"> |
||||
|
<el-form-item label="库位"> |
||||
|
<el-input v-model="formData.locationId" readonly></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="6"> |
||||
|
<el-form-item label="仓库"> |
||||
|
<el-input v-model="formData.warehouseId" readonly></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="6"> |
||||
|
<el-form-item label="WDR"> |
||||
|
<el-input v-model="formData.wdr" readonly></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
|
||||
|
<el-row :gutter="20"> |
||||
|
<el-col :span="8"> |
||||
|
<el-form-item label="订单参考1"> |
||||
|
<el-input v-model="formData.orderRef1" readonly></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="8"> |
||||
|
<el-form-item label="订单参考2"> |
||||
|
<el-input v-model="formData.orderRef2" readonly></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="8"> |
||||
|
<el-form-item label="订单参考3"> |
||||
|
<el-input v-model="formData.orderRef3" readonly></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
|
||||
|
<el-row :gutter="20"> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label="供应商ID"> |
||||
|
<el-input v-model="formData.supplierId" readonly></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label="客户ID"> |
||||
|
<el-input v-model="formData.customerId" readonly></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
|
||||
|
<el-row :gutter="20"> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label="生产日期"> |
||||
|
<el-input v-model="formData.manufactureDate" readonly></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="12"> |
||||
|
<el-form-item label="失效日期"> |
||||
|
<el-input v-model="formData.expiredDate" readonly></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
|
||||
|
<el-row> |
||||
|
<el-col :span="24"> |
||||
|
<el-form-item label="备注"> |
||||
|
<el-input v-model="formData.remark" type="textarea" :rows="3" resize="none" readonly></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
</el-form> |
||||
|
|
||||
|
<div slot="footer" class="dialog-footer" style="margin-top: 52px"> |
||||
|
<el-button type="primary" @click="dialogVisible = false">{{ $t('warehouse.common.close') }}</el-button> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
|
||||
|
<!-- 跨site调拨弹窗:目标site来自当前登录大site的 site_sub,排除来源site - rqrq --> |
||||
|
<el-dialog |
||||
|
title="跨site调拨" |
||||
|
:visible.sync="transferDialogVisible" |
||||
|
:close-on-click-modal="false" |
||||
|
v-drag |
||||
|
append-to-body |
||||
|
width="420px"> |
||||
|
|
||||
|
<el-form label-position="top" style="margin-top: 1px; margin-left: 0px;"> |
||||
|
<el-form-item label="来源site"> |
||||
|
<el-input v-model="transferForm.fromSite" readonly></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="目标site"> |
||||
|
<el-select |
||||
|
v-model="transferForm.toSite" |
||||
|
placeholder="请选择目标site" |
||||
|
filterable |
||||
|
style="width: 100%;" |
||||
|
:disabled="transferLoading" |
||||
|
v-loading="targetSiteListLoading"> |
||||
|
<el-option |
||||
|
v-for="item in targetSubSiteList" |
||||
|
:key="item.subSiteId" |
||||
|
:label="item.subSiteId" |
||||
|
:value="item.subSiteId"> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
|
||||
|
<div slot="footer" class="dialog-footer"> |
||||
|
<el-button type="primary" @click="confirmTransfer()" :disabled="transferLoading || targetSiteListLoading"> |
||||
|
{{ transferLoading ? '提交中...' : '确认调拨' }} |
||||
|
</el-button> |
||||
|
<el-button @click="closeTransferDialog()" :disabled="transferLoading">{{ $t('warehouse.common.cancel') }}</el-button> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { searchHandlingUnitList, listTargetSubSites, transferHuSite } from '@/api/warehouse/crossSiteHuTransfer' |
||||
|
|
||||
|
export default { |
||||
|
data() { |
||||
|
return { |
||||
|
// 页面状态 - rqrq |
||||
|
height: 500, |
||||
|
dataListLoading: false, |
||||
|
dialogVisible: false, |
||||
|
|
||||
|
// 调拨弹窗状态 - rqrq |
||||
|
transferDialogVisible: false, |
||||
|
transferLoading: false, |
||||
|
targetSiteListLoading: false, |
||||
|
targetSubSiteList: [], |
||||
|
transferForm: { |
||||
|
fromSite: '', |
||||
|
toSite: '' |
||||
|
}, |
||||
|
|
||||
|
dataList: [], |
||||
|
dataListSelections: [], |
||||
|
|
||||
|
// site=登录大site;searchSite=可选小site过滤 - rqrq |
||||
|
queryHeaderData: { |
||||
|
site: this.$store.state.user.site, |
||||
|
searchSite: '', |
||||
|
unitId: '', |
||||
|
partNo: '', |
||||
|
batchNo: '', |
||||
|
locationId: '', |
||||
|
warehouseId: '' |
||||
|
}, |
||||
|
|
||||
|
formData: {}, |
||||
|
|
||||
|
pageIndex: 1, |
||||
|
pageSize: 30, |
||||
|
totalPage: 0, |
||||
|
|
||||
|
columnList: [ |
||||
|
{ |
||||
|
columnProp: "unitId", |
||||
|
headerAlign: "center", |
||||
|
align: "center", |
||||
|
columnLabel: "条码号", |
||||
|
columnWidth: 150, |
||||
|
columnSortable: false, |
||||
|
showOverflowTooltip: true, |
||||
|
fixed: "" |
||||
|
}, |
||||
|
{ |
||||
|
columnProp: "site", |
||||
|
headerAlign: "center", |
||||
|
align: "center", |
||||
|
columnLabel: "site", |
||||
|
columnWidth: 80, |
||||
|
columnSortable: false, |
||||
|
showOverflowTooltip: false, |
||||
|
fixed: "" |
||||
|
}, |
||||
|
{ |
||||
|
columnProp: "partNo", |
||||
|
headerAlign: "center", |
||||
|
align: "center", |
||||
|
columnLabel: "物料编号", |
||||
|
columnWidth: 100, |
||||
|
columnSortable: false, |
||||
|
showOverflowTooltip: true, |
||||
|
fixed: "" |
||||
|
}, |
||||
|
{ |
||||
|
columnProp: "batchNo", |
||||
|
headerAlign: "center", |
||||
|
align: "center", |
||||
|
columnLabel: "批次号", |
||||
|
columnWidth: 140, |
||||
|
columnSortable: false, |
||||
|
showOverflowTooltip: true, |
||||
|
fixed: "" |
||||
|
}, |
||||
|
{ |
||||
|
columnProp: "qty", |
||||
|
headerAlign: "center", |
||||
|
align: "right", |
||||
|
columnLabel: "数量", |
||||
|
columnWidth: 70, |
||||
|
columnSortable: false, |
||||
|
showOverflowTooltip: false, |
||||
|
fixed: "" |
||||
|
}, |
||||
|
{ |
||||
|
columnProp: "locationId", |
||||
|
headerAlign: "center", |
||||
|
align: "center", |
||||
|
columnLabel: "库位", |
||||
|
columnWidth: 90, |
||||
|
columnSortable: false, |
||||
|
showOverflowTooltip: true, |
||||
|
fixed: "" |
||||
|
}, |
||||
|
{ |
||||
|
columnProp: "warehouseId", |
||||
|
headerAlign: "center", |
||||
|
align: "center", |
||||
|
columnLabel: "仓库", |
||||
|
columnWidth: 60, |
||||
|
columnSortable: false, |
||||
|
showOverflowTooltip: false, |
||||
|
fixed: "" |
||||
|
}, |
||||
|
{ |
||||
|
columnProp: "wdr", |
||||
|
headerAlign: "center", |
||||
|
align: "center", |
||||
|
columnLabel: "WDR", |
||||
|
columnWidth: 100, |
||||
|
columnSortable: false, |
||||
|
showOverflowTooltip: true, |
||||
|
fixed: "" |
||||
|
}, |
||||
|
{ |
||||
|
columnProp: "availabilityControlId", |
||||
|
headerAlign: "center", |
||||
|
align: "center", |
||||
|
columnLabel: "Availability Control Id", |
||||
|
columnWidth: 150, |
||||
|
columnSortable: false, |
||||
|
showOverflowTooltip: true, |
||||
|
fixed: "" |
||||
|
}, |
||||
|
{ |
||||
|
columnProp: "expiredDate", |
||||
|
headerAlign: "center", |
||||
|
align: "center", |
||||
|
columnLabel: "失效日期", |
||||
|
columnWidth: 100, |
||||
|
columnSortable: false, |
||||
|
showOverflowTooltip: false, |
||||
|
fixed: "" |
||||
|
}, |
||||
|
{ |
||||
|
columnProp: "engChgLevel", |
||||
|
headerAlign: "center", |
||||
|
align: "center", |
||||
|
columnLabel: "EngChgLevel", |
||||
|
columnWidth: 90, |
||||
|
columnSortable: false, |
||||
|
showOverflowTooltip: false, |
||||
|
fixed: "" |
||||
|
}, |
||||
|
{ |
||||
|
columnProp: "manufactureDate", |
||||
|
headerAlign: "center", |
||||
|
align: "center", |
||||
|
columnLabel: "生产日期", |
||||
|
columnWidth: 100, |
||||
|
columnSortable: false, |
||||
|
showOverflowTooltip: false, |
||||
|
fixed: "" |
||||
|
}, |
||||
|
{ |
||||
|
columnProp: "partDesc", |
||||
|
headerAlign: "center", |
||||
|
align: "center", |
||||
|
columnLabel: "物料描述", |
||||
|
columnWidth: 200, |
||||
|
columnSortable: false, |
||||
|
showOverflowTooltip: true, |
||||
|
fixed: "" |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.$nextTick(() => { |
||||
|
this.height = window.innerHeight - 220 |
||||
|
}) |
||||
|
}, |
||||
|
methods: { |
||||
|
// 至少填一个查询条件才允许查询,避免把大site下全部在库标签拉出来 - rqrq |
||||
|
hasAnySearchCondition() { |
||||
|
const query = this.queryHeaderData |
||||
|
return !!(query.unitId || query.partNo || query.batchNo || query.locationId || query.warehouseId || query.searchSite) |
||||
|
}, |
||||
|
|
||||
|
// 查询列表:每次显式带登录大site;无条件直接提示不发请求 - rqrq |
||||
|
getDataList() { |
||||
|
this.queryHeaderData.site = this.$store.state.user.site |
||||
|
if (!this.queryHeaderData.site) { |
||||
|
this.$alert('登录工厂site不能为空', this.$t('warehouse.common.error'), { confirmButtonText: this.$t('warehouse.common.confirm') }) |
||||
|
return |
||||
|
} |
||||
|
if (!this.hasAnySearchCondition()) { |
||||
|
this.$message.warning('请至少填写一个查询条件') |
||||
|
return |
||||
|
} |
||||
|
this.dataListLoading = true |
||||
|
const params = { |
||||
|
...this.queryHeaderData, |
||||
|
page: this.pageIndex, |
||||
|
limit: this.pageSize |
||||
|
} |
||||
|
searchHandlingUnitList(params).then(({ data }) => { |
||||
|
if (data && data.code === 0) { |
||||
|
this.dataList = data.page.list || [] |
||||
|
this.pageIndex = data.page.currPage |
||||
|
this.totalPage = data.page.totalCount |
||||
|
} else { |
||||
|
this.dataList = [] |
||||
|
this.totalPage = 0 |
||||
|
this.$alert(data.msg || this.$t('warehouse.message.queryFailed'), this.$t('warehouse.common.error'), { confirmButtonText: this.$t('warehouse.common.confirm') }) |
||||
|
} |
||||
|
}).catch(() => { |
||||
|
this.dataList = [] |
||||
|
this.totalPage = 0 |
||||
|
this.$message.error(this.$t('warehouse.message.queryFailed')) |
||||
|
}).finally(() => { |
||||
|
this.dataListLoading = false |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
// 重置查询条件,不自动查询,避免无条件触发后端校验 - rqrq |
||||
|
resetQuery() { |
||||
|
this.queryHeaderData = { |
||||
|
site: this.$store.state.user.site, |
||||
|
searchSite: '', |
||||
|
unitId: '', |
||||
|
partNo: '', |
||||
|
batchNo: '', |
||||
|
locationId: '', |
||||
|
warehouseId: '' |
||||
|
} |
||||
|
this.pageIndex = 1 |
||||
|
this.dataList = [] |
||||
|
this.totalPage = 0 |
||||
|
this.dataListSelections = [] |
||||
|
}, |
||||
|
|
||||
|
sizeChangeHandle(val) { |
||||
|
this.pageSize = val |
||||
|
this.pageIndex = 1 |
||||
|
this.getDataList() |
||||
|
}, |
||||
|
|
||||
|
currentChangeHandle(val) { |
||||
|
this.pageIndex = val |
||||
|
this.getDataList() |
||||
|
}, |
||||
|
|
||||
|
selectionChangeHandle(val) { |
||||
|
this.dataListSelections = val |
||||
|
}, |
||||
|
|
||||
|
viewDetail(row) { |
||||
|
this.formData = JSON.parse(JSON.stringify(row)) |
||||
|
this.dialogVisible = true |
||||
|
}, |
||||
|
|
||||
|
formatDate(dateStr) { |
||||
|
if (!dateStr) return '' |
||||
|
const date = new Date(dateStr) |
||||
|
const year = date.getFullYear() |
||||
|
const month = String(date.getMonth() + 1).padStart(2, '0') |
||||
|
const day = String(date.getDate()).padStart(2, '0') |
||||
|
const hours = String(date.getHours()).padStart(2, '0') |
||||
|
const minutes = String(date.getMinutes()).padStart(2, '0') |
||||
|
const seconds = String(date.getSeconds()).padStart(2, '0') |
||||
|
if (hours === '00' && minutes === '00' && seconds === '00') { |
||||
|
return `${year}-${month}-${day}` |
||||
|
} |
||||
|
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}` |
||||
|
}, |
||||
|
|
||||
|
// 数量去尾零,空值按0展示 - rqrq |
||||
|
formatQty(val) { |
||||
|
if (val === null || val === undefined || val === '') { |
||||
|
return 0 |
||||
|
} |
||||
|
const num = Number(val) |
||||
|
if (isNaN(num)) { |
||||
|
return val |
||||
|
} |
||||
|
return parseFloat(String(num)) |
||||
|
}, |
||||
|
|
||||
|
// 无物料编号的行不允许勾选,避免空物料写出入库明细 - rqrq |
||||
|
checkSelectable(row) { |
||||
|
return !!(row.partNo) |
||||
|
}, |
||||
|
|
||||
|
// 打开调拨弹窗:整批必须同一小site,再按登录大site拉目标下拉 - rqrq |
||||
|
openTransferDialog() { |
||||
|
if (this.dataListSelections.length === 0) { |
||||
|
this.$message.warning('请先选择要调拨的标签') |
||||
|
return |
||||
|
} |
||||
|
const siteSet = [...new Set(this.dataListSelections.map(item => item.site).filter(item => !!item))] |
||||
|
if (siteSet.length === 0) { |
||||
|
this.$alert('选中标签缺少site,无法调拨', this.$t('warehouse.common.error'), { confirmButtonText: this.$t('warehouse.common.confirm') }) |
||||
|
return |
||||
|
} |
||||
|
if (siteSet.length > 1) { |
||||
|
this.$alert('选中标签来自多个site,不允许一起调拨:' + siteSet.join(', '), this.$t('warehouse.common.error'), { confirmButtonText: this.$t('warehouse.common.confirm') }) |
||||
|
return |
||||
|
} |
||||
|
this.transferForm = { |
||||
|
fromSite: siteSet[0], |
||||
|
toSite: '' |
||||
|
} |
||||
|
this.transferDialogVisible = true |
||||
|
this.loadTargetSubSites() |
||||
|
}, |
||||
|
|
||||
|
// 按登录大site查 site_sub,排除当前来源site - rqrq |
||||
|
loadTargetSubSites() { |
||||
|
this.targetSiteListLoading = true |
||||
|
this.targetSubSiteList = [] |
||||
|
const params = { |
||||
|
site: this.$store.state.user.site, |
||||
|
excludeSite: this.transferForm.fromSite |
||||
|
} |
||||
|
listTargetSubSites(params).then(({ data }) => { |
||||
|
if (data && data.code === 0) { |
||||
|
this.targetSubSiteList = data.rows || [] |
||||
|
if (this.targetSubSiteList.length === 0) { |
||||
|
this.$alert('当前工厂没有可调拨的目标site', this.$t('warehouse.common.tip'), { confirmButtonText: this.$t('warehouse.common.confirm') }) |
||||
|
} |
||||
|
} else { |
||||
|
this.$alert(data.msg || this.$t('warehouse.message.queryFailed'), this.$t('warehouse.common.error'), { confirmButtonText: this.$t('warehouse.common.confirm') }) |
||||
|
} |
||||
|
}).catch(() => { |
||||
|
this.$message.error(this.$t('warehouse.message.queryFailed')) |
||||
|
}).finally(() => { |
||||
|
this.targetSiteListLoading = false |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
closeTransferDialog() { |
||||
|
this.transferDialogVisible = false |
||||
|
this.transferForm = { |
||||
|
fromSite: '', |
||||
|
toSite: '' |
||||
|
} |
||||
|
this.targetSubSiteList = [] |
||||
|
}, |
||||
|
|
||||
|
// 确认调拨:二次确认后提交,成功刷新列表 - rqrq |
||||
|
confirmTransfer() { |
||||
|
if (!this.transferForm.toSite) { |
||||
|
this.$message.warning('请选择目标site') |
||||
|
return |
||||
|
} |
||||
|
const selectedCount = this.dataListSelections.length |
||||
|
const confirmMsg = `确认将选中的 ${selectedCount} 个标签从 ${this.transferForm.fromSite} 调拨到 ${this.transferForm.toSite} 吗?` |
||||
|
this.$confirm(confirmMsg, '确认调拨', { |
||||
|
confirmButtonText: this.$t('warehouse.common.confirm'), |
||||
|
cancelButtonText: this.$t('warehouse.common.cancel'), |
||||
|
type: 'warning' |
||||
|
}).then(() => { |
||||
|
this.doTransfer() |
||||
|
}).catch(() => {}) |
||||
|
}, |
||||
|
|
||||
|
doTransfer() { |
||||
|
this.transferLoading = true |
||||
|
const requestData = { |
||||
|
site: this.$store.state.user.site, |
||||
|
fromSite: this.transferForm.fromSite, |
||||
|
toSite: this.transferForm.toSite, |
||||
|
createdBy: this.$store.state.user.name, |
||||
|
selectedItems: this.dataListSelections |
||||
|
} |
||||
|
transferHuSite(requestData).then(({ data }) => { |
||||
|
if (data && data.code === 0) { |
||||
|
const result = data.row || {} |
||||
|
const htmlContent = `<div style="line-height: 1.8;">` |
||||
|
+ `<p><b>成功数量:</b>${result.successCount || 0}</p>` |
||||
|
+ `<p><b>出库事务号:</b>${result.stoTransNo || ''}</p>` |
||||
|
+ `<p><b>入库事务号:</b>${result.stiTransNo || ''}</p>` |
||||
|
+ `<p>${result.message || ''}</p>` |
||||
|
+ `</div>` |
||||
|
this.$alert(htmlContent, '跨site调拨结果', { |
||||
|
dangerouslyUseHTMLString: true, |
||||
|
confirmButtonText: this.$t('warehouse.common.confirm'), |
||||
|
type: 'success', |
||||
|
callback: () => { |
||||
|
this.closeTransferDialog() |
||||
|
this.getDataList() |
||||
|
} |
||||
|
}) |
||||
|
} else { |
||||
|
this.$alert(data.msg || '跨site调拨失败', this.$t('warehouse.common.error'), { confirmButtonText: this.$t('warehouse.common.confirm') }) |
||||
|
} |
||||
|
}).catch(() => { |
||||
|
this.$message.error('跨site调拨失败') |
||||
|
}).finally(() => { |
||||
|
this.transferLoading = false |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped> |
||||
|
.el-button:disabled { |
||||
|
opacity: 0.6; |
||||
|
cursor: not-allowed; |
||||
|
} |
||||
|
</style> |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue