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

8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 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>