offerAreward_set.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548
  1. var app = getApp()
  2. var that;
  3. var animation;
  4. Page({
  5. data: {
  6. items: {
  7. dept_ids: [],//可见范围
  8. pt_id: 3,//积分种类id
  9. task_name: '',//任务名
  10. task_remark: '',//任务详细描述
  11. base_point: '',//任务参考积分
  12. base_point2: '',//任务参考积分
  13. expire_time: '',//截至时间 格式:2020-02-02 12:00
  14. file_list: [],//附件地址列表
  15. reviewer_id: '',//审批者id
  16. revieweName: '',
  17. timeout_deduction_point: '',//逾期扣分/天
  18. timeout_deduction_point_limit:'',//逾期扣分上限
  19. ahead_award_point: '',//提前奖分/天
  20. ahead_award_point_limit:'',//提前奖分上限
  21. task_cycle: 0,
  22. task_expire_day: 1,
  23. task_type:1,
  24. pt_name:'B分',
  25. checked: false,//是否选择规则
  26. rule_id: '',//积分分类id
  27. item_id: 0,//积分细则id 不选可以为0
  28. chance:1,//次数
  29. employee_ids:[],
  30. },
  31. employeeList: [],
  32. reviewerObj: [],//默认审批人
  33. objectArray: [
  34. {
  35. id: 0,
  36. name: '不重复',
  37. },
  38. {
  39. id: 1,
  40. name: '每天重复',
  41. },
  42. {
  43. id: 2,
  44. name: '每周重复',
  45. },
  46. {
  47. id: 3,
  48. name: '每月重复',
  49. },
  50. ],
  51. arrIndex: 0,
  52. defaultSection: [],//选择的部门
  53. point_limit:0,
  54. defaultRuleId: '',
  55. selectRule: '',//选择的规则
  56. isArrindex: true,
  57. isGzType: 3,
  58. popupCx: '',
  59. },
  60. onLoad(e) {
  61. that = this;
  62. dd.setNavigationBar({ title: "抢单任务编辑" });
  63. if (e.item) {
  64. var item = JSON.parse(e.item);
  65. var arr=[];
  66. if(item.department_info.length>0){
  67. item.department_info.forEach(item=>{
  68. arr.push(item.id);
  69. })
  70. }
  71. if(item.point_config.item_info&&item.point_config.item_info.id){
  72. if(item.point_config.base_point<0){
  73. this.setData({
  74. isArrindex:false
  75. })
  76. }
  77. }
  78. this.setData({
  79. selectRule:item.point_config.item_info? item.point_config.item_info:'',
  80. reviewerObj:[{name:item.reviewer_name,id:item.reviewer_id}],
  81. users:[{name:item.employee_name,id:item.employee_id}],
  82. defaultSection:item.department_info,
  83. employeeList:item.employee_info,
  84. items: {
  85. chance: item.chance,//次数
  86. dept_ids:arr,
  87. id:item.id,
  88. pt_id: item.pt_id,//积分种类id
  89. task_name: item.task_name,//任务名
  90. task_remark: item.task_remark,//任务详细描述
  91. base_point: item.point_config.base_point <0? (0-item.point_config.base_point):item.point_config.base_point,//任务参考积分
  92. base_point2: item.point_config.base_point <0? (0-item.point_config.base_point):item.point_config.base_point,//任务参考积分
  93. expire_time: item.expire_time,//截至时间 格式:2020-02-02 12:00
  94. file_list: item.task_file_list,//附件地址列表
  95. reviewer_id:item.reviewer_id,//审批者id
  96. revieweName:item.reviewer_name,
  97. timeout_deduction_point: item.point_config.timeout_deduction_point,//逾期扣分/天
  98. timeout_deduction_point_limit:item.point_config.timeout_deduction_point_limit,//逾期扣分上限
  99. ahead_award_point: item.point_config.ahead_award_point,//提前奖分/天
  100. ahead_award_point_limit:item.point_config.ahead_award_point_limit,//提前奖分上限
  101. task_cycle: 0,
  102. task_expire_day: 1,
  103. task_type:item.type,
  104. rule_id2: (item.point_config.rule_info&&!item.point_config.item_info)? item.point_config.rule_info.id:'',//积分分类id
  105. rule_name: (item.point_config.rule_info&&!item.point_config.item_info)? item.point_config.rule_info.name:'',//积分分类名称
  106. rule_id: item.point_config.item_info? item.point_config.rule_info.id:'',//积分分类id
  107. item_id: item.point_config.item_info? item.point_config.item_info.id:'',//积分细则id 不选可以为0
  108. checked: item.point_config.item_info? true:false,//是否选择规则
  109. },
  110. types: app.globalData.types,
  111. point_limit:app.globalData.userData.point_config.point_limit,
  112. isGzType: item.pt_id,
  113. })
  114. }
  115. },
  116. //抢单名额
  117. bindKeyInput4(e) {
  118. this.setData({
  119. [`items.chance`]: e.detail.value,
  120. });
  121. },
  122. //选择规则分类
  123. onSelectType(item) {
  124. this.setData({
  125. [`items.rule_id2`]: item.id,
  126. [`items.rule_name`]: item.name,
  127. });
  128. },
  129. //选择奖还是扣(细则)
  130. bindPickerChange() {
  131. this.setData({
  132. isArrindex: !that.data.isArrindex,
  133. });
  134. },
  135. //选择规则
  136. onSelectItem(item) {
  137. var strMin;
  138. if (item.min_point < 0) {
  139. var min = item.min_point.toString();
  140. var strMin = min.slice(1, min.length);
  141. } else {
  142. strMin = item.min_point;
  143. }
  144. that.setData({
  145. selectRule: item,
  146. [`items.task_remark`]: item.remark,
  147. [`items.base_point`]: Number(strMin),
  148. isArrindex: item.min_point > 0 ? true : false,
  149. [`items.rule_id`]: item.rule_id,
  150. [`items.item_id`]: item.id,
  151. })
  152. },
  153. bindObjPickerChange(e) {
  154. this.setData({
  155. arrIndex: e.detail.value,
  156. [`items.task_cycle`]: e.detail.value
  157. });
  158. },
  159. openType(e) {
  160. var id = e.target.dataset.id;
  161. that.setData({
  162. [`items.pt_id`]: id,
  163. isGzType: id,
  164. })
  165. this.clearTree()
  166. },
  167. //清除已选规则
  168. clearTree(){
  169. that.setData({
  170. selectRule: '',
  171. ['items.task_remark']: '',
  172. [`items.base_point`]: '',
  173. isArrindex: true,
  174. [`items.rule_id`]: '',
  175. [`items.item_id`]: '',
  176. defaultRuleId: ''
  177. })
  178. },
  179. onShow() {
  180. animation = dd.createAnimation({
  181. duration: 200,
  182. timeFunction: "linear",
  183. });
  184. },
  185. //积分输入
  186. bindKeyInput2(e) {
  187. this.setData({
  188. [`items.base_point2`]: e.detail.value,
  189. });
  190. },
  191. //积分输入
  192. bindKeyInput1(e) {
  193. var point = `items.base_point`;
  194. this.setData({
  195. [point]: e.detail.value,
  196. [`items.qualified`]: e.detail.value
  197. });
  198. },
  199. //积分输入
  200. bindKeyInput3(e) {
  201. var name = e.target.dataset.name;
  202. let value = e.detail.value;
  203. var point = `items.${name}`;
  204. if (that.data.point_limit.length > 0) {
  205. var pointIimit = that.data.point_limit[1].point;
  206. if (pointIimit != 0 && pointIimit != -1) {
  207. if (name == 'timeout_deduction_point' || name == 'ahead_award_point') {
  208. pointIimit = pointIimit * 1;
  209. if (value > pointIimit) {
  210. this.showToast('分值不能超过你的奖扣分权限');
  211. this.setData({
  212. [point]: '',
  213. });
  214. return false
  215. }
  216. } else {
  217. pointIimit = pointIimit * 10;
  218. if (value > pointIimit) {
  219. this.showToast('上限不能超过' + pointIimit + '分');
  220. this.setData({
  221. [point]: '',
  222. });
  223. return false
  224. }
  225. }
  226. }
  227. }
  228. this.setData({
  229. [point]: value,
  230. });
  231. },
  232. //显示图片
  233. showImg(e) {
  234. var index = e.target.dataset.index;
  235. var item = e.target.dataset.item
  236. dd.previewImage({
  237. current: index,
  238. urls: item
  239. });
  240. },
  241. //关闭规则
  242. onClose() {
  243. animation.translateY(1200).step();
  244. that.setData({
  245. animationInfo: animation.export(),
  246. popupCx: '',
  247. isShowType: '',
  248. });
  249. },
  250. //选择部门
  251. onSelectSection(e) {
  252. var arr = [];
  253. if (e.length > 0) {
  254. e.forEach(user => {
  255. arr.push(user.id);
  256. })
  257. that.setData({
  258. defaultSection: e,
  259. [`items.dept_ids`]: arr
  260. })
  261. }else{
  262. that.setData({
  263. defaultSection: [],
  264. [`items.dept_ids`]:[]
  265. })
  266. }
  267. },
  268. //选择弹窗
  269. openSelect(e) {
  270. var num = e.target.dataset.num;
  271. if (e.target.dataset.item) {
  272. if (e.target.dataset.item.id) {
  273. that.setData({ reviewerObj: [e.target.dataset.item] });
  274. } else {
  275. that.setData({ reviewerObj: [] });
  276. }
  277. }
  278. if (e.target.dataset.ruleId) {
  279. that.setData({ defaultRuleId: e.target.dataset.ruleId });
  280. }
  281. animation.translateY(0).step();
  282. that.setData({
  283. animationInfo: animation.export(),
  284. isShowType: num,
  285. popupCx: 'container__mask',
  286. });
  287. },
  288. //删除图片
  289. deteleImg(e) {
  290. var index = e.target.dataset.index;//获取itemS集合中对应的files
  291. var files = that.data.items.file_list;//获取itemS集合中对应的files
  292. var files_box = `items.file_list`;//
  293. app.globalData.arrRemoveObj(files, files[index]);
  294. that.setData({
  295. [files_box]: files
  296. });
  297. },
  298. //图片选择
  299. openImg(e) {
  300. var files = that.data.items.file_list;
  301. if (files.length >= 3) {
  302. app.globalData.showToast("只能上传三张");
  303. return false;
  304. }
  305. dd.chooseImage({
  306. count: 1,
  307. success: (res) => {
  308. that.postImg(res.filePaths[0]);
  309. },
  310. });
  311. },
  312. postImg(img_url) {
  313. var files_box = `items.file_list`;
  314. var files = that.data.items.file_list;
  315. dd.httpRequest({
  316. url: app.globalData.imgHttpUrl,
  317. method: 'POST',
  318. data: {
  319. md5: that.random_string(32),
  320. 'name': app.globalData.day
  321. },
  322. success: function (res) {
  323. if (app.globalData.userData.site_id) {
  324. var key = 'intesys/dd/' + app.globalData.userData.site_id + "/" + app.globalData.day + '/' + that.random_string(32) + '.png';
  325. } else {
  326. var key = 'intesys/dd/' + app.globalData.day + '/' + that.random_string(32) + '.png';
  327. }
  328. var obj = res.data.data;
  329. dd.uploadFile({
  330. url: app.globalData.ALIOSS_URL,
  331. fileType: 'image',
  332. fileName: 'file',
  333. filePath: img_url,
  334. formData: {
  335. key: key,
  336. policy: obj.policy,
  337. OSSAccessKeyId: obj.accessid,
  338. success_action_status: 200,
  339. signature: obj.signature
  340. },
  341. success: (res) => {
  342. if (res.statusCode == 200) {
  343. if (files.length > 0) {
  344. files.push('http://cdn.intesys.g107.com/' + key)
  345. } else {
  346. files = ['http://cdn.intesys.g107.com/' + key];
  347. }
  348. that.setData({
  349. [files_box]: files
  350. });
  351. console.log(that.data.items);
  352. app.globalData.showToast("已上传");
  353. }
  354. },
  355. fail: (err) => {
  356. console.log(err);
  357. }
  358. });
  359. },
  360. fail: function (res) {
  361. app.globalData.showToast("上传失败");
  362. }
  363. })
  364. },
  365. random_string(len) {
  366. len = len || 32
  367. var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'
  368. var maxPos = chars.length
  369. var pwd = ''
  370. for (let i = 0; i < len; i++) {
  371. pwd += chars.charAt(Math.floor(Math.random() * maxPos))
  372. }
  373. return pwd
  374. },
  375. //备注输入
  376. bindTextAreaBlur: function (e) {
  377. this.setData({
  378. [`items.task_name`]: e.detail.value,
  379. });
  380. },
  381. //备注输入
  382. bindTextAreaBlur2: function (e) {
  383. this.setData({
  384. [`items.task_remark`]: e.detail.value,
  385. });
  386. },
  387. showToast(text) {
  388. app.globalData.showToast(text);
  389. },
  390. formSubmit() {
  391. var items = this.data.items;
  392. if (!items.task_name) {
  393. this.showToast('请输入任务内容')
  394. return;
  395. }
  396. if(items.checked){
  397. let selectRule=this.data.selectRule;
  398. if (!selectRule) {
  399. this.showToast('请选择规则')
  400. return;
  401. }
  402. if (!items.base_point) {
  403. this.showToast('请输入任务积分')
  404. return;
  405. }
  406. let value=items.base_point;
  407. let point;
  408. if (!this.data.isArrindex) {
  409. point = 0 - value;
  410. } else {
  411. point = value;
  412. }
  413. if (point < selectRule.min_point || point > selectRule.max_point) {
  414. this.showToast(`任务分值超出可输入范围`);
  415. return false
  416. }
  417. items.base_point=point;
  418. items.qualified=point;
  419. }else{
  420. if (!items.rule_id2) {
  421. this.showToast('请选择分类')
  422. return;
  423. }
  424. if (!items.base_point2) {
  425. this.showToast('请输入任务积分')
  426. return;
  427. }
  428. items.base_point=items.base_point2
  429. items.qualified=items.base_point2;
  430. items.rule_id=items.rule_id2;
  431. delete items.item_id
  432. }
  433. if (!items.reviewer_id) {
  434. this.showToast('请选择审批人')
  435. return;
  436. }
  437. if (items.base_point<=0) {
  438. this.showToast('任务积分必须大于0,请调整后再发布')
  439. return;
  440. }
  441. if (!items.expire_time) {
  442. this.showToast('请选择截止时间')
  443. return;
  444. }
  445. if (items.chance==0) {
  446. this.showToast('抢单人数不能为0')
  447. return;
  448. }
  449. if (items.chance>100) {
  450. this.showToast('抢单人数不能大于100')
  451. return;
  452. }
  453. if(that.data.employeeList.length>0){
  454. let employee_ids=that.data.employeeList.map(e=>e.id)
  455. if(employee_ids.length>50){
  456. this.showToast('指定人员最多不能超过50位')
  457. return;
  458. }
  459. items.employee_ids=employee_ids.toString()
  460. }
  461. if (!items.ahead_award_point && items.ahead_award_point_limit) {
  462. this.showToast('设置提前奖分时,需同时设置每天奖分及奖分上限');
  463. return;
  464. } else if (items.ahead_award_point && !items.ahead_award_point_limit) {
  465. this.showToast('设置提前奖分时,需同时设置每天奖分及奖分上限');
  466. return;
  467. }
  468. if (!items.timeout_deduction_point && items.timeout_deduction_point_limit) {
  469. this.showToast('设置逾期扣分时,需同时设置每天扣分及扣分上限');
  470. return;
  471. } else if (items.timeout_deduction_point && !items.timeout_deduction_point_limit) {
  472. this.showToast('设置逾期扣分时,需同时设置每天扣分及扣分上限');
  473. return;
  474. }
  475. if(!items.task_remark){
  476. delete items.task_remark
  477. }
  478. if(!items.timeout_deduction_point){
  479. delete items.timeout_deduction_point
  480. }
  481. if(items.dept_ids.length==0){
  482. delete items.dept_ids
  483. }else{
  484. items.dept_ids=items.dept_ids.toString();
  485. }
  486. items.file_list=items.file_list.toString();
  487. this.setData({ disabled: true });
  488. var page1 = getCurrentPages()[getCurrentPages().length - 2]//上一个页面的数据
  489. app.$post('api/integral/task/update',items).then((res) => {
  490. page1.getDetail(items.id,function(){
  491. app.globalData.showToast(res.data.msg);
  492. setTimeout(() => {
  493. dd.navigateBack({ delta: 1 })
  494. }, 1000);
  495. })
  496. }).catch(err => {
  497. this.setData({ disabled: false });
  498. }).finally(err => {
  499. this.setData({ disabled: false });
  500. })
  501. },
  502. switchChange(e) {
  503. that.setData({
  504. [`items.checked`]: e.detail.value
  505. })
  506. },
  507. //选择时间
  508. openDate(e) {
  509. var item = `items.expire_time`
  510. dd.datePicker({
  511. format: 'yyyy-MM-dd HH:mm',
  512. currentDate: that.data.items.expire_time,
  513. success: (res) => {
  514. that.setData({
  515. [item]: res.date
  516. })
  517. },
  518. });
  519. },
  520. //选择审批人
  521. onSelectUser2(item) {
  522. var elm = item.length > 0 ? item[0] : { id: '', name: '' };
  523. var reviewer_id = `items.reviewer_id`
  524. var revieweName = `items.revieweName`
  525. that.setData({
  526. [reviewer_id]: elm.id,
  527. [revieweName]: elm.name,
  528. });
  529. },
  530. //指定人员
  531. onSelectUser(item) {
  532. that.setData({
  533. employeeList: item.length > 0 ? item : [],
  534. })
  535. },
  536. });