add.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501
  1. const _Http = getApp().globalData.http,
  2. getTime = require("../../utils/getTime");
  3. Page({
  4. data: {
  5. loading: false,
  6. isReset: true,
  7. showAll: false,
  8. form: [{
  9. label: "任务标题",
  10. error: false,
  11. errMsg: "",
  12. type: "textarea",
  13. value: "",
  14. placeholder: "请输入0/40字",
  15. valueName: "title",
  16. checking: "base",
  17. required: true,
  18. maxlength: '40'
  19. }, {
  20. label: "任务内容",
  21. error: false,
  22. errMsg: "",
  23. type: "textarea",
  24. value: "",
  25. placeholder: "",
  26. valueName: "remarks",
  27. checking: "base",
  28. required: false,
  29. slot: "synchronization"
  30. }, {
  31. label: "执行人",
  32. error: false,
  33. errMsg: "",
  34. type: "route",
  35. url: "/packageA/select/contacts/select",
  36. value: "",
  37. params: {
  38. "id": "20221018122201",
  39. "content": {
  40. "ownertable": "sys_task",
  41. "ownerid": 0,
  42. "where": {
  43. "condition": "",
  44. "withoutselect": 1
  45. }
  46. }
  47. },
  48. query: "&radio=true&idname=userid",
  49. interrupt: true,
  50. placeholder: "选择任务执行人",
  51. valueName: "principal",
  52. checking: "base",
  53. required: true
  54. }, {
  55. label: "协助人",
  56. error: false,
  57. errMsg: "",
  58. type: "route",
  59. url: "/packageA/select/contacts/select",
  60. value: "",
  61. params: {
  62. "id": "20221018122201",
  63. "content": {
  64. "ownertable": "sys_task",
  65. "ownerid": 0,
  66. "where": {
  67. "condition": "",
  68. "withoutselect": 1
  69. }
  70. }
  71. },
  72. query: "&idname=userid",
  73. interrupt: true,
  74. placeholder: "选择任务协助人",
  75. valueName: "member",
  76. checking: "base",
  77. required: false
  78. }, {
  79. label: "开始日期",
  80. error: false,
  81. errMsg: "",
  82. type: "date",
  83. start: getTime.formatTime(new Date(), '-').split(' ')[0],
  84. value: "",
  85. placeholder: "开始日期",
  86. interrupt: true,
  87. valueName: "starttime",
  88. checking: "base",
  89. required: true
  90. }],
  91. synchronization: null, //同步任务内容参数
  92. disabled: true
  93. },
  94. onLoad(options) {
  95. getApp().globalData.Language.getLanguagePackage(this, '新建任务')
  96. let content = {
  97. "sys_taskid": 0,
  98. "ownertable": "sys_task",
  99. "ownerid": options.ownerid || 0,
  100. };
  101. // 详情中进入
  102. if (options.data) {
  103. getApp().globalData.Language.getLanguagePackage(this, '编辑任务')
  104. let data = JSON.parse(options.data);
  105. if (options.group) {
  106. let group = JSON.parse(options.group)
  107. let leader = group.findIndex(v => v.userid == data.leader[0].userid);
  108. if (leader != -1) {
  109. data.principal = [group[leader].name, [group[leader].userid]]
  110. group.splice(leader, 1)
  111. data.member = [group.map(s => s.name), group.map(s => s.userid - 0)]
  112. }
  113. }
  114. data.starttime = data.starttime.split(" ")[0]
  115. data.endtime = data.endtime ? data.endtime.split(" ")[0] : ""
  116. let form = this.data.form.concat([{
  117. label: "结束日期",
  118. error: false,
  119. errMsg: "",
  120. type: "date",
  121. start: data.value,
  122. value: "",
  123. interrupt: true,
  124. placeholder: "结束日期",
  125. valueName: "endtime",
  126. checking: "base",
  127. required: false
  128. }, {
  129. label: "提醒时间",
  130. error: false,
  131. errMsg: "",
  132. type: "namber",
  133. value: "",
  134. placeholder: "结束时间前几天提醒",
  135. valueName: "remindday",
  136. checking: "base",
  137. required: false
  138. }]);
  139. content = {
  140. "sys_taskid": data.sys_taskid,
  141. "ownertable": data.ownertable || "sys_task",
  142. "ownerid": data.ownerid || 0,
  143. }
  144. this.setData({
  145. content,
  146. isReset: false,
  147. disabled: false,
  148. form: form.map(v => {
  149. if (data[v.valueName]) v.value = data[v.valueName];
  150. return v
  151. })
  152. })
  153. } else if (options.ownertable) {
  154. content = {
  155. "ownertable": options.ownertable || "sys_task",
  156. "ownerid": options.ownerid || 0
  157. }
  158. this.setData({
  159. synchronization: content
  160. })
  161. } else {
  162. //可修改情况
  163. if (["sys_task", "sat_orderclue", "sa_customers", "sa_project"].includes(content.ownertable)) {
  164. let form = this.data.form,
  165. synchronization = content.ownertable != 'sys_task' ? {
  166. "ownertable": content.ownertable,
  167. "ownerid": content.ownerid,
  168. } : null;
  169. form.splice(1, 0, {
  170. label: "关联应用",
  171. error: false,
  172. errMsg: "",
  173. hint: "",
  174. type: "radio",
  175. value: content.ownertable,
  176. radioList: [{
  177. id: 'sa_customers',
  178. name: '我的客户'
  179. }, {
  180. id: 'sa_project',
  181. name: '项目商机'
  182. }, {
  183. id: 'sat_orderclue',
  184. name: '销售线索'
  185. }, {
  186. id: 'sys_task',
  187. name: '不关联'
  188. }],
  189. valueName: "ownertable", //绑定的字段名称
  190. required: false, //必填
  191. interrupt: true,
  192. disabled: content.ownerid != 0
  193. });
  194. if (content.ownertable != 'sys_task') this.setSelectAppRoute(form, content.ownertable, content.ownerid != 0)
  195. this.setData({
  196. form
  197. })
  198. }
  199. }
  200. this.setData({
  201. content
  202. })
  203. },
  204. /* 打断处理form */
  205. interrupt(e) {
  206. let {
  207. data,
  208. form,
  209. temporary
  210. } = e.detail;
  211. console.log(data, form, temporary)
  212. let obj = null,
  213. index = null;
  214. switch (temporary.item.label) {
  215. case '开始日期':
  216. obj = {
  217. label: "结束日期",
  218. error: false,
  219. errMsg: "",
  220. type: "date",
  221. start: data.value,
  222. value: "",
  223. interrupt: true,
  224. placeholder: "结束日期",
  225. valueName: "endtime",
  226. checking: "base",
  227. required: false
  228. };
  229. let index = form.findIndex(v => v.label == '结束日期');
  230. index == -1 ? form.push(obj) : form[index] = obj;
  231. this.setData({
  232. isReset: false
  233. })
  234. break;
  235. case '结束日期':
  236. index = form.findIndex(v => v.label == '提醒时间');
  237. if (index == -1) form.push({
  238. label: "提醒时间",
  239. error: false,
  240. errMsg: "",
  241. type: "namber",
  242. value: "",
  243. placeholder: "结束时间前几天提醒",
  244. valueName: "remindday",
  245. checking: "base",
  246. required: false
  247. });
  248. break;
  249. case '执行人':
  250. index = form.findIndex(v => v.label == '协助人');
  251. form[index].params.excludeid = data.value[1][0];
  252. if (index != -1 && form[index].value[1]) {
  253. let i = form[index].value[1].findIndex(v => v == data.value[1][0]);
  254. if (i != -1) {
  255. form[index].value[0].splice(i, 1);
  256. form[index].value[1].splice(i, 1);
  257. if (form[index].value[0].length == 0) form[index].value = '';
  258. }
  259. }
  260. temporary.item.value = data.value;
  261. form[temporary.index] = temporary.item;
  262. wx.navigateBack()
  263. break;
  264. case '协助人':
  265. index = form.findIndex(v => v.label == '执行人');
  266. if (index != -1 && form[index].value[1]) {
  267. if (data.value[1].findIndex(v => v == form[index].value[1][0]) != -1) form[index].value = ''
  268. }
  269. temporary.item.value = data.value;
  270. form[temporary.index] = temporary.item;
  271. wx.navigateBack()
  272. break;
  273. case '关联应用':
  274. this.setSelectAppRoute(form, data.value)
  275. this.setData({
  276. synchronization: null
  277. })
  278. break;
  279. case '关联数据':
  280. form[temporary.index].value = data.value;
  281. wx.navigateBack()
  282. this.setData({
  283. synchronization: {
  284. "ownertable": form[temporary.index - 1].value,
  285. "ownerid": data.id[0]
  286. }
  287. })
  288. break;
  289. };
  290. this.setData({
  291. form
  292. })
  293. this.selectComponent("#Form").confirm();
  294. },
  295. startSynchronization() {
  296. console.log("开始同步", this.data.synchronization)
  297. wx.navigateTo({
  298. url: '/packageA/work/synchronization?data=' + JSON.stringify(this.data.synchronization),
  299. });
  300. _Http.selectSync = (item, ownertable) => {
  301. let form = this.selectComponent("#Form").data.form,
  302. index = form.findIndex(v => v.label == '任务内容');
  303. if (index != -1) {
  304. if (ownertable == 'sat_orderclue') {
  305. form[index].value = `跟进类型:${item.followupmode}\n跟进内容:${item.content}`;
  306. } else {
  307. form[index].value = `跟进类型:${item.type}\n跟进对象:${item.contacts ? item.contacts.join(","):""}\n${item.content}`;
  308. }
  309. }
  310. this.setData({
  311. form
  312. })
  313. wx.navigateBack()
  314. }
  315. },
  316. setSelectAppRoute(form, ownertable, disabled = false) {
  317. let owneridIndex = form.findIndex(v => v.valueName == 'ownerid');
  318. if (ownertable == "sys_task") {
  319. if (owneridIndex != -1) form.splice(owneridIndex, 1);
  320. } else {
  321. let data = {
  322. label: "关联数据",
  323. error: false,
  324. errMsg: "",
  325. type: "route",
  326. url: "",
  327. value: "",
  328. query: "&radio=true",
  329. interrupt: true,
  330. valueName: "ownerid",
  331. checking: "base",
  332. required: true,
  333. disabled
  334. };
  335. switch (ownertable) {
  336. case "sa_project":
  337. data.params = {
  338. "id": 20221020143502,
  339. "content": {
  340. "nochace": true,
  341. "pageNumber": 1,
  342. "pageSize": 20,
  343. "where": {
  344. "condition": ""
  345. },
  346. "type": 1,
  347. "deleted": 0
  348. }
  349. }
  350. data.placeholder = "选择项目商机";
  351. data.url = "/packageA/select/project/select";
  352. break;
  353. case "sa_customers":
  354. data.params = {
  355. "content": {
  356. isExport: 0,
  357. "pageNumber": 1,
  358. "pageSize": 20,
  359. "where": {
  360. "condition": ""
  361. },
  362. "type": 1,
  363. "deleted": 0,
  364. "isend": 0
  365. },
  366. "id": 20221012164402,
  367. }
  368. data.placeholder = "选择我的客户";
  369. data.url = "/packageA/select/setclient/select";
  370. break;
  371. case "sat_orderclue":
  372. data.params = {
  373. "content": {
  374. "pageNumber": 1,
  375. "pageSize": 20,
  376. "where": {
  377. "condition": ""
  378. },
  379. "type": 1
  380. },
  381. "id": 20221101094502,
  382. }
  383. data.placeholder = "选择销售线索";
  384. data.url = "/packageA/select/clue/select";
  385. break;
  386. };
  387. form.splice(2, owneridIndex == -1 ? 0 : 1, data);
  388. }
  389. this.setData({
  390. form
  391. })
  392. },
  393. submit() {
  394. this.setData({
  395. loading: true
  396. })
  397. let content = {
  398. ...this.data.content,
  399. ...this.selectComponent("#Form").submit()
  400. };
  401. content.leaderuserid = content.principal[1][0];
  402. delete(content.principal)
  403. content.team = {
  404. "userids": content.member.length ? content.member[1] : [],
  405. "justuserids": 1
  406. }
  407. delete(content.member)
  408. if (content.ownerid && typeof (content.ownerid) == 'object') content.ownerid = content.ownerid.length == 2 ? content.ownerid[1][0] : "";
  409. if (!content.ownerid) content.ownertable = "";
  410. _Http.basic({
  411. "id": 20221211112101,
  412. content
  413. }).then(res => {
  414. console.log("创建任务成功", res)
  415. this.setData({
  416. loading: false
  417. })
  418. wx.showToast({
  419. title: res.msg == '成功' ? this.data.language['成功的'] || '保存成功' : res.msg,
  420. icon: "none"
  421. });
  422. /* _Http.basic({
  423. "id": 20220930103601,
  424. "content": {
  425. "ownertable": "sys_task",
  426. "ownerid": res.data.sys_taskid,
  427. }
  428. }, false).then(e => {
  429. console.log("设置团队", e)
  430. }) */
  431. if (res.msg == '成功') setTimeout(() => {
  432. getCurrentPages().forEach(v => {
  433. if (v.__route__ == 'packageA/work/index') {
  434. let index = v.data.list.findIndex(v => v.sys_taskid == res.data.sys_taskid);
  435. if (index == -1) {
  436. v.data.list.unshift(res.data)
  437. v.setData({
  438. list: v.data.list,
  439. "content.total": v.data.content.total + 1
  440. })
  441. } else {
  442. v.setData({
  443. [`list[${index}]`]: res.data
  444. })
  445. }
  446. }
  447. });
  448. let pages = getCurrentPages(),
  449. page = pages[pages.length - 2];
  450. if (page.__route__ == 'packageA/work/index') {
  451. wx.redirectTo({
  452. url: '/packageA/work/detail?id=' + res.data.sys_taskid,
  453. fail(err) {
  454. console.log(err)
  455. }
  456. })
  457. } else if (page.__route__ == 'packageA/work/detail') {
  458. wx.navigateBack();
  459. page.getDetail();
  460. } else {
  461. page.getTags && page.getTags();
  462. let p = page.selectComponent("#Work");
  463. if (p) p.getList(0, true);
  464. wx.navigateBack();
  465. }
  466. }, 500);
  467. })
  468. },
  469. reset() {
  470. let form = this.data.form;
  471. let index = form.findIndex(v => v.label == '开始日期');
  472. form[index].value = "";
  473. form.splice(index + 1, 2);
  474. this.setData({
  475. isReset: true,
  476. disabled: true,
  477. form
  478. });
  479. wx.showToast({
  480. title: this.data.language['重置成功'] || '重置成功',
  481. icon: "none"
  482. })
  483. },
  484. // 是否显示全部
  485. onChange({
  486. detail
  487. }) {
  488. this.setData({
  489. showAll: detail
  490. })
  491. },
  492. /* 表单必填项是否完成 */
  493. onConfirm({
  494. detail
  495. }) {
  496. this.setData({
  497. disabled: detail
  498. })
  499. }
  500. })