From 60b9c70340de135adea4f94dec193b8cacf5247e Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期五, 29 十一月 2024 06:54:29 +0800
Subject: [PATCH] 异常项目页面

---
 src/views/projectEngineering/projectLibrary/index.vue                  |   63 ++-
 src/views/projectEngineering/abnormalProject/index.vue                 |  570 +++++++++++++++++++++++++++++++++
 src/views/projectEngineering/abnormalProject/list.js                   |  176 ++++++++++
 src/views/projectEngineering/abnormalProject/components/FileDialog.vue |  204 ++++++++++++
 4 files changed, 987 insertions(+), 26 deletions(-)

diff --git a/src/views/projectEngineering/abnormalProject/components/FileDialog.vue b/src/views/projectEngineering/abnormalProject/components/FileDialog.vue
new file mode 100644
index 0000000..357d39e
--- /dev/null
+++ b/src/views/projectEngineering/abnormalProject/components/FileDialog.vue
@@ -0,0 +1,204 @@
+
+<template>
+  <div>
+    <el-dialog
+      :visible.sync="fileDialogVisible"
+      ref="formDialogRef"
+      width="35%"
+      append-to-body
+      close-on-click-modal
+      @close="closeDialog"
+    >
+      <template slot="title">
+        <span style="padding-bottom: 18px">
+          {{ isImportOrExport ? '璇锋寜鐓ч渶姹傚鍑虹洰鏍囧唴瀹�' : '璇锋寜鐓фā鏉挎牱寮忎笂浼犻」鐩枃浠�' }}
+        </span>
+      </template>
+      <template slot="default">
+        <div v-if="!isImportOrExport" class="dialog-content">
+          <el-upload
+            ref="uploadRef"
+            class="upload-demo"
+            :action="uploadUrl"
+            :limit="1"
+            :accept="accept"
+            :headers="uploadHeaders"
+            :disabled="uploadIsUploading"
+            :on-progress="handleFileUploadProgress"
+            :on-success="handleFileSuccess"
+            :auto-upload="false"
+            drag
+          >
+            <i class="el-icon-upload"></i>
+            <div class="el-upload__text">璇蜂笂浼�<em>Zip</em>鏂囦欢锛屽ぇ灏忓湪<em>100M</em>浠ュ唴</div>
+          </el-upload>
+          <span>浠呭厑璁稿鍏ip鏍煎紡鏂囦欢銆�</span>
+          <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline" @click="handleDownloadFile">涓嬭浇妯℃澘</el-link>
+        </div>
+        <div v-else-if="isImportOrExport" class="dialog-content">
+          <el-button class="export-button" @click="handleDownloadTargetList">瀵煎嚭鐩爣鍒楄〃鍐呭</el-button>
+          <el-button class="export-button">瀵煎嚭鎵�鏈夊垪琛ㄥ唴瀹�</el-button>
+          <el-button class="export-button">瀵煎嚭鐩爣椤圭洰璇︽儏</el-button>
+          <el-button class="export-button">瀵煎嚭鎵�鏈夐」鐩鎯�</el-button>
+        </div>
+      </template>
+      <template slot="footer">
+        <div v-if="!isImportOrExport" class="dialog-footer">
+          <el-button type="primary" @click="submitFileForm">纭� 瀹�</el-button>
+          <el-button @click="closeDialog">鍙� 娑�</el-button>
+        </div>
+        <div v-else-if="isImportOrExport"></div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { globalHeaders } from '@/utils/request';
+import {getToken} from "@/utils/auth";
+
+export default {
+  name: 'FileDialog',
+  props: {
+    isImportOrExport: {
+      type: Boolean,
+      default: false
+    },
+    fileDialogVisible: {
+      type: Boolean,
+      default: false
+    },
+    currentColumns: {
+      type: Array,
+      default: function () {
+        return [];
+      }
+    }
+  },
+  data() {
+    return {
+      uploadRef: null,
+      targetColumn: [],
+      accept: `.zip`,
+      uploadUrl: '/project/import',
+      uploadHeaders: {},
+      uploadIsUploading: false
+    };
+  },
+  methods: {
+    submit() {
+      console.log("瀛愮粍浠秙ubmit")
+    },
+    handleFileUploadProgress() {
+      this.uploadIsUploading = true;
+    },
+    handleFileSuccess(response, file) {
+      this.uploadIsUploading = false;
+      if (this.uploadRef) {
+        this.uploadRef.handleRemove(file);
+      }
+      if (response.code === 200) {
+        this.$emit('fileDialogCancel');
+        this.$message({
+          message: response.msg,
+          type: 'success'
+        });
+      } else {
+        this.$message.error(response.msg);
+      }
+    },
+    handleDownloadFile() {
+      // fetch(`${process.env.VITE_APP_BASE_API}/project/info/export/template`, {
+      //   method: 'GET',
+      //   headers: self.upload.headers
+      // })
+      //   .then(response => response.blob())
+      //   .then(blob => {
+      //     const url = window.URL.createObjectURL(blob);
+      //     const a = document.createElement('a');
+      //     a.style.display = 'none';
+      //     a.href = url;
+      //     a.download = `椤圭洰鏂囦欢妯℃澘_${new Date().getTime()}.zip`;
+      //     document.body.appendChild(a);
+      //     a.click();
+      //     window.URL.revokeObjectURL(url);
+      //   })
+      //   .catch(error => {
+      //     console.error('鏂囦欢涓嬭浇澶辫触:', error);
+      //   });
+
+      const url = process.env.VUE_APP_BASE_API + '/project/info/export/template';
+      axios.post(url, [], { // 鍙戦�佷竴涓┖鏁扮粍鑰屼笉鏄┖瀵硅薄
+        responseType: 'blob', // 鍛婅瘔axios鏈熸湜鏈嶅姟鍣ㄨ繑鍥炵殑鏄痓lob绫诲瀷
+        headers: {
+          'Content-Type': 'application/json',
+          Authorization: "Bearer " + getToken()
+        }
+      })
+        .then(response => {
+          // 澶勭悊鏂囦欢涓嬭浇
+          const blob = new Blob([response.data], { type: 'application/zip' }); // 鎸囧畾MIME绫诲瀷涓簔ip
+          const url = window.URL.createObjectURL(blob);
+          const a = document.createElement('a');
+          a.style.display = 'none';
+          a.href = url;
+          a.download = `椤圭洰鏂囦欢妯℃澘_${new Date().getTime()}.zip`;
+          document.body.appendChild(a);
+          a.click();
+          document.body.removeChild(a);
+          window.URL.revokeObjectURL(url);
+        })
+        .catch(error => {
+          console.error('There was an error!', error);
+        });
+    },
+    submitFileForm() {
+      if (this.uploadRef) {
+        this.uploadRef.submit();
+      }
+    },
+    closeDialog() {
+      this.$emit('fileDialogCancel');
+    },
+    handleDownloadTargetList() {
+      console.log('瀵煎嚭鐩爣鍒楄〃鍐呭', this.currentColumns);
+      this.targetColumn = this.currentColumns.filter(item => item.visible);
+    }
+  },
+  mounted() {
+    this.uploadRef = this.$refs.uploadRef;
+  },
+  created() {
+
+    this.isFileDialogVisible = this.fileDialogVisible;
+  }
+};
+</script>
+
+<style scoped lang="scss">
+.dialog-content {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  flex-direction: column;
+  height: 300px;
+
+  .export-button {
+    margin-left: 0;
+    margin-bottom: 10px;
+  }
+}
+.dialog-footer {
+  display: flex;
+  justify-content: center;
+}
+.upload-demo {
+  width: 100%;
+}
+::v-deep  .el-upload{
+  width: 100%;
+}
+::v-deep .el-upload .el-upload-dragger{
+  width: 100%;
+}
+</style>
diff --git a/src/views/projectEngineering/abnormalProject/index.vue b/src/views/projectEngineering/abnormalProject/index.vue
new file mode 100644
index 0000000..3e8245b
--- /dev/null
+++ b/src/views/projectEngineering/abnormalProject/index.vue
@@ -0,0 +1,570 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryParamsRef" size="small" :inline="true" v-show="showSearch"
+             label-width="68px">
+      <div class="slot">
+        <div class="left-section">
+          <el-form-item label="椤圭洰鍚嶇О" prop="projectName">
+            <el-input
+              style="width: 190px;margin-right: 20px"
+              size="small"
+              v-model="queryParams.projectName"
+              placeholder="璇疯緭鍏ラ」鐩悕绉�"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="椤圭洰浠g爜" prop="projectCode">
+            <el-input
+              style="width: 190px;margin-right: 20px"
+              size="small"
+              v-model="queryParams.projectCode"
+              placeholder="璇疯緭鍏ラ」鐩唬鐮�"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+
+          <el-form-item label="椤圭洰骞撮檺" prop="timeRange">
+            <el-date-picker
+              style="width: 270px"
+              size="small"
+              v-model="timeRange"
+              type="daterange"
+              range-separator="-"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              start-placeholder="寮�濮嬫棩鏈�"
+              end-placeholder="缁撴潫鏃ユ湡"
+              @change="handleQuery"
+              clearable
+            >
+            </el-date-picker>
+          </el-form-item>
+          <el-form-item>
+            <el-button icon="el-icon-search" size="small" @click="handleQuery">鏌ヨ</el-button>
+            <el-button icon="el-icon-refresh" size="small" @click="resetQuery">閲嶇疆</el-button>
+          </el-form-item>
+          <el-popover :value="popoverValue" trigger="click" :width="700" placement="bottom">
+            <span>绛涢�夋潯浠�</span>
+            <el-form ref="moreQueryParamsRef" label-width="68px" label-position="right" :model="queryParams">
+              <el-row>
+                <el-col :span="12">
+                  <el-form-item label="椤圭洰绫诲瀷">
+                    <el-select v-model="queryParams.projectType" clearable placeholder="璇烽�夋嫨" class="select-option"
+                               @change="handleQuery"
+                               size="small">
+                      <el-option v-for="item in dict.type.sys_project_type" :key="item.value" :label="item.label"
+                                 :value="item.value"/>
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                  <el-form-item label="閲嶇偣鍒嗙被">
+                    <el-select v-model="queryParams.importanceType" clearable placeholder="璇烽�夋嫨" class="select-option"
+                               @change="handleQuery">
+                      <el-option v-for="item in dict.type.sys_key_categories" :key="item.value" :label="item.label"
+                                 :value="item.value"/>
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="12">
+                  <el-form-item label="椤圭洰鏍囩">
+                    <el-select v-model="queryParams.tag" clearable placeholder="璇烽�夋嫨" class="select-option"
+                               @change="handleQuery">
+                      <el-option v-for="item in dict.type.sys_project_tags" :key="item.value" :label="item.label"
+                                 :value="item.value"/>
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                  <el-form-item label="椤圭洰鐘舵��">
+                    <el-select v-model="queryParams.projectStatus" :disabled="isProjectCategory" clearable
+                               @change="handleQuery"
+                               placeholder="璇烽�夋嫨" class="select-option">
+                      <el-option v-for="item in dict.type.sys_project_status" :key="item.value" :label="item.label"
+                                 :value="item.value"/>
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="12">
+                  <el-form-item label="椤圭洰鐮�">
+                    <el-select v-model="queryParams.projectColorCode" clearable placeholder="璇烽�夋嫨" class="select-option"
+                               @change="handleQuery">
+                      <el-option v-for="item in dict.type.sys_project_code" :key="item.value" :label="item.label"
+                                 :value="item.value"/>
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                  <el-form-item label="鍏宠仈鐘舵��">
+                    <el-select v-model="queryParams.assignmentStatus" clearable placeholder="璇烽�夋嫨" class="select-option"
+                               @change="handleQuery">
+                      <el-option v-for="item in dict.type.sys_association_status" :key="item.value" :label="item.label"
+                                 :value="item.value"/>
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="12">
+                  <el-form-item label="璧勯噾绫诲瀷">
+                    <el-select v-model="queryParams.investmentType" clearable placeholder="璇烽�夋嫨" class="select-option"
+                               @change="handleQuery">
+                      <el-option v-for="item in dict.type.sys_funding_type" :key="item.value" :label="item.label"
+                                 :value="item.value"/>
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                  <el-form-item label="椤圭洰闃舵">
+                    <el-select v-model="queryParams.projectPhase" clearable placeholder="璇烽�夋嫨" class="select-option"
+                               @change="handleQuery">
+                      <el-option v-for="item in dict.type.sys_project_phases" :key="item.value" :label="item.label"
+                                 :value="item.value"/>
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row>
+                <el-col :span="12">
+                  <el-form-item label="鎶曡祫绫诲埆">
+                    <el-select v-model="queryParams.investType" clearable placeholder="璇烽�夋嫨" class="select-option"
+                               @change="handleQuery">
+                      <el-option v-for="item in dict.type.sys_investment_type" :key="item.value" :label="item.label"
+                                 :value="item.value"/>
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                  <el-form-item label="琛屾斂鍖哄垝">
+                    <el-select v-model="queryParams.area" clearable placeholder="璇烽�夋嫨" class="select-option"
+                               @change="handleQuery">
+                      <el-option v-for="item in dict.type.sys_administrative_divisions" :key="item.value"
+                                 :label="item.label"
+                                 :value="item.value"/>
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+            </el-form>
+            <el-button style="margin-right: 16px; margin-top: 1px; color: #3369ff" slot="reference"
+                       size="small">
+              鏇村绛涙煡鏉′欢
+              <span style="margin-left: 5px">
+                  <el-icon v-if="!popoverValue" class="el-icon-arrow-down"></el-icon>
+                  <el-icon v-else-if="popoverValue" class="el-icon-arrow-up"></el-icon>
+                </span>
+            </el-button>
+          </el-popover>
+        </div>
+        <div class="right-section">
+
+          <VisibilityToolbar
+            v-model:showSearch="showSearch"
+            :columns="defaultColumns"
+            @queryTable="handleQuery"
+            @update:sort="handleUpdateSort"
+            @update:columns="handleUpdateColumns"
+            @update:resetSort="handleResetSort"
+          ></VisibilityToolbar>
+        </div>
+      </div>
+    </el-form>
+
+    <el-table
+      :key="tableKey"
+      ref="elTable"
+      style="margin-top: 20px"
+      v-loading="loading"
+      :data="projectInfoList"
+      @selection-change="handleSelectionChange"
+      height="60vh"
+      sortable="custom"
+      :show-overflow-tooltip="true">
+      <el-table-column type="selection" width="55" align="center"/>
+      <!-- 鍔ㄦ�佸垪 -->
+      <el-table-column
+        v-for="item in columns"
+        v-if="item.visible"
+        :prop="item.id"
+        :label="item.label"
+        :min-width="item.minWidth"
+      >
+        <template slot-scope="scope">
+          <!-- 浣跨敤鍏峰悕鎻掓Ы -->
+          <template v-if="item.slotName">
+            <!-- projectStatus鎻掓Ы -->
+            <template v-if="item.slotName === 'projectStatus'">
+              <dict-tag :options="dict.type.sys_project_status" :value="scope.row.projectStatus"/>
+            </template>
+            <!-- projectColorCode鎻掓Ы -->
+            <template v-if="item.slotName === 'projectColorCode'">
+              <dict-tag :options="dict.type.sys_project_code" :value="scope.row.projectColorCode"/>
+            </template>
+            <!-- projectType鎻掓Ы -->
+            <template v-if="item.slotName === 'projectType'">
+              <dict-tag :options="dict.type.sys_project_type" :value="scope.row.projectType"/>
+            </template>
+            <!-- investType鎻掓Ы -->
+            <template v-if="item.slotName === 'investType'">
+              <dict-tag :options="dict.type.sys_investment_type" :value="scope.row.investType"/>
+            </template>
+            <!-- planStartTime -->
+            <template v-if="item.slotName === 'planStartTime'">
+              {{ scope.row.planStartTime ? scope.row.planStartTime.split('-')[0] + '骞�' : '' }}
+            </template>
+          </template>
+          <!-- 榛樿鏄剧ず -->
+          <span v-else>{{ scope.row[item.id] }}</span>
+        </template>
+      </el-table-column>
+
+      <!-- 鎿嶄綔鍒� -->
+      <el-table-column label="鎿嶄綔" width="140" align="center">
+        <template slot-scope="scope">
+          <el-button
+            size="medium"
+            type="text"
+            icon="el-icon-view"
+            @click="handleDetail(scope.row)"
+          >
+          </el-button>
+          <el-button
+            v-if="isReserve"
+            size="medium"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+          >
+          </el-button>
+          <el-button
+            v-if="isReserve"
+            size="medium"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+          >
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <FileDialog
+      :fileDialogVisible.sync="fileDialogVisible"
+      :isImportOrExport="isImportOrExport"
+      @fileDialogCancel="fileDialogCancel"
+      :currentColumns="columns"
+    />
+  </div>
+</template>
+
+<script>
+import {listProject, getProject, delProject, addProject, updateProject} from "@/api/projectEngineering/projectInfo";
+import {current, currentRest} from '@/views/projectEngineering/projectLibrary/list';
+import FileDialog from '@/views/projectEngineering/projectLibrary/component/FileDialog';
+import Cookies from "js-cookie";
+
+export default {
+  dicts: ['sys_administrative_divisions', 'sys_investment_type', 'sys_project_phases',
+    'sys_funding_type', 'sys_association_status', 'sys_project_status', 'sys_project_code',
+    'sys_project_tags', 'sys_key_categories', 'sys_project_type'],
+  name: "AbnormalProject",
+  components: {
+    FileDialog
+  },
+  data() {
+    return {
+      isImportOrExport: false,
+      fileDialogVisible: false,
+      //鏄惁闇�瑕佹柊澧炴寜閽�(鍌ㄨ搫椤圭洰闇�瑕�)
+      isReserve: false,
+      //椤圭洰鐘舵�佺瓫閫夋潯浠�
+      isProjectCategory: false,
+      //琛ㄥご
+      columns: [],
+      defaultColumns: [],
+      //鎺у埗鏇村绛涢�夋樉闅�
+      popoverValue: false,
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 椤圭洰绠$悊鍩虹淇℃伅琛ㄦ牸鏁版嵁
+      projectInfoList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      tableKey: 0,
+      open: false,
+      timeRange: [],
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        projectCategory: '5',
+        projectName: null,
+        projectCode: null,
+        projectStartTime: null,
+        projectEndTime: null,
+      },
+      moreQueryParams: {
+        projectType: '', // 椤圭洰绫诲瀷
+        importanceType: '', // 閲嶇偣鍒嗙被
+        projectStatus: '', // 椤圭洰鐘舵��
+        projectColorCode: '', // 椤圭洰鐮�
+        investmentType: '', // 璧勯噾绫诲瀷
+        projectPhase: '', // 椤圭洰闃舵
+        investType: '', // 鎶曡祫绫诲埆
+        area: '', // 琛屾斂鍖哄垝
+        assignmentStatus: '', //鍏宠仈鐘舵��
+        tag: '' //椤圭洰鏍囩
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        projectName: [
+          {required: true, message: "椤圭洰鍚嶇О涓嶈兘涓虹┖", trigger: "blur"}
+        ],
+        projectStatus: [
+          {required: true, message: "椤圭洰鐘舵�佷笉鑳戒负绌�", trigger: "change"}
+        ],
+      }
+    };
+  },
+  created() {
+    const columns = current.map((item, index) => {
+      item.index = index + 1;
+      item.key = index;
+      item.serialNumber = index + 1;
+      return item;
+    });
+    this.columns = columns;
+    this.defaultColumns = JSON.parse(JSON.stringify(columns));
+    this.getList();
+  },
+  beforeDestroy() {
+    this.removeStore();
+  },
+  methods: {
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.removeStore();
+      this.$router.push({path: '/projectEngineering/project/ProjectDetails', query: {projectId: row.id}});
+    },
+    handleDetail(row) {
+      this.removeStore();
+      this.$router.push({path: '/projectEngineering/project/ProjectDetails', query: {projectId: row.id}});
+    },
+    // 鏂板椤甸潰
+    add() {
+      this.removeStore();
+      this.$router.push({path: '/projectEngineering/project/ProjectDetails'});
+    },
+    //娓呯悊缂撳瓨
+    removeStore() {
+      localStorage.removeItem("projectForm")
+      localStorage.removeItem("investmentForm")
+      localStorage.removeItem("investmentFundsForm")
+      localStorage.removeItem("legalPersonForm")
+      localStorage.removeItem("policyInfoForm")
+      localStorage.removeItem("documentsInfoForm")
+    },
+    // 閲嶇疆鎺掑簭鐨勬柟娉�
+    handleResetSort() {
+      this.defaultColumns = currentRest.map((item, index) => {
+        item.index = index + 1;
+        item.key = index;
+        item.serialNumber = index + 1
+        return item;
+      });
+      this.columns = currentRest.map((item, index) => {
+        item.index = index + 1;
+        item.key = index;
+        item.serialNumber = index + 1
+        return item;
+      });
+      //寮哄埗table娓叉煋
+      this.tableKey = this.tableKey + 1;
+    },
+    // 鏇存柊鍒楃殑鏂规硶
+    handleUpdateColumns(row) {
+      // this.currentColumns = row;
+      this.columns = this.columns.map(item => {
+        if (item.key === row.key) {
+          return row;
+        }
+        return item;
+      });
+    },
+    handleUpdateSort(row) {
+      console.log(this.columns, '鎺掑簭鍓嶇殑鍒�');
+      this.columns = this.columns.map(item => {
+        if (item.key === row.key) {
+          return row;
+        }
+        return item;
+      });
+      this.defaultColumns = JSON.parse(JSON.stringify(this.columns)).sort((a, b) => a.index - b.index);
+      this.columns.sort((a, b) => a.serialNumber - b.serialNumber);
+      //寮哄埗table娓叉煋
+      this.tableKey = this.tableKey + 1;
+      console.log(this.columns, '鎺掑簭鍚庣殑鍒�');
+    },
+    // 鍏抽棴鏂囦欢澶勭悊寮规鐨勬柟娉�
+    fileDialogCancel() {
+      this.tableLoading = true;
+      this.fileDialogVisible = false;
+      // this.getList();
+      this.tableLoading = false;
+    },
+    handlePopover() {
+      this.popoverValue = true;
+    },
+    closePopover() {
+      this.popoverValue = false;
+    },
+    /** 鏌ヨ椤圭洰绠$悊鍩虹淇℃伅鍒楄〃 */
+    getList() {
+      this.loading = true;
+      this.queryParams.projectCategory = '5';
+      if (this.timeRange) {
+        this.queryParams.projectStartTime = this.timeRange[0]
+        this.queryParams.projectEndTime = this.timeRange[1]
+      }
+      listProject(this.queryParams).then(response => {
+        this.projectInfoList = response.data;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        id: null,
+        projectName: null,
+        projectCode: null,
+        content: null,
+        projectType: null,
+        projectStatus: null,
+        fundType: null,
+        investType: null,
+        projectPhase: null,
+        tag: null,
+        competentDepartment: null,
+        areaCode: null,
+        managementCentralization: null,
+        projectApprovalType: null,
+        investmentCatalogue: null,
+        importanceType: null,
+        year: null,
+        yearInvestAmount: null,
+        createProjectTime: null,
+        planStartTime: null,
+        planCompleteTime: null,
+        winUnit: null,
+        winAmount: null,
+        winTime: null,
+        projectAddress: null,
+        longitude: null,
+        latitude: null,
+        projectOwnerUnit: null,
+        projectContactPerson: null,
+        contact: null,
+        gmtCreateTime: null,
+        gmtUpdateTime: null,
+        updateBy: null,
+        createBy: null,
+        deleted: null
+      };
+      this.resetForm("form");
+    },
+    /** 鎼滅储鎸夐挳鎿嶄綔 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 澶氶�夋閫変腑鏁版嵁
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length !== 1
+      this.multiple = !selection.length
+    },
+
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎椤圭洰绠$悊鍩虹淇℃伅缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�').then(function () {
+        return delInfo(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {
+      });
+    },
+    /** 瀵煎叆鎸夐挳鎿嶄綔 */
+    handleImport() {
+      this.isImportOrExport = false;
+      this.fileDialogVisible = true;
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.isImportOrExport = true;
+      this.fileDialogVisible = true;
+    }
+  }
+};
+</script>
+<style lang="scss" scoped>
+.select-option {
+  width: 100%;
+}
+
+.slot {
+  display: flex;
+}
+
+.left-section {
+  flex-grow: 1;
+}
+
+.right-section {
+  display: flex;
+  margin-left: auto;
+
+  .add-btn {
+    margin: 0 10px;
+  }
+}
+
+</style>
diff --git a/src/views/projectEngineering/abnormalProject/list.js b/src/views/projectEngineering/abnormalProject/list.js
new file mode 100644
index 0000000..d187287
--- /dev/null
+++ b/src/views/projectEngineering/abnormalProject/list.js
@@ -0,0 +1,176 @@
+export const current = [
+  {id: 'projectName', label: '椤圭洰鍚嶇О', visible: true},
+  {id: 'projectOwnerUnit', label: '涓氫富鍗曚綅', visible: true},
+  {id: 'projectColorCode', label: '椤圭洰鐮�', slotName: 'projectColorCode', visible: true},
+  {id: 'projectCode', label: '椤圭洰浠g爜', visible: true},
+  {id: 'projectType', label: '椤圭洰绫诲瀷', slotName: 'projectType', visible: true},
+  {id: 'projectPhase', label: '椤圭洰闃舵', visible: true},
+  {id: 'totalInvestment', label: '鎬绘姇璧勯', visible: true},
+  {id: 'yearInvestAmount', label: '鏈勾璁″垝鎶曡祫', visible: true},
+  {id: 'planStartTime', label: '椤圭洰骞翠唤', slotName: 'planStartTime', visible: true},
+  {id: 'projectStatus', label: '椤圭洰鐘舵��', slotName: 'projectStatus', visible: true},
+  {id: 'investType', label: '鎶曡祫绫诲埆', slotName: 'investType', visible: true},
+  {id: 'content', label: '寤鸿鍐呭', visible: false},
+  {id: 'fundType', label: '璧勯噾绫诲瀷', visible: false},
+  {id: 'projectContactPerson', label: '椤圭洰鑱旂郴浜�', visible: false},
+  {id: 'contact', label: '鑱旂郴鏂瑰紡', visible: false},
+  {id: 'engineeringIdList', label: '鍏宠仈宸ョ▼', visible: false},
+  {id: 'competentDepartmentList', label: '涓荤閮ㄩ棬', visible: false},
+  {id: 'area', label: '琛屾斂鍖哄垝', visible: false},
+  {id: 'managementCentralizationList', label: '绠$悊褰掑彛', visible: false},
+  {id: 'projectApprovalType', label: '椤圭洰瀹℃壒绫诲瀷', visible: false},
+  {id: 'importanceType', label: '閲嶇偣鍒嗙被', visible: false},
+  {id: 'setTime', label: '绔嬮」鏃堕棿', visible: false},
+  {id: 'planCompleteTime', label: '璁″垝绔e伐鏃堕棿', visible: false},
+  {id: 'winUnit', label: '涓爣鍗曚綅', visible: false},
+  {id: 'winAmount', label: '涓爣閲戦', visible: false},
+  {id: 'winTime', label: '涓爣鏃堕棿', visible: false},
+  {id: 'year', label: '骞村害鎶曡祫璁″垝', visible: false},
+  {id: 'address', label: '椤圭洰鍦板潃', visible: false},
+  {id: 'projectBudget', label: '椤圭洰棰勭畻', visible: false},
+  {id: 'beCrossRegion', label: '寤鸿鍦扮偣鏄惁璺ㄥ煙', visible: false},
+  {id: 'constructionLocation', label: '椤圭洰寤鸿鍦扮偣', visible: false},
+  {id: 'detailedAddress', label: '寤鸿璇︾粏鍦板潃', visible: false},
+  {id: 'beCompensationProject', label: '鏄惁鏄ˉ鐮侀」鐩�', visible: false},
+  {id: 'compensationReason', label: '琛ョ爜鍘熷洜', visible: false},
+  {id: 'plannedStartDate', label: '璁″垝寮�宸ユ椂闂�', visible: false},
+  {id: 'expectedCompletionDate', label: '鎷熷缓鎴愭椂闂�', visible: false},
+  {id: 'nationalIndustryClassification', label: '鍥介檯琛屼笟鍒嗙被', visible: false},
+  {id: 'industryClassification', label: '鎵�灞炶涓氬垎绫�', visible: false},
+  {id: 'projectNature', label: '椤圭洰寤烘垚鎬ц川', visible: false},
+  {id: 'projectAttribute', label: '椤圭洰灞炴��', visible: false},
+  {id: 'useEarth', label: '鏄惁浣跨敤鍦熷湴', visible: false},
+  {id: 'contentScale', label: '涓昏寤鸿鍐呭鍙婅妯�', visible: false},
+  {id: 'code', label: '寤虹骞冲彴浠g爜', visible: false},
+  {id: 'projectUnit', label: '椤圭洰鍗曚綅', visible: false},
+  {id: 'projectUnitType', label: '椤圭洰鍗曚綅绫诲瀷', visible: false},
+  {id: 'registrationType', label: '鐧昏娉ㄥ唽绫诲瀷', visible: false},
+  {id: 'holdingSituation', label: '鎺ц偂鎯呭喌', visible: false},
+  {id: 'certificateType', label: '璇佺収绫诲瀷', visible: false},
+  {id: 'certificateNumber', label: '璇佷欢鍙风爜', visible: false},
+  {id: 'registeredAddress', label: '娉ㄥ唽鍦板潃', visible: false},
+  {id: 'registeredCapital', label: '娉ㄥ唽璧勯噾', visible: false},
+  {id: 'legal_representative', label: '娉曚汉浠h〃', visible: false},
+  {id: 'fixedPhone', label: '鍥哄畾鐢佃瘽', visible: false},
+  {id: 'legalPersonIdcard', label: '娉曚汉韬唤璇佸彿', visible: false},
+  {id: 'projectContactPerson', label: '椤圭洰鑱旂郴浜�', visible: false},
+  {id: 'phone', label: '绉诲姩鐢佃瘽', visible: false},
+  {id: 'contactIdcard', label: '鑱旂郴浜鸿韩浠借瘉鍙�', visible: false},
+  {id: 'wechat', label: '寰俊鍙�', visible: false},
+  {id: 'contactAddress', label: '鑱旂郴浜洪�氳鍦板潃', visible: false},
+  {id: 'postCode', label: '閭斂缂栫爜', visible: false},
+  {id: 'email', label: '鐢靛瓙閭', visible: false},
+  {id: 'totalInvestment', label: '椤圭洰鎬绘姇璧勯', visible: false},
+  {id: 'principal', label: '椤圭洰鏈噾', visible: false},
+  {id: 'governmentInvestmentTotal', label: '鏀垮簻鎶曡祫', visible: false},
+  {id: 'centralInvestmentTotal', label: '涓ぎ鎶曡祫', visible: false},
+  {id: 'centralBudgetInvestment', label: '涓ぎ棰勭畻鎶曡祫', visible: false},
+  {id: 'centralFiscalInvestment', label: '涓ぎ璐㈡斂', visible: false},
+  {id: 'centralSpecialBondInvestment', label: '涓ぎ涓撻」鍊哄埜绛归泦鐨勪笓椤瑰缓璁捐祫閲�', visible: false},
+  {id: 'centralSpecialFundInvestment', label: '涓ぎ涓撻」寤鸿鍩洪噾', visible: false},
+  {id: 'provincialInvestmentTotal', label: '鐪佺骇鎶曡祫', visible: false},
+  {id: 'provincialBudgetInvestment', label: '鐪侀绠楀唴鎶曡祫', visible: false},
+  {id: 'provincialFiscalInvestment', label: '鐪佽储鏀挎�у缓璁炬姇璧�', visible: false},
+  {id: 'provincialSpecialFundInvestment', label: '鐪佷笓椤瑰缓璁捐祫閲�', visible: false},
+  {id: 'cityInvestmentTotal', label: '甯�(宸�)鎶曡祫', visible: false},
+  {id: 'cityBudgetInvestment', label: '甯�(宸�)棰勭畻鍐呮姇璧�', visible: false},
+  {id: 'cityFiscalInvestment', label: '甯�(宸�)璐㈡斂鎬ф姇璧�', visible: false},
+  {id: 'citySpecialFundInvestment', label: '甯�(宸�)涓撻」璧勯噾', visible: false},
+  {id: 'countyInvestmentTotal', label: '鍘�(甯傘�佸尯)鎶曡祫', visible: false},
+  {id: 'countyBudgetInvestment', label: '鍖�(鍘�)棰勭畻鍐呮姇璧�', visible: false},
+  {id: 'countyFiscalInvestment', label: '鍖猴紙鍘匡級璐㈡斂鎬у缓璁捐祫閲�', visible: false},
+  {id: 'countySpecialFundInvestment', label: '鍖�(鍘�)涓撻」璧勯噾', visible: false},
+  {id: 'domesticLoanTotal', label: '鍥藉唴璐锋', visible: false},
+  {id: 'bankLoan', label: '閾惰璐锋', visible: false},
+  {id: 'foreignInvestmentTotal', label: '澶栧晢鎶曡祫', visible: false},
+  {id: 'enterpriseSelfRaisedTotal', label: '浼佷笟鑷', visible: false},
+  {id: 'otherInvestmentTotal', label: '鍏朵粬鎶曡祫', visible: false}
+];
+export const currentRest = [
+  { id: 'projectName', label: '椤圭洰鍚嶇О', visible: true },
+  { id: 'projectOwnerUnit', label: '涓氫富鍗曚綅', visible: true },
+  { id: 'projectColorCode', label: '椤圭洰鐮�', slotName: 'projectColorCode', visible: true },
+  { id: 'projectCode', label: '椤圭洰浠g爜', visible: true },
+  { id: 'projectType', label: '椤圭洰绫诲瀷', slotName: 'projectType', visible: true },
+  { id: 'projectPhase', label: '椤圭洰闃舵', visible: true },
+  { id: 'totalInvestment', label: '鎬绘姇璧勯', visible: true },
+  { id: 'yearInvestAmount', label: '鏈勾璁″垝鎶曡祫', visible: true },
+  { id: 'planStartTime', label: '椤圭洰骞翠唤', slotName: 'planStartTime', visible: true },
+  { id: 'projectStatus', label: '椤圭洰鐘舵��', slotName: 'projectStatus', visible: true },
+  { id: 'investType', label: '鎶曡祫绫诲埆', slotName: 'investType', visible: true },
+  { id: 'content', label: '寤鸿鍐呭', visible: false },
+  { id: 'fundType', label: '璧勯噾绫诲瀷', visible: false },
+  { id: 'projectContactPerson', label: '椤圭洰鑱旂郴浜�', visible: false },
+  { id: 'contact', label: '鑱旂郴鏂瑰紡', visible: false },
+  { id: 'engineeringIdList', label: '鍏宠仈宸ョ▼', visible: false },
+  { id: 'competentDepartmentList', label: '涓荤閮ㄩ棬', visible: false },
+  { id: 'area', label: '琛屾斂鍖哄垝', visible: false },
+  { id: 'managementCentralizationList', label: '绠$悊褰掑彛', visible: false },
+  { id: 'projectApprovalType', label: '椤圭洰瀹℃壒绫诲瀷', visible: false },
+  { id: 'importanceType', label: '閲嶇偣鍒嗙被', visible: false },
+  { id: 'setTime', label: '绔嬮」鏃堕棿', visible: false },
+  { id: 'planCompleteTime', label: '璁″垝绔e伐鏃堕棿', visible: false },
+  { id: 'winUnit', label: '涓爣鍗曚綅', visible: false },
+  { id: 'winAmount', label: '涓爣閲戦', visible: false },
+  { id: 'winTime', label: '涓爣鏃堕棿', visible: false },
+  { id: 'year', label: '骞村害鎶曡祫璁″垝', visible: false },
+  { id: 'address', label: '椤圭洰鍦板潃', visible: false },
+  { id: 'projectBudget', label: '椤圭洰棰勭畻', visible: false },
+  { id: 'beCrossRegion', label: '寤鸿鍦扮偣鏄惁璺ㄥ煙', visible: false },
+  { id: 'constructionLocation', label: '椤圭洰寤鸿鍦扮偣', visible: false },
+  { id: 'detailedAddress', label: '寤鸿璇︾粏鍦板潃', visible: false },
+  { id: 'beCompensationProject', label: '鏄惁鏄ˉ鐮侀」鐩�', visible: false },
+  { id: 'compensationReason', label: '琛ョ爜鍘熷洜', visible: false },
+  { id: 'plannedStartDate', label: '璁″垝寮�宸ユ椂闂�', visible: false },
+  { id: 'expectedCompletionDate', label: '鎷熷缓鎴愭椂闂�', visible: false },
+  { id: 'nationalIndustryClassification', label: '鍥介檯琛屼笟鍒嗙被', visible: false },
+  { id: 'industryClassification', label: '鎵�灞炶涓氬垎绫�', visible: false },
+  { id: 'projectNature', label: '椤圭洰寤烘垚鎬ц川', visible: false },
+  { id: 'projectAttribute', label: '椤圭洰灞炴��', visible: false },
+  { id: 'useEarth', label: '鏄惁浣跨敤鍦熷湴', visible: false },
+  { id: 'contentScale', label: '涓昏寤鸿鍐呭鍙婅妯�', visible: false },
+  { id: 'code', label: '寤虹骞冲彴浠g爜', visible: false },
+  { id: 'projectUnit', label: '椤圭洰鍗曚綅', visible: false },
+  { id: 'projectUnitType', label: '椤圭洰鍗曚綅绫诲瀷', visible: false },
+  { id: 'registrationType', label: '鐧昏娉ㄥ唽绫诲瀷', visible: false },
+  { id: 'holdingSituation', label: '鎺ц偂鎯呭喌', visible: false },
+  { id: 'certificateType', label: '璇佺収绫诲瀷', visible: false },
+  { id: 'certificateNumber', label: '璇佷欢鍙风爜', visible: false },
+  { id: 'registeredAddress', label: '娉ㄥ唽鍦板潃', visible: false },
+  { id: 'registeredCapital', label: '娉ㄥ唽璧勯噾', visible: false },
+  { id: 'legal_representative', label: '娉曚汉浠h〃', visible: false },
+  { id: 'fixedPhone', label: '鍥哄畾鐢佃瘽', visible: false },
+  { id: 'legalPersonIdcard', label: '娉曚汉韬唤璇佸彿', visible: false },
+  { id: 'projectContactPerson', label: '椤圭洰鑱旂郴浜�', visible: false },
+  { id: 'phone', label: '绉诲姩鐢佃瘽', visible: false },
+  { id: 'contactIdcard', label: '鑱旂郴浜鸿韩浠借瘉鍙�', visible: false },
+  { id: 'wechat', label: '寰俊鍙�', visible: false },
+  { id: 'contactAddress', label: '鑱旂郴浜洪�氳鍦板潃', visible: false },
+  { id: 'postCode', label: '閭斂缂栫爜', visible: false },
+  { id: 'email', label: '鐢靛瓙閭', visible: false },
+  { id: 'totalInvestment', label: '椤圭洰鎬绘姇璧勯', visible: false },
+  { id: 'principal', label: '椤圭洰鏈噾', visible: false },
+  { id: 'governmentInvestmentTotal', label: '鏀垮簻鎶曡祫', visible: false },
+  { id: 'centralInvestmentTotal', label: '涓ぎ鎶曡祫', visible: false },
+  { id: 'centralBudgetInvestment', label: '涓ぎ棰勭畻鎶曡祫', visible: false },
+  { id: 'centralFiscalInvestment', label: '涓ぎ璐㈡斂', visible: false },
+  { id: 'centralSpecialBondInvestment', label: '涓ぎ涓撻」鍊哄埜绛归泦鐨勪笓椤瑰缓璁捐祫閲�', visible: false },
+  { id: 'centralSpecialFundInvestment', label: '涓ぎ涓撻」寤鸿鍩洪噾', visible: false },
+  { id: 'provincialInvestmentTotal', label: '鐪佺骇鎶曡祫', visible: false },
+  { id: 'provincialBudgetInvestment', label: '鐪侀绠楀唴鎶曡祫', visible: false },
+  { id: 'provincialFiscalInvestment', label: '鐪佽储鏀挎�у缓璁炬姇璧�', visible: false },
+  { id: 'provincialSpecialFundInvestment', label: '鐪佷笓椤瑰缓璁捐祫閲�', visible: false },
+  { id: 'cityInvestmentTotal', label: '甯�(宸�)鎶曡祫', visible: false },
+  { id: 'cityBudgetInvestment', label: '甯�(宸�)棰勭畻鍐呮姇璧�', visible: false },
+  { id: 'cityFiscalInvestment', label: '甯�(宸�)璐㈡斂鎬ф姇璧�', visible: false },
+  { id: 'citySpecialFundInvestment', label: '甯�(宸�)涓撻」璧勯噾', visible: false },
+  { id: 'countyInvestmentTotal', label: '鍘�(甯傘�佸尯)鎶曡祫', visible: false },
+  { id: 'countyBudgetInvestment', label: '鍖�(鍘�)棰勭畻鍐呮姇璧�', visible: false },
+  { id: 'countyFiscalInvestment', label: '鍖猴紙鍘匡級璐㈡斂鎬у缓璁捐祫閲�', visible: false },
+  { id: 'countySpecialFundInvestment', label: '鍖�(鍘�)涓撻」璧勯噾', visible: false },
+  { id: 'domesticLoanTotal', label: '鍥藉唴璐锋', visible: false },
+  { id: 'bankLoan', label: '閾惰璐锋', visible: false },
+  { id: 'foreignInvestmentTotal', label: '澶栧晢鎶曡祫', visible: false },
+  { id: 'enterpriseSelfRaisedTotal', label: '浼佷笟鑷', visible: false },
+  { id: 'otherInvestmentTotal', label: '鍏朵粬鎶曡祫', visible: false }
+];
diff --git a/src/views/projectEngineering/projectLibrary/index.vue b/src/views/projectEngineering/projectLibrary/index.vue
index 46f2d62..1a6a439 100644
--- a/src/views/projectEngineering/projectLibrary/index.vue
+++ b/src/views/projectEngineering/projectLibrary/index.vue
@@ -50,7 +50,8 @@
               <el-row>
                 <el-col :span="12">
                   <el-form-item label="椤圭洰绫诲瀷">
