Bladeren bron

feat:三个功能页面生成

huang, kai (Contractor) 3 weken geleden
bovenliggende
commit
6054c9d757
23 gewijzigde bestanden met toevoegingen van 1234 en 32 verwijderingen
  1. 23 0
      admin.ui.plus-master/src/api/admin/PCBA/jikongzhuban.ts
  2. 63 0
      admin.ui.plus-master/src/api/admin/PCBA/jikongzhubanDto.ts
  3. 23 0
      admin.ui.plus-master/src/api/admin/PCBA/repairList.ts
  4. 49 0
      admin.ui.plus-master/src/api/admin/PCBA/repairListDto.ts
  5. 3 0
      admin.ui.plus-master/src/api/admin/deviceAuthorization/softwarePackageManagementDto.ts
  6. 51 0
      admin.ui.plus-master/src/api/admin/productionManagement/slelist.ts
  7. 48 0
      admin.ui.plus-master/src/api/admin/productionManagement/slelistDto.ts
  8. 2 2
      admin.ui.plus-master/src/components/StatusBox.vue
  9. 1 1
      admin.ui.plus-master/src/i18n/pages/login/zh-cn.ts
  10. 31 5
      admin.ui.plus-master/src/views/admin/authorize/oilUp/index.vue
  11. 54 1
      admin.ui.plus-master/src/views/admin/authorize/softwarePackageManagement/components/form-edit.vue
  12. 14 6
      admin.ui.plus-master/src/views/admin/authorize/softwarePackageManagement/index.vue
  13. 2 2
      admin.ui.plus-master/src/views/admin/login/component/account.vue
  14. 3 3
      admin.ui.plus-master/src/views/admin/product/record/index.vue
  15. 92 0
      admin.ui.plus-master/src/views/admin/product/slelist/components/ProjectDialog.vue
  16. 337 0
      admin.ui.plus-master/src/views/admin/product/slelist/index.vue
  17. 5 3
      admin.ui.plus-master/src/views/admin/statement/alarmQuery/index.vue
  18. 7 4
      admin.ui.plus-master/src/views/admin/statement/displayControl/index.vue
  19. 226 0
      admin.ui.plus-master/src/views/admin/statement/jikongzhuban/index.vue
  20. 195 0
      admin.ui.plus-master/src/views/admin/statement/repairList/index .vue
  21. 1 1
      admin.ui.plus-master/src/views/admin/yujing/alarmRules/components/add-alarmRules.vue
  22. 1 2
      admin.ui.plus-master/src/views/admin/yujing/alarmRules/template.vue
  23. 3 2
      admin.ui.plus-master/src/views/example/codeGeneration/index.vue

+ 23 - 0
admin.ui.plus-master/src/api/admin/PCBA/jikongzhuban.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/fuel-dispenser/get-calculator-mainboard-list'
+   * @secure
+   */
+getList = (data:any ,params: RequestParams = {}) : any  =>
+      this.request<AxiosResponse,any>({
+        path:'/api/app/fuel-dispenser/get-calculator-mainboard-list',
+        method: 'POST',
+        body:data,
+        type: ContentType.Json,
+        secure: true,
+        format: 'json',
+        ...params
+      })
+    }

+ 63 - 0
admin.ui.plus-master/src/api/admin/PCBA/jikongzhubanDto.ts

@@ -0,0 +1,63 @@
+/** 查询信息输出 */
+  export interface ResultOutputPageOutputEncodercontrolsDto{
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+ data?:PageOutputEncodercontrolsDto[] | null
+}
+    export interface PageOutputEncodercontrolsDto{
+      /**
+      * 数据总数
+      * @format int64
+      */
+      total?: number
+      /** 数据 */
+      list?: EncodercontrolsDto[] | null
+    }
+    export interface EncodercontrolsDto{
+   /** 石油公司 */
+      oilCompanyName?: string
+   /** 软件版本号 */
+      softwareVersion?: string
+   /** 硬件版本号 */
+      hardwareVersion?: string
+   /** 序列号 */
+      serialNumber?: string
+   /** 绑定加油机厂商 */
+      bindingDispenserManufacturer?: string
+   /** 部件出厂加油机厂商 */
+      componentManufacturer?: string
+   /** 加油站名称 */
+      stationName?: string
+   /** 安全装置厂家 */
+      safetyDeviceManufacturer?: string
+   /** 油机号 */
+      dispenserNumber?: string
+   /** 油枪号 */
+      nozzleNumber?: string
+   /** 编码器状态 */
+      deviceStatus?: string
+   /** 在线状态 */
+      onlineStatus?: string
+   /** 安装时间 */
+      fixTime?: string
+   /** 出厂时间 */
+      soldTime?: string
+   /** stationID */
+      stationID?: integer
+   /** fuelId */
+      fuelId?: integer
+   /** id */
+      id?: integer
+
+}
+export interface pageInput {
+      /**当前页数 */
+      CurrentPage: number | any
+      /**展示页数 */
+      PageSize: number | any
+    }

+ 23 - 0
admin.ui.plus-master/src/api/admin/PCBA/repairList.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/fuel-dispenser/get-maintenance-list'
+   * @secure
+   */
+getList = (data:any ,params: RequestParams = {}) : any  =>
+      this.request<AxiosResponse,any>({
+        path:'/api/app/fuel-dispenser/get-maintenance-list',
+        method: 'POST',
+        body:data,
+        type: ContentType.Json,
+        secure: true,
+        format: 'json',
+        ...params
+      })
+    }

