gaoshp
2024-11-19 f29900986f01cf5d39b5755cec674825cef27961
src/views/console/system/add-scope-manager.vue
@@ -3,43 +3,44 @@
      <el-form :model="addDictForm" :rules="addDictRules" :disabled="mode=='show'" ref="dialogForm" label-width="120px" label-position="center">
         <el-row>
            <el-col :span="12">
               <el-form-item label="权限名称" prop="scopeName">
                  <el-input v-model="addDictForm.scopeName" placeholder="权限名称" clearable></el-input>
               <el-form-item label="权限名称" prop="deptName">
                  <el-input v-model="addDictForm.deptName" placeholder="权限名称" clearable></el-input>
               </el-form-item>
            </el-col>
            <el-col :span="12">
               <el-form-item label="权限编号" prop="resourceCode">
                  <el-input v-model="addDictForm.resourceCode" placeholder="权限编号" clearable></el-input>
               <el-form-item label="权限描述" prop="fullName">
                  <el-input v-model="addDictForm.fullName" placeholder="权限描述" clearable></el-input>
               </el-form-item>
            </el-col>
            <el-col :span="12">
               <el-form-item label="权限字段" prop="scopeColumn">
                  <el-input v-model="addDictForm.scopeColumn" placeholder="权限字段" clearable></el-input>
               <el-form-item label="上级权限">
                  <el-tree-select
                     @change = "parentIdChange"
                      v-model="addDictForm.parentId"
                      clearable
                     node-key="id"
                      placeholder="上级权限"
                     ref="parentTree"
                      :data="parentIdList"
                      check-strictly
                      :props="{ label: 'title' }"
                      style="width:100%;"
                      :render-after-expand="false" />
               </el-form-item>
            </el-col>
            <el-col :span="12">
               <el-form-item label="规则分类" prop="scopeType">
                  <el-select v-model="addDictForm.scopeType" style="width: 100%" @change="scopeTypeNameChange" placeholder="规则分类">
                     <el-option v-for="item in scopeTypeNameList" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
               <el-form-item label="权限类型" pros="deptCategory">
                  <el-select v-model="addDictForm.deptCategory" placeholder="请选择权限类型" style="width: 100%" @change="deptCategoryChange">
                     <el-option v-for="item in deptCategoryList" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
                  </el-select>
               </el-form-item>
            </el-col>
            <el-col :span="24">
               <el-form-item label="可见字段" prop="scopeField">
                  <el-input v-model="addDictForm.scopeField" placeholder="可见字段" clearable></el-input>
            <el-col :span="12">
               <el-form-item label="排序" prop="sort">
                  <el-input v-model="addDictForm.sort" placeholder="排序" clearable></el-input>
               </el-form-item>
            </el-col>
            <el-col :span="24">
               <el-form-item label="权限类名" prop="scopeClass">
                  <el-input v-model="addDictForm.scopeClass" placeholder="权限类名" clearable></el-input>
               </el-form-item>
            </el-col>
            <el-col :span="24">
               <el-form-item label="规则值" v-if="addDictForm.scopeType == '5'">
                  <el-input type="textarea" v-model="addDictForm.scopeValue" placeholder="规则值" clearable></el-input>
               </el-form-item>
            </el-col>
            <el-col :span="24">
            <el-col :span="12">
               <el-form-item label="备注">
                  <el-input v-model="addDictForm.remark" placeholder="备注" clearable></el-input>
               </el-form-item>
@@ -47,8 +48,8 @@
         </el-row>
      </el-form>
      <template #footer>
         <el-button v-if="mode!='show'" type="primary" :loading="isSaveing" @click="dictSubmit">保 存</el-button>
         <el-button @click="visible=false" >取 消</el-button>
         <el-button v-if="mode!='show'" type="primary" :loading="isSaveing" @click="dictSubmit()">保 存</el-button>
      </template>
   </el-dialog>
