Procházet zdrojové kódy

Merge branch 'feature/v2.4.0-liugh-logManage' into 'develop_2.4.0_LogManage'

修改filters文件错误,对接部分接口

See merge request dcuc-tjdsj/auth-web!4
刘光华 před 4 roky
rodič
revize
5d91df667a

+ 39 - 0
src/api/log-manage.js

@@ -0,0 +1,39 @@
+/*
+ * @Author: Liugh
+ * @Date: 2021-05-27 11:28:29
+ * @LastEditTime: 2021-05-27 14:56:51
+ * @LastEditors: Do not edit
+ * @FilePath: \auth-web\src\api\log-manage.js
+ * @Description:日志管理接口
+ */
+import axios from "@/utils/req";
+
+export const base = `/auditsvr/v2`;
+
+// 鉴权预警列表
+export const warningProgrammeTableUrl = `${base}/warningProgramme/_search`;
+
+// 鉴权预警详情
+export function warningProgrammeInfo(id) {
+    return axios.get(`${base}/warningProgramme/${id}`);
+}
+
+// 鉴权预警编辑
+export function riskProgramme(data) {
+    return axios.put(`${base}/riskProgramme/${data.id}`, data);
+}
+
+// 角色授权情况列表
+export function getRoleRptList(data) {
+    return axios.post(`${base}/roleRptList/_search`, data, { loading: true });
+}
+
+// 应用拥有的角色数量,配额数量
+export function getRoleQuotasInfo(appId) {
+    return axios.get(`${base}/getRoleQuotasInfo/${appId}`);
+}
+
+// 分局应用授权情况
+export function roleQuotasTable(data) {
+    return axios.post(`${base}/orgRptList/_search`, data);
+}

+ 1 - 1
src/filters/index.js

