Quellcode durchsuchen

Enhance CSMS and fixed bugs

vbea vor 3 Jahren
Ursprung
Commit
4f032921d9
27 geänderte Dateien mit 177 neuen und 68 gelöschten Zeilen
  1. 5 0
      Strides-Admin/src/http/api/ocpp.js
  2. 1 0
      Strides-Admin/src/router/IncidentRouter.js
  3. 3 3
      Strides-Admin/src/router/PartnershipRouter.js
  4. 1 0
      Strides-Admin/src/router/SettingsRouter.js
  5. 1 0
      Strides-Admin/src/router/SupportRouter.js
  6. 4 0
      Strides-Admin/src/styles/index.scss
  7. 22 14
      Strides-Admin/src/views/access/DialogDetail.vue
  8. 42 8
      Strides-Admin/src/views/access/index.vue
  9. 1 0
      Strides-Admin/src/views/charge/Connectors.vue
  10. 1 0
      Strides-Admin/src/views/charge/RegisteredChargeStations.vue
  11. 1 1
      Strides-Admin/src/views/charge/UnknownChargeStations.vue
  12. 1 1
      Strides-Admin/src/views/charging/ChargingProfiles.vue
  13. 8 0
      Strides-Admin/src/views/charging/ConfigureStations.vue
  14. 1 1
      Strides-Admin/src/views/driver/index.vue
  15. 1 1
      Strides-Admin/src/views/feedback/FeedbackManagement.vue
  16. 1 1
      Strides-Admin/src/views/incident/connectivity.vue
  17. 1 2
      Strides-Admin/src/views/incident/error_table.vue
  18. 1 1
      Strides-Admin/src/views/limit/CreditLimit.vue
  19. 1 1
      Strides-Admin/src/views/login/login.vue
  20. 8 2
      Strides-Admin/src/views/notification/index.vue
  21. 64 24
      Strides-Admin/src/views/ocpp/OCPPOperations.vue
  22. 1 1
      Strides-Admin/src/views/posDevice/index.vue
  23. 1 1
      Strides-Admin/src/views/provider/ServiceProviderManagement.vue
  24. 1 1
      Strides-Admin/src/views/rfid/index.vue
  25. 2 2
      Strides-Admin/src/views/transaction/reservations.vue
  26. 1 0
      Strides-Admin/src/views/transaction/transactions.vue
  27. 2 3
      Strides-Admin/src/views/user/UserManagement.vue

+ 5 - 0
Strides-Admin/src/http/api/ocpp.js

@@ -50,6 +50,11 @@ const ocpp = {
       "value": "SCP",
       "singleStation": true,
       "api": "ocppOperations/setChargingProfile"
+    },
+    {
+      "name": "Update Firmware",
+      "value": "UF",
+      "api": "ocppOperations/updateFirmware"
     }
   ],
   getKeyTypeList: () => get('ocppOperations/getKeyTypeList'),

+ 1 - 0
Strides-Admin/src/router/IncidentRouter.js

@@ -9,6 +9,7 @@ export default {
     icon: 'error-table',
     affix: true
   },
