offerAreward.js 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369
  1. var app = getApp()
  2. var that;
  3. var animation;
  4. Page({
  5. data: {
  6. items: {
  7. targets: [],//工作执行者列表,以逗号分割的字符串或直接传入数组
  8. pt_id: 3,//积分种类id
  9. task_name: '',//任务名
  10. task_remark: '',//任务详细描述
  11. base_point: '',//任务参考积分
  12. expire_time: '',//截至时间 格式:2020-02-02 12:00
  13. package_id: '',//绩效任务包id 绩效任务包发布工作时必须大于0,其余工作发布为0
  14. weight: '',//绩效权重 绩效任务包发布工作时必须大于0,其余工作发布为0
  15. file_list: [],//附件地址列表
  16. reviewer_id: '',//审批者id
  17. revieweName: '',
  18. timeout_deduction_point: '',//逾期扣分/月
  19. unqualified: '',//评分标准 不合格-分数
  20. qualified: '',//
  21. satisfied: '',//
  22. super_satisfied: '',//
  23. cate_id: '',// 共组分类id
  24. },
  25. reviewerObj: [],//默认审批人
  26. objectArray: [
  27. {
  28. id: 0,
  29. name: '不重复',
  30. },
  31. {
  32. id: 1,
  33. name: '每天重复',
  34. },
  35. {
  36. id: 2,
  37. name: '每周重复',
  38. },
  39. {
  40. id: 3,
  41. name: '每月重复',
  42. },
  43. ],
  44. arrIndex: 0,
  45. defaultSection:[],//选择的部门
  46. },
  47. onLoad() {
  48. that = this;
  49. dd.setNavigationBar({ title: "发布悬赏任务" });
  50. that.setData({
  51. types: app.globalData.types
  52. })
  53. },
  54. bindObjPickerChange(e) {
  55. this.setData({
  56. arrIndex: e.detail.value,
  57. });
  58. },
  59. openType(e) {
  60. var id = e.target.dataset.id;
  61. that.setData({
  62. [`items.pt_id`]: id
  63. })
  64. },
  65. onShow() {
  66. animation = dd.createAnimation({
  67. duration: 200,
  68. timeFunction: "linear",
  69. });
  70. },
  71. //积分输入
  72. bindKeyInput(e) {
  73. var point = `items.base_point`;
  74. this.setData({
  75. [point]: e.detail.value,
  76. });
  77. },
  78. //积分输入
  79. bindKeyInput2(e) {
  80. var point = `items.timeout_deduction_point`;
  81. this.setData({
  82. [point]: e.detail.value,
  83. });
  84. },
  85. //显示图片
  86. showImg(e) {
  87. var index = e.target.dataset.index;
  88. var item = e.target.dataset.item
  89. dd.previewImage({
  90. current: index,
  91. urls: item
  92. });
  93. },
  94. //关闭规则
  95. onClose() {
  96. animation.translateY(1200).step();
  97. that.setData({
  98. animationInfo: animation.export()
  99. });
  100. that.setData({ isShowType: '' });
  101. },
  102. //选择部门
  103. onSelectSection(e){
  104. this.setData({
  105. defaultSection:e
  106. })
  107. },
  108. //选择弹窗
  109. openSelect(e) {
  110. var num = e.target.dataset.num;
  111. if (e.target.dataset.item) {
  112. if (e.target.dataset.item.id) {
  113. that.setData({ reviewerObj: [e.target.dataset.item] });
  114. } else {
  115. that.setData({ reviewerObj: [] });
  116. }
  117. }
  118. that.setData({
  119. isShowType: num,
  120. });
  121. animation.translateY(0).step();
  122. that.setData({
  123. animationInfo: animation.export()
  124. });
  125. },
  126. //删除图片
  127. deteleImg(e) {
  128. var index = e.target.dataset.index;//获取itemS集合中对应的files
  129. var files = that.data.items.file_list;//获取itemS集合中对应的files
  130. var files_box = `items.file_list`;//
  131. app.globalData.arrRemoveObj(files, files[index]);
  132. that.setData({
  133. [files_box]: files
  134. });
  135. },
  136. //图片选择
  137. openImg(e) {
  138. var files = that.data.items.file_list;
  139. if (files.length >= 3) {
  140. app.globalData.showToast("只能上传三张");
  141. return false;
  142. }
  143. dd.chooseImage({
  144. count: 1,
  145. success: (res) => {
  146. that.postImg(res.filePaths[0]);
  147. },
  148. });
  149. },
  150. postImg(img_url) {
  151. var files_box = `items.file_list`;
  152. var files = that.data.items.file_list;
  153. dd.httpRequest({
  154. url: app.globalData.imgHttpUrl,
  155. method: 'POST',
  156. data: {
  157. md5: that.random_string(32),
  158. 'name': app.globalData.day
  159. },
  160. success: function (res) {
  161. if (app.globalData.userData.site_id) {
  162. var key = 'intesys/dd/' + app.globalData.userData.site_id + "/" + app.globalData.day + '/' + that.random_string(32) + '.png';
  163. } else {
  164. var key = 'intesys/dd/' + app.globalData.day + '/' + that.random_string(32) + '.png';
  165. }
  166. var obj = res.data.data;
  167. dd.uploadFile({
  168. url: app.globalData.ALIOSS_URL,
  169. fileType: 'image',
  170. fileName: 'file',
  171. filePath: img_url,
  172. formData: {
  173. key: key,
  174. policy: obj.policy,
  175. OSSAccessKeyId: obj.accessid,
  176. success_action_status: 200,
  177. signature: obj.signature
  178. },
  179. success: (res) => {
  180. if (res.statusCode == 200) {
  181. if (files.length > 0) {
  182. files.push('http://cdn.intesys.g107.com/' + key)
  183. } else {
  184. files = ['http://cdn.intesys.g107.com/' + key];
  185. }
  186. that.setData({
  187. [files_box]: files
  188. });
  189. console.log(that.data.items);
  190. app.globalData.showToast("已上传");
  191. }
  192. },
  193. fail: (err) => {
  194. console.log(err);
  195. }
  196. });
  197. },
  198. fail: function (res) {
  199. app.globalData.showToast("上传失败");
  200. }
  201. })
  202. },
  203. random_string(len) {
  204. len = len || 32
  205. var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'
  206. var maxPos = chars.length
  207. var pwd = ''
  208. for (let i = 0; i < len; i++) {
  209. pwd += chars.charAt(Math.floor(Math.random() * maxPos))
  210. }
  211. return pwd
  212. },
  213. //备注输入
  214. bindTextAreaBlur: function (e) {
  215. var index = e.target.dataset.index;
  216. var remark = `items[${index}].remark`
  217. this.setData({
  218. [remark]: e.detail.value,
  219. });
  220. },
  221. showToast(text) {
  222. app.globalData.showToast(text);
  223. },
  224. formSubmit() {
  225. var items = this.data.items;
  226. var arr = [];
  227. var isTg = true;
  228. var pt_id = app.getTypesItem(this.data.isGzType).id
  229. if (userData.length == 0) {
  230. this.showToast('请选择奖扣对象')
  231. return;
  232. }
  233. for (var i = 0; i < items.length; i++) {
  234. var obj = {};
  235. var item = items[i];
  236. var num = item.checked ? item.point : item.point2
  237. var point;
  238. if (item.checked) {
  239. if (item.isArrindex != true) {
  240. point = 0 - num;
  241. } else {
  242. point = num;
  243. }
  244. if (point < item.selectRule.min_point || point > item.selectRule.max_point) {
  245. this.showToast(`第${i + 1}条,积分分值超出可输入范围`);
  246. isTg = false;
  247. }
  248. } else {
  249. if (item.isArrindex2 != true) {
  250. point = 0 - num;
  251. } else {
  252. point = num;
  253. }
  254. }
  255. if (item.checked) {
  256. if (!item.rule_id) {
  257. this.showToast(`第${i + 1}条请选择规则`);
  258. isTg = false;
  259. break;
  260. }
  261. } else {
  262. if (!item.rule_id2) {
  263. this.showToast(`第${i + 1}条请选择分类`);
  264. isTg = false;
  265. break;
  266. }
  267. }
  268. if (point == 0 || !point) {
  269. this.showToast(`第${i + 1}条积分分值不能为0或者为空`);
  270. isTg = false;
  271. break;
  272. }
  273. if (!item.remark) {
  274. this.showToast(`第${i + 1}条事件内容不能为空`);
  275. isTg = false;
  276. break;
  277. }
  278. obj.rule_id = item.checked ? item.rule_id : item.rule_id2;
  279. obj.item_id = item.checked ? item.item_id : 0;
  280. obj.point = point;
  281. obj.remark = item.remark;
  282. obj.event_time = item.event_time;
  283. obj.pt_id = pt_id;
  284. obj.reviewer_id = item.reviewer_id ? item.reviewer_id : 0;
  285. obj.files = item.files;
  286. arr.push(obj);
  287. }
  288. var userIds = []
  289. userData.map(item => {
  290. userIds.push(item.id)
  291. })
  292. if (isTg) {
  293. var data = {
  294. members: JSON.stringify(userIds),
  295. items: JSON.stringify(arr)
  296. }
  297. this.setData({ disabled: true });
  298. var url = this.data.type == 'B' ? 'api/integral/point/entry' : 'api/integral/review/a/entry'
  299. app.$post(url, data).then((res) => {
  300. var is = true, msg;
  301. if (this.data.type == 'B') {
  302. res.data.data.list.forEach(item => {
  303. if (item.status != 1) {
  304. is = false;
  305. msg = item.msg;
  306. }
  307. })
  308. } else {
  309. res.data.data.forEach(item => {
  310. if (item.status != 1) {
  311. is = false;
  312. msg = item.rule_item;
  313. }
  314. })
  315. }
  316. if (is) {
  317. this.showToast('提交成功');
  318. setTimeout(() => {
  319. this.setData({ disabled: false });
  320. dd.navigateBack({ delta: 1 })
  321. }, 1000);
  322. } else {
  323. this.setData({ disabled: false });
  324. this.showToast(msg);
  325. }
  326. }).catch(err => {
  327. this.setData({ disabled: false });
  328. })
  329. }
  330. },
  331. switchChange(e) {
  332. var index = e.target.dataset.index;
  333. var item = `items[${index}].checked`;
  334. that.setData({
  335. [item]: e.detail.value
  336. })
  337. },
  338. //选择时间
  339. openDate(e) {
  340. var item = `items.expire_time`
  341. dd.datePicker({
  342. format: 'yyyy-MM-dd HH:mm',
  343. currentDate: that.data.items.expire_time,
  344. success: (res) => {
  345. that.setData({
  346. [item]: res.date
  347. })
  348. },
  349. });
  350. },
  351. //选择审批人
  352. onSelectUser2(item) {
  353. var elm = item.length > 0 ? item[0] : { id: '', name: '' };
  354. var reviewer_id = `items.reviewer_id`
  355. var revieweName = `items.revieweName`
  356. that.setData({
  357. [reviewer_id]: elm.id,
  358. [revieweName]: elm.name,
  359. });
  360. },
  361. });