jhwxapp/miniprogram/pages/project_flowable/approveTask/index.js

612 lines
17 KiB
JavaScript
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.

import config from '../../../config'
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
maxDate:new Date(2088,1,1).getTime(),
deptName:"",
userId:"",
nickName:"",
loginName:"",
projectId:"",
projectName:"",
procInsId:"",
infoData:{},
procDefName:"",
deployId:"",
activeName:"",
flowNodeList:[],
flowNodes:[],
imageList:[],
filesData:[],
comment:"",
taskId:"",
procInsId:"",
backShow:false,
targetKey:"",
targetKeyList:[],
taskName:"",
passState:true,
backName:"",
imageType:["png","jpg","jpeg"],
fileType:["pdf"],
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
let {deployId,procInsId,procDefName,deptName,nickName,taskId,taskName,projectName} = options
//获取缓存数据
wx.getStorage({
key: 'userinfo',
success:res=>{
this.setData({
projectId:app.globalData.projectId,
projectName,
procInsId,
procDefName,
deployId,
deptName,
nickName,
taskId,
taskName,
userId:res.data.userId,
loginName:res.data.loginName,
})
this.initTargetKeyList();
this.getFlowNodes();
this.getFlowRecordList();
this.getFormDatasList();
}
})
},
getFlowNode(val){
let flowNodeList = this.data.flowNodeList;
for(let i=0;i<flowNodeList.length;i++){
if(flowNodeList[i].id==val){
let list = this.data.flowNodes;
if(this.data.passState){
if(flowNodeList[i].name==this.data.taskName){
list.push({id:flowNodeList[i].id,name:flowNodeList[i].name,state:'transact'});
this.setData({
passState:false
})
}else{
list.push({id:flowNodeList[i].id,name:flowNodeList[i].name,state:'pass'});
}
}else{
list.push({id:flowNodeList[i].id,name:flowNodeList[i].name,state:'none'});
}
this.setData({
flowNodes:list
})
if(flowNodeList[i].outgoingFlows && flowNodeList[i].outgoingFlows.length>0){
return this.getFlowNode(flowNodeList[i].outgoingFlows[0].targetRef);
}
}
}
},
//查询工作流节点
getFlowNodes(){
let that = this;
wx.request({
url: app.globalData.reqUrl + '/wechat/flowTask/readNotes/'+that.data.deployId,
method:"get",
data:{},
header: {
"Content-Type": "application/json"
},
success(res){
res = res.data
if(res.code == 200){
that.setData({
flowNodeList:res.data
})
if(res.data.length>0){
let list = that.data.flowNodes;
list.push({id:res.data[0].id,name:res.data[0].name,state:'pass'});
that.setData({
flowNodes:list
})
return that.getFlowNode(res.data[0].outgoingFlows[0].targetRef);
}
}else{
app.toast(res.msg);
}
}
})
},
//查询审批日志
getFlowRecordList(){
let that = this;
wx.request({
url: app.globalData.reqUrl + '/wechat/flowTask/findCommentByProcInsId',
method:"get",
data:{
procInsId:this.data.procInsId
},
header: {
"Content-Type": "application/json"
},
success(res){
res = res.data
if(res.code == 200){
that.setData({
flowRecordList:res.data
})
let list=[];
res.data.forEach(item=>{
if(item.deleteReason){
item.deleteReason=that.getDeleteReason(item.deleteReason);
}
if(item.duration){
item.duration=that.getDurationDate(item.duration);
}
list.push(item);
})
that.setData({
flowRecordList:list
})
}else{
app.toast(res.msg);
}
}
})
},
//查询审批表单参数
getFormDatasList(){
let that = this;
wx.request({
url: app.globalData.reqUrl + '/wechat/flowTask/findFormDatasByProcInsId',
method:"get",
data:{
procInsId:this.data.procInsId
},
header: {
"Content-Type": "application/json"
},
success(res){
res = res.data
if(res.code == 200){
that.setData({
infoData:res.data
})
let filesData = [];
let imageList = [];
//判断附件
if(res.data.files){
res.data.files.split(',').forEach(element => {
let ft = element.split('.');
if(that.data.imageType.indexOf(ft[ft.length-1].toLowerCase())>-1){
imageList.push({minPath:config.baseUrl+element,path:element});
}else{
let it = element.split('/');
filesData.push({name:it[it.length-1],path:element});
}
});
}
that.setData({
filesData,
imageList
})
}else{
app.toast(res.msg);
}
}
})
},
//初始化退回节点
initTargetKeyList(){
let that = this;
wx.request({
url: app.globalData.reqUrl + '/wechat/flowTask/returnList',
method:"post",
data:{
taskId:that.data.taskId
},
header: {
"Content-Type": "application/json"
},
success(res){
res = res.data
if(res.code == 200){
let list = [{id:'',text:''}];
res.data.forEach(item=>{
list.push({id:item.id,text:item.name})
})
that.setData({
targetKeyList:list
})
}else{
app.toast(res.msg);
}
}
})
},
//退回
onBack(){
if(!this.data.backShow){
this.setData({
backShow:true
})
app.toast("请选择退回节点!");
return
}
this.setData({
loadShow:true
})
let that = this
let {taskId,procInsId,projectId,userId,loginName,comment,targetKey} = that.data;
//数据效验
if(projectId==""||loginName==""||taskId==""||userId==""||procInsId==""){
app.toast("数据异常,请刷新页面重试!")
that.setData({
loadShow:false
})
return;
}
if(comment==""){
app.toast("请填写审批意见!")
that.setData({
loadShow:false
})
return;
}
if(targetKey==""){
app.toast("请选择退回节点!")
that.setData({
loadShow:false
});
return;
}
let params = {
taskId,
targetKey,
comment,
userId
}
//弹出确认
wx.showModal({
title: '提示',
content: '是否确认审批退回至'+that.data.backName+'',
success: function (sm) {
if (sm.confirm) {
wx.request({
url: app.globalData.reqUrl + '/wechat/flowTask/return',
method:"POST",
data:params,
header: {
"Username": loginName,
"Content-Type": "application/json"
},
success(res){
that.setData({
loadShow:false
})
res =res.data
if(res.code == 200){
app.toast("退回申请成功!")
setTimeout(()=>{
wx.redirectTo({
url: '../await/index',
})
},200)
}else{
app.toast(res.msg);
}
}
})
} else if (sm.cancel) {
that.setData({
loadShow:false
})
console.log('用户点击取消');
}
}
})
},
//通过
onPass(){
this.setData({
loadShow:true
})
let that = this
let {taskId,procInsId,projectId,userId,loginName,comment} = that.data;
//数据效验
if(projectId==""||loginName==""||taskId==""||userId==""||procInsId==""){
app.toast("数据异常,请刷新页面重试!")
that.setData({
loadShow:false
})
return;
}
if(comment==""){
app.toast("请填写审批意见!")
that.setData({
loadShow:false
})
return;
}
let params = {
taskId,
instanceId:procInsId,
comment,
userId
}
//弹出确认
wx.showModal({
title: '提示',
content: '是否确认审批通过?',
success: function (sm) {
if (sm.confirm) {
wx.request({
url: app.globalData.reqUrl + '/wechat/flowTask/complete',
method:"POST",
data:params,
header: {
"Username": loginName,
"Content-Type": "application/json"
},
success(res){
that.setData({
loadShow:false
})
res =res.data
if(res.code == 200){
app.toast("审批通过成功!")
setTimeout(()=>{
wx.redirectTo({
url: '../await/index',
})
},200)
}else{
app.toast(res.msg);
}
}
})
} else if (sm.cancel) {
that.setData({
loadShow:false
})
console.log('用户点击取消');
}
}
})
},
//通过
onReject(){
this.setData({
loadShow:true
})
let that = this
let {taskId,procInsId,projectId,userId,loginName,comment} = that.data;
//数据效验
if(projectId==""||loginName==""||taskId==""||userId==""||procInsId==""){
app.toast("数据异常,请刷新页面重试!")
that.setData({
loadShow:false
})
return;
}
if(comment==""){
app.toast("请填写审批意见!")
that.setData({
loadShow:false
})
return;
}
let params = {
taskId,
instanceId:procInsId,
comment,
userId
}
//弹出确认
wx.showModal({
title: '提示',
content: '是否确认审批驳回?',
success: function (sm) {
if (sm.confirm) {
wx.request({
url: app.globalData.reqUrl + '/wechat/flowTask/reject',
method:"POST",
data:params,
header: {
"Username": loginName,
"Content-Type": "application/json"
},
success(res){
that.setData({
loadShow:false
})
res =res.data
if(res.code == 200){
app.toast("驳回申请成功!")
setTimeout(()=>{
wx.redirectTo({
url: '../await/index',
})
},200)
}else{
app.toast(res.msg);
}
}
})
} else if (sm.cancel) {
that.setData({
loadShow:false
})
console.log('用户点击取消');
}
}
})
},
//申请说明
commentInput: function (options) {
this.data.comment = options.detail.value;
},
// 手风琴
onChange(event) {
this.setData({
activeName: event.detail,
});
},
getDeleteReason(val){
val = val.replace("Change activity to ","");
let flowRecordList = this.data.flowRecordList;
for(let i=0;i<flowRecordList.length;i++){
if(flowRecordList[i].taskDefKey==val){
return "驳回至"+flowRecordList[i].taskName;
}
}
},
getDurationDate(val){
// 计算出相差天数
let days = Math.floor(val / (24 * 3600 * 1000))
// 计算出小时数
let leave1 = val % (24 * 3600 * 1000) // 计算天数后剩余的毫秒数
let hours = Math.floor(leave1 / (3600 * 1000))
// 计算相差分钟数
let leave2 = leave1 % (3600 * 1000) // 计算小时数后剩余的毫秒数
let minutes = Math.floor(leave2 / (60 * 1000))
// 计算相差秒数
let leave3 = leave2 % (60 * 1000) // 计算分钟数后剩余的毫秒数
let seconds = Math.round(leave3 / 1000)
if(days>0){
if(days<10) days = "0"+days;
if(hours<10) hours = "0"+hours;
if(minutes<10) minutes = "0"+minutes;
if(seconds<10) seconds = "0"+seconds;
return days + '天' + hours + '小时' + minutes + '分钟' + seconds + '秒';
}
if(hours>0){
if(hours<10) hours = "0"+hours;
if(minutes<10) minutes = "0"+minutes;
if(seconds<10) seconds = "0"+seconds;
return hours + '小时' + minutes + '分钟' + seconds + '秒';
}
if(minutes>0){
if(minutes<10) minutes = "0"+minutes;
if(seconds<10) seconds = "0"+seconds;
return minutes + '分钟' + seconds + '秒';
}
if(seconds>0){
if(seconds<10) seconds = "0"+seconds;
return seconds + '秒';
}
},
//选择退回节点
onSelectTargetKey(e){
this.setData({
targetKey:e.detail.id,
backName:e.detail.text
})
},
returnToPage: function () {
/*关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面*/
wx.redirectTo({
url: '../await/index',
})
},
//展示图片详细
showImg:function(e){
let {path} = e.currentTarget.dataset.set
wx.previewImage({
urls: this.data.imageList,
current: path
})
},
/**
* 下载并打开文档
* @param {*} e
*/
downFile:function(e){
let {path} = e.currentTarget.dataset.set
wx.downloadFile({
// 示例 url并非真实存在
url: app.globalData.uploadUrl+'/common/download/resource?resource='+path,
success: function (res) {
const filePath = res.tempFilePath
wx.openDocument({
filePath: filePath,
success: function (res) {
console.log('打开文档成功')
},
fail:function(res) {
console.log(res)
}
})
}
})
//app.toast("暂不支持下载!如需下载请前往后台管理系统!!")
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})