From 05159702c718d8661eb457f1362b115beeaa421d Mon Sep 17 00:00:00 2001 From: zuozhengqing <a13193816592@163.com> Date: 星期五, 03 十一月 2023 09:51:26 +0800 Subject: [PATCH] 新增补货页面,库存报表列表状态修改 --- src/views/warehouseManage/listingRules/index.vue | 2 src/views/reportForm/inboundOutboundDetail/index.vue | 14 + src/router/operate/index.js | 9 + src/views/operate/orderPoint/index.vue | 445 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/layout/components/appsidebar/index.vue | 1 src/api/product/reorderRules.js | 8 + 6 files changed, 478 insertions(+), 1 deletions(-) diff --git a/src/api/product/reorderRules.js b/src/api/product/reorderRules.js index f2c9a6f..2ddd9e9 100644 --- a/src/api/product/reorderRules.js +++ b/src/api/product/reorderRules.js @@ -39,3 +39,11 @@ data }) } +// 鑾峰彇浣嶇疆鍒楄〃 +export function getLocationList(data) { + return request({ + url: "/api-wms/v1/location/getLocationList", + method: "post", + data + }) +} diff --git a/src/components/layout/components/appsidebar/index.vue b/src/components/layout/components/appsidebar/index.vue index 7ed14e4..64216ba 100644 --- a/src/components/layout/components/appsidebar/index.vue +++ b/src/components/layout/components/appsidebar/index.vue @@ -41,6 +41,7 @@ <el-menu-item index="/operate/inventoryAdjustment">搴撳瓨璋冩暣</el-menu-item> <el-menu-item index="/operate/allot">搴撳瓨璋冩嫧</el-menu-item> <el-menu-item index="/operate/scrap">搴撳瓨鎶ュ簾</el-menu-item> + <el-menu-item index="/operate/orderPoint">琛ヨ揣</el-menu-item> </el-submenu> <el-submenu index="4"> <template slot="title"> diff --git a/src/router/operate/index.js b/src/router/operate/index.js index 5aa40ab..68088c6 100644 --- a/src/router/operate/index.js +++ b/src/router/operate/index.js @@ -2,6 +2,7 @@ const allot = (resolve) => require(["@/views/operate/allot/index"], resolve) // 璋冩嫧 const scrap = (resolve) => require(["@/views/operate/scrap/index"], resolve) // 鎶ュ簾 +const orderPoint = (resolve) => require(["@/views/operate/orderPoint/index"], resolve) // 鎶ュ簾 const inventoryAdjustment = (resolve) => require(["@/views/operate/inventoryAdjustment/index"], resolve) // 搴撳瓨璋冩暣 const inventoryAdjustmentHistory = (resolve) => require(["@/views/operate/inventoryAdjustment/inventoryAdjustmentHistory"], resolve) // 搴撳瓨璋冩暣鍘嗗彶 @@ -24,6 +25,14 @@ } }, { + path: "/operate/orderPoint", + name: "orderPoint", + component: orderPoint, + meta: { + title: "琛ヨ揣" + } + }, + { path: "/operate/inventoryAdjustment", name: "inventoryAdjustment", component: inventoryAdjustment, diff --git a/src/views/operate/orderPoint/index.vue b/src/views/operate/orderPoint/index.vue new file mode 100644 index 0000000..eb8596f --- /dev/null +++ b/src/views/operate/orderPoint/index.vue @@ -0,0 +1,445 @@ +<template> + <div class="rightContent"> + <div class="top"> + <SearchCommonView :add-title="addTitle" :show-discard="showDiscard" :show-apply="false" :placeholder="'璇疯緭鍏ヤ綅缃�/浜у搧'" + :amount-view="false" @addCommonClick="addProductClick" @searchClick="getList" + @discardBtnClick="discardBtnClick" /> + </div> + <div class="content_wrap"> + <div class="con_left"> + <p>浣嶇疆</p> + <div class="stash"> + <template> + <el-tree :data="datas" :props="defaultProps" @node-click="handleNodeClick"></el-tree> + </template> + </div> + </div> + <div class="list-view"> + <div class="table"> + <CommonFormTableView ref="tablelistRef" :isReorder="true" :product-table-list="tableList" + @inputContent="inputContent" @selLocationClick="selLocationClick" @selProductClick="selProductClick" + @tableRowClick="tableRowClick" @selRouteClick="selRouteClick"> + <template slot="tableButton"> + <el-table-column label="鎿嶄綔" width="180" align="center"> + <template slot-scope="scope"> + <span v-if="scope.row.isEdit && scope.row.isView" @click.stop="handleOrderOnceClick(scope.row)" + class="yes-cursor"> + <i class="el-icon-truck"></i> + <span>璁㈣喘涓�娆�</span> + </span> + </template> + </el-table-column> + </template> + </CommonFormTableView> + </div> + <div class="btn-pager"> + <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" /> + </div> + </div> + </div> + </div> +</template> + +<script> +import CommonFormTableView from "@/components/makepager/CommonFormTableView" +import pageMixin from "@/components/makepager/pager/mixin/pageMixin" +import { getReorderRuleList, addReorderRule, updateReorderRule, orderAgain,getLocationList } from "@/api/product/reorderRules" +import { currentTime } from "@/common/config/index" +export default { + name: "ReorderRules", + props: {}, + components: { CommonFormTableView }, + mixins: [pageMixin], + computed: {}, + data() { + return { + datas:[], + // datas: [{ + // label: '涓�绾� 1', + // children: [{ + // label: '浜岀骇 1-1', + // children: [{ + // label: '涓夌骇 1-1-1' + // }] + // }] + // }, { + // label: '涓�绾� 2', + // children: [{ + // label: '浜岀骇 2-1', + // children: [{ + // label: '涓夌骇 2-1-1' + // }] + // }, { + // label: '浜岀骇 2-2', + // children: [{ + // label: '涓夌骇 2-2-1' + // }] + // }] + // }, { + // label: '涓�绾� 3', + // children: [{ + // label: '浜岀骇 3-1', + // children: [{ + // label: '涓夌骇 3-1-1' + // }] + // }, { + // label: '浜岀骇 3-2', + // children: [{ + // label: '涓夌骇 3-2-1' + // }] + // }] + // }], + defaultProps: { + children: 'children', + label: 'jointName' + }, + addTitle: "鏂板缓", + showDiscard: false, + tableList: {}, + tableData: [], + searchOptions: [], + countId: 0, + isNoProduct: true, // 娣诲姞鏄庣粏琛屾椂鏄惁鏈変骇鍝佹湭閫夋嫨 + isRowClick: false, + locationId: 0, + productId: 0, + amount: 0, + operationId: 0, + minInventory: 0, + maxInventory: 0, + orderNumber: 0, + unit: "", + reorderId: 0 + } + }, + created() { + this.setTable() + this.getData() + this.getLocationList() + }, + methods: { + setTable() { + this.tableList = { + tableData: this.tableData, + selectBox: false, + selectIndex: true, + tableColumn: [ + { label: "浜у搧", prop: "productName", product: true }, + { label: "浣嶇疆", prop: "locationName", defaultLocation: true }, + { label: "鍦ㄥ簱鏁伴噺", prop: "amount" }, + { label: "棰勬祴鏁伴噺", prop: "prediction" }, + { label: "棣栭�夎矾绾�", prop: "route", route: true }, + { label: "鏈�灏忔暟閲�", prop: "minInventory", inputFloat: true }, + { label: "鏈�澶ф暟閲�", prop: "maxInventory", inputFloat: true }, + { label: "璁㈣喘鏁伴噺", prop: "orderNumber", inputFloat: true }, + { label: "璁¢噺鍗曚綅", prop: "unit" } + ] + } + }, + // 璇锋眰鏁版嵁 + async getData() { + await getReorderRuleList({ + page: this.pagerOptions.currPage, + pageSize: this.pagerOptions.pageSize + }).then((res) => { + if (res.code === 200) { + console.log(res) + const list = res.data.map((item) => { + let orderNum = 0 + if (parseFloat(item.minInventory) - parseFloat(item.prediction) > 0) { + orderNum = this.caculateOrderNumber( + parseFloat(item.minInventory), + parseFloat(item.maxInventory), + parseFloat(item.prediction) + ) + } + return { + ...item, + productName: item.product.name, + locationName: item.location.name, + isSet: false, + isEdit: true, + editable: true, + isOrder: true, + isView: item?.minInventory - item?.prediction > 0 ? true : false, + orderNumber: orderNum + } + }) + this.tableList.tableData = list || [] + this.tableData = list || [] + this.pagerOptions.totalCount = res.total + } + }) + }, + // 鎶�鏈璐暟閲� + caculateOrderNumber(minInventory, maxInventory, prediction) { + return maxInventory > minInventory ? maxInventory - prediction : minInventory - prediction + }, + // 鎿嶄綔杈撳叆 + inputContent(val, prop, row) { + console.log(val, prop, row) + if (prop === "minInventory") { + this.minInventory = val + if (parseFloat(this.minInventory) - parseFloat(this.prediction) > 0) { + this.orderNumber = this.caculateOrderNumber( + parseFloat(this.minInventory), + parseFloat(this.maxInventory), + parseFloat(this.prediction) + ) + } + } else if (prop === "maxInventory") { + this.maxInventory = val + if (parseFloat(this.minInventory) - parseFloat(this.prediction) > 0) { + this.orderNumber = this.caculateOrderNumber( + parseFloat(this.minInventory), + parseFloat(this.maxInventory), + parseFloat(this.prediction) + ) + } + } else if (prop === "orderNumber") { + this.orderNumber = val + } + }, + // 鏂板 + addProductClick() { + console.log(this.addTitle) + this.isSel() + if (this.isNoProduct && this.addTitle === "鏂板缓") { + this.$refs.tablelistRef.getProductList() + this.$refs.tablelistRef.getLocationList() + this.addTitle = "淇濆瓨" + this.showDiscard = true + this.isRowClick = false + this.operationId = 0 + this.currentRowId = 0 + this.countId++ + this.tableData.unshift({ + countId: this.countId, + amount: 0, + minInventory: 0, + productId: "", + maxInventory: 0, + orderNumber: 0, + prediction: 0, + locationId: 0, + createDate: this.currentTime(), + isSet: true, + isEdit: false, + editable: false, + isOrder: true + }) + this.locationId = 0 + this.productId = 0 + } else { + this.addTitle = "鏂板缓" + this.showDiscard = false + let requestUrl = this.currentRowId === 0 ? addReorderRule : updateReorderRule + let params = this.saveParams() + requestUrl(params) + .then((res) => { + console.log(res) + if (res.code === 200) { + let tipStr = this.currentRowId === 0 ? "娣诲姞鎴愬姛" : "淇敼鎴愬姛" + this.$message.success(tipStr) + this.getData() + } + }) + .catch((err) => { + console.log(err) + this.getData() + }) + // } + } + }, + saveParams() { + return { + id: this.reorderId, + amount: this.amount, + locationId: this.locationId, + maxInventory: this.maxInventory, + minInventory: this.minInventory, + orderNumber: this.orderNumber, + prediction: this.prediction, + operationId: this.operationId, + productId: this.productId, + route: this.route, + unit: this.unit + } + }, + // 鏄惁閫夋嫨浜у搧 + isSel() { + for (let i = 0; i < this.tableData.length; i++) { + if (this.tableData[i].productName?.length === 0) { + this.isNoProduct = false + break + } else { + this.isNoProduct = true + } + } + }, + // 鍙栨秷 + discardBtnClick() { + this.getData() + this.addTitle = "鏂板缓" + this.showDiscard = false + }, + // 璁㈣喘涓�娆� + handleOrderOnceClick(row) { + let params = { + ...row + } + orderAgain(params).then((res) => { + if (res.code === 200) { + this.$message.success("璁㈣喘鎴愬姛") + this.getData() + } + }) + }, + // 琛岀偣鍑� + tableRowClick(row, rowIndex) { + this.locationId = row.locationId + this.rowIndex = rowIndex + this.reorderId = row.id + this.isSel() + if (!this.isNoProduct && this.currentRowId === 0) { + this.$message.error("璇峰畬鎴愬綋鍓嶆柊寤烘垨鍙栨秷鏂板缓") + } else { + this.currentRowId = row.id + this.addTitle = "淇濆瓨" + this.showDiscard = true + this.isRowClick = true + if (!this.isNoProduct) { + this.tableData.splice(this.tableData.length - 1, 1) + } + this.tableData.map((item, index) => { + if (index === rowIndex) { + item.isEdit = false + item.editable = true + item.isOrder = true + } else { + item.isEdit = true + } + }) + this.minInventory = row.minInventory + this.amount = row.amount + this.productId = row.productId + this.maxInventory = row.maxInventory + this.orderNumber = row.orderNumber + this.prediction = row.prediction + this.locationId = row.locationId + } + }, + // 鎼滅储 + getList(val) { + this.keyword = val + this.pagerOptions.currPage = 1 + this.getData() + }, + // 閫変腑浣嶇疆鏂规硶 + selLocationClick(item, prop) { + console.log(item, prop) + this.locationId = item?.value ?? item?.id + }, + // 閫変腑浜у搧鏂规硶 + selProductClick(item) { + this.productId = item.value + this.unit = item.unit + }, + // 閫変腑璺嚎鏂规硶 + selRouteClick(item, prop) { + console.log(item, prop) + this.route = item.label + }, + // 鑾峰彇褰撳墠鏃堕棿 + currentTime() { + return currentTime() + }, + //鏍戠偣鍑� + handleNodeClick(data) { + console.log(data,"sss"); + getReorderRuleList({ + locationId:data.id, + page:1, + pageSize:15, + type:"", + keyWord:data.jointName, + }).then((res)=>{ + console.log(res,"res999") + if (res.code === 200) { + console.log(res) + const list = res.data.map((item) => { + let orderNum = 0 + if (parseFloat(item.minInventory) - parseFloat(item.prediction) > 0) { + orderNum = this.caculateOrderNumber( + parseFloat(item.minInventory), + parseFloat(item.maxInventory), + parseFloat(item.prediction) + ) + } + return { + ...item, + productName: item.product.name, + locationName: item.location.name, + isSet: false, + isEdit: true, + editable: true, + isOrder: true, + isView: item?.minInventory - item?.prediction > 0 ? true : false, + orderNumber: orderNum + } + }) + this.tableList.tableData = list || [] + this.tableData = list || [] + this.pagerOptions.totalCount = res.total + } + }) + }, + async getLocationList(){ + await getLocationList({ + categoryId:"", + keyWord:"", + // page:1, + // pageSize:, + }).then((res)=>{ + this.datas=res.data + console.log(res,"res666") + }) + } + } +} +</script> + +<!-- Add "scoped" attribute to limit CSS to this component only --> +<style lang="scss" scoped> +::v-deep { + .el-table { + border-top-left-radius: 12px; + border-top-right-radius: 12px; + overflow: auto; + } + .content_wrap { + height: calc(100% - 0px); + display: flex; + justify-content: space-between; + .con_left { + width: 200px; + .el-checkbox-group { + width:100%; + display: flex; + flex-direction: column; + } + .stash { + display: flex; + flex-direction: column; + .el-tree{ + background-color: #E6ECF2; + } + } + } + .list-view { + flex: 1; + } +} + +} +</style> diff --git a/src/views/reportForm/inboundOutboundDetail/index.vue b/src/views/reportForm/inboundOutboundDetail/index.vue index a38bdc0..c6ee050 100644 --- a/src/views/reportForm/inboundOutboundDetail/index.vue +++ b/src/views/reportForm/inboundOutboundDetail/index.vue @@ -212,6 +212,20 @@ pageSize: this.pagerOptions.pageSize }).then((res) => { if (res.code === 200) { + // let arr=[] + res.data.map((item)=>{ + if(item.baseOperationType===1){ + item.baseOperationType="鏀惰揣" + }else if(item.baseOperationType===2){ + item.baseOperationType="浜よ揣" + }else if(item.baseOperationType===3){ + item.baseOperationType="鍐呴儴璋冩嫧" + }else if(item.baseOperationType===4){ + item.baseOperationType="鎶ュ簾" + }else if(item.baseOperationType===5){ + item.baseOperationType="搴撳瓨鐩樼偣" + } + }) this.tableList.tableInfomation = res.data this.pagerOptions.totalCount = res.total } diff --git a/src/views/warehouseManage/listingRules/index.vue b/src/views/warehouseManage/listingRules/index.vue index b7be896..6e0c9d6 100644 --- a/src/views/warehouseManage/listingRules/index.vue +++ b/src/views/warehouseManage/listingRules/index.vue @@ -221,7 +221,7 @@ isSel() { for (let i = 0; i < this.tableData.length; i++) { if (this.tableData[i].productName.length === 0) { - this.isNoProduct = true + this.isNoProduct = true // 鏆傛椂淇敼涓簍rue锛屽鏋滀骇鍝佷互鍚庢槸蹇呭~锛屾敼涓篺alse灏辫 break } else { this.isNoProduct = true -- Gitblit v1.8.0