ludc
2024-10-29 100079be55493c439bfef2d4792bfa0d9f429bd1
Merge remote-tracking branch 'origin/master'
已修改10个文件
已添加1个文件
316 ■■■■■ 文件已修改
Source/plt-web/plt-web-ui/src/api/authority/secure/classification.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/api/systemModel/systemConfig/api.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/authority/secure/classification/index.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/system/department/index.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/system/department/option.js 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/system/role/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/system/user/index.vue 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/system/user/option.js 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/systemModel/businessModel/index.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/systemModel/mangeModel/index.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/systemModel/systemConfig/index.vue 130 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/api/authority/secure/classification.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
import request from '@/router/axios';
export function getSecretGradeConfig(params) {
  return request({
    url: "/api/secretGradeController/getSecretGradeConfig",
    method: "get",
    params
  });
}
export const saveSecretGrade = (params) => {
  return request({
    url: '/api/secretGradeController/saveSecretGrade',
    method: 'post',
    params: params
  })
}
Source/plt-web/plt-web-ui/src/api/systemModel/systemConfig/api.js
@@ -43,6 +43,14 @@
    data: params
  });
}
// åˆ é™¤é…ç½®
export function delAppConf(params) {
  return request({
    url: "/api/hmSysModConfigController/delAppConf",
    method: "delete",
    params: params
  });
}
// å¯¼å‡º
export function exportSysConf(params) {
Source/plt-web/plt-web-ui/src/views/authority/secure/classification/index.vue
@@ -7,7 +7,7 @@
</template>
<script>
import {deleteLog, getPeroid, savePeriod} from "@/api/system/log/logBasic";
import {getSecretGradeConfig, saveSecretGrade} from "@/api/authority/secure/classification";
export default {
  name: "index",
@@ -36,18 +36,26 @@
    }
  },
  created() {
    this.getPeroid()
    this.getSecretGradeConfig()
  },
  methods:{
    getPeroid:function (){
      getPeroid().then(res => {
        //this.form=res.data.data;
    getSecretGradeConfig:function (){
      getSecretGradeConfig().then(res => {
        if(res.data.obj.userSecuritySwith){
          this.form.type=[0]
        }
        if(res.data.obj.ipSecuritySwith){
          this.form.type.push(1)
        }
      }).catch(error => {
      })
    },
    saveHandler:function (form,done){
      debugger;
      savePeriod({'type':this.form.type}).then(res => {
      const params={
        userSecuritySwith:this.form.type.includes(0),
        ipSecuritySwith:this.form.type.includes(1)
      }
      saveSecretGrade(params).then(res => {
        if (res.data.success) {
          this.$message.success('保存成功')
        }
Source/plt-web/plt-web-ui/src/views/system/department/index.vue
@@ -95,6 +95,7 @@
        ...basicOption,
        rowKey: 'oid',
        rowParentKey: 'parentId',
        expandRowKeys:[],
        selection: false,
        addBtn: false,
        editBtn: false,
@@ -156,6 +157,7 @@
    getTableList() {
      refTree({queryAllLevel: true, 'extandParamsMap[showAllDepartmentNode]': true}).then(res => {
        this.tableData = this.departDtaFormAtter(res.data.treeData);
        this.option.expandRowKeys=[res.data.treeData[0].oid];
      })
    },
@@ -164,6 +166,7 @@
      return items.map(item => {
        // è½¬æ¢å½“前节点的属性
        const formList = {
          expanded:item.expanded,
          oid: item.oid,
          id: item.attributes.id,
          name: item.attributes.name,
@@ -207,7 +210,6 @@
          done();
        }
      }).catch(err => {
        console.log(err);
        loading();
      })
@@ -235,7 +237,6 @@
          done();
        }
      }).catch(err => {
        console.log(err);
        loading();
      })
    },
Source/plt-web/plt-web-ui/src/views/system/department/option.js
@@ -14,10 +14,12 @@
  {
    label: '编号',
    prop: 'id',
    width:200,
  },
  {
    label: '代号',
    prop: 'code'
    prop: 'code',
    width:200
  },
  {
    label:'专业',
Source/plt-web/plt-web-ui/src/views/system/role/index.vue
@@ -113,6 +113,7 @@
        refreshBtn: false,
        addBtn: false,
        menu: false,
        header:false,
        column: [
          {
            label: '部门',
Source/plt-web/plt-web-ui/src/views/system/user/index.vue
@@ -2,7 +2,6 @@
  <basic-container>
    <avue-crud
      ref="userCrud"
      :before-open="beforeOpen"
      :data="tableData"
      :option="option"
      :page.sync="page"
@@ -18,26 +17,6 @@
      @row-save="rowSaveHandler"
      @row-update="rowUpdateHandler"
    >
      <!-- éƒ¨é—¨å¤´éƒ¨æœç´¢æ’æ§½  -->
      <template slot-scope="{disabled,size}" slot="pkDepartmentNameSearch">
        <div style="display: flex;gap: 5px">
          <el-select v-model="departSearchValue" clearable placeholder="请选择部门">
            <el-option :label="departSearchObj.name" :value="departSearchObj.oid"></el-option>
          </el-select>
          <el-button size="small" type="success" @click="dialogDepartSearchHandler">选择部门</el-button>
        </div>
      </template>
      <!-- å¯¹è¯æ¡†éƒ¨é—¨æ’æ§½     -->
      <template slot="pkDepartmentNameForm" slot-scope="scope">
        <div style="display: flex;gap: 5px">
          <el-select v-model="departValue" clearable placeholder="请选择部门">
            <el-option :label="departObj.name" :value="departObj.oid"></el-option>
          </el-select>
          <el-button size="small" type="success" @click="dialogDepartHandler">选择部门</el-button>
        </div>
      </template>
      <template slot="status" slot-scope="{row}">
        <el-tag v-if="row.status === 0" type="success">启用</el-tag>
        <el-tag v-if="row.status === 1" type="danger">停用</el-tag>
@@ -154,8 +133,6 @@
      departSearchValue:'',
      loadKey: 0,
      departStatus: '', // åŒºåˆ†ä¸åŒæ–¹å¼æ‰“开部门对话框
      departValue: '', // éƒ¨é—¨å¯¹è¯æ¡†ä¸‹æ‹‰æ¡†ç»‘定值
      departObj: {},  // éƒ¨é—¨å¯¹è¯æ¡†ä¸‹æ‹‰æ¡†é€‰é¡¹ç»‘定值
      departCurrenRow: {},
      departOption: {
        ...basicOption,
@@ -168,6 +145,7 @@
        menu: false,
        refreshBtn: false,
        gridBtn: false,
        header:false,
        column: [
          {
            label: '名称',
@@ -221,15 +199,6 @@
  created() {
  },
  methods: {
    // æ–°å¢žæˆ–修改对话框打开前
    beforeOpen(done, type) {
      if(type == 'add'){
        this.departObj = {};
        this.departValue = "";
      }
      done();
    },
    // è¡¨æ ¼è¯·æ±‚
    getTableList() {
      this.tableLoading = true;
@@ -239,6 +208,7 @@
        this.page.total = res.data.total;
        this.tableLoading = false;
      })
      this.departmentQueryOnLoad()
    },
    // è¡¨æ ¼å³ä¾§åˆ·æ–°å›¾æ ‡
@@ -249,10 +219,6 @@
    // æœç´¢æŸ¥è¯¢
    handleSearch(params, done) {
      this.searchParams = {};
      if(this.departSearchObj && this.departSearchValue){
        this.searchParams['conditionMap["pkDepartment"]'] = this.departSearchValue;
      }
      if (!func.isEmptyObject(params)) {
        for (let key in params) {
          if (params.hasOwnProperty(key)) {
@@ -263,7 +229,7 @@
        }
      }
      if (func.isEmptyObject(params) && !this.departSearchValue) {
      if (func.isEmptyObject(params)) {
        this.searchParams = {};
      }
@@ -273,8 +239,6 @@
    // é‡ç½®æœç´¢æ¡ä»¶
    handleReset() {
      this.departSearchObj = {};
      this.departSearchValue = "";
      this.searchParams = {};
      this.getTableList();
    },
@@ -399,7 +363,6 @@
        this.$message.error('请检查两次密码是否输入一致!')
        return this.$refs.userCrud.$refs.dialogForm.$refs.tableForm.allDisabled = false;
      }
      row.pkDepartment = this.departValue; // å°†å½“前行的部门参数pkDepartment èµ‹å€¼ä¸ºä¸‹æ‹‰æ¡†ç»‘定的值
      addUser(row).then(res => {
        if (res.data.code === 200) {
          this.$message.success(res.data.obj);
@@ -413,14 +376,7 @@
    // æ“ä½œæ ç¼–辑
    rowEditHandler(row, index) {
      let obj = { name: row.pkDepartmentName, oid: row.pkDepartment, rowOid: row.oid };
      this.departValue = row.pkDepartment;
      this.departObj = obj;
      if (this.departObj.rowOid) {
        this.$refs.userCrud.rowEdit(row, index);
      }
      this.$refs.userCrud.rowEdit(row, index);
    },
    // ç¼–辑
@@ -429,7 +385,6 @@
        this.$message.error('请检查两次密码是否输入一致!')
        return this.$refs.userCrud.$refs.dialogForm.$refs.tableForm.allDisabled = false;
      }
      row.pkDepartment = this.departValue; // å°†å½“前行的部门参数pkDepartment èµ‹å€¼ä¸ºä¸‹æ‹‰æ¡†ç»‘定的值
      updateUser(row).then(res => {
        if (res.data.code === 200) {
          this.$message.success(res.data.obj);
@@ -497,11 +452,8 @@
    // ä¸‹è½½å¯¼å…¥æ¨¡æ¿
    downloadHandler() {
      download().then(res => {
        console.log(res);
        func.downloadFileByBlobHandler(res);
        this.$message.success('下载成功');
      }).catch(err => {
        this.$message.error(err);
      })
    },
@@ -517,7 +469,7 @@
        return;
      }
      this.departStatus = 'default'; // åŒºåˆ†ä¸åŒæ–¹å¼æ‰“开部门对话框
      this.departmentQueryOnLoad();
      this.departVisible = true;
    },
    // åˆ†é…éƒ¨é—¨è¡¨æ ¼åˆå§‹åŒ–请求
@@ -525,7 +477,8 @@
      departmentQueryController({queryAllLevel: true}).then(res => {
        const data = res.data.treeData;
        this.departData = this.departDtaFormAtter(data);
        this.departVisible = true;
        this.option.column[7].dicData=[{oid:'ALLDept',name:'所有部门',expand:true,disabled:true,children:this.departData}]
        this.option.column[7].defaultExpandedKeys=['ALLDept'];
      }).catch(err => {
        this.$message.error(err);
      })
@@ -562,6 +515,7 @@
        return;
      }
      //分配部门
      if (this.departStatus == 'default') {
        let params = {
          userOIds: this.selectList.map(item => item.oid).join(','),
@@ -573,37 +527,9 @@
            this.getTableList();
            this.$message.success('分配成功!')
          }
        }).catch(err => {
          console.log(err);
        })
        return;
      }
      if (this.departStatus == 'handle') {
        this.departObj = this.departCurrenRow;
        this.departValue = this.departCurrenRow.oid;
        this.departVisible = false;
        return;;
      }
      if(this.departStatus == 'search'){
        this.departSearchObj =  this.departCurrenRow;
        this.departSearchValue =  this.departCurrenRow.oid;
        this.departVisible = false;
        return;
      }
    },
    // å¯¹è¯æ¡†åˆ†é…éƒ¨é—¨æŒ‰é’®
    dialogDepartHandler() {
      this.departmentQueryOnLoad();
      this.departStatus = 'handle'; // åŒºåˆ†ä¸åŒæ–¹å¼æ‰“开部门对话框
    },
    // æœç´¢å¯¹è¯æ¡†åˆ†é…éƒ¨é—¨æŒ‰é’®
    dialogDepartSearchHandler(){
      this.departmentQueryOnLoad();
      this.departStatus = 'search'; // åŒºåˆ†ä¸åŒæ–¹å¼æ‰“开部门对话框
    },
  }
Source/plt-web/plt-web-ui/src/views/system/user/option.js
@@ -4,6 +4,7 @@
    prop: 'id',
    search:true,
    sortable:true,
    editDisabled: true,
    rules: [
      {
        required: true,
@@ -61,23 +62,32 @@
    prop: 'status',
    display:false,
    sortable:true,
    width: 80,
  },
  {
    label: '密码策略',
    prop: 'pkPasswordStrategyName',
    sortable:true,
    display:false,
    width: 100
  },
  {
    label: '锁定状态',
    prop: 'lockFlag',
    sortable:true,
    display:false,
    width: 100,
  },
  {
    label: '所属部门',
    prop: 'pkDepartmentName',
    prop: 'pkDepartment',
    align:'center',
    type:'tree',
    dicData: [],
    props: {
      label: 'name',
      value: 'oid'
    },
    search:true,
    sortable:true,
    overHidden: true,
@@ -107,7 +117,8 @@
    prop: 'email',
    sortable:true,
    overHidden: true,
    row:true
    row:true,
    span:24
  },
  {
    label: '描述',
@@ -115,6 +126,7 @@
    prop: 'description',
    sortable:true,
    overHidden: true,
    span:24
  },
  {
    label: '部门领导',
@@ -125,7 +137,7 @@
  {
    label: '所属密级',
    prop: 'secretGradeText',
    sortable:true,
    display:false,
    width: 80
  },
];
Source/plt-web/plt-web-ui/src/views/systemModel/businessModel/index.vue
@@ -139,7 +139,7 @@
      append-to-body="true"
      class="avue-dialog"
      title="操作分类"
      width="60%"
      width="500px"
    >
      <avue-crud
        ref="methodsCrud"
@@ -148,11 +148,10 @@
        :table-loading="methodsLoading"
        @row-click="rowMethodsClickHandler"
        @selection-change="selectMethodsChange">
      </avue-crud>
      <span slot="footer" class="dialog-footer">
         <el-button @click="methodsVisble = false">取 æ¶ˆ</el-button>
         <el-button type="primary" @click="methodsSaveClickHandler">保 å­˜</el-button>
         <el-button @click="methodsVisble = false">取 æ¶ˆ</el-button>
        </span>
    </el-dialog>
    <!--导入    -->
@@ -193,6 +192,7 @@
        addBtn: false,
        menu: false,
        height: 500,
        header:false,
        column: [
          {
            label: '操作分类',
@@ -408,10 +408,10 @@
    // å¢žåŠ æ“ä½œç±»åž‹
    addMethodsClickHandler() {
      this.methodsLoading = true;
      getSysModelTreeMenuByPID({parentId: 'sysOptionNode'}).then(res => {
      getSysModelTreeMenuByPID({parentId: 'operateNode'}).then(res => {
        if (res.data.code === 200 && res.data.data.length>0) {
          this.methodsVisble = true;
          const data = res.data.data[0].children;
          const data = res.data.data;
          this.methodsData = data;
          this.methodsLoading = false;
        }else {
Source/plt-web/plt-web-ui/src/views/systemModel/mangeModel/index.vue
@@ -139,7 +139,7 @@
      append-to-body="true"
      class="avue-dialog"
      title="操作分类"
      width="60%"
      width="500px"
    >
      <avue-crud
        ref="methodsCrud"
@@ -148,11 +148,10 @@
        :table-loading="methodsLoading"
        @row-click="rowMethodsClickHandler"
        @selection-change="selectMethodsChange">
      </avue-crud>
      <span slot="footer" class="dialog-footer">
         <el-button @click="methodsVisble = false">取 æ¶ˆ</el-button>
         <el-button type="primary" @click="methodsSaveClickHandler">保 å­˜</el-button>
         <el-button @click="methodsVisble = false">取 æ¶ˆ</el-button>
        </span>
    </el-dialog>
    <!--导入    -->
@@ -193,6 +192,7 @@
        addBtn: false,
        menu: false,
        height: 500,
        header:false,
        column: [
          {
            label: '操作分类',
@@ -411,10 +411,10 @@
    // å¢žåŠ æ“ä½œç±»åž‹
    addMethodsClickHandler() {
      this.methodsLoading = true;
      getSysModelTreeMenuByPID({parentId: 'sysOptionNode'}).then(res => {
      getSysModelTreeMenuByPID({parentId: 'operateNode'}).then(res => {
        if (res.data.code === 200 && res.data.data.length>0) {
          this.methodsVisble = true;
          const data = res.data.data[0].children;
          const data = res.data.data;
          this.methodsData = data;
          this.methodsLoading = false;
        }else {
@@ -441,7 +441,7 @@
          this.methodsVisble = false;
          this.$message.success(res.data.msg);
          this.form.childType = null;
          this.refresh = Math.random(); // åˆ·æ–°å·¦ä¾§æ ‘
          this.handleRefreshTree('add')
        }
      })
    },
Source/plt-web/plt-web-ui/src/views/systemModel/systemConfig/index.vue
@@ -2,7 +2,7 @@
  <el-container>
    <el-aside>
      <basic-container>
        <div style="max-height: calc(100vh - 170px);overflow: auto">
        <div style="max-height: calc(100vh - 150px);overflow: auto">
          <avue-tree :key="refresh" ref="tree" :data="treeData" :option="treeOption" @node-click="nodeClick">
          <span slot-scope="{ node, data }" class="el-tree-node__label">
           <span style="font-size: 15px">
@@ -16,7 +16,6 @@
    </el-aside>
    <el-main>
      <basic-container>
        <avue-crud
          ref="crud"
          :data="configData"
@@ -47,20 +46,20 @@
      :visible.sync="addVisible"
      append-to-body="true"
      class="avue-dialog"
      width="50%"
      width="600px"
      @close="addVisibleClose">
      <el-form ref="form" :model="form" label-width="80px">
        <el-form-item label="名称:">
          <el-input v-model="form.name"></el-input>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px" size="small">
        <el-form-item label="名称:" prop="name">
          <el-input v-model="form.name" ></el-input>
        </el-form-item>
        <el-form-item v-if="nodeRow.id !== 'firstNode'" label="key:">
        <el-form-item v-if="nodeRow.id !== 'firstNode'" label="key:" prop="key">
          <el-input v-model="form.key"></el-input>
        </el-form-item>
        <el-form-item v-if="nodeRow.id !== 'firstNode'" label="value:">
        <el-form-item v-if="nodeRow.id !== 'firstNode'" label="值:" prop="value">
          <el-input v-model="form.value"></el-input>
        </el-form-item>
        <el-form-item label="描述:">
          <el-input v-model="form.desc" type="textarea"></el-input>
          <el-input v-model="form.desc" type="textarea" prop="desc"></el-input>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
@@ -83,6 +82,7 @@
  getAppConfigDetailsByID,
  addAppConf,
  updateAppConf,
  delAppConf,
  exportSysConf
} from "@/api/systemModel/systemConfig/api"
import basicOption from "@/util/basic-option";
@@ -103,7 +103,16 @@
      editStatus: false,
      form: {
        name: "",
        key:"",
        value:"",
        desc: ""
      },
      rules: {
        name: [
          {required: true, message: '请输入名称', trigger: 'blur'}
        ],
        key: [{required: true, message: '请输入key', trigger: 'blur'}],
        value: [{required: true, message: '请输入值', trigger: 'blur'}]
      },
      addVisible: false,
      nodeRow: {},
@@ -127,7 +136,7 @@
            sortable: true
          },
          {
            label: 'value',
            label: '值',
            prop: 'value',
            overHidden: true,
            sortable: true
@@ -231,67 +240,52 @@
        this.form[key] = "";
      })
      this.addVisible = false;
      this.$refs.form.clearValidate();
    },
    // ä¿å­˜
    addSaveClickHandler() {
      if (this.nodeRow.id === 'firstNode') {
        if (!this.form.name) {
          this.$message.error('名称不能为空!');
          return;
        }
      } else {
        if (!this.form.name) {
          this.$message.error('名称不能为空!');
          return;
        }
        if (!this.form.key) {
          this.$message.error('key值不能为空!');
          return;
        }
        if (!this.form.value) {
          this.$message.error('value值不能为空!');
          return;
        }
      }
      const params = this.nodeRow.id === 'firstNode' ? {
        appConfigDetailInfo: {
          name: this.form.name,
          desc: this.form.desc,
          id: this.editStatus ? this.form.id : null
        },
        isConfCategorys: true //true表示给顶层添加配置项分类
      } : {
        appConfigDetailInfo: {
          categoryId: this.nodeRow.id,
          name: this.form.name,
          desc: this.form.desc,
          key: this.form.key,
          value: this.form.value,
          id: this.editStatus ? this.form.id : null
        },
        isConfCategorys: false //true表示给顶层添加配置项分类
      }
      const saveApi = this.editStatus ? updateAppConf : addAppConf;
      saveApi(params).then(res => {
        if (res.data.code === 200) {
          this.$message.success(res.data.obj);
          this.addVisibleClose();
          if (this.nodeRow.id === 'firstNode') {
            this.getTreeList('save');
          } else {
            this.configLoading = true;
            getAppConfigDetailsByID({clsId: this.nodeRow.id}).then(res => {
              if (res.data.code === 200) {
                const data = res.data.data;
                this.configData = data;
                this.configLoading = false;
              }
            })
      this.$refs.form.validate((valid) => {
        if (valid) {
          const params = this.nodeRow.id === 'firstNode' ? {
            appConfigDetailInfo: {
              name: this.form.name,
              desc: this.form.desc,
              id: this.editStatus ? this.form.id : null
            },
            isConfCategorys: true //true表示给顶层添加配置项分类
          } : {
            appConfigDetailInfo: {
              categoryId: this.nodeRow.id,
              name: this.form.name,
              desc: this.form.desc,
              key: this.form.key,
              value: this.form.value,
              id: this.editStatus ? this.form.id : null
            },
            isConfCategorys: false //true表示给顶层添加配置项分类
          }
          const saveApi = this.editStatus ? updateAppConf : addAppConf;
          saveApi(params).then(res => {
            if (res.data.code === 200) {
              this.$message.success(res.data.obj);
              this.addVisibleClose();
              if (this.nodeRow.id === 'firstNode') {
                this.getTreeList('save');
              } else {
                this.configLoading = true;
                getAppConfigDetailsByID({clsId: this.nodeRow.id}).then(res => {
                  if (res.data.code === 200) {
                    const data = res.data.data;
                    this.configData = data;
                    this.configLoading = false;
                  }
                })
              }
            }
          })
        }
      })
      });
    },
    // ç¼–辑按钮
@@ -312,8 +306,7 @@
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        getAppConfigCategoryInfo(params).then(res => {
          console.log(res)
        delAppConf(params).then(res => {
          if (res.data.code === 200) {
            this.$message.success('删除成功');
            if (this.nodeRow.id === 'firstNode') {
@@ -377,8 +370,7 @@
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        getAppConfigCategoryInfo(params).then(res => {
          console.log(res)
        delAppConf(params).then(res => {
          if (res.data.code === 200) {
            this.$message.success('删除成功');
            if (this.nodeRow.id === 'firstNode') {