index.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551
  1. // nova-tourism/pages/my/merchant/merchant-home/gift-order/index.js
  2. const Parse = getApp().Parse;
  3. const company = getApp().globalData.company
  4. const dateF = require('../../../../../../utils/date')
  5. Page({
  6. /**
  7. * 页面的初始数据
  8. */
  9. data: {
  10. orderList: [], //订单列表
  11. storeId: '', //本店id
  12. statusMap_shop: {
  13. '100': '待支付',
  14. '200': '已支付',
  15. '300': '已发货',
  16. '400': '已收货',
  17. '500': '申请退款',
  18. '601': '退款申请通过',
  19. '602': '退款被驳回',
  20. '700': '退款成功',
  21. '800': '订单完成',
  22. },
  23. isShipments: false, //发货弹框
  24. shipments_order: null, //发货订单
  25. shipments_index: 0, //发货订单下标
  26. trackingNumber: null, //快递单号
  27. isShowExpress: false, //快递公司弹框
  28. expVal: '', //快递公司搜索关键字
  29. timeout: null, //搜索框计时器
  30. expComList: [], //快递公司列表
  31. checkExp: null, //选中的公司
  32. },
  33. /**
  34. * 生命周期函数--监听页面加载
  35. */
  36. onLoad(options) {
  37. let storeId = options.storeId;
  38. this.setData({
  39. storeId: storeId
  40. })
  41. this.refersh()
  42. },
  43. async refersh() {
  44. this.getOrder()
  45. },
  46. /**获取订单 */
  47. async getOrder() {
  48. let {
  49. storeId,
  50. orderList
  51. } = this.data
  52. let query = new Parse.Query('Order')
  53. query.include('targetObject', 'store', 'expressCompany')
  54. query.equalTo('company', company)
  55. query.equalTo('store', storeId)
  56. query.notEqualTo('isDeleted', true)
  57. query.containedIn('status', ['200', '300', '400', '500', '601', '602', '700', '800'])
  58. query.limit(10)
  59. query.skip(orderList?.length || 0)
  60. query.descending('createdAt')
  61. let r = await query.find()
  62. if (r?.length <= 0) wx.showToast({
  63. title: '到底了~',
  64. icon: 'none',
  65. duration: 500
  66. })
  67. let list = r?.map(item => {
  68. let obj = item?.toJSON()
  69. obj.createdAt = dateF.formatTime("YYYY-mm-dd HH:MM", obj.createdAt)
  70. if (obj.payTime) obj.payTime = dateF.formatTime("YYYY-mm-dd HH:MM", obj.payTime.iso)
  71. return obj
  72. }) || []
  73. this.setData({
  74. orderList: [...(orderList || []), ...(list || [])]
  75. })
  76. // console.log(this.data.orderList)
  77. },
  78. /**
  79. * 更新订单状态
  80. * @param {*} index 订单下标
  81. */
  82. async refershOrder(index) {
  83. let {
  84. orderList
  85. } = this.data
  86. let item = orderList[index]
  87. let query = new Parse.Query('Order')
  88. query.include('targetObject', 'store', 'expressCompany')
  89. query.notEqualTo('isDeleted', true)
  90. query.containedIn('status', ['200', '300', '400', '500', '601', '602', '700', '800'])
  91. query.equalTo('objectId', item.objectId)
  92. let r = await query.first()
  93. if (!r.id) {
  94. orderList.splice(index, 1)
  95. this.setData({
  96. orderList
  97. })
  98. return
  99. }
  100. let obj = r?.toJSON()
  101. obj.createdAt = dateF.formatTime("YYYY-mm-dd HH:MM", obj.createdAt)
  102. if (obj.payTime) obj.payTime = dateF.formatTime("YYYY-mm-dd HH:MM", obj.payTime.iso)
  103. orderList[index] = obj
  104. this.setData({
  105. orderList
  106. })
  107. },
  108. /**快递订单-确认发货 */
  109. async confirmShipment() {
  110. let {
  111. shipments_order,
  112. trackingNumber,
  113. checkExp,shipments_index
  114. } = this.data
  115. if ((!trackingNumber) || (!checkExp?.objectId)) {
  116. wx.showToast({
  117. title: '存在未填项',
  118. icon: 'none'
  119. })
  120. return
  121. }
  122. let query = new Parse.Query('Order')
  123. let o = await query.get(shipments_order?.objectId)
  124. o.set('trackingNumber', trackingNumber)
  125. o.set('expressCompany', {
  126. __type: 'Pointer',
  127. className: 'ExpressCompany',
  128. objectId: checkExp?.objectId
  129. })
  130. o.set('status','300')
  131. await o.save()
  132. await this.refershOrder(shipments_index)
  133. this.closeShipments()
  134. wx.showToast({
  135. title: '保存成功',
  136. icon:'success'
  137. })
  138. },
  139. /**发货弹框-开 */
  140. openShipments(e) {
  141. let {
  142. index
  143. } = e.currentTarget.dataset
  144. let {
  145. orderList,statusMap_shop
  146. } = this.data
  147. let shipments_order = orderList[index]
  148. if (shipments_order.distributeType != 'delivery') return
  149. if(shipments_order.status != '200'){
  150. wx.showToast({
  151. title: `当前订单 ${statusMap_shop[shipments_order.status]} ,无需发货。`,
  152. icon:'none'
  153. })
  154. return
  155. }
  156. // console.log(shipments_order)
  157. this.setData({
  158. isShipments: true,
  159. shipments_order,
  160. shipments_index: index,
  161. checkExp: shipments_order.expressCompany || null,
  162. expVal: '',
  163. trackingNumber:shipments_order.trackingNumber||'',
  164. })
  165. },
  166. /**发货弹框-关 */
  167. closeShipments() {
  168. this.setData({
  169. isShipments: false
  170. })
  171. },
  172. /**确认退款 */
  173. confirm_refund(e) {
  174. let {
  175. index
  176. } = e.currentTarget.dataset
  177. let {
  178. orderList
  179. } = this.data
  180. let _this = this
  181. wx.showModal({
  182. title: '',
  183. content: '已确认顾客退款到账吗?',
  184. showCancel: true,
  185. cancelText: '取消',
  186. cancelColor: '#000000',
  187. confirmText: '确定',
  188. confirmColor: '#3CC51F',
  189. success: async (result) => {
  190. if (result.confirm) {
  191. wx.showLoading({
  192. title: '加载中',
  193. })
  194. let ShopOrder = new Parse.Query('Order')
  195. let order = await ShopOrder.get(orderList[index]?.objectId)
  196. if (order && order?.id) {
  197. order.set('status', '700')
  198. await order.save()
  199. this.refershOrder(index)
  200. } else {
  201. wx.hideLoading()
  202. wx.showToast({
  203. title: '出错了',
  204. icon: 'error',
  205. image: '',
  206. duration: 1500,
  207. });
  208. return
  209. }
  210. orderList.splice(index, 1)
  211. _this.setData({
  212. orderList
  213. })
  214. wx.hideLoading()
  215. wx.showToast({
  216. title: '已取消',
  217. icon: 'none',
  218. image: '',
  219. duration: 1500,
  220. });
  221. }
  222. },
  223. fail: () => {},
  224. complete: () => {}
  225. });
  226. },
  227. /**驳回退款 */
  228. overrule_refund(e) {
  229. let {
  230. index
  231. } = e.currentTarget.dataset
  232. let {
  233. orderList
  234. } = this.data
  235. let _this = this
  236. wx.showModal({
  237. title: '',
  238. content: '驳回当前退款申请吗?',
  239. showCancel: true,
  240. cancelText: '取消',
  241. cancelColor: '#000000',
  242. confirmText: '确定',
  243. confirmColor: '#3CC51F',
  244. success: async (result) => {
  245. if (result.confirm) {
  246. wx.showLoading({
  247. title: '加载中',
  248. })
  249. let ShopOrder = new Parse.Query('Order')
  250. let order = await ShopOrder.get(orderList[index]?.objectId)
  251. if (order && order?.id) {
  252. order.set('status', '602')
  253. await order.save()
  254. this.refershOrder(index)
  255. } else {
  256. wx.hideLoading()
  257. wx.showToast({
  258. title: '出错了',
  259. icon: 'error',
  260. image: '',
  261. duration: 1500,
  262. });
  263. return
  264. }
  265. orderList.splice(index, 1)
  266. _this.setData({
  267. orderList
  268. })
  269. wx.hideLoading()
  270. wx.showToast({
  271. title: '已取消',
  272. icon: 'none',
  273. image: '',
  274. duration: 1500,
  275. });
  276. }
  277. },
  278. fail: () => {},
  279. complete: () => {}
  280. });
  281. },
  282. /**同意退款 */
  283. agree_refund(e) {
  284. let {
  285. index
  286. } = e.currentTarget.dataset
  287. let {
  288. orderList
  289. } = this.data
  290. let _this = this
  291. wx.showModal({
  292. title: '',
  293. content: '确认当前退款申请吗?',
  294. showCancel: true,
  295. cancelText: '取消',
  296. cancelColor: '#000000',
  297. confirmText: '确定',
  298. confirmColor: '#3CC51F',
  299. success: async (result) => {
  300. if (result.confirm) {
  301. wx.showLoading({
  302. title: '加载中',
  303. })
  304. let ShopOrder = new Parse.Query('Order')
  305. let order = await ShopOrder.get(orderList[index]?.objectId)
  306. if (order && order?.id) {
  307. order.set('status', '601')
  308. await order.save()
  309. this.refershOrder(index)
  310. } else {
  311. wx.hideLoading()
  312. wx.showToast({
  313. title: '出错了',
  314. icon: 'error',
  315. image: '',
  316. duration: 1500,
  317. });
  318. return
  319. }
  320. orderList.splice(index, 1)
  321. _this.setData({
  322. orderList
  323. })
  324. wx.hideLoading()
  325. wx.showToast({
  326. title: '已取消',
  327. icon: 'none',
  328. image: '',
  329. duration: 1500,
  330. });
  331. }
  332. },
  333. fail: () => {},
  334. complete: () => {}
  335. });
  336. },
  337. /**确认收货 */
  338. confirm_receipt(e) {
  339. let {
  340. index
  341. } = e.currentTarget.dataset
  342. let {
  343. orderList
  344. } = this.data
  345. let _this = this
  346. wx.showModal({
  347. title: '',
  348. content: '确认当前自提订单已取货吗',
  349. showCancel: true,
  350. cancelText: '取消',
  351. cancelColor: '#000000',
  352. confirmText: '确定',
  353. confirmColor: '#3CC51F',
  354. success: async (result) => {
  355. if (result.confirm) {
  356. wx.showLoading({
  357. title: '加载中',
  358. })
  359. let ShopOrder = new Parse.Query('Order')
  360. let order = await ShopOrder.get(orderList[index]?.objectId)
  361. if (order && order?.id) {
  362. order.set('status', '800')
  363. await order.save()
  364. this.refershOrder(index)
  365. } else {
  366. wx.hideLoading()
  367. wx.showToast({
  368. title: '出错了',
  369. icon: 'error',
  370. image: '',
  371. duration: 1500,
  372. });
  373. return
  374. }
  375. orderList.splice(index, 1)
  376. _this.setData({
  377. orderList
  378. })
  379. wx.hideLoading()
  380. wx.showToast({
  381. title: '已取消',
  382. icon: 'none',
  383. image: '',
  384. duration: 1500,
  385. });
  386. }
  387. },
  388. fail: () => {},
  389. complete: () => {}
  390. });
  391. },
  392. closeExpress() {
  393. this.setData({
  394. isShowExpress: false
  395. });
  396. },
  397. openExpress() {
  398. this.getPointerItem()
  399. this.setData({
  400. isShowExpress: true
  401. });
  402. },
  403. /**指针搜索框变化 */
  404. async valChange(e) {
  405. await this.setData({
  406. expVal: e.detail || ''
  407. })
  408. let {
  409. timeout
  410. } = this.data
  411. clearTimeout(timeout)
  412. timeout = setTimeout(async () => {
  413. await this.setData({
  414. expComList: [],
  415. })
  416. this.getPointerItem()
  417. }, 1000);
  418. this.setData({
  419. timeout
  420. })
  421. },
  422. /**选中快递公司 */
  423. checkPointer(e) {
  424. let {
  425. index
  426. } = e.currentTarget.dataset
  427. let {
  428. expComList
  429. } = this.data
  430. this.setData({
  431. checkExp: expComList[index]
  432. })
  433. // console.log(expComList[index])
  434. this.closeExpress()
  435. },
  436. /** 查询快递公司*/
  437. async getPointerItem() {
  438. let {
  439. expVal,
  440. expComList
  441. } = this.data
  442. let query = new Parse.Query('ExpressCompany')
  443. query.contains('name', expVal || '')
  444. query.limit(30)
  445. query.skip(expComList?.length || 0)
  446. let d = await query.find()
  447. let list = d?.map(item => item.toJSON())
  448. this.setData({
  449. expComList: [...(expComList || []), ...(list || [])]
  450. })
  451. },
  452. /**预览图片 */
  453. previewImg: function (e) {
  454. let {
  455. list
  456. } = e.currentTarget.dataset
  457. var photo = list || []
  458. wx.previewImage({
  459. current: photo[0],
  460. urls: photo
  461. });
  462. },
  463. /**复制文本 */
  464. onCopy(e) {
  465. let {
  466. text
  467. } = e.currentTarget.dataset
  468. wx.setClipboardData({
  469. data: text,
  470. success: function (res) {
  471. wx.getClipboardData({
  472. success: function (res) {
  473. wx.showToast({
  474. title: '复制成功',
  475. })
  476. }
  477. })
  478. }
  479. })
  480. },
  481. /**
  482. * 生命周期函数--监听页面初次渲染完成
  483. */
  484. onReady() {
  485. },
  486. /**
  487. * 生命周期函数--监听页面显示
  488. */
  489. onShow() {
  490. },
  491. /**
  492. * 生命周期函数--监听页面隐藏
  493. */
  494. onHide() {
  495. },
  496. /**
  497. * 生命周期函数--监听页面卸载
  498. */
  499. onUnload() {
  500. },
  501. /**
  502. * 页面相关事件处理函数--监听用户下拉动作
  503. */
  504. onPullDownRefresh() {
  505. },
  506. /**
  507. * 页面上拉触底事件的处理函数
  508. */
  509. onReachBottom() {
  510. this.getOrder()
  511. },
  512. /**
  513. * 用户点击右上角分享
  514. */
  515. onShareAppMessage() {
  516. }
  517. })