apply.js 14 KB

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