海南旅游项目 前端仓库
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.

219 lines
5.0 KiB

  1. <template>
  2. <view class="content">
  3. <!-- 我的频道已选的 -->
  4. <view class="title">
  5. <text>我的频道</text>
  6. </view>
  7. <view class="lf-flex-wrap lf-p-l-5">
  8. <view class="select-item active" hover-class="lf-opacity"
  9. v-for="(item, key, index) in select_list" :key="index"
  10. @click="cancelItem(key)">
  11. <text>{{ key }}</text>
  12. <u-icon name="lock-fill" class="remove-icon"></u-icon>
  13. </view>
  14. </view>
  15. <!-- 机票酒店 -->
  16. <view class="title lf-m-t-40">
  17. <u-icon name="lock-fill"></u-icon>
  18. <text class="lf-m-l-10">机票酒店</text>
  19. </view>
  20. <view class="lf-flex-wrap lf-p-l-5">
  21. <view class="select-item" hover-class="lf-opacity"
  22. v-for="(item, index) in plane_ticket_list" :key="index"
  23. v-if="!item.checked" @click="activaItem(item, index, 'plane_ticket_list')">{{ item.name }}
  24. </view>
  25. </view>
  26. <!-- 旅游度假 -->
  27. <view class="title lf-m-t-40">
  28. <u-icon name="lock-fill"></u-icon>
  29. <text class="lf-m-l-10">旅游度假</text>
  30. </view>
  31. <view class="lf-flex-wrap lf-p-l-5">
  32. <view class="select-item" hover-class="lf-opacity"
  33. v-for="(item, index) in travel_list" :key="index"
  34. v-if="!item.checked" @click="activaItem(item, index, 'travel_list')">{{ item.name }}
  35. </view>
  36. </view>
  37. <!-- 接送服务 -->
  38. <view class="title lf-m-t-40">
  39. <u-icon name="lock-fill"></u-icon>
  40. <text class="lf-m-l-10">接送服务</text>
  41. </view>
  42. <view class="lf-flex-wrap lf-p-l-5">
  43. <view class="select-item" hover-class="lf-opacity"
  44. v-for="(item, index) in jieson_list" :key="index"
  45. v-if="!item.checked" @click="activaItem(item, index, 'jieson_list')">{{ item.name }}
  46. </view>
  47. </view>
  48. <!-- 其他精选 -->
  49. <view class="title lf-m-t-40">
  50. <u-icon name="lock-fill"></u-icon>
  51. <text class="lf-m-l-10">其他精选</text>
  52. </view>
  53. <view class="lf-flex-wrap lf-p-l-5">
  54. <view class="select-item" hover-class="lf-opacity"
  55. v-for="(item, index) in other_list" :key="index"
  56. v-if="!item.checked" @click="activaItem(item, index, 'other_list')">{{ item.name }}
  57. </view>
  58. </view>
  59. </view>
  60. </template>
  61. <script>
  62. export default {
  63. data(){
  64. return {
  65. select_list: {}, // 当前选中的频道
  66. plane_ticket_list: [{
  67. name: '多地比价',
  68. key: 'a1',
  69. checked: false
  70. },{
  71. name: '降价提醒',
  72. key: 'a2',
  73. checked: false
  74. },{
  75. name: '团体机票',
  76. key: 'a3',
  77. checked: false
  78. }], // 机票酒店
  79. travel_list: [{
  80. name: '周边游',
  81. checked: false
  82. },{
  83. name: '国内游',
  84. checked: false
  85. },{
  86. name: '主题玩法',
  87. checked: false
  88. },{
  89. name: '尾单特卖',
  90. checked: false
  91. },{
  92. name: '邮轮',
  93. checked: false
  94. },{
  95. name: '汽车·船票',
  96. checked: false
  97. },{
  98. name: '定制游',
  99. checked: false
  100. }], // 旅游度假
  101. jieson_list: [{
  102. name: '接送机',
  103. checked: false
  104. },{
  105. name: '接送火车',
  106. checked: false
  107. },{
  108. name: '打车',
  109. checked: false
  110. },{
  111. name: '按天包车',
  112. checked: false
  113. },{
  114. name: '定制包车',
  115. checked: false
  116. },{
  117. name: '国内租车',
  118. checked: false
  119. },{
  120. name: '境外租车',
  121. checked: false
  122. }], // 接送服务
  123. other_list: [{
  124. name: '每日签到',
  125. checked: false
  126. },{
  127. name: '会员中心',
  128. checked: false
  129. },{
  130. name: '任务中心',
  131. checked: false
  132. },{
  133. name: '智慧旅游',
  134. checked: false
  135. },{
  136. name: '兑换会员',
  137. checked: false
  138. },{
  139. name: '旅盟',
  140. checked: false
  141. }], // 其他精选
  142. }
  143. },
  144. onLoad(){
  145. },
  146. methods: {
  147. // 添加频道
  148. activaItem(item, index, list_name){
  149. let select_list = this.select_list;
  150. if(!select_list[item.name]){
  151. if(Object.keys(select_list).length > 12){
  152. this.$msg('最多只能添加12个频道哦')
  153. }else{
  154. this.select_list[item.name] = list_name;
  155. this[list_name][index].checked = true;
  156. }
  157. }
  158. },
  159. // 移除频道
  160. cancelItem(key){
  161. // 源数据状态改变
  162. let list = this[this.select_list[key]];
  163. list.forEach(item => {
  164. if(item.name == key){
  165. item.checked = false;
  166. }
  167. });
  168. // 清除选中的对象
  169. delete this.select_list[key];
  170. }
  171. }
  172. }
  173. </script>
  174. <style lang="scss" scoped="scoped">
  175. .content{
  176. padding: 30rpx 32rpx;
  177. }
  178. .title{
  179. color: #222222;
  180. font-size: 32rpx;
  181. margin-bottom: 20rpx;
  182. font-weight: bold;
  183. }
  184. .select-item{
  185. width: 170rpx;
  186. height: 82rpx;
  187. border: 1rpx solid #999999;
  188. font-size: 28rpx;
  189. color: #333333;
  190. text-align: center;
  191. line-height: 82rpx;
  192. background-color: #FFFFFF;
  193. margin-right: -1rpx;
  194. margin-top: -1rpx;
  195. box-sizing: border-box;
  196. }
  197. .active{
  198. border: 1rpx solid #1998FE;
  199. color: #1998FE;
  200. position: relative;
  201. // text-align: left;
  202. // display: flex;
  203. // justify-content: space-between;
  204. // box-sizing: border-box;
  205. // padding: 0 10rpx;
  206. .remove-icon{
  207. position: absolute;
  208. right: 2rpx;
  209. top: 2rpx;
  210. color: #FF0000;
  211. }
  212. }
  213. .lf-p-l-5{
  214. padding-left: 5rpx;
  215. }
  216. </style>