Эх сурвалжийг харах

<feat>列表、详情、编辑完成

panyca 4 жил өмнө
parent
commit
deb1a16958

+ 52 - 32
src/pages/log-manage/auth-risk-detection/detail.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="u-detail">
-        <el-form ref="ruleForm" label-width="120px" label-suffix=":">
+        <el-form ref="ruleForm" label-width="90px" label-suffix=":">
             <dg-row :gutter="20">
                 <dg-col :span="12">
                     <el-form-item label="方案名称">
@@ -18,12 +18,14 @@
             <dg-row :gutter="20">
                 <dg-col :span="12">
                     <el-form-item label="创建时间">
-                        <div class="u-detail__text">{{ sizeForm.createTime }}</div>
+                        <div class="u-detail__text">
+                            {{ sizeForm.createTime | dateFormatter("YYYY-MM-DD HH:mm:ss") }}
+                        </div>
                     </el-form-item>
                 </dg-col>
             </dg-row>
             <dg-row :gutter="20">
-                <dg-col :span="12">
+                <dg-col :span="24">
                     <el-form-item label="检测规则">
                         <div v-if="sizeForm.type === 'JQBYTJBWZFX'">
                             <p>
@@ -32,7 +34,7 @@
                             <div>
                                 鉴权类型:
                                 <dg-radio-group
-                                    v-model="sizeForm.authType"
+                                    v-model="form.authType"
                                     enum="AuthenticationNecessaryParamEnum"
                                     @change="setNecessaryParams"
                                     call-off
@@ -41,26 +43,29 @@
                             <div class="form-inline">
                                 <label>必要参数:</label>
                                 <dg-checkbox-group
-                                    v-model="sizeForm.necessaryParams"
+                                    v-model="form.necessaryParams"
                                     enum="AuthenticationTypeEnum"
                                     disabled
                                 ></dg-checkbox-group>
                             </div>
                         </div>
+                        <div v-else>
+                            {{ ruleContent }}
+                        </div>
                     </el-form-item>
                 </dg-col>
             </dg-row>
             <dg-row :gutter="20">
                 <dg-col :span="24">
-                    <el-form-item label="风险内容">
-                        <div class="u-detail__text">{{ sizeForm.contentFormat }}</div>
+                    <el-form-item label="规则说明">
+                        <div class="u-detail__text">{{ sizeForm.ruleExplain }}</div>
                     </el-form-item>
                 </dg-col>
             </dg-row>
             <dg-row :gutter="20">
                 <dg-col :span="24">
-                    <el-form-item label="规则说明">
-                        <div class="u-detail__text">{{ sizeForm.ruleExplain }}</div>
+                    <el-form-item label="风险内容">
+                        <div class="u-detail__text">{{ sizeForm.contentFormat }}</div>
                     </el-form-item>
                 </dg-col>
             </dg-row>