-                    <el-select v-model="queryParams.projectType" clearable placeholder="璇烽�夋嫨" class="select-option" @change="handleQuery"
+                    <el-select v-model="queryParams.projectType" clearable placeholder="璇烽�夋嫨" class="select-option"
+                               @change="handleQuery"
                                size="small">
                       <el-option v-for="item in dict.type.sys_project_type" :key="item.value" :label="item.label"
                                  :value="item.value"/>
@@ -59,7 +60,8 @@
                 </el-col>
                 <el-col :span="12">
                   <el-form-item label="閲嶇偣鍒嗙被">
-                    <el-select v-model="queryParams.importanceType" clearable placeholder="璇烽�夋嫨" class="select-option" @change="handleQuery">
+                    <el-select v-model="queryParams.importanceType" clearable placeholder="璇烽�夋嫨" class="select-option"
+                               @change="handleQuery">
                       <el-option v-for="item in dict.type.sys_key_categories" :key="item.value" :label="item.label"
                                  :value="item.value"/>
                     </el-select>
@@ -69,7 +71,8 @@
               <el-row>
                 <el-col :span="12">
                   <el-form-item label="椤圭洰鏍囩">
-                    <el-select v-model="queryParams.tag" clearable placeholder="璇烽�夋嫨" class="select-option" @change="handleQuery">
+                    <el-select v-model="queryParams.tag" clearable placeholder="璇烽�夋嫨" class="select-option"
+                               @change="handleQuery">
                       <el-option v-for="item in dict.type.sys_project_tags" :key="item.value" :label="item.label"
                                  :value="item.value"/>
                     </el-select>
