From 0f0195b43a05ba00b89cb3f73ef2763c194e5741 Mon Sep 17 00:00:00 2001
From: loulijun2021 <1694218219@qq.com>
Date: 星期二, 26 九月 2023 11:14:18 +0800
Subject: [PATCH] 1.工序报工35%
---
src/views/produce/stepReport.vue | 470 +++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 399 insertions(+), 71 deletions(-)
diff --git a/src/views/produce/stepReport.vue b/src/views/produce/stepReport.vue
index 054e9dc..ec84618 100644
--- a/src/views/produce/stepReport.vue
+++ b/src/views/produce/stepReport.vue
@@ -1,6 +1,42 @@
<template>
<div>
<div class="body" style="padding-top: 10px;" :style="{height:mainHeight+'px'}">
+
+ <div style="position: absolute;right:36px;z-index: 2;top: 13px">
+ <el-button
+ v-if="activeName==='鐢熶骇鍒楄〃'&&tableData.length>0"
+ v-waves
+ icon="el-icon-thumb"
+ type="primary"
+ @click="report()"
+ >鎶ュ伐
+ </el-button>
+ <el-button
+ v-if="activeName==='澶栧崗鍙戞枡'&&tableData.length>0"
+ v-waves
+ type="primary"
+ icon="el-icon-thumb"
+ @click="sendOut"
+ >鍙戞枡
+ </el-button>
+ <el-button
+ v-if="activeName==='澶栧崗鏀舵枡'&&tableData.length>0"
+ v-waves
+ type="primary"
+ icon="el-icon-thumb"
+ @click="takeIn"
+ >鏀舵枡
+ </el-button>
+ <el-button
+ v-if="activeName==='涓嶈壇寰呭鐞�'&&tableData.length>0"
+ v-waves
+ type="primary"
+ icon="el-icon-thumb"
+ @click="handleBad"
+ >澶勭悊
+ </el-button>
+ </div>
+
<el-tabs
ref="elTabs"
v-model="activeName"
@@ -38,17 +74,17 @@
<el-form-item label="浜у搧鍚嶇О" style=" display: flex;">
<el-input v-model="form.partname" placeholder="璇疯緭鍏�" style="width: 200px" />
</el-form-item>
- <el-form-item label="瑙勬牸鍨嬪彿" style=" display: flex;">
- <el-input v-model="form.partspec" placeholder="璇疯緭鍏�" style="width: 200px" />
- </el-form-item>
+ <!-- <el-form-item label="瑙勬牸鍨嬪彿" style=" display: flex;">-->
+ <!-- <el-input v-model="form.partspec" placeholder="璇疯緭鍏�" style="width: 200px" />-->
+ <!-- </el-form-item>-->
</div>
<div
class="bodySearchReset"
:style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
>
- <el-button v-waves type="primary" icon="el-icon-search" @click="">鏌ヨ</el-button>
- <el-button v-waves type="info" icon="el-icon-refresh" @click="">閲嶇疆</el-button>
+ <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+ <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
</div>
</el-form>
<div
@@ -85,9 +121,22 @@
:header-cell-style="headerCellStyle()"
:cell-style="cellStyle()"
@sort-change="sortChange"
+ @row-click="rowClick"
>
<el-table-column
- prop="RowNum"
+ width="50"
+ fixed
+ >
+ <template slot-scope="{row}">
+ <el-radio
+ v-model="radioSelected"
+ :label="row.id"
+ style="color: transparent;padding-left: 10px;"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ prop="rowNum"
width="50"
label="搴忓彿"
fixed
@@ -124,29 +173,29 @@
/>
<el-table-column
prop="partname"
- width="160"
+ min-width="110"
show-tooltip-when-overflow
label="浜у搧鍚嶇О"
sortable="custom"
/>
<el-table-column
+ prop="partspec"
+ min-width="110"
+ show-tooltip-when-overflow
+ label="瑙勬牸鍨嬪彿"
+ sortable="custom"
+ >
+ <template slot-scope="{row}">
+ {{ row.partspec ? row.partspec : '/' }}
+ </template>
+ </el-table-column>
+ <el-table-column
prop="stepname"
- label="宸ュ簭"
+ label="宸ュ簭鍚嶇О"
show-tooltip-when-overflow
width="120"
sortable="custom"
/>
- <!-- <el-table-column-->
- <!-- prop="descr"-->
- <!-- label="宸ュ簭鎻忚堪"-->
- <!-- min-width="150"-->
- <!-- sortable="custom"-->
- <!-- >-->
- <!-- <template slot-scope="{row}">-->
- <!-- <div v-if="row.descr">{{ row.descr }}</div>-->
- <!-- <div v-else>/</div>-->
- <!-- </template>-->
- <!-- </el-table-column>-->
<el-table-column
prop="plan_qty"
label="浠诲姟鏁伴噺"
@@ -154,16 +203,6 @@
sortable="custom"
show-tooltip-when-overflow
/>
- <el-table-column
- label="鏈姤宸ユ暟閲�"
- width="120"
- show-tooltip-when-overflow
- >
- <!-- sortable="custom"-->
- <template slot-scope="{row}">
- <div>{{ row.plan_qty - row.good_qty - row.ng_qty }}</div>
- </template>
- </el-table-column>
<el-table-column
prop="good_qty"
show-tooltip-when-overflow
@@ -179,49 +218,52 @@
sortable="custom"
/>
<el-table-column
- prop="bad_qty"
- label="宸叉姤搴熸暟閲�"
+ prop="laborbad_qty"
+ label="宸ュ簾鏁伴噺"
width="120"
show-tooltip-when-overflow
sortable="custom"
/>
<el-table-column
- prop="plan_startdate"
- label="璁″垝寮�宸ユ棩鏈�"
+ prop="materielbad_qty"
+ label="鏂欏簾鏁伴噺"
+ width="120"
show-tooltip-when-overflow
- width="150"
sortable="custom"
- >
- <template slot-scope="{row}">
- <div v-if="row.plan_startdate">{{ row.plan_startdate.substring(0, 11) }}</div>
- <div v-else>/</div>
- </template>
- </el-table-column>
+ />
+
<el-table-column
- prop="plan_enddate"
- label="璁″垝瀹屽伐鏃ユ湡"
- width="150"
- sortable="custom"
- show-tooltip-when-overflow
+ label="鎿嶄綔"
+ width="120"
fixed="right"
>
<template slot-scope="{row}">
- <div v-if="row.plan_startdate">{{ row.plan_startdate.substring(0, 11) }}</div>
- <div v-else>/</div>
+ <div class="operationClass">
+ <el-button v-if="activeName==='鐢熶骇鍒楄〃'" v-waves icon="el-icon-thumb" type="text" @click="report(row)">
+ 鎶ュ伐
+ </el-button>
+ <el-button
+ v-if="activeName==='澶栧崗鍙戞枡'"
+ v-waves
+ icon="el-icon-thumb"
+ type="text"
+ @click="sendOut(row)"
+ >鍙戞枡
+ </el-button>
+ <el-button v-if="activeName==='澶栧崗鏀舵枡'" v-waves icon="el-icon-thumb" type="text" @click="takeIn(row)">
+ 鏀舵枡
+ </el-button>
+ <el-button
+ v-if="activeName==='涓嶈壇寰呭鐞�'"
+ v-waves
+ icon="el-icon-thumb"
+ type="text"
+ @click="handleBad(row)"
+ >澶勭悊
+ </el-button>
+ </div>
</template>
</el-table-column>
- <!-- <el-table-column-->
- <!-- label="鎿嶄綔"-->
- <!-- width="150"-->
- <!-- fixed="right"-->
- <!-- >-->
- <!-- <template slot-scope="{row}">-->
- <!-- <div class="operationClass">-->
- <!-- <el-button v-waves type="text" @click="edit('edit',row)">缂栬緫</el-button>-->
- <!-- <el-button v-waves type="text" @click="del(row)">鍒犻櫎</el-button>-->
- <!-- </div>-->
- <!-- </template>-->
- <!-- </el-table-column>-->
</el-table>
</div>
<!--鍒嗛〉-->
@@ -232,13 +274,129 @@
align="right"
layout="total,prev, pager, next,sizes"
popper-class="select_bottom"
- @pagination="getMesOrderStepSearch"
+ @pagination="search"
/>
</el-tab-pane>
</el-tabs>
</div>
+
+ <el-dialog
+ v-el-drag-dialog
+ :title="dialogTitle"
+ :visible.sync="dialogVisible"
+ width="800px"
+ :close-on-click-modal="false"
+ top="15vh"
+ @closed="handleClose"
+ @close="handleClose"
+ >
+ <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="80px">
+ <el-form-item label="宸ュ崟缂栧彿" class="dialogFormItem">
+ <div class="dialogFormItemDiv">{{ dialogForm.wo_code }}</div>
+ <!-- <el-input v-model="dialogForm.wo_code" style="width: 200px" />-->
+ </el-form-item>
+ <el-form-item label="浜у搧缂栫爜" class="dialogFormItem">
+ <div class="dialogFormItemDiv">{{ dialogForm.partnumber }}</div>
+ <!-- <el-input v-model="dialogForm.partnumber" style="width: 200px" />-->
+ </el-form-item>
+ <el-form-item label="浜у搧鍚嶇О" class="dialogFormItem">
+ <div class="dialogFormItemDiv">{{ dialogForm.partname }}</div>
+ <!-- <el-input v-model="dialogForm.partname" style="width: 200px" />-->
+ </el-form-item>
+ <el-form-item label="瑙勬牸鍨嬪彿" class="dialogFormItem">
+ <div class="dialogFormItemDiv">{{ dialogForm.partspec }}</div>
+ <!-- <el-input v-model="dialogForm.partspec" style="width: 200px" />-->
+ </el-form-item>
+ <el-form-item label="褰撳墠宸ュ簭" class="dialogFormItem">
+ <div class="dialogFormItemDiv">{{ dialogForm.stepname }}</div>
+ <!-- <el-input v-model="dialogForm.stepname" style="width: 200px" />-->
+ </el-form-item>
+ <el-form-item label="涓嬮亾宸ュ簭" class="dialogFormItem">
+ <div class="dialogFormItemDiv">{{ dialogForm.nextstepname }}</div>
+ <!-- <el-input v-model="dialogForm.nextstepname" style="width: 200px" />-->
+ </el-form-item>
+ <el-form-item label="浠诲姟鏁伴噺" class="dialogFormItem">
+ <div class="dialogFormItemDiv">{{ dialogForm.planqty }}</div>
+ <!-- <el-input v-model="dialogForm.planqty" style="width: 200px" />-->
+ </el-form-item>
+ <el-form-item label="鏈姤/宸叉姤" class="dialogFormItem">
+ <div class="dialogFormItemDiv">{{ dialogForm.noreportqty + '/' + dialogForm.reportqty }}</div>
+ <!-- <el-input v-model="dialogForm.planqty" style="width: 200px" />-->
+ </el-form-item>
+ <el-form-item label="璁′欢鏂瑰紡">
+ <el-radio-group v-model="dialogForm.reckway" style="width: 200px;" @change="reckwayChange">
+ <el-radio label="person">涓汉</el-radio>
+ <el-radio label="group">鐝粍</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item v-if="dialogForm.reckway==='group'" prop="usergroupcode" label="鐝粍">
+ <el-select
+ v-model="dialogForm.usergroupcode"
+ style="width:200px"
+ placeholder="璇烽�夋嫨"
+ filterable
+ clearable
+ :popper-append-to-body="false"
+ >
+ <el-option
+ v-for="item in usergroupArr"
+ :key="item.postcode"
+ :label="item.postname"
+ :value="item.postcode"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item prop="reportuser" label="鎶ュ伐浜哄憳">
+ <el-select
+ v-model="dialogForm.reportuser"
+ style="width:200px"
+ placeholder="璇烽�夋嫨"
+ filterable
+ clearable
+ :popper-append-to-body="false"
+ >
+ <el-option
+ v-for="item in reportuserArr"
+ :key="item.postcode"
+ :label="item.postname"
+ :value="item.postcode"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item prop="eqpcode" label="鎶ュ伐璁惧">
+ <el-select
+ v-model="dialogForm.eqpcode"
+ style="width:200px"
+ placeholder="璇烽�夋嫨"
+ filterable
+ clearable
+ :popper-append-to-body="false"
+ >
+ <el-option
+ v-for="item in eqpArr"
+ :key="item.postcode"
+ :label="item.postname"
+ :value="item.postcode"
+ />
+ </el-select>
+ </el-form-item>
+
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <div class="footerButton">
+ <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+ <el-button
+ v-waves
+ type="primary"
+ :loading="$store.state.app.buttonIsDisabled"
+ :disabled="$store.state.app.buttonIsDisabled"
+ @click="dialogVisibleConfirm"
+ >纭� 瀹�</el-button>
+ </div>
+ </span>
+ </el-dialog>
</div>
</template>
@@ -249,7 +407,13 @@
import { getCookie } from '@/utils/auth'
import elDragDialog from '@/directive/el-drag-dialog'
import waves from '@/directive/waves'
-import { MesOrderStepSearch } from '@/api/WorkOrder'
+import {
+ MesOrderNgStepSearch,
+ MesOrderNgSubStepSearch,
+ MesOrderStepSearch, MesOrderStepStart,
+ MesOrderWxStepSearch
+} from '@/api/WorkOrder'
+import { validateCode } from '@/utils/global'
export default {
name: 'SCKBG',
@@ -279,7 +443,59 @@
{ code: 'OUT', name: '澶栧崗鍙戞枡' },
{ code: 'IN', name: '澶栧崗鏀舵枡' },
{ code: 'BAD', name: '涓嶈壇寰呭鐞�' }
- ]
+ ],
+ radioSelected: '', // 澶氶�夋閫変腑鍊�
+
+ dialogVisible: false,
+ dialogTitle: '', // 瀵硅瘽妗嗗皬鏍囬
+
+ dialogForm: {
+ 'wo_code': '',
+ 'partnumber': '',
+ 'partname': '',
+ 'partspec': '',
+ 'seq': '',
+ 'stepcode': '',
+ 'stepname': '',
+ 'stepprice': '', // 宸ュ簭鍗曚环
+ 'nextstepcode': '',
+ 'nextstepname': '',
+ 'nextstepprice': '',
+ 'stepdesc': '',
+ 'planqty': 0,
+ 'startqty': 0,
+ 'noreportqty': 0,
+ 'reportqty': 0,
+ 'noputqty': 0,
+ 'wkshopcode': '',
+ 'wkshopname': '',
+ 'eqpcode': '',
+ 'eqpname': '',
+
+ remarks: '', // 澶囨敞
+ inbarcode: '', // 鍏ュ簱鏉$爜
+ defectlist: '', // 涓嶈壇姹囨��
+ reckway: 'person', // 璁′欢鏂瑰紡(鐝粍:group銆佷釜浜�:person)
+ usergroupcode: '', // 鐝粍缂栫爜
+ reportuser: '' // 鎶ュ伐浜哄憳
+
+ },
+ dialogFormRules: {
+ postcode: [
+ { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+ ],
+ postname: [
+ { required: true, message: '璇疯緭鍏ュ矖浣嶅悕绉�', trigger: ['blur', 'change'] }
+ ]
+ },
+ reckwayArr: [// 鎶ュ伐绫诲瀷
+ { code: 'group', name: '鐝粍' },
+ { code: 'person', name: '涓汉' }
+ ],
+ reportuserArr: [], // 鎶ュ伐浜哄憳
+ usergroupArr: [], // 鎶ュ伐鐝粍
+ eqpArr: [], // 鎶ュ伐璁惧
+ defectArr: []// 涓嶈壇缂洪櫡
}
},
@@ -299,23 +515,26 @@
switch (this.activeName) {
case '鐢熶骇鍒楄〃':
belong = 'produceCodeZZ'
+ this.dialogTitle = '鎶ュ伐'
break
case '澶栧崗鍙戞枡':
belong = 'produceCodeOUT'
+ this.dialogTitle = '鍙戞枡'
break
case '澶栧崗鏀舵枡':
belong = 'produceCodeIN'
+ this.dialogTitle = '鏀舵枡'
break
case '涓嶈壇寰呭鐞�':
belong = 'produceCodeBAD'
+ this.dialogTitle = '涓嶈壇澶勭悊'
break
}
this.enterNative(this.form.wocode, belong)
+ this.search()
},
enterNative(val, belong) {
- console.log(val, belong, 89898989)
if (belong === 'produceCodeZZ') {
- console.log('杩涙潵浜嗭紒')
this.$nextTick(() => {
$('input[name=\'produceCodeZZ\']')[0].focus()
})
@@ -347,15 +566,97 @@
}
this.form.order = order
this.form.prop = prop
- // this.getMesOrderStepSearch()
- this.search()// search 鏂规硶閲岄潰搴旇鎶婂洓绉嶆儏鍐靛垪鍑烘潵 鏄庡ぉ鎺ョ潃鍐�
- },
- async getMesOrderStepSearch() {
- const { data: res } = await MesOrderStepSearch()
+ this.search()
},
// 鏌ヨ
- search() {
- this.getMesOrderStepSearch()
+ async search() {
+ if (this.activeName === '鐢熶骇鍒楄〃') {
+ const res = await MesOrderStepSearch(this.form)
+ this.tableData = res.data
+ this.total = res.count
+ }
+ if (this.activeName === '澶栧崗鍙戞枡' || this.activeName === '澶栧崗鏀舵枡') {
+ const res = await MesOrderWxStepSearch(this.form)
+ this.tableData = res.data
+ this.total = res.count
+ }
+
+ if (this.activeName === '涓嶈壇寰呭鐞�') {
+ const res = await MesOrderNgStepSearch(this.form)
+ this.tableData = res.data
+ this.total = res.count
+ }
+ },
+ // 鎶ュ伐
+ report(row) {
+ if (row) {
+ this.getMesOrderStepStart('ZZ', '', row.wo_code, row.stepcode)
+ } else {
+ const temp = this.tableData.find(i => i.id === this.radioSelected)
+ this.getMesOrderStepStart('ZZ', '', temp.wo_code, temp.stepcode)
+ }
+ },
+ // 鍙戞枡
+ sendOut(row) {
+ if (row) {
+ this.getMesOrderStepStart('WX', 'OUT', row.wo_code, row.stepcode)
+ } else {
+ const temp = this.tableData.find(i => i.id === this.radioSelected)
+ this.getMesOrderStepStart('WX', 'OUT', temp.wo_code, temp.stepcode)
+ }
+ },
+ // 鏀舵枡
+ takeIn(row) {
+ if (row) {
+ this.getMesOrderStepStart('WX', 'IN', row.wo_code, row.stepcode)
+ } else {
+ const temp = this.tableData.find(i => i.id === this.radioSelected)
+ this.getMesOrderStepStart('WX', 'IN', temp.wo_code, temp.stepcode)
+ }
+ },
+ // 涓嶈壇澶勭悊
+ handleBad(row) {
+
+ },
+ // 鐢熶骇寮�鎶ュ伐锛氭姤宸�/澶栧崗(鍙戞枡/鏀舵枡)鏃舵潯浠跺垽鏂強鏁版嵁杩斿洖鎺ュ彛
+ async getMesOrderStepStart(OperType, SelectType, wocode, stepcode) {
+ const data = {
+ OperType, SelectType, wocode, stepcode
+ }
+ let res = await MesOrderStepStart(data)
+ if (res.code === '200') {
+ res = res.data
+ this.dialogForm.wo_code = res.wo_code
+ this.dialogForm.partnumber = res.partnumber
+ this.dialogForm.partname = res.partname
+ this.dialogForm.partspec = res.partspec
+ this.dialogForm.seq = res.seq
+ this.dialogForm.stepcode = res.stepcode
+ this.dialogForm.stepname = res.stepname
+ this.dialogForm.stepprice = res.stepprice
+ this.dialogForm.nextstepcode = res.nextstepcode
+ this.dialogForm.nextstepname = res.nextstepname
+ this.dialogForm.nextstepprice = res.nextstepprice
+ this.dialogForm.stepdesc = res.stepdesc
+ this.dialogForm.planqty = res.planqty
+ this.dialogForm.startqty = res.startqty
+ this.dialogForm.noreportqty = res.noreportqty// 鏈姤鏁伴噺
+ this.dialogForm.reportqty = res.reportqty // 宸叉姤鏁伴噺
+ this.dialogForm.noputqty = res.noputqty
+ this.dialogForm.wkshopcode = res.wkshopcode
+ this.dialogForm.wkshopname = res.wkshopname
+ this.dialogForm.eqpcode = res.eqpcode
+ this.dialogForm.eqpname = res.eqpname
+
+ this.dialogVisible = true
+ }
+ },
+ // 鐢熶骇寮�鎶ュ伐鎵爜鑾峰彇宸ュ崟瀵瑰簲宸ュ簭浠诲姟(涓嶈壇鏄庣粏)
+ async getMesOrderNgSubStepSearch(wocode, stepcode) {
+ const data = {
+ wocode, stepcode
+ }
+ const res = await MesOrderNgSubStepSearch(data)
},
// 瀵硅瘽妗嗗叧闂簨浠�
handleClose() {
@@ -374,6 +675,12 @@
// }
// })
},
+ reckwayChange(val) {
+
+ },
+ rowClick(row, event, column) {
+ this.radioSelected = row.id
+ },
// 鑾峰彇椤甸潰楂樺害
getHeight() {
this.$nextTick(() => {
@@ -381,6 +688,12 @@
this.tableHeight = this.mainHeight - 275
// this.$refs.tableDataRef.doLayout()
})
+ },
+ reset() {
+ this.form.wocode = ''
+ this.form.partcode = ''
+ this.form.partname = ''
+ this.form.partspec = ''
},
headerCellStyle() {
@@ -392,3 +705,18 @@
}
}
</script>
+<style lang="scss" scoped>
+
+::v-deep .elTableDiv .el-radio__label {
+ display: none !important;
+}
+
+.dialogFormItem {
+ margin: 0 10px 0 0;
+}
+
+.dialogFormItemDiv {
+ width: 200px;
+}
+
+</style>
--
Gitblit v1.9.3