|  |  | 
 |  |  |   <!-- <TableLayout> --> | 
 |  |  |   <keep-alive><TableLayout v-permissions="['ext:plansext:query']"> | 
 |  |  |     <!-- 搜索表单 --> | 
 |  |  |     <el-form slot="search-form" ref="searchForm" :model="searchForm" label-suffix=":" label-width="90px" inline> | 
 |  |  |       <el-form-item label="搜索信息" prop="mixParam"> | 
 |  |  |         <el-input v-model="searchForm.mixParam" placeholder="请输入物料名称/编码/工序名称" @keypress.enter.native="search"></el-input> | 
 |  |  |     <el-form slot="search-form" ref="searchForm" :model="searchForm" label-suffix=":" label-width="110px" inline> | 
 |  |  |       <el-form-item label="物料信息" prop="mixParam"> | 
 |  |  |         <el-input v-model="searchForm.mixParam" placeholder="请输入物料名称/编码" @keypress.enter.native="search"></el-input> | 
 |  |  |       </el-form-item> | 
 |  |  |       <el-form-item label="成品计划" prop="workPlanCode"> | 
 |  |  |         <el-input v-model="searchForm.workPlanCode" placeholder="请输入成品计划编码" @keypress.enter.native="search"></el-input> | 
 |  |  | 
 |  |  |       <el-form-item label="批次号" prop="batch"> | 
 |  |  |         <el-input v-model="searchForm.batch" placeholder="请输入" @keypress.enter.native="search"></el-input> | 
 |  |  |       </el-form-item> | 
 |  |  |       <el-form-item label="计划日期" prop="planDate"> | 
 |  |  |       <el-form-item label="计划结束日期" prop="planDate"> | 
 |  |  |         <el-date-picker | 
 |  |  |           value-format="yyyy-MM-dd" | 
 |  |  |           v-model="time" | 
 |  |  | 
 |  |  |     <!-- 表格和分页 --> | 
 |  |  |     <template v-slot:table-wrap> | 
 |  |  |       <ul class="toolbar"> | 
 |  |  |         <!-- <li v-permissions="['ext:plansext:importExcel']"> | 
 |  |  |         <li v-permissions="['ext:plansext:distribute']"><el-button type="primary" @click="plansDistribute">批量分配</el-button></li> | 
 |  |  |         <li v-permissions="['ext:plansext:importExcel']"> | 
 |  |  |           <ImportButton | 
 |  |  |             text="导入" | 
 |  |  |             template-name="plans_import_template.xlsx" | 
 |  |  |             template-path="template/plans_import_template.xlsx" | 
 |  |  |             template-path="/template/plans_import_template.xlsx" | 
 |  |  |             action="/ext/plansExt/importBatch" | 
 |  |  |             @success="search" | 
 |  |  |           /> | 
 |  |  |         </li> --> | 
 |  |  |         </li> | 
 |  |  |         <!-- <li v-permissions="['ext:plansext:create']"><el-button type="primary" @click="$refs.operaPlansExtWindow.open('新建生产计划')" >新建</el-button></li> --> | 
 |  |  |         <!-- <li v-permissions="['ext:plansext:publish']"><el-button type="primary" @click="planRelease" >发布</el-button></li> --> | 
 |  |  |         <li v-permissions="['ext:plansext:distribute']"><el-button type="primary" @click="plansDistribute">批量分配</el-button></li> | 
 |  |  |         <li v-permissions="['ext:plansext:exportExcel']"><el-button type="primary" :loading="isWorking.export" @click="exportExcel">导出</el-button></li> | 
 |  |  |         <!-- <li v-permissions="['ext:plansext:exportExcel']"><el-button type="primary" :loading="isWorking.export" @click="exportExcel">导出</el-button></li> --> | 
 |  |  |         <!-- <li v-permissions="['ext:plansext:planpink']"><el-button type="primary" @click="$refs.operaWTransferExtWindow.open('计划领料')">计划领料</el-button></li> --> | 
 |  |  |         <!-- <li v-permissions="['ext:plansext:stockpink']"><el-button type="primary" @click="$refs.operaPlanStaock.open('库存领料')">库存领料</el-button></li> --> | 
 |  |  |         <!-- <li v-permissions="['ext:plansext:delete']"><el-button type="danger" plain @click="deleteByIdInBatch">批量删除</el-button></li> --> | 
 |  |  | 
 |  |  |         @row-style="rowStyle" | 
 |  |  |       > | 
 |  |  |         <el-table-column type="selection" fixed="left" width="55"></el-table-column> | 
 |  |  |         <el-table-column prop="id" label="计划序号" fixed="left" min-width="80px"></el-table-column> | 
 |  |  |         <el-table-column prop="id" label="计划序号" fixed="left" min-width="100px"> | 
 |  |  |           <template slot-scope="{row}"> | 
 |  |  |             <span>{{ row.id }}</span><el-tag type="danger" size="mini" v-if="row.hasExpire">延期</el-tag> | 
 |  |  |           </template> | 
 |  |  |         </el-table-column> | 
 |  |  |         <el-table-column prop="mmodel.name" fixed="left" label="物料名称" show-overflow-tooltip min-width="140px"> | 
 |  |  |           <template slot-scope="{row}"> | 
 |  |  |             <el-button type="text" class="materail" @click="showPlan(row.id)"> | 
 |  |  | 
 |  |  |         </el-table-column> | 
 |  |  |         <el-table-column prop="mmodel.code" label="物料编码" min-width="160px"> | 
 |  |  |         </el-table-column> | 
 |  |  |         <el-table-column prop="planDate" label="计划日期" min-width="100px"></el-table-column> | 
 |  |  |          | 
 |  |  |         <el-table-column prop="fmodel.name" label="工厂" min-width="100px"></el-table-column> | 
 |  |  |         <el-table-column prop="pmodel.name" label="工序" show-overflow-tooltip min-width="100px"> | 
 |  |  |           <template slot-scope="{row}"> | 
 |  |  |             <span class="long-title-style">{{ row.pmodel ? row.pmodel.name : '-' }}</span> | 
 |  |  |           </template> | 
 |  |  |         </el-table-column> | 
 |  |  |         <el-table-column prop="batch" label="生产批次号" show-overflow-tooltip min-width="140px"></el-table-column> | 
 |  |  |         <el-table-column prop="num" label="计划数量" min-width="100px"> | 
 |  |  |           <template slot-scope="{row}"> | 
 |  |  |             <span>{{ row.num + (row.umodel ? row.umodel.name : '') }}</span> | 
 |  |  |           </template> | 
 |  |  |         </el-table-column> | 
 |  |  |         <el-table-column prop="batch" label="生产批次号" show-overflow-tooltip min-width="140px"></el-table-column> | 
 |  |  |         <el-table-column prop="urgent" label="优先级" min-width="60px"></el-table-column> | 
 |  |  |         <el-table-column prop="workPlanStartDate" label="计划开始日期" min-width="100px"> | 
 |  |  |           <!-- <template slot-scope="{row}"> | 
 |  |  |             {{ row.workPlanStartDate ? row.workPlanStartDate.substring(0, row.workPlanStartDate.length-9) : '-' }} | 
 |  |  |           </template> --> | 
 |  |  |         </el-table-column> | 
 |  |  |         <el-table-column prop="workPlanEndDate" label="计划结束日期" min-width="100px"> | 
 |  |  |           <!-- <template slot-scope="{row}"> | 
 |  |  |             {{ row.workPlanEndDate ? row.workPlanEndDate.substring(0, row.workPlanEndDate.length-9) : '-' }} | 
 |  |  |           </template> --> | 
 |  |  |         </el-table-column> | 
 |  |  |          | 
 |  |  |         <el-table-column label="计划状态" min-width="80px"> | 
 |  |  |           <template slot-scope="{row}"> | 
 |  |  |             {{ statusToStr(row.status) }} | 
 |  |  |           </template> | 
 |  |  |         </el-table-column> | 
 |  |  |         <el-table-column label="计划类型" min-width="80px"> | 
 |  |  |           <template slot-scope="{row}"> | 
 |  |  |             <span :style="typeColor(row.type)">{{ typeToStr(row.type) }}</span> | 
 |  |  |           </template> | 
 |  |  |         </el-table-column> | 
 |  |  |         <el-table-column label="暂停" min-width="60px"> | 
 |  |  |           <template slot-scope="{row}"> | 
 |  |  |             {{ row.paused == 0 ? '否' : '是' }} | 
 |  |  |           </template> | 
 |  |  |         </el-table-column> | 
 |  |  |         <el-table-column prop="workPlanCode" label="成品计划编码" min-width="140px"></el-table-column> | 
 |  |  |         <el-table-column prop="distributNoDoneNum" label="已分配未报工数量" min-width="140px"> | 
 |  |  |           <template slot-scope="{row}"> | 
 |  |  |             <span>{{row.distributNoDoneNum ? (row.distributNoDoneNum + (row.umodel ? row.umodel.name : '')) : '-' }}</span> | 
 |  |  | 
 |  |  |         </el-table-column> | 
 |  |  |         <el-table-column prop="qulifiedNum" label="合格数量" min-width="100px"> | 
 |  |  |           <template slot-scope="{row}"> | 
 |  |  |             <span>{{row.qulifiedNum ? (row.qulifiedNum + (row.umodel ? row.umodel.name : '')) : '-' }}</span> | 
 |  |  |             <span class="valid-style">{{row.qulifiedNum ? (row.qulifiedNum + (row.umodel ? row.umodel.name : '')) : '-' }}</span> | 
 |  |  |           </template> | 
 |  |  |         </el-table-column> | 
 |  |  |         <el-table-column prop="unqulifiedNum" label="不良数量" min-width="100px"> | 
 |  |  |           <template slot-scope="{row}"> | 
 |  |  |             <span>{{row.unqulifiedNum ? (row.unqulifiedNum + (row.umodel ? row.umodel.name : '')) : '-' }}</span> | 
 |  |  |             <span class="unvalid-style">{{row.unqulifiedNum ? (row.unqulifiedNum + (row.umodel ? row.umodel.name : '')) : '-' }}</span> | 
 |  |  |           </template> | 
 |  |  |         </el-table-column> | 
 |  |  |         <el-table-column prop="urgent" label="优先级" min-width="60px"></el-table-column> | 
 |  |  |         <el-table-column label="暂停" min-width="60px"> | 
 |  |  |           <template slot-scope="{row}"> | 
 |  |  |             {{ row.paused == 0 ? '否' : '是' }} | 
 |  |  |           </template> | 
 |  |  |         </el-table-column> | 
 |  |  |         <el-table-column prop="workPlanCode" label="主计划编码" min-width="140px"></el-table-column> | 
 |  |  |         <el-table-column label="类型" min-width="80px"> | 
 |  |  |           <template slot-scope="{row}"> | 
 |  |  |             <span :style="typeColor(row.type)">{{ typeToStr(row.type) }}</span> | 
 |  |  |           </template> | 
 |  |  |         </el-table-column> | 
 |  |  |         <el-table-column prop="publishDate" label="发布日期" min-width="100px"> | 
 |  |  | 
 |  |  |             <span>{{ row.publishDate || '-' }}</span> | 
 |  |  |           </template> | 
 |  |  |         </el-table-column> | 
 |  |  |         <el-table-column prop="userId" label="计划员" min-width="160px"> | 
 |  |  |         <el-table-column prop="usermodel.realname" label="计划员" min-width="160px"> | 
 |  |  |           <template slot-scope="{row}"> | 
 |  |  |            <span class="long-title-style"> {{ row.usermodel.realname + " " + row.usermodel.mobile }}</span> | 
 |  |  |           </template> | 
 |  |  | 
 |  |  |         factoryId: null, | 
 |  |  |         status: null, | 
 |  |  |         mixParam: null, | 
 |  |  |         endDate: null, | 
 |  |  |         startDate: null, | 
 |  |  |         planDateStartDate: null, | 
 |  |  |         planDateEndDate: null, | 
 |  |  |         batch: null, | 
 |  |  |         type: null, | 
 |  |  |         workPlanCode: null | 
 |  |  | 
 |  |  |   }, | 
 |  |  |   methods: { | 
 |  |  |     selectDate (v) { | 
 |  |  |       this.searchForm.startDate = v[0] | 
 |  |  |       this.searchForm.endDate = v[1] | 
 |  |  |       this.searchForm.planDateStartDate = v[0] | 
 |  |  |       this.searchForm.planDateEndDate = v[1] | 
 |  |  |       this.search() | 
 |  |  |     }, | 
 |  |  |     selectFactroy (v) { | 
 |  |  |       this.searchForm.procedureIdList = [] | 
 |  |  | 
 |  |  |     }, | 
 |  |  |     reset () { | 
 |  |  |       this.$refs.searchForm.resetFields() | 
 |  |  |       this.searchForm.startDate = null | 
 |  |  |       this.searchForm.endDate = null | 
 |  |  |       this.searchForm.planDateStartDate = null | 
 |  |  |       this.searchForm.planDateEndDate = null | 
 |  |  |       this.time = [] | 
 |  |  |       this.search() | 
 |  |  |     }, | 
 |  |  | 
 |  |  |     showPlan (id) { | 
 |  |  |       planDetailById(id) | 
 |  |  |         .then(res => { | 
 |  |  |           // console.log(res) | 
 |  |  |           this.$refs.operaPlansDetailExtWindow.open('详情', res) | 
 |  |  |         }) | 
 |  |  |         .catch(err => { | 
 |  |  | 
 |  |  |         if (index === 0) { | 
 |  |  |           sums[index] = '合计'; | 
 |  |  |           return; | 
 |  |  |         } else if (index === 1 || index === 8 || index === 9 || index === 16 || index === 17) { | 
 |  |  |         } else if (index === 1 || index === 6 || index === 8 || index === 9 || index === 14 || index === 16 || index === 17) { | 
 |  |  |           sums[index] = '-'; | 
 |  |  |           return; | 
 |  |  |         } else if (index === 8 ) { |