var app = getApp() var that; var animation; Page({ data: { users: [], items: [], animationInfo: '', isShowType: '',//是显示选择规则还是显示选择分类 activeIndex: '', isArr: ['奖', '扣'], reviewerObj: [],//默认的审批人 disabled: false, employeeList: [],//人员列表 superior_list: [],//领导人员 type: 'B', isGzType: 'BF', defaultRuleId: '', isCreator:false,//是否创始人 popupCx: '', boxTop:0, ruleOnoff:false, }, onLoad(data) { that = this; this.cheakAx() this.setData({ type: data.type, isGzType: data.type == "B" ? "BF" : "AF", isCreator:app.globalData.isCreator, items: [{//录入选项列表 checked: true,//判断是否开启指定规则 rule_id: '',//积分分类id rule_id2: '', rule_name: '',//积分分类名称 item_id: 0,//积分细则id 不选可以为0 point: '',//录入积分可为正负值,不能为0(细则) point2: '',//录入积分可为正负值,不能为0(分类) remark: '',//备注 event_time: app.globalData.day,//事件时间 pt_id: '',//积分种类id reviewer_id: '',//审核人ID revieweName: '',//审批人姓名(非传) files: '',//附件数组列表 isArrindex: true,//奖扣索引(默认奖)(细则) isArrindex2: true,//奖扣索引(默认奖)(分类) selectRule: '',//选择的规则 }], }) if (data.type == "B") { dd.setNavigationBar({ title: "奖扣B分" }); } else { dd.setNavigationBar({ title: "奖扣A分" }); } }, onPageScroll(e){ if(e.scrollTop!=0){ this.setData({ boxTop:e.scrollTop }) } }, onShow() { animation = dd.createAnimation({ duration: 200, timeFunction: "linear", }); }, //显示图片 showImg(e) { var index = e.target.dataset.index; var item = e.target.dataset.item dd.previewImage({ current: index, urls: item }); }, //获取系统配置 cheakAx() { app.$get("/api/integral/site/config").then((res) => { let data = res.data.data; if(data.specified_rule_item){ this.setData({ ruleOnoff: data.specified_rule_item == 1 ? true : false }) }else{ this.setData({ ruleOnoff: false }) } }) }, //选择奖还是扣(细则) bindPickerChange(e) { var index = e.target.dataset.index; var isArrindex = `items[${index}].isArrindex`; var isTrue = that.data.items[index].isArrindex this.setData({ [isArrindex]: !isTrue, }); }, //选择奖还是扣(分类) bindPickerChange2(e) { var index = e.target.dataset.index; var isArrindex2 = `items[${index}].isArrindex2`; var isTrue = that.data.items[index].isArrindex2 this.setData({ [isArrindex2]: !isTrue, }); }, //关闭规则 onClose() { animation.translateY(1200).step(); that.setData({ isShowType: '', animationInfo: animation.export(), popupCx: '', }); setTimeout(()=>{ dd.pageScrollTo({ scrollTop: that.data.boxTop }) },100) }, //选择弹窗 openSelect(e) { var num = e.target.dataset.num; var userData = this.data.users; var superior_list = this.data.superior_list; that.setData({ activeIndex: '', isShowType: '0' }); if (num == 4) { if (userData.length == 0) { this.showToast('请先选择奖扣对象') return; } if (superior_list.length == 0) { this.showToast('您没有审批人,请联系管理员') return; } } if (e.target.dataset.ruleId) { that.setData({ defaultRuleId: e.target.dataset.ruleId }); } if (e.target.dataset.item) { if (e.target.dataset.item.id) { that.setData({ reviewerObj: [e.target.dataset.item] }); } else { that.setData({ reviewerObj: [] }); } } animation.translateY(0).step(); that.setData({ isShowType: num, activeIndex: e.target.dataset.index, animationInfo: animation.export(), popupCx: 'container__mask', }); }, //删除图片 deteleImg(e) { var { itemIndx, index } = e.target.dataset; var files = that.data.items[itemIndx].files;//获取itemS集合中对应的files var files_box = `items[${itemIndx}].files`;// app.globalData.arrRemoveObj(files, files[index]); that.setData({ [files_box]: files }); }, //图片选择 openImg(e) { var index2 = e.target.dataset.index; var files = that.data.items[index2].files; if (files.length >= 3) { app.globalData.showToast("只能上传三张"); return false; } dd.chooseImage({ count: 1, success: (res) => { that.postImg(res.filePaths[0], index2); }, }); }, postImg(img_url, index) { var files_box = `items[${index}].files`; var files = this.data.items[index].files; dd.httpRequest({ url: app.globalData.imgHttpUrl, method: 'POST', data: { md5: that.random_string(32), 'name': app.globalData.day }, success: function (res) { if (app.globalData.userData.site_id) { var key = 'intesys/dd/' + app.globalData.userData.site_id + "/" + app.globalData.day + '/' + that.random_string(32) + '.png'; } else { var key = 'intesys/dd/' + app.globalData.day + '/' + that.random_string(32) + '.png'; } var obj = res.data.data; dd.uploadFile({ url: app.globalData.ALIOSS_URL, fileType: 'image', fileName: 'file', filePath: img_url, formData: { key: key, policy: obj.policy, OSSAccessKeyId: obj.accessid, success_action_status: 200, signature: obj.signature }, success: (res) => { if (res.statusCode == 200) { if (files.length > 0) { files.push('http://cdn.intesys.g107.com/' + key) } else { files = ['http://cdn.intesys.g107.com/' + key]; } that.setData({ [files_box]: files }); app.globalData.showToast("已上传"); } }, fail: function (res) { app.globalData.showToast("上传失败"); } }); }, fail: function (res) { app.globalData.showToast("上传失败"); } }) }, random_string(len) { len = len || 32 var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678' var maxPos = chars.length var pwd = '' for (let i = 0; i < len; i++) { pwd += chars.charAt(Math.floor(Math.random() * maxPos)) } return pwd }, //备注输入 bindTextAreaBlur: function (e) { var index = e.target.dataset.index; var remark = `items[${index}].remark` this.setData({ [remark]: e.detail.value, }); }, //积分输入 bindKeyInput(e) { var index = e.target.dataset.index; var point = `items[${index}].point`; var selectRule = this.data.items[index].selectRule; var isArrindex = this.data.items[index].isArrindex; // var strMin, strMax; // if (selectRule.min_point < 0) { // var min = selectRule.min_point.toString(); // strMin = min.slice(1, min.length); // } else { // strMin = selectRule.min_point // } this.setData({ [point]: e.detail.value, }); return; //最小值 var value; var showValue = e.detail.value if (isArrindex == true) { value = e.detail.value; } else { value = 0 - e.detail.value; } if (selectRule) { if (value < selectRule.min_point || value > selectRule.max_point) { app.globalData.showToast("已超出范围值") that.setData({ [point]: Number(strMin) }); } else { this.setData({ [point]: showValue, }); } } else { this.setData({ [point]: showValue, }); } }, //选择规则分类 bindKeyInput2(e) { var index = e.target.dataset.index; var point = `items[${index}].point2`; this.setData({ [point]: e.detail.value, }); }, //删除一条 deleteArr(e) { var index = e.target.dataset.index; var list = that.data.items; app.globalData.arrRemoveObj(list, list[index]); that.setData({ items: list }) console.log(that.data.items); }, //添加一条 addArr() { var list = that.data.items if(list.length>=10){ this.showToast('一次只能添加10条奖扣') return; } var arr = {//录入选项列表 checked: true, rule_id: '', rule_id2: '', rule_name: '', item_id: 0, point: '', point2: '', remark: '', event_time: app.globalData.day, pt_id: '', reviewer_id: '',//审核人ID revieweName: '',//审批人姓名(非传) files: '', isArrindex: true, isArrindex2: true, selectRule: '', }; list.push(arr); that.setData({ items: list }) }, showToast(text) { app.globalData.showToast(text); }, formSubmit() { var items = this.data.items; var userData = this.data.users; var arr = []; var isTg = true; var pt_id = app.getTypesItem(this.data.isGzType).id if (userData.length == 0) { this.showToast('请选择奖扣对象') return; } for (var i = 0; i < items.length; i++) { var obj = {}; var item = items[i]; var num = item.checked ? item.point : item.point2 var point; if (item.checked) { if (item.isArrindex != true) { point = 0 - num; } else { point = num; } if (point < item.selectRule.min_point || point > item.selectRule.max_point) { this.showToast(`第${i + 1}条,积分分值超出可输入范围`); isTg = false; } } else { if (item.isArrindex2 != true) { point = 0 - num; } else { point = num; } } if (item.checked) { if (!item.rule_id) { this.showToast(`第${i + 1}条请选择规则`); isTg = false; break; } } else { if (!item.rule_id2) { this.showToast(`第${i + 1}条请选择分类`); isTg = false; break; } } if (point == 0 || !point) { this.showToast(`第${i + 1}条积分分值不能为0或者为空`); isTg = false; break; } if (!item.remark) { this.showToast(`第${i + 1}条事件内容不能为空`); isTg = false; break; } obj.rule_id = item.checked ? item.rule_id : item.rule_id2; obj.item_id = item.checked ? item.item_id : 0; obj.point = point; obj.remark = item.remark; obj.event_time = item.event_time; obj.pt_id = pt_id; obj.reviewer_id = item.reviewer_id ? item.reviewer_id : 0; obj.files = item.files; arr.push(obj); } var userIds = [] userData.map(item => { userIds.push(item.id) }) if (isTg) { var data = { members: JSON.stringify(userIds), items: JSON.stringify(arr) } this.setData({ disabled: true }); var url = this.data.type == 'B' ? 'api/integral/point/entry' : 'api/integral/review/a/entry' app.$post(url, data).then((res) => { var is = true, msg; if (this.data.type == 'B') { res.data.data.list.forEach(item => { if (item.status != 1) { is = false; msg = item.msg; } }) } else { res.data.data.list.forEach(item => { if (item.status != 1) { is = false; msg = item.rule_item; } }) } if (is) { this.showToast('提交成功'); setTimeout(() => { this.setData({ disabled: false }); dd.navigateBack({ delta: 1 }) }, 1000); } else { this.setData({ disabled: false }); this.showToast(msg); } }).catch(err => { this.setData({ disabled: false }); }) } }, switchChange(e) { var index = e.target.dataset.index; var item = `items[${index}].checked`; that.setData({ [item]: e.detail.value }) }, //选择时间 openDate(e) { var index = e.target.dataset.index; var item = `items[${index}].event_time` dd.datePicker({ format: 'yyyy-MM-dd', currentDate: app.globalData.day, success: (res) => { that.setData({ [item]: res.date }) }, }); }, //选择人 onSelectUser(item) { //空数据 this.data.items.forEach((obj, index) => { var reviewer_id = `items[${index}].reviewer_id` var revieweName = `items[${index}].revieweName` if (obj.reviewer_id) { that.setData({ [reviewer_id]: '', [revieweName]: '', }); } }) this.setData({ superior_list: [] }); var userIdArr = []; if (item.length > 0) { // item.forEach(el => { // userIdArr.push(el.id) // }) // var employee_ids = userIdArr.join(','); // this.getEmployeeList(employee_ids, function (res) {//获取共同上级 // var arr = [] // res.forEach(el => { // arr.push(el.id) // }) that.setData({ users: item.length > 0 ? item : [], superior_list: app.globalData.userData.employee_detail.superior_list }) // }); } }, //选择人2 onSelectUser2(item) { var elm = item.length > 0 ? item[0] : { id: '', name: '' }; var index = this.data.activeIndex; var reviewer_id = `items[${index}].reviewer_id` var revieweName = `items[${index}].revieweName` that.setData({ [reviewer_id]: elm.id, [revieweName]: elm.name, }); }, //选择规则分类 onSelectType(item) { var index = this.data.activeIndex; var rule_id2 = `items[${index}].rule_id2`;//分类ID var rule_name = `items[${index}].rule_name`;//分类名称 this.setData({ [rule_id2]: item.id, [rule_name]: item.name, }); }, //选择规则 onSelectItem(item) { var index = this.data.activeIndex; var point = `items[${index}].point` var isArrindex = `items[${index}].isArrindex` var selectRule = `items[${index}].selectRule` var remark = `items[${index}].remark` var rule_id = `items[${index}].rule_id`;//分类ID var item_id = `items[${index}].item_id`;//分类ID var strMin; if (item.min_point < 0) { var min = item.min_point.toString(); var strMin = min.slice(1, min.length); } else { strMin = item.min_point; } this.setData({ [point]: Number(strMin), [isArrindex]: item.min_point > 0 ? true : false, [selectRule]: item, [remark]: item.remark, [rule_id]: item.rule_id, [item_id]: item.id, }); }, //获取人员(上级人员) getEmployeeList(userIdArr, callBack) { app.$get("api/employee/superior", { employee_id: userIdArr, filter_applyor: 1 }).then((res) => { callBack(res.data.data.list) }) }, intersection(arr) { const arrSet = [] const intersectionSet = new Set() arr.forEach(items => { arrSet.push(new Set(items.map(item => item.id))) items.forEach(item => intersectionSet.add(item.id)) }) return [...intersectionSet].filter(item => arrSet.every(set => set.has(item))) }, });