xiangpei
2024-11-29 69b01c1de544bdaedfa12aaf13600239dabbcb3c
Merge remote-tracking branch 'origin/master'
13个文件已修改
1078 ■■■■ 已修改文件
src/api/projectManage/progress/index.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/components/projectOverview.vue 654 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/projectEngineering/projectLibrary/component/BasicInfo.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/projectEngineering/projectLibrary/component/FileDialog.vue 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/projectEngineering/projectLibrary/index.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/projectEngineering/projectLibrary/list.js 174 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/projectEngineering/projectLibrary/projectDetails.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/projectManage/plan/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/projectManage/plan/planInfo.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/projectManage/plan/planInfoCheck.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/projectManage/plan/planRecord.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/projectManage/progress/index.vue 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/projectManage/progress/progressRecord.vue 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/projectManage/progress/index.js
@@ -50,6 +50,15 @@
  })
}
// 审批
export function examine(data) {
  return request({
    url: '/api/project-plan-progress-report/examine',
    method: 'post',
    data: data
  })
}
// 保存竣工报告、情况说明附件
export function saveProjectProgressFileLists(data) {
  return request({
src/views/components/projectOverview.vue
@@ -1,339 +1,373 @@
<template>
    <div class="overview-bottom">
        <div class="abnormal" @click="showAbnormal">
            <div style="margin-bottom: 30px">异常项目情况统计</div>
            <div>
                <div class="abnormal-center">
                    流程异常项目:<span
                        style="font-size: 16px; font-weight: 700"
                        >{{
                            countExceptionProjectData.processExceptionProject
                        }}</span
                    >
                </div>
                <div class="abnormal-center">
                    资金异常项目:<span
                        style="font-size: 16px; font-weight: 700"
                        >0</span
                    >
                </div>
                <div class="abnormal-center">
                    进度异常项目:<span
                        style="font-size: 16px; font-weight: 700"
                        >0</span
                    >
                </div>
            </div>
            <div class="abnormal-img"></div>
  <div class="overview-bottom">
    <div class="abnormal" @click="showAbnormal">
      <div style="margin-bottom: 30px">异常项目情况统计</div>
      <div>
        <div class="abnormal-center">
          流程异常项目:<span
          style="font-size: 16px; font-weight: 700"
        >{{
            countExceptionProjectData.processExceptionProject
          }}</span
        >
        </div>
        <div class="overview-div custom-min-width">
            <div
                v-for="i in calculation"
                :key="i.text"
                :style="setbcStyle(i.text)"
                class="listings"
                @click="showDetail(i.text)"
            >
                <div :style="setTextStyle(i.text)" class="title">
                    {{ i.text }}
                </div>
                <div class="conter">
                    <div :style="setTextColor(i.text)" class="mun">
                        {{ i.mun }}
                    </div>
                    <div class="statistics">
                        <div>{{ i.statistics }}</div>
                        <div :style="setTextColor(i.text)">
                            {{ i.statisticsMun
                            }}<span style="font-size: 18px">亿</span>
                        </div>
                    </div>
                </div>
            </div>
            <!-- <div class="listings">
                <div class="title">
                    储
                </div>
                <div class="conter">
                    <div class="mun">44</div>
                    <div class="statistics">
                        <div>储备项目数量统计</div>
                        <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div>
                    </div>
                </div>
            </div>
            <div class="listings">
                <div class="title">
                    储
                </div>
                <div class="conter">
                    <div class="mun">44</div>
                    <div class="statistics">
                        <div>储备项目数量统计</div>
                        <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div>
                    </div>
                </div>
            </div>
            <div class="listings">
                <div class="title">
                    储
                </div>
                <div class="conter">
                    <div class="mun">44</div>
                    <div class="statistics">
                        <div>储备项目数量统计</div>
                        <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div>
                    </div>
                </div>
            </div>
            <div class="listings">
                <div class="title">
                    储
                </div>
                <div class="conter">
                    <div class="mun">44</div>
                    <div class="statistics">
                        <div>储备项目数量统计</div>
                        <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div>
                    </div>
                </div>
            </div>
            <div class="listings">
                <div class="title">
                    储
                </div>
                <div class="conter">
                    <div class="mun">44</div>
                    <div class="statistics">
                        <div>储备项目数量统计</div>
                        <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div>
                    </div>
                </div>
            </div>
            <div class="listings">
                <div class="title">
                    储
                </div>
                <div class="conter">
                    <div class="mun">44</div>
                    <div class="statistics">
                        <div>储备项目数量统计</div>
                        <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div>
                    </div>
                </div>
            </div>
            <div class="listings">
                <div class="title active">
                    储
                </div>
                <div class="conter">
                    <div class="mun">44</div>
                    <div class="statistics">
                        <div>储备项目数量统计</div>
                        <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div>
                    </div>
                </div>
            </div> -->
        <div class="abnormal-center">
          资金异常项目:<span
          style="font-size: 16px; font-weight: 700"
        >0</span
        >
        </div>
        <div class="abnormal-center">
          进度异常项目:<span
          style="font-size: 16px; font-weight: 700"
        >0</span
        >
        </div>
      </div>
      <div class="abnormal-img"></div>
    </div>
    <div class="overview-div custom-min-width">
      <div
        v-for="i in calculation"
        :key="i.text"
        :style="setbcStyle(i.text)"
        class="listings"
        @click="showDetail(i.text)"
      >
        <div :style="setTextStyle(i.text)" class="title">
          {{ i.text }}
        </div>
        <div class="conter">
          <div :style="setTextColor(i.text)" class="mun">
            {{ i.mun }}
          </div>
          <div class="statistics">
            <div>{{ i.statistics }}</div>
            <div :style="setTextColor(i.text)">
              {{
                i.statisticsMun
              }}<span style="font-size: 18px">亿</span>
            </div>
          </div>
        </div>
      </div>
      <!-- <div class="listings">
          <div class="title">
              储
          </div>
          <div class="conter">
              <div class="mun">44</div>
              <div class="statistics">
                  <div>储备项目数量统计</div>
                  <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div>
              </div>
          </div>
      </div>
      <div class="listings">
          <div class="title">
              储
          </div>
          <div class="conter">
              <div class="mun">44</div>
              <div class="statistics">
                  <div>储备项目数量统计</div>
                  <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div>
              </div>
          </div>
      </div>
      <div class="listings">
          <div class="title">
              储
          </div>
          <div class="conter">
              <div class="mun">44</div>
              <div class="statistics">
                  <div>储备项目数量统计</div>
                  <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div>
              </div>
          </div>
      </div>
      <div class="listings">
          <div class="title">
              储
          </div>
          <div class="conter">
              <div class="mun">44</div>
              <div class="statistics">
                  <div>储备项目数量统计</div>
                  <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div>
              </div>
          </div>
      </div>
      <div class="listings">
          <div class="title">
              储
          </div>
          <div class="conter">
              <div class="mun">44</div>
              <div class="statistics">
                  <div>储备项目数量统计</div>
                  <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div>
              </div>
          </div>
      </div>
      <div class="listings">
          <div class="title">
              储
          </div>
          <div class="conter">
              <div class="mun">44</div>
              <div class="statistics">
                  <div>储备项目数量统计</div>
                  <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div>
              </div>
          </div>
      </div>
      <div class="listings">
          <div class="title active">
              储
          </div>
          <div class="conter">
              <div class="mun">44</div>
              <div class="statistics">
                  <div>储备项目数量统计</div>
                  <div class="statistics-mun">1233<span style="font-size: 18px;">亿</span></div>
              </div>
          </div>
      </div> -->
    </div>
  </div>
</template>
<script >
<script>
export default {
    name: "Index",
    data() {
        return {}
  name: "Index",
  data() {
    return {}
  },
  props: {
    calculation: Array,
    countExceptionProjectData: Object,
  },
  watch: {
    // calculation: {
    //     handler(val) {
    //         console.log("11111" + val);
    //     },
    // },
    // countExceptionProjectData: {
    //     handler(val) {
    //         console.log("22222" + val);
    //     },
    // },
  },
  methods: {
    setTextStyle(text) {
      if (text === '储') return 'background-color:#3369FF';
      if (text === '建') return 'background-color:#64ADFD';
      if (text === '省') return 'background-color:#FF5E57';
      if (text === '市') return 'background-color:#FFA83F';
      if (text === '新') return 'background-color:#5DD1E5';
      if (text === '竣') return 'background-color:#576BF5';
      if (text === '县') return 'background-color:#3369FF';
      if (text === '普') return 'background-color:#64ADFD';
      return '';
    },
    props: {
        calculation: Array,
        countExceptionProjectData: Object,
    setTextColor(text) {
      if (text === '储') return 'color:#3369FF';
      if (text === '建') return 'color:#64ADFD';
      if (text === '省') return 'color:#FF5E57';
      if (text === '市') return 'color:#FFA83F';
      if (text === '新') return 'color:#5DD1E5';
      if (text === '竣') return 'color:#576BF5';
      if (text === '县') return 'color:#3369FF';
      if (text === '普') return 'color:#64ADFD';
      return '';
    },
    watch: {
        // calculation: {
        //     handler(val) {
        //         console.log("11111" + val);
        //     },
        // },
        // countExceptionProjectData: {
        //     handler(val) {
        //         console.log("22222" + val);
        //     },
        // },
    setbcStyle(text) {
      if (text === '储') return 'background-color:#EAF0FF';
      if (text === '建') return 'background-color:#EFF7FF';
      if (text === '省') return 'background-color:#FEEEED';
      if (text === '市') return 'background-color:#FFF6EB';
      if (text === '新') return 'background-color:#EEFAFC';
      if (text === '竣') return 'background-color:#EEF0FE';
      if (text === '县') return 'background-color:#EAF0FF';
      if (text === '普') return 'background-color:#EFF7FF';
      return '';
    },
    methods: {
        setTextStyle(text) {
            if (text === '储') return 'background-color:#3369FF';
            if (text === '建') return 'background-color:#64ADFD';
            if (text === '省') return 'background-color:#FF5E57';
            if (text === '市') return 'background-color:#FFA83F';
            if (text === '新') return 'background-color:#5DD1E5';
            if (text === '竣') return 'background-color:#576BF5';
            if (text === '县') return 'background-color:#3369FF';
            if (text === '普') return 'background-color:#64ADFD';
            return '';
        },
    // 跳转到异常项目
    showAbnormal() {
      console.log('跳转异常项目');
      this.$router.push({
        path: 'projectEngineering/project/abnormalProject'
      });
    },
        setTextColor(text) {
            if (text === '储') return 'color:#3369FF';
            if (text === '建') return 'color:#64ADFD';
            if (text === '省') return 'color:#FF5E57';
            if (text === '市') return 'color:#FFA83F';
            if (text === '新') return 'color:#5DD1E5';
            if (text === '竣') return 'color:#576BF5';
            if (text === '县') return 'color:#3369FF';
            if (text === '普') return 'color:#64ADFD';
            return '';
        },
        setbcStyle(text) {
            if (text === '储') return 'background-color:#EAF0FF';
            if (text === '建') return 'background-color:#EFF7FF';
            if (text === '省') return 'background-color:#FEEEED';
            if (text === '市') return 'background-color:#FFF6EB';
            if (text === '新') return 'background-color:#EEFAFC';
            if (text === '竣') return 'background-color:#EEF0FE';
            if (text === '县') return 'background-color:#EAF0FF';
            if (text === '普') return 'background-color:#EFF7FF';
            return '';
        },
        // 跳转到异常项目
        showAbnormal() {
            console.log('跳转异常项目');
            this.$router.push({
                path: 'projectEngineering/project/abnormalProject'
            });
        },
        // 跳转到对应的项目库
        showDetail(text) {
            console.log('跳转到对应的项目库', text);
            switch (text) {
                case '储':
                    this.$router.push({
                        path: '/projectEngineering/project/reserveProjects',
                        query: {
                            projectCategory: '1'
                        }
                    });
                    break;
                case '新':
                    this.$router.push({
                        path: '/projectEngineering/project/previousProjects',
                        query: {
                            projectCategory: '2'
                        }
                    });
                    break;
                case '建':
                    this.$router.push({
                        path: '/projectEngineering/project/implementationProject',
                        query: {
                            projectCategory: '3'
                        }
                    });
                    break;
                case '竣':
                    this.$router.push({
                        path: '/projectEngineering/project/completedProjects',
                        query: {
                            projectCategory: '4'
                        }
                    });
                    break;
                default:
                    break;
    // 跳转到对应的项目库
    showDetail(text) {
      console.log('跳转到对应的项目库', text);
      switch (text) {
        case '储':
          this.$router.push({
            path: '/projectEngineering/project/reserveProjects',
            query: {
              projectCategory: '1'
            }
        }
          });
          break;
        case '新':
          this.$router.push({
            path: '/projectEngineering/project/previousProjects',
            query: {
              projectCategory: '2'
            }
          });
          break;
        case '建':
          this.$router.push({
            path: '/projectEngineering/project/implementationProject',
            query: {
              projectCategory: '3'
            }
          });
          break;
        case '竣':
          this.$router.push({
            path: '/projectEngineering/project/completedProjects',
            query: {
              projectCategory: '4'
            }
          });
          break;
        case '省':
          this.$router.push({
            path: '/projectEngineering/project/projectLibrary',
            query: {
              importanceType: 'provincial_key'
            }
          });
          break;
        case '县':
          this.$router.push({
            path: '/projectEngineering/project/projectLibrary',
            query: {
              importanceType: 'shehong_key'
            }
          });
          break;
        case '市':
          this.$router.push({
            path: '/projectEngineering/project/projectLibrary',
            query: {
              importanceType: 'suining_key'
            }
          });
          break;
        case '普':
          this.$router.push({
            path: '/projectEngineering/project/projectLibrary',
            query: {
              importanceType: 'normal'
            }
          });
          break;
        default:
          break;
      }
    }
  }
}
</script>
<style lang="scss" scoped>
.overview-bottom {
    display: flex;
    justify-content: space-between;
  display: flex;
  justify-content: space-between;
    .abnormal {
        position: relative;
        width: 25%;
        min-width: 342px;
        height: 200px;
        background-image: url(../../assets/images/b.png);
        background-size: 100% auto;
        border-radius: 6px;
        font-size: 16px;
        color: #ffffff;
        padding: 20px 0 0 20px;
  .abnormal {
    position: relative;
    width: 25%;
    min-width: 342px;
    height: 200px;
    background-image: url(../../assets/images/b.png);
    background-size: 100% auto;
    border-radius: 6px;
    font-size: 16px;
    color: #ffffff;
    padding: 20px 0 0 20px;
        .abnormal-center {
            margin-bottom: 15px;
        }
        .abnormal-img {
            position: absolute;
            right: 50px;
            bottom: 20px;
            width: 100px;
            height: 100px;
            background-image: url(../../assets/images/c.png);
        }
    .abnormal-center {
      margin-bottom: 15px;
    }
    .custom-min-width {
        min-width: 1250px;
        width: 1250px;
    .abnormal-img {
      position: absolute;
      right: 50px;
      bottom: 20px;
      width: 100px;
      height: 100px;
      background-image: url(../../assets/images/c.png);
    }
  }
    .listings {
        width: 300px;
        height: 90px;
        border-radius: 6px;
        display: flex;
        align-items: center;
        .title {
            width: 45px;
            height: 45px;
            font-size: 24px;
            border-radius: 8px;
            line-height: 45px;
            text-align: center;
            margin-left: 15px;
            color: #ffffff;
        }
        .active {
            background-color: #3369ff;
        }
        .conter {
            margin-left: 10px;
            .mun {
                font-size: 30px;
                line-height: 32px;
            }
            .statistics {
                width: 200px;
                display: flex;
                justify-content: space-between;
                align-items: center;
                // .statistics-mun {
                //     // color: #3369FF;
                // }
            }
        }
    }
}
.overview-div {
  .custom-min-width {
    min-width: 1250px;
    width: 1250px;
    gap: 10px;
    flex-wrap: wrap;
  }
  .listings {
    width: 300px;
    height: 90px;
    border-radius: 6px;
    display: flex;
    margin-left: 10px;
    align-items: center;
    .title {
      width: 45px;
      height: 45px;
      font-size: 24px;
      border-radius: 8px;
      line-height: 45px;
      text-align: center;
      margin-left: 15px;
      color: #ffffff;
    }
    .active {
      background-color: #3369ff;
    }
    .conter {
      margin-left: 10px;
      .mun {
        font-size: 30px;
        line-height: 32px;
      }
      .statistics {
        width: 200px;
        display: flex;
        justify-content: space-between;
        align-items: center;
        // .statistics-mun {
        //     // color: #3369FF;
        // }
      }
    }
  }
}
.overview-div {
  min-width: 1250px;
  width: 1250px;
  gap: 10px;
  flex-wrap: wrap;
  display: flex;
  margin-left: 10px;
}
</style>
src/views/projectEngineering/projectLibrary/component/BasicInfo.vue
@@ -508,7 +508,7 @@
        this.$message.success('获取地址成功');
        this.dialogMap = false;
      } else {
        this.$message.error('获取坐标失败');
        this.$message.error('请先点击地图选择地址');
      }
    },
src/views/projectEngineering/projectLibrary/component/FileDialog.vue
@@ -77,6 +77,7 @@
  },
  data() {
    return {
      queryParams: {},
      uploadRef: null,
      targetColumn: [],
      accept: `.zip`,
@@ -108,49 +109,7 @@
      }
    },
    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期望服务器返回的是blob类型
        headers: {
          'Content-Type': 'application/json',
          Authorization: "Bearer " + getToken()
        }
      })
        .then(response => {
          // 处理文件下载
          const blob = new Blob([response.data], { type: 'application/zip' }); // 指定MIME类型为zip
          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);
        });
      this.download('/project/info/export/template', {}, `项目文件模板_${new Date().getTime()}.zip`)
    },
    submitFileForm() {
      if (this.uploadRef) {
@@ -161,15 +120,17 @@
      this.$emit('fileDialogCancel');
    },
    handleDownloadTargetList() {
      console.log('导出目标列表内容', this.currentColumns);
      this.targetColumn = this.currentColumns.filter(item => item.visible);
      this.queryParams.fieldList = this.currentColumns.filter(item => item.visible).map(item =>item.id);
      this.queryParams.requireFile = false;
      this.download('project/info/export', {
          ...this.queryParams
        }, `项目库${new Date().getTime()}.xlsx`)
    }
  },
  mounted() {
    this.uploadRef = this.$refs.uploadRef;
  },
  created() {
    this.isFileDialogVisible = this.fileDialogVisible;
  }
};
src/views/projectEngineering/projectLibrary/index.vue
@@ -227,6 +227,10 @@
            <template v-if="item.slotName === 'investType'">
              <dict-tag :options="dict.type.sys_investment_type" :value="scope.row.investType"/>
            </template>
            <!-- investType插槽 -->
            <template v-if="item.slotName === 'importanceType'">
              <dict-tag :options="dict.type.sys_key_categories" :value="scope.row.importanceType"/>
            </template>
            <!-- planStartTime -->
            <template v-if="item.slotName === 'planStartTime'">
              {{ scope.row.planStartTime ? scope.row.planStartTime.split('-')[0] + '年' : '' }}
@@ -366,6 +370,7 @@
    };
  },
  created() {
    this.queryParams.importanceType = this.$route.query.importanceType;
    const projectCategory = this.$route.query.projectCategory;
    if (!projectCategory || projectCategory === '1') {
      this.isReserve = true;
@@ -394,7 +399,7 @@
    },
    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,disabled: 'true' }});
    },
    // 新增页面
    add() {
@@ -544,8 +549,8 @@
    /** 删除按钮操作 */
    handleDelete(row) {
      const ids = row.id || this.ids;
      this.$modal.confirm('是否确认删除项目管理基础信息编号为"' + ids + '"的数据项?').then(function () {
        return delInfo(ids);
      this.$modal.confirm('是否确认删除项目:"' + row.projectName + '"的数据项?').then(function () {
        return delProject(ids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
src/views/projectEngineering/projectLibrary/list.js
@@ -19,7 +19,7 @@
  {id: 'area', label: '行政区划', visible: false},
  {id: 'managementCentralizationList', label: '管理归口', visible: false},
  {id: 'projectApprovalType', label: '项目审批类型', visible: false},
  {id: 'importanceType', label: '重点分类', visible: false},
  {id: 'importanceType', label: '重点分类', slotName: 'importanceType', visible: false},
  {id: 'setTime', label: '立项时间', visible: false},
  {id: 'planCompleteTime', label: '计划竣工时间', visible: false},
  {id: 'winUnit', label: '中标单位', visible: false},
@@ -87,90 +87,90 @@
  {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: '项目代码', 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: '计划竣工时间', 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: '建管平台代码', 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: '法人代表', 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 }
  {id: 'projectName', label: '项目名称', visible: true},
  {id: 'projectOwnerUnit', label: '业主单位', visible: true},
  {id: 'projectColorCode', label: '项目码', slotName: 'projectColorCode', visible: true},
  {id: 'projectCode', label: '项目代码', 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: '重点分类', slotName: 'importanceType', visible: false},
  {id: 'setTime', label: '立项时间', visible: false},
  {id: 'planCompleteTime', label: '计划竣工时间', 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: '建管平台代码', 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: '法人代表', 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}
];
src/views/projectEngineering/projectLibrary/projectDetails.vue
@@ -101,6 +101,11 @@
      this.$refs.childRef.reset();
    },
  },
  mounted() {
    if(this.$route.query.disabled){
      this.disabled = true
    }
  }
};
</script>
src/views/projectManage/plan/index.vue
@@ -301,7 +301,6 @@
          }
        })
      })
    }
  }
};
src/views/projectManage/plan/planInfo.vue
@@ -22,12 +22,17 @@
                </el-table-column>
                <el-table-column prop="startTime" label="计划开始时间" width="160" align="center">
                  <template #default="scope">
                    <el-date-picker v-model="scope.row.startTime" type="date" placeholder="选择日期" size="small" style="width: 130px" />
                    <el-date-picker v-model="scope.row.startTime"
                                    type="date"
                                    placeholder="选择日期"
                                    size="small"
                                    style="width: 130px"
                                    value-format="yyyy-MM-dd HH:mm:ss"/>
                  </template>
                </el-table-column>
                <el-table-column prop="endTime" label="计划完成时间" width="160" align="center">
                  <template #default="scope">
                    <el-date-picker v-model="scope.row.endTime" type="date" placeholder="选择日期" size="small" style="width: 130px" />
                    <el-date-picker v-model="scope.row.endTime" type="date" placeholder="选择日期" size="small" style="width: 130px" value-format="yyyy-MM-dd HH:mm:ss"/>
                  </template>
                </el-table-column>
                <el-table-column :label="planInfoData.planTimeFlag === 0 ? '月度' : planInfoData.planTimeFlag === 1 ? '季度' : '年度' " width="100" align="center">
