Przeglądaj źródła

Merge branch 'stable' of http://39.98.153.250:9080/yudao/yudao-admin-yiqun into stable

xzc 5 dni temu
rodzic
commit
37678d1c97

+ 4 - 0
yudao-ui-admin-vue3/src/api/pressure2/boilertaskorder/index.ts

@@ -304,6 +304,10 @@ export const BoilerTaskOrderApi = {
   getTaskOrderItemReportRecord: async (params: any) => {
     return await request.get({ url: `/pressure2/boiler-task-order-item-report/get?id=${params}`})
   },
+  // 获得锅炉任务单设备关联报告
+  getTaskOrderReportRecord: async (params: any) => {
+    return await request.get({ url: `/pressure2/boiler-task-order-report/get?id=${params}`})
+  },
   // 获得锅炉任务单设备关联检验方案
   getInspectionPlan: async (params: any) => {
     return await request.get({ url: `/pressure2/boiler-task-order-item-report/getInspectionPlan?id=${params}`})

+ 45 - 1
yudao-ui-admin-vue3/src/views/pressure2/boilertaskorder/components/AddInspectionplanDetail.vue

@@ -27,6 +27,7 @@
           <el-button v-else @click="handleSubmitNotApproval">提交</el-button>
           <!--          <el-button type="primary" plain @click="handleEditSpreadRecord">编辑封面</el-button>-->
         </template>
+        <el-button type="primary" plain @click="handleCopyReportNo">复制编号</el-button>
         <el-button type="default" plain @click="handleCloseModal">取 消</el-button>
       </div>
       <div class="operation-item" style="max-height: calc(100% / 2); overflow-y: auto" v-if="props.editInspectionplanParams.isSelfType">
@@ -113,7 +114,7 @@
 </template>
 <script lang="tsx" setup>
 import { BoilerTaskOrderApi } from '@/api/pressure2/boilertaskorder'
-import {defineModel, PropType, ref} from 'vue'
+import {defineModel, PropType, ref, watch} from 'vue'
 import VuePdfEmbed from 'vue-pdf-embed'
 import EditInspectionplanReport from './EditInspectionplanReport.vue'
 import { getPressureReportTemplatePDF } from '@/api/pressure/reportTemplate'
@@ -386,6 +387,49 @@ const handleCloseModal = () => {
   visible.value = false
   emits('refresh')
 }
+
+// 复制编号
+const handleCopyReportNo = async () => {
+  const reportNo = props.inspectionplanDetail?.reportNo
+  if (!reportNo) {
+    ElMessage.warning('复制失败,检验方案编号不存在')
+    return
+  }
+  try {
+    if (navigator.clipboard && window.isSecureContext) {
+      await navigator.clipboard.writeText(reportNo)
+      ElMessage.success('复制成功')
+    } else {
+      fallbackCopyText(reportNo)
+    }
+  } catch (err) {
+    console.error('复制出错:', err)
+    fallbackCopyText(reportNo)
+  }
+}
+
+function fallbackCopyText(text: string) {
+  const input = document.createElement('textarea')
+  input.value = text
+  input.style.position = 'fixed'
+  input.style.opacity = '0'
+  input.style.height = '1px'
+  input.style.width = '1px'
+  document.body.appendChild(input)
+  input.focus()
+  input.select()
+  try {
+    const success = document.execCommand('copy')
+    if (success) {
+      ElMessage.success('复制成功')
+    } else {
+      ElMessage.error('当前浏览器不支持复制功能,请手动复制')
+    }
+  } catch (err) {
+    ElMessage.error('复制失败,请手动复制')
+  }
+  document.body.removeChild(input)
+}
 const pdfContentWidth = ref(0)
 const wrapperContainerRef = ref<HTMLDivElement | null>(null)
 const handleWindowResize = debounce(() => {

+ 2 - 0
yudao-ui-admin-vue3/src/views/pressure2/boilertaskorder/components/TaskOrderDetailDialog.vue

@@ -1053,6 +1053,7 @@ import OrderDialog from "@/views/pressure2/boilertaskorder/components/OrderDialo
 import {checkRole} from "@/utils/permission";
 import {getStrDictOptions} from "@/utils/dict";
 import Big from 'big.js';
+import {PipeTaskOrderApi} from "@/api/pressure2/pipetaskorder";
 
 const userStore = useUserStore()
 const userInfo = computed(() => userStore.user)
@@ -2337,6 +2338,7 @@ const handleSuccessInspectionplan = async (info) => {
       isSelfType: info.isSelfType,
     }
     isEdit.value = 'add'
+    inspectionplanDetail.value = await BoilerTaskOrderApi.getTaskOrderReportRecord(newReportId)
     boilerType.value = firstOrderItem.type
     AddInspectionplanDetailVisible.value = true
   } catch (error) {

+ 45 - 1
yudao-ui-admin-vue3/src/views/pressure2/pipetaskorder/components/AddInspectionplanDetail.vue

@@ -27,6 +27,7 @@
           <el-button v-else @click="handleSubmitNotApproval">提交</el-button>
 <!--          <el-button type="primary" plain @click="handleEditSpreadRecord">编辑封面</el-button>-->
         </template>
+        <el-button type="primary" plain @click="handleCopyReportNo">复制编号</el-button>
         <el-button type="default" plain @click="handleCloseModal">取 消</el-button>
       </div>
       <div class="operation-item" style="max-height: calc(100% / 2); overflow-y: auto" v-if="props.editInspectionplanParams.isSelfType">
@@ -115,7 +116,7 @@
 </template>
 <script lang="tsx" setup>
 import { PipeTaskOrderApi } from '@/api/pressure2/pipetaskorder'
-import {defineModel, PropType, ref} from 'vue'
+import {defineModel, PropType, ref, watch} from 'vue'
 import VuePdfEmbed from 'vue-pdf-embed'
 import EditInspectionplanReport from './EditInspectionplanReport.vue'
 import { getPressureReportTemplatePDF } from '@/api/pressure/reportTemplate'
@@ -389,6 +390,49 @@ const handleCloseModal = () => {
   visible.value = false
   emits('refresh')
 }
+
+// 复制编号
+const handleCopyReportNo = async () => {
+  const reportNo = props.inspectionplanDetail?.reportNo
+  if (!reportNo) {
+    ElMessage.warning('复制失败,检验方案编号不存在')
+    return
+  }
+  try {
+    if (navigator.clipboard && window.isSecureContext) {
+      await navigator.clipboard.writeText(reportNo)
+      ElMessage.success('复制成功')
+    } else {
+      fallbackCopyText(reportNo)
+    }
+  } catch (err) {
+    console.error('复制出错:', err)
+    fallbackCopyText(reportNo)
+  }
+}
+
+function fallbackCopyText(text: string) {
+  const input = document.createElement('textarea')
+  input.value = text
+  input.style.position = 'fixed'
+  input.style.opacity = '0'
+  input.style.height = '1px'
+  input.style.width = '1px'
+  document.body.appendChild(input)
+  input.focus()
+  input.select()
+  try {
+    const success = document.execCommand('copy')
+    if (success) {
+      ElMessage.success('复制成功')
+    } else {
+      ElMessage.error('当前浏览器不支持复制功能,请手动复制')
+    }
+  } catch (err) {
+    ElMessage.error('复制失败,请手动复制')
+  }
+  document.body.removeChild(input)
+}
 const pdfContentWidth = ref(0)
 const wrapperContainerRef = ref<HTMLDivElement | null>(null)
 const handleWindowResize = debounce(() => {

+ 1 - 0
yudao-ui-admin-vue3/src/views/pressure2/pipetaskorder/components/TaskOrderDetailDialog.vue

@@ -2394,6 +2394,7 @@ const handleSuccessInspectionplan = async (info) => {
       prepareJson: JSON.stringify(prepareJson),
       isSelfType: info.isSelfType,
     }
+    inspectionplanDetail.value = await PipeTaskOrderApi.getTaskOrderItemReportRecord(newReportId)
     isEdit.value = 'add'
     AddInspectionplanDetailVisible.value = true
   } catch (error) {