hookehuyr

refactor(车辆表单): 统一字段命名规范并优化表单逻辑

- 将表单字段从驼峰命名改为下划线命名以保持一致性
- 移除电池损耗度字段及相关逻辑
- 简化新旧程度选项
- 将年份选择器从普通选择器改为日期选择器
- 添加实际API调用逻辑替代模拟请求
1 /* 1 /*
2 * @Date: 2025-07-09 14:58:51 2 * @Date: 2025-07-09 14:58:51
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2025-07-09 15:55:25 4 + * @LastEditTime: 2025-07-09 16:07:38
5 * @FilePath: /jgdl/src/api/car.js 5 * @FilePath: /jgdl/src/api/car.js
6 * @Description: 车辆相关API接口 6 * @Description: 车辆相关API接口
7 */ 7 */
......
...@@ -132,26 +132,25 @@ ...@@ -132,26 +132,25 @@
132 </nut-form-item> 132 </nut-form-item>
133 133
134 <!-- 车辆出厂年份 --> 134 <!-- 车辆出厂年份 -->
135 - <nut-form-item label-position="top" label="车辆出厂年份" prop="year"> 135 + <nut-form-item label-position="top" label="车辆出厂年份" prop="manufacture_year">
136 <view class="form-item-content" @click="showYearPicker"> 136 <view class="form-item-content" @click="showYearPicker">
137 - <text class="form-value">{{ formData.year || '请选择' }}</text> 137 + <text class="form-value">{{ formData.manufacture_year || '请选择' }}</text>
138 <Right class="arrow-icon" /> 138 <Right class="arrow-icon" />
139 </view> 139 </view>
140 </nut-form-item> 140 </nut-form-item>
141 141
142 <!-- 新旧程度 --> 142 <!-- 新旧程度 -->
143 - <nut-form-item label-position="top" label="新旧程度" prop="condition" required 143 + <nut-form-item label-position="top" label="新旧程度" prop="new_level">
144 - :rules="[{ required: true, message: '请选择新旧程度' }]">
145 <view class="form-item-content" @click="showConditionPicker"> 144 <view class="form-item-content" @click="showConditionPicker">
146 - <text class="form-value">{{ formData.condition || '请选择' }}</text> 145 + <text class="form-value">{{ formData.new_level || '请选择' }}</text>
147 <Right class="arrow-icon" /> 146 <Right class="arrow-icon" />
148 </view> 147 </view>
149 </nut-form-item> 148 </nut-form-item>
150 149
151 <!-- 行驶里程 --> 150 <!-- 行驶里程 -->
152 - <nut-form-item label="行驶里程" prop="mileage" required 151 + <nut-form-item label="行驶里程" prop="total_mileage_km" required
153 :rules="[{ required: true, message: '请输入行驶里程' }]"> 152 :rules="[{ required: true, message: '请输入行驶里程' }]">
154 - <nut-input v-model="formData.mileage" placeholder="1200" type="number" input-align="right"> 153 + <nut-input v-model="formData.total_mileage_km" placeholder="1200" type="number" input-align="right">
155 <template #right> 154 <template #right>
156 <text class="unit">公里</text> 155 <text class="unit">公里</text>
157 </template> 156 </template>
...@@ -159,8 +158,8 @@ ...@@ -159,8 +158,8 @@
159 </nut-form-item> 158 </nut-form-item>
160 159
161 <!-- 续航里程 --> 160 <!-- 续航里程 -->
162 - <nut-form-item label="续航里程" prop="range"> 161 + <nut-form-item label="续航里程" prop="range_km">
163 - <nut-input v-model="formData.range" placeholder="60" type="number" input-align="right"> 162 + <nut-input v-model="formData.range_km" placeholder="60" type="number" input-align="right">
164 <template #right> 163 <template #right>
165 <text class="unit">公里</text> 164 <text class="unit">公里</text>
166 </template> 165 </template>
...@@ -177,8 +176,8 @@ ...@@ -177,8 +176,8 @@
177 </nut-form-item> 176 </nut-form-item>
178 177
179 <!-- 电池容量 --> 178 <!-- 电池容量 -->
180 - <nut-form-item label="电池容量" prop="batteryCapacity"> 179 + <nut-form-item label="电池容量" prop="battery_capacity_ah">
181 - <nut-input v-model="formData.batteryCapacity" placeholder="20" type="number" 180 + <nut-input v-model="formData.battery_capacity_ah" placeholder="20" type="number"
182 input-align="right"> 181 input-align="right">
183 <template #right> 182 <template #right>
184 <text class="unit">Ah</text> 183 <text class="unit">Ah</text>
...@@ -187,25 +186,25 @@ ...@@ -187,25 +186,25 @@
187 </nut-form-item> 186 </nut-form-item>
188 187
189 <!-- 电池损耗度 --> 188 <!-- 电池损耗度 -->
190 - <nut-form-item label-position="top" label="电池损耗度" prop="batteryWear"> 189 + <!-- <nut-form-item label-position="top" label="电池损耗度" prop="batteryWear">
191 <view class="form-item-content" @click="showBatteryWearPicker"> 190 <view class="form-item-content" @click="showBatteryWearPicker">
192 <text class="form-value">{{ formData.batteryWear || '请选择' }}</text> 191 <text class="form-value">{{ formData.batteryWear || '请选择' }}</text>
193 <Right class="arrow-icon" /> 192 <Right class="arrow-icon" />
194 </view> 193 </view>
195 - </nut-form-item> 194 + </nut-form-item> -->
196 195
197 <!-- 刹车磨损度 --> 196 <!-- 刹车磨损度 -->
198 - <nut-form-item label-position="top" label="刹车磨损度" prop="brakeWear"> 197 + <nut-form-item label-position="top" label="刹车磨损度" prop="brake_wear_level">
199 <view class="form-item-content" @click="showBrakeWearPicker"> 198 <view class="form-item-content" @click="showBrakeWearPicker">
200 - <text class="form-value">{{ formData.brakeWear || '请选择' }}</text> 199 + <text class="form-value">{{ formData.brake_wear_level || '请选择' }}</text>
201 <Right class="arrow-icon" /> 200 <Right class="arrow-icon" />
202 </view> 201 </view>
203 </nut-form-item> 202 </nut-form-item>
204 203
205 <!-- 轮胎磨损度 --> 204 <!-- 轮胎磨损度 -->
206 - <nut-form-item label-position="top" label="轮胎磨损度" prop="tireWear"> 205 + <nut-form-item label-position="top" label="轮胎磨损度" prop="tire_wear_level">
207 <view class="form-item-content" @click="showTireWearPicker"> 206 <view class="form-item-content" @click="showTireWearPicker">
208 - <text class="form-value">{{ formData.tireWear || '请选择' }}</text> 207 + <text class="form-value">{{ formData.tire_wear_level || '请选择' }}</text>
209 <Right class="arrow-icon" /> 208 <Right class="arrow-icon" />
210 </view> 209 </view>
211 </nut-form-item> 210 </nut-form-item>
...@@ -221,7 +220,7 @@ ...@@ -221,7 +220,7 @@
221 </view> 220 </view>
222 <view class="form-item-right"> 221 <view class="form-item-right">
223 <text class="price-symbol">¥</text> 222 <text class="price-symbol">¥</text>
224 - <input v-model="formData.sellingPrice" placeholder="3200" type="text" class="price-input" /> 223 + <input v-model="formData.price" placeholder="3200" type="text" class="price-input" />
225 </view> 224 </view>
226 </view> 225 </view>
227 226
...@@ -232,7 +231,7 @@ ...@@ -232,7 +231,7 @@
232 </view> 231 </view>
233 <view class="form-item-right"> 232 <view class="form-item-right">
234 <text class="market-price-symbol">¥</text> 233 <text class="market-price-symbol">¥</text>
235 - <input v-model="formData.marketPrice" placeholder="6500" type="text" 234 + <input v-model="formData.market_price" placeholder="6500" type="text"
236 class="market-price-input" /> 235 class="market-price-input" />
237 </view> 236 </view>
238 </view> 237 </view>
...@@ -240,7 +239,7 @@ ...@@ -240,7 +239,7 @@
240 239
241 <!-- 车辆描述 --> 240 <!-- 车辆描述 -->
242 <view class="form-section"> 241 <view class="form-section">
243 - <nut-textarea v-model="formData.description" placeholder="请描述车辆详情,如使用感受、车况特点等" /> 242 + <nut-textarea v-model="formData.note" placeholder="请描述车辆详情,如使用感受、车况特点等" />
244 </view> 243 </view>
245 </view> 244 </view>
246 245
...@@ -280,8 +279,13 @@ ...@@ -280,8 +279,13 @@
280 279
281 <!-- 年份选择 --> 280 <!-- 年份选择 -->
282 <nut-popup v-model:visible="yearPickerVisible" position="bottom"> 281 <nut-popup v-model:visible="yearPickerVisible" position="bottom">
283 - <nut-picker v-model="yearValue" :columns="yearOptions" title="选择出厂年份" @confirm="onYearConfirm" 282 + <nut-date-picker
284 - @cancel="yearPickerVisible = false" /> 283 + v-model="yearValue"
284 + title="选择出厂年份"
285 + type="year-month"
286 + @confirm="onYearConfirm"
287 + @cancel="yearPickerVisible = false"
288 + />
285 </nut-popup> 289 </nut-popup>
286 290
287 <!-- 新旧程度选择 --> 291 <!-- 新旧程度选择 -->
...@@ -319,6 +323,9 @@ import BrandModelPicker from '@/components/BrandModelPicker.vue' ...@@ -319,6 +323,9 @@ import BrandModelPicker from '@/components/BrandModelPicker.vue'
319 import { checkPermission, PERMISSION_TYPES } from '@/utils/permission' 323 import { checkPermission, PERMISSION_TYPES } from '@/utils/permission'
320 import './index.less' 324 import './index.less'
321 325
326 +// 导入接口
327 +import { addVehicleAPI, editVehicleAPI, getVehicleDetailAPI } from '@/api/car';
328 +
322 const themeVars = ref({ 329 const themeVars = ref({
323 navbarBackground: '#fb923c', 330 navbarBackground: '#fb923c',
324 navbarColor: '#ffffff', 331 navbarColor: '#ffffff',
...@@ -341,12 +348,6 @@ const isAuthMode = ref(type === 'auth' && id) ...@@ -341,12 +348,6 @@ const isAuthMode = ref(type === 'auth' && id)
341 const isMyCarMode = ref(type === 'myCar' && id) 348 const isMyCarMode = ref(type === 'myCar' && id)
342 const carId = ref(id || '') 349 const carId = ref(id || '')
343 350
344 -// 文件上传相关
345 -// const frontFileList = ref([]) // 正面照(保留用于兼容旧代码)
346 -// const leftFileList = ref([]) // 左侧照(保留用于兼容旧代码)
347 -// const rightFileList = ref([]) // 右侧照(保留用于兼容旧代码)
348 -// const otherFileList = ref([]) // 其他照片(保留用于兼容旧代码)
349 -
350 // 已上传图片的URL 351 // 已上传图片的URL
351 const uploadedImages = reactive({ 352 const uploadedImages = reactive({
352 front: '', 353 front: '',
...@@ -370,18 +371,18 @@ const formData = reactive({ ...@@ -370,18 +371,18 @@ const formData = reactive({
370 brand: '', 371 brand: '',
371 model: '', 372 model: '',
372 brandModel: '', // 品牌型号组合字段,用于表单验证 373 brandModel: '', // 品牌型号组合字段,用于表单验证
373 - year: '', 374 + manufacture_year: '',
374 - condition: '', 375 + new_level: '',
375 - mileage: '1200', 376 + total_mileage_km: '1200',
376 - range: '60', 377 + range_km: '60',
377 maxSpeed: '25', 378 maxSpeed: '25',
378 - batteryCapacity: '20', 379 + battery_capacity_ah: '20',
379 batteryWear: '', 380 batteryWear: '',
380 - brakeWear: '', 381 + brake_wear_level: '',
381 - tireWear: '', 382 + tire_wear_level: '',
382 - sellingPrice: '3200', 383 + price: '3200',
383 - marketPrice: '6500', 384 + market_price: '6500',
384 - description: '' 385 + note: ''
385 }) 386 })
386 387
387 // 选择器显示状态 388 // 选择器显示状态
...@@ -402,7 +403,7 @@ const brandModelPickerRef = ref(null) ...@@ -402,7 +403,7 @@ const brandModelPickerRef = ref(null)
402 const schoolValue = ref([]) 403 const schoolValue = ref([])
403 const brandValue = ref([]) 404 const brandValue = ref([])
404 const modelValue = ref([]) 405 const modelValue = ref([])
405 -const yearValue = ref([]) 406 +const yearValue = ref(new Date())
406 const conditionValue = ref([]) 407 const conditionValue = ref([])
407 const batteryWearValue = ref([]) 408 const batteryWearValue = ref([])
408 const brakeWearValue = ref([]) 409 const brakeWearValue = ref([])
...@@ -441,19 +442,10 @@ const modelOptions = ref([ ...@@ -441,19 +442,10 @@ const modelOptions = ref([
441 { text: '其他型号', value: '其他型号' } 442 { text: '其他型号', value: '其他型号' }
442 ]) 443 ])
443 444
444 -const yearOptions = ref([ 445 +
445 - { text: '2024年', value: '2024年' },
446 - { text: '2023年', value: '2023年' },
447 - { text: '2022年', value: '2022年' },
448 - { text: '2021年', value: '2021年' },
449 - { text: '2020年', value: '2020年' },
450 - { text: '2019年', value: '2019年' },
451 - { text: '2018年及以前', value: '2018年及以前' }
452 -])
453 446
454 const conditionOptions = ref([ 447 const conditionOptions = ref([
455 { text: '全新', value: '全新' }, 448 { text: '全新', value: '全新' },
456 - { text: '9成新', value: '9成新' },
457 { text: '8成新', value: '8成新' }, 449 { text: '8成新', value: '8成新' },
458 { text: '7成新', value: '7成新' }, 450 { text: '7成新', value: '7成新' },
459 { text: '6成新', value: '6成新' }, 451 { text: '6成新', value: '6成新' },
...@@ -468,10 +460,6 @@ const wearLevelOptions = ref([ ...@@ -468,10 +460,6 @@ const wearLevelOptions = ref([
468 { text: '需要更换', value: '需要更换' } 460 { text: '需要更换', value: '需要更换' }
469 ]) 461 ])
470 462
471 -// 品牌型号数据已移至 BrandModelPicker 组件中
472 -
473 -
474 -
475 /** 463 /**
476 * 触发图片上传 464 * 触发图片上传
477 * @param {String} type - 图片类型 (front/left/right/other) 465 * @param {String} type - 图片类型 (front/left/right/other)
...@@ -570,15 +558,6 @@ const deleteImage = (type) => { ...@@ -570,15 +558,6 @@ const deleteImage = (type) => {
570 }) 558 })
571 } 559 }
572 560
573 -// 保留旧的上传逻辑作为备用(已注释)
574 -// const afterRead = (event, type) => { ... }
575 -
576 -// 保留旧的删除逻辑作为备用(已注释)
577 -// const onDeleteFront = (file, index) => { frontFileList.value.splice(index, 1) }
578 -// const onDeleteLeft = (file, index) => { leftFileList.value.splice(index, 1) }
579 -// const onDeleteRight = (file, index) => { rightFileList.value.splice(index, 1) }
580 -// const onDeleteOther = (file, index) => { otherFileList.value.splice(index, 1) }
581 -
582 /** 561 /**
583 * 显示学校选择器 562 * 显示学校选择器
584 */ 563 */
...@@ -624,9 +603,9 @@ const showConditionPicker = () => { ...@@ -624,9 +603,9 @@ const showConditionPicker = () => {
624 /** 603 /**
625 * 显示电池损耗度选择器 604 * 显示电池损耗度选择器
626 */ 605 */
627 -const showBatteryWearPicker = () => { 606 +// const showBatteryWearPicker = () => {
628 - batteryWearPickerVisible.value = true 607 +// batteryWearPickerVisible.value = true
629 -} 608 +// }
630 609
631 /** 610 /**
632 * 显示刹车磨损度选择器 611 * 显示刹车磨损度选择器
...@@ -671,7 +650,7 @@ const onModelConfirm = ({ selectedValue }) => { ...@@ -671,7 +650,7 @@ const onModelConfirm = ({ selectedValue }) => {
671 * 年份选择确认 650 * 年份选择确认
672 */ 651 */
673 const onYearConfirm = ({ selectedValue }) => { 652 const onYearConfirm = ({ selectedValue }) => {
674 - formData.year = selectedValue[0] 653 + formData.manufacture_year = `${selectedValue[0]}年`
675 yearPickerVisible.value = false 654 yearPickerVisible.value = false
676 } 655 }
677 656
...@@ -679,7 +658,7 @@ const onYearConfirm = ({ selectedValue }) => { ...@@ -679,7 +658,7 @@ const onYearConfirm = ({ selectedValue }) => {
679 * 新旧程度选择确认 658 * 新旧程度选择确认
680 */ 659 */
681 const onConditionConfirm = ({ selectedValue }) => { 660 const onConditionConfirm = ({ selectedValue }) => {
682 - formData.condition = selectedValue[0] 661 + formData.new_level = selectedValue[0]
683 conditionPickerVisible.value = false 662 conditionPickerVisible.value = false
684 } 663 }
685 664
...@@ -695,7 +674,7 @@ const onBatteryWearConfirm = ({ selectedValue }) => { ...@@ -695,7 +674,7 @@ const onBatteryWearConfirm = ({ selectedValue }) => {
695 * 刹车磨损度选择确认 674 * 刹车磨损度选择确认
696 */ 675 */
697 const onBrakeWearConfirm = ({ selectedValue }) => { 676 const onBrakeWearConfirm = ({ selectedValue }) => {
698 - formData.brakeWear = selectedValue[0] 677 + formData.brake_wear_level = selectedValue[0]
699 brakeWearPickerVisible.value = false 678 brakeWearPickerVisible.value = false
700 } 679 }
701 680
...@@ -703,7 +682,7 @@ const onBrakeWearConfirm = ({ selectedValue }) => { ...@@ -703,7 +682,7 @@ const onBrakeWearConfirm = ({ selectedValue }) => {
703 * 轮胎磨损度选择确认 682 * 轮胎磨损度选择确认
704 */ 683 */
705 const onTireWearConfirm = ({ selectedValue }) => { 684 const onTireWearConfirm = ({ selectedValue }) => {
706 - formData.tireWear = selectedValue[0] 685 + formData.tire_wear_level = selectedValue[0]
707 tireWearPickerVisible.value = false 686 tireWearPickerVisible.value = false
708 } 687 }
709 688
...@@ -737,10 +716,32 @@ const onBrandModelCancel = () => { ...@@ -737,10 +716,32 @@ const onBrandModelCancel = () => {
737 // 可以在这里处理取消逻辑 716 // 可以在这里处理取消逻辑
738 } 717 }
739 718
719 +const createCar = async (data) => {
720 + const { code } = await addVehicleAPI({ ...data })
721 + if (code) {
722 + Taro.showToast({
723 + title: '发布成功',
724 + icon: 'success'
725 + })
726 + Taro.navigateBack()
727 + }
728 +}
729 +
730 +const updateCar = async (id, data) => {
731 + const { code } = await updateVehicleAPI({ id, ...data })
732 + if (code) {
733 + Taro.showToast({
734 + title: '保存成功',
735 + icon: 'success'
736 + })
737 + Taro.navigateBack()
738 + }
739 +}
740 +
740 /** 741 /**
741 * 发布/保存车辆 742 * 发布/保存车辆
742 */ 743 */
743 -const onPublish = () => { 744 +const onPublish = async () => {
744 if (!validateForm()) return 745 if (!validateForm()) return
745 746
746 const loadingTitle = isEditMode.value ? '保存中...' : '发布中...' 747 const loadingTitle = isEditMode.value ? '保存中...' : '发布中...'
...@@ -758,19 +759,21 @@ const onPublish = () => { ...@@ -758,19 +759,21 @@ const onPublish = () => {
758 const submitData = { 759 const submitData = {
759 ...formData, 760 ...formData,
760 images: images, 761 images: images,
761 - imageUrls: Object.values(images).filter(url => url) // 过滤空URL 762 + photo_meta_ids: Object.values(images).filter(url => url) // 过滤空URL
762 } 763 }
763 764
765 + console.warn(submitData);
766 +
764 if (isEditMode.value) { 767 if (isEditMode.value) {
765 submitData.id = carId.value 768 submitData.id = carId.value
766 } 769 }
767 770
768 - // TODO: 在此处调用实际的API接口提交数据 771 + // 在此处调用实际的API接口提交数据
769 - // if (isEditMode.value) { 772 + if (isEditMode.value) {
770 - // updateCar(carId.value, submitData) 773 + await updateCar(carId.value, submitData)
771 - // } else { 774 + } else {
772 - // createCar(submitData) 775 + await createCar(submitData)
773 - // } 776 + }
774 777
775 // 模拟请求 778 // 模拟请求
776 setTimeout(() => { 779 setTimeout(() => {
...@@ -809,17 +812,17 @@ const validateForm = () => { ...@@ -809,17 +812,17 @@ const validateForm = () => {
809 return false 812 return false
810 } 813 }
811 814
812 - if (!formData.condition) { 815 + // if (!formData.new_level) {
813 - Taro.showToast({ title: '请选择新旧程度', icon: 'none' }) 816 + // Taro.showToast({ title: '请选择新旧程度', icon: 'none' })
814 - return false 817 + // return false
815 - } 818 + // }
816 819
817 - if (!formData.mileage || formData.mileage <= 0) { 820 + if (!formData.total_mileage_km || formData.total_mileage_km <= 0) {
818 Taro.showToast({ title: '请输入正确的行驶里程', icon: 'none' }) 821 Taro.showToast({ title: '请输入正确的行驶里程', icon: 'none' })
819 return false 822 return false
820 } 823 }
821 824
822 - if (!formData.sellingPrice) { 825 + if (!formData.price) {
823 Taro.showToast({ title: '请输入出让价格', icon: 'none' }) 826 Taro.showToast({ title: '请输入出让价格', icon: 'none' })
824 return false 827 return false
825 } 828 }
...@@ -844,18 +847,18 @@ const loadCarData = async () => { ...@@ -844,18 +847,18 @@ const loadCarData = async () => {
844 school: '上海理工大学', 847 school: '上海理工大学',
845 brand: '小牛电动', 848 brand: '小牛电动',
846 model: 'NGT', 849 model: 'NGT',
847 - year: '2023年', 850 + manufacture_year: '2023年',
848 - condition: '9成新', 851 + new_level: '9成新',
849 - mileage: '1200', 852 + total_mileage_km: '1200',
850 - range: '60', 853 + range_km: '60',
851 maxSpeed: '25', 854 maxSpeed: '25',
852 - batteryCapacity: '20', 855 + battery_capacity_ah: '20',
853 batteryWear: '轻微磨损', 856 batteryWear: '轻微磨损',
854 - brakeWear: '轻微磨损', 857 + brake_wear_level: '轻微磨损',
855 - tireWear: '轻微磨损', 858 + tire_wear_level: '轻微磨损',
856 - sellingPrice: '3200', 859 + price: '3200',
857 - marketPrice: '6500', 860 + market_price: '6500',
858 - description: '车况良好,电池续航正常,无重大事故,平时保养得当。', 861 + note: '车况良好,电池续航正常,无重大事故,平时保养得当。',
859 images: { 862 images: {
860 front: 'https://picsum.photos/300/200?random=1', 863 front: 'https://picsum.photos/300/200?random=1',
861 left: 'https://picsum.photos/300/200?random=2', 864 left: 'https://picsum.photos/300/200?random=2',
...@@ -869,18 +872,18 @@ const loadCarData = async () => { ...@@ -869,18 +872,18 @@ const loadCarData = async () => {
869 school: mockCarData.school, 872 school: mockCarData.school,
870 brand: mockCarData.brand, 873 brand: mockCarData.brand,
871 model: mockCarData.model, 874 model: mockCarData.model,
872 - year: mockCarData.year, 875 + manufacture_year: mockCarData.manufacture_year,
873 - condition: mockCarData.condition, 876 + new_level: mockCarData.new_level,
874 - mileage: mockCarData.mileage, 877 + total_mileage_km: mockCarData.total_mileage_km,
875 - range: mockCarData.range, 878 + range_km: mockCarData.range_km,
876 maxSpeed: mockCarData.maxSpeed, 879 maxSpeed: mockCarData.maxSpeed,
877 - batteryCapacity: mockCarData.batteryCapacity, 880 + battery_capacity_ah: mockCarData.battery_capacity_ah,
878 batteryWear: mockCarData.batteryWear, 881 batteryWear: mockCarData.batteryWear,
879 - brakeWear: mockCarData.brakeWear, 882 + brake_wear_level: mockCarData.brake_wear_level,
880 - tireWear: mockCarData.tireWear, 883 + tire_wear_level: mockCarData.tire_wear_level,
881 - sellingPrice: mockCarData.sellingPrice, 884 + price: mockCarData.price,
882 - marketPrice: mockCarData.marketPrice, 885 + market_price: mockCarData.market_price,
883 - description: mockCarData.description 886 + note: mockCarData.note
884 }) 887 })
885 888
886 // 填充图片数据 889 // 填充图片数据
......