Procházet zdrojové kódy

报告归档-检验项目-历史版本信息调整

xy před 20 hodinami
rodič
revize
a983bea256

+ 80 - 10
yudao-ui-admin-vue3/src/views/pressure2/reportArchivingBoiler/detail.vue

@@ -52,6 +52,24 @@
     @close="handlePdfPreviewClose"
   />
 
+  <!-- 查看版本详情弹窗 -->
+  <CustomDialog v-model="showVersionDetail" title="查看详情" :show-footer="false" width="1000px" close-on-click-modal>
+    <div class="flex gap-2 mb-4" v-if="currentVersionRow">
+      <el-button v-if="currentVersionRow.newReportUrl" type="success" plain @click="handleViewPdfByUrl(currentVersionRow.newReportUrl)">
+        查看原文件PDF
+      </el-button>
+      <el-button v-if="currentVersionRow.oldReportUrl" type="warning" plain @click="handleViewPdfByUrl(currentVersionRow.oldReportUrl)">
+        查看旧文件PDF
+      </el-button>
+    </div>
+    <SmartTable
+      v-model:columns="versionColumns"
+      :data="versionCompareList"
+      :is-pagination="false"
+      :show-refresh="false"
+    />
+  </CustomDialog>
+
 </template>
 
 <script lang="tsx" setup name="ReportArchivingBoilerDetail">
