From 1f4e7d0f73a73e7350cf5a1df279d5f30904c5d5 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期三, 06 十二月 2023 08:41:32 +0800 Subject: [PATCH] bug --- screen_standard/src/views/process.vue | 163 +++++++++++++++++++++++++++++++++-------------------- 1 files changed, 101 insertions(+), 62 deletions(-) diff --git a/screen_standard/src/views/process.vue b/screen_standard/src/views/process.vue index 0522071..39e7975 100644 --- a/screen_standard/src/views/process.vue +++ b/screen_standard/src/views/process.vue @@ -23,7 +23,7 @@ <div class="scroll_item_row">{{ item.qualifiedNum }}</div> <div class="scroll_item_row">{{ item.unqualifiedNum }}</div> <div class="scroll_item_row">{{ item.undoneNum }}</div> - <div class="scroll_item_row">{{ item.unqualifiedRate }}%</div> + <div class="scroll_item_row">{{ (item.unqualifiedRate||0).toFixed(2) }}%</div> </div> </div> </div> @@ -40,10 +40,10 @@ <span>{{ item.userName }}</span> </div> <div class="content_left_item1_content_row_line"> - <el-progress :show-text="false" :percentage="item.doneNum / baseNum"> + <el-progress :show-text="false" :percentage="(item.doneNum||0) / baseNum * 100"> </el-progress> </div> - <div class="content_left_item1_content_row_num">{{ item.doneNum }}</div> + <div class="content_left_item1_content_row_num">{{ item.doneNum||0 }}</div> </div> </div> </div> @@ -55,7 +55,7 @@ <span>{{ item.userName }}</span> </div> <div class="content_left_item1_content_row_line"> - <el-progress :show-text="false" :percentage="item.doneNum / baseNum"> + <el-progress :show-text="false" :percentage="item.doneNum / baseNum * 100"> </el-progress> </div> <div class="content_left_item1_content_row_num">{{ item.doneNum }}</div> @@ -86,10 +86,10 @@ <div class="scroll_item_row">{{ item.userName }}</div> <div class="scroll_item_row">{{ item.materialName }}</div> <div class="scroll_item_row">{{ item.materialCode }}</div> - <div class="scroll_item_row">{{ item.createTime }}</div> + <div class="scroll_item_row">{{ dateToSub(item.createTime) }}</div> <div class="scroll_item_row">{{ item.qualifiedNum }}</div> <div class="scroll_item_row">{{ item.unqualifiedNum }}</div> - <div class="scroll_item_row">{{ item.unqualifiedRate }}%</div> + <div class="scroll_item_row">{{ (item.unqualifiedRate||0).toFixed(2) }}%</div> </div> </div> </div> @@ -113,15 +113,16 @@ </template> <script setup> -import { reactive, ref, toRefs, onMounted, onBeforeUnmount, onUnmounted } from 'vue' +import { reactive, ref, toRefs, onMounted, onUnmounted, nextTick } from 'vue' import { getProcedurePlanData, getTop, getProcedurePlansList, getRecordLogPage, getUnqualified7DayData, getUnqualifiedCateData } from '@/utils/api.js' import { useCounterStore } from '@/stores/counter.js' import { useRoute } from 'vue-router' +import { dateToSub } from '@/utils' import * as echarts from 'echarts' const route = useRoute() const enterprise = useCounterStore() -let planTimer = ref(null) -let reportTimer = ref(null) +let mainTimer = ref(null) +let scrollTimer = ref(null) let planContainer = ref(null) let reportLogContainer = ref(null) const data = reactive({ @@ -138,24 +139,35 @@ { categoryName: '灏哄涓嶈壇', unqualifiedNum: 22 }, { categoryName: '鏈夊垝鐥�', unqualifiedNum: 5 }, { categoryName: '鍏朵粬', unqualifiedNum: 2 }, - ] + ], + planScroll: false, + reportScroll: false, }) -let { listData, top1, top2, baseNum, allBad } = toRefs(data) +let { listData, top1, top2, baseNum, allBad, reportListData } = toRefs(data) -// start() -onBeforeUnmount(() => { - clearTimeout(planTimer.value) - clearTimeout(reportTimer.value) -}) onMounted(() => { + window.addEventListener('resize', () => { + console.log('resize'); + nextTick(() => { + setDayChart() + setTypeChart() + }) + }) initData() + scrollTimer.value = setInterval(() => { + ListScroll() + reportScroll() + }, 100) + mainTimer.value = setInterval(() => { + initData() + }, 60000) }) onUnmounted(() => { - clearTimeout(planTimer.value) - clearTimeout(reportTimer.value) + clearTimeout(scrollTimer.value) + clearTimeout(mainTimer.value) }) function initData() { @@ -168,7 +180,6 @@ getTop(enterprise.companyId, enterprise.departId, { procedureId: route.query.procedureId }) .then(res => { if (res.length) { - data.baseNum = res[0].doneNum data.top1 = [] data.top2 = [] @@ -189,66 +200,65 @@ getProcedurePlansList(enterprise.companyId, enterprise.departId, { procedureId: route.query.procedureId }) .then(res => { data.listData = res - start() + data.planScroll = true }) // 鎶ュ伐鏃ュ織鍒嗛〉鏌ヨ - getRecordLogPage(enterprise.companyId, enterprise.departId, { capacity: 9999, page: 1, model: { procedureId: route.query.procedureId } }) + getRecordLogPage(enterprise.companyId, enterprise.departId, { capacity: 20, page: 1, model: { procedureId: route.query.procedureId } }) .then(res => { data.reportListData = res.records - reportStart() + data.reportScroll = true }) getUnqualified7DayData(enterprise.companyId, enterprise.departId, route.query.procedureId) .then(res => { data.dayDistribution = res + data.allBad = res.reduce((accumulator, currentValue) => accumulator + currentValue.unqualifiedNum, 0) setDayChart() }) getUnqualifiedCateData(enterprise.companyId, enterprise.departId, route.query.procedureId) .then(res => { data.typeDistribution = res - data.allBad = res.reduce((accumulator, currentValue) => accumulator + currentValue.unqualifiedNum, 0) setTypeChart() }) } - +// 榧犳爣绉诲叆 function handleMouseEnter() { - clearTimeout(planTimer.value) + data.planScroll = false } function handleMouseLeave() { - start() + data.planScroll = true } - +// 榧犳爣绉婚櫎 function handleMouseEnterReport() { - clearTimeout(reportTimer.value) + data.reportScroll = false } function handleMouseLeaveReport() { - reportStart() + data.reportScroll = true } /** - * 宸ュ簭璁″垝 + * 宸ュ簭璁″垝婊氬姩鏂规硶 */ -// 寮�鍚畾鏃跺櫒 -function start() { - clearTimeout(planTimer.value) - // 瀹氭椂鍣ㄨЕ鍙戝懆鏈� - // let speed = ref(100) - planTimer.value = setInterval(ListScroll, 100) -} function ListScroll() { + if (!data.planScroll) return let scrollDom = planContainer.value + if (!scrollDom) return // 鍒よ缁勪欢鏄惁娓叉煋瀹屾垚 if (scrollDom.offsetHeight == 0) { scrollDom = planContainer.value } else { // 濡傛灉鍒楄〃鏁伴噺杩囧皯涓嶈繘琛屾粴鍔� - if (scrollDom.children.length <= 10) { - clearTimeout(planTimer.value) + if (scrollDom.children.length < 11) { + data.planScroll = false return } + // scrollTop鎸囩殑鏄�滃厓绱犱腑鐨勫唴瀹光�濊秴鍑衡�滃厓绱犱笂杈圭晫鈥濈殑閭i儴鍒嗙殑楂樺害 + // scrollHeight鎸囨暣涓厓绱犵殑楂樺害锛屼笌鍏冪礌鏈韩鏈夊叧锛屾槸鍏冪礌鏈韩鐨勯珮搴︿笌浣犳墍璁剧疆鐨剆tyle灞炴�х浉鍔犵殑缁撴灉锛屼絾涓巓verflow:hidden绛夊睘鎬ф棤鍏筹紝涓庢槸鍚﹀湪鍙鑼冨洿鍐呮棤鍏� + // clientHeight鍚箟锛氬厓绱犵殑鍍忕礌楂樺害锛屽寘鍚厓绱犵殑楂樺害+鍐呰竟璺濓紝涓嶅寘鍚按骞虫粴鍔ㄦ潯锛岃竟妗嗗拰澶栬竟璺� // 缁勪欢杩涜婊氬姩 - scrollDom.scrollTop += 1.5 + scrollDom.scrollTop += 2 + console.log(scrollDom.scrollTop); // 鍒ゆ柇鏄惁婊氬姩鍒板簳閮� - if (scrollDom.scrollTop >= (scrollDom.scrollHeight - scrollDom.clientHeight)) { + if (scrollDom.scrollTop >= (scrollDom.scrollHeight - scrollDom.clientHeight - 2)) { // 鑾峰彇缁勪欢绗竴涓妭鐐� let first = scrollDom.children[0] // 鍒犻櫎鑺傜偣 @@ -259,29 +269,26 @@ } } /** - * 鎶ュ伐鏃ュ織 + * 鎶ュ伐鏃ュ織婊氬姩鏂规硶 */ -function reportStart() { - clearTimeout(reportTimer.value) - // 瀹氭椂鍣ㄨЕ鍙戝懆鏈� - // let speed = ref(100) - reportTimer.value = setInterval(reportScroll, 100) -} function reportScroll() { + if (!data.reportScroll) return let scrollDom = reportLogContainer.value + if (!scrollDom) return // 鍒よ缁勪欢鏄惁娓叉煋瀹屾垚 if (scrollDom.offsetHeight == 0) { scrollDom = reportLogContainer.value } else { // 濡傛灉鍒楄〃鏁伴噺杩囧皯涓嶈繘琛屾粴鍔� if (scrollDom.children.length <= 10) { - clearTimeout(reportTimer.value) + data.reportScroll = false return } // 缁勪欢杩涜婊氬姩 - scrollDom.scrollTop += 1.5 + scrollDom.scrollTop += 1 + console.log(scrollDom.scrollTop); // 鍒ゆ柇鏄惁婊氬姩鍒板簳閮� - if (scrollDom.scrollTop >= (scrollDom.scrollHeight - scrollDom.clientHeight)) { + if (scrollDom.scrollTop && scrollDom.scrollTop >= (scrollDom.scrollHeight - scrollDom.clientHeight)) { // 鑾峰彇缁勪欢绗竴涓妭鐐� let first = scrollDom.children[0] // 鍒犻櫎鑺傜偣 @@ -302,16 +309,20 @@ data.dayDistribution.forEach(item => { dateList.push(item.createTime) - numList.push(item.unqualifiedNum) + numList.push(item.unqualifiedNum || 0) }) let option; option = { title: { - text: ' 杩戜竷鏃ヤ笉鑹搧鎬绘暟锛�67', + text: ` 杩戜竷鏃ヤ笉鑹搧鎬绘暟锛�${data.allBad}`, textStyle: { color: '#fff', fontSize: 12 } + }, + grid: { + top: 40, + bottom: 40 }, xAxis: { type: 'category', @@ -320,6 +331,15 @@ lineStyle: { width: 0.5, color: ['#fff'] + } + }, + axisLine: { + show: true, + onZero: true, + lineStyle: { + width: 1, + color: '#fff', + opacity: .5 } }, axisLabel: { @@ -336,6 +356,15 @@ lineStyle: { width: 0.5, color: ['#fff'] + } + }, + axisLine: { + show: true, + onZero: true, + lineStyle: { + width: 1, + color: '#fff', + opacity: .5 } }, axisLabel: { @@ -422,13 +451,16 @@ show: false }, label: { - formatter: '{dot| } {title|{b} {c}}\n\n{per|{d}%}', + formatter: '{dot| } {title|{b} {c}}\n{per|{d}%}', rich: { title: { - color: '#fff' + color: '#fff', + lineHeight: 13, + fontSize: 10 }, per: { - color: '#01D9FE' + color: '#01D9FE', + fontSize: 10 }, dot: { backgroundColor: 'inherit', @@ -464,7 +496,7 @@ <style lang="scss" scoped> .proccess-content { display: flex; - + flex: 1; .header-title { background-image: url('@/assets/img/gongxu_title@2x.png'); height: 28px; @@ -482,15 +514,15 @@ .process-left { flex: 1; margin-right: 20px; - .proccess-plan { - height: 460px; + height: 464px; background: linear-gradient(180deg, rgba(52, 88, 159, 0) 0%, rgba(0, 86, 255, 0.4) 100%); margin-bottom: 20px; } .today-yield { - height: 222px; + height: calc(100vh - 725px); + min-height: 226px; background: linear-gradient(180deg, rgba(52, 88, 159, 0) 0%, rgba(0, 86, 255, 0.4) 100%); .yield-content { @@ -526,6 +558,11 @@ font-weight: 400; color: #D2E0FF; margin-left: 9px; + width: 50px; + white-space: nowrap; + text-overflow: ellipsis; + -webkit-text-overflow: ellipsis; + overflow: hidden; } .num { @@ -585,13 +622,14 @@ flex: 1; .report-log { - height: 460px; + height: 464px; background: linear-gradient(180deg, rgba(52, 88, 159, 0) 0%, rgba(0, 86, 255, 0.4) 100%); margin-bottom: 20px; } .bad-diagram { - height: 222px; + height:calc(100vh - 725px);; + min-height: 226px; background: linear-gradient(180deg, rgba(52, 88, 159, 0) 0%, rgba(0, 86, 255, 0.4) 100%); .bad-content { @@ -714,6 +752,7 @@ display: flex; align-items: center; justify-content: center; + font-size: 13px; } } } -- Gitblit v1.9.3