景徳镇旅游微信小程序
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
5.9 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
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="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
  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. {{ detail.openTime }}
  57. </view>
  58. </view>
  59. <view>
  60. <image src="../static/reservationDetail/2.png" mode=""></image>
  61. <view>
  62. {{ detail.price }}
  63. </view>
  64. </view>
  65. <view
  66. @click="toUrl(detail, type)">
  67. <image v-if="type == 2" src="../static/reservationDetail/3.png" mode=""></image>
  68. <image v-else src="../static/reservationDetail/4.png" mode=""></image>
  69. <view>
  70. 预约
  71. </view>
  72. </view>
  73. </view>
  74. </view>
  75. <view class="detail">
  76. <view class="content">
  77. <view class="thumb-up">
  78. <uv-icon
  79. name="thumb-up"
  80. size="40rpx"
  81. color="#B12731"
  82. ></uv-icon>
  83. <text>推荐度</text> <text>{{ detail.recommend }}</text>
  84. </view>
  85. <view class="text">
  86. <view class="line">
  87. <view class="left">
  88. 专业擅长
  89. </view>
  90. <view class="right">
  91. {{ detail.skill }}
  92. </view>
  93. </view>
  94. <view class="line">
  95. <view class="left">
  96. 个人简介
  97. </view>
  98. <view class="right">
  99. {{ detail.brief }}
  100. </view>
  101. </view>
  102. </view>
  103. </view>
  104. <view class="video-list">
  105. <view class="title">
  106. {{ dict.subTitle }}
  107. </view>
  108. </view>
  109. <videoList ref="videoList" :roleId="id"/>
  110. </view>
  111. <contactActionSheet ref="contactActionSheet"/>
  112. <tabber/>
  113. </view>
  114. </template>
  115. <script>
  116. import videoList from '@/components/list/videoList.vue'
  117. import contactActionSheet from '@/components/base/contactActionSheet.vue'
  118. export default {
  119. components : {
  120. videoList,
  121. contactActionSheet,
  122. },
  123. data() {
  124. return {
  125. type: '',
  126. id : 0,
  127. dict : {},
  128. detail : {},
  129. }
  130. },
  131. onLoad(args) {
  132. this.type = args.type
  133. this.id = args.id
  134. this.dict = this.$config.dict[args.type]
  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.dict.title,
  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.dict.collectType,
  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}&type=${this.type}`
  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: 230rpx;
  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>