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.

189 lines
4.1 KiB
TypeScript

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("/wmspda/material/orderin/enter", {
loginName: session.loginName,
warehouseCode: "",
factoryCode: session.factoryCode,
locationCode: kw,
});
return kw;
}
}
export default getModule(ReceiptModule);