YZProjectCloud/yanzhu-ui-app/miniprogram/pages/project_subusers/add/index.js

774 lines
22 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 config from '../../../config'
import {
getToken
} from '../../../utils/auth'
import {
findDictCache,
findCardOcrFront
} from '../../../api/publics'
import {
subdeptsList,
findSubGroupsList,
registerSubUsersGL,
findProSubUsersInfoById
} from '../../../api/project'
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
limit: 1,
maxDate: new Date(2088, 1, 1).getTime(),
form: {},
active: 0,
flowNodes: [{
text: '信息登记'
}, {
text: '信息审核'
}, {
text: '人员入场'
}],
subDeptList: [],
subGroupList: [],
userPostList: [],
eduCationalType: [],
loadShow: false,
imgBase: config.baseImgUrl,
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
if (!getToken()) {
wx.redirectTo({
url: '../../login/login',
})
}
if (options && options.id) {
//查询数据回填...
this.initData(options.id);
}
this.setData({
"form.projectId": app.globalData.useProjectId,
"form.projectName": app.globalData.useProjectName
});
this.getDictCache();
this.getAllSubDepts();
},
/**
* 获取单位
*/
getAllSubDepts() {
let params = "pageNum=1&pageSize=1000&useStatus=0&activeTags=finished&projectId=" + app.globalData.useProjectId;
subdeptsList(params).then(res => {
let list = [];
res.rows.forEach(item => {
list.push({
"id": item.id,
"text": item.subDeptName,
"type": item.subDeptType,
"typeName": item.subDeptTypeName,
"code": item.subDeptCode,
});
});
this.setData({
subDeptList: list
});
});
},
/**
* 获取班组
*/
getAllSubGroups(subDeptId) {
let params = "pageNum=1&pageSize=1000&useStatus=0&activeTags=finished&projectId=" + app.globalData.useProjectId + "&subDeptId=" + subDeptId;
findSubGroupsList(params).then(res => {
let list = [];
res.rows.forEach(item => {
list.push({
"id": item.id,
"text": item.groupName,
"groupCode": item.groupCode,
"craftType": item.craftType,
"craftTypeName": item.craftTypeName,
"craftPost": item.craftPost,
"craftPostName": item.craftPostName,
});
});
this.setData({
subGroupList: list
});
});
},
/**
* 获取字典缓存数据
*/
getDictCache() {
// 初始化学历类型
findDictCache("educational_type").then(res => {
if (res.code == 200) {
let eduCationalType = [];
res.data.forEach(item => {
eduCationalType.push({
"id": item.dictValue,
"text": item.dictLabel
});
})
this.setData({
eduCationalType
});
}
})
},
/**
* 初始化数据
* @param {*} id
*/
initData(id) {
findProSubUsersInfoById(id).then(userRes => {
if (userRes.code == 200 && userRes.data != null) {
if (userRes.data.userInfos) {
let userInfosJSON = JSON.parse(userRes.data.userInfos);
userRes.data.nativePlace = userInfosJSON.nativePlace;
userRes.data.nation = userInfosJSON.nation;
userRes.data.address = userInfosJSON.address;
userRes.data.emergencyContact = userInfosJSON.emergencyContact;
userRes.data.contactPhone = userInfosJSON.contactPhone;
userRes.data.bankName = userInfosJSON.bankName;
userRes.data.bankOffice = userInfosJSON.bankOffice;
userRes.data.bankCardNo = userInfosJSON.bankCardNo;
userRes.data.cardImgPos = userInfosJSON.cardImgPos;
userRes.data.cardImgInv = userInfosJSON.cardImgInv;
}
if (userRes.data.cardImgPos) {
userRes.data.cardImgPos = (this.data.imgBase + userRes.data.cardImgPos).split(',');
}
if (userRes.data.cardImgInv) {
userRes.data.cardImgInv = (this.data.imgBase + userRes.data.cardImgInv).split(',');
}
if (userRes.data.userPicture) {
userRes.data.userPicture = (this.data.imgBase + userRes.data.userPicture).split(',');
}
if (userRes.data.subDeptPowerPath) {
userRes.data.subDeptPowerPath = (this.data.imgBase + userRes.data.subDeptPowerPath).split(',');
}
userRes.data._userPost = userRes.data.craftPost;
this.setData({
active: 100,
form: userRes.data
});
this.initUserPostList(userRes.data.craftType,userRes.data.id);
}
});
},
//取消页面
cancelSaveView() {
this.returnToPage()
},
/**
* 委托代理提交参建单位信息
*/
submitSubUsers() {
let {
form
} = this.data;
//数据效验
if (!form.projectId) {
app.toast("数据异常,请刷新页面重试!")
return false;
}
//数据效验
if (!form.subDeptId || !form.subDeptType || !form.subDeptName) {
app.toast("请选择参建单位!");
return false;
}
if (!form.subDeptGroup || !form.subDeptGroupName) {
app.toast("请选择所属班组!");
return false;
}
if (!form._userPost) {
app.toast("请选择工种岗位!");
return false;
}
if (!form.cardImgPos || form.cardImgPos.length == 0) {
app.toast("请上传身份证正面照!");
return false;
}
if (!form.cardImgInv || form.cardImgInv.length == 0) {
app.toast("请上传身份证反面照!");
return false;
}
if (!form.userPicture || form.userPicture.length == 0) {
app.toast("请上传进场半身近照!");
return false;
}
if (form._userPost == '2' || form._userPost == '6') {
if (!form.subDeptPowerPath || form.subDeptPowerPath.length == 0) {
app.toast("请上传委托人单位委托书!");
return false;
}
}
if (!form.userName) {
app.toast("请填写人员姓名!");
return false;
}
if (!form.cardCode) {
app.toast("请填写身份证号!");
return false;
} else {
const cardCodePattern = /^[1-9]\d{5}(18|19|20|21|22)?\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|[Xx])$/;
if (!cardCodePattern.test(form.cardCode)) {
app.toast("身份证号码不正确!");
return false;
}
}
if (!form.userPhone) {
app.toast("请填写联系电话!");
return false;
} else {
const phonePattern = /^1[3|4|5|6|7|8|9][0-9]\d{8}$/;
if (!phonePattern.test(form.userPhone)) {
app.toast("人员联系电话不正确!");
return false;
}
}
if (!form.nativePlace) {
app.toast("请填写籍贯!");
return false;
}
if (!form.nation) {
app.toast("请填写民族!");
return false;
}
if (!form.address) {
app.toast("请填写地址!");
return false;
}
if (!form.emergencyContact) {
app.toast("请填写紧急联系人!");
return false;
}
if (!form.contactPhone) {
app.toast("请填写紧急联系人电话!");
return false;
} else {
const phonePattern = /^1[3|4|5|6|7|8|9][0-9]\d{8}$/;
if (!phonePattern.test(form.contactPhone)) {
app.toast("紧急联系人电话不正确!");
return false;
}
}
if (!form.degreeGrade) {
app.toast("请选择文化程度!");
return false;
}
if (false) {
if (!form.bankName) {
app.toast("请填写开户银行名称!");
return false;
}
if (!form.bankOffice) {
app.toast("请填写开户银行网点!");
return false;
}
if (!form.bankCardNo) {
app.toast("请填写工资银行卡号!");
return false;
}
}
let that = this;
//弹出确认
wx.showModal({
title: '提示',
content: '是否确认保存班组人员信息?',
success: function (sm) {
if (sm.confirm) {
that.submitSubUserForm();
}
}
})
},
/**
* 委托代理提交参建单位表单
*/
submitSubUserForm() {
let _form = {
...this.data.form
};
this.setData({
loadShow: true
})
let uploadFiles = [];
if (_form.cardImgPos && _form.cardImgPos.length > 0) {
uploadFiles.push({
type: 'cardImgPos',
path: _form.cardImgPos[0]
});
}
if (_form.cardImgInv && _form.cardImgInv.length > 0) {
uploadFiles.push({
type: 'cardImgInv',
path: _form.cardImgInv[0]
});
}
if (_form.userPicture && _form.userPicture.length > 0) {
uploadFiles.push({
type: 'userPicture',
path: _form.userPicture[0]
});
}
if (_form.subDeptPowerPath && _form.subDeptPowerPath.length > 0) {
uploadFiles.push({
type: 'subDeptPowerPath',
path: _form.subDeptPowerPath[0]
});
}
let that = this;
let uploads = [];
uploadFiles.forEach(async (item, idx) => {
let obj;
if (item.path.indexOf(this.data.imgBase) > -1) {
obj = {
data: {
data: {
url: item.path.replace(this.data.imgBase, "")
}
}
}
} else {
//这里复杂的图片上传,改为同步上传,因为小程序只能上传一张图片
obj = await that.syncUploadImage(item.path);
}
if (item.type == "cardImgPos") {
_form.cardImgPos = obj.data.data.url;
}
if (item.type == "cardImgInv") {
_form.cardImgInv = obj.data.data.url;
}
if (item.type == "userPicture") {
_form.userPicture = obj.data.data.url;
}
if (item.type == "subDeptPowerPath") {
_form.subDeptPowerPath = obj.data.data.url;
}
uploads.push(obj.data.data.url);
//验证图片上传完毕
if (uploads.length == uploadFiles.length) {
let userInfos = {};
userInfos.nation = _form.nation;
userInfos.nativePlace = _form.nativePlace;
userInfos.address = _form.address;
userInfos.emergencyContact = _form.emergencyContact;
userInfos.contactPhone = _form.contactPhone;
userInfos.bankName = _form.bankName;
userInfos.bankOffice = _form.bankOffice;
userInfos.bankCardNo = _form.bankCardNo;
userInfos.cardImgPos = _form.cardImgPos;
userInfos.cardImgInv = _form.cardImgInv;
_form.userInfos = JSON.stringify(userInfos);
_form.craftPost = _form._userPost;
registerSubUsersGL(_form).then(res => {
this.setData({
loadShow: false
});
if (res.code == 200) {
app.toast("保存数据成功!")
setTimeout(() => {
wx.redirectTo({
url: `../list/index`,
})
}, 200)
}
});
}
});
},
//选择参建单位
onSubDept(e) {
this.setData({
subGroupList: [],
userPostList: [],
});
this.getAllSubGroups(e.detail.id);
let _list = this.data.subDeptList;
_list.forEach(item => {
if (item.id == e.detail.id) {
this.setData({
"form.subDeptId": item.id,
"form.subDeptType": item.type,
"form.subDeptTypeName": item.typeName,
"form.subDeptName": item.text,
"form.subDeptCode": item.code,
"form.subDeptGroup": null,
"form.subDeptGroupName": null,
"form.craftType": null,
"form.craftTypeName": null,
"form.craftPost": null,
"form.craftPostName": null,
"form._userPost": null,
})
}
});
},
//选择所属班组
onSubGroup(e) {
this.setData({
userPostList: [],
});
let _list = this.data.subGroupList;
_list.forEach(item => {
if (item.id == e.detail.id) {
this.setData({
"form.subDeptGroup": item.id,
"form.subDeptGroupName": item.text,
"form.craftType": item.craftType,
"form.craftTypeName": item.craftTypeName,
"form.craftPost": item.craftPost,
"form.craftPostName": item.craftPostName,
"form._userPost": item.craftType=='1'?item.craftPost:null,
})
this.initUserPostList(item.craftType,this.data.form.id);
}
});
},
/**
* 初始化用户岗位
*/
initUserPostList(type,optId) {
if (!type) {
type == "1";
}
findDictCache("pro_craft_post").then(res => {
if (res.code == 200) {
let list = [];
res.data.forEach(item => {
let _rms = item.remark.split(',');
if (item.cssClass == type && _rms.includes(this.data.form.subDeptType)) {
if (type == "3") {
if (item.dictValue != "3022") {
list.push({
"id": item.dictValue,
"text": item.dictLabel
});
}
} else {
list.push({
"id": item.dictValue,
"text": item.dictLabel
});
}
}
});
this.setData({
userPostList: list
});
if(!optId && type!="1"){
this.setData({
"form._userPost": list.length == 1 ? list[0].id : null
});
}
}
});
},
/**
* 选择工种岗位
* @param {*} e
*/
onUserPost(e) {
this.setData({
"form._userPost": e.detail.id
})
console.log("form",this.data.form);
},
/**
* 个人身份证正面照
* @param {*} options
*/
fileUploadCardImgPos(options) {
let file = options.detail;
this.setData({
"form.cardImgPos": file
});
file.forEach(async (item, idx) => {
let obj = await this.syncUploadImage(item);
findCardOcrFront(obj.data.data.url).then(res => {
if (res.code == 200) {
if (res.data.nation.indexOf("族") < 0) {
res.data.nation = res.data.nation + "族";
}
this.setData({
"form.userName": res.data.name,
"form.cardCode": res.data.cardId,
"form.nation": res.data.nation,
"form.nativePlace": res.data.native,
"form.address": res.data.address
})
if (!res.data.name || !res.data.cardId) {
this.setData({
"form.cardImgPos": []
});
app.toast("身份证正面照识别失败!请重新上传");
}
}
});
})
},
/**
* 个人身份证反面照
* @param {*} options
*/
fileUploadCardImgInv(options) {
let file = options.detail;
this.setData({
"form.cardImgInv": file
});
},
/**
* 个人半身近照
* @param {*} options
*/
fileUploadUserPicture(options) {
let file = options.detail;
this.setData({
"form.userPicture": file
});
},
/**
* 单位委托书
* @param {*} options
*/
fileUploadDeptPower(options) {
let file = options.detail;
this.setData({
"form.subDeptPowerPath": file
});
},
/**
* 输入个人姓名
* @param {*} e
*/
inputUserName(e) {
this.setData({
"form.userName": e.detail.value
})
},
/**
* 输入个人身份证号
* @param {*} e
*/
inputUserCode(e) {
this.setData({
"form.cardCode": e.detail.value
})
},
/**
* 输入联系电话
* @param {*} e
*/
inputUserPhone(e) {
this.setData({
"form.userPhone": e.detail.value
})
},
/**
* 个人籍贯
* @param {*} e
*/
inputOriginNative(e) {
this.setData({
"form.nativePlace": e.detail.value
})
},
/**
* 个人民族
* @param {*} e
*/
inputOriginNation(e) {
this.setData({
"form.nation": e.detail.value
})
},
/**
* 个人籍贯地址
* @param {*} e
*/
inputOriginAddress(e) {
this.setData({
"form.address": e.detail.value
})
},
/**
* 紧急联系人
* @param {*} e
*/
inputUrgentUser(e) {
this.setData({
"form.emergencyContact": e.detail.value
})
},
/**
* 紧急联系人电话
* @param {*} e
*/
inputUrgentUserPhone(e) {
this.setData({
"form.contactPhone": e.detail.value
})
},
/**
* 个人文化程度
* @param {*} e
*/
onDegreeGrade(e) {
this.setData({
"form.degreeGrade": e.detail.id
})
},
/**
* 开户行名称
* @param {*} e
*/
inputBankName(e) {
this.setData({
"form.bankName": e.detail.value
})
},
/**
* 开户行网点
* @param {*} e
*/
inputBankOffice(e) {
this.setData({
"form.bankOffice": e.detail.value
})
},
/**
* 开户行卡号
* @param {*} e
*/
inputBankCardNo(e) {
this.setData({
"form.bankCardNo": e.detail.value
})
},
/**
* 这里考虑上传图片异步问题,封装为同步
*/
syncUploadImage(file) {
let _baseUrl = config.baseUrl;
return new Promise((resolve, reject) => {
wx.uploadFile({
url: _baseUrl + "/file/upload", // 上传的服务器接口地址
filePath: file,
header: {
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
'Authorization': 'Bearer ' + getToken()
},
name: "file", //上传的所需字段,后端提供
formData: {},
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)
}
});
})
},
returnToPage: function () {
wx.redirectTo({
url: `../list/index`
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})