Procházet zdrojové kódy

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	package-lock.json
zzw před 2 měsíci
rodič
revize
e71fa87d00

+ 41 - 31
package-lock.json

@@ -1581,14 +1581,37 @@
       }
     },
     "@types/express": {
-      "version": "5.0.4",
-      "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.4.tgz",
-      "integrity": "sha512-g64dbryHk7loCIrsa0R3shBnEu5p6LPJ09bu9NG58+jz+cRUjFrc3Bz0kNQ7j9bXeCsrRDvNET1G54P/GJkAyA==",
+      "version": "5.0.5",
+      "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.5.tgz",
+      "integrity": "sha512-LuIQOcb6UmnF7C1PCFmEU1u2hmiHL43fgFQX67sN3H4Z+0Yk0Neo++mFsBjhOAuLzvlQeqAAkeDOZrJs9rzumQ==",
       "dev": true,
       "requires": {
         "@types/body-parser": "*",
         "@types/express-serve-static-core": "^5.0.0",
-        "@types/serve-static": "*"
+        "@types/serve-static": "^1"
+      },
+      "dependencies": {
+        "@types/send": {
+          "version": "0.17.6",
+          "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz",
+          "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==",
+          "dev": true,
+          "requires": {
+            "@types/mime": "^1",
+            "@types/node": "*"
+          }
+        },
+        "@types/serve-static": {
+          "version": "1.15.10",
+          "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz",
+          "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==",
+          "dev": true,
+          "requires": {
+            "@types/http-errors": "*",
+            "@types/node": "*",
+            "@types/send": "<1"
+          }
+        }
       }
     },
     "@types/express-serve-static-core": {
@@ -1754,26 +1777,13 @@
       }
     },
     "@types/serve-static": {
-      "version": "1.15.10",
-      "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz",
-      "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==",
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz",
+      "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==",
       "dev": true,
       "requires": {
         "@types/http-errors": "*",
-        "@types/node": "*",
-        "@types/send": "<1"
-      },
-      "dependencies": {
-        "@types/send": {
-          "version": "0.17.6",
-          "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz",
-          "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==",
-          "dev": true,
-          "requires": {
-            "@types/mime": "^1",
-            "@types/node": "*"
-          }
-        }
+        "@types/node": "*"
       }
     },
     "@types/source-list-map": {
@@ -6715,9 +6725,9 @@
       "dev": true
     },
     "electron-to-chromium": {
-      "version": "1.5.240",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.240.tgz",
-      "integrity": "sha512-OBwbZjWgrCOH+g6uJsA2/7Twpas2OlepS9uvByJjR2datRDuKGYeD+nP8lBBks2qnB7bGJNHDUx7c/YLaT3QMQ==",
+      "version": "1.5.241",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.241.tgz",
+      "integrity": "sha512-ILMvKX/ZV5WIJzzdtuHg8xquk2y0BOGlFOxBVwTpbiXqWIH0hamG45ddU4R3PQ0gYu+xgo0vdHXHli9sHIGb4w==",
       "dev": true
     },
     "element-resize-detector": {
@@ -10975,9 +10985,9 @@
       "dev": true
     },
     "launch-editor": {
-      "version": "2.11.1",
-      "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.11.1.tgz",
-      "integrity": "sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg==",
+      "version": "2.12.0",
+      "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz",
+      "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==",
       "dev": true,
       "requires": {
         "picocolors": "^1.1.1",
@@ -10985,12 +10995,12 @@
       }
     },
     "launch-editor-middleware": {
-      "version": "2.11.1",
-      "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.11.1.tgz",
-      "integrity": "sha512-6xpn4pJz5mDg2kUH7L6gK5BuZcZPdVwoSs/DhfebefwLyszNXqFFjksGup/w4CTRzzrr8FSEufDzb/gKFLle6w==",
+      "version": "2.12.0",
+      "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.12.0.tgz",
+      "integrity": "sha512-SgU5QWoR+Grq1sQedvS/RlfoyO6bdvrztpP+2RRg8UzE7Jz2Yup5J4jiFfm2J9dYBCQYD26AbJVbjnvgwdL6Pw==",
       "dev": true,
       "requires": {
-        "launch-editor": "^2.11.1"
+        "launch-editor": "^2.12.0"
       }
     },
     "levn": {

+ 11 - 4
public/config.js

@@ -1,10 +1,14 @@
 // var host = window.location.protocol + '//' + window.location.hostname
 // 当前后端不在同一个服务器时,需要指定host地址
-// var host = 'http://10.7.13.26'
-var host = 'http://localhost'
+// var host = 'http://10.7.13.26' // 以前
+// var host = 'http://116.204.117.33' //基本用这个
+// var host = 'http://101.33.208.140' // 测试
+var host = 'https://forty-mugs-stop.loca.lt/' // 测试
+// var host = 'http://localhost'
 // combine为true时五合一部署, 为false时分五个服务部署
 var combine = true
-var gateway = '8280/stage-api'
+// var gateway = '8280/stage-api'
+var gateway = '9506/stage-api'
 var defaultModulePortMap = {
   form: gateway +'/form',
   portal: gateway +'/portal',
@@ -16,7 +20,10 @@ var defaultModulePortMap = {
 }
 window.getModuleRootUrl = function (module) {
   // 默认是全部服务合一的端口
-  var modulePort = '8089'
+  // var modulePort = '8089' // 以前
+  // var modulePort = '9506' // 基本用这个
+  // var modulePort = '8088' //测试
+  var modulePort = ''
   if (!combine) {
     modulePort = defaultModulePortMap[module]
   }

+ 9 - 0
src/router/index.js

@@ -318,6 +318,15 @@ export const constantRoutes = [
         meta: { title: '填报任务' },
         props: true,
       },
+      // 在线填报页面
+      {
+        path: '/EntDeclaration/auditTaskManagement/onlineFill',
+        name: 'onlineFill',
+        component: () =>
+          import('@/views/EntDeclaration/auditTaskManagement/OnlineFill.vue'),
+        meta: { title: '在线填报' },
+        props: true,
+      },
     ],
   },
   {

+ 1370 - 0
src/views/EntDeclaration/auditTaskManagement/OnlineFill.vue

@@ -0,0 +1,1370 @@
+<template>
+  <el-dialog
+    title="在线填报"
+    :visible.sync="dialogVisible"
+    width="90%"
+    :close-on-click-modal="false"
+    top="5vh"
+    @close="handleClose"
+  >
+    <div class="online-fill-container">
+      <!-- 主要内容区域 -->
+      <div class="main-content">
+        <!-- 单记录类型 -->
+        <div v-if="tableType === '单记录'" class="form-section">
+          <el-card>
+            <!-- <div slot="header" class="card-header">
+            <span>{{ surveyData.name }}</span>
+          </div> -->
+            <el-form
+              ref="singleRecordForm"
+              :model="singleRecordForm"
+              :rules="singleRecordRules"
+              label-width="120px"
+            >
+              <el-form-item label="机构名称" prop="institutionName">
+                <el-input
+                  v-model="singleRecordForm.institutionName"
+                  placeholder="请输入机构名称"
+                  style="width: 400px"
+                ></el-input>
+              </el-form-item>
+              <el-form-item label="机构性质" prop="institutionNature">
+                <el-select
+                  v-model="singleRecordForm.institutionNature"
+                  placeholder="请选择机构性质"
+                  style="width: 400px"
+                >
+                  <el-option label="公办" value="公办"></el-option>
+                  <el-option label="民办" value="民办"></el-option>
+                  <el-option label="混合所有制" value="混合所有制"></el-option>
+                </el-select>
+              </el-form-item>
+              <el-form-item label="机构评定等级" prop="institutionLevel">
+                <el-select
+                  v-model="singleRecordForm.institutionLevel"
+                  placeholder="请选择机构评定等级"
+                  style="width: 400px"
+                >
+                  <el-option label="一级" value="一级"></el-option>
+                  <el-option label="二级" value="二级"></el-option>
+                  <el-option label="三级" value="三级"></el-option>
+                  <el-option label="未评定" value="未评定"></el-option>
+                </el-select>
+              </el-form-item>
+              <el-form-item label="机构办学方式" prop="educationMode">
+                <el-select
+                  v-model="singleRecordForm.educationMode"
+                  placeholder="请选择机构办学方式"
+                  style="width: 400px"
+                >
+                  <el-option label="全日制" value="全日制"></el-option>
+                  <el-option label="非全日制" value="非全日制"></el-option>
+                  <el-option label="混合制" value="混合制"></el-option>
+                </el-select>
+              </el-form-item>
+              <el-form-item label="机构地址" prop="institutionAddress">
+                <el-input
+                  v-model="singleRecordForm.institutionAddress"
+                  placeholder="请输入机构地址"
+                  style="width: 400px"
+                ></el-input>
+              </el-form-item>
+              <el-form-item label="机构财务负责人" prop="financialManager">
+                <el-input
+                  v-model="singleRecordForm.financialManager"
+                  placeholder="请输入机构财务负责人"
+                  style="width: 400px"
+                ></el-input>
+              </el-form-item>
+              <el-form-item label="机构填表人" prop="formFiller">
+                <el-input
+                  v-model="singleRecordForm.formFiller"
+                  placeholder="请输入机构填表人"
+                  style="width: 400px"
+                ></el-input>
+              </el-form-item>
+            </el-form>
+            <div class="form-actions">
+              <el-button @click="handleCancel">取消</el-button>
+              <el-button type="primary" @click="handleSave">保存</el-button>
+              <el-button type="success" @click="handleSubmit">提交</el-button>
+            </div>
+          </el-card>
+        </div>
+
+        <!-- 固定表类型 -->
+        <div v-if="tableType === '固定表'" class="table-section">
+          <el-card>
+            <div slot="header" class="card-header">
+              <span>{{ surveyData.name }}</span>
+              <el-button type="primary" size="small" @click="handleAddFixedRow">
+                新增行
+              </el-button>
+            </div>
+            <el-table :data="fixedTableData" border style="width: 100%">
+              <el-table-column
+                prop="seq"
+                label="序号"
+                width="80"
+                align="center"
+              >
+                <template slot-scope="scope">
+                  {{ scope.$index + 1 }}
+                </template>
+              </el-table-column>
+              <el-table-column prop="project" label="项目" min-width="200">
+                <template slot-scope="scope">
+                  <el-input
+                    v-model="scope.row.project"
+                    placeholder="请输入项目名称"
+                  ></el-input>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="unit"
+                label="单位"
+                width="120"
+                align="center"
+              >
+                <template slot-scope="scope">
+                  <el-input
+                    v-model="scope.row.unit"
+                    placeholder="单位"
+                  ></el-input>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="dynamicYear"
+                label="动态年份"
+                width="120"
+                align="center"
+              >
+                <template slot-scope="scope">
+                  <el-date-picker
+                    v-model="scope.row.dynamicYear"
+                    type="year"
+                    placeholder="选择年份"
+                    size="mini"
+                  ></el-date-picker>
+                </template>
+              </el-table-column>
+              <el-table-column prop="remark" label="备注" min-width="200">
+                <template slot-scope="scope">
+                  <el-input
+                    v-model="scope.row.remark"
+                    placeholder="请输入备注"
+                  ></el-input>
+                </template>
+              </el-table-column>
+              <el-table-column label="操作" width="100" align="center">
+                <template slot-scope="scope">
+                  <el-button
+                    type="text"
+                    size="small"
+                    @click="handleDeleteFixedRow(scope.$index)"
+                  >
+                    删除
+                  </el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+            <div class="form-actions">
+              <el-button @click="handleCancel">取消</el-button>
+              <el-button type="primary" @click="handleSave">保存</el-button>
+              <el-button type="success" @click="handleSubmit">提交</el-button>
+            </div>
+          </el-card>
+        </div>
+
+        <!-- 动态表类型 -->
+        <div v-if="tableType === '动态表'" class="table-section">
+          <el-card>
+            <div slot="header" class="card-header">
+              <!-- <span>{{ surveyData.name }}</span> -->
+              <div>
+                <el-button
+                  type="primary"
+                  size="small"
+                  @click="handleAddDynamicRow"
+                >
+                  新增
+                </el-button>
+                <el-button
+                  type="danger"
+                  size="small"
+                  :disabled="selectedRows.length === 0"
+                  @click="handleBatchDelete"
+                >
+                  批量删除
+                </el-button>
+              </div>
+            </div>
+            <el-table
+              :data="dynamicTableData"
+              border
+              style="width: 100%"
+              @selection-change="handleSelectionChange"
+            >
+              <el-table-column
+                type="selection"
+                width="55"
+                align="center"
+              ></el-table-column>
+              <el-table-column
+                prop="seq"
+                label="序号"
+                width="80"
+                align="center"
+              >
+                <template slot-scope="scope">
+                  {{ scope.$index + 1 }}
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="auditPeriod"
+                label="监审期间"
+                min-width="200"
+              >
+                <template slot-scope="scope">
+                  {{ scope.row.auditPeriod }}
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="fillTime"
+                label="填报时间"
+                width="150"
+                align="center"
+              >
+                <template slot-scope="scope">
+                  {{ scope.row.fillTime }}
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="lastModifyTime"
+                label="最后修改时间"
+                width="150"
+                align="center"
+              >
+                <template slot-scope="scope">
+                  {{ scope.row.lastModifyTime }}
+                </template>
+              </el-table-column>
+              <el-table-column label="操作" width="200" align="center">
+                <template slot-scope="scope">
+                  <el-button
+                    type="text"
+                    size="small"
+                    @click="handleViewDetail(scope.row)"
+                  >
+                    详情
+                  </el-button>
+                  <el-button
+                    type="text"
+                    size="small"
+                    @click="handleEdit(scope.row)"
+                  >
+                    编辑
+                  </el-button>
+                  <el-button
+                    type="text"
+                    size="small"
+                    @click="handleDelete(scope.row)"
+                  >
+                    删除
+                  </el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+            <div class="form-actions">
+              <el-button @click="handleCancel">取消</el-button>
+              <el-button type="primary" @click="handleSave">保存</el-button>
+              <el-button type="success" @click="handleSubmit">提交</el-button>
+            </div>
+          </el-card>
+        </div>
+      </div>
+    </div>
+
+    <!-- 详情弹窗 -->
+    <el-dialog
+      title="详情"
+      :visible.sync="detailDialogVisible"
+      width="90%"
+      :append-to-body="true"
+      :modal-append-to-body="false"
+      :close-on-click-modal="false"
+    >
+      <div v-if="currentDetail" class="detail-content">
+        <!-- 固定资产表格 - 只读模式 -->
+        <div class="fixed-assets-table">
+          <el-table
+            :data="flattenedTableData"
+            border
+            style="width: 100%"
+            size="small"
+          >
+            <el-table-column prop="seq" label="序号" width="80" align="center">
+              <template slot-scope="scope">
+                {{ scope.row.seq }}
+              </template>
+            </el-table-column>
+
+            <el-table-column prop="name" label="项目" min-width="150">
+              <template slot-scope="scope">
+                <span v-if="scope.row.isCategory" class="category-name">
+                  {{ scope.row.name }}
+                </span>
+                <span v-else>{{ scope.row.name }}</span>
+              </template>
+            </el-table-column>
+
+            <el-table-column
+              prop="unit"
+              label="计量单位"
+              width="120"
+              align="center"
+            >
+              <template slot-scope="scope">
+                <span v-if="!scope.row.isCategory">{{ scope.row.unit }}</span>
+              </template>
+            </el-table-column>
+
+            <el-table-column
+              prop="originalValue"
+              label="固定资产原值"
+              width="150"
+              align="center"
+            >
+              <template slot-scope="scope">
+                <span v-if="!scope.row.isCategory">
+                  {{ scope.row.originalValue }}
+                </span>
+              </template>
+            </el-table-column>
+
+            <el-table-column
+              prop="entryDate"
+              label="入帐或竣工验收日期"
+              width="180"
+              align="center"
+            >
+              <template slot-scope="scope">
+                <span v-if="!scope.row.isCategory">
+                  {{ scope.row.entryDate }}
+                </span>
+              </template>
+            </el-table-column>
+
+            <el-table-column
+              prop="depreciationPeriod"
+              label="折旧年限"
+              width="120"
+              align="center"
+            >
+              <template slot-scope="scope">
+                <span v-if="!scope.row.isCategory">
+                  {{ scope.row.depreciationPeriod }}
+                </span>
+              </template>
+            </el-table-column>
+
+            <el-table-column
+              prop="depreciationExpense"
+              label="折旧费"
+              width="120"
+              align="center"
+            >
+              <template slot-scope="scope">
+                <span v-if="!scope.row.isCategory">
+                  {{ scope.row.depreciationExpense }}
+                </span>
+              </template>
+            </el-table-column>
+
+            <el-table-column
+              prop="fundSource"
+              label="资金来源"
+              width="120"
+              align="center"
+            >
+              <template slot-scope="scope">
+                <span v-if="!scope.row.isCategory">
+                  {{ scope.row.fundSource }}
+                </span>
+              </template>
+            </el-table-column>
+
+            <el-table-column prop="remark" label="备注" min-width="150">
+              <template slot-scope="scope">
+                <span v-if="!scope.row.isCategory">{{ scope.row.remark }}</span>
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+      </div>
+    </el-dialog>
+
+    <!-- 编辑弹窗 -->
+    <el-dialog
+      title="编辑"
+      :visible.sync="editDialogVisible"
+      width="90%"
+      :append-to-body="true"
+      :modal-append-to-body="false"
+      :close-on-click-modal="false"
+    >
+      <!-- 固定资产表格 -->
+      <div class="fixed-assets-table">
+        <el-table
+          :data="flattenedTableData"
+          border
+          style="width: 100%"
+          size="small"
+        >
+          <el-table-column prop="seq" label="序号" width="80" align="center">
+            <template slot-scope="scope">
+              {{ scope.row.seq }}
+            </template>
+          </el-table-column>
+
+          <el-table-column prop="name" label="项目" min-width="150">
+            <template slot-scope="scope">
+              <el-input
+                v-if="!scope.row.isCategory"
+                v-model="scope.row.name"
+                placeholder="请输入项目名称"
+                size="mini"
+              ></el-input>
+              <span v-else class="category-name">{{ scope.row.name }}</span>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            prop="unit"
+            label="计量单位"
+            width="120"
+            align="center"
+          >
+            <template slot-scope="scope">
+              <el-input
+                v-if="!scope.row.isCategory"
+                v-model="scope.row.unit"
+                placeholder="单位"
+                size="mini"
+              ></el-input>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            prop="originalValue"
+            label="固定资产原值"
+            width="150"
+            align="center"
+          >
+            <template slot-scope="scope">
+              <el-input
+                v-if="!scope.row.isCategory"
+                v-model="scope.row.originalValue"
+                placeholder="原值"
+                size="mini"
+              ></el-input>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            prop="entryDate"
+            label="入帐或竣工验收日期"
+            width="180"
+            align="center"
+          >
+            <template slot-scope="scope">
+              <el-date-picker
+                v-if="!scope.row.isCategory"
+                v-model="scope.row.entryDate"
+                type="date"
+                placeholder="选择日期"
+                size="mini"
+                format="yyyy-MM-dd"
+                value-format="yyyy-MM-dd"
+              ></el-date-picker>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            prop="depreciationPeriod"
+            label="折旧年限"
+            width="120"
+            align="center"
+          >
+            <template slot-scope="scope">
+              <el-input
+                v-if="!scope.row.isCategory"
+                v-model="scope.row.depreciationPeriod"
+                placeholder="年限"
+                size="mini"
+              ></el-input>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            prop="depreciationExpense"
+            label="折旧费"
+            width="120"
+            align="center"
+          >
+            <template slot-scope="scope">
+              <el-input
+                v-if="!scope.row.isCategory"
+                v-model="scope.row.depreciationExpense"
+                placeholder="费用"
+                size="mini"
+              ></el-input>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            prop="fundSource"
+            label="资金来源"
+            width="120"
+            align="center"
+          >
+            <template slot-scope="scope">
+              <el-input
+                v-if="!scope.row.isCategory"
+                v-model="scope.row.fundSource"
+                placeholder="来源"
+                size="mini"
+              ></el-input>
+            </template>
+          </el-table-column>
+
+          <el-table-column prop="remark" label="备注" min-width="150">
+            <template slot-scope="scope">
+              <el-input
+                v-if="!scope.row.isCategory"
+                v-model="scope.row.remark"
+                placeholder="备注"
+                size="mini"
+              ></el-input>
+            </template>
+          </el-table-column>
+
+          <el-table-column label="操作" width="100" align="center">
+            <template slot-scope="scope">
+              <div v-if="!scope.row.isCategory" class="operation-buttons">
+                <el-button
+                  type="text"
+                  size="mini"
+                  icon="el-icon-plus"
+                  @click="handleAddRow(scope.row)"
+                ></el-button>
+                <el-button
+                  type="text"
+                  size="mini"
+                  icon="el-icon-minus"
+                  @click="handleDeleteRow(scope.row)"
+                ></el-button>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+
+      <div class="form-actions">
+        <el-button @click="editDialogVisible = false">取消</el-button>
+        <el-button type="primary" @click="handleEditSave">确定</el-button>
+      </div>
+    </el-dialog>
+  </el-dialog>
+</template>
+
+<script>
+  import { Message } from 'element-ui'
+
+  export default {
+    name: 'OnlineFillDialog',
+    props: {
+      visible: {
+        type: Boolean,
+        default: false,
+      },
+      tableType: {
+        type: String,
+        default: '单记录',
+      },
+      surveyData: {
+        type: Object,
+        default: () => ({}),
+      },
+    },
+    data() {
+      return {
+        dialogVisible: false,
+
+        // 单记录表单数据
+        singleRecordForm: {
+          institutionName: '',
+          institutionNature: '',
+          institutionLevel: '',
+          educationMode: '',
+          institutionAddress: '',
+          financialManager: '',
+          formFiller: '',
+        },
+        singleRecordRules: {
+          institutionName: [
+            { required: true, message: '请输入机构名称', trigger: 'blur' },
+          ],
+          institutionNature: [
+            { required: true, message: '请选择机构性质', trigger: 'change' },
+          ],
+          institutionLevel: [
+            {
+              required: true,
+              message: '请选择机构评定等级',
+              trigger: 'change',
+            },
+          ],
+          educationMode: [
+            {
+              required: true,
+              message: '请选择机构办学方式',
+              trigger: 'change',
+            },
+          ],
+          institutionAddress: [
+            { required: true, message: '请输入机构地址', trigger: 'blur' },
+          ],
+          financialManager: [
+            {
+              required: true,
+              message: '请输入机构财务负责人',
+              trigger: 'blur',
+            },
+          ],
+          formFiller: [
+            { required: true, message: '请输入机构填表人', trigger: 'blur' },
+          ],
+        },
+
+        // 固定表数据
+        fixedTableData: [
+          {
+            project: '',
+            unit: '',
+            dynamicYear: null,
+            remark: '',
+          },
+        ],
+
+        // 动态表数据
+        dynamicTableData: [
+          {
+            auditPeriod: '2023年1月-2023年12月',
+            fillTime: '2023-12-01 10:00:00',
+            lastModifyTime: '2023-12-01 10:00:00',
+            detail: '固定资产表格数据',
+          },
+        ],
+
+        // 选中的行
+        selectedRows: [],
+
+        // 弹窗控制
+        detailDialogVisible: false,
+        editDialogVisible: false,
+        currentDetail: null,
+
+        // 编辑表单
+        editForm: {
+          auditPeriod: '',
+          detail: '',
+        },
+        editRules: {
+          auditPeriod: [
+            { required: true, message: '请输入监审期间', trigger: 'blur' },
+          ],
+          detail: [
+            { required: true, message: '请输入详细信息', trigger: 'blur' },
+          ],
+        },
+
+        // 固定资产表格数据 - 用于弹窗显示
+        fixedAssetsData: [
+          // 房屋建筑物
+          {
+            id: 'I',
+            category: '房屋建筑物',
+            items: [
+              {
+                id: 'I-1',
+                name: '办公用房',
+                unit: '',
+                originalValue: '',
+                entryDate: '',
+                depreciationPeriod: '',
+                depreciationExpense: '',
+                fundSource: '',
+                remark: '',
+              },
+              {
+                id: 'I-2',
+                name: '教保用房',
+                unit: '',
+                originalValue: '',
+                entryDate: '',
+                depreciationPeriod: '',
+                depreciationExpense: '',
+                fundSource: '',
+                remark: '',
+              },
+              {
+                id: 'I-3',
+                name: '幼儿宿舍用房',
+                unit: '',
+                originalValue: '',
+                entryDate: '',
+                depreciationPeriod: '',
+                depreciationExpense: '',
+                fundSource: '',
+                remark: '',
+              },
+              {
+                id: 'I-4',
+                name: '其它',
+                unit: '',
+                originalValue: '',
+                entryDate: '',
+                depreciationPeriod: '',
+                depreciationExpense: '',
+                fundSource: '',
+                remark: '',
+              },
+            ],
+          },
+          // 交通运输工具
+          {
+            id: 'II',
+            category: '交通运输工具',
+            items: [
+              {
+                id: 'II-1',
+                name: '车辆',
+                unit: '',
+                originalValue: '',
+                entryDate: '',
+                depreciationPeriod: '',
+                depreciationExpense: '',
+                fundSource: '',
+                remark: '',
+              },
+            ],
+          },
+          // 教保专用设备
+          {
+            id: 'III',
+            category: '教保专用设备',
+            items: [
+              {
+                id: 'III-1',
+                name: '电教',
+                unit: '',
+                originalValue: '',
+                entryDate: '',
+                depreciationPeriod: '',
+                depreciationExpense: '',
+                fundSource: '',
+                remark: '',
+              },
+              {
+                id: 'III-2',
+                name: '文体',
+                unit: '',
+                originalValue: '',
+                entryDate: '',
+                depreciationPeriod: '',
+                depreciationExpense: '',
+                fundSource: '',
+                remark: '',
+              },
+            ],
+          },
+          // 办公设备
+          {
+            id: 'IV',
+            category: '办公设备',
+            items: [
+              {
+                id: 'IV-1',
+                name: '电脑',
+                unit: '',
+                originalValue: '',
+                entryDate: '',
+                depreciationPeriod: '',
+                depreciationExpense: '',
+                fundSource: '',
+                remark: '',
+              },
+            ],
+          },
+          // 其它固定资产
+          {
+            id: 'V',
+            category: '其它固定资产',
+            items: [
+              {
+                id: 'V-1',
+                name: '空调',
+                unit: '',
+                originalValue: '',
+                entryDate: '',
+                depreciationPeriod: '',
+                depreciationExpense: '',
+                fundSource: '',
+                remark: '',
+              },
+              {
+                id: 'V-2',
+                name: '家电',
+                unit: '',
+                originalValue: '',
+                entryDate: '',
+                depreciationPeriod: '',
+                depreciationExpense: '',
+                fundSource: '',
+                remark: '',
+              },
+              {
+                id: 'V-3',
+                name: '供水系统',
+                unit: '',
+                originalValue: '',
+                entryDate: '',
+                depreciationPeriod: '',
+                depreciationExpense: '',
+                fundSource: '',
+                remark: '',
+              },
+              {
+                id: 'V-4',
+                name: '洗涤用具',
+                unit: '',
+                originalValue: '',
+                entryDate: '',
+                depreciationPeriod: '',
+                depreciationExpense: '',
+                fundSource: '',
+                remark: '',
+              },
+              {
+                id: 'V-5',
+                name: '家具',
+                unit: '',
+                originalValue: '',
+                entryDate: '',
+                depreciationPeriod: '',
+                depreciationExpense: '',
+                fundSource: '',
+                remark: '',
+              },
+              {
+                id: 'V-6',
+                name: '炊事用具',
+                unit: '',
+                originalValue: '',
+                entryDate: '',
+                depreciationPeriod: '',
+                depreciationExpense: '',
+                fundSource: '',
+                remark: '',
+              },
+              {
+                id: 'V-7',
+                name: '其它',
+                unit: '',
+                originalValue: '',
+                entryDate: '',
+                depreciationPeriod: '',
+                depreciationExpense: '',
+                fundSource: '',
+                remark: '',
+              },
+            ],
+          },
+        ],
+      }
+    },
+    computed: {
+      // 将嵌套的表格数据扁平化,用于表格显示
+      flattenedTableData() {
+        const result = []
+        let seq = 1
+
+        this.fixedAssetsData.forEach((category) => {
+          // 添加分类行
+          result.push({
+            seq: category.id,
+            name: category.category,
+            isCategory: true,
+            categoryId: category.id,
+          })
+
+          // 添加分类下的项目行
+          category.items.forEach((item) => {
+            result.push({
+              ...item,
+              seq: seq++,
+              isCategory: false,
+              categoryId: category.id,
+            })
+          })
+        })
+
+        return result
+      },
+    },
+    watch: {
+      visible: {
+        handler(newVal) {
+          this.dialogVisible = newVal
+        },
+        immediate: true,
+      },
+    },
+    methods: {
+      // 关闭弹窗
+      handleClose() {
+        this.$emit('update:visible', false)
+      },
+
+      // 取消
+      handleCancel() {
+        this.handleClose()
+      },
+
+      // 保存
+      handleSave() {
+        if (this.tableType === '单记录') {
+          this.$refs.singleRecordForm.validate((valid) => {
+            if (valid) {
+              console.log('保存单记录数据:', this.singleRecordForm)
+              Message.success('保存成功')
+            } else {
+              Message.error('请完善表单信息')
+              return false
+            }
+          })
+        } else if (this.tableType === '固定表') {
+          console.log('保存固定表数据:', this.fixedTableData)
+          Message.success('保存成功')
+        } else if (this.tableType === '动态表') {
+          // 动态表保存时不进行严格验证
+          console.log('保存动态表数据:', this.dynamicTableData)
+          Message.success('保存成功')
+        }
+      },
+
+      // 提交
+      handleSubmit() {
+        if (this.tableType === '单记录') {
+          this.$refs.singleRecordForm.validate((valid) => {
+            if (valid) {
+              console.log('提交单记录数据:', this.singleRecordForm)
+              Message.success('提交成功')
+              this.handleClose()
+            } else {
+              Message.error('请完善表单信息')
+              return false
+            }
+          })
+        } else if (this.tableType === '固定表') {
+          console.log('提交固定表数据:', this.fixedTableData)
+          Message.success('提交成功')
+          this.handleClose()
+        } else if (this.tableType === '动态表') {
+          // 动态表提交时不进行验证
+          console.log('提交动态表数据:', this.dynamicTableData)
+          Message.success('提交成功')
+          this.handleClose()
+        }
+      },
+
+      // 固定表相关方法
+      handleAddFixedRow() {
+        this.fixedTableData.push({
+          project: '',
+          unit: '',
+          dynamicYear: null,
+          remark: '',
+        })
+      },
+
+      handleDeleteFixedRow(index) {
+        this.$confirm('确定删除该行吗?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning',
+        }).then(() => {
+          this.fixedTableData.splice(index, 1)
+          Message.success('删除成功')
+        })
+      },
+
+      // 固定资产表格相关方法
+      handleAddRow(row) {
+        // 找到对应的分类
+        const category = this.fixedAssetsData.find(
+          (cat) => cat.id === row.categoryId
+        )
+        if (category) {
+          // 生成新的项目ID
+          const newId = `${row.categoryId}-${Date.now()}`
+          const newItem = {
+            id: newId,
+            name: '',
+            unit: '',
+            originalValue: '',
+            entryDate: '',
+            depreciationPeriod: '',
+            depreciationExpense: '',
+            fundSource: '',
+            remark: '',
+          }
+
+          // 在指定行后插入新行
+          const itemIndex = category.items.findIndex(
+            (item) => item.id === row.id
+          )
+          if (itemIndex !== -1) {
+            category.items.splice(itemIndex + 1, 0, newItem)
+          } else {
+            category.items.push(newItem)
+          }
+
+          Message.success('添加行成功')
+        }
+      },
+
+      handleDeleteRow(row) {
+        this.$confirm('确定删除该行吗?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning',
+        }).then(() => {
+          // 找到对应的分类
+          const category = this.fixedAssetsData.find(
+            (cat) => cat.id === row.categoryId
+          )
+          if (category) {
+            const itemIndex = category.items.findIndex(
+              (item) => item.id === row.id
+            )
+            if (itemIndex !== -1) {
+              category.items.splice(itemIndex, 1)
+              Message.success('删除成功')
+            }
+          }
+        })
+      },
+
+      // 动态表相关方法
+      handleAddDynamicRow() {
+        const newRow = {
+          auditPeriod: '',
+          fillTime: new Date().toLocaleString(),
+          lastModifyTime: new Date().toLocaleString(),
+          detail: '',
+        }
+        this.dynamicTableData.unshift(newRow)
+        // 打开编辑弹窗
+        this.handleEdit(newRow)
+      },
+
+      handleBatchDelete() {
+        if (this.selectedRows.length === 0) {
+          Message.warning('请选择要删除的行')
+          return
+        }
+        this.$confirm(
+          `确定删除选中的 ${this.selectedRows.length} 行吗?`,
+          '提示',
+          {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning',
+          }
+        ).then(() => {
+          this.selectedRows.forEach((row) => {
+            const index = this.dynamicTableData.indexOf(row)
+            if (index > -1) {
+              this.dynamicTableData.splice(index, 1)
+            }
+          })
+          this.selectedRows = []
+          Message.success('删除成功')
+        })
+      },
+
+      handleSelectionChange(selection) {
+        this.selectedRows = selection
+      },
+
+      handleViewDetail(row) {
+        // 详情弹窗显示整个表格数据
+        this.currentDetail = this.dynamicTableData
+        this.detailDialogVisible = true
+      },
+
+      handleEdit(row) {
+        // 编辑弹窗显示整个表格数据
+        this.currentDetail = this.dynamicTableData
+        this.editDialogVisible = true
+      },
+
+      handleDelete(row) {
+        this.$confirm('确定删除该行吗?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning',
+        }).then(() => {
+          const index = this.dynamicTableData.indexOf(row)
+          if (index > -1) {
+            this.dynamicTableData.splice(index, 1)
+          }
+          Message.success('删除成功')
+        })
+      },
+
+      handleEditSave() {
+        // 编辑保存逻辑 - 验证固定资产表格
+        const validationErrors = this.validateFixedAssetsTable()
+        if (validationErrors.length > 0) {
+          Message.error('表单验证失败,请检查以下问题:')
+          validationErrors.forEach((error) => {
+            console.error(error)
+          })
+          return false
+        }
+
+        console.log('编辑保存数据:', this.fixedAssetsData)
+        Message.success('编辑保存成功')
+        this.editDialogVisible = false
+      },
+
+      // 表单验证
+      validateFixedAssetsTable() {
+        const errors = []
+
+        this.fixedAssetsData.forEach((category) => {
+          category.items.forEach((item, index) => {
+            const rowNum = index + 1
+
+            // 必填字段验证
+            if (!item.name) {
+              errors.push(
+                `${category.category} 第${rowNum}行:项目名称不能为空`
+              )
+            }
+            if (!item.unit) {
+              errors.push(
+                `${category.category} 第${rowNum}行:计量单位不能为空`
+              )
+            }
+            if (!item.originalValue) {
+              errors.push(
+                `${category.category} 第${rowNum}行:固定资产原值不能为空`
+              )
+            }
+            if (!item.entryDate) {
+              errors.push(
+                `${category.category} 第${rowNum}行:入帐或竣工验收日期不能为空`
+              )
+            }
+            if (!item.depreciationPeriod) {
+              errors.push(
+                `${category.category} 第${rowNum}行:折旧年限不能为空`
+              )
+            }
+            if (!item.depreciationExpense) {
+              errors.push(`${category.category} 第${rowNum}行:折旧费不能为空`)
+            }
+            if (!item.fundSource) {
+              errors.push(
+                `${category.category} 第${rowNum}行:资金来源不能为空`
+              )
+            }
+
+            // 格式验证
+            if (
+              item.originalValue &&
+              !/^\d+(\.\d+)?$/.test(item.originalValue)
+            ) {
+              errors.push(
+                `${category.category} 第${rowNum}行:固定资产原值格式不正确`
+              )
+            }
+            if (
+              item.depreciationPeriod &&
+              !/^\d+$/.test(item.depreciationPeriod)
+            ) {
+              errors.push(
+                `${category.category} 第${rowNum}行:折旧年限必须为正整数`
+              )
+            }
+            if (
+              item.depreciationExpense &&
+              !/^\d+(\.\d+)?$/.test(item.depreciationExpense)
+            ) {
+              errors.push(
+                `${category.category} 第${rowNum}行:折旧费格式不正确`
+              )
+            }
+          })
+        })
+
+        return errors
+      },
+    },
+  }
+</script>
+
+<style scoped lang="scss">
+  .online-fill-container {
+    padding: 20px;
+  }
+
+  .page-header {
+    margin-bottom: 20px;
+
+    h3 {
+      margin: 0;
+      font-size: 20px;
+      font-weight: bold;
+    }
+  }
+
+  .action-buttons {
+    margin-bottom: 20px;
+  }
+
+  .main-content {
+    .form-section,
+    .table-section {
+      margin-bottom: 20px;
+    }
+  }
+
+  .card-header {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+
+    span {
+      font-weight: bold;
+      font-size: 16px;
+    }
+  }
+
+  .form-actions {
+    margin-top: 20px;
+    text-align: right;
+
+    .el-button {
+      margin-left: 10px;
+    }
+  }
+
+  .dialog-footer {
+    text-align: right;
+
+    .el-button {
+      margin-left: 10px;
+    }
+  }
+
+  // 固定资产表格样式
+  .fixed-assets-table {
+    .category-name {
+      font-weight: bold;
+      color: #409eff;
+      background-color: #f5f7fa;
+      padding: 8px;
+      display: block;
+    }
+
+    .operation-buttons {
+      display: flex;
+      justify-content: center;
+      gap: 5px;
+
+      .el-button {
+        padding: 5px;
+        min-width: 24px;
+        height: 24px;
+      }
+    }
+
+    // 分类行样式
+    ::v-deep .el-table__row {
+      &.category-row {
+        background-color: #f5f7fa;
+
+        td {
+          background-color: #f5f7fa !important;
+          font-weight: bold;
+          color: #409eff;
+        }
+      }
+    }
+
+    // 输入框样式
+    ::v-deep .el-input__inner {
+      border: 1px solid #dcdfe6;
+      border-radius: 4px;
+
+      &:focus {
+        border-color: #409eff;
+      }
+    }
+
+    // 日期选择器样式
+    ::v-deep .el-date-editor {
+      width: 100%;
+    }
+  }
+
+  // 详情弹窗样式
+  .detail-content {
+    .fixed-assets-table {
+      .category-name {
+        font-weight: bold;
+        color: #409eff;
+        background-color: #f5f7fa;
+        padding: 8px;
+        display: block;
+      }
+
+      // 只读模式下的样式
+      ::v-deep .el-table__row {
+        &.category-row {
+          background-color: #f5f7fa;
+
+          td {
+            background-color: #f5f7fa !important;
+            font-weight: bold;
+            color: #409eff;
+          }
+        }
+      }
+
+      // 只读文本样式
+      span {
+        display: inline-block;
+        padding: 4px 8px;
+        min-height: 20px;
+        line-height: 20px;
+      }
+    }
+  }
+</style>