+ 49 - 0
admin.ui.plus-master/src/api/admin/PCBA/repairListDto.ts

@@ -0,0 +1,49 @@
+/** 查询信息输出 */
+  export interface ResultOutputPageOutputMaintenanceDto{
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+ data?:PageOutputMaintenanceDto[] | null
+}
+    export interface PageOutputMaintenanceDto{
+      /**
+      * 数据总数
+      * @format int64
+      */
+      total?: number
+      /** 数据 */
+      list?: MaintenanceDto[] | null
+    }
+    export interface MaintenanceDto{
+   /** 维修时间(Unix时间戳)
+<remarks>精确到毫秒</remarks> */
+      createdDate?: string
+   /** 维修人员唯一标识
+<remarks>关联人员管理系统ID</remarks> */
+      createdBy?: integer
+   /** 维修状态
+<seealso cref="!:MaintenanceStatus" /> */
+      status?: string
+   /** 维修类型
+<seealso cref="!:MaintenanceType" /> */
+      type?: string
+   /** 维修描述
+<remarks>最大长度500字符</remarks> */
+      description?: string
+   /** 站点名称
+<seealso cref="!:Station" /> */
+      stationName?: string
+   /** stationID */
+      stationID?: integer
+
+}
+export interface pageInput {
+      /**当前页数 */
+      CurrentPage: number | any
+      /**展示页数 */
+      PageSize: number | any
+    }

+ 3 - 0
admin.ui.plus-master/src/api/admin/deviceAuthorization/softwarePackageManagementDto.ts

@@ -58,6 +58,9 @@ export  interface softwarePackageManagement_TableData{
   fileName?: string | null,
   /**数字签名*/
   digitalSignature?: string | null,
+  // 项目名称
+  projectCode?: string | null
+
 }
 
 /**

+ 51 - 0
admin.ui.plus-master/src/api/admin/productionManagement/slelist.ts

@@ -0,0 +1,51 @@
+import { AxiosResponse } from 'axios'
+import { ContentType, HttpClient, RequestParams } from '/@/api/admin/http-client'
+import { ProjectGetPageDto } from './slelistDto'
+
+export class Api<SecurityDataType = unknown> extends HttpClient<SecurityDataType> {
+  /**
+   * 上传/添加项目
+   * @param data 项目数据
+   */
+  uploadProject = (data: ProjectGetPageDto, params: RequestParams = {}) => {
+    return this.request<AxiosResponse, any>({
+      path: '/api/app/project/upload-project',
+      method: 'POST',
+      body: data,
+      type: ContentType.Json,
+      secure: true,
+      format: 'json',
+      ...params
+    })
+  }
+
+  /**
+   * 查询列表
+   */
+  getList = (data: any, params: RequestParams = {}) => {
+    return this.request<AxiosResponse, any>({
+      path: '/api/app/project/get-page',
+      method: 'POST',
+      body: data,
+      type: ContentType.Json,
+      secure: true,
+      format: 'json',
+      ...params
+    })
+  }
+
+    /**
+   * 更新项目
+   */
+    updateProject = (data: ProjectGetPageDto & { id: string }, params: RequestParams = {}) => {
+      return this.request({
+        path: '/api/app/project/update-project',
+        method: 'POST',
+        body: data,
+        type: ContentType.Json,
+        format: 'json',
+        ...params
+      })
+    }
+  
+}

+ 48 - 0
admin.ui.plus-master/src/api/admin/productionManagement/slelistDto.ts

@@ -0,0 +1,48 @@
+/** 查询信息输出 */
+  export interface ResultOutputPageOutputProjectGetPageDto{
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+ data?:PageOutputProjectGetPageDto[] | null
+   /**开始的时间 */
+   BeginTime?: string | null,
+   /**开始的时间 */
+   EndTime?: string | null,
+      /** 项目上线时间 */
+      projectLaunchDate?: string
+}
+    export interface PageOutputProjectGetPageDto{
+      /**
+      * 数据总数
+      * @format int64
+      */
+      total?: number
+      /** 数据 */
+      list?: ProjectGetPageDto[] | null
+    }
+    export interface ProjectGetPageDto{
+      id?: string
+   /** 项目名称 */
+      projectName?: string
+   /** 项目编码 */
+      projectCode?: string
+   /** 项目介绍 */
+      projectDescription?: string
+   /** 项目上线时间 */
+      projectLaunchDate?: string
+  /**开始的时间 */
+  BeginTime?: string | null,
+  /**开始的时间 */
+  EndTime?: string | null,
+}
+export interface pageInput {
+      /**当前页数 */
+      CurrentPage: number | any
+      /**展示页数 */
+      PageSize: number | any
+    }
+

+ 2 - 2
admin.ui.plus-master/src/components/StatusBox.vue

@@ -35,7 +35,7 @@
           case "启用": return 'green'
           case "未启用": return 'red'
 
-          case "出厂注册": return 'blue'
+          case "注册": return 'blue'
           case '在线': return 'green'
 
          // 生产管理-电子说明书          
@@ -87,7 +87,7 @@
           case "启用": return 'green'
           case "未启用": return 'red'
 
-          case "出厂注册": return 'blue'
+          case "注册": return 'blue'
           case '在线': return 'green'
 
          // 生产管理-电子说明书          

