xiangpei
2024-12-06 46938cceac78a6fb325652cf4e1183d4158c03be
Merge remote-tracking branch 'origin/master'
3个文件已修改
237 ■■■■ 已修改文件
src/api/projectManage/progress/index.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/projectManage/plan/planInfoCheck.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/projectManage/progress/progressRecord.vue 227 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/projectManage/progress/index.js
@@ -75,5 +75,13 @@
  })
}
export function reply(data) {
  return request({
    url: '/api/project-plan-examine-record/reply',
    method: 'post',
    data: data
    })
}
src/views/projectManage/plan/planInfoCheck.vue
@@ -17,7 +17,7 @@
                </el-table-column>
                <el-table-column prop="taskName" label="事项名称" width="500" align="center">
                  <template #default="scope">
                    <el-input type="textarea" v-model="scope.row.title" placeholder="请输入" rows="3" readonly />
                    <el-input type="textarea" v-model="scope.row.title" placeholder="请输入" rows="3" :readonly="scope.row.planStatus !== 1" />
                  </template>
                </el-table-column>
                <el-table-column prop="startTime" label="计划开始时间" width="160" align="center" >
src/views/projectManage/progress/progressRecord.vue
@@ -24,16 +24,22 @@
                    <el-table-column prop="title" label="事项名称" align="center" />
                    <el-table-column prop="progressStatus" label="进度情况" align="center">
                      <template slot-scope="scope">
                        {{ scope.row.progressStatus === 0 ? '未完成' : scope.row.progressStatus === 1 ? '待审核' : scope.row.progressStatus === 2 ? '已驳回' : '已完成'}}
                        {{ scope.row.progressStatus === 3 ? '已通过' : scope.row.progressStatus === 2 ? '已驳回' : scope.row.progressStatus === 1 ?'未审核' : '未开始'}}
                      </template>
                    </el-table-column>
                    <el-table-column prop="startTime" label="计划开始时间" align="center" />
                    <el-table-column prop="endTime" label="计划完成时间" align="center" />
                    <el-table-column fixed="right" label="操作" align="center">
                      <template slot-scope="scope">
                        <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>
                        <div v-if="!projectInfoData.managerFlag">
                          <el-button type="primary" size="small" v-if="scope.row.progressStatus === 0" @click="handleProgressReport(scope.row)">进度上报</el-button>
                          <el-button type="primary" size="small" v-if="scope.row.progressStatus === 2" @click="handleReportAgain(scope.row)">重新上报</el-button>
                          <el-button type="primary" size="small" v-if="scope.row.progressStatus !== 0" @click="handleCheckProgress(scope.row)">查看</el-button>
                        </div>
                        <div v-if="projectInfoData.managerFlag">
                          <el-button type="primary" size="small" v-if="scope.row.progressStatus === 1" @click="handleOpenExamine(scope.row)">审核</el-button>
                          <el-button type="primary" size="small" v-if="scope.row.progressStatus === 2 || scope.row.progressStatus === 3" @click="handleCheckProgress(scope.row)">查看</el-button>
                        </div>
                      </template>
                    </el-table-column>
                  </el-table>
@@ -53,16 +59,21 @@
                    <el-table-column prop="title" label="事项名称" align="center" />
                    <el-table-column prop="progressStatus" label="进度情况" align="center">
                      <template slot-scope="scope">
                        {{ scope.row.progressStatus === 0 ? '未完成' : scope.row.progressStatus === 1 ? '待审核' : scope.row.progressStatus === 2 ? '已驳回' : '已完成'}}
                        {{ scope.row.progressStatus === 3 ? '已通过' : scope.row.progressStatus === 2 ? '已驳回' : scope.row.progressStatus === 1 ?'未审核' : '未开始'}}
                      </template>
                    </el-table-column>
                    <el-table-column prop="startTime" label="计划开始时间" align="center" />
                    <el-table-column prop="endTime" label="计划完成时间" align="center" />
                    <el-table-column fixed="right" label="操作" align="center">
                      <template slot-scope="scope">
                        <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>
                        <div v-if="!projectInfoData.managerFlag">
                          <el-button type="primary" size="small" v-if="scope.row.progressStatus === 0" @click="handleProgressReport(scope.row)">进度上报</el-button>
                          <el-button type="primary" size="small" v-if="scope.row.progressStatus === 2" @click="handleReportAgain(scope.row)">重新上报</el-button>
                          <el-button type="primary" size="small" v-if="scope.row.progressStatus !== 0" @click="handleCheckProgress(scope.row)">查看</el-button>
                        </div>
                        <div v-if="projectInfoData.managerFlag">
                          <el-button type="primary" size="small" v-if="scope.row.progressStatus === 1" @click="handleOpenExamine(scope.row)">审核</el-button>
                        </div>
                      </template>
                    </el-table-column>
                  </el-table>
