Просмотр исходного кода

Merge branch 'master' of http://116.204.116.5:3000/zzw/cbjsxt-front-master

cb_luzhixia 1 месяц назад
Родитель
Сommit
adaed31dc2

+ 3 - 3
public/config.js

@@ -4,9 +4,9 @@
 // var host = 'http://116.204.117.33' //基本用这个
 // var host = 'http://101.33.208.140' // 测试
 // var host = 'http://b463f4b7.natappfree.cc' // 后端服务海鹏
-var host = 'http://5jrgep.ipx.wanziwk.cn' // 后端服务译文
+//var host = 'http://5jrgep.ipx.wanziwk.cn' // 后端服务译文
 // var host = 'http://192.168.1.2' // 后端服务译文
-// var host = 'http://localhost'
+var host = 'http://5jrgep.ipx.wanziwk.cn'
 // combine为true时五合一部署, 为false时分五个服务部署
 var combine = true
 // var gateway = '8280/stage-api'
@@ -22,7 +22,7 @@ var defaultModulePortMap = {
 }
 window.getModuleRootUrl = function (module) {
   // 默认是全部服务合一的端口
-  // var modulePort = '8089' // 以前
+  //var modulePort = '8089' // 以前
   // var modulePort = '9506' // 基本用这个
   // var modulePort = '8088' //测试
   var modulePort = ''

+ 137 - 32
src/components/task/taskInfo.vue

@@ -2,8 +2,8 @@
   <el-dialog
     :visible.sync="dialogVisible"
     title="任务详情"
-    width="100%"
-    height="100%"
+    width="80%"
+    top="5vh"
     :close-on-click-modal="false"
     :before-close="handleClose"
     class="task-info-dialog"
@@ -137,7 +137,7 @@
               </el-form-item>
               <el-form-item label="监审期间:">
                 <div class="cost-period-container">
-                  <el-button
+                  <!-- <el-button
                     type="primary"
                     size="small"
                     class="add-cost-year-btn"
@@ -145,7 +145,7 @@
                     @click="addCostYear"
                   >
                     +
-                  </el-button>
+                  </el-button> -->
                   <div class="cost-years-wrapper">
                     <div
                       v-for="(year, index) in formData.basicInfo
@@ -155,7 +155,7 @@
                     >
                       <el-date-picker
                         v-model="year.value"
-                        style="width: 82%"
+                        style="width: 82%; margin-bottom: 5px"
                         type="year"
                         placeholder="请选择年份"
                         format="yyyy"
@@ -163,7 +163,7 @@
                         clearable
                         :disabled="isViewMode"
                       ></el-date-picker>
-                      <el-button
+                      <!-- <el-button
                         type="danger"
                         size="small"
                         class="delete-cost-year-btn"
@@ -171,7 +171,7 @@
                         @click="deleteCostYear(index)"
                       >
                         删除
-                      </el-button>
+                      </el-button> -->
                     </div>
                   </div>
                 </div>
@@ -198,7 +198,7 @@
               </el-form-item>
               <el-form-item label="监审任务负责人:">
                 <el-select
-                  v-model="formData.basicInfo.auditGroup"
+                  v-model="formData.basicInfo.projectMembers"
                   placeholder="请选择负责人"
                   style="width: 100%"
                   :disabled="isViewMode"
@@ -213,7 +213,7 @@
               </el-form-item>
               <el-form-item label="监审任务组成员:">
                 <el-select
-                  v-model="formData.basicInfo.auditTeamMembers"
+                  v-model="formData.basicInfo.leaderId"
                   placeholder="请选择成员"
                   multiple
                   style="width: 100%"
@@ -309,7 +309,11 @@
         </el-tab-pane>
 
         <!-- 报送资料 -->
-        <el-tab-pane label="报送资料" name="dataRequirements">
+        <el-tab-pane
+          v-if="currentNode === 'clcs' || currentNode === 'tjcl'"
+          label="报送资料"
+          name="dataRequirements"
+        >
           <div v-loading="loading" element-loading-text="加载中...">
             <el-table
               border
@@ -380,7 +384,7 @@
                 </template>
               </el-table-column>
               <el-table-column
-                prop="isUploaded"
+                prop="isUpload"
                 label="是否上传"
                 width="110"
                 align="center"
@@ -388,7 +392,9 @@
                 <template slot-scope="scope">
                   <span v-if="!scope.row.isCategoryHeader">
                     <span
-                      v-if="scope.row.isUploaded === true"
+                      v-if="
+                        scope.row.isUpload === 1 || scope.row.isUpload === '1'
+                      "
                       style="color: #67c23a"
                     >
                       已上传
@@ -397,12 +403,104 @@
                   </span>
                 </template>
               </el-table-column>
+              <el-table-column
+                prop="isRequired"
+                label="审核状态"
+                width="110"
+                align="center"
+              >
+                <template slot-scope="scope">
+                  <span v-if="!scope.row.isCategoryHeader">
+                    <span
+                      v-if="
+                        scope.row.auditedStatus !== null &&
+                        scope.row.auditedStatus !== undefined
+                      "
+                    >
+                      {{
+                        getDictName(
+                          'clshzt',
+                          String(scope.row.auditedStatus)
+                        ) || scope.row.auditedStatus
+                      }}
+                    </span>
+                    <span v-else>-</span>
+                  </span>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="operation"
+                label="操作"
+                width="220"
+                align="center"
+              >
+                <template slot-scope="scope">
+                  <template v-if="!scope.row.isCategoryHeader">
+                    <template v-if="scope.row.formatRequired !== '3'">
+                      <el-button
+                        v-if="
+                          scope.row.isUpload === 1 || scope.row.isUpload === '1'
+                        "
+                        type="text"
+                        size="small"
+                        @click="$emit('handleFileView', scope.row)"
+                      >
+                        查看
+                      </el-button>
+                      <el-button
+                        v-if="
+                          scope.row.isUpload === 1 || scope.row.isUpload === '1'
+                        "
+                        type="text"
+                        size="small"
+                        @click="$emit('handleFileDownload', scope.row)"
+                      >
+                        下载
+                      </el-button>
+                      <!-- <el-button
+                v-if="scope.row.isUpload === 0 || scope.row.isUpload === '0'"
+                type="text"
+                size="small"
+                :disabled="isViewMode"
+                @click="$emit('handleFileUpload', scope.row)"
+              >
+                上传
+              </el-button> -->
+                    </template>
+                    <template v-if="scope.row.formatRequired == '3'">
+                      <el-button
+                        v-if="
+                          scope.row.isUpload === 1 || scope.row.isUpload === '1'
+                        "
+                        type="text"
+                        size="small"
+                        @click="$emit('handleTemplateDownload', scope.row)"
+                      >
+                        模版下载
+                      </el-button>
+                      <!-- <el-button
+                v-if="scope.row.isUpload === 0 || scope.row.isUpload === '0'"
+                type="text"
+                size="small"
+                :disabled="isViewMode"
+                @click="$emit('handleDataUpload', scope.row)"
+              >
+                数据上传
+              </el-button> -->
+                    </template>
+                  </template>
+                </template>
+              </el-table-column>
             </el-table>
           </div>
         </el-tab-pane>
 
         <!-- 成本调查表 -->
-        <el-tab-pane label="成本调查表" name="costSurvey">
+        <el-tab-pane
+          v-if="currentNode === 'clcs' || currentNode === 'tjcl'"
+          label="成本调查表"
+          name="costSurvey"
+        >
           <div v-loading="loading" element-loading-text="加载中...">
             <el-table
               style="width: 100%"
@@ -444,10 +542,10 @@
                   <span
                     :style="{
                       color:
-                        scope.row.isUploaded === true ? '#67c23a' : '#f56c6c',
+                        scope.row.isUpload === true ? '#67c23a' : '#f56c6c',
                     }"
                   >
