carManage-add-or-update.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517
  1. <template>
  2. <el-dialog
  3. :title="!dataForm.id ? '车辆注册' : '修改'"
  4. :close-on-click-modal="false"
  5. :visible.sync="visible" width="80%"
  6. >
  7. <el-form :model="dataFormD" :rules="dataRule" ref="dataFormD" @keyup.enter.native="dataFormSubmit()"
  8. label-width="125px"
  9. >
  10. <el-form-item label="车队名称" prop="fleetCompanyId" style="width: 325px">
  11. <el-select
  12. v-model="dataFormD.fleetCompanyId"
  13. filterable
  14. remote
  15. :disabled="doNot"
  16. reserve-keyword
  17. placeholder="请输入关键词"
  18. :remote-method="handleSelect"
  19. >
  20. <el-option
  21. v-for="item in optionsProjectTypeItem"
  22. :key="item.id"
  23. :label="item.companyName"
  24. :value="item.id"
  25. >
  26. </el-option>
  27. </el-select>
  28. </el-form-item>
  29. <el-form-item label="车牌号" prop="carNum" style="width: 325px">
  30. <el-input v-model="dataFormD.carNum" style="width: 200px" :disabled="doNot" placeholder="车牌号"></el-input>
  31. </el-form-item>
  32. <el-form-item label="驾驶员" prop="carNum" style="width: 325px">
  33. <el-input v-model="dataFormD.driverName" style="width: 200px" :disabled="doNot" placeholder="驾驶员"></el-input>
  34. </el-form-item>
  35. <el-form-item label="挂号" prop="hangNum" style="width: 325px">
  36. <el-input v-model="dataFormD.hangNum" style="width: 200px" :disabled="doNot" placeholder="挂号"></el-input>
  37. </el-form-item>
  38. <el-form-item label="燃油类型" prop="fuelType" style="width: 325px">
  39. <el-input v-model="dataFormD.fuelType" style="width: 200px" :disabled="doNot" placeholder="燃油类型"></el-input>
  40. </el-form-item>
  41. <el-form-item label="车辆类型" prop="carType" style="width: 325px">
  42. <el-input v-model="dataFormD.carType" style="width: 200px" :disabled="doNot" placeholder="车辆类型"></el-input>
  43. </el-form-item>
  44. <el-form-item label="车辆名称" prop="carName" style="width: 325px">
  45. <el-input v-model="dataFormD.carName" style="width: 200px" :disabled="doNot" placeholder="车辆名称"></el-input>
  46. </el-form-item>
  47. <el-form-item label="车辆品牌" prop="carBrand" style="width: 325px">
  48. <el-input v-model="dataFormD.carBrand" style="width: 200px" :disabled="doNot" placeholder="车辆品牌"></el-input>
  49. </el-form-item>
  50. <el-form-item label="制造单位" prop="manufactureUnit" style="width: 325px">
  51. <el-input v-model="dataFormD.manufactureUnit" style="width: 200px" :disabled="doNot" placeholder="制造单位"></el-input>
  52. </el-form-item>
  53. <el-form-item label="发证机关" prop="officeOfCertificate" style="width: 325px">
  54. <el-input v-model="dataFormD.officeOfCertificate" style="width: 200px" :disabled="doNot" placeholder="发证机关"></el-input>
  55. </el-form-item>
  56. <el-form-item label="牵引车辆型号" prop="pullCarType" style="width: 325px">
  57. <el-input v-model="dataFormD.pullCarType" style="width: 200px" :disabled="doNot" placeholder="牵引车辆型号"></el-input>
  58. </el-form-item>
  59. <el-form-item label="牵引车车架号" prop="pullCarShelfNum" style="width: 325px">
  60. <el-input v-model="dataFormD.pullCarShelfNum" style="width: 200px" :disabled="doNot" placeholder="牵引车车架号"></el-input>
  61. </el-form-item>
  62. <el-form-item label="挂车型号" prop="mountCarType" style="width: 325px">
  63. <el-input v-model="dataFormD.mountCarType" style="width: 200px" :disabled="doNot" placeholder="挂车型号"></el-input>
  64. </el-form-item>
  65. <el-form-item label="挂车车架号" prop="mountCarNum" style="width: 325px">
  66. <el-input v-model="dataFormD.mountCarNum" style="width: 200px" :disabled="doNot" placeholder="挂车车架号"></el-input>
  67. </el-form-item>
  68. <el-form-item label="发动机型号" prop="engine" style="width: 325px">
  69. <el-input v-model="dataFormD.engine" style="width: 200px" :disabled="doNot" placeholder="发动机型号"></el-input>
  70. </el-form-item>
  71. <el-form-item label="核载人数" prop="carLoadPersion" style="width: 325px">
  72. <el-input v-model="dataFormD.carLoadPersion" style="width: 200px" :disabled="doNot" placeholder="核载人数"></el-input>
  73. </el-form-item>
  74. <el-form-item label="购车日期" prop="buyCarDate" style="width: 325px">
  75. <!-- <el-input v-model="dataForm.buyCarDate" placeholder="购车日期"></el-input>-->
  76. <el-date-picker
  77. style="width: 200px"
  78. value-format="yyyy-MM-dd HH:mm:ss"
  79. v-model="dataFormD.buyCarDate"
  80. type="date"
  81. :disabled="doNot"
  82. placeholder="创建时间"
  83. >
  84. </el-date-picker>
  85. </el-form-item>
  86. <el-form-item label="注册日期" prop="regiestDate" style="width: 325px">
  87. <!-- <el-input v-model="dataForm.regiestDate" placeholder="注册日期"></el-input>-->
  88. <el-date-picker
  89. style="width: 200px"
  90. value-format="yyyy-MM-dd HH:mm:ss"
  91. v-model="dataFormD.regiestDate"
  92. type="date"
  93. :disabled="doNot"
  94. placeholder="创建时间"
  95. >
  96. </el-date-picker>
  97. </el-form-item>
  98. <el-form-item label="报废日期" prop="abandonDate" style="width: 325px">
  99. <!-- <el-input v-model="dataForm.abandonDate" placeholder="报废日期"></el-input>-->
  100. <el-date-picker
  101. style="width: 200px"
  102. value-format="yyyy-MM-dd HH:mm:ss"
  103. v-model="dataFormD.abandonDate"
  104. type="date"
  105. :disabled="doNot"
  106. placeholder="创建时间"
  107. >
  108. </el-date-picker>
  109. </el-form-item>
  110. <el-form-item label="外阔尺寸mm" prop="outerSize" style="width: 325px">
  111. <el-input v-model="dataFormD.outerSize" style="width: 200px" :disabled="doNot" placeholder="外阔尺寸mm"></el-input>
  112. </el-form-item>
  113. <el-form-item label="总重量kg" prop="sumWeight" style="width: 325px">
  114. <el-input v-model="dataFormD.sumWeight" style="width: 200px" :disabled="doNot" placeholder="总重量kg"></el-input>
  115. </el-form-item>
  116. <el-form-item label="核定重量kg" prop="vouchWeight" style="width: 325px">
  117. <el-input v-model="dataFormD.vouchWeight" style="width: 200px" :disabled="doNot" placeholder="核定重量kg"></el-input>
  118. </el-form-item>
  119. <el-form-item label="装备质量kg" prop="equipWeight" style="width: 325px">
  120. <el-input v-model="dataFormD.equipWeight" style="width: 200px" :disabled="doNot" placeholder="装备质量kg"></el-input>
  121. </el-form-item>
  122. </el-form>
  123. <el-collapse accordion>
  124. <el-form label-width="200px">
  125. <el-collapse-item title="图片上传">
  126. <div style="width: 50%;float: left;">
  127. <el-form-item label="行驶证头图片" style="width: 100%;">
  128. <el-upload
  129. style="width: 300px;float:left;"
  130. :action="uploadImgUrl"
  131. :on-preview="handlePreview"
  132. :on-remove="(res,file)=>{handleRemove(0,res,file)}"
  133. :before-remove="beforeRemove"
  134. :on-success="(res,file)=>{handleAvatarSuccess(1,res,file)}"
  135. multiple
  136. :limit="1"
  137. :headers="headers"
  138. :on-exceed="handleExceed">
  139. <el-button size="small" :disabled="doNot" type="primary">点击上传</el-button>
  140. <el-button size="small" :disabled="doNot" type="primary" v-if="fTmsorderbillsattachs[0].attachUrl" @click="preview(0)">预览</el-button>
  141. </el-upload>
  142. </el-form-item>
  143. <el-form-item label="运营证头图片" style="width: 100%;">
  144. <el-upload
  145. style="width: 300px"
  146. :action="uploadImgUrl"
  147. :on-preview="handlePreview"
  148. :on-remove="(res,file)=>{handleRemove(2,res,file)}"
  149. :before-remove="beforeRemove"
  150. :on-success="(res,file)=>{handleAvatarSuccess(3,res,file)}"
  151. multiple
  152. :limit="1"
  153. :headers="headers"
  154. :on-exceed="handleExceed">
  155. <el-button size="small" :disabled="doNot" type="primary">点击上传</el-button>
  156. <el-button size="small" :disabled="doNot" type="primary" v-if="fTmsorderbillsattachs[2].attachUrl" @click="preview(2)">预览</el-button>
  157. </el-upload>
  158. </el-form-item>
  159. <el-form-item label="营运挂载图片" style="width: 100%;">
  160. <el-upload
  161. style="width: 300px"
  162. :action="uploadImgUrl"
  163. :on-preview="handlePreview"
  164. :on-remove="(res,file)=>{handleRemove(4,res,file)}"
  165. :before-remove="beforeRemove"
  166. :on-success="(res,file)=>{handleAvatarSuccess(5,res,file)}"
  167. multiple
  168. :limit="1"
  169. :headers="headers"
  170. :on-exceed="handleExceed">
  171. <el-button size="small" :disabled="doNot" type="primary">点击上传</el-button>
  172. <el-button size="small" :disabled="doNot" type="primary" v-if="fTmsorderbillsattachs[4].attachUrl" @click="preview(4)">预览</el-button>
  173. </el-upload>
  174. </el-form-item>
  175. <el-form-item label="二级维护图片" style="width: 100%;">
  176. <el-upload
  177. style="width: 300px"
  178. :action="uploadImgUrl"
  179. :on-preview="handlePreview"
  180. :on-remove="(res,file)=>{handleRemove(6,res,file)}"
  181. :before-remove="beforeRemove"
  182. :on-success="(res,file)=>{handleAvatarSuccess(7,res,file)}"
  183. multiple
  184. :limit="1"
  185. :headers="headers"
  186. :on-exceed="handleExceed">
  187. <el-button size="small" :disabled="doNot" type="primary">点击上传</el-button>
  188. <el-button size="small" :disabled="doNot" type="primary" v-if="fTmsorderbillsattachs[6].attachUrl" @click="preview(6)">预览</el-button>
  189. </el-upload>
  190. </el-form-item>
  191. <el-form-item label="承运人保险图片" style="width: 100%;">
  192. <el-upload
  193. style="width: 300px"
  194. :action="uploadImgUrl"
  195. :on-preview="handlePreview"
  196. :on-remove="(res,file)=>{handleRemove(8,res,file)}"
  197. :before-remove="beforeRemove"
  198. :on-success="(res,file)=>{handleAvatarSuccess(9,res,file)}"
  199. multiple
  200. :limit="1"
  201. :headers="headers"
  202. :on-exceed="handleExceed">
  203. <el-button size="small" :disabled="doNot" type="primary">点击上传</el-button>
  204. <el-button size="small" :disabled="doNot" type="primary" v-if="fTmsorderbillsattachs[8].attachUrl" @click="preview(8)">预览</el-button>
  205. </el-upload>
  206. </el-form-item>
  207. </div>
  208. <div style="width: 50%;float: left;">
  209. <el-form-item label="行驶证挂件图片" style="width: 100%;">
  210. <el-upload
  211. style="width: 300px"
  212. :action="uploadImgUrl"
  213. :on-preview="handlePreview"
  214. :on-remove="(res,file)=>{handleRemove(1,res,file)}"
  215. :before-remove="beforeRemove"
  216. :on-success="(res,file)=>{handleAvatarSuccess(2,res,file)}"
  217. multiple
  218. :limit="1"
  219. :headers="headers"
  220. :on-exceed="handleExceed">
  221. <el-button size="small" :disabled="doNot" type="primary">点击上传</el-button>
  222. <el-button size="small" :disabled="doNot" type="primary" v-if="fTmsorderbillsattachs[1].attachUrl" @click="preview(1)">预览</el-button>
  223. </el-upload>
  224. </el-form-item>
  225. <el-form-item label="技术评定证书图片" style="width: 100%;">
  226. <el-upload
  227. style="width: 300px"
  228. :action="uploadImgUrl"
  229. :on-preview="handlePreview"
  230. :on-remove="(res,file)=>{handleRemove(3,res,file)}"
  231. :before-remove="beforeRemove"
  232. :on-success="(res,file)=>{handleAvatarSuccess(4,res,file)}"
  233. multiple
  234. :limit="1"
  235. :headers="headers"
  236. :on-exceed="handleExceed">
  237. <el-button size="small" :disabled="doNot" type="primary">点击上传</el-button>
  238. <el-button size="small" :disabled="doNot" type="primary" v-if="fTmsorderbillsattachs[3].attachUrl" @click="preview(3)">预览</el-button>
  239. </el-upload>
  240. </el-form-item>
  241. <el-form-item label="二级维护图片" style="width: 100%;">
  242. <el-upload
  243. style="width: 300px"
  244. :action="uploadImgUrl"
  245. :on-preview="handlePreview"
  246. :on-remove="(res,file)=>{handleRemove(5,res,file)}"
  247. :before-remove="beforeRemove"
  248. :on-success="(res,file)=>{handleAvatarSuccess(6,res,file)}"
  249. multiple
  250. :limit="1"
  251. :headers="headers"
  252. :on-exceed="handleExceed">
  253. <el-button size="small" :disabled="doNot" type="primary">点击上传</el-button>
  254. <el-button size="small" :disabled="doNot" type="primary" v-if="fTmsorderbillsattachs[5].attachUrl" @click="preview(5)">预览</el-button>
  255. </el-upload>
  256. </el-form-item>
  257. <el-form-item label="商业保险图片1" style="width: 100%;">
  258. <el-upload
  259. style="width: 300px"
  260. :action="uploadImgUrl"
  261. :on-preview="handlePreview"
  262. :on-remove="(res,file)=>{handleRemove(7,res,file)}"
  263. :before-remove="beforeRemove"
  264. :on-success="(res,file)=>{handleAvatarSuccess(8,res,file)}"
  265. multiple
  266. :limit="1"
  267. :headers="headers"
  268. :on-exceed="handleExceed">
  269. <el-button size="small" :disabled="doNot" type="primary">点击上传</el-button>
  270. <el-button size="small" :disabled="doNot" type="primary" v-if="fTmsorderbillsattachs[7].attachUrl" @click="preview(7)">预览</el-button>
  271. </el-upload>
  272. </el-form-item>
  273. </div>
  274. </el-collapse-item>
  275. </el-form>
  276. </el-collapse>
  277. <span slot="footer" class="dialog-footer">
  278. <el-button type="info" @click="handleUpdata">修改</el-button>
  279. <el-button @click="visible = false">取消</el-button>
  280. <el-button type="primary" :disabled="doNot" @click="dataFormSubmit">确定</el-button>
  281. </span>
  282. </el-dialog>
  283. </template>
  284. <script>
  285. import { preservation, company, lookOver } from '@/api/fleet/carManage'
  286. import { getToken } from '@/utils/auth'
  287. export default {
  288. props: {
  289. dataForm: {
  290. type: Object,
  291. require: false
  292. }
  293. },
  294. data() {
  295. return {
  296. fTmsorderbillsattachs:[
  297. {attachUrl:'',attachName:'',actId:''},
  298. {attachUrl:'',attachName:'',actId:''},
  299. {attachUrl:'',attachName:'',actId:''},
  300. {attachUrl:'',attachName:'',actId:''},
  301. {attachUrl:'',attachName:'',actId:''},
  302. {attachUrl:'',attachName:'',actId:''},
  303. {attachUrl:'',attachName:'',actId:''},
  304. {attachUrl:'',attachName:'',actId:''},
  305. {attachUrl:'',attachName:'',actId:''},
  306. ],
  307. doNot:true,
  308. imageUrl: '',
  309. dataFormD: {},
  310. visible: false,
  311. msg: '',
  312. uploadImgUrl: process.env.VUE_APP_BASE_API + '/common/upload', // 上传的图片服务器地址
  313. headers: {
  314. Authorization: 'Bearer ' + getToken()
  315. },
  316. dataRule: {
  317. fleetCompanyId: [
  318. { required: true, message: '请输入车队id', trigger: 'blur' }
  319. ],
  320. carNum: [
  321. { required: true, message: '请输入车牌号', trigger: 'blur' }
  322. ]
  323. },
  324. optionsProjectTypeItem: [],
  325. }
  326. },
  327. methods: {
  328. handleUpdata(){
  329. this.doNot = false
  330. },
  331. handleAvatarSuccess(actid,res, file) {
  332. console.log(actid)
  333. switch (actid){
  334. case 1:
  335. this.simplification(0)
  336. break
  337. case 2:
  338. this.simplification(1)
  339. break
  340. case 3:
  341. this.simplification(2)
  342. break
  343. case 4:
  344. this.simplification(3)
  345. break
  346. case 5:
  347. this.simplification(4)
  348. break
  349. case 6:
  350. this.simplification(5)
  351. break
  352. case 7:
  353. this.simplification(6)
  354. break
  355. case 8:
  356. this.simplification(7)
  357. break
  358. case 9:
  359. this.simplification(8)
  360. break
  361. default:
  362. this.$message.error('未知错误,请稍后再试');
  363. }
  364. },
  365. simplification(index){
  366. this.fTmsorderbillsattachs[index].actId = actid
  367. this.fTmsorderbillsattachs[index].attachUrl = res.url
  368. this.fTmsorderbillsattachs[index].attachName = res.fileName
  369. },
  370. handleRemove(actid,file, fileList) {
  371. this.fTmsorderbillsattachs[actid].attachUrl = ''
  372. this.fTmsorderbillsattachs[actid].attachName = ''
  373. this.fTmsorderbillsattachs[actid].actId = ''
  374. },
  375. handlePreview(file) {
  376. this.$message.success('如需预览请点击预览');
  377. },
  378. handleExceed(files, fileList) {
  379. this.$message.warning(`当前限制选择 1 个文件件`);
  380. },
  381. beforeRemove(file, fileList) {
  382. return this.$confirm(`确定移除 ${ file.name }?`);
  383. },
  384. init() {
  385. this.visible = true
  386. if (this.dataForm.Id) {
  387. lookOver(this.dataForm.Id).then(data => {
  388. this.doNot = true
  389. console.log(data)
  390. this.dataFormD = data.data.fleetCarManage
  391. this.fTmsorderbillsattachs = data.data.fTmsorderbillsattachs
  392. this.optionsProjectTypeItem = data.data.fleetCompanyMsg
  393. if (data.data.fleetCompanyMsg){
  394. this.handleSelect()
  395. }
  396. })
  397. }else {
  398. this.dataFormD = {
  399. fleetCompanyId:'',
  400. carNum:'',
  401. driverName:'',
  402. hangNum:'',
  403. fuelType:'',
  404. carType:'',
  405. carName:'',
  406. carBrand:'',
  407. manufactureUnit:'',
  408. officeOfCertificate:'',
  409. pullCarType:'',
  410. pullCarShelfNum:'',
  411. mountCarType:'',
  412. mountCarNum:'',
  413. engine:'',
  414. carLoadPersion:'',
  415. buyCarDate:'',
  416. regiestDate:'',
  417. abandonDate:'',
  418. outerSize:'',
  419. sumWeight:'',
  420. vouchWeight:'',
  421. equipWeight:''
  422. }
  423. this.fTmsorderbillsattachs = [{attachUrl:'',attachName:'',actId:''},
  424. {attachUrl:'',attachName:'',actId:''},
  425. {attachUrl:'',attachName:'',actId:''},
  426. {attachUrl:'',attachName:'',actId:''},
  427. {attachUrl:'',attachName:'',actId:''},
  428. {attachUrl:'',attachName:'',actId:''},
  429. {attachUrl:'',attachName:'',actId:''},
  430. {attachUrl:'',attachName:'',actId:''},
  431. {attachUrl:'',attachName:'',actId:''}]
  432. this.doNot = false
  433. }
  434. },
  435. preview(actid){
  436. console.log(this.fTmsorderbillsattachs)
  437. window.open(this.fTmsorderbillsattachs[actid].attachUrl)
  438. },
  439. handleSelect(query) {
  440. company(query).then(data => {
  441. console.log(data)
  442. this.optionsProjectTypeItem = data.rows
  443. })
  444. },
  445. // 表单提交
  446. dataFormSubmit() {
  447. this.$refs['dataFormD'].validate((valid) => {
  448. if (valid) {
  449. let formDatae = new window.FormData()
  450. formDatae.append('fTmsorderbillsattachs', JSON.stringify(this.fTmsorderbillsattachs))
  451. formDatae.append('fleetCarManage', JSON.stringify(this.dataFormD))
  452. preservation(formDatae).then(data => {
  453. if (data && data.code === 200) {
  454. this.$message({
  455. message: '操作成功',
  456. type: 'success',
  457. duration: 1500,
  458. onClose: () => {
  459. this.visible = false
  460. this.$emit('refreshDataList')
  461. }
  462. })
  463. } else {
  464. this.$message.error(data.msg)
  465. }
  466. })
  467. }
  468. })
  469. }
  470. }
  471. }
  472. </script>
  473. <style scoped>
  474. .el-form-item {
  475. width: 49%;
  476. margin-bottom: 20px;
  477. display: inline-block;
  478. }
  479. .el-select {
  480. display: block;
  481. }
  482. .upload-demo {
  483. margin-left: 50px;
  484. }
  485. .avatar-uploader .el-upload {
  486. border: 1px dashed #d9d9d9;
  487. border-radius: 6px;
  488. cursor: pointer;
  489. position: relative;
  490. overflow: hidden;
  491. }
  492. .avatar-uploader .el-upload:hover {
  493. border-color: #409EFF;
  494. }
  495. .avatar-uploader-icon {
  496. font-size: 28px;
  497. color: #8c939d;
  498. width: 178px;
  499. height: 178px;
  500. line-height: 178px;
  501. text-align: center;
  502. }
  503. .avatar {
  504. width: 178px;
  505. height: 178px;
  506. display: block;
  507. }
  508. </style>