瀏覽代碼

fix: 增加批量启用禁用的loading

yanglzh 1 年之前
父節點
當前提交
0edb0b7641
共有 1 個文件被更改,包括 28 次插入35 次删除
  1. 28 35
      src/views/iot/device/instance/index.vue

+ 28 - 35
src/views/iot/device/instance/index.vue

@@ -1,21 +1,19 @@
 <template>
   <div class="system-dic-container">
-    <el-card shadow="hover">
+    <el-card shadow="hover" v-loading="batchLoading">
       <div class="system-user-search mb15">
         <el-form :model="tableData.param" ref="queryRef" :inline="true" label-width="68px">
           <el-form-item label="设备名称" prop="name">
-            <el-input v-model="tableData.param.name" placeholder="请输入设备名称" clearable size="default" style="width: 240px"
-              @keyup.enter.native="typeList" />
+            <el-input v-model="tableData.param.name" placeholder="请输入设备名称" clearable size="default" style="width: 240px" @keyup.enter.native="typeList" />
           </el-form-item>
           <el-form-item label="设备标识" prop="key">
-            <el-input v-model="tableData.param.key" placeholder="请输入设备标识" clearable size="default" style="width: 240px"
-              @keyup.enter.native="typeList" />
+            <el-input v-model="tableData.param.key" placeholder="请输入设备标识" clearable size="default" style="width: 240px" @keyup.enter.native="typeList" />
+          </el-form-item>
+          <el-form-item label="所属产品" prop="productId">
+            <el-select v-model="tableData.param.productId" filterable placeholder="请选择产品">
+              <el-option v-for="item in productData" :key="item.id" :label="item.name" :value="item.id.toString()" value-key="id"> </el-option>
+            </el-select>
           </el-form-item>
-    		<el-form-item label="所属产品" prop="productId">
-					<el-select v-model="tableData.param.productId" filterable  placeholder="请选择产品">
-						<el-option v-for="item in productData" :key="item.id" :label="item.name" :value="item.id.toString()" value-key="id"> </el-option>
-					</el-select>
-				</el-form-item>
 
           <el-form-item label="状态" prop="status" style="width: 200px;">
             <el-select v-model="tableData.param.status" placeholder="状态" clearable size="default" style="width: 240px">
@@ -26,9 +24,7 @@
           </el-form-item>
 
           <el-form-item label="创建时间" prop="dateRange">
-            <el-date-picker v-model="tableData.param.dateRange" size="default" style="width: 240px"
-              value-format="YYYY-MM-DD" type="daterange" range-separator="-" start-placeholder="开始日期"
-              end-placeholder="结束日期"></el-date-picker>
+            <el-date-picker v-model="tableData.param.dateRange" size="default" style="width: 240px" value-format="YYYY-MM-DD" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
           </el-form-item>
           <el-form-item>
             <el-button size="default" type="primary" class="ml10" @click="typeList">
@@ -62,27 +58,25 @@
               </el-button>
               <template #dropdown>
                 <el-dropdown-menu>
-                  <el-dropdown-item> <el-button size="default" type="success" @click="setDeviceStatus1(null)"
-                     >
+                  <el-dropdown-item> <el-button size="default" type="success" @click="setDeviceStatus1(null)">
                       <el-icon>
                         <ele-Delete />
                       </el-icon>
                       批量启用
                     </el-button></el-dropdown-item>
-                  <el-dropdown-item><el-button size="default" type="warning" @click="setDeviceStatus0(null)"
-                     >
+                  <el-dropdown-item><el-button size="default" type="warning" @click="setDeviceStatus0(null)">
                       <el-icon>
                         <ele-Delete />
                       </el-icon>
                       批量禁用
                     </el-button></el-dropdown-item>
-                  <el-dropdown-item> <el-button size="default" @click="onOpenexcelDic('upload')" >
+                  <el-dropdown-item> <el-button size="default" @click="onOpenexcelDic('upload')">
                       <el-icon>
                         <ele-Upload />
                       </el-icon>
                       导入设备
                     </el-button></el-dropdown-item>
-                  <el-dropdown-item><el-button size="default" @click="onOpenexcelDic('down')" >
+                  <el-dropdown-item><el-button size="default" @click="onOpenexcelDic('down')">
                       <el-icon>
                         <ele-Download />
                       </el-icon>
@@ -94,8 +88,7 @@
           </el-form-item>
         </el-form>
       </div>