-                    {{ scope.row.isUploaded === true ? '已上传' : '未上传' }}
+                    {{ scope.row.isUpload === true ? '已上传' : '未上传' }}
                   </span>
                 </template>
               </el-table-column>
@@ -468,7 +566,7 @@
 
         <!-- 监审意见 -->
         <el-tab-pane
-          v-if="showAuditOpinion"
+          v-if="currentNode === 'yjfk'"
           label="监审意见"
           name="auditOpinion"
         >
@@ -683,6 +781,7 @@
           materialType: [], // 资料类别
           materialCategory: [], // 资料类别
           formatAsk: [], // 资料类型
+          clshzt: [], // 是否通过
         },
         formData: {
           basicInfo: {
@@ -703,9 +802,9 @@
             needHearing: 1,
             isEmergency: 1,
             establishmentReason: '',
-            auditGroup: '',
+            projectMembers: '',
             auditGroupName: '',
-            auditTeamMembers: [],
+            leaderId: [],
             auditTeamMembersText: '',
             expertStr: '',
             plannedAuditStartDate: '',
@@ -725,6 +824,7 @@
           messageNotice: [],
         },
         showAuditOpinion: true,
+        currentNode: '',
       }
     },
     computed: {
@@ -846,7 +946,9 @@
           .catch(() => {})
       },
       // 对外暴露的打开方法