@@ -77,7 +80,8 @@
                 </el-col>
                 <el-col :span="12">
                   <el-form-item label="椤圭洰鐘舵��">
-                    <el-select v-model="queryParams.projectStatus" :disabled="isProjectCategory" clearable @change="handleQuery"
+                    <el-select v-model="queryParams.projectStatus" :disabled="isProjectCategory" clearable
+                               @change="handleQuery"
                                placeholder="璇烽�夋嫨" class="select-option">
                       <el-option v-for="item in dict.type.sys_project_status" :key="item.value" :label="item.label"
                                  :value="item.value"/>
@@ -88,7 +92,8 @@
               <el-row>
                 <el-col :span="12">
                   <el-form-item label="椤圭洰鐮�">
-                    <el-select v-model="queryParams.projectColorCode" clearable placeholder="璇烽�夋嫨" class="select-option" @change="handleQuery">
+                    <el-select v-model="queryParams.projectColorCode" clearable placeholder="璇烽�夋嫨" class="select-option"
+                               @change="handleQuery">
                       <el-option v-for="item in dict.type.sys_project_code" :key="item.value" :label="item.label"
                                  :value="item.value"/>
                     </el-select>
@@ -96,7 +101,8 @@
                 </el-col>
                 <el-col :span="12">
                   <el-form-item label="鍏宠仈鐘舵��">
