Bladeren bron

车辆管理

许静 6 jaren geleden
bovenliggende
commit
424b5d3ae8
6 gewijzigde bestanden met toevoegingen van 250 en 2 verwijderingen
  1. 17
    0
      src/config/api.js
  2. 2
    0
      src/store/index.js
  3. 39
    0
      src/store/modules/management.js
  4. 181
    0
      src/views/carManagement/management.vue
  5. 9
    0
      src/views/index.js
  6. 2
    2
      vue.config.js

+ 17
- 0
src/config/api.js Bestand weergeven

@@ -256,7 +256,24 @@ const apis = {
256 256
       method: 'get',
257 257
       url: `${commPrefix}/firstUsherRecord`
258 258
     }
259
+
260
+
259 261
   },
262
+  management: {
263
+    list: {
264
+      method: 'get',
265
+      url: `${commPrefix}/cars`
266
+    },
267
+    add: {
268
+      method: 'put',
269
+      url: `${commPrefix}/car/whitelist/:id`
270
+    },
271
+    delete: {
272
+      method: 'delete',
273
+      url: `${commPrefix}/car/whitelist/:id`
274
+    },
275
+  },
276
+
260 277
   visitor: {
261 278
     list: {
262 279
       method: 'get',

+ 2
- 0
src/store/index.js Bestand weergeven

@@ -13,6 +13,7 @@ import sysuser from './modules/sysuser'
13 13
 import stats from './modules/stats'
14 14
 import cart from './modules/cart'
15 15
 import security from './modules/security'
16
+import management from './modules/management'
16 17
 import visitor from './modules/visitor' 
17 18
 import lobby from './modules/lobby'
18 19
 import followup from './modules/followup'
@@ -34,6 +35,7 @@ const store = new Vuex.Store({
34 35
     stats,
35 36
     cart,
36 37
     security,
38
+    management,
37 39
     visitor,
38 40
     lobby,
39 41
     followup

+ 39
- 0
src/store/modules/management.js Bestand weergeven

@@ -0,0 +1,39 @@
1
+import lodash from 'lodash'
2
+import { interact,replaceApiParams } from '../../utils'
3
+import apis from '../../config/api'
4
+
5
+export default {
6
+  namespaced: true,
7
+  state: {
8
+    management : {}
9
+  },
10
+  mutations: {
11
+    updateManagement(state, payload) {
12
+      state.management  = payload || {}
13
+    }
14
+  },
15
+  actions: {
16
+    getManagement({ commit }, payload) { // 查询所有
17
+      const api = lodash.get(apis, 'management.list')
18
+      interact(api, payload).then((data) => {
19
+        commit('updateManagement', data)
20
+      })
21
+    },
22
+    addManagement ({ commit }, payload) {
23
+      const api = replaceApiParams(lodash.get(apis, 'management.add'), payload)
24
+      interact(api).then((data) => {
25
+        commit('updateManagement', data)
26
+      })
27
+    },
28
+    deleteManagement ( _, payload) {
29
+      return new Promise((resolve, reject) => {
30
+        const api = replaceApiParams(lodash.get(apis, 'management.delete'), payload)
31
+        interact(api).then((data) => {
32
+          resolve(data)
33
+        }).catch(() => {
34
+          reject()
35
+        })
36
+      })
37
+    }
38
+  }
39
+}

+ 181
- 0
src/views/carManagement/management.vue Bestand weergeven

@@ -0,0 +1,181 @@
1
+<template>
2
+  <div id="root">
3
+    <el-form :inline="true" :model="formInline" class="demo-form-inline">
4
+      <el-form-item label="车牌">
5
+        <el-input v-model="formInline.plateNumber" placeholder="车牌"></el-input>
6
+      </el-form-item>
7
+      <!-- <el-form-item label="来访时间">
8
+        <el-date-picker
9
+                v-model="formInline.visiteDate"
10
+                type="date"
11
+                value-format="yyyy-MM-dd"
12
+                placeholder="来访时间">
13
+        </el-date-picker>
14
+      </el-form-item> -->
15
+      <el-form-item>
16
+        <el-button type="primary" @click="onSubmit">查询</el-button>
17
+      </el-form-item>
18
+    </el-form>
19
+    <el-table
20
+            :data="managementList.records"
21
+            border
22
+            style="width: 100%">
23
+   
24
+      <el-table-column
25
+              prop="plateNumber"
26
+              label="车牌"/>
27
+
28
+      <el-table-column
29
+              prop="carImage"
30
+              label="车辆图片">
31
+              <template slot-scope="scope">
32
+              <el-image
33
+                  style="width: 100px; height: 100px"
34
+                  :src="scope.row.carImage"
35
+                  fit="fill"></el-image>
36
+              </template>
37
+      </el-table-column>
38
+          <el-table-column
39
+              prop="color"
40
+              label="颜色"/>
41
+      <el-table-column
42
+              prop="carModel"
43
+              label="车型">
44
+      </el-table-column>
45
+            <el-table-column
46
+              prop="typeId"
47
+              label="业务类型">
48
+              <template slot-scope="scope">
49
+                <span>{{scope.row.typeId =='normal'? '正常':'内部车辆' }}</span>
50
+              </template>
51
+      </el-table-column>
52
+        <el-table-column
53
+      fixed="right"
54
+      label="操作">
55
+      <template slot-scope="scope">
56
+        <el-button type="text" v-if="scope.row.typeId =='normal'" @click="joinWhite(scope.row)" size="small">加入白名单</el-button>
57
+        <el-button type="text"  v-if="scope.row.typeId !='normal'" @click="cancelWhite(scope.row)"  size="small">取消白名单</el-button>
58
+      </template>
59
+    </el-table-column>
60
+      <!-- <el-table-column
61
+              prop="status"
62
+              label="状态">
63
+      </el-table-column>
64
+  
65
+      <el-table-column
66
+              prop="appointment"
67
+              label="创建日期">
68
+              <template slot-scope="scope">
69
+                <span>{{FormatDate(scope.row.createDate)}}</span>
70
+              </template>
71
+      </el-table-column> -->
72
+  
73
+
74
+    </el-table>
75
+    <el-pagination
76
+            style="margin-top:50px;float:right"
77
+            @size-change="handleSizeChange"
78
+            @current-change="handleCurrentChange"
79
+            :current-page="formInline.pageNum"
80
+            :page-sizes="[1,10, 20, 30, 40]"
81
+            :page-size="formInline.pageSize"
82
+            layout="total, sizes, prev, pager, next, jumper"
83
+            :total="managementList.total || 0">
84
+    </el-pagination>
85
+  </div>
86
+</template>
87
+
88
+<script>
89
+import { createNamespacedHelpers } from "vuex";
90
+const {
91
+  mapState: mapManagementState,
92
+  mapActions: mapManagementActions
93
+} = createNamespacedHelpers("management");
94
+
95
+export default {
96
+  name: "management-index",
97
+  data() {
98
+    return {
99
+      formInline: {
100
+        plateNumber: "",
101
+        recId: "",
102
+        visiteDate: "",
103
+        customerName: "",
104
+        phone: "",
105
+        pageNum: 1,
106
+        pageSize: 10
107
+      }
108
+    };
109
+  },
110
+  computed: {
111
+    ...mapManagementState({
112
+      managementList: x => x.management
113
+    })
114
+  },
115
+  created() {
116
+    this.getPage();
117
+  },
118
+  methods: {
119
+    ...mapManagementActions([
120
+      "getManagement",
121
+      "addManagement",
122
+      "deleteManagement"
123
+    ]),
124
+    onSubmit() {
125
+      this.getPage();
126
+    },
127
+    joinWhite(row) {
128
+      console.log(row, "id");
129
+        const _that = this;
130
+      this.$confirm("确认加入白名单?", "提示", {
131
+        confirmButtonText: "确定",
132
+        cancelButtonText: "取消",
133
+        type: "warning"
134
+      }).then(() => {
135
+        _that.addManagement({ id: row.plateNumber }).then(() => {
136
+          _that.getPage();
137
+        });
138
+      });
139
+        // this.mergePerson({ id: row.plateNumber  }).then(() => {
140
+        // this.$notify.success('')
141
+      // })
142
+    },
143
+    cancelWhite(row) {
144
+      const _that = this;
145
+      this.$confirm("确认取消白名单?", "提示", {
146
+        confirmButtonText: "确定",
147
+        cancelButtonText: "取消",
148
+        type: "warning"
149
+      }).then(() => {
150
+        _that.deleteManagement({ id: row.plateNumber }).then(() => {
151
+          _that.getPage();
152
+        });
153
+      });
154
+    },
155
+    getPage() {
156
+      this.getManagement(this.formInline);
157
+    },
158
+    handleSizeChange(val) {
159
+      // console.log(`每页 ${val} 条`)
160
+      this.formInline.pageSize = val;
161
+      this.getPage();
162
+    },
163
+    handleCurrentChange(val) {
164
+      // console.log(`当前页: ${val}`)
165
+      this.formInline.pageNum = val;
166
+      this.getPage();
167
+    },
168
+
169
+    FormatDate(date) {
170
+      if (date) {
171
+        return date.split("T")[0] === "0001-01-01"
172
+          ? ""
173
+          : date.split("T")[0] + "  " + date.split("T")[1];
174
+      } else {
175
+        return "";
176
+      }
177
+    }
178
+  }
179
+};
180
+</script>
181
+

+ 9
- 0
src/views/index.js Bestand weergeven

@@ -137,6 +137,15 @@ const pages = [
137 137
       title: '安保记录',
138 138
     },
139 139
   },
140
+  {
141
+    path: 'management',
142
+    name: 'managementlist',
143
+    component: () => import('./carManagement/management.vue'),
144
+    meta: {
145
+      menuShow: true,
146
+      title: '车辆管理',
147
+    },
148
+  },
140 149
   {
141 150
     path: 'lobby',
142 151
     name: 'lobby',

+ 2
- 2
vue.config.js Bestand weergeven

@@ -3,14 +3,14 @@ module.exports = {
3 3
   devServer: {
4 4
     proxy: {
5 5
       '/api': {
6
-        target: 'http://192.168.0.172:8080',
6
+        target: 'http://192.168.0.11:8080',
7 7
         changeOrigin: true,
8 8
         pathRewrite: {
9 9
           '^/api': '/'
10 10
         },
11 11
       },
12 12
       '/api/websocket': {
13
-        target: 'ws://localhost:8080',
13
+        target: 'http://192.168.0.11:8080',
14 14
         changeOrigin: true,
15 15
         ws: true,
16 16
         pathRewrite: {