insert.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609
  1. const _Http = getApp().globalData.http,
  2. getTime = require("../../utils/getTime");
  3. Page({
  4. data: {
  5. loading: false,
  6. showAll: false,
  7. disabled: true,
  8. form: [{
  9. label: "服务类型",
  10. error: false,
  11. errMsg: "",
  12. hint: "",
  13. type: "radio",
  14. value: "",
  15. interrupt: true,
  16. radioList: [],
  17. valueName: "servicetype", //绑定的字段名称
  18. required: true, //必填
  19. checking: `base`,
  20. }, {
  21. label: "单据日期",
  22. error: false,
  23. errMsg: "",
  24. type: "date",
  25. value: getTime.formatTime(new Date(), '-').split(' ')[0],
  26. placeholder: "请选择日期",
  27. valueName: "billdate",
  28. required: true,
  29. }, {
  30. label: "省市县",
  31. error: false,
  32. errMsg: "",
  33. type: "region",
  34. value: [],
  35. placeholder: "省,市,县",
  36. valueName: "region",
  37. required: true
  38. }, {
  39. label: "详细地址",
  40. error: false,
  41. errMsg: "",
  42. type: "textarea",
  43. value: "",
  44. placeholder: "例: 科创园11栋1103室",
  45. valueName: "address",
  46. required: true,
  47. checking: "base"
  48. }, {
  49. label: "现场联系人",
  50. error: false,
  51. errMsg: "",
  52. type: "text",
  53. value: "",
  54. placeholder: "现场联系人",
  55. valueName: "scenecontact",
  56. required: true,
  57. checking: "base"
  58. }, {
  59. label: "身份备注",
  60. error: false,
  61. errMsg: "",
  62. type: "text",
  63. value: "",
  64. placeholder: "现场联系人身份备注",
  65. valueName: "scenecontactrole",
  66. required: true,
  67. checking: "base"
  68. }, {
  69. label: "现场联系人电话",
  70. error: false,
  71. errMsg: "",
  72. type: "number",
  73. value: "",
  74. placeholder: "联系人手机号码",
  75. valueName: "scenecontactphonenumber",
  76. required: true,
  77. checking: "phone"
  78. }, {
  79. label: "应用系统",
  80. error: false,
  81. errMsg: "",
  82. hint: "",
  83. type: "radio",
  84. value: "",
  85. interrupt: false,
  86. radioList: [],
  87. valueName: "class1", //绑定的字段名称
  88. required: true, //必填
  89. checking: `base`,
  90. }, {
  91. label: "客诉大类",
  92. error: false,
  93. errMsg: "",
  94. hint: "",
  95. type: "radio",
  96. value: "",
  97. interrupt: false,
  98. radioList: [],
  99. valueName: "class2", //绑定的字段名称
  100. required: true, //必填
  101. checking: `base`,
  102. }, {
  103. label: "问题描述",
  104. error: false,
  105. errMsg: "",
  106. type: "reason",
  107. value: "",
  108. placeholder: "请填写",
  109. valueName: "reason",
  110. required: true,
  111. checking: "base"
  112. }, {
  113. label: "服务开始时间",
  114. error: false,
  115. errMsg: "",
  116. type: "date",
  117. value: '',
  118. placeholder: "请选择服务开始时间",
  119. valueName: "begdate",
  120. required: true,
  121. }, {
  122. label: "服务结束时间",
  123. error: false,
  124. errMsg: "",
  125. type: "date",
  126. value: '',
  127. placeholder: "请选择服务结束时间",
  128. valueName: "enddate",
  129. required: true,
  130. }, {
  131. label: "异常类型",
  132. error: false,
  133. errMsg: "",
  134. hint: "",
  135. type: "radio",
  136. value: "",
  137. interrupt: false,
  138. radioList: [],
  139. valueName: "exception_type", //绑定的字段名称
  140. required: true, //必填
  141. checking: `base`,
  142. }, {
  143. label: "服务等级",
  144. error: false,
  145. errMsg: "",
  146. hint: "",
  147. type: "radio",
  148. value: "",
  149. interrupt: false,
  150. radioList: [],
  151. valueName: "service_level", //绑定的字段名称
  152. required: true, //必填
  153. checking: `base`,
  154. }, {
  155. label: "评估意见",
  156. error: false,
  157. errMsg: "",
  158. type: "textarea",
  159. value: "",
  160. placeholder: "请填写",
  161. valueName: "evaluation_comment",
  162. required: false,
  163. checking: "base"
  164. }, {
  165. label: "备注",
  166. error: false,
  167. errMsg: "",
  168. type: "textarea",
  169. value: "",
  170. placeholder: "请填写",
  171. valueName: "remarks",
  172. required: false,
  173. checking: "base"
  174. }],
  175. "content": {
  176. "sa_serviceorderid": "0"
  177. },
  178. sa_orderid: ""
  179. },
  180. onLoad(options) {
  181. getApp().globalData.Language.getLanguagePackage(this, options.edit ? '编辑申请单' : '新建申请单');
  182. this.setData({
  183. type: options.type || "default"
  184. })
  185. if (options.type != 'default') {
  186. this.data.form.unshift({
  187. label: "企业名称",
  188. error: false,
  189. errMsg: "",
  190. type: "route",
  191. url: "/select/agent/index",
  192. params: {
  193. "id": "20220920083901",
  194. "content": {
  195. "nocache": true,
  196. "pageSize": 20,
  197. "pageNumber": 1,
  198. "where": {
  199. "condition": "",
  200. "type": this.data.type == 'admin' ? '' : 23
  201. }
  202. },
  203. },
  204. query: '&radio=true&idname=sys_enterpriseid',
  205. value: "",
  206. placeholder: "选择企业",
  207. valueName: "sys_enterpriseid",
  208. checking: "base",
  209. required: true,
  210. interrupt: true,
  211. disabled: options.edit ? true : false
  212. })
  213. this.setData({
  214. form: this.data.form
  215. })
  216. }
  217. this.getOptions();
  218. if (options.edit) {
  219. let form = this.data.form,
  220. data = getCurrentPages().find(v => v.__route__ == 'E-service/serviceBillList/detail').data.detail;
  221. data.region = data.province ? [data.province, data.city, data.county] : [];
  222. form = form.map(v => {
  223. switch (v.valueName) {
  224. case 'sys_enterpriseid':
  225. v.value = data[v.valueName] ? [data.enterprisename, [data.sys_enterpriseid]] : ''
  226. break;
  227. default:
  228. v.value = data[v.valueName] || ''
  229. break;
  230. }
  231. return v
  232. })
  233. this.setData({
  234. form,
  235. content: data,
  236. sa_orderid: data.sa_orderid ? [data.sonum, [data.sa_orderid]] : ''
  237. })
  238. this.selectComponent("#Form").confirm()
  239. }
  240. this.setOrdeForm();
  241. },
  242. submit() {
  243. this.setData({
  244. loading: true
  245. })
  246. let content = {
  247. ...this.data.content,
  248. ...this.selectComponent("#Form").submit()
  249. };
  250. content.province = content.region[0] || "";
  251. content.city = content.region[1] || "";
  252. content.county = content.region[2] || "";
  253. delete content.region
  254. try {
  255. if (content.sa_orderid.length) {
  256. content.sa_orderid = content.sa_orderid[1][0]
  257. } else {
  258. content.sa_orderid = 0
  259. }
  260. } catch (error) {
  261. content.sa_orderid = 0
  262. }
  263. try {
  264. if (content.sys_enterpriseid.length) {
  265. content.sys_enterpriseid = content.sys_enterpriseid[1][0]
  266. } else {}
  267. } catch (error) {}
  268. _Http.basic({
  269. "id": "20230206091403",
  270. content
  271. }).then(res => {
  272. this.setData({
  273. loading: false
  274. })
  275. console.log("创建申请单", res)
  276. if (res.code == 1) {
  277. if (content.sa_serviceorderid != 0) {
  278. getCurrentPages().find(v => v.__route__ == 'E-service/serviceBillList/detail').getDetail();
  279. wx.navigateBack({
  280. success() {
  281. wx.showToast({
  282. title: getApp().globalData.Language.getMapText('保存成功'),
  283. icon: "none",
  284. mask: true
  285. })
  286. }
  287. });
  288. } else {
  289. wx.redirectTo({
  290. url: `/E-service/serviceBillList/detail?id=${res.data.sa_serviceorderid}&type=${this.data.type}`,
  291. success: () => {
  292. wx.showToast({
  293. title: getApp().globalData.Language.getMapText(content.sa_serviceorderid == 0 ? '创建成功' : '保存成功'),
  294. icon: "none",
  295. })
  296. },
  297. })
  298. }
  299. } else {
  300. wx.showToast({
  301. title: res.code != '1' ? res.msg : getApp().globalData.Language.getMapText('保存成功'),
  302. icon: "none",
  303. mask: true
  304. })
  305. }
  306. })
  307. },
  308. interrupt({
  309. detail
  310. }) {
  311. if (detail.data.valueName == "servicetype") {
  312. detail.form[detail.form.findIndex(v => v.valueName == 'servicetype')] = detail.data;
  313. this.setData({
  314. form: detail.form
  315. })
  316. this.setOrdeForm();
  317. } else if (detail.temporary.item.valueName == "sys_enterpriseid") {
  318. detail.form[detail.form.findIndex(v => v.valueName == 'sys_enterpriseid')].value = detail.data.value;
  319. this.setData({
  320. form: detail.form,
  321. sa_orderid: ""
  322. })
  323. this.setOrdeForm();
  324. wx.navigateBack()
  325. } else if (detail.temporary.item.valueName == "sa_orderid") {
  326. detail.form[detail.form.findIndex(v => v.valueName == 'sa_orderid')].value = detail.data.value;
  327. this.setData({
  328. form: detail.form,
  329. sa_orderid: detail.data.value
  330. })
  331. wx.navigateBack()
  332. };
  333. this.selectComponent("#Form").confirm()
  334. },
  335. setOrdeForm(e) {
  336. let value = this.data.form.find(v => v.valueName == 'servicetype').value,
  337. type = this.data.type,
  338. form = this.data.form;
  339. if (['售中', '售后'].includes(value)) {
  340. if (type == 'default') {
  341. // 选择自己企业的订单
  342. if (!form.some(v => v.valueName == 'sa_orderid')) form.splice(form.findIndex(v => v.valueName == 'billdate'), 0, {
  343. label: "订单号",
  344. error: false,
  345. errMsg: "",
  346. type: "route",
  347. url: "/packageA/toolBill/modules/selectOrder/index",
  348. params: {
  349. "id": "20230206091503",
  350. "content": {
  351. "pageSize": 20,
  352. "pageNumber": 1
  353. }
  354. },
  355. interrupt: true,
  356. query: '&radio=true',
  357. value: this.data.sa_orderid,
  358. placeholder: "选择订单号",
  359. valueName: "sa_orderid",
  360. checking: "base",
  361. required: true
  362. })
  363. } else {
  364. let sys_enterpriseid = form[0].value
  365. // 选择其他其他的订单
  366. form.splice(form.findIndex(v => v.valueName == 'servicetype') + 1, form.some(v => v.valueName == 'sa_orderid') ? 1 : 0, {
  367. label: "订单号",
  368. error: false,
  369. errMsg: "",
  370. type: "route",
  371. url: "/packageA/toolBill/modules/selectOrder/index",
  372. interrupt: true,
  373. params: {
  374. "id": "20230206091503",
  375. "content": {
  376. "pageSize": 20,
  377. "pageNumber": 1,
  378. "sys_enterpriseid": sys_enterpriseid.length ? sys_enterpriseid[1][0] : '',
  379. "where": {
  380. "condition": ""
  381. }
  382. }
  383. },
  384. query: '&radio=true',
  385. value: this.data.sa_orderid,
  386. placeholder: "选择订单号",
  387. valueName: "sa_orderid",
  388. disabled: sys_enterpriseid.length == 0,
  389. checking: "base",
  390. required: true
  391. })
  392. }
  393. this.setData({
  394. form
  395. })
  396. } else {
  397. this.setData({
  398. form: this.data.form.filter(v => v.valueName != 'sa_orderid')
  399. })
  400. }
  401. },
  402. getOptions() {
  403. let form = this.data.form;
  404. // 服务类型
  405. let servicetypes = _Http.servicetypes || [];
  406. if (!servicetypes.length) {
  407. _Http.basic({
  408. "id": 20230206112003,
  409. "content": {},
  410. }).then(res => {
  411. console.log("服务类型", res)
  412. if (res.code == 1) {
  413. servicetypes = res.data.map(v => {
  414. return {
  415. id: v.value,
  416. name: v.value,
  417. }
  418. });
  419. let data = form.find(v => v.valueName == 'servicetype');
  420. data.radioList = servicetypes;
  421. data.value = data.value || servicetypes[0].id;
  422. _Http.servicetypes = servicetypes;
  423. this.setData({
  424. form
  425. })
  426. this.setOrdeForm();
  427. }
  428. })
  429. } else {
  430. let data = form.find(v => v.valueName == 'servicetype');
  431. data.radioList = servicetypes;
  432. data.value = data.value || servicetypes[0].id;
  433. this.setData({
  434. form
  435. })
  436. }
  437. // 应用系统
  438. let class1s = _Http.class1s || [];
  439. if (!class1s.length) {
  440. _Http.basic({
  441. "classname": "sysmanage.develop.optiontype.optiontype",
  442. "method": "optiontypeselect",
  443. "content": {
  444. "pageNumber": 1,
  445. "pageSize": 1000,
  446. "typename": "systemapp",
  447. },
  448. }).then(res => {
  449. console.log("应用系统", res)
  450. if (res.code == 1) {
  451. class1s = res.data.map(v => {
  452. return {
  453. id: v.value,
  454. name: v.value,
  455. }
  456. });
  457. let data = form.find(v => v.valueName == 'class1');
  458. data.radioList = class1s;
  459. data.value = data.value || class1s[0].id;
  460. _Http.class1s = class1s;
  461. this.setData({
  462. form
  463. })
  464. }
  465. })
  466. } else {
  467. let data = form.find(v => v.valueName == 'class1');
  468. data.radioList = class1s;
  469. data.value = data.value || class1s[0].id;
  470. this.setData({
  471. form
  472. })
  473. }
  474. // 客诉大类
  475. let class2s = _Http.class2s || [];
  476. if (!class2s.length) {
  477. _Http.basic({
  478. "classname": "sysmanage.develop.optiontype.optiontype",
  479. "method": "optiontypeselect",
  480. "content": {
  481. "pageNumber": 1,
  482. "pageSize": 1000,
  483. "typename": "customerclass",
  484. },
  485. }).then(res => {
  486. console.log("客诉大类", res)
  487. if (res.code == 1) {
  488. class2s = res.data.map(v => {
  489. return {
  490. id: v.value,
  491. name: v.value,
  492. }
  493. });
  494. let data = form.find(v => v.valueName == 'class2');
  495. data.radioList = class2s;
  496. data.value = data.value || class2s[0].id;
  497. _Http.class2s = class2s;
  498. this.setData({
  499. form
  500. })
  501. }
  502. })
  503. } else {
  504. let data = form.find(v => v.valueName == 'class2');
  505. data.radioList = class2s;
  506. data.value = data.value || class2s[0].id;
  507. this.setData({
  508. form
  509. })
  510. }
  511. // 异常类型
  512. let exception_types = _Http.exception_types || [];
  513. if (!exception_types.length) {
  514. _Http.basic({
  515. "classname": "sysmanage.develop.optiontype.optiontype",
  516. "method": "optiontypeselect",
  517. "content": {
  518. "pageNumber": 1,
  519. "pageSize": 1000,
  520. "typename": "exceptiontype",
  521. },
  522. }).then(res => {
  523. console.log("异常类型", res)
  524. if (res.code == 1) {
  525. exception_types = res.data.map(v => {
  526. return {
  527. id: v.value,
  528. name: v.value,
  529. }
  530. });
  531. let data = form.find(v => v.valueName == 'exception_type');
  532. data.radioList = exception_types;
  533. data.value = data.value || exception_types[0].id;
  534. _Http.exception_types = exception_types;
  535. this.setData({
  536. form
  537. })
  538. }
  539. })
  540. } else {
  541. let data = form.find(v => v.valueName == 'exception_type');
  542. data.radioList = exception_types;
  543. data.value = data.value || exception_types[0].id;
  544. this.setData({
  545. form
  546. })
  547. }
  548. // 服务等级
  549. let service_levels = _Http.service_levels || [];
  550. if (!service_levels.length) {
  551. _Http.basic({
  552. "classname": "sysmanage.develop.optiontype.optiontype",
  553. "method": "optiontypeselect",
  554. "content": {
  555. "pageNumber": 1,
  556. "pageSize": 1000,
  557. "typename": "servicelevel",
  558. },
  559. }).then(res => {
  560. console.log("服务等级", res)
  561. if (res.code == 1) {
  562. service_levels = res.data.map(v => {
  563. return {
  564. id: v.value,
  565. name: v.value,
  566. }
  567. });
  568. let data = form.find(v => v.valueName == 'service_level');
  569. data.radioList = service_levels;
  570. data.value = data.value || service_levels[0].id;
  571. _Http.service_levels = service_levels;
  572. this.setData({
  573. form
  574. })
  575. }
  576. })
  577. } else {
  578. let data = form.find(v => v.valueName == 'service_level');
  579. data.radioList = service_levels;
  580. data.value = data.value || service_levels[0].id;
  581. this.setData({
  582. form
  583. })
  584. }
  585. },
  586. // 是否显示全部
  587. onChange({
  588. detail
  589. }) {
  590. this.setData({
  591. showAll: detail
  592. })
  593. },
  594. /* 表单必填项是否完成 */
  595. onConfirm({
  596. detail
  597. }) {
  598. this.setData({
  599. disabled: detail
  600. })
  601. }
  602. })