-      <el-table :data="tableData.data" style="width: 100%" @selection-change="handleSelectionChange"
-        v-loading="tableData.loading">
+      <el-table :data="tableData.data" style="width: 100%" @selection-change="handleSelectionChange" v-loading="tableData.loading">
         <el-table-column type="selection" width="55" align="center" />
         <el-table-column label="标识" prop="key" width="130" show-overflow-tooltip v-col="'key'" />
         <el-table-column label="设备名称" prop="name" show-overflow-tooltip v-col="'name'" />
@@ -108,27 +101,22 @@
             <el-tag type="info" size="small" v-if="scope.row.status == 0">未启用</el-tag>
           </template>
         </el-table-column>
-        <el-table-column prop="createdAt" label="创建时间" align="center" width="160"
-          v-col="'registryTime'"></el-table-column>
+        <el-table-column prop="createdAt" label="创建时间" align="center" width="160" v-col="'registryTime'"></el-table-column>
         <el-table-column prop="desc" label="说明" show-overflow-tooltip v-col="'desc'"></el-table-column>
 
         <el-table-column label="操作" width="200" align="center" fixed="right">
           <template #default="scope">
-            <router-link :to="'/iotmanager/device/instance/' + scope.row.id" class="link-type"
-              style="padding-right: 12px;font-size: 12px;color: #409eff;" v-auth="'detail'">
+            <router-link :to="'/iotmanager/device/instance/' + scope.row.id" class="link-type" style="padding-right: 12px;font-size: 12px;color: #409eff;" v-auth="'detail'">
               <span>详情</span>
             </router-link>
             <el-button size="small" text type="warning" @click="onOpenEditDic(scope.row)" v-auth="'edit'">修改</el-button>
-            <el-button size="small" text type="success" @click="onActionStatus(scope.row)" v-if="scope.row.status == 0"
-              v-auth="'status'">启用</el-button>
-            <el-button size="small" text type="primary" @click="onActionStatus(scope.row)" v-if="scope.row.status > 0"
-              v-auth="'status'">停用</el-button>
+            <el-button size="small" text type="success" @click="onActionStatus(scope.row)" v-if="scope.row.status == 0" v-auth="'status'">启用</el-button>
+            <el-button size="small" text type="primary" @click="onActionStatus(scope.row)" v-if="scope.row.status > 0" v-auth="'status'">停用</el-button>
             <el-button size="small" text type="info" @click="onRowDel(scope.row)" v-auth="'del'">删除</el-button>
           </template>
         </el-table-column>
       </el-table>
-      <pagination v-show="tableData.total > 0" :total="tableData.total" v-model:page="tableData.param.pageNum"
-        v-model:limit="tableData.param.pageSize" @pagination="typeList" />
+      <pagination v-show="tableData.total > 0" :total="tableData.total" v-model:page="tableData.param.pageNum" v-model:limit="tableData.param.pageSize" @pagination="typeList" />
     </el-card>
     <EditDic ref="editDicRef" @typeList="typeList" />
     <ExcelDic ref="excelDicRef" @typeList="typeList" />
@@ -165,12 +153,13 @@ interface TableDataState {
       pageSize: number;
       name: string;
       key: string;
-      productId:string;
+      productId: string;
       status: string;
       dateRange: string[];
     };
   };
 }
+
 export default defineComponent({
   name: 'deviceInstance',
   components: { EditDic, ExcelDic, ArrowDown },
@@ -180,9 +169,10 @@ export default defineComponent({
     const excelDicRef = ref();
     const detailRef = ref();
     const queryRef = ref();
+    const batchLoading = ref(false);
     const state = reactive<TableDataState>({
       ids: [],
-      productData:[],
+      productData: [],
       tableData: {
         data: [],
         total: 0,
@@ -251,10 +241,11 @@ export default defineComponent({
         type: 'warning',
       })
         .then(() => {
+          batchLoading.value = true
           api.device.setDeviceStatus({ ids: ids, status: 1 }).then(() => {
             ElMessage.success('启用成功');
             typeList();
-          });
+          }).finally(() => batchLoading.value = false)
         })
         .catch(() => { });
     }
@@ -277,10 +268,11 @@ export default defineComponent({
         type: 'warning',
       })
         .then(() => {
+          batchLoading.value = true
           api.device.setDeviceStatus({ ids: ids, status: 0 }).then(() => {
             ElMessage.success('禁用成功');
             typeList();
-          });
+          }).finally(() => batchLoading.value = false)
         })
         .catch(() => { });
     }
@@ -347,6 +339,7 @@ export default defineComponent({
       detailRef,
       queryRef,
       onActionStatus,
+      batchLoading,
       setDeviceStatus1,
       setDeviceStatus0,
       onOpenDetail,