Browse Source

feat:最新一版

DOVER-GLOBAL\10093976 2 ngày trước cách đây
mục cha
commit
78ef686061
30 tập tin đã thay đổi với 662 bổ sung243 xóa
  1. 1 1
      admin.ui.plus-master/beiyong.vue
  2. 40 18
      admin.ui.plus-master/src/api/admin/AlarmService/alarmQueryApi.ts
  3. 38 21
      admin.ui.plus-master/src/api/admin/AlarmService/alarmQueryDto.ts
  4. 23 0
      admin.ui.plus-master/src/api/admin/AlarmService/testApi.ts
  5. 57 0
      admin.ui.plus-master/src/api/admin/AlarmService/testDto.ts
  6. 1 1
      admin.ui.plus-master/src/views/admin/PCBA/boardFunctionResult/index.vue
  7. 1 1
      admin.ui.plus-master/src/views/admin/PCBA/boardFunctionSummary/index.vue
  8. 1 1
      admin.ui.plus-master/src/views/admin/PCBA/boardList/index.vue
  9. 1 1
      admin.ui.plus-master/src/views/admin/PCBA/boardTestRecord/index.vue
  10. 2 2
      admin.ui.plus-master/src/views/admin/application/fuelingFTP/index.vue
  11. 11 4
      admin.ui.plus-master/src/views/admin/application/fuelingFTPofDate/index.vue
  12. 2 2
      admin.ui.plus-master/src/views/admin/authorize/dispenserAuthCode/index.vue
  13. 6 4
      admin.ui.plus-master/src/views/admin/authorize/fuelingFTP/index.vue
  14. 3 3
      admin.ui.plus-master/src/views/admin/authorize/fuelingFTPofDate/index.vue
  15. 3 3
      admin.ui.plus-master/src/views/admin/authorize/oilUp/index.vue
  16. 1 1
      admin.ui.plus-master/src/views/admin/product/groupLogo/index.vue
  17. 1 1
      admin.ui.plus-master/src/views/admin/product/slelist/index.vue
  18. 1 1
      admin.ui.plus-master/src/views/admin/product/type/index.vue
  19. 1 1
      admin.ui.plus-master/src/views/admin/statement/BlackBox/index.vue
  20. 163 149
      admin.ui.plus-master/src/views/admin/statement/alarmQuery/index.vue
  21. 1 1
      admin.ui.plus-master/src/views/admin/statement/displayControl/index.vue
  22. 2 2
      admin.ui.plus-master/src/views/admin/statement/encodercontrols/index.vue
  23. 2 2
      admin.ui.plus-master/src/views/admin/statement/jikongzhuban/index.vue
  24. 1 1
      admin.ui.plus-master/src/views/admin/statement/problemData/index.vue
  25. 1 1
      admin.ui.plus-master/src/views/admin/statement/repairList/index .vue
  26. 1 1
      admin.ui.plus-master/src/views/admin/statement/taxcontrol/index.vue
  27. 3 3
      admin.ui.plus-master/src/views/admin/yujing/alarmRules/Level.vue
  28. 258 0
      admin.ui.plus-master/src/views/admin/yujing/alarmRules/test.vue
  29. 1 1
      admin.ui.plus-master/src/views/example/application/equipment/index.vue
  30. 35 16
      admin.ui.plus-master/src/views/example/codeGeneration/index.vue

+ 1 - 1
admin.ui.plus-master/beiyong.vue

