瀏覽代碼

Merge branch 'feature/页面调整' into develop

huang, kai (Contractor) 6 天之前
父節點
當前提交
3eba7bc2cf

+ 4 - 1
admin.ui.plus-master/src/api/admin/AlarmService/alarmRulesDto.ts

@@ -23,11 +23,12 @@ export interface alarmRluesFilterModel {
   regular?: string | null;
   /**是否互斥 */
   isExclusive?: boolean | string | null;
+  isExclusiveMaintenance?: boolean | string | null;
   /**优先级 */
   taskPriority?: number;
   /**触发方式 */
   triggerMethod?: number | string | null;
-  triggerMethod2?: number | string | null;
+  maintenanceTriggerMethod?:number | string | null;
   /**规则条件 */
   conditionsJson?: string | null;
   maintenanceJson?: string | null;
@@ -36,6 +37,8 @@ export interface alarmRluesFilterModel {
   id?: number;
   condition?:string | null;
   condition2?:string | null;
+  cacheFilter?: Partial<alarmRluesFilterModel>;
+  
 }
 
 /**

+ 0 - 43
admin.ui.plus-master/src/api/admin/AlarmService/dto (11).ts

@@ -1,43 +0,0 @@
-/** 查询信息输出 */
-  export interface ResultOutputPageOutputPushUsersDto{
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
- data?:PageOutputPushUsersDto[] | null
-}
-    export interface PageOutputPushUsersDto{
-      /**
-      * 数据总数
-      * @format int64
-      */
-      total?: number
-      /** 数据 */
-      list?: PushUsersDto[] | null
-    }
-    export interface PushUsersDto{
-   /** 用户id */
-      userId?: integer
-   /** 用户名称 */
-      userName?: string
-   /** 微信昵称 */
-      nickname?: string
-   /** 用户角色 */
-      userRole?: string
-   /** 用户手机号 */
-      userPhone?: string
-   /** 用户Openid */
-      userOpenid?: string
-   /** 添加时间 */
-      createtime?: string
-
-}
-export interface pageInput {
-      /**当前页数 */
-      CurrentPage: number | any
-      /**展示页数 */
-      PageSize: number | any
-    }

+ 4 - 2
admin.ui.plus-master/src/views/admin/product/qrBook/components/qrbook-edit.vue

@@ -15,7 +15,7 @@
             </el-col>
             <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
               <el-form-item label="上传人" prop="author">
-                <!-- <el-input v-model="formData.editData.author" placeholder="请输入上传人" clearable></el-input> -->
+                <!-- <el-input v-model="injectedNickName" disabled placeholder="请输入上传人" clearable></el-input> -->
                 
                   <span v-if="injectedNickName">{{ injectedNickName }}</span>
                   <span v-else>暂未获取到上传人昵称</span>
@@ -140,12 +140,14 @@ console.log('injectedNickName:', injectedNickName.value);
   const onSubmit =  () => {
     formRef.value.validate(async (valid: boolean) =>{
       if(!valid) return
-  
+    
       formData.loading = true
+      formData.editData.author = injectedNickName.value
       let request = JSON.parse(JSON.stringify(formData.editData)) 
       let res = await new QRBookApi().uploadFile(request as QRBookFileInfoRequset)
       if(res?.data?.value) eventBus.emit('refreshView')
 
+      
       formData.editData = {} as QRBookTableInfo
       formData.isShowDialog = false
       formData.loading = false

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

@@ -84,13 +84,6 @@
           </el-form-item>
         </el-form>
       </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-switch v-model="Data.Filter.isExclusive" />
-          </el-form-item>
-        </el-form>
-      </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;优先级:" style="width: 100%;" prop="taskPriority">
@@ -116,17 +109,26 @@
           </el-form-item>
         </el-form>
       </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-switch v-model="Data.Filter.isExclusive" />
+          </el-form-item>
+        </el-form>
+      </div>
       
       <!-- 条件部分 - 初始不显示,点击添加按钮后才显示 -->
       <div v-if="Data.showAlarmConditions">
         <div v-for="(condition, index) in Data.condition" :key="index" 
              style="width: 100%;display: flex;justify-content: center;align-items: center; margin-top: 10px;">
           <el-form :inline="true" @submit.stop.prevent :model="condition" :rules="conditionRules">
-            <el-form-item :label="index === 0 ? '条&#8195;&#8195;件:' : '附加条件:'" style="width: 135%;">
+            <el-form-item :label="index === 0 ? '条&#8195;&#8195;件:' : '附加条件:'" style="width: 130%; ">
               <el-row :gutter="20" style="width: 100%;">
                 <!-- 报警设备 -->
                 <el-col :span="8">
-                  <div style="display: flex; align-items: center;">
+                  <div>
+                     <!-- style="display: flex; align-items: center;" -->
                     <span style="margin-right: 13px;">报警设备:</span>
                     <el-form-item prop="equipment">
                       <el-select v-model="condition.equipment" placeholder="请选择" style="flex: 1;">
@@ -137,14 +139,14 @@
                           :value="item"
                         />
                       </el-select>
-                      <span>&#8195;&</span>
+                      <span>&#8195;&#8195;&#8195;&</span>
                     </el-form-item>
                   </div>
                 </el-col>
                 
                 <!-- 报警类型 -->
                 <el-col :span="8">
-                  <div style="display: flex; align-items: center;">
+                  <div>
                     <span style="margin-right: 13px;">报警类型:</span>
                     <el-form-item prop="type">
                       <el-select v-model="condition.type" placeholder="请选择" style="flex: 1;">
@@ -155,14 +157,14 @@
                           :value="item"
                         />
                       </el-select>
-                      <span>&#8195;&</span>
+                      <span>&#8195;&#8195;&#8195;&</span>
                     </el-form-item>
                   </div>
                 </el-col>
                 
                 <!-- 报警来源 -->
                 <el-col :span="8">
-                  <div style="display: flex; align-items: center;">
+                  <div>
                     <span style="margin-right: 13px;">报警来源:</span>
                     <el-form-item prop="source">
                       <el-select v-model="condition.source" placeholder="请选择" style="flex: 1;">
@@ -197,8 +199,8 @@
       </div>
       <div style="width: 100%;display: flex;justify-content: center;align-items: center;">
         <el-form :inline="true" @submit.stop.prevent>
-          <el-form-item label="触发方式:" style="width: 100%;" prop="triggerMethod2">
-            <el-radio-group v-model="Data.Filter.triggerMethod2">
+          <el-form-item label="触发方式:" style="width: 100%;" prop="maintenanceTriggerMethod">
+            <el-radio-group v-model="Data.Filter.maintenanceTriggerMethod">
               <el-radio label="其中之一条件满足即触发">其中之一条件满足即触发</el-radio>
               <el-radio label="全部满足时触发">全部满足时触发</el-radio>
             </el-radio-group>
@@ -206,6 +208,14 @@
         </el-form>
       </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-switch v-model="Data.Filter.isExclusiveMaintenance" />
+          </el-form-item>
+        </el-form>
+      </div>
+
       <!-- 维修条件部分 - 初始不显示,点击添加按钮后才显示 -->
       <div v-if="Data.showRepairConditions">
         <div v-for="(condition2, index) in Data.condition2" :key="index" 
@@ -214,7 +224,7 @@
             <el-form-item :label="index === 0 ? '条&#8195;&#8195;件:' : '附加条件:'" style="width: 130%;">
               <el-row :gutter="20" style="width: 100%;">
                 <el-col :span="8">
-                  <div style="display: flex; align-items: center;">
+                  <div>
                     <span style="margin-right: 13px;width: 90px;">维修类型:</span>
                     <el-form-item prop="proType">
                       <el-select v-model="condition2.proType" placeholder="请选择" style="flex: 1;">
@@ -225,13 +235,13 @@
                           :value="item"
                         />
                       </el-select>
-                  <span>&#8195;&</span>
+                  <span>&#8195;&#8195;&#8195;&</span>
                     </el-form-item>
                   </div>
                 </el-col>
                 
                 <el-col :span="8">
-                  <div style="display: flex; align-items: center;">
+                  <div>
                     <span style="margin-right: 13px;">维修状态:</span>
                     <el-form-item prop="proStatus">
                       <el-select v-model="condition2.proStatus" placeholder="请选择" style="flex: 1;">
@@ -306,9 +316,10 @@ const Data = reactive({
     pushTemplateMappingID: [],
     regular: '',
     isExclusive: false,
+    isExclusiveMaintenance: false,
     taskPriority: 1,
     triggerMethod: null, // 这里应根据实际情况设置默认值,比如0表示其中之一条件满足即触发
-    triggerMethod2: null, // 这里应根据实际情况设置默认值,比如0表示其中之一条件满足即触发
+    maintenanceTriggerMethod:null,
     conditionsJson: '' as any,
     maintenanceJson: '' as any,
     pushUserid: [] as number[], // 选中的用户ID数组
@@ -353,19 +364,29 @@ const getUserList = async () => {
       currentPage: 1, 
       pageSize: 100,
       filter: {
-        // 可选过滤条件(如用户名搜索)
         userName: "",
       },
     });
     
-    // 处理返回数据
-    Data.userList = res.data.list.map((user: UserListItem) => ({
-      id: user.userId,
-      userName: user.userName, // 下拉框显示名称
-      value: user.userId, // 选中值为用户ID
-      nickname: user.nickname,
-      phone: user.userPhone,
-    }));
+    // 去重逻辑
+    const userSet = new Set<number>();
+    const uniqueUsers = res.data.list
+      .map((user: UserListItem) => ({
+        id: user.userId,
+        userName: user.userName,
+        value: user.userId,
+        nickname: user.nickname,
+        phone: user.userPhone,
+      }))
+      .filter((user: { id: number; }) => {
+        if (userSet.has(user.id)) {
+          return false;
+        }
+        userSet.add(user.id);
+        return true;
+      });
+    
+    Data.userList = uniqueUsers;
   } catch (error) {
     console.error("获取用户列表失败:", error);
     ElMessage.error("用户列表加载失败");
@@ -636,10 +657,10 @@ const openDialog = (row: alarmRluesFilterModel) => {
   console.log(row)
   if(row){
     console.log(Data.Filter)
-    const { triggerMethod, triggerMethod2, ruleName, roleMappingId, labelId,pushUserid,condition,condition2, ...rest } = Data.Filter;
+    const { triggerMethod, maintenanceTriggerMethod, ruleName, roleMappingId, labelId,pushUserid,condition,condition2, ...rest } = Data.Filter;
     Data.Filter = { ...rest, ...row };
     Data.Filter.triggerMethod = triggerMethod || Data.Filter.triggerMethod;
-    Data.Filter.triggerMethod2 = triggerMethod2 || Data.Filter.triggerMethod2;
+    Data.Filter.maintenanceTriggerMethod = maintenanceTriggerMethod || Data.Filter.maintenanceTriggerMethod;
     Data.Filter.roleMappingId = roleMappingId || Data.Filter.roleMappingId;
     Data.Filter.condition2 = condition2 || Data.Filter.condition2;
     Data.Filter.condition = condition || Data.Filter.condition;
@@ -652,6 +673,13 @@ const openDialog = (row: alarmRluesFilterModel) => {
     } else {
       Data.Filter.isExclusive = false;
     }
+
+    if (Data.Filter.isExclusiveMaintenance == '是') {
+      Data.Filter.isExclusiveMaintenance = true;
+    } else {
+      Data.Filter.isExclusiveMaintenance = false;
+    }
+
     const temp = <string[]>Data.Filter.pushMethod?.split(',');
     for (var i = 0; i < temp.length; i++) {
       if (temp[i] == '微信') {
@@ -697,11 +725,12 @@ const openDialog = (row: alarmRluesFilterModel) => {
       pushTemplateMappingID: [],
       regular: '',
       isExclusive: false,
+      isExclusiveMaintenance: false,
       taskPriority: 1,
       triggerMethod: null,
-      triggerMethod2: null,
       conditionsJson: null,
       maintenanceJson: null,
+      maintenanceTriggerMethod:null,
       pushUserid: []
     } as unknown as alarmRluesFilterModel;
   }

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

@@ -5,25 +5,27 @@
       <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.appName" disabled placeholder="请选择应用" @keyup.enter="onQuery" />
-            </el-form-item>
-           </el-col>
-           <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
+            <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.appName" disabled placeholder="请选择应用" @keyup.enter="onQuery" />
+                </el-form-item>
+              </el-col>
+              <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
                 <el-form-item label="设备sn">
                   <el-input v-model="state.filter.SN" placeholder="请输入设备sn" clearable></el-input>
                 </el-form-item>
               </el-col>
-           <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
+              <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
                 <el-form-item label="登录账户">
                   <el-input v-model="state.filter.Account" placeholder="请输入账号" clearable></el-input>
                 </el-form-item>
               </el-col>
-           <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
+              <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-select v-model="state.filter.Status" placeholder="请选择状态">
+                    <el-option v-for="(label, value) in statusMap" :key="value" :label="label" :value="value" />
+                  </el-select>
                 </el-form-item>
               </el-col>
             </el-form-item>
@@ -32,15 +34,15 @@
           <hr>
 
           <el-row justify="space-between" class="submit-button" style="margin-bottom: -9px;">
-          <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-Plus" @click="onAdd"> 添加 </el-button>
+            <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-Plus" @click="onAdd"> 添加 </el-button>
             </el-row>
           </el-row>
-          </el-card>
+        </el-card>
       </el-col>
       <!--表格-->
       <el-col :xs="24">
@@ -49,15 +51,17 @@
             <el-table-column v-for="column in state.dynamicColumns" :key="column.prop" :prop="column.prop"
               :label="column.label">
               <template #default="{ row }">
-                                <!-- 如果是状态列,使用 StatusBox 组件 -->
-                                <StatusBox 
-                                    v-if="column.prop === 'status'" 
-                                    :status="getStatusInfo(row[column.prop]).name"  />
-                                <!-- 其他列保持原有逻辑 -->
-                                <span v-else>
-                                    {{ row[column.prop] }}
-                                </span>
-                            </template>
+                <!-- 如果是状态列,使用 StatusBox 组件 -->
+                <StatusBox 
+                  v-if="column.prop === 'status'" 
+                  :status="statusMap[row.status] || '未知'" 
+                  :color="statusStyles[row.status]?.color || '#909399'" 
+                />
+                <!-- 其他列保持原有逻辑 -->
+                <span v-else>
+                  {{ row[column.prop] }}
+                </span>
+              </template>
             </el-table-column>
             <el-table-column label="操作" fixed="right" header-align="center" align="center" class="right-operation"
               width="140">
@@ -71,10 +75,9 @@
           </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" />
-
+              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>
@@ -83,6 +86,7 @@
     <EquipmentEditDialog ref="equipmentEditRef"></EquipmentEditDialog>
   </div>
 </template>
+
 <script setup lang="ts">
 import { defineAsyncComponent, onBeforeMount, onMounted, reactive, ref, watch } from "vue";
 import eventBus from "/@/utils/mitt";
@@ -92,8 +96,7 @@ import { PermissionApi } from "/@/api/admin/Permission";
 import router from "/@/router";
 import StatusBox from "/@/components/StatusBox.vue";
 import { useDynamicPageSize } from "/@/composables/useDynamicPageSize";
-
-
+import { ElMessage } from 'element-plus';
 
 // 使用组合式函数获取分页状态
 const pageState = useDynamicPageSize(10, 15);
@@ -106,17 +109,17 @@ const equipmentEditRef = ref()
 const state = reactive({
   /**加载显示 */
   loading: false,
-  appName:"",
+  appName: "",
   /**条件查询模块 */
   filter: {
     /** appid */
-    Appid:"",
+    Appid: "",
     /**设备sn */
     SN: null,
     /**登录账户 */
     Account: null,
     /**设备状态 */
-    Status: null,
+    Status: '', // 默认所有状态
   },
   /**表格信息 */
   tableModel: [] as unknown as EquipmentGetPageOutput,
@@ -126,7 +129,8 @@ const state = reactive({
     { prop: 'account', label: '登录账户' },
     { prop: 'status', label: '设备状态' },
     { prop: 'loginTime', label: '最近一次登录时间' },
-    { prop: 'validityTime', label: '登录有效期' },],
+    { prop: 'validityTime', label: '登录有效期' },
+  ],
   /**分页标识 */
   pageInput: {
     CurrentPage: 1,
@@ -136,19 +140,21 @@ const state = reactive({
   total: 0,
 })
 
-// 状态映射表
+// 状态映射表 - 用于选择框和显示
 const statusMap = {
-  0: { name: "关闭", color: "#F56C6C" }, // 红色表示关闭
-  1: { name: "开启", color: "#67C23A" }, // 绿色表示开启
+  '': '所有',
+  '1': '启用',
+  '0': '禁用',
 };
 
-// 根据 status 值获取映射后的对象
-const getStatusInfo = (status: number) => {
-  return statusMap[status] || { name: "未知状态", color: "#000" };
+// 状态样式映射 - 用于StatusBox组件
+const statusStyles = {
+  '1': { text: "启用", color: "#67C23A" }, // 绿色表示启用
+  '0': { text: "禁用", color: "#F56C6C" }, // 红色表示禁用
 };
 
 onMounted(() => {
-   // 初始化分页大小
+  // 初始化分页大小
   state.pageInput.PageSize = pageState.pageInput.pageSize;
   state.pageInput.CurrentPage = 1; // 初始化时重置为第一页
   init()
@@ -156,60 +162,91 @@ onMounted(() => {
   eventBus.on('refreshView', async () => {
     await init()
   })
-  console.log()
 })
+
 onBeforeMount(() => {
   eventBus.off('refreshView')
 })
-/**
-* 监听变换
-*/
-// watch(() => { })
+
 /**条件查询 */
 const onQuery = async () => {
-  state.loading = true
-  const res: any = await new PermissionApi().getEquipmentList({ 
-    ...state.pageInput, 
-    "Filter.Appid":state.filter.Appid,
-    "Filter.SN":state.filter.SN,
-    "Filter.Account":state.filter.Account,
-    "Filter.Status":state.filter.Status,
-  })
-  state.total = res?.data?.total ?? 0
-  state.tableModel = res?.data?.list ?? []
-  state.loading = false
-}
+  state.loading = true;
+  try {
+    const res: any = await new PermissionApi().getEquipmentList({
+      ...state.pageInput,
+      "Filter.Appid": state.filter.Appid,
+      "Filter.SN": state.filter.SN,
+      "Filter.Account": state.filter.Account,
+      // 确保传递正确的状态值
+      "Filter.Status": state.filter.Status !== '' ? state.filter.Status : null,
+    });
+    
+    state.total = res?.data?.total ?? 0;
+    state.tableModel = res?.data?.list ?? [];
+  } catch (error) {
+    console.error('获取设备列表失败:', error);
+    ElMessage.error('获取设备列表失败');
+  } finally {
+    state.loading = false;
+  }
+};
+
 /**初始化 */
 const init = async () => {
-  state.loading = true
-  const name = router.currentRoute.value.params.id
-  const appData=await new PermissionApi().getApplyInfo({Name:name})
-  state.appName = appData.data[0].name
-  state.filter.Appid = appData.data[0].appid
-  state.loading = false
-  onQuery()
-}
+  state.loading = true;
+  try {
+    const name = router.currentRoute.value.params.id;
+    const appData = await new PermissionApi().getApplyInfo({ Name: name });
+    state.appName = appData.data[0].name;
+    state.filter.Appid = appData.data[0].appid;
+  } catch (error) {
+    console.error('获取应用信息失败:', error);
+    ElMessage.error('获取应用信息失败');
+  } finally {
+    state.loading = false;
+    onQuery();
+  }
+};
+
 /**添加 */
 const onAdd = () => {
-  equipmentEditRef.value.openDialog('add',{appid:state.filter.Appid})
+  equipmentEditRef.value.openDialog('add', { appid: state.filter.Appid })
 }
-/**重置 */
-const onReset = () => { }
+
+/**重置筛选条件 */
+const onReset = () => {
+  state.filter = {
+    Appid: state.filter.Appid, 
+    SN: null,
+    Account: null,
+    Status: '',
+  };
+  onQuery(); 
+};
+
 /**编辑 */
 const onDateUpdate = (row) => {
-  equipmentEditRef.value.openDialog('edit',row)
- }
+  equipmentEditRef.value.openDialog('edit', row)
+}
+
 /**删除 */
 const onDataDelete = (row) => {
-  equipmentEditRef.value.openDialog('delete',row)
- }
-
-const onSizeChange = () => {
+  equipmentEditRef.value.openDialog('delete', row)
 }
 
-const onCurrentChange = () => {
-}
+/**页大小变化 */
+const onSizeChange = (newSize: number) => {
+  state.pageInput.PageSize = newSize;
+  onQuery();
+};
+
+/**页码变化 */
+const onCurrentChange = (newPage: number) => {
+  state.pageInput.CurrentPage = newPage;
+  onQuery();
+};
 </script>
+
 <style scoped lang="scss">
 .el-input,
 .el-select {

+ 84 - 22
admin.ui.plus-master/src/views/example/codeGeneration/index.vue

@@ -29,7 +29,7 @@
           <el-form-item label="查询按钮" style="width: 100%;"></el-form-item>
           <el-form-item label="">
             <el-row :gutter="70">
-              <el-col :xs="6" :sm="4" :md="4" :lg="4" :xl="4" v-for="(v, k) in state.selectBtn" :key="k">
+              <el-col :xs="6" :sm="6" :md="6" :lg="6" :xl="4" v-for="(v, k) in state.selectBtn" :key="k">
                 <span style="margin-right: 10px;">{{ v.name }}</span>
                 <el-switch v-model="v.value" @change="change(k)"></el-switch>
               </el-col>
@@ -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
@@ -430,17 +430,17 @@ const onsubmit=()=>{
       <el-col :xs="24" >
         <el-card class="mt8"  shadow="hover" >`
     if(selVal.length>0){
-      indexCode=indexCode+`\n<el-form :model="state.filter" :inline="true" @submit.stop.prevent>
+      indexCode=indexCode+`\n<el-form :model="state.filter" :inline="true" @submit.stop.prevent style="margin-bottom: -3vh;">
             <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>`
   }
@@ -493,7 +512,7 @@ const onsubmit=()=>{
         indexCode=indexCode+`\n<el-link
                   class="my-el-link mr12 ml12"
                   type="primary"
-                  icon="ele-Upload"
+                  icon="ele-Delete"
                   @click="${tabBtn[i].method}(row)"
                   :underline="false"
                   target="_blank"
@@ -506,8 +525,8 @@ const onsubmit=()=>{
     if(state.isPage){
       indexCode=indexCode+`\n<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
@@ -527,7 +546,12 @@ const onsubmit=()=>{
   <script setup lang="ts">
   import {onBeforeMount, onMounted, reactive, ref, watch} from "vue";
   import eventBus from "/@/utils/mitt";
-  import {Api} from "/@/api/code/api";`
+  import {Api} from "/@/api/code/api";
+  import { useDynamicPageSize } from "/@/composables/useDynamicPageSize";
+
+  // 使用组合式函数获取分页状态
+const pageState = useDynamicPageSize(10, 15);`
+
   if(state.isPage&&tabVal.length>0){
     indexCode=indexCode+`\nimport { pageInput,${tabVal[0].belong} } from "/@/api/code/dto";`
   }else if(tabVal.length>0){
@@ -571,6 +595,8 @@ const onsubmit=()=>{
   }
   indexCode=indexCode+`\n})
   onMounted(() => {
+    // 初始化分页大小
+  Data.pageInput.pageSize = pageState.pageInput.pageSize; 
     init()
     eventBus.off('refreshView')
     eventBus.on('refreshView', async () => {
@@ -625,7 +651,43 @@ const onsubmit=()=>{
       const ${tabBtn[i].method}=(row)=>{}`
     }
   }
-  indexCode=indexCode+`\n</`+`script>`+`\n<style scoped lang="scss">
+  indexCode=indexCode+`\n
+  /**
+* 页条变化
+* @param val
+*/
+const onSizeChange = (val: number) => {
+  Data.pageInput.pageSize = val
+  //需按照页面对象修改Data
+  init()
+}
+
+/**
+ * 页数 变化
+ * @param val
+ */
+const onCurrentChange = (val: number) => {
+  Data.pageInput.currentPage = val
+  //需按照页面对象修改Data
+  init()
+}
+  </`+`script>`+`\n<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>`
   //console.log(indexCode)
   getCodeFile('api.ts',apiCode)