suhp 1 month ago
parent
commit
2beb582a8a

+ 0 - 0
src/views/costAudit/auditInfo/auditManage/auditOpinion.vue


+ 188 - 0
src/views/costAudit/auditInfo/auditManage/details.vue

@@ -0,0 +1,188 @@
+<template>
+  <div class="details-container">
+    <el-drawer
+      :visible.sync="visible"
+      :title="dialogTitle"
+      size="90%"
+      @close="handleClose"
+    >
+      <!-- 操作按钮区域 -->
+      <div class="btn-group">
+        <el-button
+          v-for="item in buttonData"
+          :key="item.id"
+          type="primary"
+          @click="handleAuditPass(item)"
+        >
+          {{ item.value }}
+        </el-button>
+      </div>
+      <!-- 标签页面 -->
+      <el-tabs v-model="activeTab" type="card" class="audit-tabs">
+        <el-tab-pane label="报送资料" name="submitData">
+          <submit-data :id="id" />
+        </el-tab-pane>
+        <el-tab-pane label="成本调查表" name="costSurvey">
+          <cost-survey :id="id" />
+        </el-tab-pane>
+        <el-tab-pane label="成本审核" name="costAudit">
+          <cost-audit :id="id" />
+        </el-tab-pane>
+        <el-tab-pane label="工作底稿" name="workDraft">
+          <work-draft :id="id" />
+        </el-tab-pane>
+        <el-tab-pane label="提取材料登记" name="extractMaterial">
+          <extract-material :id="id" />
+        </el-tab-pane>
+        <el-tab-pane label="成本审核意见" name="auditOpinion">
+          <audit-opinion :id="id" />
+        </el-tab-pane>
+      </el-tabs>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+  import costAudit from './costAudit.vue'
+  import costSurvey from './costSurvey.vue'
+  import submitData from './submitData.vue'
+  import workDraft from './workDraft.vue'
+  import extractMaterial from './extractMaterial.vue'
+  import auditOpinion from './auditOpinion.vue'
+  import {
+    getDataPreliminaryReviewButton,
+    doProcessBtn,
+  } from '@/api/dataPreliminaryReview'
+  export default {
+    name: 'Details',
+    components: {
+      costAudit,
+      costSurvey,
+      submitData,
+      workDraft,
+      extractMaterial,
+      auditOpinion,
+    },
+    props: {
+      visible: {
+        type: Boolean,
+        default: true,
+      },
+      id: {
+        type: [String, Number],
+        default: null,
+      },
+      currentNode: {
+        type: String,
+        default: '',
+      },
+      currentStatus: {
+        type: String,
+        default: '',
+      },
+    },
+    data() {
+      return {
+        buttonData: [], //资料初审按钮数据
+        activeTab: 'submitData', // 默认选中报送资料标签页
+      }
+    },
+    computed: {
+      dialogTitle() {
+        // 根据节点类型设置标题
+        if (
+          this.currentNode === 'sdshenhe' &&
+          this.currentStatus === '审核中'
+        ) {
+          return '审核详情'
+        } else if (this.currentNode === 'clcs') {
+          return '成本调查详情'
+        }
+        return '成本审核详情'
+      },
+    },
+    watch: {
+      visible(newVal) {
+        // 监听visible变化,可以在这里添加初始化逻辑
+        if (newVal && this.id) {
+          // 当弹窗显示且有id时的初始化操作
+        }
+      },
+    },
+    mounted() {
+      // 如果是审核中的审核节点,默认选中成本审核标签页
+      if (this.currentNode === 'sdshenhe' && this.currentStatus === '审核中') {
+        this.activeTab = 'costAudit'
+      } else if (this.currentNode === 'clcs') {
+        // 如果是成本调查节点,默认选中成本调查表标签页
+        this.activeTab = 'costSurvey'
+      }
+      if (this.id) {
+        this.getPreliminaryReviewButton()
+      }
+    },
+    methods: {
+      // 获取资料初审按钮
+      async getPreliminaryReviewButton() {
+        const params = {
+          taskId: this.id,
+          // taskId: '1977383902654959616',
+          // processNodeKey: this.currentNode,
+          processNodeKey:
+            this.currentNode === 'ccls' ? 'clcs' : this.currentNode,
+        }
+        const response = await getDataPreliminaryReviewButton(params)
+        console.log('接口返回数据:', response)
+        this.buttonData = response.value
+      },
+      handleClose() {
+        // 关闭弹窗时触发事件
+        this.$emit('update:visible', false)
+        this.$emit('close')
+      },
+      open() {
+        // 打开弹窗方法,供父组件通过ref调用
+        this.$emit('update:visible', true)
+      },
+    },
+  }
+</script>
+
+<style scoped>
+  .btn-group {
+    margin-bottom: 20px;
+  }
+
+  .btn-group .el-button {
+    margin-right: 10px;
+  }
+  .details-container {
+    width: 100%;
+    height: 100%;
+  }
+
+  .audit-tabs {
+    height: calc(100vh - 150px);
+  }
+
+  .audit-tabs .el-tabs__header {
+    margin-bottom: 0;
+    padding: 15px 15px 0;
+    background: #f5f7fa;
+    border-bottom: 1px solid #ebeef5;
+  }
+
+  .audit-tabs .el-tabs__nav-wrap {
+    padding-bottom: 10px;
+  }
+
+  .audit-tabs .el-tabs__content {
+    height: calc(100% - 60px);
+    padding: 15px;
+    overflow-y: auto;
+  }
+
+  .audit-tabs .el-tab-pane {
+    height: 100%;
+  }
+</style>

+ 388 - 0
src/views/costAudit/auditInfo/auditManage/extractMaterial.vue

@@ -0,0 +1,388 @@
+<template>
+  <div class="extract-material-container">
+    <div class="extract-controls">
+      <el-button type="primary" @click="handleAddExtract">添加资料</el-button>
+      <el-button
+        type="danger"
+        :disabled="selectedRows.length === 0"
+        @click="handleBatchDelete"
+      >
+        批量删除
+      </el-button>
+    </div>
+
+    <el-table
+      v-loading="loading"
+      :data="extractMaterials"
+      style="width: 100%"
+      stripe
+      border
+      size="small"
+      @selection-change="handleSelectionChange"
+    >
+      <el-table-column
+        type="selection"
+        width="55"
+        align="center"
+      ></el-table-column>
+      <el-table-column prop="id" label="编号" width="80"></el-table-column>
+      <el-table-column
+        prop="materialName"
+        label="材料名称"
+        width="200"
+        show-overflow-tooltip
+      ></el-table-column>
+      <el-table-column
+        prop="pages"
+        label="页数"
+        width="100"
+        align="center"
+      ></el-table-column>
+      <el-table-column
+        prop="remark"
+        label="备注"
+        min-width="200"
+        show-overflow-tooltip
+      ></el-table-column>
+      <el-table-column
+        prop="extractTime"
+        label="提取时间"
+        width="200"
+        :formatter="formatDate"
+        align="center"
+        show-overflow-tooltip
+      ></el-table-column>
+      <el-table-column label="操作" width="120" fixed="right">
+        <template slot-scope="scope">
+          <el-button
+            type="primary"
+            size="small"
+            @click="handleEditExtract(scope.row)"
+          >
+            修改
+          </el-button>
+          <el-button
+            type="danger"
+            size="small"
+            @click="handleDeleteExtract(scope.row)"
+          >
+            删除
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <el-dialog
+      :visible.sync="dialogVisible"
+      :title="dialogTitle"
+      width="500px"
+      :close-on-click-modal="false"
+    >
+      <el-form
+        ref="extractForm"
+        :model="extractForm"
+        :rules="rules"
+        label-width="100px"
+      >
+        <el-form-item label="材料名称" prop="materialName">
+          <el-input
+            v-model="extractForm.materialName"
+            placeholder="请输入材料名称"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="页数" prop="pages">
+          <el-input-number
+            v-model.number="extractForm.pages"
+            placeholder="请输入页数"
+            :min="1"
+            :step="1"
+          ></el-input-number>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input
+            v-model="extractForm.remark"
+            type="textarea"
+            placeholder="请输入备注"
+            :rows="4"
+          ></el-input>
+        </el-form-item>
+      </el-form>
+      <div class="dialog-footer">
+        <el-button @click="dialogVisible = false">取消</el-button>
+        <el-button type="primary" @click="handleSubmit">确定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  // 暂时使用mock数据,后续根据实际API调整
+  // import { getExtractMaterials, addExtractMaterial, updateExtractMaterial, deleteExtractMaterial } from '@/api/auditManage'
+
+  export default {
+    name: 'ExtractMaterial',
+    props: {
+      id: {
+        type: [String, Number],
+        default: null,
+      },
+    },
+    data() {
+      return {
+        loading: false,
+        extractMaterials: [],
+        selectedRows: [],
+        dialogVisible: false,
+        dialogTitle: '添加提取材料',
+        isEdit: false,
+        extractForm: {
+          id: '',
+          materialName: '',
+          pages: null,
+          remark: '',
+        },
+        rules: {
+          materialName: [
+            { required: true, message: '请输入材料名称', trigger: 'blur' },
+            {
+              min: 1,
+              max: 100,
+              message: '材料名称长度应在1-100个字符之间',
+              trigger: 'blur',
+            },
+          ],
+          pages: [
+            { required: true, message: '请输入页数', trigger: 'blur' },
+            { type: 'number', message: '页数必须为数字', trigger: 'blur' },
+            { min: 1, message: '页数必须大于0', trigger: 'blur' },
+          ],
+        },
+      }
+    },
+    mounted() {
+      this.getExtractMaterials()
+    },
+    beforeDestroy() {
+      // 清理定时器等资源
+      this.loading = false
+    },
+    methods: {
+      // 处理选中行变化
+      handleSelectionChange(selection) {
+        this.selectedRows = selection
+      },
+
+      // 获取提取材料列表
+      async getExtractMaterials() {
+        try {
+          this.loading = true
+          // 模拟API请求延迟
+          await new Promise((resolve) => setTimeout(resolve, 500))
+
+          // Mock数据
+          this.extractMaterials = [
+            {
+              id: '1',
+              materialName: '营业执照复印件',
+              pages: 2,
+              remark: '加盖公章',
+              extractTime: new Date().toISOString(),
+            },
+            {
+              id: '2',
+              materialName: '财务报表',
+              pages: 5,
+              remark: '包含资产负债表、利润表',
+              extractTime: new Date().toISOString(),
+            },
+            {
+              id: '3',
+              materialName: '成本核算清单',
+              pages: 10,
+              remark: '',
+              extractTime: new Date().toISOString(),
+            },
+          ]
+
+          this.$message.success('获取提取材料列表成功')
+        } catch (error) {
+          this.$message.error('获取提取材料列表失败')
+          console.error('获取提取材料列表失败:', error)
+        } finally {
+          this.loading = false
+        }
+      },
+
+      // 添加资料
+      handleAddExtract() {
+        this.isEdit = false
+        this.dialogTitle = '添加提取材料'
+        this.extractForm = {
+          id: '',
+          materialName: '',
+          pages: null,
+          remark: '',
+        }
+        this.dialogVisible = true
+      },
+
+      // 编辑资料
+      handleEditExtract(row) {
+        this.isEdit = true
+        this.dialogTitle = '编辑提取材料'
+        this.extractForm = { ...row }
+        this.dialogVisible = true
+      },
+
+      // 删除资料
+      async handleDeleteExtract(row) {
+        try {
+          await this.$confirm('确定要删除该提取材料吗?', '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning',
+          })
+
+          // 模拟API请求
+          await new Promise((resolve) => setTimeout(resolve, 300))
+
+          // 从列表中删除
+          const index = this.extractMaterials.findIndex(
+            (item) => item.id === row.id
+          )
+          if (index > -1) {
+            this.extractMaterials.splice(index, 1)
+          }
+
+          this.$message.success('删除成功')
+        } catch (error) {
+          if (error !== 'cancel') {
+            this.$message.error('删除失败')
+            console.error('删除提取材料失败:', error)
+          }
+        }
+      },
+
+      // 批量删除
+      async handleBatchDelete() {
+        if (this.selectedRows.length === 0) {
+          this.$message.warning('请选择要删除的提取材料')
+          return
+        }
+
+        try {
+          await this.$confirm(
+            `确定要删除选中的 ${this.selectedRows.length} 条提取材料吗?`,
+            '提示',
+            {
+              confirmButtonText: '确定',
+              cancelButtonText: '取消',
+              type: 'warning',
+            }
+          )
+
+          // 模拟API请求
+          await new Promise((resolve) => setTimeout(resolve, 300))
+
+          // 从列表中删除选中的项
+          const idsToDelete = this.selectedRows.map((row) => row.id)
+          this.extractMaterials = this.extractMaterials.filter(
+            (item) => !idsToDelete.includes(item.id)
+          )
+          this.selectedRows = [] // 清空选择
+
+          this.$message.success('批量删除成功')
+        } catch (error) {
+          if (error !== 'cancel') {
+            this.$message.error('删除失败')
+            console.error('批量删除提取材料失败:', error)
+          }
+        }
+      },
+
+      // 提交表单
+      async handleSubmit() {
+        try {
+          await this.$refs.extractForm.validate()
+
+          // 模拟API请求
+          await new Promise((resolve) => setTimeout(resolve, 300))
+
+          const formData = { ...this.extractForm }
+          if (!this.isEdit) {
+            // 添加新记录
+            formData.id = Date.now().toString() // 生成临时ID
+            formData.taskId = this.id
+            formData.extractTime = new Date().toISOString()
+            this.extractMaterials.unshift(formData)
+            this.$message.success('添加成功')
+          } else {
+            // 更新现有记录
+            const index = this.extractMaterials.findIndex(
+              (item) => item.id === formData.id
+            )
+            if (index > -1) {
+              this.extractMaterials.splice(index, 1, formData)
+            }
+            this.$message.success('更新成功')
+          }
+
+          this.dialogVisible = false
+        } catch (error) {
+          if (error !== 'cancel') {
+            this.$message.error(this.isEdit ? '更新失败' : '添加失败')
+            console.error(
+              this.isEdit ? '更新提取材料失败:' : '添加提取材料失败:',
+              error
+            )
+          }
+        }
+      },
+
+      // 格式化日期
+      formatDate(row, column, cellValue) {
+        if (!cellValue) return ''
+        try {
+          const date = new Date(cellValue)
+          if (isNaN(date.getTime())) return ''
+          return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(
+            2,
+            '0'
+          )}-${String(date.getDate()).padStart(2, '0')} ${String(
+            date.getHours()
+          ).padStart(2, '0')}:${String(date.getMinutes()).padStart(
+            2,
+            '0'
+          )}:${String(date.getSeconds()).padStart(2, '0')}`
+        } catch (error) {
+          return cellValue
+        }
+      },
+    },
+  }
+</script>
+
+<style scoped>
+  .extract-material-container {
+    padding: 20px;
+  }
+
+  .extract-controls {
+    margin-bottom: 20px;
+    text-align: right;
+  }
+
+  .dialog-footer {
+    text-align: center;
+  }
+
+  /* 操作按钮样式优化 */
+  .el-button--small {
+    margin-right: 8px;
+  }
+
+  /* 表格行悬停效果 */
+  .el-table--enable-row-hover .el-table__body tr:hover > td {
+    background-color: #f5f7fa;
+  }
+</style>

+ 33 - 276
src/views/costAudit/auditInfo/auditManage/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="cost-audit-management">
     <!-- 成本审核项目列表页面 -->
-    <div v-if="activeView === 'list'" class="audit-list-container">
+    <div class="audit-list-container">
       <div class="search-section">
         <el-input
           v-model="searchQuery"
@@ -87,13 +87,13 @@
         <el-table-column label="操作" align="center" width="260">
           <template slot-scope="scope">
             <span v-if="!scope.row.isSubTask" class="action-buttons">
-              <el-button type="text" @click="handleTaskDetail(scope.row)">
+              <el-button type="text" @click="handleOpenDetails(scope.row)">
                 任务详情
               </el-button>
               <el-button
                 v-if="scope.row.currentNode === 'sdsh'"
                 type="text"
-                @click="handleTaskProcess(scope.row)"
+                @click="handleOpenDetails(scope.row)"
               >
                 任务办理
               </el-button>
@@ -104,18 +104,21 @@
             <span v-if="scope.row.isSubTask" class="action-buttons">
               <el-button
                 v-if="
-                  scope.row.currentNode === 'ccls' &&
+                  scope.row.currentNode === 'clcs' &&
                   scope.row.status === '审核中'
                 "
                 type="text"
-                @click="handleAuditReview(scope.row)"
+                @click="handleOpenDetails(scope.row)"
               >
                 资料初审
               </el-button>
               <el-button
-                v-if="scope.row.currentNode === 'sdsh'"
+                v-if="
+                  scope.row.currentNode === 'sdshenhe' &&
+                  scope.row.status === '审核中'
+                "
                 type="text"
-                @click="handleCostAudit(scope.row)"
+                @click="handleOpenDetails(scope.row)"
               >
                 成本审核
               </el-button>
@@ -135,84 +138,27 @@
       />
     </div>
 
-    <!-- 成本监审任务详情页面 -->
-    <div v-else-if="activeView === 'detail'" class="audit-detail-container">
-      <el-breadcrumb
-        separator-class="el-icon-arrow-right"
-        style="margin-bottom: 20px"
-      >
-        <el-breadcrumb-item>
-          <a href="javascript:void(0)" @click="backToList">成本审核管理</a>
-        </el-breadcrumb-item>
-        <el-breadcrumb-item>成本监审任务详情</el-breadcrumb-item>
-      </el-breadcrumb>
-      <taskDetail
-        ref="taskDetail"
-        :workflow-list="workflowList"
-        :form-data="formData"
-        :material-data="materialData"
-      />
-    </div>
-
-    <!-- 任务办理页面 -->
-    <div v-else-if="activeView === 'process'" class="audit-process-container">
-      <el-breadcrumb
-        separator-class="el-icon-arrow-right"
-        style="margin-bottom: 20px"
-      >
-        <el-breadcrumb-item>
-          <a href="javascript:void(0)" @click="backToList">成本审核管理</a>
-        </el-breadcrumb-item>
-        <el-breadcrumb-item>成本监审任务办理</el-breadcrumb-item>
-      </el-breadcrumb>
-      <taskProcess ref="taskProcess" />
-    </div>
-    <div v-else-if="activeView === 'auditReview'">
-      <el-breadcrumb
-        separator-class="el-icon-arrow-right"
-        style="margin-bottom: 20px"
-      >
-        <el-breadcrumb-item>
-          <a href="javascript:void(0)" @click="backToList">成本审核管理</a>
-        </el-breadcrumb-item>
-        <el-breadcrumb-item>资料初审</el-breadcrumb-item>
-      </el-breadcrumb>
-      <auditReview
-        :id="currentProject.id"
-        :current-node="currentProject.currentNode"
-        @handleBack="backToList"
-      />
-    </div>
-    <div v-else-if="activeView === 'costAudit'">
-      <el-breadcrumb
-        separator-class="el-icon-arrow-right"
-        style="margin-bottom: 20px"
-      >
-        <el-breadcrumb-item>
-          <a href="javascript:void(0)" @click="backToList">成本审核管理</a>
-        </el-breadcrumb-item>
-        <el-breadcrumb-item>成本审核</el-breadcrumb-item>
-      </el-breadcrumb>
-      <costAudit @handleBack="backToList" />
-    </div>
+    <!-- 详情弹窗组件 -->
+    <details-dialog
+      :id="selectedProject && selectedProject.id"
+      ref="detailsRef"
+      :visible.sync="detailsVisible"
+      :current-node="selectedProject && selectedProject.auditNode"
+      :current-status="selectedProject && selectedProject.auditStatus"
+      @close="handleDetailsClose"
+    />
   </div>
 </template>
 
 <script>
-  import taskDetail from './taskDetail.vue'
-  import taskProcess from './taskProcess.vue'
-  import auditReview from './auditReview.vue'
-  import costAudit from './costAudit.vue'
+  import detailsDialog from './details.vue'
   import taskMixins from './taskMixins.js'
   // 成本监审任务列表API
   import { getReviewTaskList } from '@/api/audit/auditIndex'
   export default {
     name: 'CostAuditManagement',
     components: {
-      taskDetail,
-      taskProcess,
-      auditReview,
-      costAudit,
+      detailsDialog,
     },
     mixins: [taskMixins],
     data() {
@@ -221,19 +167,15 @@
         currentPage: 1,
         pageSize: 10,
         total: 0,
-        // 视图控制
-        activeView: 'list', // list: 列表, detail: 详情, process: 办理
         // 搜索相关
         searchQuery: '',
         // 列表数据
         auditProjectList: [],
-        // workflowList: [],
-        notificationsList: [],
-        templatesList: [],
         // 加载状态
         loading: false,
-        // 当前选中的项目
-        currentProject: null,
+        // 详情弹窗相关
+        detailsVisible: false,
+        selectedProject: null,
       }
     },
 
@@ -349,30 +291,17 @@
         this.loadAuditProjectList()
       },
 
-      // 任务详情
-      handleTaskDetail(project) {
-        this.currentProject = project
-        this.activeView = 'detail'
-        this.loadAuditProjectDetail(project.id)
-        this.loadWorkflowList(project.id)
-        this.loadNotificationsList(project.id)
+      // 打开详情弹窗
+      handleOpenDetails(project) {
+        this.selectedProject = project
+        this.detailsVisible = true
       },
 
-      // 任务办理
-      handleTaskProcess(project) {
-        this.currentProject = project
-        this.activeView = 'process'
-        this.loadTemplatesList()
-
-        // 初始化集体审议表单中的项目信息
-        if (project) {
-          this.meetingForm.projectName = project.projectName
-          this.meetingForm.auditUnit = project.auditObject
-        }
-      },
-      handleAuditReview(project) {
-        this.currentProject = project
-        this.activeView = 'auditReview'
+      // 详情弹窗关闭处理
+      handleDetailsClose() {
+        this.selectedProject = null
+        this.detailsVisible = false
+        // 可以在这里添加刷新列表的逻辑
       },
 
       // 查记录
@@ -384,178 +313,6 @@
         })
       },
 
-      // 查看
-      handleView(project) {
-        this.currentProject = project
-        this.activeView = 'detail'
-        this.loadAuditProjectDetail(project.id)
-        this.loadWorkflowList(project.id)
-        this.loadNotificationsList(project.id)
-      },
-
-      // 成本审核
-      handleCostAudit(project) {
-        this.currentProject = project
-        this.activeView = 'costAudit'
-        this.loadAuditProjectDetail(project.id)
-        this.loadWorkflowList(project.id)
-        this.loadNotificationsList(project.id)
-      },
-
-      // 返回列表
-      backToList() {
-        this.activeView = 'list'
-        // 刷新列表数据
-        this.loadAuditProjectList()
-      },
-
-      // 返回详情
-      backToDetail() {
-        this.activeView = 'detail'
-      },
-
-      // 加载审核项目详情
-      async loadAuditProjectDetail(id) {
-        try {
-          // 这里应该调用API获取数据,现在使用模拟数据
-          this.basicForm = {
-            projectName: '太原市电网输配电成本监审',
-            costAuditTable: '电网企业成本监审表',
-            region: 'shanxi',
-            auditObject: '太原市热电厂、****热电厂、****公司',
-            year: '2023',
-            source: 'plan',
-            form: 'price',
-            startYear: '2023',
-            endYear: '2024',
-            isNew: '否',
-            isDynamic: '否',
-            basis: '太原市发改委关于开展2023年电网输配电成本监审的通知',
-            attachments: [
-              {
-                name: '太原市发改委关于开展2023年电网输配电成本监审的通知.pct',
-              },
-              { name: '其他附件.pdf' },
-            ],
-          }
-        } catch (error) {
-          this.$message.error('加载审核项目详情失败')
-          console.error('加载审核项目详情失败:', error)
-        }
-      },
-
-      // 加载工作流程列表
-      async loadWorkflowList(id) {
-        try {
-          // 这里应该调用API获取数据,现在使用模拟数据
-          this.workflowList = [
-            {
-              id: '1',
-              stepName: '提交材料',
-              nodeType: '外部环节',
-              handler: '张**、李**',
-              opinions: '已提交相关材料',
-              deadline: '2025-5-4',
-              startTime: '2025-4-18 14:20',
-              endTime: '2025-4-18 15:30',
-            },
-            {
-              id: '2',
-              stepName: '资料初审',
-              nodeType: '内部环节',
-              handler: '王**',
-              opinions: '资料齐全,同意进入下一环节',
-              deadline: '2025-5-4',
-              startTime: '2025-5-4 10:10',
-              endTime: '2025-5-4 16:30',
-            },
-            {
-              id: '3',
-              stepName: '实地审核',
-              nodeType: '内部环节',
-              handler: '张**',
-              opinions: '正在审核中',
-              deadline: '2025-5-6',
-              startTime: '2025-5-6 09:00',
-              endTime: '2025-5-6 18:30',
-            },
-            // 其他环节...
-            {
-              id: '8',
-              stepName: '办结',
-              nodeType: '内部环节',
-              handler: '李**',
-              opinions: '',
-              deadline: '2025-5-30',
-              startTime: '',
-              endTime: '',
-            },
-          ]
-        } catch (error) {
-          this.$message.error('加载工作流程列表失败')
-          console.error('加载工作流程列表失败:', error)
-        }
-      },
-
-      // 加载消息通知列表
-      async loadNotificationsList(id) {
-        try {
-          // 这里应该调用API获取数据,现在使用模拟数据
-          this.notificationsList = [
-            {
-              id: '1',
-              title: '材料收到通知',
-              source: '山西省发改委-张**',
-              target: 'A单位',
-              content: '2025年收到你单位报送的材料...',
-              sendTime: '2025-5-11 16:40',
-            },
-            {
-              id: '2',
-              title: '环节办理通知',
-              source: '山西省发改委-张**',
-              target: 'B单位',
-              content: '2025年收到你单位报送的材料...',
-              sendTime: '2025-5-12 16:56',
-            },
-            // 其他通知...
-            {
-              id: '9',
-              title: '',
-              source: '',
-              target: '',
-              content: '',
-              sendTime: '2025-5-30 16:55',
-            },
-          ]
-        } catch (error) {
-          this.$message.error('加载消息通知列表失败')
-          console.error('加载消息通知列表失败:', error)
-        }
-      },
-
-      // 加载模板列表
-      async loadTemplatesList() {
-        try {
-          // 这里应该调用API获取数据,现在使用模拟数据
-          this.templatesList = [
-            { id: '1', name: '成本监审通知书' },
-            { id: '2', name: '成本监审工作方案' },
-            { id: '3', name: '成本监审资料报送要求' },
-            { id: '4', name: '成本监审意见告知书' },
-            { id: '5', name: '成本监审结论告知书' },
-            { id: '6', name: '成本监审报告' },
-            { id: '7', name: '成本监审报告(送审稿)' },
-            { id: '8', name: '成本监审结论告知书(适用返还)' },
-            { id: '9', name: '成本监审结论告知书(适用返还)-送审稿' },
-          ]
-          this.selectedTemplate = '1'
-        } catch (error) {
-          this.$message.error('加载模板列表失败')
-          console.error('加载模板列表失败:', error)
-        }
-      },
-
       // 分页处理
       handleSizeChange(size) {
         this.pageSize = size

+ 99 - 225
src/views/costAudit/auditInfo/auditManage/auditReview.vue → src/views/costAudit/auditInfo/auditManage/submitData.vue

@@ -1,234 +1,108 @@
 <template>
   <div class="audit-review">
-    <!-- 操作按钮区域 -->
-    <div class="btn-group">
-      <!-- <el-button type="primary" @click="handleAuditPass">初审通过</el-button>
-      <el-button type="primary" @click="showRejectDialog = true">
-        初审退回
-      </el-button>
-      <el-button type="primary" @click="showAbortDialog = true">
-        中止监审
-      </el-button> -->
-      <el-button
-        v-for="item in buttonData"
-        :key="item.id"
-        type="primary"
-        @click="handleAuditPass(item)"
+    <div
+      v-for="category in materialCategories"
+      :key="category.type"
+      class="material-category"
+    >
+      <h3 class="category-title">{{ category.typeName }}</h3>
+      <el-table
+        v-loading="loading"
+        :data="category.items"
+        stripe
+        style="width: 100%"
       >
-        {{ item.value }}
-      </el-button>
-      <el-button @click="handleBack">返回</el-button>
-    </div>
-
-    <!-- 标签页区域 -->
-    <el-tabs v-model="activeTab" style="margin-top: 20px">
-      <!-- 报送资料标签页 -->
-      <el-tab-pane label="报送资料" name="materials">
-        <div
-          v-for="category in materialCategories"
-          :key="category.type"
-          class="material-category"
-        >
-          <h3 class="category-title">{{ category.typeName }}</h3>
-          <el-table
-            v-loading="loading"
-            :data="category.items"
-            stripe
-            style="width: 100%"
-          >
-            <el-table-column
-              prop="orderNum"
-              label="序号"
-              width="80"
-              align="center"
-            />
-
-            <el-table-column
-              prop="informationName"
-              label="报送资料"
-              min-width="200"
-            />
-
-            <el-table-column label="资料类型" width="120" align="center">
-              <template slot-scope="scope">
-                <span
-                  :class="{
-                    'template-tag': scope.row.templateId,
-                  }"
-                >
-                  {{ getFormatType(scope.row.formatRequired) }}
-                </span>
-              </template>
-            </el-table-column>
-
-            <el-table-column label="是否必项" width="100" align="center">
-              <template slot-scope="scope">
-                {{ scope.row.isRequired === '1' ? '是' : '否' }}
-              </template>
-            </el-table-column>
-
-            <el-table-column label="是否上传" width="100" align="center">
-              <template slot-scope="scope">
-                <span
-                  :style="{
-                    color: scope.row.isUploaded ? '#67C23A' : '#F56C6C',
-                  }"
-                >
-                  {{ scope.row.isUploaded ? '已上传' : '未上传' }}
-                </span>
-              </template>
-            </el-table-column>
-
-            <el-table-column
-              prop="createTime"
-              label="上传时间"
-              width="150"
-              align="center"
-            />
-            <el-table-column label="初审结果" width="100" align="center">
-              <template slot-scope="scope">
-                <span
-                  :class="{
-                    'result-pass': scope.row.auditedStatus === '通过',
-                    'result-fail': scope.row.auditedStatus === '不通过',
-                  }"
-                >
-                  {{ scope.row.auditedStatus || '-' }}
-                </span>
-              </template>
-            </el-table-column>
-            <el-table-column label="操作" width="200" align="center">
-              <template slot-scope="scope">
-                <template
-                  v-if="
-                    scope.row.filePath ||
-                    scope.row.fileId ||
-                    scope.row.fileName ||
-                    scope.row.uploaded === '已上传'
-                  "
-                >
-                  <el-button
-                    v-if="
-                      !scope.row.auditedStatus || scope.row.auditedStatus === 0
-                    "
-                    type="text"
-                    size="small"
-                    @click="handleAuditMaterial(scope.row)"
-                  >
-                    审核
-                  </el-button>
-                  <el-button
-                    type="text"
-                    size="small"
-                    @click="handleViewDownload(scope.row)"
-                  >
-                    查看
-                  </el-button>
-                </template>
-              </template>
-            </el-table-column>
-          </el-table>
-        </div>
-      </el-tab-pane>
-
-      <!-- 成本调查表标签页 -->
-      <el-tab-pane label="成本调查表" name="costSurvey">
-        <el-table
-          v-loading="loading"
-          :data="costSurveyData"
-          border
-          style="width: 100%"
-        >
-          <el-table-column
-            prop="id"
-            label="序号"
-            width="80"
-            align="center"
-          ></el-table-column>
-          <el-table-column
-            prop="name"
-            label="成本调查表"
-            min-width="200"
-            show-overflow-tooltip
-          ></el-table-column>
-          <el-table-column
-            prop="type"
-            label="资料类型"
-            width="120"
-            align="center"
-          ></el-table-column>
-          <el-table-column
-            prop="formType"
-            label="表格类型"
-            width="100"
-            align="center"
-          ></el-table-column>
-          <el-table-column
-            prop="required"
-            label="是否必填"
-            width="100"
-            align="center"
-          ></el-table-column>
-          <el-table-column
-            prop="uploaded"
-            label="是否上传"
-            width="100"
-            align="center"
-          >
-            <template slot-scope="scope">
-              <span
-                v-if="scope.row.uploaded === '已上传'"
-                style="color: #1677ff"
+        <el-table-column
+          prop="orderNum"
+          label="序号"
+          width="80"
+          align="center"
+        />
+
+        <el-table-column
+          prop="informationName"
+          label="报送资料"
+          min-width="200"
+        />
+
+        <el-table-column label="资料类型" width="120" align="center">
+          <template slot-scope="scope">
+            <span
+              :class="{
+                'template-tag': scope.row.templateId,
+              }"
+            >
+              {{ getFormatType(scope.row.formatRequired) }}
+            </span>
+          </template>
+        </el-table-column>
+
+        <el-table-column label="是否必项" width="100" align="center">
+          <template slot-scope="scope">
+            {{ scope.row.isRequired === '1' ? '是' : '否' }}
+          </template>
+        </el-table-column>
+
+        <el-table-column label="是否上传" width="100" align="center">
+          <template slot-scope="scope">
+            <span
+              :style="{
+                color: scope.row.isUploaded ? '#67C23A' : '#F56C6C',
+              }"
+            >
+              {{ scope.row.isUploaded ? '已上传' : '未上传' }}
+            </span>
+          </template>
+        </el-table-column>
+
+        <el-table-column
+          prop="createTime"
+          label="上传时间"
+          width="150"
+          align="center"
+        />
+        <el-table-column label="初审结果" width="100" align="center">
+          <template slot-scope="scope">
+            <span
+              :class="{
+                'result-pass': scope.row.auditedStatus === '通过',
+                'result-fail': scope.row.auditedStatus === '不通过',
+              }"
+            >
+              {{ scope.row.auditedStatus || '-' }}
+            </span>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" width="200" align="center">
+          <template slot-scope="scope">
+            <template
+              v-if="
+                scope.row.filePath ||
+                scope.row.fileId ||
+                scope.row.fileName ||
+                scope.row.uploaded === '已上传'
+              "
+            >
+              <el-button
+                v-if="!scope.row.auditedStatus || scope.row.auditedStatus === 0"
+                type="text"
+                size="small"
+                @click="handleAuditMaterial(scope.row)"
               >
-                {{ scope.row.uploaded }}
-              </span>
-              <span
-                v-else-if="scope.row.uploaded === '未上传'"
-                style="color: #f56c6c"
-              >
-                {{ scope.row.uploaded }}
-              </span>
-              <span v-else>{{ scope.row.uploaded }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column
-            prop="uploadTime"
-            label="上传时间"
-            width="150"
-            align="center"
-          ></el-table-column>
-          <el-table-column label="操作" width="100" align="center">
-            <template slot-scope="scope">
-              <el-button type="text" @click="handleViewReport(scope.row)">
-                查看报表
+                审核
               </el-button>
-            </template>
-          </el-table-column>
-          <el-table-column
-            prop="auditResult"
-            label="初审结果"
-            width="100"
-            align="center"
-          >
-            <template slot-scope="scope">
-              <span
-                v-if="scope.row.auditResult === '通过'"
-                style="color: #1677ff"
-              >
-                {{ scope.row.auditResult }}
-              </span>
-              <span
-                v-else-if="scope.row.auditResult === '不通过'"
-                style="color: #f56c6c"
+              <el-button
+                type="text"
+                size="small"
+                @click="handleViewDownload(scope.row)"
               >
-                {{ scope.row.auditResult }}
-              </span>
-              <span v-else>{{ scope.row.auditResult }}</span>
+                查看
+              </el-button>
             </template>
-          </el-table-column>
-        </el-table>
-      </el-tab-pane>
-    </el-tabs>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
 
     <!-- 初审退回弹窗 -->
     <el-dialog
@@ -701,7 +575,7 @@
 
 <style scoped>
   .audit-review {
-    padding: 20px;
+    padding: 5px;
     background-color: #ffffff;
   }
 

+ 0 - 0
src/views/costAudit/auditInfo/auditManage/workDraft.vue