@@ -624,7 +624,7 @@ const pageState = useDynamicPageSize(10, 15);`
         const init = async () => {
           state.loading = true`
           if(state.isPage){
-            indexCode=indexCode+`\nconst res:any = await new Api().getList({...state.pageInput, Filter:state.filter})
+            indexCode=indexCode+`\nconst res:any = await new Api().getList({...pageState.pageInput, Filter:state.filter})
             state.total = res?.data?.total ?? 0`
           }else{
             indexCode=indexCode+`\nconst res:any = await new Api().getList({...state.filter})`

+ 40 - 18
admin.ui.plus-master/src/api/admin/AlarmService/alarmQueryApi.ts

@@ -1,23 +1,45 @@
 import { AxiosResponse } from 'axios'
-  import { ContentType, HttpClient, RequestParams } from '/@/api/admin/http-client'
-  export class Api<SecurityDataType = unknown> extends HttpClient<SecurityDataType> {
-    /**
-   * No description
-   *
-   * @tags
+import { ContentType, HttpClient, RequestParams } from '/@/api/admin/http-client'
+import { ResultOutputBoolean } from '/@/api/admin/AlarmService/alarmQueryDto'
+
+export class Api<SecurityDataType = unknown> extends HttpClient<SecurityDataType> {
+  /**
+   * 查询列表
+   * @tags 推送管理
    * @name GetList
-   * @summary 查询列表
+   * @summary 查询推送列表
    * @request POST:'/api/app/push/get-push-list'
    * @secure
    */
-getList = (data:any ,params: RequestParams = {}) : any  =>
-      this.request<AxiosResponse,any>({
-        path:'/api/app/push/get-push-list',
-        method: 'POST',
-        body:data,
-        type: ContentType.Json,
-        secure: true,
-        format: 'json',
-        ...params
-      })
-    }
+  getList = (data: any, params: RequestParams = {}): Promise<any> =>
+    this.request<AxiosResponse, any>({
+      path: '/api/app/push/get-push-list',
+      method: 'POST',
+      body: data,
+      type: ContentType.Json,
+      secure: true,
+      format: 'json',
+      ...params
+    })
+
+  /**
+   * 模板推送
+   * @tags 推送管理
+   * @name TemplateSend
+   * @summary 执行推送操作
+   * @request POST:'/api/app/push/template-send'
+   * @secure
+   */
+  templateSend = (data: {
+    filter: any,        // 筛选条件
+    selectedIds: any[]  // 选中的记录ID
+  }, params: RequestParams = {}): Promise<ResultOutputBoolean> =>
+    this.request<AxiosResponse, ResultOutputBoolean>({
+      path: '/api/app/push/template-send',
+      method: 'POST',
+      body: data,
+      type: ContentType.FormUrlEncoded, // 匹配接口要求的content-type
+      secure: true,
+      ...params
+    })
+}

+ 38 - 21
admin.ui.plus-master/src/api/admin/AlarmService/alarmQueryDto.ts

@@ -1,5 +1,5 @@
 /** 查询信息输出 */
-  export interface ResultOutputListPushDto{
+export interface ResultOutputListPushDto {
   /** 是否成功标记 */
   success?: boolean
   /** 编码 */
@@ -7,27 +7,44 @@
   /** 消息 */
   msg?: string | null
   /** 数据 */
- data?:PushDto[] | null
+  data?: {
+    list: PushDto[]
+    total: number
+  } | null
 }
-      export interface PushDto{
-   /** 规则id */
-        ruleId?: integer
-   /** 推送用户id */
-        pushUserid?: integer
-   /** 推送用户 */
-        pushUser?: string
-   /** 推送内容 */
-        content?: string
-   /** 是否推送 */
-        isPushed?: boolean | ""
-   /** 推送时间 */
-        pushTime?: string
-   /** 报警ID */
-        alarmhistoryID?: string
-   /** 优先级 */
-        taskPriority?: integer
 
-        sdate?:string
-        edate?:string
+/** 推送接口响应 */
+export interface ResultOutputBoolean {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: boolean | null
+}
+
+/** 推送数据模型 */
+export interface PushDto {
+  /** 规则id */
+  ruleId?: number
+  /** 推送用户id */
+  pushUserid?: number
+  /** 推送用户 */
+  pushUser?: string
+  /** 推送内容 */
+  content?: string
+  /** 是否推送 */
+  pushed?: string  // 与页面显示保持一致:"已推送"/"未推送"
+  /** 推送时间 */
+  pushTime?: string
+  /** 报警ID */
+  alarmhistoryID?: string
+  /** 优先级 */
+  taskPriority?: number
 
+  // 时间范围参数
+  sdate?: string
+  edate?: string
 }

+ 23 - 0
admin.ui.plus-master/src/api/admin/AlarmService/testApi.ts

@@ -0,0 +1,23 @@
+import { AxiosResponse } from 'axios'
+  import { ContentType, HttpClient, RequestParams } from '/@/api/admin/http-client'
+  export class Api<SecurityDataType = unknown> extends HttpClient<SecurityDataType> {
+    /**
+   * No description
+   *
+   * @tags
+   * @name GetList
+   * @summary 查询列表
+   * @request POST:'/api/app/board-test-record/get-board-test-record-page'
+   * @secure
+   */
+getList = (data:any ,params: RequestParams = {}) : any  =>
+      this.request<AxiosResponse,any>({
+        path:'/api/app/board-test-record/get-board-test-record-page',
+        method: 'POST',
+        body:data,
+        type: ContentType.Json,
+        secure: true,
+        format: 'json',
+        ...params
+      })
+    }

+ 57 - 0
admin.ui.plus-master/src/api/admin/AlarmService/testDto.ts

@@ -0,0 +1,57 @@
+/** 查询信息输出 */
+  export interface ResultOutputPageOutputBoardTestRecordDto{
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+ data?:PageOutputBoardTestRecordDto[] | null
+}
+    export interface PageOutputBoardTestRecordDto{
+      /**
+      * 数据总数
+      * @format int64
+      */
+      total?: number
+      /** 数据 */
+      list?: BoardTestRecordDto[] | null
+    }
+    export interface BoardTestRecordDto{
+   /** 序列号 */
+      serno?: string
+   /** 外部序列号 */
+      exserno?: string
+   /** 主板类型 */
+      boardType?: integer
+   /** 主板名称 */
+      boardName?: string
+   /** 功能码 */
+      functionCode?: integer
+   /** 功能名称 */
+      functionName?: string
+   /** 检测类型 */
+      testType?: integer
+   /** 检测时间 */
+      time?: string
+   /** 测试结果 */
+      result?: integer
+   /** 测试功能数 */
+      testNum?: integer
+   /** 测试成功功能数 */
+      testSuccessNum?: integer
+   /** 测试员 */
+      user?: string
+   /** 测试耗时 */
+      duration?: integer
+   /** 备注 */
+      info?: string
+
+}
+export interface pageInput {
+      /**当前页数 */
+      CurrentPage: number | any
+      /**展示页数 */
+      PageSize: number | any
+    }

+ 1 - 1
admin.ui.plus-master/src/views/admin/PCBA/boardFunctionResult/index.vue

@@ -274,7 +274,7 @@ const init = async () => {
   const beginCreateTime = createTimeRange.length > 0? createTimeRange[0] : "";
   const endCreateTime = createTimeRange.length > 1? createTimeRange[1] : "";
   const res: any = await new BoardFunctionResultApi().getList({
-    ...state.pageInput,
+    ...pageState.pageInput,
     Filter: {
       ...filterWithoutTimeRange,
       beginCreateTime,

+ 1 - 1
admin.ui.plus-master/src/views/admin/PCBA/boardFunctionSummary/index.vue

@@ -225,7 +225,7 @@ const init = async () => {
 
 
   const res: any = await new BoardFunctionSummaryApi().getList({
-   ...state.pageInput,
+   ...pageState.pageInput,
     Filter: {
      ...filterWithoutTimeRange,
       beginCreateTime,

+ 1 - 1
admin.ui.plus-master/src/views/admin/PCBA/boardList/index.vue

@@ -238,7 +238,7 @@ const init = async () => {
   const beginCreateTime = createTimeRange.length > 0? createTimeRange[0] : "";
   const endCreateTime = createTimeRange.length > 1? createTimeRange[1] : "";
   const res: any = await new BoardListApi().getList({
-   ...state.pageInput,
+   ...pageState.pageInput,
     Filter: {
      ...filterWithoutTimeRange,
       beginCreateTime,

+ 1 - 1
admin.ui.plus-master/src/views/admin/PCBA/boardTestRecord/index.vue

@@ -293,7 +293,7 @@ const init = async () => {
   const beginTime = testTimeRange.length > 0? testTimeRange[0] : "";
   const endTime = testTimeRange.length > 1? testTimeRange[1] : "";
   const res: any = await new BoardTestRecordApi().getList({
-   ...state.pageInput,
+   ...pageState.pageInput,
     Filter: {
      ...filterWithoutTimeRange,
       beginTime,

+ 2 - 2
admin.ui.plus-master/src/views/admin/application/fuelingFTP/index.vue

@@ -137,7 +137,7 @@ const init = async () => {
   state.msgDisplay=false
   state.pwdDisplay=false
   state.timeDisplay=false
-  const res:any = await new FuelingFtpAPI().getFtpDate({...state.pageInput, filter:state.filter}).catch(() => {
+  const res:any = await new FuelingFtpAPI().getFtpDate({...pageState.pageInput, filter:state.filter}).catch(() => {
     state.loading = false
   })
   //console.log(res.data.list)
@@ -202,7 +202,7 @@ const onQuery =async () => {
     const name:any=await new AuthApi().getUserProfile()
     state.filter.name=name.data.name
     await new FuelingFtpAPI().insertFtpDate(state.filter)
-    const data:any = await new FuelingFtpAPI().getFtpDate({...state.pageInput, filter:state.filter}).catch(() => {
+    const data:any = await new FuelingFtpAPI().getFtpDate({...pageState.pageInput, filter:state.filter}).catch(() => {
       state.loading = false
     })
     state.total=data.data.total

+ 11 - 4
admin.ui.plus-master/src/views/admin/application/fuelingFTPofDate/index.vue

@@ -59,8 +59,8 @@
             </el-table>
             <div class="my-flex my-flex-end" style="margin-top: 20px">
               <el-pagination
-                v-model:currentPage="state.pageInput.CurrentPage"
-                v-model:page-size="state.pageInput.PageSize"
+                v-model:currentPage="pageState.pageInput.currentPage"
+                v-model:page-size="pageState.pageInput.pageSize"
                 :total="state.total"
                 :page-sizes="[10, 15, 20, 50, 100]"
                 small
@@ -87,6 +87,11 @@
   import type {pageInput} from "/@/api/admin/shareDto/shareDto";
   import { AuthApi } from '/@/api/admin/Auth'
   
+import { useDynamicPageSize } from "/@/composables/useDynamicPageSize";
+
+// 使用组合式函数获取分页状态
+const pageState = useDynamicPageSize(10, 15);
+
   const multipleTableRef=ref<InstanceType<typeof ElTable>>()
   /**FTP申请页面对象 */
   const state = reactive({
@@ -143,7 +148,7 @@
     state.msgDisplay=false
     state.pwdDisplay=false
     state.timeDisplay=false
-    const res:any = await new FuelingFtpAPI().getFtpDate({...state.pageInput, filter:state.filter}).catch(() => {
+    const res:any = await new FuelingFtpAPI().getFtpDate({...pageState.pageInput, filter:state.filter}).catch(() => {
       state.loading = false
     })
     //console.log(res.data.list)
@@ -152,6 +157,8 @@
   }
   
   onMounted(() => {
+   // 初始化分页大小
+   state.pageInput.PageSize = pageState.pageInput.pageSize;
     init()
     eventBus.off('refreshView')
     eventBus.on('refreshView', async () => {
@@ -212,7 +219,7 @@
       const name:any=await new AuthApi().getUserProfile()
       state.filter.name=name.data.name
       await new FuelingFtpAPI().insertFtpDate(state.filter)
-      const data:any = await new FuelingFtpAPI().getFtpDate({...state.pageInput, filter:state.filter}).catch(() => {
+      const data:any = await new FuelingFtpAPI().getFtpDate({...pageState.pageInput, filter:state.filter}).catch(() => {
         state.loading = false
       })
       state.total=data.data.total

+ 2 - 2
admin.ui.plus-master/src/views/admin/authorize/dispenserAuthCode/index.vue

@@ -144,7 +144,7 @@ const init = async () => {
   state.btnDisplay = true
   state.msgDisplay = false
   state.pwdDisplay = false
-  const res: any = await new DispenserAuthCodeApi().getDispenserAuthCodeRecord({ ...state.pageInput, filter: state.filter }).catch(() => {
+  const res: any = await new DispenserAuthCodeApi().getDispenserAuthCodeRecord({ ...pageState.pageInput, filter: state.filter }).catch(() => {
     state.loading = false
 
 
@@ -250,7 +250,7 @@ const onQuery = async () => {
       state.filter.type = funcode.toString();
 
       await new DispenserAuthCodeApi().InsertDispenserAuthCode(state.filter)
-      const data: any = await new DispenserAuthCodeApi().getDispenserAuthCodeRecord({ ...state.pageInput, filter: state.filter }).catch(() => {
+      const data: any = await new DispenserAuthCodeApi().getDispenserAuthCodeRecord({ ...pageState.pageInput, filter: state.filter }).catch(() => {
         state.loading = false
       })
       state.total = data.data.total

+ 6 - 4
admin.ui.plus-master/src/views/admin/authorize/fuelingFTP/index.vue

@@ -64,8 +64,8 @@
               :label="column.label" />
           </el-table>
           <div class="my-flex my-flex-end" style="margin-top: 20px">
-            <el-pagination v-model:currentPage="state.pageInput.CurrentPage"
-              v-model:page-size="state.pageInput.PageSize" :total="state.total" :page-sizes="[10, 15, 20, 50, 100]" small
+            <el-pagination v-model:currentPage="pageState.pageInput.currentPage"
+              v-model:page-size="pageState.pageInput.pageSize" :total="state.total" :page-sizes="[10, 15, 20, 50, 100]" small
               background @size-change="onSizeChange" @current-change="onCurrentChange"
               layout="total, sizes, prev, pager, next, jumper" />
           </div>
@@ -149,7 +149,7 @@ const init = async (showLoading: boolean = true) => {
 
   try {
     const res: any = await new FuelingFtpAPI().getFtpDate({
-      ...state.pageInput,
+      ...pageState.pageInput,
       filter: state.filter
     });
 
@@ -165,6 +165,8 @@ const init = async (showLoading: boolean = true) => {
 
 onMounted(() => {
   // 初始化分页大小
+state.pageInput.PageSize = pageState.pageInput.pageSize;
+  // 初始化分页大小
   init()
   eventBus.off('refreshView')
   eventBus.on('refreshView', async () => {
@@ -219,7 +221,7 @@ const onQuery = async () => {
     const name: any = await new AuthApi().getUserProfile()
     state.filter.name = name.data.name
     await new FuelingFtpAPI().insertFtpDate(state.filter)
-    const data: any = await new FuelingFtpAPI().getFtpDate({ ...state.pageInput, filter: state.filter }).catch(() => {
+    const data: any = await new FuelingFtpAPI().getFtpDate({ ...pageState.pageInput, filter: state.filter }).catch(() => {
       state.loading = false
     })
     state.total = data.data.total

+ 3 - 3
admin.ui.plus-master/src/views/admin/authorize/fuelingFTPofDate/index.vue

@@ -161,7 +161,7 @@ const init = async (showLoading: boolean = true) => {
 
   try {
     const res: any = await new FuelingFtpAPI().getFtpDate({
-      ...state.pageInput,
+      ...pageState.pageInput,
       filter: state.filter
     });
 
@@ -177,7 +177,7 @@ const init = async (showLoading: boolean = true) => {
 
 onMounted(() => {
   // 初始化分页大小
-// state.pageInput.PageSize = pageState.pageInput.pageSize;
+state.pageInput.PageSize = pageState.pageInput.pageSize;
   init()
   eventBus.off('refreshView')
   eventBus.on('refreshView', async () => {
@@ -236,7 +236,7 @@ const onQuery = async () => {
     const name: any = await new AuthApi().getUserProfile()
     state.filter.name = name.data.name
     await new FuelingFtpAPI().insertFtpDate(state.filter)
-    const data: any = await new FuelingFtpAPI().getFtpDate({ ...state.pageInput, filter: state.filter }).catch(() => {
+    const data: any = await new FuelingFtpAPI().getFtpDate({ ...pageState.pageInput, filter: state.filter }).catch(() => {
       state.loading = false
     })
     state.total = data.data.total

+ 3 - 3
admin.ui.plus-master/src/views/admin/authorize/oilUp/index.vue

@@ -104,8 +104,8 @@
 </el-table>
 <div class="my-flex my-flex-end" style="margin-top: 20px">
             <el-pagination
-              v-model:currentPage="state.pageInput.CurrentPage"
-              v-model:page-size="state.pageInput.PageSize"
+              v-model:currentPage="pageState.pageInput.currentPage"
+              v-model:page-size="pageState.pageInput.pageSize"
               :total="state.total"
               :page-sizes="[10, 15, 20, 50, 100]"
               small
@@ -217,7 +217,7 @@ const onCurrentChange = (val: number) => {
         /**初始化 */
         const init = async () => {
           state.loading = true
-const res:any = await new Api().getList({...state.pageInput, Filter:state.filter})
+const res:any = await new Api().getList({...pageState.pageInput, Filter:state.filter})
             state.total = res?.data?.total ?? 0
 state.tableModel = res?.data?.list ?? []
           state.loading = false

+ 1 - 1
admin.ui.plus-master/src/views/admin/product/groupLogo/index.vue

@@ -180,7 +180,7 @@ const onQuery = async () => {
   if (filterCopy.state === '' || filterCopy.state === null) {
     delete filterCopy.state;
   }
-  const { data } = await new GroupLogoKeyApi().getPage({ ...state.pageInput, filter: filterCopy } as groupLogoKeyRequestBody).catch(() => state.loading = false)
+  const { data } = await new GroupLogoKeyApi().getPage({ ...pageState.pageInput, filter: filterCopy } as groupLogoKeyRequestBody).catch(() => state.loading = false)
   state.list = data?.list ?? []
   state.total = data?.total ?? 0
   state.loading = false

+ 1 - 1
admin.ui.plus-master/src/views/admin/product/slelist/index.vue

@@ -198,7 +198,7 @@ const rules = reactive({
         /**初始化 */
         const init = async () => {
           state.loading = true
-          const res: any = await new Api().getList({ ...state.pageInput, Filter: state.filter })
+          const res: any = await new Api().getList({ ...pageState.pageInput, Filter: state.filter })
   state.tableModel = res?.data?.list ?? []
   state.total = res?.data?.total ?? 0
   state.loading = false

+ 1 - 1
admin.ui.plus-master/src/views/admin/product/type/index.vue

@@ -246,7 +246,7 @@ const getImg = (url) => {
 const onQuery = async () => {
   state.loading = true
   const { data } = await new ComponentTypeApi().getPage({
-     ...state.pageInput, filter: state.filterModel }).catch(() => {
+     ...pageState.pageInput, filter: state.filterModel }).catch(() => {
     state.loading = false
   })
   state.bomListData = data?.list ?? []

+ 1 - 1
admin.ui.plus-master/src/views/admin/statement/BlackBox/index.vue

@@ -201,7 +201,7 @@ tableModel: [] as BlackBoxDto,
 
   try {
     const res: any = await new Api().getList({
-      ...state.pageInput, // 使用 state.pageInput 中的分页参数
+      ...pageState.pageInput, // 使用 state.pageInput 中的分页参数
       Filter: state.filter,
     });
     state.total = res?.data?.total ?? 0;

+ 163 - 149
admin.ui.plus-master/src/views/admin/statement/alarmQuery/index.vue

@@ -1,10 +1,10 @@
 <template>
   <div class="layout-pd">
     <el-row>
-<!--操作-->
-      <el-col :xs="24" >
-        <el-card class="mt8"  shadow="hover" >
-<el-form :model="state.filter" :inline="true" @submit.stop.prevent style="margin-bottom:-20px;">
+      <!-- 操作区域 -->
+      <el-col :xs="24">
+        <el-card class="mt8" shadow="hover">
+          <el-form :model="state.filter" :inline="true" @submit.stop.prevent style="margin-bottom:-20px;">
             <el-form-item prop="name" style="width: 100%">
               <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
                 <el-form-item label="推送用户">
@@ -17,7 +17,6 @@
                     <el-option label="所有" :value="undefined"></el-option>
                     <el-option v-for="(value, key) in FuelDispenserEnum" :key="key" :label="value" :value="key" />
                   </el-select>
-                  <!-- <el-input v-model="state.filter.isPushed" placeholder="单行输入" clearable></el-input> -->
                 </el-form-item>
               </el-col>
               <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
@@ -32,171 +31,155 @@
                   />
                 </el-form-item>
               </el-col>
-</el-form-item>
+            </el-form-item>
           </el-form>
 
           <hr>
 
           <el-row justify="space-between" class="submit-button" style="margin-bottom:-6px;">
             <el-row>
-<el-button  type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
-<el-button  type="primary" icon="ele-RefreshRight" @click="onReset"> 重置 </el-button>
-<el-button v-auth="'api:admin:file:upload-file'" type="primary" icon="ele-Upload"> 立即推送
-</el-button>
+              <el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
+              <el-button type="primary" icon="ele-RefreshRight" @click="onReset"> 重置 </el-button>
+              <el-button 
+                v-auth="'api:admin:file:upload-file'" 
+                type="primary" 
+                icon="ele-Upload"
+                @click="handlePush"
+              > 
+                立即推送
+              </el-button>
+            </el-row>
           </el-row>
-        </el-row>
-</el-card>
+        </el-card>
       </el-col>
-<!--表格-->
-      <el-col  :xs="24" >
+
+      <!-- 表格区域 -->
+      <el-col :xs="24">
         <el-card style="height: 70vh" class="my-fill mt8" shadow="hover">
-<el-table v-loading="state.loading" stripe :data="state.tableModel" row-key="id" style="width: 100%">
-  <el-table-column type="selection" width="55" fixed="left"></el-table-column>
-        <el-table-column v-for="column in state.dynamicColumns" :key="column.prop" :prop="column.prop" :label="column.label"  >
-        </el-table-column> 
-<!-- <el-table-column label="操作"  fixed="right" header-align="center" align="center" class="right-operation" width="140">
-        <template #default="{ row }" >
-<el-link          v-if="row.isPushed === '未推送'"
-                  class="my-el-link mr12 ml12"
-                  type="primary"
-                  icon="ele-Upload"
-                  @click="onDateUpdate(row)"
-                  :underline="false"
-                  target="_blank"
-                >立即推送</el-link>
-</template>
-            </el-table-column> -->
-</el-table>
-<div class="my-flex my-flex-end" style="margin-top: 20px">
-            <el-pagination v-model:currentPage="state.pageInput.currentPage"
-              v-model:page-size="state.pageInput.pageSize" :total="state.total" :page-sizes="[10, 15, 20, 50, 100]"
-              small background @size-change="onSizeChange" @current-change="onCurrentChange"
-              layout="total, sizes, prev, pager, next, jumper" />
+          <el-table 
+            v-loading="state.loading" 
+            stripe 
+            :data="state.tableModel" 
+            row-key="id" 
+            style="width: 100%"
+            ref="tableRef"
+          >
+            <el-table-column type="selection" width="55" fixed="left"></el-table-column>
+            <el-table-column 
+              v-for="column in state.dynamicColumns" 
+              :key="column.prop" 
+              :prop="column.prop" 
+              :label="column.label"  
+            >
+            </el-table-column> 
+          </el-table>
+          <div class="my-flex my-flex-end" style="margin-top: 20px">
+            <el-pagination 
+              v-model:currentPage="state.pageInput.currentPage"
+              v-model:page-size="state.pageInput.pageSize" 
+              :total="state.total" 
+              :page-sizes="[10, 15, 20, 50, 100]"
+              small 
+              background 
+              @size-change="onSizeChange" 
+              @current-change="onCurrentChange"
+              layout="total, sizes, prev, pager, next, jumper" 
+            />
           </div>
-</el-card>
+        </el-card>
       </el-col>
-</el-row>
-    </div>
-  </template>
-  <script setup lang="ts">
-  import {onBeforeMount, onMounted, reactive, ref, watch} from "vue";
-  import eventBus from "/@/utils/mitt";
-  import {Api} from "/@/api/admin/AlarmService/alarmQueryApi";
+    </el-row>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { onBeforeMount, onMounted, reactive, ref, watch } from "vue";
+import eventBus from "/@/utils/mitt";
+import { Api } from "/@/api/admin/AlarmService/alarmQueryApi";
 import { PushDto } from "/@/api/admin/AlarmService/alarmQueryDto";
 import { PageInputAlarmFilterModel } from "/@/api/admin/reportManagement/alarm/alarmDto";
-import { useDynamicPageSize } from "/@/composables/useDynamicPageSize";
-import { ElMessage } from "element-plus";
-import { all } from "axios";
+import { ElMessage, ElTable } from "element-plus";
 import { useRoute } from 'vue-router';
 
 const route = useRoute();
 const alarmHistoryID = ref<string | undefined>(route.query.alarmHistoryID as string);
+const tableRef = ref<InstanceType<typeof ElTable>>();
 
-
-// 使用组合式函数获取分页状态
-// const pageState = useDynamicPageSize(10, 15);
-
-
-/**数据对象*/
-  const state = reactive({
-    /**加载显示 */
-    loading: false,
-    /**条件查询模块 */
-      filter: {
-/**推送用户 */
-        pushUser: "",
-/**是否推送 */
-        pushed: "",
-/**推送时间 */
-        pushTime: "",
-        ispushed:undefined,
-         alarmHistoryID: ""
-      },
-  /**表格信息 */
-tableModel: [] as PushDto[],
-    /**动态表头 */
-    dynamicColumns: [
-{ prop: 'ruleName', label: '规则名称' },
-// { prop: 'pushUserid', label: '推送用户id' },
-{ prop: 'pushUser', label: '推送用户' },
-{ prop: 'content', label: '推送内容' },
-{ prop: 'pushed', label: '是否推送' },
-{ prop: 'pushTime', label: '推送时间' },
-// { prop: 'alarmhistoryID', label: '报警ID' },
-// { prop: 'taskPriority', label: '优先级' },
-],
-  /**分页标识 */
+/** 数据对象 */
+const state = reactive({
+  loading: false,
+  filter: {
+    pushUser: "",
+    pushed: "",
+    pushTime: "",
+    ispushed: undefined,
+    alarmHistoryID: ""
+  },
+  tableModel: [] as PushDto[],
+  dynamicColumns: [
+    { prop: 'ruleName', label: '规则名称' },
+    { prop: 'pushUser', label: '推送用户' },
+    { prop: 'content', label: '推送内容' },
+    { prop: 'pushed', label: '是否推送' },
+    { prop: 'pushTime', label: '推送时间' },
+  ],
   pageInput: {
     currentPage: 1,
     pageSize: 15,
   } as PageInputAlarmFilterModel,
-  /**分页总数 */
   total: 0,
-})
+});
 
-/**设备状态*/
+/** 设备状态枚举 */
 enum FuelDispenserEnum {
   true = "已推送",
   false = "未推送",
 }
 
-  onMounted(async () => {
-      if (alarmHistoryID.value) {
-    state.filter.alarmHistoryID = alarmHistoryID.value; // 将参数赋值给筛选条件
-      }
-  await onQuery()
-    init()
-    eventBus.off('refreshView')
-    eventBus.on('refreshView', async () => {
-      await init()
-    })
-    console.log()
-  })
-  onBeforeMount(() => {
-    eventBus.off('refreshView')
-  })
+/** API实例 */
+const api = new Api();
 
-/**
-* 页条变化
-* @param val
-*/
-const onSizeChange = (val: number) => {
-  state.pageInput.pageSize = val
-  init()
-}
-
-/**
- * 页数 变化
- * @param val
- */
-const onCurrentChange = (val: number) => {
-  state.pageInput.currentPage = val
-  init()
-}
+onMounted(async () => {
+  if (alarmHistoryID.value) {
+    state.filter.alarmHistoryID = alarmHistoryID.value;
+  }
+  await onQuery();
+  init();
+  eventBus.off('refreshView');
+  eventBus.on('refreshView', async () => {
+    await init();
+  });
+});
 
+onBeforeMount(() => {
+  eventBus.off('refreshView');
+});
 
-  /**
-  * 监听变换
-  */
-  watch(() => {})
+/** 分页相关方法 */
+const onSizeChange = (val: number) => {
+  state.pageInput.pageSize = val;
+  init();
+};
 
-/**条件查询 */
-          const onQuery = () => {
-          init()
-        }
+const onCurrentChange = (val: number) => {
+  state.pageInput.currentPage = val;
+  init();
+};
 
+/** 查询方法 */
+const onQuery = () => {
+  init();
+};
 
-/**初始化 */
+/** 初始化数据 */
 const init = async () => {
   state.loading = true;
-
   try {
-    // 处理时间范围
     let sdate = '';
     let edate = '';
     if (state.filter.pushTime && Array.isArray(state.filter.pushTime) && state.filter.pushTime.length === 2) {
-      sdate = state.filter.pushTime[0]; // 开始时间
-      edate = state.filter.pushTime[1]; // 结束时间
+      sdate = state.filter.pushTime[0];
+      edate = state.filter.pushTime[1];
     }
 
     const params = {
@@ -205,11 +188,11 @@ const init = async () => {
         ...state.filter,
         sdate,
         edate,
-        pushTime: undefined, // 避免传到后端去
+        pushTime: undefined,
       },
     };
 
-    const res = await new Api().getList(params);
+    const res = await api.getList(params);
     state.tableModel = res?.data?.list ?? [];
     state.total = res?.data?.total ?? 0;
   } catch (error) {
@@ -220,42 +203,73 @@ const init = async () => {
   }
 };
 
-
-
-/**重置 */
-        const onReset=()=>{
-  // 重置查询条件
+/** 重置方法 */
+const onReset = () => {
   state.filter = {
     pushUser: "",
     pushed: "",
     pushTime: "",
-    ispushed:undefined,
-    alarmHistoryID:""
+    ispushed: undefined,
+    alarmHistoryID: ""
   };
-
-  // 重新加载数据
+  state.pageInput.currentPage = 1;
   init();
-        }
-/**编辑 */
-      const onDateUpdate=(row: any)=>{
-        console.log("编辑行数据:", row);
-      }
+};
+
+/** 处理推送逻辑 */
+const handlePush = async () => {
+  // 获取选中的行
+  const selectedRows = tableRef.value?.getSelectionRows() as PushDto[];
+  if (!selectedRows || selectedRows.length === 0) {
+    ElMessage.warning('请先选择需要推送的记录');
+    return;
+  }
+
+  // 验证是否已推送
+  const alreadyPushed = selectedRows.some(row => row.pushed === '已推送');
+  if (alreadyPushed) {
+    ElMessage.warning('选中的记录中包含已推送项,请重新选择');
+    return;
+  }
+
+  try {
+    state.loading = true;
+    // 调用推送接口,传递筛选条件和选中的ID
+    const response = await api.templateSend({
+      filter: state.filter,
+      selectedIds: selectedRows.map(row => row.ruleId) // 假设用ruleId作为标识
+    });
+
+    if (response.success) {
+      ElMessage.success('推送成功');
+      // 刷新列表
+      await init();
+      // 取消选中状态
+      tableRef.value?.clearSelection();
+    } else {
+      ElMessage.error(`推送失败: ${response.msg || '未知错误'}`);
+    }
+  } catch (error) {
+    console.error('推送接口调用失败:', error);
+    ElMessage.error('推送失败,请重试');
+  } finally {
+    state.loading = false;
+  }
+};
 </script>
+
 <style scoped lang="scss">
 .el-input,
 .el-select {
   width: 240px;
 }
 
-/* 输入框标签固定四个字符宽度 */
 ::v-deep .el-form-item__label {
-  // 字体大小14,4个字符,12px右间距
   width: 14*4px+12px;
   justify-content: start;
 }
 
-/* 数据表头 设置灰色样式 */
 ::v-deep .el-table th.el-table__cell {
   background-color: #F6F6F6;
 }
-  </style>
+</style>

+ 1 - 1
admin.ui.plus-master/src/views/admin/statement/displayControl/index.vue

@@ -237,7 +237,7 @@ const onCurrentChange = () =>{
         /**初始化 */
         const init = async () => {
           state.loading = true
-const res:any = await new Api().getList({...state.pageInput, Filter:state.filter})
+const res:any = await new Api().getList({...pageState.pageInput, Filter:state.filter})
             state.total = res?.data?.total ?? 0
 state.tableModel = res?.data?.list ?? []
           state.loading = false

+ 2 - 2
admin.ui.plus-master/src/views/admin/statement/encodercontrols/index.vue

@@ -223,8 +223,8 @@ const onCurrentChange = () =>{
         /**初始化 */
         const init = async () => {
   state.loading = true;
-  console.log("Request Payload:", { ...state.pageInput, Filter: state.filter });
-  const res: any = await new Api().getList({ ...state.pageInput, Filter: state.filter });
+  console.log("Request Payload:", { ...pageState.pageInput, Filter: state.filter });
+  const res: any = await new Api().getList({ ...pageState.pageInput, Filter: state.filter });
   state.total = res?.data?.total ?? 0;
   state.tableModel = res?.data?.list ?? [];
   state.loading = false;

+ 2 - 2
admin.ui.plus-master/src/views/admin/statement/jikongzhuban/index.vue

@@ -211,7 +211,7 @@ watch(() => state.time, (newVal) => {
 const init = async () => {
   state.loading = true;
   console.log('发送的过滤条件:', {
-    ...state.pageInput,
+    ...pageState.pageInput,
     Filter: {
       ...state.filter,
 
@@ -219,7 +219,7 @@ const init = async () => {
   });
   
   const res = await new Api().getList({
-    ...state.pageInput,
+    ...pageState.pageInput,
     Filter: state.filter
   });
   

+ 1 - 1
admin.ui.plus-master/src/views/admin/statement/problemData/index.vue

@@ -223,7 +223,7 @@ const onQuery = () => {
   const init = async () => {
   state.loading = true
   const params = {
-    ...state.pageInput,
+    ...pageState.pageInput,
     Filter: state.filter,
     _t: Date.now() // 防止缓存
   }

+ 1 - 1
admin.ui.plus-master/src/views/admin/statement/repairList/index .vue

@@ -179,7 +179,7 @@ const onCurrentChange = (val: number) => {
         /**初始化 */
         const init = async () => {
           state.loading = true
-const res:any = await new Api().getList({...state.pageInput, Filter:state.filter})
+const res:any = await new Api().getList({...pageState.pageInput, Filter:state.filter})
             state.total = res?.data?.total ?? 0
 state.tableModel = res?.data?.list ?? []
           state.loading = false

+ 1 - 1
admin.ui.plus-master/src/views/admin/statement/taxcontrol/index.vue

@@ -233,7 +233,7 @@ const onCurrentChange = () =>{
         /**初始化 */
         const init = async () => {
           state.loading = true
-const res:any = await new Api().getList({...state.pageInput, Filter:state.filter})
+const res:any = await new Api().getList({...pageState.pageInput, Filter:state.filter})
             state.total = res?.data?.total ?? 0
 state.tableModel = res?.data?.list ?? []
           state.loading = false

+ 3 - 3
admin.ui.plus-master/src/views/admin/yujing/alarmRules/Level.vue

@@ -83,8 +83,8 @@
 </el-table>
 <div class="my-flex my-flex-end" style="margin-top: 20px">
             <el-pagination
-              v-model:currentPage="state.pageInput.CurrentPage"
-              v-model:page-size="state.pageInput.PageSize"
+              v-model:currentPage="pageState.pageInput.currentPage"
+              v-model:page-size="pageState.pageInput.pageSize"
               :total="state.total"
               :page-sizes="[10, 15, 20, 50, 100]"
               small
@@ -310,7 +310,7 @@ const fetchAlarmLevelDict = async () => {
         /**初始化 */
         const init = async () => {
           state.loading = true
-          const res: any = await new Api().getList({ ...state.pageInput, Filter: state.filter })
+          const res: any = await new Api().getList({ ...pageState.pageInput, Filter: state.filter })
           state.tableModel = res?.data?.list ?? []
           state.total = res?.data?.total ?? 0
           state.loading = false

+ 258 - 0
admin.ui.plus-master/src/views/admin/yujing/alarmRules/test.vue

@@ -0,0 +1,258 @@
+
+<template>
+  <div class="layout-pd">
+    <el-row>
+<!--操作-->
+      <el-col :xs="24" >
+        <el-card class="mt8"  shadow="hover" >
+<el-form :model="state.filter" :inline="true" @submit.stop.prevent>
+            <el-form-item prop="name" style="width: 100%">
+<el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
+                <el-form-item label="serno">
+                  <el-input v-model="state.filter.serno" placeholder="单行输入" clearable></el-input>
+                </el-form-item>
+              </el-col>
+<el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
+                <el-form-item label="外部序列号">
+                  <el-input v-model="state.filter.exserno" placeholder="单行输入" clearable></el-input>
+                </el-form-item>
+              </el-col>
+<el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
+                <el-form-item label="boardType">
+                  <el-input v-model="state.filter.boardType" placeholder="单行输入" clearable></el-input>
+                </el-form-item>
+              </el-col>
+<el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
+                <el-form-item label="functionCode">
+                  <el-input v-model="state.filter.functionCode" placeholder="单行输入" clearable></el-input>
+                </el-form-item>
+              </el-col>
+<el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
+                <el-form-item label="功能名称">
+                  <el-input v-model="state.filter.functionName" placeholder="单行输入" clearable></el-input>
+                </el-form-item>
+              </el-col>
+<el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
+                <el-form-item label="检测类型">
+                  <el-input v-model="state.filter.testType" placeholder="单行输入" clearable></el-input>
+                </el-form-item>
+              </el-col>
+<el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
+            <el-form-item label="选择时间">
+                  <el-date-picker
+                    v-model="state.filter.beginTime"
+                    type="datetimerange"
+                    value-format="YYYY-MM-DD HH:mm:ss"
+                    range-separator="To"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
+                  />
+                </el-form-item>
+              </el-col>
+<el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
+            <el-form-item label="选择时间">
+                  <el-date-picker
+                    v-model="state.filter.endTime"
+                    type="datetimerange"
+                    value-format="YYYY-MM-DD HH:mm:ss"
+                    range-separator="To"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
+                  />
+                </el-form-item>
+              </el-col>
+<el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
+                <el-form-item label="测试结果">
+                  <el-input v-model="state.filter.result" placeholder="单行输入" clearable></el-input>
+                </el-form-item>
+              </el-col>
+<el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
+                <el-form-item label="测试员">
+                  <el-input v-model="state.filter.user" placeholder="单行输入" clearable></el-input>
+                </el-form-item>
+              </el-col>
+</el-form-item>
+          </el-form>
+          
+          <hr>
+          
+          
+<el-row justify="space-between" class="submit-button" style="margin-bottom: -9px;">
+<el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
+<el-button type="primary" icon="ele-Plus" @click="onAdd"> 添加 </el-button>
+<el-button type="primary" icon="ele-Delete" @click="ondelete"> 批量删除 </el-button>
+<el-button type="primary" icon="ele-RefreshRight" @click="onReset"> 重置 </el-button>
+<el-button type="primary" icon="ele-Upload" @click="onUpload"> 上传 </el-button>
+<el-button type="primary" icon="ele-Document" @click="onExport"> 导出 </el-button>
+<el-button type="primary" icon="ele-UploadFilled" @click="onBatImport"> 批量导入 </el-button>
+<el-button type="primary" icon="ele-Document" @click="onBatExport"> 批量导出 </el-button>
+<el-button type="primary" icon="ele-Tickets" @click="onBatReview"> 批量审核 </el-button>
+</el-row>
+</el-card>
+      </el-col>
+<!--表格-->
+      <el-col  :xs="24" >
+        <el-card style="height: 70vh" class="my-fill mt8" shadow="hover">
+<el-table-column type="selection" width="50"></el-table-column>
+<el-table v-loading="state.loading" stripe :data="state.tableModel" row-key="id" style="width: 100%">
+        <el-table-column v-for="column in state.dynamicColumns" :key="column.prop" :prop="column.prop" :label="column.label"  >
+        </el-table-column> 
+<el-table-column label="操作"  fixed="right" header-align="center" align="center" class="right-operation" width="140">
+        <template #default="{ row }" >
+<el-link
+                  class="my-el-link mr12 ml12"
+                  type="primary"
+                  icon="ele-Upload"
+                  @click="onDateUpdate(row)"
+                  :underline="false"
+                  target="_blank"
+                >编辑</el-link>
+<el-link
+                  class="my-el-link mr12 ml12"
+                  type="primary"
+                  icon="ele-Upload"
+                  @click="onDataDetail(row)"
+                  :underline="false"
+                  target="_blank"
+                >详情</el-link>
+<el-link
+                  class="my-el-link mr12 ml12"
+                  type="primary"
+                  icon="ele-Upload"
+                  @click="onDataDelete(row)"
+                  :underline="false"
+                  target="_blank"
+                >删除</el-link>
+</template>
+            </el-table-column>
+</el-table>
+<!-- <div class="my-flex my-flex-end" style="margin-top: 20px">
+            <el-pagination
+              v-model:currentPage="state.pageInput.CurrentPage"
+              v-model:page-size="state.pageInput.PageSize"
+              :total="state.total"
+              :page-sizes="[10, 15, 20, 50, 100]"
+              small
+              background
+              @size-change="onSizeChange"
+              @current-change="onCurrentChange"
+              layout="total, sizes, prev, pager, next, jumper"
+            />
+          </div> -->
+</el-card>
+      </el-col>
+</el-row>
+    </div>
+  </template>
+  <script setup lang="ts">
+  import {onBeforeMount, onMounted, reactive, ref, watch} from "vue";
+  import eventBus from "/@/utils/mitt";
+  import {Api} from "/@/api/admin/AlarmService/testApi";
+import { BoardTestRecordDto } from "/@/api/admin/AlarmService/testDto";
+
+import type { pageInput } from "/@/api/admin/AlarmService/testDto";
+
+/**数据对象*/
+  const state = reactive({
+    /**加载显示 */
+    loading: false,
+    /**条件查询模块 */
+      filter: {
+/**serno */
+        serno: "",
+/**外部序列号 */
+        exserno: "",
+/**boardType */
+        boardType: "",
+/**functionCode */
+        functionCode: "",
+/**功能名称 */
+        functionName: "",
+/**检测类型 */
+        testType: "",
+/**起始检测时间 */
+        beginTime: "",
+/**结束检测时间 */
+        endTime: "",
+/**测试结果 */
+        result: "",
+/**测试员 */
+        user: "",},
+  /**表格信息 */
+tableModel: [] as BoardTestRecordDto,
+    /**动态表头 */
+    dynamicColumns: [
+{ prop: 'serno', label: '序列号' },
+{ prop: 'exserno', label: '外部序列号' },
+{ prop: 'boardType', label: '主板类型' },
+{ prop: 'boardName', label: '主板名称' },
+{ prop: 'functionCode', label: '功能码' },
+{ prop: 'functionName', label: '功能名称' },
+{ prop: 'testType', label: '检测类型' },
+{ prop: 'time', label: '检测时间' },
+{ prop: 'result', label: '测试结果' },
+{ prop: 'testNum', label: '测试功能数' },
+{ prop: 'testSuccessNum', label: '测试成功功能数' },
+{ prop: 'user', label: '测试员' },
+{ prop: 'duration', label: '测试耗时' },
+{ prop: 'info', label: '备注' },],
+/**分页标识 */
+    pageInput:{
+      CurrentPage: 1,
+      PageSize: 10,
+    } as pageInput,
+    /**分页总数 */
+    total: 0,
+})
+  onMounted(() => {
+    init()
+    eventBus.off('refreshView')
+    eventBus.on('refreshView', async () => {
+      await init()
+    })
+    console.log()
+  })
+  onBeforeMount(() => {
+    eventBus.off('refreshView')
+  })
+  /**
+  * 监听变换
+  */
+  watch(() => {})
+/**条件查询 */
+          const onQuery = () => {
+          init()
+        }
+        /**初始化 */
+        const init = async () => {
+          state.loading = true
+const res:any = await new Api().getList({...state.pageInput, Filter:state.filter})
+            state.total = res?.data?.total ?? 0
+state.tableModel = res?.data?.list ?? []
+          state.loading = false
+        }
+/**添加 */
+        const onAdd=()=>{}
+/**批量删除 */
+        const ondelete=()=>{}
+/**重置 */
+        const onReset=()=>{}
+/**上传 */
+        const onUpload=()=>{}
+/**导出 */
+        const onExport=()=>{}
+/**批量导入 */
+        const onBatImport=()=>{}
+/**批量导出 */
+        const onBatExport=()=>{}
+/**批量审核 */
+        const onBatReview=()=>{}
+/**编辑 */
+      const onDateUpdate=(row)=>{}
+/**详情 */
+      const onDataDetail=(row)=>{}
+/**删除 */
+      const onDataDelete=(row)=>{}
+</script>
+<style scoped lang="scss">
+  </style>

+ 1 - 1
admin.ui.plus-master/src/views/example/application/equipment/index.vue

@@ -173,7 +173,7 @@ const onQuery = async () => {
   state.loading = true;
   try {
     const res: any = await new PermissionApi().getEquipmentList({
-      ...state.pageInput,
+      ...pageState.pageInput,
       "Filter.Appid": state.filter.Appid,
       "Filter.SN": state.filter.SN,
       "Filter.Account": state.filter.Account,

+ 35 - 16
admin.ui.plus-master/src/views/example/codeGeneration/index.vue

@@ -320,7 +320,7 @@ const onsubmit=()=>{
   let tabVal=state.tableVal.filter(item=>item.value===true)
   //console.log(tabVal)
   let apiCode=`import { AxiosResponse } from 'axios'
-  import { ContentType, HttpClient, RequestParams } from './http-client'
+  import { ContentType, HttpClient, RequestParams } from '/@/api/admin/http-client'
   export class Api<SecurityDataType = unknown> extends HttpClient<SecurityDataType> {
     /**
    * No description
@@ -434,13 +434,13 @@ const onsubmit=()=>{
             <el-form-item prop="name" style="width: 100%">`
       for(let i=0;i<selVal.length;i++){
         if(selVal[i].type==='interger'){
-          indexCode=indexCode+`\n<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
+          indexCode=indexCode+`\n<el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
                 <el-form-item label="${selVal[i].description}">
                   <el-input-number v-model="state.filter.${selVal[i].name}" />
                 </el-form-item>
               </el-col>`
         }else if(selVal[i].isDate===true){
-          indexCode=indexCode+`\n<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
+          indexCode=indexCode+`\n<el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
             <el-form-item label="选择时间">
                   <el-date-picker
                     v-model="state.filter.${selVal[i].name}"
@@ -453,7 +453,7 @@ const onsubmit=()=>{
                 </el-form-item>
               </el-col>`
         }else{
-          indexCode=indexCode+`\n<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
+          indexCode=indexCode+`\n<el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
                 <el-form-item label="${selVal[i].description}">
                   <el-input v-model="state.filter.${selVal[i].name}" placeholder="单行输入" clearable></el-input>
                 </el-form-item>
@@ -461,18 +461,37 @@ const onsubmit=()=>{
         }
       }
       indexCode=indexCode+`\n</el-form-item>
-          </el-form>`
-    }
-    if(selBtn.length>0){
-      indexCode=indexCode+`\n<div class="my-flex my-flex-start" >`
-      for(let i=0;i<selBtn.length;i++){
-        if(selBtn[i].name.includes('批量')){
-          selection=true
-        }
-        indexCode=indexCode+`\n<el-button  type="primary" icon="ele-CirclePlus" @click="${selBtn[i].method}"> ${selBtn[i].name} </el-button>`
-      }
-      indexCode=indexCode+`\n</div>`
+          </el-form>
+          
+          <hr>
+          
+          `
     }
+if(selBtn.length > 0) {
+  const iconMap = [
+    { keyword: '批量导入', icon: 'ele-UploadFilled' },
+    { keyword: '审核', icon: 'ele-Tickets' },
+    { keyword: '导出', icon: 'ele-Document' },
+    { keyword: '查询', icon: 'ele-Search' },
+    { keyword: '添加', icon: 'ele-Plus' },
+    { keyword: '重置', icon: 'ele-RefreshRight' },
+    { keyword: '上传', icon: 'ele-Upload' },
+    { keyword: '删除', icon: 'ele-Delete' },
+  ];
+  
+  indexCode += `\n<el-row justify="space-between" class="submit-button" style="margin-bottom: -9px;">`;
+  
+  selBtn.forEach(btn => {
+    const match = iconMap.find(item => btn.name.includes(item.keyword));
+    const icon = match?.icon || '';
+    
+    if (match) selection = true;
+    
+    indexCode += `\n<el-button type="primary" icon="${icon}" @click="${btn.method}"> ${btn.name} </el-button>`;
+  });
+  
+  indexCode += `\n</el-row>`;
+}
     indexCode=indexCode+`\n</el-card>
       </el-col>`
   }
@@ -598,7 +617,7 @@ const onsubmit=()=>{
         const init = async () => {
           state.loading = true`
           if(state.isPage){
-            indexCode=indexCode+`\nconst res:any = await new Api().getList({...state.pageInput, Filter:state.filter})
+            indexCode=indexCode+`\nconst res:any = await new Api().getList({...pageState.pageInput, Filter:state.filter})
             state.total = res?.data?.total ?? 0`
           }else{
             indexCode=indexCode+`\nconst res:any = await new Api().getList({...state.filter})`