index.js 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. // nova-tourism/components/collect/index.js
  2. let Parse = getApp().Parse;
  3. const company = getApp().globalData.company
  4. const uid = Parse.User.current()?.id
  5. const req = require('../../../utils/request')
  6. Component({
  7. /**
  8. * 组件的属性列表
  9. */
  10. properties: {
  11. },
  12. /**
  13. * 组件的初始数据
  14. */
  15. data: {
  16. taps: [{
  17. id: 'gift',
  18. top:900,
  19. url: 'https://file-cloud.fmode.cn/EbxZUK5lBI/20241230/r1kr6b044821198.png',
  20. tex: '望仙礼遇',
  21. },
  22. {
  23. id: 'makeup',
  24. url: 'https://file-cloud.fmode.cn/EbxZUK5lBI/20241230/r1on6t044840728.png',
  25. tex: '妆造旅拍',
  26. },
  27. {
  28. id: 'vegetable',
  29. url: 'https://file-cloud.fmode.cn/EbxZUK5lBI/20241230/v16vb1044858389.png',
  30. tex: '望仙果蔬',
  31. },
  32. {
  33. id: 'serve',
  34. url: 'https://file-cloud.fmode.cn/EbxZUK5lBI/20241230/dm2ol9044926231.png',
  35. tex: '房务服务',
  36. },
  37. {
  38. id: 'school',
  39. url: 'https://file-cloud.fmode.cn/EbxZUK5lBI/20241231/1pglm9032750560.png',
  40. tex: '商学院',
  41. },
  42. ],
  43. imageUrls: ['https://img95.699pic.com/photo/60072/5330.jpg_wh860.jpg',
  44. 'https://c-ssl.dtstatic.com/uploads/blog/201409/27/20140927230814_4QfVC.thumb.1000_0.jpeg',
  45. 'https://ts1.cn.mm.bing.net/th/id/R-C.37f4077f8eaca918401b84b4ee23af7c?rik=7HYWC88a9q4sZw&riu=http%3a%2f%2fpic.616pic.com%2fphotoone%2f00%2f06%2f03%2f618e27ad7ce8e1124.jpg&ehk=jkc6iZWAg%2bAEjAk6%2br0VAAy1lfffqslT6n%2fMWl293Yc%3d&risl=&pid=ImgRaw&r=0'
  46. ],
  47. date_start: '',
  48. date_end: '',
  49. start: '',
  50. end: '',
  51. istoday: true,
  52. daysBetween: 1,
  53. currentTab: 0, // 云上风物/我的收藏
  54. banner: [], //热门推荐
  55. giftBanner: [], //望仙礼遇-轮播图
  56. gift: [], //望仙礼遇-商品
  57. },
  58. lifetimes: {
  59. detached: function () {},
  60. attached: async function () {
  61. this.gethomestar()
  62. this.getcurrentdate()
  63. this.refersh()
  64. },
  65. },
  66. /**
  67. * 组件的方法列表
  68. */
  69. methods: {
  70. refersh() {
  71. this.getBanner()
  72. this.getGiftBanner()
  73. this.getGift()
  74. },
  75. /**切换 云上风物/我的收藏 */
  76. switchTab(e) {
  77. const index = e.currentTarget.dataset.index;
  78. this.setData({
  79. currentTab: index
  80. });
  81. },
  82. /**获取热门推荐 */
  83. async getBanner() {
  84. let query = new Parse.Query('Banner')
  85. query.equalTo('company', company)
  86. query.notEqualTo('isDeleted', true)
  87. query.equalTo('isEnabled', true)
  88. query.equalTo('type', 'season')
  89. query.include('shopGoods')
  90. let d = await query.find()
  91. let banner = []
  92. banner = d?.map(item => {
  93. let obj = {}
  94. obj.image = item?.get('image') || item?.get('shopGoods')?.get('image')
  95. // obj.url = item?.get('url')||`/nova-tourism/pages/collect/collect-detail/index?gid=${item?.get('shopGoods')?.id}`
  96. if (item?.get('url')) {
  97. obj.url = item?.get('url')
  98. } else if (item?.get('shopGoods')?.id) {
  99. obj.url = `/nova-tourism/pages/collect/collect-detail/index?gid=${item?.get('shopGoods')?.id}`
  100. } else {
  101. obj.url = ''
  102. }
  103. return obj
  104. })
  105. this.setData({
  106. banner
  107. })
  108. },
  109. /**获取望仙礼遇-轮播图 */
  110. async getGiftBanner() {
  111. let sql = `SELECT good."objectId",good."image"
  112. FROM "ShopGoods" good
  113. WHERE good."company" = '${company}'
  114. AND good."isDeleted" IS NOT TRUE
  115. AND good."status" IS TRUE
  116. ORDER BY COALESCE(good."isRecom", FALSE) DESC,
  117. CASE WHEN good."top"= 0 THEN 1 ELSE 0 END,
  118. good."top" ASC
  119. LIMIT 8`
  120. let giftBanner = await req.customSQL(sql) || []
  121. this.setData({
  122. giftBanner
  123. })
  124. console.log(giftBanner)
  125. },
  126. /** 获取望仙礼遇-商品*/
  127. async getGift() {
  128. let sql = `SELECT good."objectId",good."name",good."price",good."image"
  129. FROM "ShopGoods" good
  130. WHERE good."company" = '${company}'
  131. AND good."isDeleted" IS NOT TRUE
  132. AND good."status" IS TRUE
  133. ORDER BY COALESCE(good."isHome", FALSE) DESC,
  134. CASE WHEN good."top"= 0 THEN 1 ELSE 0 END,
  135. good."top" ASC,good."createdAt"
  136. LIMIT 4`
  137. let gift = await req.customSQL(sql) || []
  138. console.log(gift)
  139. this.setData({
  140. gift
  141. })
  142. },
  143. /**锚点跳转 */
  144. anchors(e) {
  145. let {
  146. top
  147. } = e.currentTarget.dataset
  148. wx.pageScrollTo({
  149. scrollTop:top,
  150. duration: 300
  151. });
  152. },
  153. //获取收藏店铺消息
  154. async gethomestar() {
  155. const currentUser = Parse.User.current();
  156. console.log(currentUser);
  157. let ShopStore = new Parse.Query('DramaShopCollect');
  158. ShopStore.equalTo('company', company);
  159. ShopStore.equalTo('user', currentUser.id);
  160. ShopStore.equalTo('isCollect', 'true');
  161. ShopStore.notEqualTo('isDeleted', "true");
  162. ShopStore.include('homestayStore');
  163. let store = await ShopStore.find();
  164. let storeList = store.map(item => item.toJSON());
  165. this.setData({
  166. storeList
  167. });
  168. console.log('123', this.data.storeList);
  169. },
  170. //点击取消
  171. async cancle(e) {
  172. const object = e.currentTarget.dataset.id
  173. const currentUser = Parse.User.current();
  174. let Collect = new Parse.Query('DramaShopCollect');
  175. Collect.equalTo('company', company);
  176. Collect.equalTo('user', currentUser.id);
  177. Collect.equalTo('isCollect', true);
  178. Collect.equalTo('homestayStore', object);
  179. Collect.notEqualTo('isDeleted', "true");
  180. let collect = await Collect.first();
  181. await this.changeiscollect(object)
  182. if (collect) {
  183. collect.set('isCollect', false)
  184. try {
  185. let saveDate = await collect.save();
  186. console.log(saveDate);
  187. console.log("取消成功");
  188. } catch (error) {
  189. console.error("保存数据时出现错误:", error);
  190. }
  191. }
  192. },
  193. // 点击收藏后把storeList中对应的isCollect变成true
  194. changeiscollect(objectId) {
  195. // 创建一个新的 storeList 数组,以确保视图更新
  196. const updatedStoreList = this.data.storeList.map(item => {
  197. if (item.homestayStore.objectId === objectId) {
  198. return {
  199. ...item,
  200. isCollect: !item.isCollect // 切换 iscollect 的值
  201. };
  202. }
  203. return item; // 返回未修改的项
  204. });
  205. // 更新 storeList
  206. this.setData({
  207. storeList: updatedStoreList
  208. });
  209. console.log('修改成功', objectId);
  210. },
  211. //转换日期
  212. formatDate(date) {
  213. date = new Date(date);
  214. return `${date.getMonth() + 1}月${date.getDate()}日`;
  215. },
  216. //获取今日明日日期
  217. getcurrentdate() {
  218. const today = new Date();
  219. const tomorrow = new Date();
  220. tomorrow.setDate(today.getDate() + 1);
  221. this.setData({
  222. date_start: this.formatDate(today),
  223. date_end: this.formatDate(tomorrow),
  224. start: today,
  225. end: tomorrow
  226. });
  227. console.log(this.data.start, this.data.end);
  228. },
  229. //去收藏商铺
  230. gourl(e) {
  231. const url = e.currentTarget.dataset.url;
  232. const id = e.currentTarget.dataset.id;
  233. // 构造要传递的信息
  234. const info = {
  235. objectId: id,
  236. date_start: this.data.date_start,
  237. date_end: this.data.date_end,
  238. daysBetween: this.data.daysBetween,
  239. istoday: this.data.istoday,
  240. start: this.data.start,
  241. end: this.data.end
  242. };
  243. // 将信息转为查询字符串
  244. const queryString = Object.keys(info)
  245. .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(info[key])}`)
  246. .join('&');
  247. // 使用查询字符串跳转
  248. wx.navigateTo({
  249. url: `${url}?${queryString}`,
  250. });
  251. },
  252. /** 跳转*/
  253. tourl(e) {
  254. const url = e.currentTarget.dataset.url
  255. wx.navigateTo({
  256. url: `${url}` // 目标页面的路径
  257. });
  258. },
  259. }
  260. })