index.vue 11 KB

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