-      open(data) {
+      open(data, type) {
+        console.log('data', data)
+        console.log('type', type)
         this.dialogVisible = true
         this.activeTab = 'projectInfo'
 
@@ -864,14 +966,18 @@
         if (data) {
           // 保存任务信息
           this.currentTaskInfo = {
-            projectId: data.projectId || data.id,
-            taskId: data.userTask?.id || data.taskId,
+            projectId: type === 'chengben' ? data.projectId : data.id,
+            taskId:
+              type === 'chengben'
+                ? data.taskId
+                : data.userTask?.id || data.taskId,
             currentNode: data.currentNode,
             ...data,
           }
 
           // 根据状态决定是否显示监审意见标签页
-          this.showAuditOpinion = data.currentNode !== 'jtsy'
+          // this.showAuditOpinion = data.currentNode !== 'jtsy'
+          this.currentNode = data.currentNode
 
           // 立即加载立项信息
           this.loadProjectInfo()
@@ -911,6 +1017,7 @@
       },
       // 加载立项信息
       async loadProjectInfo() {
+        console.log(this.currentTaskInfo.projectId)
         if (!this.currentTaskInfo?.projectId) {
           return
         }
@@ -944,14 +1051,12 @@
             }
 
             // 处理监审任务组成员(可能是字符串或数组)
-            let auditTeamMembers = []
-            if (data.auditTeamMembers) {
-              if (typeof data.auditTeamMembers === 'string') {
-                auditTeamMembers = data.auditTeamMembers
-                  .split(',')
-                  .filter(Boolean)
-              } else if (Array.isArray(data.auditTeamMembers)) {
-                auditTeamMembers = data.auditTeamMembers
+            let leaderId = []
+            if (data.leaderId) {
+              if (typeof data.leaderId === 'string') {
+                leaderId = data.leaderId.split(',').filter(Boolean)
+              } else if (Array.isArray(data.leaderId)) {
+                leaderId = data.leaderId
               }
             }
 
@@ -973,8 +1078,8 @@
               isEmergency:
                 data.isEmergency !== undefined ? data.isEmergency : 1,
               establishmentReason: data.establishmentReason || '',
-              auditGroup: data.auditGroup || '',
-              auditTeamMembers: auditTeamMembers,
+              projectMembers: data.projectMembers || '',
+              leaderId: leaderId,
               expertStr: data.expertStr || '',
               plannedAuditStartDate: data.plannedAuditStartDate || '',
               plannedAuditEndDate: data.plannedAuditEndDate || '',

+ 44 - 4
src/views/EntDeclaration/auditTaskManagement/components/DataRequirementsTab.vue

@@ -66,23 +66,52 @@
         </template>
       </el-table-column>
       <el-table-column
-        prop="isUploaded"
+        prop="isUpload"
         label="是否上传"
         width="110"
         align="center"
       >
         <template slot-scope="scope">
           <span v-if="!scope.row.isCategoryHeader">
-            <span v-if="scope.row.isUploaded === true">已上传</span>
+            <span
+              v-if="scope.row.isUpload === 1 || scope.row.isUpload === '1'"
+              style="color: #67c23a"
+            >
+              已上传
+            </span>
             <span v-else class="text-danger">未上传</span>
           </span>
         </template>
       </el-table-column>
+      <el-table-column
+        prop="isRequired"
+        label="审核状态"
+        width="110"
+        align="center"
+      >
+        <template slot-scope="scope">
+          <span v-if="!scope.row.isCategoryHeader">
+            <span
+              v-if="
+                scope.row.auditedStatus !== null &&
+                scope.row.auditedStatus !== undefined
+              "
+            >
+              {{
+                getDictName('clshzt', String(scope.row.auditedStatus)) ||
+                scope.row.auditedStatus
+              }}
+            </span>
+            <span v-else>-</span>
+          </span>
+        </template>
+      </el-table-column>
       <el-table-column prop="operation" label="操作" width="220" align="center">
         <template slot-scope="scope">
           <template v-if="!scope.row.isCategoryHeader">
             <template v-if="scope.row.formatRequired !== '3'">
               <el-button
+                v-if="scope.row.isUpload === 1 || scope.row.isUpload === '1'"
                 type="text"
                 size="small"
                 @click="$emit('handleFileView', scope.row)"
@@ -90,6 +119,7 @@
                 查看
               </el-button>
               <el-button
+                v-if="scope.row.isUpload === 1 || scope.row.isUpload === '1'"
                 type="text"
                 size="small"
                 @click="$emit('handleFileDownload', scope.row)"
@@ -97,7 +127,7 @@
                 下载
               </el-button>
               <el-button
-                v-if="scope.row.isUploaded === false"
+                v-if="scope.row.auditedStatus !== '1' && currentNode === 'clcs'"
                 type="text"
                 size="small"
                 :disabled="isViewMode"
@@ -108,6 +138,7 @@
             </template>
             <template v-if="scope.row.formatRequired == '3'">
               <el-button
+                v-if="scope.row.isUpload === 1 || scope.row.isUpload === '1'"
                 type="text"
                 size="small"
                 @click="$emit('handleTemplateDownload', scope.row)"
@@ -115,7 +146,7 @@
                 模版下载
               </el-button>
               <el-button
-                v-if="scope.row.isUploaded === false"
+                v-if="scope.row.auditedStatus !== '1' && currentNode === 'clcs'"
                 type="text"
                 size="small"
                 :disabled="isViewMode"
@@ -147,7 +178,16 @@
         type: Object,
         default: () => ({}),
       },
+      currentNode: {
+        type: String,
+        default: '',
+      },
+    },
+    computed: {},
+    mounted() {
+      // 直接使用this.currentNode访问props值,无需在data中重复定义
     },
+
     methods: {
       getRowClassName(data) {
         if (data.row.isCategoryHeader) {

+ 17 - 8
src/views/EntDeclaration/auditTaskManagement/components/ProjectInfoTab.vue

@@ -110,7 +110,7 @@
     </el-form-item>
     <el-form-item label="监审期间:">
       <div class="cost-period-container">
-        <el-button
+        <!-- <el-button
           type="primary"
           size="small"
           class="add-cost-year-btn"
@@ -118,7 +118,7 @@
           @click="$emit('add-cost-year')"
         >
           +
-        </el-button>
+        </el-button> -->
         <div class="cost-years-wrapper">
           <div
             v-for="(year, index) in localFormData.auditPeriodArray"
@@ -127,7 +127,7 @@
           >
             <el-date-picker
               v-model="year.value"
-              style="width: 82%"
+              style="width: 82%; margin-bottom: 5px"
               type="year"
               placeholder="请选择年份"
               format="yyyy"
@@ -135,7 +135,7 @@
               clearable
               :disabled="isViewMode"
             ></el-date-picker>
-            <el-button
+            <!-- <el-button
               type="danger"
               size="small"
               class="delete-cost-year-btn"
@@ -143,7 +143,7 @@
               @click="$emit('delete-cost-year', index)"
             >
               删除
-            </el-button>
+            </el-button> -->
           </div>
         </div>
       </div>
@@ -178,7 +178,7 @@
     </el-form-item>
     <el-form-item label="监审任务负责人:">
       <el-select
-        v-model="localFormData.auditGroup"
+        v-model="localFormData.projectMembers"
         placeholder="请选择负责人"
         style="width: 100%"
         :disabled="isViewMode"
@@ -193,7 +193,7 @@
     </el-form-item>
     <el-form-item label="监审任务组成员:">
       <el-select
-        v-model="localFormData.auditTeamMembers"
+        v-model="localFormData.leaderId"
         placeholder="请选择成员"
         multiple
         style="width: 100%"
@@ -289,8 +289,17 @@
         handler(newVal) {
           // 标记为内部更新,避免触发 localFormData 的 watch
           this.isInternalUpdate = true
-          // 深拷贝 formData
+          // 处理监审任务组成员(可能是字符串或数组)
+          let leaderId = []
+          if (newVal && newVal.leaderId) {
+            if (typeof newVal.leaderId === 'string') {
+              leaderId = newVal.leaderId.split(',').filter(Boolean)
+            } else if (Array.isArray(newVal.leaderId)) {
+              leaderId = newVal.leaderId
+            }
+          }
           this.localFormData = JSON.parse(JSON.stringify(newVal))
+          this.localFormData.leaderId = leaderId
           this.$nextTick(() => {
             this.isInternalUpdate = false
           })

+ 10 - 20
src/views/EntDeclaration/auditTaskManagement/taskFillIn.vue

@@ -61,15 +61,7 @@
           </el-tab-pane>
 
           <!-- 监审文书 -->
-          <el-tab-pane
-            v-if="
-              currentNode !== 'clcs' &&
-              currentNode !== 'jtsy' &&
-              currentNode !== 'yjfk'
-            "
-            label="监审文书"
-            name="auditDocument"
-          >
+          <el-tab-pane label="监审文书" name="auditDocument">
             <audit-document-tab
               :form-data="formData.auditDocument"
               :is-view-mode="isViewMode"
@@ -81,7 +73,7 @@
 
           <!-- 报送资料 -->
           <el-tab-pane
-            v-if="currentNode === 'clcs'"
+            v-if="currentNode === 'clcs' || currentNode === 'tjcl'"
             label="报送资料"
             name="dataRequirements"
           >
@@ -89,6 +81,7 @@
               :data-requirements="groupedDataRequirements"
               :is-view-mode="isViewMode"
               :dict-data="dictData"
+              :current-node="currentNode"
               @handleAddMaterial="handleAddMaterial"
               @handleFileView="handleFileView"
               @handleFileDownload="handleFileDownload"
@@ -99,7 +92,7 @@
           </el-tab-pane>
           <!-- 成本调查表 -->
           <el-tab-pane
-            v-if="currentNode === 'clcs'"
+            v-if="currentNode === 'clcs' || currentNode === 'tjcl'"
             label="成本调查表"
             name="costSurvey"
           >
@@ -132,15 +125,7 @@
           </el-tab-pane>
 
           <!-- 消息通知 -->
-          <el-tab-pane
-            v-if="
-              currentNode !== 'clcs' &&
-              currentNode !== 'jtsy' &&
-              currentNode !== 'yjfk'
-            "
-            label="消息通知"
-            name="messageNotice"
-          >
+          <el-tab-pane label="消息通知" name="messageNotice">
             <message-notice-tab
               :form-data="formData.messageNotice"
               :pagination="messageNoticePagination"
@@ -157,6 +142,8 @@
         :visible.sync="materialDialogVisible"
         width="600px"
         :close-on-click-modal="false"
+        :modal="false"
+        append-to-body
       >
         <el-form
           ref="materialForm"
@@ -344,6 +331,7 @@
           materialType: [], // 资料类别
           materialCategory: [], // 资料类别
           formatAsk: [], // 资料类型
+          clshzt: [], // 是否通过
         },
         // 立项依据文件列表
         accordingFileList: [],
@@ -1111,6 +1099,8 @@
                 if (res && res.code === 200) {
                   Message.success('提交成功')
                   this.handleBack()
+                  // 通知父组件刷新列表
+                  this.$emit('refresh')
                 } else {
                   Message.error('提交失败')
                 }

+ 11 - 8
src/views/EntDeclaration/auditTaskProcessing/index.vue

@@ -131,9 +131,9 @@
         align="center"
         show-overflow-tooltip
       >
-        <!-- <template slot-scope="scope">
-            {{ getDictName('projectProposal', scope.row.sourceType) }}
-          </template> -->
+        <template slot-scope="scope">
+          {{ getDictName('projectProposal', scope.row.sourceType) }}
+        </template>
       </el-table-column>
       <el-table-column
         prop="auditType"
@@ -141,9 +141,9 @@
         width="120"
         align="center"
       >
-        <!-- <template slot-scope="scope">
-            {{ getDictName('auditType', scope.row.auditType) }}
-          </template> -->
+        <template slot-scope="scope">
+          {{ getDictName('auditType', scope.row.auditType) }}
+        </template>
       </el-table-column>
       <el-table-column
         prop="orgName"
@@ -179,8 +179,11 @@
           <!-- 文字按钮样式 -->
           <el-button
             v-if="
-              scope.row.currentNode === 'clcs' &&
-              (scope.row.status === '100' || scope.row.status === '500')
+              (scope.row.currentNode === 'clcs' ||
+                scope.row.currentNode === 'tjcl') &&
+              (scope.row.status === '100' ||
+                scope.row.status === '500' ||
+                scope.row.status === '600')
             "
             size="mini"
             type="text"

+ 268 - 23
src/views/costAudit/auditInfo/auditManage/details.vue

@@ -25,16 +25,32 @@
         <el-tab-pane label="成本调查表" name="costSurvey">
           <cost-survey :id="id" />
         </el-tab-pane>
-        <el-tab-pane label="成本审核" name="costAudit">
+        <el-tab-pane
+          v-if="currentNode !== 'clcs'"
+          label="成本审核"
+          name="costAudit"
+        >
           <cost-audit :id="id" />
         </el-tab-pane>
-        <el-tab-pane label="工作底稿" name="workDraft">
+        <el-tab-pane
+          v-if="currentNode !== 'clcs'"
+          label="工作底稿"
+          name="workDraft"
+        >
           <work-draft :id="id" />
         </el-tab-pane>
-        <el-tab-pane label="提取材料登记" name="extractMaterial">
+        <el-tab-pane
+          v-if="currentNode !== 'clcs'"
+          label="提取材料登记"
+          name="extractMaterial"
+        >
           <extract-material :id="id" />
         </el-tab-pane>
-        <el-tab-pane label="成本审核意见" name="auditOpinion">
+        <el-tab-pane
+          v-if="currentNode !== 'clcs' && currentNode !== 'sdsh'"
+          label="成本审核意见"
+          name="auditOpinion"
+        >
           <audit-opinion
             :id="id"
             :current-node="currentNode"
@@ -43,8 +59,106 @@
             @close="handleClose"
           />
         </el-tab-pane>
+        <el-tab-pane label="消息通知" name="messageNotify">
+          <message-notify :id="id" />
+        </el-tab-pane>
       </el-tabs>
     </el-drawer>
+    <!-- 补充资料弹窗 -->
+    <el-dialog
+      :visible.sync="showSupplementDialog"
+      title="补充资料"
+      width="500px"
+      :modal="false"
+    >
+      <div class="dialog-content">
+        <div class="form-item">
+          <el-input
+            v-model="additionalParams.content"
+            type="textarea"
+            :rows="6"
+            placeholder="请输入补充意见"
+            maxlength="500"
+            show-word-limit
+          />
+        </div>
+        <div class="form-item">
+          <label class="form-label">发送方式</label>
+          <el-checkbox-group v-model="additionalParams.sendType">
+            <el-checkbox label="site">站内消息</el-checkbox>
+            <el-checkbox label="sms">短信通知</el-checkbox>
+          </el-checkbox-group>
+        </div>
+      </div>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="showSupplementDialog = false">取消</el-button>
+        <el-button type="primary" @click="submitSupplement">发送</el-button>
+      </div>
+    </el-dialog>
+
+    <!-- 中止监审弹窗 -->
+    <el-dialog
+      :visible.sync="showAbortDialog"
+      title="中止监审"
+      width="500px"
+      :modal="false"
+    >
+      <div class="dialog-content">
+        <div class="form-item">
+          <el-input
+            v-model="additionalParams.content"
+            type="textarea"
+            :rows="6"
+            placeholder="请输入中止意见"
+            maxlength="500"
+            show-word-limit
+          />
+        </div>
+        <div class="form-item">
+          <label class="form-label">发送方式</label>
+          <el-checkbox-group v-model="additionalParams.sendType">
+            <el-checkbox label="site">站内消息</el-checkbox>
+            <el-checkbox label="sms">短信通知</el-checkbox>
+          </el-checkbox-group>
+        </div>
+      </div>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="showAbortDialog = false">取消</el-button>
+        <el-button type="primary" @click="submitAbort">发送</el-button>
+      </div>
+    </el-dialog>
+
+    <!-- 初审退回弹窗 -->
+    <el-dialog
+      :visible.sync="showRejectDialog"
+      title="初审退回"
+      width="500px"
+      :modal="false"
+    >
+      <div class="dialog-content">
+        <div class="form-item">
+          <el-input
+            v-model="additionalParams.content"
+            type="textarea"
+            :rows="6"
+            placeholder="请输入退回意见"
+            maxlength="500"
+            show-word-limit
+          />
+        </div>
+        <div class="form-item">
+          <label class="form-label">发送方式</label>
+          <el-checkbox-group v-model="additionalParams.sendType">
+            <el-checkbox label="site">站内消息</el-checkbox>
+            <el-checkbox label="sms">短信通知</el-checkbox>
+          </el-checkbox-group>
+        </div>
+      </div>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="showRejectDialog = false">取消</el-button>
+        <el-button type="primary" @click="submitReject">发送</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -55,6 +169,7 @@
   import workDraft from './workDraft.vue'
   import extractMaterial from './extractMaterial.vue'
   import auditOpinion from './auditOpinion.vue'
+  import messageNotify from './messageNotify.vue'
   import {
     getDataPreliminaryReviewButton,
     doProcessBtn,
@@ -68,6 +183,7 @@
       workDraft,
       extractMaterial,
       auditOpinion,
+      messageNotify,
     },
     props: {
       visible: {
@@ -91,6 +207,14 @@
       return {
         buttonData: [], //资料初审按钮数据
         activeTab: 'submitData', // 默认选中报送资料标签页
+        // 弹窗显示状态
+        showSupplementDialog: false,
+        showAbortDialog: false,
+        showRejectDialog: false,
+        // 弹窗数据
+        additionalParams: {},
+        // 当前操作按钮信息
+        currentButton: null,
       }
     },
     computed: {
@@ -173,15 +297,11 @@
     methods: {
       // 根据 currentNode 和 currentStatus 设置活动标签页
       setActiveTab() {
-        // 如果 currentNode 是 'sdshenhe' 并且 currentStatus 是 '审核中',显示成本审核标签页
-        if (
-          this.currentNode === 'sdshenhe' &&
-          this.currentStatus === '审核中'
-        ) {
+        if (this.currentNode === 'sdsh' && this.currentStatus === '审核中') {
           this.activeTab = 'costAudit'
         } else if (this.currentNode === 'clcs') {
           // 如果 currentNode 是 'clcs',显示成本调查表标签页
-          this.activeTab = 'costSurvey'
+          this.activeTab = 'submitData'
         } else if (
           this.currentNode === 'yjgaozhi' ||
           this.currentNode === 'yjfk'
@@ -230,37 +350,129 @@
         this.$emit('update:visible', true)
       },
       // 处理审核操作按钮点击
-      async handleAuditPass(item) {
+      handleAuditPass(item) {
+        this.additionalParams = {
+          content: '',
+          sendType: [], // 默认选中站内消息和短信通知
+        }
+        this.currentButton = item // 保存当前按钮信息
+        console.log('点击的按钮数据:', item)
+        const key = Number(item.key)
+        if (key === 1) {
+          this.showSupplementDialog = true
+        } else if (key === 2) {
+          // 中止监审
+          this.showAbortDialog = true
+        } else if (key === 4) {
+          // 初审退回
+          this.showRejectDialog = true
+        } else {
+          // 添加确认对话框
+          this.$confirm(
+            `确定要执行"${this.currentButton.value}"操作吗?`,
+            '操作确认',
+            {
+              confirmButtonText: '确定',
+              cancelButtonText: '取消',
+              type: 'warning',
+            }
+          )
+            .then(() => {
+              this.executeAuditOperation()
+            })
+            .catch(() => {
+              // 用户取消操作
+              this.$message.info('已取消操作')
+            })
+        }
+      },
+
+      // 执行审核操作
+      async executeAuditOperation() {
         if (!this.id) {
           this.$message.error('缺少任务ID')
           return
         }
-
+        if (!this.currentButton) {
+          this.$message.error('操作失败:缺少按钮信息')
+          return
+        }
         try {
           const params = {
             taskId: this.id,
-            ...(this.currentNode &&
-              this.currentNode.trim() !== '' && {
-                processNodeKey:
-                  this.currentNode === 'ccls' ? 'clcs' : this.currentNode,
-              }),
-            // 根据按钮项传递其他必要参数
-            ...item,
+            processNodeKey: this.currentNode,
+            key: this.currentButton.key,
+            sendType: this.additionalParams.sendType?.join(','),
+            content: this.additionalParams.content,
           }
 
           const response = await doProcessBtn(params)
 
           if (response && response.code === 200) {
-            this.$message.success(item.value + '操作成功')
-            // 关闭弹窗
+            this.$message.success(this.currentButton.value + '操作成功')
+            // 关闭所有弹窗
+            this.showSupplementDialog = false
+            this.showAbortDialog = false
+            this.showRejectDialog = false
+            // 关闭主弹窗
             this.handleClose()
             // 触发父组件刷新列表
             this.$emit('refresh')
           } else {
-            this.$message.error(response?.message || item.value + '操作失败')
+            this.$message.error(
+              response?.message || this.currentButton.value + '操作失败'
+            )
           }
         } catch (error) {
-          this.$message.error(item.value + '操作失败')
+          this.$message.error(this.currentButton.value + '操作失败')
+        }
+      },
+
+      // 提交补充资料
+      submitSupplement() {
+        if (
+          !this.additionalParams.content ||
+          !this.additionalParams.content.trim()
+        ) {
+          this.$message.error('请输入补充意见')
+          return
+        }
+        if (this.currentButton) {
+          this.executeAuditOperation(this.currentButton)
+        } else {
+          this.$message.error('操作失败:缺少按钮信息')
+        }
+      },
+
+      // 提交中止监审
+      submitAbort() {
+        if (
+          !this.additionalParams.content ||
+          !this.additionalParams.content.trim()
+        ) {
+          this.$message.error('请输入中止意见')
+          return
+        }
+        if (this.currentButton) {
+          this.executeAuditOperation(this.currentButton)
+        } else {
+          this.$message.error('操作失败:缺少按钮信息')
+        }
+      },
+
+      // 提交初审退回
+      submitReject() {
+        if (
+          !this.additionalParams.content ||
+          !this.additionalParams.content.trim()
+        ) {
+          this.$message.error('请输入退回意见')
+          return
+        }
+        if (this.currentButton) {
+          this.executeAuditOperation(this.currentButton)
+        } else {
+          this.$message.error('操作失败:缺少按钮信息')
         }
       },
     },
@@ -305,4 +517,37 @@
   .audit-tabs .el-tab-pane {
     height: 100%;
   }
+
+  /* 弹窗样式 */
+  .dialog-content {
+    padding: 10px 0;
+  }
+
+  .form-item {
+    margin-bottom: 20px;
+  }
+
+  .form-label {
+    display: inline-block;
+    width: 100px;
+    text-align: right;
+    margin-right: 0;
+    color: #606266;
+    vertical-align: middle;
+  }
+
+  .form-item .el-checkbox-group {
+    display: inline-block;
+    margin-left: 10px;
+  }
+
+  .form-item .el-checkbox {
+    margin-right: 20px;
+    vertical-align: middle;
+  }
+
+  .form-item .el-input__inner {
+    width: calc(100% - 115px);
+    margin-left: 115px;
+  }
 </style>

+ 5 - 1
src/views/costAudit/auditInfo/auditManage/extractMaterial.vue

@@ -24,7 +24,11 @@
         width="55"
         align="center"
       ></el-table-column> -->
-      <el-table-column prop="id" label="编号" width="80"></el-table-column>
+      <el-table-column prop="id" label="编号" width="80">
+        <template slot-scope="scope">
+          {{ scope.$index + 1 }}
+        </template>
+      </el-table-column>
       <el-table-column
         prop="materialName"
         label="材料名称"

+ 89 - 7
src/views/costAudit/auditInfo/auditManage/index.vue

@@ -91,9 +91,9 @@
                 任务详情
               </el-button>
               <el-button
-                v-if="scope.row.currentNode === 'sdshenhe'"
+                v-if="scope.row.currentNode === 'jtsy'"
                 type="text"
-                @click="handleOpenDetails(scope.row)"
+                @click="handleOpenMainDetails(scope.row)"
               >
                 任务办理
               </el-button>
@@ -105,7 +105,8 @@
               <el-button
                 v-if="
                   scope.row.currentNode === 'clcs' &&
-                  scope.row.status === '审核中'
+                  (scope.row.status === '审核中' ||
+                    scope.row.status === '补充材料')
                 "
                 type="text"
                 @click="handleOpenDetails(scope.row)"
@@ -114,7 +115,7 @@
               </el-button>
               <el-button
                 v-if="
-                  (scope.row.currentNode === 'sdshenhe' ||
+                  (scope.row.currentNode === 'sdsh' ||
                     scope.row.currentNode === 'yjfk') &&
                   scope.row.status === '审核中'
                 "
@@ -125,7 +126,7 @@
               </el-button>
               <el-button
                 v-if="
-                  scope.row.currentNode === 'yjgaozhi' &&
+                  scope.row.currentNode === 'yjgz' &&
                   scope.row.status === '审核中'
                 "
                 type="text"
@@ -143,6 +144,19 @@
               >
                 审核
               </el-button>
+              <el-button
+                v-if="scope.row.status === '中止'"
+                type="text"
+                @click="handleHf(scope.row)"
+              >
+                恢复
+              </el-button>
+              <el-button
+                type="text"
+                @click="handleMessage(scope.row, 'chengben')"
+              >
+                查看
+              </el-button>
             </span>
           </template>
         </el-table-column>
@@ -169,18 +183,33 @@
       @close="handleDetailsClose"
       @refresh="handleRefresh"
     />
+    <!-- 主详情弹窗组件 -->
+    <mainDetailsDialog
+      :id="selectedProject && selectedProject.id"
+      ref="mainDetailsRef"
+      :visible.sync="mainDetailsVisible"
+      :current-node="selectedProject && selectedProject.currentNode"
+      :current-status="selectedProject && selectedProject.status"
+      @close="handleMainDetailsClose"
+      @refresh="handleMainRefresh"
+    />
+    <taskInfo ref="taskInfo" />
   </div>
 </template>
-
 <script>
+  import { doProcessBtn } from '@/api/dataPreliminaryReview'
   import detailsDialog from './details.vue'
+  import mainDetailsDialog from './mainDetails.vue'
   import taskMixins from './taskMixins.js'
   // 成本监审任务列表API
   import { getReviewTaskList } from '@/api/audit/auditIndex'
+  import taskInfo from '@/components/task/taskInfo.vue'
   export default {
     name: 'CostAuditManagement',
     components: {
       detailsDialog,
+      taskInfo,
+      mainDetailsDialog,
     },
     mixins: [taskMixins],
     data() {
@@ -257,6 +286,9 @@
                       currentNode: child.currentNode,
                       status: child.status,
                       isSubTask: true,
+                      projectId: child.projectId,
+                      auditedUnitId: child.auditedUnitId,
+                      taskId: child.id,
                     }))
                   : [],
               }
@@ -319,7 +351,11 @@
         this.selectedProject = project
         this.detailsVisible = true
       },
-
+      handleOpenMainDetails(project) {
+        console.log('project', project)
+        this.selectedProject = project
+        this.mainDetailsVisible = true
+      },
       // 详情弹窗关闭处理
       handleDetailsClose() {
         this.selectedProject = null
@@ -342,6 +378,48 @@
         })
       },
 
+      // 恢复任务
+      async handleHf(row) {
+        if (!row || !row.id) {
+          this.$message.error('缺少任务ID')
+          return
+        }
+
+        // 弹出确认对话框
+        this.$confirm('确定要恢复此任务吗?', '恢复任务', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning',
+        })
+          .then(async () => {
+            try {
+              const params = {
+                taskId: row.id,
+                key: 2,
+                status: 200,
+                processNodeKey: row.currentNode,
+              }
+
+              const response = await doProcessBtn(params)
+
+              if (response && response.code === 200) {
+                this.$message.success('恢复任务成功')
+                // 刷新列表
+                this.loadAuditProjectList()
+              } else {
+                this.$message.error(response?.message || '恢复任务失败')
+              }
+            } catch (error) {
+              this.$message.error('恢复任务失败')
+              console.error('恢复任务失败:', error)
+            }
+          })
+          .catch(() => {
+            // 用户取消操作
+            this.$message.info('已取消恢复任务')
+          })
+      },
+
       // 分页处理
       handleSizeChange(size) {
         this.pageSize = size
@@ -352,6 +430,10 @@
         this.currentPage = current
         this.loadAuditProjectList()
       },
+      // 查看
+      handleMessage(row, type) {
+        this.$refs.taskInfo.open(row, type)
+      },
     },
   }
 </script>

+ 308 - 0
src/views/costAudit/auditInfo/auditManage/mainDetails.vue

@@ -0,0 +1,308 @@
+<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"></el-tab-pane>
+        <el-tab-pane label="集体审议" name="costSurvey"></el-tab-pane>
+        <el-tab-pane
+          v-if="currentNode !== 'clcs'"
+          label="出具结论"
+          name="costAudit"
+        ></el-tab-pane>
+      </el-tabs>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+  import {
+    getDataPreliminaryReviewButton,
+    doProcessBtn,
+  } from '@/api/dataPreliminaryReview'
+  export default {
+    name: 'Details',
+    components: {},
+    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', // 默认选中报送资料标签页
+        // 弹窗显示状态
+        showSupplementDialog: false,
+        showAbortDialog: false,
+        showRejectDialog: false,
+        // 弹窗数据
+        additionalParams: {},
+        // 当前操作按钮信息
+        currentButton: null,
+      }
+    },
+    computed: {
+      dialogTitle() {
+        // 根据节点类型设置标题
+        if (
+          this.currentNode === 'sdshenhe' &&
+          this.currentStatus === '审核中'
+        ) {
+          return '审核详情'
+        } else if (this.currentNode === 'clcs') {
+          return '成本调查详情'
+        } else if (
+          this.currentNode === 'yjgaozhi' ||
+          this.currentNode === 'yjfk'
+        ) {
+          return '意见告知'
+        }
+        return '成本审核详情'
+      },
+    },
+    watch: {
+      visible(newVal) {
+        // 监听visible变化,弹窗打开时设置标签页并获取按钮数据
+        if (newVal && this.id) {
+          // 使用 $nextTick 确保 props 已更新
+          this.$nextTick(() => {
+            // 设置标签页
+            this.setActiveTab()
+            // 弹窗打开时,无论什么情况都要获取资料初审按钮数据
+            this.getPreliminaryReviewButton()
+          })
+        }
+      },
+      // 监听currentNode变化,如果弹窗已打开,更新标签页并重新获取按钮数据
+      currentNode(newVal, oldVal) {
+        if (this.visible && this.id && newVal && newVal !== oldVal) {
+          this.$nextTick(() => {
+            // 设置标签页
+            this.setActiveTab()
+            // 重新获取按钮数据
+            this.getPreliminaryReviewButton()
+          })
+        }
+      },
+      // 监听currentStatus变化,如果弹窗已打开,更新标签页并重新获取按钮数据
+      currentStatus(newVal, oldVal) {
+        if (this.visible && this.id && newVal && newVal !== oldVal) {
+          this.$nextTick(() => {
+            // 设置标签页
+            this.setActiveTab()
+            // 重新获取按钮数据
+            this.getPreliminaryReviewButton()
+          })
+        }
+      },
+      // 监听id变化,如果弹窗已打开,重新获取按钮数据
+      id(newVal) {
+        if (this.visible && newVal) {
+          this.$nextTick(() => {
+            // 设置标签页
+            this.setActiveTab()
+            // 获取按钮数据
+            this.getPreliminaryReviewButton()
+          })
+        }
+      },
+    },
+    mounted() {
+      // 设置标签页
+      this.setActiveTab()
+      // 如果组件挂载时弹窗已打开且有id,也要获取按钮数据
+      if (this.visible && this.id) {
+        this.$nextTick(() => {
+          // 弹窗打开时,无论什么情况都要获取资料初审按钮数据
+          this.getPreliminaryReviewButton()
+        })
+      }
+    },
+    methods: {
+      // 根据 currentNode 和 currentStatus 设置活动标签页
+      setActiveTab() {},
+      // 获取资料初审按钮
+      async getPreliminaryReviewButton() {
+        // 直接从 props 获取 currentNode,确保是最新的值
+        const currentNode = this.currentNode
+
+        // 构建参数对象
+        const params = {
+          taskId: this.id,
+        }
+
+        // 只有当 currentNode 有值时才添加 processNodeKey
+        if (currentNode && currentNode.trim() !== '') {
+          params.processNodeKey = currentNode === 'ccls' ? 'clcs' : currentNode
+        }
+
+        try {
+          const response = await getDataPreliminaryReviewButton(params)
+          this.buttonData = response.value || []
+        } catch (error) {
+          this.buttonData = []
+        }
+      },
+      handleClose() {
+        // 关闭弹窗时触发事件
+        this.$emit('update:visible', false)
+        this.$emit('close')
+      },
+      // 处理审核意见保存成功后的刷新
+      handleAuditOpinionRefresh() {
+        // 触发父组件刷新列表
+        this.$emit('refresh')
+      },
+      open() {
+        // 打开弹窗方法,供父组件通过ref调用
+        this.$emit('update:visible', true)
+      },
+      // 处理审核操作按钮点击
+      handleAuditPass(item) {},
+
+      // 执行审核操作
+      async executeAuditOperation() {
+        if (!this.id) {
+          this.$message.error('缺少任务ID')
+          return
+        }
+        if (!this.currentButton) {
+          this.$message.error('操作失败:缺少按钮信息')
+          return
+        }
+        try {
+          const params = {
+            taskId: this.id,
+            processNodeKey: this.currentNode,
+            key: this.currentButton.key,
+            sendType: this.additionalParams.sendType?.join(','),
+            content: this.additionalParams.content,
+          }
+
+          const response = await doProcessBtn(params)
+
+          if (response && response.code === 200) {
+            this.$message.success(this.currentButton.value + '操作成功')
+            // 关闭所有弹窗
+            this.showSupplementDialog = false
+            this.showAbortDialog = false
+            this.showRejectDialog = false
+            // 关闭主弹窗
+            this.handleClose()
+            // 触发父组件刷新列表
+            this.$emit('refresh')
+          } else {
+            this.$message.error(
+              response?.message || this.currentButton.value + '操作失败'
+            )
+          }
+        } catch (error) {
+          this.$message.error(this.currentButton.value + '操作失败')
+        }
+      },
+    },
+  }
+</script>
+
+<style scoped>
+  .btn-group {
+    margin-bottom: 20px;
+    margin-left: 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%;
+  }
+
+  /* 弹窗样式 */
+  .dialog-content {
+    padding: 10px 0;
+  }
+
+  .form-item {
+    margin-bottom: 20px;
+  }
+
+  .form-label {
+    display: inline-block;
+    width: 100px;
+    text-align: right;
+    margin-right: 0;
+    color: #606266;
+    vertical-align: middle;
+  }
+
+  .form-item .el-checkbox-group {
+    display: inline-block;
+    margin-left: 10px;
+  }
+
+  .form-item .el-checkbox {
+    margin-right: 20px;
+    vertical-align: middle;
+  }
+
+  .form-item .el-input__inner {
+    width: calc(100% - 115px);
+    margin-left: 115px;
+  }
+</style>

+ 109 - 0
src/views/costAudit/auditInfo/auditManage/messageNotify.vue

@@ -0,0 +1,109 @@
+<template>
+  <div>
+    <el-table style="width: 100%; margin-top: 20px" border :data="formData">
+      <el-table-column prop="id" label="序号" width="120" align="center">
+        <template slot-scope="scope">
+          {{ scope.$index + 1 }}
+        </template>
+      </el-table-column>
+      <el-table-column
+        prop="noticeTitle"
+        label="消息主题"
+        width="200"
+        align="center"
+      ></el-table-column>
+      <el-table-column
+        prop="noticeSource"
+        label="消息来源"
+        width="150"
+        align="center"
+      ></el-table-column>
+      <el-table-column
+        prop="noticeContent"
+        label="消息内容"
+        min-width="350"
+        align="center"
+      ></el-table-column>
+      <el-table-column
+        prop="createTime"
+        label="发送时间"
+        width="230"
+        align="center"
+      ></el-table-column>
+    </el-table>
+    <el-pagination
+      background
+      layout="total, sizes, prev, pager, next"
+      :current-page="pagination.currentPage"
+      :page-sizes="[10, 20, 30, 50]"
+      :page-size="pagination.pageSize"
+      :total="pagination.total"
+      style="margin-top: 20px; text-align: right"
+      @current-change="$emit('handle-page-change', $event)"
+      @size-change="$emit('handle-size-change', $event)"
+    />
+  </div>
+</template>
+<script>
+  import { sendMessage } from '@/api/auditTaskProcessing'
+  export default {
+    name: 'MessageNoticeTab',
+    props: {
+      id: {
+        type: String,
+        default: '',
+      },
+      formData: {
+        type: Array,
+        default: () => [],
+      },
+      pagination: {
+        type: Object,
+        default: () => ({ currentPage: 1, pageSize: 10, total: 0 }),
+      },
+    },
+    mounted() {
+      this.getNoticeList()
+    },
+    methods: {
+      // 获取消息通知列表
+      async getNoticeList() {
+        if (!this.id) {
+          return
+        }
+        this.$emit('update:loading', true)
+        const params = {
+          taskId: this.id,
+          pageNum: this.pagination.currentPage,
+          pageSize: this.pagination.pageSize,
+        }
+        try {
+          const res = await sendMessage(params)
+          console.log('消息通知', res)
+          if (res && res.code === 200 && res.value) {
+            this.$emit('update:formData', res.value.records || [])
+            this.$emit('update:pagination', {
+              ...this.pagination,
+              total: res.value.total || 0,
+            })
+          } else {
+            this.$emit('update:formData', [])
+            this.$emit('update:pagination', {
+              ...this.pagination,
+              total: 0,
+            })
+          }
+        } catch (err) {
+          console.error('获取消息通知失败', err)
+          this.$emit('update:formData', [])
+          this.$emit('update:pagination', {
+            ...this.pagination,
+            total: 0,
+          })
+        } finally {
+          this.$emit('update:loading', false)
+        }
+      },
+    },
+  }
+</script>

+ 40 - 247
src/views/costAudit/auditInfo/auditManage/submitData.vue

@@ -47,10 +47,10 @@
           <template slot-scope="scope">
             <span
               :style="{
-                color: scope.row.isUploaded ? '#67C23A' : '#F56C6C',
+                color: scope.row.isUpload === '1' ? '#67C23A' : '#F56C6C',
               }"
             >
