diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/DepartListSync.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/DepartListSync.vue
index 5b829cb..ae63e69 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/DepartListSync.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/DepartListSync.vue
@@ -5,14 +5,14 @@
 
         <!-- 按钮操作区域 -->
         <a-row style="margin: 0 0 0 14px" class="table-operator">
-          <a-button @click="handleAdd(1)" type="primary">添加部门</a-button>
-          <a-button @click="handleAdd(2)" type="primary">添加下级</a-button>
+          <a-button v-has="'depart:addDepart'" @click="handleAdd(1)" type="primary">添加部门</a-button>
+          <a-button v-has="'depart:addChildren'" @click="handleAdd(2)" type="primary">添加下级</a-button>
           <a-button type="primary" icon="download" @click="handleExportXls('部门信息')">导出</a-button>
           <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
             <a-button type="primary" icon="import">导入</a-button>
           </a-upload>
           <j-third-app-button biz-type="depart" :selected-row-keys="selectedRowKeys" syncToApp @sync-finally="onSyncFinally"/>
-          <a-button title="删除多条数据" @click="batchDel" type="default">批量删除</a-button>
+          <a-button v-has="'depart:deleteBatch'" title="删除多条数据" @click="batchDel" type="default">批量删除</a-button>
         </a-row>
         <div style="background: #fff;padding-left:16px;height: 100%; margin-top: 5px">
           <a-alert type="info" :showIcon="true">
@@ -270,7 +270,7 @@
         that.departTree = []
         //所有的树节点key信息
         that.allIds = []
-        
+
         that.iExpandedKeys = []
         //update-begin---author:wangshuai ---date:20220105  for:[JTC-364]sqlserver 部门导入导入失败,部门树数据丢失------------
         //部门树v-if用到了loading,和上传loading冲突了,换一个名称
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/DictList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/DictList.vue
index 30fc051..868aec1 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/DictList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/DictList.vue
@@ -25,7 +25,7 @@
       </a-form>
 
       <div class="table-operator" style="border-top: 5px">
-        <a-button @click="handleAdd" type="primary" icon="plus">添加</a-button>
+        <a-button v-has="'dict:add'" @click="handleAdd" type="primary" icon="plus">添加</a-button>
         <a-button type="primary" icon="download" @click="handleExportXls('字典信息')">导出</a-button>
         <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
           <a-button type="primary" icon="import">导入</a-button>
@@ -45,15 +45,15 @@
         :loading="loading"
         @change="handleTableChange">
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">
+          <a @click="handleEdit(record)" v-has="'dict:edit'">
             <a-icon type="edit"/>
             编辑
           </a>
           <a-divider type="vertical"/>
-          <a @click="editDictItem(record)"><a-icon type="setting"/> 字典配置</a>
+          <a v-has="'dict:config'" @click="editDictItem(record)"><a-icon type="setting"/> 字典配置</a>
           <a-divider type="vertical"/>
           <a-popconfirm title="确定删除吗?" @confirm="() =>handleDelete(record.id)">
-            <a>删除</a>
+            <a v-has="'dict:delete'">删除</a>
           </a-popconfirm>
         </span>
       </a-table>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/PermissionList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/PermissionList.vue
index 5c0081f..ecd6764 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/PermissionList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/PermissionList.vue
@@ -3,8 +3,9 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button v-has="'permission:edit'" @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button
+        v-has="'permission:deleteBatch'"
         @click="batchDel"
         v-if="selectedRowKeys.length > 0"
         ghost
@@ -34,7 +35,7 @@
         @expandedRowsChange="handleExpandedRowsChange">
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'permission:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical"/>
           <a-dropdown>
@@ -45,14 +46,14 @@
               <a-menu-item>
                 <a href="javascript:;" @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'permission:addChildren'">
                 <a href="javascript:;" @click="handleAddSub(record)">添加下级</a>
               </a-menu-item>
               <a-menu-item>
                 <a href="javascript:;" @click="handleDataRule(record)">数据规则</a>
               </a-menu-item>
 
-              <a-menu-item>
+              <a-menu-item v-has="'permission:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/RoleUserList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/RoleUserList.vue
index e003a12..af480f0 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/RoleUserList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/RoleUserList.vue
@@ -32,7 +32,7 @@
         </div>
         <!-- 操作按钮区域 -->
         <div class="table-operator" style="margin: 5px 0 10px 2px">
-          <a-button @click="handleAdd" type="primary" icon="plus">新建角色</a-button>
+          <a-button @click="handleAdd" v-has="'role:add'" type="primary" icon="plus">新建角色</a-button>
           <!--<a-button @click="handleEdit(model1)" type="primary" icon="plus">角色编辑</a-button>-->
           <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
             <a-button type="primary" icon="import">导入</a-button>
@@ -70,14 +70,14 @@
               </a>
               <a-menu slot="overlay">
                 <a-menu-item>
-                  <a @click="handlePerssion(record.id)">授权</a>
+                  <a v-has="'role:authorize'" @click="handlePerssion(record.id)">授权</a>
                 </a-menu-item>
                 <a-menu-item>
-                  <a @click="handleEdit(record)">编辑</a>
+                  <a v-has="'role:edit'"  @click="handleEdit(record)">编辑</a>
                 </a-menu-item>
                 <a-menu-item>
                   <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete1(record.id)">
-                    <a>删除</a>
+                    <a v-has="'role:delete'">删除</a>
                   </a-popconfirm>
                 </a-menu-item>
               </a-menu>
@@ -117,13 +117,13 @@
         </div>
         <!-- 操作按钮区域 -->
         <div class="table-operator" :md="24" :sm="24">
-          <a-button @click="handleAdd2" type="primary" icon="plus" style="margin-top: 16px">新增用户</a-button>
+          <a-button @click="handleAdd2" v-has="'role:addUserWithRole'" type="primary" icon="plus" style="margin-top: 16px">新增用户</a-button>
           <!--<a-button @click="handleEdit2" type="primary" icon="edit" style="margin-top: 16px">用户编辑</a-button>-->
-          <a-button @click="handleAddUserRole" type="primary" icon="plus" style="margin-top: 16px">已有用户</a-button>
+          <a-button @click="handleAddUserRole" v-has="'role:addUserExistingRole'" type="primary" icon="plus" style="margin-top: 16px">已有用户</a-button>
 
           <a-dropdown v-if="selectedRowKeys2.length > 0">
             <a-menu slot="overlay">
-              <a-menu-item key="1" @click="batchDel2">
+              <a-menu-item key="1" @click="batchDel2" v-has="'role:deleteBatchExistingRoleUser'">
                 <a-icon type="delete"/>
                 删除
               </a-menu-item>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/SysAnnouncementList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/SysAnnouncementList.vue
index 5273439..7e9a75e 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/SysAnnouncementList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/SysAnnouncementList.vue
@@ -30,13 +30,13 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button v-has="'announcement:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('系统通告')">导出</a-button>
 <!--      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
 <!--        <a-button type="primary" icon="import">导入</a-button>-->
 <!--      </a-upload>-->
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'announcement:deleteBatch'">
           <a-menu-item key="1" @click="batchDel">
             <a-icon type="delete"/>
             删除
@@ -68,13 +68,13 @@
         @change="handleTableChange">
 
         <span slot="action" slot-scope="text, record">
-          <a  v-if="record.sendStatus == 0" @click="handleEdit(record)">编辑</a>
+          <a  v-has="'announcement:edit'"  v-if="record.sendStatus == 0" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" v-if="record.sendStatus == 0"/>
           <a-dropdown>
             <a class="ant-dropdown-link">更多 <a-icon type="down"/></a>
             <a-menu slot="overlay">
-              <a-menu-item v-if="record.sendStatus != 1">
+              <a-menu-item v-if="record.sendStatus != 1" v-has="'announcement:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/UserList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/UserList.vue
index da80c25..7cd6bc3 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/UserList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/UserList.vue
@@ -65,7 +65,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator" style="border-top: 5px">
-      <a-button @click="handleAdd" type="primary" icon="plus" >添加用户</a-button>
+      <a-button v-has="'user:add'" @click="handleAdd" type="primary" icon="plus" >添加用户</a-button>
       <a-button type="primary" icon="download"  @click="handleExportXls('用户信息')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -75,15 +75,15 @@
       <a-dropdown v-if="selectedRowKeys.length > 0">
         <a-menu slot="overlay" @click="handleMenuClick">
           <a-menu-item key="1">
-            <a-icon type="delete" @click="batchDel"/>
+            <a-icon type="delete" v-has="'user:deleteBatch'" @click="batchDel"/>
             删除
           </a-menu-item>
           <a-menu-item key="2">
-            <a-icon type="lock" @click="batchFrozen('2')"/>
+            <a-icon type="lock" v-has="'user:frozenBatch'" @click="batchFrozen('2')"/>
             冻结
           </a-menu-item>
           <a-menu-item key="3">
-            <a-icon type="unlock" @click="batchFrozen('1')"/>
+            <a-icon v-has="'user:thawBatch'" type="unlock" @click="batchFrozen('1')"/>
             解冻
           </a-menu-item>
         </a-menu>
@@ -121,7 +121,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)" >编辑</a>
+          <a v-has="'user:edit'" @click="handleEdit(record)" >编辑</a>
 
           <a-divider type="vertical" />
 
@@ -138,7 +138,7 @@
                 <a href="javascript:;" @click="handleChangePassword(record.username)">密码</a>
               </a-menu-item>
 
-              <a-menu-item>
+              <a-menu-item v-has="'user:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
@@ -146,13 +146,13 @@
 
               <a-menu-item v-if="record.status==1">
                 <a-popconfirm title="确定冻结吗?" @confirm="() => handleFrozen(record.id,2,record.username)">
-                  <a>冻结</a>
+                  <a v-has="'user:frozen'">冻结</a>
                 </a-popconfirm>
               </a-menu-item>
 
               <a-menu-item v-if="record.status==2">
                 <a-popconfirm title="确定解冻吗?" @confirm="() => handleFrozen(record.id,1,record.username)">
-                  <a>解冻</a>
+                  <a v-has="'user:thaw'">解冻</a>
                 </a-popconfirm>
               </a-menu-item>
 
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/AddressList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/AddressList.vue
index 3156cd6..5718f89 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/AddressList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/AddressList.vue
@@ -26,7 +26,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button @click="handleAdd" v-has="'address:add'" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('接口地址')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -34,7 +34,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'address:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -83,7 +83,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'address:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -93,7 +93,7 @@
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
               <a-menu-item>
-                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
+                <a-popconfirm title="确定删除吗?" v-has="'address:delete'" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
               </a-menu-item>
@@ -186,7 +186,7 @@
           deleteBatch: "/config/address/deleteBatch",
           exportXlsUrl: "/config/address/exportXls",
           importExcelUrl: "config/address/importExcel",
-          
+
         },
         dictOptions:{},
         superFieldList:[],
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/BomDetailList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/BomDetailList.vue
index cc3c20f..8e51b96 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/BomDetailList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/BomDetailList.vue
@@ -2,7 +2,7 @@
   <a-card :bordered="false" :class="'cust-erp-sub-tab'">
     <!-- 操作按钮区域 -->
     <div class="table-operator" v-if="mainId">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button @click="handleAdd" v-has="'bomDetail:add'" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('bom子表')">导出</a-button>
       <a-upload
         name="file"
@@ -14,8 +14,8 @@
           <a-button type="primary" icon="import">导入</a-button>
       </a-upload>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
-          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
+        <a-menu slot="overlay" v-has="'bomDetail:deleteBatch'" >
+          <a-menu-item  key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
       </a-dropdown>
@@ -62,10 +62,10 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'bomDetail:edit'" @click="handleEdit(record)">编辑</a>
           <a-divider type="vertical" />
-          <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
-            <a>删除</a>
+          <a-popconfirm title="确定删除吗?"  @confirm="() => handleDelete(record.id)">
+            <a v-has="'bomDetail:delete'">删除</a>
           </a-popconfirm>
         </span>
 
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/BomHeaderList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/BomHeaderList.vue
index e87f91e..e0f55d7 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/BomHeaderList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/BomHeaderList.vue
@@ -28,10 +28,10 @@
       </a-form>
     </div>
     <!-- 查询区域-END -->
