Преглед на файлове

fix: 没有权限的按钮不显示,补充了一些页面的按钮权限

yanglzh преди 2 години
родител
ревизия
ec4055fc86

+ 12 - 6
src/utils/authDirective.ts

@@ -16,9 +16,15 @@ export function authDirective(app: App) {
 			const buttons = <string[]>router.currentRoute.value.meta.buttons
 			if (buttons.includes(allPermissions)) return
 			// 不显示该dom
-			// if (!buttons.includes(binding.value)) el.parentNode.removeChild(el)
+			if (!buttons.includes(binding.value)) el.parentNode.removeChild(el)
 			// 设置为disabled
-			if (!buttons.includes(binding.value)) el.classList.add('v-disabled')
+			// if (!buttons.includes(binding.value)) el.classList.add('v-disabled')
+		},
+	});
+	app.directive('noauth', {
+		mounted(el, binding) {
+			const buttons = <string[]>router.currentRoute.value.meta.buttons
+			if (buttons.includes(binding.value)) el.parentNode.removeChild(el)
 		},
 	});
 	// 多个权限验证,满足一个则显示(v-auths="[xxx,xxx]")
@@ -32,8 +38,8 @@ export function authDirective(app: App) {
 					if (val === v) flag = true;
 				});
 			});
-			// if (!flag) el.parentNode.removeChild(el);
-			if (!flag) el.classList.add('v-disabled')
+			if (!flag) el.parentNode.removeChild(el);
+			// if (!flag) el.classList.add('v-disabled')
 		},
 	});
 	// 多个权限验证,全部满足则显示(v-auth-all="[xxx,xxx]")
@@ -41,8 +47,8 @@ export function authDirective(app: App) {
 		mounted(el, binding) {
 			const buttons = <string[]>router.currentRoute.value.meta.buttons
 			if (buttons.includes(allPermissions)) return
-			// !smallInBig(buttons, binding.value) && el.parentNode.removeChild(el)
-			!smallInBig(buttons, binding.value) && el.classList.add('v-disabled')
+			!smallInBig(buttons, binding.value) && el.parentNode.removeChild(el)
+			// !smallInBig(buttons, binding.value) && el.classList.add('v-disabled')
 		},
 	});
 }

+ 2 - 1
src/views/iot/certificate/index.vue

@@ -43,7 +43,8 @@
 				<el-table-column v-col="'description'" label="说明" prop="description" min-width="120" :show-overflow-tooltip="true" />
 				<el-table-column label="状态" width="120" align="center">
 					<template #default="scope">
-						<el-switch v-model="scope.row.status" inline-prompt :active-value="1" :inactive-value="0" active-text="启" inactive-text="禁" @change="handleStatusChange(scope.row)"></el-switch>
+						<el-switch v-auth="'startOrStop'" v-model="scope.row.status" inline-prompt :active-value="1" :inactive-value="0" active-text="启" inactive-text="禁" @change="handleStatusChange(scope.row)"></el-switch>
+						<span v-noauth="'startOrStop'">{{ scope.row.status ? '正常' : '暂停' }}</span>
 					</template>
 				</el-table-column>
 				<el-table-column v-col="'handle'" label="操作" width="180" align="center" fixed="right">

+ 3 - 3
src/views/iot/configuration/list/index.vue

@@ -13,7 +13,7 @@
           </el-button>
         </el-form-item>
         <el-form-item>
-          <el-button type="success" @click="addOrEdit()">
+          <el-button type="success" v-auth="'add'" @click="addOrEdit()">
             <el-icon>
               <ele-FolderAdd />
             </el-icon>
@@ -31,9 +31,9 @@
       <el-table-column label="操作" width="200" align="center">
         <template #default="scope">
           <el-button size="small" text type="primary" v-if="!scope.row.folderName" @click="view(scope.row)">预览</el-button>
-          <el-button size="small" text type="warning" @click="addOrEdit(scope.row)">编辑</el-button>
+          <el-button size="small" text type="warning" v-auth="'edit'" @click="addOrEdit(scope.row)">编辑</el-button>
           <el-button size="small" text type="warning" @click="edit(scope.row)">编辑组态图</el-button>
-          <el-button size="small" text type="danger" @click="del(scope.row)">删除</el-button>
+          <el-button size="small" text type="danger" v-auth="'del'" @click="del(scope.row)">删除</el-button>
         </template>
       </el-table-column>
     </el-table>

+ 3 - 3
src/views/iot/configuration/screen/index.vue

@@ -3,7 +3,7 @@
     <div class="search">
       <el-form :inline="true">
         <el-form-item>
