vehicleModel.vue 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865
  1. <template>
  2. <div class="vehicleModelPanel">
  3. <model-list
  4. ref="modelList"
  5. class="modelList"
  6. @showInfo="showInfo"
  7. @addOne="addOne"
  8. @delOne="delOne"
  9. :getListApi="getListApi"
  10. :showName="showName"
  11. :curOne="curOne"
  12. ></model-list>
  13. <div class="contentPanel">
  14. <el-form
  15. ref="form"
  16. :model="form"
  17. :rules="rules"
  18. label-width="160px"
  19. >
  20. <div class="flexBox">
  21. <el-form-item label="车辆设置方式:" prop="parameterType">
  22. <el-select
  23. v-model="form.parameterType"
  24. :disabled="form.share != ''"
  25. @change="parameterTypeChange"
  26. >
  27. <el-option
  28. v-for="item in parameterTypeList"
  29. :label="item.caption"
  30. :value="item.code"
  31. :key="item.code"
  32. ></el-option>
  33. </el-select>
  34. </el-form-item>
  35. <div class="inputBox flexBox">
  36. <span class="label">车辆ID:</span>
  37. <div>{{ form.vehicleCode }}</div>
  38. </div>
  39. </div>
  40. <div class="flexBox">
  41. <el-form-item label="车辆名称:" prop="vehicleName">
  42. <el-input
  43. placeholder="请输入"
  44. maxlength="60"
  45. v-autoTrim="{ obj: form, key: 'vehicleName' }"
  46. v-model="form.vehicleName"
  47. >
  48. </el-input>
  49. </el-form-item>
  50. <el-form-item label="车辆描述:" prop="description">
  51. <el-input
  52. v-autoTrim="{ obj: form, key: 'description' }"
  53. v-model="form.description"
  54. placeholder="请输入"
  55. maxlength="200"
  56. ></el-input>
  57. </el-form-item>
  58. <el-form-item label="车辆模型:" prop="vehicleType">
  59. <el-cascader
  60. ref="cascader"
  61. v-model="form.vehicleType"
  62. :options="modelLabelList"
  63. :props="props"
  64. @change="modelLabelChange"
  65. ></el-cascader>
  66. </el-form-item>
  67. <el-form-item label="车辆模型标识:" prop="modelLabel">
  68. <el-input
  69. placeholder="请输入"
  70. v-autoTrim="{ obj: form, key: 'modelLabel' }"
  71. v-model="form.modelLabel"
  72. disabled
  73. >
  74. </el-input>
  75. </el-form-item>
  76. <el-form-item
  77. v-if="form.parameterType != '1'"
  78. label="参数文件:"
  79. prop=""
  80. >
  81. <el-input
  82. placeholder="请输入"
  83. maxlength="120"
  84. v-model="file"
  85. disabled
  86. :title="file"
  87. >
  88. </el-input>
  89. <upload
  90. ref="upload"
  91. :multiple="false"
  92. @attachmentChange="attachmentChange"
  93. ></upload>
  94. </el-form-item>
  95. </div>
  96. <vtd
  97. ref="vtd"
  98. v-if="form.parameterType === '1'"
  99. :wheelDriveList="wheelDriveList"
  100. ></vtd>
  101. <Carsim
  102. ref="carsim"
  103. v-if="form.parameterType != '1'"
  104. :suspensionTypeList="suspensionTypeList"
  105. :brakeTypeList="brakeTypeList"
  106. :steeringTypeList="steeringTypeList"
  107. :steeringGearTypeList="steeringGearTypeList"
  108. :driverTypeList="driverTypeList"
  109. ></Carsim>
  110. <div class="titlePanel">
  111. <div class="titlePanelBor">3D视图</div>
  112. </div>
  113. <div class="modelBox">
  114. <!-- <img v-show="modelImgSrc" :src="modelImgSrc" width="100%" /> -->
  115. <three-show
  116. ref="threeShow"
  117. :carModel="carModel"
  118. ></three-show>
  119. </div>
  120. </el-form>
  121. <div class="btns">
  122. <!-- 新增和私有才能修改和保存 -->
  123. <!-- 私有才能分享 -->
  124. <!-- share有值 才能另存为 -->
  125. <el-button
  126. type="primary"
  127. v-show="form.share === '0' || form.share === ''"
  128. @click="save(false)"
  129. >保存</el-button
  130. >
  131. <el-button
  132. type="primary"
  133. v-if="roleCode === '0' || roleCode === '1'"
  134. v-show="form.share === '0'"
  135. @click="share"
  136. >分享</el-button
  137. >
  138. <el-button
  139. type="primary"
  140. v-show="form.share === '0' || form.share === '1'"
  141. @click="save(true)"
  142. >另存为</el-button
  143. >
  144. <el-button type="primary" plain @click="cancel">取消</el-button>
  145. </div>
  146. </div>
  147. </div>
  148. </template>
  149. <script>
  150. import modelList from "./components/modelTypeList.vue";
  151. import { mapState } from "vuex";
  152. import threeShow from "./components/threeVehicleModel.vue";
  153. import vtd from "./components/vehicleModelVTD.vue";
  154. import Carsim from "./components/vehicleModelCarsim.vue";
  155. import upload from "./components/uploadPar.vue";
  156. export default {
  157. name: "vehicleModel", // 车辆模型
  158. components: { modelList, threeShow, vtd, Carsim, upload },
  159. data() {
  160. // 校验非负且最多4位小数
  161. let validateNum = (rule, value, callback) => {
  162. !/^(0|[1-9][0-9]*)(\.\d{1,4})?$/.test(value) &&
  163. callback(new Error(rule.message));
  164. callback();
  165. };
  166. // 校验不大于1
  167. let validateNoMore1 = (rule, value, callback) => {
  168. if (value > 1) {
  169. callback(new Error(rule.message));
  170. return;
  171. }
  172. callback();
  173. };
  174. return {
  175. getListApi: this.$api.modelLibrary.getVehicleList, // 获取列表api
  176. showName: "vehicleName",
  177. typeList: [],
  178. // imgSrc: require("@/assets/common/image/car.png"),
  179. form: {
  180. parameterType: "1", // 车辆设置方式
  181. vehicleCode: "", // 车辆ID
  182. vehicleName: "", // 车辆名称
  183. description: "", // 车辆描述
  184. // file: "", // 参数文件
  185. // vehicleType: "", // 车辆类型
  186. // vehicleModel: "", // 车辆型号
  187. // vehicleColour: "", // 车辆颜色
  188. vehicleType: [], // 车辆模型
  189. modelLabel: "", // 车辆模型标识
  190. // maxSpeed: "", // 最大速度
  191. // enginePower: "", // 发动机功率
  192. // maxDeceleration: "", // 最大减速度
  193. // maxSteeringAngle: "", // 最大转角
  194. // wheelDrive: "", // 驱动方式
  195. // overallEfficiency: "", // 总效率
  196. // frontSurfaceEffective: "", // 前表面有效面积
  197. // airDragCoefficient: "", // 空气阻力系数
  198. // rollingResistanceCoefficient: "", // 滚动阻力系数
  199. // wheelDiameter: "", // 车轮直径
  200. // frontDistance: "", // 车前距
  201. // rearDistance: "", // 车后距
  202. // leftDistance: "", // 车左距
  203. // rightDistance: "", // 车右距
  204. // heightDistance: "", // 车高
  205. // wheelbase: "", // 轴距
  206. // mass: "", // 质量
  207. share: "", // 分享
  208. // vehicleImage: "", // 对应的图片相对地址
  209. id: "",
  210. vehicleFrontView: "", // 对应的图片相对地址
  211. vehicleTopView: "", // 对应的图片相对地址
  212. },
  213. vehicleTypeList: [],
  214. vehicleModelList: [],
  215. vehicleColourList: [],
  216. wheelDriveList: [],
  217. parameterTypeList: [],
  218. suspensionTypeList: [],
  219. brakeTypeList: [],
  220. steeringTypeList: [],
  221. steeringGearTypeList: [],
  222. driverTypeList: [],
  223. rules: {
  224. parameterType: [
  225. { required: true, message: "请选择", trigger: "change" },
  226. ],
  227. vehicleName: [
  228. { required: true, message: "请输入", trigger: "blur" },
  229. ],
  230. description: [
  231. { required: true, message: "请输入", trigger: "blur" },
  232. ],
  233. vehicleType: [
  234. { required: true, message: "请选择", trigger: "change" },
  235. ],
  236. modelLabel: [
  237. { required: true, message: "请输入", trigger: "blur" },
  238. ],
  239. // file: [{ required: true, message: "请上传", trigger: "blur" }],
  240. // vehicleModel: [
  241. // { required: true, message: "请输入", trigger: "blur" },
  242. // ],
  243. // vehicleColour: [
  244. // { required: true, message: "请输入", trigger: "blur" },
  245. // ],
  246. // maxSpeed: [
  247. // { required: true, message: "请输入", trigger: "blur" },
  248. // {
  249. // validator: validateNum,
  250. // message: "请输入最多带有4位小数的非负数",
  251. // trigger: ["blur"],
  252. // },
  253. // ],
  254. // enginePower: [
  255. // { required: true, message: "请输入", trigger: "blur" },
  256. // {
  257. // validator: validateNum,
  258. // message: "请输入最多带有4位小数的非负数",
  259. // trigger: ["blur"],
  260. // },
  261. // ],
  262. // maxDeceleration: [
  263. // { required: true, message: "请输入", trigger: "blur" },
  264. // {
  265. // validator: validateNum,
  266. // message: "请输入最多带有4位小数的非负数",
  267. // trigger: ["blur"],
  268. // },
  269. // ],
  270. // maxSteeringAngle: [
  271. // { required: true, message: "请输入", trigger: "blur" },
  272. // {
  273. // validator: validateNum,
  274. // message: "请输入最多带有4位小数的非负数",
  275. // trigger: ["blur"],
  276. // },
  277. // ],
  278. // overallEfficiency: [
  279. // { required: true, message: "请输入", trigger: "blur" },
  280. // {
  281. // validator: validateNoMore1,
  282. // message: "请输入不大于1的非负数",
  283. // trigger: ["blur"],
  284. // },
  285. // {
  286. // validator: validateNum,
  287. // message: "请输入最多带有4位小数的非负数",
  288. // trigger: ["blur"],
  289. // },
  290. // ],
  291. // frontSurfaceEffective: [
  292. // { required: true, message: "请输入", trigger: "blur" },
  293. // {
  294. // validator: validateNum,
  295. // message: "请输入最多带有4位小数的非负数",
  296. // trigger: ["blur"],
  297. // },
  298. // ],
  299. // airDragCoefficient: [
  300. // { required: true, message: "请输入", trigger: "blur" },
  301. // {
  302. // validator: validateNoMore1,
  303. // message: "请输入不大于1的非负数",
  304. // trigger: ["blur"],
  305. // },
  306. // {
  307. // validator: validateNum,
  308. // message: "请输入最多带有4位小数的非负数",
  309. // trigger: ["blur"],
  310. // },
  311. // ],
  312. // rollingResistanceCoefficient: [
  313. // { required: true, message: "请输入", trigger: "blur" },
  314. // {
  315. // validator: validateNoMore1,
  316. // message: "请输入不大于1的非负数",
  317. // trigger: ["blur"],
  318. // },
  319. // {
  320. // validator: validateNum,
  321. // message: "请输入最多带有4位小数的非负数",
  322. // trigger: ["blur"],
  323. // },
  324. // ],
  325. // wheelDiameter: [
  326. // { required: true, message: "请输入", trigger: "blur" },
  327. // {
  328. // validator: validateNum,
  329. // message: "请输入最多带有4位小数的非负数",
  330. // trigger: ["blur"],
  331. // },
  332. // ],
  333. // frontDistance: [
  334. // { required: true, message: "请输入", trigger: "blur" },
  335. // {
  336. // validator: validateNum,
  337. // message: "请输入最多带有4位小数的非负数",
  338. // trigger: ["blur"],
  339. // },
  340. // ],
  341. // rearDistance: [
  342. // { required: true, message: "请输入", trigger: "blur" },
  343. // {
  344. // validator: validateNum,
  345. // message: "请输入最多带有4位小数的非负数",
  346. // trigger: ["blur"],
  347. // },
  348. // ],
  349. // leftDistance: [
  350. // { required: true, message: "请输入", trigger: "blur" },
  351. // {
  352. // validator: validateNum,
  353. // message: "请输入最多带有4位小数的非负数",
  354. // trigger: ["blur"],
  355. // },
  356. // ],
  357. // rightDistance: [
  358. // { required: true, message: "请输入", trigger: "blur" },
  359. // {
  360. // validator: validateNum,
  361. // message: "请输入最多带有4位小数的非负数",
  362. // trigger: ["blur"],
  363. // },
  364. // ],
  365. // heightDistance: [
  366. // { required: true, message: "请输入", trigger: "blur" },
  367. // {
  368. // validator: validateNum,
  369. // message: "请输入最多带有4位小数的非负数",
  370. // trigger: ["blur"],
  371. // },
  372. // ],
  373. // wheelbase: [
  374. // { required: true, message: "请输入", trigger: "blur" },
  375. // {
  376. // validator: validateNum,
  377. // message: "请输入最多带有4位小数的非负数",
  378. // trigger: ["blur"],
  379. // },
  380. // ],
  381. // mass: [
  382. // { required: true, message: "请输入", trigger: "blur" },
  383. // {
  384. // validator: validateNum,
  385. // message: "请输入最多带有4位小数的非负数",
  386. // trigger: ["blur"],
  387. // },
  388. // ],
  389. // wheelDrive: [
  390. // { required: true, message: "请选择", trigger: "change" },
  391. // ],
  392. },
  393. props: {
  394. multiple: false,
  395. label: "name",
  396. value: "code",
  397. },
  398. modelLabelList: [],
  399. modelImgSrc: "",
  400. // 用于当前选中项的展示
  401. curOne: {
  402. share: "",
  403. id: "",
  404. },
  405. carModel: "",
  406. file: "", // 参数文件
  407. };
  408. },
  409. computed: {
  410. ...mapState(["fileHost", "fileUrl", "roleCode"]),
  411. },
  412. methods: {
  413. updateForm(t, o) {
  414. let form = {};
  415. if (t === "1") {
  416. form.maxSpeed = o.maxSpeed;
  417. form.enginePower = o.enginePower;
  418. form.maxDeceleration = o.maxDeceleration;
  419. form.maxSteeringAngle = o.maxSteeringAngle;
  420. form.wheelDrive = o.wheelDrive;
  421. form.overallEfficiency = o.overallEfficiency;
  422. form.frontSurfaceEffective = o.frontSurfaceEffective;
  423. form.airDragCoefficient = o.airDragCoefficient;
  424. form.rollingResistanceCoefficient =
  425. o.rollingResistanceCoefficient;
  426. form.wheelDiameter = o.wheelDiameter;
  427. form.frontDistance = o.frontDistance;
  428. form.rearDistance = o.rearDistance;
  429. form.leftDistance = o.leftDistance;
  430. form.rightDistance = o.rightDistance;
  431. form.heightDistance = o.heightDistance;
  432. form.wheelbase = o.wheelbase;
  433. form.mass = o.mass;
  434. this.$refs.vtd.form = form;
  435. } else {
  436. form.vehicleLength = o.vehicleLength;
  437. form.sprungMass = o.sprungMass;
  438. form.vehicleWidth = o.vehicleWidth;
  439. form.rotationalInertiaX = o.rotationalInertiaX;
  440. form.rotationalInertiaY = o.rotationalInertiaY;
  441. form.rotationalInertiaZ = o.rotationalInertiaZ;
  442. form.wheelCenterToTop = o.wheelCenterToTop;
  443. form.wheelCenterToGround = o.wheelCenterToGround;
  444. form.centroidToFrontWheelCenter = o.centroidToFrontWheelCenter;
  445. form.centroidToGround = o.centroidToGround;
  446. form.wheelbase = o.wheelbase;
  447. form.frontLeftWheelEffectiveRollingRadius =
  448. o.frontLeftWheelEffectiveRollingRadius;
  449. form.frontLeftWheelRollingResistanceCoefficient =
  450. o.frontLeftWheelRollingResistanceCoefficient;
  451. form.frontLeftWheelFreeRadius = o.frontLeftWheelFreeRadius;
  452. form.rearLeftWheelEffectiveRollingRadius =
  453. o.rearLeftWheelEffectiveRollingRadius;
  454. form.rearLeftWheelRollingResistanceCoefficient =
  455. o.rearLeftWheelRollingResistanceCoefficient;
  456. form.rearLeftWheelFreeRadius = o.rearLeftWheelFreeRadius;
  457. form.frontRightWheelEffectiveRollingRadius =
  458. o.frontRightWheelEffectiveRollingRadius;
  459. form.frontRightWheelRollingResistanceCoefficient =
  460. o.frontRightWheelRollingResistanceCoefficient;
  461. form.frontRightWheelFreeRadius = o.frontRightWheelFreeRadius;
  462. form.rearRightWheelEffectiveRollingRadius =
  463. o.rearRightWheelEffectiveRollingRadius;
  464. form.rearRightWheelRollingResistanceCoefficient =
  465. o.rearRightWheelRollingResistanceCoefficient;
  466. form.rearRightWheelFreeRadius = o.rearRightWheelFreeRadius;
  467. form.frontLeftWheelRelationCurvePositiveMomentAndSideslipAngle =
  468. o.frontLeftWheelRelationCurvePositiveMomentAndSideslipAngle;
  469. form.frontLeftWheelRelationCurveLateralForceAndSideslipAngle =
  470. o.frontLeftWheelRelationCurveLateralForceAndSideslipAngle;
  471. form.frontLeftWheelRelationCurveLongitudinalForceAndSideslipAngle =
  472. o.frontLeftWheelRelationCurveLongitudinalForceAndSideslipAngle;
  473. form.rearLeftWheelRelationCurvePositiveMomentAndSideslipAngle =
  474. o.rearLeftWheelRelationCurvePositiveMomentAndSideslipAngle;
  475. form.rearLeftWheelRelationCurveLateralForceAndSideslipAngle =
  476. o.rearLeftWheelRelationCurveLateralForceAndSideslipAngle;
  477. form.rearLeftWheelRelationCurveLongitudinalForceAndSideslipAngle =
  478. o.rearLeftWheelRelationCurveLongitudinalForceAndSideslipAngle;
  479. form.frontRightWheelRelationCurvePositiveMomentAndSideslipAngle =
  480. o.frontRightWheelRelationCurvePositiveMomentAndSideslipAngle;
  481. form.frontRightWheelRelationCurveLateralForceAndSideslipAngle =
  482. o.frontRightWheelRelationCurveLateralForceAndSideslipAngle;
  483. form.frontRightWheelRelationCurveLongitudinalForceAndSideslipAngle =
  484. o.frontRightWheelRelationCurveLongitudinalForceAndSideslipAngle;
  485. form.rearRightWheelRelationCurvePositiveMomentAndSideslipAngle =
  486. o.rearRightWheelRelationCurvePositiveMomentAndSideslipAngle;
  487. form.rearRightWheelRelationCurveLateralForceAndSideslipAngle =
  488. o.rearRightWheelRelationCurveLateralForceAndSideslipAngle;
  489. form.rearRightWheelRelationCurveLongitudinalForceAndSideslipAngle =
  490. o.rearRightWheelRelationCurveLongitudinalForceAndSideslipAngle;
  491. form.frontWheelSuspensionType = o.frontWheelSuspensionType;
  492. form.frontWheelSuspensionKinematicsCoefficient =
  493. o.frontWheelSuspensionKinematicsCoefficient;
  494. form.frontWheelUnsprungMass = o.frontWheelUnsprungMass;
  495. form.frontWheelTrackWidth = o.frontWheelTrackWidth;
  496. form.rearWheelSuspensionType = o.rearWheelSuspensionType;
  497. form.rearWheelSuspensionKinematicsCoefficient =
  498. o.rearWheelSuspensionKinematicsCoefficient;
  499. form.rearWheelUnsprungMass = o.rearWheelUnsprungMass;
  500. form.rearWheelTrackWidth = o.rearWheelTrackWidth;
  501. form.windwardArea = o.windwardArea;
  502. form.airDensity = o.airDensity;
  503. form.engineCrankshaftMomentInertia =
  504. o.engineCrankshaftMomentInertia;
  505. form.idleSpeed = o.idleSpeed;
  506. form.driverType = o.driverType;
  507. form.relationCurveEngineTorqueSpeedAndThrottleOpening =
  508. o.relationCurveEngineTorqueSpeedAndThrottleOpening;
  509. form.momentInertiaInputShaft = o.momentInertiaInputShaft;
  510. form.momentInertiaOutputShaft = o.momentInertiaOutputShaft;
  511. form.finalDriveRatio = o.finalDriveRatio;
  512. form.transmissionEfficiency = o.transmissionEfficiency;
  513. form.gearRatio = o.gearRatio;
  514. form.inertia = o.inertia;
  515. form.driving = o.driving;
  516. form.coasting = o.coasting;
  517. form.shiftTime = o.shiftTime;
  518. form.shiftTimeUp12 = o.shiftTimeUp12;
  519. form.shiftTimeDown12 = o.shiftTimeDown12;
  520. form.shiftTimeUp23 = o.shiftTimeUp23;
  521. form.shiftTimeDown23 = o.shiftTimeDown23;
  522. form.shiftTimeUp34 = o.shiftTimeUp34;
  523. form.shiftTimeDown34 = o.shiftTimeDown34;
  524. form.shiftTimeUp45 = o.shiftTimeUp45;
  525. form.shiftTimeDown45 = o.shiftTimeDown45;
  526. form.shiftTimeUp56 = o.shiftTimeUp56;
  527. form.shiftTimeDown56 = o.shiftTimeDown56;
  528. // form.brakeType = o.brakeType;
  529. form.frontLeftWheelBrakingTorque =
  530. o.frontLeftWheelBrakingTorque;
  531. form.rearLeftWheelBrakingTorque = o.rearLeftWheelBrakingTorque;
  532. // form.frontRightWheelBrakingTorque = o.frontRightWheelBrakingTorque;
  533. // form.rearRightWheelBrakingTorque = o.rearRightWheelBrakingTorque;
  534. form.steeringType = o.steeringType;
  535. form.steeringGearType = o.steeringGearType;
  536. form.steeringGearRatio = o.steeringGearRatio;
  537. form.relationCurveRightWheelAngleAndSteeringGearOutput =
  538. o.relationCurveRightWheelAngleAndSteeringGearOutput;
  539. form.relationCurveLeftWheelAngleAndSteeringGearOutput =
  540. o.relationCurveLeftWheelAngleAndSteeringGearOutput;
  541. this.$refs.carsim.form = form;
  542. this.$refs.carsim.handleData();
  543. }
  544. },
  545. showInfo(id) {
  546. this.file = "";
  547. this.$axios({
  548. method: "post",
  549. url: this.$api.modelLibrary.getVehicleInfo,
  550. data: {
  551. id,
  552. },
  553. }).then((res) => {
  554. if (res.code == 200 && res.info) {
  555. let info = res.info;
  556. this.$refs.form.clearValidate();
  557. Object.assign(this.form, info);
  558. if (info.vehicleFrontView) {
  559. // this.modelImgSrc = this.getImgUrl(
  560. // res.info.vehicleFrontView
  561. // );
  562. this.carModel = this.getImgUrl(info.vehicleFrontView);
  563. }
  564. this.curOne = {
  565. share: info.share,
  566. id: info.id,
  567. };
  568. this.$nextTick(() => {
  569. if (info.parameterType === "1") {
  570. this.$refs.vtd.$refs.form.clearValidate();
  571. } else {
  572. this.$refs.carsim.$refs.form.clearValidate();
  573. }
  574. this.updateForm(info.parameterType, info);
  575. });
  576. } else {
  577. this.$message.error(res.message || "获取失败");
  578. }
  579. });
  580. },
  581. save(isAdd) {
  582. this.$refs.form.validate((valid) => {
  583. if (valid) {
  584. // 判断是否新增
  585. if (isAdd || this.form.share === "") {
  586. this.form.id = "";
  587. }
  588. let canSave = false;
  589. if (this.form.parameterType === "1") {
  590. canSave = this.$refs.vtd.save();
  591. } else {
  592. canSave = this.$refs.carsim.save();
  593. }
  594. if (!canSave) return;
  595. let form = {};
  596. if (this.form.parameterType === "1") {
  597. form = this.$refs.vtd.form;
  598. } else {
  599. form = this.$refs.carsim.form;
  600. }
  601. let data = Object.assign({}, this.form, form);
  602. this.$axios({
  603. method: "post",
  604. url: this.$api.modelLibrary.saveVehicle,
  605. data,
  606. }).then((res) => {
  607. if (res.code == 200 && res.info) {
  608. this.form.id = res.info.id;
  609. this.form.share = res.info.share;
  610. this.form.vehicleCode = res.info.vehicleCode;
  611. this.$message.success("保存成功");
  612. this.$refs.modelList.getList();
  613. this.curOne = {
  614. share: res.info.share,
  615. id: res.info.id,
  616. };
  617. } else {
  618. this.$message.error(res.message || "保存失败");
  619. }
  620. });
  621. }
  622. });
  623. },
  624. addOne() {
  625. this.$refs.form.resetFields();
  626. this.form.parameterType = "1";
  627. this.$refs.vtd && this.$refs.vtd.$refs.form.resetFields();
  628. this.form.vehicleCode = "";
  629. this.form.vehicleFrontView = "";
  630. this.form.vehicleTopView = "";
  631. this.form.share = "";
  632. this.form.id = "";
  633. this.modelImgSrc = "";
  634. this.carModel = "";
  635. this.curOne = {
  636. share: "",
  637. id: "",
  638. };
  639. },
  640. delOne(id) {
  641. this.$axios({
  642. method: "post",
  643. url: this.$api.modelLibrary.delVehicleById,
  644. data: {
  645. id,
  646. },
  647. }).then((res) => {
  648. if (res.code == 200) {
  649. this.$message.success("删除成功");
  650. this.$refs.modelList.getList();
  651. if (this.form.id && id === this.form.id) {
  652. this.addOne();
  653. }
  654. if (id === this.curOne.id) {
  655. this.curOne = {
  656. share: "",
  657. id: "",
  658. };
  659. }
  660. } else {
  661. this.$message.error(res.message || "删除失败");
  662. }
  663. });
  664. },
  665. share() {
  666. let form = {};
  667. if (this.form.parameterType === "1") {
  668. form = this.$refs.vtd.form;
  669. } else {
  670. form = this.$refs.carsim.form;
  671. }
  672. let data = Object.assign({}, this.form, form);
  673. this.$axios({
  674. method: "post",
  675. url: this.$api.modelLibrary.shareVehicle,
  676. data,
  677. }).then((res) => {
  678. if (res.code == 200) {
  679. this.$message.success("分享成功");
  680. this.$refs.modelList.getList();
  681. } else {
  682. this.$message.error(res.message || "分享失败");
  683. }
  684. });
  685. },
  686. cancel() {
  687. if (this.form.id) {
  688. // 取消时有id则重新请求表单
  689. this.showInfo(this.form.id);
  690. } else {
  691. // 清空
  692. this.addOne();
  693. }
  694. },
  695. getImgUrl(addr) {
  696. let url = "";
  697. if (process.env.VUE_APP_IS_DEV == "true") {
  698. url = this.fileHost + this.fileUrl;
  699. } else {
  700. url = this.fileUrl;
  701. }
  702. let token = localStorage.getItem("Authorization").split(" ")[1];
  703. let src = `${url}?objectName=${addr}&access_token=${token}`;
  704. return src;
  705. },
  706. modelLabelChange() {
  707. Object.assign(
  708. this.form,
  709. this.$refs.cascader.getCheckedNodes(true)[0].data.vo
  710. );
  711. if (this.form.parameterType === "1") {
  712. this.updateForm("1", this.form);
  713. }
  714. // this.modelImgSrc = this.getImgUrl(this.form.vehicleFrontView);
  715. this.carModel = this.getImgUrl(this.form.vehicleFrontView);
  716. },
  717. async getModelLabelList() {
  718. await this.$axios({
  719. method: "post",
  720. url: this.$api.modelLibrary.getVehicleTempTree,
  721. data: {},
  722. }).then((res) => {
  723. if (res.code == 200 && res.info) {
  724. this.modelLabelList = res.info;
  725. } else {
  726. this.$message.error(res.message || "获取车辆模型列表失败");
  727. }
  728. });
  729. },
  730. attachmentChange(fileInfo, name) {
  731. if (!fileInfo) {
  732. this.file = "";
  733. return;
  734. }
  735. this.file = name;
  736. this.$refs.form.clearValidate();
  737. this.updateForm("2", fileInfo);
  738. },
  739. parameterTypeChange() {
  740. this.file = "";
  741. },
  742. },
  743. async mounted() {
  744. await this.$dicsListsInit({
  745. vehicleTypeList: "vehicleType",
  746. wheelDriveList: "driveType",
  747. parameterTypeList: "dynamicParameterType",
  748. suspensionTypeList: "suspensionType",
  749. brakeTypeList: "brakeType",
  750. steeringTypeList: "steeringType",
  751. steeringGearTypeList: "steeringGearType",
  752. driverTypeList: "driverType",
  753. });
  754. this.getModelLabelList();
  755. },
  756. };
  757. </script>
  758. <style lang='less' scoped>
  759. .vehicleModelPanel {
  760. display: flex;
  761. flex: 1;
  762. padding: 15px 30px 10px;
  763. .modelList /deep/ .listPanel {
  764. min-height: 400px;
  765. height: calc(100vh - 120px);
  766. }
  767. .contentPanel {
  768. flex: 1;
  769. padding-left: 30px;
  770. }
  771. .inputBox.flexBox {
  772. // margin-bottom: 22px;
  773. .label {
  774. width: 138px;
  775. }
  776. div {
  777. line-height: 32px;
  778. }
  779. }
  780. .titlePanel {
  781. padding: 22px 0;
  782. }
  783. .btns {
  784. padding-top: 30px;
  785. text-align: center;
  786. }
  787. .modelBox {
  788. // width: 60%;
  789. min-width: 810px;
  790. }
  791. }
  792. </style>