@@ -82,16 +93,21 @@
                    <el-table-column prop="title" label="事项名称" align="center" />
                    <el-table-column prop="progressStatus" label="进度情况" align="center">
                      <template slot-scope="scope">
                        {{ scope.row.progressStatus === 0 ? '未完成' : scope.row.progressStatus === 1 ? '待审核' : scope.row.progressStatus === 2 ? '已驳回' : '已完成'}}
                        {{ scope.row.progressStatus === 3 ? '已通过' : scope.row.progressStatus === 2 ? '已驳回' : scope.row.progressStatus === 1 ?'未审核' : '未开始'}}
                      </template>
                    </el-table-column>
                    <el-table-column prop="startTime" label="计划开始时间" align="center" />
                    <el-table-column prop="endTime" label="计划完成时间" align="center" />
                    <el-table-column fixed="right" label="操作" align="center">
                      <template slot-scope="scope">
                        <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>
                        <div v-if="!projectInfoData.managerFlag">
                          <el-button type="primary" size="small" v-if="scope.row.progressStatus === 0" @click="handleProgressReport(scope.row)">进度上报</el-button>
                          <el-button type="primary" size="small" v-if="scope.row.progressStatus === 2" @click="handleReportAgain(scope.row)">重新上报</el-button>
                          <el-button type="primary" size="small" v-if="scope.row.progressStatus !== 0" @click="handleCheckProgress(scope.row)">查看</el-button>
                        </div>
                        <div v-if="projectInfoData.managerFlag">
                          <el-button type="primary" size="small" v-if="scope.row.progressStatus === 1" @click="handleOpenExamine(scope.row)">审核</el-button>
                        </div>
                      </template>
                    </el-table-column>
                  </el-table>
@@ -119,7 +135,7 @@
            </div>
          </el-row>
          <el-dialog :title=" checkFlag ? '进度查看' : '进度上报' " :visible.sync="dialogFormVisible" custom-class="custom-dialog" :close-on-click-modal="false" @close="handleCancel">
          <el-dialog :title=" dialogFlag === 1 ? '进度查看' : '进度上报' " :visible.sync="dialogFormVisible" custom-class="custom-dialog" :close-on-click-modal="false" @close="handleCancel">
            <el-form :model="progressReportData">
              <el-form-item label="报告期:" :label-width="formLabelWidth">
                <el-input :value="progressReportData.planTime + (progressReportData.planTimeFlag === 0 ? '月度' : progressReportData.planTimeFlag === 1 ? '季度' : '年度')" readonly />
@@ -133,12 +149,28 @@
                <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 && projectInfoData.managerFlag"/>
                <el-date-picker
                  v-model="progressReportData.actualStartTime"
                  type="date"
                  placeholder="选择日期"
                  size="small"
                  style="width: 130px"
                  :readonly="projectInfoData.managerFlag || dialogFlag !== 0"/>
                至
                <el-date-picker v-model="progressReportData.actualEndTime" 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="projectInfoData.managerFlag || dialogFlag !== 0"/>
              </el-form-item>
              <el-form-item label="进度情况:" :label-width="formLabelWidth">
                <el-input type="textarea" v-model="progressReportData.progressStatus" placeholder="请输入" rows="3" :readonly="checkFlag && projectInfoData.managerFlag" />
                <el-input
                  type="textarea"
                  v-model="progressReportData.progressStatusStr"
                  placeholder="请输入" rows="3"
                  :readonly="projectInfoData.managerFlag || dialogFlag !== 0" />
              </el-form-item>
              <el-form-item label="工程进度附件:" :label-width="formLabelWidth">
                <file-upload v-model="progressReportData.fileList"
