YZProjectCloud/yanzhu-ui-app/miniprogram/pageage/project_flowable/approveTask/index.js

468 lines
12 KiB
JavaScript
Raw Normal View History

2025-05-18 10:49:52 +08:00
import config from '../../../config'
import {
reject,
complete,
returnTask,
returnList,
readDeployNotes,
findCommentByProcInsId
} from '../../../api/flowable'
import {
editApproveStatus,
findProSubDeptsInfoById,
findProSubDeptsUserInfoById
} from '../../../api/project'
import {
getToken
} from '../../../utils/auth'
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
options: {},
active: 0,
stepList: [],
rejectNode: false,
activeName: "",
flowRecordList: [],
subDeptData: {
subDeptInfos: {}
},
subDeptUserData: {
userInfos: {},
},
comment: "",
targetKey: "",
targetKeyList: [],
imgBaseUrl: config.baseImgUrl
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
this.setData({
options: options
})
this.findFlowNodes();
this.findApplyDataInfo();
this.findCommentByProcInsId();
this.initTargetKeyList();
},
//查询工作流节点
findFlowNodes() {
readDeployNotes(this.data.options.deployId).then(res => {
let list = [{
text: '开始'
}];
let index = this.data.active;
res.data.forEach((item, idx) => {
if (this.data.options.taskName == item.name) {
index = idx + 1;
}
list.push({
text: item.name.substr(0,5),
desc: ''
});
});
list.push({
text: '结束'
});
this.setData({
active: index,
stepList: list
})
});
},
//查询审批日志
findCommentByProcInsId() {
findCommentByProcInsId({
procInsId: this.data.options.procInsId
}).then(res => {
this.setData({
flowRecordList: res.data
})
let list = [];
res.data.forEach((item, idx) => {
if (idx == 1 && (item.commentType == "3" || item.commentType == "2")) {
this.setData({
rejectNode: true
})
}
if (item.deleteReason) {
item.deleteReason = this.getDeleteReason(item.deleteReason);
}
if (item.duration) {
item.duration = app.getDurationDate(item.duration);
}
list.push(item);
})
this.setData({
flowRecordList: list
})
});
},
//查询审批表单参数
findApplyDataInfo() {
findProSubDeptsUserInfoById(this.data.options.businessKey).then(res => {
if (res.data.eduFilePath) {
let files = res.data.eduFilePath.split('/');
res.data.eduFileName = files[files.length - 1];
}
if(res.data.userInfos){
res.data.userInfos = JSON.parse(res.data.userInfos);
}
this.setData({
subDeptUserData: res.data
})
//查询单位信息
this.getSubDeptInfo(res.data.subDeptId);
})
},
//查询审批表单参数
getSubDeptInfo(subDeptId) {
findProSubDeptsInfoById(subDeptId).then(res => {
res.data.subDeptInfos = JSON.parse(res.data.subDeptInfos);
this.setData({
subDeptData: res.data
})
})
},
//初始化退回节点
initTargetKeyList() {
returnList({
taskId: this.data.options.taskId
}).then(res => {
if (res.data && res.data.length > 0) {
let list = [];
res.data.forEach(item => {
list.push({
id: item.id,
text: item.name
})
})
this.setData({
targetKey: list[0].id,
targetKeyList: list
})
}
});
},
//退回
onBack() {
let {
options,
comment
} = this.data;
//数据效验
if (!options.taskId) {
app.toast("数据异常,请刷新页面重试!")
return;
}
if (!comment) {
app.toast("请填写审批意见!")
return false;
}
let that = this;
//弹出确认
wx.showModal({
title: '提示',
content: '是否确认审批驳回?',
success: function (sm) {
if (sm.confirm) {
that.submitBackTask();
}
}
})
},
/**
* 提交退回任务
*/
submitBackTask() {
let {
options,
comment,
targetKeyList
} = this.data;
returnTask({
taskId: options.taskId,
targetKey: targetKeyList[0].id,
comment
}).then(res => {
if (res.code == 200) {
editApproveStatus(this.data.options.businessKey);
app.toast("驳回申请成功!")
setTimeout(() => {
this.returnToPage();
}, 500)
}
});
},
//通过
onPass() {
let {
options,
comment
} = this.data;
//数据效验
if (!options.taskId) {
app.toast("数据异常,请刷新页面重试!")
return;
}
if (comment == "") {
app.toast("请填写审批意见!")
return;
}
let that = this;
//弹出确认
wx.showModal({
title: '提示',
content: '是否确认审批通过?',
success: function (sm) {
if (sm.confirm) {
that.submitPassTask();
}
}
})
},
/**
* 提交审核结果
*/
submitPassTask() {
let {
options,
procInsId,
comment
} = this.data;
complete({
taskId: options.taskId,
instanceId: procInsId,
comment
}).then(res => {
if (res.code == 200) {
app.toast("申请审批通过成功!")
setTimeout(() => {
this.returnToPage();
}, 500)
}
});
},
//驳回
onReject() {
let {
taskId,
procInsId,
comment
} = this.data;
//数据效验
if (!taskId || !procInsId) {
app.toast("数据异常,请刷新页面重试!")
return;
}
if (comment == "") {
app.toast("请填写审批意见!")
return;
}
let that = this;
//弹出确认
wx.showModal({
title: '提示',
content: '是否确认审批驳回?',
success: function (sm) {
if (sm.confirm) {
that.submitRejectTask();
}
}
})
},
/**
* 提交流程驳回
*/
submitRejectTask() {
let {
taskId,
procInsId,
comment
} = this.data;
reject({
taskId,
instanceId: procInsId,
comment
}).then(res => {
if (res.code == 200) {
app.toast("驳回申请流程成功!")
setTimeout(() => {
this.returnToPage();
}, 500)
}
});
},
//申请说明
commentInput: function (options) {
this.data.comment = options.detail.value;
},
// 手风琴
onChange(event) {
this.setData({
activeName: event.detail,
});
},
/**
* 获取驳回节点
* @param {*} val
*/
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;
}
}
},
//终止原因
commentblur: function (options) {
this.data.comment = options.detail.value;
},
//展示图片
showImg: function (e) {
let paths = e.target.dataset.set;
let path = [];
paths.split(',').forEach(url => {
path.push(config.baseImgUrl + url);
});
wx.previewImage({
urls: path,
current: path[0]
})
},
/**
* 下载并打开文档
* @param {*} e
*/
downFile: function (e) {
let path = this.data.subDeptUserData.eduFilePath;
wx.downloadFile({
// 示例 url并非真实存在
url: config.baseUrl + '/file/download?fileName=' + path,
header: {
'Authorization': 'Bearer ' + getToken()
},
success: function (res) {
const filePath = res.tempFilePath
let fpt = path.split(".");
wx.openDocument({
filePath: filePath,
fileType: fpt[fpt.length - 1],
success: function (res) {
console.log('打开文档成功')
},
fail: function (res) {
console.log(res)
}
})
}
})
},
//选择退回节点
onSelectTargetKey(e) {
this.setData({
targetKey: e.detail.id,
backName: e.detail.name
})
},
/**
* 返回页面
*/
returnToPage: function () {
if (wx.getStorageSync('nav-types') == "depts") {
wx.redirectTo({
url: '../subDepts/index',
})
} else if (wx.getStorageSync('nav-types') == "users") {
wx.redirectTo({
url: '../subDeptsUsers/index',
})
}
},
/**
* 修改申请
*/
onEditApply: function () {
wx.redirectTo({
url: `../editTask/index?deployId=${this.data.options.deployId}&procInsId=${this.data.options.procInsId}&nickName=${this.data.options.nickName}&deptName=${this.data.options.deptName}&procDefName=${this.data.options.procDefName}&taskId=${this.data.options.taskId}&taskName=${this.data.options.taskName}&category=${this.data.options.category}&projectName=${this.data.options.projectName}&businessKey=${this.data.options.businessKey}&businessKeyParName=${this.data.options.businessKeyParName}&businessDeptId=${this.data.options.businessDeptId}&startUserId=${this.data.options.startUserId}`,
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})