You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
184 lines
4.1 KiB
TypeScript
184 lines
4.1 KiB
TypeScript
4 years ago
|
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';
|
||
|
|
||
|
class OrderInInfo {
|
||
|
checked?: boolean;
|
||
|
kdOrderNo?: string;
|
||
|
kw?: string;
|
||
|
userDefined10?: string;
|
||
|
orderStatus?: string;
|
||
|
}
|
||
|
|
||
|
@Module({
|
||
|
namespaced: true,
|
||
|
dynamic: true,
|
||
|
store,
|
||
|
name: 'raw.ingoods.receipt',
|
||
|
})
|
||
|
export class ReceiptModule extends VuexModule {
|
||
|
/**
|
||
|
* sap库存地点列表
|
||
|
*/
|
||
|
cboPlaceList = [];
|
||
|
/**
|
||
|
* 隐藏看单号
|
||
|
*/
|
||
|
hideKdOrderNo = '';
|
||
|
/**
|
||
|
* 看单号查询结果
|
||
|
*/
|
||
|
orderInInfo: OrderInInfo = new OrderInInfo();
|
||
|
/**
|
||
|
* 看单明细
|
||
|
*/
|
||
|
orderInInfoList: OrderInInfo[] = [];
|
||
|
/**
|
||
|
* 看单明细未通过明细
|
||
|
*/
|
||
|
orderInInfoListEx: OrderInInfo[] = [];
|
||
|
|
||
|
/**
|
||
|
* 是否已查询看单号
|
||
|
*/
|
||
|
get hasOrderInInfo() {
|
||
|
return !!this.orderInInfo.kdOrderNo;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 是否全选
|
||
|
*/
|
||
|
get isCheckedAll() {
|
||
|
return !this.orderInInfoList.filter((_) => !_.checked).length;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 是否有选择项
|
||
|
*/
|
||
|
get hasChecked() {
|
||
|
return this.orderInInfoList.filter((_) => _.checked).length > 0;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 更新看单明细库位
|
||
|
* @param kw 库位
|
||
|
*/
|
||
|
@Mutation
|
||
|
updateOrderInInfoListKw(kw: string) {
|
||
|
this.orderInInfoList = this.orderInInfoList.map((item) => {
|
||
|
item.kw = kw;
|
||
|
return item;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 更新选中的看单明细库位
|
||
|
* @param kw 库位
|
||
|
*/
|
||
|
@Mutation
|
||
|
updateCheckedOrderInInfoListKw(kw: string) {
|
||
|
this.orderInInfoList = this.orderInInfoList.map((item) => {
|
||
|
if (item.checked) {
|
||
|
item.kw = kw;
|
||
|
}
|
||
|
return item;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 看单明细全选/全不选
|
||
|
*/
|
||
|
@Mutation
|
||
|
checkAllOrderInInfoList(checked: boolean) {
|
||
|
this.orderInInfoList = this.orderInInfoList.map((item) => {
|
||
|
item.checked = checked;
|
||
|
return item;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 查询库位列表
|
||
|
*/
|
||
|
@MutationAction
|
||
|
async queryLocation() {
|
||
|
const result: any = await http.post(url.auth.query.location, {
|
||
|
factoryCode: session.factoryCode,
|
||
|
loginName: session.loginName,
|
||
|
workareaCode: session.workareaCode,
|
||
|
});
|
||
|
const cboPlaceList = result.list.map((_: any) => ({
|
||
|
label: _.locationCode,
|
||
|
value: _.locationCode,
|
||
|
}));
|
||
|
return { cboPlaceList };
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 查询看单号
|
||
|
* @param hideKdOrderNo
|
||
|
*/
|
||
|
@MutationAction
|
||
|
async queryOrderInInfo(hideKdOrderNo: string) {
|
||
|
const { list }: any = await http.post(url.material.POorderin.info, {
|
||
|
hideKdOrderNo,
|
||
|
factoryCode: session.factoryCode,
|
||
|
loginName: session.loginName,
|
||
|
});
|
||
|
const orderInInfo = list[0] || {};
|
||
|
const orderInInfoList = list.filter((_: OrderInInfo) => _.userDefined10 === '1');
|
||
|
const orderInInfoListEx = list.filter((_: OrderInInfo) => _.userDefined10 === '0');
|
||
|
return { hideKdOrderNo, orderInInfo, orderInInfoList, orderInInfoListEx };
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 提交看单明细
|
||
|
*/
|
||
|
@MutationAction
|
||
|
async submitOrderInEnter() {
|
||
|
const list = (this.state as any).orderInInfoList.map((item: any) => {
|
||
|
item.orderStatus = item.checked ? '2' : '1';
|
||
|
item.requestAmount = item.checked ? item.y : '0';
|
||
|
return item;
|
||
|
});
|
||
|
const result: any = await http.post(url.material.POorderin.enter, {
|
||
|
hideKdOrderNo: this.hideKdOrderNo,
|
||
|
factoryCode: session.factoryCode,
|
||
|
loginName: session.loginName,
|
||
|
list,
|
||
|
});
|
||
|
uni.showToast({
|
||
|
icon: 'none',
|
||
|
title: result.msg,
|
||
|
});
|
||
|
const orderInInfoList = result.list.sort(
|
||
|
(a: any, b: any) => Number(a.accountingStatus) - Number(b.accountingStatus),
|
||
|
);
|
||
|
return { orderInInfoList };
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 修改库位
|
||
|
*/
|
||
|
@Action({ commit: 'updateCheckedOrderInInfoListKw' })
|
||
|
async changeOrderInLocation(kw: string) {
|
||
|
await http.post('/material/orderin/enter', {
|
||
|
loginName: session.loginName,
|
||
|
warehouseCode: '',
|
||
|
factoryCode: session.factoryCode,
|
||
|
locationCode: kw,
|
||
|
});
|
||
|
return kw;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export default getModule(ReceiptModule);
|