|
|
@ -9,21 +9,21 @@ |
|
|
|
> |
|
|
|
<el-row type="flex" justify="center" align="middle"> |
|
|
|
<el-col> |
|
|
|
<el-form-item label="密码难度" prop="passwordDifficulty" align="center"> |
|
|
|
<el-select v-model="data.passwordDifficulty" placeholder="请选择密码难度"> |
|
|
|
<el-form-item label="密码难度" prop="ruleLevel" align="center"> |
|
|
|
<el-select v-model="passwordConfig.ruleLevel" placeholder="请选择密码难度"> |
|
|
|
<el-option |
|
|
|
v-for="item in difficultyList" |
|
|
|
v-for="item in ruleList" |
|
|
|
:key="item.value" |
|
|
|
:label="item.label" |
|
|
|
:value="item.value" |
|
|
|
:label="item.ruleLevel" |
|
|
|
:value="item.ruleLevel" |
|
|
|
/> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
<el-col> |
|
|
|
<el-form-item label="试错次数" prop="number"> |
|
|
|
<el-form-item label="试错次数" prop="tryCount"> |
|
|
|
<el-input-number |
|
|
|
v-model="data.number" |
|
|
|
v-model="passwordConfig.tryCount" |
|
|
|
:min="0" |
|
|
|
:precision="0" |
|
|
|
style="margin-right: 10px" |
|
|
@ -31,9 +31,9 @@ |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
<el-col> |
|
|
|
<el-form-item label="锁定时长" prop="minute"> |
|
|
|
<el-form-item label="锁定时长" prop="lockMinutes"> |
|
|
|
<el-input-number |
|
|
|
v-model="data.minute" |
|
|
|
v-model="passwordConfig.lockMinutes" |
|
|
|
:min="0" |
|
|
|
:precision="0" |
|
|
|
style="margin-right: 10px" |
|
|
@ -41,9 +41,9 @@ |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
<el-col> |
|
|
|
<el-form-item label="更新周期" prop="cycle"> |
|
|
|
<el-form-item label="更新周期" prop="updatePeriod"> |
|
|
|
<el-input-number |
|
|
|
v-model="data.cycle" |
|
|
|
v-model="passwordConfig.updatePeriod" |
|
|
|
:min="0" |
|
|
|
:precision="0" |
|
|
|
style="margin-right: 10px" |
|
|
@ -51,8 +51,8 @@ |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
<el-col> |
|
|
|
<el-form-item label="是否开启" prop="isEnabled"> |
|
|
|
<el-switch v-model="data.isEnabled" active-value="TRUE" inactive-value="'FALSE'" /> |
|
|
|
<el-form-item label="是否开启" prop="status"> |
|
|
|
<el-switch v-model="passwordConfig.status" /> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
@ -60,7 +60,7 @@ |
|
|
|
<div class="dialog-footer"> |
|
|
|
<el-button |
|
|
|
type="primary" |
|
|
|
@click="submitForm" |
|
|
|
@click="handleUpdate" |
|
|
|
style="width: 100%; height: 40px; line-height: 40px" |
|
|
|
>保 存</el-button |
|
|
|
> |
|
|
@ -71,7 +71,7 @@ |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
<script lang="ts" setup> |
|
|
|
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' |
|
|
|
import * as api from '@/api/system/password' |
|
|
|
|
|
|
|
defineOptions({ name: 'PasswordRule' }) |
|
|
|
|
|
|
@ -82,30 +82,61 @@ const rules = { |
|
|
|
password: [required], |
|
|
|
againPassword: [required] |
|
|
|
} |
|
|
|
const data = ref({ |
|
|
|
passwordDifficulty: '', //密码难度 |
|
|
|
number: '', //试错次数 |
|
|
|
minute: '', //锁定时长 |
|
|
|
cycle: '', //更新周期 |
|
|
|
isEnabled: 'TRUE' //是否开启 |
|
|
|
const reset = () => { |
|
|
|
passwordConfig.value = { |
|
|
|
status: true, |
|
|
|
ruleLevel: "简单", |
|
|
|
ruleDesc: "", |
|
|
|
tryCount: 3, |
|
|
|
lockMinutes: 1, |
|
|
|
updatePeriod: 1, |
|
|
|
} |
|
|
|
} |
|
|
|
const passwordConfig = ref({ |
|
|
|
id: 0, |
|
|
|
status: true, |
|
|
|
ruleLevel: "简单", |
|
|
|
ruleDesc: "", |
|
|
|
tryCount: 3, |
|
|
|
lockMinutes: 1, |
|
|
|
updatePeriod: 1, |
|
|
|
}) |
|
|
|
const difficultyList = ref([ |
|
|
|
{ |
|
|
|
value: '11', |
|
|
|
label: '11' |
|
|
|
/** 查询配置 */ |
|
|
|
const getConfig = async () => { |
|
|
|
loading.value = true |
|
|
|
try { |
|
|
|
passwordConfig.value = await api.getConfig() |
|
|
|
} finally { |
|
|
|
loading.value = false |
|
|
|
} |
|
|
|
]) |
|
|
|
const reset = () => { |
|
|
|
data.value = { |
|
|
|
passwordDifficulty: '', //密码难度 |
|
|
|
number: '', //试错次数 |
|
|
|
minute: '', //锁定时长 |
|
|
|
cycle: '', //更新周期 |
|
|
|
isEnabled: 'TRUE' //是否开启 |
|
|
|
} |
|
|
|
const ruleList = ref([]) |
|
|
|
/** 获取规则等级 */ |
|
|
|
const getRuleList = async () => { |
|
|
|
loading.value = true |
|
|
|
try { |
|
|
|
ruleList.value = await api.getRuleList() |
|
|
|
} finally { |
|
|
|
loading.value = false |
|
|
|
} |
|
|
|
} |
|
|
|
/** 保存 */ |
|
|
|
const handleUpdate = async () => { |
|
|
|
try { |
|
|
|
loading.value = true |
|
|
|
await api.setConfig(passwordConfig.value) |
|
|
|
message.success(t('common.save')) |
|
|
|
} catch { |
|
|
|
|
|
|
|
}finally { |
|
|
|
loading.value = false |
|
|
|
} |
|
|
|
} |
|
|
|
/** 初始化 **/ |
|
|
|
onMounted(async () => {}) |
|
|
|
onMounted(async () => { |
|
|
|
getConfig() |
|
|
|
getRuleList() |
|
|
|
}) |
|
|
|
</script> |
|
|
|
<style lang="scss" scoped> |
|
|
|
.box { |
|
|
|