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/inventoryReport/index.vue | 336 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 288 insertions(+), 48 deletions(-) diff --git a/src/views/reportForm/inventoryReport/index.vue b/src/views/reportForm/inventoryReport/index.vue index 52fa318..b1b391e 100644 --- a/src/views/reportForm/inventoryReport/index.vue +++ b/src/views/reportForm/inventoryReport/index.vue @@ -10,31 +10,37 @@ @addCommonClick="addBtnClick" @searchClick="getList" :isDisabled="true" + :showDownload="true" + @downloadClick="downHttpClick" /> </div> - <div class="content_wrap"> <div class="con_left"> - <p>浠撳簱</p> - <div class="stash"> - <template> - <el-radio - v-for="(item, index) in warehouseList" - :key="index" - v-model="stashRadio" - :label="item.code" - @change="radioHandleChange" - >{{ item.name }}</el-radio - > - <!-- @click.prevent.native="checkRadio(item.code)" 鍙栨秷鍗曢�夐」 --> - </template> + <div class="con_left_div"> + <p>浠撳簱</p> + <div class="stash"> + <template> + <el-radio v-for="(item, index) in warehouseList" :key="index" v-model="stashRadio" :label="item.code" @change="radioHandleChange(item)"> + <el-tooltip class="item" effect="dark" :content="item.name" placement="bottom"> + <span class="radio-text">{{ item.name }}</span> + </el-tooltip> + </el-radio> + </template> + </div> </div> - <p style="margin-top: 30px">绫诲埆</p> - <el-checkbox-group v-model="checkList" @change="checkListHandler"> - <el-checkbox v-for="item in categoryList" :key="item.id" :label="item.id"> - {{ item.name }} - </el-checkbox> - </el-checkbox-group> + <div class="con_left_div"> + <p>绫诲埆</p> + <div class="category"> + <el-tree node-key="id" :data="categoryList" show-checkbox :props="treeProps" @check="checkListHandler"></el-tree> + <!-- <el-checkbox-group v-model="checkList" @change="checkListHandler"> + <el-checkbox v-for="item in categoryList" :key="item.id" :label="item.id"> + <el-tooltip class="item" effect="dark" :content="item.name" placement="bottom"> + <span class="radio-text">{{ item.name }}</span> + </el-tooltip> + </el-checkbox> + </el-checkbox-group> --> + </div> + </div> </div> <div class="list-view"> <div class="table"> @@ -46,6 +52,95 @@ :showSummary="true" > <template slot="tableButton"> + <el-table-column label="鍦ㄥ簱" prop='amount'> + <el-table-column v-for="unit in unitList" :label="unit.name" prop='availableNumber' 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> + <el-table-column label="鍙敤搴撳瓨" prop='availableNumber'> + <el-table-column v-for="unit in unitList" :label="unit.name" prop='amount' min="90"> + <template slot-scope="scope"> + {{getUnitValue(scope.row.availableNumberMoreUnits,unit.name,scope.row.availableNumber,scope.row.unit)}} + </template> + </el-table-column> + <!-- <el-table-column label="浠�" prop='availableNumber' min="90"> + <template slot-scope="scope"> + {{getUnitValue(scope.row.availableNumberMoreUnits,'浠�',scope.row.availableNumber,scope.row.unit)}} + </template> + </el-table-column> + <el-table-column label="鍖�" prop='availableNumber' min="90"> + <template slot-scope="scope"> + {{getUnitValue(scope.row.availableNumberMoreUnits,'鍖�',scope.row.availableNumber,scope.row.unit)}} + </template> + </el-table-column> + <el-table-column label="绫虫暟" prop='availableNumber' min="90"> + <template slot-scope="scope"> + {{getUnitValue(scope.row.availableNumberMoreUnits,'绫虫暟',scope.row.availableNumber,scope.row.unit)}} + </template> + </el-table-column> + <el-table-column label="閲嶉噺" prop='availableNumber' min="90"> + <template slot-scope="scope"> + {{getUnitValue(scope.row.availableNumberMoreUnits,'閲嶉噺',scope.row.availableNumber,scope.row.unit)}} + </template> + </el-table-column>--> + </el-table-column> + <el-table-column label="鍏ュ簱" prop='in'> + <el-table-column v-for="unit in unitList" :label="unit.name" prop='in' min="90"> + <template slot-scope="scope"> + {{getUnitValue(scope.row.inMoreUnits,unit.name,scope.row.in,scope.row.unit)}} + </template> + </el-table-column> + <!--<el-table-column label="浠�" prop='in' min="90"> + <template slot-scope="scope"> + {{getUnitValue(scope.row.inMoreUnits,'浠�',scope.row.in,scope.row.unit)}} + </template> + </el-table-column> + <el-table-column label="鍖�" prop='in' min="90"> + <template slot-scope="scope"> + {{getUnitValue(scope.row.inMoreUnits,'鍖�',scope.row.in,scope.row.unit)}} + </template> + </el-table-column> + <el-table-column label="绫虫暟" prop='in' min="90"> + <template slot-scope="scope"> + {{getUnitValue(scope.row.inMoreUnits,'绫虫暟',scope.row.in,scope.row.unit)}} + </template> + </el-table-column> + <el-table-column label="閲嶉噺" prop='in' min="90"> + <template slot-scope="scope"> + {{getUnitValue(scope.row.inMoreUnits,'閲嶉噺',scope.row.in,scope.row.unit)}} + </template> + </el-table-column>--> + </el-table-column> + <el-table-column label="鍑哄簱" prop='out'> + <el-table-column v-for="unit in unitList" :label="unit.name" prop='out' min="90"> + <template slot-scope="scope"> + {{getUnitValue(scope.row.outMoreUnits,unit.name,scope.row.out,scope.row.unit)}} + </template> + </el-table-column> + <!--<el-table-column label="浠�" prop='out' min="90"> + <template slot-scope="scope"> + {{getUnitValue(scope.row.outMoreUnits,'浠�',scope.row.out,scope.row.unit)}} + </template> + </el-table-column> + <el-table-column label="鍖�" prop='out' min="90"> + <template slot-scope="scope"> + {{getUnitValue(scope.row.outMoreUnits,'鍖�',scope.row.out,scope.row.unit)}} + </template> + </el-table-column> + <el-table-column label="绫虫暟" prop='out' min="90"> + <template slot-scope="scope"> + {{getUnitValue(scope.row.outMoreUnits,'绫虫暟',scope.row.out,scope.row.unit)}} + </template> + </el-table-column> + <el-table-column label="閲嶉噺" prop='out' min="90"> + <template slot-scope="scope"> + {{getUnitValue(scope.row.outMoreUnits,'閲嶉噺',scope.row.out,scope.row.unit)}} + </template> + </el-table-column>--> + </el-table-column> <el-table-column label="鎿嶄綔" width="220" align="center"> <template slot-scope="scope"> <span @click="handleHistoryClick(scope.row)" class="yes-cursor"> @@ -75,8 +170,8 @@ <PagerView class="page" :pager-options="pagerOptions" :page-size="pageSizes" v-on="pagerEvents" /> </div> </div> - </div> + </div> <!-- 缂栬緫 dialog--> <AddOverviewDialog v-if="editConfig.visible" :edit-common-config="editConfig" :add-name="this.$route.params.name" /> </div> @@ -86,7 +181,11 @@ import pageMixin from "@/components/makepager/pager/mixin/pageMixin" import AddOverviewDialog from "@/views/overview/AddOverviewDialog" import { getInventoryData, getProductCategoryList, getWarehouseList } from "@/api/reportForm/inventoryRwport" - +import { downloadInventoryForms } from "@/api/downFile" +import FileSaver from 'file-saver'; +import axios from 'axios'; +import _ from 'lodash' +import {getUnitInfo} from "@/api/basic/standard"; export default { name: "inventoryReport", props: {}, @@ -95,7 +194,13 @@ computed: {}, data() { return { + unitList:[], keyword: "", + treeProps: { + label: 'name', + value: 'id', + children: 'children', + }, checkList: [], testArr: [], testArr2: [ @@ -158,15 +263,75 @@ this.getProductCategoryList() }, mounted() { - this.countSums() + this.countSums(); + this.getUnitInfo(); }, methods: { - checkListHandler(e) { - this.categoryListId = e - this.getData() - }, + async getUnitInfo(){ + const { code,data }=await getUnitInfo(); + if(code===200){ + this.unitList=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 + } + if(string.length>6){ + return string.substring(0,6); + } + return string + }, + // 涓嬭浇 + downHttpClick: _.debounce(function(){ + let token = document.cookie.replace( + /(?:(?:^|.*;\s*)token\s*=\s*([^;]*).*$)|^.*$/, + "$1", + ); + /*axios({ + url: "/api-wms/v1/forms/downloadInventoryForms", + method: "post", + methodType:'down', + headers:{ + Authorization:"Bearer " + token + }, + data:{ + page: this.pagerOptions.currPage, + pageSize: this.pagerOptions.pageSize, + keyword:this.keyword, + } + }).then(res=>{ + console.log(decodeURIComponent(res.headers['content-disposition'].split(';')[1].split('filename=')[1])); + })*/ + downloadInventoryForms({ + page: this.pagerOptions.currPage, + pageSize: this.pagerOptions.pageSize, + keyword:this.keyword, + baseOperationType:1 + }).then(res => { + if (res) { + FileSaver.saveAs(res, '搴撳瓨鎶ヨ〃.xlsx'); + this.$message.success("涓嬭浇鎴愬姛锛�"); + } + }) + }, 1000), + checkListHandler(_, checkObj) { + this.categoryListId = checkObj.checkedKeys + this.getData() + }, radioHandleChange(e) { - this.warehouseListName = e + this.warehouseListName = e.id this.getData() }, // checkRadio(val){ @@ -209,9 +374,25 @@ isShowColumn: true // date: true, // 鏄惁涓烘棩鏈熸牸寮� }, + { + label: "浜у搧瑙勬牸", + prop: "productSpecs", + default: true, + width: 100, + isShowColumn: true + // date: true, // 鏄惁涓烘棩鏈熸牸寮� + }, + { + label: "浜у搧鍨嬪彿", + prop: "productType", + default: true, + width: 100, + isShowColumn: true + // date: true, // 鏄惁涓烘棩鏈熸牸寮� + }, { label: "浜у搧绫诲埆", - prop: "productType", + prop: "productCategory", default: true, isShowColumn: showcol.includes("浜у搧绫诲埆") }, @@ -230,7 +411,7 @@ unit: "锟�", textAlign: "right" }, - { + /*{ label: "鍦ㄥ簱", prop: "amount", default: true, @@ -261,7 +442,7 @@ default: false, unit: "", textAlign: "right" - }, + },*/ { label: "棰勬祴", prop: "forecast", @@ -269,12 +450,12 @@ default: false, unit: "" }, - { + /*{ label: "鍗曚綅", prop: "unit", default: true, isShowColumn: true - } + }*/ ] return tableColumn }, @@ -376,19 +557,54 @@ categoryIds: this.categoryListId, page: this.pagerOptions.currPage, pageSize: this.pagerOptions.pageSize, - warehouseCode: this.warehouseListName + warehouseId: this.warehouseListName||0 } this.getInventoryData(params) }, + 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 getProductCategoryList() { await getProductCategoryList({ keyWord: "", - page: this.pagerOptions.currPage, - pageSize: this.pagerOptions.pageSize + page: 0, + pageSize: 0 }).then((res) => { if (res.code === 200) { - this.categoryList = res.data + this.categoryList = res.data; + (res.data||[]).forEach((item,index1)=>{ + item.isParent=res.data.some((cItem,index2)=>{ + if(index1!==index2){ + return item.parentId==cItem.id; + } + }); + }); + this.categoryList = this.getTreeData(res.data) } }) }, @@ -401,6 +617,8 @@ }).then((res) => { if (res.code === 200) { this.warehouseList = res.data + + } }) } @@ -410,23 +628,35 @@ <!-- Add "scoped" attribute to limit CSS to this component only --> <style lang="scss" scoped> + .radio-text{ + display:inline-block; + width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } .content_wrap { height: calc(100% - 0px); display: flex; - justify-content: space-between; + justify-content: start; .con_left { - width: 200px; - .el-checkbox-group { - width: 100%; - display: flex; - flex-direction: column; - } - .stash { - display: flex; - flex-direction: column; - } + height: calc(100% - 90px); + width: 15%; + overflow: hidden; + .con_left_div { + height: 50%; + border: 1px solid rgba(0, 0, 0, 0); + .stash, + .category { + height: calc(100% - 52px); + display: flex; + flex-direction: column; + overflow: auto; + } + } } .list-view { + width: 85%; flex: 1; } } @@ -442,5 +672,15 @@ word-wrap: break-word; white-space: pre-wrap !important; } + .el-tree { + background: no-repeat; + } + .el-tree-node > .el-tree-node__children { + overflow: visible !important; + } + .el-tree-node__content:hover, + .el-upload-list__item:hover { + width: 100%; + } } </style> -- Gitblit v1.8.0