+  alwaysShow: true,
   children: [
     {
       path: '/incident-management/charger-connectivity',

+ 3 - 3
Strides-Admin/src/router/PartnershipRouter.js

@@ -33,7 +33,7 @@ export default {
     {
       path: '/partnership-management/monthly-credit-management',
       component: () => import('@/views/limit/CreditLimit'),
-      name: 'group-management',
+      name: 'monthly-credit-management',
       meta: {
         title: 'Monthly Credit Limit',
         icon: 'sidebar-submenu-item',
@@ -63,7 +63,7 @@ export default {
     {
       path: '/partnership-management/group-management/add',
       component: () => import('@/views/company/detail'),
-      name: 'group-management',
+      name: 'group-management-add',
       meta: {
         title: 'Add Group',
         activeMenu: '/partnership-management/group-management',
@@ -76,7 +76,7 @@ export default {
     {
       path: '/partnership-management/group-management/edit/:id',
       component: () => import('@/views/company/detail'),
-      name: 'group-management',
+      name: 'group-management-edit',
       meta: {
         title: 'Edit Group',
         activeMenu: '/partnership-management/group-management',

+ 1 - 0
Strides-Admin/src/router/SettingsRouter.js

@@ -11,6 +11,7 @@ export default {
     affix: true,
     additional: true
   },
+  alwaysShow: true,
   children: [
     {
       path: '/system-settings/mail-settings',

+ 1 - 0
Strides-Admin/src/router/SupportRouter.js

@@ -9,6 +9,7 @@ export default {
     icon: 'feedback-management',
     affix: false
   },
+  alwaysShow: true,
   children: [
     {
       path: '/support-management/feedbacks',

+ 4 - 0
Strides-Admin/src/styles/index.scss

@@ -372,4 +372,8 @@ input:-webkit-autofill:active  {
   th {
     background-color: rgba($--color-primary, 0.2);
   }
+}
+
+.el-table.no-border:before {
+  height: 0 !important;
 }

+ 22 - 14
Strides-Admin/src/views/access/DialogDetail.vue

@@ -2,7 +2,7 @@
   <el-dialog
     class="dialog-access"
     :visible="visible"
-    :before-close="e => hideDialog()"
+    :before-close="e => hideDialog(false)"
     :title="isEdit ? 'Update User' : 'Add User'">
     <el-form
       ref="acsForm"
@@ -20,7 +20,7 @@
             class="flex-item"
             maxlength="20"/>
         </el-form-item>
-        <el-form-item
+        <!--el-form-item
           prop="phone"
           class="form-item"
           label="CONTACT NO.:">
@@ -41,9 +41,7 @@
               maxlength="12"
             />
           </div>
-        </el-form-item>
-      </div>
-      <div class="form-row">
+        </el-form-item-->
         <el-form-item
           prop="email"
           class="form-item"
@@ -53,6 +51,8 @@
             class="flex-item"
             maxlength="50"/>
         </el-form-item>
+      </div>
+      <div class="form-row">
         <el-form-item
           class="form-item"
           label="SET PASSWORD:"
@@ -74,8 +74,6 @@
             type="password"
             maxlength="16"/>
         </el-form-item>
-      </div>
-      <div class="form-row">
         <el-form-item
           class="form-item"
           label="ROLE:">
@@ -89,6 +87,8 @@
               :value="item.roleName"/>
           </el-select>
         </el-form-item>
+      </div>
+      <div class="form-row">
         <el-form-item
           class="form-item"
           label="PROVIDER NAME:"
@@ -96,7 +96,7 @@
           v-if="form.roleName=='PROVIDER'">
           <el-select
             v-model="form.providerPk"
-            class="flex-item">
+            class="flex-item2">
             <el-option
               v-for="(item, index) in providerOptions"
               :key="index"
@@ -111,7 +111,7 @@
           v-if="form.roleName=='GROUP'">
           <el-select
             v-model="form.groupPk"
-            class="flex-item">
+            class="flex-item2">
             <el-option
               v-for="(item, index) in groupOptions"
               :key="index"
@@ -126,7 +126,7 @@
           v-if="form.roleName=='SITE'">
           <el-select
             v-model="form.sitePks"
-            class="flex-item"
+            class="flex-item2"
             filterable
             multiple
             placeholder="Select with search">
@@ -182,7 +182,6 @@ export default {
         userPk: undefined,
         userName: "",
         email: "",
-        phone: "",
         roleName: "",
         lastLogin: "",
         password: "",
@@ -250,9 +249,6 @@ export default {
           this.getUserInfo();
         })
       }
-    },
-    isEdit(n, o) {
-      this.init();
     }
   },
   mounted() {
@@ -260,6 +256,7 @@ export default {
   },
   methods: {
     hideDialog(success) {
+      this.init();
       this.$emit("hide", success || false);
     },
     init() {
@@ -276,6 +273,7 @@ export default {
         groupPk: "",
         sitePks: []
       }
+      this.loading = false;
       this.$nextTick(() => {
         this.$refs['acsForm'].clearValidate();
       })
@@ -400,4 +398,14 @@ export default {
   min-width: 200px;
   max-width: 270px;
 }
+.flex-item2 {
+  width: 100%;
+  min-width: 200px;
+}
+@media screen and (max-width: 500px) {
+  .flex-item {
+    width: 100%;
+    max-width: none;
+  }
+}
 </style>

+ 42 - 8
Strides-Admin/src/views/access/index.vue

@@ -29,7 +29,8 @@
     <el-table
       v-loading="table.loading"
       :data="table.list"
-      style="width: 100%;min-height: 58vh;">
+      class="no-border"
+      fit>
       <el-table-column
         label="Name"
         align="center">
@@ -41,14 +42,23 @@
         label="Email Address"
         align="center"
         prop="email"/>
-      <el-table-column
-        label="Contact Number"
-        align="center"
-        prop="contactNumber"/>
       <el-table-column
         label="Role"
         align="center"
         prop="roleName"/>
+      <el-table-column
+        label="Description"
+        align="center"
+        prop="desc">
+        <template slot-scope="{row}">
+          <div
+            v-for="item in row.desc"
+            v-if="row.desc"
+            :key="item">
+            {{item}}
+          </div>
+        </template>
+      </el-table-column>
       <el-table-column
         label="Last Login"
         align="center"
@@ -125,9 +135,11 @@ export default {
         this.table.loading = false
       })
     },
-    hideDialog() {
+    hideDialog(e) {
+      this.dialogAction.id = "";
       this.dialogAction.visible = false;
-      this.getTableData();
+      if (e)
+        this.getTableData();
     },
     addUser() {
       this.dialogAction.id = "";
@@ -140,7 +152,29 @@ export default {
       this.dialogAction.visible = true;
     },
     deleteUser(row) {
-      
+      this.$confirm('Are you sure you want to delete this user?', 'Delete', {
+        confirmButtonText: 'Confirm',
+        cancelButtonText: 'Cancel',
+        type: 'warning'
+      }).then(res => {
+        this.onDeleteUser(row.userPk);
+      })
+    },
+    onDeleteUser(id) {
+      this.table.loading = true;
+      api.deleteAccessUser(id).then(res => {
+        this.$message({
+          type: 'success',
+          message: "Successfully deleted!"
+        })
+      }).catch(err => {
+        this.$message({
+          type: 'error',
+          message: err
+        })
+      }).finally(() => {
+        this.table.loading = false
+      })
     }
   }
 }

+ 1 - 0
Strides-Admin/src/views/charge/Connectors.vue

@@ -53,6 +53,7 @@
       v-loading="listLoading"
       :data="connectorList"
       fit
+      class="no-border"
       style="width: 100%;min-height: 65vh;">
       <el-table-column
         label="Station ID"

+ 1 - 0
Strides-Admin/src/views/charge/RegisteredChargeStations.vue

@@ -77,6 +77,7 @@
       v-loading="listLoading"
       :data="stationList"
       fit
+      class="no-border"
       style="width: 100%;min-height: 65vh;">
       <el-table-column
         label="Station ID"

+ 1 - 1
Strides-Admin/src/views/charge/UnknownChargeStations.vue

@@ -30,7 +30,7 @@
     <el-table
       v-loading="listLoading"
       :data="stationList"
-      style="width: 100%;min-height: 65vh;">
+      style="width: 100%;">
       <el-table-column
         label="OCPP ID"
         align="center"

+ 1 - 1
Strides-Admin/src/views/charging/ChargingProfiles.vue

@@ -14,7 +14,7 @@
       v-loading="listLoading"
       :data="tableList"
       fit
-      style="width: 100%;min-height: 65vh;">
+      style="width: 100%;">
       <el-table-column
         :label="item.label"
         align="center"

+ 8 - 0
Strides-Admin/src/views/charging/ConfigureStations.vue

@@ -80,6 +80,14 @@
         </template>
       </el-table-column>
     </el-table>
+    <div class="right">
+      <pagination
+        v-show="table.total > 0"
+        :total="table.total"
+        :page.sync="filter.pageNo"
+        :limit.sync="filter.pageSize"
+        @pagination="getTableData" />
+    </div>
     <DialogSetProfiles
       :visible="actionDialog.visible"
       :item="actionDialog.item"

+ 1 - 1
Strides-Admin/src/views/driver/index.vue

@@ -69,7 +69,7 @@
         width="100">
         <template slot-scope="{row}" >
           <router-link
-            class="table-link"
+            class="link-type"
             :to="{
               name: 'DriverDetail',
               query: {

+ 1 - 1
Strides-Admin/src/views/feedback/FeedbackManagement.vue

@@ -43,7 +43,7 @@
       :data="tableList"
       fit
       :row-class-name="({row})=>'read'+row.readStatus"
-      style="width: 100%;min-height: 65vh;">
+      style="width: 100%;">
       <el-table-column
         label="ID"
         align="center"

+ 1 - 1
Strides-Admin/src/views/incident/connectivity.vue

@@ -33,7 +33,7 @@
     <el-table
       v-loading="table.loading"
       :data="table.list"
-      style="width: 100%;min-height: 58vh;">
+      style="width: 100%;">
       <el-table-column
         label="Site ID"
         align="center"

+ 1 - 2
Strides-Admin/src/views/incident/error_table.vue

@@ -21,8 +21,7 @@
     <el-table
       v-loading="listLoading"
       :data="tableList"
-      fit
-      style="width: 100%;min-height: 65vh;">
+      style="width: 100%;">
       <el-table-column
         label="Site"
         align="center"

+ 1 - 1
Strides-Admin/src/views/limit/CreditLimit.vue

@@ -15,7 +15,7 @@
       :data="tableList"
       fit
       :row-class-name="({row})=>'read'+row.readStatus"
-      style="width: 100%;min-height: 65vh;">
+      style="width: 100%;">
       <!--el-table-column
         label="ID"
         align="center"

+ 1 - 1
Strides-Admin/src/views/login/login.vue

@@ -45,7 +45,7 @@
             :type="passwordType"
             name="password"
             tabindex="2"
-            autocomplete="on"
+            autocomplete="off"
             clearable
             maxlength="20"
             @keyup.enter.native="handleLogin"

+ 8 - 2
Strides-Admin/src/views/notification/index.vue

@@ -13,7 +13,10 @@
         </div>
       </div>
     </div>
-    <el-table :data="table.list" v-loading="table.loading">
+    <el-table
+      :data="table.list"
+      v-loading="table.loading"
+      fit>
       <el-table-column
         align="center"
         label="Notificaiton ID"
@@ -116,7 +119,10 @@ export default {
         pageSize: this.table.pageSize,
         pageVo: {criteria: ""}
       }).then(res => {
-        this.table.list = res.data
+        if (res.data) {
+          this.table.list = res.data
+          this.table.total = res.total
+        }
       }).catch(err => {
         this.$message({
           type: 'error',

+ 64 - 24
Strides-Admin/src/views/ocpp/OCPPOperations.vue

@@ -77,7 +77,6 @@
           prop="operation">
           <el-select
             class="flex-item"
-            style="max-width: 320px;"
             v-model="operationForm.operation"
             @change="changeOperation">
             <el-option
@@ -96,7 +95,6 @@
           <el-select
             v-model="operationForm.filterType"
             class="flex-item"
-            style="max-width: 320px;"
             @change="changeFilterType">
             <el-option
               v-for="(item, index) in paramsOption.filterTypeOption"
@@ -111,8 +109,7 @@
           v-if="paramsOption.needChargingProfile">
           <el-select
             v-model="operationForm.chargingProfilePk"
-            class="flex-item"
-            style="max-width: 320px;">
+            class="flex-item">
             <el-option
               v-for="(item, index) in paramsOption.chargingProfileOption"
               :key="index"
@@ -126,8 +123,7 @@
           v-if="paramsOption.needConnector">
           <el-select
             v-model="operationForm.connectorId"
-            class="flex-item"
-            style="max-width: 320px;">
+            class="flex-item">
             <el-option
               v-for="(item, index) in paramsOption.connectorIds"
               :key="index"
@@ -141,8 +137,7 @@
           v-if="paramsOption.needActConnector">
           <el-select
             v-model="operationForm.transactionId"
-            class="flex-item"
-            style="max-width: 320px;">
+            class="flex-item">
             <el-option
               v-for="(item, index) in paramsOption.connectorActIds"
               :key="index"
@@ -160,8 +155,7 @@
             remote
             :remote-method="filterMobile"
             class="flex-item"
-            :loading="tagLoading"
-            style="max-width: 320px;">
+            :loading="tagLoading">
             <el-option
               v-for="(item, index) in paramsOption.idTags"
               :key="index"
@@ -176,7 +170,6 @@
           <el-select
             v-model="operationForm.availType"
             class="flex-item"
-            style="max-width: 320px;"
             placeholder="Select">
             <el-option
               v-for="(item, index) in paramsOption.availTypeOption"
@@ -191,8 +184,7 @@
           v-if="paramsOption.needChargingProfilePurpose">
           <el-select
             v-model="operationForm.chargingProfilePurpose"
-            class="flex-item"
-            style="max-width: 320px;">
+            class="flex-item">
             <el-option
               v-for="(item, index) in paramsOption.chargingPurposeOption"
               :key="index"
@@ -205,8 +197,7 @@
           v-if="paramsOption.needChargingProfilePurpose">
           <el-input
             v-model="operationForm.stackLevel"
-            class="flex-item"
-            style="max-width: 320px;"/>
+            class="flex-item"/>
         </el-form-item>
         <el-form-item
           label="Key Type:"
@@ -215,7 +206,6 @@
           <el-select
             v-model="operationForm.keyType"
             class="flex-item"
-            style="max-width: 320px;"
             placeholder="Select"
             @change="changeKeyType">
             <el-option
@@ -234,7 +224,7 @@
           <el-select
             v-model="operationForm.confKeyList"
             class="flex-item"
-            style="max-width: 320px;align-items: flex-start;"
+            style="align-items: flex-start;"
             placeholder="Select multiple"
             :multiple="true">
             <el-option
@@ -252,7 +242,6 @@
           <el-select
             v-model="operationForm.confKey"
             class="flex-item"
-            style="max-width: 320px;"
             placeholder="Select">
             <el-option
               v-for="(item, index) in paramsOption.confKeyOption"
@@ -268,16 +257,14 @@
           v-if="paramsOption.keyTypeOption.length > 0 && operationForm.keyType == 'CUSTOM'">
           <el-input
             v-model="operationForm.customConfKey"
-            class="flex-item"
-            style="max-width: 315px;"/>
+            class="flex-item"/>
         </el-form-item>
         <el-form-item
           label="Value:"
           v-if="paramsOption.keyTypeOption.length > 0">
           <el-input
             v-model="operationForm.value"
-            class="flex-item"
-            style="max-width: 320px;"/>
+            class="flex-item"/>
         </el-form-item>
         <el-form-item
           label="Reset Type:"
@@ -285,7 +272,6 @@
           v-if="paramsOption.resetTypeOption.length > 0">
           <el-select
             class="flex-item"
-            style="max-width: 320px;"
             v-model="operationForm.resetType">
             <el-option
               v-for="(item, index) in paramsOption.resetTypeOption"
@@ -294,6 +280,38 @@
               :value="item.value"/>
           </el-select>
         </el-form-item>
+        <template v-if="operationInfo.value == 'UF'">
+          <el-form-item
+            label="Location(directory URI):"
+            prop="location">
+            <el-input
+              v-model="operationForm.location"
+              class="flex-item"/>
+          </el-form-item>
+          <el-form-item
+            label="Retries(integer):">
+            <el-input
+              v-model="operationForm.retries"
+              class="flex-item"/>
+          </el-form-item>
+          <el-form-item
+            label="Retry Interval(integer):">
+            <el-input
+              v-model="operationForm.retryInterval"
+              class="flex-item"/>
+          </el-form-item>
+          <el-form-item
+            label="Retrieve Date/Time:"
+            prop="retrieve">
+            <el-date-picker
+              v-model="operationForm.retrieve"
+              type="datetime"
+              format="yyyy-MM-dd HH:mm"
+              value-format="yyyy-MM-dd HH:mm"
+              default-time="12:00:00"
+              class="flex-item"/>
+          </el-form-item>
+        </template>
         <div class="perform">
           <el-button
             style="margin-left: 15px;"
@@ -347,6 +365,10 @@
           availType: '',
           idTagInfo: '',
           filterType: '',
+          location: "",
+          retrieve: "",
+          retries: "",
+          retryInterval: "",
           confKeyList: [],
           stationIds: [],
           stackLevel: '',
@@ -440,6 +462,16 @@
             required: true,
             trigger: 'change',
             message: 'Please select Charging Profile Purpose'
+          },
+          location: {
+            required: true,
+            trigger: 'blur',
+            message: 'Please input location'
+          },
+          retrieve: {
+            required: true,
+            trigger: 'change',
+            message: 'Please select retrieve date time'
           }
         },
         columns: [{
@@ -507,6 +539,10 @@
           availType: '',
           idTagInfo: '',
           filterType: '',
+          location: "",
+          retrieve: "",
+          retries: "",
+          retryInterval: "",
           confKeyList: [],
           stationIds: [],
           stackLevel: '',
@@ -711,7 +747,11 @@
     font-size: 12px;
     border-radius: 3px;
     position: absolute;
-    background-color: #001489;
+    background-color: #56D905;
+  }
+  .flex-item {
+    width: 100%;
+    max-width: 320px;
   }
   @media screen and (max-width: 500px) {
     .card-container {

+ 1 - 1
Strides-Admin/src/views/posDevice/index.vue

@@ -13,7 +13,7 @@
       v-loading="table.loading"
       :data="table.data"
       fit
-      style="width: 100%;min-height: 65vh;">
+      style="width: 100%;">
       <el-table-column
         label="Device Serial No."
         align="center"

+ 1 - 1
Strides-Admin/src/views/provider/ServiceProviderManagement.vue

@@ -38,7 +38,7 @@
       v-loading="listLoading"
       :data="tableList"
       fit
-      style="width: 100%;min-height: 65vh;">
+      style="width: 100%;">
       <el-table-column
         label="Provider ID"
         align="center"

+ 1 - 1
Strides-Admin/src/views/rfid/index.vue

@@ -30,7 +30,7 @@
       v-loading="table.loading"
       :data="table.data"
       fit
-      style="width: 100%;min-height: 65vh;">
+      style="width: 100%;">
       <!--el-table-column
         label="RFID No."
         align="center"

+ 2 - 2
Strides-Admin/src/views/transaction/reservations.vue

@@ -29,7 +29,7 @@
       v-loading="listLoading"
       :data="tableList"
       fit
-      style="width: 100%;min-height: 65vh;">
+      style="width: 100%;">
       <el-table-column
         width="100"
         label="User ID"
@@ -135,7 +135,7 @@ export default {
       this.getList();
     },
     getList() {
-      this.listLoading = false
+      this.listLoading = false;
     }
   }
 }

+ 1 - 0
Strides-Admin/src/views/transaction/transactions.vue

@@ -53,6 +53,7 @@
       v-loading="listLoading"
       :data="tableList"
       fit
+      class="no-border"
       style="width: 100%;min-height: 65vh;">
       <el-table-column
         width="150"

+ 2 - 3
Strides-Admin/src/views/user/UserManagement.vue

@@ -41,8 +41,7 @@
       v-loading="listLoading"
       :data="list"
       fit
-      highlight-current-row
-      style="width: 100%; min-height: 65vh;">
+      style="width: 100%;">
     >
       <el-table-column
         width="100"
@@ -200,7 +199,7 @@ export default {
     },
     handleDeleteUser(row, index) {
       this.$confirm('Are you sure you want to delete this user?', 'Delete', {
-        confirmButtonText: 'OK',
+        confirmButtonText: 'Confirm',
         cancelButtonText: 'Cancel',
         type: 'warning'
       }).then(res => {