| src/views/produce/stepReport.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/produce/stepReport_back.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/workOrder/workOrderList.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/views/produce/stepReport.vue
@@ -1,46 +1,89 @@ <template> <div> <div class="body" style="padding-top: 10px;" :style="{height:mainHeight+'px'}"> <el-tabs ref="elTabs" v-model="activeName" type="border-card" @tab-click="tabClick"> <el-tab-pane label="ç产å表"> <div style="margin-left: 10px;margin-top:10px;display: flex;justify-content: space-between"> <div style="display: flex;align-items: center"> <div style="width: 90px">æ«ææ¡ç ï¼</div> <!-- oninput="value=value.replace(/[^0-9a-zA-Z;_]/g,'')"--> <el-input id="keyWords" v-model="form.orderstepqrcode" name="produceCode" style="width: 300px" @keyup.enter.native="val=>enterNative(val,'produceCode')" /> <!-- @keyup.native="e=>judgeIsScanning(e,'produceCode')"--> <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"> </div> <div v-if="false" style="display: flex;padding-right: 10px"> <el-button v-waves @click="ZZstart"> <svg-icon icon-class="start_time" style="margin-right: 2px" /> å¼å§ </el-button> <el-button v-waves @click="ZZreport"> <svg-icon icon-class="report_work" style="margin-right: 2px" /> æ¥å·¥ </el-button> <el-form-item label="å·¥åå·" style=" display: flex;"> <el-input v-model="form.wocode" :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" /> </el-form-item> <el-form-item label="产ååç§°" style=" display: flex;"> <el-input v-model="form.partname" placeholder="请è¾å ¥" style="width: 200px" /> </el-form-item> <el-form-item label="è§æ ¼åå·" style=" display: flex;"> <el-input v-model="form.partspec" placeholder="请è¾å ¥" style="width: 200px" /> </el-form-item> </div> <div class="bodySearchReset" :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}" > <el-button v-waves type="primary" icon="el-icon-search" @click="">æ¥è¯¢</el-button> <el-button v-waves type="info" icon="el-icon-refresh" @click="">éç½®</el-button> </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> <el-divider /> <div class="elTableDiv"> <el-table ref="tableDataRef" :key="'tableDataRef'+item.code" class="tableFixed" :data="tableData" :height="isIpad? (tableHeight+50):tableHeight" :height="tableHeight+50" border :row-class-name="tableRowClassName" :style="{width: 100+'%',height:tableHeight+'px',}" row-class-name="custom-row" :style="{width: 100+'%',height:tableHeight+'px'}" highlight-current-row :header-cell-style="this.$headerCellStyle" :cell-style="this.$cellStyle" :header-cell-style="headerCellStyle()" :cell-style="cellStyle()" @sort-change="sortChange" > <el-table-column @@ -192,1056 +235,10 @@ @pagination="getMesOrderStepSearch" /> </el-tab-pane> <el-tab-pane label="å¤åå表"> <div style="margin-left: 10px;margin-top:10px;display: flex;justify-content: space-between"> <div style="display: flex;align-items: center"> <div style="width: 90px;">å¤åç±»åï¼</div> <el-select v-model="WXSelected" filterable style="width: 200px" placeholder="è¯·éæ©" > <el-option v-for="item in WXSelectArr" :key="item.code" :label="item.name" :value="item.code" /> </el-select> <div style="width: 90px;margin-left: 20px">æ«ææ¡ç ï¼</div> <el-input v-model="WXform.orderstepqrcode" name="WXproduceCode" style="width: 300px" @keyup.enter.native="val=>enterNative(val,'WXproduceCode')" /> <!-- @keyup.native="e=>judgeIsScanning(e,'WXproduceCode')"--> </div> <div v-if="false" style="display: flex;padding-right: 10px"> <el-button v-waves @click="WXsend"> <svg-icon icon-class="start_time" style="margin-right: 2px" /> åæ </el-button> <el-button v-waves @click="WXback"> <svg-icon icon-class="report_work" style="margin-right: 2px" /> æ¶æ </el-button> </div> </div> <el-divider /> <div class="elTableDiv"> <el-table ref="tableDataRef" class="tableFixed" :data="WXtableData" :height="isIpad? (tableHeight+50):tableHeight" border :row-class-name="tableRowClassName" :style="{width: 100+'%',height:tableHeight+'px',}" highlight-current-row :header-cell-style="this.$headerCellStyle" :cell-style="this.$cellStyle" @sort-change="WXsortChange" > <el-table-column prop="RowNum" width="50" label="åºå·" fixed /> <el-table-column prop="status" label="ç¶æ" show-tooltip-when-overflow 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> </template> </el-table-column> <el-table-column prop="wo_code" label="å·¥åå·" width="160" show-tooltip-when-overflow sortable="custom" /> <el-table-column prop="partcode" label="产åç¼ç " show-tooltip-when-overflow width="110" sortable="custom" /> <el-table-column prop="partname" label="产ååç§°" width="160" show-tooltip-when-overflow sortable="custom" /> <el-table-column prop="stepname" label="å·¥åº" width="120" show-tooltip-when-overflow sortable="custom" /> <!-- <el-table-column--> <!-- prop="descr"--> <!-- label="å·¥åºæè¿°"--> <!-- min-width="150"--> <!-- sortable="custom"--> <!-- >--> <!-- <template slot-scope="{row}">--> <!-- <div v-if="row.descr">{{ row.descr }}</div>--> <!-- <div v-else>/</div>--> <!-- </template>--> <!-- </el-table-column>--> <el-table-column prop="plan_qty" label="任塿°é" show-tooltip-when-overflow width="110" sortable="custom" /> <el-table-column label="æªæ¶ææ°é" width="120" show-tooltip-when-overflow > <!-- sortable="custom"--> <template slot-scope="{row}"> <div>{{ row.plan_qty - row.good_qty - row.ng_qty }}</div> </template> </el-table-column> <el-table-column prop="good_qty" label="å·²æ¶ææ°é" show-tooltip-when-overflow sortable="custom" width="160" /> <el-table-column prop="ng_qty" label="ä¸è¯æ°é" show-tooltip-when-overflow width="150" sortable="custom" /> <el-table-column prop="bad_qty" label="å·²æ¥åºæ°é" min-width="120" sortable="custom" show-tooltip-when-overflow /> <el-table-column prop="plan_startdate" label="计åå¼å·¥æ¥æ" show-tooltip-when-overflow width="150" sortable="custom" > <template slot-scope="{row}"> <div v-if="row.plan_startdate">{{ row.plan_startdate.substring(0, 11) }}</div> <div v-else>/</div> </template> </el-table-column> <el-table-column prop="plan_enddate" label="计åå®å·¥æ¥æ" show-tooltip-when-overflow width="150" sortable="custom" fixed="right" > <template slot-scope="{row}"> <div v-if="row.plan_startdate">{{ row.plan_startdate.substring(0, 11) }}</div> <div v-else>/</div> </template> </el-table-column> <!-- <el-table-column--> <!-- label="æä½"--> <!-- width="150"--> <!-- fixed="right"--> <!-- >--> <!-- <template slot-scope="{row}">--> <!-- <div class="operationClass">--> <!-- <el-button v-waves type="text" @click="edit('edit',row)">ç¼è¾</el-button>--> <!-- <el-button v-waves type="text" @click="del(row)">å é¤</el-button>--> <!-- </div>--> <!-- </template>--> <!-- </el-table-column>--> </el-table> </div> <!--å页--> <pagination :total="WXtotal" :page.sync="WXform.page" :limit.sync="WXform.rows" align="right" layout="total,prev, pager, next,sizes" popper-class="select_bottom" @pagination="getMesOrderStepSearch" /> </el-tab-pane> <el-tab-pane label="ä¸è¯å¾ å¤çå表"> <div style="margin-left: 10px;margin-top:10px;display: flex;justify-content: space-between"> <div style="display: flex;align-items: center"> <div style="width: 90px">æ«ææ¡ç ï¼</div> <!-- oninput="value=value.replace(/[^0-9a-zA-Z;_]/g,'')"--> <el-input v-model="badForm.orderstepqrcode" name="badProduceCode" style="width: 300px" @keyup.enter.native="val=>enterNative(val,'badProduceCode')" /> <!-- @keyup.native="e=>judgeIsScanning(e,'badProduceCode')"--> </div> </div> <el-divider /> <div class="elTableDiv"> <el-table ref="tableDataRef" class="tableFixed" :data="badTableData" :height="isIpad? (tableHeight+50):tableHeight" border :row-class-name="tableRowClassName" :style="{width: 100+'%',height:tableHeight+'px',}" highlight-current-row :header-cell-style="this.$headerCellStyle" :cell-style="this.$cellStyle" @sort-change="badSortChange" > <el-table-column prop="RowNum" width="50" label="åºå·" fixed /> <el-table-column show-tooltip-when-overflow prop="wo_code" label="å·¥åå·" min-width="160" sortable="custom" /> <el-table-column show-tooltip-when-overflow prop="partcode" label="产åç¼ç " min-width="110" sortable="custom" /> <el-table-column show-tooltip-when-overflow prop="partname" min-width="160" label="产ååç§°" sortable="custom" /> <el-table-column prop="stepname" label="å·¥åº" show-tooltip-when-overflow min-width="120" sortable="custom" /> <el-table-column prop="plan_qty" label="任塿°é" width="110" show-tooltip-when-overflow sortable="custom" /> <el-table-column prop="good_qty" label="åæ ¼æ°é" sortable="custom" min-width="160" show-tooltip-when-overflow /> <el-table-column prop="ng_qty" label="ä¸è¯æ°é" width="150" show-tooltip-when-overflow sortable="custom" /> <el-table-column prop="bad_qty" label="å·²æ¥åºæ°é" width="120" sortable="custom" show-tooltip-when-overflow /> <el-table-column label="æä½" width="120" fixed="right" > <template slot-scope="{row}"> <div class="operationClass"> <el-button v-waves type="text" @click="repairHandle(row)">ç»´ä¿®å¤ç</el-button> </div> </template> </el-table-column> </el-table> </div> <!--å页--> <pagination :total="badTotal" :page.sync="badForm.page" :limit.sync="badForm.rows" align="right" layout="total,prev, pager, next,sizes" popper-class="select_bottom" @pagination="getBadList" /> </el-tab-pane> </el-tabs> </div> <el-dialog v-el-drag-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="850px" class="dialogVisible" :top="dialogTitle==='èªå¶æ¥å·¥'?'5vh':'15vh'" :close-on-click-modal="false" @close="handleClose" @closed="handleClose" > <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="110px" > <el-form-item label="å·¥åç¼å·ï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.wo_code }}</div> </el-form-item> <el-form-item label="产åç¼ç ï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.partcode }}</div> </el-form-item> <el-form-item label="产ååç§°ï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.partname }}</div> </el-form-item> <el-form-item label="产åè§æ ¼ï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.partspec }}</div> </el-form-item> <el-form-item label="å½åå·¥åºï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.stepname }}</div> </el-form-item> <el-form-item v-if="false" label="å·¥åºæè¿°ï¼"> <!-- <el-tooltip class="item" effect="dark" content="åææåæææåæææåææ¶æå¡æ°æ®çå¡" placement="top-start">--> <div style="width: 200px;white-space: nowrap;text-overflow: ellipsis;overflow: hidden;"> {{ dialogForm.stepdesc }} </div> <!-- </el-tooltip>--> </el-form-item> <el-form-item label="任塿°éï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.planqty }}</div> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶å¼å§'" label="æªå¼/å·²å¼ï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.noreportqty }}/{{ dialogForm.reportqty }}</div> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="æªæ¥/å·²æ¥ï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.noreportqty }}/{{ dialogForm.reportqty }}</div> </el-form-item> <el-form-item v-if="dialogTitle==='å¤ååæ'" label="æªå/å·²åï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.noreportqty }}/{{ dialogForm.reportqty }}</div> </el-form-item> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="æªæ¶/å·²æ¶ï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.noreportqty }}/{{ dialogForm.reportqty }}</div> </el-form-item> <!--èªå¶å¼å§--> <el-form-item v-if="dialogTitle==='èªå¶å¼å§'" label="å¼å·¥æ°éï¼"> <div style="width: 200px">{{ dialogForm.startqty }}</div> <!-- <div style="width: 200px">{{ dialogForm.noreportqty }}</div>--> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶å¼å§'" prop="eqpcode" label="ç产设å¤ï¼"> <el-select v-model="dialogForm.eqpcode" style="width: 200px;" placeholder="è¯·éæ©" > <el-option v-for="item in ZZeqpArr" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> <!-- èªå¶æ¥å·¥ --> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="ä¸éå·¥åºï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.nextstepname }}</div> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" prop="reckway" label="计件æ¹å¼ï¼"> <el-radio-group v-model="dialogForm.reckway" style="width: 200px;" @change="reckwayChange"> <el-radio label="group">çç»</el-radio> <el-radio label="person">个人</el-radio> </el-radio-group> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'&&dialogForm.reckway==='group'" prop="usergroupcode" label="ç产çç»ï¼"> <el-select v-model="dialogForm.usergroupcode" style="width: 200px;" placeholder="è¯·éæ©" @change="usergroupChange" > <el-option v-for="item in ZZtreams" :key="item.group_code" :label="item.group_name" :value="item.group_code" /> </el-select> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'&&dialogForm.reckway==='person'" prop="operation" label="æ¥å·¥äººåï¼"> <el-select v-model="dialogForm.operation" style="width: 200px;" placeholder="è¯·éæ©" @change="usergroupChange" > <el-option v-for="item in OperationArr" :key="item.usercode" :label="item.username" :value="item.usercode" /> </el-select> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="设å¤åç§°ï¼" prop="eqpcode"> <el-select v-model="dialogForm.eqpcode" style="width: 200px;" placeholder="è¯·éæ©" > <el-option v-for="item in ZZeqpArr" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="åæ ¼æ°éï¼" prop="startqty"> <el-input v-model="dialogForm.startqty" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 200px;" /> <!-- <el-input v-model="dialogForm.noreportqty" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 200px;" />--> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="ä¸è¯æ°éï¼"> <el-input v-model="dialogForm.noputqty" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 200px;" /> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="ä¸è¯åå ï¼"> <el-select v-model="dialogForm.badcode" style="width: 200px;" placeholder="è¯·éæ©" :disabled="parseFloat(dialogForm.noputqty)===0||dialogForm.noputqty.trim()===''" multiple collapse-tags > <el-option v-for="item in badArr" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> <!-- <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="æ¥å·¥äººåï¼">--> <!-- <el-input v-model="dialogForm.remarks" type="textarea" style="width: 200px;" />--> <!-- </el-form-item>--> <!-- 注é--> <!-- <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="æ¥å·¥äººï¼">--> <!-- <el-select--> <!-- v-model="dialogForm.operation"--> <!-- style="width: 200px;"--> <!-- placeholder="è¯·éæ©"--> <!-- >--> <!-- <el-option--> <!-- v-for="item in OperationArr"--> <!-- :key="item.usercode"--> <!-- :label="item.username"--> <!-- :value="item.usercode"--> <!-- />--> <!-- </el-select>--> <!-- </el-form-item>--> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="夿³¨ï¼"> <el-input v-model="dialogForm.remarks" type="textarea" style="width: 200px;" /> </el-form-item> <div v-if="dialogTitle==='èªå¶æ¥å·¥'&&dialogForm.reckway==='group'"> <div style="display: flex;align-items:center;height: 40px;margin-bottom: 10px"> <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> <div style="margin: 0 15px 0 5px;">人åå表</div> <el-button v-waves type="primary" style="margin: 10px 0" @click="userAdd">å¢è¡</el-button> </div> <el-table ref="userTableDataRef" :data="userTableData" border class="tableFixed" :row-class-name="tableRowClassName" :header-cell-style="this.$headerCellStyle" :cell-style="this.$cellStyle" height="188" highlight-current-row style="width: 100%" > <el-table-column width="100" label="åºå·" type="index" fixed /> <el-table-column prop="username" label="人ååç§°" show-tooltip-when-overflow > <template slot-scope="{row}"> <el-select v-if="row.isVisible===1" v-model="row.username" style="width: 200px;" placeholder="è¯·éæ©" @change="val=>usernameChange(val,row)" > <el-option v-for="item in ZZuserArr" :key="item.usercode" :label="item.username" :value="item.usercode" /> </el-select> <div v-else>{{ row.username }}</div> </template> </el-table-column> <el-table-column prop="ratio" label="åé æ¯ä¾(%)" show-tooltip-when-overflow > <template slot-scope="{row}"> <el-input v-if="row.isVisible===1||row.isVisible===2" v-model="row.ratio" oninput="value=value.replace(/[^0-9.]/g,'')" placeholder="请è¾å ¥" /> <div v-else> {{ row.ratio }}</div> </template> </el-table-column> <el-table-column prop="RowNum" label="æä½" fixed="right" > <template slot-scope="{row}"> <div class="operationClass"> <el-button v-if="(row.isVisible===1&&!userIsSave)||row.isVisible===2" v-waves type="text" @click="userSave(row)" >ä¿å </el-button> <el-button v-if="row.isVisible===1" v-waves type="text" @click="userCancel(row)">åæ¶</el-button> <el-button v-if="row.isVisible===0" v-waves type="text" @click="userDel(row)">å é¤</el-button> <el-button v-if="row.isVisible===0" v-waves type="text" @click="editRatio(row)">ä¿®æ¹æ¯ä¾</el-button> </div> </template> </el-table-column> </el-table> <!--å页--> <pagination :total="UserTotal" :page.sync="Userform.page" :limit.sync="Userform.rows" align="right" layout="total,prev, pager, next,sizes" popper-class="select_bottom" @pagination="getMesOrderStepSearch" /> </div> <!-- å¤ååæ--> <el-form-item v-if="dialogTitle==='å¤ååæ'" label="å¤å便¹ï¼" prop="wxcode" > <el-select v-model="dialogForm.wxcode" style="width: 200px;" placeholder="è¯·éæ©" filterable > <el-option v-for="item in WXouterprovide" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> <el-form-item v-if="dialogTitle==='å¤ååæ'" label="åæäººåï¼" prop="outuser" > <el-select v-model="dialogForm.outuser" style="width: 200px;" placeholder="è¯·éæ©" filterable > <el-option v-for="item in WXoutuser" :key="item.usercode" :label="item.username" :value="item.usercode" /> </el-select> </el-form-item> <el-form-item v-if="dialogTitle==='å¤ååæ'" label="åææ°éï¼" prop="fqty" > <el-input v-model="dialogForm.fqty" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 200px;" /> </el-form-item> <!-- å¤åæ¶æ--> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="ä¸éå·¥åºï¼" > <div style="width: 200px">{{ dialogForm.nextstepname }}</div> </el-form-item> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="å¤å便¹ï¼" prop="wxcode" > <el-select v-model="dialogForm.wxcode" style="width: 200px;" placeholder="è¯·éæ©" > <el-option v-for="item in WXouterprovide" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="æ¶æäººåï¼" prop="inuser" > <el-select v-model="dialogForm.inuser" style="width: 200px;" placeholder="è¯·éæ©" > <el-option v-for="item in WXoutuser" :key="item.usercode" :label="item.username" :value="item.usercode" /> </el-select> </el-form-item> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="æ¶ææ°éï¼" prop="sqty" > <el-input v-model="dialogForm.sqty" style="width: 200px" oninput="value=value.replace(/[^0-9.]/g,'')" /> </el-form-item> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="ä¸è¯æ°éï¼" prop="noputqty" > <el-input v-model="dialogForm.noputqty" style="width: 200px" oninput="value=value.replace(/[^0-9.]/g,'')" /> </el-form-item> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="ä¸è¯åå ï¼" > <!-- prop="badcode"--> <el-select v-model="dialogForm.badcode" style="width: 200px;" multiple collapse-tags :disabled="parseFloat(dialogForm.noputqty)===0||dialogForm.noputqty.trim()===''" placeholder="è¯·éæ©" > <el-option v-for="item in badArr" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> <!-- <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="æ¶æäººï¼">--> <!-- <el-select--> <!-- v-model="dialogForm.operation"--> <!-- style="width: 200px;"--> <!-- placeholder="è¯·éæ©"--> <!-- >--> <!-- <el-option--> <!-- v-for="item in OperationArr"--> <!-- :key="item.usercode"--> <!-- :label="item.username"--> <!-- :value="item.usercode"--> <!-- />--> <!-- </el-select>--> <!-- </el-form-item>--> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="夿³¨ï¼"> <el-input v-model="dialogForm.remarks" type="textarea" style="width: 200px;" /> </el-form-item> </el-form> <span slot="footer" class="dialog-footer"> <div class="footerButton"> <el-button v-waves @click="dialogVisibleCancel">å æ¶</el-button> <el-button v-if="dialogTitle==='èªå¶å¼å§'" v-waves :loading="$store.state.app.buttonIsDisabled" :disabled="$store.state.app.buttonIsDisabled" type="primary" @click="dialogVisibleConfirm" >å¼ å·¥</el-button> <el-button v-if="dialogTitle==='èªå¶æ¥å·¥'&&dialogForm.nextstepname===''" v-waves :loading="$store.state.app.buttonIsDisabled" :disabled="$store.state.app.buttonIsDisabled" type="primary" @click="dialogVisibleConfirm" >æäº¤/æå°</el-button> <el-button v-if="dialogTitle==='èªå¶æ¥å·¥'&&dialogForm.nextstepname!==''" v-waves :loading="$store.state.app.buttonIsDisabled" :disabled="$store.state.app.buttonIsDisabled" type="primary" @click="dialogVisibleConfirm" >æäº¤</el-button> <el-button v-if="dialogTitle==='å¤ååæ'" v-waves :loading="$store.state.app.buttonIsDisabled" :disabled="$store.state.app.buttonIsDisabled" type="primary" @click="dialogVisibleConfirm" >åæ</el-button> <el-button v-if="dialogTitle==='å¤åæ¶æ'&&dialogForm.nextstepname===''" v-waves :loading="$store.state.app.buttonIsDisabled" :disabled="$store.state.app.buttonIsDisabled" type="primary" @click="dialogVisibleConfirm" >æ¶æ/æå°</el-button> <el-button v-if="dialogTitle==='å¤åæ¶æ'&&dialogForm.nextstepname!==''" v-waves :loading="$store.state.app.buttonIsDisabled" :disabled="$store.state.app.buttonIsDisabled" type="primary" @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> <!-- ä¸è¯å¤çåè¡¨å¯¹è¯æ¡--> <el-dialog v-el-drag-dialog title="ç»´ä¿®å¤ç" :visible.sync="badDialogVisible" width="990px" class="badDialogVisible" top="10vh" :close-on-click-modal="false" @close="handleCloseBad" @closed="handleCloseBad" > <el-form inline :model="badDialogForm" label-width="110px" > <el-form-item label="å·¥åç¼å·ï¼"> <div style="width: 200px">{{ badDialogForm.wo_code }}</div> </el-form-item> <el-form-item label="产åç¼ç ï¼"> <div style="width: 200px">{{ badDialogForm.partcode }}</div> </el-form-item> <el-form-item label="产ååç§°ï¼"> <div style="width: 200px">{{ badDialogForm.partname }}</div> </el-form-item> <el-form-item label="产åè§æ ¼ï¼"> <div style="width: 200px">{{ badDialogForm.partspec }}</div> </el-form-item> <el-form-item label="å½åå·¥åºï¼"> <div style="width: 200px">{{ badDialogForm.stepname }}</div> </el-form-item> <el-form-item label="ä¸éå·¥åºï¼"> <div style="width: 200px">{{ badDialogForm.nextstepname }}</div> </el-form-item> <el-form-item label="任塿°éï¼"> <div style="width: 200px">{{ badDialogForm.plan_qty }}</div> </el-form-item> <el-form-item label="åæ ¼æ°éï¼"> <div style="width: 200px">{{ badDialogForm.good_qty }}</div> </el-form-item> <el-form-item label="ä¸è¯æ°éï¼"> <div style="width: 200px">{{ badDialogForm.ng_qty }}</div> </el-form-item> <!-- 注é--> <!-- <el-form-item label="维修人åï¼">--> <!-- <el-select--> <!-- v-model="badDialogForm.operation"--> <!-- style="width: 200px;"--> <!-- placeholder="è¯·éæ©"--> <!-- >--> <!-- <el-option--> <!-- v-for="item in OperationArr"--> <!-- :key="item.usercode"--> <!-- :label="item.username"--> <!-- :value="item.usercode"--> <!-- />--> <!-- </el-select>--> <!-- </el-form-item>--> </el-form> <div style="margin-bottom:20px"> <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> ä¸è¯ä¿¡æ¯æç»ï¼ </div> <div class="elTableDiv"> <el-table :data="badTableDataDialog" :height="isIpad? (tableHeight-350):(tableHeight-400)" border :row-class-name="tableRowClassName" :style="{width: 100+'%',height:(tableHeight-400)+'px',}" highlight-current-row :header-cell-style="this.$headerCellStyle" :cell-style="this.$cellStyle" > <el-table-column type="index" width="50" label="åºå·" fixed /> <el-table-column prop="step_code" label="å·¥åºç¼ç " min-width="80" /> <el-table-column prop="stepname" label="å·¥åºåç§°" min-width="80" /> <el-table-column prop="plan_qty" label="任塿°é" width="80" /> <el-table-column label="åæ ¼æ°é" width="80" prop="report_qty" /> <el-table-column prop="ng_qty" label="ä¸è¯æ°é" width="80" /> <el-table-column prop="badqty" label="å·²æ¥åºæ°é" width="100" /> <el-table-column prop="defect_name" label="ä¸è¯åå " show-tooltip-when-overflow width="80" /> <el-table-column prop="repair_qty" label="ç»´ä¿®åæ ¼æ°é" width="110" > <template slot-scope="{row}"> <!-- {{ row.repair_qty }}--> <div v-if="row.isVisible===0">{{ row.repair_qty }}</div> <el-input v-if="row.isVisible===1" v-model="row.repair_qty" oninput="value=value.replace(/[^0-9]/g,'')" /> </template> </el-table-column> <el-table-column prop="bad_qty" label="æ¥åºæ°é" width="90" > <!-- oninput="value=value.replace(/[0-9]/g,'')"--> <template slot-scope="{row}"> <div v-if="row.isVisible===0">{{ row.bad_qty }}</div> <el-input v-if="row.isVisible===1" v-model="row.bad_qty" oninput="value=value.replace(/[^0-9]/g,'')" /> </template> </el-table-column> <el-table-column label="æä½" width="100" > <template slot-scope="{row}"> <div class="operationClass"> <el-button v-if="row.isVisible===0" v-waves type="text" @click="badEdit(row)">ç¼è¾</el-button> <el-button v-if="row.isVisible===0" v-waves type="text" @click="badDel(row)">å é¤</el-button> <el-button v-if="row.isVisible===1" v-waves type="text" @click="badSave(row)">确认</el-button> <el-button v-if="row.isVisible===1" v-waves type="text" @click="badCancel(row)">åæ¶</el-button> </div> </template> </el-table-column> </el-table> </div> <span slot="footer" class="dialog-footer"> <div class="footerButton"> <el-button v-waves @click="badDialogVisibleCancel">å æ¶</el-button> <el-button v-waves type="primary" :loading="$store.state.app.buttonIsDisabled" :disabled="$store.state.app.buttonIsDisabled" @click="badDialogVisibleConfirm " >ä¿ å/æ å°</el-button> </div> </span> </el-dialog> </div> </template> @@ -1249,14 +246,11 @@ <script> import Pagination from '@/components/Pagination' import $ from 'jquery' import QRCode from 'qrcodejs2' import { getCookie } from '@/utils/auth' import { handleDatetime2 } from '@/utils/global' import elDragDialog from '@/directive/el-drag-dialog' import waves from '@/directive/waves' import { MesOrderStepSearch } from '@/api/WorkOrder' const SER_HZ = /^[\u4e00-\u9fa5]+$/ export default { name: 'SCKBG', components: { @@ -1264,34 +258,14 @@ }, directives: { elDragDialog, waves }, data() { const validateName = (rule, value, callback) => { if (!value) { return callback(new Error('请è¾å ¥ç¼ç ')) } else { if (SER_HZ.test(value)) { return callback(new Error('ç¼ç ä¸è½ä¸ºä¸æ')) } else { callback() } } } const validateTypeCode = (rule, value, callback) => { if (!value) { return callback(new Error('è¯·éæ©ä¸çº§')) } else { callback() } } return { mainHeight: 0, tableHeight: 0, isIpad: false, // produceCode: '', // å·¥åºç // WXproduceCode: '', // å¤åå·¥åºç radioSelected: '', // å·¥åºéä¸ WXradioSelected: '', // å·¥åºéä¸ form: { orderstepqrcode: '', // æ«æçäºç»´ç ä¿¡æ¯ wocode: '', // å·¥åå· partcode: '', // 产åç¼ç partname: '', // 产ååç§° partspec: '', // 产åè§æ ¼ prop: 'lm_date', // æåºå段 order: 'desc', // æåºå段 page: 1, // 第å 页 @@ -1299,207 +273,67 @@ }, total: 10, tableData: [], WXform: { // å¤å表å orderstepqrcode: '', // æ«æçäºç»´ç ä¿¡æ¯ prop: 'lm_date', // æåºå段 order: 'desc', // æåºå段 page: 1, // 第å 页 rows: 20 // æ¯é¡µå¤å°æ¡ }, WXtotal: 10, // å¤åè¡¨åæ»æ° WXtableData: [], // å¤å表 activeName: 'ç产å表', elTabsArr: [ { code: 'ZZ', name: 'ç产å表' }, { code: 'OUT', name: 'å¤ååæ' }, { code: 'IN', name: 'å¤åæ¶æ' }, { code: 'BAD', name: 'ä¸è¯å¾ å¤ç' } ] WXSelectArr: [// å¤åç±»å䏿å表 { code: 'OUT', name: 'åæ' }, { code: 'IN', name: 'æ¶æ' } ], WXSelected: 'OUT', // å¤å䏿å表éä¸å¼ dialogVisible: false, dialogTitle: '', // èªå¶å¼å§ãèªå¶æ¥å·¥ãå¤ååæãå¤åæ¶æ dialogForm: { wo_code: '', // å·¥åç¼å· partcode: '', // 产åç¼ç partname: '', // 产ååç§° partspec: '', // 产åè§æ ¼ stepseq: '', // å·¥åºåºå· stepcode: '', // å·¥åºç¼ç stepname: '', // å½åå·¥åºå nextstepname: '', // ä¸ä¸éå·¥åºå nextstepcode: '', // ä¸ä¸éå·¥åºç¼ç stepdesc: '', // å·¥åºæè¿° planqty: '', // 任塿°é reportqty: '', // å·²æ¥æ°é noreportqty: '', // æªæ¥æ°é startqty: '', // å¼(æ¥)å·¥æ°é wxcode: '', // å¤åä¾åºåç¼ç outuser: '', // åæäººå taskqty: '', // 任塿°é fqty: '', // åææ°é inuser: getCookie('navTabId'), // æ¶æäººå sqty: '', // æ¶ææ°é ngqty: '', // ä¸è¯æ°é badcode: '', // ä¸è¯åå ç¼ç noputqty: '', // ä¸è¯æ°é eqpcode: '', // ç产设å¤ç¼ç usergroupcode: '', // çç»ç¼ç reportuser: '', // æ¥å·¥äººå startqtySum: '', // ä¸è½è¶ è¿çæ°å¼ reckway: 'group', // 计件æ¹å¼ operation: getCookie('navTabId'), // æ¥å·¥äººï¼æ¶æäººï¼ remarks: '', // 夿³¨ inbarcode: ''// æ«éå·¥åºæ¶ æå°çå ¥åºç }, ZZuserArr: [], // èªå¶ç¨æ·ææ ZZtreams: [], // èªå¶ç产çç»æ°ç» ZZeqpArr: [], // èªå¶è®¾å¤åç§° badArr: [], // ä¸è¯åå æ°ç» WXouterprovide: [], // å¤å便¹æ°ç» WXoutuser: [], // åæäººåæ°ç» userTableData: [], // 人åå表 UserTotal: 0, Userform: {}, userIsSave: false, // æ¤äººåæ¯å¦å¯ä¿æ dialogFormRules: { outuser: [ { required: true, message: 'è¯·éæ©åæäººå', trigger: ['blur', 'change'] } ], fqty: [ { required: true, message: '请è¾å ¥åææ°é', trigger: ['blur', 'change'] } ], wxcode: [ { required: true, message: 'è¯·éæ©å¤å便¹', trigger: ['blur', 'change'] } ], inuser: [ { required: true, message: 'è¯·éæ©æ¶æäººå', trigger: ['blur', 'change'] } ], sqty: [ { required: true, message: '请è¾å ¥æ¶ææ°é', trigger: ['blur', 'change'] } ], // noputqty: [ // { required: true, message: '请è¾å ¥ä¸è¯æ°é', trigger: ['blur', 'change'] } // ], // badcode: [ // { required: true, message: 'è¯·éæ©ä¸è¯åå ', trigger: ['blur', 'change'] } // ] eqpcode: [ { required: true, message: 'è¯·éæ©ç产设å¤', trigger: ['blur', 'change'] } ], usergroupcode: [ { required: true, message: 'è¯·éæ©ç产çç»', trigger: ['blur', 'change'] } ], startqty: [ { required: true, message: '请è¾å ¥æ¥å·¥æ°é', trigger: ['blur', 'change'] } ], operation: [ { required: true, message: 'è¯·éæ©æ¥å·¥äººå', trigger: ['blur', 'change'] } ] }, activeName: '', dialogVisible2: false, 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('æå¼ä¹å') console.log() }, openCallback(vue) { vue.printLoading = false console.log('æ§è¡äºæå°') } }, qrForm: { // æå°å 容 qrvalue: '', startqty: '', wo_code: '', partcode: '', partname: '', partspec: '', nextstepname: '', operator: '', // æä½äºº operatorTime: ''// æä½æ¶é´ }, badForm: { orderstepqrcode: '', // æ«æçäºç»´ç prop: 'lm_date', order: 'desc', page: 1, rows: 20 }, badTableData: [], // ä¸è¯å¤çå表tableæ°æ® badTotal: 0, badDialogVisible: false, badDialogForm: { operation: getCookie('navTabId') }, badTableDataDialog: [], // ä¸è¯å¯¹è¯æ¡tableè¡¨æ ¼ OperationArr: [], // äººåæ°ç» sendButtonIsDisabled: false, // ä¸è¾¾æé®æ¯å¦å¯ç¹å» judgeIsScanningArr: [], // 夿æ¯å¦æ«ç æ°ç» countJudgeIsScanningInput: 0 // 夿æ«ç æ¡çä¸ªæ° } }, created() { // this.getMesOrderStepSearch() this.tabClick() }, mounted() { window.addEventListener('resize', this.getHeight) this.getHeight() // // this.$nextTick(() => { // $('input[name=\'produceCode\']')[0].focus() // }) // // // this.getMesOrderSelectUserAll() // è·åææäººå this.tabClick() }, methods: { // 计件æ¹å¼å¼æ¹åæ¶ reckwayChange() { this.dialogForm.usergroupcode = '' this.dialogForm.operation = '' this.userTableData = [] this.UserTotal = 0 // console.log(this.$refs.dialogForm, 'log') // this.$nextTick(() => { // this.$refs.dialogForm.resetFields() // }) }, tableRowClassName({ row, rowIndex }) { return 'custom-row' }, async getMesOrderStepSearch() { const res = await MesOrderStepSearch(this.form) if (res.code === '200') { this.tableData = res.data this.total = res.count tabClick() { let belong switch (this.activeName) { case 'ç产å表': belong = 'produceCodeZZ' break case 'å¤ååæ': belong = 'produceCodeOUT' break case 'å¤åæ¶æ': belong = 'produceCodeIN' break case 'ä¸è¯å¾ å¤ç': belong = 'produceCodeBAD' break } this.enterNative(this.form.wocode, belong) }, async getMesOrderWxStepSearch() { const res = await MesOrderWxStepSearch(this.WXform) if (res.code === '200') { this.WXtableData = res.data enterNative(val, belong) { console.log(val, belong, 89898989) if (belong === 'produceCodeZZ') { console.log('è¿æ¥äºï¼') 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() }) } }, // æåºæ¹åæ¶ @@ -1513,566 +347,18 @@ } this.form.order = order this.form.prop = prop this.getMesOrderStepSearch() // this.getMesOrderStepSearch() this.search()// search æ¹æ³éé¢åºè¯¥æåç§æ åµååºæ¥ æå¤©æ¥çå }, // WXæåºæ¹åæ¶ WXsortChange({ column, prop, order }) { if (order === 'descending') { order = 'desc' } else if (order === 'ascending') { order = 'asc' } else { order = 'desc' } this.WXform.order = order this.WXform.prop = prop this.getMesOrderWxStepSearch() }, badSortChange({ column, prop, order }) { if (order === 'descending') { order = 'desc' } else if (order === 'ascending') { order = 'asc' } else { order = 'desc' } this.badForm.order = order this.badForm.prop = prop this.getBadList() }, // èªå¶é¡µç¾åç¹ç¹å» getCurrentRow(val) { }, // å¤å页ç¾åç¹ç¹å» getWXCurrentRow(val) { console.log(val) this.WXradioSelected = val }, // tabæé®åæ¢é¼ æ èªå¨èç¦ tabClick(val, d) { if (this.$refs.elTabs.currentName === '0') { this.$nextTick(() => { this.getMesOrderStepSearch() $('input[name=\'produceCode\']')[0].focus() this.WXform.orderstepqrcode = '' }) } if (this.$refs.elTabs.currentName === '1') { this.$nextTick(() => { this.getMesOrderWxStepSearch() $('input[name=\'WXproduceCode\']')[0].focus() this.form.orderstepqrcode = '' }) } if (this.$refs.elTabs.currentName === '2') { this.$nextTick(() => { this.getBadList() $('input[name=\'badProduceCode\']')[0].focus() this.badForm.orderstepqrcode = '' }) } }, // 鲿 //æ«ç ç¨çæ¯é²æ fnThrottle(method, delay, duration, belong) { var that = this var timer = this.timer var begin = new Date().getTime() return function() { var current = new Date().getTime() clearTimeout(timer) if (current - begin >= duration) { // method() // that.VALUE() begin = current } else { that.timer = setTimeout(function() { // method() if (belong === 'produceCode') { that.enterNative(that.form.orderstepqrcode, belong) } if (belong === 'WXproduceCode') { that.enterNative(that.WXform.orderstepqrcode, belong) } if (belong === 'badProduceCode') { that.enterNative(that.badForm.orderstepqrcode, belong) } }, delay) } } }, // 夿æ¯å¦æ¯æ«ç æªæ«ç judgeIsScanning2(e, belong) { if (belong === 'produceCode' && this.form.orderstepqrcode.toString().length === 0) { this.judgeIsScanningArr = [] this.countJudgeIsScanningInput = 0 } if (belong === 'WXproduceCode' && this.WXform.orderstepqrcode.toString().length === 0) { this.judgeIsScanningArr = [] this.countJudgeIsScanningInput = 0 } const timenow = e.timeStamp // console.log(timenow, 1) // let flag = true let flag = false this.judgeIsScanningArr.push(timenow) let i for (i in this.judgeIsScanningArr) { console.log(Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 1]) - Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 2])) // flag = Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 1]) - Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 2]) < 0.1 if (Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 1]) - Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 2]) < 0.1) { this.countJudgeIsScanningInput++ } if (this.countJudgeIsScanningInput >= 3) { flag = true } if (i > 0 && this.judgeIsScanningArr.length === parseInt(i) + 1) { if (flag) { console.log(flag, 1) this.fnThrottle(this.enterNative, 500, 2000, belong)() return } } } // // for (i in this.judgeIsScanningArr) { // // console.log(i) // // console.log( this.judgeIsScanningArr) // console.log(Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 1]) - Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 2])) // if (Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 1]) - Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 2]) < 10) { // this.countJudgeIsScanningInput++ // } // if (this.countJudgeIsScanningInput > this.judgeIsScanningArr.length / 2) { // flag = true // } // // flag = Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 1]) - Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 2]) < 0.1 // // if (i > 0 && this.judgeIsScanningArr.length === parseInt(i) + 1) { // if (flag) { // console.log(flag, 2) // this.fnThrottle(this.enterNative, 500, 2000, belong)() // return // } // // } // // } }, // 夿æ¯å¦æ¯æ«ç æªæ«ç judgeIsScanning(e, belong) { const timenow = e.timeStamp let flag = true this.judgeIsScanningArr.push(timenow) let i for (i in this.judgeIsScanningArr) { flag = Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 1]) - Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 2]) < 0.1 if (i > 0 && this.judgeIsScanningArr.length === parseInt(i) + 1) { if (flag) { this.fnThrottle(this.enterNative, 500, 2000, belong)() return } } } }, // æ«ç é®çå车äºä»¶ async enterNative(val, belong) { console.log(val, belong, 89898989) // å¼å·¥ï¼code="200" count=0 // æ¥å·¥ï¼code="200" count=1 // åæï¼code="200" count=2 // æ¶æï¼code="200" count=3 // èµ°åè¡¨å½¢å¼ code="200" count=4 if (belong === 'produceCode') { const orderstepqrcode = this.form.orderstepqrcode const data = { OperType: 'ZZ', orderstepqrcode: orderstepqrcode, SelectType: '' } const res = await MesOrderStepStart(data) if (res.code === '200' && res.count === 0) { await this.ZZstart(res.data) } if (res.code === '200' && res.count === 1) { await this.ZZreport(res.data) } } if (belong === 'WXproduceCode') { const orderstepqrcode = this.WXform.orderstepqrcode const data = { OperType: 'WX', orderstepqrcode: orderstepqrcode, SelectType: this.WXSelected// OUTãIN } const res = await MesOrderStepStart(data) if (res.code === '200' && res.count === 2) { await this.WXsend(res.data) } if (res.code === '200' && res.count === 3) { await this.WXback(res.data) } } if (belong === 'badProduceCode') { // this.badForm.orderstepqrcode= await this.getBadList() await this.repairHandle(this.badForm.orderstepqrcode) this.badDialogVisible = true } async getMesOrderStepSearch() { const { data: res } = await MesOrderStepSearch() }, // æ¥è¯¢ search() { this.getMesOrderStepSearch() }, // èªå¶å¼å§ async ZZstart(obj) { // if (!this.ZZisExecutable) { // return this.$message.info('è¯·å æ«ç å·¥åºäºç»´ç ï¼') // } this.dialogTitle = 'èªå¶å¼å§' this.dialogVisible = true this.$nextTick(() => { this.dialogForm.wo_code = obj.wo_code this.dialogForm.partcode = obj.partnumber this.dialogForm.partname = obj.partname this.dialogForm.partspec = obj.partspec this.dialogForm.stepseq = obj.seq this.dialogForm.stepcode = obj.stepcode this.dialogForm.stepname = obj.stepname this.dialogForm.stepdesc = obj.stepdesc this.dialogForm.planqty = obj.planqty this.dialogForm.reportqty = obj.reportqty this.dialogForm.noreportqty = obj.noreportqty // this.dialogForm.startqty = obj.startqty this.dialogForm.startqty = obj.noreportqty }) await this.getMesOrderStepStartSelectEqp() }, // èªå¶æ¥å·¥ async ZZreport(obj) { // if (!this.ZZisExecutable) { // return this.$message.info('è¯·å æ«ç å·¥åºäºç»´ç ï¼') // } this.dialogTitle = 'èªå¶æ¥å·¥' this.dialogVisible = true this.$nextTick(() => { this.dialogForm.wo_code = obj.wo_code this.dialogForm.partcode = obj.partnumber this.dialogForm.partname = obj.partname this.dialogForm.partspec = obj.partspec this.dialogForm.stepseq = obj.seq this.dialogForm.stepcode = obj.stepcode this.dialogForm.stepname = obj.stepname this.dialogForm.stepdesc = obj.stepdesc this.dialogForm.planqty = obj.planqty this.dialogForm.reportqty = obj.reportqty this.dialogForm.noputqty = obj.noputqty this.dialogForm.noreportqty = obj.noreportqty // this.dialogForm.startqty = obj.startqty this.dialogForm.startqty = obj.noreportqty this.dialogForm.nextstepname = obj.nextstepname this.dialogForm.nextstepcode = obj.nextstepcode this.dialogForm.startqtySum = obj.noreportqty this.$refs.userTableDataRef.doLayout() }) await this.getMesOrderStepStartSelectEqp() await this.getMesOrderStepReportSelectUserGroup() await this.getMesOrderStepSelectCause('ZZ') await this.getMesOrderSelectUserZZ() }, // å¤ååæ async WXsend(obj) { // if (this.WXradioSelected.length < 1 && obj.length < 1) { // return this.$message.info('请å 鿩工åºï¼') // } // console.log(this.WXform.orderstepqrcode === '', 6) // if (this.WXform.orderstepqrcode === '') { // return this.$message.info('请å è¾å ¥å·¥åºï¼') // } this.dialogTitle = 'å¤ååæ' this.dialogVisible = true this.$nextTick(() => { this.dialogForm.wo_code = obj.wo_code this.dialogForm.partcode = obj.partnumber this.dialogForm.partname = obj.partname this.dialogForm.partspec = obj.partspec this.dialogForm.stepname = obj.stepname this.dialogForm.stepdesc = obj.stepdesc this.dialogForm.planqty = obj.planqty this.dialogForm.reportqty = obj.reportqty this.dialogForm.noreportqty = obj.noreportqty this.dialogForm.fqty = obj.startqty this.dialogForm.stepcode = obj.stepcode this.dialogForm.stepseq = obj.seq }) await this.getMesOrderStepSelectWX() await this.getMesOrderSelectUser() }, // å¤åæ¶æ async WXback(obj) { // if (this.WXform.orderstepqrcode === '') { // return this.$message.info('请å è¾å ¥å·¥åºï¼') // } this.dialogTitle = 'å¤åæ¶æ' this.dialogVisible = true this.$nextTick(() => { this.dialogForm.wo_code = obj.wo_code this.dialogForm.partcode = obj.partnumber this.dialogForm.partname = obj.partname this.dialogForm.partspec = obj.partspec this.dialogForm.stepname = obj.stepname this.dialogForm.stepdesc = obj.stepdesc this.dialogForm.planqty = obj.planqty this.dialogForm.reportqty = obj.reportqty this.dialogForm.noreportqty = obj.noreportqty this.dialogForm.stepcode = obj.stepcode this.dialogForm.nextstepname = obj.nextstepname this.dialogForm.nextstepcode = obj.nextstepcode this.dialogForm.noputqty = obj.noputqty this.dialogForm.stepseq = obj.seq this.dialogForm.sqty = obj.startqty this.dialogForm.startqtySum = obj.startqty }) await this.getMesOrderStepSelectWX() await this.getMesOrderSelectUser() await this.getMesOrderStepSelectCause('WX') }, // ç产çç»ä¸ææ¹å usergroupChange(val) { this.dialogForm.usergroupcode = val this.getMesOrderSelectUserZZ2() }, // è·åèªå¶æ¥å·¥ç产çç»ä¸æå表 async getMesOrderStepReportSelectUserGroup() { const { data: res } = await MesOrderStepReportSelectUserGroup() this.ZZtreams = res }, // è·åèªå¶æ¥å·¥è¡¨æ ¼userææ async getMesOrderSelectUserZZ() { const { data: res } = await MesOrderSelectUser({ usercode: this.dialogForm.usergroupcode }) this.ZZuserArr = res }, async getMesOrderSelectUserZZ2() { const { data: res } = await MesOrderSelectUser({ usercode: '' }) this.ZZuserArr = res await this.getUserTableData() }, // è·åèªå¶ç产设å¤ä¸æ async getMesOrderStepStartSelectEqp() { const { data: res } = await MesOrderStepStartSelectEqp({ orderstepqrcode: this.form.orderstepqrcode }) this.ZZeqpArr = res }, // è·åWX便¹æ¥å£ async getMesOrderStepSelectWX() { const { data: res } = await MesOrderStepSelectWX({ orderstepqrcode: this.WXform.orderstepqrcode }) this.WXouterprovide = res }, // è·åæ¶åæäººå䏿æ¥å£ async getMesOrderSelectUser() { const { data: res } = await MesOrderSelectUser({ usercode: this.dialogForm.outuser }) this.WXoutuser = res }, // è·åæ¶æä¸è¯åå 䏿 async getMesOrderStepSelectCause(val) { let orderstepqrcode = '' if (val === 'WX') { orderstepqrcode = this.WXform.orderstepqrcode } if (val === 'ZZ') { orderstepqrcode = this.form.orderstepqrcode } const { data: res } = await MesOrderStepSelectCause({ orderstepqrcode: orderstepqrcode }) this.badArr = res }, // æ¥å·¥æ¥è¯¢ç¨æ·è¡¨ async getUserTableData() { const { data: res } = await MesOrderGroupSelectUser({ usergroupcode: this.dialogForm.usergroupcode }) this.userTableData = res this.UserTotal = res.length this.userTableData.forEach(item => { let number = Math.random() * Math.random()// ä½ä¸ºå 餿¶çæ è¯ç¬¦ number = number === 0 ? (10 + Math.random()) : number item.isVisible = 0 item.number = number // item.ratio = parseFloat((100 / this.userTableData.length).toFixed(2)) }) this.ZZuserArr = [...this.ZZuserArr].filter(x => [...this.userTableData].every(y => y.usercode !== x.usercode)) this.calculatedValue() this.$nextTick(() => { this.$refs.tableDataRef.doLayout() this.$refs.userTableDataRef.doLayout() }) }, calculatedValue() { const total = 100 let value = 0 this.userTableData.forEach(item => { item.ratio = parseFloat((100 / this.userTableData.length).toFixed(2)) value += item.ratio }) console.log(value, 1) this.UserTotal = this.userTableData.length if (value !== total) { // let temp = this.userTableData // temp[temp.length-1].ratio=temp[temp.length-1].ratio+(total-value) this.userTableData[this.userTableData.length - 1].ratio = parseFloat((this.userTableData[this.userTableData.length - 1].ratio + (total - value)).toFixed(2)) } }, // ä¿®æ¹åé æ¯å editRatio(row) { // console.log(row, 'row') this.userTableData.forEach((item, index) => { if (item.number === row.number) { const number = Math.random() * Math.random()// ä½ä¸ºå 餿¶çæ è¯ç¬¦ this.userTableData.splice(index, 1, { usercode: row.usercode, username: row.username, ratio: row.ratio, isVisible: 2, number: number === 0 ? (10 + Math.random()) : number }) } }) }, // ç¨æ·æ·»å userAdd() { if (this.userTableData.find(i => i.isVisible === 1)) { return this.$message.info('请å ä¿åå½åè¡ä¿¡æ¯ï¼') } let number = Math.random() * Math.random()// ä½ä¸ºå 餿¶çæ è¯ç¬¦ number = number === 0 ? (10 + Math.random()) : number console.log(this.userTableData, 6) this.userTableData.unshift({ usercode: '', username: '', isVisible: 1, number: number, ratio: 0 }) this.calculatedValue() }, // ç¨æ·å表å é¤ userDel(row) { this.ZZuserArr.splice(0, 0, { usercode: row.usercode, username: row.username }) this.userTableData.forEach((item, index) => { if (item.number === row.number) { this.userTableData.splice(index, 1) } }) this.calculatedValue() }, // ç¨æ·å表ä¿å userSave(row) { console.log(row, 123) if (row.usercode === '') { return this.$message.info('人ååç§°ä¸è½ä¸ºç©ºï¼') } if (row.ratio === '') { return this.$message.info('åé æ¯åä¸è½ä¸ºç©ºï¼') } this.ZZuserArr.forEach((item, index) => { if (item.usercode === row.usercode) { this.ZZuserArr.splice(index, 1) } }) this.userTableData.forEach(item => { if (item.number === row.number) { item.isVisible = 0 } }) }, // ç¨æ·åè¡¨åæ¶ userCancel(row) { this.userTableData.forEach((item, index) => { if (item.number === row.number) { this.userTableData.splice(index, 1) } }) this.UserTotal = this.userTableData.length }, // ç¨æ·å表人ååç§°å¼éä¸ usernameChange(val, row) { this.userTableData.forEach(item => { if (item.usercode === val) { this.userIsSave = true return this.$message.info('æ¤äººåå·²å¨åä¸ï¼') } if (item.number === row.number) { this.userIsSave = false item.usercode = val item.username = this.ZZuserArr.find(item => item.usercode === val).username } }) }, // å¯¹è¯æ¡å ³éäºä»¶ handleClose() { this.judgeIsScanningArr = [] this.form.orderstepqrcode = '' this.WXform.orderstepqrcode = '' this.badForm.orderstepqrcode = '' this.dialogForm.wo_code = '', // å·¥åç¼å· this.dialogForm.partcode = '', // 产åç¼ç this.dialogForm.partname = '', // 产ååç§° this.dialogForm.partspec = '', // 产åè§æ ¼ this.dialogForm.stepseq = '', // å·¥åºåºå· this.dialogForm.stepcode = '', // å·¥åºç¼ç this.dialogForm.stepname = '', // å½åå·¥åºå this.dialogForm.nextstepname = '', // ä¸ä¸éå·¥åºå this.dialogForm.stepdesc = '', // å·¥åºæè¿° this.dialogForm.planqty = '', // 任塿°é this.dialogForm.reportqty = '', // å·²æ¥æ°é this.dialogForm.noreportqty = '', // æªæ¥æ°é this.dialogForm.startqty = '', // å¼(æ¥)å·¥æ°é this.dialogForm.wxcode = '', // å¤åä¾åºåç¼ç this.dialogForm.outuser = '', // åæäººå this.dialogForm.taskqty = '', // 任塿°é this.dialogForm.fqty = '', // åææ°é this.dialogForm.inuser = getCookie('navTabId'), // æ¶æäººå é»è®¤ç»å½äººå this.dialogForm.sqty = '', // æ¶ææ°é this.dialogForm.ngqty = '', // ä¸è¯æ°é this.dialogForm.badcode = '', // ä¸è¯åå ç¼ç this.dialogForm.noputqty = '', // ä¸è¯æ°é this.dialogForm.eqpcode = '', // ç产设å¤ç¼ç this.dialogForm.usergroupcode = '', // çç»ç¼ç this.dialogForm.reportuser = '', // æ¥å·¥äººå this.dialogForm.startqtySum = '' // ä¸è½è¶ è¿çæ°å¼ this.dialogForm.reckway = '' // 计件æ¹å¼ this.dialogForm.nextstepcode = '' // ä¸éå·¥åºç¼ç // this.dialogForm.inbarcode = '' // å ¥åºç this.dialogForm.reckway = 'group' this.dialogForm.remarks = '' // 夿³¨ this.dialogForm.operation = getCookie('navTabId') // æ¥å·¥äººï¼æ¶æäººï¼ this.userTableData = [] // 人åå表 this.$refs.dialogForm.clearValidate() }, // å¯¹è¯æ¡åæ¶ @@ -2082,631 +368,27 @@ }, // å¯¹è¯æ¡ç¡®è®¤ dialogVisibleConfirm() { this.$refs.dialogForm.validate(async valid => { if (valid) { if (this.dialogTitle === 'å¤ååæ') { if (parseFloat(this.dialogForm.fqty) > parseFloat(this.dialogForm.noreportqty)) { return this.$message.info('åææ°éä¸è½å¤§äºæªåæ°é!') } const data = { mesordercode: this.dialogForm.wo_code, // å·¥åç¼å· partcode: this.dialogForm.partcode, // 产åç¼ç stepseq: this.dialogForm.stepseq, // å·¥åºåºå· ææ¶ç¼º stepcode: this.dialogForm.stepcode, // å·¥åºç¼ç wxcode: this.dialogForm.wxcode, // å¤åä¾åºåç¼ç outuser: this.dialogForm.outuser, // åæäººå taskqty: this.dialogForm.planqty, // 任塿°é fqty: this.dialogForm.fqty // åææ°é } this.$store.state.app.buttonIsDisabled = true SavaMesOrderStepOut(data).then(res => { if (res.code === '200') { this.dialogVisible = false this.$message.success('åææåï¼') this.tabClick() this.$store.state.app.buttonIsDisabled = false } else { this.$message.error('åæå¤±è´¥!') } }) } if (this.dialogTitle === 'å¤åæ¶æ') { if (parseFloat(this.dialogForm.startqtySum) < parseFloat(this.dialogForm.sqty) + parseFloat(this.dialogForm.noputqty)) { return this.$message.info('æ¶ææ°éå ä¸è¯æ°éä¸è½å¤§äºäºæªæ¶æ°é!') } if (parseFloat(this.dialogForm.noputqty) > 0) { if (this.dialogForm.badcode.length < 1) { return this.$message.info('è¯·éæ©ä¸è¯åå ï¼') } } this.dialogForm.inbarcode = '' // å½ä¸ºæ«éçæ¶å if (this.dialogForm.nextstepcode === '') { const D = { rightcode: '1078', partcode: this.dialogForm.partcode, qty: this.dialogForm.sqty, onelabqty: this.dialogForm.sqty } const r = await LabelBarCode(D) this.dialogForm.inbarcode = r.data[0].labcode this.qrForm.partspec = this.dialogForm.partspec } const data = { mesordercode: this.dialogForm.wo_code, // å·¥åç¼å· partcode: this.dialogForm.partcode, // 产åç¼ç stepseq: this.dialogForm.stepseq, // å·¥åºåºå· stepcode: this.dialogForm.stepcode, // å·¥åºç¼ç wxcode: this.dialogForm.wxcode, // å¤åä¾åºåç¼ç inuser: this.dialogForm.inuser, // åæäººå taskqty: this.dialogForm.planqty, // 任塿°é sqty: this.dialogForm.sqty, // æ¶ææ°é remarks: this.dialogForm.remarks, // 夿³¨ inbarcode: this.dialogForm.inbarcode, // çäº§å ¥åºæ¡ç ngqty: this.dialogForm.noputqty === '' ? 0 : this.dialogForm.noputqty, // ä¸è¯æ°é badcode: this.dialogForm.badcode.length < 1 ? '' : this.dialogForm.badcode.join(';')// ä¸è¯åå } this.$store.state.app.buttonIsDisabled = true SavaMesOrderStepIn(data).then(res => { if (res.code === '200') { this.dialogVisible = false this.$message.success('æ¶ææåï¼') // if (this.dialogForm.nextstepcode === '') { // this.WXprint2(this.OperationArr.find(item => item.usercode === this.dialogForm.inuser).username) this.WXprint2(this.OperationArr.find(item => item.usercode === getCookie('navTabId')).username) this.dialogVisible2 = true // } this.tabClick() this.$store.state.app.buttonIsDisabled = false } else { this.$message.error('æ¶æå¤±è´¥!') } }) } if (this.dialogTitle === 'èªå¶å¼å§') { const data = { mesordercode: this.dialogForm.wo_code, // å·¥åç¼å· partcode: this.dialogForm.partcode, // 产åç¼ç stepseq: this.dialogForm.stepseq, // å·¥åºåºå· ææ¶ç¼º stepcode: this.dialogForm.stepcode, // å·¥åºç¼ç eqpcode: this.dialogForm.eqpcode, // çäº§è®¾å¤ taskqty: this.dialogForm.planqty, // 任塿°é startqty: this.dialogForm.startqty// å¼å§æ°é } this.$store.state.app.buttonIsDisabled = true SavaMesOrderStepStart(data).then(res => { if (res.code === '200') { this.dialogVisible = false this.$message.success('å¼å·¥æåï¼') this.tabClick() this.$store.state.app.buttonIsDisabled = false } else { this.$message.error('å¼å·¥å¤±è´¥!') } }) } if (this.dialogTitle === 'èªå¶æ¥å·¥') { if (parseFloat(this.dialogForm.startqtySum) < parseFloat(this.dialogForm.startqty) + parseFloat(this.dialogForm.noputqty)) { return this.$message.info('æ¥å·¥æ°éå ä¸è¯æ°éä¸è½å¤§äºäºæªæ¥æ°é!') } if (this.userTableData.length < 1 && this.dialogForm.reckway === 'group') { return this.$message.info('人åå表ä¸è½ä¸ºç©º!') } // this.userTableData = [...new Set(this.userTableData)]// æ°ç»å»é this.userTableData = this.userTableData.filter(item => item.usercode !== '') // æ°ç»ä¸å¯¹è±¡ç¸åçå»é this.userTableData = this.userTableData.filter((currentValue, currentIndex, selfArr) => { return selfArr.findIndex(item => item.usercode === currentValue.usercode) === currentIndex }) if (this.dialogForm.reckway === 'group') { let sum = 0 this.userTableData.forEach(item => { sum += parseFloat(item.ratio) }) if (Math.round(sum * 100) / 100 !== 100) { return this.$message.info('åé æ¯ä¾æ»åå¿ é¡»ä¸º100ï¼') } } if (parseFloat(this.dialogForm.noputqty) > 0) { if (this.dialogForm.badcode.length < 1) { return this.$message.info('è¯·éæ©ä¸è¯åå ï¼') } } // console.log(this.userTableData, 1) // const reportuser = this.userTableData.map(item => item.usercode).join(';')// ä¸»è¦æ¹çæ¯è¿éçæ ¼å¼ // console.log(this.dialogForm.operation, 'dialogForm.operation') this.dialogForm.inbarcode = '' // å½ä¸ºæ«éçæ¶å if (this.dialogForm.nextstepcode === '') { const D = { rightcode: '1078', partcode: this.dialogForm.partcode, qty: this.dialogForm.startqty, onelabqty: this.dialogForm.startqty } const r = await LabelBarCode(D) this.dialogForm.inbarcode = r.data[0].labcode this.qrForm.partspec = this.dialogForm.partspec } const data = { mesordercode: this.dialogForm.wo_code, // å·¥åç¼å· partcode: this.dialogForm.partcode, // 产åç¼ç stepseq: this.dialogForm.stepseq, // å·¥åºåºå· stepcode: this.dialogForm.stepcode, // å·¥åºç¼ç eqpcode: this.dialogForm.eqpcode, // 设å¤ç¼ç usergroupcode: this.dialogForm.usergroupcode, // çç»ç¼ç // reportuser: reportuser, // æ¥å·¥äººå reportuser: this.dialogForm.reckway === 'group' ? this.userTableData : [{ usercode: this.dialogForm.operation, ratio: 100 }], taskqty: this.dialogForm.planqty, // 任塿°é // startqty: this.dialogForm.startqty, // å¼å·¥æ°é startqty: this.dialogForm.reportqty, // å¼å·¥æ°é // reportqty: this.dialogForm.reportqty, // åæ ¼æ°é reportqty: this.dialogForm.startqty, // åæ ¼æ°é remarks: this.dialogForm.remarks, // 夿³¨ reckway: this.dialogForm.reckway, // 计件æ¹å¼ inbarcode: this.dialogForm.inbarcode, // çäº§å ¥åºæ¡ç ngqty: this.dialogForm.noputqty === '' ? 0 : this.dialogForm.noputqty, // ä¸è¯æ°é badcode: this.dialogForm.badcode.length < 1 ? '' : this.dialogForm.badcode.join(';')// ä¸è¯åå } // console.log(JSON.stringify(data), 'data') console.log(data, 'data') this.$store.state.app.buttonIsDisabled = true SavaMesOrderStepReport(data).then(res => { if (res.code === '200') { this.dialogVisible = false this.$message.success('æ¥å·¥æåï¼') // this.dialogForm.nextstepcode==='' //å½ä¸ºç©ºçæ¶å ä»£è¡¨æ¯æ«éå·¥åº // if (this.dialogForm.nextstepcode !== '') { this.ZZprint2(this.OperationArr.find(item => item.usercode === getCookie('navTabId')).username) this.dialogVisible2 = true // } this.tabClick() this.$store.state.app.buttonIsDisabled = false } else { this.$message.error('æ¥å·¥å¤±è´¥!') } }) } } }) // this.$refs.dialogForm.validate(async valid => { // if (valid) { // // } // }) }, // çæäºç»´ç 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 }) }, 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.partcode 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) }) }, WXprint2(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.sqty this.qrForm.wo_code = this.dialogForm.wo_code this.qrForm.partcode = this.dialogForm.partcode 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) }) }, 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 = '' }, // è·å页é¢é«åº¦ getHeight() { this.$nextTick(() => { this.mainHeight = window.innerHeight - 85 this.tableHeight = this.mainHeight - 220 this.isIpad = window.innerHeight < 769 if (window.innerHeight < 769) { this.tableHeight = this.tableHeight - 50 } this.$refs.tableDataRef.doLayout() this.tableHeight = this.mainHeight - 275 // this.$refs.tableDataRef.doLayout() }) }, // è·åä¸è¯å¤çå表 async getBadList() { const res = await MesOrderNgStepSearch(this.badForm) this.badTableData = res.data this.badTotal = res.count headerCellStyle() { return this.$headerCellStyle }, badDialogVisibleCancel() { this.badDialogVisible = false }, badDialogVisibleConfirm() { const data = { Data: this.badTableDataDialog } this.$store.state.app.buttonIsDisabled = true EditOrderNgStepSeave(data, getCookie('navTabId')).then(res => { if (res.code === '200' || res.code === '301') { this.getBadList() this.badDialogVisible = false this.badPrint(this.OperationArr.find(item => item.usercode === getCookie('navTabId')).username) this.dialogVisible2 = true this.$message.success('ä¿åæåï¼') this.$store.state.app.buttonIsDisabled = false } }) }, badPrint(username) { this.qrForm.qrvalue = this.badDialogForm.wo_code + ';' + this.badDialogForm.nextstepcode this.qrForm.startqty = this.badDialogForm.plan_qty this.qrForm.wo_code = this.badDialogForm.wo_code this.qrForm.partcode = this.badDialogForm.partcode this.qrForm.partname = this.badDialogForm.partname this.qrForm.nextstepname = this.badDialogForm.nextstepname this.qrForm.operator = username this.qrForm.operatorTime = handleDatetime2(new Date()) this.$nextTick(() => { this.bindQRCode(this.qrForm.qrvalue) }) }, handleCloseBad() { this.badDialogForm = {} this.badDialogForm.operation = getCookie('navTabId') this.badTableDataDialog = [] this.judgeIsScanningArr = [] }, async getMesOrderSelectUserAll() { const { data: res } = await MesOrderSelectUser({ usercode: '' }) this.OperationArr = res }, // ç¹å»ç»´ä¿®å¤çæé® æ æ«ææ¡ç çæ«æå车äºä»¶ async repairHandle(row) { let data if (row.wo_code) { data = { orderstepqrcode: row.wo_code + ';' + row.stepcode } } else { data = { orderstepqrcode: row } } const { data: res } = await MesOrderNgSubStepSearch(data) this.$nextTick(() => { this.badDialogForm.wo_code = res.data1.wo_code this.badDialogForm.partcode = res.data1.partnumber this.badDialogForm.partname = res.data1.partname this.badDialogForm.partspec = res.data1.partspec this.badDialogForm.stepname = res.data1.stepname this.badDialogForm.nextstepcode = res.data1.nextstepcode this.badDialogForm.nextstepname = res.data1.nextstepname this.badDialogForm.plan_qty = res.data1.planqty this.badDialogForm.good_qty = res.data1.noreportqty // åæ ¼æ°é this.badDialogForm.ng_qty = res.data1.noputqty // ä¸è¯æ°é this.badTableDataDialog = res.data2 this.badTableDataDialog.forEach(item => { item.repair_qty = 0 item.bad_qty = 0 item.isVisible = 0 // item.defect_code = [...new Set(item.defect_code.split(','))].join(',') // item.defect_name = [...new Set(item.defect_name.split(','))].join(',') }) console.log(this.badTableDataDialog, 321) this.badDialogVisible = true }) }, badEdit(row) { console.log(row) this.badTableDataDialog.forEach((item, index) => { if (item.id === row.id && item.m_id === row.m_id) { this.badTableDataDialog.splice(index, 1, { bad_qty: row.bad_qty, repair_qty: row.repair_qty, isVisible: 1, defect_code: row.defect_code, defect_name: row.defect_name, badqty: row.badqty, id: row.id, m_id: row.m_id, materiel_code: row.materiel_code, ng_qty: row.ng_qty, plan_qty: row.plan_qty, report_qty: row.report_qty, seq: row.seq, step_code: row.step_code, stepname: row.stepname, style: row.style, wo_code: row.wo_code }) } }) }, badSave(row) { if (parseFloat(row.bad_qty) + parseFloat(row.repair_qty) > parseFloat(row.ng_qty)) { this.badCancel(row) return this.$message.info('ç»´ä¿®æ°é䏿¥åºæ°éä¹åä¸è½å¤§äºä¸è¯æ°éï¼') } this.badTableDataDialog.forEach((item, index) => { if (item.id === row.id && item.m_id === row.m_id) { this.badTableDataDialog.splice(index, 1, { bad_qty: parseFloat(row.bad_qty), repair_qty: parseFloat(row.repair_qty), isVisible: 0, defect_code: row.defect_code, defect_name: row.defect_name, id: row.id, m_id: row.m_id, badqty: row.badqty, materiel_code: row.materiel_code, ng_qty: row.ng_qty, plan_qty: row.plan_qty, report_qty: row.report_qty, seq: row.seq, step_code: row.step_code, stepname: row.stepname, style: row.style, wo_code: row.wo_code }) } }) }, badCancel(row) { this.badTableDataDialog.forEach((item, index) => { if (item.id === row.id && item.m_id === row.m_id) { this.badTableDataDialog.splice(index, 1, { // bad_qty: row.bad_qty, // repair_qty: row.repair_qty, bad_qty: 0, repair_qty: 0, isVisible: 0, defect_code: row.defect_code, defect_name: row.defect_name, id: row.id, m_id: row.m_id, badqty: row.badqty, materiel_code: row.materiel_code, ng_qty: row.ng_qty, plan_qty: row.plan_qty, report_qty: row.report_qty, seq: row.seq, step_code: row.step_code, stepname: row.stepname, style: row.style, wo_code: row.wo_code }) } }) }, badDel(row) { this.badTableDataDialog.forEach((item, index) => { if (item.id === row.id && item.m_id === row.m_id) { this.badTableDataDialog.splice(index, 1) } }) cellStyle() { return this.$cellStyle } } } </script> <style lang="scss" scoped> $main_color: #42b983; .el-button--text { font-size: 14px; cursor: pointer; } .operationClass { height: 23px; display: flex; justify-content: space-between; align-items: center; } ::v-deep .el-checkbox.is-bordered + .el-checkbox.is-bordered { margin: 10px 30px 0px 0; } ::v-deep .el-radio__input.is-checked + .el-radio__label { color: $main_color; } ::v-deep .el-radio.is-bordered + .el-radio.is-bordered { margin: 10px 30px 0px 0; } //.dialogVisible{ ::v-deep .el-select .el-input .el-select__caret { display: flex; align-items: center; justify-content: center; } //} .elTableDiv { ::v-deep .el-radio__label { display: none; } } </style> <style media="print"> /*@media print {*/ @page { size: auto; margin: 3mm; font-size: 10px; } </style> <!--å ¬å ±é¡µé¢æ ·å¼--> <style lang="scss" scoped> $main_color: #42b983; ::v-deep .el-button--text { font-size: 14px; cursor: pointer; } .el-icon-share, .el-icon-delete, .el-icon-edit-outline { color: $main_color; cursor: pointer; } .el-icon-edit-outline { margin-right: 15px; } ::v-deep .el-button--primary, .el-button--default, .el-button--info { height: 34px; display: flex; align-items: center; padding: 0 15px; } ::v-deep .el-button--primary { //background-color: $main_color !important; } ::v-deep .el-button--default { background-color: #f8f8fa; border: none; } ::v-deep .el-input__inner { height: 34px; line-height: 34px; //color: #a7a7a7; } ::v-deep .el-dialog__body { padding: 20px 100px !important; } ::v-deep .dialogVisibleRoles .el-dialog__body { padding: 20px 20px !important; } ::v-deep .importPickerClass .el-dialog__body { padding: 20px 20px !important; } ::v-deep .badDialogVisible .el-dialog__body { padding: 20px 20px !important; } ::v-deep .el-dialog__footer { display: flex; justify-content: flex-end; } ::v-deep .el-table .caret-wrapper { transform: scale(0.8); } ::v-deep .cell { display: flex; align-items: center; justify-content: space-between; } ::v-deep .el-table::before { height: 0; } ::v-deep .el-table__body-wrapper { background-color: #f8f8fa; } ::v-deep .el-table__body .el-table__row.hover-row td { background-color: #eaecef; } ::v-deep .el-form--inline .el-form-item__label { color: #a7a7a7; } .body ::v-deep .el-divider { border: 1px solid #eee; width: 99%; margin: 10px auto; } .body ::v-deep .el-form-item { margin-bottom: 0; } .tableFixed { ::v-deep .el-table__fixed-right { height: 100% !important; } ::v-deep .el-table__fixed { height: 100% !important; } } </style> <style> .el-table .custom-row { background: #f8f8fa; } </style> src/views/produce/stepReport_back.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,2712 @@ <template> <div> <div class="body" style="padding-top: 10px;" :style="{height:mainHeight+'px'}"> <el-tabs ref="elTabs" v-model="activeName" type="border-card" @tab-click="tabClick"> <el-tab-pane label="ç产å表"> <div style="margin-left: 10px;margin-top:10px;display: flex;justify-content: space-between"> <div style="display: flex;align-items: center"> <div style="width: 90px">æ«ææ¡ç ï¼</div> <!-- oninput="value=value.replace(/[^0-9a-zA-Z;_]/g,'')"--> <el-input id="keyWords" v-model="form.orderstepqrcode" name="produceCode" style="width: 300px" @keyup.enter.native="val=>enterNative(val,'produceCode')" /> <!-- @keyup.native="e=>judgeIsScanning(e,'produceCode')"--> </div> <div v-if="false" style="display: flex;padding-right: 10px"> <el-button v-waves @click="ZZstart"> <svg-icon icon-class="start_time" style="margin-right: 2px" /> å¼å§ </el-button> <el-button v-waves @click="ZZreport"> <svg-icon icon-class="report_work" style="margin-right: 2px" /> æ¥å·¥ </el-button> </div> </div> <el-divider /> <div class="elTableDiv"> <el-table ref="tableDataRef" class="tableFixed" :data="tableData" :height="isIpad? (tableHeight+50):tableHeight" border :row-class-name="tableRowClassName" :style="{width: 100+'%',height:tableHeight+'px',}" highlight-current-row :header-cell-style="this.$headerCellStyle" :cell-style="this.$cellStyle" @sort-change="sortChange" > <el-table-column prop="RowNum" width="50" label="åºå·" fixed /> <el-table-column 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="å·¥åå·" 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" width="160" 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="descr"--> <!-- label="å·¥åºæè¿°"--> <!-- min-width="150"--> <!-- sortable="custom"--> <!-- >--> <!-- <template slot-scope="{row}">--> <!-- <div v-if="row.descr">{{ row.descr }}</div>--> <!-- <div v-else>/</div>--> <!-- </template>--> <!-- </el-table-column>--> <el-table-column prop="plan_qty" label="任塿°é" width="110" sortable="custom" show-tooltip-when-overflow /> <el-table-column label="æªæ¥å·¥æ°é" width="120" show-tooltip-when-overflow > <!-- sortable="custom"--> <template slot-scope="{row}"> <div>{{ row.plan_qty - row.good_qty - row.ng_qty }}</div> </template> </el-table-column> <el-table-column prop="good_qty" show-tooltip-when-overflow label="åæ ¼æ°é" sortable="custom" width="160" /> <el-table-column prop="ng_qty" label="ä¸è¯æ°é" show-tooltip-when-overflow width="150" sortable="custom" /> <el-table-column prop="bad_qty" label="å·²æ¥åºæ°é" width="120" show-tooltip-when-overflow sortable="custom" /> <el-table-column prop="plan_startdate" label="计åå¼å·¥æ¥æ" show-tooltip-when-overflow width="150" sortable="custom" > <template slot-scope="{row}"> <div v-if="row.plan_startdate">{{ row.plan_startdate.substring(0, 11) }}</div> <div v-else>/</div> </template> </el-table-column> <el-table-column prop="plan_enddate" label="计åå®å·¥æ¥æ" width="150" sortable="custom" show-tooltip-when-overflow fixed="right" > <template slot-scope="{row}"> <div v-if="row.plan_startdate">{{ row.plan_startdate.substring(0, 11) }}</div> <div v-else>/</div> </template> </el-table-column> <!-- <el-table-column--> <!-- label="æä½"--> <!-- width="150"--> <!-- fixed="right"--> <!-- >--> <!-- <template slot-scope="{row}">--> <!-- <div class="operationClass">--> <!-- <el-button v-waves type="text" @click="edit('edit',row)">ç¼è¾</el-button>--> <!-- <el-button v-waves type="text" @click="del(row)">å é¤</el-button>--> <!-- </div>--> <!-- </template>--> <!-- </el-table-column>--> </el-table> </div> <!--å页--> <pagination :total="total" :page.sync="form.page" :limit.sync="form.rows" align="right" layout="total,prev, pager, next,sizes" popper-class="select_bottom" @pagination="getMesOrderStepSearch" /> </el-tab-pane> <el-tab-pane label="å¤åå表"> <div style="margin-left: 10px;margin-top:10px;display: flex;justify-content: space-between"> <div style="display: flex;align-items: center"> <div style="width: 90px;">å¤åç±»åï¼</div> <el-select v-model="WXSelected" filterable style="width: 200px" placeholder="è¯·éæ©" > <el-option v-for="item in WXSelectArr" :key="item.code" :label="item.name" :value="item.code" /> </el-select> <div style="width: 90px;margin-left: 20px">æ«ææ¡ç ï¼</div> <el-input v-model="WXform.orderstepqrcode" name="WXproduceCode" style="width: 300px" @keyup.enter.native="val=>enterNative(val,'WXproduceCode')" /> <!-- @keyup.native="e=>judgeIsScanning(e,'WXproduceCode')"--> </div> <div v-if="false" style="display: flex;padding-right: 10px"> <el-button v-waves @click="WXsend"> <svg-icon icon-class="start_time" style="margin-right: 2px" /> åæ </el-button> <el-button v-waves @click="WXback"> <svg-icon icon-class="report_work" style="margin-right: 2px" /> æ¶æ </el-button> </div> </div> <el-divider /> <div class="elTableDiv"> <el-table ref="tableDataRef" class="tableFixed" :data="WXtableData" :height="isIpad? (tableHeight+50):tableHeight" border :row-class-name="tableRowClassName" :style="{width: 100+'%',height:tableHeight+'px',}" highlight-current-row :header-cell-style="this.$headerCellStyle" :cell-style="this.$cellStyle" @sort-change="WXsortChange" > <el-table-column prop="RowNum" width="50" label="åºå·" fixed /> <el-table-column prop="status" label="ç¶æ" show-tooltip-when-overflow 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> </template> </el-table-column> <el-table-column prop="wo_code" label="å·¥åå·" width="160" show-tooltip-when-overflow sortable="custom" /> <el-table-column prop="partcode" label="产åç¼ç " show-tooltip-when-overflow width="110" sortable="custom" /> <el-table-column prop="partname" label="产ååç§°" width="160" show-tooltip-when-overflow sortable="custom" /> <el-table-column prop="stepname" label="å·¥åº" width="120" show-tooltip-when-overflow sortable="custom" /> <!-- <el-table-column--> <!-- prop="descr"--> <!-- label="å·¥åºæè¿°"--> <!-- min-width="150"--> <!-- sortable="custom"--> <!-- >--> <!-- <template slot-scope="{row}">--> <!-- <div v-if="row.descr">{{ row.descr }}</div>--> <!-- <div v-else>/</div>--> <!-- </template>--> <!-- </el-table-column>--> <el-table-column prop="plan_qty" label="任塿°é" show-tooltip-when-overflow width="110" sortable="custom" /> <el-table-column label="æªæ¶ææ°é" width="120" show-tooltip-when-overflow > <!-- sortable="custom"--> <template slot-scope="{row}"> <div>{{ row.plan_qty - row.good_qty - row.ng_qty }}</div> </template> </el-table-column> <el-table-column prop="good_qty" label="å·²æ¶ææ°é" show-tooltip-when-overflow sortable="custom" width="160" /> <el-table-column prop="ng_qty" label="ä¸è¯æ°é" show-tooltip-when-overflow width="150" sortable="custom" /> <el-table-column prop="bad_qty" label="å·²æ¥åºæ°é" min-width="120" sortable="custom" show-tooltip-when-overflow /> <el-table-column prop="plan_startdate" label="计åå¼å·¥æ¥æ" show-tooltip-when-overflow width="150" sortable="custom" > <template slot-scope="{row}"> <div v-if="row.plan_startdate">{{ row.plan_startdate.substring(0, 11) }}</div> <div v-else>/</div> </template> </el-table-column> <el-table-column prop="plan_enddate" label="计åå®å·¥æ¥æ" show-tooltip-when-overflow width="150" sortable="custom" fixed="right" > <template slot-scope="{row}"> <div v-if="row.plan_startdate">{{ row.plan_startdate.substring(0, 11) }}</div> <div v-else>/</div> </template> </el-table-column> <!-- <el-table-column--> <!-- label="æä½"--> <!-- width="150"--> <!-- fixed="right"--> <!-- >--> <!-- <template slot-scope="{row}">--> <!-- <div class="operationClass">--> <!-- <el-button v-waves type="text" @click="edit('edit',row)">ç¼è¾</el-button>--> <!-- <el-button v-waves type="text" @click="del(row)">å é¤</el-button>--> <!-- </div>--> <!-- </template>--> <!-- </el-table-column>--> </el-table> </div> <!--å页--> <pagination :total="WXtotal" :page.sync="WXform.page" :limit.sync="WXform.rows" align="right" layout="total,prev, pager, next,sizes" popper-class="select_bottom" @pagination="getMesOrderStepSearch" /> </el-tab-pane> <el-tab-pane label="ä¸è¯å¾ å¤çå表"> <div style="margin-left: 10px;margin-top:10px;display: flex;justify-content: space-between"> <div style="display: flex;align-items: center"> <div style="width: 90px">æ«ææ¡ç ï¼</div> <!-- oninput="value=value.replace(/[^0-9a-zA-Z;_]/g,'')"--> <el-input v-model="badForm.orderstepqrcode" name="badProduceCode" style="width: 300px" @keyup.enter.native="val=>enterNative(val,'badProduceCode')" /> <!-- @keyup.native="e=>judgeIsScanning(e,'badProduceCode')"--> </div> </div> <el-divider /> <div class="elTableDiv"> <el-table ref="tableDataRef" class="tableFixed" :data="badTableData" :height="isIpad? (tableHeight+50):tableHeight" border :row-class-name="tableRowClassName" :style="{width: 100+'%',height:tableHeight+'px',}" highlight-current-row :header-cell-style="this.$headerCellStyle" :cell-style="this.$cellStyle" @sort-change="badSortChange" > <el-table-column prop="RowNum" width="50" label="åºå·" fixed /> <el-table-column show-tooltip-when-overflow prop="wo_code" label="å·¥åå·" min-width="160" sortable="custom" /> <el-table-column show-tooltip-when-overflow prop="partcode" label="产åç¼ç " min-width="110" sortable="custom" /> <el-table-column show-tooltip-when-overflow prop="partname" min-width="160" label="产ååç§°" sortable="custom" /> <el-table-column prop="stepname" label="å·¥åº" show-tooltip-when-overflow min-width="120" sortable="custom" /> <el-table-column prop="plan_qty" label="任塿°é" width="110" show-tooltip-when-overflow sortable="custom" /> <el-table-column prop="good_qty" label="åæ ¼æ°é" sortable="custom" min-width="160" show-tooltip-when-overflow /> <el-table-column prop="ng_qty" label="ä¸è¯æ°é" width="150" show-tooltip-when-overflow sortable="custom" /> <el-table-column prop="bad_qty" label="å·²æ¥åºæ°é" width="120" sortable="custom" show-tooltip-when-overflow /> <el-table-column label="æä½" width="120" fixed="right" > <template slot-scope="{row}"> <div class="operationClass"> <el-button v-waves type="text" @click="repairHandle(row)">ç»´ä¿®å¤ç</el-button> </div> </template> </el-table-column> </el-table> </div> <!--å页--> <pagination :total="badTotal" :page.sync="badForm.page" :limit.sync="badForm.rows" align="right" layout="total,prev, pager, next,sizes" popper-class="select_bottom" @pagination="getBadList" /> </el-tab-pane> </el-tabs> </div> <el-dialog v-el-drag-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="850px" class="dialogVisible" :top="dialogTitle==='èªå¶æ¥å·¥'?'5vh':'15vh'" :close-on-click-modal="false" @close="handleClose" @closed="handleClose" > <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="110px" > <el-form-item label="å·¥åç¼å·ï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.wo_code }}</div> </el-form-item> <el-form-item label="产åç¼ç ï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.partcode }}</div> </el-form-item> <el-form-item label="产ååç§°ï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.partname }}</div> </el-form-item> <el-form-item label="产åè§æ ¼ï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.partspec }}</div> </el-form-item> <el-form-item label="å½åå·¥åºï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.stepname }}</div> </el-form-item> <el-form-item v-if="false" label="å·¥åºæè¿°ï¼"> <!-- <el-tooltip class="item" effect="dark" content="åææåæææåæææåææ¶æå¡æ°æ®çå¡" placement="top-start">--> <div style="width: 200px;white-space: nowrap;text-overflow: ellipsis;overflow: hidden;"> {{ dialogForm.stepdesc }} </div> <!-- </el-tooltip>--> </el-form-item> <el-form-item label="任塿°éï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.planqty }}</div> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶å¼å§'" label="æªå¼/å·²å¼ï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.noreportqty }}/{{ dialogForm.reportqty }}</div> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="æªæ¥/å·²æ¥ï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.noreportqty }}/{{ dialogForm.reportqty }}</div> </el-form-item> <el-form-item v-if="dialogTitle==='å¤ååæ'" label="æªå/å·²åï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.noreportqty }}/{{ dialogForm.reportqty }}</div> </el-form-item> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="æªæ¶/å·²æ¶ï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.noreportqty }}/{{ dialogForm.reportqty }}</div> </el-form-item> <!--èªå¶å¼å§--> <el-form-item v-if="dialogTitle==='èªå¶å¼å§'" label="å¼å·¥æ°éï¼"> <div style="width: 200px">{{ dialogForm.startqty }}</div> <!-- <div style="width: 200px">{{ dialogForm.noreportqty }}</div>--> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶å¼å§'" prop="eqpcode" label="ç产设å¤ï¼"> <el-select v-model="dialogForm.eqpcode" style="width: 200px;" placeholder="è¯·éæ©" > <el-option v-for="item in ZZeqpArr" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> <!-- èªå¶æ¥å·¥ --> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="ä¸éå·¥åºï¼" style="margin: 0 10px 0 0"> <div style="width: 200px">{{ dialogForm.nextstepname }}</div> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" prop="reckway" label="计件æ¹å¼ï¼"> <el-radio-group v-model="dialogForm.reckway" style="width: 200px;" @change="reckwayChange"> <el-radio label="group">çç»</el-radio> <el-radio label="person">个人</el-radio> </el-radio-group> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'&&dialogForm.reckway==='group'" prop="usergroupcode" label="ç产çç»ï¼"> <el-select v-model="dialogForm.usergroupcode" style="width: 200px;" placeholder="è¯·éæ©" @change="usergroupChange" > <el-option v-for="item in ZZtreams" :key="item.group_code" :label="item.group_name" :value="item.group_code" /> </el-select> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'&&dialogForm.reckway==='person'" prop="operation" label="æ¥å·¥äººåï¼"> <el-select v-model="dialogForm.operation" style="width: 200px;" placeholder="è¯·éæ©" @change="usergroupChange" > <el-option v-for="item in OperationArr" :key="item.usercode" :label="item.username" :value="item.usercode" /> </el-select> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="设å¤åç§°ï¼" prop="eqpcode"> <el-select v-model="dialogForm.eqpcode" style="width: 200px;" placeholder="è¯·éæ©" > <el-option v-for="item in ZZeqpArr" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="åæ ¼æ°éï¼" prop="startqty"> <el-input v-model="dialogForm.startqty" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 200px;" /> <!-- <el-input v-model="dialogForm.noreportqty" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 200px;" />--> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="ä¸è¯æ°éï¼"> <el-input v-model="dialogForm.noputqty" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 200px;" /> </el-form-item> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="ä¸è¯åå ï¼"> <el-select v-model="dialogForm.badcode" style="width: 200px;" placeholder="è¯·éæ©" :disabled="parseFloat(dialogForm.noputqty)===0||dialogForm.noputqty.trim()===''" multiple collapse-tags > <el-option v-for="item in badArr" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> <!-- <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="æ¥å·¥äººåï¼">--> <!-- <el-input v-model="dialogForm.remarks" type="textarea" style="width: 200px;" />--> <!-- </el-form-item>--> <!-- 注é--> <!-- <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="æ¥å·¥äººï¼">--> <!-- <el-select--> <!-- v-model="dialogForm.operation"--> <!-- style="width: 200px;"--> <!-- placeholder="è¯·éæ©"--> <!-- >--> <!-- <el-option--> <!-- v-for="item in OperationArr"--> <!-- :key="item.usercode"--> <!-- :label="item.username"--> <!-- :value="item.usercode"--> <!-- />--> <!-- </el-select>--> <!-- </el-form-item>--> <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="夿³¨ï¼"> <el-input v-model="dialogForm.remarks" type="textarea" style="width: 200px;" /> </el-form-item> <div v-if="dialogTitle==='èªå¶æ¥å·¥'&&dialogForm.reckway==='group'"> <div style="display: flex;align-items:center;height: 40px;margin-bottom: 10px"> <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> <div style="margin: 0 15px 0 5px;">人åå表</div> <el-button v-waves type="primary" style="margin: 10px 0" @click="userAdd">å¢è¡</el-button> </div> <el-table ref="userTableDataRef" :data="userTableData" border class="tableFixed" :row-class-name="tableRowClassName" :header-cell-style="this.$headerCellStyle" :cell-style="this.$cellStyle" height="188" highlight-current-row style="width: 100%" > <el-table-column width="100" label="åºå·" type="index" fixed /> <el-table-column prop="username" label="人ååç§°" show-tooltip-when-overflow > <template slot-scope="{row}"> <el-select v-if="row.isVisible===1" v-model="row.username" style="width: 200px;" placeholder="è¯·éæ©" @change="val=>usernameChange(val,row)" > <el-option v-for="item in ZZuserArr" :key="item.usercode" :label="item.username" :value="item.usercode" /> </el-select> <div v-else>{{ row.username }}</div> </template> </el-table-column> <el-table-column prop="ratio" label="åé æ¯ä¾(%)" show-tooltip-when-overflow > <template slot-scope="{row}"> <el-input v-if="row.isVisible===1||row.isVisible===2" v-model="row.ratio" oninput="value=value.replace(/[^0-9.]/g,'')" placeholder="请è¾å ¥" /> <div v-else> {{ row.ratio }}</div> </template> </el-table-column> <el-table-column prop="RowNum" label="æä½" fixed="right" > <template slot-scope="{row}"> <div class="operationClass"> <el-button v-if="(row.isVisible===1&&!userIsSave)||row.isVisible===2" v-waves type="text" @click="userSave(row)" >ä¿å </el-button> <el-button v-if="row.isVisible===1" v-waves type="text" @click="userCancel(row)">åæ¶</el-button> <el-button v-if="row.isVisible===0" v-waves type="text" @click="userDel(row)">å é¤</el-button> <el-button v-if="row.isVisible===0" v-waves type="text" @click="editRatio(row)">ä¿®æ¹æ¯ä¾</el-button> </div> </template> </el-table-column> </el-table> <!--å页--> <pagination :total="UserTotal" :page.sync="Userform.page" :limit.sync="Userform.rows" align="right" layout="total,prev, pager, next,sizes" popper-class="select_bottom" @pagination="getMesOrderStepSearch" /> </div> <!-- å¤ååæ--> <el-form-item v-if="dialogTitle==='å¤ååæ'" label="å¤å便¹ï¼" prop="wxcode" > <el-select v-model="dialogForm.wxcode" style="width: 200px;" placeholder="è¯·éæ©" filterable > <el-option v-for="item in WXouterprovide" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> <el-form-item v-if="dialogTitle==='å¤ååæ'" label="åæäººåï¼" prop="outuser" > <el-select v-model="dialogForm.outuser" style="width: 200px;" placeholder="è¯·éæ©" filterable > <el-option v-for="item in WXoutuser" :key="item.usercode" :label="item.username" :value="item.usercode" /> </el-select> </el-form-item> <el-form-item v-if="dialogTitle==='å¤ååæ'" label="åææ°éï¼" prop="fqty" > <el-input v-model="dialogForm.fqty" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 200px;" /> </el-form-item> <!-- å¤åæ¶æ--> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="ä¸éå·¥åºï¼" > <div style="width: 200px">{{ dialogForm.nextstepname }}</div> </el-form-item> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="å¤å便¹ï¼" prop="wxcode" > <el-select v-model="dialogForm.wxcode" style="width: 200px;" placeholder="è¯·éæ©" > <el-option v-for="item in WXouterprovide" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="æ¶æäººåï¼" prop="inuser" > <el-select v-model="dialogForm.inuser" style="width: 200px;" placeholder="è¯·éæ©" > <el-option v-for="item in WXoutuser" :key="item.usercode" :label="item.username" :value="item.usercode" /> </el-select> </el-form-item> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="æ¶ææ°éï¼" prop="sqty" > <el-input v-model="dialogForm.sqty" style="width: 200px" oninput="value=value.replace(/[^0-9.]/g,'')" /> </el-form-item> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="ä¸è¯æ°éï¼" prop="noputqty" > <el-input v-model="dialogForm.noputqty" style="width: 200px" oninput="value=value.replace(/[^0-9.]/g,'')" /> </el-form-item> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="ä¸è¯åå ï¼" > <!-- prop="badcode"--> <el-select v-model="dialogForm.badcode" style="width: 200px;" multiple collapse-tags :disabled="parseFloat(dialogForm.noputqty)===0||dialogForm.noputqty.trim()===''" placeholder="è¯·éæ©" > <el-option v-for="item in badArr" :key="item.code" :label="item.name" :value="item.code" /> </el-select> </el-form-item> <!-- <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="æ¶æäººï¼">--> <!-- <el-select--> <!-- v-model="dialogForm.operation"--> <!-- style="width: 200px;"--> <!-- placeholder="è¯·éæ©"--> <!-- >--> <!-- <el-option--> <!-- v-for="item in OperationArr"--> <!-- :key="item.usercode"--> <!-- :label="item.username"--> <!-- :value="item.usercode"--> <!-- />--> <!-- </el-select>--> <!-- </el-form-item>--> <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="夿³¨ï¼"> <el-input v-model="dialogForm.remarks" type="textarea" style="width: 200px;" /> </el-form-item> </el-form> <span slot="footer" class="dialog-footer"> <div class="footerButton"> <el-button v-waves @click="dialogVisibleCancel">å æ¶</el-button> <el-button v-if="dialogTitle==='èªå¶å¼å§'" v-waves :loading="$store.state.app.buttonIsDisabled" :disabled="$store.state.app.buttonIsDisabled" type="primary" @click="dialogVisibleConfirm" >å¼ å·¥</el-button> <el-button v-if="dialogTitle==='èªå¶æ¥å·¥'&&dialogForm.nextstepname===''" v-waves :loading="$store.state.app.buttonIsDisabled" :disabled="$store.state.app.buttonIsDisabled" type="primary" @click="dialogVisibleConfirm" >æäº¤/æå°</el-button> <el-button v-if="dialogTitle==='èªå¶æ¥å·¥'&&dialogForm.nextstepname!==''" v-waves :loading="$store.state.app.buttonIsDisabled" :disabled="$store.state.app.buttonIsDisabled" type="primary" @click="dialogVisibleConfirm" >æäº¤</el-button> <el-button v-if="dialogTitle==='å¤ååæ'" v-waves :loading="$store.state.app.buttonIsDisabled" :disabled="$store.state.app.buttonIsDisabled" type="primary" @click="dialogVisibleConfirm" >åæ</el-button> <el-button v-if="dialogTitle==='å¤åæ¶æ'&&dialogForm.nextstepname===''" v-waves :loading="$store.state.app.buttonIsDisabled" :disabled="$store.state.app.buttonIsDisabled" type="primary" @click="dialogVisibleConfirm" >æ¶æ/æå°</el-button> <el-button v-if="dialogTitle==='å¤åæ¶æ'&&dialogForm.nextstepname!==''" v-waves :loading="$store.state.app.buttonIsDisabled" :disabled="$store.state.app.buttonIsDisabled" type="primary" @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> <!-- ä¸è¯å¤çåè¡¨å¯¹è¯æ¡--> <el-dialog v-el-drag-dialog title="ç»´ä¿®å¤ç" :visible.sync="badDialogVisible" width="990px" class="badDialogVisible" top="10vh" :close-on-click-modal="false" @close="handleCloseBad" @closed="handleCloseBad" > <el-form inline :model="badDialogForm" label-width="110px" > <el-form-item label="å·¥åç¼å·ï¼"> <div style="width: 200px">{{ badDialogForm.wo_code }}</div> </el-form-item> <el-form-item label="产åç¼ç ï¼"> <div style="width: 200px">{{ badDialogForm.partcode }}</div> </el-form-item> <el-form-item label="产ååç§°ï¼"> <div style="width: 200px">{{ badDialogForm.partname }}</div> </el-form-item> <el-form-item label="产åè§æ ¼ï¼"> <div style="width: 200px">{{ badDialogForm.partspec }}</div> </el-form-item> <el-form-item label="å½åå·¥åºï¼"> <div style="width: 200px">{{ badDialogForm.stepname }}</div> </el-form-item> <el-form-item label="ä¸éå·¥åºï¼"> <div style="width: 200px">{{ badDialogForm.nextstepname }}</div> </el-form-item> <el-form-item label="任塿°éï¼"> <div style="width: 200px">{{ badDialogForm.plan_qty }}</div> </el-form-item> <el-form-item label="åæ ¼æ°éï¼"> <div style="width: 200px">{{ badDialogForm.good_qty }}</div> </el-form-item> <el-form-item label="ä¸è¯æ°éï¼"> <div style="width: 200px">{{ badDialogForm.ng_qty }}</div> </el-form-item> <!-- 注é--> <!-- <el-form-item label="维修人åï¼">--> <!-- <el-select--> <!-- v-model="badDialogForm.operation"--> <!-- style="width: 200px;"--> <!-- placeholder="è¯·éæ©"--> <!-- >--> <!-- <el-option--> <!-- v-for="item in OperationArr"--> <!-- :key="item.usercode"--> <!-- :label="item.username"--> <!-- :value="item.usercode"--> <!-- />--> <!-- </el-select>--> <!-- </el-form-item>--> </el-form> <div style="margin-bottom:20px"> <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> ä¸è¯ä¿¡æ¯æç»ï¼ </div> <div class="elTableDiv"> <el-table :data="badTableDataDialog" :height="isIpad? (tableHeight-350):(tableHeight-400)" border :row-class-name="tableRowClassName" :style="{width: 100+'%',height:(tableHeight-400)+'px',}" highlight-current-row :header-cell-style="this.$headerCellStyle" :cell-style="this.$cellStyle" > <el-table-column type="index" width="50" label="åºå·" fixed /> <el-table-column prop="step_code" label="å·¥åºç¼ç " min-width="80" /> <el-table-column prop="stepname" label="å·¥åºåç§°" min-width="80" /> <el-table-column prop="plan_qty" label="任塿°é" width="80" /> <el-table-column label="åæ ¼æ°é" width="80" prop="report_qty" /> <el-table-column prop="ng_qty" label="ä¸è¯æ°é" width="80" /> <el-table-column prop="badqty" label="å·²æ¥åºæ°é" width="100" /> <el-table-column prop="defect_name" label="ä¸è¯åå " show-tooltip-when-overflow width="80" /> <el-table-column prop="repair_qty" label="ç»´ä¿®åæ ¼æ°é" width="110" > <template slot-scope="{row}"> <!-- {{ row.repair_qty }}--> <div v-if="row.isVisible===0">{{ row.repair_qty }}</div> <el-input v-if="row.isVisible===1" v-model="row.repair_qty" oninput="value=value.replace(/[^0-9]/g,'')" /> </template> </el-table-column> <el-table-column prop="bad_qty" label="æ¥åºæ°é" width="90" > <!-- oninput="value=value.replace(/[0-9]/g,'')"--> <template slot-scope="{row}"> <div v-if="row.isVisible===0">{{ row.bad_qty }}</div> <el-input v-if="row.isVisible===1" v-model="row.bad_qty" oninput="value=value.replace(/[^0-9]/g,'')" /> </template> </el-table-column> <el-table-column label="æä½" width="100" > <template slot-scope="{row}"> <div class="operationClass"> <el-button v-if="row.isVisible===0" v-waves type="text" @click="badEdit(row)">ç¼è¾</el-button> <el-button v-if="row.isVisible===0" v-waves type="text" @click="badDel(row)">å é¤</el-button> <el-button v-if="row.isVisible===1" v-waves type="text" @click="badSave(row)">确认</el-button> <el-button v-if="row.isVisible===1" v-waves type="text" @click="badCancel(row)">åæ¶</el-button> </div> </template> </el-table-column> </el-table> </div> <span slot="footer" class="dialog-footer"> <div class="footerButton"> <el-button v-waves @click="badDialogVisibleCancel">å æ¶</el-button> <el-button v-waves type="primary" :loading="$store.state.app.buttonIsDisabled" :disabled="$store.state.app.buttonIsDisabled" @click="badDialogVisibleConfirm " >ä¿ å/æ å°</el-button> </div> </span> </el-dialog> </div> </template> <script> import Pagination from '@/components/Pagination' import $ from 'jquery' import QRCode from 'qrcodejs2' import { getCookie } from '@/utils/auth' import { handleDatetime2 } from '@/utils/global' import elDragDialog from '@/directive/el-drag-dialog' import waves from '@/directive/waves' const SER_HZ = /^[\u4e00-\u9fa5]+$/ export default { name: 'SCKBG', components: { Pagination }, directives: { elDragDialog, waves }, data() { const validateName = (rule, value, callback) => { if (!value) { return callback(new Error('请è¾å ¥ç¼ç ')) } else { if (SER_HZ.test(value)) { return callback(new Error('ç¼ç ä¸è½ä¸ºä¸æ')) } else { callback() } } } const validateTypeCode = (rule, value, callback) => { if (!value) { return callback(new Error('è¯·éæ©ä¸çº§')) } else { callback() } } return { mainHeight: 0, tableHeight: 0, isIpad: false, // produceCode: '', // å·¥åºç // WXproduceCode: '', // å¤åå·¥åºç radioSelected: '', // å·¥åºéä¸ WXradioSelected: '', // å·¥åºéä¸ form: { orderstepqrcode: '', // æ«æçäºç»´ç ä¿¡æ¯ prop: 'lm_date', // æåºå段 order: 'desc', // æåºå段 page: 1, // 第å 页 rows: 20 // æ¯é¡µå¤å°æ¡ }, total: 10, tableData: [], WXform: { // å¤å表å orderstepqrcode: '', // æ«æçäºç»´ç ä¿¡æ¯ prop: 'lm_date', // æåºå段 order: 'desc', // æåºå段 page: 1, // 第å 页 rows: 20 // æ¯é¡µå¤å°æ¡ }, WXtotal: 10, // å¤åè¡¨åæ»æ° WXtableData: [], // å¤å表 WXSelectArr: [// å¤åç±»å䏿å表 { code: 'OUT', name: 'åæ' }, { code: 'IN', name: 'æ¶æ' } ], WXSelected: 'OUT', // å¤å䏿å表éä¸å¼ dialogVisible: false, dialogTitle: '', // èªå¶å¼å§ãèªå¶æ¥å·¥ãå¤ååæãå¤åæ¶æ dialogForm: { wo_code: '', // å·¥åç¼å· partcode: '', // 产åç¼ç partname: '', // 产ååç§° partspec: '', // 产åè§æ ¼ stepseq: '', // å·¥åºåºå· stepcode: '', // å·¥åºç¼ç stepname: '', // å½åå·¥åºå nextstepname: '', // ä¸ä¸éå·¥åºå nextstepcode: '', // ä¸ä¸éå·¥åºç¼ç stepdesc: '', // å·¥åºæè¿° planqty: '', // 任塿°é reportqty: '', // å·²æ¥æ°é noreportqty: '', // æªæ¥æ°é startqty: '', // å¼(æ¥)å·¥æ°é wxcode: '', // å¤åä¾åºåç¼ç outuser: '', // åæäººå taskqty: '', // 任塿°é fqty: '', // åææ°é inuser: getCookie('navTabId'), // æ¶æäººå sqty: '', // æ¶ææ°é ngqty: '', // ä¸è¯æ°é badcode: '', // ä¸è¯åå ç¼ç noputqty: '', // ä¸è¯æ°é eqpcode: '', // ç产设å¤ç¼ç usergroupcode: '', // çç»ç¼ç reportuser: '', // æ¥å·¥äººå startqtySum: '', // ä¸è½è¶ è¿çæ°å¼ reckway: 'group', // 计件æ¹å¼ operation: getCookie('navTabId'), // æ¥å·¥äººï¼æ¶æäººï¼ remarks: '', // 夿³¨ inbarcode: ''// æ«éå·¥åºæ¶ æå°çå ¥åºç }, ZZuserArr: [], // èªå¶ç¨æ·ææ ZZtreams: [], // èªå¶ç产çç»æ°ç» ZZeqpArr: [], // èªå¶è®¾å¤åç§° badArr: [], // ä¸è¯åå æ°ç» WXouterprovide: [], // å¤å便¹æ°ç» WXoutuser: [], // åæäººåæ°ç» userTableData: [], // 人åå表 UserTotal: 0, Userform: {}, userIsSave: false, // æ¤äººåæ¯å¦å¯ä¿æ dialogFormRules: { outuser: [ { required: true, message: 'è¯·éæ©åæäººå', trigger: ['blur', 'change'] } ], fqty: [ { required: true, message: '请è¾å ¥åææ°é', trigger: ['blur', 'change'] } ], wxcode: [ { required: true, message: 'è¯·éæ©å¤å便¹', trigger: ['blur', 'change'] } ], inuser: [ { required: true, message: 'è¯·éæ©æ¶æäººå', trigger: ['blur', 'change'] } ], sqty: [ { required: true, message: '请è¾å ¥æ¶ææ°é', trigger: ['blur', 'change'] } ], // noputqty: [ // { required: true, message: '请è¾å ¥ä¸è¯æ°é', trigger: ['blur', 'change'] } // ], // badcode: [ // { required: true, message: 'è¯·éæ©ä¸è¯åå ', trigger: ['blur', 'change'] } // ] eqpcode: [ { required: true, message: 'è¯·éæ©ç产设å¤', trigger: ['blur', 'change'] } ], usergroupcode: [ { required: true, message: 'è¯·éæ©ç产çç»', trigger: ['blur', 'change'] } ], startqty: [ { required: true, message: '请è¾å ¥æ¥å·¥æ°é', trigger: ['blur', 'change'] } ], operation: [ { required: true, message: 'è¯·éæ©æ¥å·¥äººå', trigger: ['blur', 'change'] } ] }, activeName: '', dialogVisible2: false, 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('æå¼ä¹å') console.log() }, openCallback(vue) { vue.printLoading = false console.log('æ§è¡äºæå°') } }, qrForm: { // æå°å 容 qrvalue: '', startqty: '', wo_code: '', partcode: '', partname: '', partspec: '', nextstepname: '', operator: '', // æä½äºº operatorTime: ''// æä½æ¶é´ }, badForm: { orderstepqrcode: '', // æ«æçäºç»´ç prop: 'lm_date', order: 'desc', page: 1, rows: 20 }, badTableData: [], // ä¸è¯å¤çå表tableæ°æ® badTotal: 0, badDialogVisible: false, badDialogForm: { operation: getCookie('navTabId') }, badTableDataDialog: [], // ä¸è¯å¯¹è¯æ¡tableè¡¨æ ¼ OperationArr: [], // äººåæ°ç» sendButtonIsDisabled: false, // ä¸è¾¾æé®æ¯å¦å¯ç¹å» judgeIsScanningArr: [], // 夿æ¯å¦æ«ç æ°ç» countJudgeIsScanningInput: 0 // 夿æ«ç æ¡çä¸ªæ° } }, created() { // this.getMesOrderStepSearch() this.tabClick() }, mounted() { window.addEventListener('resize', this.getHeight) this.getHeight() // // this.$nextTick(() => { // $('input[name=\'produceCode\']')[0].focus() // }) // // // this.getMesOrderSelectUserAll() // è·åææäººå }, methods: { // 计件æ¹å¼å¼æ¹åæ¶ reckwayChange() { this.dialogForm.usergroupcode = '' this.dialogForm.operation = '' this.userTableData = [] this.UserTotal = 0 // console.log(this.$refs.dialogForm, 'log') // this.$nextTick(() => { // this.$refs.dialogForm.resetFields() // }) }, tableRowClassName({ row, rowIndex }) { return 'custom-row' }, async getMesOrderStepSearch() { const res = await MesOrderStepSearch(this.form) if (res.code === '200') { this.tableData = res.data this.total = res.count } }, async getMesOrderWxStepSearch() { const res = await MesOrderWxStepSearch(this.WXform) if (res.code === '200') { this.WXtableData = res.data } }, // æåºæ¹åæ¶ 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.getMesOrderStepSearch() }, // WXæåºæ¹åæ¶ WXsortChange({ column, prop, order }) { if (order === 'descending') { order = 'desc' } else if (order === 'ascending') { order = 'asc' } else { order = 'desc' } this.WXform.order = order this.WXform.prop = prop this.getMesOrderWxStepSearch() }, badSortChange({ column, prop, order }) { if (order === 'descending') { order = 'desc' } else if (order === 'ascending') { order = 'asc' } else { order = 'desc' } this.badForm.order = order this.badForm.prop = prop this.getBadList() }, // èªå¶é¡µç¾åç¹ç¹å» getCurrentRow(val) { }, // å¤å页ç¾åç¹ç¹å» getWXCurrentRow(val) { console.log(val) this.WXradioSelected = val }, // tabæé®åæ¢é¼ æ èªå¨èç¦ tabClick(val, d) { if (this.$refs.elTabs.currentName === '0') { this.$nextTick(() => { this.getMesOrderStepSearch() $('input[name=\'produceCode\']')[0].focus() this.WXform.orderstepqrcode = '' }) } if (this.$refs.elTabs.currentName === '1') { this.$nextTick(() => { this.getMesOrderWxStepSearch() $('input[name=\'WXproduceCode\']')[0].focus() this.form.orderstepqrcode = '' }) } if (this.$refs.elTabs.currentName === '2') { this.$nextTick(() => { this.getBadList() $('input[name=\'badProduceCode\']')[0].focus() this.badForm.orderstepqrcode = '' }) } }, // 鲿 //æ«ç ç¨çæ¯é²æ fnThrottle(method, delay, duration, belong) { var that = this var timer = this.timer var begin = new Date().getTime() return function() { var current = new Date().getTime() clearTimeout(timer) if (current - begin >= duration) { // method() // that.VALUE() begin = current } else { that.timer = setTimeout(function() { // method() if (belong === 'produceCode') { that.enterNative(that.form.orderstepqrcode, belong) } if (belong === 'WXproduceCode') { that.enterNative(that.WXform.orderstepqrcode, belong) } if (belong === 'badProduceCode') { that.enterNative(that.badForm.orderstepqrcode, belong) } }, delay) } } }, // 夿æ¯å¦æ¯æ«ç æªæ«ç judgeIsScanning2(e, belong) { if (belong === 'produceCode' && this.form.orderstepqrcode.toString().length === 0) { this.judgeIsScanningArr = [] this.countJudgeIsScanningInput = 0 } if (belong === 'WXproduceCode' && this.WXform.orderstepqrcode.toString().length === 0) { this.judgeIsScanningArr = [] this.countJudgeIsScanningInput = 0 } const timenow = e.timeStamp // console.log(timenow, 1) // let flag = true let flag = false this.judgeIsScanningArr.push(timenow) let i for (i in this.judgeIsScanningArr) { console.log(Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 1]) - Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 2])) // flag = Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 1]) - Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 2]) < 0.1 if (Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 1]) - Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 2]) < 0.1) { this.countJudgeIsScanningInput++ } if (this.countJudgeIsScanningInput >= 3) { flag = true } if (i > 0 && this.judgeIsScanningArr.length === parseInt(i) + 1) { if (flag) { console.log(flag, 1) this.fnThrottle(this.enterNative, 500, 2000, belong)() return } } } // // for (i in this.judgeIsScanningArr) { // // console.log(i) // // console.log( this.judgeIsScanningArr) // console.log(Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 1]) - Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 2])) // if (Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 1]) - Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 2]) < 10) { // this.countJudgeIsScanningInput++ // } // if (this.countJudgeIsScanningInput > this.judgeIsScanningArr.length / 2) { // flag = true // } // // flag = Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 1]) - Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 2]) < 0.1 // // if (i > 0 && this.judgeIsScanningArr.length === parseInt(i) + 1) { // if (flag) { // console.log(flag, 2) // this.fnThrottle(this.enterNative, 500, 2000, belong)() // return // } // // } // // } }, // 夿æ¯å¦æ¯æ«ç æªæ«ç judgeIsScanning(e, belong) { const timenow = e.timeStamp let flag = true this.judgeIsScanningArr.push(timenow) let i for (i in this.judgeIsScanningArr) { flag = Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 1]) - Math.ceil(this.judgeIsScanningArr[this.judgeIsScanningArr.length - 2]) < 0.1 if (i > 0 && this.judgeIsScanningArr.length === parseInt(i) + 1) { if (flag) { this.fnThrottle(this.enterNative, 500, 2000, belong)() return } } } }, // æ«ç é®çå车äºä»¶ async enterNative(val, belong) { console.log(val, belong, 89898989) // å¼å·¥ï¼code="200" count=0 // æ¥å·¥ï¼code="200" count=1 // åæï¼code="200" count=2 // æ¶æï¼code="200" count=3 // èµ°åè¡¨å½¢å¼ code="200" count=4 if (belong === 'produceCode') { const orderstepqrcode = this.form.orderstepqrcode const data = { OperType: 'ZZ', orderstepqrcode: orderstepqrcode, SelectType: '' } const res = await MesOrderStepStart(data) if (res.code === '200' && res.count === 0) { await this.ZZstart(res.data) } if (res.code === '200' && res.count === 1) { await this.ZZreport(res.data) } } if (belong === 'WXproduceCode') { const orderstepqrcode = this.WXform.orderstepqrcode const data = { OperType: 'WX', orderstepqrcode: orderstepqrcode, SelectType: this.WXSelected// OUTãIN } const res = await MesOrderStepStart(data) if (res.code === '200' && res.count === 2) { await this.WXsend(res.data) } if (res.code === '200' && res.count === 3) { await this.WXback(res.data) } } if (belong === 'badProduceCode') { // this.badForm.orderstepqrcode= await this.getBadList() await this.repairHandle(this.badForm.orderstepqrcode) this.badDialogVisible = true } }, // æ¥è¯¢ search() { this.getMesOrderStepSearch() }, // èªå¶å¼å§ async ZZstart(obj) { // if (!this.ZZisExecutable) { // return this.$message.info('è¯·å æ«ç å·¥åºäºç»´ç ï¼') // } this.dialogTitle = 'èªå¶å¼å§' this.dialogVisible = true this.$nextTick(() => { this.dialogForm.wo_code = obj.wo_code this.dialogForm.partcode = obj.partnumber this.dialogForm.partname = obj.partname this.dialogForm.partspec = obj.partspec this.dialogForm.stepseq = obj.seq this.dialogForm.stepcode = obj.stepcode this.dialogForm.stepname = obj.stepname this.dialogForm.stepdesc = obj.stepdesc this.dialogForm.planqty = obj.planqty this.dialogForm.reportqty = obj.reportqty this.dialogForm.noreportqty = obj.noreportqty // this.dialogForm.startqty = obj.startqty this.dialogForm.startqty = obj.noreportqty }) await this.getMesOrderStepStartSelectEqp() }, // èªå¶æ¥å·¥ async ZZreport(obj) { // if (!this.ZZisExecutable) { // return this.$message.info('è¯·å æ«ç å·¥åºäºç»´ç ï¼') // } this.dialogTitle = 'èªå¶æ¥å·¥' this.dialogVisible = true this.$nextTick(() => { this.dialogForm.wo_code = obj.wo_code this.dialogForm.partcode = obj.partnumber this.dialogForm.partname = obj.partname this.dialogForm.partspec = obj.partspec this.dialogForm.stepseq = obj.seq this.dialogForm.stepcode = obj.stepcode this.dialogForm.stepname = obj.stepname this.dialogForm.stepdesc = obj.stepdesc this.dialogForm.planqty = obj.planqty this.dialogForm.reportqty = obj.reportqty this.dialogForm.noputqty = obj.noputqty this.dialogForm.noreportqty = obj.noreportqty // this.dialogForm.startqty = obj.startqty this.dialogForm.startqty = obj.noreportqty this.dialogForm.nextstepname = obj.nextstepname this.dialogForm.nextstepcode = obj.nextstepcode this.dialogForm.startqtySum = obj.noreportqty this.$refs.userTableDataRef.doLayout() }) await this.getMesOrderStepStartSelectEqp() await this.getMesOrderStepReportSelectUserGroup() await this.getMesOrderStepSelectCause('ZZ') await this.getMesOrderSelectUserZZ() }, // å¤ååæ async WXsend(obj) { // if (this.WXradioSelected.length < 1 && obj.length < 1) { // return this.$message.info('请å 鿩工åºï¼') // } // console.log(this.WXform.orderstepqrcode === '', 6) // if (this.WXform.orderstepqrcode === '') { // return this.$message.info('请å è¾å ¥å·¥åºï¼') // } this.dialogTitle = 'å¤ååæ' this.dialogVisible = true this.$nextTick(() => { this.dialogForm.wo_code = obj.wo_code this.dialogForm.partcode = obj.partnumber this.dialogForm.partname = obj.partname this.dialogForm.partspec = obj.partspec this.dialogForm.stepname = obj.stepname this.dialogForm.stepdesc = obj.stepdesc this.dialogForm.planqty = obj.planqty this.dialogForm.reportqty = obj.reportqty this.dialogForm.noreportqty = obj.noreportqty this.dialogForm.fqty = obj.startqty this.dialogForm.stepcode = obj.stepcode this.dialogForm.stepseq = obj.seq }) await this.getMesOrderStepSelectWX() await this.getMesOrderSelectUser() }, // å¤åæ¶æ async WXback(obj) { // if (this.WXform.orderstepqrcode === '') { // return this.$message.info('请å è¾å ¥å·¥åºï¼') // } this.dialogTitle = 'å¤åæ¶æ' this.dialogVisible = true this.$nextTick(() => { this.dialogForm.wo_code = obj.wo_code this.dialogForm.partcode = obj.partnumber this.dialogForm.partname = obj.partname this.dialogForm.partspec = obj.partspec this.dialogForm.stepname = obj.stepname this.dialogForm.stepdesc = obj.stepdesc this.dialogForm.planqty = obj.planqty this.dialogForm.reportqty = obj.reportqty this.dialogForm.noreportqty = obj.noreportqty this.dialogForm.stepcode = obj.stepcode this.dialogForm.nextstepname = obj.nextstepname this.dialogForm.nextstepcode = obj.nextstepcode this.dialogForm.noputqty = obj.noputqty this.dialogForm.stepseq = obj.seq this.dialogForm.sqty = obj.startqty this.dialogForm.startqtySum = obj.startqty }) await this.getMesOrderStepSelectWX() await this.getMesOrderSelectUser() await this.getMesOrderStepSelectCause('WX') }, // ç产çç»ä¸ææ¹å usergroupChange(val) { this.dialogForm.usergroupcode = val this.getMesOrderSelectUserZZ2() }, // è·åèªå¶æ¥å·¥ç产çç»ä¸æå表 async getMesOrderStepReportSelectUserGroup() { const { data: res } = await MesOrderStepReportSelectUserGroup() this.ZZtreams = res }, // è·åèªå¶æ¥å·¥è¡¨æ ¼userææ async getMesOrderSelectUserZZ() { const { data: res } = await MesOrderSelectUser({ usercode: this.dialogForm.usergroupcode }) this.ZZuserArr = res }, async getMesOrderSelectUserZZ2() { const { data: res } = await MesOrderSelectUser({ usercode: '' }) this.ZZuserArr = res await this.getUserTableData() }, // è·åèªå¶ç产设å¤ä¸æ async getMesOrderStepStartSelectEqp() { const { data: res } = await MesOrderStepStartSelectEqp({ orderstepqrcode: this.form.orderstepqrcode }) this.ZZeqpArr = res }, // è·åWX便¹æ¥å£ async getMesOrderStepSelectWX() { const { data: res } = await MesOrderStepSelectWX({ orderstepqrcode: this.WXform.orderstepqrcode }) this.WXouterprovide = res }, // è·åæ¶åæäººå䏿æ¥å£ async getMesOrderSelectUser() { const { data: res } = await MesOrderSelectUser({ usercode: this.dialogForm.outuser }) this.WXoutuser = res }, // è·åæ¶æä¸è¯åå 䏿 async getMesOrderStepSelectCause(val) { let orderstepqrcode = '' if (val === 'WX') { orderstepqrcode = this.WXform.orderstepqrcode } if (val === 'ZZ') { orderstepqrcode = this.form.orderstepqrcode } const { data: res } = await MesOrderStepSelectCause({ orderstepqrcode: orderstepqrcode }) this.badArr = res }, // æ¥å·¥æ¥è¯¢ç¨æ·è¡¨ async getUserTableData() { const { data: res } = await MesOrderGroupSelectUser({ usergroupcode: this.dialogForm.usergroupcode }) this.userTableData = res this.UserTotal = res.length this.userTableData.forEach(item => { let number = Math.random() * Math.random()// ä½ä¸ºå 餿¶çæ è¯ç¬¦ number = number === 0 ? (10 + Math.random()) : number item.isVisible = 0 item.number = number // item.ratio = parseFloat((100 / this.userTableData.length).toFixed(2)) }) this.ZZuserArr = [...this.ZZuserArr].filter(x => [...this.userTableData].every(y => y.usercode !== x.usercode)) this.calculatedValue() this.$nextTick(() => { this.$refs.tableDataRef.doLayout() this.$refs.userTableDataRef.doLayout() }) }, calculatedValue() { const total = 100 let value = 0 this.userTableData.forEach(item => { item.ratio = parseFloat((100 / this.userTableData.length).toFixed(2)) value += item.ratio }) console.log(value, 1) this.UserTotal = this.userTableData.length if (value !== total) { // let temp = this.userTableData // temp[temp.length-1].ratio=temp[temp.length-1].ratio+(total-value) this.userTableData[this.userTableData.length - 1].ratio = parseFloat((this.userTableData[this.userTableData.length - 1].ratio + (total - value)).toFixed(2)) } }, // ä¿®æ¹åé æ¯å editRatio(row) { // console.log(row, 'row') this.userTableData.forEach((item, index) => { if (item.number === row.number) { const number = Math.random() * Math.random()// ä½ä¸ºå 餿¶çæ è¯ç¬¦ this.userTableData.splice(index, 1, { usercode: row.usercode, username: row.username, ratio: row.ratio, isVisible: 2, number: number === 0 ? (10 + Math.random()) : number }) } }) }, // ç¨æ·æ·»å userAdd() { if (this.userTableData.find(i => i.isVisible === 1)) { return this.$message.info('请å ä¿åå½åè¡ä¿¡æ¯ï¼') } let number = Math.random() * Math.random()// ä½ä¸ºå 餿¶çæ è¯ç¬¦ number = number === 0 ? (10 + Math.random()) : number console.log(this.userTableData, 6) this.userTableData.unshift({ usercode: '', username: '', isVisible: 1, number: number, ratio: 0 }) this.calculatedValue() }, // ç¨æ·å表å é¤ userDel(row) { this.ZZuserArr.splice(0, 0, { usercode: row.usercode, username: row.username }) this.userTableData.forEach((item, index) => { if (item.number === row.number) { this.userTableData.splice(index, 1) } }) this.calculatedValue() }, // ç¨æ·å表ä¿å userSave(row) { console.log(row, 123) if (row.usercode === '') { return this.$message.info('人ååç§°ä¸è½ä¸ºç©ºï¼') } if (row.ratio === '') { return this.$message.info('åé æ¯åä¸è½ä¸ºç©ºï¼') } this.ZZuserArr.forEach((item, index) => { if (item.usercode === row.usercode) { this.ZZuserArr.splice(index, 1) } }) this.userTableData.forEach(item => { if (item.number === row.number) { item.isVisible = 0 } }) }, // ç¨æ·åè¡¨åæ¶ userCancel(row) { this.userTableData.forEach((item, index) => { if (item.number === row.number) { this.userTableData.splice(index, 1) } }) this.UserTotal = this.userTableData.length }, // ç¨æ·å表人ååç§°å¼éä¸ usernameChange(val, row) { this.userTableData.forEach(item => { if (item.usercode === val) { this.userIsSave = true return this.$message.info('æ¤äººåå·²å¨åä¸ï¼') } if (item.number === row.number) { this.userIsSave = false item.usercode = val item.username = this.ZZuserArr.find(item => item.usercode === val).username } }) }, // å¯¹è¯æ¡å ³éäºä»¶ handleClose() { this.judgeIsScanningArr = [] this.form.orderstepqrcode = '' this.WXform.orderstepqrcode = '' this.badForm.orderstepqrcode = '' this.dialogForm.wo_code = '', // å·¥åç¼å· this.dialogForm.partcode = '', // 产åç¼ç this.dialogForm.partname = '', // 产ååç§° this.dialogForm.partspec = '', // 产åè§æ ¼ this.dialogForm.stepseq = '', // å·¥åºåºå· this.dialogForm.stepcode = '', // å·¥åºç¼ç this.dialogForm.stepname = '', // å½åå·¥åºå this.dialogForm.nextstepname = '', // ä¸ä¸éå·¥åºå this.dialogForm.stepdesc = '', // å·¥åºæè¿° this.dialogForm.planqty = '', // 任塿°é this.dialogForm.reportqty = '', // å·²æ¥æ°é this.dialogForm.noreportqty = '', // æªæ¥æ°é this.dialogForm.startqty = '', // å¼(æ¥)å·¥æ°é this.dialogForm.wxcode = '', // å¤åä¾åºåç¼ç this.dialogForm.outuser = '', // åæäººå this.dialogForm.taskqty = '', // 任塿°é this.dialogForm.fqty = '', // åææ°é this.dialogForm.inuser = getCookie('navTabId'), // æ¶æäººå é»è®¤ç»å½äººå this.dialogForm.sqty = '', // æ¶ææ°é this.dialogForm.ngqty = '', // ä¸è¯æ°é this.dialogForm.badcode = '', // ä¸è¯åå ç¼ç this.dialogForm.noputqty = '', // ä¸è¯æ°é this.dialogForm.eqpcode = '', // ç产设å¤ç¼ç this.dialogForm.usergroupcode = '', // çç»ç¼ç this.dialogForm.reportuser = '', // æ¥å·¥äººå this.dialogForm.startqtySum = '' // ä¸è½è¶ è¿çæ°å¼ this.dialogForm.reckway = '' // 计件æ¹å¼ this.dialogForm.nextstepcode = '' // ä¸éå·¥åºç¼ç // this.dialogForm.inbarcode = '' // å ¥åºç this.dialogForm.reckway = 'group' this.dialogForm.remarks = '' // 夿³¨ this.dialogForm.operation = getCookie('navTabId') // æ¥å·¥äººï¼æ¶æäººï¼ this.userTableData = [] // 人åå表 this.$refs.dialogForm.clearValidate() }, // å¯¹è¯æ¡åæ¶ dialogVisibleCancel() { this.dialogVisible = false this.tabClick() }, // å¯¹è¯æ¡ç¡®è®¤ dialogVisibleConfirm() { this.$refs.dialogForm.validate(async valid => { if (valid) { if (this.dialogTitle === 'å¤ååæ') { if (parseFloat(this.dialogForm.fqty) > parseFloat(this.dialogForm.noreportqty)) { return this.$message.info('åææ°éä¸è½å¤§äºæªåæ°é!') } const data = { mesordercode: this.dialogForm.wo_code, // å·¥åç¼å· partcode: this.dialogForm.partcode, // 产åç¼ç stepseq: this.dialogForm.stepseq, // å·¥åºåºå· ææ¶ç¼º stepcode: this.dialogForm.stepcode, // å·¥åºç¼ç wxcode: this.dialogForm.wxcode, // å¤åä¾åºåç¼ç outuser: this.dialogForm.outuser, // åæäººå taskqty: this.dialogForm.planqty, // 任塿°é fqty: this.dialogForm.fqty // åææ°é } this.$store.state.app.buttonIsDisabled = true SavaMesOrderStepOut(data).then(res => { if (res.code === '200') { this.dialogVisible = false this.$message.success('åææåï¼') this.tabClick() this.$store.state.app.buttonIsDisabled = false } else { this.$message.error('åæå¤±è´¥!') } }) } if (this.dialogTitle === 'å¤åæ¶æ') { if (parseFloat(this.dialogForm.startqtySum) < parseFloat(this.dialogForm.sqty) + parseFloat(this.dialogForm.noputqty)) { return this.$message.info('æ¶ææ°éå ä¸è¯æ°éä¸è½å¤§äºäºæªæ¶æ°é!') } if (parseFloat(this.dialogForm.noputqty) > 0) { if (this.dialogForm.badcode.length < 1) { return this.$message.info('è¯·éæ©ä¸è¯åå ï¼') } } this.dialogForm.inbarcode = '' // å½ä¸ºæ«éçæ¶å if (this.dialogForm.nextstepcode === '') { const D = { rightcode: '1078', partcode: this.dialogForm.partcode, qty: this.dialogForm.sqty, onelabqty: this.dialogForm.sqty } const r = await LabelBarCode(D) this.dialogForm.inbarcode = r.data[0].labcode this.qrForm.partspec = this.dialogForm.partspec } const data = { mesordercode: this.dialogForm.wo_code, // å·¥åç¼å· partcode: this.dialogForm.partcode, // 产åç¼ç stepseq: this.dialogForm.stepseq, // å·¥åºåºå· stepcode: this.dialogForm.stepcode, // å·¥åºç¼ç wxcode: this.dialogForm.wxcode, // å¤åä¾åºåç¼ç inuser: this.dialogForm.inuser, // åæäººå taskqty: this.dialogForm.planqty, // 任塿°é sqty: this.dialogForm.sqty, // æ¶ææ°é remarks: this.dialogForm.remarks, // 夿³¨ inbarcode: this.dialogForm.inbarcode, // çäº§å ¥åºæ¡ç ngqty: this.dialogForm.noputqty === '' ? 0 : this.dialogForm.noputqty, // ä¸è¯æ°é badcode: this.dialogForm.badcode.length < 1 ? '' : this.dialogForm.badcode.join(';')// ä¸è¯åå } this.$store.state.app.buttonIsDisabled = true SavaMesOrderStepIn(data).then(res => { if (res.code === '200') { this.dialogVisible = false this.$message.success('æ¶ææåï¼') // if (this.dialogForm.nextstepcode === '') { // this.WXprint2(this.OperationArr.find(item => item.usercode === this.dialogForm.inuser).username) this.WXprint2(this.OperationArr.find(item => item.usercode === getCookie('navTabId')).username) this.dialogVisible2 = true // } this.tabClick() this.$store.state.app.buttonIsDisabled = false } else { this.$message.error('æ¶æå¤±è´¥!') } }) } if (this.dialogTitle === 'èªå¶å¼å§') { const data = { mesordercode: this.dialogForm.wo_code, // å·¥åç¼å· partcode: this.dialogForm.partcode, // 产åç¼ç stepseq: this.dialogForm.stepseq, // å·¥åºåºå· ææ¶ç¼º stepcode: this.dialogForm.stepcode, // å·¥åºç¼ç eqpcode: this.dialogForm.eqpcode, // çäº§è®¾å¤ taskqty: this.dialogForm.planqty, // 任塿°é startqty: this.dialogForm.startqty// å¼å§æ°é } this.$store.state.app.buttonIsDisabled = true SavaMesOrderStepStart(data).then(res => { if (res.code === '200') { this.dialogVisible = false this.$message.success('å¼å·¥æåï¼') this.tabClick() this.$store.state.app.buttonIsDisabled = false } else { this.$message.error('å¼å·¥å¤±è´¥!') } }) } if (this.dialogTitle === 'èªå¶æ¥å·¥') { if (parseFloat(this.dialogForm.startqtySum) < parseFloat(this.dialogForm.startqty) + parseFloat(this.dialogForm.noputqty)) { return this.$message.info('æ¥å·¥æ°éå ä¸è¯æ°éä¸è½å¤§äºäºæªæ¥æ°é!') } if (this.userTableData.length < 1 && this.dialogForm.reckway === 'group') { return this.$message.info('人åå表ä¸è½ä¸ºç©º!') } // this.userTableData = [...new Set(this.userTableData)]// æ°ç»å»é this.userTableData = this.userTableData.filter(item => item.usercode !== '') // æ°ç»ä¸å¯¹è±¡ç¸åçå»é this.userTableData = this.userTableData.filter((currentValue, currentIndex, selfArr) => { return selfArr.findIndex(item => item.usercode === currentValue.usercode) === currentIndex }) if (this.dialogForm.reckway === 'group') { let sum = 0 this.userTableData.forEach(item => { sum += parseFloat(item.ratio) }) if (Math.round(sum * 100) / 100 !== 100) { return this.$message.info('åé æ¯ä¾æ»åå¿ é¡»ä¸º100ï¼') } } if (parseFloat(this.dialogForm.noputqty) > 0) { if (this.dialogForm.badcode.length < 1) { return this.$message.info('è¯·éæ©ä¸è¯åå ï¼') } } // console.log(this.userTableData, 1) // const reportuser = this.userTableData.map(item => item.usercode).join(';')// ä¸»è¦æ¹çæ¯è¿éçæ ¼å¼ // console.log(this.dialogForm.operation, 'dialogForm.operation') this.dialogForm.inbarcode = '' // å½ä¸ºæ«éçæ¶å if (this.dialogForm.nextstepcode === '') { const D = { rightcode: '1078', partcode: this.dialogForm.partcode, qty: this.dialogForm.startqty, onelabqty: this.dialogForm.startqty } const r = await LabelBarCode(D) this.dialogForm.inbarcode = r.data[0].labcode this.qrForm.partspec = this.dialogForm.partspec } const data = { mesordercode: this.dialogForm.wo_code, // å·¥åç¼å· partcode: this.dialogForm.partcode, // 产åç¼ç stepseq: this.dialogForm.stepseq, // å·¥åºåºå· stepcode: this.dialogForm.stepcode, // å·¥åºç¼ç eqpcode: this.dialogForm.eqpcode, // 设å¤ç¼ç usergroupcode: this.dialogForm.usergroupcode, // çç»ç¼ç // reportuser: reportuser, // æ¥å·¥äººå reportuser: this.dialogForm.reckway === 'group' ? this.userTableData : [{ usercode: this.dialogForm.operation, ratio: 100 }], taskqty: this.dialogForm.planqty, // 任塿°é // startqty: this.dialogForm.startqty, // å¼å·¥æ°é startqty: this.dialogForm.reportqty, // å¼å·¥æ°é // reportqty: this.dialogForm.reportqty, // åæ ¼æ°é reportqty: this.dialogForm.startqty, // åæ ¼æ°é remarks: this.dialogForm.remarks, // 夿³¨ reckway: this.dialogForm.reckway, // 计件æ¹å¼ inbarcode: this.dialogForm.inbarcode, // çäº§å ¥åºæ¡ç ngqty: this.dialogForm.noputqty === '' ? 0 : this.dialogForm.noputqty, // ä¸è¯æ°é badcode: this.dialogForm.badcode.length < 1 ? '' : this.dialogForm.badcode.join(';')// ä¸è¯åå } // console.log(JSON.stringify(data), 'data') console.log(data, 'data') this.$store.state.app.buttonIsDisabled = true SavaMesOrderStepReport(data).then(res => { if (res.code === '200') { this.dialogVisible = false this.$message.success('æ¥å·¥æåï¼') // this.dialogForm.nextstepcode==='' //å½ä¸ºç©ºçæ¶å ä»£è¡¨æ¯æ«éå·¥åº // if (this.dialogForm.nextstepcode !== '') { this.ZZprint2(this.OperationArr.find(item => item.usercode === getCookie('navTabId')).username) this.dialogVisible2 = true // } this.tabClick() this.$store.state.app.buttonIsDisabled = false } else { this.$message.error('æ¥å·¥å¤±è´¥!') } }) } } }) }, // çæäºç»´ç 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 }) }, 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.partcode 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) }) }, WXprint2(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.sqty this.qrForm.wo_code = this.dialogForm.wo_code this.qrForm.partcode = this.dialogForm.partcode 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) }) }, 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 = '' }, // è·å页é¢é«åº¦ getHeight() { this.$nextTick(() => { this.mainHeight = window.innerHeight - 85 this.tableHeight = this.mainHeight - 220 this.isIpad = window.innerHeight < 769 if (window.innerHeight < 769) { this.tableHeight = this.tableHeight - 50 } this.$refs.tableDataRef.doLayout() }) }, // è·åä¸è¯å¤çå表 async getBadList() { const res = await MesOrderNgStepSearch(this.badForm) this.badTableData = res.data this.badTotal = res.count }, badDialogVisibleCancel() { this.badDialogVisible = false }, badDialogVisibleConfirm() { const data = { Data: this.badTableDataDialog } this.$store.state.app.buttonIsDisabled = true EditOrderNgStepSeave(data, getCookie('navTabId')).then(res => { if (res.code === '200' || res.code === '301') { this.getBadList() this.badDialogVisible = false this.badPrint(this.OperationArr.find(item => item.usercode === getCookie('navTabId')).username) this.dialogVisible2 = true this.$message.success('ä¿åæåï¼') this.$store.state.app.buttonIsDisabled = false } }) }, badPrint(username) { this.qrForm.qrvalue = this.badDialogForm.wo_code + ';' + this.badDialogForm.nextstepcode this.qrForm.startqty = this.badDialogForm.plan_qty this.qrForm.wo_code = this.badDialogForm.wo_code this.qrForm.partcode = this.badDialogForm.partcode this.qrForm.partname = this.badDialogForm.partname this.qrForm.nextstepname = this.badDialogForm.nextstepname this.qrForm.operator = username this.qrForm.operatorTime = handleDatetime2(new Date()) this.$nextTick(() => { this.bindQRCode(this.qrForm.qrvalue) }) }, handleCloseBad() { this.badDialogForm = {} this.badDialogForm.operation = getCookie('navTabId') this.badTableDataDialog = [] this.judgeIsScanningArr = [] }, async getMesOrderSelectUserAll() { const { data: res } = await MesOrderSelectUser({ usercode: '' }) this.OperationArr = res }, // ç¹å»ç»´ä¿®å¤çæé® æ æ«ææ¡ç çæ«æå车äºä»¶ async repairHandle(row) { let data if (row.wo_code) { data = { orderstepqrcode: row.wo_code + ';' + row.stepcode } } else { data = { orderstepqrcode: row } } const { data: res } = await MesOrderNgSubStepSearch(data) this.$nextTick(() => { this.badDialogForm.wo_code = res.data1.wo_code this.badDialogForm.partcode = res.data1.partnumber this.badDialogForm.partname = res.data1.partname this.badDialogForm.partspec = res.data1.partspec this.badDialogForm.stepname = res.data1.stepname this.badDialogForm.nextstepcode = res.data1.nextstepcode this.badDialogForm.nextstepname = res.data1.nextstepname this.badDialogForm.plan_qty = res.data1.planqty this.badDialogForm.good_qty = res.data1.noreportqty // åæ ¼æ°é this.badDialogForm.ng_qty = res.data1.noputqty // ä¸è¯æ°é this.badTableDataDialog = res.data2 this.badTableDataDialog.forEach(item => { item.repair_qty = 0 item.bad_qty = 0 item.isVisible = 0 // item.defect_code = [...new Set(item.defect_code.split(','))].join(',') // item.defect_name = [...new Set(item.defect_name.split(','))].join(',') }) console.log(this.badTableDataDialog, 321) this.badDialogVisible = true }) }, badEdit(row) { console.log(row) this.badTableDataDialog.forEach((item, index) => { if (item.id === row.id && item.m_id === row.m_id) { this.badTableDataDialog.splice(index, 1, { bad_qty: row.bad_qty, repair_qty: row.repair_qty, isVisible: 1, defect_code: row.defect_code, defect_name: row.defect_name, badqty: row.badqty, id: row.id, m_id: row.m_id, materiel_code: row.materiel_code, ng_qty: row.ng_qty, plan_qty: row.plan_qty, report_qty: row.report_qty, seq: row.seq, step_code: row.step_code, stepname: row.stepname, style: row.style, wo_code: row.wo_code }) } }) }, badSave(row) { if (parseFloat(row.bad_qty) + parseFloat(row.repair_qty) > parseFloat(row.ng_qty)) { this.badCancel(row) return this.$message.info('ç»´ä¿®æ°é䏿¥åºæ°éä¹åä¸è½å¤§äºä¸è¯æ°éï¼') } this.badTableDataDialog.forEach((item, index) => { if (item.id === row.id && item.m_id === row.m_id) { this.badTableDataDialog.splice(index, 1, { bad_qty: parseFloat(row.bad_qty), repair_qty: parseFloat(row.repair_qty), isVisible: 0, defect_code: row.defect_code, defect_name: row.defect_name, id: row.id, m_id: row.m_id, badqty: row.badqty, materiel_code: row.materiel_code, ng_qty: row.ng_qty, plan_qty: row.plan_qty, report_qty: row.report_qty, seq: row.seq, step_code: row.step_code, stepname: row.stepname, style: row.style, wo_code: row.wo_code }) } }) }, badCancel(row) { this.badTableDataDialog.forEach((item, index) => { if (item.id === row.id && item.m_id === row.m_id) { this.badTableDataDialog.splice(index, 1, { // bad_qty: row.bad_qty, // repair_qty: row.repair_qty, bad_qty: 0, repair_qty: 0, isVisible: 0, defect_code: row.defect_code, defect_name: row.defect_name, id: row.id, m_id: row.m_id, badqty: row.badqty, materiel_code: row.materiel_code, ng_qty: row.ng_qty, plan_qty: row.plan_qty, report_qty: row.report_qty, seq: row.seq, step_code: row.step_code, stepname: row.stepname, style: row.style, wo_code: row.wo_code }) } }) }, badDel(row) { this.badTableDataDialog.forEach((item, index) => { if (item.id === row.id && item.m_id === row.m_id) { this.badTableDataDialog.splice(index, 1) } }) } } } </script> <style lang="scss" scoped> $main_color: #42b983; .el-button--text { font-size: 14px; cursor: pointer; } .operationClass { height: 23px; display: flex; justify-content: space-between; align-items: center; } ::v-deep .el-checkbox.is-bordered + .el-checkbox.is-bordered { margin: 10px 30px 0px 0; } ::v-deep .el-radio__input.is-checked + .el-radio__label { color: $main_color; } ::v-deep .el-radio.is-bordered + .el-radio.is-bordered { margin: 10px 30px 0px 0; } //.dialogVisible{ ::v-deep .el-select .el-input .el-select__caret { display: flex; align-items: center; justify-content: center; } //} .elTableDiv { ::v-deep .el-radio__label { display: none; } } </style> <style media="print"> /*@media print {*/ @page { size: auto; margin: 3mm; font-size: 10px; } </style> <!--å ¬å ±é¡µé¢æ ·å¼--> <style lang="scss" scoped> $main_color: #42b983; ::v-deep .el-button--text { font-size: 14px; cursor: pointer; } .el-icon-share, .el-icon-delete, .el-icon-edit-outline { color: $main_color; cursor: pointer; } .el-icon-edit-outline { margin-right: 15px; } ::v-deep .el-button--primary, .el-button--default, .el-button--info { height: 34px; display: flex; align-items: center; padding: 0 15px; } ::v-deep .el-button--primary { //background-color: $main_color !important; } ::v-deep .el-button--default { background-color: #f8f8fa; border: none; } ::v-deep .el-input__inner { height: 34px; line-height: 34px; //color: #a7a7a7; } ::v-deep .el-dialog__body { padding: 20px 100px !important; } ::v-deep .dialogVisibleRoles .el-dialog__body { padding: 20px 20px !important; } ::v-deep .importPickerClass .el-dialog__body { padding: 20px 20px !important; } ::v-deep .badDialogVisible .el-dialog__body { padding: 20px 20px !important; } ::v-deep .el-dialog__footer { display: flex; justify-content: flex-end; } ::v-deep .el-table .caret-wrapper { transform: scale(0.8); } ::v-deep .cell { display: flex; align-items: center; justify-content: space-between; } ::v-deep .el-table::before { height: 0; } ::v-deep .el-table__body-wrapper { background-color: #f8f8fa; } ::v-deep .el-table__body .el-table__row.hover-row td { background-color: #eaecef; } ::v-deep .el-form--inline .el-form-item__label { color: #a7a7a7; } .body ::v-deep .el-divider { border: 1px solid #eee; width: 99%; margin: 10px auto; } .body ::v-deep .el-form-item { margin-bottom: 0; } .tableFixed { ::v-deep .el-table__fixed-right { height: 100% !important; } ::v-deep .el-table__fixed { height: 100% !important; } } </style> <style> .el-table .custom-row { background: #f8f8fa; } </style> src/views/workOrder/workOrderList.vue
@@ -404,6 +404,11 @@ width="150" /> <el-table-column label="å·¥åºåä»·" show-tooltip-when-overflow prop="stepprice" /> <el-table-column label="å·²ç产æ°é" show-tooltip-when-overflow prop="produceq_qty"