apply.js 14 KB

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