|
@@ -4,13 +4,18 @@
|
|
|
<div class="tab-nav">
|
|
|
<div class="date-filter-wrap">
|
|
|
<span style="font-size: 14px;font-weight: bold;color: black">每日面料使用率报表</span>
|
|
|
+ <Radio-group v-model="navType" @on-change="navTypeChange" style="margin-left:10px">
|
|
|
+ <Radio label="1">按人员汇总</Radio>
|
|
|
+ <Radio label="2">按工艺归类</Radio>
|
|
|
+ </Radio-group>
|
|
|
</div>
|
|
|
+
|
|
|
<div class="date-filter-wrap">
|
|
|
<date-select v-model="params" @change="selectTime"></date-select>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="border"></div>
|
|
|
- <div class="tab-nav">
|
|
|
+ <div class="tab-nav" v-if="navType === '1'">
|
|
|
<Row>
|
|
|
<i-col span="6" style="display: flex">
|
|
|
<div style="min-width: 40px; line-height: 32px; text-align: center">直喷:</div>
|
|
@@ -74,6 +79,94 @@
|
|
|
</i-col>
|
|
|
</Row>
|
|
|
</div>
|
|
|
+ <div class="tab-nav" v-else>
|
|
|
+ <Row>
|
|
|
+ <i-col span="6" style="display: flex">
|
|
|
+ <div style="line-height: 32px; text-align: center;margin-right:5px">
|
|
|
+ <Button
|
|
|
+ :type="params.tech == '直喷' ? 'primary' : 'default'"
|
|
|
+ @click="techClick('直喷')">
|
|
|
+ 直喷 <span style="color:red">({{ typeList2.zhipeng }}%</span>)
|
|
|
+ </Button>
|
|
|
+ </div>
|
|
|
+ <div class="row">
|
|
|
+ <Button
|
|
|
+ :type="params.userId === item.userId && params.tech == '直喷' ? 'primary' : 'default'"
|
|
|
+ @click="userClick2(item,'直喷')"
|
|
|
+ v-for="(item, index) in typeList2['直喷']"
|
|
|
+ :key="index"
|
|
|
+ >
|
|
|
+ <span>{{ item.realName }}(</span>
|
|
|
+ <span style="color: red">{{ item.useRate }}%</span>
|
|
|
+ <span>)</span>
|
|
|
+ </Button>
|
|
|
+ </div>
|
|
|
+ </i-col>
|
|
|
+ <i-col span="6" style="display: flex">
|
|
|
+ <div style="line-height: 32px; text-align: center;margin-right:5px">
|
|
|
+ <Button
|
|
|
+ :type="params.tech == '打纸' ? 'primary' : 'default'"
|
|
|
+ @click="techClick('打纸')">
|
|
|
+ 打纸 (<span style="color:red">{{ typeList2.dazhi }}%</span>)
|
|
|
+ </Button>
|
|
|
+ </div>
|
|
|
+ <div class="row">
|
|
|
+ <Button
|
|
|
+ :type="params.userId === item.userId && params.tech == '打纸' ? 'primary' : 'default'"
|
|
|
+ @click="userClick2(item,'打纸')"
|
|
|
+ v-for="(item, index) in typeList2['打纸']"
|
|
|
+ :key="index"
|
|
|
+ >
|
|
|
+ <span>{{ item.realName }}(</span>
|
|
|
+ <span style="color: red">{{ item.useRate }}%</span>
|
|
|
+ <span>)</span>
|
|
|
+ </Button>
|
|
|
+ </div>
|
|
|
+ </i-col>
|
|
|
+ <i-col span="6" style="display: flex">
|
|
|
+ <div style="line-height: 32px; text-align: center;margin-right:5px">
|
|
|
+ <Button
|
|
|
+ :type="params.tech == '热转' ? 'primary' : 'default'"
|
|
|
+ @click="techClick('热转')">
|
|
|
+ 热转 (<span style="color:red">{{ typeList2.rezhuang }}%</span>)
|
|
|
+ </Button>
|
|
|
+ </div>
|
|
|
+ <div class="row">
|
|
|
+ <Button
|
|
|
+ :type="params.userId === item.userId && params.tech == '热转' ? 'primary' : 'default'"
|
|
|
+ @click="userClick2(item,'热转')"
|
|
|
+ v-for="(item, index) in typeList2['热转']"
|
|
|
+ :key="index"
|
|
|
+ >
|
|
|
+ <span>{{ item.realName }}(</span>
|
|
|
+ <span style="color: red">{{ item.useRate }}%</span>
|
|
|
+ <span>)</span>
|
|
|
+ </Button>
|
|
|
+ </div>
|
|
|
+ </i-col>
|
|
|
+ <i-col span="6" style="display: flex">
|
|
|
+ <div style="line-height: 32px; text-align: center;margin-right:5px">
|
|
|
+ <Button
|
|
|
+ :type="params.tech == '空白旗' ? 'primary' : 'default'"
|
|
|
+ @click="techClick('空白旗')">
|
|
|
+ 空白旗 (<span style="color:red">{{ typeList2.kongbai }}%</span>)
|
|
|
+ </Button>
|
|
|
+ </div>
|
|
|
+ <div class="row">
|
|
|
+ <Button
|
|
|
+ :type="params.userId === item.userId ? 'primary' : 'default'"
|
|
|
+ @click="userClick2(item,'空白旗')"
|
|
|
+ v-for="(item, index) in typeList2['空白旗']"
|
|
|
+ :key="index"
|
|
|
+ >
|
|
|
+ <span>{{ item.realName }}(</span>
|
|
|
+ <span style="color: red">{{ item.useRate }}%</span>
|
|
|
+ <span>)</span>
|
|
|
+ </Button>
|
|
|
+ </div>
|
|
|
+ </i-col>
|
|
|
+ </Row>
|
|
|
+ </div>
|
|
|
<div class="border"></div>
|
|
|
<div class="table-filter">
|
|
|
<div class="fabricOne" :style="technologyType == 5 ? 'border:2px solid #0077ff' : ''" style="width: 13%">
|
|
@@ -89,7 +182,7 @@
|
|
|
</div>
|
|
|
<div class="fabric" :style="technologyType == 5 ? 'border:2px solid #0077ff' : ''" style="width: 28%">
|
|
|
<div class="label" style="border-right: 2px solid #dcdcdc">
|
|
|
- <span>领料</span>
|
|
|
+ <span class="cp" @click="getPicking(null)">领料</span>
|
|
|
</div>
|
|
|
<ul>
|
|
|
<!-- <li>
|
|
@@ -112,7 +205,7 @@
|
|
|
</div>
|
|
|
<div class="fabric" :style="technologyType == 5 ? 'border:2px solid #0077ff' : ''" style="width: 24%">
|
|
|
<div class="label" style="border-right: 2px solid #dcdcdc">
|
|
|
- <span>退料</span>
|
|
|
+ <span class="cp" @click="getReturnMaterialModal(null)">退料</span>
|
|
|
</div>
|
|
|
<ul>
|
|
|
<!-- <li>
|
|
@@ -135,12 +228,13 @@
|
|
|
</div>
|
|
|
<div class="fabricOne" :style="technologyType == 5 ? 'border:2px solid #0077ff' : ''" style="width: 10%">
|
|
|
<div class="labelOne" style="border-right: 2px solid #dcdcdc">
|
|
|
- <span style="line-height:60px">转仓</span>
|
|
|
+ <span style="line-height:60px" class="cp" @click="getCorrect(null)">修正</span>
|
|
|
</div>
|
|
|
<ul>
|
|
|
<li>
|
|
|
面积
|
|
|
- <span>{{ (statisticsDetails.transferInArea * 1000 - statisticsDetails.transferOutArea * 1000) / 1000 }}</span>
|
|
|
+ <span>{{statisticsDetails.headTailCorrectArea}}</span>
|
|
|
+ <!-- <span>{{ (statisticsDetails.transferInArea * 1000 - statisticsDetails.transferOutArea * 1000) / 1000 }}</span> -->
|
|
|
</li>
|
|
|
</ul>
|
|
|
</div>
|
|
@@ -174,6 +268,27 @@
|
|
|
<div class="main">
|
|
|
<my-table ref="table" :data="data" :columns="columns" :table-page="params" @on-change="changePage"></my-table>
|
|
|
</div>
|
|
|
+ <Modal
|
|
|
+ v-model="pickingModal"
|
|
|
+ title="领料详情"
|
|
|
+ width="800"
|
|
|
+ >
|
|
|
+ <Table :loading="loading" :columns="pickingColumns" :data="pickingData"></Table>
|
|
|
+ </Modal>
|
|
|
+ <Modal
|
|
|
+ v-model="correctModal"
|
|
|
+ title="面料修正"
|
|
|
+ width="900"
|
|
|
+ >
|
|
|
+ <Table :loading="loading" :columns="correctColumns" :data="correctData"></Table>
|
|
|
+ </Modal>
|
|
|
+ <Modal
|
|
|
+ v-model="returnMaterialModal"
|
|
|
+ title="退料详情"
|
|
|
+ width="900"
|
|
|
+ >
|
|
|
+ <Table :loading="loading" :columns="returnMaterialColumns" :data="returnMaterialData"></Table>
|
|
|
+ </Modal>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -187,8 +302,133 @@ export default {
|
|
|
components: { MyTable, dateSelect },
|
|
|
data() {
|
|
|
return {
|
|
|
+ navType:'1',
|
|
|
+ loading:false,
|
|
|
+ returnMaterialColumns:[
|
|
|
+ {
|
|
|
+ title: '序号',
|
|
|
+ type: 'index',
|
|
|
+ width: 60,
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '退料时间',
|
|
|
+ key: 'createTime'
|
|
|
+ },
|
|
|
+
|
|
|
+ {
|
|
|
+ title: '退料人员',
|
|
|
+ key: 'realName'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '物料编码',
|
|
|
+ key: 'materialCode'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '面料名称',
|
|
|
+ key: 'materialName'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '标签值',
|
|
|
+ key: 'rfidCode',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '米数',
|
|
|
+ key: 'changeNum',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '面积',
|
|
|
+ key: 'area'
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ returnMaterialModal:false,
|
|
|
+ returnMaterialData:[],
|
|
|
+ pickingModal:false,
|
|
|
+ correctColumns:[
|
|
|
+ {
|
|
|
+ title: '序号',
|
|
|
+ type: 'index',
|
|
|
+ width: 60,
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '物料编码',
|
|
|
+ key: 'materialCode'
|
|
|
+ },
|
|
|
+
|
|
|
+ {
|
|
|
+ title: '面料名称',
|
|
|
+ key: 'materialName'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '喷印人员',
|
|
|
+ key: 'realName'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '修正面积',
|
|
|
+ key: 'area'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '修正原因',
|
|
|
+ key: 'rfidCode',
|
|
|
+ render: (h, params) => {
|
|
|
+ return h('div', [h('span', '布头布尾')])
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '喷印日期',
|
|
|
+ key: 'createTime',
|
|
|
+ render: (h, params) => {
|
|
|
+ return h('div', [h('span', params.row.createTime.substring(0,11))])
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '修正时间',
|
|
|
+ key: 'createTime'
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ correctModal:false,
|
|
|
+ correctData:[],
|
|
|
+ pickingColumns:[
|
|
|
+ {
|
|
|
+ title: '序号',
|
|
|
+ type: 'index',
|
|
|
+ width: 60,
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '领料时间',
|
|
|
+ key: 'createTime'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '领料人员',
|
|
|
+ key: 'realName'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '物料编码',
|
|
|
+ key: 'materialCode'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '面料名称',
|
|
|
+ key: 'materialName'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '标签值',
|
|
|
+ key: 'rfidCode'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '米数',
|
|
|
+ key: 'changeNum'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '面积',
|
|
|
+ key: 'area'
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ pickingData:[],
|
|
|
technologyType: '',
|
|
|
typeList: {},
|
|
|
+ typeList2:{},
|
|
|
data: [],
|
|
|
columns: [
|
|
|
{
|
|
@@ -219,26 +459,65 @@ export default {
|
|
|
title: '领料面积',
|
|
|
key: 'pickingArea',
|
|
|
minWidth: 100,
|
|
|
- align: 'center'
|
|
|
+ align: 'center',
|
|
|
+ render: (h, params) => {
|
|
|
+ const v = this
|
|
|
+ return h('div', [h('span',{style: {
|
|
|
+ borderBottom: '1px solid #ddd',
|
|
|
+ cursor:'pointer'
|
|
|
+ },on: {
|
|
|
+ click () {
|
|
|
+ console.log(v.params)
|
|
|
+ v.params.materialName = params.row.materialName
|
|
|
+ v.getPicking(params.row.userId)
|
|
|
+ }
|
|
|
+ }}, params.row.pickingArea)])
|
|
|
+ }
|
|
|
},
|
|
|
{
|
|
|
title: '退仓面积',
|
|
|
key: 'backArea',
|
|
|
minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- title: '转入面积',
|
|
|
- key: 'transferInArea',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
+ align: 'center',
|
|
|
+ render: (h, params) => {
|
|
|
+ const v = this
|
|
|
+ return h('div', [h('span',{style: {
|
|
|
+ borderBottom: '1px solid #ddd',
|
|
|
+ cursor:'pointer'
|
|
|
+ },on: {
|
|
|
+ click () {
|
|
|
+ console.log(v.params)
|
|
|
+ v.params.materialName = params.row.materialName
|
|
|
+ v.getReturnMaterialModal(params.row.userId)
|
|
|
+ }
|
|
|
+ }}, params.row.backArea)])
|
|
|
+ }
|
|
|
},
|
|
|
{
|
|
|
- title: '转出面积',
|
|
|
- key: 'transferOutArea',
|
|
|
+ title: '修正面积',
|
|
|
+ key: 'headTailCorrectArea',
|
|
|
minWidth: 100,
|
|
|
- align: 'center'
|
|
|
+ align: 'center',
|
|
|
+ render: (h, params) => {
|
|
|
+ const v = this
|
|
|
+ return h('div', [h('span',{style: {
|
|
|
+ borderBottom: '1px solid #ddd',
|
|
|
+ cursor:'pointer'
|
|
|
+ },on: {
|
|
|
+ click () {
|
|
|
+ console.log(v.params)
|
|
|
+ v.params.materialName = params.row.materialName
|
|
|
+ v.getCorrect(params.row.userId)
|
|
|
+ }
|
|
|
+ }}, params.row.headTailCorrectArea)])
|
|
|
+ }
|
|
|
},
|
|
|
+ // {
|
|
|
+ // title: '转出面积',
|
|
|
+ // key: 'transferOutArea',
|
|
|
+ // minWidth: 100,
|
|
|
+ // align: 'center'
|
|
|
+ // },
|
|
|
{
|
|
|
title: '实际使用面积',
|
|
|
key: 'actualUse',
|
|
@@ -287,12 +566,13 @@ export default {
|
|
|
total: 0,
|
|
|
technologyType: '',
|
|
|
jobNo: '',
|
|
|
- userId: ''
|
|
|
+ userId: '',
|
|
|
+ tech:null,
|
|
|
},
|
|
|
statisticsDetails: {
|
|
|
scheduleArea: '',
|
|
|
pickingMoney: '',
|
|
|
- pickingNum: '',
|
|
|
+ pickingNum: '',
|
|
|
pickingMeters: '',
|
|
|
pickingArea: '',
|
|
|
backMoney: '',
|
|
@@ -308,6 +588,78 @@ export default {
|
|
|
this.getAllList()
|
|
|
},
|
|
|
methods: {
|
|
|
+ //顶部radio切换
|
|
|
+ navTypeChange(){
|
|
|
+ this.params = {
|
|
|
+ pageIndex:1,
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ type: '3',
|
|
|
+ beginTime: this.params.beginTime,
|
|
|
+ endTime: this.params.endTime,
|
|
|
+ total: 0,
|
|
|
+ technologyType: '',
|
|
|
+ jobNo: '',
|
|
|
+ userId: '',
|
|
|
+ tech:null,
|
|
|
+ }
|
|
|
+ this.getList()
|
|
|
+ },
|
|
|
+ //点击工艺
|
|
|
+ techClick(techName){
|
|
|
+ this.params.userId = null
|
|
|
+ this.params.materialName = null
|
|
|
+ this.params.jobNo = null
|
|
|
+ if(techName == this.params.tech){
|
|
|
+ this.params.tech = null
|
|
|
+ }else{
|
|
|
+ this.params.tech = techName
|
|
|
+ }
|
|
|
+ this.getList()
|
|
|
+ },
|
|
|
+
|
|
|
+ getReturnMaterialModal(_userId){
|
|
|
+ axios
|
|
|
+ .post('/cloudApi/stockBack/returnMaterial', {
|
|
|
+ beginTime: this.params.beginTime,
|
|
|
+ endTime: this.params.endTime,
|
|
|
+ userId:_userId || this.params.userId,
|
|
|
+ tech: this.params.tech,
|
|
|
+ materialName:this.params.materialName,
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ this.returnMaterialData = res.data.data
|
|
|
+ this.returnMaterialModal = true
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getCorrect(_userId){
|
|
|
+ axios
|
|
|
+ .post('/cloudApi/stockBack/correct', {
|
|
|
+ beginTime: this.params.beginTime,
|
|
|
+ endTime: this.params.endTime,
|
|
|
+ userId:_userId || this.params.userId,
|
|
|
+ tech: this.params.tech,
|
|
|
+ materialName:this.params.materialName,
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ this.correctData = res.data.data
|
|
|
+ this.correctModal = true
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getPicking(_userId){
|
|
|
+ axios
|
|
|
+ .post('/cloudApi/stockBack/picking', {
|
|
|
+ beginTime: this.params.beginTime,
|
|
|
+ endTime: this.params.endTime,
|
|
|
+ userId:_userId || this.params.userId,
|
|
|
+ tech: this.params.tech,
|
|
|
+ materialName:this.params.materialName,
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ this.pickingData = res.data.data
|
|
|
+ this.pickingModal = true
|
|
|
+ })
|
|
|
+ },
|
|
|
selectTime() {
|
|
|
this.getAllList()
|
|
|
},
|
|
@@ -321,6 +673,34 @@ export default {
|
|
|
this.typeList = res.data.data
|
|
|
this.getList()
|
|
|
})
|
|
|
+ axios
|
|
|
+ .post('/cloudApi/stockBack/techStatistics', {
|
|
|
+ beginTime: this.params.beginTime,
|
|
|
+ endTime: this.params.endTime
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ res.data.data.zhipeng = res.data.data['直喷use']
|
|
|
+ res.data.data.dazhi = res.data.data['打纸use']
|
|
|
+ res.data.data.rezhuang = res.data.data['热转use']
|
|
|
+ res.data.data.kongbai = res.data.data['空白旗use']
|
|
|
+ this.typeList2 = res.data.data
|
|
|
+ console.log(this.typeList2)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ userClick2(item,techName){
|
|
|
+ const v = this
|
|
|
+ this.params.pageIndex = 1
|
|
|
+ this.params.pageNum = 1
|
|
|
+ if(item.userId == v.params.userId && techName == v.params.tech){
|
|
|
+ v.params.userId = null
|
|
|
+ v.params.tech = null
|
|
|
+ v.params.jobNo = null
|
|
|
+ }else{
|
|
|
+ v.params.userId = item.userId
|
|
|
+ v.params.tech = techName
|
|
|
+ v.params.jobNo = item.jobNo
|
|
|
+ }
|
|
|
+ v.getList()
|
|
|
},
|
|
|
userClick(item) {
|
|
|
this.params.pageIndex = 1
|
|
@@ -350,7 +730,8 @@ export default {
|
|
|
endTime: this.params.endTime,
|
|
|
technologyType: this.params.technologyType,
|
|
|
jobNo: this.params.jobNo,
|
|
|
- userId: this.params.userId
|
|
|
+ userId: this.params.userId,
|
|
|
+ tech:this.params.tech,
|
|
|
})
|
|
|
.then(res => {
|
|
|
this.statisticsDetails = res.data.data
|
|
@@ -363,7 +744,8 @@ export default {
|
|
|
endTime: this.params.endTime,
|
|
|
technologyType: this.params.technologyType,
|
|
|
jobNo: this.params.jobNo,
|
|
|
- userId: this.params.userId
|
|
|
+ userId: this.params.userId,
|
|
|
+ tech:this.params.tech,
|
|
|
})
|
|
|
.then(res => {
|
|
|
this.data = res.data.data.records
|
|
@@ -591,4 +973,8 @@ export default {
|
|
|
color: red;
|
|
|
}
|
|
|
}
|
|
|
+.cp{
|
|
|
+ cursor: pointer;
|
|
|
+ border-bottom: 1px solid #000;
|
|
|
+}
|
|
|
</style>
|