-                    <el-select v-model="queryParams.assignmentStatus" clearable placeholder="璇烽�夋嫨" class="select-option" @change="handleQuery">
+                    <el-select v-model="queryParams.assignmentStatus" clearable placeholder="璇烽�夋嫨" class="select-option"
+                               @change="handleQuery">
                       <el-option v-for="item in dict.type.sys_association_status" :key="item.value" :label="item.label"
                                  :value="item.value"/>
                     </el-select>
@@ -106,7 +112,8 @@
               <el-row>
                 <el-col :span="12">
                   <el-form-item label="璧勯噾绫诲瀷">
-                    <el-select v-model="queryParams.investmentType" clearable placeholder="璇烽�夋嫨" class="select-option" @change="handleQuery">
+                    <el-select v-model="queryParams.investmentType" clearable placeholder="璇烽�夋嫨" class="select-option"
+                               @change="handleQuery">
                       <el-option v-for="item in dict.type.sys_funding_type" :key="item.value" :label="item.label"
                                  :value="item.value"/>
                     </el-select>
@@ -114,7 +121,8 @@
                 </el-col>
                 <el-col :span="12">
                   <el-form-item label="椤圭洰闃舵">
-                    <el-select v-model="queryParams.projectPhase" clearable placeholder="璇烽�夋嫨" class="select-option" @change="handleQuery">
+                    <el-select v-model="queryParams.projectPhase" clearable placeholder="璇烽�夋嫨" class="select-option"
+                               @change="handleQuery">
                       <el-option v-for="item in dict.type.sys_project_phases" :key="item.value" :label="item.label"
                                  :value="item.value"/>
                     </el-select>
