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

312 lines
6.0 KiB

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