瀏覽代碼

feat(影响油机sdk授权页面): 对接了后端油机SDK界面的分页查询接口

成功对接了后端分页查询接口(授权码查询未实现),实现了分页查询/重置查询列表功能。

BREAKING CHANGE: 实现了查询功能
wyoujia 1 年之前
父節點
當前提交
02ea0a3e4a

+ 5 - 6
admin.ui.plus-master/src/api/admin/deviceAuthorization/oilSdkAuthor.ts

@@ -1,4 +1,4 @@
-import {ContentType, HttpClient, RequestParams} from "/@/api/admin/http-client";
+import {ContentType, HttpClient, } from "/@/api/admin/http-client";
 import {oilSdkAuthorDtoResult, oilSdkAuthorPostPageDto} from "/@/api/admin/deviceAuthorization/oilSdkAuthorDto";
 
 export class OilSdkAuthor<SecurityDataType = unknown> extends HttpClient<SecurityDataType>{
@@ -12,14 +12,13 @@ export class OilSdkAuthor<SecurityDataType = unknown> extends HttpClient<Securit
  * @request GET:
  * @secure
  */
- getPageData = (data: oilSdkAuthorPostPageDto, params: RequestParams = {}) =>
-    this.request<oilSdkAuthorDtoResult, any>({
+ getPageData = (query: oilSdkAuthorPostPageDto) =>
+   this.request<oilSdkAuthorDtoResult, any>({
      path:'/api/app/fueiling-sdk-auth/get-page',
-     method: 'POST',
-     body: data,
+     method: 'GET',
      secure: true,
      type: ContentType.Json,
      format: 'json',
-     ...params,
+     query:query,
    })
 }

+ 19 - 16
admin.ui.plus-master/src/api/admin/deviceAuthorization/oilSdkAuthorDto.ts

@@ -3,7 +3,7 @@
  *  数据对象的Dto
  * */
 
-import {pageInput} from "/@/api/admin/shareDto/shareDto";
+import {columnsProps, pageInput} from "/@/api/admin/shareDto/shareDto";
 
 /**
  * @name: 数据对象接口
@@ -16,28 +16,29 @@ import {pageInput} from "/@/api/admin/shareDto/shareDto";
  * 条件查询模块
  */
 export interface oilSdkFilterModel {
-  /**guid*/
-  guid?: number ,
   /**油站名称 */
-  oilStation?: string | null,
+  OilStation?: string | null,
   /**项目名称 */
-  project?: string | null,
+  Project?: string | null,
   /**设备SN */
-  sn?: string | null,
+  SN?: string | null,
   /**授权码*/
-  key?: string,
+  Key?: string,
+  Time?:string,
   /**开始的时间 */
-  beginTime?: string | null,
+  BeginTime?: string | null,
   /**开始的时间 */
-  endTime?: string | null,
+  EndTime?: string  | null,
 }
 
 /**
  * 表格信息
  */
 export interface oilSdkTableModel {
-  /***/
+  /**id*/
   guid: number,
+  /**日期*/
+  date: string,
   /**加油站*/
   oilStation: string | null,
   /**项目名称*/
@@ -61,12 +62,15 @@ export interface oilSdkTableModel {
  * @date 2023-12-29 11:12:08
 */
 export interface OilSdkAuthorDto {
+  time: string,
   /**加载显示 */
   loading: boolean,
   /**条件查询模块 */
-  filterModel: oilSdkFilterModel,
+  Filter: oilSdkFilterModel,
   /**表格信息 */
-  tableModel: oilSdkTableModel [] | null,
+  tableModel: oilSdkTableModel [] | [],
+  /**动态表头 */
+  dynamicColumns: columnsProps [] | [],
   /**分页标识 */
   pageInput: pageInput,
   /**分页总数 */
@@ -102,12 +106,11 @@ export interface oilSdkAuthorPostPageDto {
    * 当前页标
    * @format int32
    */
-  currentPage?: number
+  CurrentPage?: number
   /**
    * 每页大小
    * @format int32
    */
-  pageSize?: number
-  dynamicFilter?: DynamicFilterInfo
-  filter?: oilSdkFilterModel
+  PageSize?: number
+  Filter?: oilSdkFilterModel
 }

+ 2 - 13
admin.ui.plus-master/src/api/admin/productionManagement/ComponentDetailsDto.ts

@@ -3,7 +3,7 @@
  *  数据对象的Dto
  * */
 
-import {pageInput} from "/@/api/admin/shareDto/shareDto";
+import {columnsProps, pageInput} from "/@/api/admin/shareDto/shareDto";
 
 /**
  * @name: 数据对象接口
@@ -45,18 +45,7 @@ export interface goodsInformationBasic {
 
 
 
-/**
- * @name:
- * @description: 生产管理 - 部件详情 - 动态表头
- * @author wyoujia
- * @date 2023-59-25 15:59:56
-*/
-export interface columnsProps {
-  /**表头标题 */
-  label: string | null,
-  /**表头值 */
-  prop: string | null
-}
+
 
 /**
  * @name: 数据对象接口

+ 15 - 2
admin.ui.plus-master/src/api/admin/shareDto/shareDto.ts

@@ -8,7 +8,20 @@
  */
 export interface pageInput {
   /**当前页数 */
-  currentPage: 1,
+  CurrentPage: 1,
   /**展示页数 */
-  pageSize: 20
+  PageSize: 20
+}
+
+/**
+ * @name:
+ * @description: 动态表头
+ * @author wyoujia
+ * @date 2023-59-25 15:59:56
+ */
+export interface columnsProps {
+  /**表头标题 */
+  label: string | null,
+  /**表头值 */
+  prop: string | null
 }

+ 42 - 10
admin.ui.plus-master/src/views/admin/authorize/component/editInfo.vue

@@ -1,36 +1,51 @@
 <template>
   <div class="admin-authorize-editInfo">
-    <el-dialog title="修改信息" v-model="state.isShowDialog" width="769px">
+    <el-dialog :title="state.title" v-model="state.isShowDialog" width="769px">
       <el-form :model="state.editData" size="default" label-width="80px">
         <el-row :gutter="35">
           <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
             <el-form-item label="日期">
-              <el-input v-model="state.editData.date" placeholder="格式:message.router.xxx" clearable></el-input>
+              <el-date-picker
+                v-model="state.editData.date"
+                type="datetime"
+                value-format="YYYY-MM-DD HH:mm:ss"
+                placeholder="Select date and time"
+              />
             </el-form-item>
           </el-col>
           <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
             <el-form-item label="油站名称">
-              <el-input v-model="state.editData.serviceStationName" placeholder="格式:message.router.xxx" clearable></el-input>
+              <el-input v-model="state.editData.oilStation" placeholder="格式:message.router.xxx" clearable></el-input>
             </el-form-item>
           </el-col>
           <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
             <el-form-item label="项目名称">
-              <el-input v-model="state.editData.entryName" placeholder="格式:message.router.xxx" clearable></el-input>
+              <el-input v-model="state.editData.projectName" placeholder="格式:message.router.xxx" clearable></el-input>
             </el-form-item>
           </el-col>
           <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
             <el-form-item label="设备SN">
-              <el-input v-model="state.editData.SN" placeholder="格式:message.router.xxx" clearable></el-input>
+              <el-input v-model="state.editData.sn" placeholder="格式:message.router.xxx" clearable></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="授权码">
+              <el-input v-model="state.editData.key" placeholder="格式:message.router.xxx" clearable></el-input>
             </el-form-item>
           </el-col>
           <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
             <el-form-item label="有效时间">
-              <el-input v-model="state.editData.effectiveTime" placeholder="格式:message.router.xxx" clearable></el-input>
+              <el-date-picker
+                v-model="state.editData.expiedTime"
+                type="datetime"
+                value-format="YYYY-MM-DD HH:mm:ss"
+                placeholder="Select date and time"
+              />
             </el-form-item>
           </el-col>
           <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="授权码">
-              <el-input v-model="state.editData.authorization" placeholder="格式:message.router.xxx" clearable></el-input>
+            <el-form-item label="状态">
+              <el-input v-model="state.editData.state" placeholder="格式:message.router.xxx" clearable></el-input>
             </el-form-item>
           </el-col>
           <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
@@ -56,12 +71,29 @@ import {oilSdkTableModel} from "/@/api/admin/deviceAuthorization/oilSdkAuthorDto
 
 /**数据对象 */
 const state = reactive({
+  title:'',
   isShowDialog: false,
-  editData:{} as oilSdkTableModel
+  editData:{} as oilSdkTableModel,
+  /**动态表头 */
+  dynamicColumns: [
+    { prop: 'oilStation', label: '油站名称' },
+    { prop: 'projectName', label: '项目名称' },
+    { prop: 'sn', label: '设备SN号' },
+    { prop: 'key', label: '授权码' },
+    { prop: 'expiedTime', label: '过期时间' },
+    { prop: 'state', label: '状态' },
+    { prop: 'remark', label: '备注' },
+  ],
 })
 
 const openDialog = (val) => {
-  state.editData = JSON.parse(JSON.stringify(val))
+  if(val){
+    state.editData = JSON.parse(JSON.stringify(val))
+    state.title = '更新授权'
+  }else {
+    state.editData = {} as oilSdkTableModel
+    state.title = '新增授权'
+  }
   state.isShowDialog = true
 }
 

+ 94 - 38
admin.ui.plus-master/src/views/admin/authorize/fuelingsdk.vue

@@ -3,28 +3,34 @@
   <div class="layout-pd">
     <!--操作-->
     <el-card  shadow="hover" >
-          <el-form :model="sdkData.filterModel" size="default" label-width="100px" class="mt35 mb35">
+          <el-form :model="sdkData.Filter" size="default" label-width="100px" class="mt35 mb35">
             <el-row :gutter="35">
               <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
                 <el-form-item label="油站名称">
-                  <el-input v-model="sdkData.filterModel.oilStation" placeholder="单行输入" clearable></el-input>
+                  <el-input v-model="sdkData.Filter.OilStation" placeholder="单行输入" clearable></el-input>
                 </el-form-item>
               </el-col>
               <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
                 <el-form-item label="项目名称">
-                  <el-input v-model="sdkData.filterModel.project" placeholder="单行输入" clearable></el-input>
+                  <el-input v-model="sdkData.Filter.Project" placeholder="单行输入" clearable></el-input>
                 </el-form-item>
               </el-col>
               <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
                 <el-form-item label="SN">
-                  <el-input v-model="sdkData.filterModel.sn" placeholder="单行输入" clearable></el-input>
+                  <el-input v-model="sdkData.Filter.SN" placeholder="单行输入" clearable></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
+                <el-form-item label="授权码">
+                  <el-input v-model="sdkData.Filter.Key" placeholder="单行输入" clearable></el-input>
                 </el-form-item>
               </el-col>
               <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
                 <el-form-item label="选择时间">
                   <el-date-picker
-                    v-model="sdkData.filterModel.beginTime"
+                    v-model="sdkData.time"
                     type="datetimerange"
+                    value-format="YYYY-MM-DD HH:mm:ss"
                     range-separator="To"
                     start-placeholder="Start date"
                     end-placeholder="End date"
@@ -34,9 +40,18 @@
               <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" >
                 <el-form-item>
                   <el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
+                </el-form-item>
+              </el-col>
+              <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" >
+                <el-form-item>
                   <el-button type="primary" icon="ele-Delete" @click="onReset"> 重置 </el-button>
                 </el-form-item>
               </el-col>
+              <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" >
+                <el-form-item>
+                  <el-button type="primary" icon="ele-Delete" @click="onAdd"> 添加 </el-button>
+                </el-form-item>
+              </el-col>
               <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" >
                 <el-form-item>
                   <el-button type="primary" icon="ele-UploadFilled" @click="uploadFiles"> 批量导入 </el-button>
@@ -49,13 +64,7 @@
     <!--表格-->
     <el-card style="height: 70vh" class="my-fill mt8" shadow="hover">
         <el-table v-loading="sdkData.loading" :data="sdkData.tableModel" row-key="id" style="width: 100%">
-          <el-table-column prop="date" label="日期"  />
-          <el-table-column prop="serviceStationName" label="油站名称"  />
-          <el-table-column prop="entryName" label="项目名称"  />
-          <el-table-column prop="SN" label="设备SN"  />
-          <el-table-column prop="effectiveTime" label="有效时间"  />
-          <el-table-column prop="authorization" label="授权码"  />
-          <el-table-column prop="remark" label="备注"/>
+          <el-table-column v-for="column in sdkData.dynamicColumns" :key="column.prop" :prop="column.prop" :label="column.label"  />
           <el-table-column label="操作"  fixed="right" header-align="center" align="center">
             <template #default="{ row }">
               <el-link
@@ -72,8 +81,8 @@
         </el-table>
         <div class="my-flex my-flex-end" style="margin-top: 20px">
           <el-pagination
-            v-model:currentPage="sdkData.pageInput.currentPage"
-            v-model:page-size="sdkData.pageInput.pageSize"
+            v-model:currentPage="sdkData.pageInput.CurrentPage"
+            v-model:page-size="sdkData.pageInput.PageSize"
             :total="sdkData.total"
             :page-sizes="[10, 20, 50, 100]"
             small
@@ -89,7 +98,7 @@
 </template>
 
 <script setup lang="ts" name="authorize/fuelingsdk">
-import {defineAsyncComponent, onMounted, reactive, ref} from "vue";
+import {defineAsyncComponent, onMounted, reactive, ref, watch} from "vue";
 import {OilSdkAuthorDto, oilSdkFilterModel, oilSdkTableModel} from "/@/api/admin/deviceAuthorization/oilSdkAuthorDto";
 import {OilSdkAuthor} from "/@/api/admin/deviceAuthorization/oilSdkAuthor";
 import type {pageInput} from "/@/api/admin/shareDto/shareDto";
@@ -100,65 +109,112 @@ const EditDialog = defineAsyncComponent(() => import('./component/editInfo.vue')
 const editDialogRef = ref()
 /**sdk授权页面对象 */
 const sdkData = reactive({
+  time:'',
   /**加载显示 */
   loading: false,
   /**条件查询模块 */
-  filterModel: {
-    /**guid*/
-    guid: 0 ,
+  Filter: {
     /**油站名称 */
-    oilStation: "",
+    OilStation: "",
     /**项目名称 */
-    project: "",
+    Project: "",
     /**设备SN */
-    sn: "",
+    SN: "",
     /**授权码*/
-    key: "",
+    Key: "",
     /**开始的时间 */
-    beginTime: "",
+    BeginTime: null,
     /**开始的时间 */
-    endTime: "",
+    EndTime: null,
   } as oilSdkFilterModel,
   /**表格信息 */
   tableModel: [] as oilSdkTableModel,
+  /**动态表头 */
+  dynamicColumns: [
+    { prop: 'guid', label: '编号' },
+    { prop: 'oilStation', label: '油站名称' },
+    { prop: 'projectName', label: '项目名称' },
+    { prop: 'sn', label: '设备SN号' },
+    { prop: 'key', label: '授权码' },
+    { prop: 'expiedTime', label: '有效时间' },
+    { prop: 'state', label: '状态' },
+    { prop: 'remark', label: '备注' },
+  ],
   /**分页标识 */
   pageInput:{
-    currentPage: 1,
-    pageSize: 20,
+    CurrentPage: 1,
+    PageSize: 20,
   } as pageInput,
   /**分页总数 */
   total: 0,
 } as OilSdkAuthorDto)
 
+/**
+ * 监听时间变换
+ */
+watch(() => sdkData.time, (newVal ) => {
+  if(newVal.length === 0){
+    return
+  }
+  sdkData.Filter.BeginTime = newVal?.[0].toString()
+  sdkData.Filter.EndTime = newVal?.[1].toString()
+})
+
 /**条件查询 */
 const onQuery = () => {
   init()
 }
 
-/**重置表单 */
-const resetForm = () => {
-  sdkData.filterModel.oilStation = ''
-  sdkData.filterModel.project = ''
-  sdkData.filterModel.sn = ''
-  sdkData.filterModel.beginTime = ''
+/**重置查询条件 */
+const resetQuery = () => {
+  sdkData.Filter.OilStation = ''
+  sdkData.Filter.Project = ''
+  sdkData.Filter.SN = ''
+  sdkData.Filter.Key = ''
+  sdkData.Filter.BeginTime =  ''
+  sdkData.Filter.EndTime = ''
+  sdkData.time = ''
 }
+
 /**重置 */
 const onReset = () => {
-  resetForm()
+  resetQuery()
   init()
 }
 
+/**添加*/
+const onAdd = () => {
+  editDialogRef.value.openDialog()
+}
+
 /**初始化 */
 const init = async () => {
   sdkData.loading = true
-  const res = await new OilSdkAuthor().getPageData({...sdkData.pageInput, filter: sdkData.filterModel})
-  console.log(res)
-  // sdkData.tableModel = res?.tableModel ?? []
-  // sdkData.pageInput = res?.pageInput ?? {}
-  // sdkData.total = res?.total ?? 0
+  const query = flattenObject({...sdkData.pageInput, Filter: sdkData.Filter})
+  const res = await new OilSdkAuthor().getPageData(query)
+  sdkData.tableModel = res?.data?.list ?? []
+  sdkData.total = res?.data?.total ?? 0
   sdkData.loading = false
 }
 
+/**将Filter对象成.的连接方式*/
+const flattenObject = (obj, parentKey = '') => {
+  const result = {};
+  for (const key in obj) {
+    if (obj.hasOwnProperty(key)) {
+      const newKey = parentKey ? `${parentKey}.${key}` : key;
+      if (typeof obj[key] === 'object' && !Array.isArray(obj[key])) {
+        const flattened = flattenObject(obj[key], newKey);
+        Object.assign(result, flattened);
+      } else {
+        result[newKey] = obj[key];
+      }
+    }
+  }
+
+  return result;
+}
+
 /**编辑弹窗 */
 const editTableData = (row) => {
   editDialogRef.value.openDialog(row)

+ 11 - 12
admin.ui.plus-master/src/views/admin/product/goodInfo.vue

@@ -43,8 +43,8 @@
           </el-table>
           <div class="my-flex my-flex-end" v-if="goods.productionLog.pageInput" style="margin-top: 20px">
             <el-pagination
-              v-model:currentPage="goods.productionLog.pageInput.currentPage"
-              v-model:page-size="goods.productionLog.pageInput.pageSize"
+              v-model:currentPage="goods.productionLog.pageInput.CurrentPage"
+              v-model:page-size="goods.productionLog.pageInput.PageSize"
               :total="goods.productionLog.total"
               :page-sizes="[10, 20, 50, 100]"
               small
@@ -65,8 +65,8 @@
           </el-table>
           <div class="my-flex my-flex-end" v-if="goods.alarmLog.pageInput" style="margin-top: 20px">
             <el-pagination
-              v-model:currentPage="goods.alarmLog.pageInput.currentPage"
-              v-model:page-size="goods.alarmLog.pageInput.pageSize"
+              v-model:currentPage="goods.alarmLog.pageInput.CurrentPage"
+              v-model:page-size="goods.alarmLog.pageInput.PageSize"
               :total="goods.alarmLog.total"
               :page-sizes="[10, 20, 50, 100]"
               small
@@ -97,12 +97,11 @@ import {ComponentDetails} from "/@/api/admin/productionManagement/ComponentDetai
 import router from "/@/router";
 import type {
   alarmLog,
-  columnsProps,
   goodsInformationBasic,
   productionLog
 } from "/@/api/admin/productionManagement/ComponentDetailsDto";
 import {adminProductGoodsInfoDto} from "/@/api/admin/productionManagement/ComponentDetailsDto";
-import type { pageInput } from "/@/api/admin/shareDto/shareDto";
+import type {columnsProps, pageInput} from "/@/api/admin/shareDto/shareDto";
 
 //组件的页面对象
 const goods = reactive({
@@ -140,8 +139,8 @@ const goods = reactive({
     dynamicColumns: [] as Array<columnsProps>,
     /**页面分页 */
     pageInput: {
-      currentPage: 1,
-      pageSize: 20
+      CurrentPage: 1,
+      PageSize: 20
     } as pageInput,
     /**总数 */
     total: 0
@@ -159,25 +158,25 @@ const showBigPic = (val) => {
 
 /**生产日志分页size变化 */
 const onProductionLogSizeChange = (val) => {
-  goods.productionLog.pageInput.pageSize = val
+  goods.productionLog.pageInput.PageSize = val
   initProductionLog()
 }
 
 /**生产日志分页Current变化 */
 const onProductionLogCurrentChange = (val) => {
-  goods.productionLog.pageInput.currentPage = val
+  goods.productionLog.pageInput.CurrentPage = val
   initProductionLog()
 }
 
 /**报警日志分页size变化 */
 const onAlarmLogSizeChange = (val) => {
-  goods.alarmLog.pageInput.currentPage = val
+  goods.alarmLog.pageInput.CurrentPage = val
   initAlarmLog()
 }
 
 /**报警日志分页Current变化 */
 const onAlarmLogCurrentChange = (val) => {
-  goods.alarmLog.pageInput.currentPage = val
+  goods.alarmLog.pageInput.CurrentPage = val
   initAlarmLog()
 }