-    
+
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button @click="handleAdd" v-has="'bomHeader:add'" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('bom主表')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -83,14 +83,14 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'bomHeader:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
             <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
             <a-menu slot="overlay">
               <a-menu-item>
-                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
+                <a-popconfirm v-has="'bomHeader:delete'" title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
               </a-menu-item>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/CarrierList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/CarrierList.vue
index a324de7..5665e94 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/CarrierList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/CarrierList.vue
@@ -11,7 +11,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button @click="handleAdd" v-has="'carrier:add'" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('承运商管理')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -19,7 +19,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'carrier:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -68,7 +68,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'carrier:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -77,7 +77,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'carrier:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
@@ -177,7 +177,7 @@
           deleteBatch: "/config/carrier/deleteBatch",
           exportXlsUrl: "/config/carrier/exportXls",
           importExcelUrl: "config/carrier/importExcel",
-          
+
         },
         dictOptions:{},
         superFieldList:[],
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/CompanyList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/CompanyList.vue
index f2ce012..e6064e6 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/CompanyList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/CompanyList.vue
@@ -31,7 +31,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button @click="handleAdd" v-has="'company:add'" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('货主')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -39,8 +39,8 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
-          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
+        <a-menu slot="overlay" v-has="'company:deleteBatch'">
+          <a-menu-item key="1" @click="batchDel"><a-icon type="deleteBatch"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
       </a-dropdown>
@@ -88,8 +88,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
-
+          <a v-has="'company:edit'" @click="handleEdit(record)">编辑</a>
           <a-divider type="vertical" />
           <a-dropdown>
             <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
@@ -97,7 +96,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'company:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ContainerCapacityList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ContainerCapacityList.vue
index c249f9f..6fed0a4 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ContainerCapacityList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ContainerCapacityList.vue
@@ -38,7 +38,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button @click="handleAdd" v-has="'containerCapacity:add'" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('容器容量管理')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -46,7 +46,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'containerCapacity:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -95,7 +95,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'containerCapacity:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -104,7 +104,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'containerCapacity:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ContainerList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ContainerList.vue
index 34a63b0..b7412c0 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ContainerList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ContainerList.vue
@@ -51,7 +51,7 @@
     <!-- 操作按钮区域 -->
     <div class="table-operator">
       <a-button @click="batchPrint()" type="primary">打印</a-button>
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button @click="handleAdd" v-has="'container:add'" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('容器管理')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -59,7 +59,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'container:deleteBatch'" >
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -120,7 +120,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="editForm(record)">编辑</a>
+          <a v-has="'container:add'"  @click="editForm(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -129,7 +129,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'container:delete'" >
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ContainerTypeList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ContainerTypeList.vue
index a84510a..616b428 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ContainerTypeList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ContainerTypeList.vue
@@ -31,7 +31,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button @click="handleAdd" v-has="'containerType:add'"  type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('容器类型')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -39,7 +39,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'containerType:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -88,7 +88,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'containerType:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -97,7 +97,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'containerType:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/CustomerList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/CustomerList.vue
index 1e4e44e..744c972 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/CustomerList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/CustomerList.vue
@@ -11,7 +11,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button @click="handleAdd" v-has="'customer:add'" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('客户管理')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -19,7 +19,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'customer:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -68,7 +68,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'customer:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -77,7 +77,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'customer:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
@@ -192,7 +192,7 @@
           deleteBatch: "/config/customer/deleteBatch",
           exportXlsUrl: "/config/customer/exportXls",
           importExcelUrl: "config/customer/importExcel",
-          
+
         },
         dictOptions:{},
         superFieldList:[],
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/CycleCountPreferenceList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/CycleCountPreferenceList.vue
index aff06a0..0e2c324 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/CycleCountPreferenceList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/CycleCountPreferenceList.vue
@@ -11,7 +11,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button @click="handleAdd" v-has="'cycleCountPreference:add'" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('盘点首选项')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -19,7 +19,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'cycleCountPreference:deleteBatch'" >
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -68,7 +68,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'cycleCountPreference:edit'"  @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -77,7 +77,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'cycleCountPreference:delete'" >
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
@@ -192,7 +192,7 @@
           deleteBatch: "/config/cycleCountPreference/deleteBatch",
           exportXlsUrl: "/config/cycleCountPreference/exportXls",
           importExcelUrl: "config/cycleCountPreference/importExcel",
-          
+
         },
         dictOptions:{},
         superFieldList:[],
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/LocationHighList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/LocationHighList.vue
index 8f43fe0..4d44985 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/LocationHighList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/LocationHighList.vue
@@ -31,7 +31,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button @click="handleAdd" v-has="'locationHigh:add'"  type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('库位高度管理')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -39,7 +39,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'locationHigh:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -94,7 +94,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'locationHigh:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -103,7 +103,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'locationHigh:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/LocationList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/LocationList.vue
index 041772d..9917339 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/LocationList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/LocationList.vue
@@ -100,8 +100,8 @@
     <!-- 操作按钮区域 -->
     <div class="table-operator">
       <a-button @click="batchPrint()" type="primary" >打印</a-button>
-      <a-button @click="batchAdd()" type="primary" icon="plus">批量新增</a-button>
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button @click="batchAdd()" v-has="'location:batchAdd'" type="primary" icon="plus">批量新增</a-button>
+      <a-button v-has="'location:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('库位管理')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -109,7 +109,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'location:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -170,7 +170,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'location:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -179,7 +179,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'location:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/LocationTypeList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/LocationTypeList.vue
index f711328..7faa9c4 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/LocationTypeList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/LocationTypeList.vue
@@ -31,7 +31,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button v-has="'locationType:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('库位类型')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -39,7 +39,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'locationType:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -88,7 +88,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'locationType:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -97,7 +97,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'locationType:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialAreaList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialAreaList.vue
index 67b6e85..39ca920 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialAreaList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialAreaList.vue
@@ -11,7 +11,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button @click="handleAdd" v-has="'materialArea:add'" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('物料分区')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -19,7 +19,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'materialArea:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -68,7 +68,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'materialArea:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -77,7 +77,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'materialArea:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialList.vue
index 553aa9e..fe5e328 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialList.vue
@@ -39,7 +39,7 @@
     <!-- 操作按钮区域 -->
     <div class="table-operator">
       <a-button @click="batchPrint()" type="primary" >打印</a-button>
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button v-has="'material:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('物料管理')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -47,7 +47,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'material:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -96,7 +96,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'material:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -105,7 +105,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'material:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialMultipleList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialMultipleList.vue
index be984ba..30b068d 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialMultipleList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialMultipleList.vue
@@ -11,7 +11,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button v-has="'materialMultiple:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('物料单位换算')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -19,7 +19,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'materialMultiple:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -68,7 +68,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'materialMultiple:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -77,7 +77,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'materialMultiple:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialTypeList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialTypeList.vue
index 919322a..90e1108 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialTypeList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialTypeList.vue
@@ -31,7 +31,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button v-has="'materialType:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('物料类别')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -39,7 +39,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'materialType:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -88,7 +88,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'materialType:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -97,7 +97,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'materialType:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialUnitList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialUnitList.vue
index 5a25c3e..5b9b72f 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialUnitList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialUnitList.vue
@@ -38,7 +38,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button v-has="'materialUnit:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('物料单位')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -46,7 +46,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'materialUnit:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -95,7 +95,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'materialUnit:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -104,7 +104,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'materialUnit:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialWarningList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialWarningList.vue
index a707913..20b0b93 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialWarningList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/MaterialWarningList.vue
@@ -31,7 +31,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button v-has="'materialWarning:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('物料预警')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -39,7 +39,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'materialWarning:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -88,7 +88,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'materialWarning:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -97,7 +97,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'materialWarning:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ParameterConfigurationList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ParameterConfigurationList.vue
index 67a4687..d5002cf 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ParameterConfigurationList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ParameterConfigurationList.vue
@@ -38,7 +38,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button @click="handleAdd" v-has="'ParameterConfiguration:add'" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('参数配置')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -46,7 +46,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'ParameterConfiguration:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -95,7 +95,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'ParameterConfiguration:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -104,7 +104,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'ParameterConfiguration:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
@@ -203,7 +203,7 @@
           deleteBatch: "/config/parameterConfiguration/deleteBatch",
           exportXlsUrl: "/config/parameterConfiguration/exportXls",
           importExcelUrl: "config/parameterConfiguration/importExcel",
-          
+
         },
         dictOptions:{},
         superFieldList:[],
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/PortList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/PortList.vue
index 704276b..8227cb3 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/PortList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/PortList.vue
@@ -38,7 +38,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button v-has="'port:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('出入口')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -46,7 +46,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'port:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -101,7 +101,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'port:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -110,7 +110,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'port:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ReceiptTypeList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ReceiptTypeList.vue
index e62c407..9020e09 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ReceiptTypeList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ReceiptTypeList.vue
@@ -31,7 +31,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button v-has="'receiptType:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('入库单类型')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -39,7 +39,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'receiptType:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -88,7 +88,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'receiptType:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -97,7 +97,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'receiptType:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ShipmentTypeList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ShipmentTypeList.vue
index aadcc04..4ef9a27 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ShipmentTypeList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ShipmentTypeList.vue
@@ -31,7 +31,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button @click="handleAdd" v-has="'shipmentType:add'" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('出库单类型')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -39,7 +39,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'shipmentType:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -88,7 +88,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'shipmentType:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -97,7 +97,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'shipmentType:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/SupplierList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/SupplierList.vue
index 64bae2b..c2f23d0 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/SupplierList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/SupplierList.vue
@@ -38,7 +38,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button v-has="'supplier:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('供应商管理')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -46,7 +46,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'supplier:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -95,7 +95,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'supplier:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -104,7 +104,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'supplier:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
@@ -219,7 +219,7 @@
           deleteBatch: "/config/supplier/deleteBatch",
           exportXlsUrl: "/config/supplier/exportXls",
           importExcelUrl: "config/supplier/importExcel",
-          
+
         },
         dictOptions:{},
         superFieldList:[],
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/SysUserWarehouseList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/SysUserWarehouseList.vue
index afe26f7..7d445ea 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/SysUserWarehouseList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/SysUserWarehouseList.vue
@@ -11,7 +11,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button v-has="'sysUserWarehouse:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('用户仓库关系表')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -19,7 +19,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'sysUserWarehouse:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -68,7 +68,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'sysUserWarehouse:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -77,7 +77,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'sysUserWarehouse:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
@@ -151,7 +151,7 @@
           deleteBatch: "/config/sysUserWarehouse/deleteBatch",
           exportXlsUrl: "/config/sysUserWarehouse/exportXls",
           importExcelUrl: "config/sysUserWarehouse/importExcel",
-          
+
         },
         dictOptions:{},
         superFieldList:[],
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/WarehouseList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/WarehouseList.vue
index 1df409d..8944da5 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/WarehouseList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/WarehouseList.vue
@@ -95,7 +95,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'warehouse:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -104,7 +104,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'warehouse:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ZoneList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ZoneList.vue
index 2406546..f4f313b 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ZoneList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/config/ZoneList.vue
@@ -31,7 +31,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button v-has="'zone:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('库区管理')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -39,7 +39,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'zone:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -94,7 +94,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'zone:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -103,7 +103,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'zone:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/inventory/InventoryDetailList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/inventory/InventoryDetailList.vue
index ceda37d..a114924 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/inventory/InventoryDetailList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/inventory/InventoryDetailList.vue
@@ -2,7 +2,7 @@
   <a-card :bordered="false" :class="'cust-erp-sub-tab'">
     <!-- 操作按钮区域 -->
     <div class="table-operator" v-if="mainId">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button v-has="'inventoryDetail:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('库存详情')">导出</a-button>
       <a-upload
         name="file"
@@ -14,7 +14,7 @@
           <a-button type="primary" icon="import">导入</a-button>
       </a-upload>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'inventoryDetail:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -68,10 +68,11 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'inventoryDetail:edit'" @click="handleEdit(record)">编辑</a>
           <a-divider type="vertical" />
+
           <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
