index.js 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  1. import api from '../api/api';
  2. const _Http = getApp().globalData.http;
  3. let deleteUsers = [];
  4. Page({
  5. data: {
  6. stopClick: '',
  7. SignName: true,
  8. timerid: null,
  9. act_confirm_value: '是',
  10. form: {
  11. "sa_workorderid": 0,
  12. "sa_workorder_nodeid": 0,
  13. "remarks": "",
  14. "textcontent": "",
  15. "confirm_value": "",
  16. "amount": 0,
  17. "isconfirm": 0,
  18. "team": [],
  19. "trainers": [],
  20. "traintitem": [],
  21. },
  22. bindNormalData: {
  23. ownertable: 'sa_workorder_node',
  24. ownerid: 0,
  25. usetype: 'default'
  26. },
  27. bindContractData: {
  28. "ownertable": "sa_workorder_node",
  29. "ownerid": 0,
  30. "usetype": "contract",
  31. },
  32. bindSignNameData: {
  33. "ownertable": "sa_workorder_node",
  34. "ownerid": 0,
  35. "usetype": "signature",
  36. },
  37. addpersonBadge: {},
  38. additemBadge: {},
  39. addpersonLabel: '',
  40. additemLabel: '',
  41. activeTab: 0
  42. },
  43. onTabChange(e) {
  44. const value = parseInt(e.currentTarget.dataset.value)
  45. this.setData({
  46. activeTab: value
  47. })
  48. },
  49. async nodeDetail() {
  50. const res = await api._post({
  51. "id": "20230209091103",
  52. "version": 1,
  53. "content": {
  54. nocache: true,
  55. "sa_workorderid": this.data.sa_workorderid,
  56. "sa_workorder_nodeid": this.data.sa_workorder_nodeid
  57. }
  58. })
  59. console.log("详情", res.data)
  60. const language = getApp().globalData.Language.getMapText('E-订单') || {}
  61. const isAddpersonRequired = res.data[0].workpresetjson.addperson == 11
  62. const isAdditemRequired = res.data[0].workpresetjson.additem == 11
  63. this.setData({
  64. mainData: res.data[0],
  65. teams: res.data[0].team.map(v => v.userid),
  66. titems: res.data[0].titems,
  67. addpersonBadge: isAddpersonRequired ? {count: '*', color: '#e34d59', offset: ['20rpx', '-10rpx'], size: 'small'} : {},
  68. additemBadge: isAdditemRequired ? {count: '*', color: '#e34d59', offset: ['20rpx', '-10rpx'], size: 'small'} : {},
  69. addpersonLabel: language['培训人员'] || '培训人员',
  70. additemLabel: language['工单物料'] || '工单物料',
  71. activeTab: res.data[0].workpresetjson.addperson !== 0 ? 0 : 1
  72. })
  73. this.setDefaultData()
  74. try {
  75. this.selectComponent("#signName").fileData()
  76. } catch (error) {
  77. }
  78. },
  79. // 是否确认
  80. confirmValue(data) {
  81. this.data.form.confirm_value = data.currentTarget.dataset.item
  82. this.setData({
  83. form: this.data.form
  84. })
  85. this.updateNode()
  86. },
  87. // 文本信息
  88. textContent(data) {
  89. this.data.form.textcontent = data.detail.value
  90. this.setData({
  91. form: this.data.form
  92. })
  93. this.updateNode()
  94. },
  95. // 是否有偿
  96. amountPay(data) {
  97. this.data.form.amount = data.detail.value
  98. this.setData({
  99. form: this.data.form
  100. })
  101. this.updateNode()
  102. },
  103. // 备 注
  104. remarkEdit(data) {
  105. this.data.form.remarks = data.detail.value
  106. this.setData({
  107. form: this.data.form
  108. })
  109. this.updateNode()
  110. },
  111. confirmBill() {
  112. this.data.form.isconfirm = 1
  113. this.setData({
  114. form: this.data.form
  115. })
  116. this.updateNode()
  117. },
  118. // 更新节点
  119. async updateNode(e) {
  120. this.data.form.traintitem = this.data.titems
  121. this.data.form.sa_workorderid = this.data.sa_workorderid
  122. this.data.form.sa_workorder_nodeid = this.data.sa_workorder_nodeid
  123. this.data.form.team = []
  124. const res = await api._post({
  125. "id": "20230209094203",
  126. "content": this.data.form
  127. });
  128. if (!this.data.form.team.some(v => v.userid == wx.getStorageSync('userMsg').userid)) {
  129. this.setData({
  130. teams: [wx.getStorageSync('userMsg').userid]
  131. })
  132. this.addUser(false);
  133. }
  134. if (e && e.currentTarget.dataset.info === 'needBack') {
  135. wx.navigateBack()
  136. } else {
  137. this.nodeDetail()
  138. }
  139. try {
  140. this.selectComponent("#signName").fileData()
  141. } catch (error) {
  142. }
  143. },
  144. // 获取输入的数据
  145. setDefaultData() {
  146. let that = this
  147. Object.keys(this.data.mainData).map((key, index) => {
  148. Object.keys(this.data.form).map((key2, index) => {
  149. if (key === key2) {
  150. that.data.form[key2] = that.data.mainData[key2]
  151. }
  152. })
  153. })
  154. this.setData({
  155. form: this.data.form
  156. })
  157. },
  158. // 跳转到添加人员
  159. addTrainers() {
  160. wx.navigateTo({
  161. url: '/Eservice/addTrainers/index',
  162. })
  163. },
  164. // 添加人员
  165. getAddTrainers(data) {
  166. this.data.form.trainers.push(data)
  167. this.data.mainData.trainers = this.data.form.trainers
  168. this.setData({
  169. // form:this.data.form,
  170. mainData: this.data.mainData
  171. })
  172. this.updateNode()
  173. },
  174. // 删除人员
  175. deleteMenber(data) {
  176. this.data.mainData.trainers = this.data.mainData.trainers.filter(e => {
  177. return e.sa_workorder_node_teamid !== data.detail.sa_workorder_node_teamid
  178. })
  179. this.data.form.trainers = this.data.mainData.trainers
  180. this.setData({
  181. form: this.data.form,
  182. mainData: this.data.mainData
  183. })
  184. this.updateNode()
  185. },
  186. // 跳转到物料添加
  187. addProduct() {
  188. wx.navigateTo({
  189. url: '/Eservice/serviceMaterial/index',
  190. })
  191. },
  192. // 添加物料
  193. getAdd(selection) {
  194. this.data.form.traintitem = selection.map(e => {
  195. return {
  196. "itemname": e.itemname,
  197. "itemid": e.itemid,
  198. "model": e.model,
  199. "spec": e.spec,
  200. "qty": 1
  201. }
  202. })
  203. this.setData({
  204. titems: this.data.form.traintitem
  205. })
  206. this.updateNode()
  207. },
  208. // 修改物料数量
  209. qtyChange(data) {
  210. clearTimeout(this.data.timerid)
  211. this.data.timerid = setTimeout(() => {
  212. this.data.titems.forEach(e => {
  213. if (e.itemid == data.detail.itemid) {
  214. e.qty = data.detail.qty
  215. }
  216. })
  217. this.setData({
  218. titems: this.data.titems
  219. })
  220. this.updateNode()
  221. }, 1000)
  222. this.setData({
  223. timerid: this.data.timerid
  224. })
  225. },
  226. // 删除物料
  227. deleteMaterial(data) {
  228. this.setData({
  229. titems: this.data.titems.filter(e => {
  230. return e.itemid !== data.detail.itemid
  231. })
  232. })
  233. this.updateNode()
  234. },
  235. /**
  236. * 生命周期函数--监听页面加载
  237. */
  238. onLoad(options) {
  239. this.data.bindContractData.ownerid = options.id
  240. this.data.bindNormalData.ownerid = options.id
  241. this.data.bindSignNameData.ownerid = options.id
  242. this.setData({
  243. bindContractData: this.data.bindContractData,
  244. bindNormalData: this.data.bindNormalData,
  245. bindSignNameData: this.data.bindSignNameData,
  246. sa_workorder_nodeid: options.id,
  247. sa_workorderid: options.wid,
  248. stopClick: options.class
  249. })
  250. this.nodeDetail();
  251. let page = getCurrentPages()[getCurrentPages().length - 2];
  252. if (page.__route__ == 'E-service/workOrder/detail') this.setData({
  253. workers: page.data.detail.team
  254. })
  255. getApp().globalData.Language.getLanguagePackage(this, 'E-订单');
  256. },
  257. onShow() {
  258. this.setData({
  259. SignName: true
  260. })
  261. },
  262. onHide() {
  263. this.setData({
  264. SignName: false
  265. })
  266. },
  267. /**
  268. * 开始添加成员或者取消添加
  269. */
  270. showTeamDialog() {
  271. this.setData({
  272. showTeams: !this.data.showTeams
  273. })
  274. },
  275. /**
  276. * 选择添加成员
  277. */
  278. selectTeams(e) {
  279. const {
  280. userid
  281. } = e.currentTarget.dataset.item;
  282. let teams = this.data.teams;
  283. if (teams.some(v => v == userid)) {
  284. teams = teams.filter(v => v != userid)
  285. deleteUsers.push(userid);
  286. } else {
  287. teams.push(userid)
  288. }
  289. this.setData({
  290. teams
  291. })
  292. },
  293. addUser(init = true) {
  294. api._post({
  295. "id": 20220930103803,
  296. "content": {
  297. ownertable: 'sa_workorder_node',
  298. ownerid: this.data.mainData.sa_workorder_nodeid,
  299. "userids": deleteUsers
  300. }
  301. }).then(s => {
  302. console.log("先删除", s)
  303. deleteUsers = [];
  304. api._post({
  305. "id": 20220930103603,
  306. "content": {
  307. ownertable: 'sa_workorder_node',
  308. ownerid: this.data.mainData.sa_workorder_nodeid,
  309. "userids": this.data.teams
  310. }
  311. }).then(res => {
  312. console.log("添加成员", res)
  313. wx.showToast({
  314. title: res.code == '1' ? getApp().globalData.Language.getMapText('修改成功') : res.msg,
  315. icon: "none",
  316. mask: true
  317. });
  318. if (res.code == '1') {
  319. this.nodeDetail();
  320. if (init) this.showTeamDialog();
  321. }
  322. })
  323. })
  324. },
  325. onUnload() {
  326. getCurrentPages().find(v => v.__route__ == 'E-service/workOrder/detail').getDetail()
  327. }
  328. })