-              {{ scope.row.isUploaded ? '已上传' : '未上传' }}
+              {{ scope.row.isUpload === '1' ? '已上传' : '未上传' }}
             </span>
           </template>
         </el-table-column>
@@ -65,26 +65,30 @@
           <template slot-scope="scope">
             <span
               :class="{
-                'result-pass': scope.row.auditedStatus === '通过',
-                'result-fail': scope.row.auditedStatus === '不通过',
+                'result-pending':
+                  !scope.row.auditedStatus || scope.row.auditedStatus === '0',
+                'result-pass': scope.row.auditedStatus === '1',
+                'result-fail': scope.row.auditedStatus === '2',
               }"
             >
-              {{ scope.row.auditedStatus || '-' }}
+              {{
+                !scope.row.auditedStatus || scope.row.auditedStatus === '0'
+                  ? '未审核'
+                  : scope.row.auditedStatus === '1'
+                  ? '通过'
+                  : '不通过'
+              }}
             </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 === '已上传'
-              "
-            >
+            <template v-if="scope.row.isUpload === '1'">
               <el-button
-                v-if="!scope.row.auditedStatus || scope.row.auditedStatus === 0"
+                v-if="
+                  scope.row.auditedStatus === '0' &&
+                  scope.row.currentNode === 'clcs'
+                "
                 type="text"
                 size="small"
                 @click="handleAuditMaterial(scope.row)"