@@ -88,36 +93,45 @@ export default {
         }
     },
     data() {
-        return {};
+        return {
+            form: {
+                necessaryParams: "",
+                authType: ""
+            },
+            ruleContent: "",
+            necessaryParams: []
+        };
     },
     methods: {
+        init() {
+            if (this.sizeForm.type === "JQBYTJBWZFX") {
+                this.necessaryParams = JSON.parse(this.sizeForm.ruleContent);
+                if (Array.isArray(this.necessaryParams) && this.necessaryParams.length) {
+                    this.form.authType = this.necessaryParams[0].type;
+                    this.setNecessaryParams(this.form.authType);
+                }
+                return;
+            }
+            const { interval, frequency } = JSON.parse(this.sizeForm.ruleContent);
+            const text = this.sizeForm.type === "DSJPFJQFX" ? "分钟内,鉴权次数超过" : "分钟内,命中红/白名单超过";
+            this.ruleContent = interval + text + frequency + "次";
+        },
         handleClose() {
             this.$emit("close");
+        },
+        setNecessaryParams(key) {
+            const seleted = this.necessaryParams.find(item => item.type === key);
+            if (seleted) {
+                this.form.necessaryParams = seleted.params
+                    .map(item => {
+                        return item.name;
+                    })
+                    .join(",");
+            }
         }
     },
     created() {
-        const that = this;
-        const { sizeForm } = that;
-        // let str = "";
-        // policeMsgApi
-        //     .businessDetail({
-        //         codeDicId: "DM_POLICE_BUSINESS",
-        //         columnName: "police_type_id",
-        //         columnValue: sizeForm.policeCategory ? sizeForm.policeCategory : "01"
-        //     })
-        //     .then(res => {
-        //         if (sizeForm.policeBusiness) {
-        //             if (res && res.length > 0) {
-        //                 res.forEach(item => {
-        //                     if (sizeForm.policeBusiness.indexOf(item.value) !== -1) {
-        //                         str += item.label + ",";
-        //                     }
-        //                 });
-        //                 str = str.slice(0, str.length - 1);
-        //             }
-        //             that.policeBusinessLabel = str;
-        //         }
-        //     });
+        this.init();
     }
 };
 </script>
@@ -128,4 +142,10 @@ export default {
         margin-bottom: 10px;
     }
 }
+.form-inline {
+    display: flex;
+    label {
+        min-width: 75px;
+    }
+}
 </style>

+ 24 - 42
src/pages/log-manage/auth-risk-detection/edit.vue

@@ -6,7 +6,7 @@
             :model="sizeForm"
             label-suffix=":"
             label-position="right"
-            label-width="140px"
+            label-width="90px"
         >
             <dg-row>
                 <dg-col :span="12">
@@ -39,37 +39,6 @@
                 <dg-col :span="24">
                     <el-form-item label="检测规则" prop="ruleContent">
                         <!-- DSJPFJQFX    DSJPFHBMDMZFX JQBYTJBWZFX -->
-                        <div v-if="sizeForm.type === 'DSJPFJQFX'">
-                            <div class="form-inline">
-                                <el-form-item label="" prop="interval">
-                                    <el-input style="width: 80px;" v-model.trim="sizeForm.interval"></el-input>
-                                </el-form-item>
-                                &nbsp;分钟内,鉴权次数超过&nbsp;
-                                <el-form-item label="" prop="frequency"
-                                    ><el-input style="width: 80px;" v-model.trim="sizeForm.frequency"></el-input>
-                                </el-form-item>
-                                &nbsp;次
-                            </div>
-                            <!-- <p>
-                                规则说明:用户在短时间内,频繁发起请求,鉴定是否有应用或服务的访问权限。鉴权次数说明:a用户访问A应用(或者服务),A应用到鉴权服务鉴定a用户,是否可以访问A应用(或者服务),为一次鉴权。
-                            </p> -->
-                        </div>
-                        <div v-if="sizeForm.type === 'DSJPFHBMDMZFX'">
-                            <div class="form-inline">
-                                <el-form-item label="" prop="interval">
-                                    <el-input style="width: 80px;" v-model.trim="sizeForm.interval"></el-input>
-                                </el-form-item>
-                                &nbsp; 分钟内,命中红/白名单超过&nbsp;
-                                <el-form-item label="" prop="frequency"
-                                    ><el-input style="width: 80px;" v-model.trim="sizeForm.frequency"></el-input>
-                                </el-form-item>
-                                &nbsp;次
-                            </div>
-                            <!-- <p>
-                                规则说明:在短时间内,鉴权的内容在红/白名单的次数超量。
-                                命中红/白名单说明:a用户访问A应用(或者服务),A应用到鉴权服务鉴定a用户是否可以访问A应用(或者服务),若A应用在红/白名单中,为命中一次红白名单。
-                            </p> -->
-                        </div>
                         <div v-if="sizeForm.type === 'JQBYTJBWZFX'">
                             <p>
                                 鉴权时,必要条件不完整。
