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

656 lines
21 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'
import {
getDictCache
} from '../../../api/publics'
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
maxDate: new Date(2088, 1, 1).getTime(),
deptName: "",
userId: "",
myUserId: "",
nickName: "",
loginName: "",
projectId: "",
projectName: "",
procInsId: "",
infoData: {},
procDefName: "",
deployId: "",
activeName: "",
flowNodeList: [],
flowNodes: [],
imageList: [],
filesData: [],
taskId: "",
taskName: "",
passState: true,
backName: "",
stopShow: false,
deleteShow: false,
revocationShow: false,
finishTime: "",
ret: "",
comment: "",
stopBtnShow: false,
imageType: ["png", "jpg", "jpeg"],
taskComType:"",
fileType: ["pdf"],
active: 100,
rejectNode:false,
subDeptTypes: [],
subDeptScopes: [],
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
let {
deployId,
procInsId,
procDefName,
deptName,
nickName,
taskId,
taskName,
projectName,
userId,
finishTime,
ret,
taskComType,
procDefKey
} = options
if (procDefKey == "flow_fbzzsp_fbszzsp") {
this.getDicts();
}
//获取缓存数据
wx.getStorage({
key: 'userinfo',
success: res => {
this.setData({
projectId: app.globalData.projectId,
projectName,
procInsId,
procDefName,
deployId,
deptName,
nickName,
taskId,
taskName,
userId,
finishTime,
ret,
taskComType,
myUserId: res.data.userId,
loginName: res.data.loginName,
})
this.getFlowRecordList();
this.getFlowNodes();
this.getFormDatasList();
}
})
},
//获取字典信息
getDicts() {
let that = this;
/*关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面*/
getDictCache('flow_sub_dept_type').then(res => {
if (res.code == 200) {
let typeList = [];
res.data.forEach(item => {
typeList.push({
"id": item.dictValue,
"text": item.dictLabel
});
})
that.setData({
subDeptTypes: typeList
})
}
});
getDictCache('flow_sub_dept_scope').then(res => {
if (res.code == 200) {
let scopeList = [];
res.data.forEach(item => {
scopeList.push({
"id": item.dictValue,
"text": item.dictLabel
});
})
that.setData({
subDeptScopes: scopeList
})
}
});
},
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;
let actNv = this.data.active;
if(flowNodeList[i].name==this.data.taskName){
if(this.data.taskComType=="2" || this.data.taskComType=="3"){
actNv = list.length-1;
}else{
actNv = list.length;
}
}
list.push({
id: flowNodeList[i].id,
name: flowNodeList[i].name,
text: flowNodeList[i].name.length > 4 ? flowNodeList[i].name.substring(0, 4) : flowNodeList[i].name
});
this.setData({
active:actNv,
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,
text: res.data[0].name
});
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,idx)=>{
if(idx==1 && (item.commentType=="3" || item.commentType=="2")){
that.setData({
rejectNode:true
})
}
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 + '.min.jpg',
path: config.baseUrl + element
});
} else {
let it = element.split('/');
filesData.push({
name: it[it.length - 1],
path: element
});
}
});
}
that.setData({
filesData,
imageList,
stopShow: !that.data.finishTime && that.data.userId == that.myUserId,
deleteShow: !that.data.finishTime && that.data.userId == that.myUserId,
revocationShow: !that.data.finishTime
})
} else {
app.toast(res.msg);
}
}
})
},
//退回
onStop() {
if (!this.data.stopBtnShow) {
app.toast("请填写终止原因!")
this.setData({
stopBtnShow: true
})
return;
} else {
if (this.data.comment == "") {
app.toast("请填写终止原因!")
this.setData({
stopBtnShow: true
})
return;
}
}
this.setData({
loadShow: true
})
let that = this
let params = {
instanceId: this.data.procInsId,
comment: this.data.comment,
userId: this.data.myUserId,
taskId: this.data.taskId
}
//弹出确认
wx.showModal({
title: '提示',
content: '是否终止当前流程申请?',
success: function (sm) {
if (sm.confirm) {
wx.request({
url: app.globalData.reqUrl + '/wechat/flowTask/stopProcess',
method: "POST",
data: params,
header: {
"Username": that.data.loginName,
"Content-Type": "application/json"
},
success(res) {
that.setData({
loadShow: false
})
res = res.data
if (res.code == 200) {
app.toast("终止流程申请成功!")
if (that.data.ret == "finished") {
setTimeout(() => {
wx.redirectTo({
url: '../finished/index',
})
}, 200)
} else {
setTimeout(() => {
wx.redirectTo({
url: '../myProcessIns/index',
})
}, 200)
}
} else {
app.toast(res.msg);
}
}
})
} else if (sm.cancel) {
that.setData({
loadShow: false
})
console.log('用户点击取消');
}
}
})
},
//通过
onDelete() {
this.setData({
loadShow: true
})
let that = this
//弹出确认
wx.showModal({
title: '提示',
content: '是否确认删除流程申请?',
success: function (sm) {
if (sm.confirm) {
wx.request({
url: app.globalData.reqUrl + '/wechat/flowTask/delete/' + that.data.procInsId,
method: "delete",
data: {},
header: {
"Username": that.data.loginName,
"Content-Type": "application/json"
},
success(res) {
that.setData({
loadShow: false
})
res = res.data
if (res.code == 200) {
app.toast("删除流程申请成功!")
if (that.data.ret == "finished") {
setTimeout(() => {
wx.redirectTo({
url: '../finished/index',
})
}, 200)
} else {
setTimeout(() => {
wx.redirectTo({
url: '../myProcessIns/index',
})
}, 200)
}
} else {
app.toast(res.msg);
}
}
})
} else if (sm.cancel) {
that.setData({
loadShow: false
})
console.log('用户点击取消');
}
}
})
},
//撤回
onRevocation() {
this.setData({
loadShow: true
})
let that = this
let params = {
procInsId: this.data.procInsId,
instanceId: this.data.procInsId,
taskId: this.data.taskId,
userId: this.data.myUserId,
assignee: this.data.nickName
}
//弹出确认
wx.showModal({
title: '提示',
content: '是否确认撤回当前任务流程?',
success: function (sm) {
if (sm.confirm) {
wx.request({
url: app.globalData.reqUrl + '/wechat/flowTask/revokeProcess',
method: "POST",
data: params,
header: {
"Username": that.data.loginName,
"Content-Type": "application/json"
},
success(res) {
that.setData({
loadShow: false
})
res = res.data
if (res.code == 200) {
app.toast("撤回流程申请成功!")
if (that.data.ret == "finished") {
setTimeout(() => {
wx.redirectTo({
url: '../finished/index',
})
}, 200)
} else {
setTimeout(() => {
wx.redirectTo({
url: '../myProcessIns/index',
})
}, 200)
}
} else {
app.toast(res.msg);
}
}
})
} else if (sm.cancel) {
that.setData({
loadShow: false
})
console.log('用户点击取消');
}
}
})
},
// 手风琴
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.name
})
},
returnToPage: function () {
/*关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面*/
if (this.data.ret == "finished") {
wx.redirectTo({
url: '../finished/index',
})
} else {
wx.redirectTo({
url: '../myProcessIns/index',
})
}
},
//展示图片详细
showImg: function (e) {
let {
path
} = e.currentTarget.dataset.set
let images = [];
this.data.imageList.forEach(img =>{
images.push(img.path);
});
wx.previewImage({
urls: images,
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
let fpt = filePath.split(".");
wx.openDocument({
filePath: filePath,
fileType: fpt[fpt.length - 1],
success: function (res) {
console.log('打开文档成功')
},
fail: function (res) {
console.log(res)
}
})
}
})
//app.toast("暂不支持下载!如需下载请前往后台管理系统!!")
},
//终止原因
commentblur: function (options) {
this.data.comment = options.detail.value;
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})