jk_B.js 11 KB

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