feat: 新增设置接口调试

This commit is contained in:
wanglihui 2023-07-08 23:53:35 +08:00
parent 0adb7f13b0
commit f0c6dd0ca5
4 changed files with 217 additions and 11 deletions

28
src/api/setting.ts Normal file
View File

@ -0,0 +1,28 @@
import request from '@/utils/axios';
// 更新密码
export function userUpdatepasswordPost(data: any) {
return request({
url: '/manager/user/updatepassword',
method: 'post',
data
});
}
// 获取通用设置
export function getAppconfigGet(params?: any) {
return request({
url: '/manager/common/appconfig',
method: 'get',
params
});
}
// 更新通用设置
export function updateAppconfigPost(data: any) {
return request({
url: '/manager/common/appconfig',
method: 'post',
data
});
}

View File

@ -1,6 +1,6 @@
<template>
<div class="footer flex-center">
<a href="https://github.com" target="_blank"> 2023 © 悟空IM. </a>
<a href="https://github.com" target="_blank"> 2023 © 唐僧叨叨. </a>
</div>
</template>

View File

@ -1,7 +1,48 @@
<template>
<div>
<div class="wh-full flex-col">
<!-- 布局 -->
通用设置
<div class="flex-1 el-card border-none flex-col box-border overflow-hidden">
<div class="h-50px pl-12px pr-12px box-border flex items-center justify-between bd-title">
<div class="bd-title-left">
<p class="m-0 font-600">通用设置</p>
</div>
<div class="flex items-center h-50px"></div>
</div>
<div class="flex-1 overflow-hidden p-12px">
<div class="w-540px">
<el-form :model="formData" label-width="160px">
<el-form-item label="用户默认加入群聊:">
<el-radio-group v-model="formData.new_user_join_system_group">
<el-radio :label="1">加入</el-radio>
<el-radio :label="0">不加入</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="消息可撤回时长:">
<el-select v-model="formData.revoke_second" class="!w-100%">
<el-option label="1分钟" :value="60" />
<el-option label="2分钟" :value="120" />
<el-option label="3分钟" :value="180" />
<el-option label="4分钟" :value="240" />
<el-option label="5分钟" :value="300" />
<el-option label="永久" :value="-1" />
</el-select>
</el-form-item>
<el-form-item label="登录欢迎语:">
<el-input
v-model="formData.welcome_message"
:autosize="{ minRows: 14, maxRows: 16 }"
type="textarea"
maxlength="1000"
show-word-limit
/>
</el-form-item>
<el-form-item>
<el-button :loading="loginButLoading" class="!w-100%" type="primary" @click="onSaveClick">保存</el-button>
</el-form-item>
</el-form>
</div>
</div>
</div>
</div>
</template>
@ -10,10 +51,51 @@ meta:
title: 通用设置
</route>
<script lang="ts" setup name="MyBb">
//
<script lang="ts" setup>
import { ElMessage } from 'element-plus';
// API
import { getAppconfigGet, updateAppconfigPost } from '@/api/setting';
//
const formData = reactive({
welcome_message: '欢迎你来到悟空聊天。',
revoke_second: 60,
new_user_join_system_group: 1,
search_by_phone: 1
});
//
const initData = () => {
getAppconfigGet().then((res: any) => {
formData.welcome_message = res.welcome_message;
formData.revoke_second = res.revoke_second;
formData.new_user_join_system_group = res.new_user_join_system_group;
formData.search_by_phone = res.search_by_phone;
});
};
//
const loginButLoading = ref(false);
const onSaveClick = () => {
loginButLoading.value = true;
updateAppconfigPost(formData)
.then((_res: any) => {
loginButLoading.value = false;
ElMessage.success('更新成功');
})
.catch(err => {
loginButLoading.value = false;
if (err.status == 400) {
ElMessage.error(err.msg);
}
});
};
onMounted(() => {
initData();
});
</script>
<style lang="scss" scoped>
//
.bd-title {
border-bottom: 1px solid var(--el-card-border-color);
}
</style>

View File

@ -1,7 +1,33 @@
<template>
<div>
<div class="wh-full flex-col">
<!-- 布局 -->
修改登录密码
<div class="flex-1 el-card border-none flex-col box-border overflow-hidden">
<div class="h-50px pl-12px pr-12px box-border flex items-center justify-between bd-title">
<div class="bd-title-left">
<p class="m-0 font-600">修改登录密码</p>
</div>
<div class="flex items-center h-50px"></div>
</div>
<div class="flex-1 overflow-hidden p-12px">
<div class="w-540px">
<el-form ref="formRef" :model="formData" :rules="rules" label-width="160px" autocomplete="on">
<el-form-item label="旧密码:" prop="oldPwd">
<el-input v-model="formData.oldPwd" type="password" show-password />
</el-form-item>
<el-form-item label="新密码:" prop="newPwd">
<el-input v-model="formData.newPwd" type="password" show-password />
</el-form-item>
<el-form-item label="确认密码:" prop="surePwd">
<el-input v-model="formData.surePwd" type="password" show-password />
</el-form-item>
<el-form-item>
<el-button :loading="loginButLoading" type="primary" @click="onSubmitClick(formRef)"> 提交 </el-button>
<el-button @click="onResetClick(formRef)"> 重置 </el-button>
</el-form-item>
</el-form>
</div>
</div>
</div>
</div>
</template>
@ -10,10 +36,80 @@ meta:
title: 修改登录密码
</route>
<script lang="ts" setup name="MyBb">
//
<script lang="ts" setup>
import type { FormInstance, FormRules } from 'element-plus';
import { ElMessage } from 'element-plus';
// API
import { userUpdatepasswordPost } from '@/api/setting';
//
const formRef = ref<FormInstance>();
const formData = reactive({
oldPwd: '',
newPwd: '',
surePwd: ''
});
const loginButLoading = ref(false);
//
const validateNewpwd = (_rule: any, value: any, callback: any) => {
if (value === '') {
callback(new Error('请输入新密码'));
} else {
if (value.length < 6) {
callback(new Error('密码长度必须大于6位!'));
} else {
callback();
}
}
};
const validateSurepwd = (_rule: any, value: any, callback: any) => {
if (value === '') {
callback(new Error('请重新输入密码'));
} else if (value !== formData.newPwd) {
callback(new Error('两个输入不匹配!'));
} else {
callback();
}
};
const rules = reactive<FormRules<typeof formData>>({
oldPwd: { required: true, message: '请输入旧密码', trigger: 'blur' },
newPwd: { required: true, validator: validateNewpwd, trigger: 'blur' },
surePwd: { required: true, validator: validateSurepwd, trigger: 'blur' }
});
//
const onSubmitClick = async (formEl: FormInstance | undefined) => {
if (!formEl) return;
await formEl.validate(valid => {
if (valid) {
if (formData.newPwd === formData.surePwd) {
loginButLoading.value = true;
userUpdatepasswordPost({
password: formData.oldPwd,
new_password: formData.newPwd
})
.then((_res: any) => {
loginButLoading.value = false;
ElMessage.success('修改成功!');
})
.catch(err => {
loginButLoading.value = false;
if (err.status == 400) {
ElMessage.error(err.msg);
}
});
}
}
});
};
//
const onResetClick = (formEl: FormInstance | undefined) => {
if (!formEl) return;
formEl.resetFields();
};
</script>
<style lang="scss" scoped>
//
.bd-title {
border-bottom: 1px solid var(--el-card-border-color);
}
</style>