-          <el-button type="success" @click="addOrEdit()">
+          <el-button type="success" v-auth="'add'" @click="addOrEdit()">
             <el-icon>
               <ele-FolderAdd />
             </el-icon>
@@ -22,9 +22,9 @@
       <el-table-column label="操作" width="200" align="center">
         <template #default="scope">
           <el-button size="small" text type="primary" @click="preview(scope.row)">预览</el-button>
-          <el-button size="small" text type="warning" @click="addOrEdit(scope.row)">编辑</el-button>
+          <el-button size="small" text type="warning" v-auth="'edit'" @click="addOrEdit(scope.row)">编辑</el-button>
           <el-button size="small" text type="warning" @click="edit(scope.row)">设计大屏</el-button>
-          <el-button size="small" text type="danger" @click="onDel(scope.row)">删除</el-button>
+          <el-button size="small" text type="danger" v-auth="'del'" @click="onDel(scope.row)">删除</el-button>
         </template>
       </el-table-column>
     </el-table>

+ 4 - 4
src/views/iot/device-tree/tree/index.vue

@@ -6,7 +6,7 @@
           <el-scrollbar v-loading="treeLoading">
             <el-input :prefix-icon="search" v-model="searchVal" placeholder="请输入设备树名称" clearable size="default" style="width: 100%;" />
 
-            <el-button v-if="!treeLoading && !treeData.length" type="primary" class="mt-2" @click="operateCmd('add', {})" style="width: 100%">新建节点</el-button>
+            <el-button v-if="!treeLoading && !treeData.length" type="primary"  v-auth="'add'" class="mt-2" @click="operateCmd('add', {})" style="width: 100%">新建节点</el-button>
             <el-tree ref="zlTreeSearchRef" v-if="!treeLoading" :data="treeData" :props="{
               children: 'children',
               label: 'name'
@@ -17,7 +17,7 @@
                     <!-- <i class="iconfont icon-wenjianjia icon-wjj mr8" /> -->
                     {{ node.label }}
                   </span>
-                  <span class="tree-options" @click.stop>
+                  <span class="tree-options" @click.stop v-auth="'edit'">
                     <slot name="operate" :data="data">
                       <el-dropdown @command="command => operateCmd(command, data)">
                         <el-icon>
@@ -115,7 +115,7 @@
                   </el-select>
                 </el-form-item> -->
                 <el-form-item label=" " prop="category">
-                  <el-button type="primary" @click="onSaveTime">保存</el-button>
+                  <el-button type="primary" v-auth="'save'" @click="onSaveTime">保存</el-button>
                 </el-form-item>
               </el-form>
             </el-tab-pane>
@@ -129,7 +129,7 @@
                 </el-select>
               </el-form-item>
               <el-form-item label=" " prop="category">
-                <el-button type="primary" @click="onSaveTime">保存</el-button>
+                <el-button type="primary" v-auth="'save'" @click="onSaveTime">保存</el-button>
               </el-form-item>
             </el-tab-pane>
           </el-tabs>

+ 3 - 3
src/views/iot/device/channel/index.vue

@@ -22,7 +22,7 @@
 							</el-icon>
 							重置
 						</el-button>
-						<el-button type="success" @click="addOrEdit()">
+						<el-button type="success" @click="addOrEdit()" v-auth="'add'">
 							<el-icon>
 								<ele-FolderAdd />
 							</el-icon>
@@ -38,8 +38,8 @@
 				<el-table-column prop="slaveId" label="设备地址" align="center" show-overflow-tooltip></el-table-column>
 				<el-table-column label="操作" width="100" align="center">
 					<template #default="scope">
-						<el-button size="small" text type="primary" @click="viewDetail(scope.row)">详情</el-button>
-						<el-button size="small" text type="danger" @click="onDel(scope.row)">删除</el-button>
+						<el-button size="small" text type="primary" v-auth="'detail'" @click="viewDetail(scope.row)">详情</el-button>
+						<el-button size="small" text type="danger" v-auth="'del'" @click="onDel(scope.row)">删除</el-button>
 					</template>
 				</el-table-column>
 			</el-table>

+ 1 - 1
src/views/iot/device/instance/component/subDevice.vue

@@ -61,7 +61,7 @@
 						<div class="pro-box">
 							<div class="protitle">设备信息</div>
 							<div>
-								<el-button type="primary" @click="onOpenEditDic(detail)">编辑</el-button>
+								<el-button type="primary" v-auth="'edit'" @click="onOpenEditDic(detail)">编辑</el-button>
 							</div>
 						</div>
 