@@ -124,7 +132,8 @@
               <el-row>
                 <el-col :span="12">
                   <el-form-item label="鎶曡祫绫诲埆">
-                    <el-select v-model="queryParams.investType" clearable placeholder="璇烽�夋嫨" class="select-option" @change="handleQuery">
+                    <el-select v-model="queryParams.investType" clearable placeholder="璇烽�夋嫨" class="select-option"
+                               @change="handleQuery">
                       <el-option v-for="item in dict.type.sys_investment_type" :key="item.value" :label="item.label"
                                  :value="item.value"/>
                     </el-select>
@@ -132,15 +141,17 @@
                 </el-col>
                 <el-col :span="12">
                   <el-form-item label="琛屾斂鍖哄垝">
-                    <el-select v-model="queryParams.area" clearable placeholder="璇烽�夋嫨" class="select-option" @change="handleQuery">
-                      <el-option v-for="item in dict.type.sys_administrative_divisions" :key="item.value" :label="item.label"
+                    <el-select v-model="queryParams.area" clearable placeholder="璇烽�夋嫨" class="select-option"
+                               @change="handleQuery">
+                      <el-option v-for="item in dict.type.sys_administrative_divisions" :key="item.value"
+                                 :label="item.label"
                                  :value="item.value"/>
                     </el-select>
                   </el-form-item>
                 </el-col>
               </el-row>
             </el-form>
