fix: 修改进度管理Ag模块中页面的交互与样式

This commit is contained in:
kun 2024-07-03 17:55:35 +08:00
parent 0c34ffd978
commit 1891971b55
4 changed files with 633 additions and 186 deletions

View File

@ -21,6 +21,7 @@ export const editXzTaskProgressApi = data => post('xmgl/xzTaskProgress/edit', da
export const editProgressBindComponentApi = data => post('xmgl/taskProgress/editBimComponent', data);
export const getTaskProgressPageApi = data => post('xmgl/taskProgress/getParentChildPage', data);
export const getXzTaskProgressPageApi = data => post('xmgl/xzTaskProgress/getParentChildPage', data);
export const importDataApi = data => post('xmgl/xzTaskProgress/importData', data);
//分部分项工程管理--BIMBASE中心进度管理
export const addTaskProgressRtApi = data => post('xmgl/taskProgressRt/add', data);

View File

@ -1,12 +1,10 @@
<template>
<div class="fullHeight">
<div v-if="type != 'detail'" style="width: 100%;height: 100%;">
<div v-if="type != 'detail'" style="width: 100%; height: 100%">
<div class="content-box">
<div class="areaTreeBox" id="videoTreeBox">
<div class="areaTreeInner whiteBlock fullHeight">
<p class="pageTitle">
承包商/厂区列表
</p>
<p class="pageTitle">承包商/厂区列表</p>
<div class="area-select">
<!-- <el-select
v-model="areaSelectVal"
@ -24,29 +22,53 @@
>
</el-option>
</el-select> -->
<el-select ref="selectRef" v-model="selectVal" placeholder="请选择" style="width: 100%;margin-top: 10px;"
size="medium" clearable @change="selectChange">
<el-option style="height:auto" :value="[]">
<el-tree :data="areaList" node-key="id" ref="groupTree" :default-expanded-keys="defaultExpandArr"
:props="defaultAreaProps" :default-expand-all="false" @node-click="treeAreaClick">
<el-select
ref="selectRef"
v-model="selectVal"
placeholder="请选择"
style="width: 100%; margin-top: 10px"
size="medium"
clearable
@change="selectChange"
>
<el-option style="height: auto" :value="[]">
<el-tree
:data="areaList"
node-key="id"
ref="groupTree"
:default-expanded-keys="defaultExpandArr"
:props="defaultAreaProps"
:default-expand-all="false"
@node-click="treeAreaClick"
>
</el-tree>
</el-option>
</el-select>
</div>
<div class="treeBox">
<p class="pageTitle">
承包商列表
</p>
<vue-scroll style="height: calc(100% - 30px)" v-if="level1CompanyData.length > 0">
<el-tree :data="level1CompanyData" :props="defaultProps" default-expand-all node-key="id" ref="tree">
<p class="pageTitle">承包商列表</p>
<vue-scroll
style="height: calc(100% - 30px)"
v-if="level1CompanyData.length > 0"
>
<el-tree
:data="level1CompanyData"
:props="defaultProps"
default-expand-all
node-key="id"
ref="tree"
>
<span class="custom-tree-node" slot-scope="{ node, data }">
<span style="
<span
style="
width: 160px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: inline-block;
" @click="treeClick(data)" :class="
"
@click="treeClick(data)"
:class="
data.videoName
? 'videoName'
: data.projectName
@ -54,7 +76,10 @@
: data.companyType == 2
? 'companyName2'
: ''
" :title="node.label">{{ node.label }}</span>
"
:title="node.label"
>{{ node.label }}</span
>
</span>
</el-tree>
</vue-scroll>
@ -67,81 +92,207 @@
</div>
<div class="table-content">
<div class="searchBox whiteBlock">
<el-form :inline="true" size="medium" :model="queryInfo" class="demo-form-inline">
<el-form
:inline="true"
size="medium"
:model="queryInfo"
class="demo-form-inline"
>
<el-form-item label="分部分项工程名称">
<el-input v-model="queryInfo.taskName" placeholder="请输入"></el-input>
<el-input
v-model="queryInfo.taskName"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="状态">
<el-select v-model="queryInfo.status" placeholder="请选择">
<el-option v-for="(item, index) in options" :key="index" :label="item.label" :value="item.value">
<el-option
v-for="(item, index) in options"
:key="index"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="实际完成日期">
<el-date-picker v-model="daterange" @change="changeDate" type="daterange"
:range-separator="$t('message.energyManage.to')" :start-placeholder="$t('message.energyManage.start')"
:end-placeholder="$t('message.energyManage.end')" value-format="yyyy-MM-dd">
<el-date-picker
v-model="daterange"
@change="changeDate"
type="daterange"
:range-separator="$t('message.energyManage.to')"
:start-placeholder="$t('message.energyManage.start')"
:end-placeholder="$t('message.energyManage.end')"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button v-permission="{ key: 'fbfx_query', menuPath: '/project/progressManagementAg/divisionSubManage' }"
type="primary" plain @click="getProgressListData" :disabled="!treeData.id">查询</el-button>
<el-button
v-permission="{
key: 'fbfx_query',
menuPath: '/project/progressManagementAg/divisionSubManage',
}"
type="primary"
plain
@click="getProgressListData"
:disabled="!treeData.id"
>查询</el-button
>
<!-- <el-button
v-permission="{ key: 'fbfx_refreshi', menuPath: '/project/progressManagementAg/divisionSubManage' }" -->
<el-button
type="warning" plain @click="refreshBtn" :disabled="!treeData.id">刷新</el-button>
<el-button v-permission="{ key: 'fbfx_add', menuPath: '/project/progressManagementAg/divisionSubManage' }"
class="expintBtn" size="medium" type="primary" plain :disabled="!treeData.id"
@click="addBefore(1, null)">
type="warning"
plain
@click="refreshBtn"
:disabled="!treeData.id"
>刷新</el-button
>
<el-button
v-permission="{
key: 'fbfx_add',
menuPath: '/project/progressManagementAg/divisionSubManage',
}"
class="expintBtn"
size="medium"
type="primary"
plain
:disabled="!treeData.id"
@click="addBefore(1, null)"
>
新增
</el-button>
</el-form-item>
<el-form-item>
<el-button
v-permission="{ key: 'fbfx_DownloadTemplate', menuPath: '/project/progressManagementAg/divisionSubManage' }"
class="expintBtn" size="medium" type="primary" :disabled="!treeData.id" @click="downloadFn(1)">
v-permission="{
key: 'fbfx_DownloadTemplate',
menuPath: '/project/progressManagementAg/divisionSubManage',
}"
class="expintBtn"
size="medium"
type="primary"
:disabled="!treeData.id"
@click="downloadFn(1)"
>
<!-- <a class="down" :href="downUrl" download>下载模板</a> -->
下载模板
</el-button>
<el-button
v-permission="{ key: 'fbfx_lmport', menuPath: '/project/progressManagementAg/divisionSubManage' }"
size="medium" type="primary" :disabled="!treeData.id" @click="uploadShow = true">导入</el-button>
v-permission="{
key: 'fbfx_lmport',
menuPath: '/project/progressManagementAg/divisionSubManage',
}"
size="medium"
type="primary"
:disabled="!treeData.id"
@click="uploadShow = true"
>导入</el-button
>
</el-form-item>
</el-form>
</div>
<div class="table_wrap whiteBlock">
<vue-scroll style="height: 580px;">
<el-table class="tables" :data="listData" lazy row-key="id" default-expand-all
:tree-props="{ children: 'children' }">
<el-table-column width="200" prop="taskName" label="分部分项工程名称" style="display: flex;align-items: center;">
<vue-scroll style="height: 580px">
<el-table
class="tables"
:data="listData"
lazy
row-key="id"
default-expand-all
:tree-props="{ children: 'children' }"
>
<el-table-column
width="200"
prop="taskName"
label="分部分项工程名称"
style="display: flex; align-items: center"
>
<template slot-scope="scope">
<span :title="scope.row.taskName"
style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;display: inline-block;width: 100px;vertical-align: middle;">
<span
:title="scope.row.taskName"
style="
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
display: inline-block;
width: 100px;
vertical-align: middle;
"
>
{{ scope.row.taskName }}
</span>
</template>
</el-table-column>
<el-table-column width="100" align="center" prop="qualityRegionName" label="区域" show-overflow-tooltip>
<el-table-column
width="100"
align="center"
prop="qualityRegionName"
label="区域"
show-overflow-tooltip
>
</el-table-column>
<el-table-column width="120" align="center" prop="startDate" label="计划开始时间">
<el-table-column
width="120"
align="center"
prop="startDate"
label="计划开始时间"
>
</el-table-column>
<el-table-column width="120" align="center" prop="finishDate" label="计划完成时间">
<el-table-column
width="120"
align="center"
prop="finishDate"
label="计划完成时间"
>
</el-table-column>
<el-table-column width="120" align="center" prop="actualStartDate" label="实际开始时间">
<el-table-column
width="120"
align="center"
prop="actualStartDate"
label="实际开始时间"
>
</el-table-column>
<el-table-column width="120" align="center" prop="actualFinishDate" label="实际完成时间"></el-table-column>
<el-table-column width="80" align="center" prop="dutyUserName" label="负责人"></el-table-column>
<el-table-column width="80" align="center" prop="progressRatio" label="进度">
<el-table-column
width="120"
align="center"
prop="actualFinishDate"
label="实际完成时间"
></el-table-column>
<el-table-column
width="80"
align="center"
prop="dutyUserName"
label="负责人"
></el-table-column>
<el-table-column
width="80"
align="center"
prop="progressRatio"
label="进度"
>
<template slot-scope="scope">{{
scope.row.progressRatio + "%"
}}</template>
</el-table-column>
<el-table-column width="100" prop="status" align="center" label="执行状态">
<el-table-column
width="100"
prop="status"
align="center"
label="执行状态"
>
<template slot-scope="scope">
<span :class="scope.row.status == 0
? 'no-start' : scope.row.status == 1
? 'is-pending' : scope.row.status == 2
? 'is-finshed' : 'no-start'">
<span
:class="
scope.row.status == 0
? 'no-start'
: scope.row.status == 1
? 'is-pending'
: scope.row.status == 2
? 'is-finshed'
: 'no-start'
"
>
{{
scope.row.status == 0
? "未开始"
@ -154,9 +305,17 @@
</span>
</template>
</el-table-column>
<el-table-column width="80" prop="beginWarning" align="center" label="开始预警">
<el-table-column
width="80"
prop="beginWarning"
align="center"
label="开始预警"
>
<template slot-scope="scope">
<div style="color: #fe6565;" v-if="scope.row.beginWarning === 3">
<div
style="color: #fe6565"
v-if="scope.row.beginWarning === 3"
>
{{
scope.row.beginWarning == 1
? "提前"
@ -176,9 +335,17 @@
</div>
</template>
</el-table-column>
<el-table-column width="80" prop="endWarning" align="center" label="结束预警">
<el-table-column
width="80"
prop="endWarning"
align="center"
label="结束预警"
>
<template slot-scope="scope">
<div style="color: #fe6565;" v-if="scope.row.endWarning === 3">
<div
style="color: #fe6565"
v-if="scope.row.endWarning === 3"
>
{{
scope.row.endWarning == 1
? "提前"
@ -201,42 +368,93 @@
<el-table-column width="300" label="操作" align="center">
<template slot-scope="scope">
<el-button
v-permission="{ key: 'fbfx_subltem', menuPath: '/project/progressManagementAg/divisionSubManage' }"
@click.native.stop="addBefore(2, scope.row)" size="mini" type="text"
icon="el-icon-circle-plus-outline">
v-permission="{
key: 'fbfx_subltem',
menuPath:
'/project/progressManagementAg/divisionSubManage',
}"
@click.native.stop="addBefore(2, scope.row)"
size="mini"
type="text"
icon="el-icon-circle-plus-outline"
>
子分项
</el-button>
<el-button
v-permission="{ key: 'fbfx_details', menuPath: '/project/progressManagementAg/divisionSubManage' }"
size="mini" type="text" icon="el-icon-document" @click.native.stop="showDetail(scope.row)">
v-permission="{
key: 'fbfx_details',
menuPath:
'/project/progressManagementAg/divisionSubManage',
}"
size="mini"
type="text"
icon="el-icon-document"
@click.native.stop="showDetail(scope.row)"
>
详情
</el-button>
<el-button
v-permission="{ key: 'fbfx_edit', menuPath: '/project/progressManagementAg/divisionSubManage' }"
size="mini" type="text" icon="el-icon-edit" @click.native.stop="editBefore(scope.row)">
v-permission="{
key: 'fbfx_edit',
menuPath:
'/project/progressManagementAg/divisionSubManage',
}"
size="mini"
type="text"
icon="el-icon-edit"
@click.native.stop="editBefore(scope.row)"
>
编辑
</el-button>
<el-button
v-permission="{ key: 'fbfx_delete', menuPath: '/project/progressManagementAg/divisionSubManage' }"
size="mini" type="text" class="delete-btn" icon="el-icon-delete"
@click.native.stop="deleteBefore(scope.row)">删除</el-button>
v-permission="{
key: 'fbfx_delete',
menuPath:
'/project/progressManagementAg/divisionSubManage',
}"
size="mini"
type="text"
class="delete-btn"
icon="el-icon-delete"
@click.native.stop="deleteBefore(scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</vue-scroll>
<el-pagination class="pagerBox" style="position: absolute; top: 85%; left: 51%" @size-change="SizeChange"
@current-change="CurrentChange" :current-page="pagInfo.pageNo" :page-sizes="$store.state.PAGESIZRS"
:page-size="pagInfo.pageSize" layout="total, sizes, prev, pager, next" :total="Number(pagInfo.total)"
background></el-pagination>
<el-pagination
class="pagerBox"
style="position: absolute; top: 85%; left: 51%"
@size-change="SizeChange"
@current-change="CurrentChange"
:current-page="pagInfo.pageNo"
:page-sizes="$store.state.PAGESIZRS"
:page-size="pagInfo.pageSize"
layout="total, sizes, prev, pager, next"
:total="Number(pagInfo.total)"
background
></el-pagination>
</div>
</div>
</div>
<!-- '新增父子级工程弹框' -->
<el-dialog :modal-append-to-body="false" :title="title" :visible.sync="dialogVisible" width="667px" @close="close">
<el-dialog
:modal-append-to-body="false"
:title="title"
:visible.sync="dialogVisible"
width="667px"
@close="close"
>
<div class="dialog_content">
<el-form ref="addEditForm" label-width="135px" size="medium" class="dialogFormBox" :rules="addEditRules"
:model="workerInfo">
<el-form
ref="addEditForm"
label-width="135px"
size="medium"
class="dialogFormBox"
:rules="addEditRules"
:model="workerInfo"
>
<el-form-item label="区域" prop="qualityRegionId">
<!-- <el-select v-model="workerInfo.qualityRegionId" placeholder="请选择">
<el-option
@ -247,107 +465,252 @@
>
</el-option>
</el-select> -->
<el-select ref="selectFormRef" v-model="selectFormVal" placeholder="请选择" style="width: 100%;" size="medium"
clearable @change="selectFormChange">
<el-option style="height:auto" :value="[]">
<el-tree :data="areaList" node-key="id" ref="groupFormTree"
:default-expanded-keys="defaultExpandFormArr" :props="defaultAreaProps" :highlight-current="true"
:default-expand-all="false" @node-click="treeAreaFormClick">
<el-select
ref="selectFormRef"
v-model="selectFormVal"
placeholder="请选择"
style="width: 100%"
size="medium"
clearable
@change="selectFormChange"
>
<el-option style="height: auto" :value="[]">
<el-tree
:data="areaList"
node-key="id"
ref="groupFormTree"
:default-expanded-keys="defaultExpandFormArr"
:props="defaultAreaProps"
:highlight-current="true"
:default-expand-all="false"
@node-click="treeAreaFormClick"
>
</el-tree>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="承包商" prop="enterpriseName">
<el-select v-model="workerInfo.enterpriseName" placeholder="请选择" disabled>
<el-option v-for="item in level1CompanyData" :key="item.id" :label="item.enterpriseName" :value="item.id">
<el-select
v-model="workerInfo.enterpriseName"
placeholder="请选择"
disabled
>
<el-option
v-for="item in level1CompanyData"
:key="item.id"
:label="item.enterpriseName"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="分部分项名称" prop="taskName" v-if="dialogType == 3">
<el-input v-model="parentTaskName" placeholder="请输入" :disabled="dialogType == 3"></el-input>
<el-form-item
label="分部分项名称"
prop="taskName"
v-if="dialogType == 3"
>
<el-input
v-model="parentTaskName"
placeholder="请输入"
:disabled="dialogType == 3"
></el-input>
</el-form-item>
<el-form-item v-else label="分部分项名称" prop="taskName">
<el-input v-model="workerInfo.taskName" placeholder="请输入"></el-input>
<el-input
v-model="workerInfo.taskName"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item v-if="dialogType == 3" label="子分部分项名称" prop="taskName">
<el-input v-model="workerInfo.taskName" placeholder="请输入"></el-input>
<el-form-item
v-if="dialogType == 3"
label="子分部分项名称"
prop="taskName"
>
<el-input
v-model="workerInfo.taskName"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="计划开始时间" prop="startDate">
<el-date-picker @change="time1" v-model="workerInfo.startDate" type="date" placeholder="请选择日期"
value-format="yyyy-MM-dd">
<el-date-picker
@change="time1"
v-model="workerInfo.startDate"
type="date"
placeholder="请选择日期"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
<el-form-item label="计划结束时间" prop="finishDate">
<el-date-picker @change="time2" v-model="workerInfo.finishDate" :picker-options="dateBefore" type="date"
placeholder="请选择日期" value-format="yyyy-MM-dd">
<el-date-picker
@change="time2"
v-model="workerInfo.finishDate"
:picker-options="dateBefore"
type="date"
placeholder="请选择日期"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
<el-form-item label="实际开始时间" prop="actualStartDate">
<el-date-picker v-model="workerInfo.actualStartDate" type="date" placeholder="请选择日期"
value-format="yyyy-MM-dd">
<el-date-picker
v-model="workerInfo.actualStartDate"
type="date"
placeholder="请选择日期"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
<el-form-item label="实际结束时间" prop="actualFinishDate">
<el-date-picker v-model="workerInfo.actualFinishDate" :picker-options="actualDateBefore" type="date"
placeholder="请选择日期" value-format="yyyy-MM-dd">
<el-date-picker
v-model="workerInfo.actualFinishDate"
:picker-options="actualDateBefore"
type="date"
placeholder="请选择日期"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
<el-form-item label="负责人" prop="dutyUserName">
<el-select v-model="workerInfo.dutyUserId" placeholder="请选择" filterable>
<el-option v-for="item in principalLsit" :key="item.userId" :label="item.realName" :value="item.userId">
<el-select
v-model="workerInfo.dutyUserId"
placeholder="请选择"
filterable
>
<el-option
v-for="item in principalLsit"
:key="item.userId"
:label="item.realName"
:value="item.userId"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="进度(%)" prop="progressRatio">
<el-input-number :disabled="workerInfo.status === 2" :max="100" style="width: 105%"
v-model="workerInfo.progressRatio" @input="validateInput"></el-input-number>
<el-input-number
:disabled="workerInfo.status === 2"
:max="100"
style="width: 105%"
v-model="workerInfo.progressRatio"
@input="validateInput"
></el-input-number>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="workerInfo.remark" placeholder="请输入"></el-input>
<el-input
v-model="workerInfo.remark"
placeholder="请输入"
></el-input>
</el-form-item>
</el-form>
</div>
<div class="dialog-footer">
<el-button class="cancleBtn" @click="dialogVisible = false" icon="el-icon-circle-close" size="medium">取消
<el-button
class="cancleBtn"
@click="dialogVisible = false"
icon="el-icon-circle-close"
size="medium"
>取消
</el-button>
<el-button type="primary" icon="el-icon-circle-check" @click="submitBtn" size="medium">确定
<el-button
type="primary"
icon="el-icon-circle-check"
@click="submitBtn"
size="medium"
>确定
</el-button>
</div>
</el-dialog>
<!-- 导入弹框 -->
<el-dialog :modal-append-to-body="false" width="600px" title="导入" :visible.sync="uploadShow" @close="close2">
<el-dialog
:modal-append-to-body="false"
width="600px"
title="导入"
:visible.sync="uploadShow"
@close="close2"
>
<div class="questionText">
<i style="color: #e1a439; margin-right: 1%"
class="el-icon-question"></i>用户需要先下载excel文件再将数据填写到Project文件中选择所需要的一种更新方式然后通过选择文件按钮上传Project文件点击确定即可完成分部分项数据更新
<i
style="color: #e1a439; margin-right: 1%"
class="el-icon-question"
></i
>用户需要先下载excel文件再将数据填写到Project文件中选择所需要的一种更新方式然后通过选择文件按钮上传Project文件点击确定即可完成分部分项数据更新
</div>
<div class="dialogUplod">
<div style="margin-top: -15px">
现有数据excel下载
<el-button size="mini" type="primary" plain @click="downloadFn(2)">下载</el-button>
<el-button size="mini" type="primary" plain @click="downloadFn(2)"
>下载</el-button
>
</div>
<div style="margin-left: 64px">
<span style="position: absolute">更新方式</span>
<el-radio-group style="margin-left: 65px" v-model="radio" @change="handleRadioChange">
<el-radio-group
style="margin-left: 65px"
v-model="radio"
@change="handleRadioChange"
>
<el-radio :label="1">覆盖更新</el-radio>
<el-radio :label="2">根据名称替换更新</el-radio>
</el-radio-group>
</div>
<div style="margin-left: 2px;margin-top: -15px;">
<span style="color: red;margin-right: 5px;">*</span>上传Project文件
<el-upload accept=".mpp" v-if="fileName == ''" class="upload-demo expintBtn" name="mppFile"
:on-success="handleImportSuccess" :on-change="handleImportChange" :before-upload="beforeUpload"
:file-list="fileList" :action="$http.defaults.baseURL + 'xmgl/xzTaskProgress/importData'"
:data="{ projectSn: projectSn, type: radio }" :show-file-list="false" :headers="headers">
<div style="margin-left: 2px; margin-top: -15px;display: flex;">
<span style="color: red; margin-right: 5px;margin-top: 3px;">*</span>
<span style="margin-top: 3px;margin-right: 5px;">上传Project文件</span>
<!-- <el-upload
accept=".mpp"
v-if="fileName == ''"
class="upload-demo expintBtn"
name="mppFile"
:on-success="handleImportSuccess"
:on-change="handleImportChange"
:before-upload="beforeUpload"
:file-list="fileList"
:action="
$http.defaults.baseURL + 'xmgl/xzTaskProgress/importData'
"
:data="{ projectSn: projectSn, type: radio }"
:show-file-list="false"
:headers="headers"
>
<el-button size="mini" type="primary" plain>选择</el-button>
</el-upload>
<span v-else style="color: #5181f6">{{ fileName }}</span> -->
<el-upload
accept=".mpp"
class="upload-demo expintBtn"
name="files"
:on-success="handleFileSuccess"
:on-remove="handleFileRemove"
:file-list="fileList"
:action="$store.state.UPLOADURL"
:headers="headers"
>
<el-button size="mini" type="primary" plain>选择</el-button>
</el-upload>
<span v-else style="color: #5181f6">{{ fileName }}</span>
</div>
</div>
<div class="dialog-footer">
<el-button class="cancleBtn" @click="uploadShow = false" icon="el-icon-circle-close" size="medium">取消
<el-button
class="cancleBtn"
@click="uploadShow = false"
icon="el-icon-circle-close"
size="medium"
>取消
</el-button>
<el-button type="primary" icon="el-icon-circle-check" size="medium" @click="handleUploadConfirm">确定
<!-- <el-button
type="primary"
icon="el-icon-circle-check"
size="medium"
@click="handleUploadConfirm"
>确定
</el-button> -->
<el-button
type="primary"
icon="el-icon-circle-check"
size="medium"
@click="handleFileUploadConfirm"
>确定
</el-button>
</div>
</el-dialog>
@ -356,7 +719,12 @@
<img width="100%" :src="dialogImageUrl" alt="" />
</el-dialog>
</div>
<detailpage v-if="type == 'detail'" :id="seedId" :rowData="rowData" @closeDetail="closeDetailFn"></detailpage>
<detailpage
v-if="type == 'detail'"
:id="seedId"
:rowData="rowData"
@closeDetail="closeDetailFn"
></detailpage>
</div>
</template>
<script>
@ -364,7 +732,8 @@ import {
addXzTaskProgressApi,
deleteXzTaskProgressApi,
editXzTaskProgressApi,
getXzTaskProgressPageApi
getXzTaskProgressPageApi,
importDataApi
} from "@/assets/js/api/progressManagement";
import { getCrewListDataApi } from "@/assets/js/api/dailyCheck";
import detailpage from "./projectProgressDetail";
@ -374,7 +743,7 @@ export default {
components: {
detailpage,
},
mounted() { },
mounted() {},
data() {
return {
defaultExpandFormArr: [],
@ -425,6 +794,7 @@ export default {
title: "",
daterange: [],
fileList: [], //
rawFileList: [], //
downUrl: "", //
projectSn: "",
createUserId: "",
@ -501,7 +871,7 @@ export default {
},
},
fileName: "",
treeData: {}
treeData: {},
};
},
computed: {
@ -605,7 +975,7 @@ export default {
this.workerInfo.qualityRegionId = data.id;
this.$refs.selectFormRef.blur();
}
this.$refs.addEditForm.validateField("qualityRegionId")
this.$refs.addEditForm.validateField("qualityRegionId");
},
//
treeAreaClick(data) {
@ -625,8 +995,8 @@ export default {
}).then((result) => {
if (result.success) {
this.treeList = result.result;
if(result.result.length > 0){
this.treeData = result.result[0]
if (result.result.length > 0) {
this.treeData = result.result[0];
}
this.getPositionList();
}
@ -664,7 +1034,7 @@ export default {
getPositionList() {
let data = {
projectSn: this.$store.state.projectSn,
enterpriseId: this.treeData.enterpriseId
enterpriseId: this.treeData.enterpriseId,
};
getQualityRegionListApi(data).then((res) => {
console.log("res=================", res);
@ -688,6 +1058,25 @@ export default {
this.getProgressListData();
}
},
handleFileUploadConfirm() {
if (!this.rawFileList.length) {
this.$message.warning("请先上传文件");
return;
}
let data = new FormData(); //new
data.append("projectSn", this.projectSn);
data.append("type", this.radio);
data.append("mppFile", this.rawFileList[0].raw);
importDataApi(data).then((res) => {
if (res.code == 200) {
this.uploadShow = false;
this.$message.success("操作成功");
this.getProgressListData();
} else {
this.$message.error(res.message);
}
});
},
handleRadioChange(val) {
this.radio = val;
},
@ -737,8 +1126,8 @@ export default {
this.workerInfo.parentId = value.id;
this.parentTaskName = value.taskName;
}
this.workerInfo.enterpriseId = this.treeData.id
this.workerInfo.enterpriseName = this.treeData.enterpriseName
this.workerInfo.enterpriseId = this.treeData.id;
this.workerInfo.enterpriseName = this.treeData.enterpriseName;
this.dialogVisible = true;
},
//
@ -750,13 +1139,13 @@ export default {
this.workerInfo.id = val.id;
this.workerInfo.status = val.status;
this.dialogVisible = true;
this.workerInfo.enterpriseId = this.treeData.id
this.workerInfo.enterpriseName = this.treeData.enterpriseName
this.workerInfo.enterpriseId = this.treeData.id;
this.workerInfo.enterpriseName = this.treeData.enterpriseName;
this.selectFormVal = val.qualityRegionName;
this.workerInfo.qualityRegionId = val.qualityRegionId;
this.$nextTick(() => {
this.$refs.groupFormTree.setCurrentKey(val.qualityRegionId);
})
});
},
//
submitBtn() {
@ -834,7 +1223,7 @@ export default {
}
});
})
.catch(() => { });
.catch(() => {});
},
close() {
this.workerInfo = {};
@ -996,6 +1385,16 @@ export default {
}
},
//
handleFileSuccess(response, file){
console.log(response,file,888999)
this.rawFileList = [file];
},
//
handleFileRemove(file, fileList){
this.fileList = fileList;
this.rawFileList = [];
},
//
handleImportSuccess(res) {
console.log("导入成功----", res);
if (res.code == 200) {
@ -1019,7 +1418,10 @@ export default {
};
</script>
<style lang="less" scoped>
.tables{
.dialog-footer{
margin-top: 60px;
}
.tables {
min-height: 0;
max-height: none;
height: auto;
@ -1060,13 +1462,13 @@ export default {
}
.is-pending {
color: #DAB387;
border: 1px solid #DAB387;
color: #dab387;
border: 1px solid #dab387;
}
.is-finshed {
color: #1BA035;
border: 1px solid #1BA035;
color: #1ba035;
border: 1px solid #1ba035;
}
}
@ -1097,11 +1499,11 @@ export default {
.el-tree-node {
white-space: normal;
&:focus>.el-tree-node__content {
&:focus > .el-tree-node__content {
background-color: transparent;
}
&.is-current>.el-tree-node__content {
&.is-current > .el-tree-node__content {
background-color: rgba(81, 129, 246, 0.14);
color: #5181f6;
}
@ -1192,7 +1594,7 @@ export default {
.el-select-dropdown__item:hover {
background-color: transparent;
}
/deep/.el-table__row td:nth-child(1) .cell{
/deep/.el-table__row td:nth-child(1) .cell {
display: flex;
align-items: center;
}

View File

@ -16,7 +16,7 @@
clearable
@change="selectChange"
>
<el-option style="height:auto" :value="[]">
<el-option style="height: auto" :value="[]">
<el-tree
:data="treeList"
node-key="enterpriseId"
@ -38,7 +38,14 @@
></el-input>
</el-form-item>
<el-form-item>
<el-button v-permission="{key: 'jdsp_query', menuPath: '/project/progressManagementAg/progressApproval'}" type="primary" plain @click="getWarningListData"
<el-button
v-permission="{
key: 'jdsp_query',
menuPath: '/project/progressManagementAg/progressApproval',
}"
type="primary"
plain
@click="getWarningListData"
>查询</el-button
>
<el-button type="warning" plain @click="refresh">刷新</el-button>
@ -46,7 +53,7 @@
</el-form>
</div>
<div class="table_wrap whiteBlock">
<vue-scroll>
<vue-scroll style="height: 90%">
<el-table class="tables" :data="tableList">
<el-table-column
type="index"
@ -145,29 +152,52 @@
<el-table-column align="center" label="操作" width="280">
<template slot-scope="scope">
<div class="tableBtns">
<div v-permission="{key: 'jdsp_edit', menuPath: '/project/progressManagementAg/progressApproval'}" @click="pass(scope.row)" class="operationText" v-if="![2,3].includes(scope.row.auditType)">
<div
v-permission="{
key: 'jdsp_edit',
menuPath: '/project/progressManagementAg/progressApproval',
}"
@click="pass(scope.row)"
class="operationText"
v-if="![2, 3].includes(scope.row.auditType)"
>
<img
src="@/assets/images/tableIcon/passIcon.png"
width="15px"
height="15px"
/>
<span style="white-space: nowrap;color: #5678E8;">通过</span>
<span style="white-space: nowrap; color: #5678e8">通过</span>
</div>
<div v-permission="{key: 'jdsp_edit', menuPath: '/project/progressManagementAg/progressApproval'}" @click="openBackDialog(scope.row)" class="operationText" v-if="![2,3].includes(scope.row.auditType)">
<div
v-permission="{
key: 'jdsp_edit',
menuPath: '/project/progressManagementAg/progressApproval',
}"
@click="openBackDialog(scope.row)"
class="operationText"
v-if="![2, 3].includes(scope.row.auditType)"
>
<img
src="@/assets/images/tableIcon/backApply.png"
width="15px"
height="15px"
/>
<span style="white-space: nowrap;color: #EA3941;">驳回</span>
<span style="white-space: nowrap; color: #ea3941">驳回</span>
</div>
<div v-permission="{key: 'jdsp_delete', menuPath: '/project/progressManagementAg/progressApproval'}" @click="deleteDev(scope.row)" class="operationText">
<div
v-permission="{
key: 'jdsp_delete',
menuPath: '/project/progressManagementAg/progressApproval',
}"
@click="deleteDev(scope.row)"
class="operationText"
>
<img
src="@/assets/images/tableIcon/icon-delete.png"
width="15px"
height="15px"
/>
<span style="white-space: nowrap;">删除</span>
<span style="white-space: nowrap">删除</span>
</div>
</div>
</template>
@ -203,10 +233,7 @@
:model="workerInfo"
>
<!-- 描述 -->
<el-form-item
label="驳回原因"
prop="description"
>
<el-form-item label="驳回原因" prop="description">
<el-input
type="textarea"
style="width: 320px"
@ -418,8 +445,9 @@ export default {
projectSn: this.projectSn,
pageNo: this.pagInfo.pageNo,
pageSize: this.pagInfo.pageSize,
isApprovalList: 1,
taskName: this.queryInfo.taskName,
enterpriseId: this.queryInfo.enterpriseId
enterpriseId: this.queryInfo.enterpriseId,
};
getProgressContentPageApi(data).then((res) => {
console.log("返回的值", res);
@ -431,7 +459,7 @@ export default {
let dealImageData = JSON.parse(item.image);
let dealImageArr = [];
dealImageData.map((item2) => {
if(item2.url.indexOf("http") == -1){
if (item2.url.indexOf("http") == -1) {
dealImageArr.push(this.$store.state.FILEURL + item2.url);
} else {
dealImageArr.push(item2.url);
@ -481,6 +509,11 @@ export default {
margin-right: 15px;
}
//
.tables {
min-height: 0;
max-height: none;
height: auto;
}
.tableBtns {
display: flex;
justify-content: center;
@ -501,11 +534,13 @@ export default {
box-sizing: border-box;
}
//
/deep/.el-select-dropdown__item.hover,.el-select-dropdown__item.hover, .el-select-dropdown__item:hover{
/deep/.el-select-dropdown__item.hover,
.el-select-dropdown__item.hover,
.el-select-dropdown__item:hover {
background-color: transparent;
}
//
/deep/.el-table__empty-text{
/deep/.el-table__empty-text {
margin-top: 10%;
}
</style>

View File

@ -587,6 +587,10 @@ export default {
this.itemForm.status = 2;
}
data.delayEventType = this.workerInfo.delayEventType.join(",");
if(+this.workerInfo.progressRatio <= +this.itemForm.progressRatio){
this.$message.error("上报进度必须大于当前进度");
return;
}
console.log("新增提交的数据", data);
addXzTaskProgressContentApi(data).then((res) => {
if (res.code == 200) {
@ -876,15 +880,20 @@ export default {
}
.noData {
text-align: center;
// text-align: center;
height: 95%;
padding-top: 50%;
// padding-top: 50%;
box-sizing: border-box;
background: #f7f7f7;
display: flex;
justify-content: center;
align-items: center;
img {
position: absolute;
top: 35%;
left: 60%;
// position: absolute;
// top: 35%;
// left: 60%;
// margin: auto;
margin-bottom: 70px;
width: 15%;
}
}