@@ -45,7 +50,7 @@
              </el-table>
              <div style="display: flex; align-items: center;">
                <h1 style="margin: 0;">
                  截止本计划进度完成投资(万元):
                  计划投资金额(万元):
                </h1>
                <el-input
                  placeholder="请输入投资金额"
@@ -72,7 +77,7 @@
import { getPlanInfoData, addPlanInfo, savePlanInfo } from "@/api/projectPlan/index";
export default {
  name: "PlanInfo",
  name: "planInfo",
  data() {
    return {
      loading: true,
@@ -139,6 +144,7 @@
      }
      addPlanInfo(this.addData).then(response => {
        this.handlePlanRecord()
        this.$message.success('上报成功');
      })
    },
    // 重置当前行数据
src/views/projectManage/plan/planInfoCheck.vue
@@ -7,7 +7,7 @@
        <el-card shadow="hover">
          <el-row :gutter="20">
            <el-col :span="24" class="mb-4">
              <el-button type="primary" size="small" @click="handlePlanRecord" style="float: right; margin-bottom: 10px;">返回</el-button>
              <el-button type="primary" size="small" @click="handlePlanRecord" style="float: right; margin-bottom: 10px; margin-left: 10px">返回</el-button>
              <!--项目计划项-->
              <el-table :data="tableData" border stripe style="width: 100%; margin-bottom: 20px">
                <el-table-column prop="index" label="序号" width="50" align="center">
@@ -112,13 +112,11 @@
                    <el-input type="textarea" v-model="scope.row.manageApprovalReply" placeholder="请输入" rows="3" />
                  </template>
                </el-table-column>
                <el-table-column fixed="right" label="操作" align="center">
                  <template #default="scope" v-if="!projectInfoData.managerFlag">
                    <el-button size="small" @click="handleReply(scope.$index)">回复</el-button>
                    <el-button size="small" type="danger" @click="handleReset(scope.$index)">重置</el-button>
                  </template>
                  <template v-if="projectInfoData.managerFlag" #default="scope">
                    <el-button size="small" @click="handleSave(scope.$index)">保存</el-button>
                <el-table-column fixed="right" label="操作" align="center" width="200">
                  <template #default="scope">
                    <el-button v-show="!projectInfoData.managerFlag" size="small" @click="handleReply(scope.$index)">回复</el-button>
                    <el-button v-show="!projectInfoData.managerFlag" size="small" type="danger" @click="handleReset(scope.$index)">重置</el-button>
                    <el-button v-show="projectInfoData.managerFlag" size="small" @click="handleSave(scope.$index)">保存</el-button>
                  </template>
                </el-table-column>
              </el-table>
@@ -163,7 +161,7 @@
import { getPlanInfoData, delayPlanInfo, getDepartmentApproval, getPlanLog, replyExamine, saveExamine } from "@/api/projectPlan/index";
export default {
  name: "PlanInfoCheck",
  name: "planInfoCheck",
  data() {
    return {
      loading: true,
@@ -258,7 +256,7 @@
    },
    /** 返回项目计划记录 */
    handlePlanRecord() {
      this.$router.push({
      this.$router.replace({
        path: '/projectManage/planRecord',
        query: {
          data: this.projectInfoData
src/views/projectManage/plan/planRecord.vue
@@ -41,7 +41,7 @@
            <el-col :span="24" class="mb-4" style="margin-top: 20px">
              <div style="margin-bottom: 10px">
                <span style="font-size: 20px; font-weight: bold;">季度计划</span>
                <el-button type="primary" size="small" style="float: right" @click="handleAddSeasonPlan" v-show="!projectInfoData.managerFlag">查看</el-button>
                <el-button type="primary" size="small" style="float: right" @click="handleAddSeasonPlan" v-show="!projectInfoData.managerFlag">新增</el-button>
              </div>
              <el-table  :data="seasonRecords" border stripe style="width: 100%; margin-bottom: 20px">
                <!-- 表头 -->
@@ -220,7 +220,6 @@
    },
    // 查看项目计划项
    handleCheckPlanInfo(row) {
      console.log(this.projectInfoData);
      this.$router.push({
        path: '/projectManage/planInfoCheck',
        query: {
src/views/projectManage/progress/index.vue
@@ -189,7 +189,7 @@
</template>
<script>
import { getList, getRecord, delRecord, addRecord, updateRecord } from "@/api/projectPlan/index";
import { getList, getManagerFlag } from "@/api/projectPlan/index";
export default {
  name: "Index",
@@ -280,46 +280,7 @@
      this.open = true;
      this.title = "添加项目计划记录";
    },
    /** 修改按钮操作 */
    handleUpdate(row) {
      this.reset();
      const id = row.id || this.ids
      getRecord(id).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改项目计划记录";
      });
    },
    /** 提交按钮 */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.id != null) {
            updateRecord(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addRecord(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** 删除按钮操作 */
    handleDelete(row) {
      const ids = row.id || this.ids;
      this.$modal.confirm('是否确认删除项目计划记录编号为"' + ids + '"的数据项?').then(function() {
        return delRecord(ids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** 导出按钮操作 */
    handleExport() {
      this.download('plan/record/export', {
@@ -328,11 +289,16 @@
    },
    /** 查看项目计划记录 */
    handlePlanRecord(row) {
      this.$router.push({
        path: '/projectManage/progressRecord',
        query: {
          data: JSON.stringify(row)
        }
      // 获得主管标志
      getManagerFlag(row.id).then(res => {
        this.managerFlag = res.data;
        row.managerFlag = this.managerFlag;
        this.$router.push({
          path: '/projectManage/progressRecord',
          query: {
            data: row
          }
        })
      })
    }
  }
src/views/projectManage/progress/progressRecord.vue
@@ -31,8 +31,9 @@
                    <el-table-column prop="endTime" label="计划完成时间" align="center" />
                    <el-table-column fixed="right" label="操作" align="center">
                      <template slot-scope="scope">
                        <el-button type="primary" size="small" :disabled="scope.row.progressStatus === 1 || scope.row.progressStatus === 3" @click="handleProgressReport(scope.row)">进度上报</el-button>
                        <el-button type="primary" size="small" @click="handleCheckProgress(scope.row)">查看</el-button>
                        <el-button v-if="!projectInfoData.managerFlag" type="primary" size="small" :disabled="scope.row.progressStatus === 1 || scope.row.progressStatus === 3" @click="handleProgressReport(scope.row)">进度上报</el-button>
                        <el-button v-if="!projectInfoData.managerFlag" type="primary" size="small" @click="handleCheckProgress(scope.row)">查看</el-button>
                        <el-button v-if="projectInfoData.managerFlag" type="primary" size="small" @click="handleCheckProgress(scope.row)">审核</el-button>
                      </template>
                    </el-table-column>
                  </el-table>
@@ -59,8 +60,9 @@
                    <el-table-column prop="endTime" label="计划完成时间" align="center" />
                    <el-table-column fixed="right" label="操作" align="center">
                      <template slot-scope="scope">
                        <el-button type="primary" size="small" :disabled="scope.row.progressStatus === 1 || scope.row.progressStatus === 3" @click="handleProgressReport(scope.row)">进度上报</el-button>
                        <el-button type="primary" size="small" @click="handleCheckProgress(scope.row)">查看</el-button>
                        <el-button v-if="!projectInfoData.managerFlag" type="primary" size="small" :disabled="scope.row.progressStatus === 1 || scope.row.progressStatus === 3" @click="handleProgressReport(scope.row)">进度上报</el-button>
                        <el-button v-if="!projectInfoData.managerFlag" type="primary" size="small" @click="handleCheckProgress(scope.row)">查看</el-button>
                        <el-button v-if="projectInfoData.managerFlag" type="primary" size="small" @click="handleCheckProgress(scope.row)">审核</el-button>
                      </template>
                    </el-table-column>
                  </el-table>
@@ -87,8 +89,9 @@
                    <el-table-column prop="endTime" label="计划完成时间" align="center" />
                    <el-table-column fixed="right" label="操作" align="center">
                      <template slot-scope="scope">
                        <el-button type="primary" size="small" :disabled="scope.row.progressStatus === 1 || scope.row.progressStatus === 3" @click="handleProgressReport(scope.row)">进度上报</el-button>
                        <el-button type="primary" size="small" @click="handleCheckProgress(scope.row)">查看</el-button>
                        <el-button v-if="!projectInfoData.managerFlag" type="primary" size="small" :disabled="scope.row.progressStatus === 1 || scope.row.progressStatus === 3" @click="handleProgressReport(scope.row)">进度上报</el-button>
                        <el-button v-if="!projectInfoData.managerFlag" type="primary" size="small" @click="handleCheckProgress(scope.row)">查看</el-button>
                        <el-button v-if="projectInfoData.managerFlag" type="primary" size="small" @click="handleCheckProgress(scope.row)">审核</el-button>
                      </template>
                    </el-table-column>
                  </el-table>
@@ -130,42 +133,57 @@
                <el-date-picker v-model="progressReportData.endTime" type="date" placeholder="选择日期" size="small" style="width: 130px" readonly/>
              </el-form-item>
              <el-form-item label="实际完成时间:" :label-width="formLabelWidth">
                <el-date-picker v-model="progressReportData.actualStartTime" type="date" placeholder="选择日期" size="small" style="width: 130px" :readonly="checkFlag"/>
                <el-date-picker v-model="progressReportData.actualStartTime" type="date" placeholder="选择日期" size="small" style="width: 130px" :readonly="checkFlag && projectInfoData.managerFlag"/>
                至
                <el-date-picker v-model="progressReportData.actualEndTime" type="date" placeholder="选择日期" size="small" style="width: 130px" :readonly="checkFlag"/>
                <el-date-picker v-model="progressReportData.actualEndTime" type="date" placeholder="选择日期" size="small" style="width: 130px" :readonly="checkFlag && projectInfoData.managerFlag"/>
              </el-form-item>
              <el-form-item label="进度情况:" :label-width="formLabelWidth">
                <el-input type="textarea" v-model="progressReportData.progressStatus" placeholder="请输入" rows="3" :readonly="checkFlag" />
                <el-input type="textarea" v-model="progressReportData.progressStatus" placeholder="请输入" rows="3" :readonly="checkFlag && projectInfoData.managerFlag" />
              </el-form-item>
              <el-form-item prop="fileList" label="工程进度附件:" :label-width="formLabelWidth">
              <el-form-item label="工程进度附件:" :label-width="formLabelWidth">
                <file-upload v-model="progressReportData.fileList"
                             :fileType="accept"
                             :isShowTip="false"/>
              </el-form-item>
              <el-form-item label="截止本报告完成投资:" :label-width="formLabelWidth">
                <el-input v-model="progressReportData.actualInvest" type="number" :readonly="checkFlag" />
                <el-input v-model="progressReportData.actualInvest" type="number" :readonly="checkFlag && projectInfoData.managerFlag" />
              </el-form-item>
              <el-form-item label="上级审核:" :label-width="formLabelWidth">
                <el-input :value="progressReportData.departmentExamine === 0 ? '同意' : progressReportData.departmentExamine === 1 ? '驳回' : '未审核'" readonly />
                <el-input v-if="!projectInfoData.managerFlag" :value="progressReportData.departmentExamine === 0 ? '同意' : progressReportData.departmentExamine === 1 ? '驳回' : '未审核'" readonly />
                <el-select v-if="projectInfoData.managerFlag" v-model="progressReportData.departmentExamine" placeholder="请选择" size="small" clearable>
                  <el-option label="同意" :value="0"></el-option>
                  <el-option label="驳回" :value="1"></el-option>
                  <el-option label="请选择" :value="null"></el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="上级批复:" :label-width="formLabelWidth">
                <el-input v-model="progressReportData.departmentApproval" readonly />
                <el-input v-if="!projectInfoData.managerFlag" v-model="progressReportData.departmentApproval" readonly />
                <el-input v-if="projectInfoData.managerFlag" v-model="progressReportData.departmentApproval" />
              </el-form-item>
              <el-form-item label="上级批复回复:" :label-width="formLabelWidth">
                <el-input type="textarea" v-model="progressReportData.departmentApprovalReply" placeholder="请输入" rows="3" :readonly="checkFlag" />
                <el-input v-if="!projectInfoData.managerFlag" type="textarea" v-model="progressReportData.departmentApprovalReply" placeholder="请输入" rows="3" />
                <el-input v-if="projectInfoData.managerFlag" type="textarea" v-model="progressReportData.departmentApprovalReply" placeholder="请输入" rows="3" :readonly="checkFlag" />
              </el-form-item>
              <el-form-item label="主管部门审核:" :label-width="formLabelWidth">
                <el-input :value="progressReportData.manageExamine === 0 ? '同意' : progressReportData.manageExamine === 1 ? '驳回' : '未审核'" readonly />
                <el-input v-if="!projectInfoData.managerFlag" :value="progressReportData.manageExamine === 0 ? '同意' : progressReportData.manageExamine === 1 ? '驳回' : '未审核'" readonly />
                <el-select v-if="projectInfoData.managerFlag" v-model="progressReportData.manageExamine" placeholder="请选择" size="small" clearable>
                  <el-option label="请选择" :value="null"></el-option>
                  <el-option label="同意" :value="0"></el-option>
                  <el-option label="驳回" :value="1"></el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="主管部门审核批复:" :label-width="formLabelWidth">
                <el-input v-model="progressReportData.manageApproval" readonly />
                <el-input v-if="!projectInfoData.managerFlag" v-model="progressReportData.manageApproval" readonly />
                <el-input v-if="projectInfoData.managerFlag" v-model="progressReportData.manageApproval" />
              </el-form-item>
              <el-form-item label="主管部门批复回复:" :label-width="formLabelWidth">
                <el-input type="textarea" v-model="progressReportData.manageApprovalReply" placeholder="请输入" rows="3" :readonly="checkFlag" />
                <el-input v-if="!projectInfoData.managerFlag" type="textarea" v-model="progressReportData.manageApprovalReply" placeholder="请输入" rows="3" />
                <el-input v-if="projectInfoData.managerFlag" type="textarea" v-model="progressReportData.manageApprovalReply" placeholder="请输入" rows="3" :readonly="checkFlag" />
              </el-form-item>
            </el-form>
            <div slot="footer" class="dialog-footer">
              <el-button type="primary" @click="handleRecordSubmit" v-if="!checkFlag">上 报</el-button>
              <el-button type="primary" @click="handleRecordSubmit" v-if="!checkFlag && !projectInfoData.managerFlag">上 报</el-button>
              <el-button type="primary" @click="handleExamine" v-if="projectInfoData.managerFlag">审 批</el-button>
              <el-button @click="handleCancel">取 消</el-button>
            </div>
          </el-dialog>
@@ -176,11 +194,11 @@
</template>
<script>
import { getProgressInfoList, getProgressReport, recordSubmit, saveProjectProgressFileLists, getProjectProgressForm } from "@/api/projectManage/progress/index";
import { getProgressInfoList, getProgressReport, recordSubmit, saveProjectProgressFileLists, getProjectProgressForm, examine } from "@/api/projectManage/progress/index";
import progressRecord from "./progressRecord.vue";
export default {
  name: "ProgressRecord",
  name: "progressRecord",
  computed: {
    progressRecord() {
      return progressRecord
@@ -215,16 +233,14 @@
  },
  methods: {
    search() {
      this.getProjectInfoData()
      this.getProjectProgressForm(this.projectInfoData.id);
      this.getProgressInfoList(this.projectInfoData.id);
    },
    // 获取传递过来的项目计划详情
    getProjectInfoData() {
      // 从查询参数中获取数据
      if (this.$route.query.data) {
        this.projectInfoData = JSON.parse(this.$route.query.data);
        this.getProgressInfoList(this.projectInfoData.id);
      }
        this.projectInfoData = this.$route.query.data;
        this.search();
    },
    getProjectProgressForm(id) {
      getProjectProgressForm(id).then(res => {
@@ -254,6 +270,14 @@
        this.search();
      })
    },
    // 审批
    handleExamine() {
      examine(this.progressReportData).then(res => {
        this.dialogFormVisible = false;
        this.$message.success('审批成功');
        this.search();
      })
    },
    // 查看进度
    handleCheckProgress(row) {
      this.dialogFormVisible = true;
@@ -278,7 +302,7 @@
    }
  },
  created() {
    this.search();
    this.getProjectInfoData()
  },
};
</script>