</template>
@@ -56,8 +57,11 @@
<script>
   export default {
      emits: ['success', 'closed'],
      props: ["deptCategoryList","parentIdList"],
      data() {
         return {
            deptCategoryList: [],
            parentIdList: [],
            value1: true,
            mode: "add",
            titleMap: {
@@ -69,24 +73,21 @@
            isSaveing: false,
            //表单数据
            addDictForm: {
               $scopeType: "",
               scopeName: "工作台[暂无]",
               resourceCode: "",
               scopeColumn: "",
               scopeType: "",
               scopeField: "",
               scopeClass: "",
               $deptCategory: "",
               $parentId: "",
               deptCategory: "",
               deptName: "",
               fullName: "",
               parentId: "",
               remark: "",
               scopeValue: ""
               sort: ""
            },
            //验证规则
            addDictRules: {
               scopeName:[{required: true, message: '请输入权限名称'}],
               resourceCode:[{required: true, message: '请输入权限编号'}],
               scopeColumn:[{required: true, message: '请输入权限字段'}],
               scopeType:[{required: true, message: '请输入规则分类',trigger: 'change'}],
               scopeField:[{required: true, message: '请输入可见字段'}],
               scopeClass:[{required: true, message: '请输入权限类名'}],
               deptName:[{required: true, message: '请输入权限名称'}],
               fullName:[{required: true, message: '请输入权限描述'}],
               deptCategory:[{required: true, message: '请输入权限类型',trigger: 'change'}],
               sort:[{required: true, message: '请输入排序'}]
            },
            //所需数据选项
            groups: [],
@@ -103,30 +104,27 @@
         }
      },
      mounted() {
         // this.getDept()
         // this.getParentIdList();  //上级权限list
         // this.getDictionary();  //权限类型list
      },
      props: ['scopeTypeNameList','tableRow'],
      methods: {
         scopeTypeNameChange(value) {
            this.scopeTypeNameList.forEach(item=> {
         parentIdChange(value) {
            var $parentId = this.$refs.parentTree.getCurrentNode().title;
            this.addDictForm.$parentId = $parentId;
         },
         deptCategoryChange(value) {
            this.deptCategoryList.forEach(item=> {
               if(item.dictKey == value) {
                  this.addDictForm.scopeName = `工作台[${item.dictValue}]`;
                  this.addDictForm.$scopeType = item.dictValue;
                  this.addDictForm.$deptCategory = item.dictValue;
               }
            })
            if(value == "2") {
               this.addDictForm.scopeColumn = 'create_user';
            }else if(value == "3" || value == "4") {
               this.addDictForm.scopeColumn = 'create_dept';
            }else {
               this.addDictForm.scopeColumn = "";
            }
         },
         //显示
         open(mode='add'){
         open(parentIdList,deptCategoryList,mode='add'){
            this.mode = mode;
            this.parentIdList = parentIdList;
            this.deptCategoryList = deptCategoryList;
            this.visible = true;
            this.addDictForm.resourceCode = this.tableRow.alias;
            return this
         },
         //加载树数据
@@ -138,14 +136,29 @@
            var res = await this.$API.system.dept.list.get();
            this.depts = res.data;
         },
         getDetail(id,fixed) {
            this.$HTTP.get(`/api/blade-system/data-scope-manager/detail?id=${id}`).then(res=> {
               if(res.code == 200) {
                  //可以和上面一样单个注入,也可以像下面一样直接合并进去
                  res.data.parentId == 0?res.data.parentId = "":res.data.parentId;
                  res.data.$parentId = res.data.parentName;
                  res.data.$deptCategory = res.data.deptCategoryName;
                  res.data.deptCategory = String(res.data.deptCategory);
                  if(fixed) { //新增子项
                     this.addDictForm.parentId = id;
                  }else {
                     Object.assign(this.addDictForm, res.data);
                  }
               }
            })
         },
         //表单提交方法
         dictSubmit(){
            this.addDictForm.menuId = this.tableRow.id;
            var obj = Object.assign({},this.addDictForm);
            var obj = Object.assign({},this.addDictForm);;
            this.$refs.dialogForm.validate(async (valid) => {
               if (valid) {
                  this.isSaveing = true;
                  this.$HTTP.post("/api/blade-system/data-scope/submit",obj).then(res=> {
                  this.$HTTP.post("/api/blade-system/data-scope-manager/submit",obj).then(res=> {
                     this.isSaveing = false;
                     if(res.code == 200) {
                        this.$emit('success', this.addDictForm, this.mode);
@@ -162,9 +175,7 @@
         },
         //表单注入数据
         setData(data){
            data.scopeType = String(data.scopeType);
            //可以和上面一样单个注入,也可以像下面一样直接合并进去
            Object.assign(this.addDictForm, data);
            this.getDetail(data.id,data.fixed);
         }
      }
   }