car.vue 5.5 KB

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