shiyanyu 1 mese fa
parent
commit
20ee3f5a12

+ 7 - 1
src/views/EntDeclaration/auditTaskManagement/components/CostSurveyTab.vue

@@ -79,7 +79,13 @@
         label="是否必填"
         width="100"
         align="center"
-      ></el-table-column>
+      >
+        <template slot-scope="scope">
+          <span>
+            {{ scope.row.isRequired === '1' ? '是' : '否' }}
+          </span>
+        </template>
+      </el-table-column>
 
       <!-- 是否上传列(红色“未上传”、绿色“已上传”) -->
       <el-table-column label="是否上传" width="100" align="center">

+ 60 - 0
src/views/EntDeclaration/auditTaskManagement/taskFillIn.vue

@@ -237,6 +237,7 @@
         <div slot="footer" class="dialog-footer">
           <el-button
             type="primary"
+            :loading="loading.materialSubmit"
             :disabled="isViewMode"
             @click="handleMaterialSubmit"
           >
@@ -350,6 +351,7 @@
         loading: {
           submit: false,
           save: false,
+          materialSubmit: false,
         },
         // 标签页加载状态
         tabLoading: {
@@ -1065,6 +1067,57 @@
       },
       // 提交
       handleSubmit() {
+        // 验证必填的报送资料(仅在 clcs 或 tjcl 节点时验证)
+        if (this.currentNode === 'clcs' || this.currentNode === 'tjcl') {
+          // 验证报送资料必填项
+          const requiredItems = this.formData.dataRequirements.filter(
+            (item) => {
+              // 只检查非类别标题行的数据项
+              if (item.isCategoryHeader) {
+                return false
+              }
+              // 只检查是否为必填项
+              const isRequired =
+                item.isRequired === '1' || item.isRequired === 1
+              return isRequired
+            }
+          )
+
+          if (requiredItems.length > 0) {
+            // 获取必填项名称列表
+            const itemNames = requiredItems
+              .map((item) => item.informationName || '未命名资料')
+              .join('、')
+            Message.warning(
+              `有必填数据必须先填完,请先完成以下报送资料:${itemNames}`
+            )
+            return
+          }
+
+          // 验证成本调查表必填项
+          const requiredCostSurveys = this.formData.costSurveyData.filter(
+            (item) => {
+              // 只检查是否为必填项
+              const isRequired =
+                item.isRequired === '1' ||
+                item.isRequired === 1 ||
+                item.isRequired === '是'
+              return isRequired
+            }
+          )
+
+          if (requiredCostSurveys.length > 0) {
+            // 获取必填项名称列表
+            const itemNames = requiredCostSurveys
+              .map((item) => item.name || '未命名调查表')
+              .join('、')
+            Message.warning(
+              `有必填数据必须先填完,请先完成以下成本调查表:${itemNames}`
+            )
+            return
+          }
+        }
+
         this.loading.submit = true
 
         // 判断是否为监审意见提交(currentNode === 'yjfk')
@@ -1435,6 +1488,8 @@
       handleMaterialSubmit() {
         this.$refs.materialForm.validate((valid) => {
           if (valid) {
+            // 设置 loading 状态
+            this.loading.materialSubmit = true
             // 这里可以添加提交逻辑
             console.log('补充材料表单数据:', this.materialForm)
             addOrUpdateTaskRequirement({
@@ -1449,6 +1504,7 @@
               .then((res) => {
                 console.log('补充材料提交成功', res)
                 if (res && res.code === 200) {
+                  this.loading.materialSubmit = false
                   Message.success('补充材料提交成功')
                   this.materialDialogVisible = false
                   this.resetMaterialForm()
@@ -1461,6 +1517,10 @@
                 console.error('补充材料提交失败', err)
                 Message.error('补充材料提交失败')
               })
+              .finally(() => {
+                // 重置 loading 状态
+                this.loading.materialSubmit = false
+              })
           } else {
             Message.error('请完善表单信息')
             return false

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

@@ -147,7 +147,7 @@
         type: String,
         default: '',
       },
-      status: {
+      currentStatus: {
         type: String,
         default: '',
       },
@@ -179,11 +179,11 @@
     computed: {
       // 判断初步意见是否需要置灰(currentNode === 'yjfk' && status === '已反馈')
       isPreliminaryDisabled() {
-        return this.currentNode === 'yjfk' && this.status === '已反馈'
+        return this.currentNode === 'yjfk' && this.currentStatus === '已反馈'
       },
       // 判断结论意见是否可编辑(currentNode === 'yjfk' && status === '已反馈')
       isConclusionEditable() {
-        return this.currentNode === 'yjfk' && this.status === '已反馈'
+        return this.currentNode === 'yjfk' && this.currentStatus === '已反馈'
       },
     },
     watch: {

+ 14 - 1
src/views/costAudit/auditInfo/auditManage/collectiveMain.vue

@@ -4,7 +4,7 @@
       <div class="collective-header-left">
         <span>集体审议</span>
       </div>
-      <div class="collective-header-right">
+      <div v-if="isEditable" class="collective-header-right">
         <el-button type="primary" @click="handlePrint">补充资料</el-button>
         <el-button type="primary" @click="handleAddRecord">新增记录</el-button>
       </div>
@@ -64,6 +64,7 @@
           </template>
         </el-table-column>
         <el-table-column
+          v-if="isEditable"
           label="操作"
           width="120"
           header-align="center"
@@ -352,6 +353,18 @@
         type: String,
         default: '',
       },
+      projectName: {
+        type: String,
+        default: '',
+      },
+      auditObject: {
+        type: String,
+        default: '',
+      },
+      isEditable: {
+        type: Boolean,
+        default: true,
+      },
     },
     data() {
       return {

+ 10 - 1
src/views/costAudit/auditInfo/auditManage/conclusionMain.vue

@@ -11,7 +11,7 @@
         <div class="collective-header-left">
           <span>出具结论</span>
         </div>
-        <div class="collective-header-right">
+        <div v-if="isEditable" class="collective-header-right">
           <el-button type="primary" @click="handleSave">保存</el-button>
         </div>
       </div>
@@ -27,6 +27,7 @@
               placeholder="填写(非必填)"
               class="form-textarea"
               rows="4"
+              :disabled="!isEditable"
             ></el-input>
           </div>
         </div>
@@ -41,6 +42,7 @@
               placeholder="填写(非必填)"
               class="form-textarea"
               rows="4"
+              :disabled="!isEditable"
             ></el-input>
           </div>
         </div>
@@ -55,6 +57,7 @@
               placeholder="填写(非必填)"
               class="form-textarea"
               rows="4"
+              :disabled="!isEditable"
             ></el-input>
           </div>
         </div>
@@ -69,6 +72,7 @@
               placeholder="填写(非必填)"
               class="form-textarea highlight-textarea"
               rows="4"
+              :disabled="!isEditable"
             ></el-input>
           </div>
         </div>
@@ -83,6 +87,7 @@
               placeholder="填写(非必填)"
               class="form-textarea"
               rows="4"
+              :disabled="!isEditable"
             ></el-input>
           </div>
         </div>
@@ -125,6 +130,10 @@
         type: String,
         default: '',
       },
+      isEditable: {
+        type: Boolean,
+        default: true,
+      },
     },
     data() {
       return {

+ 12 - 2
src/views/costAudit/auditInfo/auditManage/mainDetails.vue

@@ -28,17 +28,26 @@
             :current-status="currentStatus"
           />
         </el-tab-pane>
-        <el-tab-pane label="集体审议" name="costSurvey">
+        <el-tab-pane
+          v-if="
+            currentNode === 'jtsy' ||
+            currentNode === 'cjbg' ||
+            currentNode === 'gd'
+          "
+          label="集体审议"
+          name="costSurvey"
+        >
           <collectiveMain
             :id="id"
             :current-node="currentNode"
             :current-status="currentStatus"
             :project-name="projectName"
             :audit-object="auditObject"
+            :is-editable="currentNode === 'jtsy'"
           />
         </el-tab-pane>
         <el-tab-pane
-          v-if="currentNode !== 'clcs'"
+          v-if="currentNode === 'cjbg' || currentNode === 'gd'"
           label="出具结论"
           name="costAudit"
         >
@@ -47,6 +56,7 @@
             :active="activeTab === 'costAudit'"
             :current-node="currentNode"
             :current-status="currentStatus"
+            :is-editable="currentNode === 'cjbg'"
             @saved="handleConclusionSaved"
           />
         </el-tab-pane>