xiangpei
2025-05-06 5c929cfb5286a31a4e067cbc61e8774f4e7d42ae
src/views/projectProcess/index.vue
@@ -44,111 +44,104 @@
            <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="500" 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>
<!--          <el-popover :value="popoverValue" trigger="click" :width="500" 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.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-col :span="12">-->
<!--                  <el-form-item label="项目码">-->
<!--                    <el-select v-model="queryParams.coding" 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-row>-->
<!--              <el-row>-->
<!--              </el-row>-->
<!--              <el-row>-->
<!--                <el-col :span="12">-->
<!--                  <el-form-item label="资金类型">-->
<!--                    <el-select v-model="queryParams.fundType" 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">
          <div>
@@ -179,50 +172,39 @@
    </el-form>
    <el-table
      :key="tableKey"
      ref="elTable"
      style="margin-top: 20px"
      v-loading="loading"
      :data="projectInfoList"
      @selection-change="handleSelectionChange"
      height="60vh"
      height="100%"
      sortable="custom"
      row-key="id"
      border
      default-expand-all
      :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
      :show-overflow-tooltip="true">
      <el-table-column type="selection" width="55" align="center"/>
      <!-- 动态列 -->
      <el-table-column
        v-for="item in columns"
        :key="item.id"
        v-if="item.visible"
        :prop="item.id"
        :label="item.label"
        :min-width="item.minWidth"
      >
      <el-table-column label="项目名称" min-width="250" :show-overflow-tooltip="true" prop="projectName" />
      <el-table-column label="项目推进类型" align="center" prop="projectType">
        <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>
          </template>
          <!-- 默认显示 -->
          <span v-else>{{ scope.row[item.id] }}</span>
          <dict-tag :options="dict.type.sys_project_type" :value="scope.row.projectType"/>
        </template>
      </el-table-column>
      <el-table-column label="主管部门" align="center" prop="competentDepartmentName">
      </el-table-column>
      <el-table-column label="业主单位" align="center" prop="projectOwnerUnitName">
      </el-table-column>
      <el-table-column label="年份" align="center" prop="year">
        <template slot-scope="scope">
          {{ scope.row.year ? scope.row.year + '年' : '' }}
        </template>
      </el-table-column>
      <el-table-column label="投资额(万)" align="center" prop="investmentAmount" />
      <el-table-column label="开工状态" align="center" prop="status">
        <template slot-scope="scope">
          <dict-tag :options="dict.type.sys_project_status" :value="scope.row.status"/>
        </template>
      </el-table-column>
      <el-table-column label="建设内容" align="center" prop="buildContent"/>
      <!-- 操作列 -->
      <el-table-column label="操作" width="140" align="center" >
        <template slot-scope="scope">
@@ -230,6 +212,7 @@
                      size="medium"
                      type="text"
                      icon="el-icon-view"
                      v-if="scope.row.processInsId"
                      @click="lookProcessDetail(scope.row)"
                    >
                    </el-button>
@@ -258,7 +241,7 @@
    <pagination
      v-show="total>0"
      :total="total"
      :page.sync="queryParams.pageNum"
      :page.sync="queryParams.currentPage"
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
    />
@@ -272,8 +255,10 @@
    <RunProcess ref="runProcess" :show="showRunProcess"
                :now-process-def-id="nowProcessDefId"
                :now-process-ins-id="nowProcessInsId"
                :project-info="projectRunFrom"
                :process-list="processList"
                :project-type="projectType"
                @close="closeRunProcess">
    </RunProcess>
  </div>
