jk_A.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453
  1. var app = getApp()
  2. var that;
  3. var animation;
  4. Page({
  5. data: {
  6. users: [],
  7. items: [],
  8. animationInfo: '',
  9. isShowType: '',//是显示选择规则还是显示选择分类
  10. activeIndex: '',
  11. isArr: ['奖', '扣'],
  12. reviewerObj:[],//默认的审批人
  13. disabled:false,
  14. },
  15. onLoad() {
  16. that = this;
  17. dd.setNavigationBar({ title: "奖扣A分" });
  18. this.setData({
  19. items: [{//录入选项列表
  20. checked: true,//判断是否开启指定规则
  21. rule_id: '',//积分分类id
  22. rule_id2: '',
  23. rule_name: '',//积分分类名称
  24. item_id: 0,//积分细则id 不选可以为0
  25. point: '',//录入积分可为正负值,不能为0(细则)
  26. point2: '',//录入积分可为正负值,不能为0(分类)
  27. remark: '',//备注
  28. event_time: app.globalData.day,//事件时间
  29. pt_id: '',//积分种类id
  30. reviewer_id: '',//审核人ID
  31. revieweName: '',//审批人姓名(非传)
  32. files: '',//附件数组列表
  33. isArrindex: true,//奖扣索引(默认奖)(细则)
  34. isArrindex2: true,//奖扣索引(默认奖)(分类)
  35. selectRule: '',//选择的规则
  36. }],
  37. })
  38. },
  39. onShow() {
  40. animation = dd.createAnimation({
  41. duration: 200,
  42. timeFunction: "linear",
  43. });
  44. },
  45. //选择奖还是扣(细则)
  46. bindPickerChange(e) {
  47. var index = e.target.dataset.index;
  48. var isArrindex = `items[${index}].isArrindex`;
  49. var isTrue = that.data.items[index].isArrindex
  50. this.setData({
  51. [isArrindex]: !isTrue,
  52. });
  53. },
  54. //选择奖还是扣(分类)
  55. bindPickerChange2(e) {
  56. var index = e.target.dataset.index;
  57. var isArrindex2 = `items[${index}].isArrindex2`;
  58. var isTrue = that.data.items[index].isArrindex2
  59. this.setData({
  60. [isArrindex2]: !isTrue,
  61. });
  62. },
  63. //关闭规则
  64. onClose() {
  65. animation.translateY(750).step();
  66. that.setData({
  67. animationInfo: animation.export()
  68. });
  69. that.setData({isShowType: ''});
  70. },
  71. //选择规则
  72. openSelect(e) {
  73. that.setData({ activeIndex: '' });
  74. if(e.target.dataset.item){
  75. that.setData({ reviewerObj: [e.target.dataset.item] });
  76. }
  77. that.setData({
  78. isShowType: e.target.dataset.num,
  79. activeIndex: e.target.dataset.index,
  80. });
  81. animation.translateY(0).step();
  82. that.setData({
  83. animationInfo: animation.export()
  84. });
  85. },
  86. //删除图片
  87. deteleImg(e) {
  88. var { itemIndx, index } = e.target.dataset;
  89. var files = that.data.items[itemIndx].files;//获取itemS集合中对应的files
  90. var files_box = `items[${itemIndx}].files`;//
  91. app.globalData.arrRemoveObj(files, files[index]);
  92. that.setData({
  93. [files_box]: files
  94. });
  95. },
  96. //图片选择
  97. openImg(e) {
  98. var index2 = e.target.dataset.index;
  99. var files = that.data.items[index2].files;
  100. if (files.length >= 3) {
  101. app.globalData.showToast("只能上传三张");
  102. return false;
  103. }
  104. dd.chooseImage({
  105. count: 1,
  106. success: (res) => {
  107. console.log(res);
  108. that.postImg(res.filePaths[0], index2);
  109. },
  110. });
  111. },
  112. postImg(img_url,index) {
  113. var files_box = `items[${index}].files`;
  114. var files=this.data.items[index].files;
  115. dd.httpRequest({
  116. url: app.globalData.imgHttpUrl,
  117. method: 'POST',
  118. data: {
  119. md5: that.random_string(32),
  120. 'name': app.globalData.day
  121. },
  122. success: function (res) {
  123. var key = 'intesys/' + app.globalData.day + '/' + that.random_string(32) + '.png';
  124. var obj = res.data.data;
  125. dd.uploadFile({
  126. url: app.globalData.ALIOSS_URL,
  127. fileType: 'image',
  128. fileName: 'file',
  129. filePath:img_url,
  130. formData: {
  131. key: key,
  132. policy: obj.policy,
  133. OSSAccessKeyId: obj.accessid,
  134. success_action_status: 200,
  135. signature: obj.signature
  136. },
  137. success: (res) => {
  138. if (res.statusCode == 200) {
  139. if(files.length>0){
  140. files.push('http://cdn.intesys.g107.com/' + key)
  141. }else{
  142. files=['http://cdn.intesys.g107.com/' + key];
  143. }
  144. that.setData({
  145. [files_box]: files
  146. });
  147. app.globalData.showToast("已上传");
  148. }
  149. },
  150. fail:(err)=>{
  151. console.log(err);
  152. }
  153. });
  154. },
  155. fail: function (res) {
  156. app.globalData.showToast("上传失败");
  157. }
  158. })
  159. },
  160. random_string(len) {
  161. len = len || 32
  162. var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'
  163. var maxPos = chars.length
  164. var pwd = ''
  165. for (let i = 0; i < len; i++) {
  166. pwd += chars.charAt(Math.floor(Math.random() * maxPos))
  167. }
  168. return pwd
  169. },
  170. //备注输入
  171. bindTextAreaBlur: function (e) {
  172. console.log(e);
  173. var index = e.target.dataset.index;
  174. var remark = `items[${index}].remark`
  175. this.setData({
  176. [remark]: e.detail.value,
  177. });
  178. },
  179. //积分输入
  180. bindKeyInput(e) {
  181. var index = e.target.dataset.index;
  182. var point = `items[${index}].point`;
  183. var selectRule = this.data.items[index].selectRule;
  184. var isArrindex = this.data.items[index].isArrindex;
  185. // var strMin, strMax;
  186. // if (selectRule.min_point < 0) {
  187. // var min = selectRule.min_point.toString();
  188. // strMin = min.slice(1, min.length);
  189. // } else {
  190. // strMin = selectRule.min_point
  191. // }
  192. this.setData({
  193. [point]: e.detail.value,
  194. });
  195. return;
  196. //最小值
  197. var value;
  198. var showValue = e.detail.value
  199. if (isArrindex == true) {
  200. value = e.detail.value;
  201. } else {
  202. value = 0 - e.detail.value;
  203. }
  204. if (selectRule) {
  205. if (value < selectRule.min_point || value > selectRule.max_point) {
  206. app.globalData.showToast("已超出范围值")
  207. that.setData({
  208. [point]: Number(strMin)
  209. });
  210. } else {
  211. this.setData({
  212. [point]: showValue,
  213. });
  214. }
  215. } else {
  216. this.setData({
  217. [point]: showValue,
  218. });
  219. }
  220. },
  221. //选择规则分类
  222. bindKeyInput2(e) {
  223. var index = e.target.dataset.index;
  224. var point = `items[${index}].point2`;
  225. this.setData({
  226. [point]: e.detail.value,
  227. });
  228. },
  229. //删除一条
  230. deleteArr(e) {
  231. var index = e.target.dataset.index;
  232. var list = that.data.items;
  233. app.globalData.arrRemoveObj(list, list[index]);
  234. that.setData({
  235. items: list
  236. })
  237. console.log(that.data.items);
  238. },
  239. //添加一条
  240. addArr() {
  241. var arr = {//录入选项列表
  242. checked: true,
  243. rule_id: '',
  244. rule_id2: '',
  245. rule_name: '',
  246. item_id: 0,
  247. point: '',
  248. point2: '',
  249. remark: '',
  250. event_time: app.globalData.day,
  251. pt_id: '',
  252. reviewer_id:'',//审核人ID
  253. revieweName:'',//审批人姓名(非传)
  254. files: '',
  255. isArrindex: true,
  256. isArrindex2: true,
  257. selectRule: '',
  258. };
  259. var list = that.data.items
  260. list.push(arr);
  261. that.setData({
  262. items: list
  263. })
  264. },
  265. showToast(text) {
  266. app.globalData.showToast(text);
  267. },
  268. formSubmit() {
  269. var items = this.data.items;
  270. var userData = this.data.users;
  271. var arr = [];
  272. var isTg = true;
  273. var pt_id = app.getTypesItem("AF").id;
  274. if(userData.length==0){
  275. this.showToast('请输入录入对象')
  276. return;
  277. }
  278. for (var i = 0; i < items.length; i++) {
  279. var obj = {};
  280. var item = items[i];
  281. var num = item.checked ? item.point : item.point2
  282. var point;
  283. if (item.checked) {
  284. if (item.isArrindex != true) {
  285. point = 0 - num;
  286. } else {
  287. point = num;
  288. }
  289. if (point < item.selectRule.min_point || point > item.selectRule.max_point) {
  290. this.showToast(`第${i + 1}项,积分超出可输入范围`);
  291. isTg = false;
  292. }
  293. } else {
  294. if (item.isArrindex2 != true) {
  295. point = 0 - num;
  296. } else {
  297. point = num;
  298. }
  299. }
  300. if (item.checked) {
  301. if (!item.rule_id) {
  302. this.showToast(`第${i + 1}项请选择规则`);
  303. isTg = false;
  304. break;
  305. }
  306. } else {
  307. if (!item.rule_id2) {
  308. this.showToast(`第${i + 1}项请选择规则分类`);
  309. isTg = false;
  310. break;
  311. }
  312. }
  313. if (point == 0 || !point) {
  314. this.showToast(`第${i + 1}项积分不能为0或者为空`);
  315. isTg = false;
  316. break;
  317. }
  318. if (!item.remark) {
  319. this.showToast(`第${i + 1}项事件内容不能为空`);
  320. isTg = false;
  321. break;
  322. }
  323. obj.rule_id = item.checked ? item.rule_id : item.rule_id2;
  324. obj.item_id = item.checked ? item.item_id : 0;
  325. obj.point = point;
  326. obj.remark = item.remark;
  327. obj.event_time = item.event_time;
  328. obj.pt_id = pt_id;
  329. obj.reviewer_id = item.reviewer_id? item.reviewer_id:0;
  330. obj.files = item.files;
  331. arr.push(obj);
  332. }
  333. var userIds=[]
  334. userData.map(item=>{
  335. userIds.push(item.id)
  336. })
  337. if (isTg) {
  338. var data = {
  339. members: JSON.stringify(userIds),
  340. items: JSON.stringify(arr)
  341. }
  342. this.setData({disabled:true});
  343. app.$post("api/integral/review/a/entry", data).then((res) => {
  344. var is = true;
  345. var msg;
  346. res.data.data.forEach(item => {
  347. if (item.status != 1) {
  348. is = false;
  349. msg=item.rule_item;
  350. }
  351. })
  352. if (is) {
  353. this.showToast('已提交');
  354. setTimeout(() => {
  355. this.setData({disabled:false});
  356. dd.navigateBack({ delta: 1})
  357. }, 1000);
  358. }else{
  359. this.setData({disabled:false});
  360. this.showToast(msg);
  361. }
  362. }).catch(err=>{
  363. this.setData({disabled:false});
  364. })
  365. }
  366. },
  367. switchChange(e) {
  368. var index = e.target.dataset.index;
  369. var item = `items[${index}].checked`;
  370. that.setData({
  371. [item]: e.detail.value
  372. })
  373. },
  374. //选择时间
  375. openDate(e) {
  376. var index = e.target.dataset.index;
  377. var item = `items[${index}].event_time`
  378. dd.datePicker({
  379. format: 'yyyy-MM-dd',
  380. currentDate: app.globalData.day,
  381. success: (res) => {
  382. that.setData({
  383. [item]: res.date
  384. })
  385. },
  386. });
  387. },
  388. //选择人
  389. onSelectUser(item) {
  390. console.log(item);
  391. var elm=item.length>0? item:[];
  392. this.setData({
  393. users: elm
  394. })
  395. },
  396. //选择人2
  397. onSelectUser2(item) {
  398. var elm=item.length>0? item[0]:{id:'',name:''};
  399. var index = this.data.activeIndex;
  400. var reviewer_id = `items[${index}].reviewer_id`
  401. var revieweName = `items[${index}].revieweName`
  402. that.setData({
  403. [reviewer_id]: elm.id,
  404. [revieweName]: elm.name,
  405. });
  406. },
  407. //选择规则分类
  408. onSelectType(item) {
  409. var index = this.data.activeIndex;
  410. var rule_id2 = `items[${index}].rule_id2`;//分类ID
  411. var rule_name = `items[${index}].rule_name`;//分类名称
  412. this.setData({
  413. [rule_id2]: item.id,
  414. [rule_name]: item.name,
  415. });
  416. },
  417. //选择规则
  418. onSelectItem(item) {
  419. var index = this.data.activeIndex;
  420. var point = `items[${index}].point`
  421. var isArrindex = `items[${index}].isArrindex`
  422. var selectRule = `items[${index}].selectRule`
  423. var remark = `items[${index}].remark`
  424. var rule_id = `items[${index}].rule_id`;//分类ID
  425. var item_id = `items[${index}].item_id`;//分类ID
  426. var strMin;
  427. if (item.min_point < 0) {
  428. var min = item.min_point.toString();
  429. var strMin = min.slice(1, min.length);
  430. } else {
  431. strMin = item.min_point;
  432. }
  433. this.setData({
  434. [point]: Number(strMin),
  435. [isArrindex]: item.min_point > 0 ? true : false,
  436. [selectRule]: item,
  437. [remark]: item.remark,
  438. [rule_id]: item.rule_id,
  439. [item_id]: item.id,
  440. });
  441. },
  442. });