-            <el-button style="margin-right: 16px; margin-top: 1px; color: #3369ff"  slot="reference"
+            <el-button style="margin-right: 16px; margin-top: 1px; color: #3369ff" slot="reference"
                        size="small">
               鏇村绛涙煡鏉′欢
               <span style="margin-left: 5px">
@@ -227,7 +238,7 @@
       </el-table-column>
 
       <!-- 鎿嶄綔鍒� -->
-      <el-table-column label="鎿嶄綔" width="140" align="center" >
+      <el-table-column label="鎿嶄綔" width="140" align="center">
         <template slot-scope="scope">
           <el-button
             size="medium"
@@ -278,6 +289,7 @@
 import {current, currentRest} from '@/views/projectEngineering/projectLibrary/list';
 import FileDialog from '@/views/projectEngineering/projectLibrary/component/FileDialog';
 import Cookies from "js-cookie";
+
 export default {
   dicts: ['sys_administrative_divisions', 'sys_investment_type', 'sys_project_phases',
     'sys_funding_type', 'sys_association_status', 'sys_project_status', 'sys_project_code',
@@ -355,10 +367,10 @@
   },
   created() {
     const projectCategory = this.$route.query.projectCategory;
-    if(!projectCategory || projectCategory === '1'){
+    if (!projectCategory || projectCategory === '1') {
       this.isReserve = true;
     }
-    if(projectCategory){
+    if (projectCategory) {
       this.isProjectCategory = true;
     }
     const columns = current.map((item, index) => {
@@ -378,16 +390,16 @@
     /** 淇敼鎸夐挳鎿嶄綔 */
     handleUpdate(row) {
       this.removeStore();
-      this.$router.push({ path: '/projectEngineering/project/ProjectDetails', query: { projectId: row.id }});
+      this.$router.push({path: '/projectEngineering/project/ProjectDetails', query: {projectId: row.id}});
     },
     handleDetail(row) {
       this.removeStore();
-      this.$router.push({ path: '/projectEngineering/project/ProjectDetails', query: { projectId: row.id }});
+      this.$router.push({path: '/projectEngineering/project/ProjectDetails', query: {projectId: row.id}});
     },
     // 鏂板椤甸潰
     add() {
       this.removeStore();
-      this.$router.push({ path: '/projectEngineering/project/ProjectDetails' });
+      this.$router.push({path: '/projectEngineering/project/ProjectDetails'});
     },
     //娓呯悊缂撳瓨
     removeStore() {
@@ -413,7 +425,7 @@
         return item;
       });
       //寮哄埗table娓叉煋
-      this.tableKey = this.tableKey +1;
+      this.tableKey = this.tableKey + 1;
     },
     // 鏇存柊鍒楃殑鏂规硶
     handleUpdateColumns(row) {
@@ -426,7 +438,7 @@
       });
     },
     handleUpdateSort(row) {
-      console.log( this.columns, '鎺掑簭鍓嶇殑鍒�');
+      console.log(this.columns, '鎺掑簭鍓嶇殑鍒�');
       this.columns = this.columns.map(item => {
         if (item.key === row.key) {
           return row;
@@ -436,8 +448,8 @@
       this.defaultColumns = JSON.parse(JSON.stringify(this.columns)).sort((a, b) => a.index - b.index);
       this.columns.sort((a, b) => a.serialNumber - b.serialNumber);
       //寮哄埗table娓叉煋
-      this.tableKey = this.tableKey +1;
-      console.log( this.columns, '鎺掑簭鍚庣殑鍒�');
+      this.tableKey = this.tableKey + 1;
+      console.log(this.columns, '鎺掑簭鍚庣殑鍒�');
     },
     // 鍏抽棴鏂囦欢澶勭悊寮规鐨勬柟娉�
     fileDialogCancel() {
@@ -456,7 +468,7 @@
     getList() {
       this.loading = true;
       this.queryParams.projectCategory = this.$route.query.projectCategory;
-      if(this.timeRange){
+      if (this.timeRange) {
         this.queryParams.projectStartTime = this.timeRange[0]
         this.queryParams.projectEndTime = this.timeRange[1]
       }
@@ -547,9 +559,8 @@
     },
     /** 瀵煎嚭鎸夐挳鎿嶄綔 */
     handleExport() {
-      this.download('code/info/export', {
-        ...this.queryParams
-      }, `info_${new Date().getTime()}.xlsx`)
+      this.isImportOrExport = true;
+      this.fileDialogVisible = true;
     }
   }
 };

--
Gitblit v1.8.0