| | |
| | | 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> |
| | |
| | | <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', |
| | |
| | | 'nextstepprice': '', |
| | | 'stepdesc': '', |
| | | 'planqty': 0, |
| | | 'startqty': 0, |
| | | 'noreportqty': 0, |
| | | 'reportqty': 0, |
| | | 'noputqty': 0, |
| | | 'startqty': 0, // |
| | | 'noreportqty': 0, // 未报数量 |
| | | 'reportqty': 0, // 已报数量 |
| | | 'noputqty': 0, // 不良数量 |
| | | 'wkshopcode': '', |
| | | 'wkshopname': '', |
| | | 'eqpcode': '', |
| | |
| | | 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: '班组' }, |
| | |
| | | reportuserArr: [], // 报工人员 |
| | | usergroupArr: [], // 报工班组 |
| | | eqpArr: [], // 报工设备 |
| | | defectArr: []// 不良缺陷 |
| | | defectArr: [], // 不良缺陷 |
| | | |
| | | defectTableData: [] |
| | | |
| | | } |
| | | }, |
| | | |
| | | created() { |
| | | |
| | | }, |
| | |
| | | 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) { |
| | |
| | | }, |
| | | // 生产开报工扫码获取工单对应工序任务(不良明细) |
| | | 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() |
| | | }, |
| | | // 对话框取消 |
| | |
| | | }, |
| | | // 对话框确认 |
| | | 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 |