Explorar o código

feature(权限): 前端权限整理

ZZH-wl %!s(int64=3) %!d(string=hai) anos
pai
achega
abcfefb06b

+ 11 - 3
src/views/base/distributor/index.vue

@@ -47,7 +47,13 @@
         </vab-query-form>
 
         <vab-query-form-left-panel>
-          <el-button icon="el-icon-plus" type="primary" @click="handleEdit($event)">新建</el-button>
+          <el-button
+            v-permissions="['base:distributor:add']"
+            icon="el-icon-plus"
+            type="primary"
+            @click="handleEdit($event)">
+            新建
+          </el-button>
         </vab-query-form-left-panel>
         <vab-query-form-right-panel>
           <table-tool :check-list.sync="checkList" :columns="columns" />
@@ -78,8 +84,10 @@
 
           <el-table-column align="center" label="操作" show-overflow-tooltip width="85">
             <template #default="{ row }">
-              <el-button type="text" @click="handleEdit(row)">编辑</el-button>
-              <el-button type="text" @click="handleDelete(row)">删除</el-button>
+              <el-button v-permissions="['base:distributor:edit']" type="text" @click="handleEdit(row)">编辑</el-button>
+              <el-button v-permissions="['base:distributor:delete']" type="text" @click="handleDelete(row)">
+                删除
+              </el-button>
             </template>
           </el-table-column>
           <template #empty>

+ 5 - 3
src/views/base/product/index.vue

@@ -23,7 +23,9 @@
       </vab-query-form-top-panel>
     </vab-query-form>
     <vab-query-form-left-panel>
-      <el-button icon="el-icon-plus" type="primary" @click="handleEdit($event)">添加</el-button>
+      <el-button v-permissions="['base:product:add']" icon="el-icon-plus" type="primary" @click="handleEdit($event)">
+        添加
+      </el-button>
     </vab-query-form-left-panel>
     <vab-query-form-right-panel>
       <table-tool :check-list.sync="checkList" :columns="columns" />
@@ -71,8 +73,8 @@
       </el-table-column>
       <el-table-column align="center" fixed="right" label="操作" show-overflow-tooltip width="120">
         <template #default="{ row }">
-          <el-button type="text" @click="handleEdit(row)">编辑</el-button>
-          <el-button type="text" @click="handleDelete(row)">删除</el-button>
+          <el-button v-permissions="['base:product:edit']" type="text" @click="handleEdit(row)">编辑</el-button>
+          <el-button v-permissions="['base:product:delete']" type="text" @click="handleDelete(row)">删除</el-button>
         </template>
       </el-table-column>
       <template #empty>

+ 1 - 1
src/views/base/productAuth/index.vue

@@ -40,7 +40,7 @@
       </el-table-column>
       <el-table-column align="center" label="操作" width="120px">
         <template #default="{ row }">
-          <el-button type="text" @click="handleAuth(row)">授权</el-button>
+          <el-button v-permissions="['base:productLine:grant']" type="text" @click="handleAuth(row)">授权</el-button>
         </template>
       </el-table-column>
     </el-table>

+ 20 - 6
src/views/base/region/index.vue

@@ -52,21 +52,29 @@
                   <!-- <i class="el-icon-arrow-down el-icon--right"></i> -->
                 </span>
                 <el-dropdown-menu slot="dropdown">
-                  <el-dropdown-item command="edit">编辑</el-dropdown-item>
-                  <el-dropdown-item command="del">删除</el-dropdown-item>
+                  <el-dropdown-item v-permissions="['base:region:edit']" command="edit">编辑</el-dropdown-item>
+                  <el-dropdown-item v-permissions="['base:region:delete']" command="del">删除</el-dropdown-item>
                 </el-dropdown-menu>
               </el-dropdown>
             </span>
           </span>
         </el-tree>
         <footer>
-          <el-button icon="el-icon-plus" @click="getCheckedNodes($event)">添加区域</el-button>
+          <el-button v-permissions="['base:region:add']" icon="el-icon-plus" @click="getCheckedNodes($event)">
+            添加区域
+          </el-button>
         </footer>
       </div>
       <div class="tree-table">
         <vab-query-form>
           <vab-query-form-left-panel>
-            <el-button icon="el-icon-plus" type="primary" @click="handleEdit($event)">添加</el-button>
+            <el-button
+              v-permissions="['base:regionDetail:add']"
+              icon="el-icon-plus"
+              type="primary"
+              @click="handleEdit($event)">
+              添加
+            </el-button>
           </vab-query-form-left-panel>
           <vab-query-form-right-panel>
             <table-tool :check-list.sync="checkList" :columns="columns" />
@@ -94,8 +102,12 @@
           </el-table-column>
           <el-table-column align="center" label="操作" show-overflow-tooltip width="85">
             <template #default="{ row }">
-              <el-button type="text" @click="handleEdit(row)">编辑</el-button>
-              <el-button type="text" @click="handleDelete(row)">删除</el-button>
+              <el-button v-permissions="['base:regionDetail:edit']" type="text" @click="handleEdit(row)">
+                编辑
+              </el-button>
+              <el-button v-permissions="['base:regionDetail:delete']" type="text" @click="handleDelete(row)">
+                删除
+              </el-button>
             </template>
           </el-table-column>
           <template #empty>
@@ -344,11 +356,13 @@
   .side-layout {
     height: calc(100vh - 200px);
   }
+
   ::v-deep .custom-tree-node {
     .el-input__inner {
       padding: 0 !important;
     }
   }