-            <a>删除</a>
+            <a v-has="'inventoryDetail:add'" >删除</a>
           </a-popconfirm>
         </span>
 
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/inventory/InventoryHeaderList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/inventory/InventoryHeaderList.vue
index 92fb46e..744e954 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/inventory/InventoryHeaderList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/inventory/InventoryHeaderList.vue
@@ -55,7 +55,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button v-has="'inventoryHeader:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('库存表')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -107,12 +107,12 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'inventoryHeader:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
             <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
-            <a-menu slot="overlay">
+            <a-menu slot="overlay" v-has="'inventoryHeader:delete'">
               <a-menu-item>
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/inventory/InventoryTransactionList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/inventory/InventoryTransactionList.vue
index 801a4ef..03f41b6 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/inventory/InventoryTransactionList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/inventory/InventoryTransactionList.vue
@@ -92,7 +92,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button @click="handleAdd" v-has="'inventoryTransaction:add'" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('库存交易记录')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -100,7 +100,7 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'inventoryTransaction:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -155,7 +155,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'inventoryTransaction:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -164,7 +164,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'inventoryTransaction:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/monitor/ApiLogList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/monitor/ApiLogList.vue
index 85a6779..5c4b5c6 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/monitor/ApiLogList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/monitor/ApiLogList.vue
@@ -70,7 +70,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button v-has="'apiLog:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('接口日志')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -78,8 +78,8 @@
       <!-- 高级查询区域 -->
       <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
-          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
+        <a-menu slot="overlay" v-has="'apiLog:deleteBatch'">
+          <a-menu-item  key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
       </a-dropdown>
@@ -127,7 +127,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'apiLog:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
@@ -136,7 +136,7 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'apiLog:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/monitor/modules/ApiLogForm.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/monitor/modules/ApiLogForm.vue
index 77fcf16..b58a726 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/monitor/modules/ApiLogForm.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/monitor/modules/ApiLogForm.vue
@@ -171,7 +171,7 @@
               that.confirmLoading = false;
             })
           }
-         
+
         })
       },
     }
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptContainerDetailList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptContainerDetailList.vue
index 3d0b726..49a6f87 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptContainerDetailList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptContainerDetailList.vue
@@ -56,7 +56,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator" v-if="mainId">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button @click="handleAdd" v-has="'receiptContainerDetail:add'" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('入库组盘详情')">导出</a-button>
       <a-upload
         name="file"
@@ -68,7 +68,7 @@
           <a-button type="primary" icon="import">导入</a-button>
       </a-upload>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'receiptContainerDetail:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -121,10 +121,10 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'receiptContainerDetail:edit'" @click="handleEdit(record)">编辑</a>
           <a-divider type="vertical" />
           <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
-            <a>删除</a>
+            <a v-has="'receiptContainerDetail:delete'">删除</a>
           </a-popconfirm>
         </span>
 
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptContainerHeaderList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptContainerHeaderList.vue
index 91cedc6..b51b4bd 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptContainerHeaderList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptContainerHeaderList.vue
@@ -60,7 +60,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button v-has="'receiptContainerHeader:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('入库组盘')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -112,7 +112,7 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'receiptContainerHeader:edit'" @click="handleEdit(record)">编辑</a>
           <a-divider type="vertical" />
           <a v-if="record.status == 0 && record.taskType == 200" @click="selectPort(record)" >生成任务</a>
           <a v-else-if="record.status == 0" @click="createTask(record)">生成任务</a>
@@ -120,7 +120,7 @@
           <a-dropdown>
             <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
             <a-menu slot="overlay">
-              <a-menu-item>
+              <a-menu-item v-has="'receiptContainerHeader:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptDetailList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptDetailList.vue
index 70a334b..8b66463 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptDetailList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptDetailList.vue
@@ -2,7 +2,7 @@
   <a-card :bordered="false" :class="'cust-erp-sub-tab'">
     <!-- 操作按钮区域 -->
     <div class="table-operator" v-if="mainId">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button v-has="'receiptDetail:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('入库单详情')">导出</a-button>
       <a-upload
         name="file"
@@ -14,7 +14,7 @@
           <a-button type="primary" icon="import">导入</a-button>
       </a-upload>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'receiptDetail:deleteBatch'" >
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -62,10 +62,10 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="edit(record)">编辑</a>
+          <a v-has="'receiptDetail:edit'"  @click="edit(record)">编辑</a>
           <a-divider type="vertical" />
           <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
-            <a>删除</a>
+            <a v-has="'receiptDetail:delete'" >删除</a>
           </a-popconfirm>
         </span>
 
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue
index 9e0ee0d..315b42d 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue
@@ -91,7 +91,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button v-has="'receiptHeader:add'"  @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('入库表主表')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -161,14 +161,14 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'receiptHeader:edit'" @click="handleEdit(record)">编辑</a>
           <a-divider type="vertical" />
           <a v-if="record.lastStatus < 800" @click="receive(record)">组盘</a>
           <a-divider type="vertical" />
           <a-dropdown>
             <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
             <a-menu slot="overlay">
-              <a-menu-item>
+              <a-menu-item v-has="'receiptHeader:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentContainerDetailList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentContainerDetailList.vue
index 63e921a..66258e0 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentContainerDetailList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentContainerDetailList.vue
@@ -56,7 +56,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator" v-if="mainId">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button v-has="'shipmentContainerDetail:add'"  @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('出库组盘详情')">导出</a-button>
       <a-upload
         name="file"
@@ -68,7 +68,7 @@
           <a-button type="primary" icon="import">导入</a-button>
       </a-upload>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'shipmentContainerDetail:deleteBatch'" >
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -122,10 +122,10 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'shipmentContainerDetail:edit'"  @click="handleEdit(record)">编辑</a>
           <a-divider type="vertical" />
           <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
-            <a>删除</a>
+            <a v-has="'shipmentContainerDetail:delete'" >删除</a>
           </a-popconfirm>
         </span>
 
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentContainerHeaderList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentContainerHeaderList.vue
index c5cdac3..db8d255 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentContainerHeaderList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentContainerHeaderList.vue
@@ -65,7 +65,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button @click="handleAdd" v-has="'shipmentContainerHeader:add'"  type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('出库组盘')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -117,13 +117,13 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'shipmentContainerHeader:edit'"  @click="handleEdit(record)">编辑</a>
           <a-divider type="vertical" />
           <a v-if="record.status == 0" @click="selectPort(record)">生成任务</a>
           <a-divider type="vertical" />
           <a-dropdown>
             <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
-            <a-menu slot="overlay">
+            <a-menu slot="overlay" v-has="'shipmentContainerHeader:delete'" >
               <a-menu-item>
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentDetailList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentDetailList.vue
index 50cc525..9c224cf 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentDetailList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentDetailList.vue
@@ -2,7 +2,7 @@
   <a-card :bordered="false" :class="'cust-erp-sub-tab'">
     <!-- 操作按钮区域 -->
     <div class="table-operator" v-if="mainId">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button @click="handleAdd" v-has="'shipmentDetail:add'" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('出库单详情')">导出</a-button>
       <a-upload
         name="file"
@@ -14,7 +14,7 @@
           <a-button type="primary" icon="import">导入</a-button>
       </a-upload>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'shipmentDetail:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -64,10 +64,10 @@
         <span slot="action" slot-scope="text, record">
           <a @click="combine(record)">配盘</a>
           <a-divider type="vertical" />
-          <a @click="edit(record)">编辑</a>
+          <a v-has="'shipmentDetail:edit'" @click="edit(record)">编辑</a>
           <a-divider type="vertical" />
           <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
-            <a>删除</a>
+         <a v-has="'shipmentDetail:delete'">删除</a>
           </a-popconfirm>
         </span>
 
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderList.vue
index 01bf2d7..ab10c61 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/shipment/ShipmentHeaderList.vue
@@ -96,7 +96,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button v-has="'shipmentHeader:add'" @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('出库单')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
@@ -169,12 +169,12 @@
           <a-divider type="vertical" />
           <a v-if="record.lastStatus < 800" @click="autoShipmentCombine(record)">自动配盘</a>
           <a-divider type="vertical" />
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'shipmentHeader:edit'" @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
             <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
-            <a-menu slot="overlay">
+            <a-menu slot="overlay" v-has="'shipmentHeader:delete'">
               <a-menu-item>
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/task/CircleTaskHeaderList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/task/CircleTaskHeaderList.vue
index adaf200..d9b141d 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/task/CircleTaskHeaderList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/task/CircleTaskHeaderList.vue
@@ -93,7 +93,7 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="createCheckOut()" type="primary">出库查看</a-button>
+      <a-button v-has="'taskHeader:checkOut'" @click="createCheckOut()" type="primary">出库查看</a-button>
 <!--      <a-button type="primary" icon="download" @click="handleExportXls('任务表')">导出</a-button>-->
 <!--      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
 <!--        <a-button type="primary" icon="import">导入</a-button>-->
@@ -151,17 +151,17 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a v-if="record.status == 1" @click="executeTask(record)">执行</a>
+          <a v-if="record.status == 1" v-has="'taskHeader:executeTask'" @click="executeTask(record)">执行</a>
           <a-divider type="vertical" />
-          <a v-if="record.status < 100" @click="completeTask(record)">完成</a>
+          <a v-if="record.status < 100" v-has="'taskHeader:completeTask'" @click="completeTask(record)">完成</a>
           <a-divider type="vertical" />
           <a-dropdown>
             <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
             <a-menu slot="overlay">
-               <a-menu-item>
+               <a-menu-item v-has="'taskHeader:edit'">
                 <a @click="handleEdit(record)">编辑</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'taskHeader:delete'" >
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/task/ReceiptTaskHeaderList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/task/ReceiptTaskHeaderList.vue
index 25acdff..830e119 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/task/ReceiptTaskHeaderList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/task/ReceiptTaskHeaderList.vue
@@ -93,8 +93,8 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="createEmptyIn()" type="primary">空托入库</a-button>
-      <a-button @click="createManyEmptyIn()" type="primary">空托组入库</a-button>
+      <a-button @click="createEmptyIn()" v-has="'taskHeader:emptyIn'" type="primary">空托入库</a-button>
+      <a-button @click="createManyEmptyIn()" v-has="'taskHeader:manyEmptyIn'" type="primary">空托组入库</a-button>
     </div>
 
     <!-- table区域-begin -->
@@ -146,19 +146,19 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a v-if="record.status == 1" @click="executeTask(record)">执行</a>
+          <a v-if="record.status == 1" v-has="'taskHeader:executeTask'" @click="executeTask(record)">执行</a>
           <a-divider type="vertical" />
-           <a v-if="record.status < 100" @click="cancelTask(record)">取消</a>
+           <a v-if="record.status < 100" v-has="'taskHeader:cancelTask'" @click="cancelTask(record)">取消</a>
           <a-divider type="vertical" />
-          <a v-if="record.status < 100" @click="completeTask(record)">完成</a>
+          <a v-if="record.status < 100" v-has="'taskHeader:completeTask'" @click="completeTask(record)">完成</a>
           <a-divider type="vertical" />
           <a-dropdown>
             <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
             <a-menu slot="overlay">
-               <a-menu-item>
+               <a-menu-item v-has="'taskHeader:edit'">
                 <a @click="handleEdit(record)">编辑</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'taskHeader:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue
index 2ffddf2..e97a7c3 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue
@@ -93,8 +93,8 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="createEmptyOut()" type="primary" >空托出库</a-button>
-      <a-button @click="createManyEmptyOut()" type="primary" >空托组出库</a-button>
+      <a-button @click="createEmptyOut()" v-has="'taskHeader:emptyOut'" type="primary" >空托出库</a-button>
+      <a-button @click="createManyEmptyOut()" v-has="'taskHeader:manyEmptyOut'" type="primary" >空托组出库</a-button>
     </div>
 
     <!-- table区域-begin -->
@@ -146,19 +146,19 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a v-if="record.status == 1" @click="executeTask(record)">执行</a>
+          <a v-if="record.status == 1" v-has="'taskHeader:executeTask'" @click="executeTask(record)">执行</a>
           <a-divider type="vertical" />
-          <a v-if="record.status < 100" @click="cancelTask(record)">取消</a>
+          <a v-if="record.status < 100" v-has="'taskHeader:executeTask'" @click="cancelTask(record)">取消</a>
           <a-divider type="vertical" />