@@ -104,70 +108,14 @@
       </el-table>
     </div>
 
-    <!-- 初审退回弹窗 -->
-    <el-dialog
-      title="初审退回"
-      :visible.sync="showRejectDialog"
-      width="400px"
-      center
-    >
-      <el-form ref="rejectForm" :model="rejectForm" label-width="80px">
-        <el-form-item label="退回意见">
-          <el-input
-            v-model="rejectForm.opinion"
-            type="textarea"
-            :rows="4"
-            placeholder="请输入退回意见"
-          ></el-input>
-        </el-form-item>
-        <el-form-item label="发送方式">
-          <el-checkbox-group v-model="rejectForm.sendMethods">
-            <el-checkbox label="站内消息"></el-checkbox>
-            <el-checkbox label="短信通知"></el-checkbox>
-          </el-checkbox-group>
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="showRejectDialog = false">取消</el-button>
-        <el-button type="primary" @click="handleRejectSubmit">发送</el-button>
-      </div>
-    </el-dialog>
-
-    <!-- 中止监审弹窗 -->
-    <el-dialog
-      title="中止监审"
-      :visible.sync="showAbortDialog"
-      width="400px"
-      center
-    >
-      <el-form ref="abortForm" :model="abortForm" label-width="80px">
-        <el-form-item label="中止意见">
-          <el-input
-            v-model="abortForm.opinion"
-            type="textarea"
-            :rows="4"
-            placeholder="请输入中止意见"
-          ></el-input>
-        </el-form-item>
-        <el-form-item label="发送方式">
-          <el-checkbox-group v-model="abortForm.sendMethods">
-            <el-checkbox label="站内消息"></el-checkbox>
-            <el-checkbox label="短信通知"></el-checkbox>
-          </el-checkbox-group>
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="showAbortDialog = false">取消</el-button>
-        <el-button type="primary" @click="handleAbortSubmit">发送</el-button>
-      </div>
-    </el-dialog>
-
     <!-- 资料审核弹窗 -->
     <el-dialog
       title="资料审核"
       :visible.sync="showAuditDialog"
       width="400px"
       center
