<template>
|
<div class="app-container">
|
<div class="filter-container">
|
<div style="display: block;">
|
<div class="basic_search" style="margin-right: 10px;padding-top: 10px">
|
<el-button style="margin-left: 10px;" type="primary" @click="openStock('add',{})">创建库区</el-button>
|
</div>
|
</div>
|
</div>
|
<div class="table_content">
|
<el-table
|
v-loading="listLoading"
|
:data="stateStockData"
|
:span-method="objectSpanMethod"
|
:cell-class-name="tableRowClassName" @cell-mouse-leave="cellMouseLeave" @cell-mouse-enter="cellMouseEnter"
|
border
|
:stripe="false"
|
style="width: 100%;"
|
>
|
<el-table-column label="库区名称" prop="reserveName" align="center" fixed="left">
|
<template slot-scope="scope">
|
<el-link type="primary" @click="openStock('edit',scope.row)">{{scope.row.reserveName}}</el-link>
|
</template>
|
</el-table-column>
|
<el-table-column label="区域" align="center" fixed="left">
|
<template slot-scope="scope">
|
{{ scope.row.province }}/{{scope.row.city}}/{{scope.row.area}}
|
</template>
|
</el-table-column>
|
<el-table-column label="所属企业" prop="enterpriseName" align="center"></el-table-column>
|
<el-table-column label="地址" prop="reserveAddress" align="center"></el-table-column>
|
<el-table-column label="库区面积/㎡" prop="topSquare" align="center"></el-table-column>
|
<el-table-column label="有效存储总面积/㎡" prop="topEffectiveStorageSquare" align="center"></el-table-column>
|
<el-table-column label="核药量/kg" prop="topNuclearDose" align="center"></el-table-column>
|
<el-table-column label="库房名称" prop="storehouseName" align="center">
|
<template slot-scope="scope">
|
<el-link type="primary" @click="openRecord(scope.row)">{{scope.row.storehouseName}}</el-link>
|
</template>
|
</el-table-column>
|
<el-table-column label="库房面积/㎡" prop="square" align="center"></el-table-column>
|
<el-table-column label="有效存储面积/㎡" prop="effectiveStorageSquare" align="center"></el-table-column>
|
<el-table-column label="等级" prop="storehouseLevel" align="center"></el-table-column>
|
<el-table-column label="库容量/箱" prop="approvedReserves" align="center"></el-table-column>
|
<el-table-column label="核药量/kg" prop="nuclearDose" align="center"></el-table-column>
|
<el-table-column label="当前总库存" prop="totalInventory" align="center"></el-table-column>
|
<el-table-column label="本公司库存" prop="inventoryOfTheCompany" align="center"></el-table-column>
|
<el-table-column label="爆竹类(箱)" prop="firecracker" align="center"></el-table-column>
|
<el-table-column label="喷花类(箱)" prop="spray" align="center"></el-table-column>
|
<el-table-column label="旋转类(箱)" prop="rotation" align="center"></el-table-column>
|
<el-table-column label="吐珠类(箱)" prop="bead" align="center"></el-table-column>
|
<el-table-column label="玩具类(箱)" prop="toy" align="center"></el-table-column>
|
<el-table-column label="组合烟花类(箱)" prop="combined" align="center"></el-table-column>
|
<el-table-column label="操作" align="center" width="120" class-name="small-padding fixed-width" fixed="right">
|
<template slot-scope="scope">
|
<el-button type="text" @click="showEnterprises(scope.row)">存货企业</el-button>
|
<el-button type="text" @click="deliverUsage(scope.row)">分配使用权</el-button>
|
</template>
|
</el-table-column>
|
<el-table-column label="是否允许盘库" align="center" width="120" class-name="small-padding fixed-width" fixed="right">
|
<template slot-scope="scope">
|
<span type="text" v-if="scope.row.inventoryStatus == 0">否</span>
|
<el-button v-if="scope.row.inventoryStatus == 1" type="text" @click="stockEdit(scope.row)">盘库</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
<br>
|
|
<add-stock ref="addStock" @refresh="getList"></add-stock>
|
<deliver-usage ref="deliverUsage" @refresh="getList"></deliver-usage>
|
<stock-records ref="stockRecords"></stock-records>
|
<edit-stock ref="editStock"></edit-stock>
|
<enterprise-stock ref="enterStock"></enterprise-stock>
|
</div>
|
</div>
|
</template>
|
|
<script>
|
import {computePageCount} from "../../utils";
|
import {getReservesForUser, getStorehouseDataByUser} from "../../api/warehouse"
|
import addStock from "./components/addStock"
|
import deliverUsage from "./components/deliverUsage"
|
import stockRecords from "./components/stockRecords"
|
import editStock from "./components/editStock"
|
import enterpriseStock from "./components/enterpriseStock"
|
import Cookies from "js-cookie"
|
export default {
|
name: "stockManage",
|
components: {enterpriseStock,addStock,deliverUsage,stockRecords,editStock},
|
data() {
|
return {
|
tableKey: '',
|
provinceList: [],
|
cityList: [],
|
districtList: [],
|
Cookies: Cookies,
|
listLoading: false,
|
stateStockData: [],
|
rowIndex: '-1',
|
OrderIndexArr: [],
|
hoverOrderArr: [],
|
isAdmin: false
|
}
|
},
|
created() {
|
const t = this
|
t.getList()
|
const roles = JSON.parse(Cookies.get('roles'))
|
if(roles.find(i=>i.name == '管理员'|| i.name == '监管部门')){
|
this.isAdmin = true
|
}else{
|
this.isAdmin = false
|
}
|
},
|
mounted() {
|
},
|
watch: {},
|
methods: {
|
async getList(){
|
const res = await getStorehouseDataByUser()
|
if(res.data.code == 200){
|
this.stateStockData=[]
|
if(res.data.result.reserveData && Array.isArray(res.data.result.reserveData)){
|
const tableData = res.data.result.reserveData
|
if(tableData.length>0){
|
tableData.map(item=>{
|
if(Array.isArray(item.storehouseInfos)){
|
item.storehouseInfos.map((subRes, subIndex)=>{
|
let content = {}
|
content = subRes
|
content['topId'] = item.id
|
content['reserveName'] = item.reserveName
|
content['enterpriseName'] = item.enterpriseName
|
content['province'] = item.province
|
content['city'] = item.city
|
content['area'] = item.area
|
content['reserveAddress'] = item.reserveAddress
|
content['topSquare'] = item.square
|
content['topEffectiveStorageSquare'] = item.effectiveStorageSquare
|
content['topNuclearDose'] = item.nuclearDose
|
// 重点!赋值合并的行数数值,只需要取子循环的第一个数赋值待合并的行数即可
|
if(subIndex == 0){
|
content['rowNum'] = item.storehouseInfos.length
|
}
|
this.stateStockData.push(content)
|
})
|
}
|
})
|
}
|
}
|
}else{
|
this.$message({
|
type:'warning',
|
message: res.data.message
|
})
|
}
|
},
|
|
openStock(type,data){
|
const t = this
|
t.$refs.addStock.open(type,data)
|
},
|
openRecord(row){
|
const t = this
|
t.$refs.stockRecords.open()
|
},
|
showEnterprises(row){
|
const t = this
|
t.$refs.enterStock.open(row,'管理')
|
},
|
deliverUsage(row){
|
const t = this
|
t.$refs.deliverUsage.open(row)
|
},
|
|
stockEdit(row){
|
const t = this
|
t.$refs.editStock.open(row)
|
|
},
|
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
|
// columnIndex 代表列数,从0开始计数,我们要合并的字段属于第一列,取0
|
if(columnIndex <= 6){
|
return {
|
rowspan: row.rowNum, // 待合并行数 -- 合并的行数长度就等于之前赋值的子数据的长度;未赋值的即表示0,不显示
|
colspan: row.rowNum>0?1:0 // 待合并列数 -- 合并的列数自身占一列,被合并的要返回0,表示不显示
|
};
|
}
|
},
|
tableRowClassName({row,rowIndex}) {
|
let arr = this.hoverOrderArr
|
for (let i = 0; i < arr.length; i++) {
|
if (rowIndex == arr[i]) {
|
return 'hovered-row'
|
}
|
}
|
},
|
cellMouseEnter(row, column, cell, event) {
|
this.rowIndex = row.rowIndex;
|
this.hoverOrderArr = [];
|
this.OrderIndexArr.forEach(element => {
|
if (element.indexOf(this.rowIndex) >= 0) {
|
this.hoverOrderArr = element
|
}
|
})
|
},
|
cellMouseLeave(row, column, cell, event) {
|
this.rowIndex = '-1'
|
this.hoverOrderArr = [];
|
},
|
},
|
}
|
</script>
|
<style>
|
.el-table .hovered-row {
|
background: #f5f7fa;
|
}
|
</style>
|
<style scoped>
|
.basic_search {
|
display: inline-block;
|
}
|
/deep/.el-table .el-table__body-wrapper table tr:nth-child(2n) td{
|
background: #fff !important;
|
}
|
</style>
|