+ 1 - 1
admin.ui.plus-master/src/i18n/pages/login/zh-cn.ts

@@ -1,7 +1,7 @@
 // 定义内容
 export default {
   label: {
-    one1: '用户名登录',
+    one1: '邮箱登录',
     two2: '手机号登录',
   },
   link: {

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

@@ -6,7 +6,7 @@
 <!--操作-->
       <el-col :xs="24" >
         <el-card class="mt8"  shadow="hover" >
-<el-form :model="state.filter" :inline="true" @submit.stop.prevent style="margin-bottom: -3vh;">
+         <el-form :model="state.filter" :inline="true" @submit.stop.prevent style="margin-bottom: -3vh;">
             <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="省、市、区">
@@ -51,7 +51,7 @@
                   <el-input v-model="state.filter.serialNumber" placeholder="请输入序列号" clearable></el-input>
                 </el-form-item>
               </el-col>
-</el-form-item>
+            </el-form-item>
           </el-form>
 
           <hr>
@@ -102,7 +102,7 @@
         <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">
+<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"
@@ -114,7 +114,7 @@
               @current-change="onCurrentChange"
               layout="total, sizes, prev, pager, next, jumper"
             />
-          </div> -->  
+          </div>
 </el-card>
       </el-col>
 </el-row>
@@ -124,8 +124,12 @@
   import {onBeforeMount, onMounted, reactive, ref, watch} from "vue";
   import eventBus from "/@/utils/mitt";
   import {Api} from "/@/api/admin/deviceAuthorization/oilUpApi";
-import { pageInput,UpgradeManagementDto } from "/@/api/admin/deviceAuthorization/oilUpDto";
+import { UpgradeManagementDto } from "/@/api/admin/deviceAuthorization/oilUpDto";
+import type { pageInput } from "@/api/admin/productionManagement/slelistDto";
+import { useDynamicPageSize } from "/@/composables/useDynamicPageSize";
 
+// 使用组合式函数获取分页状态
+const pageState = useDynamicPageSize(10, 15);
 
 /**数据对象*/
   const state = reactive({
@@ -169,6 +173,8 @@ tableModel: [] as UpgradeManagementDto,
     total: 0,
 })
   onMounted(() => {
+           // 初始化分页大小
+   state.pageInput.PageSize = pageState.pageInput.pageSize;
     init()
     eventBus.off('refreshView')
     eventBus.on('refreshView', async () => {
@@ -179,6 +185,26 @@ tableModel: [] as UpgradeManagementDto,
   onBeforeMount(() => {
     eventBus.off('refreshView')
   })
+
+
+  /**
+ * 页条变化
+ * @param val
+ */
+ const onSizeChange = (val: number) => {
+  state.pageInput.PageSize = val
+  onQuery()
+}
+
+/**
+ * 页数变化
+ * @param val
+ */
+const onCurrentChange = (val: number) => {
+  state.pageInput.CurrentPage = val
+  onQuery()
+}
+
   /**
   * 监听变换
   */

+ 54 - 1
admin.ui.plus-master/src/views/admin/authorize/softwarePackageManagement/components/form-edit.vue

@@ -47,6 +47,20 @@
               <el-input v-model="formData.editData.digitalSignature" placeholder="数字签名,TQC+、ECVR、OPW必填" 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="项目" prop="projectCode">
+              <el-select v-model="formData.editData.projectCode" placeholder="请选择项目类型" clearable>
+                <el-option label="所有" value=""></el-option>
+                <el-option 
+                  v-for="item in projectList" 
+                  :key="item.projectCode" 
+                  :label="item.projectName" 
+                  :value="item.projectName"
+                />
+              </el-select>     
+
+            </el-form-item>
+          </el-col>
         </el-row>
         <MyUploadFile  v-model="formData.fileValue" ref="uploadFileRef" :file="{fileUrl:formData.editData.downloadUrl,fileName:formData.editData.fileName}"  @onUpload="onUpload"/>
       </el-form>
@@ -61,12 +75,14 @@
 </template>
 
 <script setup lang="ts">
-import {defineAsyncComponent, reactive, ref, watch} from "vue";
+import {defineAsyncComponent, onMounted, reactive, ref, watch} from "vue";
 import {FormRules} from "element-plus";
 import eventBus from "/@/utils/mitt";
 import {softwarePackageManagement_TableData} from "/@/api/admin/deviceAuthorization/softwarePackageManagementDto";
 import {useGlobalCacheStore} from "/@/stores/globalCacheStore";
 import {SoftwarePackageManagementApi} from "/@/api/admin/deviceAuthorization/softwarePackageManagementApi";
+import {Api} from "/@/api/admin/productionManagement/slelist"
+
 //import { de } from "element-plus/es/locale";
 
 const MyUploadFile = defineAsyncComponent(() => import('/@/components/my-upload-file/index.vue'))
@@ -196,6 +212,43 @@ debugger
 defineExpose({
   openDialog,
 })
+
+// 添加项目列表的响应式引用
+const projectList = ref<Array<{projectCode: string, projectName: string}>>([])
+
+const getProjectList = async () => {
+  try {
+    // 确保传递正确的请求参数
+    const res = await new Api().getList({
+      CurrentPage: 1,
+      PageSize: 100, // 获取足够多的数据
+      Filter: {} // 可以添加过滤条件
+    });
+    
+    // 调试输出
+    console.log('API 返回数据:', res);
+    
+    // 检查返回数据结构
+    if (res?.success && res.data?.list) {
+      projectList.value = res.data.list.map((item: any) => ({
+        projectCode: item.projectCode || '',
+        projectName: item.projectName || ''
+      }));
+    } else {
+      console.error('API 返回的数据格式不正确:', res);
+      // 可以设置默认值或显示错误信息
+      projectList.value = [];
+    }
+  } catch (error) {
+    console.error('获取项目列表失败:', error);
+    projectList.value = [];
+  }
+};
+
+// 在组件初始化时获取项目列表
+onMounted(() => {
+  getProjectList()
+})
 </script>
 
 <style scoped lang="scss">

+ 14 - 6
admin.ui.plus-master/src/views/admin/authorize/softwarePackageManagement/index.vue

@@ -46,8 +46,13 @@
                            </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="softwareData.time" type="datetimerange" value-format="YYYY-MM-DD HH:mm:ss"
-                    range-separator="To" start-placeholder="开始日期" end-placeholder="结束日期" />
+                  <el-date-picker 
+                  v-model="softwareData.time" 
+                  type="datetimerange" 
+                  value-format="YYYY-MM-DD HH:mm:ss"
+                  range-separator="To" 
+                  start-placeholder="开始日期" 
+                  end-placeholder="结束日期" />
                 </el-form-item>
               </el-col>
             </el-form-item>
@@ -139,6 +144,7 @@ import { storeToRefs } from 'pinia'
 import { useUserInfo } from '/@/stores/userInfo'
 import StatusBox from "/@/components/StatusBox.vue";
 import { useDynamicPageSize } from "/@/composables/useDynamicPageSize";
+import { Api } from "/@/api/admin/productionManagement/slelist";
 
 // 使用组合式函数获取分页状态
 const pageState = useDynamicPageSize(10, 15);
@@ -169,6 +175,8 @@ const softwareData = reactive({
   Filter: {
     /**软件类型 */
     softwareType: "",
+    // 项目名称
+    projectName: "",
     /**软件名称 */
     softwareName: "",
     /**版本 */
@@ -181,10 +189,11 @@ const softwareData = reactive({
     EndTime: null,
   } as softwarePackageManagement_SearchFilter,
   /**表格信息 */
-  tableModel: [] as softwarePackageManagement_TableData,
+  tableModel: [] as unknown as softwarePackageManagement_TableData,
   /**动态表头 */
   dynamicColumns: [
     { prop: 'date', label: '日期' },
+    { prop: 'projectName', label: '项目名称' },
     { prop: 'softwareType', label: '软件类型' },
     { prop: 'equipmentType', label: '设备类型' },
     { prop: 'softwareName', label: '软件名称' },
@@ -204,7 +213,7 @@ const softwareData = reactive({
   } as pageInput,
   /**分页总数 */
   total: 0,
-} as softwarePackageManagement_AllDto)
+} as unknown as softwarePackageManagement_AllDto)
 
 const downloadLink = ref()
 /**条件查询 */
@@ -234,7 +243,6 @@ const flattenObject = (obj, parentKey = '') => {
 const init = async () => {
   softwareData.loading = true
   const query = flattenObject({ Filter: softwareData.Filter })
-  debugger
   const res: any = await new SoftwarePackageManagementApi().getPageData({ ...softwareData.pageInput, Filter: softwareData.Filter })
   softwareData.tableModel = res?.data?.list ?? []
   softwareData.total = res?.data?.total ?? 0
@@ -242,6 +250,7 @@ const init = async () => {
 }
 
 onMounted(() => {
+  console.log('页面 mounted,开始加载数据...')
   // 初始化分页大小
   softwareData.pageInput.PageSize = pageState.pageInput.pageSize;
   init()
@@ -297,7 +306,6 @@ const editTableData = (row) => {
 
 /**发布*/
 const onRelease = (row) => {
-  debugger
   //downloadUrl
   softwareData.loading = true;
   (row as softwarePackageManagement_TableData).state = 1

+ 2 - 2
admin.ui.plus-master/src/views/admin/login/component/account.vue

@@ -1,10 +1,10 @@
 <template>
   <div>
     <el-form ref="formRef" :model="state.ruleForm" size="large" class="login-content-form">
-      <el-form-item class="login-animation1" prop="userName" :rules="[{ required: true, message: '请输入用户名', trigger: ['blur', 'change'] }]">
+      <el-form-item class="login-animation1" prop="userName" :rules="[{ required: true, message: '请输入邮箱', trigger: ['blur', 'change'] }]">
         <el-input
           text
-          placeholder="请输入用户名"
+          placeholder="请输入邮箱"
           v-model="state.ruleForm.userName"
           clearable
           autocomplete="off"

+ 3 - 3
admin.ui.plus-master/src/views/admin/product/record/index.vue

@@ -24,7 +24,7 @@
               </el-col>
               <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
                 <el-form-item label="部件类型">
-                  <el-select v-model="bomModel.filterModel.bomType" placeholder="请选择部件类型">
+                  <el-select v-model.trim="bomModel.filterModel.bomType" placeholder="请选择部件类型">
                     <el-option label="所有" :value="''"></el-option>
                     <el-option v-for="(value, key) in componentType" :key="key" :label="value[1].name"
                       :value="Number(value[1].value)" />
@@ -34,13 +34,13 @@
 
               <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
                 <el-form-item label="厂商">
-                  <el-input v-model="bomModel.filterModel.manufacturer" placeholder="厂商" clearable></el-input>
+                  <el-input v-model.trim="bomModel.filterModel.manufacturer" 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="bomModel.filterModel.barcode" placeholder="条码" clearable></el-input>
+                  <el-input v-model.trim="bomModel.filterModel.barcode" placeholder="条码" clearable></el-input>
                 </el-form-item>
               </el-col>
             </el-form-item>

+ 92 - 0
admin.ui.plus-master/src/views/admin/product/slelist/components/ProjectDialog.vue

@@ -0,0 +1,92 @@
+<template>
+    <el-dialog v-model="visible" :title="dialogTitle" width="50%" :close-on-click-modal="false">
+      <el-form :model="formData" label-width="120px">
+        <el-form-item label="项目名称" prop="projectName">
+          <el-input v-model="formData.projectName" placeholder="请输入项目名称" />
+        </el-form-item>
+        <el-form-item label="项目编码" prop="projectCode">
+          <el-input v-model="formData.projectCode" placeholder="请输入项目编码" />
+        </el-form-item>
+        <el-form-item label="项目介绍" prop="projectDescription">
+          <el-input v-model="formData.projectDescription" type="textarea" :rows="3" placeholder="请输入项目介绍" />
+        </el-form-item>
+        <el-form-item label="项目上线时间" prop="projectLaunchDate">
+          <el-date-picker
+            v-model="formData.projectLaunchDate"
+            type="datetime"
+            placeholder="选择上线时间"
+            value-format="YYYY-MM-DD HH:mm:ss"
+          />
+        </el-form-item>
+      </el-form>
+  
+      <template #footer>
+        <el-button @click="onCancel">取消</el-button>
+        <el-button type="primary" @click="onSubmit">确定</el-button>
+      </template>
+    </el-dialog>
+  </template>
+  
+  <script setup lang="ts">
+  import { defineProps, defineEmits, reactive, computed } from 'vue';
+  import { ElMessage } from 'element-plus';
+  import { Api } from '/@/api/admin/productionManagement/slelist';
+  
+  interface FormData {
+    projectName: string;
+    projectCode: string;
+    projectDescription: string;
+    projectLaunchDate: string | null;
+  }
+  
+  const props = defineProps<{
+    modelValue: boolean; // 替代 defineModel
+    title: string;
+    editData?: Partial<FormData>;
+  }>();
+  
+  const emit = defineEmits<{
+    (e: 'update:modelValue', visible: boolean): void;
+    (e: 'success'): void;
+  }>();
+  
+  // 使用 computed 管理 dialog 显示状态
+  const visible = computed({
+    get: () => props.modelValue,
+    set: (val) => emit('update:modelValue', val),
+  });
+  
+  const formData = reactive<FormData>({
+    projectName: props.editData?.projectName || '',
+    projectCode: props.editData?.projectCode || '',
+    projectDescription: props.editData?.projectDescription || '',
+    projectLaunchDate: props.editData?.projectLaunchDate || null,
+  });
+  
+  const dialogTitle = props.title;
+  
+  const onCancel = () => {
+    visible.value = false;
+  };
+  
+  const onSubmit = async () => {
+    try {
+      const res = await new Api().uploadProject(formData);
+      if (res.data) {
+        ElMessage.success(dialogTitle === '添加项目' ? '添加成功' : '更新成功');
+        visible.value = false;
+        emit('success');
+      }
+    } catch (error) {
+      console.error('操作失败:', error);
+      ElMessage.error('操作失败');
+    }
+  };
+  </script>
+  
+  <style scoped>
+  .el-input,
+  .el-select {
+    width: 100%;
+  }
+  </style>

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

@@ -0,0 +1,337 @@
+
+<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: -3vh;">
+            <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="项目名称">
+                  <el-input v-model="state.filter.projectName" 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.projectCode" 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.projectLaunchDate"
+                    type="datetimerange"
+                    value-format="YYYY-MM-DD HH:mm:ss"
+                    range-separator="To"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
+                  />
+                </el-form-item>
+              </el-col>
+</el-form-item>
+          </el-form>
+
+          <hr>
+
+          <el-row justify="space-between" class="submit-button" style="margin-bottom: -1vh;">
+            <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-row>
+            <el-row>
+              <el-button  type="primary" icon="ele-CirclePlus" @click="onAdd"> 添加 </el-button>
+            </el-row>
+          </el-row>
+</el-card>
+      </el-col>
+<!--表格-->
+      <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 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="150">
+        <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="gotoSoftwarePackage"
+                  :underline="false"
+                >跳转到软件包</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> -->
+          <div class="my-flex my-flex-end" style="margin-top: 20px">
+            <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>
+</el-card>
+      </el-col>
+</el-row>
+    </div>
+
+    <el-dialog v-model="state.dialogVisible" :title="state.dialogTitle" width="50%"> 
+       <el-form :model="state.formData" label-width="120px">
+    <el-form-item label="项目名称" prop="projectName">
+      <el-input v-model="state.formData.projectName" placeholder="请输入项目名称" />
+    </el-form-item>
+    <el-form-item label="项目编码" prop="projectCode">
+      <el-input v-model="state.formData.projectCode" placeholder="请输入项目编码" />
+    </el-form-item>
+    <el-form-item label="项目介绍" prop="projectDescription">
+      <el-input 
+        v-model="state.formData.projectDescription" 
+        type="textarea" 
+        :rows="3" 
+        placeholder="请输入项目介绍" 
+      />
+    </el-form-item>
+    <el-form-item label="项目上线时间" prop="projectLaunchDate">
+      <el-date-picker
+        v-model="state.formData.projectLaunchDate"
+        type="datetime"
+        placeholder="选择上线时间"
+        value-format="YYYY-MM-DD HH:mm:ss"
+      />
+    </el-form-item>
+  </el-form>
+  <template #footer>
+    <el-button @click="state.dialogVisible = false">取消</el-button>
+    <el-button type="primary" @click="onSubmit">确定</el-button>
+  </template>
+</el-dialog>
+
+
+  </template>
+  <script setup lang="ts">
+  import {onBeforeMount, onMounted, reactive, ref, watch} from "vue";
+  import eventBus from "/@/utils/mitt";
+  import {Api} from "/@/api/admin/productionManagement/slelist";
+import { ProjectGetPageDto } from "/@/api/admin/productionManagement/slelistDto";
+import type { pageInput } from "/@/api/admin/productionManagement/slelistDto";
+import { useDynamicPageSize } from "/@/composables/useDynamicPageSize";
+import { ElMessage } from "element-plus";
+import { useRouter } from 'vue-router'
+
+const router = useRouter()
+
+// 使用组合式函数获取分页状态
+const pageState = useDynamicPageSize(10, 15);
+
+/**数据对象*/
+  const state = reactive({
+    /**加载显示 */
+    loading: false,
+    /**条件查询模块 */
+      filter: {
+/**项目名称 */
+        projectName: "",
+/**项目编码 */
+        projectCode: "",
+/**项目上线时间 */
+        projectLaunchDate:[] as string[],
+        beginTime:"",
+        endTime:""
+      },
+  /**表格信息 */
+tableModel: [] as ProjectGetPageDto,
+    /**动态表头 */
+    dynamicColumns: [
+{ prop: 'projectName', label: '项目名称' },
+{ prop: 'projectCode', label: '项目编码' },
+{ prop: 'projectDescription', label: '项目介绍' },
+{ prop: 'projectLaunchDate', label: '项目上线时间' },],
+/**分页标识 */
+    pageInput:{
+      CurrentPage: 1,
+      PageSize: 10,
+    } as pageInput,
+    /**分页总数 */
+    total: 0,
+  dialogVisible: false,
+  dialogTitle: "添加项目",
+  formData: {
+    projectName: "",
+    projectCode: "",
+    projectDescription: "",
+    projectLaunchDate: ""
+  } as ProjectGetPageDto
+})
+onMounted(() => {
+  state.pageInput.PageSize = pageState.pageInput.pageSize
+  init()
+})
+
+  onBeforeMount(() => {
+    eventBus.off('refreshView')
+  })
+
+/**
+ * 页条变化
+ * @param val
+ */
+ const onSizeChange = (val: number) => {
+  state.pageInput.PageSize = val
+  onQuery()
+}
+
+/**
+ * 页数变化
+ * @param val
+ */
+const onCurrentChange = (val: number) => {
+  state.pageInput.CurrentPage = val
+  onQuery()
+}
+
+  /**
+  * 监听变换
+  */
+  watch(
+  () => state.filter.projectLaunchDate,
+  (newVal) => {
+    if (newVal && newVal.length === 2) {
+      state.filter.beginTime = newVal[0]
+      state.filter.endTime = newVal[1]
+    } else {
+      state.filter.beginTime = ""
+      state.filter.endTime = ""
+    }
+  },
+  { deep: true }
+)
+/**条件查询 */
+const onQuery = () => {
+  const { projectLaunchDate, ...filterParams } = state.filter
+  init({
+    ...state.pageInput,
+    Filter: filterParams
+  })
+}
+
+// 初始化数据
+const init = async (params?: any) => {
+  state.loading = true
+  try {
+    const res = await new Api().getList(params || {
+      ...state.pageInput,
+      Filter: {
+        projectName: state.filter.projectName,
+        projectCode: state.filter.projectCode,
+        beginTime: state.filter.beginTime,
+        endTime: state.filter.endTime
+      }
+    })
+    state.tableModel = res?.data?.list ?? []
+    state.total = res?.data?.total ?? 0
+  } catch (error) {
+    ElMessage.error("查询失败")
+  } finally {
+    state.loading = false
+  }
+}
+/**重置 */
+const onReset = () => {
+  state.filter = {
+    projectName: "",
+    projectCode: "",
+    projectLaunchDate: [],
+    beginTime: "",
+    endTime: ""
+  }
+  onQuery()
+}
+/**编辑 */
+const onDateUpdate = (row) => {
+  state.dialogTitle = "编辑项目"
+  state.formData = { ...row } // 深拷贝当前行数据到表单
+  state.dialogVisible = true
+}
+      const onAdd = () => {
+  state.dialogTitle = "添加项目"
+  state.dialogVisible = true
+  state.formData = {
+    projectName: "",
+    projectCode: "",
+    projectDescription: "",
+    projectLaunchDate: ""
+  }
+}
+
+// 表单提交(新增或编辑)
+const onSubmit = async () => {
+  try {
+    state.loading = true
+    let res
+    if (state.formData.id) {
+      // 编辑:调用更新接口
+      res = await new Api().updateProject(state.formData)
+      ElMessage.success("更新成功")
+    } else {
+      // 新增:调用添加接口
+      res = await new Api().uploadProject(state.formData)
+      ElMessage.success("添加成功")
+    }
+    state.dialogVisible = false
+    await init() // 刷新列表
+  } catch (error) {
+    ElMessage.error(state.formData.id ? "更新失败" : "添加失败")
+  } finally {
+    state.loading = false
+  }
+}
+
+// 跳转到软件包页面
+const gotoSoftwarePackage = () => {
+  router.push('/product/softwarePackageManagement')
+}
+</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>

+ 5 - 3
admin.ui.plus-master/src/views/admin/statement/alarmQuery/index.vue

@@ -65,9 +65,10 @@
             </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="[5, 15, 25, 50, 100]" small background @size-change="onSizeChange"
-              @current-change="onCurrentChange" layout="total, sizes, prev, pager, next, jumper" />
+            <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>
 </el-card>
       </el-col>
@@ -192,6 +193,7 @@ const onCurrentChange = (val: number) => {
   * 监听变换
   */
   watch(() => {})
+  
 /**条件查询 */
           const onQuery = () => {
           init()

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

@@ -5,7 +5,7 @@
 <!--操作-->
       <el-col :xs="24" >
         <el-card class="mt8"  shadow="hover" >
-<el-form :model="state.filter" :inline="true" @submit.stop.prevent>
+<el-form :model="state.filter" :inline="true" @submit.stop.prevent style="margin-bottom: -3vh;">
             <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="石油公司">
@@ -64,9 +64,12 @@
               </el-col> -->
 </el-form-item>
           </el-form>
-<div class="my-flex my-flex-start" >
-<el-button  type="primary" icon="ele-CirclePlus" @click="onQuery"> 查询 </el-button>
-</div>
+
+          <hr>
+
+          <el-row justify="space-between" class="submit-button" style="margin-bottom: -1vh;">
+            <el-button  type="primary" icon="ele-CirclePlus" @click="onQuery"> 查询 </el-button>
+          </el-row>
 </el-card>
       </el-col>
 <!--表格-->

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

@@ -0,0 +1,226 @@
+
+<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: -3vh;">
+            <el-form-item prop="name" style="width: 100%">
+<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
+                <el-form-item label="石油公司">
+                  <el-input v-model="state.filter.oilCompanyName" 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="state.filter.stationName" 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="state.filter.deviceStatus" 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="state.filter.onlineStatus" 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="state.filter.fixTime"
+                    type="datetimerange"
+                    value-format="YYYY-MM-DD HH:mm:ss"
+                    range-separator="To"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
+                  />
+                </el-form-item>
+              </el-col>
+</el-form-item>
+          </el-form>
+
+          <hr>
+
+          <el-row justify="space-between" class="submit-button" style="margin-bottom: -1vh;">
+            <el-button  type="primary" icon="ele-Search" @click="onQuery"> 查询 </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 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">
+        <template #default="{ row }">
+                <template v-if="column.prop === 'onlineStatus'">
+                  <StatusBox :status="row.onlineStatus" />
+                </template>
+                <template v-else-if="column.prop === 'deviceStatus'">
+                  <StatusBox :status="row.deviceStatus" />
+                </template>
+                <template v-else>
+                  {{ row[column.prop] }}
+                </template>
+              </template>
+        </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="toPage(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="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>
+</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/PCBA/jikongzhuban";
+import { EncodercontrolsDto } from "/@/api/admin/PCBA/jikongzhubanDto";
+import type { pageInput } from "/@/api/admin/PCBA/jikongzhubanDto";
+import { useDynamicPageSize } from "/@/composables/useDynamicPageSize";
+import StatusBox from "/@/components/StatusBox.vue";
+import router from "/@/router";
+
+
+// 使用组合式函数获取分页状态
+const pageState = useDynamicPageSize(10, 15);
+
+/**数据对象*/
+  const state = reactive({
+    /**加载显示 */
+    loading: false,
+    /**条件查询模块 */
+      filter: {
+/**石油公司 */
+        oilCompanyName: "",
+/**站点名称 */
+        stationName: "",
+/**状态 */
+        deviceStatus: "",
+/**在线状态 */
+        onlineStatus: "",
+/**安装时间 */
+        fixTime: "",},
+  /**表格信息 */
+tableModel: [] as EncodercontrolsDto,
+    /**动态表头 */
+    dynamicColumns: [
+{ prop: 'oilCompanyName', label: '石油公司' },
+{ prop: 'stationName', label: '加油站名称' },
+{ prop: 'serialNumber', label: '序列号' },
+{ prop: 'softwareVersion', label: '软件版本号' },
+{ prop: 'hardwareVersion', label: '硬件版本号' },
+{ prop: 'deviceStatus', label: '计控主板状态' },
+{ prop: 'onlineStatus', label: '在线状态' },
+{ prop: 'fixTime', label: '安装时间' },
+{ prop: 'soldTime', label: '出厂时间' },
+{ prop: 'bindingDispenserManufacturer', label: '绑定加油机厂商' },
+],
+/**分页标识 */
+    pageInput:{
+      CurrentPage: 1,
+      PageSize: 10,
+    } as pageInput,
+    /**分页总数 */
+    total: 0,
+})
+  onMounted(() => {
+    state.pageInput.PageSize = pageState.pageInput.pageSize
+
+    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 toPage = (row: { fuelId: any; }) => {
+  router.push({ path: `/statement/${row.fuelId}` })
+}
+      /**
+ * 页条变化
+ * @param val
+ */
+ const onSizeChange = (val: number) => {
+  state.pageInput.PageSize = val
+  onQuery()
+}
+
+/**
+ * 页数变化
+ * @param val
+ */
+const onCurrentChange = (val: number) => {
+  state.pageInput.CurrentPage = val
+  onQuery()
+}
+</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>

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

@@ -0,0 +1,195 @@
+
+<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: -3vh;">
+            <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="维修状态">
+                  <el-input v-model="state.filter.status" 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.type" 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.stationName" 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.createdDate"
+                    type="datetimerange"
+                    value-format="YYYY-MM-DD HH:mm:ss"
+                    range-separator="To"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
+                  />
+                </el-form-item>
+              </el-col>
+</el-form-item>
+          </el-form>
+
+          <hr>
+
+          <el-row justify="space-between" class="submit-button" style="margin-bottom: -1vh;">
+            <el-button  type="primary" icon="ele-Search" @click="onQuery"> 查询 </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 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="onDataDetail(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="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>
+</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/PCBA/repairList";
+import { MaintenanceDto } from "/@/api/admin/PCBA/repairListDto";
+import type { pageInput } from "/@/api/admin/PCBA/repairListDto";
+import { useDynamicPageSize } from "/@/composables/useDynamicPageSize";
+
+// 使用组合式函数获取分页状态
+const pageState = useDynamicPageSize(10, 15);
+/**数据对象*/
+  const state = reactive({
+    /**加载显示 */
+    loading: false,
+    /**条件查询模块 */
+      filter: {
+/**维修时间(Unix时间戳)
+<remarks>精确到毫秒</remarks> */
+        createdDate: "",
+/**维修状态
+<seealso cref="!:MaintenanceStatus" /> */
+        status: "",
+/**维修类型
+<seealso cref="!:MaintenanceType" /> */
+        type: "",
+/**站点名称
+<seealso cref="!:Station" /> */
+        stationName: "",},
+  /**表格信息 */
+tableModel: [] as MaintenanceDto,
+    /**动态表头 */
+    dynamicColumns: [
+{ prop: 'createdDate', label: '维修时间' },
+{ prop: 'createdBy', label: '维修人员' },
+{ prop: 'status', label: '维修状态' },
+{ prop: 'type', label: '维修类型' },
+{ prop: 'description', label: '维修描述' },
+{ prop: 'stationName', 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')
+  })
+  /**
+ * 页条变化
+ * @param val
+ */
+ const onSizeChange = (val: number) => {
+  state.pageInput.PageSize = val
+  onQuery()
+}
+
+/**
+ * 页数变化
+ * @param val
+ */
+const onCurrentChange = (val: number) => {
+  state.pageInput.CurrentPage = val
+  onQuery()
+}
+  /**
+  * 监听变换
+  */
+  // 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 onDataDetail=(row: any)=>{}
+</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>

+ 1 - 1
admin.ui.plus-master/src/views/admin/yujing/alarmRules/components/add-alarmRules.vue

@@ -18,7 +18,7 @@
       </div>
       <div style="width: 100%;display: flex;justify-content: center;align-items: center;">
         <el-form :inline="true" @submit.stop.prevent>
-          <el-form-item label="角&#8195;&#8195;色:" style="width: 100%;">
+          <el-form-item label="推送用户:" style="width: 100%;">
             <el-select v-model="Data.Filter.roleMappingId" multiple placeholder="请选择角色">
               <el-option v-for="item in Data.roleList" :key="item.id" :label="item.name" :value="item.id" />
             </el-select>

+ 1 - 2
admin.ui.plus-master/src/views/admin/yujing/alarmRules/template.vue

@@ -129,8 +129,7 @@ const Data = reactive({
     dynamicColumns: [
         { prop: 'templateName', label: '模板名称' },
         { prop: 'templateType', label: '模板类型' },
-        { prop: 'templateContent', label: '模板内容' },
-        { prop: 'isActive', label: '模板状态' },
+        { prop: 'templateContent', label: '模板内容' }
     ],
     /**分页总数 */
     total: 0,

+ 3 - 2
admin.ui.plus-master/src/views/example/codeGeneration/index.vue

@@ -95,6 +95,7 @@ const state = reactive({
   orgFormTitle: '',
   filter: {
     name: 'http://dev.hsfuel.com:8070/app/swagger/app/swagger.json',
+    // name: 'http://192.168.0.203:8003/app/swagger/app/swagger.json',
     api:''
   },
   api:[],
@@ -158,7 +159,7 @@ const onQuery = async () => {
         }
         if('post' in paths[path]){
           let summary:any=paths[path].post.summary?paths[path].post.summary:''
-          if(summary===''||summary.includes('查询')||summary.includes('获取')||summary.includes('管理')){
+          // if(summary===''||summary.includes('查询')||summary.includes('获取')||summary.includes('管理')||summary.includes('表')||summary.includes('')){
             let api:any=path
             let methods:any='POST'
             let isQuery:any=false
@@ -178,7 +179,7 @@ const onQuery = async () => {
         }
       }
       //console.log(state.api)
-    })
+    )
     .catch(error=>{
       console.log('Error fetch Swagger Json :',error)
     })