@@ -46,7 +46,7 @@ export function dateFormatter(value, fmt) {
 }
 
 const install = function(Vue) {
-    let filters = [pluralize,timeAgo,numberFormatter,toThousandFilter,dateFormatter]
+    let filters = { pluralize, timeAgo, numberFormatter, toThousandFilter, dateFormatter };
     Object.keys(filters).forEach(key => {
         Vue.filter(key, filters[key]);
     });

+ 29 - 8
src/pages/log-manage/DataConfig.js

@@ -1,7 +1,7 @@
 /*
  * @Author: Liugh
  * @Date: 2021-05-25 14:09:24
- * @LastEditTime: 2021-05-26 15:28:10
+ * @LastEditTime: 2021-05-27 17:14:10
  * @LastEditors: Do not edit
  * @FilePath: \auth-web\src\pages\log-manage\DataConfig.js
  * @Description:
@@ -13,11 +13,13 @@ const earlyWarningPlanTable = [
     },
     {
         label: "创建时间",
-        prop: "createTime	"
+        prop: "createTime",
+        timestamp: "YYYY-MM-DD"
     },
     {
         label: "修改时间",
-        prop: "updateTime"
+        prop: "updateTime",
+        timestamp: "YYYY-MM-DD"
     },
     {
         label: "预警数量",
@@ -26,16 +28,35 @@ const earlyWarningPlanTable = [
     {
         label: "方案状态",
         // custom: true, // 如果需要自定义请加上这个属性,插槽名称为prop
-        prop: "state"
+        prop: "state",
+        enum: "ProgrammeStateEnum"
     }
 ];
 const earlyWarningPlanTableInfo = [
     { label: "方案名称", value: "name", span: 24 },
-    { label: "方案状态", value: "state", span: 24 },
-    { label: "创建时间", value: "createTime", span: 12 },
-    { label: "修改时间", value: "updateTime", span: 12 },
+    { label: "方案状态", value: "state", span: 24, enum: "ProgrammeStateEnum" },
+    { label: "创建时间", value: "createTime", span: 12, isTime: true },
+    { label: "修改时间", value: "updateTime", span: 12, isTime: true },
     { label: "预警规则", value: "ruleContent", span: 24 },
     { label: "规则说明", value: "ruleExplain", span: 24 },
     { label: "预警信息", value: "warningMsg", span: 24 }
 ];
-export { earlyWarningPlanTable, earlyWarningPlanTableInfo };
+const authActionCountTable = [
+    {
+        label: "鉴权类型",
+        prop: "name"
+    },
+    {
+        label: "鉴权成功次数",
+        prop: "createTime"
+    },
+    {
+        label: "鉴权失败次数",
+        prop: "updateTime"
+    },
+    {
+        label: "鉴权总次数",
+        prop: "number"
+    }
+];
+export { earlyWarningPlanTable, earlyWarningPlanTableInfo, authActionCountTable };

+ 75 - 0
src/pages/log-manage/auth-action-count.vue

@@ -0,0 +1,75 @@
+<!--
+ * @Author: Liugh
+ * @Date: 2021-05-27 16:04:48
+ * @LastEditTime: 2021-05-27 16:26:45
+ * @LastEditors: Do not edit
+ * @FilePath: \auth-web\src\pages\log-manage\auth-action-count.vue
+ * @Description: 
+-->
+<template>
+    <main class="auth-earlywarning-plan">
+        <el-form ref="ruleForm" inline :rules="rules" :model="form">
+            <el-form-item label="鉴权时间" prop="time.value">
+                <el-input v-model="form.time.value" placeholder="请输入鉴权预警方案名称" clearable></el-input>
+            </el-form-item>
+            <el-form-item>
+                <dg-button type="primary" @click="handleSearch" icon="el-icon-search">查询</dg-button>
+                <dg-button type="primary" @click="handleReset" icon="el-icon-refresh-right">重置</dg-button>
+            </el-form-item>
+        </el-form>
+        <Table ref="myTable" :url="tableUrl" :headerData="authActionCountTable" :condition="form"> </Table>
+    </main>
+</template>
+
+<script>
+import Table from "@/pages/common/table";
+import { authActionCountTable } from "../DataConfig";
+import { warningProgrammeTableUrl } from "@/api/log-manage";
+export default {
+    name: "auth-earlywarning-plan", // 组件名称
+    props: {
+        // 接收父组件的数据
+    },
+    data() {
+        // 组件内部参数
+        return {
+            // 参数名称及默认值
+            authActionCountTable,
+            form: {
+                time: {
+                    value: "",
+                    op: "like"
+                }
+            },
+            rules: {},
+            tableUrl: warningProgrammeTableUrl
+        };
+    },
+    computed: {}, // 计算属性
+    watch: {}, // 侦听器(扩展的计算属性)
+    components: { Table }, // 注册局部组件
+    methods: {
+        /**
+         * @description:表单查询
+         */
+        handleSearch() {
+            this.$refs.myTable.handleSearchClick();
+        },
+        /**
+         * @description:表单重置
+         */
+        handleReset() {
+            this.$refs.ruleForm.resetFields();
+        }
+    }, // 内部方法
+    beforeCreate() {}, // 组件创建前
+    created() {}, // 组件创建完成后
+    beforeMount() {}, // 组件挂载前
+    mounted() {}, // 组件挂载完成后
+    beforeUpdate() {}, // 组件更新前
+    updated() {}, // 组件挂载完成后
+    beforeDestroy() {}, // 组件销毁前
+    destroyed() {} // 组件销毁完成后
+};
+</script>
+<style lang="scss" scoped></style>

+ 19 - 13
src/pages/log-manage/err-auth-earlywarning-manage/auth-earlywarning-plan.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: Liugh
  * @Date: 2021-05-25 13:49:40
- * @LastEditTime: 2021-05-26 15:59:42
+ * @LastEditTime: 2021-05-27 17:15:49
  * @LastEditors: Do not edit
  * @FilePath: \auth-web\src\pages\log-manage\err-auth-earlywarning-manage\auth-earlywarning-plan.vue
  * @Description: 鉴权预警方案
@@ -9,14 +9,14 @@
 <template>
     <main class="auth-earlywarning-plan">
         <el-form ref="ruleForm" inline :rules="rules" :model="form">
-            <el-form-item label="鉴权预警方案名称">
-                <el-input v-model="form.userName.value" placeholder="请输入鉴权预警方案名称" clearable></el-input>
+            <el-form-item label="鉴权预警方案名称" prop="name.value">
+                <el-input v-model="form.name.value" placeholder="请输入鉴权预警方案名称" clearable></el-input>
             </el-form-item>
-            <el-form-item label="方案状态">
+            <el-form-item label="方案状态" prop="state.value">
                 <dg-select
