diff --git a/src/i18n/lang/cn.ts b/src/i18n/lang/cn.ts index 2cd097f..a9d0ccd 100644 --- a/src/i18n/lang/cn.ts +++ b/src/i18n/lang/cn.ts @@ -494,5 +494,6 @@ export default { AllThem: '请全部出库', submitted: '还有数据没提交 是否重新查询', StorageLocation: '入库地点', + BCPInventory: '半成品盘点', }, }; diff --git a/src/i18n/lang/en.ts b/src/i18n/lang/en.ts index 2c441d5..c322392 100644 --- a/src/i18n/lang/en.ts +++ b/src/i18n/lang/en.ts @@ -494,5 +494,6 @@ export default { AllThem: 'All of them, please', submitted: 'There is data not submitted whether to re-query', StorageLocation: 'Storage Loc', + BCPInventory: 'Inventory', }, }; diff --git a/src/i18n/lang/ru.ts b/src/i18n/lang/ru.ts index 7897201..d7d6ee4 100644 --- a/src/i18n/lang/ru.ts +++ b/src/i18n/lang/ru.ts @@ -494,5 +494,6 @@ export default { AllThem: 'Все из библиотеки, пожалуйста', submitted: 'Есть также данные, которые не были представлены для повторного запроса', StorageLocation: 'Вход.', + BCPInventory: 'инвентаризац', }, }; diff --git a/src/pages.json b/src/pages.json index 14b7dee..896e6f1 100644 --- a/src/pages.json +++ b/src/pages.json @@ -1186,6 +1186,14 @@ "navigationBarTextStyle": "white" // 状态栏字体为白色,只能为 white-白色,black-黑色 二选一 } }, + { + "path": "pages/raw/Semi-finished/Semi-finished-inventory/index", + "style": { + "navigationBarTitleText": "半成品盘点", + "navigationStyle": "custom", // 隐藏系统导航栏 + "navigationBarTextStyle": "white" // 状态栏字体为白色,只能为 white-白色,black-黑色 二选一 + } + }, { "path": "pages/demo/index", "style": { diff --git a/src/pages/raw/Semi-finished/Semi-finished-inventory/index.vue b/src/pages/raw/Semi-finished/Semi-finished-inventory/index.vue new file mode 100644 index 0000000..97ae3bc --- /dev/null +++ b/src/pages/raw/Semi-finished/Semi-finished-inventory/index.vue @@ -0,0 +1,242 @@ + + + + + diff --git a/src/pages/raw/Semi-finished/Semi-finished-inventory/model.ts b/src/pages/raw/Semi-finished/Semi-finished-inventory/model.ts new file mode 100644 index 0000000..bfd6ae5 --- /dev/null +++ b/src/pages/raw/Semi-finished/Semi-finished-inventory/model.ts @@ -0,0 +1,307 @@ +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; + dnNo?: string; + kw?: string; + userDefined10?: string; + orderStatus?: string; + carNo?: string; + bookingTime?: string; + supplyCode?: string; + poType?: string; + location?: string; +} + +@Module({ + namespaced: true, + dynamic: true, + store, + name: 'raw.ingoods.dnReceipt', +}) +export class ReceiptModule extends VuexModule { + // 是否有 + isState = true; + sendSpot = ''; + code: any = ''; + /** + * sap库存地点列表 + */ + cboPlaceList = []; + /** + * 隐藏看单号 + */ + dnNo = ''; + /** + * 看单号查询结果 + */ + orderInInfo: OrderInInfo = new OrderInInfo(); + /** + * 看单明细 + */ + orderInInfoList: OrderInInfo[] = []; + /** + * 看单明细未通过明细 + */ + orderInInfoListEx: OrderInInfo[] = []; + InventoryList: any = []; + InventoryItemList: any = []; + + /** + * 库位列表 + */ + returningTypeList: any[] = []; + + /** + * 是否已查询看单号 + */ + get hasDnInfo() { + return !!this.orderInInfo.dnNo; + } + + /** + * 是否全选 + */ + 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.location1, { + factoryCode: session.factoryCode, + loginName: session.loginName, + userDefined3: 1, + }); + console.log('result', result); + const cboPlaceList = result.data.records.map((_: any) => ({ + label: _.sendSpot, + value: _.sendSpot, + })); + return { cboPlaceList }; + } + + /** + * 查询单号 + * 查询DN单号 + * @param dnNo + */ + @MutationAction + async queryOrderInInfo(dnNo: string) { + const { list }: any = await http.post(url.material.DNorderin.info, { + dnNo, + factoryCode: session.factoryCode, + loginName: session.loginName, + }); + const orderInInfo = list[0] || {}; + const orderInInfoList = list.filter((_: OrderInInfo) => _.userDefined10 === '1'); + const orderInInfoListEx = list.filter((_: OrderInInfo) => _.userDefined10 === '0'); + // orderInInfoList.forEach((item: any) => { + // item.receiptAmount = item.requestAmount; + // }); + uni.setStorageSync('sendSpot', JSON.stringify(list[0].sendSpot) as any); + return { dnNo, orderInInfo, orderInInfoList, orderInInfoListEx }; + } + + /** + * 查询单号 + * 查询盘点单号 + * @param pddNo + */ + @MutationAction + async rawMaterialInventoryCheckRaw(pddNo: string) { + const res: any = await http.post(url.material.rawMaterialInventory.checkRaw, { + pddNo, + factoryCode: session.factoryCode, + loginName: session.loginName, + }); + const InventoryList = res.data; + const InventoryItemList = []; + InventoryList.forEach((item: any) => { + const arr = { + value: item.productCode, + label: item.productCode, + }; + InventoryItemList.push(arr); + }); + return { InventoryList, InventoryItemList }; + // uni.showToast({ + // icon: "none", + // title: msg, + // }); + } + + /** + * 扫描物料号检查 + * + * @param {string} productCode + * @param {string} pddNo + * @memberof ReceiptModule + */ + @Action + async checkRawProductCode(form: any) { + const { code, msg }: any = await http.post(url.material.rawMaterialInventory.productCode, { + productCode: form.productCode, + pddNo: form.pddNo, + factoryCode: session.factoryCode, + loginName: session.loginName, + }); + uni.showToast({ + icon: 'none', + title: msg, + }); + console.log('code:::', code, msg); + const isState = !!+code; + return { isState }; + } + /** + * 新增单号、物料信息 + * + * @param {string} productCode + * @param {string} pddNo + * @memberof ReceiptModule + */ + @Action + async checkRawCreateInfo(form: any) { + const { msg }: any = await http.post(url.material.rawMaterialInventory.createInfo, { + ...form, + factoryCode: session.factoryCode, + loginName: session.loginName, + }); + uni.showToast({ + icon: 'none', + title: msg, + }); + } + + /** + * 物料盘点确定 + * + * @param {string} productCode + * @param {string} pddNo + * @memberof ReceiptModule + */ + @MutationAction + async checkRawProductComplete(form: any) { + const res: any = await http.post(url.material.rawMaterialInventory.productComplete, { + ...form, + factoryCode: session.factoryCode, + loginName: session.loginName, + }); + const code = res.code; + return { code }; + } + + /** + * 物料盘点完成 + * + * @param {string} productCode + * @param {string} pddNo + * @memberof ReceiptModule + */ + @MutationAction + async checkRawOrderComplete(pddNo?: string | null) { + const res: any = await http.post(url.material.rawMaterialInventory.orderComplete, { + pddNo, + factoryCode: session.factoryCode, + loginName: session.loginName, + }); + const code = res.code; + return { code }; + } + + /** + * 提交看单明细 + */ + @MutationAction + async submitOrderInEnter() { + const list = (this.state as any).orderInInfoList.map((item: any) => { + item.orderStatus = item.checked ? '2' : '1'; + return item; + }); + const result: any = await http.post(url.material.DNorderin.enter, { + dnNo: this.dnNo, + 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', { + warehouseCode: session.warehouseCode, + factoryCode: session.factoryCode, + loginName: session.loginName, + locationCode: kw, + }); + return kw; + } + @Action({ commit: 'updateCheckedOrderInInfoListKw' }) + async queryByFactoryCodeAndWorkAreaCode(content: any) { + const res = await http.post('/wmspda/fg/queryByFactoryCodeAndWorkAreaCode', content); + return res; + } +} + +export default getModule(ReceiptModule);