소스 검색

新增基础资料车辆信息

lichao 3 년 전
부모
커밋
270893dddb
2개의 변경된 파일292개의 추가작업 그리고 57개의 파일을 삭제
  1. 28 0
      src/api/landTransportation/car.js
  2. 264 57
      src/views/basicData/landTransportation/vehicleInformation/index.vue

+ 28 - 0
src/api/landTransportation/car.js

@@ -0,0 +1,28 @@
+import request from '@/router/axios';
+
+// 车辆列表查询
+export function getCarList(params) {
+  return request({
+    url: '/api/blade-client/land-vehicle/list',
+    method: 'get',
+    params
+  })
+}
+
+// 新增和修改
+export function carSubmit(data) {
+  return request({
+    url: '/api/blade-client/land-vehicle/submit',
+    method: 'post',
+    data
+  })
+}
+
+// 删除
+export function carRemove(params) {
+  return request({
+    url: '/api/blade-client/land-vehicle/remove',
+    method: 'post',
+    params
+  })
+}

+ 264 - 57
src/views/basicData/landTransportation/vehicleInformation/index.vue

@@ -1,235 +1,442 @@
 <template>
   <div>
     <basic-container>
-      <avue-crud :data="dataList" :option="option">
+      <avue-crud
+        :data="dataList"
+        :option="option"
+        :page.sync="page"
+        :search.sync="search"
+        :table-loading="loading"
+        v-model="form"
+        @on-load="onLoad"
+        @row-save="rowSave"
+        @row-update="rowUpdate"
+        @row-del="rowDel"
+        @search-change="searchChange"
+        @search-reset="searchReset"
+        @refresh-change="refreshChange"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+      >
+        <template slot="urlForm" slot-scope="{ row }">
+          <el-input
+            placeholder="文件地址"
+            size="small"
+            v-if="row.$cellEdit"
+            v-model="row.url"
+            class="input-with-select">
+            <el-button size="small" type="primary" slot="prepend" @click="download(row)">查看</el-button>
+            <el-upload
+              class="upload-demo"
+              :show-file-list="false"
+              slot="append"
+              :action="action"
+              :headers="headers"
+              :on-success="(response)=>{onSuccessTwo(response,row)}"
+              :multiple="false">
+              <el-button size="small" type="primary">上传</el-button>
+            </el-upload>
+          </el-input>
+          <span v-else>{{ row.url }}</span>
+        </template>
+        <template slot="fleetIdForm" slot-scope="{ row }">
+          <span>{{row}}</span>
+          <crop-select
+            v-model="form.fleetId"
+            corpType="KH"
+          />
+        </template>
+        <template slot="fleetIdSearch">
+          <crop-select v-model="search.fleetId" corpType="KH"></crop-select>
+        </template>
       </avue-crud>
     </basic-container>
   </div>
 </template>
 
 <script>
