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:[], comment:"", taskId:"", procInsId:"", backShow:false, targetKey:"", targetKeyList:[], taskName:"", passState:true, backName:"", ret:"", remark:"", filesData:[], limit:9, fileType:["pdf"], imageType:["png","jpg","jpeg"], imageInfoData:[], isFiles: null, }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { let {deployId,procInsId,procDefName,deptName,nickName,taskId,taskName,projectName,ret} = options //获取缓存数据 wx.getStorage({ key: 'userinfo', success:res=>{ this.setData({ projectId:app.globalData.projectId, projectName, procInsId, procDefName, deployId, deptName, nickName, taskId, taskName, ret, 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;i0){ 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(config.baseUrl+element); }else{ let it = element.split('/'); filesData.push({name:it[it.length-1],path:element}); } }); } that.setData({ filesData, imageInfoData:imageList, isFiles:filesData.length>0?true:false, remark:res.data.remark, filesData:filesData }) }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); } } }) }, //保存 onSave(){ this.setData({ loadShow:true }) let {procDefId,projectId,userId,loginName,remark,filesData} = this.data; //数据效验 if(projectId==""||loginName==""||userId==""||procDefId==""){ app.toast("数据异常,请刷新页面重试!") this.setData({ loadShow:false }) return; } if(remark==""){ app.toast("请填写申请说明!") this.setData({ loadShow:false }) return; } if(filesData.length==0 && this.data.imageInfoData.length==0){ app.toast("请上传审批内容!") this.setData({ loadShow:false }); return; } for(let i=0;i{ imageInfoData.push(f.path); }); imageInfoData.forEach(async (item)=>{ let uploadUrl = app.globalData.uploadUrl+'/common/upload' let name = "file" //这里复杂的图片上传,改为同步上传,因为小程序只能上传一张图片 if(item.indexOf(config.baseUrl)>-1){ fileUrls.push(item.replace(config.baseUrl,'')); }else if(item.indexOf("/profile/")>-1){ fileUrls.push(item); }else{ let obj = await that.syncUploadImage(uploadUrl,item,name); fileUrls.push(obj.data.fileName); } //验证图片上传完毕 if(fileUrls.length == imageInfoData.length){ let params = { taskId, instanceId:procInsId, userId, assignee:nickName, variables:{ businessKey:projectId, projectName, files:fileUrls.toString(), remark, INITIATOR:that.data.infoData.INITIATOR } } 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("提交申请成功!") if(that.data.ret=="await"){ setTimeout(()=>{ wx.redirectTo({ url: '../await/index', }) },200) }else{ setTimeout(()=>{ wx.redirectTo({ url: '../myFlowDefinition/index', }) },200) } }else{ app.toast(res.msg); } } }) } }) }, /** * 这里考虑上传图片异步问题,封装为同步 */ syncUploadImage(url,uploadFile,name) { return new Promise((resolve, reject) => { wx.uploadFile({ url, // 上传的服务器接口地址 filePath: uploadFile, header: { "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" }, name, //上传的所需字段,后端提供 formData: { user: 'test' }, success: (res) => { // 上传完成操作 const data = JSON.parse(res.data) resolve({ data: data }) }, fail: (err) => { //上传失败:修改pedding为reject console.log("访问接口失败", err); wx.showToast({ title: "网络出错,上传失败", icon: 'none', duration: 1000 }); reject(err) } }); }) }, //申请说明 remarkblur: function (options) { this.data.remark = options.detail.value; }, // list 上传图片 onImagesArr(e) { var data = this.data.imageInfoData data = e.detail this.setData({ imageInfoData: data }) }, /** * 上传文件 * @param {*} options */ fileUpload(options){ let file=options.detail; this.setData({ filesData: file }); }, // 手风琴 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;i0){ 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=="await"){ wx.redirectTo({ url: '../await/index', }) }else{ wx.redirectTo({ url: '../myFlowDefinition/index' }) } }, /** * 切换上传文件类型 * @param {*} e */ switchFiles(e) { this.setData({ isFiles: !this.data.isFiles, }); if(this.data.isFiles){ if(this.data.filesData.length==0){ let myImages = this.selectComponent("#myImage"); myImages.upload(); } }else{ if(this.data.imageInfoData.length==0){ let myFiles = this.selectComponent("#myFiles"); myFiles.upload(); } } }, //取消页面 cancelSaveView(){ /*关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面*/ if(this.data.ret=="await"){ wx.redirectTo({ url: '../await/index', }) }else{ wx.redirectTo({ url: '../myFlowDefinition/index' }) } }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ onShareAppMessage() { } })