-                    v-model="form.applyStatus.value"
+                    v-model="form.state.value"
                     placeholder="请选择方案状态"
-                    code="DM_APPLY_STATUS"
+                    enum="ProgrammeStateEnum"
                     style="width: 13rem"
                     clearable
                 >
@@ -28,7 +28,7 @@
             </el-form-item>
         </el-form>
         <Table ref="myTable" :url="tableUrl" :headerData="earlyWarningPlanTable" :condition="form">
-            <dg-table-column fixed="right" label="操作" align="center">
+            <dg-table-column label="操作" align="center">
                 <template slot-scope="scope">
                     <div class="u-table__operation">
                         <el-tooltip content="详情" effect="dark" placement="top-end">
@@ -47,7 +47,7 @@
 <script>
 import Table from "@/pages/common/table";
 import { earlyWarningPlanTable } from "../DataConfig";
-import { authUserTableUrl } from "@/api/data-auth";
+import { warningProgrammeTableUrl } from "@/api/log-manage";
 import detail from "./detail";
 import edit from "./edit";
 export default {
@@ -61,17 +61,17 @@ export default {
             // 参数名称及默认值
             earlyWarningPlanTable,
             form: {
-                userName: {
+                name: {
                     value: "",
                     op: "like"
                 },
-                applyStatus: {
+                state: {
                     value: "",
                     op: "="
                 }
             },
             rules: {},
-            tableUrl: authUserTableUrl
+            tableUrl: warningProgrammeTableUrl
         };
     },
     computed: {}, // 计算属性
@@ -81,11 +81,15 @@ export default {
         /**
          * @description:表单查询
          */
-        handleSearch() {},
+        handleSearch() {
+            this.$refs.myTable.handleSearchClick();
+        },
         /**
          * @description:表单重置
          */
-        handleReset() {},
+        handleReset() {
+            this.$refs.ruleForm.resetFields();
+        },
         /**
          * @description: 编辑
          */
@@ -94,6 +98,8 @@ export default {
                 title: `异常鉴权预警方案修改`,
                 shade: [0.4, "#FFF"],
                 content: edit,
+                skin: "auth-earlywarning-plan-edit-layer",
+                btn: null,
                 props: {
                     info: row
                 },

+ 44 - 10
src/pages/log-manage/err-auth-earlywarning-manage/detail.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: Liugh
  * @Date: 2021-05-26 15:09:38
- * @LastEditTime: 2021-05-26 15:27:40
+ * @LastEditTime: 2021-05-27 17:18:45
  * @LastEditors: Do not edit
  * @FilePath: \auth-web\src\pages\log-manage\err-auth-earlywarning-manage\detail.vue
  * @Description: 
@@ -11,7 +11,33 @@
         <el-form ref="ruleForm" :model="detailInfo" label-width="100px" label-suffix=":">
             <el-row>
                 <el-col :span="item.span" v-for="(item, index) in earlyWarningPlanTableInfo" :key="index">
-                    <el-form-item :label="item.label">{{ detailInfo[item.value] }} </el-form-item>
+                    <el-form-item :label="item.label">
+                        <template v-if="item.code">
+                            <div class="u-detail__text" v-translate="{ code: item.code }">
+                                {{ detailInfo[item.value] }}
+                            </div>
+                        </template>
+                        <template v-else-if="item.enum">
+                            <div class="u-detail__text" v-translate="{ enum: item.enum }">
+                                {{ detailInfo[item.value] }}
+                            </div>
+                        </template>
+                        <template v-else-if="item.value == 'ruleContent'">
+                            <div class="u-detail__text" v-for="(item, index) in detailInfo[item.value]" :key="index">
+                                用户在{{ item.time[0] }} - {{ item.time[1] }} 进行鉴权
+                            </div>
+                        </template>
+                        <template v-else-if="item.isTime">
+                            <div class="u-detail__text">
+                                {{ detailInfo[item.value] | dateFormatter("YYYY-MM-DD") }}
+                            </div>
+                        </template>
+                        <template v-else>
+                            <div class="u-detail__text">
+                                {{ detailInfo[item.value] }}
+                            </div>
+                        </template>
+                    </el-form-item>
                 </el-col>
             </el-row>
         </el-form>
@@ -20,16 +46,15 @@
 
 <script>
 import { earlyWarningPlanTableInfo } from "../DataConfig";
-import { getAuthUserDetail } from "@/api/data-auth";
-import transferBusinessTagMixin from "@/mixins/transfer-business-tag";
-
+import { warningProgrammeInfo } from "@/api/log-manage";
+// import transferBusinessTagMixin from "@/mixins/transfer-business-tag";
 export default {
     name: "auth-earlywarning-plan-detail", // 组件名称
     props: {
         // 接收父组件的数据
         info: Object
     },
-    mixins: [transferBusinessTagMixin],
+    // mixins: [transferBusinessTagMixin],
     data() {
         // 组件内部参数
         return {
@@ -40,17 +65,26 @@ export default {
     components: {}, // 注册局部组件
     computed: {},
     methods: {
+        countTime(val) {
+            return val >= 10 ? val + ":00" : "0" + val + ":00";
+        },
         getDetail() {
             return new Promise(resolve => {
-                getAuthUserDetail(this.userInfo.id).then(res => {
-                    this.detailInfo = res.data;
-                    resolve(res.data);
+                warningProgrammeInfo(this.info.id).then(res => {
+                    res.ruleContent = JSON.parse(res.ruleContent);
+                    res.ruleContent.forEach(item => {
+                        item.time = [this.countTime(item.start), this.countTime(item.end)];
+                        delete item.start;
+                        delete item.end;
+                    });
+                    this.detailInfo = res;
+                    resolve(res);
                 });
             });
         }
     }, // 内部方法
     async created() {
-        // await this.getDetail();
+        await this.getDetail();
     }
 };
 </script>

+ 104 - 25
src/pages/log-manage/err-auth-earlywarning-manage/edit.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: Liugh
  * @Date: 2021-05-26 15:09:38
- * @LastEditTime: 2021-05-26 16:44:01
+ * @LastEditTime: 2021-05-27 17:16:18
  * @LastEditors: Do not edit
  * @FilePath: \auth-web\src\pages\log-manage\err-auth-earlywarning-manage\edit.vue
  * @Description: 
@@ -18,7 +18,7 @@
                 <el-col :span="24">
                     <el-form-item label="方案状态">
                         <dg-select
-                            v-model="form.value"
+                            v-model="form.state"
                             placeholder="请选择方案状态"
                             code="DM_APPLY_STATUS"
                             style="width: 100%"
@@ -31,31 +31,39 @@
                     <el-form-item label="预警规则">
                         <!--TODO 内嵌form  -->
                         <!-- <el-input type="textarea" :rows="2" placeholder="请输入预警规则" v-model="form.textarea"></el-input> -->
-                        <el-form-item
-                            v-for="(domain, index) in form.domains"
-                            :label="'域名' + index"
-                            :key="domain.key"
-                            :prop="'domains.' + index + '.value'"
-                            :rules="{
-                                required: true,
-                                message: '域名不能为空',
-                                trigger: 'blur'
-                            }"
-                        >
-                            <el-input v-model="domain.value"></el-input
-                            ><el-button @click.prevent="removeDomain(domain)">删除</el-button>
+                        <el-form-item v-for="(domain, index) in form.ruleContent" :key="index">
+                            <div class="time-picker-layer">
+                                用户在
+                                <dg-time-picker
+                                    v-model="domain.time"
+                                    type="timerange2"
+                                    :picker-options="pickerOptions"
+                                    begin-placeholder="开始时间"
+                                    end-placeholder="结束时间"
+                                >
+                                </dg-time-picker>
+                                进行鉴权
+                                <div class="time-picker-layer_button">
+                                    <dg-button circle @click.prevent="addDomain" size="mini">
+                                        <i class="el-icon-plus"></i>
+                                    </dg-button>
+                                    <dg-button circle @click.prevent="removeDomain(domain)" size="mini">
+                                        <i class="el-icon-minus"></i>
+                                    </dg-button>
+                                </div>
+                            </div>
                         </el-form-item>
                     </el-form-item>
                 </el-col>
                 <el-col :span="24">
                     <el-form-item label="规则说明">
-                        <el-input type="textarea" :rows="2" placeholder="请输入规则说明" v-model="form.textarea">
+                        <el-input type="textarea" :rows="2" placeholder="请输入规则说明" v-model="form.ruleExplain">
                         </el-input>
                     </el-form-item>
                 </el-col>
                 <el-col :span="24">
                     <el-form-item label="预警信息">
-                        <el-input type="textarea" :rows="2" placeholder="请输入预警信息" v-model="form.textarea">
+                        <el-input type="textarea" :rows="2" placeholder="请输入预警信息" v-model="form.warningMsg">
                         </el-input>
                     </el-form-item>
                 </el-col>
@@ -63,13 +71,17 @@
                 <!-- <el-form-item :label="item.label">{{ detailInfo[item.value] }} </el-form-item> -->
                 <!-- </el-col> -->
             </el-row>
+            <el-form-item>
+                <el-button type="primary" @click="onSubmit">立即创建</el-button>
+                <el-button>取消</el-button>
+            </el-form-item>
         </el-form>
     </main>
 </template>
 
 <script>
 import { earlyWarningPlanTableInfo } from "../DataConfig";
-import { getAuthUserDetail } from "@/api/data-auth";
+import { riskProgramme, warningProgrammeInfo } from "@/api/log-manage";
 import transferBusinessTagMixin from "@/mixins/transfer-business-tag";
 
 export default {
@@ -83,10 +95,15 @@ export default {
         // 组件内部参数
         return {
             earlyWarningPlanTableInfo,
+            pickerOptions: {
+                start: "00:00",
+                step: "01:00",
+                end: "23:00"
+            },
             form: {
-                domains: [
+                ruleContent: [
                     {
-                        value: ""
+                        time: ""
                     }
                 ]
             }
@@ -95,18 +112,80 @@ export default {
     components: {}, // 注册局部组件
     computed: {},
     methods: {
+        onSubmit() {
+            this.form.ruleContent.forEach(item => {
+                item.start = parseInt(item.time[0]);
+                item.end = parseInt(item.time[1]);
+            });
+            this.form.ruleContent = JSON.stringify(this.form.ruleContent);
+            riskProgramme(this.form).then(res => {
+                this.$message.success("操作成功");
+                this.$emit("success");
+            });
+        },
+        /**
+         * @description:添加规则
+         * @param {*}
+         * @return {*}
+         */
+        addDomain() {
+            this.form.ruleContent.push({
+                time: ""
+            });
+        },
+        /**
+         * @description:移除规则
+         * @param {*} item
+         * @return {*}
+         */
+        removeDomain(item) {
+            if (this.form.ruleContent.length <= 1) return;
+            var index = this.form.ruleContent.indexOf(item);
+            if (index !== -1) {
+                this.form.ruleContent.splice(index, 1);
+            }
+        },
+        countTime(val) {
+            return val >= 10 ? val + ":00" : "0" + val + ":00";
+        },
+        /**
+         * @description: 获取详情
+         */
         getDetail() {
             return new Promise(resolve => {
-                getAuthUserDetail(this.userInfo.id).then(res => {
-                    this.form = res.data;
-                    resolve(res.data);
+                warningProgrammeInfo(this.info.id).then(res => {
+                    res.ruleContent = JSON.parse(res.ruleContent);
+                    res.ruleContent.forEach(item => {
+                        item.time = [this.countTime(item.start), this.countTime(item.end)];
+                        delete item.start;
+                        delete item.end;
+                    });
+                    this.form = res;
+                    console.log(this.form);
+                    resolve(res);
                 });
             });
         }
     }, // 内部方法
     async created() {
-        // await this.getDetail();
+        await this.getDetail();
     }
 };
 </script>
-<style lang="scss" scoped></style>
+<style lang="scss">
+.auth-earlywarning-plan-edit-layer {
+    .time-picker-layer {
+        display: flex;
+        // align-items: center;
+        margin-bottom: 0.75rem;
+        &_button {
+            margin-left: 0.9375rem;
+        }
+    }
+    .dg-range-editor {
+        margin: 0 0.9375rem;
+        display: flex;
+        // align-items: center;
+    }
+}
+</style>

+ 1 - 1
src/pages/log-manage/index.scss

@@ -1,7 +1,7 @@
 /*
  * @Author: Liugh
  * @Date: 2021-05-25 14:09:38
- * @LastEditTime: 2021-05-26 16:09:25
+ * @LastEditTime: 2021-05-27 14:37:55
  * @LastEditors: Do not edit
  * @FilePath: \auth-web\src\pages\log-manage\index.scss
  * @Description: