YZProjectCloud/yanzhu-ui-app/miniprogram/pages/project_flowable/initTask/index.js

547 lines
15 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 {
readNotes,
readDeployNotes,
startProcessInstance
} from '../../../api/flowable'
import {
findMyDeptList,
findAllByCategory
} from '../../../api/publics'
import config from '../../../config'
import {
getToken
} from '../../../utils/auth'
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
maxDate: new Date(2088, 1, 1).getTime(),
options: {},
initData: {},
deptList: [],
dataList: [],
useDeptId: "",
useTime: "",
applyReason: "",
limit: 9,
detailDataList: [],
filesData: [],
fileType: ["png", "jpg", "jpeg"],
flowNodeList: [],
flowNodes: [],
stepList: [],
active: "",
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
this.setData({
options: options,
initData: {
id: app.globalData.useProjectId,
text: app.globalData.useProjectName
}
})
this.initDeptList();
this.findMyDeptAssetsList();
this.findFlowNodes();
this.newApplyDetail();
},
/**
* 栏目触发事件
*/
onClickNav(e) {
var index = e.currentTarget.dataset.index
let list = this.data.detailDataList;
list[index].activeId = null;
list[index].mainActiveIndex = e.detail.index;
this.setData({
detailDataList: list
})
console.log(e.detail.index, this.data.dataList);
},
/**
* 选项触发事件
*/
onClickItem(e) {
var index = e.currentTarget.dataset.index
let list = this.data.detailDataList;
list[index].detailId = e.detail.id;
list[index].detailName = e.detail.text;
list[index].showDetailsName = e.detail.detailName;
if (e.detail.units) {
let itemList = [];
e.detail.units.split(',').forEach((item, idx) => {
if (idx == 0) {
list[index].useUnitIndex = idx;
list[index].useUnit = item;
}
itemList.push({
id: idx,
text: item
});
});
list[index].assetsUnits = itemList;
}
list[index].activeId = e.detail.id;
list[index].showDetailsPopup = false;
this.setData({
detailDataList: list
})
},
/**
* 初始化部门列表
*/
initDeptList() {
findMyDeptList().then(res => {
let list = [];
res.data.forEach(item => {
list.push({
"id": item.deptId,
"text": item.deptName
});
});
this.setData({
deptList: list,
useDeptId: app.globalData.userData?.deptId,
})
});
},
//查询工作流节点
findFlowNodes() {
//readNotes
readDeployNotes(this.data.options.deploymentId).then(res => {
if (res.code == 200) {
let list = [{
text: '开始'
}];
res.data.forEach(item => {
list.push({
text: item.name,
desc: ''
});
});
list.push({
text: '结束'
});
this.setData({
stepList: list
})
}
});
},
//新增问题
newApplyDetail() {
var data = this.data.detailDataList
data.push({
detailId: '',
detailName: '',
showDetailsName: '',
showDetailsPopup: false,
mainActiveIndex: 0,
activeId: [],
useUnit: "",
useUnitIndex: "",
assetsUnits: [],
applyNumber: "",
assetsVersion: "",
useReason: ""
})
this.setData({
detailDataList: data
})
},
/**
* 删除申请详情
* @param {*} e
*/
delApplyDetail(e) {
var index = e.currentTarget.dataset.index
var data = this.data.detailDataList
data.splice(index, 1);
this.setData({
detailDataList: data
})
},
//保存
onSave() {
let {
options,
initData,
useDeptId,
useTime,
applyReason,
detailDataList,
filesData
} = this.data;
//数据效验
if (!initData.id || !options.procDefId || !options.category || !options.deploymentId) {
app.toast("数据异常,请刷新页面重试!")
return false;
}
if (useDeptId == "") {
app.toast("请选择使用单位!")
return false;
}
if (useTime == "") {
app.toast("请选择使用时间!")
return false;
}
if (applyReason == "") {
app.toast("请填写申请原因!")
return false;
}
if (detailDataList.length > 0) {
for (let i = 0; i < detailDataList.length; i++) {
if (!detailDataList[i].detailId || !detailDataList[i].detailName || detailDataList[i].activeId.length == 0) {
app.toast("请选择申请明细!")
return false;
}
if (!detailDataList[i].applyNumber) {
app.toast("请填写申请数量!")
return false;
}
if (!detailDataList[i].useUnit) {
app.toast("请选择单位名称!")
return false;
}
}
} else {
app.toast("请添加申请明细!")
}
if (filesData.length > 0) {
for (let i = 0; i < filesData.length; i++) {
let _fileType = filesData[0].split('.');
_fileType = _fileType[_fileType.length - 1].toLowerCase();
if (this.data.fileType.indexOf(_fileType) == -1) {
app.toast("申请附件不支持 [ " + _fileType + " ] 格式!请检查第" + (i + 1) + "个附件")
return false;
}
}
}
let that = this;
wx.showModal({
title: '提示',
content: '是否确定提交流程申请?',
success: function (sm) {
if (sm.confirm) {
that.submit()
} else if (sm.cancel) {
console.log('用户点击取消');
}
}
})
},
/**
* 表单确认提交
*/
submit() {
let {
filesData,
} = this.data;
let fileUrls = [];
if (filesData.length > 0) {
filesData.forEach(async (item) => {
//这里复杂的图片上传,改为同步上传,因为小程序只能上传一张图片
let ajaxResult = await this.syncUploadImage(item);
fileUrls.push(ajaxResult.data.fileName);
//验证图片上传完毕
if (fileUrls.length == filesData.length) {
this.sbm(fileUrls.toString());
}
})
} else {
this.sbm("");
}
},
sbm(fileUrls) {
let {
options,
initData,
useDeptId,
useTime,
applyReason,
detailDataList,
dataList
} = this.data;
let applyDetailList = [];
detailDataList.forEach(detail => {
applyDetailList.push({
superTypeKey: options.category,
typeId: dataList[detail.mainActiveIndex].id,
typeName: dataList[detail.mainActiveIndex].name,
assetsId: detail.detailId,
assetsName: detail.detailName,
number: detail.applyNumber,
assetsUnit: detail.useUnit,
assetsVersion: detail.assetsVersion,
useReason: detail.useReason
});
});
let params = {
procDefId: options.procDefId,
proProjectApply: {
deptId: useDeptId,
projId: initData.id,
projName: initData.text,
applyType: options.category,
applyStatus: 1,
useTime,
applyReason,
applyFiles: fileUrls,
proProjectApplyDetailList: applyDetailList
}
}
startProcessInstance(params).then(res => {
if (res.code == '200') {
app.toast("提交流程申请成功!", 'success');
//跳转页面
wx.redirectTo({
url: '../../index/index',
})
}
});
},
/**
* 这里考虑上传图片异步问题,封装为同步
*/
syncUploadImage(file) {
let url = config.baseUrl + "/common/upload";
let name = "file";
return new Promise((resolve, reject) => {
wx.uploadFile({
url, // 上传的服务器接口地址
filePath: file,
header: {
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
'Authorization': 'Bearer ' + getToken(),
},
name, //上传的所需字段,后端提供
formData: null,
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)
}
});
})
},
//申请说明输入
applyReasonblur: function (options) {
this.data.applyReason = options.detail.value;
},
//申请附件上传
fileUpload(options) {
let files = options.detail;
this.setData({
filesData: files
});
},
//使用单位
onSelectDept(e) {
this.setData({
useDeptId: e.detail.id
})
},
//使用时间
onInputTime(e) {
this.setData({
useTime: e.detail
})
},
//查询部门资产列表信息
findMyDeptAssetsList() {
findAllByCategory(this.data.options.category).then(res => {
if (res.code == '200') {
let list = [];
res.data.forEach(item => {
let children = [];
item.childrenAssetsTypeList.forEach(child => {
children.push({
id: child.id,
text: child.name,
units: child.unit,
detailName: item.name + ' > ' + child.name
});
})
list.push({
id: item.id,
text: item.name,
children: children
});
});
this.setData({
dataList: list
})
}
});
},
//输入申请数量
onInputNumber(e) {
var index = e.currentTarget.dataset.index
let list = this.data.detailDataList;
let value = e.detail.value;
list[index].applyNumber = value;
this.setData({
detailDataList: list
})
},
//选择资产单位
onSelectUnit(e) {
var index = e.currentTarget.dataset.index
let list = this.data.detailDataList;
list[index].useUnit = e.detail.text;
list[index].useUnitIndex = e.detail.id;
this.setData({
detailDataList: list
})
},
//输入规格型号
onInputVersion(e) {
var index = e.currentTarget.dataset.index
let list = this.data.detailDataList;
list[index].assetsVersion = e.detail.value;
this.setData({
detailDataList: list
})
},
//输入使用说明
onInputUseReason(e) {
var index = e.currentTarget.dataset.index
let list = this.data.detailDataList;
list[index].useReason = e.detail.value;
this.setData({
detailDataList: list
})
},
//关闭申请明细选择
onShowPopup(e) {
var index = e.currentTarget.dataset.index
let list = this.data.detailDataList;
list[index].showDetailsPopup = true;
this.setData({
detailDataList: list
})
},
//关闭申请明细选择
onClosePopup(e) {
var index = e.currentTarget.dataset.index
let list = this.data.detailDataList;
list[index].showDetailsPopup = false;
this.setData({
detailDataList: list
})
},
/**
* 切换临建项目
* @param {*} e
*/
onProjectSelect: function (e) {
let projectId = e.detail.id;
let projectName = e.detail.text;
app.globalData.useProjectId = projectId;
app.globalData.useProjectName = projectName;
this.setData({
initData: {
id: app.globalData.useProjectId,
text: app.globalData.useProjectName
}
})
},
returnToPage: function () {
/*关闭当前页面,跳转到其它页面。*/
wx.redirectTo({
url: '../myFlowDefinition/index',
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})