You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

401 lines
13 KiB

// package/troubleshooting/shootingForm/index.js
import { getPatrolRecordIssueHandleById, getStructuresUsers, editPatrolRecordIssueHandle } from "../../../utils/getApiUrl";
import { Request } from "../../../common";
const moment = require("../../../utils/moment");
Page({
/**
* 页面的初始数据
*/
data: {
imgServer: getApp().globalData.imgUrl,
userInfo: wx.getStorageSync("userInfo"),
data: {},
strucFocusUser: {},
focusPerson: [],
shootingid: '',
pointItemCollapseActiveNames: undefined,
maintenancePersonIndex: undefined,
maintenancePersonId: null,
maintenancePersonDepartmentShow: '',
maintenanceRequirement: '',
qualityPersonIndex: undefined,
planStartTimePopupShow: false,
planStartTime: '',
planStartTimeShow: '',
planEndTimePopupShow: false,
planEndTime: '',
planEndTimeShow: '',
planApproval: '',
planApprovalPerson: '',
planApprovalTime: '',
repair: '',
repairImgs: [],
// 表单控制
isPlanState: false,
isApprove: false,
},
/**
* 生命周期函数--监听页面加载
*/
onLoad (options) {
const { shootingid } = options
if (shootingid) {
this.setData({
shootingid
})
Promise.all(
[
Request.get(getPatrolRecordIssueHandleById(shootingid), {}),
Request.get(getStructuresUsers(), {})
]
).then(res => {
console.log(res, 222);
const [issue, strucUser] = res
const nextData = {
...issue,
PatrolRecord: {
...issue.PatrolRecord,
inspectionTime: moment(issue.PatrolRecord.inspectionTime).format('YYYY-MM-DD HH:mm:ss'),
points: {
...issue.PatrolRecord.points,
inspectContent: (() => {
let inspectContent = []
for (let k in issue.PatrolRecord.points.inspectContent) {
inspectContent.push({
...issue.PatrolRecord.points.inspectContent[k],
itemName: k
})
}
return inspectContent
})()
}
}
}
console.log(nextData);
this.setData({
data: nextData,
isPlanState: issue.state == 1 || issue.state == 3,
isApprove: issue.state == 2
})
this.setData({
strucFocusUser: {
...strucUser,
}
})
const focusPerson = (strucUser.find(s => s.id == issue.PatrolRecord.points.project.id) || {}).users || []
this.setData({
focusPerson: focusPerson
})
if (issue.state > 1) {
let maintenancePersonIndex = focusPerson.findIndex(f => f.id == issue.repairPerson.id)
console.log(maintenancePersonIndex, issue.startTime, moment(issue.startTime).format('YYYY-MM-DD HH:mm:ss'));
this.setData({
maintenancePersonIndex: maintenancePersonIndex,
maintenancePersonDepartmentShow: maintenancePersonIndex >= 0 ? focusPerson[maintenancePersonIndex].department.name : '',
qualityPersonIndex: focusPerson.findIndex(f => f.id == issue.checkPerson.id),
planStartTime: moment(issue.startTime).unix(),
planStartTimeShow: moment(issue.startTime).format('YYYY-MM-DD HH:mm:ss'),
planEndTimeShow: moment(issue.endTime).format('YYYY-MM-DD HH:mm:ss'),
maintenanceRequirement: issue.repairAsk
})
}
if (issue.state > 2) {
this.setData({
planApproval: issue.approveOpinion,
planApprovalPerson: issue.approvePerson ? issue.approvePerson.name : '',
planApprovalTime: issue.approveDate ? moment(issue.approveDate).format('YYYY-MM-DD HH:mm:ss') : '',
})
}
})
} else {
}
},
onPointItemCollapseActiveChange (event) {
this.setData({
pointItemCollapseActiveNames: event.detail,
});
},
onMaintenancePersonPopupChange (e) {
console.log(e);
if (e.target.dataset.type == 'zhijian') {
this.setData({
qualityPersonIndex: e.detail.value
})
} else {
let selectedUser = this.data.focusPerson[e.detail.value]
this.setData({
maintenancePersonIndex: e.detail.value,
maintenancePersonDepartmentShow: selectedUser ? selectedUser.department.name : ''
})
}
},
showPlanStartTimePopup () {
if (this.data.isPlanState) {
this.setData({ planStartTimePopupShow: true })
}
},
closePlanStartTimePopup (e) {
this.setData({ planStartTimePopupShow: false })
console.log(e.target, this.data.planStartTime);
if (e.target.dataset.option == 'cancel') {
// this.setData({ planStartTime: '' })
} else if (e.target.dataset.option == 'confirmed') {
this.setData({
planStartTimeShow: this.data.planStartTime ? moment(this.data.planStartTime).format('YYYY-MM-DD HH:mm') : ''
})
}
},
onPlanStartTimeChange (event) {
console.log(event);
this.setData({
planStartTime: event.detail,
})
},
showPlanEndTimePopup () {
if (this.data.isPlanState) {
this.setData({ planEndTimePopupShow: true })
}
},
closePlanEndTimePopup (e) {
this.setData({ planEndTimePopupShow: false })
if (e.target.dataset.option == 'confirmed') {
this.setData({
planEndTimeShow: this.data.planEndTime ? moment(this.data.planEndTime).format('YYYY-MM-DD HH:mm') : ''
})
}
},
onPlanEndTimeChange (event) {
this.setData({
planEndTime: event.detail,
})
},
onInputChange (e) {
console.log(e);
this.setData({
[e.target.dataset.type]: e.detail.value
})
},
// 预览图片
previewImg: function (e) {
console.log(e);
const { index, itemindex } = e.currentTarget.dataset
const imgs = this.data.data.PatrolRecord.points.inspectContent[itemindex].imgs;
const newImgs = imgs.map(i => this.data.imgServer + i);
wx.previewImage({
current: newImgs[index],
urls: newImgs
})
},
// 上传图片
chooseImg: function (e) { // 这里是选取图片的方法
const that = this;
let pics = [];
const detailPics = that.data.repairImgs
if (detailPics.length >= 20) {
wx.showToast({
title: '最多选择20张图片上传',
icon: 'none'
});
return;
}
wx.chooseMedia({
count: 20, // 基础库2.25.0前,最多可支持9个文件,2.25.0及以后最多可支持20个文件
mediaType: ['image'], // 文件类型
sizeType: ['original', 'compressed'], // original 原图,compressed 压缩图,默认二者都有
sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有
success: function (res) {
const imgs = res.tempFiles;
for (let i = 0; i < imgs.length; i++) {
if (res.tempFiles[i].size > 15728640) {
wx.showToast({ title: '图片大于15M,不可上传', icon: 'none' });
return;
}
const fileNameArr = res.tempFiles[i].tempFilePath.split('.');
const extension = res.tempFiles[i].tempFilePath.split('.')[fileNameArr.length - 1];
if (extension !== 'jpg' && extension !== 'png' && extension !== 'jpeg') {
wx.showToast({ title: '只能上传jpg、jpeg、png格式的图片', icon: 'none' });
return;
}
pics.push(imgs[i].tempFilePath)
}
that.uploadimg({
url: getApp().globalData.webUrl + '_upload/attachments/project', // 图片上传的接口
path: pics, // 选取的图片的地址数组
}, 'repairImgs');
},
})
},
//多张图片上传
uploadimg: function (data, itemName) {
wx.showLoading({
title: '上传中...',
mask: true,
})
let that = this,
i = data.i ? data.i : 0,
success = data.success ? data.success : 0,
fail = data.fail ? data.fail : 0;
let imgs = that.data[itemName];
wx.uploadFile({
url: data.url,
filePath: data.path[i],
name: 'file',
success: (resp) => {
wx.hideLoading();
success++;
console.log(resp);
let str = JSON.parse(resp.data) // 返回的结果,可能不同项目结果不一样
str = str.uploaded
console.log(str);
if (imgs.length >= 20) {
return false;
} else {
let imgs_ = JSON.parse(JSON.stringify(imgs))
imgs_.push(str);
that.setData({
[itemName]: imgs_,
})
}
},
fail: (res) => {
fail++;
console.log('fail:' + i + "fail:" + fail);
},
complete: () => {
i++;
if (i == data.path.length) { // 当图片传完时,停止调用
console.log('执行完毕');
console.log('成功:' + success + " 失败:" + fail);
} else { // 若图片还没有传完,则继续调用函数
data.i = i;
data.success = success;
data.fail = fail;
that.uploadimg(data, itemName); // 递归,回调自己
}
}
});
},
// 删除图片
deleteImg: function (e) {
// let imgs = this.data.inspectContent[e.currentTarget.dataset.item].imgs;
// const index = e.currentTarget.dataset.index;
// imgs.splice(index, 1);
// const inspectContent = this.data.inspectContent;
// inspectContent[e.currentTarget.dataset.item].imgs = imgs;
// this.setData({
// inspectContent
// });
},
confirm (e) {
console.log(e);
const { approve } = e.target.dataset
const { state } = this.data.data
const {
shootingid, focusPerson,
maintenancePersonIndex, maintenancePersonDepartmentShow, qualityPersonIndex, planStartTime, planEndTime, maintenanceRequirement,
userInfo, planApproval,
} = this.data
let nextState = ''
let confirmData = {}
if (state == 1 || state == 3) {
nextState = 2
confirmData = {
...confirmData,
repairPerson: focusPerson[maintenancePersonIndex],
repairUnit: maintenancePersonDepartmentShow,
checkPerson: focusPerson[qualityPersonIndex],
startTime: moment(planStartTime).format(),
endTime: moment(planEndTime).format(),
repairAsk: maintenanceRequirement,
}
} else if (state == 2) {
confirmData = {
...confirmData,
approveOpinion: planApproval,
approvePerson: userInfo,
approveDate: moment().format(),
}
if (approve == 'agree') {
nextState = 4
} else {
nextState = 3
}
}
Request.put(editPatrolRecordIssueHandle(shootingid), {
...confirmData,
state: nextState,
}).then(res => {
// wx.redirectTo({
// url: '/package/troubleshooting/index'
// })
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage () {
}
})