@@ -146,45 +178,119 @@
                             :isShowTip="false"/>
              </el-form-item>
              <el-form-item label="截止本报告完成投资:" :label-width="formLabelWidth">
                <el-input v-model="progressReportData.actualInvest" type="number" :readonly="checkFlag && projectInfoData.managerFlag" />
                <el-input
                  v-model="progressReportData.actualInvest"
                  type="number"
                  :readonly="projectInfoData.managerFlag || dialogFlag !== 0" />
              </el-form-item>
              <el-form-item label="上级审核:" :label-width="formLabelWidth">
                <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>
                <div v-if="!projectInfoData.managerFlag">
                  <el-input
                    :value="progressReportData.departmentExamine === 0 ? '同意' : progressReportData.departmentExamine === 1 ? '驳回' : '未审核'"
                    readonly />
                </div>
                <div v-if="projectInfoData.managerFlag">
                  <el-select
                    v-model="progressReportData.departmentExamine"
                    placeholder="请选择"
                    size="small"
                    :disabled="progressReportData.progressStatusInt === 2 || progressReportData.progressStatusInt === 3"
                    clearable>
                    <el-option label="同意" :value="0"></el-option>
                    <el-option label="驳回" :value="1"></el-option>
                    <el-option label="请选择" :value="null"></el-option>
                  </el-select>
                </div>
              </el-form-item>
              <el-form-item label="上级批复:" :label-width="formLabelWidth">
                <el-input v-if="!projectInfoData.managerFlag" v-model="progressReportData.departmentApproval" readonly />
                <el-input v-if="projectInfoData.managerFlag" v-model="progressReportData.departmentApproval" />
                <div v-if="!projectInfoData.managerFlag">
                  <el-input v-model="progressReportData.departmentApproval" readonly />
                </div>
                <div v-if="projectInfoData.managerFlag">
                  <el-input
                    v-model="progressReportData.departmentApproval"
                    :readonly="progressReportData.progressStatusInt === 2 || progressReportData.progressStatusInt === 3"/>
                </div>
              </el-form-item>
              <el-form-item label="上级批复回复:" :label-width="formLabelWidth">
                <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" />
                <div v-if="!projectInfoData.managerFlag">
                  <el-input
                    type="textarea"
                    v-model="progressReportData.departmentApprovalReply"
                    :readonly="dialogFlag === 0 || progressReportData.progressStatusInt === 1"
                    placeholder="请输入"
                    rows="3" />
                </div>
                <div v-if="projectInfoData.managerFlag">
                  <el-input
                    type="textarea"
                    v-model="progressReportData.departmentApprovalReply"
                    placeholder="请输入"
                    rows="3"
                    readonly/>
                </div>
              </el-form-item>
              <el-form-item label="主管部门审核:" :label-width="formLabelWidth">
                <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>
                <div v-if="!projectInfoData.managerFlag">
                  <el-input
                    :value="progressReportData.manageExamine === 0 ? '同意' : progressReportData.manageExamine === 1 ? '驳回' : '未审核'"
                    readonly />
                </div>
                <div v-if="projectInfoData.managerFlag">
                  <el-select
                    v-model="progressReportData.manageExamine"
                    placeholder="请选择"
                    size="small"
                    :disabled="progressReportData.progressStatusInt === 2 || progressReportData.progressStatusInt === 3"
                    clearable>
                    <el-option label="请选择" :value="null"></el-option>
                    <el-option label="同意" :value="0"></el-option>
                    <el-option label="驳回" :value="1"></el-option>
                  </el-select>
                </div>
              </el-form-item>
              <el-form-item label="主管部门审核批复:" :label-width="formLabelWidth">
                <el-input v-if="!projectInfoData.managerFlag" v-model="progressReportData.manageApproval" readonly />
                <el-input v-if="projectInfoData.managerFlag" v-model="progressReportData.manageApproval" />
              <el-form-item label="主管部门批复:" :label-width="formLabelWidth">
                <div v-if="!projectInfoData.managerFlag">
                  <el-input
                    v-model="progressReportData.manageApproval"
                    readonly />
                </div>
                <div v-if="projectInfoData.managerFlag">
                  <el-input
                    :readonly="progressReportData.progressStatusInt === 2 || progressReportData.progressStatusInt === 3"
                    v-model="progressReportData.manageApproval" />
                </div>
              </el-form-item>
              <el-form-item label="主管部门批复回复:" :label-width="formLabelWidth">
                <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" />
                <div v-if="!projectInfoData.managerFlag">
                  <el-input
                    type="textarea"
                    v-model="progressReportData.manageApprovalReply"
                    :readonly="dialogFlag === 0 || progressReportData.progressStatusInt === 1"
                    placeholder="请输入"
                    rows="3" />
                </div>
                <div v-if="projectInfoData.managerFlag">
                  <el-input
                    type="textarea"
                    v-model="progressReportData.manageApprovalReply"
                    placeholder="请输入"
                    rows="3"
                    readonly/>
                </div>
              </el-form-item>
            </el-form>
            <div slot="footer" class="dialog-footer">
              <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 v-if="!projectInfoData.managerFlag">
                <el-button type="primary" @click="handleRecordSubmit" v-if="dialogFlag === 0">上 报</el-button>
                <el-button @click="handleReply" v-if="isShowReplyBtn && (progressReportData.progressStatusInt === 2 || progressReportData.progressStatusInt === 3)">回 复</el-button>
                <el-button @click="handleCancel">取 消</el-button>
              </div>
              <div v-if="projectInfoData.managerFlag">
                <el-button type="primary" @click="handleExamine" v-if="dialogFlag === 2">审 批</el-button>
                <el-button @click="handleCancel">取 消</el-button>
              </div>
            </div>
          </el-dialog>
        </el-card>