+import { getCarList, carSubmit, carRemove } from "@/api/landTransportation/car";
+import {getToken} from '@/util/auth';
+
 export default {
   name: "index",
   data(){
     return{
       dataList:[],
       option:{
+        searchIcon: true,
+        searchIndex: 2,
+        searchMenuSpan: 24,
         align:'center',
         index: true,
         column:[{
           label: '车牌号',
-          prop: 'fileName',
+          prop: 'plateNo',
           index: 1,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
+          rules: [{
+            required: true,
+            message: "请输入车牌号",
+            trigger: "blur"
+          }],
         },{
           label: '车队名称',
-          prop: 'fileName',
-          index: 1,
+          prop: 'fleetId',
+          index: 2,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
         },{
           label: '司机名称',
-          prop: 'fileName',
-          index: 1,
+          prop: 'driverId',
+          index: 3,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
         },{
           label: '挂车号',
-          prop: 'fileName',
-          index: 1,
+          prop: 'trailerNo',
+          index: 4,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
         },{
           label: '燃油类型',
-          prop: 'fileName',
-          index: 1,
+          prop: 'fuelType',
+          index: 5,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
         },{
+          type: "select",
+          dicUrl: "/api/blade-system/dict-biz/dictionary?code=carType",
+          props: {
+            label: "dictValue",
+            value: "dictValue"
+          },
           label: '车辆类型',
-          prop: 'fileName',
-          index: 1,
+          prop: 'type',
+          index: 6,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
         },{
           label: '车辆品牌',
-          prop: 'fileName',
-          index: 1,
+          prop: 'brand',
+          index: 7,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
         },{
           label: '制造单位',
-          prop: 'fileName',
-          index: 1,
+          prop: 'manufacturer',
+          index: 8,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
         },{
           label: '发证机关',
-          prop: 'fileName',
-          index: 1,
+          prop: 'issuingAuthority',
+          index: 9,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
         },{
           label: '牵引车辆型号',
-          prop: 'fileName',
-          index: 1,
+          prop: 'towModel',
+          index: 10,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
         },{
           label: '牵引车车架号',
-          prop: 'fileName',
-          index: 1,
+          prop: 'towVin',
+          index: 11,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
         },{
           label: '挂车型号',
-          prop: 'fileName',
-          index: 1,
+          prop: 'trailerModel',
+          index: 12,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
         },{
           label: '挂车车架号',
-          prop: 'fileName',
-          index: 1,
+          prop: 'trailerVin',
+          index: 13,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
         },{
           label: '发动机型号',
-          prop: 'fileName',
-          index: 1,
+          prop: 'engineModel',
+          index: 14,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
         },{
           label: '核载人数',
-          prop: 'fileName',
-          index: 1,
+          prop: 'allowPassenger',
+          index: 15,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
         },{
           label: '购车日期',
-          prop: 'fileName',
-          index: 1,
+          prop: 'purchaseDate',
+          index: 16,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
         },{
           label: '注册日期',
-          prop: 'fileName',
-          index: 1,
+          prop: 'registerDate',
+          index: 17,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
         },{
           label: '报废日期',
-          prop: 'fileName',
-          index: 1,
+          prop: 'scrapDate',
+          index: 18,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
         },{
-          label: '外尺寸mm',
-          prop: 'fileName',
-          index: 1,
+          label: '外尺寸mm',
+          prop: 'oto',
+          index: 19,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
         },{
           label: '总重量kg',
-          prop: 'fileName',
-          index: 1,
+          prop: 'totalWeight',
+          index: 20,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
         },{
           label: '核定重量kg',
-          prop: 'fileName',
-          index: 1,
+          prop: 'approvedWeight',
+          index: 21,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
         },{
-          label: '装备量kg',
-          prop: 'fileName',
-          index: 1,
+          label: '装备量kg',
+          prop: 'equipmentWeight',
+          index: 22,
           width: 140,
           cell: true,
           overHidden: true,
           search:true,
           span: 8,
+          searchSpan: 8,
         },{
           label: '附件',
-          prop: 'annex',
-          index: 1,
-          width: 140,
-          cell: true,
-          overHidden: true,
-          search:true,
-          formslot:true,
-          labelslot:true,
-          errorslot:true,
-          span: 24,
+          prop: 'fileList',
+          type: 'dynamic',
+          span:24,
+          children: {
+            align: 'center',
+            headerAlign: 'center',
+            rowAdd:(done)=>{
+              // this.$message.success('新增回调');
+              done()
+            },
+            rowDel:(row,done)=>{
+              // this.$message.success('删除回调'+JSON.stringify(row));
+              done();
+            },
+            column: [{
+              width: 200,
+              label: '文件名称',
+              prop: "fileName",
+              formslot: true
+            }, {
+              width: 360,
+              label: '文件地址',
+              prop: "url"
+            }, {
+              width: 200,
+              label: '文件属性',
+              type: "select",
+              dicUrl: "/api/blade-system/dict-biz/dictionary?code=file_type",
+              props: {
+                label: "dictValue",
+                value: "dictValue"
+              }
+            }, {
+              label: '备注',
+              prop: "remarks",
+            }]
+          }
         }]
-      }
+      },
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0,
+        pageSizes: [10,50,100,200,300]
+      },
+      search: {},
+      loading: false,
+      action: "/api/blade-resource/oss/endpoint/put-file",
+      headers: { "Blade-Auth": "Bearer " + getToken() },
+      ids: [], // id集合
+      form: {},
     }
   },
+  created() {
+    let i = 0;
+    this.option.column.forEach(item => {
+      if (item.search) i++
+    })
+    if (i % 3 !== 0){
+      const num = 3 - Number(i % 3)
+      this.option.searchMenuSpan = num * 8;
+      this.option.searchMenuPosition = "right";
+    }
+  },
+  methods: {
+    onLoad(page, params) {
+      const queryParams = Object.assign({}, params, {
+        size: page.pageSize,
+        current: page.currentPage,
+      })
+      getCarList(queryParams).then(res => {
+        this.dataList = res.data.data.records;
+        this.page.total = res.data.data.total;
+        this.option.height = window.innerHeight - 240;
+      })
+    },
+    rowSave(form, done, loading) {
+      carSubmit(form).then(res => {
+        this.$message.success(form.id? '修改成功': '新增成功')
+      })
+      this.onLoad(this.page)
+      done();
+    },
+    rowUpdate(form,index,done) {
+      carSubmit(form).then(res => {
+        this.$message.success(form.id? '修改成功': '新增成功')
+      })
+      this.onLoad(this.page)
+      done();
+    },
+    rowDel(row) {
+      this.$confirm("确定将选择数据删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        const ids = this.ids.length == 0? row.id: this.ids.join(',');
+        carRemove({ids}).then(res => {
+          this.$message.success('删除成功');
+          this.onLoad(this.page);
+        })
+      })
+    },
+    //附件上传成功
+    onSuccessTwo(response,row){
+      row.url = response.data.link
+      row.fileName = response.data.originalName
+    },
+    //下载附件
+    download(row){
+      if (row.url){
+        window.open(row.url)
+      }else {
+        this.$message.warning('无附件,请上传附件后再查看');
+      }
+    },
+    // 搜索
+    searchChange(params, done) {
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done()
+    },
+    // 重置
+    searchReset() {},
+    //刷新
+    refreshChange() {
+      this.onLoad(this.page, this.search)
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+    },
+  },
 }
 </script>