Просмотр исходного кода

Merge branch 'dev' into DK_dev

wks 1 год назад
Родитель
Сommit
4d8624af5e

+ 72 - 0
src/http/moudules/sys.js

@@ -427,3 +427,75 @@ export const dataPermissionsUpdate = (data) => {
     })
 }
 
+//数据权限详情列表
+export const getDataPermissions = (data) => {
+    return axios({
+        url: '/dataPermissions/queryPage',
+        method: 'post',
+        data
+    })
+}
+
+//数据权限回显
+export const getDataPermissionsItem = (id) => {
+    return axios({
+        url:`/dataPermissions/${id}`,
+        method: 'get',
+      
+    })
+}
+
+
+//获取角色关联菜单列表
+export const getInsRoleMenuPermissions = (data) => {
+    return axios({
+        url:`/insRolePermissions/getInsRoleMenuPermissions`,
+        method: 'post',
+        data
+      
+    })
+}
+//设置角色关联菜单
+export const saveAndUpdateRuleMenu = (data) => {
+    return axios({
+        url:`/insRolePermissions/saveAndUpdateRuleMenu`,
+        method: 'post',
+        data
+      
+    })
+}
+
+//获取菜单关联数据-无分页
+export const getMenuRelaPerqueryList = (data) => {
+    return axios({
+        url:`/dataPermissions/queryList`,
+        method: 'post',
+        data
+      
+    })
+}
+//获取角色关联菜单 关联的规则数据
+export const getInsRolePermissionsDtoList = (data) => {
+    return axios({
+        url:`/insRolePermissions/getInsRolePermissionsDtoList`,
+        method: 'post',
+        data
+      
+    })
+}
+//保存角色关联菜单 关联的规则数据
+export const roleMenuPerSaveAndUpdate = (data) => {
+    return axios({
+        url:`/insRolePermissions/saveAndUpdate`,
+        method: 'post',
+        data
+      
+    })
+}
+
+
+
+
+
+
+

+ 2 - 2
src/http/moudules/user.js