+ 15 - 15
src/views/iot/device/instance/detail.vue

@@ -43,7 +43,7 @@
                     <el-icon style="font-size: 18px;" @click="getrunData()">
                       <ele-Refresh />
                     </el-icon>
-                    <el-icon style="font-size: 18px;    margin-left: 10px;" @click="onOpenListDetail(item)">
+                    <el-icon style="font-size: 18px;margin-left: 10px;" @click="onOpenListDetail(item)">
                       <ele-Expand />
                     </el-icon>
                   </div>
@@ -61,7 +61,7 @@
           <div class="pro-box">
             <div class="protitle">设备信息</div>
             <div>
-              <el-button type="primary" @click="onOpenEditDic(detail)">编辑</el-button>
+              <el-button type="primary" v-auth="'edit'" @click="onOpenEditDic(detail)">编辑</el-button>
             </div>
           </div>
 
@@ -116,7 +116,7 @@
                 <div class="wu-title">
                   <div class="title">属性定义</div>
                   <div>
-                    <el-button type="primary" @click="onOpenEditAttr()">添加</el-button>
+                    <el-button type="primary" v-auth="'add'" @click="onOpenEditAttr()">添加</el-button>
                   </div>
                 </div>
 
@@ -147,9 +147,9 @@
                   <el-table-column label="说明" prop="desc" :show-overflow-tooltip="true" />
                   <el-table-column label="操作" width="300" align="center" fixed="right">
                     <template #default="scope">
-                      <el-button size="small" text type="warning" @click="onEditAttr(scope.row)">修改</el-button>
-                      <el-button size="small" text type="danger" @click="onRowDel(scope.row.key, 'attr')">删除</el-button>
-                      <el-button size="small" text type="primary" @click="setAttr(scope.row)">设置属性</el-button>
+                      <el-button size="small" text type="warning" v-auth="'edit'" @click="onEditAttr(scope.row)">修改</el-button>
+                      <el-button size="small" text type="danger" v-auth="'del'" @click="onRowDel(scope.row.key, 'attr')">删除</el-button>
+                      <el-button size="small" text type="primary" v-auth="'edit'" @click="setAttr(scope.row)">设置属性</el-button>
                     </template>
                   </el-table-column>
                 </el-table>
@@ -158,7 +158,7 @@
                 <div class="wu-title">
                   <div class="title">功能定义</div>
                   <div>
-                    <el-button type="primary" @click="onOpenEditFun()">添加</el-button>
+                    <el-button type="primary" v-auth="'add'" @click="onOpenEditFun()">添加</el-button>
                   </div>
                 </div>
 
@@ -169,8 +169,8 @@
                   <el-table-column label="描述" prop="desc" :show-overflow-tooltip="true" />
                   <el-table-column label="操作" width="300" align="center" fixed="right">
                     <template #default="scope">
-                      <el-button size="small" text type="warning" @click="onEditFun(scope.row)">修改</el-button>
-                      <el-button size="small" text type="danger" @click="onRowDel(scope.row.key, 'fun')">删除</el-button>
+                      <el-button size="small" text type="warning" v-auth="'edit'" @click="onEditFun(scope.row)">修改</el-button>
+                      <el-button size="small" text type="danger" v-auth="'del'" @click="onRowDel(scope.row.key, 'fun')">删除</el-button>
                     </template>
                   </el-table-column>
                 </el-table>
@@ -179,7 +179,7 @@
                 <div class="wu-title">
                   <div class="title">事件定义</div>
                   <div>
-                    <el-button type="primary" @click="onOpenEditEvent()">添加</el-button>
+                    <el-button type="primary" v-auth="'add'" @click="onOpenEditEvent()">添加</el-button>
                   </div>
                 </div>
 
@@ -197,8 +197,8 @@
 
                   <el-table-column label="操作" width="300" align="center" fixed="right">
                     <template #default="scope">
-                      <el-button size="small" text type="warning" @click="onEditEvent(scope.row)">修改</el-button>
-                      <el-button size="small" text type="danger" @click="onRowDel(scope.row.key, 'event')">删除</el-button>
+                      <el-button size="small" text type="warning" v-auth="'edit'" @click="onEditEvent(scope.row)">修改</el-button>
+                      <el-button size="small" text type="danger" v-auth="'del'" @click="onRowDel(scope.row.key, 'event')">删除</el-button>
                     </template>
                   </el-table-column>
                 </el-table>
