| | |
| | | color: function(value, index) { |
| | | return value === '0' ? 'transparent' : '#fff' |
| | | }, |
| | | fontSize: 14, |
| | | fontSize: 18, |
| | | // formatter: function(value, index) { |
| | | // return [ |
| | | // '{lg|' + (index + 1) + '、 }' + '{title|' + value + '} ' |
| | | // ].join('\n') |
| | | // }, |
| | | formatter: function(params) { |
| | | var val = '' |
| | | if (params.length > 5) { |
| | | val = params.substr(0, 5) + '...' |
| | | return val |
| | | } else { |
| | | return params |
| | | } |
| | | }, |
| | | rich: { |
| | | lg: { |
| | | // backgroundColor: '#339911', |
| | |
| | | <MarqueeTips |
| | | :content="MarqueeTipsContent" |
| | | class="MarqueeTipsContentClass" |
| | | :speed="300" |
| | | :speed="180" |
| | | /> |
| | | <!-- :speed="speed"--> |
| | | <div class="kb_content"> |
| | | <div class="kb_left"> |
| | | <!-- 1--> |
| | |
| | | |
| | | <div class="kb_left_top kb_pd10"> |
| | | <div class="kb_left_top02"> |
| | | <div v-for="item in lineContent4" :key="item.workcode" class="kb_left_top_block"> |
| | | <div v-for="item in lineContent3" :key="item.workcode" class="kb_left_top_block"> |
| | | <div class="kb_block02 kb_pd10"> |
| | | <div> |
| | | <div>销售单号:{{ item.saleordercode }}</div> |
| | |
| | | <el-table-column |
| | | prop="RowNum" |
| | | label="序号" |
| | | width="40" |
| | | width="50" |
| | | /> |
| | | <!-- label="加工状态"--> |
| | | <el-table-column |
| | | prop="status" |
| | | label="加工状态" |
| | | width="70" |
| | | label="状态" |
| | | width="65" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.status==='ALLO'">已派发</div> |
| | |
| | | <el-table-column |
| | | prop="lm_date" |
| | | label="派发时间" |
| | | width="95" |
| | | width="115" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ row.lm_date.substring(0, 10) }}</div> |
| | |
| | | <el-table-column |
| | | prop="saleOrderCode" |
| | | label="销售订单号" |
| | | width="158" |
| | | width="178" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.saleOrderCode">{{ row.saleOrderCode }}</div> |
| | | <div v-if="row.saleOrderCode" class="ellipsis">{{ row.saleOrderCode }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="wo_code" |
| | | label="加工单号" |
| | | width="175" |
| | | /> |
| | | <el-table-column |
| | | prop="partname" |
| | | label="产品名称" |
| | | width="145" |
| | | /> |
| | | <el-table-column |
| | | prop="partspec" |
| | | label="规格" |
| | | width="125" |
| | | width="205" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.partspec" class="ellipsis">{{ row.partspec }}</div> |
| | | <div v-if="row.wo_code" class="ellipsis">{{ row.wo_code }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | label="单位" |
| | | width="50" |
| | | /> |
| | | prop="partname" |
| | | label="产品名称" |
| | | width="150" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.partname" class="ellipsis">{{ row.partname }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="partspec"--> |
| | | <!-- label="规格"--> |
| | | <!-- width="125"--> |
| | | <!-- >--> |
| | | <!-- <template slot-scope="{row}">--> |
| | | <!-- <div v-if="row.partspec" class="ellipsis">{{ row.partspec }}</div>--> |
| | | <!-- <div v-else>/</div>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="name"--> |
| | | <!-- label="单位"--> |
| | | <!-- width="50"--> |
| | | <!-- />--> |
| | | <el-table-column |
| | | prop="plan_qty" |
| | | label="任务数量" |
| | | width="70" |
| | | width="85" |
| | | /> |
| | | <el-table-column |
| | | prop="good_qty" |
| | | label="完工数量" |
| | | width="70" |
| | | width="85" |
| | | /> |
| | | <el-table-column |
| | | prop="ng_qty" |
| | | label="不良数量" |
| | | width="70" |
| | | width="85" |
| | | /> |
| | | <el-table-column |
| | | prop="wcl" |
| | | label="完成率" |
| | | width="50" |
| | | width="60" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ parseFloat((row.good_qty * 100 / row.plan_qty).toFixed(2)) }}%</div> |
| | |
| | | <el-table-column |
| | | prop="planenddate" |
| | | label="预计开始" |
| | | width="95" |
| | | width="115" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ row.planenddate.substring(0, 10) }}</div> |
| | |
| | | <el-table-column |
| | | prop="planstartdate" |
| | | label="预计结束" |
| | | width="105" |
| | | width="125" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ row.planstartdate.substring(0, 10) }}</div> |
| | |
| | | prop="linename" |
| | | label="产线" |
| | | width="120" |
| | | /> |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.linename" class="ellipsis">{{ row.linename }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="partname" |
| | | width="138" |
| | | label="产品" |
| | | /> |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.partname" class="ellipsis">{{ row.partname }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="good_qty" |
| | | label="数量" |
| | |
| | | headTime: '', |
| | | |
| | | lineContent: [], |
| | | lineContent4: [], |
| | | lineContent3: [], |
| | | |
| | | leftTopData: [], |
| | | tableData: [], |
| | | tableDataRank: [], |
| | | lineCodeArr: [], |
| | | |
| | | ShopArr: ['CJ003'], // 车间编码数组 包装车间 |
| | | ShopArr: ['CJ003'], // 车间编码数组 |
| | | |
| | | MarqueeTipsContent: '', // 公告 |
| | | speed: 100// 公告播放的速度 |
| | |
| | | await this.getTableDataRoll() |
| | | await this.getTableDataRankRoll() |
| | | await this.getMarqueeTipsContent() |
| | | await this.getMarqueeTipsContent() |
| | | }, |
| | | // 获取公告 |
| | | getMarqueeTipsContent() { |
| | |
| | | this.MarqueeTipsContent = contentAll |
| | | this.speed = this.MarqueeTipsContent.length / 10 |
| | | }) |
| | | // }, this.speed * 1000) |
| | | }, 1000 * 60 * 5) |
| | | }) |
| | | }, |
| | | // 获取车间编码 |
| | | async getShopSearch() { |
| | | async getShopSearch() { |
| | | const res1 = await ShopSearch() |
| | | if (res1.code === '200') { |
| | | this.ShopArr = [] |
| | |
| | | LineSearchTopLeftData({ shopcode: this.ShopArr.join(',') }).then(res => { |
| | | this.lineContent = res.data |
| | | length = this.lineContent.length |
| | | count = Math.ceil(length / 4) // 需要轮播的组数 4个为一组 |
| | | this.lineContent4 = this.lineContent.slice(0, 4) |
| | | count = Math.ceil(length / 3) // 需要轮播的组数 3个为一组 |
| | | this.lineContent3 = this.lineContent.slice(0, 3) |
| | | }) |
| | | |
| | | let start = 0 |
| | | const task = setInterval(() => { |
| | | if (Math.floor(start / 4) === count && count !== 0) { |
| | | if (Math.floor(start / 3) === count && count !== 0) { |
| | | start = 0 |
| | | LineSearchTopLeftData({ shopcode: this.ShopArr.join(',') }).then(res => { |
| | | this.lineContent = res.data |
| | | length = this.lineContent.length |
| | | count = Math.ceil(length / 4) // 需要轮播的组数 4个为一组 |
| | | this.lineContent4 = this.lineContent.slice(0, 4) |
| | | count = Math.ceil(length / 3) // 需要轮播的组数 3个为一组 |
| | | this.lineContent3 = this.lineContent.slice(0, 3) |
| | | }) |
| | | } else if (count === 0) { |
| | | clearInterval(task) |
| | | this.getShopSearchLine() |
| | | } |
| | | this.lineContent4 = this.lineContent.slice(start, start + 4) |
| | | start = start + 4 |
| | | this.lineContent3 = this.lineContent.slice(start, start + 3) |
| | | start = start + 3 |
| | | }, 1000 * 3) |
| | | }, |
| | | |
| | |
| | | |
| | | .kb_left_top_title01 { |
| | | position: absolute; |
| | | top: 40px; |
| | | top: 37px; |
| | | left: 15px; |
| | | font-size: 18px; |
| | | display: flex; |
| | | color: #00ffff; |
| | | |
| | |
| | | flex-direction: column; |
| | | justify-content: flex-start; |
| | | padding-top: 70px; |
| | | |
| | | .kb_left_top02 { |
| | | display: flex; |
| | | flex-direction: column; |
| | |
| | | |
| | | .kb_left_top_block { |
| | | width: 100%; |
| | | height: 100px; |
| | | height: 133px; |
| | | display: flex; |
| | | font-size: 14px; |
| | | font-size: 17px; |
| | | border-bottom: 1px solid $kbBorderColor; |
| | | justify-content: flex-start; |
| | | |
| | |
| | | |
| | | .kb_block03 { |
| | | width: 1020px; |
| | | |
| | | font-size: 17px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | font-size: 12px; |
| | | //font-size: 12px; |
| | | border-radius: 5px; |
| | | |
| | | .kb_block03_content { |
| | | border: 1px solid $kbBorderColor; |
| | | width: 180px; |
| | | height: 50px; |
| | | height: 80px; |
| | | margin-right: 15px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .content01 { |
| | | height: 30px; |
| | | width: 100%; |
| | | height: 18px; |
| | | border-bottom: 1px solid $kbBorderColor; |
| | | display: flex; |
| | | align-items: center; |
| | |
| | | |
| | | .content02Parent { |
| | | display: flex; |
| | | |
| | | .content02 { |
| | | width: 60px; |
| | | border-right: 1px solid $kbBorderColor; |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | height: 50%; |
| | | //height: 50%; |
| | | height: 25px; |
| | | } |
| | | |
| | | .content02_2 { |
| | | height: 50%; |
| | | height: 25px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | |
| | | |
| | | } |
| | | |
| | | .kb_left_top_block:nth-child(4n) { |
| | | .kb_left_top_block:nth-child(3n) { |
| | | border-bottom: none !important; |
| | | } |
| | | } |
| | |
| | | flex-direction: column; |
| | | |
| | | .content_head { |
| | | font-size: 18px; |
| | | line-height: 20px; |
| | | margin-bottom: 10px; |
| | | margin-top: -10px; |
| | |
| | | flex-direction: column; |
| | | |
| | | .content_head { |
| | | font-size: 18px; |
| | | //font-size: 18px; |
| | | line-height: 20px; |
| | | margin-bottom: 10px; |
| | | margin-top: -10px; |
| | |
| | | |
| | | .kb_right_bottom_content_title { |
| | | color: #00ffff; |
| | | font-size: 18px; |
| | | margin-bottom: 10px; |
| | | margin-top: -10px; |
| | | margin-bottom: 5px; |
| | | margin-top: -12px; |
| | | } |
| | | |
| | | .kb_right_bottom_content { |
| | |
| | | |
| | | ::v-deep .cell { |
| | | padding: 0 !important; |
| | | font-size: 18px; |
| | | } |
| | | |
| | | .circleYellow { |
| | |
| | | <div class="kb_dashboard"> |
| | | <div class="kb_header"> |
| | | <div class="flex_c_c" style="letter-spacing: 3px;margin-left: 1px;"> |
| | | 采购订单跟踪管理看板 |
| | | 采购跟踪看板 |
| | | </div> |
| | | <div class="kb_headerPic" /> |
| | | <div class="kb_headTime"> |
| | |
| | | :content="MarqueeTipsContent" |
| | | class="MarqueeTipsContentClass" |
| | | style="top:100px" |
| | | :speed="300" |
| | | :speed="180" |
| | | /> |
| | | <div class="kb_content"> |
| | | <div class="kb_left"> |
| | |
| | | <el-table-column |
| | | prop="PurchaseOrder" |
| | | label="采购订单" |
| | | width="163" |
| | | /> |
| | | width="203" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div class="ellipsis">{{ row.PurchaseOrder }}</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="suppername" |
| | | label="供应商" |
| | | width="125" |
| | | width="163" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.suppername" class="ellipsis">{{ row.suppername }}</div> |
| | |
| | | <el-table-column |
| | | prop="username" |
| | | label="采购员" |
| | | width="68" |
| | | width="78" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.username">{{ row.username }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="partcode" |
| | | label="产品编码" |
| | | width="108" |
| | | /> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="partcode"--> |
| | | <!-- label="产品编码"--> |
| | | <!-- width="108"--> |
| | | <!-- />--> |
| | | <el-table-column |
| | | prop="partname" |
| | | label="产品名称" |
| | | width="155" |
| | | /> |
| | | <el-table-column |
| | | prop="partspec" |
| | | label="规格型号" |
| | | width="130" |
| | | width="175" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.partspec" class="ellipsis">{{ row.partspec }}</div> |
| | | <div v-else>/</div> |
| | | <div v-if="row.partname" class="ellipsis">{{ row.partname }}</div> |
| | | <div v-else /> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="partspec"--> |
| | | <!-- label="规格型号"--> |
| | | <!-- width="130"--> |
| | | <!-- >--> |
| | | <!-- <template slot-scope="{row}">--> |
| | | <!-- <div v-if="row.partspec" class="ellipsis">{{ row.partspec }}</div>--> |
| | | <!-- <div v-else>/</div>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | <el-table-column |
| | | prop="quantity" |
| | | label="订单数量" |
| | | width="74" |
| | | width="94" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.quantity">{{ parseFloat(row.quantity) }}</div> |
| | |
| | | <el-table-column |
| | | prop="checktype" |
| | | label="检验状态" |
| | | width="84" |
| | | width="94" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.checktype===null">未检验</div> |
| | |
| | | <el-table-column |
| | | prop="checkuser" |
| | | label="检验人员" |
| | | width="84" |
| | | width="94" |
| | | /> |
| | | <el-table-column |
| | | prop="quantity1" |
| | | label="已收数量" |
| | | width="74" |
| | | width="94" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.quantity1">{{ parseFloat(row.quantity1) }}</div> |
| | |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="未收数量" |
| | | width="74" |
| | | width="94" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.quantity- row.quantity1">{{ parseFloat(row.quantity- row.quantity1) }}</div> |
| | |
| | | <el-table-column |
| | | prop="acceptDate" |
| | | label="预计交期" |
| | | width="95" |
| | | width="115" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.acceptDate">{{ row.acceptDate.substring(0, 10) }}</div> |
| | |
| | | <el-table-column |
| | | prop="warning" |
| | | label="延期天数" |
| | | width="84" |
| | | width="114" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="parseFloat(row.warning)<0" style="color: red">{{ Math.abs(parseFloat(row.warning)) }}</div> |
| | |
| | | prop="suppercode" |
| | | label="供应商编码" |
| | | width="130" |
| | | /> |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.suppercode" class="ellipsis">{{ row.suppercode }}</div> |
| | | <div v-else /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="suppername" |
| | | width="283" |
| | |
| | | .number { |
| | | margin-top: -50px; |
| | | font-size: 18px; |
| | | font-size: 20px; |
| | | } |
| | | |
| | | .text{ |
| | | margin-top: 50px; |
| | | font-size: 20px; |
| | | } |
| | | } |
| | | } |
| | |
| | | .content_head { |
| | | color: #00ffff; |
| | | line-height: 20px; |
| | | font-size: 18px; |
| | | //font-size: 18px; |
| | | margin-bottom: 10px; |
| | | margin-top: -10px; |
| | | } |
| | |
| | | .content_head { |
| | | color: #00ffff; |
| | | line-height: 20px; |
| | | font-size: 18px; |
| | | //font-size: 18px; |
| | | margin-bottom: 10px; |
| | | margin-top: -10px; |
| | | } |
| | |
| | | |
| | | ::v-deep .cell { |
| | | padding: 0 !important; |
| | | font-size: 18px; |
| | | } |
| | | |
| | | </style> |
| | |
| | | :content="MarqueeTipsContent" |
| | | class="MarqueeTipsContentClass" |
| | | style="top:90px" |
| | | :speed="300" |
| | | :speed="180" |
| | | /> |
| | | <div class="kb_content"> |
| | | <div class="kb_left"> |
| | |
| | | <el-table-column |
| | | prop="voucherdate" |
| | | label="单据日期" |
| | | width="120" |
| | | width="140" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if=" row.voucherdate">{{ row.voucherdate.substring(0, 10) }}</div> |
| | | <div v-if="row.voucherdate" class="ellipsis">{{ row.voucherdate.substring(0, 10) }}</div> |
| | | <div v-else /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="wo" |
| | | label="单据编号" |
| | | width="159" |
| | | /> |
| | | width="189" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div class="ellipsis">{{ row.wo }}</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="wkshp_name" |
| | | label="生产车间" |
| | | width="105" |
| | | /> |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div class="ellipsis">{{ row.wkshp_name }}</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="saleOrderCode" |
| | | label="销售订单号" |
| | | width="180" |
| | | width="200" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.saleOrderCode">{{ row.saleOrderCode }}</div> |
| | | <div v-if="row.saleOrderCode" class="ellipsis">{{ row.saleOrderCode }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="materiel_code" |
| | | label="产品编号" |
| | | width="96" |
| | | /> |
| | | width="136" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div class="ellipsis">{{ row.materiel_code }}</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="materiel_name" |
| | | label="产品名称" |
| | | width="160" |
| | | width="180" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div class="ellipsis">{{ row.materiel_name }}</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="specification" |
| | | label="规格型号" |
| | | width="128" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.specification" class="ellipsis">{{ row.specification }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="specification"--> |
| | | <!-- label="规格型号"--> |
| | | <!-- width="128"--> |
| | | <!-- >--> |
| | | <!-- <template slot-scope="{row}">--> |
| | | <!-- <div v-if="row.specification" class="ellipsis">{{ row.specification }}</div>--> |
| | | <!-- <div v-else>/</div>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | <el-table-column |
| | | prop="stck_name" |
| | | label="预入仓库" |
| | | width="100" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.stck_name">{{ row.stck_name }}</div> |
| | | <div v-if="row.stck_name" class="ellipsis">{{ row.stck_name }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="quantity" |
| | | label="数量" |
| | | width="55" |
| | | width="63" |
| | | /> |
| | | <el-table-column |
| | | prop="totalStockInQuantity" |
| | | label="已入库数量" |
| | | width="80" |
| | | width="100" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.totalStockInQuantity">{{ row.totalStockInQuantity }}</div> |
| | | <div v-else>0</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="uomname" |
| | | label="单位" |
| | | width="50" |
| | | /> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="uomname"--> |
| | | <!-- label="单位"--> |
| | | <!-- width="50"--> |
| | | <!-- />--> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="preStartDate"--> |
| | | <!-- label="预计开工"--> |
| | |
| | | <el-table-column |
| | | prop="preFinishDate" |
| | | label="预计入库" |
| | | width="120" |
| | | width="140" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.preFinishDate">{{ row.preFinishDate.substring(0, 10) }}</div> |
| | |
| | | <el-table-column |
| | | prop="voucherdate" |
| | | label="单据日期" |
| | | width="110" |
| | | width="130" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.voucherdate">{{ row.voucherdate.substring(0, 10) }}</div> |
| | | <div v-else /> |
| | | <div v-if="row.voucherdate" class="ellipsis">{{ row.voucherdate.substring(0, 10) }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="wo" |
| | | label="单据编号" |
| | | width="145" |
| | | /> |
| | | width="195" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div class="ellipsis">{{ row.wo }}</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="customename" |
| | | label="客户" |
| | |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.customename" class="ellipsis">{{ row.customename }}</div> |
| | | <div v-else /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="username" |
| | | label="业务员" |
| | | width="65" |
| | | /> |
| | | <el-table-column |
| | | prop="SourceVoucherCode" |
| | | label="来源单号" |
| | | width="145" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.SourceVoucherCode">{{ row.SourceVoucherCode }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="username"--> |
| | | <!-- label="业务员"--> |
| | | <!-- width="65"--> |
| | | <!-- >--> |
| | | <!-- <template slot-scope="{row}">--> |
| | | <!-- <div v-if="row.username" class="ellipsis">{{ row.username }}</div>--> |
| | | <!-- <div v-else>/</div>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | <el-table-column |
| | | prop="materiel_code" |
| | | label="产品编号" |
| | | width="96" |
| | | /> |
| | | prop="SourceVoucherCode" |
| | | label="来源单号" |
| | | width="185" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.SourceVoucherCode" class="ellipsis">{{ row.SourceVoucherCode }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="materiel_code"--> |
| | | <!-- label="产品编号"--> |
| | | <!-- width="96"--> |
| | | <!-- />--> |
| | | <el-table-column |
| | | prop="materiel_name" |
| | | label="产品名称" |
| | | width="170" |
| | | /> |
| | | <el-table-column |
| | | prop="specification" |
| | | label="规格型号" |
| | | width="100" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.specification" class="ellipsis">{{ row.specification }}</div> |
| | | <div v-else>/</div> |
| | | <div v-if="row.materiel_name" class="ellipsis">{{ row.materiel_name }}</div> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="specification"--> |
| | | <!-- label="规格型号"--> |
| | | <!-- width="100"--> |
| | | <!-- >--> |
| | | <!-- <template slot-scope="{row}">--> |
| | | <!-- <div v-if="row.specification" class="ellipsis">{{ row.specification }}</div>--> |
| | | <!-- <div v-else>/</div>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | <el-table-column |
| | | prop="quantity" |
| | | label="数量" |
| | | width="47" |
| | | /> |
| | | width="87" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div class="ellipsis">{{ row.quantity }}</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="saleOutQuantity" |
| | | label="已发货数量" |
| | | width="80" |
| | | width="100" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.saleOutQuantity">{{ row.saleOutQuantity }}</div> |
| | | <div v-if="row.saleOutQuantity" class="ellipsis">{{ row.saleOutQuantity }}</div> |
| | | <div v-else>0</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="priuserdefnvc1" |
| | | label="检验方式" |
| | | width="80" |
| | | /> |
| | | width="110" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.priuserdefnvc1">{{ row.priuserdefnvc1 }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="priuserdefnvc2" |
| | | label="检验人员" |
| | | width="80" |
| | | /> |
| | | width="110" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.priuserdefnvc2">{{ row.priuserdefnvc2 }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="deliveryDate" |
| | | label="预计交货日期" |
| | | width="110" |
| | | width="141" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.deliveryDate">{{ row.deliveryDate.substring(0,10) }}</div> |
| | |
| | | //text-align: center; |
| | | //font-size: 26px; |
| | | line-height: 20px; |
| | | font-size: 18px; |
| | | //font-size: 18px; |
| | | margin-bottom: 10px; |
| | | margin-top: -10px; |
| | | color: #00ffff; |
| | |
| | | |
| | | .content_head { |
| | | line-height: 20px; |
| | | font-size: 18px; |
| | | //font-size: 18px; |
| | | margin-bottom: 10px; |
| | | margin-top: -10px; |
| | | color: #00ffff; |
| | |
| | | |
| | | ::v-deep .cell { |
| | | padding: 0 !important; |
| | | //font-size: 16px; |
| | | font-size: 18px; |
| | | } |
| | | </style> |
| | |
| | | <MarqueeTips |
| | | :content="MarqueeTipsContent" |
| | | class="MarqueeTipsContentClass" |
| | | :speed="300" |
| | | :speed="180" |
| | | /> |
| | | <!-- :speed="speed"--> |
| | | <div class="kb_content"> |
| | | <div class="kb_left"> |
| | | <!-- 1--> |
| | |
| | | |
| | | <div class="kb_left_top kb_pd10"> |
| | | <div class="kb_left_top02"> |
| | | <div v-for="item in lineContent4" :key="item.workcode" class="kb_left_top_block"> |
| | | <div v-for="item in lineContent3" :key="item.workcode" class="kb_left_top_block"> |
| | | <div class="kb_block02 kb_pd10"> |
| | | <div> |
| | | <div>销售单号:{{ item.saleordercode }}</div> |
| | |
| | | <el-table-column |
| | | prop="RowNum" |
| | | label="序号" |
| | | width="40" |
| | | width="50" |
| | | /> |
| | | <!-- label="加工状态"--> |
| | | <el-table-column |
| | | prop="status" |
| | | label="加工状态" |
| | | width="70" |
| | | label="状态" |
| | | width="65" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.status==='ALLO'">已派发</div> |
| | |
| | | <el-table-column |
| | | prop="lm_date" |
| | | label="派发时间" |
| | | width="95" |
| | | width="115" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ row.lm_date.substring(0, 10) }}</div> |
| | |
| | | <el-table-column |
| | | prop="saleOrderCode" |
| | | label="销售订单号" |
| | | width="158" |
| | | width="178" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.saleOrderCode">{{ row.saleOrderCode }}</div> |
| | | <div v-if="row.saleOrderCode" class="ellipsis">{{ row.saleOrderCode }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="wo_code" |
| | | label="加工单号" |
| | | width="175" |
| | | /> |
| | | <el-table-column |
| | | prop="partname" |
| | | label="产品名称" |
| | | width="145" |
| | | /> |
| | | <el-table-column |
| | | prop="partspec" |
| | | label="规格" |
| | | width="125" |
| | | width="205" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.partspec" class="ellipsis">{{ row.partspec }}</div> |
| | | <div v-if="row.wo_code" class="ellipsis">{{ row.wo_code }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | label="单位" |
| | | width="50" |
| | | /> |
| | | prop="partname" |
| | | label="产品名称" |
| | | width="150" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.partname" class="ellipsis">{{ row.partname }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="partspec"--> |
| | | <!-- label="规格"--> |
| | | <!-- width="125"--> |
| | | <!-- >--> |
| | | <!-- <template slot-scope="{row}">--> |
| | | <!-- <div v-if="row.partspec" class="ellipsis">{{ row.partspec }}</div>--> |
| | | <!-- <div v-else>/</div>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="name"--> |
| | | <!-- label="单位"--> |
| | | <!-- width="50"--> |
| | | <!-- />--> |
| | | <el-table-column |
| | | prop="plan_qty" |
| | | label="任务数量" |
| | | width="70" |
| | | width="85" |
| | | /> |
| | | <el-table-column |
| | | prop="good_qty" |
| | | label="完工数量" |
| | | width="70" |
| | | width="85" |
| | | /> |
| | | <el-table-column |
| | | prop="ng_qty" |
| | | label="不良数量" |
| | | width="70" |
| | | width="85" |
| | | /> |
| | | <el-table-column |
| | | prop="wcl" |
| | | label="完成率" |
| | | width="50" |
| | | width="60" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ parseFloat((row.good_qty * 100 / row.plan_qty).toFixed(2)) }}%</div> |
| | |
| | | <el-table-column |
| | | prop="planenddate" |
| | | label="预计开始" |
| | | width="95" |
| | | width="115" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ row.planenddate.substring(0, 10) }}</div> |
| | |
| | | <el-table-column |
| | | prop="planstartdate" |
| | | label="预计结束" |
| | | width="105" |
| | | width="125" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ row.planstartdate.substring(0, 10) }}</div> |
| | |
| | | prop="linename" |
| | | label="产线" |
| | | width="120" |
| | | /> |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.linename" class="ellipsis">{{ row.linename }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="partname" |
| | | width="138" |
| | | label="产品" |
| | | /> |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.partname" class="ellipsis">{{ row.partname }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="good_qty" |
| | | label="数量" |
| | |
| | | headTime: '', |
| | | |
| | | lineContent: [], |
| | | lineContent4: [], |
| | | lineContent3: [], |
| | | |
| | | leftTopData: [], |
| | | tableData: [], |
| | | tableDataRank: [], |
| | | lineCodeArr: [], |
| | | |
| | | ShopArr: ['CJ002'], // 车间编码数组 电池车间 |
| | | ShopArr: ['CJ002'], // 车间编码数组 |
| | | |
| | | MarqueeTipsContent: '', // 公告 |
| | | speed: 100// 公告播放的速度 |
| | |
| | | await this.getTableDataRoll() |
| | | await this.getTableDataRankRoll() |
| | | await this.getMarqueeTipsContent() |
| | | await this.getMarqueeTipsContent() |
| | | }, |
| | | // 获取公告 |
| | | getMarqueeTipsContent() { |
| | |
| | | this.MarqueeTipsContent = contentAll |
| | | this.speed = this.MarqueeTipsContent.length / 10 |
| | | }) |
| | | // }, this.speed * 1000) |
| | | }, 1000 * 60 * 5) |
| | | }) |
| | | }, |
| | | // 获取车间编码 |
| | | async getShopSearch() { |
| | | async getShopSearch() { |
| | | const res1 = await ShopSearch() |
| | | if (res1.code === '200') { |
| | | this.ShopArr = [] |
| | |
| | | LineSearchTopLeftData({ shopcode: this.ShopArr.join(',') }).then(res => { |
| | | this.lineContent = res.data |
| | | length = this.lineContent.length |
| | | count = Math.ceil(length / 4) // 需要轮播的组数 4个为一组 |
| | | this.lineContent4 = this.lineContent.slice(0, 4) |
| | | count = Math.ceil(length / 3) // 需要轮播的组数 3个为一组 |
| | | this.lineContent3 = this.lineContent.slice(0, 3) |
| | | }) |
| | | |
| | | let start = 0 |
| | | const task = setInterval(() => { |
| | | if (Math.floor(start / 4) === count && count !== 0) { |
| | | if (Math.floor(start / 3) === count && count !== 0) { |
| | | start = 0 |
| | | LineSearchTopLeftData({ shopcode: this.ShopArr.join(',') }).then(res => { |
| | | this.lineContent = res.data |
| | | length = this.lineContent.length |
| | | count = Math.ceil(length / 4) // 需要轮播的组数 4个为一组 |
| | | this.lineContent4 = this.lineContent.slice(0, 4) |
| | | count = Math.ceil(length / 3) // 需要轮播的组数 3个为一组 |
| | | this.lineContent3 = this.lineContent.slice(0, 3) |
| | | }) |
| | | } else if (count === 0) { |
| | | clearInterval(task) |
| | | this.getShopSearchLine() |
| | | } |
| | | this.lineContent4 = this.lineContent.slice(start, start + 4) |
| | | start = start + 4 |
| | | this.lineContent3 = this.lineContent.slice(start, start + 3) |
| | | start = start + 3 |
| | | }, 1000 * 3) |
| | | }, |
| | | |
| | |
| | | |
| | | .kb_left_top_title01 { |
| | | position: absolute; |
| | | top: 40px; |
| | | top: 37px; |
| | | left: 15px; |
| | | font-size: 18px; |
| | | display: flex; |
| | | color: #00ffff; |
| | | |
| | |
| | | flex-direction: column; |
| | | justify-content: flex-start; |
| | | padding-top: 70px; |
| | | |
| | | .kb_left_top02 { |
| | | display: flex; |
| | | flex-direction: column; |
| | |
| | | |
| | | .kb_left_top_block { |
| | | width: 100%; |
| | | height: 100px; |
| | | height: 133px; |
| | | display: flex; |
| | | font-size: 14px; |
| | | font-size: 17px; |
| | | border-bottom: 1px solid $kbBorderColor; |
| | | justify-content: flex-start; |
| | | |
| | |
| | | |
| | | .kb_block03 { |
| | | width: 1020px; |
| | | |
| | | font-size: 17px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | font-size: 12px; |
| | | //font-size: 12px; |
| | | border-radius: 5px; |
| | | |
| | | .kb_block03_content { |
| | | border: 1px solid $kbBorderColor; |
| | | width: 180px; |
| | | height: 50px; |
| | | height: 80px; |
| | | margin-right: 15px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .content01 { |
| | | height: 30px; |
| | | width: 100%; |
| | | height: 18px; |
| | | border-bottom: 1px solid $kbBorderColor; |
| | | display: flex; |
| | | align-items: center; |
| | |
| | | |
| | | .content02Parent { |
| | | display: flex; |
| | | |
| | | .content02 { |
| | | width: 60px; |
| | | border-right: 1px solid $kbBorderColor; |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | height: 50%; |
| | | //height: 50%; |
| | | height: 25px; |
| | | } |
| | | |
| | | .content02_2 { |
| | | height: 50%; |
| | | height: 25px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | |
| | | |
| | | } |
| | | |
| | | .kb_left_top_block:nth-child(4n) { |
| | | .kb_left_top_block:nth-child(3n) { |
| | | border-bottom: none !important; |
| | | } |
| | | } |
| | |
| | | flex-direction: column; |
| | | |
| | | .content_head { |
| | | font-size: 18px; |
| | | line-height: 20px; |
| | | margin-bottom: 10px; |
| | | margin-top: -10px; |
| | |
| | | flex-direction: column; |
| | | |
| | | .content_head { |
| | | font-size: 18px; |
| | | //font-size: 18px; |
| | | line-height: 20px; |
| | | margin-bottom: 10px; |
| | | margin-top: -10px; |
| | |
| | | |
| | | .kb_right_bottom_content_title { |
| | | color: #00ffff; |
| | | font-size: 18px; |
| | | margin-bottom: 10px; |
| | | margin-top: -10px; |
| | | margin-bottom: 5px; |
| | | margin-top: -12px; |
| | | } |
| | | |
| | | .kb_right_bottom_content { |
| | |
| | | |
| | | ::v-deep .cell { |
| | | padding: 0 !important; |
| | | font-size: 18px; |
| | | } |
| | | |
| | | .circleYellow { |
| | |
| | | /*background-color: #123;*/ |
| | | height: 90px; |
| | | line-height: 90px; |
| | | font-size: 40px; |
| | | font-size: 56px; |
| | | color: #09d8f2; |
| | | } |
| | | |
| | |
| | | |
| | | .kb_title_text{ |
| | | font-weight: bolder; |
| | | font-size: 24px; |
| | | } |
| | | |
| | | .kb_headerPic { |
| | |
| | | .kb_headTime { |
| | | position: absolute; |
| | | right: 10px; |
| | | width: 300px; |
| | | width: 360px; |
| | | height: 50px; |
| | | z-index: 10; |
| | | top: -20px; |
| | | font-size: 22px; |
| | | font-size: 28px; |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | height: 30px; |
| | | width: 100%; |
| | | line-height: 30px; |
| | | font-size: 26px; |
| | | font-size: 32px; |
| | | z-index: 2; |
| | | position: absolute; |
| | | top:80px; |
| | |
| | | <div class="kb_dashboard"> |
| | | <div class="kb_header"> |
| | | <div class="flex_c_c kb_header_text"> |
| | | 大岛车间综合看板 |
| | | 车间综合看板 |
| | | </div> |
| | | <div class="kb_headerPic" /> |
| | | <div class="kb_headTime"> |
| | |
| | | <MarqueeTips |
| | | :content="MarqueeTipsContent" |
| | | class="MarqueeTipsContentClass" |
| | | :speed="300" |
| | | :speed="180" |
| | | /> |
| | | <!-- :speed="speed"--> |
| | | <div class="kb_content"> |
| | |
| | | |
| | | <div class="kb_left_top kb_pd10"> |
| | | <div class="kb_left_top02"> |
| | | <div v-for="item in lineContent4" :key="item.workcode" class="kb_left_top_block"> |
| | | <div v-for="item in lineContent3" :key="item.workcode" class="kb_left_top_block"> |
| | | <div class="kb_block02 kb_pd10"> |
| | | <div> |
| | | <div>销售单号:{{ item.saleordercode }}</div> |
| | |
| | | <el-table-column |
| | | prop="RowNum" |
| | | label="序号" |
| | | width="40" |
| | | width="50" |
| | | /> |
| | | <!-- label="加工状态"--> |
| | | <el-table-column |
| | | prop="status" |
| | | label="加工状态" |
| | | width="70" |
| | | label="状态" |
| | | width="65" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.status==='ALLO'">已派发</div> |
| | |
| | | <el-table-column |
| | | prop="lm_date" |
| | | label="派发时间" |
| | | width="95" |
| | | width="115" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ row.lm_date.substring(0, 10) }}</div> |
| | |
| | | <el-table-column |
| | | prop="saleOrderCode" |
| | | label="销售订单号" |
| | | width="158" |
| | | width="178" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.saleOrderCode">{{ row.saleOrderCode }}</div> |
| | | <div v-if="row.saleOrderCode" class="ellipsis">{{ row.saleOrderCode }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="wo_code" |
| | | label="加工单号" |
| | | width="175" |
| | | /> |
| | | <el-table-column |
| | | prop="partname" |
| | | label="产品名称" |
| | | width="145" |
| | | /> |
| | | <el-table-column |
| | | prop="partspec" |
| | | label="规格" |
| | | width="125" |
| | | width="205" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.partspec" class="ellipsis">{{ row.partspec }}</div> |
| | | <div v-if="row.wo_code" class="ellipsis">{{ row.wo_code }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | label="单位" |
| | | width="50" |
| | | /> |
| | | prop="partname" |
| | | label="产品名称" |
| | | width="150" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.partname" class="ellipsis">{{ row.partname }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="partspec"--> |
| | | <!-- label="规格"--> |
| | | <!-- width="125"--> |
| | | <!-- >--> |
| | | <!-- <template slot-scope="{row}">--> |
| | | <!-- <div v-if="row.partspec" class="ellipsis">{{ row.partspec }}</div>--> |
| | | <!-- <div v-else>/</div>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="name"--> |
| | | <!-- label="单位"--> |
| | | <!-- width="50"--> |
| | | <!-- />--> |
| | | <el-table-column |
| | | prop="plan_qty" |
| | | label="任务数量" |
| | | width="70" |
| | | width="85" |
| | | /> |
| | | <el-table-column |
| | | prop="good_qty" |
| | | label="完工数量" |
| | | width="70" |
| | | width="85" |
| | | /> |
| | | <el-table-column |
| | | prop="ng_qty" |
| | | label="不良数量" |
| | | width="70" |
| | | width="85" |
| | | /> |
| | | <el-table-column |
| | | prop="wcl" |
| | | label="完成率" |
| | | width="50" |
| | | width="60" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ parseFloat((row.good_qty * 100 / row.plan_qty).toFixed(2)) }}%</div> |
| | |
| | | <el-table-column |
| | | prop="planenddate" |
| | | label="预计开始" |
| | | width="95" |
| | | width="115" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ row.planenddate.substring(0, 10) }}</div> |
| | |
| | | <el-table-column |
| | | prop="planstartdate" |
| | | label="预计结束" |
| | | width="105" |
| | | width="125" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ row.planstartdate.substring(0, 10) }}</div> |
| | |
| | | prop="linename" |
| | | label="产线" |
| | | width="120" |
| | | /> |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.linename" class="ellipsis">{{ row.linename }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="partname" |
| | | width="138" |
| | | label="产品" |
| | | /> |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.partname" class="ellipsis">{{ row.partname }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="good_qty" |
| | | label="数量" |
| | |
| | | headTime: '', |
| | | |
| | | lineContent: [], |
| | | lineContent4: [], |
| | | lineContent3: [], |
| | | |
| | | leftTopData: [], |
| | | tableData: [], |
| | |
| | | this.MarqueeTipsContent = contentAll |
| | | this.speed = this.MarqueeTipsContent.length / 10 |
| | | }) |
| | | // }, this.speed * 1000) |
| | | // }, this.speed * 1000) |
| | | }, 1000 * 60 * 5) |
| | | }) |
| | | }, |
| | | // 获取车间编码 |
| | | async getShopSearch() { |
| | | async getShopSearch() { |
| | | const res1 = await ShopSearch() |
| | | if (res1.code === '200') { |
| | | this.ShopArr = [] |
| | |
| | | LineSearchTopLeftData({ shopcode: this.ShopArr.join(',') }).then(res => { |
| | | this.lineContent = res.data |
| | | length = this.lineContent.length |
| | | count = Math.ceil(length / 4) // 需要轮播的组数 4个为一组 |
| | | this.lineContent4 = this.lineContent.slice(0, 4) |
| | | count = Math.ceil(length / 3) // 需要轮播的组数 3个为一组 |
| | | this.lineContent3 = this.lineContent.slice(0, 3) |
| | | }) |
| | | |
| | | let start = 0 |
| | | const task = setInterval(() => { |
| | | if (Math.floor(start / 4) === count && count !== 0) { |
| | | if (Math.floor(start / 3) === count && count !== 0) { |
| | | start = 0 |
| | | LineSearchTopLeftData({ shopcode: this.ShopArr.join(',') }).then(res => { |
| | | this.lineContent = res.data |
| | | length = this.lineContent.length |
| | | count = Math.ceil(length / 4) // 需要轮播的组数 4个为一组 |
| | | this.lineContent4 = this.lineContent.slice(0, 4) |
| | | count = Math.ceil(length / 3) // 需要轮播的组数 3个为一组 |
| | | this.lineContent3 = this.lineContent.slice(0, 3) |
| | | }) |
| | | } else if (count === 0) { |
| | | clearInterval(task) |
| | | this.getShopSearchLine() |
| | | } |
| | | this.lineContent4 = this.lineContent.slice(start, start + 4) |
| | | start = start + 4 |
| | | this.lineContent3 = this.lineContent.slice(start, start + 3) |
| | | start = start + 3 |
| | | }, 1000 * 3) |
| | | }, |
| | | |
| | |
| | | |
| | | .kb_left_top_title01 { |
| | | position: absolute; |
| | | top: 40px; |
| | | top: 37px; |
| | | left: 15px; |
| | | font-size: 18px; |
| | | display: flex; |
| | | color: #00ffff; |
| | | |
| | |
| | | flex-direction: column; |
| | | justify-content: flex-start; |
| | | padding-top: 70px; |
| | | |
| | | .kb_left_top02 { |
| | | display: flex; |
| | | flex-direction: column; |
| | |
| | | |
| | | .kb_left_top_block { |
| | | width: 100%; |
| | | height: 100px; |
| | | height: 133px; |
| | | display: flex; |
| | | font-size: 14px; |
| | | font-size: 17px; |
| | | border-bottom: 1px solid $kbBorderColor; |
| | | justify-content: flex-start; |
| | | |
| | |
| | | |
| | | .kb_block03 { |
| | | width: 1020px; |
| | | |
| | | font-size: 17px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | font-size: 12px; |
| | | //font-size: 12px; |
| | | border-radius: 5px; |
| | | |
| | | .kb_block03_content { |
| | | border: 1px solid $kbBorderColor; |
| | | width: 180px; |
| | | height: 50px; |
| | | height: 80px; |
| | | margin-right: 15px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .content01 { |
| | | height: 30px; |
| | | width: 100%; |
| | | height: 18px; |
| | | border-bottom: 1px solid $kbBorderColor; |
| | | display: flex; |
| | | align-items: center; |
| | |
| | | |
| | | .content02Parent { |
| | | display: flex; |
| | | |
| | | .content02 { |
| | | width: 60px; |
| | | border-right: 1px solid $kbBorderColor; |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | height: 50%; |
| | | //height: 50%; |
| | | height: 25px; |
| | | } |
| | | |
| | | .content02_2 { |
| | | height: 50%; |
| | | height: 25px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | |
| | | |
| | | } |
| | | |
| | | .kb_left_top_block:nth-child(4n) { |
| | | .kb_left_top_block:nth-child(3n) { |
| | | border-bottom: none !important; |
| | | } |
| | | } |
| | |
| | | flex-direction: column; |
| | | |
| | | .content_head { |
| | | font-size: 18px; |
| | | line-height: 20px; |
| | | margin-bottom: 10px; |
| | | margin-top: -10px; |
| | |
| | | flex-direction: column; |
| | | |
| | | .content_head { |
| | | font-size: 18px; |
| | | //font-size: 18px; |
| | | line-height: 20px; |
| | | margin-bottom: 10px; |
| | | margin-top: -10px; |
| | |
| | | |
| | | .kb_right_bottom_content_title { |
| | | color: #00ffff; |
| | | font-size: 18px; |
| | | margin-bottom: 10px; |
| | | margin-top: -10px; |
| | | margin-bottom: 5px; |
| | | margin-top: -12px; |
| | | } |
| | | |
| | | .kb_right_bottom_content { |
| | |
| | | |
| | | ::v-deep .cell { |
| | | padding: 0 !important; |
| | | font-size: 18px; |
| | | } |
| | | |
| | | .circleYellow { |
| | |
| | | <MarqueeTips |
| | | :content="MarqueeTipsContent" |
| | | class="MarqueeTipsContentClass" |
| | | :speed="300" |
| | | :speed="180" |
| | | /> |
| | | <!-- :speed="speed"--> |
| | | <div class="kb_content"> |
| | | <div class="kb_left"> |
| | | <!-- 1--> |
| | |
| | | |
| | | <div class="kb_left_top kb_pd10"> |
| | | <div class="kb_left_top02"> |
| | | <div v-for="item in lineContent4" :key="item.workcode" class="kb_left_top_block"> |
| | | <div v-for="item in lineContent3" :key="item.workcode" class="kb_left_top_block"> |
| | | <div class="kb_block02 kb_pd10"> |
| | | <div> |
| | | <div>销售单号:{{ item.saleordercode }}</div> |
| | |
| | | <el-table-column |
| | | prop="RowNum" |
| | | label="序号" |
| | | width="40" |
| | | width="50" |
| | | /> |
| | | <!-- label="加工状态"--> |
| | | <el-table-column |
| | | prop="status" |
| | | label="加工状态" |
| | | width="70" |
| | | label="状态" |
| | | width="65" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.status==='ALLO'">已派发</div> |
| | |
| | | <el-table-column |
| | | prop="lm_date" |
| | | label="派发时间" |
| | | width="95" |
| | | width="115" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ row.lm_date.substring(0, 10) }}</div> |
| | |
| | | <el-table-column |
| | | prop="saleOrderCode" |
| | | label="销售订单号" |
| | | width="158" |
| | | width="178" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.saleOrderCode">{{ row.saleOrderCode }}</div> |
| | | <div v-if="row.saleOrderCode" class="ellipsis">{{ row.saleOrderCode }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="wo_code" |
| | | label="加工单号" |
| | | width="175" |
| | | /> |
| | | <el-table-column |
| | | prop="partname" |
| | | label="产品名称" |
| | | width="145" |
| | | /> |
| | | <el-table-column |
| | | prop="partspec" |
| | | label="规格" |
| | | width="125" |
| | | width="205" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.partspec" class="ellipsis">{{ row.partspec }}</div> |
| | | <div v-if="row.wo_code" class="ellipsis">{{ row.wo_code }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | label="单位" |
| | | width="50" |
| | | /> |
| | | prop="partname" |
| | | label="产品名称" |
| | | width="150" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.partname" class="ellipsis">{{ row.partname }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="partspec"--> |
| | | <!-- label="规格"--> |
| | | <!-- width="125"--> |
| | | <!-- >--> |
| | | <!-- <template slot-scope="{row}">--> |
| | | <!-- <div v-if="row.partspec" class="ellipsis">{{ row.partspec }}</div>--> |
| | | <!-- <div v-else>/</div>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="name"--> |
| | | <!-- label="单位"--> |
| | | <!-- width="50"--> |
| | | <!-- />--> |
| | | <el-table-column |
| | | prop="plan_qty" |
| | | label="任务数量" |
| | | width="70" |
| | | width="85" |
| | | /> |
| | | <el-table-column |
| | | prop="good_qty" |
| | | label="完工数量" |
| | | width="70" |
| | | width="85" |
| | | /> |
| | | <el-table-column |
| | | prop="ng_qty" |
| | | label="不良数量" |
| | | width="70" |
| | | width="85" |
| | | /> |
| | | <el-table-column |
| | | prop="wcl" |
| | | label="完成率" |
| | | width="50" |
| | | width="60" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ parseFloat((row.good_qty * 100 / row.plan_qty).toFixed(2)) }}%</div> |
| | |
| | | <el-table-column |
| | | prop="planenddate" |
| | | label="预计开始" |
| | | width="95" |
| | | width="115" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ row.planenddate.substring(0, 10) }}</div> |
| | |
| | | <el-table-column |
| | | prop="planstartdate" |
| | | label="预计结束" |
| | | width="105" |
| | | width="125" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ row.planstartdate.substring(0, 10) }}</div> |
| | |
| | | prop="linename" |
| | | label="产线" |
| | | width="120" |
| | | /> |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.linename" class="ellipsis">{{ row.linename }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="partname" |
| | | width="138" |
| | | label="产品" |
| | | /> |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.partname" class="ellipsis">{{ row.partname }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="good_qty" |
| | | label="数量" |
| | |
| | | headTime: '', |
| | | |
| | | lineContent: [], |
| | | lineContent4: [], |
| | | lineContent3: [], |
| | | |
| | | leftTopData: [], |
| | | tableData: [], |
| | | tableDataRank: [], |
| | | lineCodeArr: [], |
| | | |
| | | ShopArr: ['CJ001'], // 车间编码数组 装配车间 |
| | | ShopArr: ['CJ001'], // 车间编码数组 |
| | | |
| | | MarqueeTipsContent: '', // 公告 |
| | | speed: 100// 公告播放的速度 |
| | |
| | | await this.getTableDataRoll() |
| | | await this.getTableDataRankRoll() |
| | | await this.getMarqueeTipsContent() |
| | | await this.getMarqueeTipsContent() |
| | | }, |
| | | // 获取公告 |
| | | getMarqueeTipsContent() { |
| | |
| | | this.MarqueeTipsContent = contentAll |
| | | this.speed = this.MarqueeTipsContent.length / 10 |
| | | }) |
| | | // }, this.speed * 1000) |
| | | }, 1000 * 60 * 5) |
| | | }) |
| | | }, |
| | | // 获取车间编码 |
| | | async getShopSearch() { |
| | | async getShopSearch() { |
| | | const res1 = await ShopSearch() |
| | | if (res1.code === '200') { |
| | | this.ShopArr = [] |
| | |
| | | LineSearchTopLeftData({ shopcode: this.ShopArr.join(',') }).then(res => { |
| | | this.lineContent = res.data |
| | | length = this.lineContent.length |
| | | count = Math.ceil(length / 4) // 需要轮播的组数 4个为一组 |
| | | this.lineContent4 = this.lineContent.slice(0, 4) |
| | | count = Math.ceil(length / 3) // 需要轮播的组数 3个为一组 |
| | | this.lineContent3 = this.lineContent.slice(0, 3) |
| | | }) |
| | | |
| | | let start = 0 |
| | | const task = setInterval(() => { |
| | | if (Math.floor(start / 4) === count && count !== 0) { |
| | | if (Math.floor(start / 3) === count && count !== 0) { |
| | | start = 0 |
| | | LineSearchTopLeftData({ shopcode: this.ShopArr.join(',') }).then(res => { |
| | | this.lineContent = res.data |
| | | length = this.lineContent.length |
| | | count = Math.ceil(length / 4) // 需要轮播的组数 4个为一组 |
| | | this.lineContent4 = this.lineContent.slice(0, 4) |
| | | count = Math.ceil(length / 3) // 需要轮播的组数 3个为一组 |
| | | this.lineContent3 = this.lineContent.slice(0, 3) |
| | | }) |
| | | } else if (count === 0) { |
| | | clearInterval(task) |
| | | this.getShopSearchLine() |
| | | } |
| | | this.lineContent4 = this.lineContent.slice(start, start + 4) |
| | | start = start + 4 |
| | | this.lineContent3 = this.lineContent.slice(start, start + 3) |
| | | start = start + 3 |
| | | }, 1000 * 3) |
| | | }, |
| | | |
| | |
| | | |
| | | .kb_left_top_title01 { |
| | | position: absolute; |
| | | top: 40px; |
| | | top: 37px; |
| | | left: 15px; |
| | | font-size: 18px; |
| | | display: flex; |
| | | color: #00ffff; |
| | | |
| | |
| | | flex-direction: column; |
| | | justify-content: flex-start; |
| | | padding-top: 70px; |
| | | |
| | | .kb_left_top02 { |
| | | display: flex; |
| | | flex-direction: column; |
| | |
| | | |
| | | .kb_left_top_block { |
| | | width: 100%; |
| | | height: 100px; |
| | | height: 133px; |
| | | display: flex; |
| | | font-size: 14px; |
| | | font-size: 17px; |
| | | border-bottom: 1px solid $kbBorderColor; |
| | | justify-content: flex-start; |
| | | |
| | |
| | | |
| | | .kb_block03 { |
| | | width: 1020px; |
| | | |
| | | font-size: 17px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | font-size: 12px; |
| | | //font-size: 12px; |
| | | border-radius: 5px; |
| | | |
| | | .kb_block03_content { |
| | | border: 1px solid $kbBorderColor; |
| | | width: 180px; |
| | | height: 50px; |
| | | height: 80px; |
| | | margin-right: 15px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .content01 { |
| | | height: 30px; |
| | | width: 100%; |
| | | height: 18px; |
| | | border-bottom: 1px solid $kbBorderColor; |
| | | display: flex; |
| | | align-items: center; |
| | |
| | | |
| | | .content02Parent { |
| | | display: flex; |
| | | |
| | | .content02 { |
| | | width: 60px; |
| | | border-right: 1px solid $kbBorderColor; |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | height: 50%; |
| | | //height: 50%; |
| | | height: 25px; |
| | | } |
| | | |
| | | .content02_2 { |
| | | height: 50%; |
| | | height: 25px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | |
| | | |
| | | } |
| | | |
| | | .kb_left_top_block:nth-child(4n) { |
| | | .kb_left_top_block:nth-child(3n) { |
| | | border-bottom: none !important; |
| | | } |
| | | } |
| | |
| | | flex-direction: column; |
| | | |
| | | .content_head { |
| | | font-size: 18px; |
| | | line-height: 20px; |
| | | margin-bottom: 10px; |
| | | margin-top: -10px; |
| | |
| | | flex-direction: column; |
| | | |
| | | .content_head { |
| | | font-size: 18px; |
| | | //font-size: 18px; |
| | | line-height: 20px; |
| | | margin-bottom: 10px; |
| | | margin-top: -10px; |
| | |
| | | |
| | | .kb_right_bottom_content_title { |
| | | color: #00ffff; |
| | | font-size: 18px; |
| | | margin-bottom: 10px; |
| | | margin-top: -10px; |
| | | margin-bottom: 5px; |
| | | margin-top: -12px; |
| | | } |
| | | |
| | | .kb_right_bottom_content { |
| | |
| | | |
| | | ::v-deep .cell { |
| | | padding: 0 !important; |
| | | font-size: 18px; |
| | | } |
| | | |
| | | .circleYellow { |
| | |
| | | }, |
| | | async getDeviceCheckTakeSearch() { |
| | | const res = await DeviceCheckTakeSearch(this.form) |
| | | // this.tableData = res.data |
| | | this.tableData = [ |
| | | { RowNum: 1, djjg: 'N' } |
| | | ] |
| | | this.tableData = res.data |
| | | // this.tableData = [ |
| | | // { RowNum: 1, djjg: 'N' } |
| | | // ] |
| | | this.total = res.count |
| | | |
| | | return { code: res.code } |