From 5ecb7958c96d3f0b6d47b79aff7eb306c2cf690f Mon Sep 17 00:00:00 2001 From: charles <981744753@qq.com> Date: 星期二, 06 八月 2024 11:16:58 +0800 Subject: [PATCH] gitlab上面的wms转移到公司git --- src/views/reportForm/locationReport/index.vue | 521 +++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 354 insertions(+), 167 deletions(-) diff --git a/src/views/reportForm/locationReport/index.vue b/src/views/reportForm/locationReport/index.vue index 3de4f88..c1e0a0f 100644 --- a/src/views/reportForm/locationReport/index.vue +++ b/src/views/reportForm/locationReport/index.vue @@ -1,65 +1,111 @@ +<!-- 浣嶇疆鎶ヨ〃 --> <template> <div class="rightContent"> <div class="top"> - <div> - <SearchCommonView - :add-title="'鏂板缓'" - :showAdd="true" - :placeholder="'璇疯緭鍏ュ弬鑰�'" - :amount-view="false" - @addCommonClick="addBtnClick" - @searchClick="getList" - /> - </div> + <SearchCommonView + :add-title="'鏂板缓'" + :showAdd="false" + :placeholder="'璇疯緭鍏ヤ綅缃悕绉般�佷骇鍝佸悕绉版垨浜у搧绫诲埆'" + :amount-view="false" + @addCommonClick="addBtnClick" + @searchClick="getList" + :isDisabled="true" + :showDownload="true" + @downloadClick="downHttpClick" + /> </div> - <div class="list-view"> - <TableCommonView - ref="tableListRef" - :table-list="tableList" - @selTableCol="selTableCol" - @tableRowClick="tableRowClick" - > - <template slot="tableButton"> - <el-table-column - label="鎿嶄綔" - width="210" - align="center" + <div class="container"> + <div class="list-left"> + <!--<div class="title">浠撳簱</div> + <div class="tree-location"> + <el-tree + :show-checkbox="true" + :data="warehouseList" + :props="treeProps" + @check-change="warehouseChangeNode" + ></el-tree> + </div>--> + <div class="title">浣嶇疆</div> + <div class="tree-location"> + <el-tree + node-key="id" + :data="locationList" + show-checkbox + :props="treeProps" + :default-expanded-keys="checkedLocationList" + :default-checked-keys="checkedLocationList" + @check="locationCheck" + ></el-tree> + </div> + </div> + <div class="list-view" style="margin-left: 10px"> + <div class="table"> + <TableCommonView + ref="tableListRef" + :table-list="tableList" + @selTableCol="selTableCol" + @tableRowClick="tableRowClick" + :showSummary="true" > - <template slot-scope="scope"> - <span @click="handleHistoryClick(scope.row)"> - <i class="el-icon-refresh-left"></i> - <span>鍘嗗彶</span> - </span> - <span @click="handleAddGoods(scope)" class="margin_left_5px"> - <i class="el-icon-refresh"></i> - <span>琛ヨ揣</span> - </span> + <template slot="tableButton"> + <el-table-column label="鍦ㄥ簱鏁伴噺" prop='amount'> + <el-table-column v-for="unit in unitList" :label="unit.name" prop='amount' min="90"> + <template slot-scope="scope"> + {{getUnitValue(scope.row.amountMoreUnits,unit.name,scope.row.amount,scope.row.unit)}} + </template> + </el-table-column> + <!--<el-table-column label="鍖�" prop='amount' min="90"> + <template slot-scope="scope"> + {{getUnitValue(scope.row.amountMoreUnits,'鍖�',scope.row.amount,scope.row.unit)}} + </template> + </el-table-column> + <el-table-column label="绫虫暟" prop='amount' min="90"> + <template slot-scope="scope"> + {{getUnitValue(scope.row.amountMoreUnits,'绫虫暟',scope.row.amount,scope.row.unit)}} + </template> + </el-table-column> + <el-table-column label="閲嶉噺" prop='amount' min="90"> + <template slot-scope="scope"> + {{getUnitValue(scope.row.beginMoreUnitsArr,'閲嶉噺',scope.row.beginAmount,scope.row.unit)}} + </template> + </el-table-column>--> + </el-table-column> + <el-table-column label="鎿嶄綔" width="210" align="center"> + <template slot-scope="scope"> + <span @click="handleHistoryClick(scope.row)" class="yes-cursor"> + <i class="el-icon-refresh-left"></i> + <span>鍘嗗彶</span> + </span> + <span @click="handleAddGoods(scope.row)" class="margin_left_5px"> + <i class="el-icon-refresh"></i> + <span>琛ヨ揣</span> + </span> + </template> + </el-table-column> </template> - </el-table-column> - </template> - </TableCommonView> - <div class="btn-pager"> - <PagerView - class="page" - :pager-options="pagerOptions" - v-on="pagerEvents" - /> + </TableCommonView> + </div> + <div class="btn-pager"> + <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" /> + </div> </div> </div> <!-- 缂栬緫 --> - <AddOverviewDialog - v-if="editConfig.visible" - :edit-common-config="editConfig" - :add-name="this.$route.params.name" - /> + <AddOverviewDialog v-if="editConfig.visible" :edit-common-config="editConfig" :add-name="this.$route.params.name" /> </div> </template> <script> -import pageMixin from "@/components/makepager/pager/mixin/pageMixin"; -import { getProductOperatonList } from "@/api/product/product"; -import AddOverviewDialog from "@/views/overview/AddOverviewDialog"; - +import pageMixin from "@/components/makepager/pager/mixin/pageMixin" +import { getLocationData } from "@/api/locationApi/locationApi" +import AddOverviewDialog from "@/views/overview/AddOverviewDialog" +import { downloadLocationForms } from "@/api/downFile" +import FileSaver from 'file-saver' +import _ from 'lodash' +import { getLocationList } from "@/api/overview/overview"; +import {getTreeData} from '@/common/untils/index.js'; +import {getWarehouseList} from '@/api/warehouseManage/warehouse.js' +import {getUnitInfo} from "@/api/basic/standard"; export default { name: "InventoryReport", props: {}, @@ -68,217 +114,358 @@ computed: {}, data() { return { + unitList:[], + treeProps:{ + label:'name', + value:'id', + children:'children' + }, + warehouseList:[], + locationList:[], + checkedLocationList:[], tableList: {}, - showcol: ["瀛樺偍绫诲埆", "浜у搧绫诲埆", "棰勭暀鏁伴噺", "浠峰��"], + showcol: [ "浜у搧绫诲埆", "浠峰��"], + // countcol: [ + // { label: "鍦ㄥ簱鏁伴噺", unit: "" }, + // { label: "棰勭暀鏁伴噺", unit: "" }, + // { label: "浠峰��", unit: "锟�" }, + // ], + countcol: ["鍦ㄥ簱鏁伴噺", "棰勭暀鏁伴噺", "浠峰��"], testArr: [ { - product:"HC/閿�鍞尯/b鍖�", - category:"涓濈桓鍒跺搧/鐪熶笣鐫¤", - cost:"800.00", - totalPrices:"0.00", - inStore:"0.00", - availableStore:"0.00", - inStorage:"0.00", - toStore:"0.00", - forecast:"0.00", - unit:"浠�" + product: "HC/閿�鍞尯/b鍖�", + category: "涓濈桓鍒跺搧/鐪熶笣鐫¤", + cost: "800.00", + totalPrices: "2000.00", + inStore: "00.00", + availableStore: "200.00", + inStorage: "00.00", + toStore: 65432.0, + forecast: "0.00", + unit: "浠�" }, { - product:"HC閿�鍞尯/A鍖�", - category:"涓濈桓鍒跺搧/鐪熶笣鐫¤", - cost:"9980.00", - totalPrices:"0.00", - inStore:"0.00", - availableStore:"0.00", - inStorage:"0.00", - toStore:"0.00", - forecast:"0.00", - unit:"浠�" - }, + product: "HC閿�鍞尯/A鍖�", + category: "涓濈桓鍒跺搧/閲戜笣鐫¤", + cost: "9980.00", + totalPrices: "00.00", + inStore: "00.00", + availableStore: "20.00", + inStorage: "0.00", + toStore: 32618.0, + forecast: "0.00", + unit: "浠�" + } ], searchOptions: [], commonDetail: { visible: false, title: "鏂板缓", - infomation: {}, + infomation: {} }, editConfig: { visible: false, title: "鏂板缓", - infomation: {}, + infomation: {} }, productId: this.$route.params.id, productName: this.$route.params.name, - }; + metaTitle: this.$route.meta.title, + keyWord:'' + } }, created() { this.setTable(); - // this.getData(); + this.getData(); + // this.queryWarehouse();//鏌ヨ浠撳簱 + this.queryLocation(); + this.getUnitInfo(); }, methods: { + async getUnitInfo(){ + const { code,data }=await getUnitInfo(); + if(code===200){ + this.unitList=data; + } + }, + locationCheck(_,checkObj){ + this.checkedLocationList=checkObj.checkedKeys; + let params={ + page: this.pagerOptions.currPage, + pageSize: this.pagerOptions.pageSize, + keyWord:this.keyWord, + }; + if(this.checkedLocationList.length>0){ + params.locationIds=this.checkedLocationList; + } + this.getLocationData(params); + }, + async queryWarehouse(){ + const {code,data} =await getWarehouseList({page:0,pageSize:0,keyword:""}); + if(code===200){ + this.warehouseList=data; + } + }, + getTreeData(dataList,childFieldName='children',pIdFieldName='parentId',idFieldName = 'id',rootValue=0){ + const rootArr=[]; + //1.鍏堣幏鍙栨牴鑺傜偣鍒楄〃 + dataList.forEach(item=>{ + const children= getChildrenNode(item[idFieldName],dataList); + if(Array.isArray(children)&&children.length>0){ + item[childFieldName]=children; + } + if(!item.isParent){ + rootArr.push(item) + } + }); + //2.閫掑綊鑾峰彇鏍硅妭鐐圭殑鎵�鏈変笅绾ц妭鐐� + function getChildrenNode(parentId,dataList) { + //1.鏍规嵁鏍硅妭鐐硅幏鍙� 瀛愯妭鐐瑰垪琛� + const childrenArr=dataList.filter(item=>parentId===item[pIdFieldName]); + //2.瀛╁瓙鏈夊彲鑳借繕鏈夊瀛� 閬嶅巻瀛╁瓙杩涜閲嶆柊閫掑綊 + childrenArr.forEach(item=>{ + const children=getChildrenNode(item[idFieldName],dataList); + if(children.length>0){ + item[childFieldName]=children; + } + }); + return childrenArr; + } + return rootArr; + }, + async queryLocation(){ + const {code,data}=await getLocationList({type:3,page:0,pageSize:0}); + if(code===200){ + data.forEach(item=>{ + item.isParent=data.some(dItem=>{ + if(dItem.id!==item.id){ + return dItem.id===item.parentId + } + }) + }); + this.locationList=this.getTreeData(data)//杞垚鏍戝舰鏁版嵁; + } + }, + getUnitValue(list,val,num,unit){ + let string='--' + if(list){ + if(list.length>0){ + for(let i in list){ + if(list[i].unit==val){ + string=list[i].amount + break; + } + } + } + } + if(unit==val){ + string=num + } + return string + }, + // 涓嬭浇 + downHttpClick: _.debounce(function(){ + downloadLocationForms({ + page: this.pagerOptions.currPage, + pageSize: this.pagerOptions.pageSize, + keyword:this.keyword, + }).then(res => { + if (res) { + FileSaver.saveAs(res, '浣嶇疆鎶ヨ〃.xlsx'); + this.$message.success("涓嬭浇鎴愬姛锛�"); + } + }) + }, 1000), setTable() { this.tableList = { - tableInfomation:[], - selectBox: true, + tableInfomation: [], + selectBox: false, + selectIndex: true, showcol: this.showcol, + countcol: this.countcol, allcol: [], - tableColumn: this.setTableColumn(this.showcol), - }; - let allcol = []; + tableColumn: this.setTableColumn(this.showcol) + } + let allcol = [] for (let i = 0; i < this.tableList.tableColumn.length; i++) { if (!this.tableList.tableColumn[i].default) { - const label = this.tableList.tableColumn[i].label; - allcol.push(label); + const label = this.tableList.tableColumn[i].label + allcol.push(label) } } - this.tableList.allcol = allcol; - this.tableList.tableInfomation=this.testArr + this.tableList.allcol = allcol }, setTableColumn(showcol) { let tableColumn = [ - /* - product:"鍗楁柟涓濆发xxx", - category:"涓濈桓鍒跺搧/鐪熶笣鐫¤", - cost:"800.00", - totalPrices:"0.00", - inStore:"0.00", - availableStore:"0.00", - inStorage:"0.00", - toStore:"0.00", - forecast:"0.00", - unit:"浠�" - */ { label: "浣嶇疆", - prop: "product", - isShowColumn: true, + prop: "locationName", default: true, + isShowColumn: true }, { label: "瀛樺偍绫诲埆", prop: "category", - isShowColumn: true, default: false, - isShowColumn: showcol.includes("瀛樺偍绫诲埆"), + isShowColumn: showcol.includes("瀛樺偍绫诲埆") }, { label: "浜у搧", - prop: "cost", - isShowColumn: true, + prop: "productName", default: true, + isShowColumn: true }, { label: "浜у搧绫诲埆", - prop: "totalPrices", - isShowColumn: true, + prop: "productTypeName", default: false, - isShowColumn: showcol.includes("浜у搧绫诲埆"), + isShowColumn: showcol.includes("浜у搧绫诲埆") }, - { + /*{ label: "鍦ㄥ簱鏁伴噺", - prop: "inStore", + width:100, + prop: "amount", isShowColumn: true, default: true, - }, + unit: "", + textAlign:"right" + },*/ { label: "棰勭暀鏁伴噺", prop: "availableStore", - // isShowColumn: true, default: false, isShowColumn: showcol.includes("棰勭暀鏁伴噺"), + unit: "", + textAlign:"right" }, { label: "鍗曚綅", prop: "unit", - isShowColumn: true, - default: true, + width: 120, + default: false, + isShowColumn: showcol.includes("鍗曚綅") }, { label: "浠峰��", - prop: "toStore", + prop: "value", width: 120, default: false, - // status: true, - // isCallMethod: true, - // getCallMethod: this.getStatus, isShowColumn: showcol.includes("浠峰��"), - }, - ]; - return tableColumn; + //textAlign:"right", + unit: "锟�" + } + ] + return tableColumn }, selTableCol(val) { - this.showcol = val; - this.tableList.tableColumn = this.setTableColumn(val); + this.showcol = val + this.tableList.tableColumn = this.setTableColumn(val) }, // 璇锋眰鏁版嵁 - // async getData() { - // await getProductOperatonList({ - // productId: this.productId, - // page: this.pagerOptions.currPage, - // pageSize: this.pagerOptions.pageSize, - // }).then((res) => { - // if (res.code === 200) { - // const list = res.data.map((item) => { - // return { - // ...item, - // from: item.fromLocation.name, - // to: item.toLocation.name, - // productName: this.productName, - // }; - // }); - // this.tableList.tableInfomation = list || []; - // this.pagerOptions.totalCount = res.total; - // } - // }); - // }, + async getLocationData(params) { + await getLocationData(params).then((res) => { + if (res.code === 200) { + const list = res.data + this.tableList.tableInfomation = list || [] + this.pagerOptions.totalCount = res.total + } + }) + }, + getData() { + if(this.$route.params.name==="搴撳瓨鎶ヨ〃"){ + this.getLocationData({ + wareHouseCode:this.$route.params.wareHouseCode, + productId:this.$route.params.productId, + page: this.pagerOptions.currPage, + pageSize: this.pagerOptions.pageSize + }) + }else{ + let params={ + page: this.pagerOptions.currPage, + pageSize: this.pagerOptions.pageSize, + keyWord:this.keyWord, + }; + if(this.$route.params.locationId){ + params.locationId=this.$route.params.locationId + } + this.getLocationData(params) + } + }, // 鎼滅储 getList(val) { - console.log(val); + this.keyWord=val + this.pagerOptions.currPage=1 + this.pagerOptions.pageSize=15 + this.getData() }, // 琛岀偣鍑� tableRowClick(row) { - console.log(row); - this.editConfig.visible = true; - this.editConfig.title = "鏌ョ湅"; - this.editConfig.infomation = { ...row }; + console.log(row) + // this.editConfig.visible = true; + this.editConfig.title = "鏌ョ湅" + this.editConfig.infomation = { ...row } }, // 鏂板缓 addBtnClick() { - this.editConfig.visible = true; - this.editConfig.title = "鏂板缓"; + this.editConfig.visible = true + this.editConfig.title = "鏂板缓" + this.getData() }, // 鐘舵�� getStatus(val) { - return val === 1 ? "鑽夌" : val === 3 ? "灏辩华" : "瀹屾垚"; + return val === 1 ? "鑽夌" : val === 3 ? "灏辩华" : "瀹屾垚" }, // 鍘嗗彶 - handleHistoryClick(){ - + handleHistoryClick(row) { + console.log(row) + this.$router.push({ + name: "outEnterLibrary", + params: { + keyWord:row.productName, + produceId:row.produceId, + productName:row.productName, + unit:row.unit, + name: "鎶ヨ〃" + } + }) }, // 琛ヨ揣 - handleAddGoods(){ - + handleAddGoods(row) { + this.$router.push({ + name: 'orderPoint', + params:{ + locationId:row.locationId, + locationName:row.locationName + } + }) } - }, -}; + } +} </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style lang="scss" scoped> -.rightContent { - height: 100%; - background: #e6ecf2; - padding: 10px; -// .top { -// margin-bottom: 20px; -// height: 60px; -// background: #fff; -// border-radius: 8px; -// } - .list-view { - height: calc(100% - 150px); + .container{ + display: flex; + justify-content: start; + .list-left{ + background-color: white; + width: 15%; + .title{ + font-family: '榛戜綋'; + padding: 10px; + } + .tree-location{ + height: 75vh; + overflow-y: auto; + } + } + .list-view{ + background-color: white; + min-height: 80vh; + width: 85%; + } } -} </style> -- Gitblit v1.8.0