myCars.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <template>
  2. <view>
  3. <u-navbar
  4. title-color="#fff"
  5. :custom-back="customBack"
  6. :border-bottom="false"
  7. back-icon-color="#CCE8FF"
  8. :background="{background: '#008CFF' }" title="车辆管理"></u-navbar>
  9. <view class="header">
  10. <view class="header-title">我的车辆</view>
  11. </view>
  12. <view class="wrap">
  13. <view class="statistics">
  14. <view class="statistics-title">车辆</view>
  15. <view class="statistics-center"></view>
  16. <view class="statistics-number-wrap"><span class="number">{{mycarsTotal}}</span>辆</view>
  17. </view>
  18. <view class="new-plate-number">
  19. <view class="message-input-wrap" @click="messageInputClick">
  20. <u-message-input :maxlength="8" width="70" font-size="50" :disabled-keyboard="true" v-model="newPlateNumber"></u-message-input>
  21. </view>
  22. <u-keyboard ref="uKeyboard" mode="car" @change="keyboardChange" @backspace="backspace" v-model="keyboardshow"></u-keyboard>
  23. </view>
  24. <view class="add-car-btn" @click="handleAddCar">添加车辆</view>
  25. <view class="mycars">
  26. <view class="mycars-item" v-for="item in mycars">
  27. <view class="mycars-item-name">{{item.vehicleNo}}</view>
  28. <view class="mycars-item-type">{{item.energyTpye | energyTpye}}</view>
  29. <view class="mycars-item-tool">
  30. <span class="default" :class="{'isDefault':item.isDefault == 1}" @click="handlesetDefault(item.id)">默认</span>
  31. <span @click="handleDelCar(item.id,item.vehicleNo)">删除</span>
  32. </view>
  33. </view>
  34. </view>
  35. </view>
  36. <u-toast ref="uToast" />
  37. <u-modal v-model="delCarshow" :show-cancel-button="true" @confirm="confirmDelCar" :content="delCarContent"></u-modal>
  38. </view>
  39. </template>
  40. <script>
  41. export default{
  42. data(){
  43. return{
  44. keyboardshow:false,
  45. delCarshow:false,
  46. delCarId:null,
  47. delCarContent:'',
  48. newPlateNumber:'贵AF113Z',
  49. vehicleColor:0,
  50. mycars:[],
  51. mycarsTotal:0,
  52. }
  53. },
  54. onLoad(){
  55. this.handlegetMycars();
  56. },
  57. methods:{
  58. customBack(){
  59. this.$u.route({
  60. type:'switchTab',
  61. url: 'pages/index/index'
  62. });
  63. },
  64. handlegetMycars(){
  65. this.$u.api.getMycars()
  66. .then(res=>{
  67. this.mycars = res.data.rows;
  68. this.mycarsTotal = res.data.total;
  69. console.log('this.mycars',this.mycars)
  70. }).catch(err=>{
  71. console.log('getMycars ',err)
  72. });
  73. },
  74. handleAddCar(){
  75. let param ={
  76. vehicleNo: this.newPlateNumber,
  77. vehicleColor: this.vehicleColor
  78. };
  79. this.$u.api.addCar(param)
  80. .then(res=>{
  81. this.$refs.uToast.show({
  82. title: res.msg,
  83. type: 'success',
  84. });
  85. this.handlegetMycars();
  86. console.log('getMycars',res)
  87. }).catch(err=>{
  88. this.$refs.uToast.show({
  89. title: err.msg,
  90. type: 'error',
  91. });
  92. console.log('getMycars ',err)
  93. });
  94. },
  95. handleDelCar(id,content){
  96. this.delCarContent = `是否删除${content}`;
  97. this.delCarId = id;
  98. this.delCarshow = true;
  99. },
  100. confirmDelCar(){
  101. console.log(this.delCarId);
  102. this.$u.api.delCar(this.delCarId)
  103. .then(res=>{
  104. this.$refs.uToast.show({
  105. title: res.msg,
  106. type: 'success',
  107. });
  108. this.handlegetMycars();
  109. console.log('getMycars',res)
  110. }).catch(err=>{
  111. this.$refs.uToast.show({
  112. title: err.msg,
  113. type: 'error',
  114. });
  115. console.log('getMycars ',err)
  116. });
  117. },
  118. messageInputClick(){
  119. this.keyboardshow = true;
  120. },
  121. // 按键被点击(点击退格键不会触发此事件)
  122. keyboardChange(val) {
  123. // 将每次按键的值拼接到value变量中,注意+=写法
  124. this.newPlateNumber += val;
  125. console.log(this.newPlateNumber);
  126. },
  127. // 退格键被点击
  128. backspace() {
  129. // 删除value的最后一个字符
  130. if(this.newPlateNumber.length) this.newPlateNumber = this.newPlateNumber.substr(0, this.newPlateNumber.length - 1);
  131. console.log(this.newPlateNumber);
  132. },
  133. // 设置默认车辆
  134. handlesetDefault(id){
  135. this.$u.api.setDefaultCar({id:id})
  136. .then(res=>{
  137. this.$refs.uToast.show({
  138. title: res.msg,
  139. type: 'success',
  140. });
  141. this.handlegetMycars();
  142. console.log('handlesetDefault',res)
  143. }).catch(err=>{
  144. this.$refs.uToast.show({
  145. title: err.msg,
  146. type: 'error',
  147. });
  148. console.log('handlesetDefault err',err)
  149. });
  150. }
  151. },
  152. filters: {
  153. energyTpye(value) {
  154. if (value === 1) {
  155. return '汽油车';
  156. }else if (value === 2) {
  157. return '新能源';
  158. } else {
  159. return '汽油车';
  160. }
  161. },
  162. },
  163. }
  164. </script>
  165. <style lang="scss" scoped>
  166. @import url("./myCars.scss");
  167. </style>