car.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. <template>
  2. <view class="">
  3. <view class="data-from" v-for="item in carList">
  4. <en-input label="车辆品牌" type="text" placeholder="请输入车辆品牌" v-model="item.brand_id"
  5. v-if="verifyKey('brand_id')"></en-input>
  6. <en-radio label="车牌类型" :radio-data="carTypeData" v-model="item.car_type"
  7. v-if="verifyKey('car_type')"></en-radio>
  8. <en-input label="车牌号" type="text" placeholder="请输入车牌号" v-model="carItem.car_num"
  9. v-if="verifyKey('car_num')"></en-input>
  10. <en-input label="车架号" type="text" placeholder="请输入车架号" v-model="item.car_vin"
  11. v-if="verifyKey('car_vin')"></en-input>
  12. <en-input label="车辆颜色" type="text" placeholder="请输入车俩颜色" v-model="item.colour"
  13. v-if="verifyKey('colour')"></en-input>
  14. <en-input label="裸车价格" type="number" placeholder="请输入金额" v-model="item.car_price"
  15. v-if="verifyKey('car_price')" rightText="元"></en-input>
  16. <en-date label="登记时间" placeholder="选择车辆登记时间" v-model="item.register_date"
  17. v-if="verifyKey('register_date')"></en-date>
  18. <add-register img-type="2" v-model="item.register_img" @setCarData="setCarData" v-if="verifyKey('register_img')"></add-register>
  19. <add-register v-model="item.driving_img" @setCarData="setCarData" v-if="verifyKey('driving_img')"></add-register>
  20. <en-upload label="上传车辆相关图片" :imageWidth="180" v-model="item.car_img" v-if="verifyKey('car_img')"></en-upload>
  21. <en-input label="备注" type="text" placeholder="请输入备注信息" v-model="item.remark"
  22. v-if="verifyKey('remark')" :noBox="true"></en-input>
  23. </view>
  24. <en-blank message="暂无车辆信息,快来添加吧!" v-if="carList.length<=0"></en-blank>
  25. <button class="size-26 r-10 button-color house-button m-t30" hover-class="is-hover"
  26. @click="addItem">+添加车辆</button>
  27. </view>
  28. </template>
  29. <script>
  30. import enInput from "@/components/en-from/en-input/en-input.vue"
  31. import EnCity from "@/components/en-from/en-city/en-city.vue";
  32. import EnUpload from "@/components/en-from/en-upload/en-upload.vue";
  33. import EnSelect from "@/components/en-from/en-select/en-select.vue";
  34. import {getTaskOptions} from "@/api/task";
  35. import md5 from "js-md5";
  36. import EnDate from "@/components/en-from/en-date/en-date.vue";
  37. import EnBlank from "@/components/en-utils/en-blank/en-blank.vue";
  38. import AddRegister from "@/page_task/property/components/add-register.vue";
  39. export default {
  40. name:'property-car',
  41. components: {
  42. AddRegister,
  43. EnBlank,
  44. EnDate,
  45. EnSelect,
  46. EnUpload,
  47. EnCity,
  48. enInput
  49. },
  50. props: {
  51. 'showKeys': {
  52. default: []
  53. },
  54. 'value': {
  55. default: {
  56. }
  57. },
  58. 'itemKey': {
  59. default: 0
  60. }
  61. },
  62. data() {
  63. return {
  64. carTypeData: [{'id': 1, 'name': '运营车'}, {'id': 2, 'name': '非运营车'}],
  65. carBrandData: [],
  66. carItem: {
  67. 'car_type': '2',
  68. 'brand_id': '',
  69. 'car_num': '',
  70. 'car_vin': '',
  71. 'colour': '',
  72. 'car_price': '',
  73. 'register_date': '',
  74. 'register_img': '',
  75. 'driving_img': '',
  76. 'car_img': [],
  77. 'remark': '',
  78. },
  79. carList:[]
  80. }
  81. },
  82. watch: {
  83. 'carList': {
  84. handler() {
  85. this.$emit("input", this.carList);
  86. },
  87. deep: true
  88. },
  89. 'value': {
  90. handler() {
  91. if (this.value) {
  92. this.setValue()
  93. }
  94. },
  95. deep: true
  96. },
  97. },
  98. mounted() {
  99. this.getTaskOptions()
  100. this.setValue()
  101. },
  102. methods: {
  103. setCarData(carData){
  104. console.log('carData')
  105. console.log(this.carData)
  106. if(carData.car_num){
  107. this.carItem.car_num=carData.car_num
  108. }
  109. if(carData.car_vin){
  110. this.carItem.car_vin=carData.car_vin
  111. }
  112. if(carData.colour){
  113. this.carItem.colour=carData.colour
  114. }
  115. if(carData.register_date){
  116. this.carItem.register_date=carData.register_date
  117. }
  118. if(carData.car_type){
  119. this.carItem.car_type=carData.car_type
  120. }
  121. if(carData.brand_id){
  122. this.carItem.brand_id=carData.brand_id
  123. }
  124. },
  125. addItem(){
  126. this.carList.push(this.carItem)
  127. },
  128. setSendMd5() {
  129. let str = JSON.stringify(this.value)
  130. this.sendMd5=md5(JSON.stringify(this.carList))
  131. return md5(str)
  132. },
  133. setValue(){
  134. if (this.value) {
  135. let sendMd5 = this.setSendMd5()
  136. if (sendMd5 !== this.sendMd5) {
  137. this.carList=this.value
  138. }
  139. }
  140. },
  141. verifyKey(field) {
  142. return this.showKeys.indexOf(field) >= 0
  143. },
  144. async getTaskOptions() {
  145. const res = await getTaskOptions({'type':2})
  146. if (res.code === 1) {
  147. res.data.carBrand.forEach((val) => {
  148. this.carBrandData.push({'text': val.name, 'value': val.value})
  149. })
  150. }
  151. },
  152. delItem(){
  153. uni.showModal({
  154. title: '警告',
  155. content: '是否删除当前车辆信息!',
  156. success: (res) => {
  157. if (res.confirm) {
  158. this.$emit('delItem',this.itemKey)
  159. }
  160. }
  161. });
  162. }
  163. }
  164. }
  165. </script>
  166. <style>
  167. .house-button {
  168. height: 70rpx;
  169. line-height: 70rpx;
  170. background: #FFFFFF;
  171. border: 1rpx solid #0FB160;
  172. }
  173. </style>