@@ -283,7 +268,7 @@
import { listDefinition } from "@/api/flowable/definition";
import {listInfo, getInfo, delInfo, addInfo, updateInfo} from "@/api/projectEngineering/projectInfo";
import { getProjectProcess } from "@/api/projectProcess/projectProcess"
import {current, currentRest} from '@/views/projectEngineering/projectLibrary/list';
import {projectProcessCurrent, projectProcessCurrentRest} from '@/views/projectEngineering/projectLibrary/list';
import FileDialog from '@/views/projectEngineering/projectLibrary/component/FileDialog';
import RunProcess from "@/views/projectProcess/components/RunProcess";
import {getProcessConfigInfoList} from "@/api/projectProcess/processConfigInfo";
@@ -298,6 +283,7 @@
  },
  data() {
    return {
      projectType: '',
      projectRunFrom: {
        projectId: null,
        projectName: ''
@@ -305,6 +291,7 @@
      processList: [],
      showRunProcess: false,
      nowProcessDefId: '',
      nowProcessInsId: '',
      isImportOrExport: false,
      fileDialogVisible: false,
      //是否需要新增按钮(储蓄项目需要)
@@ -338,7 +325,7 @@
      timeRange: [],
      // 查询参数
      queryParams: {
        pageNum: 1,
        currentPage: 1,
        pageSize: 10,
        projectName: null,
        projectCode: null,
@@ -347,7 +334,7 @@
        projectType: '', // 项目类型
        importanceType: '', // 重点分类
        projectStatus: '', // 项目状态
        projectColorCode: '', // 项目码
        coding: '', // 项目码
        investmentType: '', // 资金类型
        projectPhase: '', // 项目阶段
        investType: '', // 投资类别
@@ -376,7 +363,7 @@
    if(projectCategory){
      this.isProjectCategory = true;
    }
    const columns = current.map((item, index) => {
    const columns = projectProcessCurrent.map((item, index) => {
      item.index = index + 1;
      item.key = index;
      item.serialNumber = index + 1;
@@ -389,12 +376,15 @@
  methods: {
    // 查看详情
    lookProcessDetail(row) {
      console.log(row.processDefId)
      sessionStorage.removeItem("projectProDetail")
      this.$router.push({
        path: '/projectFlow/detail',
        query: {
          projectId: row.id,
          processDefId: row.processDefId
          processDefId: row.processDefId,
          processInsId: row.processInsId,
          deployId: row.deployId,
          processName: row.flowableProcessName
        }
      })
    },
@@ -403,32 +393,43 @@
        projectId: null,
        projectName: ''
      }
      this.nowProcessDefId = "";
      this.nowProcessInsId = "";
      this.projectType = ""
      this.showRunProcess = false
      this.getList()
    },
    // 打开流程页面
    openOpProcess(row) {
      // 拿到流程列表 TODO 根据项目类型做筛选
      getProcessConfigInfoList().then(response => {
        this.processList = response.data;
        this.nowProcessDefId = row.processDefId;
        // // 防止:id没变不触发监听
        // this.$refs.runProcess.setSelect(row.flowableProcessId);
        this.projectRunFrom.projectId = row.id;
        this.projectRunFrom.projectName = row.projectName;
      this.nowProcessDefId = row.processDefId ? row.processDefId : '';
      this.nowProcessInsId = row.processInsId ? row.processInsId : '';
      const numericPattern = /^\d+(\.\d+)?$/;
      if (numericPattern.test(row.id)) {
        this.projectType = "PROJECT"
      } else {
        this.projectType = "ENGINEERING"
      }
      // // 防止:id没变不触发监听
      // this.$refs.runProcess.setSelect(row.flowableProcessId);
      this.projectRunFrom.projectId = row.id;
      this.projectRunFrom.projectName = row.projectName;
        this.showRunProcess = true;
      });
      this.showRunProcess = true;
      // 拿到流程列表 TODO 根据项目类型做筛选
      // getProcessConfigInfoList().then(response => {
      //   this.processList = response.data;
      //
      // });
    },
    // 重置排序的方法
    handleResetSort() {
      this.defaultColumns = currentRest.map((item, index) => {
      this.defaultColumns = projectProcessCurrentRest.map((item, index) => {
        item.index = index + 1;
        item.key = index;
        item.serialNumber = index + 1
        return item;
      });
      this.columns = currentRest.map((item, index) => {
      this.columns = projectProcessCurrentRest.map((item, index) => {
        item.index = index + 1;
        item.key = index;
        item.serialNumber = index + 1
@@ -477,6 +478,7 @@
      this.loading = true;
      getProjectProcess(this.queryParams).then(response => {
        this.projectInfoList = response.data;
        console.log(this.projectInfoList)
        this.total = response.total;
        this.loading = false;
      });
@@ -529,7 +531,7 @@
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.queryParams.currentPage = 1;
      this.getList();
    },
    /** 重置按钮操作 */