src/api/product/personboard.js
@@ -509,3 +509,11 @@ params: query }) } export function getOperationTaskCopy(query) { return request({ url: '/mes/operationTask/getOperationTaskCopy', method: 'get', params: query }) } src/views/plan/customerorder/customerorder-form.vue
@@ -828,6 +828,7 @@ productName: '', productType: '', partNo: '', technologyDocumentId: '', docNumber: '', docName: '', shippingAddress: '', src/views/product/workbench/batchproductout-form-new.vue
@@ -8,8 +8,8 @@ --> <template> <el-dialog width="95%" title="批量产出" width="90%" title="汇报产出" :visible.sync="innerVisible" append-to-body @close="$emit('update:currshowlist', false)" @@ -18,7 +18,7 @@ class="batch-product-out-form" > <div style="float: left;width: 15%;box-sizing: border-box;padding-right: 34px;position: relative" style="float: left;width: 20%;box-sizing: border-box;padding-right: 34px;position: relative" > <el-table stripe @@ -48,7 +48,7 @@ style="position: absolute;top:0px;right: 0px;height: 100%;width: 34px;border-left: 1px solid #f4f2ea;border-right: 1px solid #f4f2ea;" ></div> </div> <div style="float: left;width: 85%"> <div style="float: left;width: 80%"> <el-row style=""> <el-col :span="1" class="batch-product-out-form-header-col" ><span>序号</span></el-col @@ -58,9 +58,9 @@ ><span>零件名称</span></el-col > <el-col :span="4" class="batch-product-out-form-header-col" ><span>SN号</span></el-col ><span>序列号</span></el-col > <el-col :span="2" class="batch-product-out-form-header-col" <!-- <el-col :span="2" class="batch-product-out-form-header-col" ><span>载具编号</span></el-col > <el-col :span="1" class="batch-product-out-form-header-col" @@ -68,34 +68,40 @@ > <el-col :span="1" class="batch-product-out-form-header-col" ><span>每盘产量</span></el-col > <el-col :span="1" class="batch-product-out-form-header-col" > --> <!-- <el-col :span="1" class="batch-product-out-form-header-col" ><span>起始米标</span></el-col > <el-col :span="1" class="batch-product-out-form-header-col" ><span>截止米标</span></el-col > > --> <el-col :span="1" class="batch-product-out-form-header-col" ><span>单位</span></el-col > <el-col :span="1" class="batch-product-out-form-header-col" ><span>分段描述</span></el-col <el-col :span="2" class="batch-product-out-form-header-col" ><span>WDR号</span></el-col > <el-col :span="1" class="batch-product-out-form-header-col" <!-- <el-col :span="1" class="batch-product-out-form-header-col" ><span>分段描述</span></el-col > --> <el-col :span="2" class="batch-product-out-form-header-col" ><span>生产数量</span></el-col > <el-col :span="2" class="batch-product-out-form-header-col" ><span>报废数量</span></el-col > <el-col :span="1" class="batch-product-out-form-header-col" <!-- <el-col :span="1" class="batch-product-out-form-header-col" ><span>盘具重量</span></el-col > <el-col :span="1" class="batch-product-out-form-header-col" > --> <!-- <el-col :span="1" class="batch-product-out-form-header-col" ><span>毛重</span></el-col > > --> <!--<el-col :span="1" class="batch-product-out-form-header-col" ><span>IFS批次号</span></el-col >--> <el-col :span="2" class="batch-product-out-form-header-col" <el-col :span="3" class="batch-product-out-form-header-col" ><span>生产人员</span></el-col ><el-col :span="1" class="batch-product-out-form-header-col" ><el-col :span="2" class="batch-product-out-form-header-col" ><span>备注</span></el-col > <el-col :span="1" class="batch-product-out-form-header-col" @@ -127,24 +133,12 @@ <span class="inline-el-hidden">{{ item.partName }}</span> </el-tooltip> </el-col> <el-col :span="4" class="batch-product-out-form-body-col"> <span v-show="!item.batchNoEdit">{{ item.outBatchNo }}</span> <!--<el-input v-show="item.batchNoEdit" v-model="item.outBatchNo"> <i slot="prefix" class="el-input__icon el-icon-search" style="cursor:pointer" @click="openOutPutBatch(item)" ></i> <i slot="suffix" class="el-input__icon el-icon-circle-close" style="cursor:pointer" @click="cleanOutBatchNo(item)" ></i> </el-input>--> <el-col :span="4" class="batch-product-out-form-body-col l-mes"> <!-- <span>{{ item.outBatchNo }}</span> --> <el-input v-model="item.outBatchNo"> </el-input> </el-col> <el-col :span="2" class="batch-product-out-form-body-col l-mes"> <!-- <el-col :span="2" class="batch-product-out-form-body-col l-mes"> <el-input v-model="item.reelNumber"></el-input> </el-col> <el-col :span="1" class="batch-product-out-form-body-col l-mes"> @@ -152,32 +146,38 @@ </el-col> <el-col :span="1" class="batch-product-out-form-body-col l-mes"> <span>{{ item.productQty }}</span> </el-col> <el-col :span="1" class="batch-product-out-form-body-col l-mes"> </el-col> --> <!-- <el-col :span="1" class="batch-product-out-form-body-col l-mes"> <el-input v-model="item.startMeterMark"></el-input> </el-col> <el-col :span="1" class="batch-product-out-form-body-col l-mes"> <el-input v-model="item.endMeterMark"></el-input> </el-col> </el-col> --> <el-col :span="1" class="batch-product-out-form-body-col"> <span>{{ item.unit }}</span> </el-col> <el-col :span="1" class="batch-product-out-form-body-col l-mes"> <el-input v-model="item.segmentDesc"></el-input> <el-col :span="2" class="batch-product-out-form-body-col l-mes"> <el-input v-model="item.wdr"></el-input> </el-col> <el-col :span="1" class="batch-product-out-form-body-col l-mes"> <!-- <el-col :span="1" class="batch-product-out-form-body-col l-mes"> <el-input v-model="item.segmentDesc"></el-input> </el-col> --> <el-col :span="2" class="batch-product-out-form-body-col l-mes"> <el-input v-model="item.outNum"></el-input> </el-col> <el-col :span="2" class="batch-product-out-form-body-col l-mes"> <el-input v-model="item.scrapQty"></el-input> </el-col> <el-col :span="1" class="batch-product-out-form-body-col l-mes"> <!-- <el-col :span="1" class="batch-product-out-form-body-col l-mes"> <el-input v-model="item.reelWeight"></el-input> </el-col> <el-col :span="1" class="batch-product-out-form-body-col l-mes"> </el-col> --> <!-- <el-col :span="1" class="batch-product-out-form-body-col l-mes"> <el-input v-model="item.grossWeight"></el-input> </el-col> </el-col> --> <!--<el-col :span="1" class="batch-product-out-form-body-col l-mes"> <el-input v-model="item.ifsBatchNo"></el-input> </el-col>--> <el-col :span="2" class="batch-product-out-form-body-col"> <el-col :span="3" class="batch-product-out-form-body-col"> <el-tooltip class="item" effect="dark" @@ -190,7 +190,7 @@ <!--<el-col :span="1" class="batch-product-out-form-body-col l-mes"> <el-input v-model="item.remark"></el-input> </el-col>--> <el-col :span="1" class="batch-product-out-form-body-col l-mes"> <el-col :span="2" class="batch-product-out-form-body-col l-mes"> <el-input v-model="item.mainRemark"></el-input> </el-col> <el-col :span="1" class="batch-product-out-form-body-col"> @@ -205,19 +205,19 @@ </div> </div> <div slot="footer" class="dialog-footer"> <div style="display: inline-block;width: 25%;float: left"> <!-- <div style="display: inline-block;width: 25%;float: left"> <el-button style="margin-right: 34px" type="primary" @click="addProductOutForPerson" >添加</el-button > </div> </div> --> <el-button @click="innerVisible = false">取 消</el-button> <el-button type="primary" :disabled="saveDisabled" @click="saveProductOuts" @click="saveProductOuts2" >确 定</el-button > </div> @@ -314,7 +314,8 @@ batchSaveProductMain, getShiftProductOutByOpIdAndWsId, validateOverProduction, validateOverFeed validateOverFeed, submitProductMain } from '@/api/product/personboard' import ElButton from '../../../../node_modules/element-ui/packages/button/src/button.vue' import OutPutBatch from './outputbatch.vue' @@ -498,10 +499,39 @@ // row.outBatchNo = null } }, saveProductOuts2() { this.clickDateArr.push(new Date().getTime()) var productOutputList = [] this.productList.forEach(a=>{ productOutputList.push({ partId: a.partId, productQty: a.outNum, outBatchNo: a.outBatchNo, scrapQty: a.scrapQty, remark: a.remark, wdr: a.wdr, staffNo: a.staffNo, staffName: a.staffName, status: a.status, dutyRecordId: a.dutyRecordId, productStaffIds: a.productStaffIds, productStaffs: a.productStaffs }) }) var productMains = { productOutputList: productOutputList, workstationId: this.parentInfo.workstationId, operationTaskId: this.parentInfo.operationTaskId, } submitProductMain(productMains).then(res=>{ this.$emit('refreshProductOutputList', res.data.data) this.innerVisible = false }) }, saveProductOuts() { var canClickFlag = true this.clickDateArr.push(new Date().getTime()) if (this.clickDateArr.length > 1) { /* if (this.clickDateArr.length > 1) { if ( this.clickDateArr[this.clickDateArr.length - 1] - this.clickDateArr[this.clickDateArr.length - 2] < @@ -510,7 +540,7 @@ // 小于2秒则认为重复提交 canClickFlag = false } } } */ if (canClickFlag) { this.saveDisabled = true @@ -538,56 +568,56 @@ s_list = JSON.parse(JSON.stringify(p_list)) } if (s_list.length <= 0) { /* if (s_list.length <= 0) { this.$message.error('报工,请填写盘数!') this.saveDisabled = false return } let totalDisNumber = 0 for (let i = 0; i < s_list.length; i++) { // 盘数校验 if (!this.isPositiveIntegerNumber(s_list[i].disNumber)) { validateFlag = false if (this.groupStatus) { validateMsg = '人员:' + s_list[i].staffName + ',所在行,【盘数】请输入正整数!' } else { validateMsg = '第' + (i + 1) + '行,【盘数】请输入正整数!' } break } totalDisNumber += s_list[i].disNumber - 0 // 起始米标校验 if (!this.isNumber(s_list[i].startMeterMark)) { validateFlag = false validateMsg = '第' + (i + 1) + '行,【起始米标】请输入非负数,小数位最多4位!' break } // 截止米标校验 if (!this.isNumber(s_list[i].endMeterMark)) { validateFlag = false validateMsg = '第' + (i + 1) + '行,【截止米标】请输入非负数,小数位最多4位!' break } // 截止米标需大于开始米标 if ( Number(s_list[i].endMeterMark) < Number(s_list[i].startMeterMark) ) { validateFlag = false validateMsg = '第' + (i + 1) + '行,【截止米标】需大于【起始米标】' break } } const maxDisNumber = 2000 // 最大盘数 } */ // let totalDisNumber = 0 // for (let i = 0; i < s_list.length; i++) { // // 盘数校验 // /* if (!this.isPositiveIntegerNumber(s_list[i].disNumber)) { // validateFlag = false // if (this.groupStatus) { // validateMsg = // '人员:' + // s_list[i].staffName + // ',所在行,【盘数】请输入正整数!' // } else { // validateMsg = '第' + (i + 1) + '行,【盘数】请输入正整数!' // } // break // } */ // totalDisNumber += s_list[i].disNumber - 0 // // 起始米标校验 // if (!this.isNumber(s_list[i].startMeterMark)) { // validateFlag = false // validateMsg = // '第' + (i + 1) + '行,【起始米标】请输入非负数,小数位最多4位!' // break // } // // 截止米标校验 // if (!this.isNumber(s_list[i].endMeterMark)) { // validateFlag = false // validateMsg = // '第' + (i + 1) + '行,【截止米标】请输入非负数,小数位最多4位!' // break // } // // 截止米标需大于开始米标 // if ( // Number(s_list[i].endMeterMark) < Number(s_list[i].startMeterMark) // ) { // validateFlag = false // validateMsg = // '第' + (i + 1) + '行,【截止米标】需大于【起始米标】' // break // } // } /* const maxDisNumber = 2000 // 最大盘数 if (totalDisNumber > maxDisNumber) { validateMsg = '总盘数不能大于' + maxDisNumber + '!' validateFlag = false } } */ if (validateFlag) { if (this.parentInfo.productOutId == null) { // 当前是产出的新增 src/views/product/workbench/feed-form.vue
@@ -29,26 +29,26 @@ > </el-table-column> <el-table-column prop="partName" prop="partDescription" header-align="center" align="center" label="零件" label="零件描述" > </el-table-column> <el-table-column prop="partBatchNo" prop="ifsBatchNo" header-align="center" align="center" label="零件批号" label="批号" > </el-table-column> <el-table-column <!-- <el-table-column prop="specs" header-align="center" align="center" label="规格型号" > </el-table-column> </el-table-column> --> <el-table-column prop="suppliedQuantity" header-align="center" @@ -203,7 +203,6 @@ partNoList.push(partNoLists) } getCheckRawPart(partNoList).then((response) => { console.log(response) if (response.data.code === 0) { // 需要密码确认情况 if (response.data.data.success === false) { @@ -243,7 +242,15 @@ partBatchNo: this.dataList[i].partBatchNo, systemNo: this.dataList[i].systemNo, partName: this.dataList[i].partName, unit: this.dataList[i].unit ? this.dataList[i].unit : '' unit: this.dataList[i].unit ? this.dataList[i].unit : '', partNo: this.dataList[i].partNo, ifsBatchNo: this.dataList[i].ifsBatchNo, ifsWdr: this.dataList[i].ifsWdr, locationNo: this.dataList[i].locationNo, serialNo:this.dataList[i].serialNo, engChgLevel:this.dataList[i].engChgLevel, configurationId:this.dataList[i].configurationId, activitySeq:this.dataList[i].activitySeq } feeds.push(feed) } src/views/product/workbench/feed-pane.vue
@@ -1,7 +1,7 @@ <template> <div style="padding:0px 14px;height: 100%;overflow: auto;"> <div class="need-feed-header"> <div style="height:28px;line-height:28px;"> <div> <el-divider class="pane-divider" direction="vertical"></el-divider ><span style="font-size:14px;font-weight:bold">工单所需物料</span> </div> @@ -205,7 +205,7 @@ <span>{{ scope.row.partNo }}</span> </template> </el-table-column> <el-table-column <!-- <el-table-column label="零件" prop="partName" align="center" @@ -227,11 +227,11 @@ <template slot-scope="scope"> <span>{{ scope.row.partName }}</span> </template> </el-table-column> </el-table-column> --> <el-table-column label="零件描述" prop="partDescription" align="center" align="center" show-overflow-tooltip > <template slot="header"> <div style="line-height: 14px;">零件描述</div> @@ -268,7 +268,25 @@ <span>{{ scope.row.ifsBatchNo }}</span> </template> </el-table-column> <el-table-column label="SN号" prop="partBatchNo" align="center"> <el-table-column label="WDR号" prop="ifsWdr" align="center"> <template slot="header"> <div style="line-height: 14px;">WDR号</div> <div class="th" @click.stop> <el-input type="text" v-model="queryParamTwo.ifsWdr" @keyup.enter.native="handleStockList" clearable @clear="handleStockList" size="mini" ></el-input> </div> </template> <template slot-scope="scope"> <span>{{ scope.row.ifsWdr }}</span> </template> </el-table-column> <!-- <el-table-column label="SN号" prop="partBatchNo" align="center"> <template slot="header"> <div style="line-height: 14px;">SN号</div> <div class="th" @click.stop> @@ -308,8 +326,8 @@ <template slot-scope="scope"> <span>{{ scope.row.reelNumber }}</span> </template> </el-table-column> <el-table-column </el-table-column> --> <!-- <el-table-column label="规格型号" prop="specs" align="center" @@ -331,7 +349,7 @@ <template slot-scope="scope"> <span>{{ scope.row.specs }}</span> </template> </el-table-column> </el-table-column> --> <el-table-column label="单位" prop="unit" align="center"> <template slot="header"> <div style="line-height: 14px;">单位</div> @@ -357,7 +375,7 @@ > <template slot="header"> <div style="line-height: 14px;">可用数量</div> <div class="th" @click.stop> <!-- <div class="th" @click.stop> <el-input type="text" v-model="queryParamTwo.availableStockQuantity" @@ -366,7 +384,7 @@ @clear="handleStockList" size="mini" ></el-input> </div> </div> --> </template> <template slot-scope="scope"> <span>{{ scope.row.availableStockQuantity }}</span> @@ -375,7 +393,7 @@ <el-table-column label="库存数量" prop="stockQuantity" align="center"> <template slot="header"> <div style="line-height: 14px;">库存数量</div> <div class="th" @click.stop> <!-- <div class="th" @click.stop> <el-input type="text" v-model="queryParamTwo.stockQuantity" @@ -384,7 +402,7 @@ @clear="handleStockList" size="mini" ></el-input> </div> </div> --> </template> <template slot-scope="scope"> <span>{{ scope.row.stockQuantity }}</span> @@ -397,7 +415,7 @@ > <template slot="header"> <div style="line-height: 14px;">预留数量</div> <div class="th" @click.stop> <!-- <div class="th" @click.stop> <el-input type="text" v-model="queryParamTwo.reserveQuantity" @@ -406,7 +424,7 @@ @clear="handleStockList" size="mini" ></el-input> </div> </div> --> </template> <template slot-scope="scope"> <span>{{ scope.row.reserveQuantity }}</span> @@ -431,7 +449,7 @@ </template> </el-table-column> </el-table> <div class="pagin-page" style="margin-top: 0;margin-bottom: 0;"> <!-- <div class="pagin-page" style="margin-top: 0;margin-bottom: 0;"> <el-pagination :current-page="queryReport.current" :page-sizes="[10, 15, 20, 50, 100]" @@ -442,11 +460,9 @@ :total="queryReport.total" > </el-pagination> </div> </div> --> </el-tab-pane> <!-- --> <el-tab-pane name="second" label="线边仓待处理物料"> <!-- <el-tab-pane name="second" label="线边仓待处理物料"> <div class="line-side-warehouse-header"> <div> <el-divider class="pane-divider" direction="vertical"></el-divider @@ -568,9 +584,9 @@ align="center" show-overflow-tooltip > <template slot="header"> <template slot="header"> --> <!-- <div style="line-height: 14px;">IFS批次号</div> --> <div class="th" @click.stop> <!-- <div class="th" @click.stop> <el-input type="text" v-model="queryTodoParam.ifsBatchNo" @@ -765,10 +781,10 @@ > </el-pagination> </div> </el-tab-pane> </el-tab-pane> --> <!-- --> <el-tab-pane name="third" label="配盘物料"> <!-- <el-tab-pane name="third" label="配盘物料"> <div class="task-reserve-warehouse-header"> <div> <el-divider class="pane-divider" direction="vertical"></el-divider @@ -859,7 +875,7 @@ <span>{{ scope.row.partName }}</span> </template> </el-table-column> <!-- <el-table-column label="IFS批次号" prop="ifsBatchNo" align="center">--> <el-table-column label="IFS批次号" prop="ifsBatchNo" align="center">--> <!-- <template slot="header" slot-scope="scope">--> <!-- <div style="line-height: 14px;">IFS批次号</div>--> <!-- <div class="th" @click.stop>--> @@ -876,7 +892,7 @@ <!-- <template slot-scope="scope">--> <!-- <span>{{ scope.row.ifsBatchNo }}</span>--> <!-- </template>--> <!-- </el-table-column>--> <!-- </el-table-column> <el-table-column label="SN号" prop="partBatchNo" align="center"> <template slot="header" slot-scope="scope"> <div style="line-height: 14px;">SN号</div> @@ -1000,9 +1016,9 @@ </template> </el-table-column> </el-table> </el-tab-pane> </el-tab-pane> --> <el-tab-pane name="four" label="ERP物料"> <!-- <el-tab-pane name="four" label="ERP物料"> <div class="task-reserve-warehouse-header"> <div> <el-divider class="pane-divider" direction="vertical"></el-divider @@ -1106,7 +1122,7 @@ </template> </el-table-column> </el-table> </el-tab-pane> </el-tab-pane> --> </el-tabs> <div class="workstation-house-header"> <div> @@ -1114,6 +1130,18 @@ ><span style="font-size:14px;font-weight:bold">已投入未消耗物料</span> </div> <div> <el-button class="return-btn" type="primary" @click="submitIns()" >报检</el-button > <el-button class="return-btn" type="primary" @click="inputHandle()" >尾料处理</el-button > <el-button class="return-btn" type="primary" @@ -1174,7 +1202,7 @@ :show-overflow-tooltip="true" > <template slot="header" slot-scope="scope"> <div style="line-height: 14px;">零件</div> <div style="line-height: 14px;">零件描述</div> <div class="th" @click.stop> <el-input type="text" @@ -1208,7 +1236,25 @@ <span>{{ scope.row.ifsBatchNo }}</span> </template> </el-table-column> <el-table-column label="SN号" prop="partBatchNo" align="center"> <el-table-column label="WDR号" prop="ifsWdr" align="center"> <template slot="header" slot-scope="scope"> <div style="line-height: 14px;">WDR号</div> <div class="th" @click.stop> <el-input type="text" v-model="queryParamThree.ifsWdr" @keyup.enter.native="handleFeedList" clearable @clear="handleFeedList" size="mini" ></el-input> </div> </template> <template slot-scope="scope"> <span>{{ scope.row.ifsWdr }}</span> </template> </el-table-column> <!-- <el-table-column label="SN号" prop="partBatchNo" align="center"> <template slot="header" slot-scope="scope"> <div style="line-height: 14px;">SN号</div> <div class="th" @click.stop> @@ -1271,7 +1317,7 @@ <template slot-scope="scope"> <span>{{ scope.row.specs }}</span> </template> </el-table-column> </el-table-column> --> <el-table-column label="可用数量" prop="availableStockQuantity" @@ -1312,13 +1358,13 @@ <span>{{ scope.row.stockQuantity }}</span> </template> </el-table-column> <el-table-column label="库位号" prop="locNo" align="center"> <el-table-column label="库位号" prop="ifsLocation" align="center"> <template slot="header" slot-scope="scope"> <div style="line-height: 14px;">库位号</div> <div class="th" @click.stop> <el-input type="text" v-model="queryParamThree.locNo" v-model="queryParamThree.ifsLocation" @keyup.enter.native="handleFeedList" clearable @clear="handleFeedList" @@ -1327,7 +1373,7 @@ </div> </template> <template slot-scope="scope"> <span>{{ scope.row.locNo }}</span> <span>{{ scope.row.ifsLocation }}</span> </template> </el-table-column> <el-table-column label="单位" prop="unit" align="center"> @@ -1348,7 +1394,7 @@ <span>{{ scope.row.unit }}</span> </template> </el-table-column> <el-table-column label="投料人" prop="createUser" align="center"> <!-- <el-table-column label="投料人" prop="createUser" align="center"> <template slot="header" slot-scope="scope"> <div style="line-height: 14px;">投料人</div> <div class="th" @click.stop> @@ -1365,8 +1411,8 @@ <template slot-scope="scope"> <span>{{ scope.row.createUser }}</span> </template> </el-table-column> <el-table-column </el-table-column> --> <!-- <el-table-column label="投料时间" prop="createTime" align="center" @@ -1394,7 +1440,7 @@ <template slot-scope="scope"> <span>{{ scope.row.createTime }}</span> </template> </el-table-column> </el-table-column> --> </el-table> <feedFormDialog :currshowlist.sync="showFeedForm" @@ -1441,7 +1487,7 @@ </template> <script> import { getStock, getFeed, getTodoStock } from '@/api/product/personboard' import { getStock, getFeed, getTodoStock, submitInsPart, inputHandle } from '@/api/product/personboard' import { getMaterial } from '@/api/plan/operationtask' import { getERPStockListByPart, @@ -1556,9 +1602,9 @@ .then((response) => { var data = response.data if (data.code === 0) { // const list = data.data.records this.stockList = data.data.records this.queryReport.total = data.data.total /* this.stockList = data.data.records this.queryReport.total = data.data.total */ this.stockList = data.data // this.getReportData() } else { this.$message.error('获取线边仓信息失败') @@ -1850,6 +1896,57 @@ this.$message.warning('请选择投料零件') } }, // 报检 submitIns(){ if (this.selectFeeds.length > 0) { var list = [] this.selectFeeds.forEach(a=>{ list.push({ partNo: a.partNo, partDesc: a.partName, qtyToInspect: a.availableStockQuantity, partId: a.partId, waivDevRejNo: a.ifsWdr, targetQualifiedLocationId: a.locationId, workstationId: a.workstationId, taskId: this.currOperateTask.id, locationNo: a.ifsLocation, lotBatchNo: a.ifsBatchNo, qtyArrived: a.stockQuantity, waivDevRejNo: a.ifsWdr, serialNo: a.serialNo, operationId: this.currOperateTask.operationId, stockId: a.id, engChgLevel: a.engChgLevel, activitySeq: a.activitySeq }) }) submitInsPart(list).then(res=>{ this.$message.success('报检完成') }) }else{ this.$message.warning('请选择报检零件') } }, inputHandle(){ console.log(this.currOperateTask); if (this.selectFeeds.length > 0) { var list = [] this.selectFeeds.forEach(a=>{ list.push({ taskId: this.currOperateTask.id, stockId: a.id, }) }) this.$confirm("此操作将会把所选物料平均计算到所有报工单的投入里").then(()=>{ inputHandle(list).then(res=>{ this.$message.success('处理完成') }) }).catch(e=>{}) } else { this.$message.warning('请选择尾料处理的物料') } }, // 初始化页面变量 initFeed() { this.selectStocks = [] src/views/product/workbench/handymantype.vue
@@ -224,6 +224,7 @@ workstationId: { handler: function(newVal, oldVal) { if (this.workstationId) { console.log(`output->this.workstationId`,this.workstationId) getAllHandymanTemplate( Object.assign({ workstationId: this.workstationId }) ).then((response) => { src/views/product/workbench/index.vue
@@ -49,22 +49,22 @@ <el-image src="/img/workbench/icon_bg.png"></el-image> <span class="item-name">报工</span> </div> <div <!-- <div v-show="isShowStepBusiness" :class="['wb-header-menu-item', stepShow ? 'item-show' : '']" @click="selectItem('step')" > <el-image src="/img/workbench/icon_gb.png"></el-image> <span class="item-name">工步</span> </div> <div </div> --> <!-- <div v-show="permissions.product_menu_split" :class="['wb-header-menu-item', splitTaskShow ? 'item-show' : '']" @click="selectItem('splitTask')" > <el-image src="/img/workbench/icon_sp.png"></el-image> <span class="item-name">分割</span> </div> </div> --> <div :class="['wb-header-menu-item', artificialShow ? 'item-show' : '']" @click="selectItem('artificial')" @@ -314,11 +314,11 @@ </div> <div style="float:right;width:10%;"> <div class="open-edit-duty-div"> <div> <!-- <div> <span class="duty-edit-span" @click="clearDutyRecord" >清空</span > </div> </div> --> <div> <span class="duty-edit-span" @click="openDutyEdit" >编辑</span @@ -378,15 +378,24 @@ <el-tooltip class="item" effect="dark" content="批量提交" content="清空" placement="top" > <button <!-- <button class="duty-circle-button" @click="submitSaveDutyRecord" > <i class="el-icon-document-checked" class="el-icon-delete" style="color: #FFFFFF;" ></i> </button> --> <button class="duty-circle-button" @click="clearDutyRecord" > <i class="el-icon-delete" style="color: #FFFFFF;" ></i> </button> @@ -464,7 +473,7 @@ :inline="true" style="margin-left: 10px" > <el-form-item prop="orderNumber" label="销售订单号"> <!-- <el-form-item prop="orderNumber" label="销售订单号"> <el-input placeholder="请输入销售订单号" v-model="operateTaskForm.orderNumber" @@ -472,8 +481,8 @@ @keyup.enter.native="queryInfoForOrderNumber" @clear="queryInfoForOrderNumber" ></el-input> </el-form-item> <el-form-item prop="spec" label="成品规格"> </el-form-item> --> <!-- <el-form-item prop="spec" label="成品规格"> <el-select placeholder="请选择成品规格" v-model="operateTaskForm.spec" @@ -498,19 +507,19 @@ > </el-option> </el-select> </el-form-item> <el-form-item prop="outBatchNo" label="SN"> </el-form-item> --> <el-form-item prop="outBatchNo" label="车间订单"> <el-input placeholder="请输入投入半成品SN号" placeholder="请输入车间订单号" v-model="operateTaskForm.outBatchNo" clearable @keyup.enter.native="refreshOperateTasksByConditions" @clear="refreshOperateTasksByConditions" ></el-input> </el-form-item> <el-form-item prop="mpsNo" label="计划号"> <el-form-item prop="mpsNo" label="工单号"> <el-input placeholder="请输入计划号" placeholder="请输入工单号" v-model="operateTaskForm.mpsNo" clearable @keyup.enter.native="refreshOperateTasksByConditions" @@ -1424,7 +1433,7 @@ .task-div-content { // height: calc(100% - 40px); flex: 1; padding: 0px 15px; padding: 10px 15px; box-sizing: border-box; overflow-y: auto; margin-bottom: 10px; @@ -1491,7 +1500,7 @@ getPartNamesByOrderNo, getProductSnByCustomerNoAndPartName } from '@/api/product/personboard' import { getObj as getSysParam } from '@/api/admin/sys-public-param' import { getObj as getSysParam} from '@/api/admin/sys-public-param' import { getAllCrewList } from '@/api/basic/crew' import { getAllShiftList } from '@/api/basic/shift' import { getAllWorkstationList, updateById } from '@/api/basic/workstation' @@ -1661,7 +1670,7 @@ ...mapGetters(['userInfo', 'tagWel', 'permissions']) }, created() { document.title = '工作台——ZTTMES' document.title = '工作台——MES' if (!this.dutyForm.workstationId) { const k = localStorage.getItem(storage_key) if (k) { @@ -1672,7 +1681,6 @@ this.getSysParam(sysParam.SHOW_STEP_BUSINESS) this.getTrackingParam(sysParam.SHOW_TRACKING_TYPE) this.timer = setInterval(this.clockTimer, 1000) console.log(this.permissions, 'ASSS') }, watch: { 'dutyForm.workstationId'(val) { @@ -2250,9 +2258,9 @@ if (!this.dutyForm.endTime) { return { result: false, msg: '结束时间不能为空' } } if (!this.dutyForm.dutyTime) { /* if (!this.dutyForm.dutyTime) { return { result: false, msg: '班次时间不能为空' } } } */ if (!this.dutyForm.shiftId) { return { result: false, msg: '班次不能为空' } } src/views/product/workbench/operation-task-pane.vue
@@ -17,7 +17,7 @@ <img class="selectedImg" src="/img/workbench/icon_selected.png" /> <div class="header"> <div>工单号:{{ item.taskNo }}</div> <div>计划号:{{ item.mpsNo }}</div> <!-- <div>计划号:{{ item.mpsNo }}</div> --> <div :class="[ 'status-change-div', @@ -52,10 +52,10 @@ <div class="l">零件号:</div> <div class="r">{{ item.partNo }}</div> </div> <div class="row"> <!-- <div class="row"> <div class="l">成品:</div> <div class="r">{{ item.productName }}</div> </div> </div> --> <div class="row"> <div class="l">计划完成时间:</div> <div class="r">{{ item.planFinishDay }}</div> @@ -250,7 +250,7 @@ </style> <script> import { getOperationTask, getOperationTaskCopy, changeBackState, changeOperationTaskState, getDraftProductOut, @@ -579,7 +579,7 @@ if (this.mpsNo && this.mpsNo != null) { query.mpsNo = this.mpsNo } getOperationTask(query) getOperationTaskCopy(query) .then((response) => { var data = response.data if (data.code === 0) { src/views/product/workbench/product-record-form.vue
@@ -10,7 +10,7 @@ > <div class="product-record-form-header"> <div> <span>生产模板</span> <span>记录模板:</span> <el-select v-model="selectedTemplateId" placeholder="生产记录模板" @@ -63,7 +63,7 @@ </div> </div> </div> <div class="product-record-form-header"> <!-- <div class="product-record-form-header"> <div> <span>分割模板</span> <el-select @@ -117,9 +117,9 @@ </el-input> </div> </div> </div> </div> --> <div class="table"> <div class="table-sn"> <!-- <div class="table-sn"> <el-table :data="outputPartsList" :border="true"> <el-table-column label="序号" type="index"></el-table-column> <el-table-column label="SN号"> @@ -138,7 +138,7 @@ </template> </el-table-column> </el-table> </div> </div> --> <div class="table-product"> <el-table ref="productRecordFormTable" @@ -219,7 +219,7 @@ flex: 0.35; } .table-product { flex: 0.6; flex: 1; } } .product-record-form-table >>> .stripe-row { src/views/product/workbench/productoutput-table.vue
@@ -1,25 +1,14 @@ <template> <div class="productoutput-div" style="padding:0px 14px;height: 100%;overflow: auto;" > <div class="productoutput-div" style="padding:0px 14px;height: 100%;overflow: auto;"> <div class="product-output-header"> <div style="height:28px;line-height:28px;"> <el-divider class="pane-divider" direction="vertical"></el-divider ><span style="font-size:14px;font-weight:bold">产出记录列表</span> <el-divider class="pane-divider" direction="vertical"></el-divider><span style="font-size:14px;font-weight:bold">产出记录列表</span> </div> </div> <ttable :table="table" @handleSelectionChange="handleSelectionChange" @currentChange="handleCurrentChange" :uploadInfo="uploadInfo" :prelang="prelang" :options="options" :ajaxFun="ajaxFun" :paramObj="paramObj" ref="productOutputForCheckTable" > <ttable :table="table" @handleSelectionChange="handleSelectionChange" @currentChange="handleCurrentChange" :uploadInfo="uploadInfo" :prelang="prelang" :options="options" :ajaxFun="ajaxFun" :paramObj="paramObj" ref="productOutputForCheckTable"> <template #toolbar></template> </ttable> @@ -177,12 +166,27 @@ </el-col> </el-row> --> <!-- 弹窗, 手动报检 --> <qualityTestApplyForm v-if="qualityTestApplyVisible" ref="qualityTestApply" @refreshDataList="getData" :applyPartList="multipleSelection" /> <el-dialog title="原材料投入" :visible.sync="dialogVisible" width="40%"> <el-table :data="tableData" style="width: 100%;" height="30em" border empty-text="暂无数据"> <el-table-column label="序号" type="index"></el-table-column> <el-table-column prop="partNo" label="零件编号" width="180"> </el-table-column> <el-table-column prop="partName" label="零件名称" :show-overflow-tooltip="true" width="180"> </el-table-column> <el-table-column prop="unit" label="单位" min-width="60"></el-table-column> <el-table-column prop="inputQuantity" label="使用数量"> <template v-slot="scope"> <el-input v-model="scope.row.inputQuantity"></el-input> </template> </el-table-column> </el-table> <span slot="footer" class="dialog-footer"> <el-button @click="dialogVisible = false">取 消</el-button> <el-button type="primary" @click="rawMaterialApiUpdate">确 定</el-button> </span> </el-dialog> <qualityTestApplyForm v-if="qualityTestApplyVisible" ref="qualityTestApply" @refreshDataList="getData" :applyPartList="multipleSelection" /> </div> </template> <style lang="scss" scoped> @@ -193,11 +197,13 @@ justify-content: space-between; align-items: center; } .pane-divider { width: 4px; background-color: #4283ee; } .productoutput-div >>> .inspection-btn { .productoutput-div>>>.inspection-btn { background-image: -webkit-linear-gradient(139deg, #5f6eef 0%, #2783ff 100%); background-image: -moz-linear-gradient(139deg, #5f6eef 0%, #2783ff 100%); background-image: linear-gradient(139deg, #5f6eef 0%, #2783ff 100%); @@ -206,26 +212,30 @@ border-radius: 15px; padding: 6px 15px; } .productoutput-div >>> .inspection-btn span { .productoutput-div>>>.inspection-btn span { margin-left: 3px; } .productoutput-div >>> .commonTable .el-table__header th { .productoutput-div>>>.commonTable .el-table__header th { background: #599ef4 !important; color: #fff !important; border: 0px !important; } .productoutput-div >>> .feed-btn-return { .productoutput-div>>>.feed-btn-return { background: url('/img/workbench/icon_bj.png') center center no-repeat; background-size: cover; font-size: 14px; } .productoutput-div >>> .feed-btn-return:before { .productoutput-div>>>.feed-btn-return:before { content: '报'; font-size: 14px; visibility: hidden; } .productoutput-div >>> .common-table-div { .productoutput-div>>>.common-table-div { margin: 0px 20px 0px !important; } @@ -238,7 +248,8 @@ border-radius: 15px; padding: 6px 15px; } .auto-judgment-btn >>> span { .auto-judgment-btn>>>span { margin-left: 3px; } </style> @@ -252,7 +263,9 @@ saveSelfSampleItem, getReportSampleForSelf, putReportSampleItem, autoJudgmentSelf autoJudgmentSelf, rawMaterialApi, rawMaterialApiUpdate } from '@/api/quality/report' import ttable from '@/views/common/ztt-table' import qualityTestApplyForm from './qualitytestapply-form' @@ -275,6 +288,7 @@ }, data() { return { tableData: [], paramObj: { workstationId: 0 }, ajaxFun: fetchOutputList, addOrUpdateVisible: false, @@ -317,7 +331,7 @@ isSearch: true, searchInfoType: 'text' }, { /* { minWidth: '160', prop: 'systemNo', label: '系统编号', @@ -334,11 +348,11 @@ isTrue: true, isSearch: true, searchInfoType: 'text' }, }, */ { minWidth: '160', prop: 'outBatchNo', label: 'SN号', label: '序列号', sort: true, isTrue: true, isSearch: true, @@ -371,7 +385,11 @@ isSearch: true, searchInfoType: 'text', formatter: (row, column, cellValue) => { return cellValue.substring(1, cellValue.length - 2) try{ return cellValue.substring(1, cellValue.length - 1) }catch(e){ return null } } }, { @@ -392,7 +410,7 @@ isSearch: true, searchInfoType: 'datetimerange' }, { /* { minWidth: '160', prop: 'startMeterMark', label: '起始米标', @@ -409,7 +427,7 @@ isTrue: true, isSearch: true, searchInfoType: 'text' }, }, */ { minWidth: '100', prop: 'productQty', @@ -538,7 +556,22 @@ // icon: 'feed-btn-return', // fun: this.qualityApply // } ] ], /* operator: [ { text: '投入', icon: 'el-icon-circle-plus-outline', type: 'text', size: 'small', fun: this.showHandleDiago } ], operatorConfig: { fixed: 'right', label: '操作', width: 100, minWidth: 100 } */ }, booleanOptions: [ { value: true, label: '是' }, @@ -565,7 +598,8 @@ isMoTestStandard: true, testStandardNo: '', reportSampleItemList: [] } }, dialogVisible: false } }, components: { @@ -574,7 +608,7 @@ }, watch: { workstationId: { handler: function(newVal, oldVal) { handler: function (newVal, oldVal) { this.createdData() } }, @@ -639,6 +673,23 @@ this.createdData() }, methods: { rawMaterialApiUpdate() { rawMaterialApiUpdate(this.tableData).then(res => { this.$message.success('原材料投入修改成功') this.dialogVisible = false; }) }, showHandleDiago(row) { this.dialogVisible = true this.tableData = [] rawMaterialApi(row.id).then(res => { if(res.data.data[0] == null){ this.tableData = [] } else { this.tableData = res.data.data } }) }, // 获取数据列表 getData() { this.$refs.productOutputForCheckTable.getDataList() @@ -656,7 +707,6 @@ }) }, handleSelectionChange(val) { console.log(val, 'ASSSS') this.multipleSelection = val }, handleCurrentChange(val) { src/views/product/workbench/returnmaterial-form.vue
@@ -32,18 +32,18 @@ > </el-table-column> <el-table-column prop="partBatchNo" prop="ifsBatchNo" header-align="center" align="center" label="零件批号" label="批号" > </el-table-column> <el-table-column <!-- <el-table-column prop="specs" header-align="center" align="center" label="规格型号" > > --> </el-table-column> <el-table-column prop="returnQuantity" @@ -162,6 +162,8 @@ feed.returnQuantity = this.dataList[i].returnQuantity feed.returnLocationId = this.dataList[i].returnLocationId feed.workstationId = this.workstationId feed.ifsWdr = this.dataList[i].ifsWdr feed.partNo = this.dataList[i].partNo feeds.push(feed) } if (feeds.length > 0) { src/views/product/workbench/taskinfo-pane.vue
@@ -2,39 +2,25 @@ <div ref="taskInfoDiv" class="taskinfo-div"> <div class="need-feed-header"> <div style="height:28px;line-height:28px;"> <el-divider class="pane-divider" direction="vertical"></el-divider ><span style="font-size:14px;font-weight:bold">工单详细信息</span> <div style="display: inline-block;vertical-align: middle;margin-left:2px;cursor: pointer;" @click="shrinkExpandTaskInfo" > <i :class="[ 'taskinfo-header', 'el-icon-arrow-right', taskInfoShow ? 'is-active' : '' ]" ></i> <el-divider class="pane-divider" direction="vertical"></el-divider><span style="font-size:14px;font-weight:bold">工单详细信息</span> <div style="display: inline-block;vertical-align: middle;margin-left:2px;cursor: pointer;" @click="shrinkExpandTaskInfo"> <i :class="[ 'taskinfo-header', 'el-icon-arrow-right', taskInfoShow ? 'is-active' : '' ]"></i> </div> </div> </div> <div ref="taskInfoMainDiv" class="taskinfo-main" :style="{ height: taskInfoMainHeight }" v-show="taskInfoShow" > <el-tabs v-model="taskInfoActiveName" type="card" class="taskInfoMainTab" @tab-click="handleClick" > <div ref="taskInfoMainDiv" class="taskinfo-main" :style="{ height: taskInfoMainHeight }" v-show="taskInfoShow"> <el-tabs v-model="taskInfoActiveName" type="card" class="taskInfoMainTab" @tab-click="handleClick"> <el-tab-pane label="主要信息" name="主要信息"> <el-row> <el-col :span="10" :offset="1" class="taskinfo-pane-div"> <el-row> <el-col :span="12"> <!-- <el-col :span="12"> <div class="param-top"> <div class="form-item"> <label>销售订单号</label> @@ -53,7 +39,7 @@ </div> </div> </div> </el-col> </el-col> --> <el-col :span="12"> <div class="param-top"> <div class="form-item"> @@ -64,12 +50,22 @@ </div> </div> </el-col> <el-col :span="12" ><div class="param-top"> <el-col :span="12"> <div class="param-top"> <div class="form-item"> <label>工序</label> <div style="color: #7A9EFD"> {{ currOperateTask.operationName }} </div> </div> </div> </el-col> <el-col :span="24"> <div class="param-top"> <div class="form-item"> <label>零件名称</label> <div style="color: #7A9EFD"> {{ currOperateTask.partName }} </div> </div> </div> @@ -91,16 +87,6 @@ <el-col :span="12"> <div class="param-top"> <div class="form-item"> <label>零件名称</label> <div style="color: #7A9EFD"> {{ currOperateTask.partName }} </div> </div> </div> </el-col> <el-col :span="12"> <div class="param-top"> <div class="form-item"> <label>成品规格</label> <div style="color: #7A9EFD"> {{ currOperateTask.productName }} @@ -108,7 +94,7 @@ </div> </div> </el-col> <el-col :span="12"> <!-- <el-col :span="12"> <div class="param-top"> <div class="form-item"> <label>载具规格</label> @@ -117,7 +103,7 @@ </div> </div> </div> </el-col> </el-col> --> </el-row> </el-col> </el-row> @@ -147,7 +133,7 @@ </div> </el-col> <el-col :span="12"> <!-- <el-col :span="12"> <div class="param-top"> <div class="form-item"> <label>盘长</label> @@ -164,6 +150,16 @@ ? 0 : currOperateTask.discNum }}盘 </div> </div> </div> </el-col> --> <el-col :span="12"> <div class="param-top"> <div class="form-item"> <label>实际开始时间</label> <div style="color: #7A9EFD"> {{ currOperateTask.actualStartDate }} </div> </div> </div> @@ -192,7 +188,6 @@ </div> </div> </el-col> <el-col :span="12"> <div class="param-top"> <div class="form-item"> @@ -203,17 +198,7 @@ </div> </div> </el-col> <el-col :span="12"> <div class="param-top"> <div class="form-item"> <label>实际开始时间</label> <div style="color: #7A9EFD"> {{ currOperateTask.actualStartDate }} </div> </div> </div> </el-col> <el-col :span="12"> <!-- <el-col :span="12"> <div class="param-top"> <div class="form-item"> <label>客户名称</label> @@ -222,7 +207,7 @@ </div> </div> </div> </el-col> </el-col> --> </el-row> </el-col> </el-row> @@ -232,75 +217,37 @@ <el-tree :data="batchTree" node-key="id"> </el-tree> </div> </el-tab-pane>--> <el-tab-pane label="按批次报工" name="按批次报工"> <!-- <el-tab-pane label="按批次报工" name="按批次报工"> <div> <ctable class="task-detail-info-table" :table="taskDetailInfoTable" <ctable class="task-detail-info-table" :table="taskDetailInfoTable" @handleSelectionChange="taskDetailInfoHandleSelectionChange" @objectSpanMethod="objectSpanMethodForTaskDetailInfo(arguments)" :mergeCols="detailInfoMergeCols" :searchList="taskDetailInfoSearchList" :uploadInfo="taskDetailInfoUploadInfo" :prelang="taskDetailInfoPrelang" :options="taskDetailInfoOptions" :paramObj="taskDetailInfoParamObj" :isShowPagination="isShowPagination" :bottomOffset="65" :ajaxFun="taskDetailInfoAjaxFun" ref="segmentmergeTaskDetailInfoTable" > @objectSpanMethod="objectSpanMethodForTaskDetailInfo(arguments)" :mergeCols="detailInfoMergeCols" :searchList="taskDetailInfoSearchList" :uploadInfo="taskDetailInfoUploadInfo" :prelang="taskDetailInfoPrelang" :options="taskDetailInfoOptions" :paramObj="taskDetailInfoParamObj" :isShowPagination="isShowPagination" :bottomOffset="65" :ajaxFun="taskDetailInfoAjaxFun" ref="segmentmergeTaskDetailInfoTable"> <template #toolbar> <div style="display:flex;"> <div style="display:flex;margin-left:5px ;"> <el-button style="height:32px;" @click="beginEdit()" type="primary" v-show="isEditShow" >编辑 <el-button style="height:32px;" @click="beginEdit()" type="primary" v-show="isEditShow">编辑 </el-button> </div> <div style="display:flex;margin-left:5px ;"> <el-button style="height:32px;" @click="cancelEdit()" type="primary" v-show="!isEditShow" >取消 <el-button style="height:32px;" @click="cancelEdit()" type="primary" v-show="!isEditShow">取消 </el-button> </div> <div style="display:flex;margin-left:10px ;"> <el-button style="height:32px;" @click="saveEdit()" type="primary" v-show="!isEditShow" >保存 <el-button style="height:32px;" @click="saveEdit()" type="primary" v-show="!isEditShow">保存 </el-button> </div> <div style="display:flex;margin-left:5px ;"> <div style="font-weight:bold;font-size:15px;line-height:28px;margin-right:5px;" > <div style="font-weight:bold;font-size:15px;line-height:28px;margin-right:5px;"> 工序选择 </div> <div style="display:flex;"> <el-select v-model="selectedOperationIds" placeholder="请选择" multiple clearable size="mini" class="segmentmerge-operation-select" @change="setQueryObj" > <el-option v-for="item in operationList" :key="item.id" :label="item.name" :value="item.id" > <el-select v-model="selectedOperationIds" placeholder="请选择" multiple clearable size="mini" class="segmentmerge-operation-select" @change="setQueryObj"> <el-option v-for="item in operationList" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select> </div> @@ -309,57 +256,32 @@ </template> </ctable> </div> </el-tab-pane> </el-tab-pane> --> </el-tabs> </div> <div ref="taskInfoBodyDiv" class="taskinfo-body" :style="{ height: taskInfoBodyHeight }" > <div ref="taskInfoBodyDiv" class="taskinfo-body" :style="{ height: taskInfoBodyHeight }"> <div style="display:flex;justify-content:space-between;height:100%;"> <div style="height:100%;width:70%;"> <!-- <div v-if="paramTabs.length == 0" class="taskinfo-body-div">--> <!-- 不存在绑定的工艺卡和配盘单--> <!-- </div>--> <el-tabs v-model="activeName" type="card" @tab-click="handleTabClick"> <el-tab-pane v-for="(paramTab, index) in paramTabs" :key="index" :label="paramTab" :name="paramTab" > <el-tab-pane v-for="(paramTab, index) in paramTabs" :key="index" :label="paramTab" :name="paramTab"> <div class="pane-div"> <div> <el-divider class="pane-divider" direction="vertical" ></el-divider ><span style="font-size:14px;font-weight:bold">参数集</span> <el-divider class="pane-divider" direction="vertical"></el-divider><span style="font-size:14px;font-weight:bold">参数集</span> <div class="template-content-div"> <el-select v-model="currTemplateId" placeholder="请选择" style="width: 300px;" @change="tabParamsClick()" clearable > <el-option v-for="item in everyTabParams" :key="item.id" :label="item.operationTemplateName" :value="item.id" > <el-select v-model="currTemplateId" placeholder="请选择" style="width: 300px;" @change="tabParamsClick()" clearable> <el-option v-for="item in everyTabParams" :key="item.id" :label="item.operationTemplateName" :value="item.id"> <div style="display: table;width: 300px;"> <div style="display: table-row;"> <div style="display: table-cell;width:50%;text-align: center;" > <div style="display: table-cell;width:50%;text-align: center;"> {{ item.systemNo }} </div> <div style="display: table-cell;text-align: center;" > <div style="display: table-cell;text-align: center;"> {{ item.operationTemplateName }} </div> </div> @@ -430,45 +352,21 @@ </div> </div> <div style="margin-top:14px;"> <el-divider class="pane-divider" direction="vertical" ></el-divider ><span style="font-size:14px;font-weight:bold">参数</span> <el-divider class="pane-divider" direction="vertical"></el-divider><span style="font-size:14px;font-weight:bold">参数</span> <div class="params-content-div"> <el-table :data="params" :height="tableHeight" :header-cell-style="paramsTableHeaderStyle" :row-class-name="tableRowClassName" class="taskinfo-params-table" > <el-table-column prop="code" label="编号" width="200" align="center" > <el-table :data="params" :height="tableHeight" :header-cell-style="paramsTableHeaderStyle" :row-class-name="tableRowClassName" class="taskinfo-params-table"> <el-table-column prop="code" label="编号" width="200" align="center"> </el-table-column> <el-table-column prop="parameterItem" label="名称" width="200" align="center" > <el-table-column prop="parameterItem" label="名称" width="200" align="center"> <template slot-scope="scope"> <span >{{ scope.row.parameterItem }}({{ scope.row.unit }})</span > <span>{{ scope.row.parameterItem }}({{ scope.row.unit }})</span> </template> </el-table-column> <el-table-column prop="paramValue" label="值" align="center" > <el-table-column prop="paramValue" label="值" align="center"> </el-table-column> </el-table> </div> @@ -482,7 +380,7 @@ </div> </el-tab-pane> <!--工艺配置单--> <el-tab-pane :label="tabNameExt0" :name="tabNameExt0" class="l-mes"> <!-- <el-tab-pane :label="tabNameExt0" :name="tabNameExt0" class="l-mes"> --> <!-- <div style="margin-left: 40px"> <el-radio v-model="configContent.modelType" label="01" disabled >模板1</el-radio @@ -491,91 +389,44 @@ >模板2</el-radio > </div> --> <el-divider content-position="left">配置单内容</el-divider> <!-- <el-divider content-position="left">配置单内容</el-divider> --> <!--模板1--> <div class="node-content-remark" v-if="configContent.modelType === '01'" > <el-form class="configform1" :inline="true" ref="form" label-width="80px" > <!-- <div class="node-content-remark" v-if="configContent.modelType === '01'"> <el-form class="configform1" :inline="true" ref="form" label-width="80px"> <el-form-item label="订单编号:"> <el-input v-model="configContent.proNo" readonly></el-input> </el-form-item> <el-form-item label="项目名称:"> <el-input v-model="configContent.proName" readonly ></el-input> <el-input v-model="configContent.proName" readonly></el-input> </el-form-item> <el-form-item label="生产要求描述:" style="width: 100%" label-width="105px" > <el-form-item label="生产要求描述:" style="width: 100%" label-width="105px"> <div class="ql-editor" v-html="configContent.remark1" /> </el-form-item> </el-form> </el-form> --> <!-- 生产要求描述:--> </div> <!-- </div> --> <!--模板2--> <div class="node-content-remark2" v-if="configContent.modelType === '02'" > <div class="node-content-remark2" style="width: 90%;margin-left: 30px;" > <el-form class="configform2" :inline="true" ref="form" label-width="80px" > <!-- <div class="node-content-remark2" v-if="configContent.modelType === '02'"> <div class="node-content-remark2" style="width: 90%;margin-left: 30px;"> <el-form class="configform2" :inline="true" ref="form" label-width="80px"> <el-form-item label="合同编号:" style="width: 40%"> <el-input v-model="configContent.proNo" readonly ></el-input> <el-input v-model="configContent.proNo" readonly></el-input> </el-form-item> <el-form-item label="项目名称:" style="width: 40%"> <el-input v-model="configContent.proName" readonly ></el-input> <el-input v-model="configContent.proName" readonly></el-input> </el-form-item> <el-form-item label="印字要求:" style="width: 100%"> <el-input v-model="configContent.printReq" readonly ></el-input> <el-input v-model="configContent.printReq" readonly></el-input> </el-form-item> <el-form-item label="生产规格型号及数量:" style="width: 100%" label-width="140px" > <el-form-item label="生产规格型号及数量:" style="width: 100%" label-width="140px"> <div class="ql-editor" v-html="configContent.remark1" /> </el-form-item> <el-form-item label="生产要求描述:" style="width: 100%" label-width="105px" > <el-form-item label="生产要求描述:" style="width: 100%" label-width="105px"> <div class="ql-editor" v-html="configContent.remark2" /> </el-form-item> <el-form-item label="实际印字要求:" style="width: 80%" label-width="105px" > <el-form-item label="实际印字要求:" style="width: 80%" label-width="105px"> <el-input v-model="configContent.realPrintReq"></el-input> </el-form-item> <el-row class="bodyrow"> @@ -584,9 +435,7 @@ <div class="form-item" style="text-align: left"> <label>发泡缆芯(Φmm)</label> <div style="color: #7A9EFD"> <el-input v-model="configContent.cableCore" ></el-input> <el-input v-model="configContent.cableCore"></el-input> </div> </div> </div> @@ -603,9 +452,7 @@ <div class="form-item"> <label>模芯(Φmm)</label> <div style="color: #7A9EFD"> <el-input v-model="configContent.modelCore" ></el-input> <el-input v-model="configContent.modelCore"></el-input> </div> </div> </div> @@ -615,33 +462,27 @@ <div class="form-item"> <label>模套(Φmm)</label> <div style="color: #7A9EFD"> <el-input v-model="configContent.modelSleeve" ></el-input> <el-input v-model="configContent.modelSleeve"></el-input> </div> </div> </div> </el-col> <el-col :span="3" ><div class="param-top"> <el-col :span="3"> <div class="param-top"> <div class="form-item"> <label>定径模(Φmm)</label> <div style="color: #7A9EFD"> <el-input v-model="configContent.sizingModel" ></el-input> <el-input v-model="configContent.sizingModel"></el-input> </div> </div> </div> </el-col> <el-col :span="3" ><div class="param-top"> <el-col :span="3"> <div class="param-top"> <div class="form-item"> <label>过模(Φmm)</label> <div style="color: #7A9EFD"> <el-input v-model="configContent.strandModel" ></el-input> <el-input v-model="configContent.strandModel"></el-input> </div> </div> </div> @@ -651,153 +492,72 @@ 产品的性能要求:20℃时的电气特征 </div> <el-table :data="configContent.processConfigDataList" style="width: 100%;margin-top: 10px" border > <el-table :data="configContent.processConfigDataList" style="width: 100%;margin-top: 10px" border> <el-table-column prop="date" label="频率(MHz)"> <template slot-scope="scope"> <el-input v-model="scope.row.frequency" disabled ></el-input> <el-input v-model="scope.row.frequency" disabled></el-input> </template> </el-table-column> <el-table-column prop="name" label="最大传送衰减(dB/km)"> <template slot-scope="scope"> <el-input v-model="scope.row.deliveryReduce" disabled ></el-input> <el-input v-model="scope.row.deliveryReduce" disabled></el-input> </template> </el-table-column> <el-table-column prop="province" label="耦合损耗max(dB),2米,95%" > <el-table-column prop="province" label="耦合损耗max(dB),2米,95%"> <template slot-scope="scope"> <el-input v-model="scope.row.couplingLoss" disabled ></el-input> <el-input v-model="scope.row.couplingLoss" disabled></el-input> </template> </el-table-column> </el-table> <el-form-item label="工作频带内驻波比:" style="width: 80%" label-width="120px" > <el-input v-model="configContent.workFrequency" disabled ></el-input> <el-form-item label="工作频带内驻波比:" style="width: 80%" label-width="120px"> <el-input v-model="configContent.workFrequency" disabled></el-input> </el-form-item> <el-form-item label="频率范围:" style="width: 80%" label-width="120px" > <el-input v-model="configContent.frequencyRange" disabled ></el-input> <el-form-item label="频率范围:" style="width: 80%" label-width="120px"> <el-input v-model="configContent.frequencyRange" disabled></el-input> </el-form-item> <el-form-item label="直流电阻:" style="width: 80%" label-width="120px" > <el-input v-model="configContent.resistance" disabled ></el-input> <el-form-item label="直流电阻:" style="width: 80%" label-width="120px"> <el-input v-model="configContent.resistance" disabled></el-input> </el-form-item> <el-form-item label="备注:" style="width: 100%" label-width="120px" > <el-form-item label="备注:" style="width: 100%" label-width="120px"> <div class="ql-editor" v-html="configContent.remark4" /> </el-form-item> </el-form> </div> </div> </el-tab-pane> </el-tab-pane> --> <!--工艺附件--> <el-tab-pane :label="tabNameExt1" :name="tabNameExt1"> <el-table :data="processConfigFileTableData" border style="width: 100%;" :header-cell-style="{ background: 'antiquewhite', color: '#333' }" > <el-table-column prop="orderNumber" label="订单号" align="center" ></el-table-column> <el-table-column prop="lineNumber" label="行号" align="center" ></el-table-column> <el-table-column prop="originalFileName" label="文件名" align="center" ></el-table-column> <el-table-column prop="createUser" label="上传人" align="center" ></el-table-column> <el-table-column prop="createTime" label="上传时间" align="center" ></el-table-column> <!-- <el-tab-pane :label="tabNameExt1" :name="tabNameExt1"> <el-table :data="processConfigFileTableData" border style="width: 100%;" :header-cell-style="{ background: 'antiquewhite', color: '#333' }"> <el-table-column prop="orderNumber" label="订单号" align="center"></el-table-column> <el-table-column prop="lineNumber" label="行号" align="center"></el-table-column> <el-table-column prop="originalFileName" label="文件名" align="center"></el-table-column> <el-table-column prop="createUser" label="上传人" align="center"></el-table-column> <el-table-column prop="createTime" label="上传时间" align="center"></el-table-column> <el-table-column label="操作"> <template slot-scope="scope"> <el-button @click="downloadProcessConfigFile(scope.row)" type="text" size="small" >下载</el-button > <el-button @click="downloadProcessConfigFile(scope.row)" type="text" size="small">下载</el-button> </template> </el-table-column> </el-table> </el-tab-pane> </el-tab-pane> --> <!--结构图--> <el-tab-pane :label="tabNameExt2" :name="tabNameExt2"> <!-- <el-tab-pane :label="tabNameExt2" :name="tabNameExt2"> <div style="text-align: center; padding: 15px 15px;"> <img width="70%" v-for="(image, index) in structureImages" :key="index" :src="image.url" alt="" /> <img width="70%" v-for="(image, index) in structureImages" :key="index" :src="image.url" alt="" /> </div> </el-tab-pane> </el-tab-pane> --> </el-tabs> </div> <div style="height:100%;width:27%;"> <div style="height: 50px;line-height:50px;"> <span style="color:#363636;font-size:16px;font-weight:700;" >工艺备注</span > <span style="color:#363636;font-size:16px;font-weight:700;">工艺备注</span> </div> <div style="height:calc( 100% - 50px );overflow: auto;padding:10px 10px;" > <div style="height:calc( 100% - 50px );overflow: auto;padding:10px 10px;"> <div> <span v-html="this.currOperateTask.routingOperationRemark"></span> </div> @@ -805,26 +565,13 @@ </div> </div> </div> <productOutByBatchFormDialog :currshowlist.sync="showProductByBatchForm" :productList="productList" :discToolMeasurementVal="discToolMeasurementVal" :parentInfo="parentInfo" :currentDutyRecord="currentDutyRecord" :personBoardList="personBoardList" :groupStatus="groupStatus" :orderSnGenerateIdList="orderSnGenerateIdList" @refreshTaskDetailInfoList="getSegmentmergeTaskDetailInfoData" /> <isReproduceFormDialog :currshowlist.sync="showIsReproduceForm" :orderSnGenerateIdList="orderSnGenerateIdList" @refreshTaskDetailInfoList="getSegmentmergeTaskDetailInfoData" /> <processConfigurationSheetDialog :currshowlist.sync="showProcessConfigurationSheet" :orderInfo="orderInfo" /> <productOutByBatchFormDialog :currshowlist.sync="showProductByBatchForm" :productList="productList" :discToolMeasurementVal="discToolMeasurementVal" :parentInfo="parentInfo" :currentDutyRecord="currentDutyRecord" :personBoardList="personBoardList" :groupStatus="groupStatus" :orderSnGenerateIdList="orderSnGenerateIdList" @refreshTaskDetailInfoList="getSegmentmergeTaskDetailInfoData" /> <isReproduceFormDialog :currshowlist.sync="showIsReproduceForm" :orderSnGenerateIdList="orderSnGenerateIdList" @refreshTaskDetailInfoList="getSegmentmergeTaskDetailInfoData" /> <processConfigurationSheetDialog :currshowlist.sync="showProcessConfigurationSheet" :orderInfo="orderInfo" /> </div> </template> <style lang="scss" scoped> @@ -834,13 +581,16 @@ justify-content: space-between; align-items: center; } .taskinfo-header.is-active { transform: rotate(90deg); } .taskinfo-header { transition: transform 0.3s; font-weight: 300; } .taskinfo-div { height: 100%; overflow: auto; @@ -848,11 +598,13 @@ /*display: flex; flex-direction: column;*/ } .taskinfo-pane-div { border: 0.5px solid #f8f8fb; border-radius: 10px; height: 120px; } .taskinfo-main { /*flex-grow: 0; flex-shrink: 0;*/ @@ -861,10 +613,12 @@ justify-content: space-between; overflow: auto; } .taskinfo-main-item { width: 33%; position: relative; } .param-top { width: 100%; height: 30px; @@ -895,6 +649,7 @@ vertical-align: text-top; } } /*.taskinfo-main-item img {*/ /* width: 100%;*/ /*}*/ @@ -904,45 +659,55 @@ margin-top: 5px; background-color: #fff; } .taskinfo-body >>> .el-tabs { .taskinfo-body>>>.el-tabs { height: 100%; } .taskinfo-body >>> .el-tabs__item.is-active { .taskinfo-body>>>.el-tabs__item.is-active { color: #363636; background-color: #fff; font-weight: bold; } .taskinfo-body >>> .el-tabs__item:hover { .taskinfo-body>>>.el-tabs__item:hover { color: #363636; font-weight: bold; } .taskinfo-body >>> .el-tabs__item { .taskinfo-body>>>.el-tabs__item { background-color: #f3f8fb; min-width: 115px; height: 49px; font-size: 16px !important; text-align: center; } .taskinfo-body >>> .el-tabs__content { .taskinfo-body>>>.el-tabs__content { height: calc(100% - 65px); } .taskinfo-body >>> .el-tabs__content .el-tab-pane { .taskinfo-body>>>.el-tabs__content .el-tab-pane { height: 100%; overflow: auto; } .configform1 { .el-input { width: 300px; } } .configform2 { /deep/ .el-form-item__content { width: 70% !important; } .el-input { width: 100%; } } .taskinfo-body-div { text-align: center; margin: auto; @@ -950,6 +715,7 @@ color: #9ec1eb; white-space: nowrap; } .pane-div { height: 100%; padding: 5px 14px; @@ -959,17 +725,21 @@ width: 4px; background-color: #4283ee; } .template-content-div { margin-top: 14px; } .template-content-div > div:first-child img { .template-content-div>div:first-child img { width: 100%; } .template-listbody-div { height: calc(100% - 94px); overflow: auto; } .template-listbody-div > div { .template-listbody-div>div { width: 100%; height: 54px; margin-bottom: 4px; @@ -977,101 +747,122 @@ box-shadow: 0px 2px 14px 2px rgba(47, 47, 47, 0.06); border: solid 1px #f0f0f0; } .template-unchecked-div { background-color: #fff; } .template-checked-div { background-color: #6290ec; } .template-checked-systemno { color: #fffdfd; } .template-checked-templatename { color: #fffdfd; } .template-unchecked-systemno { color: #4898fc; } .template-unchecked-templatename { color: #3f3f3f; } .template-listbody-div >>> .el-checkbox.is-disabled .el-checkbox__inner { .template-listbody-div>>>.el-checkbox.is-disabled .el-checkbox__inner { cursor: pointer; } .template-listbody-div >>> .el-checkbox.is-disabled.is-checked .el-checkbox__inner { .template-listbody-div>>>.el-checkbox.is-disabled.is-checked .el-checkbox__inner { background-color: #fff; border-color: #409eff; } .template-listbody-div >>> .el-checkbox.is-disabled.is-checked .el-checkbox__inner::after { .template-listbody-div>>>.el-checkbox.is-disabled.is-checked .el-checkbox__inner::after { border-color: #409eff; } .params-content-div { margin-top: 14px; } .el-table >>> .stripe-row { .el-table>>>.stripe-row { background: #eef3fd; } .params-pagination { margin-top: 5px; text-align: right; } .params-pagination >>> .el-icon-arrow-left { .params-pagination>>>.el-icon-arrow-left { background: url('/img/workbench/icon_previous.png') center center no-repeat; background-size: cover; } .params-pagination >>> .el-icon-arrow-left:before { .params-pagination>>>.el-icon-arrow-left:before { content: '替'; font-size: 20px; visibility: hidden; } .params-pagination >>> .el-icon-arrow-right { .params-pagination>>>.el-icon-arrow-right { background: url('/img/workbench/icon_next.png') center center no-repeat; background-size: cover; } .params-pagination >>> .el-icon-arrow-right:before { .params-pagination>>>.el-icon-arrow-right:before { content: '换'; font-size: 20px; visibility: hidden; } .params-pagination >>> .el-pager li { .params-pagination>>>.el-pager li { min-width: 28px; } .params-pagination >>> button { .params-pagination>>>button { min-width: 23.5px; } .params-pagination >>> .btn-prev { .params-pagination>>>.btn-prev { padding: 0px 4px 0px 2px; } .params-pagination >>> .btn-next { .params-pagination>>>.btn-next { padding: 0px 2px 0px 4px; } .taskinfo-params-table >>> td { .taskinfo-params-table>>>td { padding: 3px 0px; } .taskInfoMainTab >>> .el-tabs__header { .taskInfoMainTab>>>.el-tabs__header { margin: 0 0; } .taskInfoMainTab >>> .el-tabs__header { .taskInfoMainTab>>>.el-tabs__header { margin: 0 0; } .taskInfoMainTab >>> .el-tabs__header .el-tabs__item { .taskInfoMainTab>>>.el-tabs__header .el-tabs__item { height: 28px; line-height: 28px; } .bodyrow { .el-input { width: 80%; } .form-item { text-align: center; } } .ql-editor { color: #444; line-height: 20px; @@ -1080,26 +871,17 @@ font-size: 12px; border-bottom: 1px solid #ddd; } .task-detail-info-table >>> .custom-table-div { .task-detail-info-table>>>.custom-table-div { margin-top: 0px !important; } .task-detail-info-table >>> .custom-table-div .customTable .el-table__body-wrapper .el-table__row .cell { .task-detail-info-table>>>.custom-table-div .customTable .el-table__body-wrapper .el-table__row .cell { padding-left: 0px !important; padding-right: 0px !important; } .task-detail-info-table >>> .customTable .el-table__header-wrapper .el-table__header .el-table-column--selection .el-checkbox__input { .task-detail-info-table>>>.customTable .el-table__header-wrapper .el-table__header .el-table-column--selection .el-checkbox__input { display: none; } </style> @@ -1481,8 +1263,8 @@ computed: { ...mapGetters(['userInfo']) }, mounted() {}, created() {}, mounted() { }, created() { }, methods: { handleClick() { if (this.taskInfoActiveName == '按批次报工') { src/views/product/workbench/workReport-feed.vue
@@ -36,7 +36,7 @@ <el-table-column label="报工单号" prop="productNo" align="center"> </el-table-column> <el-table-column label="SN号" label="序列号" prop="partBatchNo" align="center" :show-overflow-tooltip="true" @@ -287,6 +287,7 @@ } else { this.$message.error('更新投入失败') } this.visible = false }) .catch((error) => {}) } else { @@ -307,6 +308,7 @@ } else { this.$message.error('添加投入失败') } this.visible = false }) .catch((error) => {}) } src/views/product/workbench/workReportCard.vue
@@ -12,16 +12,11 @@ <div class="tabDivClass"> <div class="product-out-header-left"> <div style="height:28px;line-height:28px;"> <el-divider class="pane-divider" direction="vertical"></el-divider ><span style="font-size:14px;font-weight:bold">产出</span> <el-divider class="pane-divider" direction="vertical"></el-divider><span style="font-size:14px;font-weight:bold">产出</span> <el-tooltip effect="dark" content="刷新列表" placement="top"> <el-button class="step-refresh-btn" icon="el-icon-refresh" type="info" circle @click="getBatchReport(5)" ></el-button> <el-button class="step-refresh-btn" icon="el-icon-refresh" type="info" circle @click="getBatchReport(5)"></el-button> </el-tooltip> </div> <div style="margin-left: 30px"> @@ -39,29 +34,21 @@ </div> </div> <div style="display:flex;flex-wrap:wrap;"> <el-button class="export-btn" type="primary" @click="exportOutProduct()" >导出 <el-button class="export-btn" type="primary" @click="exportOutProduct()">导出 </el-button> <el-button <!-- <el-button class="out-btn" type="primary" :disabled="currProductMainDisable || currentDutyRecord.isConfirm" v-if="!editShow" @click="addShiftProductOut()" >交班产出 </el-button> --> <el-button class="batch-out-btn" type="primary" :disabled="currProductMainDisable || currentDutyRecord.isConfirm" v-if="!editShow" @click="addBatchProductOut()">汇报产出 </el-button> <el-button class="batch-out-btn" type="primary" :disabled="currProductMainDisable || currentDutyRecord.isConfirm" v-if="!editShow" @click="addBatchProductOut()" >批量产出 </el-button> <div class="print-button-class"> <!-- <div class="print-button-class"> <el-button type="danger" class="print-btn" @click="batchPrint()" >大标签打印 </el-button> @@ -83,8 +70,8 @@ v-model="batchSmallPrintRadio" @change="labelTabChange2" ></el-checkbox> </div> <div </div> --> <!-- <div class="print-button-class" v-if="permissions.product_finished_productLabel1_unlimit" > @@ -110,8 +97,8 @@ v-model="warehousingPrintSingleRadio" @change="labelTabChange3" ></el-checkbox> </div> <div </div> --> <!-- <div class="print-button-class" v-if="permissions.product_finished_productLabel2" > @@ -126,78 +113,36 @@ v-model="warehousingSmalllPrintRadio" @change="labelTabChange4" ></el-checkbox> </div> <el-button class="change-shift-out-btn" type="primary" :disabled="currProductMainDisable || currentDutyRecord.isConfirm" v-if="!editShow" @click="editList()" >编辑 </div> --> <el-button class="change-shift-out-btn" type="primary" :disabled="currProductMainDisable || currentDutyRecord.isConfirm" v-if="!editShow" @click="editList()">编辑 </el-button> <el-button class="batch-out-del-btn" type="primary" :disabled="currProductMainDisable || currentDutyRecord.isConfirm" v-if="editShow" @click="cancelSaveList()" >取消 <el-button class="batch-out-del-btn" type="primary" :disabled="currProductMainDisable || currentDutyRecord.isConfirm" v-if="editShow" @click="cancelSaveList()">取消 </el-button> <el-button class="change-shift-out-btn" type="primary" :disabled="currProductMainDisable || currentDutyRecord.isConfirm" v-if="editShow" @click="saveList()" >保存 <el-button class="change-shift-out-btn" type="primary" :disabled="currProductMainDisable || currentDutyRecord.isConfirm" v-if="editShow" @click="saveList()">保存 </el-button> <!-- <el-button class="tracking-out-revoke-btn" type="primary" icon="tracking-btn-out" :disabled="currProductMainDisable || currentDutyRecord.isConfirm" v-if="!editShow" >交班 </el-button> --> <el-button class="submit-out-btn" type="primary" :disabled="currProductMainDisable || currentDutyRecord.isConfirm" v-if="!editShow" @click="submitList()" :loading="submitLoading" >提交 <el-button class="submit-out-btn" type="primary" :disabled="currProductMainDisable || currentDutyRecord.isConfirm" v-if="!editShow" @click="submitList()" :loading="submitLoading">提交 </el-button> <el-button class="batch-out-del-btn" type="primary" :disabled="currProductMainDisable || currentDutyRecord.isConfirm" v-if="!editShow" @click="deleteList()" >删除 <el-button class="batch-out-del-btn" type="primary" :disabled="currProductMainDisable || currentDutyRecord.isConfirm" v-if="!editShow" @click="deleteList()">删除 </el-button> <el-button v-if="permissions.product_main_revoke" type="danger" class="revoke-btn" @click="revokeList()" :loading="removeLoading" >撤销</el-button > <el-button v-if="permissions.product_state_reset" type="primary" class="change-shift-out-btn" @click="goReset()" :loading="resetLoading" >状态重置</el-button > <!-- v-if="permissions.product_main_revoke" --> <el-button type="danger" class="revoke-btn" @click="revokeList()" :loading="removeLoading">撤销</el-button> <!-- v-if="permissions.product_state_reset" --> <el-button type="primary" class="change-shift-out-btn" @click="goReset()" :loading="resetLoading">状态重置</el-button> </div> </div> <el-table ref="productOutTable" :data="productOutputList" height="calc(100% - 118px)" :header-cell-style="productOutTableHeaderCellStyle" :row-class-name="productOutTableRowClassName" class="tracking-table" @selection-change="handleSelectionChange" > <el-table ref="productOutTable" :data="productOutputList" height="calc(100% - 118px)" :header-cell-style="productOutTableHeaderCellStyle" :row-class-name="productOutTableRowClassName" class="tracking-table" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55"> </el-table-column> <el-table-column label="序号" width="50px"> @@ -208,74 +153,43 @@ <el-table-column label="报工单号" prop="productNo" align="center"> </el-table-column> <el-table-column label="状态" prop="state" align="center" :formatter="formatState" width="120" > <el-table-column label="状态" prop="state" align="center" :formatter="formatState" width="120"> <template slot="header" slot-scope="scope"> <div style="line-height: 14px;">状态</div> <div class="th" @click.stop> <template> <el-select clearable v-model="paramObject.state" placeholder="全部状态" @change="getBatchReport(5)" style="width: 100%" > <el-option v-for="item in stateTagArr" :key="item.id" :label="item.label" :value="item.value" /> <el-select clearable v-model="paramObject.state" placeholder="全部状态" @change="getBatchReport(5)" style="width: 100%"> <el-option v-for="item in stateTagArr" :key="item.id" :label="item.label" :value="item.value" /> </el-select> </template> </div> </template> </el-table-column> <el-table-column label="零件编号" prop="partNo" align="center" :show-overflow-tooltip="true" > <el-table-column label="零件编号" prop="partNo" align="center" :show-overflow-tooltip="true"> </el-table-column> <el-table-column label="零件名称" prop="partName" align="center" :show-overflow-tooltip="true" > <el-table-column label="零件名称" prop="partName" align="center" :show-overflow-tooltip="true"> </el-table-column> <el-table-column label="SN号" prop="outBatchNo" align="center" width="120" :show-overflow-tooltip="true" > <template slot="header" slot-scope="scope"> <div style="line-height: 14px;">SN号</div> <el-table-column label="序列号" prop="outBatchNo" align="center" width="120" :show-overflow-tooltip="true"> <template slot-scope="scope"> <el-input :id="'idReport_' + +scope.$index" :ref="'reference_' + scope.$index" v-if="scope.row.isEdit" v-model="scope.row.outBatchNo" placeholder="序列号"></el-input> <template v-if="!scope.row.isEdit">{{ scope.row.outBatchNo }}</template> </template> <!-- <template slot="header" slot-scope="scope"> <div style="line-height: 14px;">序列号</div> <div class="th" @click.stop> <template> <el-input clearable @keyup.enter.native="getBatchReport(5)" v-model="paramObject.outBatchNo" placeholder="SN号" @clear="getBatchReport(5)" style="width: 100%" > <el-input clearable @keyup.enter.native="getBatchReport(5)" v-model="paramObject.outBatchNo" placeholder="序列号" @clear="getBatchReport(5)" style="width: 100%"> </el-input> </template> </div> </template> </template> --> </el-table-column> <el-table-column <!-- <el-table-column label="载具编号" prop="reelNumber" align="center" @@ -294,8 +208,8 @@ scope.row.reelNumber }}</template> </template> </el-table-column> <el-table-column </el-table-column> --> <!-- <el-table-column label="起始米标" prop="startMeterMark" align="center" @@ -332,15 +246,26 @@ scope.row.endMeterMark }}</template> </template> </el-table-column> --> <el-table-column label="生产数量" prop="productQty" align="center" width="100"> <template slot-scope="scope"> <el-input :id="'idReport_' + +scope.$index" :ref="'reference_' + scope.$index" v-if="scope.row.isEdit" v-model="scope.row.productQty" placeholder="生产数量"></el-input> <template v-if="!scope.row.isEdit">{{ scope.row.productQty }}</template> </template> </el-table-column> <el-table-column label="生产数量" prop="productQty" align="center" width="100" > <el-table-column label="WDR号" prop="wdr" align="center" width="100"> <template slot-scope="scope"> <el-input :id="'idReport_' + +scope.$index" :ref="'reference_' + scope.$index" v-if="scope.row.isEdit" v-model="scope.row.wdr" placeholder="WDR号"></el-input> <template v-if="!scope.row.isEdit">{{ scope.row.wdr }}</template> </template> </el-table-column> <el-table-column label="分段描述" prop="segmentDesc" align="center"> <!-- <el-table-column label="分段描述" prop="segmentDesc" align="center"> <template slot-scope="scope"> <el-input :id="'idReport_' + +scope.$index" @@ -353,69 +278,43 @@ scope.row.segmentDesc }}</template> </template> </el-table-column> </el-table-column> --> <el-table-column label="报废数量" prop="scrapQty" align="center"> <template slot-scope="scope"> <el-input :id="'idReport_' + +scope.$index" :ref="'reference_' + scope.$index" v-if="scope.row.isEdit" v-model="scope.row.scrapQty" placeholder="报废数量" ></el-input> <el-input :id="'idReport_' + +scope.$index" :ref="'reference_' + scope.$index" v-if="scope.row.isEdit" v-model="scope.row.scrapQty" placeholder="报废数量"></el-input> <template v-if="!scope.row.isEdit">{{ scope.row.scrapQty }}</template> </template> </el-table-column> <el-table-column label="IFS批次号" prop="ifsBatchNo" align="center" width="120" > <template slot="header" slot-scope="scope"> <el-table-column label="IFS批次号" prop="ifsBatchNo" align="center" width="120"> <!-- <template slot="header" slot-scope="scope"> <div style="line-height: 14px;">IFS批次号</div> <div class="th" @click.stop> <template> <el-input clearable @keyup.enter.native="getBatchReport(5)" v-model="paramObject.ifsBatchNo" placeholder="IFS批次号" @clear="getBatchReport(5)" style="width: 100%" > <el-input clearable @keyup.enter.native="getBatchReport(5)" v-model="paramObject.ifsBatchNo" placeholder="IFS批次号" @clear="getBatchReport(5)" style="width: 100%"> </el-input> </template> </div> </template> <template slot-scope="scope"> <el-input :id="'idReport_' + +scope.$index" :ref="'reference_' + scope.$index" v-if="scope.row.isIfsBatchNoEdit" v-model="scope.row.ifsBatchNo" placeholder="IFS批次号" ></el-input> <el-input :id="'idReport_' + +scope.$index" :ref="'reference_' + scope.$index" v-if="scope.row.isIfsBatchNoEdit" v-model="scope.row.ifsBatchNo" placeholder="IFS批次号"></el-input> <template v-if="!scope.row.isIfsBatchNoEdit">{{ scope.row.ifsBatchNo }}</template> </template> </template> --> </el-table-column> <el-table-column label="备注" prop="remark" align="center"> <template slot-scope="scope"> <el-input :id="'idReport_' + +scope.$index" :ref="'reference_' + scope.$index" v-if="scope.row.isEdit" v-model="scope.row.remark" placeholder="备注" ></el-input> <el-input :id="'idReport_' + +scope.$index" :ref="'reference_' + scope.$index" v-if="scope.row.isEdit" v-model="scope.row.remark" placeholder="备注"></el-input> <template v-if="!scope.row.isEdit">{{ scope.row.remark }}</template> </template> </el-table-column> <el-table-column label="盘具重量" prop="reelWeight" align="center"> <!-- <el-table-column label="盘具重量" prop="reelWeight" align="center"> <template slot-scope="scope"> <el-input :id="'idReport_' + +scope.$index" @@ -442,39 +341,29 @@ scope.row.grossWeight }}</template> </template> </el-table-column> <el-table-column label="系统号" prop="systemNo" align="center"> </el-table-column> </el-table-column> --> <!-- <el-table-column label="系统号" prop="systemNo" align="center"> </el-table-column> --> <el-table-column label="工序名称" prop="operationName" align="center"> </el-table-column> <el-table-column label="单位" prop="unit" align="center"> </el-table-column> <el-table-column <!-- <el-table-column label="交班状态" prop="shiftState" align="center" :formatter="formatshiftState" > </el-table-column> <el-table-column label="打印次数" prop="printNum" align="center"> </el-table-column> <el-table-column label="操作" align="center" width="190px" fixed="right" > </el-table-column> --> <!-- <el-table-column label="打印次数" prop="printNum" align="center"> </el-table-column> --> <el-table-column label="操作" align="center" width="80" fixed="right"> <template slot-scope="scope"> <el-tooltip effect="dark" content="投入" placement="top-start"> <el-button type="text" size="small" class="blue-but" @click="searchDetail(scope.$index, scope.row)" >投入</el-button > <el-button type="text" size="small" class="blue-but" @click="searchDetail(scope.$index, scope.row)">投入</el-button> </el-tooltip> <el-tooltip effect="dark" content="交班" placement="top-start"> <!-- <el-tooltip effect="dark" content="交班" placement="top-start"> <el-button type="text" size="small" @@ -509,8 +398,8 @@ " >取消交班</el-button > </el-tooltip> <el-tooltip </el-tooltip> --> <!-- <el-tooltip effect="dark" content="标签" placement="top-start" @@ -537,98 +426,63 @@ @click="smallPrintLabel(scope.row)" >小标签</el-button > </el-tooltip> </el-tooltip> --> </template> </el-table-column> </el-table> <div class="pagin-page"> <el-pagination :current-page="queryReport.current" :page-sizes="[10, 15, 20, 50, 100]" :page-size="queryReport.size" layout="total, sizes, prev, pager, next, jumper" @size-change="handleSizeChangeReport" @current-change="handleCurrentChangeReport" :total="queryReport.total" > <el-pagination :current-page="queryReport.current" :page-sizes="[10, 15, 20, 50, 100]" :page-size="queryReport.size" layout="total, sizes, prev, pager, next, jumper" @size-change="handleSizeChangeReport" @current-change="handleCurrentChangeReport" :total="queryReport.total"> </el-pagination> </div> <batchProductOutFormDialog :currshowlist.sync="showBatchProductForm" :productList="productList" :parentInfo="parentInfo" :currentDutyRecord="currentDutyRecord" :personBoardList="personBoardList" @refreshProductOutputList="refreshProductOutputList" :groupStatus="groupStatus" /> <shiftProductoutFormDialog :currshowlist.sync="showShiftProductForm" :productList="productList" :parentInfo="parentInfo" :currentDutyRecord="currentDutyRecord" :personBoardList="personBoardList" @refreshProductOutputList="refreshProductOutputList" /> <workReportFeed v-if="searchFeed" ref="searchFeed" @refreshFeedsForDel="refreshFeedsForDel" ></workReportFeed> <batchProductOutFormDialog :currshowlist.sync="showBatchProductForm" :productList="productList" :parentInfo="parentInfo" :currentDutyRecord="currentDutyRecord" :personBoardList="personBoardList" @refreshProductOutputList="refreshProductOutputList" :groupStatus="groupStatus" /> <shiftProductoutFormDialog :currshowlist.sync="showShiftProductForm" :productList="productList" :parentInfo="parentInfo" :currentDutyRecord="currentDutyRecord" :personBoardList="personBoardList" @refreshProductOutputList="refreshProductOutputList" /> <workReportFeed v-if="searchFeed" ref="searchFeed" @refreshFeedsForDel="refreshFeedsForDel"></workReportFeed> <productOutFormDialog :currshowlist.sync="showProductForm" :productList="productList" :parentInfo="parentInfo" :currentDutyRecord="currentDutyRecord" :personBoardList="personBoardList" @refreshProductOutputList="refreshProductOutputList" /> <TaskSecretForm :currshowlist.sync="showTaskSecretForm" @confirmSecret="confirmSecret" :tackingList="confirmList" :tipeInfo="tipeInfo" /> <printSecretFormDialog :currshowlist.sync="showPrintSecretForm" :outputs="selectOutputs" :statusCheck="statusCheck" @goOnPrint="goOnPrint" @cancelClose="cancelClose" @cancelCloseCancel="cancelCloseCancel" /> <productOutFormDialog :currshowlist.sync="showProductForm" :productList="productList" :parentInfo="parentInfo" :currentDutyRecord="currentDutyRecord" :personBoardList="personBoardList" @refreshProductOutputList="refreshProductOutputList" /> <TaskSecretForm :currshowlist.sync="showTaskSecretForm" @confirmSecret="confirmSecret" :tackingList="confirmList" :tipeInfo="tipeInfo" /> <printSecretFormDialog :currshowlist.sync="showPrintSecretForm" :outputs="selectOutputs" :statusCheck="statusCheck" @goOnPrint="goOnPrint" @cancelClose="cancelClose" @cancelCloseCancel="cancelCloseCancel" /> </div> <div> <iframe id="frame" style="width:2480px;overflow:hidden;margin-top: 200px;" :src="jimusrc" ></iframe> <iframe id="frame" style="width:2480px;overflow:hidden;margin-top: 200px;" :src="jimusrc"></iframe> </div> <el-dialog title="产出合格库位" :visible.sync="dialogVisible" width="30%"> <span>合格库位:</span> <el-select v-model="locationIdValue" placeholder="请选择"> <el-option v-for="item in options" :key="item.index" :label="`${item.locNo}+${item.locName}`" :value="item.id"> </el-option> </el-select> <span slot="footer" class="dialog-footer"> <el-button @click="dialogVisible = false; isTrue = false">取 消</el-button> <el-button type="primary" @click="clickSureSubmit">确 定</el-button> </span> </el-dialog> </div> </template> <style lang="scss" scoped> .cancel-btn { background-image: -webkit-linear-gradient( 90deg, rgba(254, 100, 84, 0.8) 0%, rgba(252, 84, 75, 0.8) 50%, rgba(250, 69, 65, 0.8) 100% ); background-image: -moz-linear-gradient( 90deg, rgba(254, 100, 84, 0.8) 0%, rgba(252, 84, 75, 0.8) 50%, rgba(250, 69, 65, 0.8) 100% ); background-image: linear-gradient( 90deg, rgba(254, 100, 84, 0.8) 0%, rgba(252, 84, 75, 0.8) 50%, rgba(250, 69, 65, 0.8) 100% ); background-image: -webkit-linear-gradient(90deg, rgba(254, 100, 84, 0.8) 0%, rgba(252, 84, 75, 0.8) 50%, rgba(250, 69, 65, 0.8) 100%); background-image: -moz-linear-gradient(90deg, rgba(254, 100, 84, 0.8) 0%, rgba(252, 84, 75, 0.8) 50%, rgba(250, 69, 65, 0.8) 100%); background-image: linear-gradient(90deg, rgba(254, 100, 84, 0.8) 0%, rgba(252, 84, 75, 0.8) 50%, rgba(250, 69, 65, 0.8) 100%); color: #fff; border-color: #fbecec; border-radius: 10px; @@ -636,40 +490,34 @@ height: 32px; } .cancel-btn >>> span { .cancel-btn>>>span { margin-left: 3px; } .tracking-change-state-div >>> .tracking-btn-cancel { .tracking-change-state-div>>>.tracking-btn-cancel { background: url('/img/workbench/icon_cancel.png') center center no-repeat; background-size: cover; } .tracking-change-state-div >>> .tracking-btn-cancel:before { .tracking-change-state-div>>>.tracking-btn-cancel:before { content: '消'; font-size: 14px; visibility: hidden; } .submit-btn { background-image: -webkit-linear-gradient( 90deg, rgba(80, 213, 118, 0.8) 0%, rgba(73, 209, 87, 0.8) 50%, rgba(65, 205, 58, 0.8) 100% ); background-image: -moz-linear-gradient( 90deg, rgba(80, 213, 118, 0.8) 0%, rgba(73, 209, 87, 0.8) 50%, rgba(65, 205, 58, 0.8) 100% ); background-image: linear-gradient( 90deg, rgba(80, 213, 118, 0.8) 0%, rgba(73, 209, 87, 0.8) 50%, rgba(65, 205, 58, 0.8) 100% ); background-image: -webkit-linear-gradient(90deg, rgba(80, 213, 118, 0.8) 0%, rgba(73, 209, 87, 0.8) 50%, rgba(65, 205, 58, 0.8) 100%); background-image: -moz-linear-gradient(90deg, rgba(80, 213, 118, 0.8) 0%, rgba(73, 209, 87, 0.8) 50%, rgba(65, 205, 58, 0.8) 100%); background-image: linear-gradient(90deg, rgba(80, 213, 118, 0.8) 0%, rgba(73, 209, 87, 0.8) 50%, rgba(65, 205, 58, 0.8) 100%); color: #fff; border-color: #fbecec; border-radius: 10px; @@ -677,38 +525,31 @@ height: 32px; } .submit-btn >>> span { .submit-btn>>>span { margin-left: 3px; } .tracking-change-state-div >>> .tracking-btn-submit { background: url('/img/workbench/icon_tracking_submit.png') center center no-repeat; .tracking-change-state-div>>>.tracking-btn-submit { background: url('/img/workbench/icon_tracking_submit.png') center center no-repeat; background-size: cover; } .tracking-change-state-div >>> .tracking-btn-submit:before { .tracking-change-state-div>>>.tracking-btn-submit:before { content: '交'; font-size: 14px; visibility: hidden; } .revoke-btn { background-image: -webkit-linear-gradient( 90deg, rgba(254, 91, 53, 0.8) 0%, rgba(245, 68, 50, 0.8) 100% ); background-image: -moz-linear-gradient( 90deg, rgba(254, 91, 53, 0.8) 0%, rgba(245, 68, 50, 0.8) 100% ); background-image: linear-gradient( 90deg, rgba(254, 91, 53, 0.8) 0%, rgba(245, 68, 50, 0.8) 100% ); background-image: -webkit-linear-gradient(90deg, rgba(254, 91, 53, 0.8) 0%, rgba(245, 68, 50, 0.8) 100%); background-image: -moz-linear-gradient(90deg, rgba(254, 91, 53, 0.8) 0%, rgba(245, 68, 50, 0.8) 100%); background-image: linear-gradient(90deg, rgba(254, 91, 53, 0.8) 0%, rgba(245, 68, 50, 0.8) 100%); color: #fff; border-color: #fbecec; border-radius: 15px; @@ -716,27 +557,21 @@ font-size: 14px; } .revoke-btn >>> span { .revoke-btn>>>span { margin-left: 3px; font-size: 12px; } .print-btn { background-image: -webkit-linear-gradient( 90deg, rgba(83, 53, 254, 0.8) 0%, rgba(52, 50, 213, 0.8) 100% ); background-image: -moz-linear-gradient( 90deg, rgba(83, 53, 254, 0.8) 0%, rgba(52, 50, 213, 0.8) 100% ); background-image: linear-gradient( 90deg, rgba(83, 53, 254, 0.8) 0%, rgba(52, 50, 213, 0.8) 100% ); background-image: -webkit-linear-gradient(90deg, rgba(83, 53, 254, 0.8) 0%, rgba(52, 50, 213, 0.8) 100%); background-image: -moz-linear-gradient(90deg, rgba(83, 53, 254, 0.8) 0%, rgba(52, 50, 213, 0.8) 100%); background-image: linear-gradient(90deg, rgba(83, 53, 254, 0.8) 0%, rgba(52, 50, 213, 0.8) 100%); color: #fff; border-color: #fbecec; border-radius: 15px; @@ -744,17 +579,17 @@ font-size: 14px; } .print-btn >>> span { .print-btn>>>span { margin-left: 3px; font-size: 12px; } .tracking-change-state-div >>> .tracking-btn-revoke { .tracking-change-state-div>>>.tracking-btn-revoke { background: url('/img/workbench/icon_back.png') center center no-repeat; background-size: cover; } .tracking-change-state-div >>> .tracking-btn-revoke:before { .tracking-change-state-div>>>.tracking-btn-revoke:before { content: '撤'; font-size: 14px; visibility: hidden; @@ -778,13 +613,13 @@ align-items: center; } .product-out-header >>> .tracking-btn-out { .product-out-header>>>.tracking-btn-out { background: url('/img/workbench/icon_bgcc.png') center center no-repeat; background-size: cover; font-size: 14px; } .product-out-header >>> .tracking-btn-out:before { .product-out-header>>>.tracking-btn-out:before { content: '产'; font-size: 14px; visibility: hidden; @@ -806,7 +641,7 @@ font-size: 14px; } .export-btn >>> span { .export-btn>>>span { margin-left: 3px; font-size: 12px; } @@ -822,7 +657,7 @@ font-size: 14px; } .out-btn >>> span { .out-btn>>>span { margin-left: 3px; font-size: 12px; } @@ -838,7 +673,7 @@ font-size: 14px; } .batch-out-btn >>> span { .batch-out-btn>>>span { margin-left: 3px; font-size: 12px; } @@ -854,7 +689,7 @@ font-size: 14px; } .submit-out-btn >>> span { .submit-out-btn>>>span { margin-left: 3px; font-size: 12px; } @@ -870,7 +705,7 @@ font-size: 14px; } .change-shift-out-btn >>> span { .change-shift-out-btn>>>span { margin-left: 3px; font-size: 12px; } @@ -1020,6 +855,7 @@ getProductMainV1, batchUpdateProductMain, batchChange, batchChangeCopy, batchCancelProductMain, productOutPutStateByMainId, getPrintUrl, @@ -1031,12 +867,15 @@ validateIsLastOperation, validateChangeProductOut, resetState, updatePrintNum updatePrintNum, cancellationOfWorkApplication } from '@/api/product/personboard' import { batchLabelPrint, checkBatchLabelPrint, batchLabelPrintTimes batchLabelPrintTimes, qualifiedLocation, isProductionCounting } from '@/api/product/handymantype' import batchProductOutFormDialog from './batchproductout-form-new.vue' import { mapGetters } from 'vuex' @@ -1090,6 +929,7 @@ }, data() { return { dialogVisible: false, showPrintSecretForm: false, printLabelType: null, printData: null, @@ -1097,7 +937,7 @@ { value: '01draft', label: '草稿' }, { value: '02submitted', label: '已提交' }, { value: '04processing', label: '处理中' }, { value: '03changeshift', label: '交班' } // { value: '03changeshift', label: '交班' } ], tableData: [], multipleSelection: [], @@ -1178,14 +1018,27 @@ warehousingPrintSingleRadio: false, warehousingSmalllPrintRadio: false, statusCheck: true, selectOutputs: [] selectOutputs: [], isProductionCountingShow: false, isTrue: false, options: [], locationIdValue: null, } }, created() {}, created() { }, updated() { this.isProductionCounting() }, computed: { ...mapGetters(['permissions', 'userInfo']) }, methods: { isProductionCounting() { isProductionCounting({ taskId: this.currOperateTask.taskId }).then(res => { this.isProductionCountingShow = res.data }) }, cancelClose() { this.statusCheck = true }, @@ -3222,11 +3075,12 @@ }, saveList() { const list = JSON.parse(JSON.stringify(this.productOutputList)) console.log(`output->list`, list) const data = [] list.forEach((el) => { if (el.isEdit) { var productVo = {} productVo.id = el.id productVo.id = el.outputId productVo.operationTaskId = this.currOperateTask.id productVo.workstationId = el.workstationId var productOuts = [] @@ -3235,7 +3089,9 @@ productOut.endMeterMark = el.endMeterMark productOut.productQty = el.productQty productOut.segmentDesc = el.segmentDesc productOut.outBatchNo = el.outBatchNo productOut.scrapQty = el.scrapQty productOut.wdr = el.wdr productOut.ifsBatchNo = el.ifsBatchNo productOut.reelNumber = el.reelNumber productOut.reelWeight = el.reelWeight @@ -3252,64 +3108,58 @@ validateOverProduction(data).then((response) => { const resData = response.data if (resData.code === 0) { if (resData.data.success) { validateOverFeed(data) .then((resp) => { const respData = resp.data if (respData.code == 0) { if (respData.data.success) { batchUpdateProductMain(data).then((res) => { this.$message.success('编辑成功') this.editShow = false this.getBatchReport(3) }) } else { // 投料不足,提示人工选择 // respData.data.message let confirmInfo = '' const confirmMessage = respData.data.message confirmMessage.forEach((item) => { confirmInfo = confirmInfo + item + ';<br>' }) this.$confirm( confirmInfo + '<span style="color:red;">是否继续报工?</span>', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning', customClass: 'validate-over-feed-message', dangerouslyUseHTMLString: true, closeOnClickModal: false } ) .then(() => { batchUpdateProductMain(data).then((res) => { this.$message.success('编辑成功') this.editShow = false this.getBatchReport(3) }) }) .catch(() => { this.$message({ type: 'info', message: '已取消报工' }) }) } validateOverFeed(data) .then((resp) => { const respData = resp.data if (respData.code == 0) { if (respData.data.success) { batchUpdateProductMain(data).then((res) => { this.$message.success('编辑成功') this.editShow = false this.getBatchReport(3) }) } else { this.$message.error('投料是否充足校验失败') // 投料不足,提示人工选择 // respData.data.message let confirmInfo = '' const confirmMessage = respData.data.message confirmMessage.forEach((item) => { confirmInfo = confirmInfo + item + ';<br>' }) this.$confirm( confirmInfo + '<span style="color:red;">是否继续报工?</span>', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning', customClass: 'validate-over-feed-message', dangerouslyUseHTMLString: true, closeOnClickModal: false } ) .then(() => { batchUpdateProductMain(data).then((res) => { this.$message.success('编辑成功') this.editShow = false this.getBatchReport(3) }) }) .catch(() => { this.$message({ type: 'info', message: '已取消报工' }) }) } }) .catch((error) => { console.log('失败' + new Date().getTime()) }) } else { this.tipeInfo = resData.data.message this.showTaskSecretForm = true this.confirmList = data } } else { this.$message.error('投料是否充足校验失败') } }) .catch((error) => { console.log('失败' + new Date().getTime()) }) } else { this.$message.error('工单数量校验失败') } @@ -3319,6 +3169,7 @@ // 取消编辑 cancelSaveList() { this.editShow = false this.getBatchReport(2) this.productOutputList.forEach((element) => { if (element.isEdit) { element.isEdit = false @@ -3338,6 +3189,10 @@ this.paramObject ) const _that = this /* if (!this.isProductionCountingShow) { this.$message.error('当前工单无需报工操作') return } */ getProductMainV1(obj).then((res) => { _that.productOutputList = res.data.data.records // console.log(_that.productOutputList) @@ -3407,122 +3262,145 @@ // 提交报告 submitList() { if (this.multipleSelection.length > 0) { if (this.multipleSelection.length > 10) { this.$message.error('最多只能选择10条记录进行提交!') if (this.multipleSelection.length > 1) { this.$message.error('最多只能选择1条记录进行提交!') return false } const list = this.multipleSelection if (this.getFlag(list)) { this.submitLoading = true var event = 'SUBMIT' var submitSize = 0 let successSize = 0 const errorMsg = '' var toProcessIds = [] list.forEach((ele) => { toProcessIds.push(ele.id) } else { qualifiedLocation(this.multipleSelection[0].workstationId).then(res => { this.options = res.data.data if (this.options.length > 1) { this.dialogVisible = true } else { this.locationIdValue = this.options[0].id this.submitListApi() } }) // 1、状态改成进行中 productProcessState(toProcessIds, event) .then((response) => { // 判断是否携带打印 if (this.batchPrintRadio) { this.statusCheck = false this.batchPrint() } else if (this.batchSmallPrintRadio) { this.statusCheck = false this.batchSmallPrint() } else if (this.warehousingPrintSingleRadio) { this.statusCheck = false this.warehousingPrintSingle() } else if (this.warehousingSmalllPrintRadio) { this.statusCheck = false this.warehousingSmalllPrint() } this.submitLoading = false this.$message.success('提交成功,刷新查看提交结果') this.getBatchReport(5) // 2、处理提交 list.forEach((ele) => { var outIds = [] outIds.push(ele.id) batchChange(outIds, event) .then((response) => { successSize++ submitSize++ if (submitSize === list.length) { // this.submitLoading = false // if (successSize === list.length) { // this.$message.success('提交成功') // } else { // this.$message.error(errorMsg + '提交失败') // } // this.getBatchReport(5) } if ( this.batchPrintRadio || this.batchSmallPrintRadio || this.warehousingPrintSingleRadio || this.warehousingSmalllPrintRadio ) { updatePrintNum({ ids: [ele.outputId] }).then( (response) => { this.getBatchReport(7) } ) } }) .catch(() => { // errorMsg = errorMsg + ele.outBatchNo + ';' // submitSize++ // console.log('submitSize', submitSize) // this.submitLoading = false // console.log('successSize', successSize) // console.log('超时......', error) // if (submitSize === list.length) { // console.log('submitSizeFinal', submitSize) // this.submitLoading = false // console.log('successSizeFinal', successSize) // if (successSize === 0) { // this.$message.error('处理失败') // } else { // this.$message.error(errorMsg + '处理失败') // } // this.getBatchReport(5) // } if ( this.batchPrintRadio || this.batchSmallPrintRadio || this.warehousingPrintSingleRadio || this.warehousingSmalllPrintRadio ) { updatePrintNum({ ids: [ele.outputId] }).then( (response) => { this.getBatchReport(7) } ) } }) }) }) .catch((error) => {}) // this.submitLoading = false; // this.$message.success('提交成功'); // this.getBatchReport(5); // var outIds = list.map((ele) => { // return ele.id // }) // batchChange(outIds, event) // .then((response) => { // this.submitLoading = false; // this.$message.success('提交成功') // this.getBatchReport(5) // }) // .catch((error) => {}) } } else { this.$message.error('请选择需要提交的对象') } }, clickSureSubmit() { this.dialogVisible = false this.submitListApi() }, submitListApi() { const list = this.multipleSelection if (this.getFlag(list)) { this.submitLoading = true var event = 'SUBMIT' var submitSize = 0 let successSize = 0 const errorMsg = '' var toProcessIds = [] list.forEach((ele) => { toProcessIds.push(ele.id) }) // 1、状态改成进行中 productProcessState(toProcessIds, event) .then((response) => { // 判断是否携带打印 if (this.batchPrintRadio) { this.statusCheck = false this.batchPrint() } else if (this.batchSmallPrintRadio) { this.statusCheck = false this.batchSmallPrint() } else if (this.warehousingPrintSingleRadio) { this.statusCheck = false this.warehousingPrintSingle() } else if (this.warehousingSmalllPrintRadio) { this.statusCheck = false this.warehousingSmalllPrint() } this.submitLoading = false this.$message.success('提交成功,刷新查看提交结果') this.getBatchReport(5) // 2、处理提交 list.forEach((ele) => { var outIds = [] outIds.push(ele.id) const qury = Object.assign({ ids: outIds, locationId: this.locationIdValue, outputId: this.multipleSelection[0].outputId }) batchChangeCopy(qury, event) .then((response) => { this.locationIdValue = null this.isTrue = false successSize++ submitSize++ if (submitSize === list.length) { // this.submitLoading = false // if (successSize === list.length) { // this.$message.success('提交成功') // } else { // this.$message.error(errorMsg + '提交失败') // } // this.getBatchReport(5) } if ( this.batchPrintRadio || this.batchSmallPrintRadio || this.warehousingPrintSingleRadio || this.warehousingSmalllPrintRadio ) { updatePrintNum({ ids: [ele.outputId] }).then( (response) => { this.getBatchReport(7) } ) } }) .catch(() => { // errorMsg = errorMsg + ele.outBatchNo + ';' // submitSize++ // console.log('submitSize', submitSize) // this.submitLoading = false // console.log('successSize', successSize) // console.log('超时......', error) // if (submitSize === list.length) { // console.log('submitSizeFinal', submitSize) // this.submitLoading = false // console.log('successSizeFinal', successSize) // if (successSize === 0) { // this.$message.error('处理失败') // } else { // this.$message.error(errorMsg + '处理失败') // } // this.getBatchReport(5) // } if ( this.batchPrintRadio || this.batchSmallPrintRadio || this.warehousingPrintSingleRadio || this.warehousingSmalllPrintRadio ) { updatePrintNum({ ids: [ele.outputId] }).then( (response) => { this.getBatchReport(7) } ) } }) }) }) .catch((error) => { }) // this.submitLoading = false; // this.$message.success('提交成功'); // this.getBatchReport(5); // var outIds = list.map((ele) => { // return ele.id // }) // batchChange(outIds, event) // .then((response) => { // this.submitLoading = false; // this.$message.success('提交成功') // this.getBatchReport(5) // }) // .catch((error) => {}) } }, // 撤销报告 @@ -3539,7 +3417,9 @@ var outIds = list.map((ele) => { return ele.id }) batchChange(outIds, event) cancellationOfWorkApplication({ mainId: outIds[0] }) .then((response) => { this.removeLoading = false this.$message.success('撤销成功') vue.config.js
@@ -2,9 +2,8 @@ * 配置参考: * https://cli.vuejs.org/zh/config/ */ // const url = 'http://192.168.0.23:9999' // const url = 'http://192.168.0.51:9999' const url = 'http://192.168.0.23:9999' const url = 'http://localhost:9999' // const url = 'http://ztt-gateway:9999' // const url = 'http://ztt-gateway:9999' const localUrl = 'http://localhost:8089' //const localUrl = 'http://10.88.15.95:8089'