select.vue 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. <template>
  2. <view class="container">
  3. <picker class="picker-item1" @change="changeSelect1" :range="array1" :value="index1">
  4. <view class="select-item">
  5. <view class="picker-item-logol">
  6. <image class="picker-item-logo-left" src="/static/image/school.png"></image>
  7. </view>
  8. <view class="picker-item-label">校区</view>
  9. <view class="picker-item-content" :class="{'font-txt':add_class1==1}">{{arr1[index1]}}</view>
  10. <view class="picker-item-logor">
  11. <image class="picker-item-logo-right" src="/static/image/right.png"></image>
  12. </view>
  13. </view>
  14. </picker>
  15. <picker class="picker-item2" @change="changeSelect2" :range="array2" :value="index2" :disabled="dis_num2">
  16. <view class="select-item">
  17. <view class="picker-item-logol">
  18. <image class="picker-item-logo-left" src="/static/image/building.png"></image>
  19. </view>
  20. <view class="picker-item-label">楼栋</view>
  21. <view class="picker-item-content" :class="{'font-txt':add_class2==1}">{{arr2[index2]}}</view>
  22. <view class="picker-item-logor">
  23. <image class="picker-item-logo-right" src="/static/image/right.png"></image>
  24. </view>
  25. </view>
  26. </picker>
  27. <picker class="picker-item2" @change="changeSelect3" :range="array3" :value="index3" :disabled="dis_num3">
  28. <view class="select-item">
  29. <view class="picker-item-logol">
  30. <image class="picker-item-logo-left" src="/static/image/floor.png"></image>
  31. </view>
  32. <view class="picker-item-label">楼层</view>
  33. <view class="picker-item-content" :class="{'font-txt':add_class3==1}">{{arr3[index3]}}</view>
  34. <view class="picker-item-logor">
  35. <image class="picker-item-logo-right" src="/static/image/right.png"></image>
  36. </view>
  37. </view>
  38. </picker>
  39. <picker class="picker-item2" @change="changeSelect4" :range="array4" :value="index4" :disabled="dis_num4">
  40. <view class="select-item">
  41. <view class="picker-item-logol">
  42. <image class="picker-item-logo-left" src="/static/image/room.png"></image>
  43. </view>
  44. <view class="picker-item-label">房间</view>
  45. <view class="picker-item-content" :class="{'font-txt':add_class4==1}">{{arr4[index4]}}</view>
  46. <view class="picker-item-logor">
  47. <image class="picker-item-logo-right" src="/static/image/right.png"></image>
  48. </view>
  49. </view>
  50. </picker>
  51. <view class="submit-item">
  52. <button @tap="navigateToIndex" class="submit" :data-room='room' :disabled="dis_num5">完成</button>
  53. </view>
  54. </view>
  55. </template>
  56. <script>
  57. import sortdata from '../../static/test.js'
  58. export default {
  59. data() {
  60. return {
  61. index1: 0, //选择器选择
  62. index2: 0,
  63. index3: 0,
  64. index4: 0,
  65. nschool: 0, //选择器中各个值的个数
  66. nbuilds: 0,
  67. floors: 0,
  68. rooms: 0,
  69. arr1: ['请选择校区'], //初始选择
  70. arr2: ['请选择楼栋'],
  71. arr3: ['请选择楼层'],
  72. arr4: ['请选择房间'],
  73. array1: ["黄家湖校区", "墨轩湖校区"], //选择器的值
  74. array2: [],
  75. array3: [],
  76. array4: [],
  77. room: '', //存储选择器选择的所有值
  78. add_class1: '', //选择器class属性
  79. add_class2: '',
  80. add_class3: '',
  81. add_class4: '',
  82. dis_num2: 1, //选择器disable属性,是否禁用
  83. dis_num3: 1,
  84. dis_num4: 1,
  85. dis_num5: 1,
  86. allData: sortdata, //所有数据
  87. storage: {}, //存放选择数据
  88. }
  89. },
  90. onLoad(options) {
  91. // console.log(options)
  92. var str = options.roomSelect.split("-");
  93. // console.log(str[0])
  94. // var arr = new Array();
  95. // var i = 0;
  96. // while (i < str.length) {
  97. // var s = "";
  98. // while (str.charCodeAt(i) < 256) {
  99. // s = s + str.charAt(i);
  100. // i++;
  101. // }
  102. // arr.push(s);
  103. // var s = "";
  104. // while (str.charCodeAt(i) > 256) {
  105. // s = s + str.charAt(i);
  106. // i++;
  107. // }
  108. // arr.push(s);
  109. // }
  110. // for (i = 0; i < arr.length; i++) {
  111. // console.log(arr[i]);
  112. // }
  113. this.arr1 = [str[0]]
  114. this.arr2 = [str[1]]
  115. this.arr3 = [str[2]]
  116. this.arr4 = [str[3]]
  117. // 自动填充
  118. this.nschool = this.allData.data.length
  119. },
  120. methods: {
  121. changeSelect1(e) {
  122. // console.log(e);
  123. this.index1 = e.detail.value;
  124. //清空选择器
  125. if (this.array2) {
  126. this.array2 = []
  127. }
  128. //获取选择器1的值
  129. for (var i = 0; i < this.nschool; i++) {
  130. // this.array1.push(this.allData.data[i].school)
  131. // console.log(this.allData.data[i].school)
  132. //判断是否为空,不为空则继续
  133. if (!this.allData.data[i].builds) {
  134. continue
  135. }
  136. //获取选择器二中的值
  137. if (i == this.index1) {
  138. //得到选择器二中值的个数
  139. this.nbuilds = this.allData.data[i].builds.length
  140. // console.log(this.nbuilds)
  141. //将数据加入选择器二中
  142. for (var j = 0; j < this.nbuilds; j++) {
  143. this.array2.push(this.allData.data[i].builds[j].building)
  144. }
  145. }
  146. }
  147. this.arr1 = this.array1;
  148. // this.room = this.room.concat(this.array1[this.index1]);
  149. this.add_class1 = 1;
  150. this.dis_num2 = 0;
  151. // console.log(this.array2)
  152. // console.log(this.room)
  153. },
  154. changeSelect2(e) {
  155. // console.log(e);
  156. this.index2 = e.detail.value;
  157. if (this.array3) {
  158. this.array3 = []
  159. }
  160. for (var i = 0; i < this.nbuilds; i++) {
  161. // this.array1.push(this.allData.data[i].school)
  162. // console.log(this.allData.data[i].school)
  163. if (!this.allData.data[this.index1].builds[i].floors) {
  164. continue
  165. }
  166. if (i == this.index2) {
  167. this.floors = this.allData.data[this.index1].builds[i].floors.length
  168. // console.log(this.floors)
  169. for (var j = 0; j < this.floors; j++) {
  170. this.array3.push(this.allData.data[this.index1].builds[i].floors[j].floor)
  171. }
  172. }
  173. }
  174. this.arr2 = this.array2;
  175. // this.room = this.room.concat(this.array2[this.index2]);
  176. this.add_class2 = 1;
  177. this.dis_num3 = 0;
  178. // console.log(this.room)
  179. },
  180. changeSelect3(e) {
  181. // console.log(e);
  182. this.index3 = e.detail.value;
  183. if (this.array4) {
  184. this.array4 = []
  185. }
  186. for (var i = 0; i < this.floors; i++) {
  187. // this.array1.push(this.allData.data[i].school)
  188. // console.log(this.allData.data[i].school)
  189. if (!this.allData.data[this.index1].builds[this.index2].floors[i].rooms) {
  190. continue
  191. }
  192. if (i == this.index3) {
  193. this.rooms = this.allData.data[this.index1].builds[this.index2].floors[i].rooms.length
  194. // console.log(this.rooms)
  195. for (var j = 0; j < this.rooms; j++) {
  196. this.array4.push(this.allData.data[this.index1].builds[this.index2].floors[i].rooms[j])
  197. }
  198. }
  199. }
  200. this.arr3 = this.array3;
  201. // this.room = this.room.concat(this.array3[this.index3]);
  202. this.add_class3 = 1;
  203. this.dis_num4 = 0;
  204. // console.log(this.room)
  205. },
  206. changeSelect4(e) {
  207. // console.log(e);
  208. this.index4 = e.detail.value;
  209. this.arr4 = this.array4;
  210. this.add_class4 = 1;
  211. if (this.room) {
  212. this.room = ''
  213. }
  214. //将选择器中的值加到变量room中,传到下一个页面
  215. // this.room = this.room.concat(this.array1[this.index1], this.array2[this.index2], this.array3[this.index3],
  216. // this.array4[this.index4]);
  217. this.room = this.room.concat(this.array1[this.index1] + '-' + this.array2[this.index2] + '-' + this.array3[
  218. this.index3] +'-'+ this.array4[this.index4]);
  219. this.dis_num5 = 0;
  220. // console.log(this.array1[this.index1])
  221. // console.log(this.array2[this.index2])
  222. // console.log(this.array3[this.index3])
  223. // console.log(this.array4[this.index4])
  224. // console.log(this.room)
  225. },
  226. //跳转页面
  227. navigateToIndex(e) {
  228. // console.log(e)
  229. var roomSelect = e.currentTarget.dataset.room;
  230. this.storage.roomSelect = roomSelect;
  231. this.storage.dom = this.array4[this.index4];
  232. // console.log(roomSelect)
  233. uni.navigateTo({
  234. url: '../jiaofei/jiaofei?item=' + encodeURIComponent(JSON.stringify(this.storage)),
  235. });
  236. },
  237. }
  238. }
  239. </script>
  240. <style>
  241. @import url("select.css");
  242. </style>