index.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. <template>
  2. <view class="u-demo">
  3. <view class="u-demo-wrap">
  4. <view class="u-demo-title">演示效果</view>
  5. <view class="u-demo-area">
  6. <u-select @click="show = true" :default-value="defaultValue" :mode="mode" v-model="show" :list="list" @confirm="confirm" @cancel="cancel"></u-select>
  7. <view class="u-demo-result-line">select值:{{ result }}</view>
  8. </view>
  9. </view>
  10. <view class="u-config-wrap">
  11. <view class="u-config-title u-border-bottom">参数配置</view>
  12. <view class="u-config-item">
  13. <view class="u-item-title">状态</view>
  14. <u-subsection :current="current" :list="['打开', '收起']" @change="statusChange"></u-subsection>
  15. </view>
  16. <view class="u-config-item">
  17. <view class="u-item-title">模式</view>
  18. <u-subsection :list="['单列', '多列独立', '多列联动']" @change="modeChange"></u-subsection>
  19. </view>
  20. </view>
  21. </view>
  22. </template>
  23. <script>
  24. export default {
  25. data() {
  26. return {
  27. show: false,
  28. result: '尚未选择',
  29. defaultValue: [3],
  30. mode: 'single-column', // single-column, mutil-column, mutil-column-auto
  31. list: [],
  32. list1: [
  33. {
  34. value: '江',
  35. label: '江'
  36. },
  37. {
  38. value: '湖',
  39. label: '湖'
  40. },
  41. {
  42. value: '夜',
  43. label: '夜'
  44. },
  45. {
  46. value: '雨',
  47. label: '雨'
  48. },
  49. {
  50. value: '十',
  51. label: '十'
  52. },
  53. {
  54. value: '年',
  55. label: '年'
  56. },
  57. {
  58. value: '灯',
  59. label: '灯'
  60. }
  61. ],
  62. list2: [
  63. [
  64. {
  65. value: '昔',
  66. label: '昔'
  67. },
  68. {
  69. value: '去',
  70. label: '去'
  71. },
  72. {
  73. value: '雪',
  74. label: '雪'
  75. },
  76. {
  77. value: '如',
  78. label: '如'
  79. },
  80. {
  81. value: '花',
  82. label: '花'
  83. }
  84. ],
  85. [
  86. {
  87. value: '今',
  88. label: '今'
  89. },
  90. {
  91. value: '来',
  92. label: '来'
  93. },
  94. {
  95. value: '花',
  96. label: '花'
  97. },
  98. {
  99. value: '似',
  100. label: '似'
  101. },
  102. {
  103. value: '雪',
  104. label: '雪'
  105. }
  106. ]
  107. ],
  108. list3: [
  109. {
  110. label: '中国',
  111. value: '1',
  112. children: [
  113. {
  114. label: '广西',
  115. value: '2',
  116. children: [
  117. {
  118. label: '南宁',
  119. value: '3'
  120. },
  121. {
  122. label: '梧州',
  123. value: '3'
  124. },
  125. {
  126. label: '柳州',
  127. value: '3'
  128. }
  129. ]
  130. },
  131. {
  132. label: '广东',
  133. value: '2',
  134. children: [
  135. {
  136. label: '深圳',
  137. value: '3'
  138. },
  139. {
  140. label: '惠州',
  141. value: '3'
  142. },
  143. {
  144. label: '清远',
  145. value: '3'
  146. }
  147. ]
  148. }
  149. ]
  150. },
  151. {
  152. label: '美国',
  153. value: '1',
  154. children: [
  155. {
  156. label: '纽约',
  157. value: '2',
  158. children: [
  159. {
  160. label: '皇后街道',
  161. value: '3'
  162. }
  163. ]
  164. }
  165. ]
  166. }
  167. ]
  168. };
  169. },
  170. onLoad() {
  171. this.list = this.list1;
  172. },
  173. computed: {
  174. current() {
  175. return this.show ? 0 : 1;
  176. }
  177. },
  178. methods: {
  179. statusChange(index) {
  180. this.show = !index;
  181. },
  182. modeChange(index) {
  183. let type = ['single-column', 'mutil-column', 'mutil-column-auto'];
  184. this.mode = type[index];
  185. this.list = index == 0 ? this.list1 : index == 1 ? this.list2 : this.list3;
  186. this.show = true;
  187. },
  188. confirm(e) {
  189. this.result = '';
  190. e.map((val, index) => {
  191. this.result += this.result == '' ? val.label : '-' + val.label;
  192. })
  193. },
  194. cancel(e) {
  195. console.log(e);
  196. }
  197. }
  198. };
  199. </script>
  200. <style scoped lang="scss">
  201. .badge-button {
  202. padding: 4rpx 6rpx;
  203. background-color: $u-type-error;
  204. color: #fff;
  205. border-radius: 10rpx;
  206. font-size: 22rpx;
  207. line-height: 1;
  208. }
  209. </style>