@@ -207,7 +207,7 @@
                 <div class="wu-title">
                   <div class="title">标签定义</div>
                   <div>
-                    <el-button type="primary" @click="onOpenEditTab()">添加</el-button>
+                    <el-button type="primary" v-auth="'add'" @click="onOpenEditTab()">添加</el-button>
                   </div>
                 </div>
 
@@ -229,8 +229,8 @@
                   <el-table-column label="描述" prop="desc" :show-overflow-tooltip="true" />
                   <el-table-column label="操作" width="300" align="center" fixed="right">
                     <template #default="scope">
-                      <el-button size="small" text type="warning" @click="onEditTag(scope.row)">修改</el-button>
-                      <el-button size="small" text type="danger" @click="onRowDel(scope.row.key, 'tab')">删除</el-button>
+                      <el-button size="small" text type="warning" v-auth="'edit'" @click="onEditTag(scope.row)">修改</el-button>
+                      <el-button size="small" text type="danger" v-auth="'del'" @click="onRowDel(scope.row.key, 'tab')">删除</el-button>
                     </template>
                   </el-table-column>
                 </el-table>

+ 2 - 2
src/views/iot/device/product/component/dataParse.vue

@@ -6,8 +6,8 @@
 			<el-input class="output" v-model="outputData" type="textarea" readonly placeholder="此处显示执行结果"></el-input>
 		</div>
 	</div>
-	<el-button type="primary" style="margin-top:20px" @click="saveCode">保存脚本</el-button>
-	<el-button type="primary" style="margin-top:20px" @click="mock">调试</el-button>
+	<el-button type="primary" style="margin-top:20px" v-auth="'save'" @click="saveCode">保存脚本</el-button>
+	<el-button type="primary" style="margin-top:20px" v-auth="'debug'" @click="mock">调试</el-button>
 </template>
 
 <script lang="ts" setup>

+ 17 - 17
src/views/iot/device/product/detail.vue

@@ -4,8 +4,7 @@
 			<div class="cont_box">
 				<div class="title">产品:{{ detail.name }}</div>
 				<div class="pro-status"><span :class="developer_status == 1 ? 'on' : 'off'"></span>{{ developer_status == 1 ? '已发布' : '未发布' }}</div>
-
-				<div class="pro-option" @click="CkOption"> {{ developer_status == 1 ? '停用' : '启用' }}</div>
+				<div class="pro-option" @click="CkOption" v-auth="'startOrStop'"> {{ developer_status == 1 ? '停用' : '启用' }}</div>
 			</div>
 		</div>
 
@@ -14,7 +13,7 @@
 				<el-tab-pane label="产品信息" name="1">
 					<div class="pro-box">
 						<div class="protitle">产品信息</div>
-						<el-button type="" :icon="Edit" class="buttonedit" @click="onOpenEditDic(detail)">编辑</el-button>
+						<el-button type="" :icon="Edit" class="buttonedit" v-auth="'edit'" @click="onOpenEditDic(detail)">编辑</el-button>
 					</div>
 
 					<div class="ant-descriptions-view">
@@ -51,7 +50,7 @@
 							<el-tab-pane label="属性定义" name="attr">
 								<div class="wu-title">
 									<div class="title">属性定义</div>
-									<div><el-button type="primary" @click="onOpenEditAttr()">添加</el-button></div>
+									<div><el-button type="primary" v-auth="'edit'" @click="onOpenEditAttr()">添加</el-button></div>
 								</div>
 
 								<el-table style="width: 100%" :data="tableData.data" v-if="activetab == 'attr'">
@@ -81,8 +80,8 @@
 									<el-table-column label="说明" prop="desc" :show-overflow-tooltip="true" />
 									<el-table-column label="操作" width="300" align="center" fixed="right">
 										<template #default="scope">
-											<el-button size="small" text type="warning" @click="onEditAttr(scope.row)">修改</el-button>
-											<el-button size="small" text type="danger" @click="onRowDel(scope.row.key, 'attr')">删除</el-button>
+											<el-button size="small" text type="warning" v-auth="'edit'" @click="onEditAttr(scope.row)">修改</el-button>
+											<el-button size="small" text type="danger" v-auth="'del'" @click="onRowDel(scope.row.key, 'attr')">删除</el-button>
 										</template>
 									</el-table-column>
 								</el-table>
@@ -90,7 +89,7 @@
 							<el-tab-pane label="功能定义" name="fun">
 								<div class="wu-title">
 									<div class="title">功能定义</div>
