微信

customizationDetail.vue 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <template>
  2. <div v-if="showPage">
  3. <div class="top">
  4. <img :src="topImg">
  5. <div>
  6. <div class="list">
  7. <img :src='cover'>
  8. <div>
  9. <div>云台天境台历定制</div>
  10. <div>主办方: {{detail.CaseName}}</div>
  11. <div>参与时间: {{toolClass.dateFormat(detail.CreateDate)}}</div>
  12. </div>
  13. <span>{{detail.MakeStatus === 'making' ? '制作中' : '制作完成'}}</span>
  14. </div>
  15. </div>
  16. </div>
  17. <div class="main">
  18. <div class="title">定制模版</div>
  19. <img :src="detail.cover.CalendarImg">
  20. <div class="text">云台天境日历模版</div>
  21. </div>
  22. <div class="bottom">
  23. <div class="title">定制预览</div>
  24. <div class="pic-list">
  25. <img
  26. v-for="(item,index) in detail.Imgs"
  27. :src="item.CalendarImg"
  28. :key="index"
  29. v-if="showMore || index < 4"
  30. >
  31. </div>
  32. <div v-if="!showMore" @click="more()" class="more">
  33. 查看更多
  34. <i class="iconfont icon-xia"></i>
  35. </div>
  36. <div v-else @click="noMore()" class="more">
  37. 收起
  38. <i class="iconfont icon-shang"></i>
  39. </div>
  40. </div>
  41. <div class="foot">
  42. <div>联系我们: 400-2435 3756</div>
  43. </div>
  44. </div>
  45. </template>
  46. <script>
  47. import cover from '@/common/icon/heise.png'
  48. import topImg from '@/common/icon/topImg.png'
  49. import { createNamespacedHelpers } from 'vuex'
  50. const { mapState: mapCustomizationState, mapActions: mapCustomizationActions } = createNamespacedHelpers('customization')
  51. export default {
  52. data () {
  53. return {
  54. topImg,
  55. cover,
  56. showPage: false,
  57. showMore: false
  58. }
  59. },
  60. created () {
  61. this.getDetail({ calendarId: this.$route.query.id }).then(() => {
  62. this.showPage = true
  63. })
  64. },
  65. computed: {
  66. ...mapCustomizationState({
  67. detail: item => item.detail
  68. })
  69. },
  70. methods: {
  71. ...mapCustomizationActions(['getDetail']),
  72. more () {
  73. this.showMore = true
  74. },
  75. noMore () {
  76. this.showMore = false
  77. }
  78. }
  79. }
  80. </script>
  81. <style lang="scss" scoped>
  82. .title {
  83. font-size: 0.16rem;
  84. padding: 0.2rem 0 0.1rem 0.25rem;
  85. text-align: left;
  86. }
  87. .top {
  88. > img {
  89. width: 100%;
  90. }
  91. > div {
  92. height: 0.85rem;
  93. background: #f2f2f2;
  94. position: relative;
  95. .list {
  96. box-sizing: border-box;
  97. position: absolute;
  98. bottom: 0.1rem;
  99. left: 50%;
  100. transform: translateX(-50%);
  101. width: 3.43rem;
  102. height: 1.1rem;
  103. background: #fff;
  104. padding: 0.16rem 0.1rem;
  105. display: flex;
  106. box-shadow: 0px 2px 8px 0px rgba(204, 204, 204, 0.5);
  107. border-radius: 10px;
  108. img {
  109. width: 0.8rem;
  110. height: 0.8rem;
  111. border-radius: 0.05rem;
  112. }
  113. > div {
  114. padding: 0.05rem 0.14rem;
  115. flex: 1;
  116. div:nth-of-type(1) {
  117. color: #000;
  118. padding: 0px;
  119. }
  120. div:nth-of-type(2) {
  121. padding-top: 0.12rem;
  122. }
  123. div {
  124. font-size: 0.12rem;
  125. padding-top: 0.08rem;
  126. color: #999999;
  127. }
  128. }
  129. span {
  130. position: absolute;
  131. right: 0;
  132. top: 0.1rem;
  133. display: block;
  134. background: linear-gradient(
  135. 270deg,
  136. rgba(227, 191, 172, 1) 0%,
  137. rgba(178, 144, 132, 1) 100%
  138. );
  139. border-radius: 10px 0px 0px 10px;
  140. padding: 1px 0.1rem 2px 0.15rem;
  141. font-size: 0.12rem;
  142. }
  143. }
  144. }
  145. }
  146. .main {
  147. border-bottom: 0.1rem solid #f2f2f2;
  148. text-align: center;
  149. .text {
  150. padding-bottom: 0.15rem;
  151. }
  152. img {
  153. width: 1.65rem;
  154. margin: 20px;
  155. }
  156. }
  157. .bottom {
  158. .pic-list {
  159. padding: 0.05rem;
  160. box-sizing: border-box;
  161. display: flex;
  162. flex-flow: row wrap;
  163. img {
  164. width: 1.65rem;
  165. height: 2.6rem;
  166. margin: 0.08rem;
  167. }
  168. }
  169. .more {
  170. color: #77a5f0;
  171. text-align: center;
  172. margin-bottom: 0.1rem;
  173. i {
  174. color: #77a5f0;
  175. }
  176. }
  177. }
  178. .foot {
  179. height: 0.9rem;
  180. text-align: center;
  181. line-height: 0.9rem;
  182. background: #f2f2f2;
  183. }
  184. </style>