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() { } })