+
   .el-tree-node:focus > .el-tree-node__content {
     /*设置选中的样式 */
     background-color: #dde9ff !important;

+ 7 - 1
src/views/base/regionAuth/index.vue

@@ -20,7 +20,13 @@
           </el-form-item>
         </vab-query-form-left-panel>
         <vab-query-form-right-panel>
-          <el-button icon="el-icon-circle-check" type="primary" @click="handleAuth">授权</el-button>
+          <el-button
+            v-permissions="['base:regionAuth:grant']"
+            icon="el-icon-circle-check"
+            type="primary"
+            @click="handleAuth">
+            授权
+          </el-button>
           <table-tool :check-list.sync="checkList" :columns="columns" />
         </vab-query-form-right-panel>
       </el-form>

+ 30 - 4
src/views/contract/components/DetailsCollection.vue

@@ -12,7 +12,12 @@
     <div class="collection-plan mb10">
       <el-row class="mb10">
         <el-col class="text-right" :span="24">
-          <el-button icon="el-icon-plus" size="mini" type="primary" @click="$refs.collectionPlan.init()">
+          <el-button
+            v-permissions="['contract:detail:collectionPlan:add']"
+            icon="el-icon-plus"
+            size="mini"
+            type="primary"
+            @click="$refs.collectionPlan.init()">
             新建回款计划
           </el-button>
         </el-col>
@@ -40,13 +45,24 @@
         <el-table-column align="center" fixed="right" label="操作" width="120px">
           <template slot-scope="scope">
             <el-button
+              v-permissions="['contract:detail:collection:add']"
               :disabled="scope.row.contractStatus == '30'"
               type="text"
               @click="$refs.collection.init(scope.row.id)">
               回款
             </el-button>
-            <el-button type="text" @click="$refs.collectionPlan.init(scope.row.id)">编辑</el-button>
-            <el-button type="text" @click="handleDel(scope.row, 'plan')">删除</el-button>
+            <el-button
+              v-permissions="['contract:detail:collectionPlan:edit']"
+              type="text"
+              @click="$refs.collectionPlan.init(scope.row.id)">
+              编辑
+            </el-button>
+            <el-button
+              v-permissions="['contract:detail:collectionPlan:delete']"
+              type="text"
+              @click="handleDel(scope.row, 'plan')">
+              删除
+            </el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -55,7 +71,12 @@
     <div class="collection">
       <el-row class="mb10">
         <el-col class="text-right" :span="24">
-          <el-button icon="el-icon-plus" size="mini" type="primary" @click="$refs.collection.init()">
+          <el-button
+            v-permissions="['contract:detail:collection:add']"
+            icon="el-icon-plus"
+            size="mini"
+            type="primary"
+            @click="$refs.collection.init()">
             新建回款
           </el-button>
         </el-col>
@@ -102,6 +123,7 @@
   import EditPlan from '@/views/contract/components/EditPlan'
   import EditCollection from './EditCollection'
   import to from 'await-to-js'
+
   export default {
     name: 'DetailsCollection',
     components: {
@@ -261,14 +283,18 @@
     .mb10 {
       margin-bottom: 10px;
     }
+
     height: 100%;
+
     .collection-plan,
     .collection {
       height: 50%;
+
       .el-row {
         height: 30px;
       }
     }
+
     .text-right {
       text-align: right;
     }

+ 13 - 4
src/views/contract/components/DetailsEnclosure.vue

@@ -21,7 +21,7 @@
           "
           :file-list="fileList"
           :http-request="uploadrequest">
-          <el-button size="mini" type="primary">点击上传</el-button>
+          <el-button v-permissions="['contract:detail:enclosure:add']" size="mini" type="primary">点击上传</el-button>
         </el-upload>
       </el-col>
     </el-row>
@@ -43,9 +43,18 @@
       </el-table-column>
       <el-table-column align="center" fixed="right" label="操作">
         <template slot-scope="scope">
-          <el-button type="text" @click="downFile(scope.row.fileUrl, scope.row.fileName)">下载</el-button>
-          <el-button type="text" @click="rename(scope.row.id)">重命名</el-button>
-          <el-button type="text" @click="handleDel(scope.row)">删除</el-button>
+          <el-button
+            v-permissions="['contract:detail:enclosure:download']"
+            type="text"
+            @click="downFile(scope.row.fileUrl, scope.row.fileName)">
+            下载
+          </el-button>
+          <el-button v-permissions="['contract:detail:enclosure:rename']" type="text" @click="rename(scope.row.id)">
+            重命名
+          </el-button>
+          <el-button v-permissions="['contract:detail:enclosure:delete']" type="text" @click="handleDel(scope.row)">
+            删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>

+ 12 - 1
src/views/contract/components/DetailsInvoice.vue

@@ -11,7 +11,14 @@
   <div class="invoice-container">
     <el-row class="mb10">
       <el-col class="text-right" :span="24">
-        <el-button icon="el-icon-plus" size="mini" type="primary" @click="$refs.invoice.init()">新建发票</el-button>
+        <el-button
+          v-permissions="['contract:detail:invoice:add']"
+          icon="el-icon-plus"
+          size="mini"
+          type="primary"
+          @click="$refs.invoice.init()">
+          新建发票
+        </el-button>
       </el-col>
     </el-row>
     <el-table border :data="invoiceData" height="calc(100% - 50px)">
@@ -166,15 +173,19 @@
 <style lang="scss" scoped>
   .invoice-container {
     height: 100%;
+
     .mb10 {
       margin-bottom: 10px;
     }
+
     .collection {
       height: 100%;
+
       .el-row {
         height: 30px;
       }
     }
+
     .text-right {
       text-align: right;
     }

+ 5 - 3
src/views/contract/detail.vue

@@ -15,7 +15,9 @@
           <h3>
             {{ details.contractName }}
             <span>
-              <el-button icon="el-icon-refresh" @click="handleTransfer">转移</el-button>
+              <el-button v-permissions="['contract:manage:transfer']" icon="el-icon-refresh" @click="handleTransfer">
+                转移
+              </el-button>
             </span>
           </h3>
         </div>
@@ -60,8 +62,8 @@
       </div>
       <div class="info-side">
         <div class="buttons">
-          <el-button type="primary" @click="handleEdit">编辑</el-button>
-          <el-button @click="handleDelete">删除</el-button>
+          <el-button v-permissions="['contract:manage:edit']" type="primary" @click="handleEdit">编辑</el-button>
+          <el-button v-permissions="['contract:manage:delete']" @click="handleDelete">删除</el-button>
           <el-button @click="back">返回</el-button>
         </div>
         <details-records :dynamics-list="dynamicsList" />

+ 33 - 6
src/views/contract/index.vue

@@ -41,9 +41,23 @@
         </el-form>
       </vab-query-form-top-panel>
       <vab-query-form-left-panel :span="12">
-        <el-button icon="el-icon-plus" type="primary" @click="handleEdit()">新建</el-button>
-        <el-button icon="el-icon-refresh" type="primary" @click="handleTransfer()">转移</el-button>
-        <el-button icon="el-icon-delete" type="danger" @click="handleDelete()">删除</el-button>
+        <el-button v-permissions="['contract:manage:add']" icon="el-icon-plus" type="primary" @click="handleEdit()">
+          新建
+        </el-button>
+        <el-button
+          v-permissions="['contract:manage:transfer']"
+          icon="el-icon-refresh"
+          type="primary"
+          @click="handleTransfer()">
+          转移
+        </el-button>
+        <el-button
+          v-permissions="['contract:manage:delete']"
+          icon="el-icon-delete"
+          type="danger"
+          @click="handleDelete()">
+          删除
+        </el-button>
       </vab-query-form-left-panel>
       <vab-query-form-right-panel :span="12">
         <table-tool :check-list.sync="checkList" :columns="columns" />
@@ -116,11 +130,23 @@
       </el-table-column>
       <el-table-column align="center" fixed="right" label="操作" width="90px">
         <template slot-scope="scope">
-          <el-button v-if="scope.row.approStatus == '10'" type="text" @click="handleApply(scope.row.id)">
+          <el-button
+            v-if="scope.row.approStatus == '10'"
+            v-permissions="['contract:manage:apply']"
+            type="text"
+            @click="handleApply(scope.row.id)">
             提交审核
           </el-button>
-          <el-button v-if="scope.row.approStatus == '10'" type="text" @click="handleEdit(scope.row)">编辑</el-button>
-          <el-button type="text" @click="handleDelete(scope.row)">删除</el-button>
+          <el-button
+            v-if="scope.row.approStatus == '10'"
+            v-permissions="['contract:manage:edit']"
+            type="text"
+            @click="handleEdit(scope.row)">
+            编辑
+          </el-button>
+          <el-button v-permissions="['contract:manage:delete']" type="text" @click="handleDelete(scope.row)">
+            删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -147,6 +173,7 @@
   import TableTool from '@/components/table/TableTool'
   import Transfer from './components/Transfer'
   import ApplyContract from './components/ApplyContract'
+
   export default {
     name: 'OpenSea',
     components: {

+ 10 - 2
src/views/contract/invoice.vue

@@ -76,10 +76,18 @@
       </el-table-column>
       <el-table-column align="center" fixed="right" label="操作">
         <template slot-scope="scope">
-          <el-button v-if="scope.row.approStatus == '30'" type="text" @click="$refs.invoicing.init(scope.row.id)">
+          <el-button
+            v-if="scope.row.approStatus == '30'"
+            v-permissions="['contract:invoice:edit']"
+            type="text"
+            @click="$refs.invoicing.init(scope.row.id)">
             更新开票信息
           </el-button>
-          <el-button v-if="scope.row.approStatus == '10'" type="text" @click="handleApply(scope.row.id)">
+          <el-button
+            v-if="scope.row.approStatus == '10'"
+            v-permissions="['contract:invoice:audit']"
+            type="text"
+            @click="handleApply(scope.row.id)">
             提交审核
           </el-button>
         </template>

+ 10 - 4
src/views/customer/detail.vue

@@ -18,7 +18,7 @@
               <span v-show="detail.salesId > 0">
                 <el-button v-permissions="['cust:list:shift']" @click="handleShift">转移客户</el-button>
                 <el-button v-permissions="['cust:list:open']" @click="handleToOpen">移入公海</el-button>
-                <el-button v-permissions="['cust:list:business']" @click="handleBusiness">创建项目</el-button>
+                <el-button v-permissions="['cust:list:project']" @click="handleBusiness">创建项目</el-button>
               </span>
               <span v-show="detail.salesId == 0">
                 <el-button v-permissions="['cust:open:receive']" @click="handleReceive">领取客户</el-button>
@@ -186,7 +186,9 @@
                   @keyup.enter.native="handleClick({ name: 'contact' })" />
               </vab-query-form-left-panel>
               <vab-query-form-right-panel :span="12">
-                <el-button icon="el-icon-plus" @click="addContact">新建联系人</el-button>
+                <el-button v-permissions="['cust:detail:contact:add']" icon="el-icon-plus" @click="addContact">
+                  新建联系人
+                </el-button>
               </vab-query-form-right-panel>
             </vab-query-form>
             <el-table border :data="contactList" height="calc(100% - 42px)" @selection-change="setSelectRows">
@@ -203,8 +205,12 @@
               </el-table-column>
               <el-table-column align="center" label="操作">
                 <template slot-scope="scope">
-                  <el-button type="text" @click="contactEdit(scope.row)">编辑</el-button>
-                  <el-button type="text" @click="contactDel(scope.row)">删除</el-button>
+                  <el-button v-permissions="['cust:deatil:contact:edit']" type="text" @click="contactEdit(scope.row)">
+                    编辑
+                  </el-button>
+                  <el-button v-permissions="['cust:detail:contact:delete']" type="text" @click="contactDel(scope.row)">
+                    删除
+                  </el-button>
                 </template>
               </el-table-column>
             </el-table>

+ 47 - 6
src/views/plat/task/detail.vue

@@ -90,6 +90,7 @@
                 <template #default="{ row }">
                   <el-upload action="#" :http-request="uploadrequest" :show-file-list="false">
                     <el-button
+                      v-permissions="['plat:task:enclosure:add']"
                       size="mini"
                       style="margin-left: 10px"
                       slot="trigger"
@@ -99,6 +100,7 @@
                     </el-button>
                     <el-button
                       v-show="row.progFile"
+                      v-permissions="['plat:task:enclosure:look']"
                       size="mini"
                       style="margin-left: 10px"
                       @click="showFile(row.progFile)">
@@ -115,7 +117,9 @@
               </el-table-column>
               <el-table-column v-if="theTask.step < 30 && type == 1" align="center" label="操作">
                 <template #default="{ row }">
-                  <el-button type="text" @click="handleDel(row.$index)">删除</el-button>
+                  <el-button v-permissions="['plat:task:enclosure:delete']" type="text" @click="handleDel(row.$index)">
+                    删除
+                  </el-button>
                 </template>
               </el-table-column>
             </el-table>
@@ -132,31 +136,53 @@
       </el-col>
       <el-col :span="8">
         <div class="buttons">
-          <el-button v-show="theTask.taskStatus === '10' && type == 1" type="primary" @click="changeStatus(10, '10')">
+          <el-button
+            v-show="theTask.taskStatus === '10' && type == 1"
+            v-permissions="['plat:task:detail:receive']"
+            type="primary"
+            @click="changeStatus(10, '10')">
             接收
           </el-button>
           <el-button
             v-show="theTask.taskStatus === '20' && theTask.step === 20 && type == 1"
+            v-permissions="['plat:task:detail:staging']"
             type="success"
             @click="changeStatus(15)">
             暂存
           </el-button>
           <el-button
             v-show="theTask.taskStatus === '20' && theTask.step === 20 && type == 1"
+            v-permissions="['plat:task:detail:submit']"
             type="primary"
             @click="changeStatus(20, '20')">
             提交
           </el-button>
-          <el-button v-show="theTask.step === 30 && type == 1" type="primary" @click="changeStatus(30, '30')">
+          <el-button
+            v-show="theTask.step === 30 && type == 1"
+            v-permissions="['plat:task:detail:adopt']"
+            type="primary"
+            @click="changeStatus(30, '30')">
             审批通过
           </el-button>
-          <el-button v-show="theTask.step === 30 && type == 1" type="danger" @click="changeStatus(30, '40')">
+          <el-button
+            v-show="theTask.step === 30 && type == 1"
+            v-permissions="['plat:task:detail:return']"
+            type="danger"
+            @click="changeStatus(30, '40')">
             审批退回
           </el-button>
-          <el-button v-show="theTask.step === 40 && type == 1" type="primary" @click="changeStatus(40, '30')">
+          <el-button
+            v-show="theTask.step === 40 && type == 1"
+            v-permissions="['plat:task:detail:adopt']"
+            type="primary"
+            @click="changeStatus(40, '30')">
             审批通过
           </el-button>
-          <el-button v-show="theTask.step === 40 && type == 1" type="danger" @click="changeStatus(40, '40')">
+          <el-button
+            v-show="theTask.step === 40 && type == 1"
+            v-permissions="['plat:task:detail:return']"
+            type="danger"
+            @click="changeStatus(40, '40')">
             审批退回
           </el-button>
           <el-button @click="$router.go(-1)">返回</el-button>
@@ -191,6 +217,7 @@
   import asyncUploadFile from '@/utils/uploadajax'
   import dictApi from '@/api/system/dict'
   import axios from 'axios'
+
   export default {
     name: 'TaskDetail',
     data() {
@@ -363,12 +390,15 @@
     height: calc(100vh - 60px - 12px * 2 - 40px);
     display: flex;
     padding: 20px 40px;
+
     > .el-row {
       flex: 1;
+
       > .el-col {
         height: 100%;
       }
     }
+
     .title {
       p,
       h3 {
@@ -390,6 +420,7 @@
         justify-content: space-between;
       }
     }
+
     header {
       min-height: 134px;
       background: rgba(196, 196, 196, 0.5);
@@ -399,6 +430,7 @@
       align-items: center;
       padding: 7px 20px;
       margin-top: 16px;
+
       ::v-deep .el-descriptions__body {
         background: transparent;
       }
@@ -418,39 +450,48 @@
         white-space: nowrap;
       }
     }
+
     .buttons {
       height: 60px;
       padding-top: 28px;
       text-align: right;
     }
+
     .add-pro {
       text-align: right;
       margin: 10px 0;
     }
+
     .records {
       padding: 10px 20px;
       height: calc(100% - 60px);
       overflow-y: auto;
+
       li {
         display: flex;
         align-items: center;
+
         i {
           font-size: 40px;
           margin-right: 10px;
         }
+
         .text {
           flex: 1;
         }
+
         p {
           height: 20px;
           line-height: 20px;
           display: flex;
           justify-content: space-between;
           font-weight: 500;
+
           &:first-child {
             font-weight: bold;
           }
         }
+
         & + li {
           margin-top: 10px;
         }

+ 5 - 2
src/views/plat/task/index.vue

@@ -65,7 +65,9 @@
             </el-form>
           </vab-query-form-top-panel>
           <vab-query-form-left-panel :span="12">
-            <el-button icon="el-icon-plus" type="primary" @click="handleAdd">添加</el-button>
+            <el-button v-permissions="['plat:task:add']" icon="el-icon-plus" type="primary" @click="handleAdd">
+              添加
+            </el-button>
           </vab-query-form-left-panel>
           <vab-query-form-right-panel :span="12">
             <!-- <el-button icon="el-icon-download" @click="exportData" /> -->
@@ -369,7 +371,7 @@
         // this.detailDialogVisible = true
         this.$store.state.task.theTask = { ...row }
         this.$router.push({
-          path: '/customer/plat/task/detail',
+          path: '/plat/task/detail',
           query: {
             type: this.queryForm.operateType,
           },
@@ -438,6 +440,7 @@
   .type {
     font-weight: bold;
   }
+
   $base: '.list';
   .link-button {
     font-size: 14px;

+ 2 - 0
src/views/proj/business/components/BusinessGradation.vue

@@ -1,12 +1,14 @@
 <template>
   <div style="display: inline-block; margin: 0 10px">
     <el-button
+      v-permissions="['proj:business:upgrade']"
       :disabled="!['20', '30'].includes(businessInfo.nboType) || businessInfo.approStatus === '20'"
       type="primary"
       @click="handleClick('up')">
       升级
     </el-button>
     <el-button
+      v-permissions="['proj:business:downgrade']"
       :disabled="!['10', '20'].includes(businessInfo.nboType) || businessInfo.approStatus === '20'"
       type="danger"
       @click="handleClick('down')">

+ 12 - 4
src/views/proj/business/components/DetailsContact.vue

@@ -10,9 +10,13 @@
           @keyup.enter.native="fetchData" />
       </vab-query-form-left-panel>
       <vab-query-form-right-panel :span="12">
-        <el-button icon="el-icon-plus" @click="handleAddContact">新建联系人</el-button>
-        <el-button @click="handleSelectContact">关联</el-button>
-        <el-button type="danger" @click="handleDisassociation">解除关联</el-button>
+        <el-button v-permissions="['proj:business:customerContact:add']" icon="el-icon-plus" @click="handleAddContact">
+          新建客户联系人
+        </el-button>
+        <el-button v-permissions="['proj:business:contact:associate']" @click="handleSelectContact">关联</el-button>
+        <el-button v-permissions="['proj:business:contact:disassociate']" type="danger" @click="handleDisassociation">
+          解除关联
+        </el-button>
       </vab-query-form-right-panel>
     </vab-query-form>
     <el-table v-loading="listLoading" :data="contactList" height="calc(100% - 42px)" @selection-change="setSelectRows">
@@ -30,7 +34,11 @@
       <!--      </el-table-column>-->
       <el-table-column align="center" label="操作" show-overflow-tooltip>
         <template slot-scope="scope">
-          <el-button v-if="scope.row.contactId !== primacyContactId" type="text" @click="setPrimacyContact(scope.row)">
+          <el-button
+            v-if="scope.row.contactId !== primacyContactId"
+            v-permissions="['proj:business:contact:primary']"
+            type="text"
+            @click="setPrimacyContact(scope.row)">
             设为首要联系人
           </el-button>
           <span v-else>首要联系人</span>

+ 11 - 5
src/views/proj/business/detail.vue

@@ -9,14 +9,20 @@
             <span>
               <!--升级、降级-->
               <business-gradation :bus-id="id" :business-info="details" @fetch-data="init" />
-              <el-button :disabled="details.approStatus === '20'" @click="handleTransfer">转移项目</el-button>
               <el-button
+                v-permissions="['proj:business:transfer']"
+                :disabled="details.approStatus === '20'"
+                @click="handleTransfer">
+                转移项目
+              </el-button>
+              <el-button
+                v-permissions="['proj:business:reserve']"
                 :disabled="details.nboType === '40' || details.nboType === '50' || details.approStatus === '20'"
                 @click="handleToReserve">
                 转为储备
               </el-button>
-              <el-button>创建工单</el-button>
-              <el-button @click="createContract">创建合同</el-button>
+              <el-button v-permissions="['proj:business:workOrder']">创建工单</el-button>
+              <el-button v-permissions="['proj:business:contract']" @click="createContract">创建合同</el-button>
             </span>
           </h3>
         </div>
@@ -184,8 +190,8 @@
       </div>
       <div class="info-side">
         <div class="buttons">
-          <el-button type="primary" @click="handleEdit">编辑</el-button>
-          <el-button @click="handleDelete">删除</el-button>
+          <el-button v-permissions="['proj:business:edit']" type="primary" @click="handleEdit">编辑</el-button>
+          <!--          <el-button @click="handleDelete">删除</el-button>-->
           <el-button @click="$router.go(-1)">返回</el-button>
         </div>
         <details-records :dynamics-list="dynamicsList" />

+ 12 - 4
src/views/proj/business/index.vue

@@ -47,8 +47,16 @@
       </vab-query-form-top-panel>
 
       <vab-query-form-left-panel :span="12">
-        <el-button icon="el-icon-plus" type="primary" @click="handleEdit">新增项目</el-button>
-        <el-button icon="el-icon-refresh" type="primary" @click="handleTransfer">转移项目</el-button>
+        <el-button v-permissions="['proj:business:add']" icon="el-icon-plus" type="primary" @click="handleEdit">
+          新增项目
+        </el-button>
+        <el-button
+          v-permissions="['proj:business:transfer']"
+          icon="el-icon-refresh"
+          type="primary"
+          @click="handleTransfer">
+          转移项目
+        </el-button>
         <!--        <el-button icon="el-icon-plus" type="primary" @click="handleEdit">创建任务</el-button>-->
         <!--        <el-button icon="el-icon-plus" type="primary" @click="handleEdit">创建工单</el-button>-->
         <!--        <el-button icon="el-icon-plus" type="primary" @click="handleEdit">创建合同</el-button>-->
@@ -125,8 +133,8 @@
       <el-table-column align="center" fixed="right" label="操作" width="68">
         <template #default="{ row }">
           <!--          <el-button type="text" @click="handleFollow(row)">跟进</el-button>-->
-          <el-button type="text" @click="handleEdit(row)">编辑</el-button>
-          <!--          <el-button type="text" @click="handleDelete(row)">删除</el-button>-->
+          <el-button v-permissions="['proj:business:edit']" type="text" @click="handleEdit(row)">编辑</el-button>
+          <!--                    <el-button type="text" @click="handleDelete(row)">删除</el-button>-->
         </template>
       </el-table-column>
     </el-table>

+ 8 - 4
src/views/system/config/index.vue

@@ -32,8 +32,12 @@
         </el-form>
       </vab-query-form-top-panel>
       <vab-query-form-left-panel :span="12">
-        <el-button icon="el-icon-plus" type="primary" @click="handleEdit">添加</el-button>
-        <el-button icon="el-icon-delete" type="danger" @click="handleDelete">删除</el-button>
+        <el-button v-permissions="['system:config:add']" icon="el-icon-plus" type="primary" @click="handleEdit">
+          添加
+        </el-button>
+        <el-button v-permissions="['system:config:delete']" icon="el-icon-delete" type="danger" @click="handleDelete">
+          删除
+        </el-button>
       </vab-query-form-left-panel>
       <vab-query-form-right-panel :span="12">
         <table-tool :check-list.sync="checkList" :columns="columns" />
@@ -59,8 +63,8 @@
 
       <el-table-column align="center" label="操作" width="85">
         <template #default="{ row }">
-          <el-button type="text" @click="handleEdit(row)">编辑</el-button>
-          <el-button type="text" @click="handleDelete(row)">删除</el-button>
+          <el-button v-permissions="['system:config:edit']" type="text" @click="handleEdit(row)">编辑</el-button>
+          <el-button v-permissions="['system:dept:delete']" type="text" @click="handleDelete(row)">删除</el-button>
         </template>
       </el-table-column>
     </el-table>

+ 18 - 4
src/views/system/dept/index.vue

@@ -20,8 +20,16 @@
         </el-form>
       </vab-query-form-top-panel>
       <vab-query-form-left-panel :span="12">
-        <el-button icon="el-icon-plus" type="primary" @click="handleEdit($event)">添加</el-button>
-        <el-button icon="el-icon-delete" type="danger" @click="handleDelete($event)">删除</el-button>
+        <el-button v-permissions="['system:dept:add']" icon="el-icon-plus" type="primary" @click="handleEdit($event)">
+          添加
+        </el-button>
+        <el-button
+          v-permissions="['system:dept:delete']"
+          icon="el-icon-delete"
+          type="danger"
+          @click="handleDelete($event)">
+          删除
+        </el-button>
       </vab-query-form-left-panel>
       <vab-query-form-right-panel :span="12">
         <table-tool :check-list.sync="checkList" :columns="columns" />
@@ -58,8 +66,14 @@
       </el-table-column>
       <el-table-column label="操作" width="85">
         <template #default="{ row }">
-          <el-button type="text" @click="handleEdit(row)">编辑</el-button>
-          <el-button :disabled="!row.parentId" type="text" @click="handleDelete(row)">删除</el-button>
+          <el-button v-permissions="['system:dept:edit']" type="text" @click="handleEdit(row)">编辑</el-button>
+          <el-button
+            v-permissions="['system:dept:delete']"
+            :disabled="!row.parentId"
+            type="text"
+            @click="handleDelete(row)">
+            删除
+          </el-button>
         </template>
       </el-table-column>
       <template #empty>

+ 16 - 4
src/views/system/dict/dataList.vue

@@ -2,8 +2,20 @@
   <div class="user-management-container">
     <vab-query-form>
       <vab-query-form-left-panel :span="5">
-        <el-button icon="el-icon-plus" type="primary" @click="handleEdit($event)">添加</el-button>
-        <el-button icon="el-icon-delete" type="danger" @click="handleDelete($event)">删除</el-button>
+        <el-button
+          v-permissions="['system:dictData:add']"
+          icon="el-icon-plus"
+          type="primary"
+          @click="handleEdit($event)">
+          添加
+        </el-button>
+        <el-button
+          v-permissions="['system:dictData:edit']"
+          icon="el-icon-delete"
+          type="danger"
+          @click="handleDelete($event)">
+          删除
+        </el-button>
       </vab-query-form-left-panel>
       <vab-query-form-right-panel :span="19">
         <el-form :inline="true" :model="queryForm" @submit.native.prevent>
@@ -59,8 +71,8 @@
       </el-table-column>
       <el-table-column align="center" label="操作" show-overflow-tooltip width="85">
         <template #default="{ row }">
-          <el-button type="text" @click="handleEdit(row)">编辑</el-button>
-          <el-button type="text" @click="handleDelete(row)">删除</el-button>
+          <el-button v-permissions="['system:dictData:edit']" type="text" @click="handleEdit(row)">编辑</el-button>
+          <el-button v-permissions="['system:dictData:detele']" type="text" @click="handleDelete(row)">删除</el-button>
         </template>
       </el-table-column>
       <template #empty>

+ 16 - 4
src/views/system/dict/index.vue

@@ -2,8 +2,20 @@
   <div class="user-management-container">
     <vab-query-form>
       <vab-query-form-left-panel :span="5">
-        <el-button icon="el-icon-plus" type="primary" @click="handleEdit($event)">添加</el-button>
-        <el-button icon="el-icon-delete" type="danger" @click="handleDelete($event)">删除</el-button>
+        <el-button
+          v-permissions="['system:dictType:add']"
+          icon="el-icon-plus"
+          type="primary"
+          @click="handleEdit($event)">
+          添加
+        </el-button>
+        <el-button
+          v-permissions="['system:dictType:delete']"
+          icon="el-icon-delete"
+          type="danger"
+          @click="handleDelete($event)">
+          删除
+        </el-button>
       </vab-query-form-left-panel>
       <vab-query-form-right-panel :span="19">
         <el-form :inline="true" :model="queryForm" @submit.native.prevent>
@@ -50,8 +62,8 @@
       </el-table-column>
       <el-table-column align="center" label="操作" show-overflow-tooltip width="85">
         <template #default="{ row }">
-          <el-button type="text" @click="handleEdit(row)">编辑</el-button>
-          <el-button type="text" @click="handleDelete(row)">删除</el-button>
+          <el-button v-permissions="['system:dictType:edit']" type="text" @click="handleEdit(row)">编辑</el-button>
+          <el-button v-permissions="['system:dictType:delete']" type="text" @click="handleDelete(row)">删除</el-button>
         </template>
       </el-table-column>
       <template #empty>

+ 12 - 4
src/views/system/group/index.vue

@@ -2,8 +2,16 @@
   <div class="user-management-container">
     <vab-query-form>
       <vab-query-form-left-panel :span="5">
-        <el-button icon="el-icon-plus" type="primary" @click="handleEdit($event)">添加</el-button>
-        <el-button icon="el-icon-delete" type="danger" @click="handleDelete($event)">删除</el-button>
+        <el-button v-permissions="['system:group:add']" icon="el-icon-plus" type="primary" @click="handleEdit($event)">
+          添加
+        </el-button>
+        <el-button
+          v-permissions="['system:group:delete']"
+          icon="el-icon-delete"
+          type="danger"
+          @click="handleDelete($event)">
+          删除
+        </el-button>
       </vab-query-form-left-panel>
       <vab-query-form-right-panel :span="19">
         <el-form :inline="true" :model="queryForm" @submit.native.prevent>
@@ -45,8 +53,8 @@
       </el-table-column>
       <el-table-column align="center" label="操作" show-overflow-tooltip width="85">
         <template #default="{ row }">
-          <el-button type="text" @click="handleEdit(row)">编辑</el-button>
-          <el-button type="text" @click="handleDelete(row)">删除</el-button>
+          <el-button v-permissions="['system:group:edit']" type="text" @click="handleEdit(row)">编辑</el-button>
+          <el-button v-permissions="['system:group:delete']" type="text" @click="handleDelete(row)">删除</el-button>
         </template>
       </el-table-column>
       <template #empty>

+ 8 - 1
src/views/system/loginLog/index.vue

@@ -51,7 +51,14 @@
         </el-form>
       </vab-query-form-top-panel>
       <vab-query-form-left-panel>
-        <el-button icon="el-icon-delete" size="mini" type="danger" @click="handleDelete">删除</el-button>
+        <el-button
+          v-permissions="['system:loginLog:delete']"
+          icon="el-icon-delete"
+          size="mini"
+          type="danger"
+          @click="handleDelete">
+          删除
+        </el-button>
       </vab-query-form-left-panel>
       <vab-query-form-right-panel>
         <table-tool :check-list.sync="checkList" :columns="columns" />

+ 5 - 3
src/views/system/menu/index.vue

@@ -14,7 +14,9 @@
 
     <vab-query-form>
       <vab-query-form-top-panel :span="12">
-        <el-button icon="el-icon-plus" type="primary" @click="handleEdit('')">添加</el-button>
+        <el-button v-permissions="['system:menu:add']" icon="el-icon-plus" type="primary" @click="handleEdit()">
+          添加
+        </el-button>
       </vab-query-form-top-panel>
     </vab-query-form>
     <el-table
@@ -96,8 +98,8 @@
       <!--            </el-table-column>-->
       <el-table-column fixed="right" label="操作" show-overflow-tooltip width="85">
         <template #default="{ row }">
-          <el-button type="text" @click="handleEdit(row)">编辑</el-button>
-          <el-button type="text" @click="handleDelete(row)">删除</el-button>
+          <el-button v-permissions="['system:menu:edit']" type="text" @click="handleEdit(row)">编辑</el-button>
+          <el-button v-permissions="['system:menu:delete']" type="text" @click="handleDelete(row)">删除</el-button>
         </template>
       </el-table-column>
       <template #empty>

+ 8 - 4
src/views/system/notice/index.vue

@@ -22,8 +22,12 @@
         </el-form>
       </vab-query-form-top-panel>
       <vab-query-form-left-panel :span="12">
-        <el-button icon="el-icon-plus" type="primary" @click="handleEdit">添加</el-button>
-        <el-button icon="el-icon-delete" type="danger" @click="handleDelete">删除</el-button>
+        <el-button v-permissions="['system:notice:add']" icon="el-icon-plus" type="primary" @click="handleEdit">
+          添加
+        </el-button>
+        <el-button v-permissions="['system:notice:delete']" icon="el-icon-delete" type="danger" @click="handleDelete">
+          删除
+        </el-button>
       </vab-query-form-left-panel>
       <vab-query-form-right-panel :span="12">
         <table-tool :check-list.sync="checkList" :columns="columns" />
@@ -48,8 +52,8 @@
 
       <el-table-column align="center" label="操作" width="85">
         <template #default="{ row }">
-          <el-button type="text" @click="handleEdit(row)">编辑</el-button>
-          <el-button type="text" @click="handleDelete(row)">删除</el-button>
+          <el-button v-permissions="['system:notice:edit']" type="text" @click="handleEdit(row)">编辑</el-button>
+          <el-button v-permissions="['system:notice:delete']" type="text" @click="handleDelete(row)">删除</el-button>
         </template>
       </el-table-column>
     </el-table>

+ 14 - 6
src/views/system/post/index.vue

@@ -1,11 +1,19 @@
 <template>
   <div class="user-management-container">
     <vab-query-form>
-      <vab-query-form-left-panel :span="5">
-        <el-button icon="el-icon-plus" type="primary" @click="handleEdit($event)">添加</el-button>
-        <el-button icon="el-icon-delete" type="danger" @click="handleDelete($event)">删除</el-button>
+      <vab-query-form-left-panel :span="4">
+        <el-button v-permissions="['system:post:add']" icon="el-icon-plus" type="primary" @click="handleEdit($event)">
+          添加
+        </el-button>
+        <el-button
+          v-permissions="['system:post:delete']"
+          icon="el-icon-delete"
+          type="danger"
+          @click="handleDelete($event)">
+          删除
+        </el-button>
       </vab-query-form-left-panel>
-      <vab-query-form-right-panel :span="19">
+      <vab-query-form-right-panel :span="20">
         <el-form :inline="true" :model="queryForm" @submit.native.prevent>
           <el-form-item label="岗位名称" prop="postName">
             <el-input v-model.trim="queryForm.postName" clearable placeholder="请输入岗位名称" />
@@ -45,8 +53,8 @@
       </el-table-column>
       <el-table-column align="center" label="操作" show-overflow-tooltip width="85">
         <template #default="{ row }">
-          <el-button type="text" @click="handleEdit(row)">编辑</el-button>
-          <el-button type="text" @click="handleDelete(row)">删除</el-button>
+          <el-button v-permissions="['system:post:edit']" type="text" @click="handleEdit(row)">编辑</el-button>
+          <el-button v-permissions="['system:post:delete']" type="text" @click="handleDelete(row)">删除</el-button>
         </template>
       </el-table-column>
       <template #empty>

+ 15 - 5
src/views/system/role/index.vue

@@ -2,8 +2,16 @@
   <div class="role-management-container">
     <vab-query-form>
       <vab-query-form-left-panel :span="12">
-        <el-button icon="el-icon-plus" type="primary" @click="handleEdit($event)">添加</el-button>
-        <el-button icon="el-icon-delete" type="danger" @click="handleDelete($event)">删除</el-button>
+        <el-button v-permissions="['system:role:add']" icon="el-icon-plus" type="primary" @click="handleEdit($event)">
+          添加
+        </el-button>
+        <el-button
+          v-permissions="['system:role:delete']"
+          icon="el-icon-delete"
+          type="danger"
+          @click="handleDelete($event)">
+          删除
+        </el-button>
       </vab-query-form-left-panel>
       <vab-query-form-right-panel :span="12">
         <el-form :inline="true" :model="queryForm" @submit.native.prevent>
@@ -45,9 +53,11 @@
       </el-table-column>
       <el-table-column align="center" label="操作" show-overflow-tooltip width="150">
         <template #default="{ row }">
-          <el-button type="text" @click="handleEdit(row)">编辑</el-button>
-          <el-button type="text" @click="handleDataScope(row)">数据权限</el-button>
-          <el-button type="text" @click="handleDelete(row)">删除</el-button>
+          <el-button v-permissions="['system:role:edit']" type="text" @click="handleEdit(row)">编辑</el-button>
+          <el-button v-permissions="['system:role:dataScoup']" type="text" @click="handleDataScope(row)">
+            数据权限
+          </el-button>
+          <el-button v-permissions="['system:role:delete']" type="text" @click="handleDelete(row)">删除</el-button>
         </template>
       </el-table-column>
       <template #empty>

+ 16 - 4
src/views/system/user/index.vue

@@ -27,8 +27,20 @@
       <el-col :span="20" :xs="24">
         <vab-query-form>
           <vab-query-form-left-panel :span="12">
-            <el-button icon="el-icon-plus" type="primary" @click="handleEdit($event)">添加</el-button>
-            <el-button icon="el-icon-delete" type="danger" @click="handleDelete($event)">删除</el-button>
+            <el-button
+              v-permissions="['system:user:add']"
+              icon="el-icon-plus"
+              type="primary"
+              @click="handleEdit($event)">
+              添加
+            </el-button>
+            <el-button
+              v-permissions="['system:user:delete']"
+              icon="el-icon-delete"
+              type="danger"
+              @click="handleDelete($event)">
+              删除
+            </el-button>
           </vab-query-form-left-panel>
           <vab-query-form-right-panel :span="12">
             <el-form :inline="true" :model="queryForm" @submit.native.prevent>
@@ -70,8 +82,8 @@
           </el-table-column>
           <el-table-column align="center" label="操作" show-overflow-tooltip width="85">
             <template #default="{ row }">
-              <el-button type="text" @click="handleEdit(row)">编辑</el-button>
-              <el-button type="text" @click="handleDelete(row)">删除</el-button>
+              <el-button v-permissions="['system:user:edit']" type="text" @click="handleEdit(row)">编辑</el-button>
+              <el-button v-permissions="['system:user:delete']" type="text" @click="handleDelete(row)">删除</el-button>
             </template>
           </el-table-column>
           <template #empty>

+ 9 - 1
src/views/work/order/index.vue

@@ -17,7 +17,14 @@
     </el-row>
     <vab-query-form>
       <vab-query-form-left-panel :span="12">
-        <el-button icon="el-icon-plus" size="mini" type="primary" @click="$refs.edit.init()">新建</el-button>
+        <el-button
+          v-permissions="['proj:business:edit']"
+          icon="el-icon-plus"
+          size="mini"
+          type="primary"
+          @click="$refs.edit.init()">
+          新建
+        </el-button>
       </vab-query-form-left-panel>
       <vab-query-form-right-panel :span="12">
         <el-button icon="el-icon-download" @click="exportData" />
@@ -84,6 +91,7 @@
   import TableTool from '@/components/table/TableTool'
 
   export default {
+    name: 'WorkOrder',
     components: { TableTool },
     data() {
       return {