-          <a v-if="record.status < 100" @click="completeTask(record)">完成</a>
+          <a v-if="record.status < 100" v-has="'taskHeader:executeTask'" @click="completeTask(record)">完成</a>
           <a-divider type="vertical" />
           <a-dropdown>
             <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
             <a-menu slot="overlay">
-               <a-menu-item>
+               <a-menu-item v-has="'taskHeader:edit'">
                 <a @click="handleEdit(record)">编辑</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'taskHeader:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/task/TaskDetailList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/task/TaskDetailList.vue
index 7a4d56f..83b9937 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/task/TaskDetailList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/task/TaskDetailList.vue
@@ -2,7 +2,7 @@
   <a-card :bordered="false" :class="'cust-erp-sub-tab'">
     <!-- 操作按钮区域 -->
     <div class="table-operator" v-if="mainId">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <a-button @click="handleAdd" v-has="'taskDetail:add'" type="primary" icon="plus">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('任务详情')">导出</a-button>
       <a-upload
         name="file"
@@ -14,7 +14,7 @@
           <a-button type="primary" icon="import">导入</a-button>
       </a-upload>
       <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
+        <a-menu slot="overlay" v-has="'taskDetail:deleteBatch'">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
         </a-menu>
         <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
@@ -62,10 +62,10 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
+          <a v-has="'taskDetail:edit'" @click="handleEdit(record)">编辑</a>
           <a-divider type="vertical" />
           <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
-            <a>删除</a>
+            <a v-has="'taskDetail:delete'">删除</a>
           </a-popconfirm>
         </span>
 
diff --git a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/task/TransferTaskHeaderList.vue b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/task/TransferTaskHeaderList.vue
index 09bd2da..c1778a8 100644
--- a/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/task/TransferTaskHeaderList.vue
+++ b/jeecg-boot-master/ant-design-vue-jeecg/src/views/system/task/TransferTaskHeaderList.vue
@@ -93,8 +93,8 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator">
-      <a-button @click="createTransfer()" type="primary">移库任务</a-button>
-      <a-button @click="createOverStation()" type="primary">跨站任务</a-button>
+      <a-button @click="createTransfer()" v-has="'taskHeader:transfer'" type="primary">移库任务</a-button>
+      <a-button @click="createOverStation()" v-has="'taskHeader:overStation'" type="primary">跨站任务</a-button>
 <!--      <a-button type="primary" icon="download" @click="handleExportXls('任务表')">导出</a-button>-->
 <!--      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
 <!--        <a-button type="primary" icon="import">导入</a-button>-->
@@ -152,17 +152,17 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
-          <a v-if="record.status == 1" @click="executeTask(record)">执行</a>
+          <a v-if="record.status == 1" v-has="'taskHeader:executeTask'" @click="executeTask(record)">执行</a>
           <a-divider type="vertical" />
-          <a v-if="record.status < 100" @click="completeTask(record)">完成</a>
+          <a v-if="record.status < 100" v-has="'taskHeader:completeTask'" @click="completeTask(record)">完成</a>
           <a-divider type="vertical" />
           <a-dropdown>
             <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
             <a-menu slot="overlay">