@@ -91,17 +60,17 @@
                                     disabled
                                 ></dg-checkbox-group>
                             </div>
-                            <!-- <p>
-                                规则说明:用户在短时间内,频繁发起请求,鉴定是否有应用或服务的访问权限。鉴权次数说明:a用户访问A应用(或者服务),A应用到鉴权服务鉴定a用户,是否可以访问A应用(或者服务),为一次鉴权。
-                            </p> -->
                         </div>
-                    </el-form-item>
-                </dg-col>
-            </dg-row>
-            <dg-row>
-                <dg-col :span="24">
-                    <el-form-item label="风险内容" prop="contentFormat">
-                        {{ sizeForm.contentFormat }}
+                        <div v-else class="form-inline">
+                            <el-form-item label="" prop="interval">
+                                <el-input style="width: 80px;" v-model.trim="sizeForm.interval"></el-input>
+                            </el-form-item>
+                            &nbsp;{{ ruleText }}&nbsp;
+                            <el-form-item label="" prop="frequency"
+                                ><el-input style="width: 80px;" v-model.trim="sizeForm.frequency"></el-input>
+                            </el-form-item>
+                            &nbsp;次
+                        </div>
                     </el-form-item>
                 </dg-col>
             </dg-row>
@@ -122,6 +91,13 @@
                     </el-form-item>
                 </dg-col>
             </dg-row>
+            <dg-row>
+                <dg-col :span="24">
+                    <el-form-item label="风险内容" prop="contentFormat">
+                        {{ sizeForm.contentFormat }}
+                    </el-form-item>
+                </dg-col>
+            </dg-row>
             <dg-row>
                 <dg-col :span="24">
                     <el-form-item label="处理意见" prop="handleOpinion">
@@ -153,6 +129,12 @@ export default {
     props: {
         formData: Object
     },
+    computed: {
+        ruleText() {
+            if (this.sizeForm.type === "DSJPFJQFX") return "分钟内,鉴权次数超过";
+            return "分钟内,命中红/白名单超过";
+        }
+    },
     data() {
         return {
             necessaryParams: [],

+ 10 - 19
src/pages/log-manage/auth-risk-detection/index.vue

@@ -55,15 +55,11 @@ import Detail from "@/pages/log-manage/auth-risk-detection/detail";
 import Editor from "@/pages/log-manage/auth-risk-detection/edit";
 
 export default {
-    name: "auth-risk-detection", // 组件名称
-    props: {
-        // 接收父组件的数据
-    },
+    name: "auth-risk-detection",
+    props: {},
     data() {
         const that = this;
-        // 组件内部参数
         return {
-            // 参数名称及默认值
             RiskDetectionPlan,
             form: {
                 // name: {
@@ -83,8 +79,6 @@ export default {
             ]
         };
     },
-    computed: {}, // 计算属性
-    watch: {}, // 侦听器(扩展的计算属性)
     components: { Table, Detail, Editor }, // 注册局部组件
     methods: {
         reloadTable() {
@@ -142,20 +136,17 @@ export default {
         /**
          * @description:表单查询
          */
-        handleSearch() {},
+        handleSearch() {
+            this.$refs.myTable.handleSearchClick();
+        },
         /**
          * @description:表单重置
          */
-        handleReset() {}
-    }, // 内部方法
-    beforeCreate() {}, // 组件创建前
-    created() {}, // 组件创建完成后
-    beforeMount() {}, // 组件挂载前
-    mounted() {}, // 组件挂载完成后
-    beforeUpdate() {}, // 组件更新前
-    updated() {}, // 组件挂载完成后
-    beforeDestroy() {}, // 组件销毁前
-    destroyed() {} // 组件销毁完成后
+        handleReset() {
+            this.form.state.value = "";
+            this.handleSearch();
+        }
+    }
 };
 </script>
 <style lang="scss" scoped></style>