+ 192 - 5
src/views/EntDeclaration/auditTaskManagement/taskFillIn.vue

@@ -1,8 +1,8 @@
 <template>
-  <div class="audit-task-manage-container">
+  <div class="audit-task-manage-container" style="padding: 20px">
     <!-- 页面标题 -->
     <div class="page-header">
-      <h3>{{ pageTitle }}</h3>
+      <h2>{{ pageTitle }}</h2>
     </div>
 
     <!-- 操作按钮 -->
@@ -272,6 +272,9 @@
         <!-- 报送资料 -->
         <!-- <el-tab-pane label="报送资料" name="dataRequirements"></el-tab-pane> -->
         <el-tab-pane label="报送资料" name="dataRequirements">
+          <el-button type="primary" @click="handleAddMaterial">
+            补充材料
+          </el-button>
           <el-table
             style="margin-top: 20px"
             border
@@ -324,7 +327,7 @@
                 <template
                   v-for="category in formData.dataRequirements.categories"
                 >
-                  <tr :key="category.categoryId">
+                  <tr :key="`category-${category.categoryId}`">
                     <td
                       colspan="6"
                       style="
@@ -667,13 +670,86 @@
         </el-tab-pane>
       </el-tabs>
     </div>
+
+    <!-- 补充材料弹窗 -->
+    <el-dialog
+      title="补充材料"
+      :visible.sync="materialDialogVisible"
+      width="600px"
+      :close-on-click-modal="false"
+    >
+      <el-form
+        ref="materialForm"
+        :model="materialForm"
+        :rules="materialRules"
+        label-width="100px"
+      >
+        <el-form-item label="资料类别" prop="category">
+          <el-select
+            v-model="materialForm.category"
+            placeholder="请选择资料类别"
+            style="width: 100%"
+          >
+            <el-option
+              v-for="item in materialCategoryOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="资料名称" prop="name">
+          <el-input
+            v-model="materialForm.name"
+            placeholder="请输入资料名称"
+            style="width: 100%"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="资料要求" prop="requirement">
+          <el-upload
+            class="upload-demo"
+            action="#"
+            :on-preview="handleMaterialPreview"
+            :on-remove="handleMaterialRemove"
+            :before-upload="beforeMaterialUpload"
+            :file-list="materialForm.fileList"
+            multiple
+            :limit="5"
+            :on-exceed="handleMaterialExceed"
+          >
+            <el-button size="small" type="primary">选择文件</el-button>
+            <div slot="tip" class="el-upload__tip">
+              只能上传jpg/png/pdf文件,且不超过10MB,最多上传5个文件
+            </div>
+          </el-upload>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="handleMaterialSubmit">
+          保 存
+        </el-button>
+        <el-button @click="handleMaterialCancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <!-- 在线填报弹窗 -->
+    <OnlineFillDialog
+      :visible.sync="onlineFillDialogVisible"
+      :table-type="currentSurveyData ? currentSurveyData.tableType : '单记录'"
+      :survey-data="currentSurveyData || {}"
+    />
   </div>
 </template>
 
 <script>
   import { Message } from 'element-ui'
