choose.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <template>
  2. <el-form :inline="true" class="demo-form-inline">
  3. <div class="choose">
  4. <div class="province">
  5. <el-form-item label="省">
  6. <el-select placeholder="请选择省" v-model="choose.province" >
  7. <el-option :label="p" v-for="p in province" :value="p"></el-option>
  8. </el-select>
  9. </el-form-item>
  10. </div>
  11. <div class="city">
  12. <el-form-item label="市">
  13. <el-select placeholder="请选择市" v-model="choose.city" >
  14. <el-option :label="p" v-for="p in city" :value="p"></el-option>
  15. </el-select>
  16. </el-form-item>
  17. </div>
  18. <div class="area">
  19. <el-form-item label="区">
  20. <el-select placeholder="请选择区" v-model="choose.area" >
  21. <el-option :label="p" v-for="p in area" :value="p"></el-option>
  22. </el-select>
  23. </el-form-item>
  24. </div>
  25. <div class="post">
  26. <el-form-item label="职位">
  27. <el-select placeholder="请选择职位类型" v-model="choose.post" >
  28. <el-option :label="p" v-for="p in post" :value="p"></el-option>
  29. </el-select>
  30. </el-form-item>
  31. </div>
  32. <div class="education">
  33. <el-form-item label="学历">
  34. <el-select placeholder="请选择学历要求" v-model="choose.education" >
  35. <el-option :label="p" v-for="p in education" :value="p"></el-option>
  36. </el-select>
  37. </el-form-item>
  38. </div>
  39. <div class="work_year">
  40. <el-form-item label="经验">
  41. <el-select placeholder="请选择工作年限" v-model="choose.work_year" >
  42. <el-option :label="p" v-for="p in work_year" :value="p"></el-option>
  43. </el-select>
  44. </el-form-item>
  45. </div>
  46. <div class="name">
  47. <el-form-item label="姓名">
  48. <el-input v-model="choose.name" placeholder="请输入姓名"></el-input>
  49. </el-form-item>
  50. </div>
  51. <div class="choose-button">
  52. <el-form-item>
  53. <el-button type="primary" @click="onSearch">
  54. <i class="el-icon-search"></i>搜索
  55. </el-button>
  56. </el-form-item>
  57. </div>
  58. </div>
  59. </el-form>
  60. </template>
  61. <script>
  62. import assets from '../../assets/json/address.json'
  63. var provinces = assets.provinces.province// 省市区数据
  64. export default {
  65. data() {
  66. return {
  67. province :["---请-选-择---"],// 省分类
  68. city :[],// 市
  69. area :[],// 区
  70. post :["前端","销售"],// 职位
  71. education :['高中','初中','小学','本科','大专'],// 学历
  72. work_year :["1","2"],// 工作年限
  73. name :["1","2"],// 姓名
  74. choose: {
  75. province :'',// 省
  76. city :'',// 市
  77. area :'',// 区
  78. post :'',// 职位
  79. education :'',// 学历
  80. work_year :'',// 工作年限
  81. name :'',// 姓名
  82. }
  83. }
  84. },
  85. methods :{
  86. // 搜索
  87. onSearch() {
  88. const province = this.choose.province
  89. this.choose.province = province == '---请-选-择---' ? '' : province
  90. this.$emit("search",this.choose)
  91. },
  92. // 省选择
  93. provincesC() {
  94. for(let i = 0 ;i < provinces.length ;i++) {
  95. this.province.push(provinces[i].ssqname)
  96. }
  97. },
  98. // 市选择
  99. cityC() {
  100. this.city = []
  101. this.choose.city = ''
  102. for (let i = 0;i < provinces.length ;i++){
  103. if( this.choose.province === provinces[i].ssqname) {
  104. const cities = provinces[i].cities.city
  105. for ( let a = 0 ;a < cities.length ;a++){
  106. this.city.push( cities[a].ssqname )
  107. }
  108. }
  109. }
  110. },
  111. // 区选择
  112. areaC() {
  113. this.area = []
  114. this.choose.area = ""
  115. for (let i = 0 ;i < provinces.length ;i++) {
  116. if( this.choose.province == provinces[i].ssqname ) {
  117. const cities = provinces[i].cities.city
  118. for (let a = 0 ; a < cities.length ; a++){
  119. if( this.choose.city == cities[a].ssqname ) {
  120. const areas = cities[a].areas.area
  121. for ( let z = 0 ;z < areas.length ;z++ ) {
  122. this.area.push(areas[z].ssqname)
  123. }
  124. }
  125. }
  126. }
  127. }
  128. }
  129. },
  130. watch: {
  131. 'choose.province'() {
  132. this.cityC()
  133. },
  134. 'choose.city'() {
  135. this.areaC()
  136. }
  137. },
  138. mounted (){
  139. this.provincesC()
  140. }
  141. }
  142. </script>
  143. <style lang="scss" scoped>
  144. .choose {
  145. padding: 25px;
  146. display: flex;
  147. background-color: white;
  148. flex-flow:row wrap;
  149. }
  150. i {
  151. margin-right: 5px;
  152. }
  153. </style>
  154. <style>
  155. .el-form-item__label {
  156. width: 40px;
  157. text-align: center;
  158. }
  159. .el-input {
  160. width: 185px;
  161. }
  162. .el-button {
  163. background-color: #2360F1;
  164. }
  165. </style>