apply.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501
  1. var app = getApp()
  2. var that;
  3. var animation;
  4. Page({
  5. data: {
  6. members: '',//用户id
  7. userName: '',//用户名称
  8. items: [{//录入选项列表
  9. employee_id: '',
  10. employeeName: '',
  11. checked: true,//判断是否开启指定规则
  12. rule_id: '',//积分分类id
  13. item_id: '',//积分细则id 不选可以为0
  14. remark: '',//备注
  15. event_time: app.globalData.day,//事件时间
  16. reviewer_id: '',//审核人ID
  17. revieweName: '',//审批人姓名(非传)
  18. files: '',//附件数组列表
  19. }],
  20. animationInfo: '',
  21. isShowType: '0',//是显示选择规则还是显示选择分类
  22. activeIndex: '',
  23. isArr: ['奖', '扣'],
  24. reviewerObj: [],//选中的审批人
  25. employeeObj: [],//选中的录入对象
  26. disabled: false,
  27. superior_list: [],//录入人的上级
  28. getReviewerObj: {},//默认当前的缓存对象
  29. defaultRuleId: '',
  30. qrcodeId: '',//扫码进入
  31. popupCx: '',
  32. boxTop:0,
  33. },
  34. onLoad(e) {
  35. that = this;
  36. dd.setNavigationBar({ title: "申请积分" });
  37. if (e.id) {
  38. this.setData({ //获取扫码进入参数
  39. qrcodeId: e.id
  40. })
  41. } else {
  42. this.getReviewerObj(app.globalData.userData.id, function (res) {
  43. that.setData({
  44. getReviewerObj: res,
  45. items: [{//录入选项列表
  46. checked: true,//判断是否开启指定规则
  47. employee_id: app.globalData.isCreator ? '' : app.globalData.userData.id,
  48. employeeName: app.globalData.isCreator ? '' : app.globalData.userData.name,
  49. rule_id: '',//积分分类id
  50. item_id: '',//积分细则id 不选可以为0
  51. remark: '',//备注
  52. event_time: app.globalData.day,//事件时间
  53. reviewer_id: res.id,
  54. revieweName: res.name,
  55. files: '',//附件数组列表
  56. }],
  57. })
  58. })
  59. }
  60. },
  61. onPageScroll(e){
  62. if(e.scrollTop!=0){
  63. this.setData({
  64. boxTop:e.scrollTop
  65. })
  66. }
  67. },
  68. //获取缓存的审批人
  69. getReviewerObj(id, fuc) {
  70. dd.getStorage({
  71. key: String(id),
  72. success: function (res) {
  73. if (res.data) {
  74. fuc(res.data);
  75. } else {
  76. fuc({});
  77. }
  78. }
  79. });
  80. },
  81. onShow() {
  82. dd.hideLoading();
  83. animation = dd.createAnimation({
  84. duration: 200,
  85. timeFunction: "linear",
  86. });
  87. if (app.globalData.userData) {
  88. that.showQrcode();
  89. } else {
  90. app.login(app.globalData.corpId, function (is) {
  91. if (is) {
  92. that.showQrcode();
  93. } else {
  94. dd.reLaunch({
  95. url: '../noJurisdiction/noJurisdiction'
  96. })
  97. }
  98. },function(){})
  99. }
  100. },
  101. //显示二维码规则ID内容
  102. showQrcode() {
  103. if (this.data.qrcodeId) {
  104. if (app.globalData.isCreator) {
  105. app.globalData.showToast("您当前身份为创始人,不需要申请记分功能");
  106. setTimeout(() => {
  107. dd.switchTab({
  108. url: '../index/index'
  109. })
  110. this.setData({ disabled: false });
  111. }, 1000);
  112. return;
  113. }
  114. app.$get("api/integral/rule/items/info", { item_id: this.data.qrcodeId }).then((res) => {
  115. var item = res.data.data || {}
  116. item.pt_Obj = app.getTypesItem(item.pt_id);
  117. var selectRule = `items[0].selectRule`
  118. var remark = `items[0].remark`
  119. var employee_id = `items[0].employee_id`
  120. var employeeName = `items[0].employeeName`
  121. that.setData({
  122. [employee_id]:app.globalData.userData.id,
  123. [employeeName]: app.globalData.userData.name,
  124. [selectRule]: item,
  125. [remark]: item.remark,
  126. })
  127. });
  128. }
  129. },
  130. //显示图片
  131. showImg(e) {
  132. var index = e.target.dataset.index;
  133. var item = e.target.dataset.item
  134. dd.previewImage({
  135. current: index,
  136. urls: item
  137. });
  138. },
  139. //关闭规则
  140. onClose() {
  141. animation.translateY(1200).step();
  142. that.setData({
  143. animationInfo: animation.export(),
  144. isShowType: '',
  145. popupCx: ''
  146. });
  147. setTimeout(()=>{
  148. dd.pageScrollTo({
  149. scrollTop: that.data.boxTop
  150. })
  151. },100)
  152. },
  153. showToast(text) {
  154. app.globalData.showToast(text);
  155. },
  156. //选择
  157. openSelect(e) {
  158. var index = e.target.dataset.index;
  159. var item = e.target.dataset.item;
  160. var num = e.target.dataset.num;
  161. that.setData({ activeIndex: '', isShowType: '0' });
  162. if (num == 2) {
  163. if (!item.employee_id) {
  164. this.showToast('请先选择录入对象')
  165. return;
  166. }
  167. // 获取录入对象的上级
  168. this.getEmployeeList([item.employee_id], function (res) {//获取共同上级
  169. var reviewer_id = `items[${index}].reviewer_id`
  170. var revieweName = `items[${index}].revieweName`
  171. let is = false;//是否还在
  172. res.forEach(items => {
  173. if (items.id == item.id) {//判断缓存起来的审批人是否还在审批人列表中
  174. is = true;
  175. }
  176. })
  177. if (is) {
  178. that.setData({
  179. superior_list: res,
  180. isShowType: num,
  181. activeIndex: index,
  182. reviewerObj: [item]
  183. })
  184. } else {
  185. that.setData({
  186. superior_list: res,
  187. isShowType: num,
  188. activeIndex: index,
  189. reviewerObj: [],
  190. [reviewer_id]: '',
  191. [revieweName]: ''
  192. })
  193. }
  194. animation.translateY(0).step();
  195. that.setData({
  196. popupCx: 'container__mask',
  197. animationInfo: animation.export()
  198. });
  199. });
  200. } else {
  201. if (e.target.dataset.ruleId) {
  202. that.setData({ defaultRuleId: e.target.dataset.ruleId });
  203. }
  204. animation.translateY(0).step();
  205. that.setData({
  206. employeeObj: num == 3 ? [e.target.dataset.item] : [],
  207. isShowType: num,
  208. activeIndex: index,
  209. popupCx: 'container__mask',
  210. animationInfo: animation.export()
  211. });
  212. }
  213. },
  214. //删除图片
  215. deteleImg(e) {
  216. var { itemIndx, index } = e.target.dataset;
  217. var files = that.data.items[itemIndx].files;//获取itemS集合中对应的files
  218. var files_box = `items[${itemIndx}].files`;//
  219. app.globalData.arrRemoveObj(files, files[index]);
  220. that.setData({
  221. [files_box]: files
  222. });
  223. },
  224. //图片选择
  225. openImg(e) {
  226. var index = e.target.dataset.index;
  227. var files = that.data.items[index].files;
  228. if (files.length >= 3) {
  229. app.globalData.showToast("最多能选择三张");
  230. return false;
  231. }
  232. dd.chooseImage({
  233. count: 1,
  234. success: (res) => {
  235. that.postImg(res, index);
  236. },
  237. });
  238. },
  239. postImg(data, index) {
  240. var files_box = `items[${index}].files`;
  241. var files = that.data.items[index].files;
  242. dd.httpRequest({
  243. url: app.globalData.imgHttpUrl,
  244. method: 'POST',
  245. data: {
  246. md5: that.random_string(32),
  247. 'name': app.globalData.day
  248. },
  249. success: function (res) {
  250. if (app.globalData.userData.site_id) {
  251. var key = 'intesys/dd/' + app.globalData.userData.site_id + "/" + app.globalData.day + '/' + that.random_string(32) + '.png';
  252. } else {
  253. var key = 'intesys/dd/' + app.globalData.day + '/' + that.random_string(32) + '.png';
  254. }
  255. var obj = res.data.data;
  256. dd.uploadFile({
  257. url: app.globalData.ALIOSS_URL,
  258. fileType: 'image',
  259. fileName: 'file',
  260. filePath: data.filePaths[0],
  261. formData: {
  262. key: key,
  263. policy: obj.policy,
  264. OSSAccessKeyId: obj.accessid,
  265. success_action_status: 200,
  266. signature: obj.signature
  267. },
  268. success: (res) => {
  269. if (res.statusCode == 200) {
  270. if (files.length > 0) {
  271. files.push('http://cdn.intesys.g107.com/' + key)
  272. } else {
  273. files = ['http://cdn.intesys.g107.com/' + key];
  274. }
  275. that.setData({
  276. [files_box]: files
  277. });
  278. app.globalData.showToast("已上传");
  279. }
  280. },
  281. });
  282. },
  283. fail: function (res) {
  284. app.globalData.showToast("上传失败");
  285. }
  286. })
  287. },
  288. random_string(len) {
  289. len = len || 32
  290. var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'
  291. var maxPos = chars.length
  292. var pwd = ''
  293. for (let i = 0; i < len; i++) {
  294. pwd += chars.charAt(Math.floor(Math.random() * maxPos))
  295. }
  296. return pwd
  297. },
  298. //备注输入
  299. bindTextAreaBlur: function (e) {
  300. var index = e.target.dataset.index;
  301. var remark = `items[${index}].remark`
  302. this.setData({
  303. [remark]: e.detail.value,
  304. });
  305. },
  306. formSubmit() {
  307. var items = this.data.items;
  308. var arr = [];
  309. var isTg = true;
  310. for (var i = 0; i < items.length; i++) {
  311. var obj = {};
  312. var item = items[i];
  313. if (!item.remark) {
  314. app.globalData.showToast(`第${i + 1}项申请内容不能为空`);
  315. isTg = false;
  316. break;
  317. }
  318. if (!item.reviewer_id) {
  319. app.globalData.showToast(`第${i + 1}项申请审批人不能为空`);
  320. isTg = false;
  321. break;
  322. }
  323. obj.employee_id = item.employee_id;
  324. if (item.checked) {
  325. obj.rule_id = item.selectRule ? item.selectRule.rule_id : 0;
  326. obj.item_id = item.selectRule ? item.selectRule.id : 0;
  327. } else {
  328. obj.rule_id = 0;
  329. obj.item_id = 0;
  330. }
  331. if (item.checked) {
  332. if (!obj.rule_id) {
  333. app.globalData.showToast(`第${i + 1}项必须选择规则`);
  334. isTg = false;
  335. break;
  336. }
  337. }
  338. obj.remark = item.remark;
  339. obj.event_time = item.event_time;
  340. obj.reviewer_id = item.reviewer_id;
  341. obj.revieweName = item.revieweName;
  342. obj.files = item.files;
  343. arr.push(obj);
  344. }
  345. if (isTg) {
  346. var data = {
  347. items: JSON.stringify(arr)
  348. }
  349. this.setData({ disabled: true });
  350. app.$post("api/integral/review/apply", data).then((res) => {
  351. var is = true;
  352. res.data.data.list.forEach(item => {
  353. if (item.status == 0) {
  354. is = false;
  355. this.setData({ disabled: false });
  356. app.globalData.showToast(item.msg);
  357. }
  358. });
  359. if (is) {
  360. app.globalData.showToast('申请成功');
  361. setTimeout(() => {
  362. if (this.data.qrcodeId) {
  363. dd.switchTab({
  364. url: '../index/index'
  365. })
  366. } else {
  367. dd.navigateBack({
  368. delta: 1
  369. })
  370. }
  371. this.setData({ disabled: false });
  372. }, 1000);
  373. }
  374. }).catch(err => {
  375. this.setData({ disabled: false });
  376. }).finally(() => {
  377. if (arr.length > 0) {
  378. arr.forEach(item => {
  379. dd.setStorage({
  380. key: String(item.employee_id),
  381. data: { id: item.reviewer_id, name: item.revieweName },
  382. });
  383. })
  384. }
  385. })
  386. }
  387. },
  388. //删除一条
  389. deleteArr(e) {
  390. var index = e.target.dataset.index;
  391. var list = that.data.items;
  392. app.globalData.arrRemoveObj(list, list[index]);
  393. that.setData({
  394. items: list
  395. })
  396. },
  397. //选择录入对象
  398. onSelectUserEmployee(item) {
  399. var elm = item.length > 0 ? item[0] : { id: '', name: '' };
  400. var index = this.data.activeIndex;
  401. var employee_id = `items[${index}].employee_id`
  402. var employeeName = `items[${index}].employeeName`
  403. var reviewer_id = `items[${index}].reviewer_id`
  404. var revieweName = `items[${index}].revieweName`
  405. that.setData({
  406. [employee_id]: elm.id,
  407. [employeeName]: elm.name,
  408. });
  409. dd.getStorage({
  410. key: String(elm.id),
  411. success: function (res) {
  412. if (res.data) {
  413. that.setData({
  414. [reviewer_id]: res.data.id,
  415. [revieweName]: res.data.name
  416. });
  417. } else {
  418. that.setData({
  419. [reviewer_id]: '',
  420. [revieweName]: ''
  421. });
  422. }
  423. }
  424. });
  425. },
  426. //获取人员(上级人员)
  427. getEmployeeList(userIdArr, callBack) {
  428. app.$get("api/employee/superior", { employee_id: userIdArr, filter_applyor: 1 }).then((res) => {
  429. callBack(res.data.data.list || [])
  430. })
  431. },
  432. //选择审批人
  433. onSelectUser(item) {
  434. var elm = item.length > 0 ? item[0] : { id: '', name: '' };
  435. var index = this.data.activeIndex;
  436. var reviewer_id = `items[${index}].reviewer_id`
  437. var revieweName = `items[${index}].revieweName`
  438. that.setData({
  439. [reviewer_id]: elm.id,
  440. [revieweName]: elm.name,
  441. });
  442. },
  443. //添加一条
  444. addArr() {
  445. var list = that.data.items
  446. if(list.length>=10){
  447. this.showToast('一次只能添加10条申请')
  448. return;
  449. }
  450. var arr = {//录入选项列表
  451. employee_id: app.globalData.isCreator ? '' : app.globalData.userData.id,
  452. employeeName: app.globalData.isCreator ? '' : app.globalData.userData.name,
  453. checked: true,//判断是否开启指定规则
  454. rule_id: '',//积分分类id
  455. item_id: '',//积分细则id 不选可以为0
  456. remark: '',//备注
  457. event_time: app.globalData.day,//事件时间
  458. reviewer_id: this.data.getReviewerObj.id,
  459. revieweName: this.data.getReviewerObj.name,
  460. files: '',//附件数组列表
  461. };
  462. list.push(arr);
  463. that.setData({
  464. items: list
  465. })
  466. },
  467. switchChange(e) {
  468. var index = e.target.dataset.index;
  469. var item = `items[${index}].checked`
  470. that.setData({
  471. [item]: e.detail.value
  472. })
  473. },
  474. //选择时间
  475. openDate(e) {
  476. var index = e.target.dataset.index;
  477. var item = `items[${index}].event_time`
  478. dd.datePicker({
  479. format: 'yyyy-MM-dd',
  480. currentDate: app.globalData.day,
  481. success: (res) => {
  482. that.setData({
  483. [item]: res.date
  484. })
  485. },
  486. });
  487. },
  488. //选择规则
  489. onSelectItem(item) {
  490. var index = this.data.activeIndex;
  491. var selectRule = `items[${index}].selectRule`
  492. var remark = `items[${index}].remark`
  493. that.setData({
  494. [selectRule]: item,
  495. [remark]: item.remark,
  496. })
  497. },
  498. });