|
|
import { Action, getModule, Module, Mutation, MutationAction, VuexModule } from 'vuex-module-decorators';
|
|
|
import store from '@/store';
|
|
|
import http from '@/utils/request';
|
|
|
import { url } from '@/utils/url';
|
|
|
import { session } from '@/store/modules/session';
|
|
|
import vm from '@/main';
|
|
|
@Module({
|
|
|
namespaced: true,
|
|
|
dynamic: true,
|
|
|
store,
|
|
|
name: 'raw.handover.picking',
|
|
|
})
|
|
|
export class PickingModule extends VuexModule {
|
|
|
/**
|
|
|
* 查询列表
|
|
|
*/
|
|
|
proOrderList: any[] = [];
|
|
|
detailedList: any;
|
|
|
mrpCodeRegion: '';
|
|
|
sapFactoryCode: '';
|
|
|
formParams: '';
|
|
|
code = '';
|
|
|
orderOutIdList: any;
|
|
|
NEWparams: any;
|
|
|
LocList: any = [];
|
|
|
lockCode: any = '';
|
|
|
// 容器码返回
|
|
|
ContainerCode: any = '';
|
|
|
|
|
|
/**
|
|
|
* 查询结果列表(按单列表)
|
|
|
*/
|
|
|
proOrderResultList: any[] = [];
|
|
|
|
|
|
/**
|
|
|
* 查询结果汇总列表
|
|
|
*/
|
|
|
aggregateList: any[] = [];
|
|
|
|
|
|
/**
|
|
|
* 库存地点列表
|
|
|
*/
|
|
|
locationList = [];
|
|
|
|
|
|
/**
|
|
|
* 是否全选
|
|
|
*/
|
|
|
get isCheckedAll() {
|
|
|
return !this.proOrderList.filter((_: any) => !_.checked).length;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 是否有选择项
|
|
|
*/
|
|
|
get hasChecked() {
|
|
|
return this.checkedProOrderList.length > 0;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取选中的查询列表
|
|
|
*/
|
|
|
get checkedProOrderList() {
|
|
|
return this.proOrderList.filter((_: any) => _.checked);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 汇总列表是否全选
|
|
|
*/
|
|
|
get isAggregateCheckedAll() {
|
|
|
return !this.aggregateList.filter((_: any) => !_.checked).length;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 汇总列表是否有选择项
|
|
|
*/
|
|
|
get hasAggregateChecked() {
|
|
|
return this.checkedAggregateList.length > 0;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取选中的汇总列表
|
|
|
*/
|
|
|
get checkedAggregateList() {
|
|
|
return this.aggregateList.filter((_: any) => _.checked);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 汇总列表中是否有本次拣配数量
|
|
|
*/
|
|
|
get hasAggregateCurrentAmount() {
|
|
|
return this.aggregateList.findIndex((_: any) => _.currentAmount) > -1;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取汇总上传列表数据
|
|
|
*/
|
|
|
get aggregateUploadList() {
|
|
|
return this.aggregateList.map((item: any) => {
|
|
|
if (!item.checked) {
|
|
|
item.currentAmount = 0;
|
|
|
}
|
|
|
return item;
|
|
|
});
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 结果列表是否全选
|
|
|
*/
|
|
|
get isProOrderResultCheckedAll() {
|
|
|
return !this.proOrderResultList.filter((_: any) => !_.checked).length;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 结果列表是否有选择项
|
|
|
*/
|
|
|
get hasProOrderResultChecked() {
|
|
|
return this.checkedProOrderResultList.length > 0;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取选中的结果列表
|
|
|
*/
|
|
|
get checkedProOrderResultList() {
|
|
|
return this.proOrderResultList.filter((_: any) => _.checked);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 结果列表中是否有本次拣配数量
|
|
|
*/
|
|
|
get hasProOrderResultCurrentAmount() {
|
|
|
return this.proOrderResultList.findIndex((_: any) => _.currentAmount) > -1;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取按单上传列表数据
|
|
|
*/
|
|
|
get proOrderResultUploadList() {
|
|
|
return this.proOrderResultList.map((item: any) => {
|
|
|
if (!item.checked) {
|
|
|
item.currentAmount = 0;
|
|
|
}
|
|
|
return item;
|
|
|
});
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 清理状态数据
|
|
|
*/
|
|
|
@Mutation
|
|
|
clearState() {
|
|
|
this.proOrderList = [];
|
|
|
this.proOrderResultList = [];
|
|
|
this.aggregateList = [];
|
|
|
}
|
|
|
/**
|
|
|
* 查询列表
|
|
|
*/
|
|
|
@Mutation
|
|
|
clearProOrderList() {
|
|
|
this.proOrderList = [];
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 全选/取消全选查询列表
|
|
|
* @param checked
|
|
|
*/
|
|
|
@Mutation
|
|
|
checkAllProOrderList(checked: boolean) {
|
|
|
this.proOrderList = this.proOrderList.map((item: any) => ({
|
|
|
...item,
|
|
|
checked,
|
|
|
}));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 全选/取消全选汇总列表
|
|
|
* @param checked
|
|
|
*/
|
|
|
@Mutation
|
|
|
checkAllAggregateList(checked: boolean) {
|
|
|
this.aggregateList = this.aggregateList.map((item: any) => ({
|
|
|
...item,
|
|
|
checked,
|
|
|
}));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 确认选中汇总列表
|
|
|
* @param params
|
|
|
*/
|
|
|
@Mutation
|
|
|
confirmCheckedAggregateList(params: { locationCode: string; amount: number }) {
|
|
|
this.aggregateList
|
|
|
.filter((_: any) => _.checked)
|
|
|
.forEach((item: any) => {
|
|
|
if (params.locationCode) {
|
|
|
item.currentWkposCode = params.locationCode;
|
|
|
}
|
|
|
if (params.amount) {
|
|
|
item.currentAmount = params.amount;
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 全选/取消全选按单列表
|
|
|
* @param checked
|
|
|
*/
|
|
|
@Mutation
|
|
|
checkAllProOrderResultList(checked: boolean) {
|
|
|
this.proOrderResultList = this.proOrderResultList.map((item: any) => ({
|
|
|
...item,
|
|
|
checked,
|
|
|
}));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 确认选中按单列表
|
|
|
* @param params
|
|
|
*/
|
|
|
@Mutation
|
|
|
confirmCheckedProOrderResultList(params: { amount: number }) {
|
|
|
this.proOrderResultList
|
|
|
.filter((_: any) => _.checked)
|
|
|
.forEach((item: any) => {
|
|
|
// if (params.locationCode) {
|
|
|
// item.currentWkposCode = params.locationCode;
|
|
|
// }
|
|
|
if (params.amount) {
|
|
|
item.currentAmount = params.amount;
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查询看单号
|
|
|
* @param params
|
|
|
*/
|
|
|
@MutationAction
|
|
|
async queryProOrder(params: any) {
|
|
|
const { list: proOrderList }: any = await http.post(url.sortscan.query.prdorder, params);
|
|
|
if (!proOrderList.length) {
|
|
|
// uni.showToast({
|
|
|
// icon: 'none',
|
|
|
// title: 'No Data Found!',
|
|
|
// });
|
|
|
vm.customToast(vm.$t('message.Pi_NoDataFound') as any);
|
|
|
}
|
|
|
return { proOrderList };
|
|
|
}
|
|
|
@MutationAction
|
|
|
async queryOrder() {
|
|
|
const { list: proOrderList }: any = await http.post(url.sortscan.query.prdorder, this.formParams);
|
|
|
if (!proOrderList.length) {
|
|
|
// uni.showToast({
|
|
|
// icon: 'none',
|
|
|
// title: 'No Data Found!',
|
|
|
// });
|
|
|
vm.customToast(vm.$t('message.Pi_NoDataFound') as any);
|
|
|
}
|
|
|
return { proOrderList };
|
|
|
}
|
|
|
/**
|
|
|
* 查询库存
|
|
|
* @param params
|
|
|
*/
|
|
|
@Action({ commit: 'updateCheckedOrderInInfoListKw' })
|
|
|
async queryStockList(params: any) {
|
|
|
const res: any = await http.post('/material/queryOdsRawStorageNews', params);
|
|
|
return res;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查询结果列表
|
|
|
* @param params
|
|
|
*/
|
|
|
@MutationAction
|
|
|
async queryProOrderResult(params: any) {
|
|
|
const { list: proOrderResultList }: any = await http.post(url.sortscan.query.prdorderList, params);
|
|
|
proOrderResultList.forEach((item: any) => {
|
|
|
(item.loginName = params.loginName), (item.differences = parseFloat(item.amount) - parseFloat(item.totalMoAmount));
|
|
|
});
|
|
|
return { proOrderResultList };
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查询结果-汇总列表
|
|
|
* @param params
|
|
|
*/
|
|
|
@MutationAction
|
|
|
async queryAggregateList(params: any) {
|
|
|
const { list: aggregateList }: any = await http.post(url.sortscan.query.aggregateList, params);
|
|
|
if (!aggregateList.length) {
|
|
|
// uni.showToast({
|
|
|
// icon: 'none',
|
|
|
// title: 'No Data Found!',
|
|
|
// });
|
|
|
// vm.customToast(vm.$t('message.Pi_NoDataFound') as any);
|
|
|
return;
|
|
|
}
|
|
|
aggregateList.forEach((item: any) => {
|
|
|
(item.loginName = params.loginName), (item.differences = parseFloat(item.amount) - parseFloat(item.totalMoAmount));
|
|
|
});
|
|
|
return { aggregateList };
|
|
|
}
|
|
|
/**
|
|
|
* 查询库存地点列表 这里后期可能会改成url.auth.locations list相应得改成values 也不用item了 类型也改成string
|
|
|
*/
|
|
|
@MutationAction
|
|
|
async queryLocationList() {
|
|
|
const params = {
|
|
|
factoryCode: session.factoryCode,
|
|
|
loginName: session.loginName,
|
|
|
};
|
|
|
const { values }: any = await http.post(url.auth.locations, params);
|
|
|
const locationList = values.map((value: string) => ({
|
|
|
label: value,
|
|
|
value,
|
|
|
}));
|
|
|
return { locationList };
|
|
|
}
|
|
|
@MutationAction
|
|
|
async lock(params: any) {
|
|
|
const res: any = await http.post(url.sortscan.lock.list, params);
|
|
|
const lockCode = res.code;
|
|
|
return { lockCode };
|
|
|
}
|
|
|
//俄罗斯汇总拣配扫描容器码
|
|
|
@MutationAction
|
|
|
async searchBarcode(params: any) {
|
|
|
const res: any = await http.post(url.auth.query.barcode, params);
|
|
|
const ContainerCode = res.data;
|
|
|
return { ContainerCode };
|
|
|
}
|
|
|
/**
|
|
|
* 上传汇总列表
|
|
|
*/
|
|
|
// @Action({ commit: 'clearState' })
|
|
|
@MutationAction
|
|
|
async saveAggregateUploadRussia(params: any) {
|
|
|
const res: any = await http.post(url.sortscan.save.aggregateRussia, params);
|
|
|
console.log('res', res);
|
|
|
const code = res.code;
|
|
|
return { code };
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 上传按单列表
|
|
|
*/
|
|
|
// @Action({ commit: 'clearState' })
|
|
|
@MutationAction
|
|
|
async saveProOrderResultUploadRussia(dataList: any[]) {
|
|
|
const res: any = await http.post(url.sortscan.save.orderRussia, dataList);
|
|
|
const code = res.code;
|
|
|
console.log('code', code);
|
|
|
return { code };
|
|
|
}
|
|
|
@MutationAction
|
|
|
async queryItemLoc(params: any = {}) {
|
|
|
const res: any = await http.post(url.sortscan.save.queryWlByMat, params);
|
|
|
const LocList = [];
|
|
|
res.forEach((item: any) => {
|
|
|
const arr: any = {
|
|
|
label: item.locationCode,
|
|
|
value: item.locationCode + '(' + item.sendSpot + ')' + '(' + item.amount + ')',
|
|
|
};
|
|
|
LocList.push(arr);
|
|
|
});
|
|
|
console.log('res', res);
|
|
|
console.log('LocList', LocList);
|
|
|
return { LocList };
|
|
|
}
|
|
|
/**
|
|
|
* 解锁数据
|
|
|
* @param list
|
|
|
*/
|
|
|
@Action
|
|
|
async unlockProOrderResult(list: any[]) {
|
|
|
try {
|
|
|
await http.post(url.sortscan.unlock.list, list, {
|
|
|
custom: { hideError: true },
|
|
|
} as any);
|
|
|
} catch {
|
|
|
//
|
|
|
}
|
|
|
}
|
|
|
@Action
|
|
|
async unlockAggregateResult(params: any) {
|
|
|
try {
|
|
|
await http.post(url.sortscan.unlock.aggregateList, params);
|
|
|
} catch {
|
|
|
//
|
|
|
}
|
|
|
}
|
|
|
/**
|
|
|
* 锁定数据
|
|
|
* @param list
|
|
|
*/
|
|
|
@Action
|
|
|
async lockProOrderResult(list: any[]) {
|
|
|
await http.post(url.sortscan.lock.list, list);
|
|
|
}
|
|
|
|
|
|
@Action({ commit: 'updateCheckedOrderInInfoListKw' })
|
|
|
async queryByFactoryCodeAndWorkAreaCode(content: any) {
|
|
|
const res = await http.post('/wmspda/fg/queryByFactoryCodeAndWorkAreaCode', content);
|
|
|
return res;
|
|
|
}
|
|
|
//查询拣配明细
|
|
|
@Action({ commit: 'updateCheckedOrderInInfoListKw' })
|
|
|
async querydetaildlist(content: any) {
|
|
|
const res: any = await http.post('/wmspda/sortscan/getJhListSn', content);
|
|
|
this.detailedList = res.list;
|
|
|
console.log(this.detailedList);
|
|
|
return res;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
export default getModule(PickingModule);
|