+      :modal="false"
+      append-to-body
     >
       <div class="audit-material-info">
         <p>
@@ -180,8 +128,8 @@
       <el-form ref="auditForm" :model="auditForm" label-width="80px">
         <el-form-item label="审核结果" prop="auditedStatus">
           <el-radio-group v-model="auditForm.auditedStatus">
-            <el-radio label="通过">审核通过</el-radio>
-            <el-radio label="不通过">审核拒绝</el-radio>
+            <el-radio label="1">审核通过</el-radio>
+            <el-radio label="2">不通过</el-radio>
           </el-radio-group>
         </el-form-item>
       </el-form>
@@ -193,6 +141,20 @@
   </div>
 </template>
 
+<style scoped>
+  .result-pending {
+    color: #909399;
+  }
+
+  .result-pass {
+    color: #67c23a;
+  }
+
+  .result-fail {
+    color: #f56c6c;
+  }
+</style>
+
 <script>
   import {
     getTaskRequirementList,
@@ -222,13 +184,11 @@
         showRejectDialog: false, // 初审退回弹窗显示状态
         showAbortDialog: false, // 中止监审弹窗显示状态
         loading: false, // 加载状态
-
         // 初审退回表单数据
         rejectForm: {
           opinion: '在初审阶段,需补充完善相关材料。',
           sendMethods: ['站内消息', '短信通知'],
         },
-
         // 中止监审表单数据
         abortForm: {
           opinion:
@@ -244,75 +204,10 @@
         auditForm: {
           auditedStatus: '通过', // 默认审核通过
         },
-
         // 报送资料表格数据
         materialData: [],
         // 按类型分组的材料数据
         materialCategories: [],
-
-        // 成本调查表表格数据
-        costSurveyData: [
-          {
-            id: 1,
-            name: '封面',
-            type: '模板定制',
-            formType: '单记录',
-            required: '是',
-            uploaded: '已上传',
-            uploadTime: '2025-4-28 11:20',
-            auditResult: '通过',
-          },
-          {
-            id: 2,
-            name: '企业基本情况调查表',
-            type: '模板定制',
-            formType: '固定表',
-            required: '是',
-            uploaded: '已上传',
-            uploadTime: '2025-4-28 11:20',
-            auditResult: '通过',
-          },
-          {
-            id: 3,
-            name: '企业成本费用调查表',
-            type: '模板定制',
-            formType: '固定表',
-            required: '是',
-            uploaded: '已上传',
-            uploadTime: '2025-4-28 11:20',
-            auditResult: '通过',
-          },
-          {
-            id: 4,
-            name: '企业期间费用调查表',
-            type: '模板定制',
-            formType: '动态表',
-            required: '是',
-            uploaded: '已上传',
-            uploadTime: '2025-4-28 11:20',
-            auditResult: '通过',
-          },
-          {
-            id: 5,
-            name: '企业职工薪酬调查表',
-            type: '模板定制',
-            formType: '动态表',
-            required: '是',
-            uploaded: '已上传',
-            uploadTime: '2025-4-28 11:20',
-            auditResult: '不通过',
-          },
-          {
-            id: 6,
-            name: '企业资产负债调查表',
-            type: '模板定制',
-            formType: '动态表',
-            required: '是',
-            uploaded: '已上传',
-            uploadTime: '2025-4-28 11:20',
-            auditResult: '不通过',
-          },
-        ],
       }
     },
     watch: {
@@ -324,26 +219,11 @@
         }
       },
     },
-    mounted() {
-      if (this.id) {
-        this.getPreliminaryReviewButton()
-        this.loadMaterialData()
-      }
+    created() {
+      this.loadMaterialData()
     },
+    mounted() {},
     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
-      },
       // 加载报送资料数据
       async loadMaterialData() {
         try {
@@ -364,22 +244,6 @@
           this.loading = false
         }
       },
-      // 加载成本调查表数据(模拟异步加载)
-      async loadCostSurveyData() {
-        try {
-          this.loading = true
-          // 模拟网络请求延迟
-          await new Promise((resolve) => setTimeout(resolve, 500))
-          // 这里可以添加实际的API调用逻辑
-          // 目前使用已有的静态数据
-        } catch (error) {
-          console.error('获取成本调查表数据失败:', error)
-          this.$message.error('获取成本调查表数据失败')
-        } finally {
-          this.loading = false
-        }
-      },
-
       // 处理材料数据按类型分组
       processMaterialData() {
         // 确保 materialData 存在且为数组
@@ -387,15 +251,12 @@
           this.materialCategories = []
           return
         }
-
         const typeMap = {
           1: '综合性资料',
           2: '财务会计资料',
           3: '其他资料',
         }
-
         const groupedData = {}
-
         this.materialData.forEach((item) => {
           const type = item.informationType
           if (!groupedData[type]) {
@@ -407,7 +268,6 @@
           }
           groupedData[type].items.push(item)
         })
