From 889d80d88abd7b4a60846678624f4b976c15f820 Mon Sep 17 00:00:00 2001 From: 小小儁爺 <1694218219@qq.com> Date: 星期五, 13 六月 2025 09:07:36 +0800 Subject: [PATCH] 1.新增判断:当不良数量为零时,合格数量不能为零 --- src/views/produce/stepReport.vue | 3373 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 1,691 insertions(+), 1,682 deletions(-) diff --git a/src/views/produce/stepReport.vue b/src/views/produce/stepReport.vue index 3779137..329fa93 100644 --- a/src/views/produce/stepReport.vue +++ b/src/views/produce/stepReport.vue @@ -1,1682 +1,1691 @@ -<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" - :disabled="radioSelected===''" - @click="report()" - >鎶ュ伐 - </el-button> - <el-button - v-if="activeName==='澶栧崗鍙戞枡'&&tableData.length>0" - v-waves - type="primary" - icon="el-icon-thumb" - :disabled="radioSelected===''" - @click="sendOut()" - >鍙戞枡 - </el-button> - <el-button - v-if="activeName==='澶栧崗鏀舵枡'&&tableData.length>0" - v-waves - type="primary" - icon="el-icon-thumb" - :disabled="radioSelected===''" - @click="takeIn()" - >鏀舵枡 - </el-button> - <el-button - v-if="activeName==='涓嶈壇寰呭鐞�'&&tableData.length>0" - v-waves - type="primary" - icon="el-icon-thumb" - :disabled="radioSelected===''" - @click="handleBad()" - >澶勭悊 - </el-button> - </div> - - <div v-if="form.wocode" style="position: absolute;left: 460px;z-index: 2;top: 23px;font-weight: bolder"> - 褰撳墠宸ュ崟鍙蜂负锛歿{ form.wocode }} - </div> - - <el-tabs - ref="elTabs" - v-model="activeName" - type="border-card" - @tab-click="tabClick" - > - - <el-tab-pane - v-for="item in elTabsArr" - :key="item.code" - :label="item.name" - :name="item.name" - > - - <div class="bodyTopFormGroup"> - <el-form - ref="form" - :model="form" - label-width="100px" - inline - style="display: flex;" - > - <div class="elForm"> - - <el-form-item label="宸ュ崟鍙�" style=" display: flex;"> - <el-input - v-model="workOrderCurrentValue" - :name="'produceCode'+item.code" - placeholder="璇锋壂鎻忔垨杈撳叆" - style="width: 300px" - - @keyup.enter.native="val=>enterNative(val,'produceCode' + item.code)" - /> - </el-form-item> - <el-form-item label="浜у搧缂栫爜" style=" display: flex;"> - <el-input - v-model="form.partcode" - placeholder="璇疯緭鍏�" - style="width: 200px" - - @keyup.enter.native="val=>enterNative(val,'produceCode' + item.code)" - /> - </el-form-item> - <el-form-item label="浜у搧鍚嶇О" style=" display: flex;"> - <el-input - v-model="form.partname" - placeholder="璇疯緭鍏�" - - style="width: 200px" - @keyup.enter.native="val=>enterNative(val,'produceCode' + item.code)" - /> - </el-form-item> - <el-form-item label="杞﹂棿鍚嶇О" style=" display: flex;"> - <el-select - v-model="form.wkshopcode" - filterable - :popper-append-to-body="false" - style="width: 200px" - - placeholder="璇烽�夋嫨" - > - <el-option - v-for="item in wkshopcodeArr" - :key="item.torg_code" - :label="item.torg_name" - :value="item.torg_code" - /> - </el-select> - </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="search">鏌ヨ</el-button> - <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button> - </div> - </el-form> - <div - class="bodyTopFormExpand" - style="height:5px" - > - <!-- <svg-icon--> - <!-- v-show="mouseHoverType==='mouseout'"--> - <!-- style="cursor: pointer"--> - <!-- :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"--> - <!-- @mouseenter="mouseHoverType=$event.type"--> - <!-- />--> - <!-- <svg-icon--> - <!-- v-show="mouseHoverType==='mouseenter'"--> - <!-- style="cursor: pointer"--> - <!-- :icon-class="!isExpandForm?'doubleDown':'doubleUp'"--> - <!-- @click="isExpandForm=!isExpandForm"--> - <!-- @mouseout="mouseHoverType=$event.type"--> - <!-- />--> - </div> - </div> - - <div class="elTableDiv"> - <el-table - ref="tableDataRef" - :key="'tableDataRef'+item.code" - class="tableFixed" - :data="tableData" - :height="tableHeight+50" - border - row-class-name="custom-row" - :style="{width: 100+'%',height:tableHeight+'px'}" - highlight-current-row - :header-cell-style="headerCellStyle()" - :cell-style="cellStyle()" - @sort-change="sortChange" - @row-click="rowClick" - > - <el-table-column - 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 - /> - <el-table-column - v-if="activeName!=='涓嶈壇寰呭鐞�'" - prop="status" - show-tooltip-when-overflow - label="鐘舵��" - sortable="custom" - width="80" - > - <template slot-scope="{row}"> - <div v-if="row.status==='NEW'">鏂拌鍗�</div> - <div v-if="row.status==='ALLO'">宸叉淳鍙�</div> - <div v-if="row.status==='START'">寮�宸�</div> - <div v-if="row.status==='CLOSED'">瀹屽伐</div> - <div v-if="row.status==='NOSCHED'">寰呮帓绋�</div> - <div v-if="row.status==='SCHED'">宸叉帓绋�</div> - </template> - </el-table-column> - <el-table-column - prop="wo_code" - label="宸ュ崟鍙�" - min-width="160" - show-tooltip-when-overflow - sortable="custom" - /> - <el-table-column - prop="partcode" - label="浜у搧缂栫爜" - min-width="110" - sortable="custom" - show-tooltip-when-overflow - /> - <el-table-column - prop="partname" - 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="wkshp_name" - min-width="110" - show-tooltip-when-overflow - label="杞﹂棿鍚嶇О" - sortable="custom" - /> - <el-table-column - prop="stepname" - label="宸ュ簭鍚嶇О" - show-tooltip-when-overflow - width="120" - sortable="custom" - /> - <el-table-column - prop="plan_qty" - label="浠诲姟鏁伴噺" - width="110" - sortable="custom" - show-tooltip-when-overflow - /> - <el-table-column - v-if="activeName==='澶栧崗鍙戞枡'||activeName==='澶栧崗鏀舵枡'" - prop="fqty" - show-tooltip-when-overflow - label="宸插彂鏂欐暟閲�" - sortable="custom" - width="120" - /> - <el-table-column - prop="good_qty" - show-tooltip-when-overflow - :label="activeName==='澶栧崗鍙戞枡'||activeName==='澶栧崗鏀舵枡'?'宸叉敹鏂欐暟閲�':'鍚堟牸鏁伴噺'" - sortable="custom" - width="120" - /> - <el-table-column - prop="ng_qty" - label="涓嶈壇鏁伴噺" - show-tooltip-when-overflow - width="120" - sortable="custom" - /> - <el-table-column - prop="laborbad_qty" - label="宸ュ簾鏁伴噺" - width="120" - show-tooltip-when-overflow - sortable="custom" - /> - <el-table-column - prop="materielbad_qty" - label="鏂欏簾鏁伴噺" - width="120" - show-tooltip-when-overflow - sortable="custom" - /> - - <el-table-column - label="鎿嶄綔" - width="120" - fixed="right" - > - <template slot-scope="{row}"> - <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> - </div> - <!--鍒嗛〉--> - <pagination - :total="total" - :page.sync="form.page" - :limit.sync="form.rows" - align="right" - layout="total,prev, pager, next,sizes" - popper-class="select_bottom" - @pagination="search" - /> - </el-tab-pane> - - </el-tabs> - - </div> - - <!-- 寮�鎶ュ伐銆佸鍗忋�佷笉鑹鐞�--> - <el-dialog - v-el-drag-dialog - :title="dialogTitle" - :visible.sync="dialogVisible" - width="1160px" - :close-on-click-modal="false" - :top="activeName==='鐢熶骇鍒楄〃'||activeName==='澶栧崗鏀舵枡'? '6vh':'15vh'" - @closed="handleClose" - @close="handleClose" - > - <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="110px"> - <!-- <el-divider v-if="activeName==='鐢熶骇鍒楄〃'||activeName==='澶栧崗鏀舵枡'||activeName==='涓嶈壇寰呭鐞�'" content-position="left">鍩烘湰淇℃伅</el-divider>--> - <el-divider v-if="activeName==='鐢熶骇鍒楄〃'" content-position="left">鎶ュ伐淇℃伅</el-divider> - <el-divider v-if="activeName==='澶栧崗鏀舵枡'" content-position="left">鏀舵枡淇℃伅</el-divider> - <el-divider v-if="activeName==='涓嶈壇寰呭鐞�'" content-position="left">寰呭鐞嗕俊鎭�</el-divider> - <el-form-item label="宸ュ崟缂栧彿" class="dialogFormItem"> - <div class="dialogFormItemDiv">{{ dialogForm.wo_code }}</div> - </el-form-item> - <el-form-item label="浜у搧缂栫爜" class="dialogFormItem"> - <div class="dialogFormItemDiv">{{ dialogForm.partnumber }}</div> - </el-form-item> - <el-form-item label="浜у搧鍚嶇О" class="dialogFormItem"> - <div class="dialogFormItemDiv">{{ dialogForm.partname }}</div> - </el-form-item> - <el-form-item label="瑙勬牸鍨嬪彿" class="dialogFormItem"> - <div class="dialogFormItemDiv">{{ dialogForm.partspec ? dialogForm.partspec : '/' }}</div> - </el-form-item> - <el-form-item label="褰撳墠宸ュ簭" class="dialogFormItem"> - <div class="dialogFormItemDiv">{{ dialogForm.stepname }}</div> - </el-form-item> - <el-form-item label="涓嬮亾宸ュ簭" class="dialogFormItem"> - <div class="dialogFormItemDiv">{{ dialogForm.nextstepname ? dialogForm.nextstepname : '/' }}</div> - </el-form-item> - <el-form-item label="浠诲姟鏁伴噺" class="dialogFormItem"> - <div class="dialogFormItemDiv">{{ dialogForm.planqty }}</div> - </el-form-item> - - <el-form-item v-if="activeName==='涓嶈壇寰呭鐞�'" label="鍚堟牸鏁伴噺" class="dialogFormItem"> - <div class="dialogFormItemDiv">{{ dialogForm.noreportqty }}</div> - </el-form-item> - <el-form-item v-if="activeName==='涓嶈壇寰呭鐞�'" label="涓嶈壇鏁伴噺" class="dialogFormItem"> - <div class="dialogFormItemDiv">{{ dialogForm.noputqty }}</div> - </el-form-item> - - <el-form-item - v-if="activeName!=='涓嶈壇寰呭鐞�'" - :label="activeName==='鐢熶骇鍒楄〃'? '鏈姤/宸叉姤':(activeName==='澶栧崗鍙戞枡'?'鏈彂/宸插彂':'鏈敹/宸叉敹')" - class="dialogFormItem" - > - <div class="dialogFormItemDiv">{{ dialogForm.noreportqty + '/' + dialogForm.reportqty }}</div> - </el-form-item> - - <el-form-item v-if="activeName==='鐢熶骇鍒楄〃'||activeName==='澶栧崗鏀舵枡'" label="涓嶈壇鏁伴噺" class="dialogFormItem"> - <div class="dialogFormItemDiv" style="color:red;">{{ dialogForm.noputqty }}</div> - </el-form-item> - - <el-form-item v-if="activeName==='鐢熶骇鍒楄〃'" 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.code" - :label="item.name" - :value="item.code" - /> - </el-select> - </el-form-item> - - <el-form-item v-if="activeName==='鐢熶骇鍒楄〃'" 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 - v-if="activeName==='鐢熶骇鍒楄〃'" - :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 v-if="activeName==='鐢熶骇鍒楄〃'" 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 v-if="activeName==='鐢熶骇鍒楄〃'" prop="startqty" label="鍚堟牸鏁伴噺" class="dialogFormItem"> - <el-input v-model="dialogForm.startqty" oninput="value=value.replace(/[^\d]/g,'')" style="width: 200px" /> - </el-form-item> - - <el-form-item v-if="activeName==='澶栧崗鍙戞枡'||activeName==='澶栧崗鏀舵枡'" prop="wxcode" label="澶栧崗渚涙柟" class="dialogFormItem"> - <el-select - v-model="dialogForm.wxcode" - style="width:200px" - placeholder="璇烽�夋嫨" - filterable - :popper-append-to-body="false" - > - <el-option - v-for="item in wxArr" - :key="item.code" - :label="item.name" - :value="item.code" - /> - </el-select> - </el-form-item> - <el-form-item v-if="activeName==='澶栧崗鍙戞枡'" prop="outuser" label="鍙戞枡浜哄憳" class="dialogFormItem"> - <el-select - v-model="dialogForm.outuser" - style="width:200px" - placeholder="璇烽�夋嫨" - filterable - :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 v-if="activeName==='澶栧崗鍙戞枡'" prop="fqty" label="鍙戞枡鏁伴噺" class="dialogFormItem"> - <el-input v-model="dialogForm.fqty" oninput="value=value.replace(/[^\d]/g,'')" style="width: 200px" /> - </el-form-item> - - <el-form-item v-if="activeName==='澶栧崗鏀舵枡'" prop="inuser" label="鏀舵枡浜哄憳" class="dialogFormItem"> - <el-select - v-model="dialogForm.inuser" - style="width:200px" - placeholder="璇烽�夋嫨" - filterable - :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 v-if="activeName==='澶栧崗鏀舵枡'" prop="sqty" label="鏀舵枡鏁伴噺" class="dialogFormItem"> - <el-input v-model="dialogForm.sqty" oninput="value=value.replace(/[^\d]/g,'')" style="width: 200px" /> - </el-form-item> - - <el-divider v-if="activeName==='鐢熶骇鍒楄〃'||activeName==='澶栧崗鏀舵枡'" content-position="left">涓嶈壇鏄庣粏淇℃伅</el-divider> - <el-button - v-if="activeName==='鐢熶骇鍒楄〃'||activeName==='澶栧崗鏀舵枡'" - v-waves - type="primary" - icon="el-icon-circle-plus-outline" - @click="addDefect" - >鏂板 - </el-button> - <el-table - v-if="activeName==='鐢熶骇鍒楄〃'||activeName==='澶栧崗鏀舵枡'" - ref="defectTableDataRef" - key="defectTableDataKey" - :data="defectTableData" - border - row-class-name="custom-row" - height="200" - 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" - 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="涓嶈壇鏁伴噺" - 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-divider v-if="activeName==='澶栧崗鏀舵枡'" content-position="left">鍙敹鏂欎緵搴斿晢</el-divider> - <div - v-for="(item,index) in dialogForm.list" - v-if="item.fqty>0" - :key="item.name" - style="display: flex;line-height: 26px;height: 26px;margin-left:30px;align-items: center" - > - <div - style="color: #fff;width: 22px;height: 22px;display: flex;justify-content: center;align-items: center;border-radius: 50%" - :style="{backgroundColor:$store.state.settings.theme}" - >{{ index + 1 }} - </div> - <div style="margin-left:30px;width: 160px;" class="ellipsis"> - {{ item.tp }} - </div> - <div style="margin-left:30px;"> - 鍙敹鏁伴噺锛歿{ item.acceptQty }} - </div> - </div> - - <el-divider v-if="activeName==='涓嶈壇寰呭鐞�'" content-position="left">涓嶈壇淇℃伅鏄庣粏</el-divider> - <el-table - v-if="activeName==='涓嶈壇寰呭鐞�'" - ref="badTableDataDataRef" - key="badTableDataDataKey" - :data="badTableData" - 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="step_code"--> - <!-- label="宸ュ簭缂栫爜"--> - <!-- show-tooltip-when-overflow--> - <!-- align="center"--> - <!-- />--> - <el-table-column - prop="stepname" - label="宸ュ簭鍚嶇О" - show-tooltip-when-overflow - align="center" - /> - <el-table-column - prop="plan_qty" - label="浠诲姟鏁伴噺" - show-tooltip-when-overflow - align="center" - /> - <el-table-column - prop="report_qty" - label="鍚堟牸鏁伴噺" - show-tooltip-when-overflow - align="center" - /> - <el-table-column - prop="ng_qty" - label="涓嶈壇鏁伴噺" - show-tooltip-when-overflow - align="center" - /> - <el-table-column - prop="defect_name" - label="涓嶈壇鍘熷洜" - show-tooltip-when-overflow - align="center" - /> - <el-table-column - prop="repair_qty" - label="缁翠慨鍚堟牸鏁伴噺" - align="center" - > - <template slot-scope="{row}"> - <el-input - v-model="row.repair_qty" - placeholder="璇疯緭鍏ユ暟閲�" - oninput="value=value.replace(/[^0-9]/g,'')" - style="width: 100%" - @click.stop="" - /> - </template> - </el-table-column> - <el-table-column - prop="laborbad_qty" - label="宸ュ簾鏁伴噺" - align="center" - > - <template slot-scope="{row}"> - <el-input - v-model="row.laborbad_qty" - placeholder="璇疯緭鍏ユ暟閲�" - oninput="value=value.replace(/[^0-9]/g,'')" - style="width: 100%" - @click.stop="" - /> - </template> - </el-table-column> - <el-table-column - prop="materielbad_qty" - label="鏂欏簾鏁伴噺" - align="center" - > - <template slot-scope="{row}"> - <el-input - v-model="row.materielbad_qty" - placeholder="璇疯緭鍏ユ暟閲�" - oninput="value=value.replace(/[^0-9]/g,'')" - style="width: 100%" - @click.stop="" - /> - </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> - <el-button - v-waves - type="primary" - :loading="$store.state.app.buttonIsDisabled" - :disabled="$store.state.app.buttonIsDisabled" - @click="dialogVisibleConfirm" - >纭� 瀹�</el-button> - </div> - </span> - </el-dialog> - - <!-- 娴佽浆灏忔爣绛炬墦鍗�--> - <!--鎵撳嵃棰勮椤甸潰 灏忔爣绛�--> - <el-dialog - v-el-drag-dialog - title="棰勮" - :visible.sync="dialogVisible2" - width="1140" - top="10vh" - :close-on-click-modal="false" - @close="dialogVisible2Close" - > - <!-- 瑕佹墦鍗扮殑鍖哄煙 --> - <div id="printMe2" style="padding: 30px;"> - <div - style="display: flex;width: 280px;height: 150px;border: 1px solid #000;text-align: center;font-size: 10px;" - > - - <div style="width: 90px;display: flex;flex-direction: column;border-right: 1px solid #000"> - <div - style="display: flex;height: 90px;border-bottom:1px solid #000; - justify-content: center;align-items: center;position: relative" - > - <div id="qrCode2" ref="qrCodeDiv2" style="overflow-y: hidden;height:60px;position: absolute;left: 14px;" /> - </div> - <div - style="display: flex;height: 30px;justify-content: flex-start;border-bottom:1px solid #000;align-items: center" - > - <div style="margin-left: 5px;width: 28px">鏁伴噺:</div> - {{ qrForm.startqty }} - </div> - <div style="display: flex;height: 30px;justify-content: flex-start;align-items: center"> - <div style="margin-left: 5px;width: 42px">澶勭悊浜�:</div> - {{ qrForm.operator }} - </div> - </div> - - <div style="width:190px;display: flex;flex-direction: column"> - <div - style="display: flex;height: 20%;border-bottom:1px solid #000;justify-content: flex-start;align-items: center;text-align: left" - > - <div style="width: 60px;margin-left: 5px;">宸ュ崟缂栧彿:</div> - <div>{{ qrForm.wo_code }}</div> - </div> - <div - style="display: flex;height: 20%;border-bottom:1px solid #000;justify-content: flex-start;align-items: center ;text-align: left" - > - <div style="width: 60px;margin-left: 5px;">浜у搧缂栫爜:</div> - <div>{{ qrForm.partcode }}</div> - </div> - <div - style="display: flex;height: 20%;border-bottom:1px solid #000 ;justify-content: flex-start;align-items: center;text-align: left" - > - <div style="width:60px;margin-left: 5px;">浜у搧鍚嶇О:</div> - <div>{{ qrForm.partname }}</div> - </div> - <div - style="display: flex;height: 20%;border-bottom:1px solid #000 ;justify-content: flex-start;align-items: center;text-align: left" - > - <div style="width:60px;margin-left: 5px;">{{ qrForm.nextstepname?'涓嬮亾宸ュ簭':'浜у搧瑙勬牸' }}:</div> - <div>{{ qrForm.nextstepname?qrForm.nextstepname:qrForm.partspec?qrForm.partspec:'/' }}</div> - </div> - <div style="display: flex;height: 20%;justify-content: flex-start;align-items: center;text-align: left"> - <div style="width: 60px;margin-left: 5px;">澶勭悊鏃堕棿:</div> - <div>{{ qrForm.operatorTime }}</div> - </div> - - </div> - - </div> - </div> - <span slot="footer" class="dialog-footer"> - <div class="footerButton"> - <el-button v-waves @click="dialogVisible2 = false">鍙� 娑�</el-button> - <el-button v-waves v-print="printObj2" type="primary">纭� 瀹�</el-button> - </div> - </span> - </el-dialog> - - </div> -</template> - -<script> -import Pagination from '@/components/Pagination' -import $ from 'jquery' -import elDragDialog from '@/directive/el-drag-dialog' -import waves from '@/directive/waves' -import { - EditOrderNgStepSeave, - MesOrderNgStepSearch, - MesOrderNgSubStepSearch, - MesOrderStepSearch, MesOrderStepStart, - MesOrderWxStepSearch, SavaMesOrderStepIn, SavaMesOrderStepOut, SavaMesOrderStepReport -} from '@/api/WorkOrder' -import { - CustomerPermissions, - DefectPermissions, - EqpPermissions, - GroupsPermissions, - GroupsPersonPermissions, - PersonPermissions, PrentOrganizationNoCompany -} from '@/api/GeneralBasicData' -import { nanoid } from 'nanoid' -import { LabelBarCode } from '@/api/systemSetting' -import { getCookie } from '@/utils/auth' -import { handleDatetime2 } from '@/utils/global' -import QRCode from 'qrcodejs2' -export default { - name: 'StepReport', - components: { - Pagination - }, - directives: { elDragDialog, waves }, - data() { - return { - mainHeight: 0, - tableHeight: 0, - form: { - wkshopcode: '', - wocode: '', // 宸ュ崟鍙� - partcode: '', // 浜у搧缂栫爜 - partname: '', // 浜у搧鍚嶇О - partspec: '', // 浜у搧瑙勬牸 - prop: 'lm_date', // 鎺掑簭瀛楁 - order: 'desc', // 鎺掑簭瀛楁 - page: 1, // 绗嚑椤� - rows: 20 // 姣忛〉澶氬皯鏉� - }, - wkshopcodeArr: [], - total: 10, - tableData: [], - activeName: '鐢熶骇鍒楄〃', - elTabsArr: [ - { code: 'ZZ', name: '鐢熶骇鍒楄〃' }, - { 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: [], // 鎶ュ伐浜哄憳 - - wxcode: '', - outuser: '', - fqty: '', - inuser: '', - sqty: '', - list: '' - - }, - dialogFormRules: { - eqpcode: [ - { 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'] } - ], - wxcode: [ - { required: true, message: '璇烽�夋嫨澶栧崗渚涙柟', trigger: ['blur', 'change'] } - ], - outuser: [ - { required: true, message: '璇烽�夋嫨鍙戞枡浜哄憳', trigger: ['blur', 'change'] } - ], - inuser: [ - { required: true, message: '璇烽�夋嫨鏀舵枡浜哄憳', trigger: ['blur', 'change'] } - ], - fqty: [ - { required: true, message: '璇疯緭鍏ュ彂鏂欐暟閲�', trigger: ['blur', 'change'] } - ], - sqty: [ - { required: true, message: '璇疯緭鍏ユ敹鏂欐暟閲�', trigger: ['blur', 'change'] } - ] - - }, - reckwayArr: [// 鎶ュ伐绫诲瀷 - { code: 'group', name: '鐝粍' }, - { code: 'person', name: '涓汉' } - ], - reportuserArr: [], // 鎶ュ伐浜哄憳 - usergroupArr: [], // 鎶ュ伐鐝粍 - eqpArr: [], // 鎶ュ伐璁惧 - defectArr: [], // 涓嶈壇缂洪櫡 - wxArr: [], // 寰�鏉ュ崟浣嶄笅鎷� - - defectTableData: [], - badTableData: [], - workOrderCurrentValue: '', - - dialogVisible2: false, // - qrForm: { // 鎵撳嵃鍐呭 - qrvalue: '', - startqty: '', - wo_code: '', - partcode: '', - partname: '', - partspec: '', - nextstepname: '', - operator: '', // 鎿嶄綔浜� - operatorTime: ''// 鎿嶄綔鏃堕棿 - }, - printObj2: { - id: 'printMe2', - popTitle: '鎵撳嵃妯℃澘', - preview: false, - extraHead: '<meta http-equiv="Content-Language" content="zh-cn"/>', - closeCallback(vue) { // 鍏抽棴鎵撳嵃鐨勫洖璋冧簨浠讹紙鏃犳硶纭畾鐐瑰嚮鐨勬槸纭杩樻槸鍙栨秷锛� - console.log('11212', vue) - // vue.dialogVisible = false - vue.dialogVisible2 = false - vue.dialogVisible = false - }, - beforeOpenCallback(vue) { - vue.printLoading = true - console.log('鎵撳紑涔嬪墠') - }, - openCallback(vue) { - vue.printLoading = false - console.log('鎵ц浜嗘墦鍗�') - } - }, - xx: '' - } - }, - activated() { window.addEventListener('resize', this.getHeight) this.getHeight() }, created() { - - }, - mounted() { - window.addEventListener('resize', this.getHeight) - 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 - - const { data: res5 } = await CustomerPermissions() // 寰�鏉ュ崟浣� - this.wxArr = res5 - - const { data: res6 } = await PrentOrganizationNoCompany()// 鏃犲叕鍙哥殑缁勭粐涓嬫媺 - this.wkshopcodeArr = res6 - }, - tabClick() { - let belong - 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.radioSelected = '' - }, - enterNative(val, belong) { - if (belong === 'produceCodeZZ') { - this.$nextTick(() => { - $('input[name=\'produceCodeZZ\']')[0].focus() - }) - } - if (belong === 'produceCodeOUT') { - this.$nextTick(() => { - $('input[name=\'produceCodeOUT\']')[0].focus() - }) - } - if (belong === 'produceCodeIN') { - this.$nextTick(() => { - $('input[name=\'produceCodeIN\']')[0].focus() - }) - } - if (belong === 'produceCodeBAD') { - this.$nextTick(() => { - $('input[name=\'produceCodeBAD\']')[0].focus() - }) - } - this.search() - }, - // 鎺掑簭鏀瑰彉鏃� - sortChange({ column, prop, order }) { - if (order === 'descending') { - order = 'desc' - } else if (order === 'ascending') { - order = 'asc' - } else { - order = 'desc' - } - this.form.order = order - this.form.prop = prop - this.search() - }, - // 鏌ヨ - async search() { - this.form.wocode = this.workOrderCurrentValue - this.workOrderCurrentValue = '' - 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) - } - }, - // 涓嶈壇澶勭悊 鐢熶骇寮�鎶ュ伐鎵爜鑾峰彇宸ュ崟瀵瑰簲宸ュ簭浠诲姟(涓嶈壇鏄庣粏) - async handleBad(row) { - const data = { - wocode: row ? row.wo_code : this.tableData.find(i => i.id === this.radioSelected).wo_code, - stepcode: row ? row.stepcode : this.tableData.find(i => i.id === this.radioSelected).stepcode - } - let res = await MesOrderNgSubStepSearch(data) - if (res.code === '200') { - res = res.data - this.dialogForm.wo_code = res.data1.wo_code - this.dialogForm.partnumber = res.data1.partnumber - this.dialogForm.partname = res.data1.partname - this.dialogForm.partspec = res.data1.partspec - this.dialogForm.seq = res.data1.seq - this.dialogForm.stepcode = res.data1.stepcode - this.dialogForm.stepname = res.data1.stepname - this.dialogForm.stepprice = res.data1.stepprice - this.dialogForm.nextstepcode = res.data1.nextstepcode - this.dialogForm.nextstepname = res.data1.nextstepname - this.dialogForm.nextstepprice = res.data1.nextstepprice - this.dialogForm.stepdesc = res.data1.stepdesc - this.dialogForm.planqty = res.data1.planqty - this.dialogForm.startqty = res.data1.startqty - this.dialogForm.noreportqty = res.data1.noreportqty // 鍚堟牸鏁伴噺 - this.dialogForm.reportqty = res.data1.reportqty - this.dialogForm.noputqty = res.data1.noputqty // 涓嶈壇鏁伴噺 - this.dialogForm.wkshopcode = res.data1.wkshopcode - this.dialogForm.wkshopname = res.data1.wkshopname - this.dialogForm.eqpcode = res.data1.eqpcode - this.dialogForm.eqpname = res.data1.eqpname - - res.data2.forEach(item => { - item.repair_qty = 0 - item.laborbad_qty = 0 - item.materielbad_qty = 0 - }) - - this.badTableData = res.data2 - - this.dialogVisible = true - } - }, - // 鐢熶骇寮�鎶ュ伐锛氭姤宸�/澶栧崗(鍙戞枡/鏀舵枡)鏃舵潯浠跺垽鏂強鏁版嵁杩斿洖鎺ュ彛 - 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 - - if (this.activeName === '澶栧崗鏀舵枡') { - this.dialogForm.list = [] - res.list.forEach(i => { - i.acceptQty = parseFloat(i.fqty) - parseFloat(i.sqty) - parseFloat(i.ng_qty) - parseFloat(i.laborbad_qty) - parseFloat(i.materielbad_qty) - if (i.acceptQty > 0) { - this.dialogForm.list.push(i) - } - }) - } - - // this.dialogForm.list = res.list - - this.dialogVisible = true - } - }, - // 瀵硅瘽妗嗗叧闂簨浠� - 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': '', - - wxcode: '', - outuser: '', - fqty: '', - inuser: '', - sqty: '', - list: '', - - remarks: '', // 澶囨敞 - inbarcode: '', // 鍏ュ簱鏉$爜 - defectlist: '', // 涓嶈壇姹囨�� - reckway: 'person', // 璁′欢鏂瑰紡(鐝粍:group銆佷釜浜�:person) - usergroupcode: '', // 鐝粍缂栫爜 - reportuser: [] // 鎶ュ伐浜哄憳 - - } - - this.defectTableData = [] - this.badTableData = [] - - this.$refs.dialogForm.clearValidate() - }, - // 瀵硅瘽妗嗗彇娑� - dialogVisibleCancel() { - this.dialogVisible = false - this.tabClick() - }, - // 瀵硅瘽妗嗙‘璁� - dialogVisibleConfirm() { - 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('鍚堟牸鏁伴噺鍔犱笉鑹暟閲忎笉鑳藉ぇ浜庝簡鏈姤鏁伴噺!') - } - let inbarcode = '' - if (this.tableData.find(i => i.id === this.radioSelected).isend === 'Y') { - const data1 = { - rightcode: getCookie('ruleCode'), - partcode: this.dialogForm.partnumber, - qty: this.dialogForm.startqty, - onelabqty: this.dialogForm.startqty - } - - const res1 = await LabelBarCode(data1) - inbarcode = res1.data[0].labcode - } - - 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))) - - this.$store.state.app.buttonIsDisabled = true - const res = await SavaMesOrderStepReport(data) - if (res.code === '200') { - this.$notify.success('鎶ュ伐鎴愬姛锛�') - // await this.search() - await this.tabClick() - this.$store.state.app.buttonIsDisabled = false - this.dialogVisible = false - - // 鑷埗鎶ュ伐鎵撳嵃鏍囩鍙e瓙宸插紑濂� - // if (JSON.parse(localStorage.getItem('mesSetting')).every) { - // this.dialogVisible2 = true - // this.ZZprint2(localStorage.getItem('username')) - // } - } else { - this.$store.state.app.buttonIsDisabled = false - this.$notify.error('鎶ュ伐澶辫触锛�') - } - } - - if (this.activeName === '澶栧崗鍙戞枡') { - if (parseFloat(this.dialogForm.fqty) < 1) { - return this.$message.info('鍙戞枡鏁伴噺涓嶈兘涓洪浂锛�') - } - if (parseFloat(this.dialogForm.fqty) > parseFloat(this.dialogForm.noreportqty)) { - return this.$message.info('鍙戞枡鏁伴噺涓嶈兘澶т簬鏈彂鏁伴噺!') - } - const data = { - mesordercode: this.dialogForm.wo_code, - partcode: this.dialogForm.partnumber, - stepseq: this.dialogForm.seq, - stepcode: this.dialogForm.stepcode, - - wxcode: this.dialogForm.wxcode, - outuser: this.dialogForm.outuser, - taskqty: this.dialogForm.planqty, - fqty: this.dialogForm.fqty - } - // console.log(JSON.stringify(data)) - - this.$store.state.app.buttonIsDisabled = true - const res = await SavaMesOrderStepOut(data) - if (res.code === '200') { - this.$notify.success('鍙戞枡鎴愬姛锛�') - // await this.search() - await this.tabClick() - this.$store.state.app.buttonIsDisabled = false - this.dialogVisible = false - } else { - this.$store.state.app.buttonIsDisabled = false - this.$notify.error('鍙戞枡澶辫触锛�') - } - } - - 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.sqty) + parseFloat(this.dialogForm.noputqty)) { - return this.$message.info('鏀舵枡鏁伴噺鍔犱笉鑹暟閲忎笉鑳藉ぇ浜庝簡鍙敹鏁伴噺!') - } - - if (this.dialogForm.list.find(i => i.Name === this.dialogForm.wxcode)) { - if (this.dialogForm.list.find(i => i.Name === this.dialogForm.wxcode).acceptQty < parseFloat(this.dialogForm.sqty) + parseFloat(this.dialogForm.noputqty)) { - return this.$message.info('鏀舵枡鏁伴噺鍔犱笉鑹暟閲忎笉鑳藉ぇ浜庤渚涘簲鍟嗗彲鏀舵暟閲�!') - } - } else { - return this.$message.info('姝や緵搴斿晢鏃犲彲鏀舵暟閲�!') - } - - let inbarcode = '' - if (this.tableData.find(i => i.id === this.radioSelected).isend === 'Y') { - const data1 = { - rightcode: getCookie('ruleCode'), - partcode: this.dialogForm.partnumber, - qty: this.dialogForm.startqty, - onelabqty: this.dialogForm.startqty - } - - const res1 = await LabelBarCode(data1) - inbarcode = res1.data[0].labcode - } - 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, - - wxcode: this.dialogForm.wxcode, - inbarcode, - inuser: this.dialogForm.inuser, - taskqty: this.dialogForm.planqty, - sqty: this.dialogForm.sqty, - defectlist, - remarks: '' - } - // console.log(JSON.parse(JSON.stringify(data)), 1) - this.$store.state.app.buttonIsDisabled = true - const res = await SavaMesOrderStepIn(data) - if (res.code === '200') { - this.$notify.success('鏀舵枡鎴愬姛锛�') - // await this.search() - await this.tabClick() - this.$store.state.app.buttonIsDisabled = false - this.dialogVisible = false - } else { - this.$store.state.app.buttonIsDisabled = false - this.$notify.error('鏀舵枡澶辫触锛�') - } - } - - if (this.activeName === '涓嶈壇寰呭鐞�') { - let flag = false - this.badTableData.forEach(i => { - if (parseFloat(i.repair_qty) + parseFloat(i.laborbad_qty) + parseFloat(i.materielbad_qty) > parseFloat(i.ng_qty)) { - flag = true - } - }) - if (flag) { - return this.$message.info('缁翠慨鍚堟牸鏁伴噺+宸ュ簾鏁伴噺+鏂欏簾鏁伴噺涓嶈兘澶т簬涓嶈壇鏁伴噺锛�') - } - this.$store.state.app.buttonIsDisabled = true - const res = await EditOrderNgStepSeave({ Data: this.badTableData }) - if (res.code === '200') { - this.$notify.success('鎻愪氦鎴愬姛锛�') - // await this.search() - await this.tabClick() - this.$store.state.app.buttonIsDisabled = false - this.dialogVisible = false - } else { - this.$store.state.app.buttonIsDisabled = false - this.$notify.error('鎻愪氦澶辫触锛�') - } - } - } - }) - }, - - dialogVisible2Close() { - this.qrForm.qrvalue = '' - this.qrForm.startqty = '' - this.qrForm.wo_code = '' - this.qrForm.partcode = '' - this.qrForm.partname = '' - this.qrForm.partspec = '' - this.qrForm.nextstepname = '' - this.qrForm.operator = '' - this.qrForm.operatorTime = '' - // this.$refs.qrCodeDiv2 = '' - }, - - ZZprint2(username) { - if (this.dialogForm.nextstepcode !== '') { - this.qrForm.qrvalue = this.dialogForm.wo_code + ';' + this.dialogForm.nextstepcode - } else { - this.qrForm.qrvalue = this.dialogForm.inbarcode - } - - this.qrForm.startqty = this.dialogForm.startqty - this.qrForm.wo_code = this.dialogForm.wo_code - this.qrForm.partcode = this.dialogForm.partnumber - this.qrForm.partname = this.dialogForm.partname - this.qrForm.nextstepname = this.dialogForm.nextstepname - this.qrForm.operator = username - this.qrForm.operatorTime = handleDatetime2(new Date()) - this.$nextTick(() => { - this.bindQRCode(this.qrForm.qrvalue) - }) - }, - // 鐢熸垚浜岀淮鐮� - bindQRCode(text) { - new QRCode(this.$refs.qrCodeDiv2, { - text: text, - // width: 50, - width: 60, - // height: 50, - height: 60, - colorDark: '#000', // 浜岀淮鐮侀鑹� - colorLight: '#ffffff', // 浜岀淮鐮佽儗鏅壊 - correctLevel: QRCode.CorrectLevel.L// 瀹归敊鐜囷紝L/M/H - }) - }, - // 缂洪櫡鏂板 - 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 - }, - // 鑾峰彇椤甸潰楂樺害 - getHeight() { - this.$nextTick(() => { - this.mainHeight = window.innerHeight - 85 - this.tableHeight = this.mainHeight - 275 - // this.$refs.tableDataRef.doLayout() - }) - }, - reset() { - this.form.wkshopcode = '' - this.form.wocode = '' - this.form.workOrderCurrentValue = '' - this.form.partcode = '' - this.form.partname = '' - this.form.partspec = '' - this.search() - }, - - headerCellStyle() { - return this.$headerCellStyle - }, - cellStyle() { - return this.$cellStyle - } - } -} -</script> -<style lang="scss" scoped> - -::v-deep .elTableDiv .el-radio__label { - display: none !important; -} - -.dialogFormItem { - margin: 0 10px 0 0; -} - -.dialogFormItemDiv { - width: 200px; -} - -::v-deep .el-select__caret { - display: flex; - align-items: center; - justify-content: center; -} - -::v-deep .el-dialog .el-form-item__label { - font-weight: lighter !important; -} - -::v-deep .el-dialog .el-divider__text { - font-weight: bolder !important; -} - -</style> +<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" + :disabled="radioSelected===''" + @click="report()" + >鎶ュ伐 + </el-button> + <el-button + v-if="activeName==='澶栧崗鍙戞枡'&&tableData.length>0" + v-waves + type="primary" + icon="el-icon-thumb" + :disabled="radioSelected===''" + @click="sendOut()" + >鍙戞枡 + </el-button> + <el-button + v-if="activeName==='澶栧崗鏀舵枡'&&tableData.length>0" + v-waves + type="primary" + icon="el-icon-thumb" + :disabled="radioSelected===''" + @click="takeIn()" + >鏀舵枡 + </el-button> + <el-button + v-if="activeName==='涓嶈壇寰呭鐞�'&&tableData.length>0" + v-waves + type="primary" + icon="el-icon-thumb" + :disabled="radioSelected===''" + @click="handleBad()" + >澶勭悊 + </el-button> + </div> + + <div v-if="form.wocode" style="position: absolute;left: 460px;z-index: 2;top: 23px;font-weight: bolder"> + 褰撳墠宸ュ崟鍙蜂负锛歿{ form.wocode }} + </div> + + <el-tabs + ref="elTabs" + v-model="activeName" + type="border-card" + @tab-click="tabClick" + > + + <el-tab-pane + v-for="item in elTabsArr" + :key="item.code" + :label="item.name" + :name="item.name" + > + + <div class="bodyTopFormGroup"> + <el-form + ref="form" + :model="form" + label-width="100px" + inline + style="display: flex;" + > + <div class="elForm"> + + <el-form-item label="宸ュ崟鍙�" style=" display: flex;"> + <el-input + v-model="workOrderCurrentValue" + :name="'produceCode'+item.code" + placeholder="璇锋壂鎻忔垨杈撳叆" + style="width: 300px" + + @keyup.enter.native="val=>enterNative(val,'produceCode' + item.code)" + /> + </el-form-item> + <el-form-item label="浜у搧缂栫爜" style=" display: flex;"> + <el-input + v-model="form.partcode" + placeholder="璇疯緭鍏�" + style="width: 200px" + + @keyup.enter.native="val=>enterNative(val,'produceCode' + item.code)" + /> + </el-form-item> + <el-form-item label="浜у搧鍚嶇О" style=" display: flex;"> + <el-input + v-model="form.partname" + placeholder="璇疯緭鍏�" + + style="width: 200px" + @keyup.enter.native="val=>enterNative(val,'produceCode' + item.code)" + /> + </el-form-item> + <el-form-item label="杞﹂棿鍚嶇О" style=" display: flex;"> + <el-select + v-model="form.wkshopcode" + filterable + :popper-append-to-body="false" + style="width: 200px" + + placeholder="璇烽�夋嫨" + > + <el-option + v-for="item in wkshopcodeArr" + :key="item.torg_code" + :label="item.torg_name" + :value="item.torg_code" + /> + </el-select> + </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="search">鏌ヨ</el-button> + <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button> + </div> + </el-form> + <div + class="bodyTopFormExpand" + style="height:5px" + > + <!-- <svg-icon--> + <!-- v-show="mouseHoverType==='mouseout'"--> + <!-- style="cursor: pointer"--> + <!-- :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"--> + <!-- @mouseenter="mouseHoverType=$event.type"--> + <!-- />--> + <!-- <svg-icon--> + <!-- v-show="mouseHoverType==='mouseenter'"--> + <!-- style="cursor: pointer"--> + <!-- :icon-class="!isExpandForm?'doubleDown':'doubleUp'"--> + <!-- @click="isExpandForm=!isExpandForm"--> + <!-- @mouseout="mouseHoverType=$event.type"--> + <!-- />--> + </div> + </div> + + <div class="elTableDiv"> + <el-table + ref="tableDataRef" + :key="'tableDataRef'+item.code" + class="tableFixed" + :data="tableData" + :height="tableHeight+50" + border + row-class-name="custom-row" + :style="{width: 100+'%',height:tableHeight+'px'}" + highlight-current-row + :header-cell-style="headerCellStyle()" + :cell-style="cellStyle()" + @sort-change="sortChange" + @row-click="rowClick" + > + <el-table-column + 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 + /> + <el-table-column + v-if="activeName!=='涓嶈壇寰呭鐞�'" + prop="status" + show-tooltip-when-overflow + label="鐘舵��" + sortable="custom" + width="80" + > + <template slot-scope="{row}"> + <div v-if="row.status==='NEW'">鏂拌鍗�</div> + <div v-if="row.status==='ALLO'">宸叉淳鍙�</div> + <div v-if="row.status==='START'">寮�宸�</div> + <div v-if="row.status==='CLOSED'">瀹屽伐</div> + <div v-if="row.status==='NOSCHED'">寰呮帓绋�</div> + <div v-if="row.status==='SCHED'">宸叉帓绋�</div> + </template> + </el-table-column> + <el-table-column + prop="wo_code" + label="宸ュ崟鍙�" + min-width="160" + show-tooltip-when-overflow + sortable="custom" + /> + <el-table-column + prop="partcode" + label="浜у搧缂栫爜" + min-width="110" + sortable="custom" + show-tooltip-when-overflow + /> + <el-table-column + prop="partname" + 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="wkshp_name" + min-width="110" + show-tooltip-when-overflow + label="杞﹂棿鍚嶇О" + sortable="custom" + /> + <el-table-column + prop="stepname" + label="宸ュ簭鍚嶇О" + show-tooltip-when-overflow + width="120" + sortable="custom" + /> + <el-table-column + prop="plan_qty" + label="浠诲姟鏁伴噺" + width="110" + sortable="custom" + show-tooltip-when-overflow + /> + <el-table-column + v-if="activeName==='澶栧崗鍙戞枡'||activeName==='澶栧崗鏀舵枡'" + prop="fqty" + show-tooltip-when-overflow + label="宸插彂鏂欐暟閲�" + sortable="custom" + width="120" + /> + <el-table-column + prop="good_qty" + show-tooltip-when-overflow + :label="activeName==='澶栧崗鍙戞枡'||activeName==='澶栧崗鏀舵枡'?'宸叉敹鏂欐暟閲�':'鍚堟牸鏁伴噺'" + sortable="custom" + width="120" + /> + <el-table-column + prop="ng_qty" + label="涓嶈壇鏁伴噺" + show-tooltip-when-overflow + width="120" + sortable="custom" + /> + <el-table-column + prop="laborbad_qty" + label="宸ュ簾鏁伴噺" + width="120" + show-tooltip-when-overflow + sortable="custom" + /> + <el-table-column + prop="materielbad_qty" + label="鏂欏簾鏁伴噺" + width="120" + show-tooltip-when-overflow + sortable="custom" + /> + + <el-table-column + label="鎿嶄綔" + width="120" + fixed="right" + > + <template slot-scope="{row}"> + <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> + </div> + <!--鍒嗛〉--> + <pagination + :total="total" + :page.sync="form.page" + :limit.sync="form.rows" + align="right" + layout="total,prev, pager, next,sizes" + popper-class="select_bottom" + @pagination="search" + /> + </el-tab-pane> + + </el-tabs> + + </div> + + <!-- 寮�鎶ュ伐銆佸鍗忋�佷笉鑹鐞�--> + <el-dialog + v-el-drag-dialog + :title="dialogTitle" + :visible.sync="dialogVisible" + width="1160px" + :close-on-click-modal="false" + :top="activeName==='鐢熶骇鍒楄〃'||activeName==='澶栧崗鏀舵枡'? '6vh':'15vh'" + @closed="handleClose" + @close="handleClose" + > + <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="110px"> + <!-- <el-divider v-if="activeName==='鐢熶骇鍒楄〃'||activeName==='澶栧崗鏀舵枡'||activeName==='涓嶈壇寰呭鐞�'" content-position="left">鍩烘湰淇℃伅</el-divider>--> + <el-divider v-if="activeName==='鐢熶骇鍒楄〃'" content-position="left">鎶ュ伐淇℃伅</el-divider> + <el-divider v-if="activeName==='澶栧崗鏀舵枡'" content-position="left">鏀舵枡淇℃伅</el-divider> + <el-divider v-if="activeName==='涓嶈壇寰呭鐞�'" content-position="left">寰呭鐞嗕俊鎭�</el-divider> + <el-form-item label="宸ュ崟缂栧彿" class="dialogFormItem"> + <div class="dialogFormItemDiv">{{ dialogForm.wo_code }}</div> + </el-form-item> + <el-form-item label="浜у搧缂栫爜" class="dialogFormItem"> + <div class="dialogFormItemDiv">{{ dialogForm.partnumber }}</div> + </el-form-item> + <el-form-item label="浜у搧鍚嶇О" class="dialogFormItem"> + <div class="dialogFormItemDiv">{{ dialogForm.partname }}</div> + </el-form-item> + <el-form-item label="瑙勬牸鍨嬪彿" class="dialogFormItem"> + <div class="dialogFormItemDiv">{{ dialogForm.partspec ? dialogForm.partspec : '/' }}</div> + </el-form-item> + <el-form-item label="褰撳墠宸ュ簭" class="dialogFormItem"> + <div class="dialogFormItemDiv">{{ dialogForm.stepname }}</div> + </el-form-item> + <el-form-item label="涓嬮亾宸ュ簭" class="dialogFormItem"> + <div class="dialogFormItemDiv">{{ dialogForm.nextstepname ? dialogForm.nextstepname : '/' }}</div> + </el-form-item> + <el-form-item label="浠诲姟鏁伴噺" class="dialogFormItem"> + <div class="dialogFormItemDiv">{{ dialogForm.planqty }}</div> + </el-form-item> + + <el-form-item v-if="activeName==='涓嶈壇寰呭鐞�'" label="鍚堟牸鏁伴噺" class="dialogFormItem"> + <div class="dialogFormItemDiv">{{ dialogForm.noreportqty }}</div> + </el-form-item> + <el-form-item v-if="activeName==='涓嶈壇寰呭鐞�'" label="涓嶈壇鏁伴噺" class="dialogFormItem"> + <div class="dialogFormItemDiv">{{ dialogForm.noputqty }}</div> + </el-form-item> + + <el-form-item + v-if="activeName!=='涓嶈壇寰呭鐞�'" + :label="activeName==='鐢熶骇鍒楄〃'? '鏈姤/宸叉姤':(activeName==='澶栧崗鍙戞枡'?'鏈彂/宸插彂':'鏈敹/宸叉敹')" + class="dialogFormItem" + > + <div class="dialogFormItemDiv">{{ dialogForm.noreportqty + '/' + dialogForm.reportqty }}</div> + </el-form-item> + + <el-form-item v-if="activeName==='鐢熶骇鍒楄〃'||activeName==='澶栧崗鏀舵枡'" label="涓嶈壇鏁伴噺" class="dialogFormItem"> + <div class="dialogFormItemDiv" style="color:red;">{{ dialogForm.noputqty }}</div> + </el-form-item> + + <el-form-item v-if="activeName==='鐢熶骇鍒楄〃'" 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.code" + :label="item.name" + :value="item.code" + /> + </el-select> + </el-form-item> + + <el-form-item v-if="activeName==='鐢熶骇鍒楄〃'" 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 + v-if="activeName==='鐢熶骇鍒楄〃'" + :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 v-if="activeName==='鐢熶骇鍒楄〃'" 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 v-if="activeName==='鐢熶骇鍒楄〃'" prop="startqty" label="鍚堟牸鏁伴噺" class="dialogFormItem"> + <el-input v-model="dialogForm.startqty" oninput="value=value.replace(/[^\d]/g,'')" style="width: 200px" /> + </el-form-item> + + <el-form-item v-if="activeName==='澶栧崗鍙戞枡'||activeName==='澶栧崗鏀舵枡'" prop="wxcode" label="澶栧崗渚涙柟" class="dialogFormItem"> + <el-select + v-model="dialogForm.wxcode" + style="width:200px" + placeholder="璇烽�夋嫨" + filterable + :popper-append-to-body="false" + > + <el-option + v-for="item in wxArr" + :key="item.code" + :label="item.name" + :value="item.code" + /> + </el-select> + </el-form-item> + <el-form-item v-if="activeName==='澶栧崗鍙戞枡'" prop="outuser" label="鍙戞枡浜哄憳" class="dialogFormItem"> + <el-select + v-model="dialogForm.outuser" + style="width:200px" + placeholder="璇烽�夋嫨" + filterable + :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 v-if="activeName==='澶栧崗鍙戞枡'" prop="fqty" label="鍙戞枡鏁伴噺" class="dialogFormItem"> + <el-input v-model="dialogForm.fqty" oninput="value=value.replace(/[^\d]/g,'')" style="width: 200px" /> + </el-form-item> + + <el-form-item v-if="activeName==='澶栧崗鏀舵枡'" prop="inuser" label="鏀舵枡浜哄憳" class="dialogFormItem"> + <el-select + v-model="dialogForm.inuser" + style="width:200px" + placeholder="璇烽�夋嫨" + filterable + :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 v-if="activeName==='澶栧崗鏀舵枡'" prop="sqty" label="鏀舵枡鏁伴噺" class="dialogFormItem"> + <el-input v-model="dialogForm.sqty" oninput="value=value.replace(/[^\d]/g,'')" style="width: 200px" /> + </el-form-item> + + <el-divider v-if="activeName==='鐢熶骇鍒楄〃'||activeName==='澶栧崗鏀舵枡'" content-position="left">涓嶈壇鏄庣粏淇℃伅</el-divider> + <el-button + v-if="activeName==='鐢熶骇鍒楄〃'||activeName==='澶栧崗鏀舵枡'" + v-waves + type="primary" + icon="el-icon-circle-plus-outline" + @click="addDefect" + >鏂板 + </el-button> + <el-table + v-if="activeName==='鐢熶骇鍒楄〃'||activeName==='澶栧崗鏀舵枡'" + ref="defectTableDataRef" + key="defectTableDataKey" + :data="defectTableData" + border + row-class-name="custom-row" + height="200" + 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" + 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="涓嶈壇鏁伴噺" + 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-divider v-if="activeName==='澶栧崗鏀舵枡'" content-position="left">鍙敹鏂欎緵搴斿晢</el-divider> + <div + v-for="(item,index) in dialogForm.list" + v-if="item.fqty>0" + :key="item.name" + style="display: flex;line-height: 26px;height: 26px;margin-left:30px;align-items: center" + > + <div + style="color: #fff;width: 22px;height: 22px;display: flex;justify-content: center;align-items: center;border-radius: 50%" + :style="{backgroundColor:$store.state.settings.theme}" + >{{ index + 1 }} + </div> + <div style="margin-left:30px;width: 160px;" class="ellipsis"> + {{ item.tp }} + </div> + <div style="margin-left:30px;"> + 鍙敹鏁伴噺锛歿{ item.acceptQty }} + </div> + </div> + + <el-divider v-if="activeName==='涓嶈壇寰呭鐞�'" content-position="left">涓嶈壇淇℃伅鏄庣粏</el-divider> + <el-table + v-if="activeName==='涓嶈壇寰呭鐞�'" + ref="badTableDataDataRef" + key="badTableDataDataKey" + :data="badTableData" + 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="step_code"--> + <!-- label="宸ュ簭缂栫爜"--> + <!-- show-tooltip-when-overflow--> + <!-- align="center"--> + <!-- />--> + <el-table-column + prop="stepname" + label="宸ュ簭鍚嶇О" + show-tooltip-when-overflow + align="center" + /> + <el-table-column + prop="plan_qty" + label="浠诲姟鏁伴噺" + show-tooltip-when-overflow + align="center" + /> + <el-table-column + prop="report_qty" + label="鍚堟牸鏁伴噺" + show-tooltip-when-overflow + align="center" + /> + <el-table-column + prop="ng_qty" + label="涓嶈壇鏁伴噺" + show-tooltip-when-overflow + align="center" + /> + <el-table-column + prop="defect_name" + label="涓嶈壇鍘熷洜" + show-tooltip-when-overflow + align="center" + /> + <el-table-column + prop="repair_qty" + label="缁翠慨鍚堟牸鏁伴噺" + align="center" + > + <template slot-scope="{row}"> + <el-input + v-model="row.repair_qty" + placeholder="璇疯緭鍏ユ暟閲�" + oninput="value=value.replace(/[^0-9]/g,'')" + style="width: 100%" + @click.stop="" + /> + </template> + </el-table-column> + <el-table-column + prop="laborbad_qty" + label="宸ュ簾鏁伴噺" + align="center" + > + <template slot-scope="{row}"> + <el-input + v-model="row.laborbad_qty" + placeholder="璇疯緭鍏ユ暟閲�" + oninput="value=value.replace(/[^0-9]/g,'')" + style="width: 100%" + @click.stop="" + /> + </template> + </el-table-column> + <el-table-column + prop="materielbad_qty" + label="鏂欏簾鏁伴噺" + align="center" + > + <template slot-scope="{row}"> + <el-input + v-model="row.materielbad_qty" + placeholder="璇疯緭鍏ユ暟閲�" + oninput="value=value.replace(/[^0-9]/g,'')" + style="width: 100%" + @click.stop="" + /> + </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> + <el-button + v-waves + type="primary" + :loading="$store.state.app.buttonIsDisabled" + :disabled="$store.state.app.buttonIsDisabled" + @click="dialogVisibleConfirm" + >纭� 瀹�</el-button> + </div> + </span> + </el-dialog> + + <!-- 娴佽浆灏忔爣绛炬墦鍗�--> + <!--鎵撳嵃棰勮椤甸潰 灏忔爣绛�--> + <el-dialog + v-el-drag-dialog + title="棰勮" + :visible.sync="dialogVisible2" + width="1140" + top="10vh" + :close-on-click-modal="false" + @close="dialogVisible2Close" + > + <!-- 瑕佹墦鍗扮殑鍖哄煙 --> + <div id="printMe2" style="padding: 30px;"> + <div + style="display: flex;width: 280px;height: 150px;border: 1px solid #000;text-align: center;font-size: 10px;" + > + + <div style="width: 90px;display: flex;flex-direction: column;border-right: 1px solid #000"> + <div + style="display: flex;height: 90px;border-bottom:1px solid #000; + justify-content: center;align-items: center;position: relative" + > + <div id="qrCode2" ref="qrCodeDiv2" style="overflow-y: hidden;height:60px;position: absolute;left: 14px;" /> + </div> + <div + style="display: flex;height: 30px;justify-content: flex-start;border-bottom:1px solid #000;align-items: center" + > + <div style="margin-left: 5px;width: 28px">鏁伴噺:</div> + {{ qrForm.startqty }} + </div> + <div style="display: flex;height: 30px;justify-content: flex-start;align-items: center"> + <div style="margin-left: 5px;width: 42px">澶勭悊浜�:</div> + {{ qrForm.operator }} + </div> + </div> + + <div style="width:190px;display: flex;flex-direction: column"> + <div + style="display: flex;height: 20%;border-bottom:1px solid #000;justify-content: flex-start;align-items: center;text-align: left" + > + <div style="width: 60px;margin-left: 5px;">宸ュ崟缂栧彿:</div> + <div>{{ qrForm.wo_code }}</div> + </div> + <div + style="display: flex;height: 20%;border-bottom:1px solid #000;justify-content: flex-start;align-items: center ;text-align: left" + > + <div style="width: 60px;margin-left: 5px;">浜у搧缂栫爜:</div> + <div>{{ qrForm.partcode }}</div> + </div> + <div + style="display: flex;height: 20%;border-bottom:1px solid #000 ;justify-content: flex-start;align-items: center;text-align: left" + > + <div style="width:60px;margin-left: 5px;">浜у搧鍚嶇О:</div> + <div>{{ qrForm.partname }}</div> + </div> + <div + style="display: flex;height: 20%;border-bottom:1px solid #000 ;justify-content: flex-start;align-items: center;text-align: left" + > + <div style="width:60px;margin-left: 5px;">{{ qrForm.nextstepname?'涓嬮亾宸ュ簭':'浜у搧瑙勬牸' }}:</div> + <div>{{ qrForm.nextstepname?qrForm.nextstepname:qrForm.partspec?qrForm.partspec:'/' }}</div> + </div> + <div style="display: flex;height: 20%;justify-content: flex-start;align-items: center;text-align: left"> + <div style="width: 60px;margin-left: 5px;">澶勭悊鏃堕棿:</div> + <div>{{ qrForm.operatorTime }}</div> + </div> + + </div> + + </div> + </div> + <span slot="footer" class="dialog-footer"> + <div class="footerButton"> + <el-button v-waves @click="dialogVisible2 = false">鍙� 娑�</el-button> + <el-button v-waves v-print="printObj2" type="primary">纭� 瀹�</el-button> + </div> + </span> + </el-dialog> + + </div> +</template> + +<script> +import Pagination from '@/components/Pagination' +import $ from 'jquery' +import elDragDialog from '@/directive/el-drag-dialog' +import waves from '@/directive/waves' +import { + EditOrderNgStepSeave, + MesOrderNgStepSearch, + MesOrderNgSubStepSearch, + MesOrderStepSearch, MesOrderStepStart, + MesOrderWxStepSearch, SavaMesOrderStepIn, SavaMesOrderStepOut, SavaMesOrderStepReport +} from '@/api/WorkOrder' +import { + CustomerPermissions, + DefectPermissions, + EqpPermissions, + GroupsPermissions, + GroupsPersonPermissions, + PersonPermissions, PrentOrganizationNoCompany +} from '@/api/GeneralBasicData' +import { nanoid } from 'nanoid' +import { LabelBarCode } from '@/api/systemSetting' +import { getCookie } from '@/utils/auth' +import { handleDatetime2 } from '@/utils/global' +import QRCode from 'qrcodejs2' +export default { + name: 'StepReport', + components: { + Pagination + }, + directives: { elDragDialog, waves }, + data() { + return { + mainHeight: 0, + tableHeight: 0, + form: { + wkshopcode: '', + wocode: '', // 宸ュ崟鍙� + partcode: '', // 浜у搧缂栫爜 + partname: '', // 浜у搧鍚嶇О + partspec: '', // 浜у搧瑙勬牸 + prop: 'lm_date', // 鎺掑簭瀛楁 + order: 'desc', // 鎺掑簭瀛楁 + page: 1, // 绗嚑椤� + rows: 20 // 姣忛〉澶氬皯鏉� + }, + wkshopcodeArr: [], + total: 10, + tableData: [], + activeName: '鐢熶骇鍒楄〃', + elTabsArr: [ + { code: 'ZZ', name: '鐢熶骇鍒楄〃' }, + { 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: [], // 鎶ュ伐浜哄憳 + + wxcode: '', + outuser: '', + fqty: '', + inuser: '', + sqty: '', + list: '' + + }, + dialogFormRules: { + eqpcode: [ + { 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'] } + ], + wxcode: [ + { required: true, message: '璇烽�夋嫨澶栧崗渚涙柟', trigger: ['blur', 'change'] } + ], + outuser: [ + { required: true, message: '璇烽�夋嫨鍙戞枡浜哄憳', trigger: ['blur', 'change'] } + ], + inuser: [ + { required: true, message: '璇烽�夋嫨鏀舵枡浜哄憳', trigger: ['blur', 'change'] } + ], + fqty: [ + { required: true, message: '璇疯緭鍏ュ彂鏂欐暟閲�', trigger: ['blur', 'change'] } + ], + sqty: [ + { required: true, message: '璇疯緭鍏ユ敹鏂欐暟閲�', trigger: ['blur', 'change'] } + ] + + }, + reckwayArr: [// 鎶ュ伐绫诲瀷 + { code: 'group', name: '鐝粍' }, + { code: 'person', name: '涓汉' } + ], + reportuserArr: [], // 鎶ュ伐浜哄憳 + usergroupArr: [], // 鎶ュ伐鐝粍 + eqpArr: [], // 鎶ュ伐璁惧 + defectArr: [], // 涓嶈壇缂洪櫡 + wxArr: [], // 寰�鏉ュ崟浣嶄笅鎷� + + defectTableData: [], + badTableData: [], + workOrderCurrentValue: '', + + dialogVisible2: false, // + qrForm: { // 鎵撳嵃鍐呭 + qrvalue: '', + startqty: '', + wo_code: '', + partcode: '', + partname: '', + partspec: '', + nextstepname: '', + operator: '', // 鎿嶄綔浜� + operatorTime: ''// 鎿嶄綔鏃堕棿 + }, + printObj2: { + id: 'printMe2', + popTitle: '鎵撳嵃妯℃澘', + preview: false, + extraHead: '<meta http-equiv="Content-Language" content="zh-cn"/>', + closeCallback(vue) { // 鍏抽棴鎵撳嵃鐨勫洖璋冧簨浠讹紙鏃犳硶纭畾鐐瑰嚮鐨勬槸纭杩樻槸鍙栨秷锛� + console.log('11212', vue) + // vue.dialogVisible = false + vue.dialogVisible2 = false + vue.dialogVisible = false + }, + beforeOpenCallback(vue) { + vue.printLoading = true + console.log('鎵撳紑涔嬪墠') + }, + openCallback(vue) { + vue.printLoading = false + console.log('鎵ц浜嗘墦鍗�') + } + }, + xx: '' + } + }, + activated() { + window.addEventListener('resize', this.getHeight) + this.getHeight() + }, + created() { + + }, + mounted() { + window.addEventListener('resize', this.getHeight) + 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 + + const { data: res5 } = await CustomerPermissions() // 寰�鏉ュ崟浣� + this.wxArr = res5 + + const { data: res6 } = await PrentOrganizationNoCompany()// 鏃犲叕鍙哥殑缁勭粐涓嬫媺 + this.wkshopcodeArr = res6 + }, + tabClick() { + let belong + 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.radioSelected = '' + }, + enterNative(val, belong) { + if (belong === 'produceCodeZZ') { + this.$nextTick(() => { + $('input[name=\'produceCodeZZ\']')[0].focus() + }) + } + if (belong === 'produceCodeOUT') { + this.$nextTick(() => { + $('input[name=\'produceCodeOUT\']')[0].focus() + }) + } + if (belong === 'produceCodeIN') { + this.$nextTick(() => { + $('input[name=\'produceCodeIN\']')[0].focus() + }) + } + if (belong === 'produceCodeBAD') { + this.$nextTick(() => { + $('input[name=\'produceCodeBAD\']')[0].focus() + }) + } + this.search() + }, + // 鎺掑簭鏀瑰彉鏃� + sortChange({ column, prop, order }) { + if (order === 'descending') { + order = 'desc' + } else if (order === 'ascending') { + order = 'asc' + } else { + order = 'desc' + } + this.form.order = order + this.form.prop = prop + this.search() + }, + // 鏌ヨ + async search() { + this.form.wocode = this.workOrderCurrentValue + this.workOrderCurrentValue = '' + 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) + } + }, + // 涓嶈壇澶勭悊 鐢熶骇寮�鎶ュ伐鎵爜鑾峰彇宸ュ崟瀵瑰簲宸ュ簭浠诲姟(涓嶈壇鏄庣粏) + async handleBad(row) { + const data = { + wocode: row ? row.wo_code : this.tableData.find(i => i.id === this.radioSelected).wo_code, + stepcode: row ? row.stepcode : this.tableData.find(i => i.id === this.radioSelected).stepcode + } + let res = await MesOrderNgSubStepSearch(data) + if (res.code === '200') { + res = res.data + this.dialogForm.wo_code = res.data1.wo_code + this.dialogForm.partnumber = res.data1.partnumber + this.dialogForm.partname = res.data1.partname + this.dialogForm.partspec = res.data1.partspec + this.dialogForm.seq = res.data1.seq + this.dialogForm.stepcode = res.data1.stepcode + this.dialogForm.stepname = res.data1.stepname + this.dialogForm.stepprice = res.data1.stepprice + this.dialogForm.nextstepcode = res.data1.nextstepcode + this.dialogForm.nextstepname = res.data1.nextstepname + this.dialogForm.nextstepprice = res.data1.nextstepprice + this.dialogForm.stepdesc = res.data1.stepdesc + this.dialogForm.planqty = res.data1.planqty + this.dialogForm.startqty = res.data1.startqty + this.dialogForm.noreportqty = res.data1.noreportqty // 鍚堟牸鏁伴噺 + this.dialogForm.reportqty = res.data1.reportqty + this.dialogForm.noputqty = res.data1.noputqty // 涓嶈壇鏁伴噺 + this.dialogForm.wkshopcode = res.data1.wkshopcode + this.dialogForm.wkshopname = res.data1.wkshopname + this.dialogForm.eqpcode = res.data1.eqpcode + this.dialogForm.eqpname = res.data1.eqpname + + res.data2.forEach(item => { + item.repair_qty = 0 + item.laborbad_qty = 0 + item.materielbad_qty = 0 + }) + + this.badTableData = res.data2 + + this.dialogVisible = true + } + }, + // 鐢熶骇寮�鎶ュ伐锛氭姤宸�/澶栧崗(鍙戞枡/鏀舵枡)鏃舵潯浠跺垽鏂強鏁版嵁杩斿洖鎺ュ彛 + 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 + + if (this.activeName === '澶栧崗鏀舵枡') { + this.dialogForm.list = [] + res.list.forEach(i => { + i.acceptQty = parseFloat(i.fqty) - parseFloat(i.sqty) - parseFloat(i.ng_qty) - parseFloat(i.laborbad_qty) - parseFloat(i.materielbad_qty) + if (i.acceptQty > 0) { + this.dialogForm.list.push(i) + } + }) + } + + // this.dialogForm.list = res.list + + this.dialogVisible = true + } + }, + // 瀵硅瘽妗嗗叧闂簨浠� + 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': '', + + wxcode: '', + outuser: '', + fqty: '', + inuser: '', + sqty: '', + list: '', + + remarks: '', // 澶囨敞 + inbarcode: '', // 鍏ュ簱鏉$爜 + defectlist: '', // 涓嶈壇姹囨�� + reckway: 'person', // 璁′欢鏂瑰紡(鐝粍:group銆佷釜浜�:person) + usergroupcode: '', // 鐝粍缂栫爜 + reportuser: [] // 鎶ュ伐浜哄憳 + + } + + this.defectTableData = [] + this.badTableData = [] + + this.$refs.dialogForm.clearValidate() + }, + // 瀵硅瘽妗嗗彇娑� + dialogVisibleCancel() { + this.dialogVisible = false + this.tabClick() + }, + // 瀵硅瘽妗嗙‘璁� + dialogVisibleConfirm() { + 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('鍚堟牸鏁伴噺鍔犱笉鑹暟閲忎笉鑳藉ぇ浜庝簡鏈姤鏁伴噺!') + } + + if (parseFloat(this.dialogForm.startqty) === 0 && this.defectTableData.length === 0) { + return this.$message.info('鍚堟牸鏁伴噺涓嶈兘涓洪浂锛�') + } + + let inbarcode = '' + if (this.tableData.find(i => i.id === this.radioSelected).isend === 'Y') { + const data1 = { + rightcode: getCookie('ruleCode'), + partcode: this.dialogForm.partnumber, + qty: this.dialogForm.startqty, + onelabqty: this.dialogForm.startqty + } + + const res1 = await LabelBarCode(data1) + inbarcode = res1.data[0].labcode + } + + 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))) + + this.$store.state.app.buttonIsDisabled = true + const res = await SavaMesOrderStepReport(data) + if (res.code === '200') { + this.$notify.success('鎶ュ伐鎴愬姛锛�') + // await this.search() + await this.tabClick() + this.$store.state.app.buttonIsDisabled = false + this.dialogVisible = false + + // 鑷埗鎶ュ伐鎵撳嵃鏍囩鍙e瓙宸插紑濂� + // if (JSON.parse(localStorage.getItem('mesSetting')).every) { + // this.dialogVisible2 = true + // this.ZZprint2(localStorage.getItem('username')) + // } + } else { + this.$store.state.app.buttonIsDisabled = false + this.$notify.error('鎶ュ伐澶辫触锛�') + } + } + + if (this.activeName === '澶栧崗鍙戞枡') { + if (parseFloat(this.dialogForm.fqty) < 1) { + return this.$message.info('鍙戞枡鏁伴噺涓嶈兘涓洪浂锛�') + } + if (parseFloat(this.dialogForm.fqty) > parseFloat(this.dialogForm.noreportqty)) { + return this.$message.info('鍙戞枡鏁伴噺涓嶈兘澶т簬鏈彂鏁伴噺!') + } + const data = { + mesordercode: this.dialogForm.wo_code, + partcode: this.dialogForm.partnumber, + stepseq: this.dialogForm.seq, + stepcode: this.dialogForm.stepcode, + + wxcode: this.dialogForm.wxcode, + outuser: this.dialogForm.outuser, + taskqty: this.dialogForm.planqty, + fqty: this.dialogForm.fqty + } + // console.log(JSON.stringify(data)) + + this.$store.state.app.buttonIsDisabled = true + const res = await SavaMesOrderStepOut(data) + if (res.code === '200') { + this.$notify.success('鍙戞枡鎴愬姛锛�') + // await this.search() + await this.tabClick() + this.$store.state.app.buttonIsDisabled = false + this.dialogVisible = false + } else { + this.$store.state.app.buttonIsDisabled = false + this.$notify.error('鍙戞枡澶辫触锛�') + } + } + + 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.sqty) + parseFloat(this.dialogForm.noputqty)) { + return this.$message.info('鏀舵枡鏁伴噺鍔犱笉鑹暟閲忎笉鑳藉ぇ浜庝簡鍙敹鏁伴噺!') + } + + if (this.dialogForm.list.find(i => i.Name === this.dialogForm.wxcode)) { + if (this.dialogForm.list.find(i => i.Name === this.dialogForm.wxcode).acceptQty < parseFloat(this.dialogForm.sqty) + parseFloat(this.dialogForm.noputqty)) { + return this.$message.info('鏀舵枡鏁伴噺鍔犱笉鑹暟閲忎笉鑳藉ぇ浜庤渚涘簲鍟嗗彲鏀舵暟閲�!') + } + } else { + return this.$message.info('姝や緵搴斿晢鏃犲彲鏀舵暟閲�!') + } + + let inbarcode = '' + if (this.tableData.find(i => i.id === this.radioSelected).isend === 'Y') { + const data1 = { + rightcode: getCookie('ruleCode'), + partcode: this.dialogForm.partnumber, + qty: this.dialogForm.startqty, + onelabqty: this.dialogForm.startqty + } + + const res1 = await LabelBarCode(data1) + inbarcode = res1.data[0].labcode + } + 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, + + wxcode: this.dialogForm.wxcode, + inbarcode, + inuser: this.dialogForm.inuser, + taskqty: this.dialogForm.planqty, + sqty: this.dialogForm.sqty, + defectlist, + remarks: '' + } + // console.log(JSON.parse(JSON.stringify(data)), 1) + this.$store.state.app.buttonIsDisabled = true + const res = await SavaMesOrderStepIn(data) + if (res.code === '200') { + this.$notify.success('鏀舵枡鎴愬姛锛�') + // await this.search() + await this.tabClick() + this.$store.state.app.buttonIsDisabled = false + this.dialogVisible = false + } else { + this.$store.state.app.buttonIsDisabled = false + this.$notify.error('鏀舵枡澶辫触锛�') + } + } + + if (this.activeName === '涓嶈壇寰呭鐞�') { + let flag = false + this.badTableData.forEach(i => { + if (parseFloat(i.repair_qty) + parseFloat(i.laborbad_qty) + parseFloat(i.materielbad_qty) > parseFloat(i.ng_qty)) { + flag = true + } + }) + if (flag) { + return this.$message.info('缁翠慨鍚堟牸鏁伴噺+宸ュ簾鏁伴噺+鏂欏簾鏁伴噺涓嶈兘澶т簬涓嶈壇鏁伴噺锛�') + } + this.$store.state.app.buttonIsDisabled = true + const res = await EditOrderNgStepSeave({ Data: this.badTableData }) + if (res.code === '200') { + this.$notify.success('鎻愪氦鎴愬姛锛�') + // await this.search() + await this.tabClick() + this.$store.state.app.buttonIsDisabled = false + this.dialogVisible = false + } else { + this.$store.state.app.buttonIsDisabled = false + this.$notify.error('鎻愪氦澶辫触锛�') + } + } + } + }) + }, + + dialogVisible2Close() { + this.qrForm.qrvalue = '' + this.qrForm.startqty = '' + this.qrForm.wo_code = '' + this.qrForm.partcode = '' + this.qrForm.partname = '' + this.qrForm.partspec = '' + this.qrForm.nextstepname = '' + this.qrForm.operator = '' + this.qrForm.operatorTime = '' + // this.$refs.qrCodeDiv2 = '' + }, + + ZZprint2(username) { + if (this.dialogForm.nextstepcode !== '') { + this.qrForm.qrvalue = this.dialogForm.wo_code + ';' + this.dialogForm.nextstepcode + } else { + this.qrForm.qrvalue = this.dialogForm.inbarcode + } + + this.qrForm.startqty = this.dialogForm.startqty + this.qrForm.wo_code = this.dialogForm.wo_code + this.qrForm.partcode = this.dialogForm.partnumber + this.qrForm.partname = this.dialogForm.partname + this.qrForm.nextstepname = this.dialogForm.nextstepname + this.qrForm.operator = username + this.qrForm.operatorTime = handleDatetime2(new Date()) + this.$nextTick(() => { + this.bindQRCode(this.qrForm.qrvalue) + }) + }, + // 鐢熸垚浜岀淮鐮� + bindQRCode(text) { + new QRCode(this.$refs.qrCodeDiv2, { + text: text, + // width: 50, + width: 60, + // height: 50, + height: 60, + colorDark: '#000', // 浜岀淮鐮侀鑹� + colorLight: '#ffffff', // 浜岀淮鐮佽儗鏅壊 + correctLevel: QRCode.CorrectLevel.L// 瀹归敊鐜囷紝L/M/H + }) + }, + // 缂洪櫡鏂板 + 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 + }, + // 鑾峰彇椤甸潰楂樺害 + getHeight() { + this.$nextTick(() => { + this.mainHeight = window.innerHeight - 85 + this.tableHeight = this.mainHeight - 275 + // this.$refs.tableDataRef.doLayout() + }) + }, + reset() { + this.form.wkshopcode = '' + this.form.wocode = '' + this.form.workOrderCurrentValue = '' + this.form.partcode = '' + this.form.partname = '' + this.form.partspec = '' + this.search() + }, + + headerCellStyle() { + return this.$headerCellStyle + }, + cellStyle() { + return this.$cellStyle + } + } +} +</script> +<style lang="scss" scoped> + +::v-deep .elTableDiv .el-radio__label { + display: none !important; +} + +.dialogFormItem { + margin: 0 10px 0 0; +} + +.dialogFormItemDiv { + width: 200px; +} + +::v-deep .el-select__caret { + display: flex; + align-items: center; + justify-content: center; +} + +::v-deep .el-dialog .el-form-item__label { + font-weight: lighter !important; +} + +::v-deep .el-dialog .el-divider__text { + font-weight: bolder !important; +} + +</style> -- Gitblit v1.9.3