@@ -421,7 +439,7 @@ const payStatusMap = {
 }
 const openModalConfig: ModelConfig = {
   history: {
-    modalUrl: '/pressure2/boiler-task-order-item-report-version/page',
+    modalUrl: '/pressure2/boiler-task-order-item-report-version-archiving/page',
     columns: [
       {
         type: 'index',
@@ -432,10 +450,29 @@ const openModalConfig: ModelConfig = {
         }
       },
       {
-        prop: 'versionNoStr',
+        prop: 'versionNo',
         label: '历史版本',
         fieldProps: {
           align: 'center'
+        },
+        render: (row) => {
+          const label = (row.dynamicTbCode || '') + '-' + (row.versionNo || '')
+          return (
+            <el-button type="primary" link onClick={() => { handleViewPdfByUrl(row.newReportUrl) }}>
+              {label}
+            </el-button>
+          )
+        }
+      },
+      {
+        prop: 'reportType',
+        label: '记录/报告',
+        fieldProps: {
+          align: 'center',
+          minWidth: 100
+        },
+        render: (row) => {
+          return row.reportType === 200 ? '报告' : '记录'
         }
       },
       {
@@ -443,20 +480,30 @@ const openModalConfig: ModelConfig = {
         label: '修改原因',
         fieldProps: {
           align: 'center'
-        },
-        render: (_row, value) => {
-          return value || '人工修改'
         }
       },
       {
-        prop: 'updateTime',
-        label: '修改时间',
+        prop: 'createTime',
+        label: '生效时间',
         fieldProps: {
           align: 'center'
         },
         render: (_row, value) => {
           return formatDate(value)
         }
+      },
+      {
+        prop: 'operation',
+        label: '操作',
+        fieldProps: {
+          align: 'center',
+          minWidth: 100
+        },
+        render: (row) => {
+          return (
+            <el-button type="primary" link onClick={() => handleShowVersionDetail(row)}>查看详情</el-button>
+          )
+        }
       }
     ],
     modalTitle: '历史版本'
@@ -656,9 +703,9 @@ const handleOpenModal = (row: Recordable, type: ModalType) => {
       break
     case 'history':
       config.modalParams = {
-        ...config.modalParams,
-        businessType: 0,
-        orderItemReportId: row.reportId
+        reportId: row.reportId,
+        sortField: 'reportType,versionNo',
+        sortOrder: 'asc,asc'
       }
       break
     case 'nonTaxQuery':
@@ -891,6 +938,29 @@ const handleAttachmentDownload = async (url: string, name?: string) => {
 onMounted(() => {
   getDetail()
 })
+
+// 版本详情对比
+const showVersionDetail = ref(false)
+const currentVersionRow = ref<Recordable | null>(null)
+const versionCompareList = ref<Recordable[]>([])
+const versionColumns = ref([
+  { label: '字段名', prop: 'displayName' },
+  { label: '修改前', prop: 'oldValue', render: (_row: any, value: any) => value || '-' },
+  { label: '修改后', prop: 'newValue', render: (_row: any, value: any) => <el-text type="primary">{value || '-'}</el-text> }
+])
+
+const handleShowVersionDetail = (row: Recordable) => {
+  currentVersionRow.value = row
+  const oldMap = row.oldPrepareJson ? JSON.parse(row.oldPrepareJson) : {}
+  const newMap = row.newPrepareJson ? JSON.parse(row.newPrepareJson) : {}
+  const allKeys = new Set([...Object.keys(oldMap), ...Object.keys(newMap)])
+  versionCompareList.value = [...allKeys].map(key => ({
+    displayName: key,
+    oldValue: oldMap[key] || '-',
+    newValue: newMap[key] || '-'
+  }))
+  showVersionDetail.value = true
+}
 </script>
 
 <style lang="scss" scoped>

+ 80 - 10
yudao-ui-admin-vue3/src/views/pressure2/reportArchivingPipe/detail.vue

@@ -52,6 +52,24 @@
     @close="handlePdfPreviewClose"
   />
 
+  <!-- 查看版本详情弹窗 -->
+  <CustomDialog v-model="showVersionDetail" title="查看详情" :show-footer="false" width="1000px" close-on-click-modal>
+    <div class="flex gap-2 mb-4" v-if="currentVersionRow">
+      <el-button v-if="currentVersionRow.newReportUrl" type="success" plain @click="handleViewPdfByUrl(currentVersionRow.newReportUrl)">
+        查看原文件PDF
+      </el-button>
+      <el-button v-if="currentVersionRow.oldReportUrl" type="warning" plain @click="handleViewPdfByUrl(currentVersionRow.oldReportUrl)">
+        查看旧文件PDF
+      </el-button>
+    </div>
+    <SmartTable
+      v-model:columns="versionColumns"
+      :data="versionCompareList"
+      :is-pagination="false"
+      :show-refresh="false"
+    />
+  </CustomDialog>
+
 </template>
 
 <script lang="tsx" setup name="ReportArchivingPipeDetail">
@@ -421,7 +439,7 @@ const payStatusMap = {
 }
 const openModalConfig: ModelConfig = {
   history: {
-    modalUrl: '/pressure2/pipe-task-order-item-report-version/page',
+    modalUrl: '/pressure2/pipe-task-order-item-report-version-archiving/page',
     columns: [
       {
         type: 'index',
@@ -432,10 +450,29 @@ const openModalConfig: ModelConfig = {
         }
       },
       {
-        prop: 'versionNoStr',
+        prop: 'versionNo',
         label: '历史版本',
         fieldProps: {
           align: 'center'
+        },
+        render: (row) => {
+          const label = (row.dynamicTbCode || '') + '-' + (row.versionNo || '')
+          return (
+            <el-button type="primary" link onClick={() => { handleViewPdfByUrl(row.newReportUrl) }}>
+              {label}
+            </el-button>
+          )
+        }
+      },
+      {
+        prop: 'reportType',
+        label: '记录/报告',
+        fieldProps: {
+          align: 'center',
+          minWidth: 100
+        },
+        render: (row) => {
+          return row.reportType === 200 ? '报告' : '记录'
         }
       },
       {
@@ -443,20 +480,30 @@ const openModalConfig: ModelConfig = {
         label: '修改原因',
         fieldProps: {
           align: 'center'
-        },
-        render: (_row, value) => {
-          return value || '人工修改'
         }
       },
       {
-        prop: 'updateTime',
-        label: '修改时间',
+        prop: 'createTime',
+        label: '生效时间',
         fieldProps: {
           align: 'center'
         },
         render: (_row, value) => {
           return formatDate(value)
         }
+      },
+      {
+        prop: 'operation',
+        label: '操作',
+        fieldProps: {
+          align: 'center',
+          minWidth: 100
+        },
+        render: (row) => {
+          return (
+            <el-button type="primary" link onClick={() => handleShowVersionDetail(row)}>查看详情</el-button>
+          )
+        }
       }
     ],
     modalTitle: '历史版本'
@@ -656,9 +703,9 @@ const handleOpenModal = (row: Recordable, type: ModalType) => {
       break
     case 'history':
       config.modalParams = {
-        ...config.modalParams,
-        businessType: 0,
-        orderItemReportId: row.reportId
+        reportId: row.reportId,
+        sortField: 'reportType,versionNo',
+        sortOrder: 'asc,asc'
       }
       break
     case 'nonTaxQuery':
@@ -858,6 +905,29 @@ const handleAttachmentDownload = async (url: string, name?: string) => {
 onMounted(() => {
   getDetail()
 })
+
+// 版本详情对比
+const showVersionDetail = ref(false)
+const currentVersionRow = ref<Recordable | null>(null)
+const versionCompareList = ref<Recordable[]>([])
+const versionColumns = ref([
+  { label: '字段名', prop: 'displayName' },
+  { label: '修改前', prop: 'oldValue', render: (_row: any, value: any) => value || '-' },
+  { label: '修改后', prop: 'newValue', render: (_row: any, value: any) => <el-text type="primary">{value || '-'}</el-text> }
+])
+
+const handleShowVersionDetail = (row: Recordable) => {
+  currentVersionRow.value = row
+  const oldMap = row.oldPrepareJson ? JSON.parse(row.oldPrepareJson) : {}
+  const newMap = row.newPrepareJson ? JSON.parse(row.newPrepareJson) : {}
+  const allKeys = new Set([...Object.keys(oldMap), ...Object.keys(newMap)])
+  versionCompareList.value = [...allKeys].map(key => ({
+    displayName: key,
+    oldValue: oldMap[key] || '-',
+    newValue: newMap[key] || '-'
+  }))
+  showVersionDetail.value = true
+}
 </script>
 
 <style lang="scss" scoped>