@@ -688,9 +688,9 @@ export const queryGeographyRecord = (data) => {
 
 
 // 电销管理人
-export const findDxUserList = () => {
+export const findDxUserList = (type) => {
   return axios({
-    url: '/user/findDxUserList',
+    url: '/user/findDxUserList?type='+type,
     method: 'get',
   })
 }

+ 1 - 1
src/views/AgreementManage/CarInsurance/ProductCostExamine.vue

@@ -857,7 +857,7 @@ export default {
     agreementIdFormatter(row, column) {
       let allAgreementItem = this.allAgreementList.find((val) => val.id == row.agreementId)
       if(allAgreementItem) {
-        return <a onClick={ this.handleAgreement.bind(null, row) } style={{color: '#409eff', cursor: 'pointer'}}>{ allAgreementItem.agreementName }</a>;
+        return <a onClick={ this.handleAgreement.bind(null, row) } style={{color: '#409eff', cursor: 'pointer'}}>{ row.agreementName }</a>;
       }
     },
     downloadRender(row) {

+ 119 - 2
src/views/FinancialManagement/ContractManagement/ContractManagement.vue

@@ -443,6 +443,7 @@
                   :label="item.accountName"
                 ></el-option>
               </el-select>
+              <el-button size="small" type="primary" @click="addAmount('1')">添加</el-button>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -477,6 +478,8 @@
                   :label="item.accountName"
                 ></el-option>
               </el-select>
+              <el-button size="small" type="primary" @click="addAmount('2')">添加</el-button>
+
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -505,6 +508,7 @@
               "
             >
               <!-- <treeSelect :options="esmInsCompanyList" @getValue="getValue" /> -->
+              <!-- @select="handleSelect" -->
               <treeselect
                 style="width: 600px"
                 v-model="form.supplierIdList"
@@ -512,7 +516,7 @@
                 :options="esmInsCompanyList"
                 :normalizer="normalizer"
                 :multiple="true"
-                @select="handleSelect"
+               
                 :children-as-objects="true"
                 flat
               ></treeselect>
@@ -932,7 +936,7 @@
                     :options="esmInsCompanyList"
                     :normalizer="normalizer"
                     :multiple="true"
-                    @select="handleSelect"
+                    
                     :children-as-objects="true"
                     :disabled="true"
                   ></treeselect>
@@ -1104,6 +1108,19 @@
         >
       </span>
     </el-dialog>
+    <expense-component
+      ref="expenseComponent"
+      :type="1"
+      :formData="accountFormData "
+      :formDataId="''"
+      :title="'新增账户信息'"
+      :dialogFormVisible="dialogFormVisible"
+      :nature_businessData="nature_businessData"
+      @resetForm="resetFormItem"
+      @submitForm="submitForm"
+      
+    ></expense-component>
+    <!-- @setDateInterval="setDateInterval" -->
   </div>
 </template>
 
@@ -1115,15 +1132,20 @@ import "@vue-office/docx/lib/index.css";
 import KtButton from "@/views/Core/KtButton";
 
 import VueDocPreview from "vue-doc-preview";
+import ExpenseComponent from "../ExpenseManagement/ExpenseComponent.vue"; //新增账户信息弹框
+
 export default {
   components: {
     VueOfficeDocx,
     VueOfficePdf,
     KtButton,
     VueDocPreview,
+    ExpenseComponent
   },
   data() {
     return {
+      dialogFormVisible: false, //弹出框状态
+
       fileDialog: false,
       showFileList: [],
       formInline: {
@@ -1135,6 +1157,19 @@ export default {
         internalCompanyId: "",
         supplierIdList: [],
       },
+      //账户信息form
+      accountFormData: {
+        outerFlag: "0", //账户类别
+        accountName: "", //户名
+        businessQuality: "", //营业性质
+        establishTime: "", //成立日期
+        invoicingAmount: 0, //开票额度
+        juridicalPerson: "", //法人
+        owned: "", //所属地
+        biller: "", //开票员
+        tentativeEstimates: "", //暂估值
+        simpleName: "", //账户简称
+      },
       messageDialog: false,
       tableDialog: false,
       multipleSelection: [],
@@ -1255,6 +1290,9 @@ export default {
       contractStatus: "",
       shoulDisabled: true,
       isMessage: false,
+      nature_businessData: [], //营业性质数据字典
+      accountType:"",//1为甲方  2为乙方
+
     };
   },
   watch: {
@@ -1283,9 +1321,84 @@ export default {
     this.getEsmInsCompany();
     this.getContractType();
     this.getList();
+    this.business("nature_business"); //营业性质字典
     this.resetForm = { ...this.form };
   },
   methods: {
+    //数据字典
+    business(typeName) {
+      this.$api.dict.findByLableName(typeName).then((res) => {
+        this[typeName + "Data"] = res.data;
+      
+      });
+    },
+    //新增事件
+    addAmount(type) {
+      this.accountType=type
+      this.dialogFormVisible = true;
+      // this.resetFormItem();
+      this.accountFormData= {
+        outerFlag: "0", //账户类别
+        accountName: "", //户名
+        businessQuality: "", //营业性质
+        establishTime: "", //成立日期
+        invoicingAmount: 0, //开票额度
+        juridicalPerson: "", //法人
+        owned: "", //所属地
+        biller: "", //开票员
+        tentativeEstimates: "", //暂估值
+        simpleName: "", //账户简称
+      }
+    },
+     //提交
+     async submitForm() {
+      
+        //新增修改账户信息
+        let params = JSON.parse(JSON.stringify(this.accountFormData));
+       
+          //新增
+           this.$api.expense.insertAccount(params).then((res) => {
+            if (res.code == 200) {
+              this.$message({
+                message: "添加成功",
+                type: "success",
+              });
+              console.log(res.data)
+             
+              if(res.data.accountName==this.accountFormData.accountName){
+                if(this.accountType==1){
+                  this.form.externalCompaniesId=res.data.accountId
+                  this.getInvAccountList();
+
+                  this.resetFormItem();
+
+                }else{
+                  this.form.internalCompanyId=res.data.accountId
+                  this.getInvAccountList();
+
+                  this.resetFormItem();
+                }
+              }
+              //  this.getInvAccountList();
+              // this.getEsmInsCompany();
+             
+              // this.dialogFormVisible = false;
+            } else {
+              this.$message({
+                message: `添加失败, ${res.msg}`,
+                type: "error",
+              });
+            }
+          });
+        
+      
+    },
+     //弹框取消重置
+     resetFormItem() {
+      this.dialogFormVisible = false;
+    
+      this.$refs.expenseComponent.cleanForm();
+    },
     downLoadFile(row) {
       let name = row.fileName;
       fetch(`${process.env.BASE_URL}${row.url}`)
@@ -1653,6 +1766,7 @@ export default {
         if (res.code === 200) {
           this.esmInsCompanyList = [...res.data];
         }
+        
       });
     },
     //甲方/乙方选择
@@ -1705,10 +1819,13 @@ export default {
         if (res.code === 200) {
           this.accountList = [...res.data];
           const obj = {};
+         
           res.data.forEach((v, i) => {
             obj[v.accountId] = v.outerFlag;
+            
           });
           this.accountObj = { ...obj };
+          this.resetFormItem();
         }
       });
     },

+ 1 - 1
src/views/PeopleManage/Sales/SalesExamine.vue

@@ -630,7 +630,7 @@ export default {
           });
         });
         //添加电销负责人
-        this.$api.user.findDxUserList().then((res) => {
+        this.$api.user.findDxUserList("2").then((res) => {
           this.managerOptions = res.data;
         }); 
     },

+ 1 - 1
src/views/PeopleManage/Sales/SalesExamineGroup.vue

@@ -626,7 +626,7 @@ export default {
           this.searchLeaderOptions = [...res.data];
         });
         //添加电销负责人
-        this.$api.user.findDxUserList().then((res) => {
+        this.$api.user.findDxUserList("1").then((res) => {
           this.managerOptions = res.data;
         }); 
     },

+ 1 - 1
src/views/PeopleManage/Sales/SalesManage.vue

@@ -826,7 +826,7 @@ export default {
           this.searchLeaderOptions = res.data;
         });
       //添加电销负责人
-      this.$api.user.findDxUserList().then((res) => {
+      this.$api.user.findDxUserList("2").then((res) => {
         this.managerOptions = res.data;
       });
     },

+ 1 - 1
src/views/PeopleManage/Sales/SalesManageGroup.vue

@@ -804,7 +804,7 @@ export default {
           this.searchLeaderOptions = res.data;
         });
         //添加电销负责人
-        this.$api.user.findDxUserList().then((res) => {
+        this.$api.user.findDxUserList("1").then((res) => {
         this.managerOptions = res.data;
       }); 
     },

+ 118 - 6
src/views/Sys/DataPermissions.vue

@@ -59,9 +59,19 @@
         fixed="right" header-align="center" align="center" width="185" :label="$t('action.operation')">
         <template slot-scope="scope">
           <kt-button 
-           label="数据权限" 
-           sperms="sys:menu:edit" 
-          @click="handPermissions(scope.row)"/>
+          v-if="scope.row.type === 1"
+            label="数据权限" 
+            sperms="sys:dataPermissions:save" 
+            @click="handPermissions(scope.row)"
+            type="primary"
+          />
+          <kt-button 
+          v-if="scope.row.type === 1"
+            label="详情" 
+            sperms="sys:dataPermissions:view" 
+            @click="watchPermissions(scope.row)"
+            type="primary"
+          />
           <!-- <kt-button icon="fa fa-trash" :label="$t('action.delete')" perms="sys:menu:delete" type="danger" @click="handleDelete(scope.row)"/> -->
         </template>
       </el-table-column>
@@ -96,6 +106,7 @@
         </el-form-item>
         
         <el-form-item label="状态" prop="status">
+        
             <el-radio-group v-model="form.status"  size="mini">
               <el-radio-button label="有效" :value="1"></el-radio-button>
               <el-radio-button label="无效" :value="0"></el-radio-button>
@@ -107,6 +118,47 @@
         <el-button type="primary" @click="submit" :disabled="btnDisabled">确 定</el-button>
       </div>
     </el-dialog>
+    <el-dialog title="权限详情" :visible.sync="messageDialog">
+      <el-table :data="messageList">
+        <el-table-column property="ruleName" label="规则名称" ></el-table-column>
+        <el-table-column property="ruleField" label="规则字段" ></el-table-column>
+        <el-table-column property="ruleCondition" label="条件规则">
+          <template slot-scope="scope">
+              {{conditionalRule.find((v,i)=>{
+               
+                return v.value==scope.row.ruleCondition 
+                 
+              }).label }}
+          </template>
+        </el-table-column>
+        <el-table-column property="ruleValue" label="规则值"></el-table-column>
+        <el-table-column property="status" label="状态">
+          <template slot-scope="scope">
+              {{ scope.row.status=='1' ? '有效':'无效' }}
+          </template>
+        </el-table-column>
+        <el-table-column property="createTime" label="创建日期"></el-table-column>
+        <el-table-column property="operation" label="操作">
+          <template slot-scope="scope">
+            <kt-button 
+              label="编辑" 
+              sperms="sys:dataPermissions:update" 
+              @click="updatePermission(scope.row)"
+              type="primary"
+            />
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+        :current-page="pageInfo.pageNum"
+        :page-sizes="[10, 20, 30, 40]"
+        :page-size="pageInfo.pageSize"
+        layout="total, sizes, prev, pager, next, jumper"
+        :total="pageInfo.total">
+      </el-pagination>
+    </el-dialog>
   </div>
 </template>
 
@@ -185,7 +237,14 @@ export default {
           
       },
       conditionalRule:[],
-      btnDisabled:false
+      btnDisabled:false,
+      messageDialog:false,
+      messageList:[],
+      pageInfo:{
+        pageNum:1,
+        pageSize:10,
+        total:0
+      }
     };
   },
   mounted() {
@@ -226,7 +285,7 @@ export default {
             this.$api.sys
               .dataPermissionsUpdate({
                 ...this.form,
-               
+                status:this.form.status=="有效" ? 1:0
               })
               .then((res) => {
                 if (res.code === 200) {
@@ -237,6 +296,9 @@ export default {
                     this.$refs.ruleForm.clearValidate();
                   });
                   this.findTreeData();
+                  if(this.messageDialog){
+                    this.getMessageList()
+                  }
                 } else {
                   this.$message.error(res.msg);
                   this.btnDisabled = false;
@@ -293,11 +355,61 @@ export default {
     iconActiveHandle(iconName) {
       this.dataForm.icon = iconName;
     },
+    //给菜单设置数据权限
     handPermissions(data){
-      console.log(data)
+    
       this.dialogFormVisible=true
       this.form.menuId=data.id
     },
+    //修改菜单的数据权限-单项
+    updatePermission(data){
+      
+      this.$api.sys.getDataPermissionsItem(data.id).then(res=>{
+        // console.log(res)
+        if(res.code===200){
+          this.form={...res.data}
+          // console.log(res.data.status)
+          this.form.status=res.data.status=='0' ? '无效':'有效'
+          console.log(this.form)
+
+          this.dialogFormVisible=true
+        }
+      })
+    },
+    //查看菜单的数据权限列表
+    watchPermissions(data){
+      // console.log(data)
+      this.form.menuId=data.id
+      this.messageDialog=true
+      this.getMessageList()
+
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.pageInfo.pageSize=val
+
+      this.getMessageList()
+    },
+    handleCurrentChange(val) {
+      this.pageInfo.pageNum=val
+
+      // console.log(`当前页: ${val}`);
+      this.getMessageList()
+
+    },
+    getMessageList(){
+      this.$api.sys.getDataPermissions({
+        menuId:this.form.menuId,
+        ...this.pageInfo
+
+      }).then(res=>{
+       
+        if(res.code===200){
+          this.messageList=[...res.data.records]
+          this.pageInfo.total=res.data.total
+        }
+      })
+    },
     
   },
   

+ 539 - 0
src/views/Sys/RulePermissions.vue

@@ -0,0 +1,539 @@
+<template>
+    <div class="page-container">
+      <!--工具栏-->
+      <div
+        class="toolbar"
+        style="float: left; padding-top: 10px; padding-left: 50px"
+      >
+        <el-form :inline="true" :model="filters" :size="size">
+          <el-form-item>
+            <el-input v-model="filters.name" placeholder="角色名"></el-input>
+          </el-form-item>
+          <el-form-item>
+            <kt-button
+              icon="fa fa-search"
+              :label="$t('action.search')"
+              perms="sys:role:view"
+              type="primary"
+              @click="findPage(null)"
+            />
+          </el-form-item>
+          
+        </el-form>
+      </div>
+      <div class="conent-box" >
+        <!--表格内容栏-->
+        <el-table
+            :data="pageResult.content"
+            border
+            style="width: 100%; "
+            height="600"
+        >
+            <el-table-column
+                v-for="column in columns"
+                header-align="center"
+                align="center"
+                :prop="column.prop"
+                :label="column.label"
+                :width="column.width"
+                :min-width="column.minWidth"
+                :fixed="column.fixed"
+                :key="column.prop"
+                :type="column.type"
+                :formatter="column.formatter"
+                :sortable="column.sortable == null ? true : column.sortable"
+            >
+            </el-table-column>
+            <el-table-column
+                :label="$t('action.operation')"
+                width="185"
+                fixed="right"
+                
+                header-align="center"
+                align="center"
+            >
+                <template slot-scope="scope">
+                <kt-button
+                    
+                    label="菜单配置"
+                    :perms="''"
+                    :size="size"
+                    @click="handleEdit( scope.row)"
+                />
+                <!-- <kt-button
+                    icon="fa fa-trash"
+                    :label="$t('action.delete')"
+                    :perms="permsDelete"
+                    :size="size"
+                    type="danger"
+                    @click="handleDelete(scope.$index, scope.row)"
+                /> -->
+                </template>
+            </el-table-column>
+        </el-table>
+       
+       
+      </div>
+      <el-pagination
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="pageRequest.pageNum"
+            :page-sizes="[10, 20, 30, 40]"
+            :page-size="pageRequest.pageSize"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="pageRequest.total">
+        </el-pagination>
+     
+      <!-- </el-col> -->
+      <!--新增编辑界面-->
+      <el-dialog
+        v-dialogDrag
+        :title="'菜单配置'"
+        width="40%"
+        :visible.sync="dialogVisible"
+        :close-on-click-modal="false"
+      >
+        <el-tree
+          :data="menuData"
+          size="mini"
+          show-checkbox
+          node-key="id"
+          :props="defaultProps"
+          ref="menuTree"
+          :default-checked-keys="checkedKeys"
+        
+          v-loading="menuLoading"
+          element-loading-text="拼命加载中"
+          @check="handleMenuCheckChange"
+          @node-click="treeClick"
+        >
+        </el-tree>
+        <div slot="footer" class="dialog-footer">
+          <el-button :size="size" @click.native="dialogVisible = false">{{
+            $t("action.cancel")
+          }}</el-button>
+          <el-button
+            :size="size"
+            type="primary"
+            @click.native="submitForm"
+            :loading="editLoading"
+            >{{ $t("action.submit") }}</el-button
+          >
+        </div>
+      </el-dialog>
+      <el-drawer
+        title="数据规则/按钮权限配置"
+        :visible.sync="drawer"
+        :direction="'rtl'"
+        :before-close="handleClose">
+        <el-tree
+            :data="messageList"
+            size="mini"
+            show-checkbox
+            node-key="id"
+            :props="ruleProps"
+            ref="perMisseionTree"
+            :default-checked-keys="perCheckedKeys"
+            
+            
+            element-loading-text="拼命加载中"
+            @check="handlePerCheckChange"
+            >
+            </el-tree>
+            <el-button style="margin-left: 20px;" type="primary" @click="submitPer">保存</el-button>
+            <!-- v-loading="menuLoading" -->
+        </el-drawer>
+    </div>
+  </template>
+  
+  <script>
+  import KtTable from "@/views/Core/KtTable";
+  import KtButton from "@/views/Core/KtButton";
+  import TableTreeColumn from "@/views/Core/TableTreeColumn";
+  import { format } from "@/utils/datetime";
+
+
+  export default {
+    components: {
+      KtTable,
+      KtButton,
+      TableTreeColumn,
+    },
+    data() {
+      return {
+        messageList:[],
+        drawer:false,
+        size: "small",
+        filters: {
+          name: "",
+        },
+        columns: [
+          { prop: "id", label: "ID", minWidth: 50 },
+          { prop: "name", label: "角色名", minWidth: 120 },
+          { prop: "remark", label: "备注", minWidth: 120 },
+          { prop: "createBy", label: "创建人", minWidth: 120 },
+          {
+            prop: "createTime",
+            label: "创建时间",
+            minWidth: 120,
+            formatter: this.dateFormat,
+          },
+          // {prop:"lastUpdateBy", label:"更新人", minWidth:100},
+          // {prop:"lastUpdateTime", label:"更新时间", minWidth:120, formatter:this.dateFormat}
+        ],
+        pageRequest: { pageNum: 1, pageSize: 10,total:0 },
+        pageResult: {},
+  
+        operation: false, // true:新增, false:编辑
+        dialogVisible: false, // 新增编辑界面是否显示
+        editLoading: false,
+        dataFormRules: {
+          name: [{ required: true, message: "请输入角色名", trigger: "blur" }],
+        },
+        // 新增编辑界面数据
+        dataForm: {
+          id: 0,
+          name: "",
+          remark: "",
+        },
+        selectRole: {},
+        menuData: [],
+        menuSelections: [],
+        menuLoading: false,
+        authLoading: false,
+        checkAll: false,
+        currentRoleMenus: [],
+        defaultProps: {
+          children: "children",
+          label: "name",
+        },
+        ruleProps:{
+            children: "children",
+            label: "ruleName",
+        },
+        leveData: [],
+        checkedKeys:[],
+        roleId:"",
+        clickMenuId:"",
+        perCheckedKeys:[]
+      };
+    },
+    created() {
+      this.findPage({});
+    },
+    methods: {
+        handleSizeChange(val) {
+            // console.log(`每页 ${val} 条`);
+            this.pageRequest.pageSize=val
+            this.findPage({});
+        },
+        handleCurrentChange(val) {
+            // console.log(`当前页: ${val}`);
+            this.pageRequest.pageNum=val
+            this.findPage({});
+
+        },
+      getLeveData() {},
+      // 获取分页数据
+      findPage: function (data) {
+        // if (data !== null) {
+        //   this.pageRequest = data.pageRequest;
+        // }
+        this.pageRequest.columnFilters = {
+          name: { name: "name", value: this.filters.name },
+        };
+        this.$api.role
+          .findPage(this.pageRequest)
+          .then((res) => { 
+            this.pageResult = res.data;
+            this.pageRequest.total=res.data.totalSize
+            this.findTreeData();
+          })
+          .then(data != null ? data.callback : "");
+      },
+     
+    
+      // 显示编辑界面
+      handleEdit: function (params) {
+        this.checkedKeys=[]
+        this.dialogVisible = true;
+        this.operation = false;
+        // console.log(params)
+        this.roleId=params.id
+        // this.dataForm = Object.assign({}, params.row);
+        this.$api.sys.getInsRoleMenuPermissions({
+            roleId:params.id
+        }).then(res=>{
+            // console.log(res)
+            if(res.code===200){
+             
+                if(res.data.length>0){
+                    this.checkedKeys=res.data.map((v)=>{
+                        return v.menuId
+                    })
+                }else{
+                    this.$refs.menuTree.setCheckedKeys([],false);
+                }
+            }
+        })
+      },
+      // 保存角色关联菜单
+      submitForm: function () {
+        
+        this.$api.sys.saveAndUpdateRuleMenu({
+            menuIdList:this.checkedKeys,
+            roleId:this.roleId
+        }).then((res) => {
+            this.editLoading = false;
+            if (res.code == 200) {
+                this.$message({ message: "操作成功", type: "success" });
+                this.dialogVisible = false;
+                this.checkedKeys=[]
+            } else {
+                this.$message({
+                    message: "操作失败, " + res.msg,
+                    type: "error",
+                });
+            }
+            // this.findPage(null);
+        });
+          
+          
+      },
+    // 保存角色-菜单-关联权限规则
+    submitPer(){
+        this.$api.sys.roleMenuPerSaveAndUpdate({
+            permissionsIdList:this.perCheckedKeys,
+            roleId:this.roleId,
+            menuId:this.clickMenuId
+        }).then((res) => {
+            this.editLoading = false;
+            if (res.code == 200) {
+                this.$message({ message: "操作成功", type: "success" });
+                this.drawer = false;
+                this.perCheckedKeys=[]
+            } else {
+                this.$message({
+                    message: "操作失败, " + res.msg,
+                    type: "error",
+                });
+            }
+            // this.findPage(null);
+        });
+        
+    },
+      // 获取数据
+      findTreeData: function () {
+        this.menuLoading = true;
+        this.$api.menu.findMenuTree().then((res) => {
+          this.menuData = res.data;
+          this.menuLoading = false;
+        });
+      },
+      // 角色选择改变监听
+      async handleRoleSelectChange(val) {
+        if (val == null || val.val == null) {
+          return;
+        }
+        this.selectRole = val.val;
+        if (val.val.id == 1 && val.val.name == "admin") {
+          let allMenus = [];
+          this.checkAllMenu(this.menuData, allMenus);
+          this.$refs.menuTree.setCheckedNodes(allMenus);
+          return;
+        }
+        let res = await this.$api.role.findRoleMenus({ roleId: val.val.id });
+        if (res.code == 200) {
+          this.$nextTick(() => {
+            const arr = [];
+            res.data.forEach((item) => {
+              if (
+                !this.$refs.menuTree.getNode(item.id).childNodes ||
+                !this.$refs.menuTree.getNode(item.id).childNodes.length
+              ) {
+                arr.push(item);
+              }
+            });
+            this.$refs.menuTree.setCheckedNodes(arr);
+          });
+        }
+      },
+      //树节点选择监听
+      handleMenuCheckChange(data, check, subCheck) {
+       this.checkedKeys=[...check.checkedKeys]
+      },
+      //规则树几点选中
+      handlePerCheckChange(data, check, subCheck) {
+       this.perCheckedKeys=[...check.checkedKeys]
+      },
+      //树节点点击
+     async treeClick(node){
+        // console.log(node)
+        this.clickMenuId=node.id
+        this.drawer=true
+        await this.getMessageList()
+        await this.getInsRolePermissionsDtoList()
+      },
+      handleClose(done) {
+        this.$confirm('确认关闭?')
+          .then(_ => {
+            done();
+          })
+          .catch(_ => {});
+      },
+      //获取菜单下的规则列表
+        async getMessageList(){
+            this.$api.sys.getMenuRelaPerqueryList({
+                menuId:this.clickMenuId,
+                status:1
+            }).then(res=>{
+                if(res.code===200){
+                    
+                    this.messageList=[...res.data]
+                }
+            })
+        },
+        //获取角色关联菜单 关联的规则数据
+        async getInsRolePermissionsDtoList(){
+            this.$api.sys.getInsRolePermissionsDtoList({
+                menuId:this.clickMenuId,
+                roleId:this.roleId
+            }).then(res=>{
+                if(res.code===200){
+                   
+                   console.log(res.data)
+                    if(res.data.length>0){
+                        this.perCheckedKeys=res.data.map((v)=>{
+                            return v.permissionsId
+                        })
+                    }else{
+                        this.$refs.perMisseionTree.setCheckedKeys([],false);
+                    }
+                    // this.messageList=[...res.data]
+                }
+            })
+        },
+      // 重置选择
+      resetSelection() {
+        this.checkAll = false;
+        this.$refs.menuTree.setCheckedNodes([]);
+      },
+      // 全选操作
+      handleCheckAll() {
+        if (this.checkAll) {
+          let allMenus = [];
+          this.checkAllMenu(this.menuData, allMenus);
+          this.$refs.menuTree.setCheckedNodes(allMenus);
+        } else {
+          this.$refs.menuTree.setCheckedNodes([]);
+        }
+      },
+      // 递归全选
+      checkAllMenu(menuData, allMenus) {
+        menuData.forEach((menu) => {
+          allMenus.push(menu);
+          if (menu.children) {
+            this.checkAllMenu(menu.children, allMenus);
+          }
+        });
+      },
+      // 角色菜单授权提交
+      submitAuthForm() {
+        let roleId = this.selectRole.id;
+        if ("admin" == this.selectRole.name) {
+          this.$message({
+            message: "超级管理员拥有所有菜单权限,不允许修改!",
+            type: "error",
+          });
+          return;
+        }
+        this.authLoading = true;
+        let checkedNodes = this.$refs.menuTree.getCheckedNodes(false, true);
+        let roleMenus = [];
+        for (let i = 0, len = checkedNodes.length; i < len; i++) {
+          let roleMenu = { roleId: roleId, menuId: checkedNodes[i].id };
+          roleMenus.push(roleMenu);
+        }
+        this.$api.role.saveRoleMenus(roleMenus).then((res) => {
+          if (res.code == 200) {
+            this.$message({ message: "操作成功", type: "success" });
+          } else {
+            this.$message({ message: "操作失败, " + res.msg, type: "error" });
+          }
+          this.authLoading = false;
+        });
+      },
+    //   renderContent(h, { node, data, store }) {
+    //     return (
+    //       <div class="column-container">
+    //         <div style="text-algin:center;margin-right:80px;">{data.name}</div>
+            
+           
+    //       </div>
+    //     );
+    //   },
+      // 时间格式化
+      dateFormat: function (row, column, cellValue, index) {
+        return format(row[column.property]);
+      },
+    },
+    mounted() {},
+  };
+  </script>
+  <style scoped lang="less">
+  .menu-container {
+    margin-top: 10px;
+  }
+  .menu-header {
+    padding-left: 8px;
+    padding-bottom: 5px;
+    text-align: left;
+    font-size: 16px;
+    color: rgb(20, 89, 121);
+  }
+  .conent-box{
+    width: 100%;
+    display: flex;
+    /* justify-content: space-around */
+    >div{
+        width: 100%;
+    }
+  }
+  /deep/ .el-table {
+    max-height: 500px !important;
+  }
+  .el-tree {
+   // width: 800px;
+    height: 500px;
+    overflow-x: auto;
+  }
+  /deep/ .el-tree > .el-tree-node {
+   // display: inline-block !important;
+  }
+  .btn-box {
+    padding-right: 100px;
+  }
+  /*定义滚动条高宽及背景
+   高宽分别对应横竖滚动条的尺寸*/
+  ::-webkit-scrollbar {
+    width: 8px;
+    height: 8px;
+    background-color: rgba(0, 0, 0, 0.2);
+  }
+  
+  /*定义滚动条轨道
+   内阴影+圆角*/
+  ::-webkit-scrollbar-track {
+    -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
+    border-radius: 10px;
+    background-color: #f5f5f5;
+  }
+  /*定义滑块
+       内阴影+圆角*/
+  ::-webkit-scrollbar-thumb {
+    border-radius: 10px;
+    -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
+    background-color: #b3b3b3;
+  }
+  </style>
+  

+ 4 - 3
src/views/Task/daikeComponents/KhgxKtLetter.vue

@@ -13511,11 +13511,11 @@ export default {
 }
 
 .position-left {
-  width: calc(100% - 220px);
+  width:100%;
 }
 
 .position-collapse-left {
-  width: calc(100% - 80px);
+  width: 100%;
 }
 
 .footer {
@@ -14403,7 +14403,8 @@ export default {
 
     .baofeijisuan {
       position: absolute;
-      right: 8.333%;
+      right: 0;
+      width: 100%;
       top: 0;
       background: linear-gradient( 270deg, #0052FF 0%, #6899FF 100%);
       border-radius: 4px;