From 63347dd76e7515abec15559a1b81349381a724fc Mon Sep 17 00:00:00 2001
From: loulijun2021 <1694218219@qq.com>
Date: 星期二, 26 九月 2023 17:34:37 +0800
Subject: [PATCH] 1.工序报工45%
---
src/views/produce/stepReport.vue | 407 ++++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 328 insertions(+), 79 deletions(-)
diff --git a/src/views/produce/stepReport.vue b/src/views/produce/stepReport.vue
index ec84618..3c9081f 100644
--- a/src/views/produce/stepReport.vue
+++ b/src/views/produce/stepReport.vue
@@ -286,104 +286,204 @@
v-el-drag-dialog
:title="dialogTitle"
:visible.sync="dialogVisible"
- width="800px"
+ width="1160px"
:close-on-click-modal="false"
- top="15vh"
+ top="7vh"
@closed="handleClose"
@close="handleClose"
>
- <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="80px">
+ <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="110px">
+ <el-divider content-position="left">鍩烘湰淇℃伅</el-divider>
<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 label="涓嶈壇鏁伴噺" class="dialogFormItem">
+ <div class="dialogFormItemDiv" style="color:red;">{{ dialogForm.noputqty }}</div>
</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-form-item prop="eqpcode" label="鎶ュ伐璁惧" class="dialogFormItem">
<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"
+ :key="item.code"
+ :label="item.name"
+ :value="item.code"
/>
</el-select>
</el-form-item>
+ <el-form-item label="璁′欢鏂瑰紡" class="dialogFormItem">
+ <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 :prop="dialogForm.reckway==='group'?'usergroupcode':''" label="鎶ュ伐鐝粍" class="dialogFormItem">
+ <el-select
+ v-model="dialogForm.usergroupcode"
+ style="width:200px"
+ placeholder="璇烽�夋嫨"
+ filterable
+ :disabled="dialogForm.reckway!=='group'"
+ :popper-append-to-body="false"
+ @change="usergroupChange"
+ >
+ <el-option
+ v-for="item in usergroupArr"
+ :key="item.usergroupcode"
+ :label="item.usergroupname"
+ :value="item.usergroupcode"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item prop="reportuser" label="鎶ュ伐浜哄憳" class="dialogFormItem">
+ <el-select
+ v-model="dialogForm.reportuser"
+ style="width:200px"
+ placeholder="璇烽�夋嫨"
+ filterable
+ multiple
+ collapse-tags
+ :multiple-limit="dialogForm.reckway==='group'?0:1"
+ :disabled="dialogForm.reckway==='group'&&dialogForm.usergroupcode===''"
+ :popper-append-to-body="false"
+ >
+ <el-option
+ v-for="item in reportuserArr"
+ :key="item.usercode"
+ :label="item.username"
+ :value="item.usercode"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item prop="startqty" label="鍚堟牸鏁伴噺" class="dialogFormItem">
+ <el-input v-model="dialogForm.startqty" oninput="value=value.replace(/[^\d]/g,'')" style="width: 200px" />
+ </el-form-item>
+
+ <el-divider content-position="left">涓嶈壇鏄庣粏</el-divider>
+ <el-button
+ v-waves
+ type="primary"
+ icon="el-icon-circle-plus-outline"
+ @click="addDefect"
+ >鏂板
+ </el-button>
+
+ <el-table
+ ref="defectTableDataRef"
+ :data="defectTableData"
+ border
+ row-class-name="custom-row"
+ height="300"
+ style="width: 100%;margin-top: 15px;"
+ highlight-current-row
+ :header-cell-style="this.$headerCellStyle"
+ :cell-style="this.$cellStyle"
+ >
+ <el-table-column
+ type="index"
+ label="搴忓彿"
+ align="center"
+ width="50"
+ />
+ <el-table-column
+ prop="stepcode"
+ show-tooltip-when-overflow
+ label="缂洪櫡缂栫爜/鍚嶇О"
+ align="center"
+ min-width="450"
+ >
+ <template slot-scope="{row}">
+ <el-select
+ v-model="row.code"
+ style="width: 100%"
+ placeholder="璇烽�夋嫨"
+ multiple
+ filterable
+ >
+ <!-- collapse-tags-->
+ <el-option
+ v-for="item in defectArr"
+ :key="item.code"
+ :label="item.name"
+ :value="item.code"
+ />
+ </el-select>
+ </template>
+ </el-table-column>
+
+ <el-table-column
+ prop="badqty"
+ label="涓嶈壇鏁伴噺"
+ show-tooltip-when-overflow
+ align="center"
+ >
+ <template slot-scope="{row}">
+ <el-input
+ v-model="row.badqty"
+ placeholder="璇疯緭鍏ユ暟閲�"
+ oninput="value=value.replace(/[^0-9]/g,'')"
+ style="width: 100%"
+ @click.stop=""
+ @change="badqtyChange"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鎿嶄綔"
+ width="50"
+ align="center"
+ >
+ <template slot-scope="{row}">
+ <div class="operationClass">
+ <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">
+ <i
+ class="el-icon-delete"
+ :style="{color:$store.state.settings.theme}"
+ style="margin-left: 7px;"
+ @click="defectDel(row)"
+ />
+ </el-tooltip>
+ </div>
+ </template>
+ </el-table-column>
+ </el-table>
</el-form>
+
<span slot="footer" class="dialog-footer">
<div class="footerButton">
<el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
@@ -404,16 +504,22 @@
<script>
import Pagination from '@/components/Pagination'
import $ from 'jquery'
-import { getCookie } from '@/utils/auth'
import elDragDialog from '@/directive/el-drag-dialog'
import waves from '@/directive/waves'
import {
MesOrderNgStepSearch,
MesOrderNgSubStepSearch,
MesOrderStepSearch, MesOrderStepStart,
- MesOrderWxStepSearch
+ MesOrderWxStepSearch, SavaMesOrderStepReport
} from '@/api/WorkOrder'
-import { validateCode } from '@/utils/global'
+import {
+ DefectPermissions,
+ EqpPermissions,
+ GroupsPermissions,
+ GroupsPersonPermissions,
+ PersonPermissions
+} from '@/api/GeneralBasicData'
+import { nanoid } from 'nanoid'
export default {
name: 'SCKBG',
@@ -463,10 +569,10 @@
'nextstepprice': '',
'stepdesc': '',
'planqty': 0,
- 'startqty': 0,
- 'noreportqty': 0,
- 'reportqty': 0,
- 'noputqty': 0,
+ 'startqty': 0, //
+ 'noreportqty': 0, // 鏈姤鏁伴噺
+ 'reportqty': 0, // 宸叉姤鏁伴噺
+ 'noputqty': 0, // 涓嶈壇鏁伴噺
'wkshopcode': '',
'wkshopname': '',
'eqpcode': '',
@@ -477,16 +583,23 @@
defectlist: '', // 涓嶈壇姹囨��
reckway: 'person', // 璁′欢鏂瑰紡(鐝粍:group銆佷釜浜�:person)
usergroupcode: '', // 鐝粍缂栫爜
- reportuser: '' // 鎶ュ伐浜哄憳
+ reportuser: [] // 鎶ュ伐浜哄憳
},
dialogFormRules: {
- postcode: [
- { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+ eqpcode: [
+ { required: true, message: '璇烽�夋嫨鎶ュ伐璁惧', trigger: ['blur', 'change'] }
],
- postname: [
- { required: true, message: '璇疯緭鍏ュ矖浣嶅悕绉�', trigger: ['blur', 'change'] }
+ usergroupcode: [
+ { required: true, message: '璇烽�夋嫨鎶ュ伐鐝粍', trigger: ['blur', 'change'] }
+ ],
+ reportuser: [
+ { required: true, message: '璇烽�夋嫨鎶ュ伐浜哄憳', trigger: ['blur', 'change'] }
+ ],
+ startqty: [
+ { required: true, message: '璇疯緭鍏ュ悎鏍兼暟閲�', trigger: ['blur', 'change'] }
]
+
},
reckwayArr: [// 鎶ュ伐绫诲瀷
{ code: 'group', name: '鐝粍' },
@@ -495,11 +608,12 @@
reportuserArr: [], // 鎶ュ伐浜哄憳
usergroupArr: [], // 鎶ュ伐鐝粍
eqpArr: [], // 鎶ュ伐璁惧
- defectArr: []// 涓嶈壇缂洪櫡
+ defectArr: [], // 涓嶈壇缂洪櫡
+
+ defectTableData: []
}
},
-
created() {
},
@@ -508,8 +622,23 @@
this.getHeight()
this.tabClick()
+
+ this.getAllSelectArr()
},
methods: {
+ async getAllSelectArr() {
+ const { data: res1 } = await GroupsPermissions()// 鐝粍
+ this.usergroupArr = res1
+
+ const { data: res2 } = await PersonPermissions() // 浜哄憳
+ this.reportuserArr = res2
+
+ const { data: res3 } = await DefectPermissions() // 缂洪櫡
+ this.defectArr = res3
+
+ const { data: res4 } = await EqpPermissions() // 璁惧
+ this.eqpArr = res4
+ },
tabClick() {
let belong
switch (this.activeName) {
@@ -653,13 +782,47 @@
},
// 鐢熶骇寮�鎶ュ伐鎵爜鑾峰彇宸ュ崟瀵瑰簲宸ュ簭浠诲姟(涓嶈壇鏄庣粏)
async getMesOrderNgSubStepSearch(wocode, stepcode) {
- const data = {
- wocode, stepcode
- }
- const res = await MesOrderNgSubStepSearch(data)
+ // const data = {
+ // wocode, stepcode
+ // }
+ // const res = await MesOrderNgSubStepSearch(data)
},
// 瀵硅瘽妗嗗叧闂簨浠�
handleClose() {
+ this.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: [] // 鎶ュ伐浜哄憳
+
+ }
+
+ this.defectTableData = []
+
this.$refs.dialogForm.clearValidate()
},
// 瀵硅瘽妗嗗彇娑�
@@ -669,14 +832,100 @@
},
// 瀵硅瘽妗嗙‘璁�
dialogVisibleConfirm() {
- // this.$refs.dialogForm.validate(async valid => {
- // if (valid) {
- //
- // }
- // })
+ this.$refs.dialogForm.validate(async valid => {
+ if (valid) {
+ if (this.activeName === '鐢熶骇鍒楄〃') {
+ if (this.defectTableData.find(i => i.code.length === 0)) {
+ return this.$message.info('缂洪櫡缂栫爜/鍚嶇О涓嶈兘涓虹┖锛�')
+ }
+ if (this.defectTableData.find(i => i.badqty.toString().trim() === '' || parseFloat(i.badqty) === 0)) {
+ return this.$message.info('涓嶈壇鏁伴噺涓嶈兘涓虹┖鎴栦负闆讹紒')
+ }
+
+ if (parseFloat(this.dialogForm.noreportqty) < parseFloat(this.dialogForm.startqty) + parseFloat(this.dialogForm.noputqty)) {
+ return this.$message.info('鍚堟牸鏁伴噺鍔犱笉鑹暟閲忎笉鑳藉ぇ浜庝簡鏈姤鏁伴噺!')
+ }
+
+ const defectlist = []
+ this.defectTableData.forEach(i => {
+ defectlist.push({
+ defect_code: i.code.join(','),
+ badqty: i.badqty
+ })
+ })
+ const data = {
+ mesordercode: this.dialogForm.wo_code,
+ partcode: this.dialogForm.partnumber,
+ stepseq: this.dialogForm.seq,
+ stepcode: this.dialogForm.stepcode,
+ stepprice: this.dialogForm.stepprice,
+ eqpcode: this.dialogForm.eqpcode,
+ inbarcode: '',
+ reckway: this.dialogForm.reckway,
+ usergroupcode: this.dialogForm.usergroupcode,
+ reportuser: this.dialogForm.reportuser.join(','),
+ taskqty: this.dialogForm.planqty,
+ // startqty: this.dialogForm.startqty,
+ // reportqty: this.dialogForm.reportqty,
+
+ startqty: this.dialogForm.startqty,
+ reportqty: this.dialogForm.startqty, // 鎶ュ伐鏁伴噺
+
+ defectlist,
+ remarks: ''
+ }
+ // console.log(JSON.parse(JSON.stringify(this.defectTableData)))
+ // console.log(JSON.parse(JSON.stringify(data)))
+
+ const res = await SavaMesOrderStepReport(data)
+ // console.log(res)
+ if (res.code === '200') {
+ this.$notify.success('鎶ュ伐鎴愬姛锛�')
+ await this.search()
+ this.dialogVisible = false
+ } else {
+ this.$notify.error('鎶ュ伐澶辫触锛�')
+ }
+ }
+ }
+ })
+ },
+ // 缂洪櫡鏂板
+ addDefect() {
+ if (this.defectTableData.find(i => i.code.length === 0)) {
+ return this.$message.info('缂洪櫡缂栫爜/鍚嶇О涓嶈兘涓虹┖锛�')
+ }
+ if (this.defectTableData.find(i => i.badqty.toString().trim() === '' || parseFloat(i.badqty) === 0)) {
+ return this.$message.info('涓嶈壇鏁伴噺涓嶈兘涓虹┖鎴栦负闆讹紒')
+ }
+
+ this.defectTableData.push({
+ uuid: nanoid(), code: [], badqty: ''
+ })
+ },
+ // 缂洪櫡鍒犻櫎
+ defectDel(row) {
+ this.defectTableData = this.defectTableData.filter(i => i.uuid !== row.uuid)
+
+ this.dialogForm.noputqty = 0
+ this.defectTableData.forEach(i => {
+ this.dialogForm.noputqty += parseFloat(i.badqty)
+ })
+ },
+ badqtyChange(val) {
+ this.dialogForm.noputqty = 0
+ this.defectTableData.forEach(i => {
+ this.dialogForm.noputqty += parseFloat(i.badqty)
+ })
},
reckwayChange(val) {
-
+ // console.log(val)
+ this.dialogForm.usergroupcode = ''
+ this.dialogForm.reportuser = []
+ },
+ async usergroupChange(val) {
+ const { data: res } = await GroupsPersonPermissions({ groupcode: val })
+ this.dialogForm.reportuser = res[0].usercode_list ? res[0].usercode_list.split(',') : []
},
rowClick(row, event, column) {
this.radioSelected = row.id
--
Gitblit v1.9.3