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

316 lines
6.2 KiB

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