jhprjv2/ruoyi-ui/src/views/flowable/task/project/index.vue

316 lines
11 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="流程名称" prop="procDefName">
<el-input
v-model="queryParams.procDefName"
placeholder="请输入流程名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="申请单位" prop="startDeptName" v-if="showPro">
<el-input
v-model="queryParams.startDeptName"
placeholder="请输入申请单位名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="所属项目" prop="businessKey" v-if="showPro">
<el-select
v-model="queryParams.businessKey"
placeholder="请选择所属项目"
filterable
clearable
>
<el-option
v-for="(item, index) in projectOptions"
:key="index"
:label="item.projectName"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="流程类型" prop="category">
<el-select
v-model="queryParams.category"
@keyup.enter.native="handleQuery"
placeholder="请选择流程类型"
clearable
>
<el-option
v-for="dict in dict.type.sys_process_category"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="当前节点" prop="taskName">
<el-select
v-model="queryParams.taskName"
placeholder="请选择所属项目"
filterable
clearable
>
<el-option
v-for="(item, index) in taskOptions"
:key="index"
:label="item.text"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="申请人" prop="startUserName" v-if="showPro">
<el-input
v-model="queryParams.startUserName"
placeholder="请输入申请人名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="申请时间">
<el-date-picker
v-model="daterangeTime"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane :label="tabs.all" name="all"></el-tab-pane>
<el-tab-pane :label="tabs.await" name="await"></el-tab-pane>
<el-tab-pane :label="tabs.finished" name="finished"></el-tab-pane>
</el-tabs>
<el-table v-loading="loading" :data="myProcessList" @selection-change="handleSelectionChange" stripe>
<el-table-column label="项目名称" align="center" prop="businessKeyName" fixed="left" width="160" :show-overflow-tooltip="true"/>
<el-table-column label="流程编号" align="center" prop="procInsId" width="120" :show-overflow-tooltip="true"/>
<el-table-column label="流程名称" align="center" prop="procDefName" width="120" :show-overflow-tooltip="true"/>
<el-table-column label="流程类别" align="center" prop="category" >
<template slot-scope="scope">
<dict-tag
:options="dict.type.sys_process_category"
:value="scope.row.category"
/>
</template>
</el-table-column>
<el-table-column label="流程状态" align="center" width="100">
<template slot-scope="scope">
<el-tag v-if="scope.row.finishTime == null" size="mini">进行中</el-tag>
<el-tag type="success" v-if="scope.row.finishTime != null && scope.row.assigneeId != null" size="mini">已完成</el-tag>
<el-tag type="danger" v-if="scope.row.finishTime != null && scope.row.assigneeId == null" size="mini">已撤销</el-tag>
</template>
</el-table-column>
<el-table-column label="当前节点" align="center" prop="taskName">
<template slot-scope="scope">
<div v-if="scope.row.finishTime == null">{{ scope.row.taskName }}</div>
<div v-if="scope.row.finishTime != null">结束</div>
</template>
</el-table-column>
<el-table-column label="申请人" align="center" width="200">
<template slot-scope="scope">
<label v-if="scope.row.startUserName">{{scope.row.startUserName}} <el-tag type="info" size="mini">{{scope.row.startDeptName}}</el-tag></label>
</template>
</el-table-column>
<el-table-column label="申请时间" align="center" prop="createTime" width="180"/>
<el-table-column label="处理耗时" align="center" prop="duration" width="150">
<template slot-scope="scope">
{{getDurationDate(scope.row)}}
</template>
</el-table-column>
<el-table-column label="办结时间" align="center" prop="finishTime" width="180"/>
<el-table-column label="操作" width="150" align="center" fixed="right" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button @click="handleFlowRecord(scope.row)" type="text" size="small" icon="el-icon-finished">查看详情</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<detailDrawer ref="detailDrawer"></detailDrawer>
<detailLeaveDrawer ref="detailLeaveDrawer"></detailLeaveDrawer>
</div>
</template>
<script>
import {allList,queryCount} from "@/api/flowable/businessKey";
import detailDrawer from "../myProcess/detail/detailDrawer.vue";
import detailLeaveDrawer from "../myProcess/detail/detailLeaveDrawer.vue";
export default {
name: "projectTask",
components: {
detailDrawer,
detailLeaveDrawer
},
dicts: ["sys_process_category"],
data() {
return {
// 遮罩层
loading: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 我发起的流程列表数据
myProcessList: [],
src: "",
definitionList:[],
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
procDefName: null,
category: null,
params: null,
businessKey:null,
taskName:null,
startUserName:null,
startDeptName:null,
businessDeptId:null,
activeName:null,
},
daterangeTime:[],
tabs:{
all:"全部0",
await:"进行中0",
finished:"已完成0",
},
activeName:"await",
showPro:false,
projectOptions: null,
taskOptions:[
{text:"提交申请",value:"提交申请"},
{text:"监理专监审批",value:"监理专监"},
{text:"监理总监审批",value:"监理总监"},
{text:"甲方代表审批",value:"甲方代表"},
{text:"设计总监审批",value:"设计总监"},
{text:"工程负责人审批",value:"工程负责人"},
{text:"总包项目经理审批",value:"总包项目经理"},
{text:"分包项目经理确认",value:"分包项目经理"},
]
};
},
created() {
this.queryParams.activeName = this.activeName;
this.getList();
this.initMyProject();
},
methods: {
/** 查询流程定义列表 */
getList() {
this.loading = true;
this.queryParams.params = {};
if (null != this.daterangeTime && "" != this.daterangeTime) {
this.queryParams.params["beginDate"] = this.daterangeTime[0];
this.queryParams.params["endDate"] = this.daterangeTime[1];
}
this.queryCount(this.queryParams);
allList(this.queryParams).then(response => {
this.myProcessList = response.rows;
this.total = response.total;
this.loading = false;
});
},
/** 统计 */
queryCount(params){
queryCount(params).then(response => {
this.tabs.await = "进行中("+response.data.await+"";
this.tabs.finished = "已完成("+response.data.finished+"";
this.tabs.all = "全部申请("+(parseInt(response.data.await)+parseInt(response.data.finished))+"";
});
},
// 查询和我相关的项目信息
initMyProject() {
// 获取项目列表的接口
this.$api.publics.getMyProjectList({}).then((response) => {
this.projectOptions = response.rows;
if (response.rows.length > 1) {
this.showPro = true;
}
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.daterangeTime=[];
this.handleQuery();
},
/** 流程流转记录 */
handleFlowRecord(row){
//根据不同业务跳转不同表单
if(row.procDefKey=="flow_xmglzdl_qjspb"){
this.$refs.detailLeaveDrawer.show(row);
}else{
this.$refs.detailDrawer.show(row);
}
},
// 页签点击
handleClick() {
this.queryParams.activeName = this.activeName;
this.getList();
},
getDurationDate(row){
let day=0;
let hours=0;
let min = row.duration;
if(min>1440){
day = parseInt(min/1440);
min = min % 1440;
if(min>60){
hours = parseInt(min/60);
min = min % 60;
}
}else if(min>60){
hours = parseInt(min/60);
min = min % 60;
}
if(day>0){
if(day<10) day="0"+day;
if(hours<10) hours="0"+hours;
if(min<10) min="0"+min;
return day+""+hours+""+min+"";
}
if(hours>0){
if(hours<10) hours="0"+hours;
if(min<10) min="0"+min;
return hours+""+min+"";
}
if(min>0){
if(min<10) min="0"+min;
return min+"";
}
if(min==0){
return "1";
}
},
}
};
</script>