+  import OnlineFillDialog from './OnlineFill.vue'
+
   export default {
     name: 'TaskFillIn',
+    components: {
+      OnlineFillDialog,
+    },
     data() {
       return {
         // 页面标题
@@ -690,6 +766,14 @@
         formData: {
           basicInfo: {
             projectName: '',
+            source: '', // 立项来源
+            form: '', // 监审形式
+            resource: '', // 是否参加听证
+            desc: '', // 立项理由
+            member: [], // 监审任务组成员
+            otherExpert: '', // 其他专家
+            startDate: '', // 开始日期
+            endDate: '', // 结束日期
           },
           auditDocument: [
             {
@@ -948,11 +1032,39 @@
           children: 'children',
           label: 'label',
         },
+        // 补充材料弹窗相关数据
+        materialDialogVisible: false,
+        materialForm: {
+          category: '',
+          name: '',
+          fileList: [],
+        },
+        materialRules: {
+          category: [
+            { required: true, message: '请选择资料类别', trigger: 'change' },
+          ],
+          name: [
+            { required: true, message: '请输入资料名称', trigger: 'blur' },
+          ],
+        },
+        materialCategoryOptions: [
+          { label: '综合性资料', value: 'comprehensive' },
+          { label: '财务会计资料', value: 'financial' },
+          { label: '其他资料', value: 'other' },
+        ],
+        // 修复未定义的变量
+        value: [], // 监审地区级联选择器的值
+        value3: null, // 年份选择器的值
+
+        // 在线填报弹窗相关数据
+        onlineFillDialogVisible: false,
+        currentSurveyData: null,
       }
     },
     mounted() {
       // 从路由参数中获取 formType
-      const formType = this.$route.params.formType
+      console.log(this.$route.query)
+      const formType = this.$route.query.formType
       if (formType) {
         // 如果有 formType,将 activeTab 设置为 formType
         this.activeTab = formType
@@ -1061,7 +1173,8 @@
       // 在线填报
       handleOnlineFill(row) {
         console.log('在线填报:', row.name)
-        // 实际逻辑:打开在线填报页面/组件
+        this.currentSurveyData = row
+        this.onlineFillDialogVisible = true
       },
       // 修改已上传的表
       handleModify(row) {
@@ -1073,6 +1186,80 @@
         console.log('数据下载:', row.name)
         // 实际逻辑:调用下载接口
       },
+
+      // 补充材料相关方法
+      handleAddMaterial() {
+        this.materialDialogVisible = true
+        this.resetMaterialForm()
+      },
+
+      // 重置补充材料表单
+      resetMaterialForm() {
+        this.materialForm = {
+          category: '',
+          name: '',
+          fileList: [],
+        }
+        if (this.$refs.materialForm) {
+          this.$refs.materialForm.resetFields()
+        }
+      },
+
+      // 补充材料弹窗取消
+      handleMaterialCancel() {
+        this.materialDialogVisible = false
+        this.resetMaterialForm()
+      },
+
+      // 补充材料弹窗确定
+      handleMaterialSubmit() {
+        this.$refs.materialForm.validate((valid) => {
+          if (valid) {
+            // 这里可以添加提交逻辑
+            console.log('补充材料表单数据:', this.materialForm)
+            Message.success('补充材料提交成功')
+            this.materialDialogVisible = false
+            this.resetMaterialForm()
+          } else {
+            Message.error('请完善表单信息')
+            return false
+          }
+        })
+      },
+
+      // 文件上传相关方法
+      handleMaterialPreview(file) {
+        console.log('预览文件:', file)
+      },
+
+      handleMaterialRemove(file, fileList) {
+        console.log('移除文件:', file, fileList)
+        this.materialForm.fileList = fileList
+      },
+
+      beforeMaterialUpload(file) {
+        const isJPG = file.type === 'image/jpeg' || file.type === 'image/png'
+        const isPDF = file.type === 'application/pdf'
+        const isLt10M = file.size / 1024 / 1024 < 10
+
+        if (!isJPG && !isPDF) {
+          Message.error('只能上传 JPG/PNG/PDF 格式的文件!')
+          return false
+        }
+        if (!isLt10M) {
+          Message.error('上传文件大小不能超过 10MB!')
+          return false
+        }
+        return true
+      },
+
+      handleMaterialExceed(files, fileList) {
+        Message.warning(
+          `当前限制选择 5 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
+            files.length + fileList.length
+          } 个文件`
+        )
+      },
     },
   }
 </script>

+ 26 - 5
src/views/EntDeclaration/auditTaskProcessing/index.vue

@@ -92,7 +92,7 @@
           <el-button size="mini" type="text" @click="handleEdit(scope.row)">
             填报任务
           </el-button>
-          <el-button size="mini" type="text" @click="handleDelete(scope.row)">
+          <el-button size="mini" type="text" @click="handleMessage(scope.row)">
             消息通知
           </el-button>
           <!-- <el-button
@@ -200,10 +200,13 @@
 
       // 处理查看
       handleView(row) {
-        this.dialogTitle = '查看项目'
-        this.isView = true
-        this.currentProject = { ...row }
-        this.dialogVisible = true
+        // this.dialogTitle = '查看项目'
+        // this.isView = true
+        // this.currentProject = { ...row }
+        // this.dialogVisible = true
+        this.$router.push({
+          path: '/dataManagement/EntDeclaration/auditTaskManagementProjectInfo',
+        })
       },
 
       handleEstablishDialogClose() {},
@@ -217,6 +220,24 @@
         this.currentPage = val
         // 这里可以添加分页逻辑
       },
+      // 填报任务
+      handleEdit(row) {
+        console.log(row)
+        this.$router.push({
+          path: '/dataManagement/EntDeclaration/auditTaskManagementProjectInfo',
+        })
+      },
+      // 消息通知
+      handleMessage(row) {
+        console.log(row)
+        this.$router.push({
+          path: '/dataManagement/EntDeclaration/auditTaskManagementProjectInfo',
+          query: {
+            id: row.id,
+            formType: 'messageNotice',
+          },
+        })
+      },
     },
   }
 </script>