-               <a-menu-item>
+               <a-menu-item v-has="'taskHeader:edit'">
                 <a @click="handleEdit(record)">编辑</a>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-has="'taskHeader:delete'">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                 </a-popconfirm>
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java
index 0891101..8a9680c 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java
@@ -9,6 +9,7 @@ import com.jeecg.dingtalk.api.core.response.Response;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.constant.CommonSendStatus;
@@ -121,6 +122,7 @@ public class SysAnnouncementController {
 	 * @return
 	 */
 	@RequestMapping(value = "/add", method = RequestMethod.POST)
+	@RequiresPermissions("Announcement:add")
 	public Result<SysAnnouncement> add(@RequestBody SysAnnouncement sysAnnouncement) {
 		Result<SysAnnouncement> result = new Result<SysAnnouncement>();
 		try {
@@ -145,6 +147,7 @@ public class SysAnnouncementController {
 	 * @return
 	 */
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	@RequiresPermissions("Announcement:edit")
 	public Result<SysAnnouncement> eidt(@RequestBody SysAnnouncement sysAnnouncement) {
 		Result<SysAnnouncement> result = new Result<SysAnnouncement>();
 		SysAnnouncement sysAnnouncementEntity = sysAnnouncementService.getById(sysAnnouncement.getId());
@@ -171,6 +174,7 @@ public class SysAnnouncementController {
 	 * @return
 	 */
 	@RequestMapping(value = "/delete", method = RequestMethod.DELETE)
+	@RequiresPermissions("Announcement:delete")
 	public Result<SysAnnouncement> delete(@RequestParam(name="id",required=true) String id) {
 		Result<SysAnnouncement> result = new Result<SysAnnouncement>();
 		SysAnnouncement sysAnnouncement = sysAnnouncementService.getById(id);
@@ -193,6 +197,7 @@ public class SysAnnouncementController {
 	 * @return
 	 */
 	@RequestMapping(value = "/deleteBatch", method = RequestMethod.DELETE)
+	@RequiresPermissions("Announcement:deleteBatch")
 	public Result<SysAnnouncement> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
 		Result<SysAnnouncement> result = new Result<SysAnnouncement>();
 		if(ids==null || "".equals(ids.trim())) {
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDictController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDictController.java
index 5e21130..edca33c 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDictController.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDictController.java
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.apache.shiro.authz.annotation.RequiresRoles;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CacheConstant;
@@ -338,6 +339,7 @@ public class SysDictController {
 	 * @return
 	 */
 	//@RequiresRoles({"admin"})
+	@RequiresPermissions("dict:add")
 	@RequestMapping(value = "/add", method = RequestMethod.POST)
 	public Result<SysDict> add(@RequestBody SysDict sysDict) {
 		Result<SysDict> result = new Result<SysDict>();
@@ -359,6 +361,7 @@ public class SysDictController {
 	 * @return
 	 */
 	//@RequiresRoles({"admin"})
+	@RequiresPermissions("dict:edit")
 	@RequestMapping(value = "/edit", method = { RequestMethod.PUT,RequestMethod.POST })
 	public Result<SysDict> edit(@RequestBody SysDict sysDict) {
 		Result<SysDict> result = new Result<SysDict>();
@@ -381,6 +384,7 @@ public class SysDictController {
 	 * @return
 	 */
 	//@RequiresRoles({"admin"})
+	@RequiresPermissions("dict:delete")
 	@RequestMapping(value = "/delete", method = RequestMethod.DELETE)
 	@CacheEvict(value={CacheConstant.SYS_DICT_CACHE, CacheConstant.SYS_ENABLE_DICT_CACHE}, allEntries=true)
 	public Result<SysDict> delete(@RequestParam(name="id",required=true) String id) {
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java
index e4d5b4e..1e6caf1 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.apache.shiro.authz.annotation.RequiresRoles;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CommonConstant;
@@ -178,7 +179,7 @@ public class SysPermissionController {
 
 //	/**
 //	 * 查询用户拥有的菜单权限和按钮权限(根据用户账号)
-//	 * 
+//	 *
 //	 * @return
 //	 */
 //	@RequestMapping(value = "/queryByUser", method = RequestMethod.GET)
@@ -254,7 +255,7 @@ public class SysPermissionController {
 			json.put("sysSafeMode", jeeccgBaseConfig.getSafeMode());
 			result.setResult(json);
 		} catch (Exception e) {
-			result.error500("查询失败:" + e.getMessage());  
+			result.error500("查询失败:" + e.getMessage());
 			log.error(e.getMessage(), e);
 		}
 		return result;
@@ -313,6 +314,7 @@ public class SysPermissionController {
 	 */
 	//@RequiresRoles({ "admin" })
 	@RequestMapping(value = "/add", method = RequestMethod.POST)
+	@RequiresPermissions("permission:add")
 	public Result<SysPermission> add(@RequestBody SysPermission permission) {
 		Result<SysPermission> result = new Result<SysPermission>();
 		try {
@@ -333,6 +335,7 @@ public class SysPermissionController {
 	 */
 	//@RequiresRoles({ "admin" })
 	@RequestMapping(value = "/edit", method = { RequestMethod.PUT, RequestMethod.POST })
+	@RequiresPermissions("permission:edit")
 	public Result<SysPermission> edit(@RequestBody SysPermission permission) {
 		Result<SysPermission> result = new Result<>();
 		try {
@@ -353,6 +356,7 @@ public class SysPermissionController {
 	 */
 	//@RequiresRoles({ "admin" })
 	@RequestMapping(value = "/delete", method = RequestMethod.DELETE)
+	@RequiresPermissions("permission:delete")
 	public Result<SysPermission> delete(@RequestParam(name = "id", required = true) String id) {
 		Result<SysPermission> result = new Result<>();
 		try {
@@ -372,6 +376,7 @@ public class SysPermissionController {
 	 */
 	//@RequiresRoles({ "admin" })
 	@RequestMapping(value = "/deleteBatch", method = RequestMethod.DELETE)
+	@RequiresPermissions("permission:deleteBatch")
 	public Result<SysPermission> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
 		Result<SysPermission> result = new Result<>();
 		try {
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/address/controller/AddressController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/address/controller/AddressController.java
index 0c3605b..a0fd800 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/address/controller/AddressController.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/address/controller/AddressController.java
@@ -9,6 +9,8 @@ import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.util.JwtUtil;
@@ -83,6 +85,7 @@ public class AddressController extends JeecgController<Address, IAddressService>
 	@AutoLog(value = "接口地址-添加")
 	@ApiOperation(value="接口地址-添加", notes="接口地址-添加")
 	@PostMapping(value = "/add")
+	@RequiresPermissions("address:add")
 	public Result<String> add(@RequestBody Address address, HttpServletRequest req) {
 		String warehouseCode = JwtUtil.getWarehouseCodeByToken(req);
 		if(StringUtils.isNotEmpty(warehouseCode)) {
@@ -101,6 +104,7 @@ public class AddressController extends JeecgController<Address, IAddressService>
 	@AutoLog(value = "接口地址-编辑")
 	@ApiOperation(value="接口地址-编辑", notes="接口地址-编辑")
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	@RequiresPermissions("address:edit")
 	public Result<String> edit(@RequestBody Address address) {
 		addressService.updateById(address);
 		return Result.OK("编辑成功!");
@@ -115,6 +119,7 @@ public class AddressController extends JeecgController<Address, IAddressService>
 	@AutoLog(value = "接口地址-通过id删除")
 	@ApiOperation(value="接口地址-通过id删除", notes="接口地址-通过id删除")
 	@DeleteMapping(value = "/delete")
+	@RequiresPermissions("address:delete")
 	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
 		addressService.removeById(id);
 		return Result.OK("删除成功!");
@@ -129,6 +134,7 @@ public class AddressController extends JeecgController<Address, IAddressService>
 	@AutoLog(value = "接口地址-批量删除")
 	@ApiOperation(value="接口地址-批量删除", notes="接口地址-批量删除")
 	@DeleteMapping(value = "/deleteBatch")
+	@RequiresPermissions("address:deleteBatch")
 	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
 		this.addressService.removeByIds(Arrays.asList(ids.split(",")));
 		return Result.OK("批量删除成功!");
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/bomHeader/controller/BomHeaderController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/bomHeader/controller/BomHeaderController.java
index 08204ed..c2e840a 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/bomHeader/controller/BomHeaderController.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/bomHeader/controller/BomHeaderController.java
@@ -190,6 +190,7 @@ public class BomHeaderController extends JeecgController<BomHeader, IBomHeaderSe
 	@AutoLog(value = "bom子表-添加")
 	@ApiOperation(value="bom子表-添加", notes="bom子表-添加")
 	@PostMapping(value = "/addBomDetail")
+	@RequiresPermissions("bomDetail:add")
 	public Result<String> addBomDetail(@RequestBody BomDetail bomDetail, HttpServletRequest req) {
 		String warehouseCode = JwtUtil.getWarehouseCodeByToken(req);
 		if(StringUtils.isNotEmpty(warehouseCode)) {
@@ -205,6 +206,7 @@ public class BomHeaderController extends JeecgController<BomHeader, IBomHeaderSe
 	 * @return
 	 */
 	@AutoLog(value = "bom子表-编辑")
+	@RequiresPermissions("bomDetail:edit")
 	@ApiOperation(value="bom子表-编辑", notes="bom子表-编辑")
 	@RequestMapping(value = "/editBomDetail", method = {RequestMethod.PUT,RequestMethod.POST})
 	public Result<String> editBomDetail(@RequestBody BomDetail bomDetail) {
@@ -219,6 +221,7 @@ public class BomHeaderController extends JeecgController<BomHeader, IBomHeaderSe
 	 */
 	@AutoLog(value = "bom子表-通过id删除")
 	@ApiOperation(value="bom子表-通过id删除", notes="bom子表-通过id删除")
+	@RequiresPermissions("bomDetail:delete")
 	@DeleteMapping(value = "/deleteBomDetail")
 	public Result<String> deleteBomDetail(@RequestParam(name="id",required=true) String id) {
 		bomDetailService.removeById(id);
@@ -232,6 +235,7 @@ public class BomHeaderController extends JeecgController<BomHeader, IBomHeaderSe
 	 */
 	@AutoLog(value = "bom子表-批量删除")
 	@ApiOperation(value="bom子表-批量删除", notes="bom子表-批量删除")
+	@RequiresPermissions("bomDetail:deleteBatch")
 	@DeleteMapping(value = "/deleteBatchBomDetail")
 	public Result<String> deleteBatchBomDetail(@RequestParam(name="ids",required=true) String ids) {
 	    this.bomDetailService.removeByIds(Arrays.asList(ids.split(",")));
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/cycleCountPreference/controller/CycleCountPreferenceController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/cycleCountPreference/controller/CycleCountPreferenceController.java
index 19a0cb4..0c4a250 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/cycleCountPreference/controller/CycleCountPreferenceController.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/cycleCountPreference/controller/CycleCountPreferenceController.java
@@ -9,6 +9,8 @@ import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.util.JwtUtil;
@@ -83,6 +85,7 @@ public class CycleCountPreferenceController extends JeecgController<CycleCountPr
 	@AutoLog(value = "盘点首选项-添加")
 	@ApiOperation(value="盘点首选项-添加", notes="盘点首选项-添加")
 	@PostMapping(value = "/add")
+	@RequiresPermissions("cycleCountPreference:add")
 	public Result<String> add(@RequestBody CycleCountPreference cycleCountPreference, HttpServletRequest req) {
 		String warehouseCode = JwtUtil.getWarehouseCodeByToken(req);
 		if(StringUtils.isNotEmpty(warehouseCode)) {
@@ -100,6 +103,7 @@ public class CycleCountPreferenceController extends JeecgController<CycleCountPr
 	 */
 	@AutoLog(value = "盘点首选项-编辑")
 	@ApiOperation(value="盘点首选项-编辑", notes="盘点首选项-编辑")
+	@RequiresPermissions("cycleCountPreference:edit")
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
 	public Result<String> edit(@RequestBody CycleCountPreference cycleCountPreference) {
 		cycleCountPreferenceService.updateById(cycleCountPreference);
@@ -115,6 +119,7 @@ public class CycleCountPreferenceController extends JeecgController<CycleCountPr
 	@AutoLog(value = "盘点首选项-通过id删除")
 	@ApiOperation(value="盘点首选项-通过id删除", notes="盘点首选项-通过id删除")
 	@DeleteMapping(value = "/delete")
+	@RequiresPermissions("cycleCountPreference:delete")
 	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
 		cycleCountPreferenceService.removeById(id);
 		return Result.OK("删除成功!");
@@ -129,6 +134,7 @@ public class CycleCountPreferenceController extends JeecgController<CycleCountPr
 	@AutoLog(value = "盘点首选项-批量删除")
 	@ApiOperation(value="盘点首选项-批量删除", notes="盘点首选项-批量删除")
 	@DeleteMapping(value = "/deleteBatch")
+	@RequiresPermissions("cycleCountPreference:deleteBatch")
 	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
 		this.cycleCountPreferenceService.removeByIds(Arrays.asList(ids.split(",")));
 		return Result.OK("批量删除成功!");
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/location/controller/LocationController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/location/controller/LocationController.java
index b9fdbde..37c5ae5 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/location/controller/LocationController.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/location/controller/LocationController.java
@@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.util.JwtUtil;
@@ -92,6 +93,7 @@ public class LocationController extends JeecgController<Location, ILocationServi
 	@AutoLog(value = "库位管理-添加")
 	@ApiOperation(value="库位管理-添加", notes="库位管理-添加")
 	@PostMapping(value = "/add")
+	@RequiresPermissions("location:add")
 	public Result<String> add(@RequestBody Location location, HttpServletRequest req) {
 		String warehouseCode = JwtUtil.getWarehouseCodeByToken(req);
 		if(StringUtils.isNotEmpty(warehouseCode)) {
@@ -109,6 +111,7 @@ public class LocationController extends JeecgController<Location, ILocationServi
 	  */
 	 @AutoLog(value = "库位管理-批量添加")
 	 @ApiOperation(value="库位管理-批量添加", notes="库位管理-批量添加")
+	 @RequiresPermissions("location:batchAdd")
 	 @PostMapping(value = "/batchAdd")
 	 public Result<String> batchAdd(@RequestBody BatchLocation batchLocation, HttpServletRequest req) {
 		 String warehouseCode = JwtUtil.getWarehouseCodeByToken(req);
@@ -144,6 +147,7 @@ public class LocationController extends JeecgController<Location, ILocationServi
 	 */
 	@AutoLog(value = "库位管理-编辑")
 	@ApiOperation(value="库位管理-编辑", notes="库位管理-编辑")
+	@RequiresPermissions("location:edit")
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
 	public Result<String> edit(@RequestBody Location location) {
 		locationService.updateById(location);
@@ -158,6 +162,7 @@ public class LocationController extends JeecgController<Location, ILocationServi
 	 */
 	@AutoLog(value = "库位管理-通过id删除")
 	@ApiOperation(value="库位管理-通过id删除", notes="库位管理-通过id删除")
+	@RequiresPermissions("location:delete")
 	@DeleteMapping(value = "/delete")
 	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
 		locationService.removeById(id);
@@ -172,6 +177,7 @@ public class LocationController extends JeecgController<Location, ILocationServi
 	 */
 	@AutoLog(value = "库位管理-批量删除")
 	@ApiOperation(value="库位管理-批量删除", notes="库位管理-批量删除")
+	@RequiresPermissions("location:deleteBatch")
 	@DeleteMapping(value = "/deleteBatch")
 	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
 		this.locationService.removeByIds(Arrays.asList(ids.split(",")));
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/locationHigh/controller/LocationHighController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/locationHigh/controller/LocationHighController.java
index 83d3126..848b069 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/locationHigh/controller/LocationHighController.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/locationHigh/controller/LocationHighController.java
@@ -12,6 +12,7 @@ import javax.servlet.http.HttpServletResponse;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.util.JwtUtil;
@@ -89,6 +90,7 @@ public class LocationHighController extends JeecgController<LocationHigh, ILocat
 	@AutoLog(value = "库位高度管理-添加")
 	@ApiOperation(value="库位高度管理-添加", notes="库位高度管理-添加")
 	@PostMapping(value = "/add")
+	@RequiresPermissions("locationHigh:add")
 	public Result<String> add(@RequestBody LocationHigh locationHigh, HttpServletRequest req) {
 		String warehouseCode = JwtUtil.getWarehouseCodeByToken(req);
 		if(StringUtils.isNotEmpty(warehouseCode)) {
@@ -106,6 +108,7 @@ public class LocationHighController extends JeecgController<LocationHigh, ILocat
 	 */
 	@AutoLog(value = "库位高度管理-编辑")
 	@ApiOperation(value="库位高度管理-编辑", notes="库位高度管理-编辑")
+	@RequiresPermissions("locationHigh:edit")
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
 	public Result<String> edit(@RequestBody LocationHigh locationHigh) {
 		locationHighService.updateById(locationHigh);
@@ -119,6 +122,7 @@ public class LocationHighController extends JeecgController<LocationHigh, ILocat
 	 * @return
 	 */
 	@AutoLog(value = "库位高度管理-通过id删除")
+	@RequiresPermissions("locationHigh:delete")
 	@ApiOperation(value="库位高度管理-通过id删除", notes="库位高度管理-通过id删除")
 	@DeleteMapping(value = "/delete")
 	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
@@ -134,6 +138,7 @@ public class LocationHighController extends JeecgController<LocationHigh, ILocat
 	 */
 	@AutoLog(value = "库位高度管理-批量删除")
 	@ApiOperation(value="库位高度管理-批量删除", notes="库位高度管理-批量删除")
+	@RequiresPermissions("locationHigh:deleteBatch")
 	@DeleteMapping(value = "/deleteBatch")
 	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
 		this.locationHighService.removeByIds(Arrays.asList(ids.split(",")));
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/locationType/controller/LocationTypeController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/locationType/controller/LocationTypeController.java
index 4a82604..5b29f82 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/locationType/controller/LocationTypeController.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/locationType/controller/LocationTypeController.java
@@ -12,6 +12,7 @@ import javax.servlet.http.HttpServletResponse;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.util.JwtUtil;
@@ -88,6 +89,7 @@ public class LocationTypeController extends JeecgController<LocationType, ILocat
 	 */
 	@AutoLog(value = "库位类型-添加")
 	@ApiOperation(value="库位类型-添加", notes="库位类型-添加")
+	@RequiresPermissions("locationType:add")
 	@PostMapping(value = "/add")
 	public Result<String> add(@RequestBody LocationType locationType, HttpServletRequest req) {
 		String warehouseCode = JwtUtil.getWarehouseCodeByToken(req);
@@ -106,6 +108,7 @@ public class LocationTypeController extends JeecgController<LocationType, ILocat
 	 */
 	@AutoLog(value = "库位类型-编辑")
 	@ApiOperation(value="库位类型-编辑", notes="库位类型-编辑")
+	@RequiresPermissions("locationType:edit")
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
 	public Result<String> edit(@RequestBody LocationType locationType) {
 		locationTypeService.updateById(locationType);
@@ -120,6 +123,7 @@ public class LocationTypeController extends JeecgController<LocationType, ILocat
 	 */
 	@AutoLog(value = "库位类型-通过id删除")
 	@ApiOperation(value="库位类型-通过id删除", notes="库位类型-通过id删除")
+	@RequiresPermissions("locationType:delete")
 	@DeleteMapping(value = "/delete")
 	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
 		locationTypeService.removeById(id);
@@ -134,6 +138,7 @@ public class LocationTypeController extends JeecgController<LocationType, ILocat
 	 */
 	@AutoLog(value = "库位类型-批量删除")
 	@ApiOperation(value="库位类型-批量删除", notes="库位类型-批量删除")
+	@RequiresPermissions("locationType:deleteBatch")
 	@DeleteMapping(value = "/deleteBatch")
 	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
 		this.locationTypeService.removeByIds(Arrays.asList(ids.split(",")));
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/parameterConfiguration/controller/ParameterConfigurationController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/parameterConfiguration/controller/ParameterConfigurationController.java
index 0d10481..efc5822 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/parameterConfiguration/controller/ParameterConfigurationController.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/parameterConfiguration/controller/ParameterConfigurationController.java
@@ -9,6 +9,8 @@ import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.util.JwtUtil;
@@ -83,6 +85,7 @@ public class ParameterConfigurationController extends JeecgController<ParameterC
 	@AutoLog(value = "参数配置-添加")
 	@ApiOperation(value="参数配置-添加", notes="参数配置-添加")
 	@PostMapping(value = "/add")
+	@RequiresPermissions("parameterConfiguration:add")
 	public Result<String> add(@RequestBody ParameterConfiguration parameterConfiguration, HttpServletRequest req) {
 		parameterConfigurationService.save(parameterConfiguration);
 		return Result.OK("添加成功!");
@@ -97,6 +100,7 @@ public class ParameterConfigurationController extends JeecgController<ParameterC
 	@AutoLog(value = "参数配置-编辑")
 	@ApiOperation(value="参数配置-编辑", notes="参数配置-编辑")
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	@RequiresPermissions("parameterConfiguration:edit")
 	public Result<String> edit(@RequestBody ParameterConfiguration parameterConfiguration) {
 		parameterConfigurationService.updateById(parameterConfiguration);
 		return Result.OK("编辑成功!");
@@ -111,6 +115,7 @@ public class ParameterConfigurationController extends JeecgController<ParameterC
 	@AutoLog(value = "参数配置-通过id删除")
 	@ApiOperation(value="参数配置-通过id删除", notes="参数配置-通过id删除")
 	@DeleteMapping(value = "/delete")
+	@RequiresPermissions("parameterConfiguration:delete")
 	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
 		parameterConfigurationService.removeById(id);
 		return Result.OK("删除成功!");
@@ -125,6 +130,7 @@ public class ParameterConfigurationController extends JeecgController<ParameterC
 	@AutoLog(value = "参数配置-批量删除")
 	@ApiOperation(value="参数配置-批量删除", notes="参数配置-批量删除")
 	@DeleteMapping(value = "/deleteBatch")
+	@RequiresPermissions("parameterConfiguration:deleteBatch")
 	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
 		this.parameterConfigurationService.removeByIds(Arrays.asList(ids.split(",")));
 		return Result.OK("批量删除成功!");
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/receiptType/controller/ReceiptTypeController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/receiptType/controller/ReceiptTypeController.java
index 8a716c3..99743b0 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/receiptType/controller/ReceiptTypeController.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/receiptType/controller/ReceiptTypeController.java
@@ -12,6 +12,7 @@ import javax.servlet.http.HttpServletResponse;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.util.JwtUtil;
@@ -87,6 +88,7 @@ public class ReceiptTypeController extends JeecgController<ReceiptType, IReceipt
 	@AutoLog(value = "入库单类型-添加")
 	@ApiOperation(value="入库单类型-添加", notes="入库单类型-添加")
 	@PostMapping(value = "/add")
+	@RequiresPermissions("receiptType:add")
 	public Result<String> add(@RequestBody ReceiptType receiptType, HttpServletRequest req) {
 		String warehouseCode = JwtUtil.getWarehouseCodeByToken(req);
 		if(StringUtils.isNotEmpty(warehouseCode)) {
@@ -104,6 +106,7 @@ public class ReceiptTypeController extends JeecgController<ReceiptType, IReceipt
 	 */
 	@AutoLog(value = "入库单类型-编辑")
 	@ApiOperation(value="入库单类型-编辑", notes="入库单类型-编辑")
+	@RequiresPermissions("receiptType:edit")
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
 	public Result<String> edit(@RequestBody ReceiptType receiptType) {
 		receiptTypeService.updateById(receiptType);
@@ -118,6 +121,7 @@ public class ReceiptTypeController extends JeecgController<ReceiptType, IReceipt
 	 */
 	@AutoLog(value = "入库单类型-通过id删除")
 	@ApiOperation(value="入库单类型-通过id删除", notes="入库单类型-通过id删除")
+	@RequiresPermissions("receiptType:delete")
 	@DeleteMapping(value = "/delete")
 	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
 		receiptTypeService.removeById(id);
@@ -132,6 +136,7 @@ public class ReceiptTypeController extends JeecgController<ReceiptType, IReceipt
 	 */
 	@AutoLog(value = "入库单类型-批量删除")
 	@ApiOperation(value="入库单类型-批量删除", notes="入库单类型-批量删除")
+	@RequiresPermissions("receiptType:deleteBatch")
 	@DeleteMapping(value = "/deleteBatch")
 	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
 		this.receiptTypeService.removeByIds(Arrays.asList(ids.split(",")));
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/shipmentType/controller/ShipmentTypeController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/shipmentType/controller/ShipmentTypeController.java
index 2cbb700..8dc5eeb 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/shipmentType/controller/ShipmentTypeController.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/shipmentType/controller/ShipmentTypeController.java
@@ -12,6 +12,7 @@ import javax.servlet.http.HttpServletResponse;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.util.JwtUtil;
@@ -86,6 +87,7 @@ public class ShipmentTypeController extends JeecgController<ShipmentType, IShipm
 	 */
 	@AutoLog(value = "出库单类型-添加")
 	@ApiOperation(value="出库单类型-添加", notes="出库单类型-添加")
+	@RequiresPermissions("shipmentType:add")
 	@PostMapping(value = "/add")
 	public Result<String> add(@RequestBody ShipmentType shipmentType, HttpServletRequest req) {
 		String warehouseCode = JwtUtil.getWarehouseCodeByToken(req);
@@ -104,6 +106,7 @@ public class ShipmentTypeController extends JeecgController<ShipmentType, IShipm
 	 */
 	@AutoLog(value = "出库单类型-编辑")
 	@ApiOperation(value="出库单类型-编辑", notes="出库单类型-编辑")
+	@RequiresPermissions("shipmentType:edit")
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
 	public Result<String> edit(@RequestBody ShipmentType shipmentType) {
 		shipmentTypeService.updateById(shipmentType);
@@ -118,6 +121,7 @@ public class ShipmentTypeController extends JeecgController<ShipmentType, IShipm
 	 */
 	@AutoLog(value = "出库单类型-通过id删除")
 	@ApiOperation(value="出库单类型-通过id删除", notes="出库单类型-通过id删除")
+	@RequiresPermissions("shipmentType:delete")
 	@DeleteMapping(value = "/delete")
 	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
 		shipmentTypeService.removeById(id);
@@ -132,6 +136,7 @@ public class ShipmentTypeController extends JeecgController<ShipmentType, IShipm
 	 */
 	@AutoLog(value = "出库单类型-批量删除")
 	@ApiOperation(value="出库单类型-批量删除", notes="出库单类型-批量删除")
+	@RequiresPermissions("shipmentType:deleteBatch")
 	@DeleteMapping(value = "/deleteBatch")
 	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
 		this.shipmentTypeService.removeByIds(Arrays.asList(ids.split(",")));
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/controller/ReceiptContainerHeaderController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/controller/ReceiptContainerHeaderController.java
index 46adb9c..32300fd 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/controller/ReceiptContainerHeaderController.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/controller/ReceiptContainerHeaderController.java
@@ -1,5 +1,6 @@
 package org.jeecg.modules.wms.receipt.receiptContainerHeader.controller;
 
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.jeecg.common.system.query.QueryGenerator;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -103,6 +104,7 @@ public class ReceiptContainerHeaderController extends JeecgController<ReceiptCon
      */
     @AutoLog(value = "入库组盘-添加")
     @ApiOperation(value="入库组盘-添加", notes="入库组盘-添加")
+	@RequiresPermissions("receiptContainerHeader:add")
     @PostMapping(value = "/add")
     public Result<String> add(@RequestBody ReceiptContainerHeader receiptContainerHeader) {
         receiptContainerHeaderService.save(receiptContainerHeader);
@@ -116,6 +118,7 @@ public class ReceiptContainerHeaderController extends JeecgController<ReceiptCon
      */
     @AutoLog(value = "入库组盘-编辑")
     @ApiOperation(value="入库组盘-编辑", notes="入库组盘-编辑")
+	@RequiresPermissions("receiptContainerHeader:edit")
     @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
     public Result<String> edit(@RequestBody ReceiptContainerHeader receiptContainerHeader) {
         receiptContainerHeaderService.updateById(receiptContainerHeader);
@@ -130,6 +133,7 @@ public class ReceiptContainerHeaderController extends JeecgController<ReceiptCon
     @AutoLog(value = "入库组盘-通过id删除")
     @ApiOperation(value="入库组盘-通过id删除", notes="入库组盘-通过id删除")
     @DeleteMapping(value = "/delete")
+	@RequiresPermissions("receiptContainerHeader:delete")
     public Result<String> delete(@RequestParam(name="id",required=true) String id) {
         receiptContainerHeaderService.delMain(id);
         return Result.OK("删除成功!");
@@ -143,6 +147,7 @@ public class ReceiptContainerHeaderController extends JeecgController<ReceiptCon
     @AutoLog(value = "入库组盘-批量删除")
     @ApiOperation(value="入库组盘-批量删除", notes="入库组盘-批量删除")
     @DeleteMapping(value = "/deleteBatch")
+	@RequiresPermissions("receiptContainerHeader:deleteBatch")
     public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
         this.receiptContainerHeaderService.delBatchMain(Arrays.asList(ids.split(",")));
         return Result.OK("批量删除成功!");
@@ -194,6 +199,7 @@ public class ReceiptContainerHeaderController extends JeecgController<ReceiptCon
 	@AutoLog(value = "入库组盘详情-添加")
 	@ApiOperation(value="入库组盘详情-添加", notes="入库组盘详情-添加")
 	@PostMapping(value = "/addReceiptContainerDetail")
+	@RequiresPermissions("receiptContainerDetail:add")
 	public Result<String> addReceiptContainerDetail(@RequestBody ReceiptContainerDetail receiptContainerDetail) {
 		receiptContainerDetailService.save(receiptContainerDetail);
 		return Result.OK("添加成功!");
@@ -206,6 +212,7 @@ public class ReceiptContainerHeaderController extends JeecgController<ReceiptCon
 	 */
 	@AutoLog(value = "入库组盘详情-编辑")
 	@ApiOperation(value="入库组盘详情-编辑", notes="入库组盘详情-编辑")
+	@RequiresPermissions("receiptContainerDetail:edit")
 	@RequestMapping(value = "/editReceiptContainerDetail", method = {RequestMethod.PUT,RequestMethod.POST})
 	public Result<String> editReceiptContainerDetail(@RequestBody ReceiptContainerDetail receiptContainerDetail) {
 		receiptContainerDetailService.updateById(receiptContainerDetail);
@@ -219,6 +226,7 @@ public class ReceiptContainerHeaderController extends JeecgController<ReceiptCon
 	 */
 	@AutoLog(value = "入库组盘详情-通过id删除")
 	@ApiOperation(value="入库组盘详情-通过id删除", notes="入库组盘详情-通过id删除")
+	@RequiresPermissions("receiptContainerDetail:delete")
 	@DeleteMapping(value = "/deleteReceiptContainerDetail")
 	public Result<String> deleteReceiptContainerDetail(@RequestParam(name="id",required=true) String id) {
 		receiptContainerDetailService.removeById(id);
@@ -232,6 +240,7 @@ public class ReceiptContainerHeaderController extends JeecgController<ReceiptCon
 	 */
 	@AutoLog(value = "入库组盘详情-批量删除")
 	@ApiOperation(value="入库组盘详情-批量删除", notes="入库组盘详情-批量删除")
+	@RequiresPermissions("receiptContainerDetail:deleteBatch")
 	@DeleteMapping(value = "/deleteBatchReceiptContainerDetail")
 	public Result<String> deleteBatchReceiptContainerDetail(@RequestParam(name="ids",required=true) String ids) {
 	    this.receiptContainerDetailService.removeByIds(Arrays.asList(ids.split(",")));
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/controller/ReceiptHeaderController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/controller/ReceiptHeaderController.java
index e76e830..3b9edb8 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/controller/ReceiptHeaderController.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/controller/ReceiptHeaderController.java
@@ -1,6 +1,7 @@
 package org.jeecg.modules.wms.receipt.receiptHeader.controller;
 
 import com.aliyun.oss.ServiceException;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.jeecg.common.system.query.QueryGenerator;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -99,6 +100,7 @@ public class ReceiptHeaderController extends JeecgController<ReceiptHeader, IRec
     @AutoLog(value = "入库表主表-添加")
     @ApiOperation(value="入库表主表-添加", notes="入库表主表-添加")
     @PostMapping(value = "/add")
+	@RequiresPermissions("receiptHeader:add")
     public Result<String> add(@RequestBody ReceiptHeader receiptHeader, HttpServletRequest req) {
 		String warehouseCode = JwtUtil.getWarehouseCodeByToken(req);
 		if(StringUtils.isNotEmpty(warehouseCode)) {
@@ -115,6 +117,7 @@ public class ReceiptHeaderController extends JeecgController<ReceiptHeader, IRec
      */
     @AutoLog(value = "入库表主表-编辑")
     @ApiOperation(value="入库表主表-编辑", notes="入库表主表-编辑")
+	@RequiresPermissions("receiptHeader:edit")
     @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
     public Result<String> edit(@RequestBody ReceiptHeader receiptHeader) {
         receiptHeaderService.updateById(receiptHeader);
@@ -128,6 +131,7 @@ public class ReceiptHeaderController extends JeecgController<ReceiptHeader, IRec
      */
     @AutoLog(value = "入库表主表-通过id删除")
     @ApiOperation(value="入库表主表-通过id删除", notes="入库表主表-通过id删除")
+	@RequiresPermissions("receiptHeader:delete")
     @DeleteMapping(value = "/delete")
     public Result<String> delete(@RequestParam(name="id",required=true) String id) {
         receiptHeaderService.delMain(id);
@@ -141,6 +145,7 @@ public class ReceiptHeaderController extends JeecgController<ReceiptHeader, IRec
      */
     @AutoLog(value = "入库表主表-批量删除")
     @ApiOperation(value="入库表主表-批量删除", notes="入库表主表-批量删除")
+	@RequiresPermissions("receiptHeader:deleteBatch")
     @DeleteMapping(value = "/deleteBatch")
     public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
         this.receiptHeaderService.delBatchMain(Arrays.asList(ids.split(",")));
@@ -193,6 +198,7 @@ public class ReceiptHeaderController extends JeecgController<ReceiptHeader, IRec
 	@AutoLog(value = "入库单详情-添加")
 	@ApiOperation(value="入库单详情-添加", notes="入库单详情-添加")
 	@PostMapping(value = "/addReceiptDetail")
+	@RequiresPermissions("receiptDetail:add")
 	public Result<String> addReceiptDetail(@RequestBody ReceiptDetail receiptDetail) {
 		Result result = receiptDetailService.saveReceiptDetail(receiptDetail);
 		return result;
@@ -205,6 +211,7 @@ public class ReceiptHeaderController extends JeecgController<ReceiptHeader, IRec
 	 */
 	@AutoLog(value = "入库单详情-编辑")
 	@ApiOperation(value="入库单详情-编辑", notes="入库单详情-编辑")
+	@RequiresPermissions("receiptDetail:edit")
 	@RequestMapping(value = "/editReceiptDetail", method = {RequestMethod.PUT,RequestMethod.POST})
 	public Result<String> editReceiptDetail(@RequestBody ReceiptDetail receiptDetail) {
 		receiptDetailService.updateById(receiptDetail);
@@ -218,6 +225,7 @@ public class ReceiptHeaderController extends JeecgController<ReceiptHeader, IRec
 	 */
 	@AutoLog(value = "入库单详情-通过id删除")
 	@ApiOperation(value="入库单详情-通过id删除", notes="入库单详情-通过id删除")
+	@RequiresPermissions("receiptDetail:delete")
 	@DeleteMapping(value = "/deleteReceiptDetail")
 	public Result<String> deleteReceiptDetail(@RequestParam(name="id",required=true) String id) {
 		ReceiptDetail receiptDetail = receiptDetailService.getById(id);
@@ -249,6 +257,7 @@ public class ReceiptHeaderController extends JeecgController<ReceiptHeader, IRec
 	 */
 	@AutoLog(value = "入库单详情-批量删除")
 	@ApiOperation(value="入库单详情-批量删除", notes="入库单详情-批量删除")
+	@RequiresPermissions("receiptDetail:deleteBatch")
 	@DeleteMapping(value = "/deleteBatchReceiptDetail")
 	public Result<String> deleteBatchReceiptDetail(@RequestParam(name="ids",required=true) String ids) {
 	    this.receiptDetailService.removeByIds(Arrays.asList(ids.split(",")));
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java
index 377e9d6..35b0945 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java
@@ -547,7 +547,7 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi
         return Result.OK("生成出库任务成功");
     }
 
-    @Override
+   @Override
     public Result getInventoryFromShipmentDetail(Integer shipmentDetailId) {
         ShipmentDetail shipmentDetail = shipmentDetailService.getById(shipmentDetailId);
         if(shipmentDetail == null){
@@ -561,6 +561,7 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi
         List<InventoryDetail> removeInventoryList = new ArrayList<>();
         for(InventoryDetail inventoryDetail : inventoryDetailList) {
             String containerCode = inventoryDetail.getContainerCode();
+            Container container =
             Container container = containerService.getContainerByCode(containerCode, warehouseCode);
             if(container == null) {
                 return Result.error("没有找到容器,容器号" + containerCode);
@@ -569,6 +570,7 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi
                 removeInventoryList.add(inventoryDetail);
             }
         }
+        return null;
         List<ReceiptContainerHeader> unCompleteCombineList =
                 receiptContainerHeaderService.getUnCompleteCombineList();
         if(unCompleteCombineList != null && unCompleteCombineList.size() > 0) {
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java
index f714fb5..f2100d6 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java
@@ -1,5 +1,6 @@
 package org.jeecg.modules.wms.shipment.shipmentContainerHeader.controller;
 
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.jeecg.common.system.query.QueryGenerator;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -85,6 +86,7 @@ public class ShipmentContainerHeaderController extends JeecgController<ShipmentC
     @AutoLog(value = "出库组盘-添加")
     @ApiOperation(value="出库组盘-添加", notes="出库组盘-添加")
     @PostMapping(value = "/add")
+	@RequiresPermissions("shipmentContainerHeader:add")
     public Result<String> add(@RequestBody ShipmentContainerHeader shipmentContainerHeader) {
         shipmentContainerHeaderService.save(shipmentContainerHeader);
         return Result.OK("添加成功!");
@@ -97,6 +99,7 @@ public class ShipmentContainerHeaderController extends JeecgController<ShipmentC
      */
     @AutoLog(value = "出库组盘-编辑")
     @ApiOperation(value="出库组盘-编辑", notes="出库组盘-编辑")
+	@RequiresPermissions("shipmentContainerHeader:edit")
     @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
     public Result<String> edit(@RequestBody ShipmentContainerHeader shipmentContainerHeader) {
         shipmentContainerHeaderService.updateById(shipmentContainerHeader);
@@ -110,6 +113,7 @@ public class ShipmentContainerHeaderController extends JeecgController<ShipmentC
      */
     @AutoLog(value = "出库组盘-通过id删除")
     @ApiOperation(value="出库组盘-通过id删除", notes="出库组盘-通过id删除")
+	@RequiresPermissions("shipmentContainerHeader:delete")
     @DeleteMapping(value = "/delete")
     public Result<String> delete(@RequestParam(name="id",required=true) String id) {
         shipmentContainerHeaderService.delMain(id);
@@ -123,6 +127,7 @@ public class ShipmentContainerHeaderController extends JeecgController<ShipmentC
      */
     @AutoLog(value = "出库组盘-批量删除")
     @ApiOperation(value="出库组盘-批量删除", notes="出库组盘-批量删除")
+	@RequiresPermissions("shipmentContainerHeader:deleteBatch")
     @DeleteMapping(value = "/deleteBatch")
     public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
         this.shipmentContainerHeaderService.delBatchMain(Arrays.asList(ids.split(",")));
@@ -174,6 +179,7 @@ public class ShipmentContainerHeaderController extends JeecgController<ShipmentC
 	 */
 	@AutoLog(value = "出库组盘详情-添加")
 	@ApiOperation(value="出库组盘详情-添加", notes="出库组盘详情-添加")
+	@RequiresPermissions("shipmentContainerDetail:add")
 	@PostMapping(value = "/addShipmentContainerDetail")
 	public Result<String> addShipmentContainerDetail(@RequestBody ShipmentContainerDetail shipmentContainerDetail) {
 		shipmentContainerDetailService.save(shipmentContainerDetail);
@@ -187,6 +193,7 @@ public class ShipmentContainerHeaderController extends JeecgController<ShipmentC
 	 */
 	@AutoLog(value = "出库组盘详情-编辑")
 	@ApiOperation(value="出库组盘详情-编辑", notes="出库组盘详情-编辑")
+	@RequiresPermissions("shipmentContainerDetail:edit")
 	@RequestMapping(value = "/editShipmentContainerDetail", method = {RequestMethod.PUT,RequestMethod.POST})
 	public Result<String> editShipmentContainerDetail(@RequestBody ShipmentContainerDetail shipmentContainerDetail) {
 		shipmentContainerDetailService.updateById(shipmentContainerDetail);
@@ -200,6 +207,7 @@ public class ShipmentContainerHeaderController extends JeecgController<ShipmentC
 	 */
 	@AutoLog(value = "出库组盘详情-通过id删除")
 	@ApiOperation(value="出库组盘详情-通过id删除", notes="出库组盘详情-通过id删除")
+	@RequiresPermissions("shipmentContainerDetail:delete")
 	@DeleteMapping(value = "/deleteShipmentContainerDetail")
 	public Result<String> deleteShipmentContainerDetail(@RequestParam(name="id",required=true) String id) {
 		shipmentContainerDetailService.removeById(id);
@@ -213,6 +221,7 @@ public class ShipmentContainerHeaderController extends JeecgController<ShipmentC
 	 */
 	@AutoLog(value = "出库组盘详情-批量删除")
 	@ApiOperation(value="出库组盘详情-批量删除", notes="出库组盘详情-批量删除")
+	@RequiresPermissions("shipmentContainerDetail:deleteBatch")
 	@DeleteMapping(value = "/deleteBatchShipmentContainerDetail")
 	public Result<String> deleteBatchShipmentContainerDetail(@RequestParam(name="ids",required=true) String ids) {
 	    this.shipmentContainerDetailService.removeByIds(Arrays.asList(ids.split(",")));
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/controller/ShipmentHeaderController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/controller/ShipmentHeaderController.java
index 877c8eb..b7fbddb 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/controller/ShipmentHeaderController.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/controller/ShipmentHeaderController.java
@@ -1,6 +1,7 @@
 package org.jeecg.modules.wms.shipment.shipmentHeader.controller;
 
 import com.aliyun.oss.ServiceException;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.jeecg.common.system.query.QueryGenerator;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -91,6 +92,7 @@ public class ShipmentHeaderController extends JeecgController<ShipmentHeader, IS
     @AutoLog(value = "出库单-添加")
     @ApiOperation(value="出库单-添加", notes="出库单-添加")
     @PostMapping(value = "/add")
+	@RequiresPermissions("shipmentHeader:add")
     public Result<String> add(@RequestBody ShipmentHeader shipmentHeader, HttpServletRequest req) {
 		String warehouseCode = JwtUtil.getWarehouseCodeByToken(req);
 		shipmentHeader.setWarehouseCode(warehouseCode);
@@ -105,6 +107,7 @@ public class ShipmentHeaderController extends JeecgController<ShipmentHeader, IS
      */
     @AutoLog(value = "出库单-编辑")
     @ApiOperation(value="出库单-编辑", notes="出库单-编辑")
+	@RequiresPermissions("shipmentHeader:edit")
     @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
     public Result<String> edit(@RequestBody ShipmentHeader shipmentHeader) {
         shipmentHeaderService.updateById(shipmentHeader);
@@ -117,6 +120,7 @@ public class ShipmentHeaderController extends JeecgController<ShipmentHeader, IS
      * @return
      */
     @AutoLog(value = "出库单-通过id删除")
+	@RequiresPermissions("shipmentHeader:delete")
     @ApiOperation(value="出库单-通过id删除", notes="出库单-通过id删除")
     @DeleteMapping(value = "/delete")
     public Result<String> delete(@RequestParam(name="id",required=true) String id) {
@@ -131,6 +135,7 @@ public class ShipmentHeaderController extends JeecgController<ShipmentHeader, IS
      */
     @AutoLog(value = "出库单-批量删除")
     @ApiOperation(value="出库单-批量删除", notes="出库单-批量删除")
+	@RequiresPermissions("shipmentHeader:deleteBatch")
     @DeleteMapping(value = "/deleteBatch")
     public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
         this.shipmentHeaderService.delBatchMain(Arrays.asList(ids.split(",")));
@@ -182,6 +187,7 @@ public class ShipmentHeaderController extends JeecgController<ShipmentHeader, IS
 	 */
 	@AutoLog(value = "出库单详情-添加")
 	@ApiOperation(value="出库单详情-添加", notes="出库单详情-添加")
+	@RequiresPermissions("shipmentDetail:add")
 	@PostMapping(value = "/addShipmentDetail")
 	public Result<String> addShipmentDetail(@RequestBody ShipmentDetail shipmentDetail, HttpServletRequest req) {
 		Result result = shipmentDetailService.saveShipmentDetail(shipmentDetail);
@@ -195,6 +201,7 @@ public class ShipmentHeaderController extends JeecgController<ShipmentHeader, IS
 	 */
 	@AutoLog(value = "出库单详情-编辑")
 	@ApiOperation(value="出库单详情-编辑", notes="出库单详情-编辑")
+	@RequiresPermissions("shipmentDetail:edit")
 	@RequestMapping(value = "/editShipmentDetail", method = {RequestMethod.PUT,RequestMethod.POST})
 	public Result<String> editShipmentDetail(@RequestBody ShipmentDetail shipmentDetail) {
 		shipmentDetailService.updateById(shipmentDetail);
@@ -208,6 +215,7 @@ public class ShipmentHeaderController extends JeecgController<ShipmentHeader, IS
 	 */
 	@AutoLog(value = "出库单详情-通过id删除")
 	@ApiOperation(value="出库单详情-通过id删除", notes="出库单详情-通过id删除")
+	@RequiresPermissions("shipmentDetail:delete")
 	@DeleteMapping(value = "/deleteShipmentDetail")
 	public Result<String> deleteShipmentDetail(@RequestParam(name="id",required=true) String id) {
 		ShipmentDetail shipmentDetail = shipmentDetailService.getById(id);
@@ -239,6 +247,7 @@ public class ShipmentHeaderController extends JeecgController<ShipmentHeader, IS
 	 */
 	@AutoLog(value = "出库单详情-批量删除")
 	@ApiOperation(value="出库单详情-批量删除", notes="出库单详情-批量删除")
+	@RequiresPermissions("shipmentDetail:deleteBatch")
 	@DeleteMapping(value = "/deleteBatchShipmentDetail")
 	public Result<String> deleteBatchShipmentDetail(@RequestParam(name="ids",required=true) String ids) {
 	    this.shipmentDetailService.removeByIds(Arrays.asList(ids.split(",")));
diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/task/taskHeader/controller/TaskHeaderController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/task/taskHeader/controller/TaskHeaderController.java
index 41df1d0..43c268e 100644
--- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/task/taskHeader/controller/TaskHeaderController.java
+++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/task/taskHeader/controller/TaskHeaderController.java
@@ -112,6 +112,7 @@ public class TaskHeaderController extends JeecgController<TaskHeader, ITaskHeade
     @AutoLog(value = "任务表-添加")
     @ApiOperation(value="任务表-添加", notes="任务表-添加")
     @PostMapping(value = "/add")
+	@RequiresPermissions("taskHeader:add")
     public Result<String> add(@RequestBody TaskHeader taskHeader) {
         taskHeaderService.save(taskHeader);
         return Result.OK("添加成功!");
@@ -124,7 +125,8 @@ public class TaskHeaderController extends JeecgController<TaskHeader, ITaskHeade
      */
     @AutoLog(value = "任务表-编辑")
     @ApiOperation(value="任务表-编辑", notes="任务表-编辑")
-    @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	@RequiresPermissions("taskHeader:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
     public Result<String> edit(@RequestBody TaskHeader taskHeader) {
         taskHeaderService.updateById(taskHeader);
         return Result.OK("编辑成功!");
@@ -137,6 +139,7 @@ public class TaskHeaderController extends JeecgController<TaskHeader, ITaskHeade
      */
     @AutoLog(value = "任务表-通过id删除")
     @ApiOperation(value="任务表-通过id删除", notes="任务表-通过id删除")
+	@RequiresPermissions("taskHeader:edit")
     @DeleteMapping(value = "/delete")
     public Result<String> delete(@RequestParam(name="id",required=true) String id) {
         taskHeaderService.delMain(id);
@@ -150,6 +153,7 @@ public class TaskHeaderController extends JeecgController<TaskHeader, ITaskHeade
      */
     @AutoLog(value = "任务表-批量删除")
     @ApiOperation(value="任务表-批量删除", notes="任务表-批量删除")
+	@RequiresPermissions("taskHeader:deleteBatch")
     @DeleteMapping(value = "/deleteBatch")
     public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
         this.taskHeaderService.delBatchMain(Arrays.asList(ids.split(",")));
@@ -202,6 +206,7 @@ public class TaskHeaderController extends JeecgController<TaskHeader, ITaskHeade
 	@AutoLog(value = "任务详情-添加")
 	@ApiOperation(value="任务详情-添加", notes="任务详情-添加")
 	@PostMapping(value = "/addTaskDetail")
+	@RequiresPermissions("taskDetail:add")
 	public Result<String> addTaskDetail(@RequestBody TaskDetail taskDetail) {
 		taskDetailService.save(taskDetail);
 		return Result.OK("添加成功!");
@@ -214,6 +219,7 @@ public class TaskHeaderController extends JeecgController<TaskHeader, ITaskHeade
 	 */
 	@AutoLog(value = "任务详情-编辑")
 	@ApiOperation(value="任务详情-编辑", notes="任务详情-编辑")
+	@RequiresPermissions("taskDetail:edit")
 	@RequestMapping(value = "/editTaskDetail", method = {RequestMethod.PUT,RequestMethod.POST})
 	public Result<String> editTaskDetail(@RequestBody TaskDetail taskDetail) {
 		taskDetailService.updateById(taskDetail);
@@ -227,6 +233,7 @@ public class TaskHeaderController extends JeecgController<TaskHeader, ITaskHeade
 	 */
 	@AutoLog(value = "任务详情-通过id删除")
 	@ApiOperation(value="任务详情-通过id删除", notes="任务详情-通过id删除")
+	@RequiresPermissions("taskDetail:delete")
 	@DeleteMapping(value = "/deleteTaskDetail")
 	public Result<String> deleteTaskDetail(@RequestParam(name="id",required=true) String id) {
 		taskDetailService.removeById(id);
@@ -240,6 +247,7 @@ public class TaskHeaderController extends JeecgController<TaskHeader, ITaskHeade
 	 */
 	@AutoLog(value = "任务详情-批量删除")
 	@ApiOperation(value="任务详情-批量删除", notes="任务详情-批量删除")
+	@RequiresPermissions("taskDetail:deleteBatch")
 	@DeleteMapping(value = "/deleteBatchTaskDetail")
 	public Result<String> deleteBatchTaskDetail(@RequestParam(name="ids",required=true) String ids) {
 	    this.taskDetailService.removeByIds(Arrays.asList(ids.split(",")));
@@ -324,6 +332,7 @@ public class TaskHeaderController extends JeecgController<TaskHeader, ITaskHeade
 	 @AutoLog(value = "任务表-完成任务")
 	 @ApiOperation(value="任务表-完成任务", notes="任务表-完成任务")
 	 @PostMapping( "/completeTaskByWMS")
+	 @RequiresPermissions("taskHeader:completeTask")
 	 public Result completeTaskByWMS(@RequestBody TaskHeader taskHeader){
 		if(taskHeader == null) {
 			 return Result.error("taskHeader不能为空");
@@ -346,6 +355,7 @@ public class TaskHeaderController extends JeecgController<TaskHeader, ITaskHeade
 	 @ApiOperation(value="任务表-取消任务", notes="任务表-取消任务")
 	 @PostMapping( "/cancelTask")
 	 @ResponseBody
+	 @RequiresPermissions("taskHeader:cancelTask")
 	 public Result cancelTask(@RequestParam(name="ids",required=true) String ids) {
 		 if (StringUtils.isEmpty(ids)) {
 			 return Result.error("taskId不能为空");
@@ -370,6 +380,7 @@ public class TaskHeaderController extends JeecgController<TaskHeader, ITaskHeade
 	 @AutoLog(value = "任务表-执行任务")
 	 @ApiOperation(value="任务表-执行任务", notes="任务表-执行任务")
 	 @PostMapping( "/execute")
+	 @RequiresPermissions("taskHeader:executeTask")
 	 public Result execute(@RequestBody  TaskHeader taskHeader) {
 		 {
 			 if (taskHeader == null) {
@@ -393,6 +404,7 @@ public class TaskHeaderController extends JeecgController<TaskHeader, ITaskHeade
 	 @AutoLog(value = "任务表-创建空托入库任务")
 	 @ApiOperation(value="任务表-创建空托入库任务", notes="任务表-创建空托入库任务")
 	 @PostMapping( "/createEmptyIn")
+	 @RequiresPermissions("taskHeader:emptyIn")
 	 public Result createEmptyIn(@RequestBody  TaskHeader taskHeader, HttpServletRequest req) {
 	 	String contaienrCode = taskHeader.getContainerCode();
 	 	String toLocationCode = taskHeader.getToLocationCode();
@@ -413,6 +425,7 @@ public class TaskHeaderController extends JeecgController<TaskHeader, ITaskHeade
 	  */
 	 @AutoLog(value = "任务表-创建空托出库任务")
 	 @ApiOperation(value="任务表-创建空托出库任务", notes="任务表-创建空托出库任务")
+	 @RequiresPermissions("taskHeader:emptyOut")
 	 @PostMapping( "/createEmptyOut")
 	 public Result createEmptyOut(@RequestBody  TaskHeader taskHeader, HttpServletRequest req) {
 		 String contaienrCode = taskHeader.getContainerCode();
@@ -434,6 +447,7 @@ public class TaskHeaderController extends JeecgController<TaskHeader, ITaskHeade
 	  */
 	 @AutoLog(value = "任务表-创建移库任务")
 	 @ApiOperation(value="任务表-创建移库任务", notes="任务表-创建移库任务")
+	 @RequiresPermissions("taskHeader:transfer")
 	 @PostMapping( "/createTransferTask")
 	 public Result createTransferTask(@RequestBody  TaskHeader taskHeader, HttpServletRequest req) {
 		 String fromLocationCode = taskHeader.getFromLocationCode();
@@ -456,6 +470,7 @@ public class TaskHeaderController extends JeecgController<TaskHeader, ITaskHeade
 	 @AutoLog(value = "任务表-创建出库查看任务")
 	 @ApiOperation(value="任务表-创建出库查看任务", notes="任务表-创建出库查看任务")
 	 @PostMapping( "/createCheckOutTask")
+	 @RequiresPermissions("taskHeader:checkOut")
 	 public Result createCheckOutTask(@RequestBody  TaskHeader taskHeader, HttpServletRequest req) {
 		 String containerCode = taskHeader.getContainerCode();
 		 String toPortCode = taskHeader.getToPortCode();
@@ -476,6 +491,7 @@ public class TaskHeaderController extends JeecgController<TaskHeader, ITaskHeade
 	  */
 	 @AutoLog(value = "任务表-创建跨站任务")
 	 @ApiOperation(value="任务表-创建跨站任务", notes="任务表-创建跨站任务")
+	 @RequiresPermissions("taskHeader:overStation")
 	 @PostMapping( "/createOverStationTask")
 	 public Result createOverStationTask(@RequestBody  TaskHeader taskHeader, HttpServletRequest req) {
 		 String containerCode = taskHeader.getContainerCode();
@@ -499,6 +515,7 @@ public class TaskHeaderController extends JeecgController<TaskHeader, ITaskHeade
 	 @AutoLog(value = "任务表-创建空托盘组入库")
 	 @ApiOperation(value="任务表-创建空托盘组入库", notes="任务表-创建空托盘组入库")
 	 @PostMapping( "/createManyEmptyIn")
+	 @RequiresPermissions("taskHeader:manyEmptyIn")
 	 public Result createManyEmptyIn(@RequestBody  TaskHeader taskHeader, HttpServletRequest req) {
 		 String containerCode = taskHeader.getContainerCode();
 		 String toLocationCode = taskHeader.getToLocationCode();
@@ -518,6 +535,7 @@ public class TaskHeaderController extends JeecgController<TaskHeader, ITaskHeade
 	  */
 	 @AutoLog(value = "任务表-创建空托盘组出库")
 	 @ApiOperation(value="任务表-创建空托盘组出库", notes="任务表-创建空托盘组出库")
+	 @RequiresPermissions("taskHeader:manyEmptyOut")
 	 @PostMapping( "/createManyEmptyOut")
 	 public Result createManyEmptyOut(@RequestBody  TaskHeader taskHeader, HttpServletRequest req) {
 		 String containerCode = taskHeader.getContainerCode();