| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <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 v-if="false" 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 v-if="false" 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="å·¥åç¼å·ï¼"> |
| | | <div style="width: 200px">{{ dialogForm.wo_code }}</div> |
| | | </el-form-item> |
| | | <el-form-item label="产åç¼ç ï¼"> |
| | | <div style="width: 200px">{{ dialogForm.partcode }}</div> |
| | | </el-form-item> |
| | | <el-form-item label="产ååç§°ï¼"> |
| | | <div style="width: 200px">{{ dialogForm.partname }}</div> |
| | | </el-form-item> |
| | | <el-form-item label="产åè§æ ¼ï¼"> |
| | | <div style="width: 200px">{{ dialogForm.partspec }}</div> |
| | | </el-form-item> |
| | | <el-form-item label="å½åå·¥åºï¼"> |
| | | <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="任塿°éï¼"> |
| | | <div style="width: 200px">{{ dialogForm.planqty }}</div> |
| | | </el-form-item> |
| | | |
| | | <el-form-item v-if="dialogTitle==='èªå¶å¼å§'" label="æªå¼/å·²å¼ï¼"> |
| | | <div style="width: 200px">{{ dialogForm.noreportqty }}/{{ dialogForm.reportqty }}</div> |
| | | </el-form-item> |
| | | <el-form-item v-if="dialogTitle==='èªå¶æ¥å·¥'" label="æªæ¥/å·²æ¥ï¼"> |
| | | <div style="width: 200px">{{ dialogForm.noreportqty }}/{{ dialogForm.reportqty }}</div> |
| | | </el-form-item> |
| | | <el-form-item v-if="dialogTitle==='å¤ååæ'" label="æªå/å·²åï¼"> |
| | | <div style="width: 200px">{{ dialogForm.noreportqty }}/{{ dialogForm.reportqty }}</div> |
| | | </el-form-item> |
| | | <el-form-item v-if="dialogTitle==='å¤åæ¶æ'" label="æªæ¶/å·²æ¶ï¼"> |
| | | <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="ä¸éå·¥åºï¼"> |
| | | <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'"> |
| | | <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}"/> 人åå表 |
| | | <el-button v-waves type="primary" style="margin: 10px 0" @click="userAdd">å¢è¡</el-button> |
| | | <el-table |
| | | ref="userTableDataRef" |
| | | :data="userTableData" |
| | | border |
| | | class="tableFixed" |
| | | :row-class-name="tableRowClassName" |
| | | :header-cell-style="this.$headerCellStyle" |
| | | :cell-style="this.$cellStyle" |
| | | height="180" |
| | | 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"> |
| | | <div |
| | | style="display: flex;width: 220px;height: 130px;border: 1px solid #000;text-align: center;font-size: 12px" |
| | | > |
| | | |
| | | <div style="width: 70px;display: flex;flex-direction: column;border-right: 1px solid #000"> |
| | | <div |
| | | style="display: flex;height: 60%;border-bottom:1px solid #000; |
| | | justify-content: center;align-items: center;position: relative" |
| | | > |
| | | <div |
| | | id="qrCode2" |
| | | ref="qrCodeDiv2" |
| | | style="overflow-y: hidden;height:71%;position: absolute;left: 7px;" |
| | | /> |
| | | </div> |
| | | <div |
| | | style="display: flex;height: 20%;justify-content: flex-start;border-bottom:1px solid #000;align-items: center" |
| | | > |
| | | <div style="margin-left: 3px; ">æ°é:{{ qrForm.startqty }}</div> |
| | | </div> |
| | | <div style="display: flex;height: 20%;justify-content: flex-start;align-items: center;"> |
| | | <div style="margin-left: 3px; ">æä½:{{ qrForm.operator }}</div> |
| | | |
| | | </div> |
| | | </div> |
| | | |
| | | <div style="width:150px;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="margin-left: 3px;">ç¼å·:{{ 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="margin-left: 3px;">产åç¼ç :{{ 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="margin-left: 3px;">产ååç§°:{{ 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="margin-left: 3px;">ä¸éå·¥åº:{{ qrForm.nextstepname }}</div> |
| | | |
| | | </div> |
| | | <div style="display: flex;height: 20%;justify-content: flex-start;align-items: center;text-align: left"> |
| | | <div style=" margin-left: 3px;">æ¶é´: {{ qrForm.operatorTime }}</div> |
| | | <!-- <div>{{ qrForm.operatorTime?qrForm.operatorTime.substring(5):'' }}</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 { |
| | | MesOrderGroupSelectUser, |
| | | MesOrderSelectUser, |
| | | MesOrderStepReportSelectUserGroup, |
| | | MesOrderStepSearch, |
| | | MesOrderStepStart, |
| | | MesOrderStepStartSelectEqp, |
| | | MesOrderWxStepSearch, |
| | | MesOrderStepSelectWX, |
| | | SavaMesOrderStepOut, |
| | | MesOrderStepSelectCause, |
| | | SavaMesOrderStepIn, |
| | | SavaMesOrderStepStart, |
| | | SavaMesOrderStepReport, MesOrderNgStepSearch, MesOrderNgSubStepSearch, EditOrderNgStepSeave |
| | | } from '@/api/scgl' |
| | | import {urlAddRandomNo, webapp_ws_ajax_run, webapp_ws_autoupdate} from '@/utils/grwebapp' |
| | | 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: 'wo_code', // æåºå段 |
| | | order: 'asc', // æåºå段 |
| | | page: 1, // 第å 页 |
| | | rows: 20 // æ¯é¡µå¤å°æ¡ |
| | | }, |
| | | total: 10, |
| | | tableData: [], |
| | | WXform: { // å¤å表å |
| | | orderstepqrcode: '', // æ«æçäºç»´ç ä¿¡æ¯ |
| | | prop: 'wo_code', // æåºå段z |
| | | order: 'asc', // æåºå段 |
| | | 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: '', // ä¸ä¸éå·¥åºå |
| | | 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: ''// 夿³¨ |
| | | |
| | | }, |
| | | 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: '', |
| | | nextstepname: '', |
| | | operator: '', // æä½äºº |
| | | operatorTime: ''// æä½æ¶é´ |
| | | }, |
| | | badForm: { |
| | | orderstepqrcode: '', // æ«æçäºç»´ç |
| | | prop: 'wo_code', |
| | | order: 'asc', |
| | | page: 1, |
| | | rows: 20 |
| | | }, |
| | | badTableData: [], // ä¸è¯å¤çå表tableæ°æ® |
| | | badTotal: 0, |
| | | badDialogVisible: false, |
| | | badDialogForm: { |
| | | operation: getCookie('navTabId') |
| | | }, |
| | | badTableDataDialog: [], // ä¸è¯å¯¹è¯æ¡tableè¡¨æ ¼ |
| | | OperationArr: [], // äººåæ°ç» |
| | | sendButtonIsDisabled: false, // ä¸è¾¾æé®æ¯å¦å¯ç¹å» |
| | | judgeIsScanningArr: [], // 夿æ¯å¦æ«ç æ°ç» |
| | | countJudgeIsScanningInput: 0 // 夿æ«ç æ¡çä¸ªæ° |
| | | } |
| | | }, |
| | | watch: { |
| | | // 'form.orderstepqrcode': { |
| | | // handler(newValue) { |
| | | // this.form.orderstepqrcode = newValue |
| | | // |
| | | // // å¨è¿éè°ç¨ï¼å¹¶æ§è¡this.fnThrottle(this.search, 500, 2000)(); |
| | | // this.fnThrottle(this.enterNative, 500, 2000, 'produceCode')() |
| | | // } |
| | | // }, |
| | | // 'WXform.orderstepqrcode': { |
| | | // handler(newValue) { |
| | | // this.form.orderstepqrcode = newValue |
| | | // |
| | | // // å¨è¿éè°ç¨ï¼å¹¶æ§è¡this.fnThrottle(this.search, 500, 2000)(); |
| | | // this.fnThrottle(this.enterNative, 500, 2000, 'WXproduceCode')() |
| | | // } |
| | | // }, |
| | | // 'badForm.orderstepqrcode': { |
| | | // handler(newValue) { |
| | | // this.form.orderstepqrcode = newValue |
| | | // |
| | | // // å¨è¿éè°ç¨ï¼å¹¶æ§è¡this.fnThrottle(this.search, 500, 2000)(); |
| | | // this.fnThrottle(this.enterNative, 500, 2000, 'badProduceCode')() |
| | | // } |
| | | // } |
| | | }, |
| | | |
| | | created() { |
| | | this.getMesOrderStepSearch() |
| | | this.tabClick() |
| | | }, |
| | | mounted() { |
| | | window.addEventListener('resize', this.getHeight) |
| | | this.getHeight() |
| | | |
| | | this.$nextTick(() => { |
| | | $("input[name='produceCode']")[0].focus() |
| | | // this.bindQRCode('10001;001') |
| | | }) |
| | | // webapp_urlprotocol_startup() |
| | | // webapp_ws_autoupdate(true) |
| | | |
| | | this.getMesOrderSelectUserAll() // è·åææäººå |
| | | }, |
| | | methods: { |
| | | // 计件æ¹å¼å¼æ¹åæ¶ |
| | | reckwayChange() { |
| | | this.dialogForm.usergroupcode = '' |
| | | this.dialogForm.operation = '' |
| | | this.userTableData = [] |
| | | // 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: '' |
| | | } |
| | | MesOrderStepStart(data).then(res => { |
| | | if (res.code === '200' && res.count === 0) { |
| | | this.ZZstart(res.data) |
| | | } else if (res.code === '200' && res.count === 1) { |
| | | this.ZZreport(res.data) |
| | | } |
| | | }).catch(e => { |
| | | this.form.orderstepqrcode = '' |
| | | }) |
| | | |
| | | } |
| | | if (belong === 'WXproduceCode') { |
| | | const orderstepqrcode = this.WXform.orderstepqrcode |
| | | const data = { |
| | | OperType: 'WX', |
| | | orderstepqrcode: orderstepqrcode, |
| | | SelectType: this.WXSelected// OUTãIN |
| | | } |
| | | MesOrderStepStart(data).then(res => { |
| | | if (res.code === '200' && res.count === 2) { |
| | | this.WXsend(res.data) |
| | | } else if (res.code === '200' && res.count === 3) { |
| | | this.WXback(res.data) |
| | | } |
| | | }).catch(e => { |
| | | this.WXform.orderstepqrcode = '' |
| | | }) |
| | | |
| | | } |
| | | |
| | | 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 ? obj.nextstepcode : obj.stepcode |
| | | |
| | | this.dialogForm.startqtySum = obj.noreportqty |
| | | }) |
| | | |
| | | 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 ? obj.nextstepcode : obj.stepcode |
| | | |
| | | 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.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.$refs.tableDataRef.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) |
| | | 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) |
| | | } |
| | | }) |
| | | }, |
| | | // ç¨æ·å表人ååç§°å¼éä¸ |
| | | 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.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(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('è¯·éæ©ä¸è¯åå ï¼') |
| | | } |
| | | } |
| | | |
| | | 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, // 夿³¨ |
| | | 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') |
| | | 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, // 计件æ¹å¼ |
| | | 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('æ¥å·¥æåï¼') |
| | | 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: 55, |
| | | // height: 50, |
| | | height: 55, |
| | | colorDark: '#000', // äºç»´ç é¢è² |
| | | colorLight: '#ffffff', // äºç»´ç èæ¯è² |
| | | correctLevel: QRCode.CorrectLevel.L// 容éçï¼L/M/H |
| | | }) |
| | | }, |
| | | ZZprint2(username) { |
| | | this.qrForm.qrvalue = this.dialogForm.wo_code + ';' + this.dialogForm.nextstepcode |
| | | 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) { |
| | | this.qrForm.qrvalue = this.dialogForm.wo_code + ';' + this.dialogForm.nextstepcode |
| | | 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.nextstepname = '' |
| | | this.qrForm.operator = '' |
| | | this.qrForm.operatorTime = '' |
| | | // this.$refs.qrCodeDiv2 = '' |
| | | }, |
| | | |
| | | // è·å页é¢é«åº¦ |
| | | getHeight() { |
| | | this.$nextTick(() => { |
| | | this.mainHeight = window.innerHeight - 85 |
| | | this.tableHeight = this.mainHeight - 190 |
| | | 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> |