14 changed files with 1086 additions and 1845 deletions
@ -0,0 +1,451 @@ |
|||||
|
<template> |
||||
|
<div class="page-box" v-loading="Loading.appMainLoading"> |
||||
|
<tablePagination |
||||
|
:currenButtonData="currenButtonData" |
||||
|
:tableData="tableData" |
||||
|
:tableLoading="Loading.tableLoading" |
||||
|
:tableColumns="tableColumns" |
||||
|
@rowDrop="rowDrop" |
||||
|
:totalCount="totalCount" |
||||
|
:multipleSelection="multipleSelection" |
||||
|
:MaxResultCount="PageListParams.MaxResultCount" |
||||
|
@topbutton="topbutton" |
||||
|
@inlineDialog="inlineDialog" |
||||
|
@sortChange="sortChange" |
||||
|
@alertoldSkipCount="alertoldSkipCount" |
||||
|
@alterResultCount="alterResultCount" |
||||
|
@handleSelectionChange="handleSelectionChange" |
||||
|
:currentPageProps="oldSkipCount" |
||||
|
:quicklySearchOption="quicklySearchOption" |
||||
|
@quicklySearchClick="quicklySearchClick" |
||||
|
@quicklySearchClear="quicklySearchClear" |
||||
|
:primarySearchOption="primarySearchOption" |
||||
|
@overallSearchFormClick="overallSearchFormClick" |
||||
|
:httpOverallSearchData="httpOverallSearchData" |
||||
|
> |
||||
|
</tablePagination> |
||||
|
<curren-Drawer |
||||
|
:title="tableColumns" |
||||
|
:DrawerLoading="Loading.DrawerLoading" |
||||
|
:drawer="displayDialog.detailsDialog" |
||||
|
:propsData="propsData" |
||||
|
:Butttondata="DrawerButtonData" |
||||
|
:tabsDesTions="tabsDesTions" |
||||
|
@drawerShut="(val) => (displayDialog.detailsDialog = val)" |
||||
|
@drawerbutton="drawerbuttonHandle" |
||||
|
@handleCommand="drawerHandle" |
||||
|
@close-value="closeValue" |
||||
|
:tableColumns="detailsTableColumns" |
||||
|
:totalCount="totalCountDetails" |
||||
|
:MaxResultCount="MaxResultCountDetails" |
||||
|
@alterResultCountDetails="alterResultCountDetails" |
||||
|
@alertoldSkipCountDetails="alertoldSkipCountDetails" |
||||
|
:dropdownTabsData="[]" |
||||
|
:firstTabs="firstTabs" |
||||
|
></curren-Drawer> |
||||
|
<!--编辑--> |
||||
|
<StepsFormTree |
||||
|
ref="StepsFormTree_Ref" |
||||
|
:propsData="propsData" |
||||
|
:formTitle="formTitle" |
||||
|
:displayDialog="displayDialog" |
||||
|
:CreateFormData="CreateFormData" |
||||
|
:CreateForm="CreateForm" |
||||
|
:Rules="editRules.cerateRule" |
||||
|
:Options="editOptions" |
||||
|
:detailsTableColumns="AddDetailsTableColumns" |
||||
|
:childTableData="childTableData" |
||||
|
@push="FormTreePush" |
||||
|
@clear="FormTreeClear" |
||||
|
@close="stepsCloseHandle(arguments)" |
||||
|
:isShowDeleteButton="false" |
||||
|
:addClickButton="false" |
||||
|
:successHandle="successHandle" |
||||
|
></StepsFormTree> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import { |
||||
|
getDetailed, |
||||
|
getPageList, |
||||
|
getBomByComponentTree, |
||||
|
productRecycleNoteExport, |
||||
|
productionRecycleJobHandle, |
||||
|
// productionRecycleJobComplete |
||||
|
} from "@/api/wms-api"; |
||||
|
import { tableMixins } from "@/mixins/TableMixins" |
||||
|
import { LoadingMixins } from "@/mixins/LoadingMixins" |
||||
|
import { drawerMixins } from "@/mixins/drawerMixins" |
||||
|
import { TableHeaderMixins } from "@/mixins/TableHeaderMixins" |
||||
|
import { mixins } from "@/mixins/mixins" |
||||
|
import { filterSelectMixins } from '@/mixins/filter-Select' |
||||
|
import store from '@/store' |
||||
|
import StepsFormTree from './StepsFormTree' |
||||
|
export default { |
||||
|
name: "customerDismantleJob", |
||||
|
mixins: [ |
||||
|
tableMixins, |
||||
|
LoadingMixins, |
||||
|
drawerMixins, |
||||
|
TableHeaderMixins, |
||||
|
mixins, |
||||
|
filterSelectMixins, |
||||
|
], |
||||
|
computed: { |
||||
|
hideButton: function () { |
||||
|
return function (val) { |
||||
|
let data = true |
||||
|
val.forEach(key => { |
||||
|
if (this.propsData.jobStatus == key) { |
||||
|
data = false |
||||
|
} |
||||
|
}) |
||||
|
return data |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
components:{StepsFormTree}, |
||||
|
data () { |
||||
|
return { |
||||
|
URL: 'wms/store/production-recycle-job', |
||||
|
//常用按钮数据 |
||||
|
currenButtonData: [ |
||||
|
// this.defaultAddBtn(),//新增 |
||||
|
//导出 |
||||
|
this.defaultExportBtn(), |
||||
|
this.defaultFieldSettingBtn(),//字段设置 |
||||
|
this.defaultFreshBtn(),//刷新 |
||||
|
this.defaultFilterBtn(),//筛选 |
||||
|
], |
||||
|
DrawerButtonData: [ |
||||
|
{ |
||||
|
type: 'warning', |
||||
|
label: '执行', |
||||
|
name: "handle", |
||||
|
// 待处理+执行中+部分完成 |
||||
|
hide: () => { return this.hideButton([1,2,4]) }, |
||||
|
size: 'mini' |
||||
|
}, |
||||
|
// { |
||||
|
// type: 'success', |
||||
|
// label: '完成', |
||||
|
// name: "complete", |
||||
|
// // todo:什么状态可以执行,还是数量判断 |
||||
|
// hide: () => { return this.hideButton([1]) }, |
||||
|
// size: 'mini' |
||||
|
// }, |
||||
|
], |
||||
|
//新增 |
||||
|
CreateFormData: { |
||||
|
qty:null, |
||||
|
details:[] |
||||
|
}, |
||||
|
CreateForm: [ |
||||
|
{ type: "inputNumber", label: "数量", prop: "qty",colSpan: 12,min:1}, |
||||
|
], |
||||
|
editRules: { |
||||
|
cerateRule: { |
||||
|
qty: [ |
||||
|
{ required: true, trigger: "blur", message: "不可为空" }, |
||||
|
{ |
||||
|
type: "number", |
||||
|
trigger: ["blur"], |
||||
|
validator: (rule, value, callback) => { |
||||
|
//数量控制 |
||||
|
let _InventoryQty = Number(this.propsData.details[0].qty) - Number(this.propsData.details[0].executedQty) |
||||
|
if(_InventoryQty < value){ |
||||
|
return callback(new Error(`数量不能大于未完成数量${_InventoryQty}`)) |
||||
|
}else{ |
||||
|
callback() |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
], |
||||
|
}, |
||||
|
}, |
||||
|
AddDetailsTableColumns: [ |
||||
|
{ label: "子物料代码", prop: "itemCode",width:"auto",align:'left' }, |
||||
|
{ label: "数量", prop: 'qty',width:"auto" }, |
||||
|
{ type: "filterSelect", label: "目标库位", prop: "locationCode", optionsLabel: "name", optionsValue: "code", |
||||
|
focus: (type,val) => { return this.getFilterList(type, val, "basedata/Location",this.isFilter("type", "5"))}, |
||||
|
// searchButton: (val) => { this.showSerarchPage(val, 'basedata/Location', 'InventoryBalance', '库位选择', this.CreateFormData) }, |
||||
|
width:"auto", |
||||
|
}, |
||||
|
], |
||||
|
childTableData:[{ |
||||
|
itemCode:undefined, |
||||
|
qty:undefined, |
||||
|
locationCode:undefined, |
||||
|
locationArea:undefined, |
||||
|
locationErpCode:undefined, |
||||
|
locationGroup:undefined, |
||||
|
warehouseCode:undefined, |
||||
|
}], |
||||
|
successHandle:[ |
||||
|
{ |
||||
|
label:"下载报告", |
||||
|
click:(()=>{ |
||||
|
this.downloadReport() |
||||
|
}) |
||||
|
} |
||||
|
], |
||||
|
bomList:null, |
||||
|
submitRes:null,//提交后结果 |
||||
|
}; |
||||
|
}, |
||||
|
mounted () { |
||||
|
this.paging(); |
||||
|
}, |
||||
|
methods: { |
||||
|
FormTreePush(item,props,val,scope){ |
||||
|
console.log(props) |
||||
|
if(props.prop == "locationCode"){ |
||||
|
scope.row.locationCode = val |
||||
|
scope.row.locationArea = item.areaCode |
||||
|
scope.row.locationErpCode = item.erpLocationCode |
||||
|
scope.row.locationGroup = item.locationGroupCode |
||||
|
scope.row.warehouseCode = item.warehouseCode |
||||
|
} |
||||
|
}, |
||||
|
FormTreeClear(item,scope){ |
||||
|
console.log(item) |
||||
|
if(item.prop == "locationCode"){ |
||||
|
scope.row.locationCode = null |
||||
|
} |
||||
|
}, |
||||
|
// bom递归生成树状节点 |
||||
|
buildTree(list){ |
||||
|
let pidStr = 'parentCode'; |
||||
|
let idStr = 'itemCode'; |
||||
|
let childrenStr = 'children'; |
||||
|
|
||||
|
let listOjb = {}; // 用来储存{key: obj}格式的对象 |
||||
|
let treeList = []; // 用来储存最终树形结构数据的数组 |
||||
|
|
||||
|
// 将数据变换成{key: obj}格式,方便下面处理数据 |
||||
|
for (let i = 0; i < list.length; i++) { |
||||
|
listOjb[list[i][idStr]] = list[i] |
||||
|
} |
||||
|
|
||||
|
for (let j = 0; j < list.length; j++) { |
||||
|
// 判断父级是否存在 |
||||
|
let haveParent = listOjb[list[j][pidStr]] |
||||
|
if (haveParent) { |
||||
|
// 如果有没有父级children字段,就创建一个children字段 |
||||
|
!haveParent[childrenStr] && (haveParent[childrenStr] = []) |
||||
|
// 在父级里插入子项 |
||||
|
haveParent[childrenStr].push(list[j]) |
||||
|
} else { |
||||
|
// 如果没有父级直接插入到最外层 |
||||
|
treeList.push(list[j]) |
||||
|
} |
||||
|
} |
||||
|
return treeList |
||||
|
}, |
||||
|
|
||||
|
drawerbuttonHandle(val){ |
||||
|
// 执行 |
||||
|
if (val == "handle") { |
||||
|
this.formTitle = this.$route.meta.title + "执行"; |
||||
|
this.CreateFormData = JSON.parse(JSON.stringify(this.propsData)); |
||||
|
// 默认值 |
||||
|
let _qty = Number(this.propsData.details[0].qty) - Number(this.propsData.details[0].executedQty) |
||||
|
this.$set(this.CreateFormData, "qty", _qty) |
||||
|
this.childTableData = [{ |
||||
|
itemCode:undefined, |
||||
|
qty:undefined, |
||||
|
locationCode:undefined, |
||||
|
locationArea:undefined, |
||||
|
locationErpCode:undefined, |
||||
|
locationGroup:undefined, |
||||
|
warehouseCode:undefined, |
||||
|
}] |
||||
|
this.theEvent = "edit" |
||||
|
this.displayDialog.newDialog = true |
||||
|
} |
||||
|
// 完成 |
||||
|
// else if(val == "complete"){ |
||||
|
// // todo:强制完成,更改wsm-api中productionRecycleJobComplete的值 |
||||
|
// this.Loading.appMainLoading = true |
||||
|
// productionRecycleJobComplete(this.propsData.id).then(res => { |
||||
|
// this.Loading.appMainLoading = false |
||||
|
// this.paging() |
||||
|
// this.displayDialog.detailsDialog = false |
||||
|
// }).catch(err => { |
||||
|
// this.Loading.appMainLoading = false |
||||
|
// }) |
||||
|
// } |
||||
|
else{ |
||||
|
this.drawerbutton(val) |
||||
|
} |
||||
|
}, |
||||
|
//过滤查询条件 |
||||
|
isFilter (val, data) { |
||||
|
let filter = [ |
||||
|
{ |
||||
|
logic: "And", |
||||
|
column: val, |
||||
|
action: "==", |
||||
|
value: data |
||||
|
} |
||||
|
] |
||||
|
return filter |
||||
|
}, |
||||
|
// 成功后按钮操作 |
||||
|
downloadReport(){ |
||||
|
// 下载 |
||||
|
let _data = { |
||||
|
maxResultCount: 20, |
||||
|
skipCount: 0, |
||||
|
sorting: "", |
||||
|
route: "wms/store/product-recycle-note/export-product-recycle", |
||||
|
function: "客户退拆记录",//导出文件名称 |
||||
|
condition: { |
||||
|
filters: [ |
||||
|
{ |
||||
|
logic: "And", |
||||
|
column: "number", |
||||
|
action: "==", |
||||
|
value: this.submitRes.remark |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
} |
||||
|
this.Loading.appMainLoading = true |
||||
|
productRecycleNoteExport(_data) |
||||
|
.then(res=>{ |
||||
|
this.Loading.appMainLoading = false |
||||
|
this.blob(res,'客户退拆记录报告')//导出文件名称 |
||||
|
}) |
||||
|
.catch(err=>{ |
||||
|
this.Loading.appMainLoading = false |
||||
|
}) |
||||
|
}, |
||||
|
// 检查递归 |
||||
|
checkSelectDG(list){ |
||||
|
for (let i = 0; i < list.length; i++) { |
||||
|
} |
||||
|
}, |
||||
|
// 提交前检查所选数据,同级选择等情况处理 |
||||
|
checkSelectData(){ |
||||
|
// todo:检查所选数据,同级选择等情况处理 |
||||
|
let _isSelectData = this.$refs.StepsFormTree_Ref.selectData |
||||
|
let _select_ids = [] |
||||
|
_isSelectData.forEach(item=>{_select_ids.push(item.id)}) |
||||
|
if(!_isSelectData || _isSelectData.length <= 0){ |
||||
|
this.$warningMsg("请选择数据") |
||||
|
return |
||||
|
} |
||||
|
// this.bomList.forEach(item=>{ |
||||
|
// if() |
||||
|
// }) |
||||
|
// this.checkSelectDG(_isSelectData) |
||||
|
console.log(111,_isSelectData) |
||||
|
console.log(222,this.bomList) |
||||
|
console.log(333,_select_ids) |
||||
|
return |
||||
|
this.submitHttp() |
||||
|
}, |
||||
|
// 提交请求 |
||||
|
submitHttp(){ |
||||
|
this.bomList.forEach((item,index)=>{ |
||||
|
let _item = { |
||||
|
itemCode: item.component, |
||||
|
qty: _tableList[index].qty, |
||||
|
locationCode: _tableList[index].rawLocationCode, |
||||
|
locationArea: _tableList[index].rawLocationArea, |
||||
|
locationGroup: _tableList[index].rawLocationGroup, |
||||
|
locationErpCode: _tableList[index].rawLocationErpCode, |
||||
|
warehouseCode: _tableList[index].warehouseCode, |
||||
|
} |
||||
|
_data.details[0].materialDetails.push(_item) |
||||
|
}) |
||||
|
this.Loading.appMainLoading = true |
||||
|
this.submitRes = null |
||||
|
productionRecycleJobHandle(_jobInfo.id,_data).then(res => { |
||||
|
this.Loading.appMainLoading = false |
||||
|
this.submitRes = res |
||||
|
resolve(); |
||||
|
}).catch(err => { |
||||
|
this.Loading.appMainLoading = false |
||||
|
reject(); |
||||
|
}) |
||||
|
}, |
||||
|
stepsSubmit (val) { |
||||
|
// 提交 |
||||
|
return new Promise((resolve, reject) => { |
||||
|
let _tableList = this.CreateFormData.details |
||||
|
let _empty = 0 |
||||
|
_tableList.forEach(item=>{ |
||||
|
if(!item.locationCode || item.locationCode.length <= 0){ |
||||
|
_empty ++ |
||||
|
} |
||||
|
}) |
||||
|
if(_empty > 0){ |
||||
|
this.$errorMsg("目标库位不可为空") |
||||
|
return |
||||
|
} |
||||
|
let _jobInfo = this.propsData |
||||
|
let _itemInfo = this.propsData.details[0] |
||||
|
let _data = JSON.parse(JSON.stringify(_jobInfo)) |
||||
|
_data.details[0].materialDetails = [],//目前规定明细中肯定只有一个子数据 |
||||
|
_data.details[0].qty = Number(this.CreateFormData.qty) |
||||
|
this.checkSelectData() |
||||
|
}); |
||||
|
}, |
||||
|
stepsCloseHandle(data){ |
||||
|
// 关闭详情弹窗 |
||||
|
this.displayDialog.detailsDialog = false |
||||
|
this.stepsClose(data) |
||||
|
}, |
||||
|
PalletlFunction (val) { |
||||
|
return new Promise((resolve, reject) => { |
||||
|
if(val == 0){ |
||||
|
this.Loading.appMainLoading = true |
||||
|
// 获取接口生成bom列表 |
||||
|
let _itemInfo = this.propsData.details[0] |
||||
|
getBomByComponentTree(_itemInfo.itemCode) |
||||
|
.then(res=>{ |
||||
|
this.bomList = res |
||||
|
this.Loading.appMainLoading = false |
||||
|
if(res.length > 0){ |
||||
|
this.CreateFormData.details = [] |
||||
|
res.forEach(item=>{ |
||||
|
let _item={ |
||||
|
id:item.id, |
||||
|
itemCode:item.component, |
||||
|
parentCode:item.product, |
||||
|
// details的qty是否要乘以主表的qty值 |
||||
|
qty:Number(item.componentQty) * Number(this.CreateFormData.qty), |
||||
|
locationCode:_itemInfo.rawLocationCode, |
||||
|
locationArea:_itemInfo.rawLocationArea, |
||||
|
locationGroup:_itemInfo.rawLocationGroup, |
||||
|
locationErpCode:_itemInfo.rawLocationErpCode, |
||||
|
warehouseCode:_itemInfo.warehouseCode, |
||||
|
} |
||||
|
this.CreateFormData.details.push(_item) |
||||
|
}) |
||||
|
this.CreateFormData.details = this.buildTree(JSON.parse(JSON.stringify(this.CreateFormData.details))) |
||||
|
resolve(); |
||||
|
}else{ |
||||
|
this.$errorMsg(`并未找到${_itemInfo.itemCode}对应的bom数据`) |
||||
|
reject() |
||||
|
} |
||||
|
}) |
||||
|
.catch(err=>{ |
||||
|
this.Loading.appMainLoading = false |
||||
|
reject() |
||||
|
}) |
||||
|
} |
||||
|
// 提交 |
||||
|
if(val == 1){ |
||||
|
resolve() |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
} |
||||
|
}; |
||||
|
</script> |
||||
|
<style lang="scss" scoped> |
||||
|
@import "../../../styles/basicData.scss"; |
||||
|
</style> |
@ -1,548 +0,0 @@ |
|||||
<template> |
|
||||
<div class="page-box" v-loading="Loading.appMainLoading"> |
|
||||
<tablePagination |
|
||||
:currenButtonData="currenButtonData" |
|
||||
:tableData="tableData" |
|
||||
:tableLoading="Loading.tableLoading" |
|
||||
:tableColumns="tableColumns" |
|
||||
@rowDrop="rowDrop" |
|
||||
:totalCount="totalCount" |
|
||||
:multipleSelection="multipleSelection" |
|
||||
:MaxResultCount="PageListParams.MaxResultCount" |
|
||||
@topbutton="topbutton" |
|
||||
@inlineDialog="inlineDialog" |
|
||||
@sortChange="sortChange" |
|
||||
@alertoldSkipCount="alertoldSkipCount" |
|
||||
@alterResultCount="alterResultCount" |
|
||||
@handleSelectionChange="handleSelectionChange" |
|
||||
:currentPageProps="oldSkipCount" |
|
||||
:quicklySearchOption="quicklySearchOption" |
|
||||
@quicklySearchClick="quicklySearchClick" |
|
||||
@quicklySearchClear="quicklySearchClear" |
|
||||
:primarySearchOption="primarySearchOption" |
|
||||
@overallSearchFormClick="overallSearchFormClick" |
|
||||
:httpOverallSearchData="httpOverallSearchData" |
|
||||
> |
|
||||
</tablePagination> |
|
||||
<!-- 执行 --> |
|
||||
<handelFrom |
|
||||
:formTitle="formTitle" |
|
||||
:displayDialog.sync="displayDialog.handleFromDialog" |
|
||||
:CreateFormData="handleFormData" |
|
||||
:CreateForm="handleForm" |
|
||||
:Rules="editRules.handleRule" |
|
||||
:Options="editOptions" |
|
||||
:detailsTableColumns="handleDetailsTableColumns" |
|
||||
:isShowIndex="true" |
|
||||
:selectionTable="true" |
|
||||
@handleSelectionChange="handleSelectionChange" |
|
||||
@FormSubmit="handleFormSubmit" |
|
||||
></handelFrom> |
|
||||
<curren-Drawer |
|
||||
:title="tableColumns" |
|
||||
:DrawerLoading="Loading.DrawerLoading" |
|
||||
:drawer="displayDialog.detailsDialog" |
|
||||
:propsData="propsData" |
|
||||
:tabsDesTions="tabsDesTions" |
|
||||
:Butttondata="DrawerButtonData" |
|
||||
@drawerShut="(val) => (displayDialog.detailsDialog = val)" |
|
||||
@drawerbutton="drawerbutton" |
|
||||
@close-value="closeValue" |
|
||||
:currenButtonData="currenButtonData" |
|
||||
:tableColumns="detailsTableColumns" |
|
||||
:totalCount="totalCountDetails" |
|
||||
:MaxResultCount="MaxResultCountDetails" |
|
||||
@alterResultCountDetails="alterResultCountDetails" |
|
||||
@alertoldSkipCountDetails="alertoldSkipCountDetails" |
|
||||
></curren-Drawer> |
|
||||
</div> |
|
||||
</template> |
|
||||
<script> |
|
||||
import { getPageList, createAndHandle } from "@/api/wms-api" |
|
||||
import { materialRequestByType, handle} from "@/api/wms-job" |
|
||||
import { tableMixins } from "@/mixins/TableMixins" |
|
||||
import { LoadingMixins } from "@/mixins/LoadingMixins" |
|
||||
import { drawerMixins } from "@/mixins/drawerMixins" |
|
||||
import { TableHeaderMixins } from "@/mixins/TableHeaderMixins" |
|
||||
import { mixins } from "@/mixins/mixins" |
|
||||
import { newAndEdiDialogMixins } from "@/mixins/newAndEdiDialogMixins" |
|
||||
import store from '@/store' |
|
||||
import { initPrintAllData } from "@/mixins/printMixin" |
|
||||
export default { |
|
||||
name: "LibraryShiftJob", |
|
||||
mixins: [ |
|
||||
tableMixins, |
|
||||
LoadingMixins, |
|
||||
drawerMixins, |
|
||||
TableHeaderMixins, |
|
||||
mixins, |
|
||||
newAndEdiDialogMixins |
|
||||
], |
|
||||
computed: { |
|
||||
editDialog: { |
|
||||
get: function () { |
|
||||
return this.displayDialog.newDialog || this.displayDialog.editDialog; |
|
||||
}, |
|
||||
}, |
|
||||
// hideButton: function () { |
|
||||
// return function (val) { |
|
||||
// let data = true |
|
||||
// val.forEach(key => { |
|
||||
// if (this.propsData.jobStatus == key) { |
|
||||
// data = false |
|
||||
// } |
|
||||
// }) |
|
||||
// return data |
|
||||
// } |
|
||||
// }, |
|
||||
}, |
|
||||
data () { |
|
||||
return { |
|
||||
URL: 'wms/store/issue-job', |
|
||||
tableLoading: false, |
|
||||
handleMultipleSelection: [], |
|
||||
//常用按钮数据 |
|
||||
currenButtonData: [ |
|
||||
// this.defaultExportBtn(),//导出 |
|
||||
this.defaultFieldSettingBtn(),//字段设置 |
|
||||
this.defaultFreshBtn(),//刷新 |
|
||||
this.defaultFilterBtn(),//筛选 |
|
||||
], |
|
||||
DrawerButtonData: [ |
|
||||
{ |
|
||||
type: 'info', |
|
||||
icon: 'el-icon-printer', |
|
||||
label: '打印', |
|
||||
hide: false, |
|
||||
name: "print", |
|
||||
size: 'mini' |
|
||||
}, |
|
||||
], |
|
||||
handleDetailsTableColumns: [ |
|
||||
{ label: "物品代码", prop: "itemCode", }, |
|
||||
{ label: "物品名称", prop: "itemName" }, |
|
||||
{ label: "实际库位", prop: "handledLocationCode", }, |
|
||||
{ label: "推荐库位", prop: "recommendLocationCode", }, |
|
||||
{ label: "实际箱标签", prop: "handledPackingCode", }, |
|
||||
{ label: "推荐箱标签", prop: "recommendPackingCode", }, |
|
||||
{ label: "实际批次", prop: "handledLot", }, |
|
||||
{ label: "推荐批次", prop: "recommendLot", }, |
|
||||
{ type: "object", label: "实际数量", prop: "handledQty", showProp: "qty", }, |
|
||||
{ type: "object", label: "实际单位", prop: "handledQty", showProp: "uom", }, |
|
||||
{ type: "object", label: "推荐数量", prop: "recommendQty", showProp: "qty", }, |
|
||||
{ type: "object", label: "推荐单位", prop: "recommendQty", showProp: "uom", }, |
|
||||
], |
|
||||
editOptions: { |
|
||||
|
|
||||
}, |
|
||||
handleFormData: { |
|
||||
id: null, |
|
||||
creationTime: null, |
|
||||
IssueNoteNumber: "123", |
|
||||
lastModificationTime: null, |
|
||||
remark: null, |
|
||||
concurrencyStamp: null, |
|
||||
company: null, |
|
||||
number: null, |
|
||||
upStreamJobNumber: null, |
|
||||
materialRequestNumber: null, |
|
||||
jobType: 1, |
|
||||
jobStatus: 1, |
|
||||
priority: 0, |
|
||||
priorityIncrement: 0, |
|
||||
wlgCode: "123", |
|
||||
isAutoComplete: true, |
|
||||
details: [], |
|
||||
acceptTime: null, |
|
||||
completeTime: null, |
|
||||
prodLine: null, |
|
||||
toLocationCode: null, |
|
||||
}, |
|
||||
childTableData: [ |
|
||||
{ |
|
||||
"id": null, |
|
||||
"creationTime": null, |
|
||||
// "creatorId": null, |
|
||||
"lastModificationTime": null, |
|
||||
// "lastModifierId": null, |
|
||||
"remark": null, |
|
||||
"concurrencyStamp": null, |
|
||||
"masterID": null, |
|
||||
"packingCode": null, |
|
||||
"containerCode": null, |
|
||||
"item": { |
|
||||
"id": null, |
|
||||
"name": null, |
|
||||
"desc1": null, |
|
||||
"desc2": null |
|
||||
}, |
|
||||
"itemCode": null, |
|
||||
"stdPack": { |
|
||||
"packUom": null, |
|
||||
"packQty": 0 |
|
||||
}, |
|
||||
"recommendBatch": { |
|
||||
"supplierBatch": null, |
|
||||
"produceDate": null |
|
||||
}, |
|
||||
"recommendLot": "", |
|
||||
"recommendLocationCode": "", |
|
||||
"recomendQty": { |
|
||||
"uom": null, |
|
||||
"qty": 0 |
|
||||
}, |
|
||||
"handledBatch": { |
|
||||
"supplierBatch": null, |
|
||||
"produceDate": null |
|
||||
}, |
|
||||
"handledLot": "", |
|
||||
"handledLocationCode": "", |
|
||||
"handledQty": { |
|
||||
"uom": null, |
|
||||
"qty": 0 |
|
||||
}, |
|
||||
"fromLocation": "", |
|
||||
"toLocation": "", |
|
||||
"workshop": null, |
|
||||
"prodLine": null, |
|
||||
"workCenter": null, |
|
||||
} |
|
||||
], |
|
||||
handleForm: [ |
|
||||
{ type: "input", label: "任务编号", prop: "number", colSpan: 12, disabled: "true" }, |
|
||||
{ type: "input", label: "到货编号", prop: "arriveNumber", colSpan: 12, disabled: "true" }, |
|
||||
{ type: "select", label: "任务类型", prop: "jobType", options: "taskType", colSpan: 12, disabled: "true" }, |
|
||||
{ type: "select", label: "任务状态", prop: "jobStatus", options: "jobStatus", colSpan: 12, disabled: "true" }, |
|
||||
{ type: "input", label: "优先级", prop: "priority", colSpan: 12, disabled: "true" }, |
|
||||
{ type: "input", label: "工作组", prop: "wlgCode", colSpan: 12, disabled: "true" }, |
|
||||
{ type: "dateTime", label: "接收时间", prop: "acceptTime", colSpan: 12, }, |
|
||||
{ type: "input", label: "备注", prop: "remark", colSpan: 12, }, |
|
||||
{ type: "input", label: "生产线", prop: "prodLine", disabled: "true", colSpan: 12, }, |
|
||||
// { type: "autocomplete", label: "目标库位", prop: "toLocationCode", optionsLabel: "itemCode", optionsValue: "locationCode", focus: (val) => { return this.getSelectList(val, "wms/inventory/Inventory-Balance") }, click: (val) => { this.filterTable(val, 'wms/inventory/Inventory-Balance', 'InventoryBalance-PullForm', '库位选择') }, colSpan: 12 }, |
|
||||
{ type: "autocomplete", label: "目标库位", prop: "toLocationCode", optionsLabel: "name", optionsValue: "code", focus: (val) => { return this.getSelectList(val, "basedata/Location") }, click: (val) => { this.filterTable(val, 'basedata/Location', 'InventoryBalance-PullForm', '库位选择') }, colSpan: 12 }, |
|
||||
], |
|
||||
editRules: { |
|
||||
handleRule: { |
|
||||
number: [ |
|
||||
{ required: true, trigger: "blur", message: "不可为空" }, |
|
||||
], |
|
||||
jobType: [{ required: true, trigger: "blur", message: "不可为空" }], |
|
||||
jobStatus: [{ required: true, trigger: "blur", message: "不可为空" }], |
|
||||
priority: [{ required: true, trigger: "blur", message: "不可为空" }], |
|
||||
wlgCode: [{ required: true, trigger: "blur", message: "不可为空" }], |
|
||||
}, |
|
||||
cerateRule: { |
|
||||
itemCode: [{ required: true, trigger: "blur", message: "不可为空" }], |
|
||||
toLocationCode: [{ required: false, trigger: "blur", message: "不可为空" }], |
|
||||
numberInput: [{ required: true, trigger: "blur", message: "不可为空" }], |
|
||||
} |
|
||||
}, |
|
||||
}; |
|
||||
}, |
|
||||
mounted () { |
|
||||
this.paging(); |
|
||||
}, |
|
||||
methods: { |
|
||||
//渲染数据 |
|
||||
paging(callback) { |
|
||||
this.Loading.tableLoading = true; |
|
||||
this.PageListParams.SkipCount = (this.oldSkipCount - 1) * this.PageListParams.MaxResultCount |
|
||||
// 叫料请求类型: 人工拉动:Issue_Manual; 线边拉动:Issue_WIP; 直接发料:Direct_Issue |
|
||||
let params = { |
|
||||
requestType: 'Issue_Manual' |
|
||||
} |
|
||||
materialRequestByType(this.PageListParams, this.URL + '/by-type', params) |
|
||||
.then(res => { |
|
||||
this.tableData = res.items |
|
||||
this.totalCount = res.totalCount |
|
||||
this.pagingCallback(callback) |
|
||||
}).catch(err => { |
|
||||
this.Loading.tableLoading = false |
|
||||
}) |
|
||||
}, |
|
||||
handleFormSubmit (val) { |
|
||||
let that = this |
|
||||
return new Promise((resolve, reject) => { |
|
||||
if (that.handleMultipleSelection.length == 0) { |
|
||||
that.$errorMsg('请先择提交的数据!') |
|
||||
reject() |
|
||||
} else { |
|
||||
if (that.handleMultipleSelection[0].requestLocationCode != that.handleFormData.toLocationCode) { |
|
||||
that.$confirm('目标库位与需求库位不一致,是否要将所有物品发到目标库位?', '提示', { |
|
||||
confirmButtonText: '确定', |
|
||||
cancelButtonText: '取消', |
|
||||
type: 'warning' |
|
||||
}).then(() => { |
|
||||
that.checkHandleSubmit(resolve, reject) |
|
||||
}).catch(() => { |
|
||||
reject() |
|
||||
}) |
|
||||
} else { |
|
||||
that.$confirm('是否要将物品发到目标库位:[' + that.handleFormData.toLocationCode + ']', '提示', { |
|
||||
confirmButtonText: '确定', |
|
||||
cancelButtonText: '取消', |
|
||||
type: 'warning' |
|
||||
}).then(() => { |
|
||||
that.checkHandleSubmit(resolve, reject) |
|
||||
}).catch(() => { |
|
||||
reject() |
|
||||
}) |
|
||||
} |
|
||||
} |
|
||||
}) |
|
||||
}, |
|
||||
checkHandleSubmit(resolve, reject) { |
|
||||
let that = this |
|
||||
|
|
||||
let items = that.handleMultipleSelection.filter(r => { |
|
||||
return (r.handledPackingCode === null || r.handledPackingCode === '') |
|
||||
}) |
|
||||
|
|
||||
if (items.length > 0) { |
|
||||
let packingCodes = ''; |
|
||||
items.forEach(r => { |
|
||||
packingCodes += r.recommendPackingCode + ',' |
|
||||
}) |
|
||||
that.$confirm('以下箱码对应的实际箱码为空,是否要继续发料?:[' + packingCodes + ']', '提示', { |
|
||||
confirmButtonText: '确定', |
|
||||
cancelButtonText: '取消', |
|
||||
type: 'warning' |
|
||||
}).then(() => { |
|
||||
that.finshIssueJobHandle(resolve, reject) |
|
||||
}).catch(() => { |
|
||||
return reject() |
|
||||
}) |
|
||||
} else { |
|
||||
that.finshIssueJobHandle(resolve, reject) |
|
||||
} |
|
||||
}, |
|
||||
finshIssueJobHandle(resolve, reject) { |
|
||||
let that = this |
|
||||
let data = { |
|
||||
id: that.propsData.id |
|
||||
} |
|
||||
that.handleMultipleSelection.forEach(item => { |
|
||||
item.toLocationCode = that.handleFormData.toLocationCode |
|
||||
item.handledContainerCode = item.recommendContainerCode; |
|
||||
item.handledPackingCode = item.recommendPackingCode; |
|
||||
item.handledBatch = item.recommendBatch; |
|
||||
item.handledLot = item.recommendLot; |
|
||||
item.handledLocationCode = item.recommendLocationCode; |
|
||||
}) |
|
||||
let params = JSON.parse(JSON.stringify(that.handleFormData)) |
|
||||
delete params.details |
|
||||
params.details = that.handleMultipleSelection |
|
||||
handle(params, data, that.URL).then(res => { |
|
||||
that.displayDialog.handleFromDialog = false; |
|
||||
that.$successMsg('已生成发料记录!') |
|
||||
that.paging() |
|
||||
return resolve() |
|
||||
}).catch(err => { |
|
||||
return reject(); |
|
||||
}) |
|
||||
}, |
|
||||
// 输入框 变更 |
|
||||
changeInput(prop, val) { |
|
||||
let that = this |
|
||||
if (prop == 'numberInput' ) { |
|
||||
this.$confirm('是否要将以下所有零件的需求数量更改为[' + val + ']', '提示', { |
|
||||
confirmButtonText: '确定', |
|
||||
cancelButtonText: '取消', |
|
||||
type: 'warning' |
|
||||
}).then(() => { |
|
||||
that.CreateFormData.details.forEach(item => { |
|
||||
item.numberDetails = parseInt(val) |
|
||||
}) |
|
||||
}).catch(() => { |
|
||||
}) |
|
||||
} |
|
||||
}, |
|
||||
//新增——删除table |
|
||||
deleteRow(index, rows) { |
|
||||
rows.splice(index, 1); |
|
||||
}, |
|
||||
//新增-按钮 |
|
||||
FormClick(val) { |
|
||||
let that = this |
|
||||
if (val[0] == 0) { |
|
||||
} else if (val[0] == 1) { |
|
||||
// 查询 |
|
||||
this.editRules.cerateRule.toLocationCode[0].required = false |
|
||||
val[1].validate((valid) => { |
|
||||
if (valid) { |
|
||||
this.tableLoading = true |
|
||||
let params = { |
|
||||
condition: { |
|
||||
filters: [ |
|
||||
{ |
|
||||
logic: "And", |
|
||||
column: "code", |
|
||||
action: "==", |
|
||||
value: that.CreateFormData.itemCode |
|
||||
} |
|
||||
] |
|
||||
}, |
|
||||
Sorting: "", |
|
||||
SkipCount: 0, |
|
||||
MaxResultCount: 100 |
|
||||
} |
|
||||
getPageList(params, 'basedata/item-basic').then(res => { |
|
||||
if (res.items.length == 0) { |
|
||||
this.$errorMsg('未查询到该物品信息!') |
|
||||
} else { |
|
||||
let findRs = that.CreateFormData.details.find(item => ( |
|
||||
item.code == that.CreateFormData.itemCode |
|
||||
)) |
|
||||
if (!findRs) { |
|
||||
res.items.forEach(item => { |
|
||||
item.numberDetails = 0 |
|
||||
that.CreateFormData.details.push(item) |
|
||||
}) |
|
||||
} |
|
||||
} |
|
||||
this.tableLoading = false |
|
||||
}).catch(err => { |
|
||||
console.log(err) |
|
||||
this.tableLoading = false |
|
||||
}) |
|
||||
} else { |
|
||||
this.$errorMsg('请检查表单') |
|
||||
} |
|
||||
}) |
|
||||
} else { |
|
||||
this.editRules.cerateRule.toLocationCode[0].required = true |
|
||||
val[1].validate((valid) => { |
|
||||
if (valid) { |
|
||||
if (this.CreateFormData.details.length > 0) { |
|
||||
let params = { |
|
||||
worker: store.getters.name.userName, |
|
||||
company: localStorage.getItem("company"), |
|
||||
details: [], |
|
||||
} |
|
||||
for (var i = 0; i < this.CreateFormData.details.length; i++) { |
|
||||
if (this.CreateFormData.details[i].numberDetails <= 0) { |
|
||||
this.$errorMsg('物品[' + this.CreateFormData.details[i].code + ']的数量应该大于0') |
|
||||
return |
|
||||
} else { |
|
||||
params.details.push({ |
|
||||
itemCode: this.CreateFormData.details[i].code, |
|
||||
item: { |
|
||||
id: this.CreateFormData.details[i].id, |
|
||||
name: this.CreateFormData.details[i].name, |
|
||||
desc1: this.CreateFormData.details[i].desc1, |
|
||||
desc2: this.CreateFormData.details[i].desc2, |
|
||||
}, |
|
||||
qty: { |
|
||||
uom: this.CreateFormData.details[i].basicUom, |
|
||||
qty: this.CreateFormData.details[i].numberDetails |
|
||||
}, |
|
||||
prodLine: '', |
|
||||
status: this.CreateFormData.details[i].status, |
|
||||
toLocationCode: this.CreateFormData.toLocationCode, |
|
||||
worker: store.getters.name.userName, |
|
||||
}) |
|
||||
} |
|
||||
} |
|
||||
this.Loading.newAndEdiLoading = true |
|
||||
createAndHandle(params).then( res => { |
|
||||
this.displayDialog.newDialog = false |
|
||||
this.Loading.newAndEdiLoading = false |
|
||||
this.$successMsg("发料任务创建成功!") |
|
||||
this.paging() |
|
||||
}).catch(err => { |
|
||||
console.log(err) |
|
||||
this.Loading.newAndEdiLoading = false |
|
||||
}) |
|
||||
} else { |
|
||||
this.$errorMsg('无数据可提交!') |
|
||||
} |
|
||||
} else { |
|
||||
this.$errorMsg('请检查表单') |
|
||||
} |
|
||||
}) |
|
||||
} |
|
||||
}, |
|
||||
drawerbutton (val) { |
|
||||
// 打印 |
|
||||
if(val == 'print'){ |
|
||||
let _propsData = JSON.parse(JSON.stringify(this.tableDataDetails)) |
|
||||
_propsData.title = "线边仓领料单" |
|
||||
_propsData.details.forEach(item=>{ |
|
||||
item.recommendLot = item.recommendLot + " " |
|
||||
}) |
|
||||
let _option = { |
|
||||
details:{ |
|
||||
fromLocationCode:"recommendFromLocationCode", |
|
||||
qty:"handledQty", |
|
||||
fromLot:"recommendLot", |
|
||||
fromLocationErpCode:"recommendFromLocationErpCode", |
|
||||
} |
|
||||
} |
|
||||
let data = initPrintAllData(_propsData,'xbcll.rdlx',false,_option); |
|
||||
this.Print(data) |
|
||||
} else { |
|
||||
drawerMixins.methods.drawerbutton(val, this) |
|
||||
} |
|
||||
}, |
|
||||
// drawerbutton(val) { |
|
||||
// if (val == 'handleJob') { |
|
||||
// this.Loading.appMainLoading = true |
|
||||
// let propsData = JSON.parse(JSON.stringify(this.propsData)); |
|
||||
// this.$listAssign(this.handleFormData, propsData) |
|
||||
// this.handleFormData.toLocationCode = this.handleFormData.details[0].toLocationCode |
|
||||
// this.handleMultipleSelection = [] |
|
||||
// this.Loading.appMainLoading = false |
|
||||
// this.formTitle = "执行" + this.$route.meta.title; |
|
||||
// this.displayDialog.handleFromDialog = true |
|
||||
// } else { |
|
||||
// drawerMixins.methods.drawerbutton(val, this) |
|
||||
// } |
|
||||
// }, |
|
||||
handleSelectionChange(val) { |
|
||||
this.handleMultipleSelection = val |
|
||||
} |
|
||||
} |
|
||||
}; |
|
||||
</script> |
|
||||
<style lang="scss" scoped> |
|
||||
@import "../../../styles/mainbasicData.scss"; |
|
||||
::v-deep .newAndEdiDialog { |
|
||||
display: flex; |
|
||||
flex-direction: column; |
|
||||
width: 100%; |
|
||||
height: 100%; |
|
||||
.el-form { |
|
||||
flex: 1; |
|
||||
display: flex; |
|
||||
justify-content: flex-start; |
|
||||
align-content: flex-start; |
|
||||
flex-wrap: wrap; |
|
||||
overflow: hidden; |
|
||||
overflow-y: auto; |
|
||||
} |
|
||||
.screen-push { |
|
||||
color: rgb(64, 158, 255); |
|
||||
span { |
|
||||
cursor: pointer; |
|
||||
&:hover { |
|
||||
color: blue; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
.formButton { |
|
||||
padding: 20px 20px 20px 0; |
|
||||
} |
|
||||
.formTable-box { |
|
||||
height: 70% !important; |
|
||||
|
|
||||
.el-form-item__content { |
|
||||
width: 100%; |
|
||||
height: 100%; |
|
||||
display: flex; |
|
||||
flex-direction: column; |
|
||||
overflow: hidden; |
|
||||
margin: 0 !important; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</style> |
|
@ -1,228 +0,0 @@ |
|||||
<template> |
|
||||
<div class="page-box" v-loading="Loading.appMainLoading"> |
|
||||
<tablePagination |
|
||||
:currenButtonData="currenButtonData" |
|
||||
:tableData="tableData" |
|
||||
:tableLoading="Loading.tableLoading" |
|
||||
:tableColumns="tableColumns" |
|
||||
@rowDrop="rowDrop" |
|
||||
:totalCount="totalCount" |
|
||||
:multipleSelection="multipleSelection" |
|
||||
:MaxResultCount="PageListParams.MaxResultCount" |
|
||||
@topbutton="topbutton" |
|
||||
@inlineDialog="inlineDialog" |
|
||||
@sortChange="sortChange" |
|
||||
@alertoldSkipCount="alertoldSkipCount" |
|
||||
@alterResultCount="alterResultCount" |
|
||||
@handleSelectionChange="handleSelectionChange" |
|
||||
:currentPageProps="oldSkipCount" |
|
||||
:quicklySearchOption="quicklySearchOption" |
|
||||
@quicklySearchClick="quicklySearchClick" |
|
||||
@quicklySearchClear="quicklySearchClear" |
|
||||
:primarySearchOption="primarySearchOption" |
|
||||
@overallSearchFormClick="overallSearchFormClick" |
|
||||
:httpOverallSearchData="httpOverallSearchData" |
|
||||
> |
|
||||
</tablePagination> |
|
||||
<!-- 新导入 disabledMethod 导入方式禁用 disabledIsAllowPartImport 是否局部导入禁用--> |
|
||||
<!-- methodValue 导入方式默认选项 是否局部导入 默认选项 --> |
|
||||
<importFile |
|
||||
:loading="Loading.importLoading" |
|
||||
:show="displayDialog.importDialog" |
|
||||
:URL="URL" |
|
||||
:disabledMethod="{ method1: false, method2: false, method3: false }" |
|
||||
:disabledIsAllowPartImport="{ |
|
||||
isAllowPartImport1: false, |
|
||||
isAllowPartImport2: false, |
|
||||
}" |
|
||||
isAllowPartImportValue="1" |
|
||||
@importClick="postImportMergeClick(arguments)" |
|
||||
@postImportDown="importDown" |
|
||||
></importFile> |
|
||||
<curren-Drawer |
|
||||
:title="tableColumns" |
|
||||
:DrawerLoading="Loading.DrawerLoading" |
|
||||
:drawer="displayDialog.detailsDialog" |
|
||||
:propsData="propsData" |
|
||||
:tabsDesTions="tabsDesTions" |
|
||||
:Butttondata="DrawerButtonData" |
|
||||
@drawerShut="(val) => (displayDialog.detailsDialog = val)" |
|
||||
@drawerbutton="drawerbutton" |
|
||||
@close-value="closeValue" |
|
||||
:currenButtonData="currenButtonData" |
|
||||
:tableColumns="detailsTableColumns" |
|
||||
:totalCount="totalCountDetails" |
|
||||
:MaxResultCount="MaxResultCountDetails" |
|
||||
@alterResultCountDetails="alterResultCountDetails" |
|
||||
@alertoldSkipCountDetails="alertoldSkipCountDetails" |
|
||||
></curren-Drawer> |
|
||||
</div> |
|
||||
</template> |
|
||||
<script> |
|
||||
import { materialRequestByType,processRequest,getDetailed } from "@/api/wms-api" |
|
||||
import { tableMixins } from "@/mixins/TableMixins" |
|
||||
import { LoadingMixins } from "@/mixins/LoadingMixins" |
|
||||
import { drawerMixins } from "@/mixins/drawerMixins" |
|
||||
import { TableHeaderMixins } from "@/mixins/TableHeaderMixins" |
|
||||
import { mixins } from "@/mixins/mixins" |
|
||||
import { requestData } from "@/utils/processButtonData" |
|
||||
import requestDataNames from "@/utils/processButtonData" |
|
||||
export default { |
|
||||
name: "LibraryShiftRequest", |
|
||||
mixins: [ |
|
||||
tableMixins, |
|
||||
LoadingMixins, |
|
||||
drawerMixins, |
|
||||
TableHeaderMixins, |
|
||||
mixins, |
|
||||
], |
|
||||
computed: { |
|
||||
editDialog: { |
|
||||
get: function () { |
|
||||
return this.displayDialog.newDialog || this.displayDialog.editDialog; |
|
||||
}, |
|
||||
}, |
|
||||
}, |
|
||||
data () { |
|
||||
let _this = this; |
|
||||
return { |
|
||||
URL: 'wms/store/material-request', |
|
||||
tableLoading: false, |
|
||||
handleMultipleSelection: [], |
|
||||
//常用按钮数据 |
|
||||
currenButtonData: [ |
|
||||
this.defaultImportBtn(),//导入 |
|
||||
this.defaultFieldSettingBtn(),//字段设置 |
|
||||
this.defaultFreshBtn(),//刷新 |
|
||||
this.defaultFilterBtn(),//筛选 |
|
||||
], |
|
||||
//执行前获取记录数据暂存 |
|
||||
oldIssueJobIds: [], |
|
||||
DrawerButtonData: [ |
|
||||
// ...requestData(this), |
|
||||
{ |
|
||||
type: 'primary', |
|
||||
icon: 'el-icon-circle-check', |
|
||||
label: '完成', |
|
||||
hide: () => { return this.completeRequestInit([2,6])}, |
|
||||
name: "completeRequest", |
|
||||
size: 'mini' |
|
||||
}, |
|
||||
{ |
|
||||
type: 'primary', |
|
||||
icon: 'el-icon-circle-check', |
|
||||
label: '执行', |
|
||||
name: "IssueRequest-zx", |
|
||||
hide: () => { return this.againHandleRequestInit([9])}, |
|
||||
size: 'mini' |
|
||||
}, |
|
||||
...requestData(this,false,false,[requestDataNames.againHandle]), |
|
||||
], |
|
||||
}; |
|
||||
}, |
|
||||
mounted () { |
|
||||
this.paging() |
|
||||
}, |
|
||||
methods: { |
|
||||
//渲染数据 |
|
||||
paging(callback) { |
|
||||
this.Loading.tableLoading = true; |
|
||||
this.PageListParams.SkipCount = (this.oldSkipCount - 1) * this.PageListParams.MaxResultCount |
|
||||
// 叫料请求类型: 人工拉动:Issue_Manual; 线边拉动:Issue_WIP; 直接发料:Direct_Issue |
|
||||
let params = { |
|
||||
type: 'Issue_Manual' |
|
||||
} |
|
||||
materialRequestByType(this.PageListParams, this.URL + '/by-type', params).then(res => { |
|
||||
this.tableData = res.items |
|
||||
this.totalCount = res.totalCount |
|
||||
this.pagingCallback(callback) |
|
||||
}).catch(err => { |
|
||||
this.Loading.tableLoading = false |
|
||||
}) |
|
||||
}, |
|
||||
// 重新定义【完成按钮】显示判断 除了2(待审批) 和 6(完成状态)都显示(abortRequestRequestInit) |
|
||||
completeRequestInit(val){ |
|
||||
let data = false |
|
||||
val.forEach(key => { |
|
||||
if (this.propsData.requestStatus == key) { |
|
||||
data = true |
|
||||
} |
|
||||
}) |
|
||||
return data |
|
||||
}, |
|
||||
// 定义【执行按钮】显示判断 ==9时候显示 |
|
||||
againHandleRequestInit(val){ |
|
||||
let data = true |
|
||||
val.forEach(key => { |
|
||||
if (this.propsData.requestStatus == key) { |
|
||||
data = false |
|
||||
} |
|
||||
}) |
|
||||
return data |
|
||||
}, |
|
||||
// 执行成功后处理 |
|
||||
handleResult(){ |
|
||||
getDetailed(this.propsData.id, this.URL).then(res => { |
|
||||
this.propsData = res |
|
||||
}) |
|
||||
this.paging() |
|
||||
this.Loading.appMainLoading = false |
|
||||
}, |
|
||||
//抽屉常用按钮 |
|
||||
drawerbutton (val) { |
|
||||
// 执行 |
|
||||
if(val == 'IssueRequest-zx'){ |
|
||||
this.Loading.appMainLoading = true |
|
||||
// 获取记录数据暂存 |
|
||||
processRequest(this.propsData.number,'wms/store/issue-job/by-request-number/').then(resFirst=>{ |
|
||||
this.oldIssueJobIds = [] |
|
||||
resFirst.forEach(item=>{ |
|
||||
this.oldIssueJobIds.push(item.id) |
|
||||
}) |
|
||||
// 执行操作 |
|
||||
processRequest(this.propsData.id, this.URL + '/handle/').then(resHandle => { |
|
||||
// 重新获取记录对比 |
|
||||
processRequest(this.propsData.number,'wms/store/issue-job/by-request-number/').then(resNew=>{ |
|
||||
// 重新获取的记录为空(未生成任务) |
|
||||
if(!resNew || resNew.length <= 0){ |
|
||||
this.$errorMsg('没有可用库存,未生成新任务') |
|
||||
this.handleResult() |
|
||||
return |
|
||||
} |
|
||||
// 当前有记录 |
|
||||
if(resNew && resNew.length > 0){ |
|
||||
let _newIds = [] |
|
||||
resNew.forEach(item=>{ |
|
||||
_newIds.push(item.id) |
|
||||
}) |
|
||||
if(this.oldIssueJobIds.sort().toString() === _newIds.sort().toString()){ |
|
||||
let mes = '未生成任务原因: ' + `<br/>` + '1、该请求中的【物品】的【实际发货数量】小于【请求数量】,请确认数量后点击【完成】。' + `<br/>` + '2、该请求中的【库存余额】小于【请求数量】,请确认数量后点击【执行】' |
|
||||
this.$alert(mes, |
|
||||
'错误提示', { |
|
||||
confirmButtonText: '确定', |
|
||||
dangerouslyUseHTMLString: true |
|
||||
}) |
|
||||
}else{ |
|
||||
this.$successMsg('执行成功,已生成新任务') |
|
||||
} |
|
||||
this.handleResult() |
|
||||
} |
|
||||
}) |
|
||||
}).catch(err => { |
|
||||
console.log(err) |
|
||||
this.Loading.appMainLoading = false |
|
||||
}) |
|
||||
}).catch(err => { |
|
||||
console.log(err) |
|
||||
this.Loading.appMainLoading = false |
|
||||
}) |
|
||||
} else { |
|
||||
drawerMixins.methods.drawerbutton(val, this) |
|
||||
} |
|
||||
}, |
|
||||
} |
|
||||
}; |
|
||||
</script> |
|
||||
<style lang="scss" scoped> |
|
||||
@import "../../../styles/mainbasicData.scss"; |
|
||||
</style> |
|
@ -0,0 +1,100 @@ |
|||||
|
<template> |
||||
|
<div class="page-box" v-loading="Loading.appMainLoading"> |
||||
|
<tablePagination |
||||
|
:currenButtonData="currenButtonData" |
||||
|
:tableData="tableData" |
||||
|
:tableLoading="Loading.tableLoading" |
||||
|
:tableColumns="tableColumns" |
||||
|
@rowDrop="rowDrop" |
||||
|
:totalCount="totalCount" |
||||
|
:multipleSelection="multipleSelection" |
||||
|
:MaxResultCount="PageListParams.MaxResultCount" |
||||
|
@topbutton="topbutton" |
||||
|
@inlineDialog="inlineDialog" |
||||
|
@sortChange="sortChange" |
||||
|
@alertoldSkipCount="alertoldSkipCount" |
||||
|
@alterResultCount="alterResultCount" |
||||
|
@handleSelectionChange="handleSelectionChange" |
||||
|
:currentPageProps="oldSkipCount" |
||||
|
:quicklySearchOption="quicklySearchOption" |
||||
|
@quicklySearchClick="quicklySearchClick" |
||||
|
@quicklySearchClear="quicklySearchClear" |
||||
|
:primarySearchOption="primarySearchOption" |
||||
|
@overallSearchFormClick="overallSearchFormClick" |
||||
|
:httpOverallSearchData="httpOverallSearchData" |
||||
|
> |
||||
|
</tablePagination> |
||||
|
<!-- 新导入 disabledMethod 导入方式禁用 disabledIsAllowPartImport 是否局部导入禁用--> |
||||
|
<!-- methodValue 导入方式默认选项 是否局部导入 默认选项 --> |
||||
|
<importFile |
||||
|
:loading="Loading.importLoading" |
||||
|
:show="displayDialog.importDialog" |
||||
|
:URL="URL" |
||||
|
:disabledMethod="{ method1: false, method2: false, method3: false }" |
||||
|
:disabledIsAllowPartImport="{ |
||||
|
isAllowPartImport1: false, |
||||
|
isAllowPartImport2: false, |
||||
|
}" |
||||
|
isAllowPartImportValue="1" |
||||
|
@importClick="postImportMergeClick(arguments)" |
||||
|
@postImportDown="importDown" |
||||
|
></importFile> |
||||
|
<curren-Drawer |
||||
|
:title="tableColumns" |
||||
|
:DrawerLoading="Loading.DrawerLoading" |
||||
|
:drawer="displayDialog.detailsDialog" |
||||
|
:propsData="propsData" |
||||
|
:tabsDesTions="tabsDesTions" |
||||
|
:Butttondata="DrawerButtonData" |
||||
|
@drawerShut="(val) => (displayDialog.detailsDialog = val)" |
||||
|
@drawerbutton="drawerbutton" |
||||
|
@close-value="closeValue" |
||||
|
:currenButtonData="currenButtonData" |
||||
|
:tableColumns="detailsTableColumns" |
||||
|
:totalCount="totalCountDetails" |
||||
|
:MaxResultCount="MaxResultCountDetails" |
||||
|
@alterResultCountDetails="alterResultCountDetails" |
||||
|
@alertoldSkipCountDetails="alertoldSkipCountDetails" |
||||
|
></curren-Drawer> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import { materialRequestByType,processRequest,getDetailed } from "@/api/wms-api" |
||||
|
import { tableMixins } from "@/mixins/TableMixins" |
||||
|
import { LoadingMixins } from "@/mixins/LoadingMixins" |
||||
|
import { drawerMixins } from "@/mixins/drawerMixins" |
||||
|
import { TableHeaderMixins } from "@/mixins/TableHeaderMixins" |
||||
|
import { mixins } from "@/mixins/mixins" |
||||
|
import { requestData } from "@/utils/processButtonData" |
||||
|
import requestDataNames from "@/utils/processButtonData" |
||||
|
export default { |
||||
|
name: "transferLibNote", |
||||
|
mixins: [ |
||||
|
tableMixins, |
||||
|
LoadingMixins, |
||||
|
drawerMixins, |
||||
|
TableHeaderMixins, |
||||
|
mixins, |
||||
|
], |
||||
|
data () { |
||||
|
return { |
||||
|
URL: 'wms/store/transferlib-note', |
||||
|
//常用按钮数据 |
||||
|
currenButtonData: [ |
||||
|
// this.defaultImportBtn(),//导入 |
||||
|
this.defaultFieldSettingBtn(),//字段设置 |
||||
|
this.defaultFreshBtn(),//刷新 |
||||
|
this.defaultFilterBtn(),//筛选 |
||||
|
], |
||||
|
//执行前获取记录数据暂存 |
||||
|
DrawerButtonData: [], |
||||
|
}; |
||||
|
}, |
||||
|
mounted () { |
||||
|
this.paging() |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style lang="scss" scoped> |
||||
|
@import "@/styles/mainbasicData.scss"; |
||||
|
</style> |
@ -0,0 +1,100 @@ |
|||||
|
<template> |
||||
|
<div class="page-box" v-loading="Loading.appMainLoading"> |
||||
|
<tablePagination |
||||
|
:currenButtonData="currenButtonData" |
||||
|
:tableData="tableData" |
||||
|
:tableLoading="Loading.tableLoading" |
||||
|
:tableColumns="tableColumns" |
||||
|
@rowDrop="rowDrop" |
||||
|
:totalCount="totalCount" |
||||
|
:multipleSelection="multipleSelection" |
||||
|
:MaxResultCount="PageListParams.MaxResultCount" |
||||
|
@topbutton="topbutton" |
||||
|
@inlineDialog="inlineDialog" |
||||
|
@sortChange="sortChange" |
||||
|
@alertoldSkipCount="alertoldSkipCount" |
||||
|
@alterResultCount="alterResultCount" |
||||
|
@handleSelectionChange="handleSelectionChange" |
||||
|
:currentPageProps="oldSkipCount" |
||||
|
:quicklySearchOption="quicklySearchOption" |
||||
|
@quicklySearchClick="quicklySearchClick" |
||||
|
@quicklySearchClear="quicklySearchClear" |
||||
|
:primarySearchOption="primarySearchOption" |
||||
|
@overallSearchFormClick="overallSearchFormClick" |
||||
|
:httpOverallSearchData="httpOverallSearchData" |
||||
|
> |
||||
|
</tablePagination> |
||||
|
<!-- 新导入 disabledMethod 导入方式禁用 disabledIsAllowPartImport 是否局部导入禁用--> |
||||
|
<!-- methodValue 导入方式默认选项 是否局部导入 默认选项 --> |
||||
|
<importFile |
||||
|
:loading="Loading.importLoading" |
||||
|
:show="displayDialog.importDialog" |
||||
|
:URL="URL" |
||||
|
:disabledMethod="{ method1: false, method2: false, method3: false }" |
||||
|
:disabledIsAllowPartImport="{ |
||||
|
isAllowPartImport1: false, |
||||
|
isAllowPartImport2: false, |
||||
|
}" |
||||
|
isAllowPartImportValue="1" |
||||
|
@importClick="postImportMergeClick(arguments)" |
||||
|
@postImportDown="importDown" |
||||
|
></importFile> |
||||
|
<curren-Drawer |
||||
|
:title="tableColumns" |
||||
|
:DrawerLoading="Loading.DrawerLoading" |
||||
|
:drawer="displayDialog.detailsDialog" |
||||
|
:propsData="propsData" |
||||
|
:tabsDesTions="tabsDesTions" |
||||
|
:Butttondata="DrawerButtonData" |
||||
|
@drawerShut="(val) => (displayDialog.detailsDialog = val)" |
||||
|
@drawerbutton="drawerbutton" |
||||
|
@close-value="closeValue" |
||||
|
:currenButtonData="currenButtonData" |
||||
|
:tableColumns="detailsTableColumns" |
||||
|
:totalCount="totalCountDetails" |
||||
|
:MaxResultCount="MaxResultCountDetails" |
||||
|
@alterResultCountDetails="alterResultCountDetails" |
||||
|
@alertoldSkipCountDetails="alertoldSkipCountDetails" |
||||
|
></curren-Drawer> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import { materialRequestByType,processRequest,getDetailed } from "@/api/wms-api" |
||||
|
import { tableMixins } from "@/mixins/TableMixins" |
||||
|
import { LoadingMixins } from "@/mixins/LoadingMixins" |
||||
|
import { drawerMixins } from "@/mixins/drawerMixins" |
||||
|
import { TableHeaderMixins } from "@/mixins/TableHeaderMixins" |
||||
|
import { mixins } from "@/mixins/mixins" |
||||
|
import { requestData } from "@/utils/processButtonData" |
||||
|
import requestDataNames from "@/utils/processButtonData" |
||||
|
export default { |
||||
|
name: "transferLibRequest", |
||||
|
mixins: [ |
||||
|
tableMixins, |
||||
|
LoadingMixins, |
||||
|
drawerMixins, |
||||
|
TableHeaderMixins, |
||||
|
mixins, |
||||
|
], |
||||
|
data () { |
||||
|
return { |
||||
|
URL: 'wms/store/transferlib-request', |
||||
|
//常用按钮数据 |
||||
|
currenButtonData: [ |
||||
|
// this.defaultImportBtn(),//导入 |
||||
|
this.defaultFieldSettingBtn(),//字段设置 |
||||
|
this.defaultFreshBtn(),//刷新 |
||||
|
this.defaultFilterBtn(),//筛选 |
||||
|
], |
||||
|
//执行前获取记录数据暂存 |
||||
|
DrawerButtonData: [], |
||||
|
}; |
||||
|
}, |
||||
|
mounted () { |
||||
|
this.paging() |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style lang="scss" scoped> |
||||
|
@import "@/styles/mainbasicData.scss"; |
||||
|
</style> |
@ -0,0 +1,95 @@ |
|||||
|
<template> |
||||
|
<div class="page-box" v-loading="Loading.appMainLoading"> |
||||
|
<tablePagination |
||||
|
:currenButtonData="currenButtonData" |
||||
|
:tableData="tableData" |
||||
|
:tableLoading="Loading.tableLoading" |
||||
|
:tableColumns="tableColumns" |
||||
|
@rowDrop="rowDrop" |
||||
|
:totalCount="totalCount" |
||||
|
:multipleSelection="multipleSelection" |
||||
|
:MaxResultCount="PageListParams.MaxResultCount" |
||||
|
@topbutton="topbutton" |
||||
|
@inlineDialog="inlineDialog" |
||||
|
@sortChange="sortChange" |
||||
|
@alertoldSkipCount="alertoldSkipCount" |
||||
|
@alterResultCount="alterResultCount" |
||||
|
@handleSelectionChange="handleSelectionChange" |
||||
|
:currentPageProps="oldSkipCount" |
||||
|
:quicklySearchOption="quicklySearchOption" |
||||
|
@quicklySearchClick="quicklySearchClick" |
||||
|
@quicklySearchClear="quicklySearchClear" |
||||
|
:primarySearchOption="primarySearchOption" |
||||
|
@overallSearchFormClick="overallSearchFormClick" |
||||
|
:httpOverallSearchData="httpOverallSearchData" |
||||
|
> |
||||
|
</tablePagination> |
||||
|
<!-- 新导入 disabledMethod 导入方式禁用 disabledIsAllowPartImport 是否局部导入禁用--> |
||||
|
<!-- methodValue 导入方式默认选项 是否局部导入 默认选项 --> |
||||
|
<importFile |
||||
|
:loading="Loading.importLoading" |
||||
|
:show="displayDialog.importDialog" |
||||
|
:URL="URL" |
||||
|
:disabledMethod = {method1:false,method2:false,method3:false} |
||||
|
:disabledIsAllowPartImport = {isAllowPartImport1:false,isAllowPartImport2:false} |
||||
|
isAllowPartImportValue="1" |
||||
|
@importClick="postImportMergeClick(arguments)" |
||||
|
@postImportDown="importDown" |
||||
|
></importFile> |
||||
|
<!--抽屉--> |
||||
|
<curren-Drawer |
||||
|
:title="tableColumns" |
||||
|
:DrawerLoading="Loading.DrawerLoading" |
||||
|
:drawer="displayDialog.detailsDialog" |
||||
|
:propsData="propsData" |
||||
|
:tabsDesTions="tabsDesTions" |
||||
|
:Butttondata="[]" |
||||
|
:dropdownData="dropdownData" |
||||
|
@drawerShut="(val) => (displayDialog.detailsDialog = val)" |
||||
|
@handleCommand="drawerHandle" |
||||
|
@close-value="closeValue" |
||||
|
:tableColumns="detailsTableColumns" |
||||
|
:totalCount="totalCountDetails" |
||||
|
:MaxResultCount="MaxResultCountDetails" |
||||
|
@alterResultCountDetails="alterResultCountDetails" |
||||
|
@alertoldSkipCountDetails="alertoldSkipCountDetails" |
||||
|
></curren-Drawer> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import { pageLockList,pageLockDetailed } from "@/api/wms-api"; |
||||
|
import { tableMixins } from "@/mixins/TableMixins"; |
||||
|
import { LoadingMixins } from "@/mixins/LoadingMixins"; |
||||
|
import { drawerMixins } from "@/mixins/drawerMixins"; |
||||
|
import { TableHeaderMixins } from "@/mixins/TableHeaderMixins"; |
||||
|
import { mixins } from "@/mixins/mixins"; |
||||
|
export default { |
||||
|
name: "pageLock", |
||||
|
mixins: [ |
||||
|
tableMixins, |
||||
|
LoadingMixins, |
||||
|
drawerMixins, |
||||
|
TableHeaderMixins, |
||||
|
mixins, |
||||
|
], |
||||
|
data() { |
||||
|
return { |
||||
|
URL: "auth/page-lock", |
||||
|
//常用按钮数据 |
||||
|
currenButtonData: [ |
||||
|
// this.defaultImportBtn(),//导入 |
||||
|
this.defaultFieldSettingBtn(),//字段设置 |
||||
|
this.defaultFreshBtn(),//刷新 |
||||
|
this.defaultFilterBtn(),//筛选 |
||||
|
], |
||||
|
}; |
||||
|
}, |
||||
|
mounted() { |
||||
|
// todo:删除未测试 |
||||
|
this.paging(); |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style lang="scss" scoped> |
||||
|
@import "@/styles/mainbasicData.scss"; |
||||
|
</style> |
Loading…
Reference in new issue