-									<div><el-button type="primary" @click="onOpenEditFun()">添加</el-button></div>
+									<div><el-button type="primary" v-auth="'add'" @click="onOpenEditFun()">添加</el-button></div>
 								</div>
 
 								<el-table style="width: 100%" :data="tableData.data" v-if="activetab == 'fun'">
@@ -100,8 +99,8 @@
 									<el-table-column label="描述" prop="desc" :show-overflow-tooltip="true" />
 									<el-table-column label="操作" width="300" align="center" fixed="right">
 										<template #default="scope">
-											<el-button size="small" text type="warning" @click="onEditFun(scope.row)">修改</el-button>
-											<el-button size="small" text type="danger" @click="onRowDel(scope.row.key, 'fun')">删除</el-button>
+											<el-button size="small" text type="warning" v-auth="'edit'" @click="onEditFun(scope.row)">修改</el-button>
+											<el-button size="small" text type="danger" v-auth="'del'" @click="onRowDel(scope.row.key, 'fun')">删除</el-button>
 										</template>
 									</el-table-column>
 								</el-table>
@@ -109,7 +108,7 @@
 							<el-tab-pane label="事件定义" name="event">
 								<div class="wu-title">
 									<div class="title">事件定义</div>
-									<div><el-button type="primary" @click="onOpenEditEvent()">添加</el-button></div>
+									<div><el-button type="primary" v-auth="'add'" @click="onOpenEditEvent()">添加</el-button></div>
 								</div>
 
 								<el-table style="width: 100%" :data="tableData.data" v-if="activetab == 'event'">
@@ -126,8 +125,8 @@
 
 									<el-table-column label="操作" width="300" align="center" fixed="right">
 										<template #default="scope">
-											<el-button size="small" text type="warning" @click="onEditEvent(scope.row)">修改</el-button>
-											<el-button size="small" text type="danger" @click="onRowDel(scope.row.key, 'event')">删除</el-button>
+											<el-button size="small" text type="warning" v-auth="'edit'" @click="onEditEvent(scope.row)">修改</el-button>
+											<el-button size="small" text type="danger" v-auth="'del'" @click="onRowDel(scope.row.key, 'event')">删除</el-button>
 										</template>
 									</el-table-column>
 								</el-table>
@@ -135,7 +134,7 @@
 							<el-tab-pane label="标签定义" name="tab">
 								<div class="wu-title">
 									<div class="title">标签定义</div>
-									<div><el-button type="primary" @click="onOpenEditTab()">添加</el-button></div>
+									<div><el-button type="primary" v-auth="'add'" @click="onOpenEditTab()">添加</el-button></div>
 								</div>
 
 								<el-table style="width: 100%" :data="tableData.data" v-if="activetab == 'tab'">
@@ -155,8 +154,8 @@
 									<el-table-column label="描述" prop="desc" :show-overflow-tooltip="true" />
 									<el-table-column label="操作" width="300" align="center" fixed="right">
 										<template #default="scope">
-											<el-button size="small" text type="warning" @click="onEditTag(scope.row)">修改</el-button>
-											<el-button size="small" text type="danger" @click="onRowDel(scope.row.key, 'tab')">删除</el-button>
+											<el-button size="small" text type="warning" v-auth="'edit'" @click="onEditTag(scope.row)">修改</el-button>
+											<el-button size="small" text type="danger" v-auth="'del'" @click="onRowDel(scope.row.key, 'tab')">删除</el-button>
 										</template>
 									</el-table-column>
 								</el-table>
