You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1561 lines
40 KiB

6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
  1. <template>
  2. <view class="home-content">
  3. <NewUserCoupon @close="closeNewUserPopup" @getCoupon="handleGetCoupon"></NewUserCoupon>
  4. <view class="banner">
  5. <uni-swiper-dot class="uni-swiper-dot-box" field="content">
  6. <swiper class="swiper" indicator-dots indicator-color="rgba(255, 255, 255, 0.50)"
  7. indicator-active-color="#ffffff" autoplay interval="5000">
  8. <swiper-item v-for="(item,i) in bannerList" :key="i">
  9. <image :src="item&&item.dictValue" style="width: 100%;" mode="widthFix" />
  10. </swiper-item>
  11. </swiper>
  12. </uni-swiper-dot>
  13. </view>
  14. <view style="margin: -250px 20rpx 0 20rpx;"
  15. @click="toProductDetail">
  16. <image style="width: 710rpx; height: 176rpx;" slot='cover'
  17. src="https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/petServiceOrder/TopDetail.png" />
  18. </view>
  19. <view class="card-container">
  20. <uni-card :is-shadow="false" padding="40rpx 20rpx 40rpx 20rpx" margin="20rpx">
  21. <view class="normal-bolb-text">
  22. <view @click="getLocationInfo"
  23. style="display: flex; align-items: center; justify-content: space-between;">
  24. <text v-if="isCheckLocation"
  25. style="color: #333333 ;font-size: 32rpx;font-weight: 600; font-style: normal; width: 450rpx; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">{{locationName}}</text>
  26. <text v-else
  27. style="color: #C4C4C4 ;font-size: 32rpx;font-weight: 500; font-style: normal;">请选择宠物上门服务地址</text>
  28. <uni-icons type="location-filled" size="20" color="#FFB13F"></uni-icons>
  29. </view>
  30. </view>
  31. <view class="line" style="background-color: #EFEFEF;"></view>
  32. <view class="content-container">
  33. <view class="example-body hideOnPc">
  34. <view class="normal-bolb-text">
  35. <view @click="toggleCalendar('bottom')">
  36. <view v-if="isCheckTime"
  37. style="display: flex; align-items: center; justify-content: space-between;">
  38. <text
  39. style="color: #333333 ;font-size: 32rpx;font-weight: 600; font-style: normal; width: 450rpx; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">{{selectedDateShowText}}</text>
  40. <text
  41. style="color: #333333 ;font-size: 32rpx;font-weight: 600; font-style: normal;">共选择
  42. <text style="color: #FFB13F;">{{selectedDate.length}}</text>
  43. </text>
  44. </view>
  45. <view v-else
  46. style="display: flex; align-items: center; justify-content: space-between;">
  47. <text
  48. style="color: #C4C4C4 ;font-size: 32rpx;font-weight: 500; font-style: normal;">请选择宠物上门服务时间</text>
  49. <uni-icons type="right" size="20" color="#FFB13F"></uni-icons>
  50. </view>
  51. </view>
  52. </view>
  53. </view>
  54. <view>
  55. <uni-popup ref="popup" background-color="#fff" @change="changePopup">
  56. <view class="popupBottom">
  57. <uni-calendar ref="calendar" class="uni-calendar--hook" :selected="selectedDate"
  58. :startDate="startDate" :endDate="endDate" :showMonth="false"
  59. @change="changeCalendar" @confirm="changeCalendar" @close="close" />
  60. <view style="display: flex; justify-content: center; align-items: center;">
  61. <image @click="closePopup" style="width: 670rpx; height: 80rpx;" slot='cover' src="https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/petServiceOrder/yesButton.png" />
  62. </view>
  63. </view>
  64. </uni-popup>
  65. </view>
  66. </view>
  67. <view class="line" style="background-color: #EFEFEF;"></view>
  68. <view>
  69. <view style="display: flex;">
  70. <view @click="getOrder(true)" style="margin-right: 20rpx;">
  71. <image style="width: 304rpx; height: 100rpx;" slot='cover'
  72. src="https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/petServiceOrder/OrderByCompanion.png" />
  73. </view>
  74. <view @click="getOrder(false)">
  75. <image style="width: 304rpx; height: 100rpx;"
  76. src="https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/petServiceOrder/OrderBySystem.png" />
  77. </view>
  78. </view>
  79. </view>
  80. </uni-card>
  81. </view>
  82. <view class="coupon-list">
  83. <uni-card :is-shadow="false" padding=0 margin="10px">
  84. <view class="coupon-title" slot="title">
  85. <view class="coupon-title-left">
  86. <view class="coupon-flag"></view>
  87. <view>领券中心</view>
  88. </view>
  89. <view class="coupon-title-right">
  90. <view @click="getAllCoupon">
  91. 更多 <uni-icons type="right" size="14px" color="#AAAAAA"></uni-icons>
  92. </view>
  93. </view>
  94. </view>
  95. <view class="split-line"></view>
  96. <view class="coupon-content">
  97. <CouponItem
  98. v-for="(item,index) in couponData"
  99. :key="index"
  100. :couponData="item"
  101. @show-rule="showRulePopup"
  102. @coupon-received="handleCouponReceived"
  103. @update-coupon="updateCouponData"
  104. />
  105. </view>
  106. </uni-card>
  107. </view>
  108. <view class="companion-list">
  109. <uni-card :is-shadow="false" padding=0 margin="10px">
  110. <view class="companion-title" slot="title">
  111. <view class="companion-title-left">
  112. <view class="companion-flag"></view>
  113. <view>周边伴宠师</view>
  114. </view>
  115. <view class="companion-title-right" @click="getAllCompanion">
  116. <view>
  117. 更多 <uni-icons type="right" size="14px" color="#AAA"></uni-icons>
  118. </view>
  119. </view>
  120. </view>
  121. <view class="split-line"></view>
  122. <view class="companion-content"
  123. v-for="(item,index) in companionList" :key="index"
  124. v-if="index < 1">
  125. <view class="companion-item">
  126. <view class="companion-info">
  127. <image class="companion-img" slot='cover'
  128. :src="item.userImage">
  129. </image>
  130. <view class="companion-info-1">
  131. <view class="companion-info-2">
  132. <view class="companion-info-title">
  133. <view class="companion-name">
  134. {{ item.userName || '匿名' }}
  135. </view>
  136. <view class="companion-sex">
  137. <img :src="item.appletUsersTeacher.sex == 0?'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/pet/sex_m.png':
  138. 'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/pet/sex_f.png'" alt="sex"
  139. style="width: 20px;height: 20px;" />
  140. </view>
  141. </view>
  142. <view class="companion-info-star">
  143. <text style="color: #FFB13F;">点赞数{{ item.appletUsersTeacher.thumbsUp || 0 }}</text>
  144. <uni-icons type="hand-up-filled" size="20" color="#FFB13F"></uni-icons>
  145. </view>
  146. </view>
  147. <view class="companion-info-3" style="width: 100%;">
  148. <view class="ellipsis" v-if="item.distanceText">
  149. 距离{{ item.distanceText }}km
  150. </view>
  151. <view class="ellipsis" v-else>
  152. {{ '<' }}1km
  153. </view>
  154. </view>
  155. <view class="companion-info-4" style="width: 100%;">
  156. <view class="ellipsis" style="max-width: 225px;">
  157. 简介{{ item.appletUsersTeacher.userBrief || '暂无' }}
  158. </view>
  159. </view>
  160. </view>
  161. </view>
  162. </view>
  163. <view>
  164. <view class="companion-item-bottom">
  165. <text class="companion-item-bottom-text">养宠{{ item.experience || 0 }} | 评价{{ item.commentNum || 0 }} | 服务小结{{ item.serviceSummaryNum || 0 }}</text>
  166. </view>
  167. </view>
  168. </view>
  169. <view class="no-data" v-if="companionList.length == 0">
  170. <view class="no-data-text">
  171. 您周边没有伴宠师呢
  172. </view>
  173. </view>
  174. </uni-card>
  175. </view>
  176. <view class="history-record">
  177. <uni-card :is-shadow="false" padding=0 margin="10px">
  178. <view class="history-record-title" slot="title">
  179. <view class="history-record-title-left">
  180. <view class="history-record-flag"></view>
  181. <view>历史记录</view>
  182. </view>
  183. <!-- <view class="history-record-title-right">
  184. <view @click="getAllRecord">
  185. 查看服务记录和评价详情 <uni-icons type="right" size="14px" color="#AAAAAA"></uni-icons>
  186. </view>
  187. </view> -->
  188. </view>
  189. <view class="split-line"></view>
  190. <view class="history-record-content">
  191. <view class="history-record-content-image">
  192. <view class="history-record-content-image-1">
  193. <view class="history-record-content-image-1-text">
  194. <view class="history-record-content-image-1-text-1">{{historyRecord.dog}}</view>
  195. <view class="history-record-content-image-1-text-2">{{historyRecord.dogTime}}</view>
  196. </view>
  197. </view>
  198. <view class="history-record-content-image-2">
  199. <view class="history-record-content-image-2-text">
  200. <view class="history-record-content-image-2-text-1">{{historyRecord.cat}}</view>
  201. <view class="history-record-content-image-2-text-2">至2{{historyRecord.catTime}}</view>
  202. </view>
  203. </view>
  204. <view class="history-record-content-image-3">
  205. <view class="history-record-content-image-3-text">
  206. <view class="history-record-content-image-3-text-1">{{historyRecord.num}}</view>
  207. <view class="history-record-content-image-3-text-2">{{historyRecord.numTime}}</view>
  208. </view>
  209. </view>
  210. </view>
  211. <view class="history-record-content-text">
  212. <text>*数据来源于猫妈狗爸平台</text>
  213. </view>
  214. </view>
  215. </uni-card>
  216. </view>
  217. <view class="service-content">
  218. <image src="https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/second_stage/ysbz.png"
  219. style="width: 100%;" mode="widthFix" alt="service" />
  220. </view>
  221. <!-- <view class="card-container">
  222. <uni-card :is-shadow="false" padding="0px" margin="10px">
  223. <view class="title-img4"></view>
  224. <uni-row class="demo-uni-row">
  225. <uni-col :span="12" v-for="(item,index) in peopleList" :key="index">
  226. <uni-card :is-shadow="false" margin="5px" padding="0" spacing="0" :border="false"
  227. shadow="0px 0px 0px 0px rgba(0, 0, 0, 0.08)">
  228. <image class="people-img" slot='cover' style="width: 100%;"
  229. :src="item&&item.staffImages&&item.staffImages.length>0?item.staffImages[0].url:defaultStaffIamge">
  230. </image>
  231. <text class="people-year">{{item.serviceAge}}年从业经验</text>
  232. <text class="show-text-1">姓名{{item.nickName}}</text>
  233. <text class="show-text-2">简介{{item.shortDescription}}</text>
  234. </uni-card>
  235. </uni-col>
  236. </uni-row>
  237. </uni-card>
  238. </view> -->
  239. <view>
  240. <image style="height: 132rpx; width: 710rpx; margin: 0 20rpx 20rpx 20rpx;"
  241. slot='cover'
  242. @click="toPetFront"
  243. src="https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/petServiceOrder/joinus.png" />
  244. </view>
  245. <Kefu></Kefu>
  246. <!-- <view class="coupon_wrap" v-if="envVersion.includes('dev')">
  247. <view class="details-subscribe">
  248. <view @click="getCoupon" class="details-btn">点击领取到卡包</view>
  249. </view>
  250. <view v-if="showMask" @closeMask="closeMask">
  251. <view class="mask-coupon" @click="closeMask">
  252. <view class="wx-coupon">
  253. <view class="title">
  254. 领取优惠券
  255. <i>*</i>
  256. </view>
  257. <view class="content">
  258. 优惠券列表显示
  259. </view>
  260. <view class="" v-for="(item,index) in couponList" :key="index">
  261. <send-coupon @sendcoupon="getSendCoupon" @userconfirm="redirectuser" :sign="item.sign"
  262. :send_coupon_params="item.sendCouponParams"
  263. :send_coupon_merchant="item.send_coupon_merchant">
  264. <view class="text-button">{{item.wechatStock.stockName}}</view>
  265. </send-coupon>
  266. </view>
  267. </view>
  268. </view>
  269. </view>
  270. </view> -->
  271. <!-- 优惠券详细规则弹窗 -->
  272. <CouponRulePopup ref="rulePopup" :coupon="currentCoupon" />
  273. </view>
  274. </template>
  275. <script>
  276. import {
  277. getStaffList,
  278. getProductList,
  279. getBannerList,
  280. getCouponList,
  281. getCouponListNoAuth,
  282. getOpenId,
  283. } from "@/api/system/user"
  284. import {
  285. setToken,
  286. getToken,
  287. getOpenIdKey,
  288. setOpenIdKey
  289. } from '@/utils/auth'
  290. // import { getTeacherListIndex } from '@/api/home'
  291. import {
  292. getTeacherList,
  293. } from "@/api/order/order"
  294. import Kefu from './common/kefu.vue'
  295. import uniPopup from '@/uni_modules/uni-popup/components/uni-popup/uni-popup.vue';
  296. import NewUserCoupon from './components/NewUserCoupon.vue';
  297. import CouponItem from '@/components/CouponItem/index.vue';
  298. import CouponRulePopup from '@/components/CouponRulePopup/index.vue';
  299. import positionMixin from '@/mixins/position.js';
  300. import {getPhoneNumber} from "@/api/system/user.js"
  301. export default {
  302. mixins: [positionMixin],
  303. data() {
  304. return {
  305. current: 0,
  306. swiperDotIndex: 0,
  307. defaultSkuImage: 'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/banner/%E5%96%82%E5%85%BB.png',
  308. defaultStaffIamge: 'https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/banner/gold_people.png',
  309. defaultLink: '/pages/details/feed',
  310. skuData: [],
  311. peopleList: [],
  312. cover: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/shuijiao.jpg',
  313. bannerList: [],
  314. couponList: [],
  315. showMask: false,
  316. envVersion: 'develop',
  317. isNewUser: false,
  318. selectedDate: [],
  319. startDate: '',
  320. endDate: '',
  321. isCheckTime: false,
  322. selectedDateShowText: '',
  323. isCheckLocation: false,
  324. locationName: '',
  325. locationLatitude: '',
  326. locationLongitude: '',
  327. locationAddress: '',
  328. allInfo: {
  329. isCheckLocation: false,
  330. locationName: '',
  331. locationLatitude: '',
  332. locationLongitude: '',
  333. locationAddress: '',
  334. selectedDate: [],
  335. isCheckTime: false,
  336. selectedDateShowText: '',
  337. },
  338. defaultCompanion: {
  339. name: '宠小二',
  340. gender: 0,
  341. star: 560,
  342. distance: 1.5,
  343. shortDescription: '有一只三岁蓝猫叫憨憨,热爱小宠物,心地善良,喜欢动物',
  344. staffImages: [{
  345. url: "https://catmdogf.oss-cn-shanghai.aliyuncs.com/2024/01/2634af25c5bf294f39b795ecc9d3c4eefa微信图片_20240126125100.png"
  346. }],
  347. year: 4,
  348. record: 11,
  349. serviceNum: 13,
  350. },
  351. couponData: [],
  352. historyRecord: {
  353. dog: "47131",
  354. dogTime: "2024.12.12",
  355. cat: "47131",
  356. catTime: "2024.12.12",
  357. num: "47131",
  358. numTime: "2024.12.12",
  359. },
  360. currentCoupon: null,
  361. companionList: [],
  362. isMember: false,
  363. }
  364. },
  365. components: {
  366. Kefu,
  367. uniPopup,
  368. NewUserCoupon,
  369. CouponItem,
  370. CouponRulePopup
  371. },
  372. mounted() {
  373. this.getCalendarDate();
  374. this.checkNewUser();
  375. },
  376. methods: {
  377. checkNewUser() {
  378. const isFirstVisit = !uni.getStorageSync('hasVisited');
  379. if (isFirstVisit) {
  380. this.isNewUser = true;
  381. uni.setStorageSync('hasVisited', true);
  382. }
  383. },
  384. closeNewUserPopup() {
  385. this.isNewUser = false;
  386. },
  387. handleGetCoupon() {
  388. if (getToken()) {
  389. } else {
  390. uni.navigateTo({
  391. url: '/pages/personalCenter/index'
  392. });
  393. }
  394. },
  395. getAllCoupon() {
  396. uni.navigateTo({
  397. url: '/pages_order/companionPetList/couponList'
  398. });
  399. },
  400. getAllCompanion() {
  401. if (!this.isCheckLocation) {
  402. uni.showToast({
  403. title: '请先选择地址',
  404. duration: 1500,
  405. icon: "none"
  406. })
  407. } else {
  408. uni.navigateTo({
  409. url: `/pages_order/companionPetList/companionPetList?info=` + encodeURIComponent(JSON
  410. .stringify(this.allInfo))
  411. });
  412. }
  413. },
  414. toProductDetail(){
  415. uni.switchTab({
  416. url: 'details/feed'
  417. })
  418. },
  419. getAllRecord () {
  420. },
  421. toggleCalendar(type) {
  422. this.type = type
  423. uni.hideTabBar()
  424. this.$refs.popup.open(type)
  425. },
  426. closePopup() {
  427. this.$refs.popup.close()
  428. setTimeout(() => {
  429. uni.showTabBar()
  430. }, 300)
  431. },
  432. changePopup(e) {
  433. console.log('当前模式:' + e.type + ',状态:' + e.show);
  434. if (e.show) {
  435. uni.hideTabBar()
  436. } else {
  437. setTimeout(() => {
  438. uni.showTabBar()
  439. }, 300)
  440. }
  441. },
  442. close() {
  443. console.log('弹窗关闭');
  444. },
  445. confirm(e) {
  446. console.log('confirm 返回:', e)
  447. },
  448. changeCalendar(e) {
  449. console.log('change 返回:', e)
  450. this.selectedDateShowText = ''
  451. const selectedValue = this.selectedDate.find(item => item.date === e.fulldate)
  452. console.log('const selectedValue', selectedValue)
  453. if (selectedValue) {
  454. this.selectedDate = this.selectedDate.filter(item => item.date !== e.fulldate);
  455. this.allInfo.selectedDate = this.selectedDate;
  456. } else {
  457. this.selectedDate.push({
  458. date: e.fulldate,
  459. info: 'time'
  460. })
  461. this.allInfo.selectedDate = this.selectedDate
  462. console.log('this.selectedDate', this.selectedDate)
  463. }
  464. console.log("this.selectedDate.length", this.selectedDate.length)
  465. console.log("this.selectedDate", this.selectedDate)
  466. if (this.selectedDate.length > 0) {
  467. this.isCheckTime = true
  468. this.allInfo.isCheckTime = this.isCheckTime
  469. if (this.selectedDate.length == 1) {
  470. this.selectedDateShowText = this.selectedDate[0].date + ''
  471. this.selectedDateShowText = this.selectedDateShowText.replace(/-/g, "/");
  472. this.allInfo.selectedDateShowText = this.selectedDateShowText
  473. } else if (this.selectedDate.length == 2) {
  474. this.selectedDateShowText = this.selectedDate[0].date + "," + this.selectedDate[1].date
  475. this.selectedDateShowText = this.selectedDateShowText.replace(/-/g, "/");
  476. this.allInfo.selectedDateShowText = this.selectedDateShowText
  477. } else if (this.selectedDate.length > 2) {
  478. this.selectedDateShowText = this.selectedDate[0].date + '...' + this.selectedDate[this.selectedDate
  479. .length - 1].date
  480. this.selectedDateShowText = this.selectedDateShowText.replace(/-/g, "/");
  481. this.allInfo.selectedDateShowText = this.selectedDateShowText
  482. }
  483. } else {
  484. this.isCheckTime = false
  485. this.allInfo.isCheckTime = this.isCheckTime
  486. }
  487. },
  488. getCalendarDate() {
  489. let tomorrow = new Date()
  490. tomorrow.setDate(tomorrow.getDate() + 2);
  491. this.startDate = this.formatDate(tomorrow);
  492. let threeMonthsLater = new Date();
  493. threeMonthsLater.setMonth(threeMonthsLater.getMonth() + 3);
  494. this.endDate = this.formatDate(threeMonthsLater);
  495. },
  496. formatDate(date) {
  497. let year = date.getFullYear();
  498. let month = (date.getMonth() + 1).toString().padStart(2, '0');
  499. let day = date.getDate().toString().padStart(2, '0');
  500. return year + '-' + month + '-' + day;
  501. },
  502. getLocationInfo() {
  503. wx.chooseLocation({
  504. type: 'gcj02',
  505. success: (res) => {
  506. this.isCheckLocation = true
  507. this.locationName = res.address
  508. this.locationLongitude = res.longitude
  509. this.locationLatitude = res.latitude
  510. this.locationAddress = res.address
  511. console.log('选择的位置:', res);
  512. this.allInfo.isCheckLocation = true
  513. this.allInfo.locationName = res.address
  514. this.allInfo.locationLongitude = res.longitude
  515. this.allInfo.locationLatitude = res.latitude
  516. this.allInfo.locationAddress = res.address
  517. // 保存位置信息到Vuex
  518. this.$store.commit('setPosition', {
  519. address: res.address,
  520. longitude: res.longitude,
  521. latitude: res.latitude
  522. });
  523. // 获取周边伴宠师
  524. this.getCompanionList();
  525. },
  526. fail: (err) => {
  527. console.error('选择位置失败:', err);
  528. }
  529. });
  530. },
  531. getLocationFirst() {
  532. wx.chooseLocation({
  533. type: 'gcj02',
  534. success: (res) => {
  535. this.isCheckLocation = true
  536. this.locationName = res.address
  537. this.locationLongitude = res.longitude
  538. this.locationLatitude = res.latitude
  539. this.locationAddress = res.address
  540. this.allInfo.isCheckLocation = true
  541. this.allInfo.locationName = res.address
  542. this.allInfo.locationLongitude = res.longitude
  543. this.allInfo.locationLatitude = res.latitude
  544. this.allInfo.locationAddress = res.address
  545. // 保存位置信息到Vuex
  546. this.$store.commit('setPosition', {
  547. address: res.address,
  548. longitude: res.longitude,
  549. latitude: res.latitude
  550. });
  551. // 获取周边伴宠师
  552. this.getCompanionList();
  553. },
  554. fail: (err) => {
  555. console.error('选择位置失败:', err);
  556. }
  557. });
  558. },
  559. getLocation(){
  560. return new Promise((resolve, reject) => {
  561. uni.getLocation({
  562. type: 'gcj02',
  563. success: (res) => {
  564. resolve(res)
  565. }
  566. })
  567. })
  568. },
  569. async getCompanionList() {
  570. // 构建参数,使用当前位置坐标
  571. let data = {
  572. latitude: this.position.latitude,
  573. longitude: this.position.longitude,
  574. }
  575. // if(!data.latitude){
  576. // let res = await this.getLocation()
  577. // data.latitude = res.latitude
  578. // data.longitude = res.longitude
  579. // }
  580. getTeacherList({}).then(response => {
  581. if (response.code == 200) {
  582. this.companionList = response.rows
  583. this.calculateTeacherListDistance()
  584. }
  585. console.log(response);
  586. })
  587. },
  588. // 跳转伴宠师
  589. toPetFront(){
  590. uni.navigateToMiniProgram({
  591. appId: 'wx01f0f43759922fda',
  592. // path: '',
  593. envVersion: "release",
  594. success: res => {
  595. // 打开成功
  596. console.log("打开成功", res);
  597. },
  598. fail: err => {
  599. console.log(err);
  600. }
  601. })
  602. },
  603. calculateTeacherListDistance(){
  604. this.companionList.forEach(item => {
  605. item.distanceText = this.calculateDistanceAddress(item.appletAddresseList)
  606. })
  607. this.companionList.sort((a,b) => a.distanceText - b.distanceText)
  608. },
  609. getOrder(value) {
  610. if (value) {
  611. if (!this.isCheckLocation) {
  612. uni.showToast({
  613. title: '请先选择地址',
  614. duration: 1500,
  615. icon: "none"
  616. })
  617. } else {
  618. this.$store.commit('setPosition', {
  619. address: this.locationAddress,
  620. longitude: this.locationLongitude,
  621. latitude: this.locationLatitude,
  622. date: this.selectedDateShowText
  623. })
  624. uni.navigateTo({
  625. url: `/pages_order/companionPetList/companionPetList?info=`
  626. + encodeURIComponent(JSON
  627. .stringify(this.allInfo))
  628. });
  629. }
  630. } else {
  631. this.initGlobalData()
  632. this.$store.commit('setPosition', {})
  633. this.buyInfo.teacher = null
  634. uni.navigateTo({
  635. url: '/pages/newOrder/serviceNew',
  636. });
  637. }
  638. },
  639. getCouponListAuth() {
  640. getCouponList().then(res => {
  641. if (res.code == 200) {
  642. this.couponData.push(res.data[0])
  643. console.log("this.couponData", this.couponData)
  644. } else {
  645. this.$modal.showToast('获取优惠券失败')
  646. }
  647. })
  648. },
  649. getCouponListNoAuth() {
  650. // console.log('进入 getCouponListNoAuth:');
  651. // getCouponListNoAuth().then(res => {
  652. // if (res.code == 200) {
  653. // if (res.rows && Array.isArray(res.rows)) {
  654. // this.couponData = res.rows.filter(item => item !== null);
  655. // console.log("优惠券数据加载成功:", this.couponData);
  656. // } else if (res.data && Array.isArray(res.data)) {
  657. // this.couponData = res.data.filter(item => item !== null);
  658. // console.log("优惠券数据加载成功:", this.couponData);
  659. // } else {
  660. // console.log("获取优惠券数据格式异常:", res);
  661. // }
  662. // } else {
  663. // this.$modal.showToast('获取优惠券失败')
  664. // }
  665. // }).catch(err => {
  666. // console.error("获取优惠券列表出错:", err);
  667. // })
  668. },
  669. closeMask() {
  670. this.showMask = false
  671. },
  672. getSendCoupon(res) {
  673. let that = this
  674. console.log('res', res)
  675. if (res.detail.errcode == 'OK') {
  676. console.log(222)
  677. if (res.detail.send_coupon_result[0].code == 'SUCCESS') {
  678. that.showMask = false
  679. uni.showToast({
  680. title: '领取成功',
  681. icon: 'success',
  682. duration: 2000,
  683. })
  684. } else {
  685. uni.showModal({
  686. title: '领取失败',
  687. content: res.detail.send_coupon_result[0].message,
  688. showCancel: false,
  689. success: function(res) {
  690. that.showMask = false
  691. }
  692. })
  693. }
  694. } else {
  695. uni.showToast({
  696. title: '领取失败',
  697. icon: 'none'
  698. })
  699. that.showMask = false
  700. }
  701. },
  702. redirectuser() {},
  703. getBanner() {
  704. getBannerList().then(res => {
  705. if (res.code == 200) {
  706. this.bannerList = res.data
  707. } else {
  708. this.$modal.showToast('获取Banner失败')
  709. }
  710. })
  711. },
  712. changeSwiper(e) {
  713. this.current = e.detail.current
  714. },
  715. getPeopleList() {
  716. getStaffList().then(response => {
  717. if (response.code == 200) {
  718. this.peopleList = response.rows
  719. }
  720. console.log(response);
  721. })
  722. },
  723. getProductList() {
  724. getProductList({
  725. "publishStatus": 1,
  726. "categoryId": 76
  727. }).then(response => {
  728. if (response && response.content && response.content.length > 0) {
  729. this.skuData = response.content;
  730. }
  731. console.log(response);
  732. })
  733. },
  734. goDetails(item) {
  735. if (item) {
  736. uni.navigateTo({
  737. url: `/pages/details/detail?id=${item.id}`
  738. });
  739. } else {
  740. this.$modal.showToast('数据有误,请联系管理员')
  741. }
  742. },
  743. init() {
  744. this.$globalData.itemPrice = []
  745. this.$globalData.submitData = {
  746. "phone": "",
  747. "wechatId": "",
  748. "note": "",
  749. "totalPrice": "",
  750. "address": {
  751. "province": "",
  752. "city": "",
  753. "district": "",
  754. "detailAddress": ""
  755. },
  756. "skuList": [],
  757. "service": {
  758. "serviceFrequency": "once_a_day",
  759. "serviceDate": [],
  760. "serviceTimeFirst": "",
  761. "serviceTimeSecond": "",
  762. "pet": []
  763. }
  764. }
  765. },
  766. login() {
  767. uni.login({
  768. provider: 'weixin',
  769. success: (loginRes) => {
  770. console.log("login", loginRes)
  771. this.getOpenId(loginRes.code)
  772. },
  773. fail: function(error) {
  774. uni.showToast('授权失败,请授权后再试')
  775. }
  776. });
  777. },
  778. getOpenId(code) {
  779. getOpenId(code).then(res => {
  780. if (res.code == 200 && res.data) {
  781. let resData = JSON.parse(res.data)
  782. let token = resData.token;
  783. let openId = resData.openId;
  784. setOpenIdKey(openId)
  785. if (token) {
  786. setToken(token)
  787. }
  788. }
  789. })
  790. },
  791. showRulePopup(coupon) {
  792. if (!coupon) {
  793. console.warn('尝试显示空优惠券详情');
  794. return;
  795. }
  796. this.currentCoupon = coupon;
  797. this.$refs.rulePopup.show();
  798. },
  799. // 处理优惠券领取成功事件
  800. handleCouponReceived(couponData) {
  801. console.log('首页优惠券领取成功:', couponData);
  802. // 可以在这里处理一些额外的逻辑,比如刷新优惠券列表等
  803. },
  804. // 更新优惠券数据
  805. updateCouponData(updatedCoupon) {
  806. // 找到对应的优惠券并更新数据
  807. const couponIndex = this.couponData.findIndex(item => item.id === updatedCoupon.id);
  808. if (couponIndex !== -1) {
  809. // 使用Vue.set或者$set来确保响应式更新
  810. this.$set(this.couponData, couponIndex, updatedCoupon);
  811. }
  812. }
  813. },
  814. onShow() {
  815. if (!getToken() || !getOpenIdKey()) {
  816. this.login()
  817. }
  818. if(this.$globalData.mainSku.length < 1 || !this.$globalData.mainSku[0].price){
  819. // 获取主产品
  820. this.getProductList()
  821. }
  822. this.currentAddress = this.$globalData.newOrderData.currentAddress
  823. if(this.currentAddress&&this.currentAddress.name){
  824. this.isAddressSelected=true
  825. }
  826. this.currentPets = this.$globalData.newOrderData.currentPets
  827. if(this.currentPets&&this.currentPets.length>0){
  828. this.isPetSelected=true
  829. }
  830. this.needPreFamiliarize = this.$globalData.newOrderData.needPreFamiliarize
  831. // 初始化伴宠师等级
  832. if(this.$globalData.newOrderData.companionLevel) {
  833. this.companionLevel = this.$globalData.newOrderData.companionLevel
  834. }
  835. // 获取周边伴宠师数据
  836. this.getCompanionList();
  837. },
  838. onLoad: function() {
  839. this.init()
  840. this.getPeopleList()
  841. this.getProductList()
  842. this.getBanner()
  843. const accountInfo = wx.getAccountInfoSync();
  844. this.envVersion = accountInfo.miniProgram.envVersion;
  845. if (!getToken() || !getOpenIdKey()) {
  846. this.login()
  847. } else {
  848. this.getCouponListAuth()
  849. }
  850. // 设置默认位置,这样即使用户不选择位置也能显示一些伴宠师
  851. this.$store.commit('setPosition', {
  852. address: "上海市浦东新区浦东南路150弄",
  853. longitude: 121.49857,
  854. latitude: 31.22514
  855. });
  856. }
  857. }
  858. </script>
  859. <style lang="scss">
  860. page {
  861. background-color: #F5F5F7 !important;
  862. }
  863. .no-data{
  864. width: 100%;
  865. height: 100%;
  866. display: flex;
  867. align-items: center;
  868. justify-content: center;
  869. .no-data-text{
  870. font-size: 24rpx;
  871. color: #999;
  872. }
  873. }
  874. .home-content {
  875. position: relative;
  876. .swiper {
  877. height: calc(100vw * 1098/1125);
  878. }
  879. .banner {
  880. height: calc(100vw * 1098/1125 + 250px);
  881. background-image: linear-gradient(180deg, #FFBF60 0%, #FFBF60 90%, #F5F5F7 99.41%);
  882. }
  883. .uni-card {
  884. border-radius: 16rpx;
  885. }
  886. .float-button {
  887. position: fixed;
  888. bottom: 150px;
  889. right: 10px;
  890. width: 50px;
  891. height: 50px;
  892. .kf-btn {
  893. background-color: rgba(255, 255, 255, 1);
  894. height: 52px;
  895. width: 52px;
  896. border-radius: 50%;
  897. display: flex;
  898. align-items: center;
  899. }
  900. }
  901. .coupon-list {
  902. width: 100%;
  903. .coupon-title {
  904. display: flex;
  905. line-height: 33rpx;
  906. margin: 42rpx 0 30rpx;
  907. justify-content: space-between;
  908. .coupon-title-left {
  909. display: flex;
  910. align-items: center;
  911. font-weight: 900;
  912. font-size: 30rpx;
  913. color: #333333;
  914. .coupon-flag {
  915. width: 8rpx;
  916. height: 33rpx;
  917. background: #FFBF60;
  918. border-radius: 30rpx 30rpx 30rpx 30rpx;
  919. margin-right: 10rpx;
  920. }
  921. }
  922. .coupon-title-right {
  923. color: #7D8196;
  924. font-size: 24rpx;
  925. font-style: normal;
  926. font-weight: 500;
  927. line-height: 28rpx;
  928. }
  929. }
  930. .split-line {
  931. width: 100%;
  932. height: 1rpx;
  933. background: #EFEFEF;
  934. }
  935. .coupon-content {
  936. // 优惠券内容样式已移至CouponItem组件
  937. }
  938. }
  939. .companion-list {
  940. width: 100%;
  941. .companion-title {
  942. display: flex;
  943. line-height: 33rpx;
  944. margin: 42rpx 0 30rpx;
  945. justify-content: space-between;
  946. .companion-title-left {
  947. display: flex;
  948. align-items: center;
  949. font-weight: 900;
  950. font-size: 30rpx;
  951. color: #333333;
  952. .companion-flag {
  953. width: 8rpx;
  954. height: 33rpx;
  955. background: #FFBF60;
  956. border-radius: 30rpx 30rpx 30rpx 30rpx;
  957. margin-right: 10rpx;
  958. }
  959. }
  960. .companion-title-right {
  961. color: #7D8196;
  962. font-size: 24rpx;
  963. font-style: normal;
  964. font-weight: 500;
  965. line-height: 28rpx;
  966. }
  967. }
  968. .split-line {
  969. width: 100%;
  970. height: 1rpx;
  971. background: #EFEFEF;
  972. }
  973. .companion-content {
  974. .companion-item {
  975. padding: 10px 0px 0px 0;
  976. .companion-info {
  977. display: flex;
  978. align-items: center;
  979. justify-content: flex-start;
  980. .companion-img {
  981. width: 168rpx;
  982. height: 168rpx;
  983. border: #FEA714 5rpx solid;
  984. border-radius: 20rpx;
  985. }
  986. .companion-info-1 {
  987. margin-left: 10px;
  988. width: 80%;
  989. .companion-info-2 {
  990. display: flex;
  991. flex-wrap: wrap;
  992. .companion-info-title {
  993. display: flex;
  994. flex-wrap: wrap;
  995. width: 60%;
  996. }
  997. .companion-name {
  998. color: #333;
  999. font-size: 32rpx;
  1000. margin-right: 10rpx;
  1001. font-weight: 900;
  1002. font-style: normal;
  1003. }
  1004. .companion-info-star {
  1005. color: #FFAA48;
  1006. font-size: 24rpx;
  1007. font-weight: 400;
  1008. line-height: 28rpx;
  1009. display: flex;
  1010. align-items: center;
  1011. }
  1012. }
  1013. .companion-info-3 {
  1014. display: flex;
  1015. align-items: baseline;
  1016. font-size: 28rpx;
  1017. line-height: 32rpx;
  1018. margin-top: 5px;
  1019. color: #FFAA48;
  1020. font-weight: 900;
  1021. }
  1022. .companion-info-4 {
  1023. display: flex;
  1024. align-items: baseline;
  1025. font-size: 24rpx;
  1026. margin-top: 10px;
  1027. color: #7D8196;
  1028. font-weight: 400;
  1029. line-height: 32rpx;
  1030. }
  1031. }
  1032. }
  1033. }
  1034. .companion-item-bottom {
  1035. height: 60rpx;
  1036. background-color: #FFF4E5;
  1037. margin: 20rpx 0 20rpx 0;
  1038. display: flex;
  1039. align-items: center;
  1040. justify-content: center;
  1041. border-radius: 8rpx;
  1042. .companion-item-bottom-text {
  1043. color: #A94F20;
  1044. margin: 14rpx;
  1045. font-size: 24rpx;
  1046. font-weight: 400;
  1047. }
  1048. }
  1049. }
  1050. }
  1051. .history-record {
  1052. width: 100%;
  1053. .history-record-title {
  1054. display: flex;
  1055. line-height: 33rpx;
  1056. margin: 42rpx 0 30rpx;
  1057. justify-content: space-between;
  1058. .history-record-title-left {
  1059. display: flex;
  1060. align-items: center;
  1061. font-weight: 900;
  1062. font-size: 30rpx;
  1063. color: #333333;
  1064. .history-record-flag {
  1065. width: 8rpx;
  1066. height: 33rpx;
  1067. background: #FFBF60;
  1068. border-radius: 30rpx 30rpx 30rpx 30rpx;
  1069. margin-right: 10rpx;
  1070. }
  1071. }
  1072. .history-record-title-right {
  1073. color: #7D8196;
  1074. font-size: 24rpx;
  1075. font-style: normal;
  1076. font-weight: 500;
  1077. line-height: 28rpx;
  1078. }
  1079. }
  1080. .split-line {
  1081. width: 100%;
  1082. height: 1rpx;
  1083. background: #EFEFEF;
  1084. }
  1085. .history-record-content {
  1086. padding: 20rpx 0 20rpx 0;
  1087. .history-record-content-image {
  1088. display: flex;
  1089. flex-wrap: nowrap;
  1090. margin-bottom: 10rpx;
  1091. .history-record-content-image-1 {
  1092. background-image: url("https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/petServiceOrder/catNum.png");
  1093. background-size: cover;
  1094. width: 208rpx;
  1095. height: 260rpx;
  1096. margin-right: 20rpx;
  1097. .history-record-content-image-1-text {
  1098. .history-record-content-image-1-text-1 {
  1099. width: 100%;
  1100. display: flex;
  1101. justify-content: center;
  1102. height: 156rpx;
  1103. align-items: flex-end;
  1104. color: #FF8D00;
  1105. font-size: 32rpx;
  1106. font-weight: 900;
  1107. }
  1108. .history-record-content-image-1-text-2 {
  1109. width: 100%;
  1110. display: flex;
  1111. justify-content: center;
  1112. height: 90rpx;
  1113. align-items: flex-end;
  1114. color: #AAAAAA;
  1115. font-size: 24rpx;
  1116. font-weight: 400;
  1117. }
  1118. }
  1119. }
  1120. .history-record-content-image-2 {
  1121. background-image: url("https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/petServiceOrder/dogNum.png");
  1122. background-size: cover;
  1123. width: 208rpx;
  1124. height: 260rpx;
  1125. margin-right: 20rpx;
  1126. .history-record-content-image-2-text {
  1127. .history-record-content-image-2-text-1 {
  1128. width: 100%;
  1129. display: flex;
  1130. justify-content: center;
  1131. height: 156rpx;
  1132. align-items: flex-end;
  1133. color: #FF8D00;
  1134. font-size: 32rpx;
  1135. font-weight: 900;
  1136. }
  1137. .history-record-content-image-2-text-2 {
  1138. width: 100%;
  1139. display: flex;
  1140. justify-content: center;
  1141. height: 90rpx;
  1142. align-items: flex-end;
  1143. color: #AAAAAA;
  1144. font-size: 24rpx;
  1145. font-weight: 400;
  1146. }
  1147. }
  1148. }
  1149. .history-record-content-image-3 {
  1150. background-image: url("https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/petServiceOrder/goodNum.png");
  1151. background-size: cover;
  1152. width: 208rpx;
  1153. height: 260rpx;
  1154. .history-record-content-image-3-text {
  1155. .history-record-content-image-3-text-1 {
  1156. width: 100%;
  1157. display: flex;
  1158. justify-content: center;
  1159. height: 156rpx;
  1160. align-items: flex-end;
  1161. color: #FF8D00;
  1162. font-size: 32rpx;
  1163. font-weight: 900;
  1164. }
  1165. .history-record-content-image-3-text-2 {
  1166. width: 100%;
  1167. display: flex;
  1168. justify-content: center;
  1169. height: 90rpx;
  1170. align-items: flex-end;
  1171. color: #AAAAAA;
  1172. font-size: 24rpx;
  1173. font-weight: 400;
  1174. }
  1175. }
  1176. }
  1177. }
  1178. .history-record-content-text {
  1179. font-size: 24rpx;
  1180. font-weight: 400;
  1181. color: #A94F20;
  1182. }
  1183. }
  1184. }
  1185. }
  1186. page {
  1187. display: flex;
  1188. flex-direction: column;
  1189. box-sizing: border-box;
  1190. background-color: #fff;
  1191. min-height: 100%;
  1192. height: auto;
  1193. }
  1194. .text {
  1195. text-align: center;
  1196. font-size: 26rpx;
  1197. margin-top: 10rpx;
  1198. }
  1199. .popupBottom {
  1200. height: 950rpx;
  1201. overflow: hidden;
  1202. position: fixed;
  1203. bottom: 0;
  1204. left: 0;
  1205. right: 0;
  1206. padding: 10rpx 20rpx;
  1207. border-radius: 20rpx 20rpx 0 0;
  1208. background-color: #fff;
  1209. .bottom-btn {
  1210. width: 100%;
  1211. border-radius: 120rpx;
  1212. background: #FFB13F;
  1213. font-size: 32rpx;
  1214. color: #FFFFFF;
  1215. }
  1216. }
  1217. .line {
  1218. height: 1px;
  1219. width: 100%;
  1220. margin: 16px 0;
  1221. }
  1222. .swiper-item {
  1223. display: flex;
  1224. flex-direction: column;
  1225. justify-content: center;
  1226. align-items: center;
  1227. color: #fff;
  1228. height: 500rpx;
  1229. line-height: 300rpx;
  1230. }
  1231. .card-container {
  1232. margin: 0;
  1233. padding: 0;
  1234. }
  1235. .title-img1 {
  1236. height: 30px;
  1237. width: 104px;
  1238. background-repeat: no-repeat;
  1239. background-position: left;
  1240. background-size: 104px 30px;
  1241. background-image: url('/static/images/pages/cwfw.png');
  1242. }
  1243. .service-content-img {
  1244. padding: 5px;
  1245. margin-top: 5px;
  1246. border-radius: 8px;
  1247. }
  1248. #myVideo {
  1249. width: 100%;
  1250. border-radius: 5px;
  1251. }
  1252. .service-content {
  1253. width: 100%;
  1254. padding: 0 10px;
  1255. }
  1256. .title-img4 {
  1257. height: 30px;
  1258. width: 202px;
  1259. background-repeat: no-repeat;
  1260. background-position: center;
  1261. background-size: 202px 30px;
  1262. background-image: url('/static/images/pages/jppcs.png');
  1263. margin: 10px 0;
  1264. }
  1265. .demo-uni-row {
  1266. margin: 0;
  1267. padding: 0;
  1268. }
  1269. .people-img {
  1270. width: 190px;
  1271. height: 163px;
  1272. border: #FFBF60 1px solid;
  1273. border-radius: 5px;
  1274. }
  1275. .people-year {
  1276. display: flex;
  1277. width: 68px;
  1278. padding: 1px 4px;
  1279. justify-content: space-between;
  1280. align-items: center;
  1281. border-radius: 0px 10px 10px 0px;
  1282. background: linear-gradient(90deg, #FDA714 0%, #FD8B04 99.41%);
  1283. color: #FFF;
  1284. font-family: PingFang SC;
  1285. font-size: 10px;
  1286. font-style: normal;
  1287. line-height: 14px;
  1288. position: absolute;
  1289. top: 15px;
  1290. left: 0;
  1291. }
  1292. .service-people {
  1293. display: flex;
  1294. }
  1295. .service-people-text {
  1296. display: flex;
  1297. align-items: center;
  1298. line-height: 24px;
  1299. }
  1300. .service-people-text::before {
  1301. content: "";
  1302. background-color: black;
  1303. border-radius: 50%;
  1304. display: inline-block;
  1305. height: 5px;
  1306. width: 5px;
  1307. margin-right: 5px;
  1308. }
  1309. .show-text-1 {
  1310. display: block;
  1311. color: var(--Color-, #222229);
  1312. font-family: PingFang SC;
  1313. font-size: 14px;
  1314. font-style: normal;
  1315. font-weight: 600;
  1316. line-height: 24px;
  1317. }
  1318. .show-text-2 {
  1319. display: block;
  1320. color: var(--Color-, #222229);
  1321. font-family: PingFang SC;
  1322. font-size: 12px;
  1323. font-style: normal;
  1324. line-height: 18px;
  1325. }
  1326. .image-wrapper {
  1327. position: relative;
  1328. }
  1329. .text-wrapper {
  1330. position: absolute;
  1331. bottom: 83px;
  1332. left: 10px;
  1333. color: #fff;
  1334. font-size: 10px;
  1335. font-weight: blod;
  1336. font-family: PingFang SC;
  1337. }
  1338. .coupone_wrap {
  1339. margin-top: 200px;
  1340. }
  1341. .details-subscribe {
  1342. background-color: #FFFFFF;
  1343. padding: 10px;
  1344. width: 100%;
  1345. height: 58px;
  1346. position: fixed;
  1347. bottom: 0;
  1348. z-index: 100;
  1349. .details-btn {
  1350. width: 100%;
  1351. border-radius: 6px;
  1352. background: #FFB13F;
  1353. font-size: 16px;
  1354. color: #FFFFFF;
  1355. }
  1356. }
  1357. .text-button {
  1358. height: 100rpx;
  1359. border-radius: 0px 0px 6rpx 0;
  1360. background: rgba(255, 208, 0, 1);
  1361. font-weight: 500;
  1362. font-size: 36rpx;
  1363. display: flex;
  1364. align-items: center;
  1365. justify-content: center;
  1366. }
  1367. .couponItem {
  1368. width: 100%;
  1369. padding: 0 30rpx;
  1370. margin-top: 24rpx;
  1371. -webkit-overflow-scrolling: touch;
  1372. }
  1373. .couponItem:last-child {
  1374. margin-bottom: 24rpx;
  1375. }
  1376. .mask-coupon {
  1377. background: rgba(0, 0, 0, .5);
  1378. width: 100vw;
  1379. height: 100vh;
  1380. position: fixed;
  1381. left: 0;
  1382. top: 0;
  1383. padding-bottom: 120rpx;
  1384. .wx-coupon {
  1385. background: #F2F2F2;
  1386. min-height: 300px;
  1387. position: fixed;
  1388. bottom: 0;
  1389. left: 0;
  1390. width: 100%;
  1391. }
  1392. .title {
  1393. font-size: 24px;
  1394. display: flex;
  1395. align-items: center;
  1396. justify-content: center;
  1397. padding: 20rpx 0 10rpx;
  1398. }
  1399. .content {
  1400. height: 80%;
  1401. overflow-y: auto;
  1402. }
  1403. .text-button {
  1404. height: 100rpx;
  1405. border-radius: 0px 0px 6rpx 0;
  1406. background: rgba(255, 208, 0, 1);
  1407. font-weight: 500;
  1408. font-size: 36rpx;
  1409. display: flex;
  1410. align-items: center;
  1411. justify-content: center;
  1412. }
  1413. }
  1414. @media screen and (min-width: 500px) {
  1415. .uni-swiper-dot-box {
  1416. width: 400px;
  1417. margin: 0 auto;
  1418. margin-top: 8px;
  1419. }
  1420. .image {
  1421. width: 100%;
  1422. }
  1423. }
  1424. </style>