景徳镇旅游微信小程序
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.

306 lines
6.0 KiB

11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
  1. <template>
  2. <!-- '遗产讲述', '达人同游' 我要跟拍 的共同详情页面 -->
  3. <view class="page">
  4. <navbar :title="titles[type]" leftClick @leftClick="$utils.navigateBack" />
  5. <view class="info">
  6. <!-- 上面 -->
  7. <view class="top">
  8. <image :src="detail.roleHead" mode="aspectFill"></image>
  9. <view class="left">
  10. <view class="title">
  11. {{ detail.roleName }}
  12. </view>
  13. <view class="left-list">
  14. <view
  15. @click="addCollection">
  16. <button
  17. class="share">
  18. <uv-icon
  19. name="star"
  20. size="50rpx"
  21. ></uv-icon>
  22. 收藏
  23. </button>
  24. </view>
  25. <view>
  26. <button
  27. open-type="share"
  28. class="share">
  29. <uv-icon
  30. name="share"
  31. size="50rpx"
  32. ></uv-icon>
  33. 分享
  34. </button>
  35. </view>
  36. <view
  37. @click="$refs.contactActionSheet.open()">
  38. <button
  39. class="share">
  40. <uv-icon
  41. name="server-man"
  42. size="50rpx"
  43. ></uv-icon>
  44. 客服
  45. </button>
  46. </view>
  47. </view>
  48. </view>
  49. </view>
  50. <!-- 下面 -->
  51. <view class="bottom">
  52. <view>
  53. <image src="../static/reservationDetail/1.png" mode=""></image>
  54. <view>
  55. {{ $dayjs(detail.preTime).format('YYYY-MM-DD') }}
  56. </view>
  57. </view>
  58. <view>
  59. <image src="../static/reservationDetail/2.png" mode=""></image>
  60. <view>
  61. {{ detail.price }}
  62. </view>
  63. </view>
  64. <view
  65. @click="toUrl(detail, type)">
  66. <image v-if="type == 2" src="../static/reservationDetail/3.png" mode=""></image>
  67. <image v-else src="../static/reservationDetail/4.png" mode=""></image>
  68. <view>
  69. 预约
  70. </view>
  71. </view>
  72. </view>
  73. </view>
  74. <view class="detail">
  75. <view class="content">
  76. <view class="thumb-up">
  77. <uv-icon
  78. name="thumb-up"
  79. size="40rpx"
  80. color="#B12731"
  81. ></uv-icon>
  82. <text>推荐度</text> <text>{{ detail.recommend }}</text>
  83. </view>
  84. <view class="text">
  85. <view class="line">
  86. <view class="left">
  87. 专业擅长
  88. </view>
  89. <view class="right">
  90. {{ detail.skill }}
  91. </view>
  92. </view>
  93. <view class="line">
  94. <view class="left">
  95. 个人简介
  96. </view>
  97. <view class="right">
  98. {{ detail.brief }}
  99. </view>
  100. </view>
  101. </view>
  102. </view>
  103. <view class="video-list">
  104. <view class="title">
  105. {{ video_list_titles[type] }}
  106. </view>
  107. </view>
  108. <videoList ref="videoList" :roleId="id"/>
  109. </view>
  110. <contactActionSheet ref="contactActionSheet"/>
  111. <tabber/>
  112. </view>
  113. </template>
  114. <script>
  115. import videoList from '@/components/list/videoList.vue'
  116. import contactActionSheet from '@/components/base/contactActionSheet.vue'
  117. export default {
  118. components : {
  119. videoList,
  120. contactActionSheet,
  121. },
  122. data() {
  123. return {
  124. titles: ['遗产讲述', '达人同游', '我要跟拍'],
  125. video_list_titles: ['讲解现场', '同游现场', '跟拍现场'],
  126. collectType : [0, 1, 3],
  127. type: 0,
  128. id : 0,
  129. detail : {},
  130. }
  131. },
  132. onLoad(args) {
  133. this.type = args.type
  134. this.id = args.id
  135. },
  136. onShow() {
  137. this.$nextTick(() => {
  138. this.$refs.videoList.queryVideoList()
  139. })
  140. this.getData()
  141. },
  142. onPullDownRefresh(){
  143. this.$refs.videoList.queryVideoList()
  144. this.getData()
  145. },
  146. //滚动到屏幕底部
  147. onReachBottom() {
  148. this.$refs.videoList.loadMoreData()
  149. },
  150. onShareAppMessage(res) {
  151. return {
  152. title: this.titles[this.type],
  153. desc: this.detail.roleName,
  154. path: '/pages_order/service/reservationDetail?id=' + this.id
  155. }
  156. },
  157. methods: {
  158. // 添加收藏
  159. addCollection(){
  160. this.$api('addCollection', {
  161. itemId : this.detail.id,
  162. collectionType : this.collectType[this.type],
  163. }, res => {
  164. if(res.code == 200){
  165. this.getData()
  166. uni.showToast({
  167. title: res.message,
  168. icon:'none'
  169. })
  170. }
  171. })
  172. },
  173. getData(){
  174. this.$api('queryRoleInfoById', {
  175. roleInfoId : this.id,
  176. }, res => {
  177. uni.stopPullDownRefresh()
  178. if(res.code == 200){
  179. this.detail = res.result
  180. }
  181. })
  182. },
  183. toUrl(detail, type){
  184. uni.navigateTo({
  185. url: `/pages_order/order/orderSubscribe?id=${detail.id}&payType=${parseInt(type) + 1}`
  186. })
  187. },
  188. }
  189. }
  190. </script>
  191. <style scoped lang="scss">
  192. .page{
  193. .info{
  194. .top{
  195. display: flex;
  196. padding: 40rpx;
  197. image{
  198. width: 240rpx;
  199. height: 280rpx;
  200. border-radius: 20rpx;
  201. margin-right: 40rpx;
  202. }
  203. .left{
  204. .title{
  205. font-size: 32rpx;
  206. margin-top: 20rpx;
  207. }
  208. .left-list{
  209. display: flex;
  210. font-size: 26rpx;
  211. background-color: #fff;
  212. border-radius: 20rpx;
  213. padding: 20rpx;
  214. margin-top: 50rpx;
  215. box-shadow: 0 0 10rpx 10rpx #00000010;
  216. >view{
  217. margin: 20rpx 30rpx;
  218. display: flex;
  219. flex-direction: column;
  220. justify-content: center;
  221. align-items: center;
  222. }
  223. }
  224. }
  225. }
  226. .bottom{
  227. display: flex;
  228. justify-content: space-around;
  229. image{
  230. width: 80rpx;
  231. height: 80rpx;
  232. margin-bottom: 10rpx;
  233. }
  234. >view{
  235. background-color: #fff;
  236. box-shadow: 0 0 10rpx 10rpx #00000010;
  237. border-radius: 20rpx;
  238. height: 180rpx;
  239. width: 180rpx;
  240. display: flex;
  241. justify-content: center;
  242. align-items: center;
  243. flex-direction: column;
  244. color: $uni-color;
  245. font-size: 28rpx;
  246. }
  247. }
  248. }
  249. .detail{
  250. width: 100%;
  251. background-color: #fff;
  252. .content{
  253. padding: 40rpx;
  254. .thumb-up{
  255. background-color: #F6F2E7;
  256. color: $uni-color;
  257. font-size: 28rpx;
  258. font-weight: 900;
  259. padding: 10rpx 25rpx;
  260. display: flex;
  261. width: fit-content;
  262. border-radius: 30rpx;
  263. text{
  264. margin-left: 10rpx;
  265. }
  266. }
  267. .text{
  268. .line{
  269. margin-top: 40rpx;
  270. display: flex;
  271. line-height: 50rpx;
  272. .left{
  273. width: 180rpx;
  274. flex-shrink: 0;
  275. color: $uni-color;
  276. font-weight: 900;
  277. }
  278. }
  279. }
  280. }
  281. .video-list{
  282. padding: 15rpx;
  283. .title{
  284. font-weight: 900;
  285. color: $uni-color;
  286. padding: 15rpx;
  287. }
  288. }
  289. }
  290. }
  291. </style>