@@ -415,7 +414,7 @@ export default defineComponent({
 		};
 
 		const updateScript = (scriptInfo: string) => {
-			state.detail.scriptInfo  = scriptInfo
+			state.detail.scriptInfo = scriptInfo
 		};
 
 		const CkOption = () => {
@@ -620,6 +619,7 @@ tr {
 
 .wu-box .wu-title .title {
 	font-size: 18px;
-}</style>
+}
+</style>
 
 

+ 37 - 28
src/views/iot/device/template/detail.vue

@@ -60,7 +60,7 @@
 					<div class="pro-box">
 						<div class="protitle">设备信息</div>
 						<div>
-							<el-button type="primary" @click="onOpenEditDic(detail)">编辑</el-button>
+							<el-button type="primary" v-auth="'edit'" @click="onOpenEditDic(detail)">编辑</el-button>
 						</div>
 					</div>
 					<div class="ant-descriptions-view">
@@ -223,13 +223,7 @@
 								</el-table>
 							</el-tab-pane>
 						</el-tabs>
-						<pagination
-							v-show="tableData.total > 0"
-							:total="tableData.total"
-							v-model:page="tableData.param.pageNum"
-							v-model:limit="tableData.param.pageSize"
-							@pagination="getList"
-						/>
+						<pagination v-show="tableData.total > 0" :total="tableData.total" v-model:page="tableData.param.pageNum" v-model:limit="tableData.param.pageSize" @pagination="getList" />
 					</div>
 				</el-tab-pane>
 
@@ -243,15 +237,7 @@
 							</el-form-item>
 
 							<el-form-item label="创建时间" prop="dateRange">
-								<el-date-picker
-									v-model="logtableData.param.dateRange"
-									size="default"
-									value-format="YYYY-MM-DD"
-									type="daterange"
-									range-separator="-"
-									start-placeholder="开始日期"
-									end-placeholder="结束日期"
-								></el-date-picker>
+								<el-date-picker v-model="logtableData.param.dateRange" size="default" 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="getlog">
@@ -281,13 +267,7 @@
 						</el-table-column>
 					</el-table>
 
-					<pagination
-						v-show="logtableData.total > 0"
-						:total="logtableData.total"
-						v-model:page="logtableData.param.pageNum"
-						v-model:limit="logtableData.param.pageSize"
-						@pagination="getlog"
-					/>
+					<pagination v-show="logtableData.total > 0" :total="logtableData.total" v-model:page="logtableData.param.pageNum" v-model:limit="logtableData.param.pageSize" @pagination="getlog" />
 				</el-tab-pane>
 			</el-tabs>
 		</div>
@@ -519,7 +499,7 @@ export default defineComponent({
 						});
 					}
 				})
-				.catch(() => {});
+				.catch(() => { });
 		};
 
 		//根据不同类型获取列表
