index.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. // nova-tourism/pages/my/my-order/my-refund/refund-good/refund-express/index.js
  2. let Parse = getApp().Parse;
  3. const company = getApp().globalData.company
  4. const uid = Parse.User.current()?.id
  5. const dateF = require("../../../../../../../utils/date")
  6. const qiniuUploader = require("../../../../../../../utils/qiniuUploader");
  7. Page({
  8. /**
  9. * 页面的初始数据
  10. */
  11. data: {
  12. order: null, //订单
  13. expressNum: null, //快递单号
  14. isShowExpress: false, //快递公司弹框
  15. expVal: '', //快递公司搜索关键字
  16. timeout: null, //搜索框计时器
  17. expComList: [], //快递公司列表
  18. checkExp: null, //选中的公司
  19. },
  20. /**
  21. * 生命周期函数--监听页面加载
  22. */
  23. onLoad(options) {
  24. let {
  25. oid
  26. } = options
  27. console.log(options)
  28. this.setData({
  29. oid
  30. })
  31. this.getOrder()
  32. },
  33. /**提交 */
  34. async submit() {
  35. let {
  36. expressNum,order,checkExp
  37. } = this.data
  38. console.log(expressNum)
  39. if(order.way!='店内退换') {
  40. if(!expressNum){
  41. wx.showToast({
  42. title: '请填写快递单号',
  43. icon:'none'
  44. })
  45. return
  46. }
  47. if(!checkExp?.objectId){
  48. wx.showToast({
  49. title: '请选择快递公司',
  50. icon:'none'
  51. })
  52. return
  53. }
  54. }else{
  55. wx.showToast({
  56. title: '请前往店内退换',
  57. icon:'none'
  58. })
  59. return
  60. }
  61. let content = `退换方式:${order.way}。原因:${order.cause}。描述:${order.text}。快递公司:${checkExp.name}。快递公司代码:${checkExp.code}。快递单号:${expressNum}。`
  62. let query = new Parse.Query('Order')
  63. let o = await query.get(order.objectId)
  64. o.set('content',content)
  65. await o.save()
  66. await wx.showToast({
  67. title: '提交成功,等待商家收货。',
  68. icon: 'none'
  69. })
  70. setTimeout(() => {
  71. wx.navigateBack({
  72. delta: 1,
  73. })
  74. }, 800);
  75. },
  76. /**确认退款 */
  77. async submit02(){
  78. let {
  79. order
  80. } = this.data
  81. let query = new Parse.Query('Order')
  82. let o = await query.get(order.objectId)
  83. o.set('status','700')
  84. await o.save()
  85. await wx.showToast({
  86. title: '操作成功',
  87. icon: 'success'
  88. })
  89. setTimeout(() => {
  90. wx.navigateBack({
  91. delta: 1,
  92. })
  93. }, 800);
  94. },
  95. /**获取订单 */
  96. async getOrder() {
  97. let {
  98. oid,expressNum,checkExp
  99. } = this.data
  100. let query = new Parse.Query('Order')
  101. query.include('targetObject', 'store', 'store.user')
  102. let d = await query.get(oid)
  103. let order = d?.toJSON()
  104. console.log(order)
  105. let parts = order?.content?.split('。')
  106. order.way = parts[0]?.split(':')[1]
  107. order.cause = parts[1]?.split(':')[1]
  108. order.text = parts[2]?.split(':')[1]
  109. let exp_name = parts[3]?.split(':')[1]||''
  110. let exp_code = parts[4]?.split(':')[1]||''
  111. expressNum = parts[5]?.split(':')[1]||''
  112. if(exp_name&&exp_code){
  113. let exp_query = new Parse.Query('ExpressCompany')
  114. exp_query.equalTo('name',exp_name)
  115. exp_query.equalTo('code',exp_code)
  116. let e = await exp_query.first()
  117. if(e?.id) checkExp = e.toJSON()
  118. }
  119. this.setData({
  120. order,
  121. orderParse: d,expressNum,checkExp
  122. })
  123. },
  124. closeExpress() {
  125. this.setData({
  126. isShowExpress: false
  127. });
  128. },
  129. openExpress() {
  130. this.getPointerItem()
  131. this.setData({
  132. isShowExpress: true
  133. });
  134. },
  135. /**指针搜索框变化 */
  136. async valChange(e) {
  137. await this.setData({
  138. expVal: e.detail || ''
  139. })
  140. let {
  141. timeout
  142. } = this.data
  143. clearTimeout(timeout)
  144. timeout = setTimeout(async () => {
  145. await this.setData({
  146. expComList: [],
  147. })
  148. this.getPointerItem()
  149. }, 1000);
  150. this.setData({
  151. timeout
  152. })
  153. },
  154. /**选中快递公司 */
  155. checkPointer(e) {
  156. let {
  157. index
  158. } = e.currentTarget.dataset
  159. let {
  160. expComList
  161. } = this.data
  162. this.setData({
  163. checkExp: expComList[index]
  164. })
  165. this.closeExpress()
  166. },
  167. /** 查询快递公司*/
  168. async getPointerItem() {
  169. let {
  170. expVal,
  171. expComList
  172. } = this.data
  173. let query = new Parse.Query('ExpressCompany')
  174. query.contains('name', expVal)
  175. query.limit(30)
  176. query.skip(expComList?.length || 0)
  177. let d = await query.find()
  178. let list = d?.map(item => item.toJSON())
  179. this.setData({
  180. expComList: [...(expComList || []), ...(list || [])]
  181. })
  182. },
  183. /**查看图片 */
  184. previewImage(e) {
  185. let {
  186. src,
  187. urls
  188. } = e.currentTarget.dataset
  189. wx.previewImage({
  190. current: src, // 当前显示图片的http链接
  191. urls: urls || [] // 需要预览的图片http链接列表
  192. })
  193. },
  194. /** 复制*/
  195. copyStr(e) {
  196. let {
  197. str
  198. } = e.currentTarget.dataset
  199. if (str) {
  200. wx.setClipboardData({
  201. data: str,
  202. success: () => {
  203. wx.showToast({
  204. title: '复制成功',
  205. icon: 'success',
  206. });
  207. },
  208. fail: (err) => {
  209. console.error('复制失败:', err);
  210. wx.showToast({
  211. title: '复制失败',
  212. icon: 'none',
  213. duration: 2000
  214. });
  215. }
  216. });
  217. } else {
  218. wx.showToast({
  219. title: '复制失败',
  220. icon: 'none',
  221. duration: 2000
  222. });
  223. }
  224. },
  225. /**
  226. * 生命周期函数--监听页面初次渲染完成
  227. */
  228. onReady() {
  229. },
  230. /**
  231. * 生命周期函数--监听页面显示
  232. */
  233. onShow() {
  234. },
  235. /**
  236. * 生命周期函数--监听页面隐藏
  237. */
  238. onHide() {
  239. },
  240. /**
  241. * 生命周期函数--监听页面卸载
  242. */
  243. onUnload() {
  244. },
  245. /**
  246. * 页面相关事件处理函数--监听用户下拉动作
  247. */
  248. onPullDownRefresh() {
  249. },
  250. /**
  251. * 页面上拉触底事件的处理函数
  252. */
  253. onReachBottom() {
  254. },
  255. /**
  256. * 用户点击右上角分享
  257. */
  258. onShareAppMessage() {
  259. }
  260. })