index.vue 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <template>
  2. <div class="system-dic-container page-full">
  3. <el-card class="page-full-part" shadow="never">
  4. <el-form :model="form" ref="queryRef" label-width="155px">
  5. <div :style="{ width: '450px' }">
  6. <el-descriptions title="安全控制"></el-descriptions>
  7. <el-form-item label="是否启用安全控制" prop="security">
  8. <el-radio-group v-model="form.security">
  9. <el-radio label="0">否</el-radio>
  10. <el-radio label="1">是</el-radio>
  11. </el-radio-group>
  12. </el-form-item>
  13. <el-descriptions title="登录设置"></el-descriptions>
  14. <el-form-item label="是否单一登录" prop="singleLogin">
  15. <el-radio-group v-model="form.singleLogin">
  16. <el-radio label="0">否</el-radio>
  17. <el-radio label="1">是</el-radio>
  18. </el-radio-group>
  19. </el-form-item>
  20. <el-form-item label="首次登录是否更改密码" prop="changePwdFirstLogin">
  21. <el-radio-group v-model="form.changePwdFirstLogin">
  22. <el-radio label="0">否</el-radio>
  23. <el-radio label="1">是</el-radio>
  24. </el-radio-group>
  25. </el-form-item>
  26. <el-form-item label="TOKEN过期时间" prop="expiryDate">
  27. <el-input type="number" v-model="form.expiryDate" placeholder="请输入">
  28. <template #append>分钟</template>
  29. </el-input>
  30. </el-form-item>
  31. <el-form-item label="密码输入错误次数" prop="errorNum">
  32. <el-input type="number" v-model="form.errorNum" placeholder="请输入"></el-input>
  33. </el-form-item>
  34. <el-form-item label="允许再次登录时间" prop="againLoginDate">
  35. <el-input type="number" v-model="form.againLoginDate" placeholder="请输入">
  36. <template #append>分钟</template>
  37. </el-input>
  38. </el-form-item>
  39. <el-form-item label="密码更换周期开关" prop="changePeriodSwitch">
  40. <el-radio-group v-model="form.changePeriodSwitch">
  41. <el-radio label="0">否</el-radio>
  42. <el-radio label="1">是</el-radio>
  43. </el-radio-group>
  44. </el-form-item>
  45. <el-form-item label="密码更换周期" prop="changePeriod">
  46. <el-input type="number" v-model="form.changePeriod" placeholder="请输入">
  47. <template #append>天</template>
  48. </el-input>
  49. </el-form-item>
  50. <el-descriptions title="密码策略设置"></el-descriptions>
  51. <el-form-item label="是否包含大写字母" prop="uppercase">
  52. <el-radio-group v-model="form.uppercase">
  53. <el-radio label="0">否</el-radio>
  54. <el-radio label="1">是</el-radio>
  55. </el-radio-group>
  56. </el-form-item>
  57. <el-form-item label="是否包含小写字母" prop="lowercase">
  58. <el-radio-group v-model="form.lowercase">
  59. <el-radio label="0">否</el-radio>
  60. <el-radio label="1">是</el-radio>
  61. </el-radio-group>
  62. </el-form-item>
  63. <el-form-item label="是否包含数字" prop="digit">
  64. <el-radio-group v-model="form.digit">
  65. <el-radio label="0">否</el-radio>
  66. <el-radio label="1">是</el-radio>
  67. </el-radio-group>
  68. </el-form-item>
  69. <el-form-item label="是否包含复杂字符" prop="complexity">
  70. <el-radio-group v-model="form.complexity">
  71. <el-radio label="0">否</el-radio>
  72. <el-radio label="1">是</el-radio>
  73. </el-radio-group>
  74. </el-form-item>
  75. <el-form-item label="密码长度" prop="minimum">
  76. <el-input type="number" v-model="form.minimum" placeholder="请输入密码长度"></el-input>
  77. </el-form-item>
  78. <el-descriptions title="权限设置"></el-descriptions>
  79. <el-form-item label="按钮开关" prop="button">
  80. <el-radio-group v-model="form.button">
  81. <el-radio label="0">否</el-radio>
  82. <el-radio label="1">是</el-radio>
  83. </el-radio-group>
  84. </el-form-item>
  85. <el-form-item label="列表开关" prop="column">
  86. <el-radio-group v-model="form.column">
  87. <el-radio label="0">否</el-radio>
  88. <el-radio label="1">是</el-radio>
  89. </el-radio-group>
  90. </el-form-item>
  91. <el-form-item label="API开关" prop="api">
  92. <el-radio-group v-model="form.api">
  93. <el-radio label="0">否</el-radio>
  94. <el-radio label="1">是</el-radio>
  95. </el-radio-group>
  96. </el-form-item>
  97. <el-form-item>
  98. <el-button type="primary" class="ml10" @click="saveEmailConfig">确认</el-button>
  99. </el-form-item>
  100. </div>
  101. </el-form>
  102. </el-card>
  103. </div>
  104. </template>
  105. <script lang="ts" setup>
  106. import { reactive } from 'vue';
  107. import { ElMessage } from 'element-plus';
  108. import api from '/@/api/system';
  109. const emailConfigMap: any = {}
  110. const form = reactive({
  111. singleLogin: '',
  112. expiryDate: '',
  113. uppercase: '',
  114. lowercase: '',
  115. digit: '',
  116. complexity: '',
  117. minimum: '',
  118. errorNum: '',
  119. againLoginDate: '',
  120. changePeriod: '',
  121. button: '',
  122. column: '',
  123. api: '',
  124. security: '',
  125. changePeriodSwitch: '',
  126. changePwdFirstLogin: '',
  127. })
  128. // 是否包含大写字母
  129. // 是否包含小写字母
  130. // 是否包含数字
  131. // 是否包含复杂字符
  132. // 密码长度
  133. // 密码输入错误次数
  134. // 允许再次登录时间
  135. // 密码更换周期
  136. api.basicConfig.getDetails({ types: 1 }).then((res: any) => {
  137. res.data.forEach((item: any) => {
  138. emailConfigMap[item.configKey] = item
  139. })
  140. form.singleLogin = emailConfigMap['sys.is.single.login']?.configValue
  141. form.expiryDate = emailConfigMap['sys.token.expiry.date']?.configValue
  142. form.uppercase = emailConfigMap['sys.require.uppercase.letter']?.configValue
  143. form.lowercase = emailConfigMap['sys.require.lowercase.letter']?.configValue
  144. form.digit = emailConfigMap['sys.require.digit']?.configValue
  145. form.complexity = emailConfigMap['sys.require.complexity']?.configValue
  146. form.minimum = emailConfigMap['sys.password.minimum.length']?.configValue
  147. form.errorNum = emailConfigMap['sys.password.error.num']?.configValue
  148. form.againLoginDate = emailConfigMap['sys.again.login.date']?.configValue
  149. form.changePeriod = emailConfigMap['sys.password.change.period']?.configValue
  150. form.changePeriod = emailConfigMap['sys.password.change.period']?.configValue
  151. form.changePeriod = emailConfigMap['sys.password.change.period']?.configValue
  152. form.changePeriodSwitch = emailConfigMap['sys.password.change.period.switch']?.configValue
  153. form.changePwdFirstLogin = emailConfigMap['sys.change.password.for.first.login']?.configValue
  154. form.button = emailConfigMap['sys.button.switch']?.configValue
  155. form.column = emailConfigMap['sys.column.switch']?.configValue
  156. form.api = emailConfigMap['sys.api.switch']?.configValue
  157. form.security = emailConfigMap['sys.is.security.control.enabled']?.configValue
  158. });
  159. function saveEmailConfig() {
  160. emailConfigMap['sys.is.single.login'] && (emailConfigMap['sys.is.single.login'].configValue = form.singleLogin)
  161. emailConfigMap['sys.token.expiry.date'] && (emailConfigMap['sys.token.expiry.date'].configValue = form.expiryDate)
  162. emailConfigMap['sys.require.uppercase.letter'] && (emailConfigMap['sys.require.uppercase.letter'].configValue = form.uppercase)
  163. emailConfigMap['sys.require.lowercase.letter'] && (emailConfigMap['sys.require.lowercase.letter'].configValue = form.lowercase)
  164. emailConfigMap['sys.require.digit'] && (emailConfigMap['sys.require.digit'].configValue = form.digit)
  165. emailConfigMap['sys.require.complexity'] && (emailConfigMap['sys.require.complexity'].configValue = form.complexity)
  166. emailConfigMap['sys.password.minimum.length'] && (emailConfigMap['sys.password.minimum.length'].configValue = form.minimum)
  167. emailConfigMap['sys.password.error.num'] && (emailConfigMap['sys.password.error.num'].configValue = form.errorNum)
  168. emailConfigMap['sys.again.login.date'] && (emailConfigMap['sys.again.login.date'].configValue = form.againLoginDate)
  169. emailConfigMap['sys.password.change.period'] && (emailConfigMap['sys.password.change.period'].configValue = form.changePeriod)
  170. emailConfigMap['sys.password.change.period.switch'] && (emailConfigMap['sys.password.change.period.switch'].configValue = form.changePeriodSwitch)
  171. emailConfigMap['sys.change.password.for.first.login'] && (emailConfigMap['sys.change.password.for.first.login'].configValue = form.changePwdFirstLogin)
  172. emailConfigMap['sys.button.switch'] && (emailConfigMap['sys.button.switch'].configValue = form.button)
  173. emailConfigMap['sys.column.switch'] && (emailConfigMap['sys.column.switch'].configValue = form.column)
  174. emailConfigMap['sys.api.switch'] && (emailConfigMap['sys.api.switch'].configValue = form.api)
  175. emailConfigMap['sys.is.security.control.enabled'] && (emailConfigMap['sys.is.security.control.enabled'].configValue = form.security)
  176. api.basicConfig.setDetails({ ConfigInfo: Object.values(emailConfigMap) }).then(() => {
  177. ElMessage.success('操作成功');
  178. });
  179. }
  180. </script>
  181. <style scoped lang="scss">
  182. :deep(.el-form) {
  183. width: 100%;
  184. }
  185. .el-form-item {
  186. margin-bottom: 10px;
  187. }
  188. :deep(.form-inner-wrap) {
  189. width: 100%;
  190. display: flex;
  191. justify-content: space-between;
  192. .left-wrap,
  193. .right-wrap {
  194. width: 100%;
  195. }
  196. }
  197. </style>