@@ -708,28 +688,35 @@ export default defineComponent({
 	width: 100%;
 	padding: 20px;
 }
+
 .content-box {
 	background: #fff;
 	width: 100%;
 	padding: 20px;
 	margin-top: 20px;
 }
+
 .cont_box {
 	display: flex;
 }
+
 .cont_box .title {
 	font-size: 24px;
 }
+
 .cont_box .pro-status {
 	line-height: 40px;
 	margin-left: 30px;
 }
+
 .cont_box .pro-status .on {
 	background: #52c41a;
 }
+
 .cont_box .pro-status .off {
 	background: #c41a1a;
 }
+
 .cont_box .pro-status span {
 	position: relative;
 	top: -1px;
@@ -740,31 +727,37 @@ export default defineComponent({
 	border-radius: 50%;
 	margin-right: 5px;
 }
+
 .cont_box .pro-option {
 	line-height: 40px;
 	margin-left: 10px;
 	color: #1890ff;
 	cursor: pointer;
 }
+
 .content-box .pro-box {
 	display: flex;
 	padding: 10px;
 	justify-content: space-between;
 }
+
 .content-box .pro-box .protitle {
 	font-size: 18px;
 	font-weight: bold;
 	line-height: 35px;
 }
+
 .content-box .pro-box .buttonedit {
 	border: 0px;
 	color: #1890ff;
 }
+
 table {
 	border-collapse: collapse;
 	text-indent: initial;
 	border-spacing: 2px;
 }
+
 tbody {
 	box-sizing: border-box;
 	display: table-row-group;
@@ -777,37 +770,46 @@ tr {
 	vertical-align: inherit;
 	border-color: inherit;
 }
+
 .ant-descriptions-view {
 	width: 100%;
 	overflow: hidden;
 	border-radius: 4px;
 }
+
 .ant-descriptions-view {
 	border: 1px solid #e8e8e8;
 }
+
 .ant-descriptions-view table {
 	width: 100%;
 	table-layout: fixed;
 }
-.ant-descriptions-view > table {
+
+.ant-descriptions-view>table {
 	table-layout: auto;
 }
+
 .ant-descriptions-row {
 	border-bottom: 1px solid #e8e8e8;
 }
+
 .ant-descriptions-item-label {
 	color: rgba(0, 0, 0, 0.85);
 	font-weight: 400;
 	font-size: 14px;
 	line-height: 1.5;
 }
+
 .ant-descriptions-item-label {
 	padding: 16px 24px;
 	border-right: 1px solid #e8e8e8;
 }
+
 .ant-descriptions-item-label {
 	background-color: #fafafa;
 }
+
 .ant-descriptions-item-content {
 	padding: 16px 24px;
 	border-right: 1px solid #e8e8e8;
@@ -816,11 +818,13 @@ tr {
 	font-size: 14px;
 	line-height: 1.5;
 }
+
 .wu-box {
 	border: #e8e8e8 solid 1px;
 	padding: 20px;
 	width: 100%;
 }
+
 .wu-box .wu-title {
 	display: flex;
 	flex-direction: row;
@@ -828,9 +832,11 @@ tr {
 	padding: 20px;
 	border-bottom: #e8e8e8 1px solid;
 }
+
 .wu-box .wu-title .title {
 	font-size: 18px;
 }
+
 .ant-card {
 	box-sizing: border-box;
 	margin: 10px;
@@ -846,22 +852,25 @@ tr {
 	border-radius: 2px;
 	transition: all 0.3s;
 }
+
 .ant-card-body {
 	padding: 24px;
 	zoom: 1;
 }
+
 .cardflex {
 	display: flex;
 	justify-content: space-between;
 }
+
 .statusname {
 	font-size: 30px;
 	margin-top: 10px;
 	margin-bottom: 15px;
 }
+
 .comtest {
 	margin-top: 20px;
 	height: 30px;
 	line-height: 30px;
-}
-</style>
+}</style>

+ 5 - 5
src/views/iot/device/template/index.vue

@@ -19,7 +19,7 @@
 							</el-icon>
 							重置
 						</el-button>
-						<el-button type="success" @click="addOrEdit()">
+						<el-button type="success" @click="addOrEdit()" v-auth="'add'">
 							<el-icon>
 								<ele-FolderAdd />
 							</el-icon>
@@ -39,10 +39,10 @@
 				<el-table-column prop="remarks" label="备注" align="center" show-overflow-tooltip></el-table-column>
 				<el-table-column label="操作" width="160" align="center">
 					<template #default="scope">
-						<el-button size="small" text type="primary" @click="handleImport(scope.row)">导入</el-button>
-						<el-button size="small" text type="primary" @click="handleExport(scope.row)">导出</el-button>
-						<el-button size="small" text type="primary" @click="addOrEdit(scope.row)">详情</el-button>
-						<el-button size="small" text type="danger" @click="onDel(scope.row)">删除</el-button>
+						<el-button size="small" text type="primary" v-auth="'upload'" @click="handleImport(scope.row)">导入</el-button>
+						<el-button size="small" text type="primary" v-auth="'download'" @click="handleExport(scope.row)">导出</el-button>
+						<el-button size="small" text type="primary" v-auth="'detail'" @click="addOrEdit(scope.row)">详情</el-button>
+						<el-button size="small" text type="danger" v-auth="'del'" @click="onDel(scope.row)">删除</el-button>
 					</template>
 				</el-table-column>
 			</el-table>

+ 5 - 5
src/views/iot/rule-engine/index.vue

@@ -9,7 +9,7 @@
 							</el-icon>
 							查询
 						</el-button> -->
-					<el-button type="success" @click="addOrEdit()">
+					<el-button type="success" v-auth="'add'" @click="addOrEdit()">
 						<el-icon>
 							<ele-FolderAdd />
 						</el-icon>
@@ -31,11 +31,11 @@
 			</el-table-column>
 			<el-table-column label="操作" width="200" align="center">
 				<template #default="scope">
-					<el-button size="small" text type="info" v-if="scope.row.status" @click="setStatus(scope.row, 0)">停止</el-button>
-					<el-button size="small" text type="primary" v-else @click="setStatus(scope.row, 1)">启动</el-button>
-					<el-button size="small" text type="warning" @click="addOrEdit(scope.row)">编辑</el-button>
+					<el-button size="small" text type="info" v-auth="'startOrStop'" v-if="scope.row.status" @click="setStatus(scope.row, 0)">停止</el-button>
+					<el-button size="small" text type="primary" v-auth="'startOrStop'" v-else @click="setStatus(scope.row, 1)">启动</el-button>
+					<el-button size="small" text type="warning" v-auth="'edit'" @click="addOrEdit(scope.row)">编辑</el-button>
 					<el-button size="small" text type="warning" @click="edit(scope.row)">规则编辑</el-button>
-					<el-button size="small" text type="danger" @click="onDel(scope.row)">删除</el-button>
+					<el-button size="small" text type="danger" v-auth="'del'" @click="onDel(scope.row)">删除</el-button>
 				</template>
 			</el-table-column>
 		</el-table>

+ 4 - 4
src/views/iot/rule-engine/send.vue

@@ -31,11 +31,11 @@
       </el-table-column>
       <el-table-column label="操作" width="200" align="center">
         <template #default="scope">
-          <el-button size="small" text type="info" v-if="scope.row.status" @click="setStatus(scope.row, 0)">停止</el-button>
-          <el-button size="small" text type="primary" v-else @click="setStatus(scope.row, 1)">启动</el-button>
-          <el-button size="small" text type="warning" @click="addOrEdit(scope.row)">编辑</el-button>
+          <el-button size="small" text type="info" v-auth="'startOrStop'" v-if="scope.row.status" @click="setStatus(scope.row, 0)">停止</el-button>
+          <el-button size="small" text type="primary" v-auth="'startOrStop'" v-else @click="setStatus(scope.row, 1)">启动</el-button>
+          <el-button size="small" text type="warning" v-auth="'edit'" @click="addOrEdit(scope.row)">编辑</el-button>
           <el-button size="small" text type="warning" @click="edit(scope.row)">规则编辑</el-button>
-          <el-button size="small" text type="danger" @click="onDel(scope.row)">删除</el-button>
+          <el-button size="small" text type="danger" v-auth="'del'" @click="onDel(scope.row)">删除</el-button>
         </template>
       </el-table-column>
     </el-table>

+ 3 - 2
src/views/system/datahub/modeling/detail.vue

@@ -7,7 +7,7 @@
 
         <div class="pro-status"><span :class="developer_status == 1 ? 'on' : 'off'"></span>{{ developer_status == 1 ? '已发布' : '未发布' }}</div>
 
-        <div class="pro-option" @click="CkOption">{{ developer_status == 1 ? '停用' : '发布' }}</div>
+        <div class="pro-option" v-auth="'startOrStop'" @click="CkOption">{{ developer_status == 1 ? '停用' : '发布' }}</div>
       </div>
     </div>
 
@@ -302,4 +302,5 @@ export default defineComponent({
 .content-box .pro-box .buttonedit {
   border: 0px;
   color: #1890ff;
-}</style>
+}
+</style>

+ 1 - 1
src/views/system/datahub/source/detail.vue

@@ -5,7 +5,7 @@
 				<div class="title">数据源名称:{{ detail.name }}</div>
 				<div class="pro-status"><span :class="developer_status == 1 ? 'on' : 'off'"></span>{{ developer_status == 1 ? '已发布' : '未发布' }}</div>
 
-				<div class="pro-option" v-auth="'pro-status'" @click="CkOption">{{ developer_status == 1 ? '停用' : '发布' }}</div>
+				<div class="pro-option" v-auth="'pro-status'" v-auth="'startOrStop'" @click="CkOption">{{ developer_status == 1 ? '停用' : '发布' }}</div>
 			</div>
 		</div>
 

+ 3 - 0
src/views/system/menu/component/btn.vue

@@ -24,6 +24,9 @@
             <el-dropdown-item command="download-导出">导出</el-dropdown-item>
             <el-dropdown-item command="reset-重置">重置</el-dropdown-item>
             <el-dropdown-item command="more-更多">更多</el-dropdown-item>
+            <el-dropdown-item command="save-保存">保存</el-dropdown-item>
+            <el-dropdown-item command="startOrStop-启用停用">启用停用</el-dropdown-item>
+            <el-dropdown-item command="status-切换状态">切换状态</el-dropdown-item>
           </el-dropdown-menu>
         </template>
       </el-dropdown>

+ 1 - 1
src/views/system/monitor/plugin/index.vue

@@ -19,7 +19,7 @@
 							</el-icon>
 							重置
 						</el-button>
-						<el-button size="default" type="success" @click="addOrEdit()">
+						<el-button size="default" type="success" v-auth="'upload'" @click="addOrEdit()">
 							<el-icon>
 								<ele-Plus />
 							</el-icon>

+ 2 - 1
src/views/system/task/index.vue

@@ -57,8 +57,9 @@
         <el-table-column label="状态" v-col="'status'" align="center" prop="status" width="100">
           <template #default="scope">
             <!-- {{ row.status ? '正常' : '暂停' }} -->
-            <el-switch v-model="scope.row.status" inline-prompt :active-value="0" :inactive-value="1" active-text="启" inactive-text="禁" @change="handleStatusChange(scope.row)">
+            <el-switch v-model="scope.row.status" inline-prompt :active-value="0" v-auth="'status'" :inactive-value="1" active-text="启" inactive-text="禁" @change="handleStatusChange(scope.row)">
             </el-switch>
+            <span v-noauth="'status'">{{ scope.row.status ? '正常' : '暂停' }}</span>
           </template>
         </el-table-column>
         <el-table-column label="操作" width="180" align="center" fixed="right" v-col="'handle'">