@@ -194,7 +300,7 @@
</template>
<script>
import { getProgressInfoList, getProgressReport, recordSubmit, saveProjectProgressFileLists, getProjectProgressForm, examine } from "@/api/projectManage/progress/index";
import { getProgressInfoList, getProgressReport, recordSubmit, saveProjectProgressFileLists, getProjectProgressForm, examine, reply } from "@/api/projectManage/progress/index";
import progressRecord from "./progressRecord.vue";
export default {
@@ -215,7 +321,9 @@
      dialogFormVisible: false,
      // 查看显示
      checkFlag: false,
      dialogFlag: 0,// 上报、重新上报:0,查看:1,审核:2
      // 是否展示回复按钮
      isShowReplyBtn: true,
      progressReportData: {},
      formLabelWidth: '150px',
@@ -257,6 +365,16 @@
    },
    // 进度上报
    handleProgressReport(row) {
      this.dialogFlag = 0;
      this.dialogFormVisible = true;
      getProgressReport(row.id).then(res => {
        this.progressReportData = res.data;
      })
    },
    // 重新上报
    handleReportAgain(row) {
      this.dialogFlag = 0;
      this.isShowReplyBtn = false;
      this.dialogFormVisible = true;
      getProgressReport(row.id).then(res => {
        this.progressReportData = res.data;
@@ -270,6 +388,14 @@
        this.search();
      })
    },
    // 回复
    handleReply() {
      reply(this.progressReportData).then(res => {
        // this.dialogFormVisible = false;
        this.$message.success('回复成功');
        this.search();
      })
    },
    // 审批
    handleExamine() {
      examine(this.progressReportData).then(res => {
@@ -278,10 +404,18 @@
        this.search();
      })
    },
    // 查看进度
    // 打开查看进度弹窗
    handleCheckProgress(row) {
      this.dialogFormVisible = true;
      this.checkFlag = true;
      this.dialogFlag = 1;
      getProgressReport(row.id).then(res => {
        this.progressReportData = res.data;
      })
    },
    // 打开审核弹窗
    handleOpenExamine(row) {
      this.dialogFormVisible = true;
      this.dialogFlag = 2;
      getProgressReport(row.id).then(res => {
        this.progressReportData = res.data;
      })
@@ -289,7 +423,8 @@
    // 关闭弹窗
    handleCancel() {
      this.dialogFormVisible = false;
      this.checkFlag = false;
      this.isShowReplyBtn = true;
      this.dialogFlag = 0;
    },
    // 保存
    handleSave() {