index.vue 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. <template>
  2. <div class="app-container">
  3. <el-form ref="form" :model="form" :rules="rules" label-width="250px" size="small">
  4. <el-form-item label="登录失败次数限制" prop="loginFails">
  5. <el-input v-model="form.loginFails" style="width: 240px"></el-input>
  6. </el-form-item>
  7. <el-form-item label="登录失败锁定时长(至少20分钟)" prop="loginLock">
  8. <el-input v-model="form.loginLock" style="width: 240px"></el-input>
  9. </el-form-item>
  10. <el-form-item label="密码规则设置">
  11. <el-checkbox-group v-model="form.passwordRule">
  12. <el-checkbox v-for="(item,index) in passwordRuleList" :key="index" :label="item.value">{{ item.label }}
  13. </el-checkbox>
  14. </el-checkbox-group>
  15. </el-form-item>
  16. <el-form-item label="账号未使用的月数设置" prop="scanAccount">
  17. <el-input v-model="form.scanAccount" style="width: 240px"></el-input>
  18. </el-form-item>
  19. <el-form-item label="非活动状态登出系统(设定分钟数)" prop="inactiveLogout">
  20. <el-input v-model="form.inactiveLogout" style="width: 240px"></el-input>
  21. </el-form-item>
  22. <el-form-item label="并发会话数(1-10个)" prop="bfhhs">
  23. <el-input v-model="form.bfhhs" style="width: 240px"></el-input>
  24. </el-form-item>
  25. <el-form-item label="审计日志保留月数" prop="auditLog">
  26. <el-input v-model="form.auditLog" style="width: 240px"></el-input>
  27. </el-form-item>
  28. <el-form-item label="审计日志存储容量告警上限(GB)" prop="auditLogBakCapAlarm" type="number">
  29. <el-input v-model="form.auditLogBakCapAlarm" style="width: 240px"></el-input>
  30. </el-form-item>
  31. <el-form-item label="内存低于阈值告警(%)" prop="memoryWarn">
  32. <el-input v-model="form.memoryWarn" style="width: 240px"></el-input>
  33. </el-form-item>
  34. <el-form-item label="日志存储低于阈值告警(%)" prop="logSpaceWarn">
  35. <el-input v-model="form.logSpaceWarn" style="width: 240px"></el-input>
  36. </el-form-item>
  37. <el-form-item label="A级别异常通知方式" prop="excNoticeWayA">
  38. <el-select v-model="form.excNoticeWayA" placeholder="请选择通知方式" style="width: 240px">
  39. <el-option
  40. v-for="item in excNoticeOptions"
  41. :key="item.value"
  42. :label="item.label"
  43. :value="item.value"
  44. ></el-option>
  45. </el-select>
  46. </el-form-item>
  47. <el-form-item label="B级别异常通知方式" prop="excNoticeWayB">
  48. <el-select v-model="form.excNoticeWayB" placeholder="请选择通知方式" style="width: 240px">
  49. <el-option
  50. v-for="item in excNoticeOptions"
  51. :key="item.value"
  52. :label="item.label"
  53. :value="item.value"
  54. ></el-option>
  55. </el-select>
  56. </el-form-item>
  57. <el-form-item label="连续登录失败异常级别" prop="excLevelLogin">
  58. <el-select v-model="form.excLevelLogin" placeholder="请选择异常级别" style="width: 240px">
  59. <el-option
  60. v-for="item in excLevelOptions"
  61. :key="item.value"
  62. :label="item.label"
  63. :value="item.value"
  64. ></el-option>
  65. </el-select>
  66. </el-form-item>
  67. <el-form-item label="同一用户多点登录异常级别" prop="excLevelSameUser">
  68. <el-select v-model="form.excLevelSameUser" placeholder="请选择异常级别" style="width: 240px">
  69. <el-option
  70. v-for="item in excLevelOptions"
  71. :key="item.value"
  72. :label="item.label"
  73. :value="item.value"
  74. ></el-option>
  75. </el-select>
  76. </el-form-item>
  77. <el-form-item label="越权访问异常级别" prop="excLevelLogin">
  78. <el-select v-model="form.unauthorizedAccessExceptionLevel" placeholder="请选择异常级别" style="width: 240px">
  79. <el-option
  80. v-for="item in excLevelOptions"
  81. :key="item.value"
  82. :label="item.label"
  83. :value="item.value"
  84. ></el-option>
  85. </el-select>
  86. </el-form-item>
  87. <el-form-item label="IP地址异常级别" prop="excLevelSameUser">
  88. <el-select v-model="form.ipAddressExceptionLevel" placeholder="请选择异常级别" style="width: 240px">
  89. <el-option
  90. v-for="item in excLevelOptions"
  91. :key="item.value"
  92. :label="item.label"
  93. :value="item.value"
  94. ></el-option>
  95. </el-select>
  96. </el-form-item>
  97. <el-form-item label="审计策略配置" prop="auditableEvent">
  98. <el-checkbox-group v-model="form.auditableEvent">
  99. <el-checkbox v-for="(item,index) in auditableEventList" :key="index" :label="item.value">{{ item.label }}
  100. </el-checkbox>
  101. </el-checkbox-group>
  102. </el-form-item>
  103. <el-form-item>
  104. <el-button type="primary" @click="onSubmit">保存</el-button>
  105. </el-form-item>
  106. </el-form>
  107. </div>
  108. </template>
  109. <script>
  110. import {debounce} from "lodash";
  111. export default {
  112. data() {
  113. return {
  114. passwordRuleList: [
  115. {value: 'A', label: '大写字母'},
  116. {value: 'B', label: '小写字母'},
  117. {value: 'C', label: '数字'},
  118. {value: 'D', label: '特殊字符'},
  119. ],
  120. excNoticeOptions: [
  121. {value: '0', label: '邮件'}
  122. ],
  123. excLevelOptions: [
  124. {value: '0', label: 'A'},
  125. {value: '1', label: 'B'}
  126. ],
  127. auditableEventList: [
  128. {value: '0', label: '不审计NWP预测查询'},
  129. {value: '1', label: '不审计DQ预测查询'}
  130. ],
  131. form: {
  132. loginFails: '',
  133. loginLock: '',
  134. scanAccount: '',
  135. inactiveLogout: '',
  136. auditLog: '',
  137. auditLogBakCapAlarm: 1,
  138. memoryWarn: '',
  139. bfhhs: '',
  140. logSpaceWarn: '',
  141. excNoticeWayA: '0',
  142. excNoticeWayB: '0',
  143. excLevelLogin: "0",
  144. excLevelSameUser: '0',
  145. unauthorizedAccessExceptionLevel: '0',
  146. ipAddressExceptionLevel: '0',
  147. passwordRule: '',
  148. auditableEvent: ''
  149. },
  150. // 表单校验
  151. rules: {
  152. loginFails: [
  153. {required: true, message: "登录失败次数限制不能为空", trigger: "blur"},
  154. {pattern: /^([1-9]|10)$/, message: "请输入1-10整数", trigger: "blur"}
  155. ],
  156. scanAccount: [
  157. {required: true, message: "扫描未使用的账号不能为空", trigger: "blur"},
  158. {pattern: /^([1-3])$/, message: "请输入1-3整数", trigger: "blur"}
  159. ],
  160. loginLock: [
  161. {required: true, message: "登录失败锁定时长不能为空", trigger: "blur"},
  162. {pattern: /^(?:[2-9]\d|100)$/, message: "请输入20-100整数", trigger: "blur"}
  163. ],
  164. inactiveLogout: [
  165. {required: true, message: "非活动状态登出系统不能为空", trigger: "blur"},
  166. {pattern: /^([1-9]|[1-2]\d|30)$/, message: "请输入1-30整数", trigger: "blur"}
  167. ],
  168. auditLog: [
  169. {required: true, message: "审计日志保留月数不能为空", trigger: "blur"},
  170. {pattern: /^([6-9]|(1[0-2]))$/, message: "请输入6-12整数", trigger: "blur"}
  171. ],
  172. auditLogBakCapAlarm: [
  173. {required: true, message: "审计日志保存容量上限不能为空", trigger: "blur"},
  174. {pattern: /^\d+(\.\d+)?$/, message: "请输入数字", trigger: "blur"}
  175. ],
  176. memoryWarn: [
  177. {required: true, message: "内存低于阈值告警不能为空", trigger: "blur"},
  178. {pattern: /^(?:[2-8]\d|90)$/, message: "请输入20-90整数", trigger: "blur"}
  179. ],
  180. logSpaceWarn: [
  181. {required: true, message: "日志存储低于阈值告警不能为空", trigger: "blur"},
  182. {pattern: /^(?:[2-8]\d|90)$/, message: "请输入20-90整数", trigger: "blur"}
  183. ],
  184. bfhhs: [
  185. {required: true, message: "并发会话数不能为空", trigger: "blur"},
  186. {pattern: /^([1-9]|10)$/, message: "请输入1-10整数", trigger: "blur"}
  187. ]
  188. },
  189. }
  190. },
  191. created() {
  192. this.getList()
  193. },
  194. methods: {
  195. /** 查询用户列表 */
  196. async getList() {
  197. let sysTime
  198. let lk
  199. await this.$axios.get('/sysPolicyController/getLicenseKey').then((res) => {
  200. sysTime = res.data.sysTime
  201. lk = res.data.lk
  202. }).catch((error) => {
  203. })
  204. var searchParams = {
  205. sysTime: sysTime,
  206. lk: lk
  207. }
  208. await this.$axios.get('/sysPolicyController/getAll', {params: searchParams}).then((res) => {
  209. this.form = res.data
  210. this.form.passwordRule = res.data.passwordRule.split(',')
  211. this.form.auditableEvent = res.data.auditableEvent.split(',')
  212. }).catch((error) => {
  213. // this.$message.error(error)
  214. })
  215. },
  216. onSubmit: debounce(async function () {
  217. this.$refs["form"].validate(async valid => {
  218. if (valid) {
  219. if (this.form.passwordRule.length < 3) {
  220. this.$message.warning('密码规则至少需要3种以上的组合!')
  221. return
  222. } else {
  223. this.form.passwordRule = this.form.passwordRule.join(",")
  224. }
  225. this.form.auditableEvent = this.form.auditableEvent.join(",")
  226. let sysTime
  227. let lk
  228. await this.$axios.get('/sysPolicyController/getLicenseKey').then((res) => {
  229. sysTime = res.data.sysTime
  230. lk = res.data.lk
  231. }).catch((error) => {
  232. })
  233. this.form.sysTime = sysTime
  234. this.form.lk = lk
  235. this.loading = true
  236. await this.$axios.post('/sysPolicyController', this.form).then((res) => {
  237. if (res.code == 0) {
  238. this.$message.success('策略配置保存成功')
  239. }
  240. if (res.code == 1) {
  241. this.$message.error(res.data)
  242. }
  243. this.loading = false
  244. this.getList()
  245. }).catch((error) => {
  246. this.$message.error(error)
  247. this.loading = false
  248. })
  249. }
  250. });
  251. }, 1000)
  252. }
  253. }
  254. </script>
  255. <style lang="scss" scoped>
  256. </style>