| <template> |
| <div class="zhjxMain"> |
| <div class="content"> |
| |
| <div class="left-box" :ref="refs.wrapper" @wheel.prevent="scaleWheel($event)"> |
| <div class="box" :ref="refs.box" @mousedown="dragstart($event)"> |
| <vue-pdf-embed :source="testpdf1" :style="scaleFun" class="vue-pdf-embed" :page="activePage" /> |
| </div> |
| <div class="zoomin-wrapper"> |
| <img src="@/assets/XRKG/btn-enlarge.svg" @click="rollBtn('enlarge')" alt="" /> |
| <img src="@/assets/XRKG/btn-zoomin.svg" @click="rollBtn('zoomin')" alt="" /> |
| <img src="@/assets/zhjx-xrkg/btn-flip.svg" alt="" @click="rolate" /> |
| </div> |
| </div> |
| <div class="right-box"> |
| <div class="item" v-for="(value, key) in parseObj"> |
| <div class="label">{{ key }}</div> |
| <div class="text"> |
| {{ value }} |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </template> |
| |
| <script setup lang="ts"> |
| import { ref, computed, reactive, watch } from 'vue'; |
| import VuePdfEmbed from 'vue-pdf-embed'; |
| import testpdf1 from '@/assets/zhjx-xrkg/testpdf1.pdf'; |
| |
| const props = defineProps<{ |
| activePage: number; |
| }>(); |
| |
| const parseObj = ref({ |
| 设备名称: '1RPEOOIBA冷却剂疏水泵', |
| 功能位置: 'ND-4-01-RGL-010AR', |
| 缺陷原因: `取工作票,现场确认设备位号及安措正确 |
| 拆卸联轴器螺栓,对中复查同轴度 0.08mm平行度0.03mm不合格 |
| 拆卸泵盖螺栓,将泵憋体脱出运至检修场地,临时开口设备做好封堵拆卸叶轮及机械密封组件,解体轴承箱,消洗检查各零部件,测量泵轴最大0.0...大0.02mm,轴与轴承配合间隙最大0.01mm,轴与叶轮配合间隙0.02mm,体口环与叶回装新轴承及机械密封组件,安装泵叶轮,将泵整体运往现场回装,至工作油位,调整对中同轴度 0.03mm平行度 0.025mm,合格 |
| 回装联轴器及保护單,清理现场 |
| 归还工作票及辐射票完工,修后试验在工单01447934-02中执行`, |
| 处理措施: `1RPB002P0 解体检查工作完成`, |
| 处理结果: `取工作票,现场确认设备位号及安措正确 |
| 拆卸联轴器螺栓,对中复查同轴度 0.08mm平行度0.03mm不合格 |
| 拆卸泵盖螺栓,将泵憋体脱出运至检修场地,临时开口设备做好封堵拆卸叶轮及机械密封组件,解体轴承箱,消洗检查各零部件,测量泵轴最大0.0...大0.02mm,轴与轴承配合间隙最大0.01mm,轴与叶轮配合间隙0.02mm,体口环与叶回装新轴承及机械密封组件,安装泵叶轮,将泵整体运往现场回装,至工作油位,调整对中同轴度 0.03mm平行度 0.025mm,合格 |
| 回装联轴器及保护單,清理现场 |
| 归还工作票及辐射票完工,修后试验在工单01447934-02中执行`, |
| 其他字段1: `取工作票,现场确认设备位号及安措正确 |
| 拆卸联轴器螺栓,对中复查同轴度 0.08mm平行度0.03mm不合格 |
| 拆卸泵盖螺栓,将泵憋体脱出运至检修场地,临时开口设备做好封堵拆卸叶轮及机械密封组件,解体轴承箱,消洗检查各零部件,测量泵轴最大0.0...大0.02mm,轴与轴承配合间隙最大0.01mm,轴与叶轮配合间隙0.02mm,体口环与叶回装新轴承及机械密封组件,安装泵叶轮,将泵整体运往现场回装,至工作油位,调整对中同轴度 0.03mm平行度 0.025mm,合格 |
| 回装联轴器及保护單,清理现场 |
| 归还工作票及辐射票完工,修后试验在工单01447934-02中执行`, |
| 我是很长的字段名称: `取工作票,现场确认设备位号及安措正确 |
| 拆卸联轴器螺栓,对`, |
| 其他字段2: `取工作票,现场确认设备位号及安措正确 |
| 拆卸联轴器螺栓,对中复查同轴度 0.08mm平行度0.03mm不合格 |
| 拆卸泵盖螺栓,将泵憋体脱出运至检修场地,临时开口设备做好封堵拆卸叶轮及机械密封组件,解体轴承箱,消洗检查各零部件,测量泵轴最大0.0...大0.02mm,轴与轴承配合间隙最大0.01mm,轴与叶轮配合间隙0.02mm,体口环与叶回装新轴承及机械密封组件,安装泵叶轮,将泵整体运往现场回装,至工作油位,调整对中同轴度 0.03mm平行度 0.025mm,合格 |
| 回装联轴器及保护單,清理现场 |
| 归还工作票及辐射票完工,修后试验在工单01447934-02中执行`, |
| 其他字段3: `取工作票,现场确认设备位号及安措正确 |
| 拆卸联轴器螺栓,对中复查同轴度 0.08mm平行度0.03mm不合格 |
| 拆卸泵盖螺栓,将泵憋体脱出运至检修场地,临时开口设备做好封堵拆卸叶轮及机械密封组件,解体轴承箱,消洗检查各零部件,测量泵轴最大0.0...大0.02mm,轴与轴承配合间隙最大0.01mm,轴与叶轮配合间隙0.02mm,体口环与叶回装新轴承及机械密封组件,安装泵叶轮,将泵整体运往现场回装,至工作油位,调整对中同轴度 0.03mm平行度 0.025mm,合格 |
| 回装联轴器及保护單,清理现场 |
| 归还工作票及辐射票完工,修后试验在工单01447934-02中执行`, |
| }); |
| |
| |
| const scaleFun = computed(() => { |
| return `transform:scale(${scaleData.scale});transition: all 0.3s;`; |
| }); |
| const refs = { |
| wrapper: ref<HTMLElement | null>(null), |
| box: ref<HTMLElement | null>(null), |
| }; |
| const dragData = reactive({ |
| x: 0, |
| y: 0, |
| left: 0, |
| top: 0, |
| firstX: 0, |
| firstY: 0, |
| }); |
| const scaleData = reactive({ |
| scale: 1, |
| scaleNum: 0.1, |
| scaleMax: 100, |
| scaleMin: 0.1, |
| scaleBtn: 0.4, |
| rotate: 0, |
| }); |
| |
| watch( |
| () => props.activePage, |
| (v) => { |
| |
| scaleData.scale = 1; |
| scaleData.rotate = 0; |
| refs.box.value.style.left = '50%'; |
| refs.box.value.style.top = '50%'; |
| boxTransform(); |
| }, |
| ); |
| |
| |
| const boxTransform = () => { |
| refs.box.value.style.transform = `translate(-50%, -50%) rotate(${scaleData.rotate}deg) scale(${scaleData.scale})`; |
| }; |
| |
| |
| const rolate = () => { |
| scaleData.rotate += 90; |
| boxTransform(); |
| }; |
| |
| |
| function scaleWheel(e: any) { |
| let dy = -e.deltaY || e.wheelDeltaY; |
| if (dy < 0) { |
| scaleData.scale -= scaleData.scaleNum; |
| } else { |
| |
| scaleData.scale += scaleData.scaleNum; |
| } |
| |
| if (scaleData.scale >= scaleData.scaleMax) { |
| scaleData.scale = scaleData.scaleMax; |
| return; |
| } |
| if (scaleData.scale <= scaleData.scaleMin) { |
| scaleData.scale = scaleData.scaleMin; |
| return; |
| } |
| boxTransform(); |
| return false; |
| } |
| |
| |
| const rollBtn = (action: 'enlarge' | 'zoomin') => { |
| if (action === 'enlarge') { |
| scaleData.scale += scaleData.scaleBtn; |
| } else { |
| scaleData.scale -= scaleData.scaleBtn; |
| } |
| |
| if (scaleData.scale >= scaleData.scaleMax) { |
| scaleData.scale = scaleData.scaleMax; |
| return; |
| } |
| if (scaleData.scale <= scaleData.scaleMin) { |
| scaleData.scale = scaleData.scaleMin; |
| return; |
| } |
| boxTransform(); |
| }; |
| |
| |
| function dragstart(e: MouseEvent) { |
| refs.box.value.style.transition = 'none'; |
| e.preventDefault(); |
| const box = refs.box.value as HTMLElement; |
| const wrapper = refs.wrapper.value as HTMLElement; |
| dragData.x = e.pageX - box.offsetLeft; |
| dragData.y = e.pageY - box.offsetTop; |
| |
| |
| document.addEventListener('mousemove', move); |
| function move(event: any) { |
| |
| dragData.left = event.pageX - dragData.x; |
| dragData.top = event.pageY - dragData.y; |
| |
| |
| |
| box.style.left = dragData.left + 'px'; |
| box.style.top = dragData.top + 'px'; |
| } |
| |
| document.addEventListener('mouseup', function () { |
| document.removeEventListener('mousemove', move); |
| }); |
| |
| document.addEventListener('mouseout', function () { |
| document.removeEventListener('mousemove', move); |
| }); |
| } |
| </script> |
| |
| <style scoped lang="scss"> |
| .zhjxMain { |
| width: 100%; |
| height: 100%; |
| display: flex; |
| flex-direction: column; |
| background-color: #000000; |
| overflow: hidden; |
| .content { |
| width: 100%; |
| height: 100%; |
| margin: 0 auto; |
| background-color: #000000; |
| display: flex; |
| overflow: hidden; |
| |
| .left-box { |
| width: 50%; |
| height: 100%; |
| background-color: #262626; |
| margin-right: 10px; |
| position: relative; |
| overflow: hidden; |
| .box { |
| width: 80%; |
| height: 100%; |
| object-fit: contain; |
| user-select: none; |
| position: absolute; |
| top: 50%; |
| left: 50%; |
| transform: translate(-50%, -50%); |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| .vue-pdf-embed { |
| width: 100%; |
| } |
| } |
| .zoomin-wrapper { |
| position: absolute; |
| top: 50%; |
| right: 20px; |
| transform: translateY(-50%); |
| display: flex; |
| flex-direction: column; |
| align-items: center; |
| justify-content: center; |
| img { |
| width: 34px; |
| height: 34px; |
| cursor: pointer; |
| margin: 5px 0; |
| } |
| } |
| .center { |
| position: absolute; |
| top: 50%; |
| left: 50%; |
| transform: translate(-50%, -50%); |
| } |
| .bottom-left { |
| position: absolute; |
| bottom: 20px; |
| left: 20px; |
| } |
| } |
| .right-box { |
| width: 50%; |
| height: 100%; |
| background-color: #000000; |
| margin-left: 10px; |
| padding: 10px 0; |
| overflow-y: scroll; |
| // 修改滚动条 |
| &::-webkit-scrollbar { |
| width: 10px; |
| } |
| &::-webkit-scrollbar-thumb { |
| background: #333333; |
| border-radius: 10px; |
| } |
| .item { |
| min-height: 48px; |
| display: flex; |
| padding-right: 50px; |
| & + .item { |
| margin-top: 10px; |
| } |
| .label { |
| width: 100px; |
| min-height: 48px; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| color: #ffffff; |
| font-size: 14px; |
| font-weight: 600; |
| padding: 0 5px; |
| } |
| .text { |
| flex: 1; |
| color: #ffffff; |
| background-color: #262626; |
| border-radius: 10px; |
| font-size: 14px; |
| font-weight: 600; |
| line-height: 24px; |
| padding: 10px 20px; |
| } |
| } |
| } |
| } |
| } |
| </style> |