-
         // 按指定顺序排列并为每个分类下的材料重新分配序号
         this.materialCategories = []
         ;['1', '2', '3'].forEach((type) => {
@@ -420,7 +280,6 @@
           }
         })
       },
-
       // 获取格式类型
       getFormatType(formatRequired) {
         const formatMap = {
@@ -459,81 +318,22 @@
             this.$message({ type: 'info', message: '已取消操作' })
           })
       },
-
-      // 初审退回提交
-      handleRejectSubmit() {
-        if (!this.rejectForm.opinion.trim()) {
-          this.$message.error('请输入退回意见')
-          return
-        }
-
-        if (!this.rejectForm.sendMethods.length) {
-          this.$message.error('请选择发送方式')
-          return
-        }
-
-        this.$confirm('确定要退回吗?', '提示', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          type: 'warning',
-        })
-          .then(() => {
-            // 这里可以添加初审退回的API调用逻辑
-            this.$message({ type: 'success', message: '初审退回操作已提交' })
-            this.showRejectDialog = false
-          })
-          .catch(() => {
-            this.$message({ type: 'info', message: '已取消操作' })
-          })
-      },
-
-      // 中止监审提交
-      handleAbortSubmit() {
-        if (!this.abortForm.opinion.trim()) {
-          this.$message.error('请输入中止意见')
-          return
-        }
-
-        if (!this.abortForm.sendMethods.length) {
-          this.$message.error('请选择发送方式')
-          return
-        }
-
-        this.$confirm('确定要中止监审吗?此操作不可撤销。', '警告', {
-          confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          type: 'error',
-        })
-          .then(() => {
-            // 这里可以添加中止监审的API调用逻辑
-            this.$message({ type: 'success', message: '中止监审操作已提交' })
-            this.showAbortDialog = false
-          })
-          .catch(() => {
-            this.$message({ type: 'info', message: '已取消操作' })
-          })
-      },
-
       // 查看下载文件
       handleViewDownload(row) {
         this.$message.info(`查看下载文件:${row.name}`)
         // 这里可以添加查看下载文件的逻辑
       },
-
       // 查看报表
       handleViewReport(row) {
         this.$message.info(`查看报表:${row.name}`)
         // 这里可以添加查看报表的逻辑
       },
-
       // 处理资料审核点击事件
       handleAuditMaterial(row) {
         this.currentAuditMaterial = { ...row } // 复制当前行数据
         this.auditForm = {
           auditedStatus:
-            this.currentAuditMaterial.auditResult === '通过'
-              ? '通过'
-              : '不通过',
+            this.currentAuditMaterial.auditStatus === '1' ? '通过' : '不通过',
           auditOpinion: '',
         }
         this.showAuditDialog = true
@@ -563,16 +363,9 @@
           this.loading = false
         }
       },
-
-      // 返回上一页
-      handleBack() {
-        // this.$router.back();
-        this.$emit('handleBack')
-      },
     },
   }
 </script>
-
 <style scoped>
   .audit-review {
     padding: 5px;

+ 6 - 2
src/views/costAudit/auditInfo/auditManage/workDraft.vue

@@ -20,8 +20,12 @@
       style="width: 100%; margin-top: 20px"
       border
     >
-      <el-table-column type="selection" width="55"></el-table-column>
-      <el-table-column prop="id" label="序号" width="80"></el-table-column>
+      <!-- <el-table-column type="selection" width="55"></el-table-column> -->
+      <el-table-column prop="id" label="序号" width="80">
+        <template slot-scope="scope">
+          {{ scope.$index + 1 }}
+        </template>
+      </el-table-column>
       <el-table-column
         prop="auditSubject"
         label="核增核减科目"

+ 3 - 3
src/views/costAudit/projectInfo/auditTaskManage/taskProgressManage/conclusionTab.vue

@@ -102,7 +102,7 @@
 <script>
   import { getConclusionDetail } from '@/api/taskProgressManage'
   export default {
-    name: 'Conclusion',
+    name: 'ConclusionTab',
     props: {
       project: {
         type: Object,
@@ -128,10 +128,10 @@
       }
     },
     mounted() {
-      this.getConclusionDetail()
+      this.getConclusionDetails()
     },
     methods: {
-      getConclusionDetail() {
+      getConclusionDetails() {
         getConclusionDetail({
           projectId: this.project.projectId,
         }).then((res) => {