| | |
| | | <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 { |